Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions translator/CqlLexer.g4
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ K_NOT : 'NOT';
K_EXISTS : 'EXISTS';
K_PRIMARY : 'PRIMARY';
K_KEY : 'KEY';
K_WITH : 'WITH';

K_ASCII : 'ASCII';
K_BIGINT : 'BIGINT';
Expand Down
53 changes: 50 additions & 3 deletions translator/CqlParser.g4
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,8 @@ cqlStatement
: createTable
;

// TODO: Add support on `IF NOT EXISTS`.
// TODO: Add support on table_options
createTable
: K_CREATE K_TABLE ifNotExist? tableName L_PAREN columnDefinitionList R_PAREN
: K_CREATE K_TABLE ifNotExist? tableName L_PAREN columnDefinitionList R_PAREN wihtTableOptions?
;

columnDefinitionList
Expand Down Expand Up @@ -124,4 +122,53 @@ cqlNativeType
cqlCollectionType
: K_MAP L_ANGLE_BRACKET cqlNativeType COMMA cqlNativeType R_ANGLE_BRACKET
| (K_SET | K_LIST) L_ANGLE_BRACKET cqlNativeType R_ANGLE_BRACKET
;

// TODO: Consider using a more precise syntax.
wihtTableOptions
: K_WITH nonSemicolonToken*
;

nonSemicolonToken
: K_CREATE
| K_TABLE
| K_IF
| K_NOT
| K_EXISTS
| K_PRIMARY
| K_KEY
| K_WITH
| K_ASCII
| K_BIGINT
| K_BLOB
| K_BOOLEAN
| K_COUNTER
| K_DATE
| K_DECIMAL
| K_DOUBLE
| K_FLOAT
| K_INET
| K_INT
| K_SMALLINT
| K_TEXT
| K_TIME
| K_TIMESTAMP
| K_TIMEUUID
| K_TINYINT
| K_UUID
| K_VARCHAR
| K_VARINT
| K_MAP
| K_SET
| K_LIST
| DQUOTE
| DOT
| COMMA
| L_PAREN
| R_PAREN
| L_ANGLE_BRACKET
| R_ANGLE_BRACKET
| IDENTIFIER
| IDENTIFIER_WITH_HYPHEN
| UNKNOWN
;
5 changes: 4 additions & 1 deletion translator/cqlparser/CqlLexer.interp

Large diffs are not rendered by default.

138 changes: 70 additions & 68 deletions translator/cqlparser/CqlLexer.tokens
Original file line number Diff line number Diff line change
Expand Up @@ -5,78 +5,80 @@ K_NOT=4
K_EXISTS=5
K_PRIMARY=6
K_KEY=7
K_ASCII=8
K_BIGINT=9
K_BLOB=10
K_BOOLEAN=11
K_COUNTER=12
K_DATE=13
K_DECIMAL=14
K_DOUBLE=15
K_FLOAT=16
K_INET=17
K_INT=18
K_SMALLINT=19
K_TEXT=20
K_TIME=21
K_TIMESTAMP=22
K_TIMEUUID=23
K_TINYINT=24
K_UUID=25
K_VARCHAR=26
K_VARINT=27
K_MAP=28
K_SET=29
K_LIST=30
SEMICOLON=31
DQUOTE=32
DOT=33
COMMA=34
L_PAREN=35
R_PAREN=36
L_ANGLE_BRACKET=37
R_ANGLE_BRACKET=38
IDENTIFIER=39
IDENTIFIER_WITH_HYPHEN=40
WS=41
COMMENT=42
MULTILINE_COMMENT=43
UNKNOWN=44
K_WITH=8
K_ASCII=9
K_BIGINT=10
K_BLOB=11
K_BOOLEAN=12
K_COUNTER=13
K_DATE=14
K_DECIMAL=15
K_DOUBLE=16
K_FLOAT=17
K_INET=18
K_INT=19
K_SMALLINT=20
K_TEXT=21
K_TIME=22
K_TIMESTAMP=23
K_TIMEUUID=24
K_TINYINT=25
K_UUID=26
K_VARCHAR=27
K_VARINT=28
K_MAP=29
K_SET=30
K_LIST=31
SEMICOLON=32
DQUOTE=33
DOT=34
COMMA=35
L_PAREN=36
R_PAREN=37
L_ANGLE_BRACKET=38
R_ANGLE_BRACKET=39
IDENTIFIER=40
IDENTIFIER_WITH_HYPHEN=41
WS=42
COMMENT=43
MULTILINE_COMMENT=44
UNKNOWN=45
'CREATE'=1
'TABLE'=2
'IF'=3
'NOT'=4
'EXISTS'=5
'PRIMARY'=6
'KEY'=7
'ASCII'=8
'BIGINT'=9
'BLOB'=10
'BOOLEAN'=11
'COUNTER'=12
'DATE'=13
'DECIMAL'=14
'DOUBLE'=15
'FLOAT'=16
'INET'=17
'INT'=18
'SMALLINT'=19
'TEXT'=20
'TIME'=21
'TIMESTAMP'=22
'TIMEUUID'=23
'TINYINT'=24
'UUID'=25
'VARCHAR'=26
'VARINT'=27
'MAP'=28
'SET'=29
'LIST'=30
';'=31
'"'=32
'.'=33
','=34
'('=35
')'=36
'<'=37
'>'=38
'WITH'=8
'ASCII'=9
'BIGINT'=10
'BLOB'=11
'BOOLEAN'=12
'COUNTER'=13
'DATE'=14
'DECIMAL'=15
'DOUBLE'=16
'FLOAT'=17
'INET'=18
'INT'=19
'SMALLINT'=20
'TEXT'=21
'TIME'=22
'TIMESTAMP'=23
'TIMEUUID'=24
'TINYINT'=25
'UUID'=26
'VARCHAR'=27
'VARINT'=28
'MAP'=29
'SET'=30
'LIST'=31
';'=32
'"'=33
'.'=34
','=35
'('=36
')'=37
'<'=38
'>'=39
6 changes: 5 additions & 1 deletion translator/cqlparser/CqlParser.interp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ null
'EXISTS'
'PRIMARY'
'KEY'
'WITH'
'ASCII'
'BIGINT'
'BLOB'
Expand Down Expand Up @@ -54,6 +55,7 @@ K_NOT
K_EXISTS
K_PRIMARY
K_KEY
K_WITH
K_ASCII
K_BIGINT
K_BLOB
Expand Down Expand Up @@ -111,7 +113,9 @@ primaryKeyKeywords
ifNotExist
cqlNativeType
cqlCollectionType
wihtTableOptions
nonSemicolonToken


atn:
[4, 1, 44, 144, 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, 1, 0, 1, 0, 3, 0, 39, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 3, 2, 48, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 5, 3, 58, 8, 3, 10, 3, 12, 3, 61, 9, 3, 1, 3, 1, 3, 3, 3, 65, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 70, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 3, 6, 80, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 87, 8, 7, 10, 7, 12, 7, 90, 9, 7, 1, 7, 1, 7, 3, 7, 94, 8, 7, 1, 8, 1, 8, 1, 8, 5, 8, 99, 8, 8, 10, 8, 12, 8, 102, 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 3, 10, 109, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 3, 13, 119, 8, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 142, 8, 17, 1, 17, 0, 0, 18, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 0, 3, 1, 0, 39, 40, 1, 0, 8, 27, 1, 0, 29, 30, 137, 0, 36, 1, 0, 0, 0, 2, 42, 1, 0, 0, 0, 4, 44, 1, 0, 0, 0, 6, 54, 1, 0, 0, 0, 8, 66, 1, 0, 0, 0, 10, 71, 1, 0, 0, 0, 12, 76, 1, 0, 0, 0, 14, 93, 1, 0, 0, 0, 16, 95, 1, 0, 0, 0, 18, 103, 1, 0, 0, 0, 20, 108, 1, 0, 0, 0, 22, 112, 1, 0, 0, 0, 24, 114, 1, 0, 0, 0, 26, 118, 1, 0, 0, 0, 28, 120, 1, 0, 0, 0, 30, 123, 1, 0, 0, 0, 32, 127, 1, 0, 0, 0, 34, 141, 1, 0, 0, 0, 36, 38, 3, 2, 1, 0, 37, 39, 5, 31, 0, 0, 38, 37, 1, 0, 0, 0, 38, 39, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 41, 5, 0, 0, 1, 41, 1, 1, 0, 0, 0, 42, 43, 3, 4, 2, 0, 43, 3, 1, 0, 0, 0, 44, 45, 5, 1, 0, 0, 45, 47, 5, 2, 0, 0, 46, 48, 3, 30, 15, 0, 47, 46, 1, 0, 0, 0, 47, 48, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 50, 3, 20, 10, 0, 50, 51, 5, 35, 0, 0, 51, 52, 3, 6, 3, 0, 52, 53, 5, 36, 0, 0, 53, 5, 1, 0, 0, 0, 54, 59, 3, 8, 4, 0, 55, 56, 5, 34, 0, 0, 56, 58, 3, 8, 4, 0, 57, 55, 1, 0, 0, 0, 58, 61, 1, 0, 0, 0, 59, 57, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 64, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 62, 63, 5, 34, 0, 0, 63, 65, 3, 10, 5, 0, 64, 62, 1, 0, 0, 0, 64, 65, 1, 0, 0, 0, 65, 7, 1, 0, 0, 0, 66, 67, 3, 18, 9, 0, 67, 69, 3, 26, 13, 0, 68, 70, 3, 28, 14, 0, 69, 68, 1, 0, 0, 0, 69, 70, 1, 0, 0, 0, 70, 9, 1, 0, 0, 0, 71, 72, 3, 28, 14, 0, 72, 73, 5, 35, 0, 0, 73, 74, 3, 12, 6, 0, 74, 75, 5, 36, 0, 0, 75, 11, 1, 0, 0, 0, 76, 79, 3, 14, 7, 0, 77, 78, 5, 34, 0, 0, 78, 80, 3, 16, 8, 0, 79, 77, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 13, 1, 0, 0, 0, 81, 94, 3, 18, 9, 0, 82, 83, 5, 35, 0, 0, 83, 88, 3, 18, 9, 0, 84, 85, 5, 34, 0, 0, 85, 87, 3, 18, 9, 0, 86, 84, 1, 0, 0, 0, 87, 90, 1, 0, 0, 0, 88, 86, 1, 0, 0, 0, 88, 89, 1, 0, 0, 0, 89, 91, 1, 0, 0, 0, 90, 88, 1, 0, 0, 0, 91, 92, 5, 36, 0, 0, 92, 94, 1, 0, 0, 0, 93, 81, 1, 0, 0, 0, 93, 82, 1, 0, 0, 0, 94, 15, 1, 0, 0, 0, 95, 100, 3, 18, 9, 0, 96, 97, 5, 34, 0, 0, 97, 99, 3, 18, 9, 0, 98, 96, 1, 0, 0, 0, 99, 102, 1, 0, 0, 0, 100, 98, 1, 0, 0, 0, 100, 101, 1, 0, 0, 0, 101, 17, 1, 0, 0, 0, 102, 100, 1, 0, 0, 0, 103, 104, 5, 39, 0, 0, 104, 19, 1, 0, 0, 0, 105, 106, 3, 22, 11, 0, 106, 107, 5, 33, 0, 0, 107, 109, 1, 0, 0, 0, 108, 105, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 110, 1, 0, 0, 0, 110, 111, 5, 39, 0, 0, 111, 21, 1, 0, 0, 0, 112, 113, 3, 24, 12, 0, 113, 23, 1, 0, 0, 0, 114, 115, 7, 0, 0, 0, 115, 25, 1, 0, 0, 0, 116, 119, 3, 32, 16, 0, 117, 119, 3, 34, 17, 0, 118, 116, 1, 0, 0, 0, 118, 117, 1, 0, 0, 0, 119, 27, 1, 0, 0, 0, 120, 121, 5, 6, 0, 0, 121, 122, 5, 7, 0, 0, 122, 29, 1, 0, 0, 0, 123, 124, 5, 3, 0, 0, 124, 125, 5, 4, 0, 0, 125, 126, 5, 5, 0, 0, 126, 31, 1, 0, 0, 0, 127, 128, 7, 1, 0, 0, 128, 33, 1, 0, 0, 0, 129, 130, 5, 28, 0, 0, 130, 131, 5, 37, 0, 0, 131, 132, 3, 32, 16, 0, 132, 133, 5, 34, 0, 0, 133, 134, 3, 32, 16, 0, 134, 135, 5, 38, 0, 0, 135, 142, 1, 0, 0, 0, 136, 137, 7, 2, 0, 0, 137, 138, 5, 37, 0, 0, 138, 139, 3, 32, 16, 0, 139, 140, 5, 38, 0, 0, 140, 142, 1, 0, 0, 0, 141, 129, 1, 0, 0, 0, 141, 136, 1, 0, 0, 0, 142, 35, 1, 0, 0, 0, 12, 38, 47, 59, 64, 69, 79, 88, 93, 100, 108, 118, 141]
[4, 1, 45, 159, 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, 1, 0, 1, 0, 3, 0, 43, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 3, 2, 52, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 59, 8, 2, 1, 3, 1, 3, 1, 3, 5, 3, 64, 8, 3, 10, 3, 12, 3, 67, 9, 3, 1, 3, 1, 3, 3, 3, 71, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 76, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 3, 6, 86, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 93, 8, 7, 10, 7, 12, 7, 96, 9, 7, 1, 7, 1, 7, 3, 7, 100, 8, 7, 1, 8, 1, 8, 1, 8, 5, 8, 105, 8, 8, 10, 8, 12, 8, 108, 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 3, 10, 115, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 3, 13, 125, 8, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 148, 8, 17, 1, 18, 1, 18, 5, 18, 152, 8, 18, 10, 18, 12, 18, 155, 9, 18, 1, 19, 1, 19, 1, 19, 0, 0, 20, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 0, 4, 1, 0, 40, 41, 1, 0, 9, 28, 1, 0, 30, 31, 3, 0, 1, 31, 33, 41, 45, 45, 152, 0, 40, 1, 0, 0, 0, 2, 46, 1, 0, 0, 0, 4, 48, 1, 0, 0, 0, 6, 60, 1, 0, 0, 0, 8, 72, 1, 0, 0, 0, 10, 77, 1, 0, 0, 0, 12, 82, 1, 0, 0, 0, 14, 99, 1, 0, 0, 0, 16, 101, 1, 0, 0, 0, 18, 109, 1, 0, 0, 0, 20, 114, 1, 0, 0, 0, 22, 118, 1, 0, 0, 0, 24, 120, 1, 0, 0, 0, 26, 124, 1, 0, 0, 0, 28, 126, 1, 0, 0, 0, 30, 129, 1, 0, 0, 0, 32, 133, 1, 0, 0, 0, 34, 147, 1, 0, 0, 0, 36, 149, 1, 0, 0, 0, 38, 156, 1, 0, 0, 0, 40, 42, 3, 2, 1, 0, 41, 43, 5, 32, 0, 0, 42, 41, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 45, 5, 0, 0, 1, 45, 1, 1, 0, 0, 0, 46, 47, 3, 4, 2, 0, 47, 3, 1, 0, 0, 0, 48, 49, 5, 1, 0, 0, 49, 51, 5, 2, 0, 0, 50, 52, 3, 30, 15, 0, 51, 50, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 54, 3, 20, 10, 0, 54, 55, 5, 36, 0, 0, 55, 56, 3, 6, 3, 0, 56, 58, 5, 37, 0, 0, 57, 59, 3, 36, 18, 0, 58, 57, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 5, 1, 0, 0, 0, 60, 65, 3, 8, 4, 0, 61, 62, 5, 35, 0, 0, 62, 64, 3, 8, 4, 0, 63, 61, 1, 0, 0, 0, 64, 67, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 70, 1, 0, 0, 0, 67, 65, 1, 0, 0, 0, 68, 69, 5, 35, 0, 0, 69, 71, 3, 10, 5, 0, 70, 68, 1, 0, 0, 0, 70, 71, 1, 0, 0, 0, 71, 7, 1, 0, 0, 0, 72, 73, 3, 18, 9, 0, 73, 75, 3, 26, 13, 0, 74, 76, 3, 28, 14, 0, 75, 74, 1, 0, 0, 0, 75, 76, 1, 0, 0, 0, 76, 9, 1, 0, 0, 0, 77, 78, 3, 28, 14, 0, 78, 79, 5, 36, 0, 0, 79, 80, 3, 12, 6, 0, 80, 81, 5, 37, 0, 0, 81, 11, 1, 0, 0, 0, 82, 85, 3, 14, 7, 0, 83, 84, 5, 35, 0, 0, 84, 86, 3, 16, 8, 0, 85, 83, 1, 0, 0, 0, 85, 86, 1, 0, 0, 0, 86, 13, 1, 0, 0, 0, 87, 100, 3, 18, 9, 0, 88, 89, 5, 36, 0, 0, 89, 94, 3, 18, 9, 0, 90, 91, 5, 35, 0, 0, 91, 93, 3, 18, 9, 0, 92, 90, 1, 0, 0, 0, 93, 96, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 94, 95, 1, 0, 0, 0, 95, 97, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 97, 98, 5, 37, 0, 0, 98, 100, 1, 0, 0, 0, 99, 87, 1, 0, 0, 0, 99, 88, 1, 0, 0, 0, 100, 15, 1, 0, 0, 0, 101, 106, 3, 18, 9, 0, 102, 103, 5, 35, 0, 0, 103, 105, 3, 18, 9, 0, 104, 102, 1, 0, 0, 0, 105, 108, 1, 0, 0, 0, 106, 104, 1, 0, 0, 0, 106, 107, 1, 0, 0, 0, 107, 17, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 109, 110, 5, 40, 0, 0, 110, 19, 1, 0, 0, 0, 111, 112, 3, 22, 11, 0, 112, 113, 5, 34, 0, 0, 113, 115, 1, 0, 0, 0, 114, 111, 1, 0, 0, 0, 114, 115, 1, 0, 0, 0, 115, 116, 1, 0, 0, 0, 116, 117, 5, 40, 0, 0, 117, 21, 1, 0, 0, 0, 118, 119, 3, 24, 12, 0, 119, 23, 1, 0, 0, 0, 120, 121, 7, 0, 0, 0, 121, 25, 1, 0, 0, 0, 122, 125, 3, 32, 16, 0, 123, 125, 3, 34, 17, 0, 124, 122, 1, 0, 0, 0, 124, 123, 1, 0, 0, 0, 125, 27, 1, 0, 0, 0, 126, 127, 5, 6, 0, 0, 127, 128, 5, 7, 0, 0, 128, 29, 1, 0, 0, 0, 129, 130, 5, 3, 0, 0, 130, 131, 5, 4, 0, 0, 131, 132, 5, 5, 0, 0, 132, 31, 1, 0, 0, 0, 133, 134, 7, 1, 0, 0, 134, 33, 1, 0, 0, 0, 135, 136, 5, 29, 0, 0, 136, 137, 5, 38, 0, 0, 137, 138, 3, 32, 16, 0, 138, 139, 5, 35, 0, 0, 139, 140, 3, 32, 16, 0, 140, 141, 5, 39, 0, 0, 141, 148, 1, 0, 0, 0, 142, 143, 7, 2, 0, 0, 143, 144, 5, 38, 0, 0, 144, 145, 3, 32, 16, 0, 145, 146, 5, 39, 0, 0, 146, 148, 1, 0, 0, 0, 147, 135, 1, 0, 0, 0, 147, 142, 1, 0, 0, 0, 148, 35, 1, 0, 0, 0, 149, 153, 5, 8, 0, 0, 150, 152, 3, 38, 19, 0, 151, 150, 1, 0, 0, 0, 152, 155, 1, 0, 0, 0, 153, 151, 1, 0, 0, 0, 153, 154, 1, 0, 0, 0, 154, 37, 1, 0, 0, 0, 155, 153, 1, 0, 0, 0, 156, 157, 7, 3, 0, 0, 157, 39, 1, 0, 0, 0, 14, 42, 51, 58, 65, 70, 75, 85, 94, 99, 106, 114, 124, 147, 153]
Loading