diff --git a/pkg/compiler/compiler_test.go b/pkg/compiler/compiler_test.go index d1430f3d..77cf12ea 100644 --- a/pkg/compiler/compiler_test.go +++ b/pkg/compiler/compiler_test.go @@ -1395,6 +1395,59 @@ func TestTernaryOperator(t *testing.T) { }) } +func TestRangeOperator(t *testing.T) { + Convey("Should compile RETURN 1..10", t, func() { + c := compiler.New() + + prog, err := c.Compile(` + RETURN 1..10 + `) + + So(err, ShouldBeNil) + + out, err := prog.Run(context.Background()) + + So(err, ShouldBeNil) + + So(string(out), ShouldEqual, `[1,2,3,4,5,6,7,8,9,10]`) + }) + + Convey("Should compile FOR i IN 1..10 RETURN i * 2", t, func() { + c := compiler.New() + + prog, err := c.Compile(` + FOR i IN 1..10 + RETURN i * 2 + `) + + So(err, ShouldBeNil) + + out, err := prog.Run(context.Background()) + + So(err, ShouldBeNil) + + So(string(out), ShouldEqual, `[2,4,6,8,10,12,14,16,18,20]`) + }) + + Convey("Should compile LET arr = 1..10 FOR i IN arr RETURN i * 2", t, func() { + c := compiler.New() + + prog, err := c.Compile(` + LET arr = 1..10 + FOR i IN arr + RETURN i * 2 + `) + + So(err, ShouldBeNil) + + out, err := prog.Run(context.Background()) + + So(err, ShouldBeNil) + + So(string(out), ShouldEqual, `[2,4,6,8,10,12,14,16,18,20]`) + }) +} + //func TestHtml(t *testing.T) { // Convey("Should load a document", t, func() { // c := compiler.New() diff --git a/pkg/compiler/visitor.go b/pkg/compiler/visitor.go index 18f370d6..fe9dd2ed 100644 --- a/pkg/compiler/visitor.go +++ b/pkg/compiler/visitor.go @@ -379,6 +379,12 @@ func (v *visitor) doVisitForExpressionSource(ctx *fql.ForExpressionSourceContext return v.doVisitMemberExpression(memberExp.(*fql.MemberExpressionContext), scope) } + rangeOp := ctx.RangeOperator() + + if rangeOp != nil { + return v.doVisitRangeOperator(rangeOp.(*fql.RangeOperatorContext), scope) + } + return nil, core.Error(ErrInvalidDataSource, ctx.GetText()) } @@ -626,6 +632,28 @@ func (v *visitor) doVisitVariableDeclaration(ctx *fql.VariableDeclarationContext ) } +func (v *visitor) doVisitRangeOperator(ctx *fql.RangeOperatorContext, scope *scope) (collections.IterableExpression, error) { + ints := ctx.AllIntegerLiteral() + + left, err := v.doVisitIntegerLiteral(ints[0].(*fql.IntegerLiteralContext)) + + if err != nil { + return nil, err + } + + right, err := v.doVisitIntegerLiteral(ints[1].(*fql.IntegerLiteralContext)) + + if err != nil { + return nil, err + } + + return operators.NewRangeOperator( + v.getSourceMap(ctx), + left, + right, + ) +} + func (v *visitor) doVisitChildren(node antlr.RuleNode, scope *scope) ([]core.Expression, error) { children := node.GetChildren() @@ -787,6 +815,12 @@ func (v *visitor) doVisitExpression(ctx *fql.ExpressionContext, scope *scope) (c ) } + rangeOp := ctx.RangeOperator() + + if rangeOp != nil { + return v.doVisitRangeOperator(rangeOp.(*fql.RangeOperatorContext), scope) + } + seq := ctx.ExpressionSequence() if seq != nil { diff --git a/pkg/parser/antlr/FqlLexer.g4 b/pkg/parser/antlr/FqlLexer.g4 index 38535a04..aa8c6aa3 100644 --- a/pkg/parser/antlr/FqlLexer.g4 +++ b/pkg/parser/antlr/FqlLexer.g4 @@ -9,9 +9,8 @@ LineTerminator: [\r\n\u2028\u2029] -> channel(HIDDEN); // Punctuation Colon: ':'; SemiColon: ';'; -Comma: ','; Dot: '.'; -Ellipsis: '...'; +Comma: ','; OpenBracket: '['; CloseBracket: ']'; OpenParen: '('; @@ -41,8 +40,8 @@ And: 'AND' | '&&'; Or: 'OR' | '||'; // Other operators +Range: Dot Dot; Assign: '='; -Range: '..'; QuestionMark: '?'; RegexNotMatch: '!~'; RegexMatch: '=~'; @@ -81,8 +80,7 @@ Identifier: Letter+ (Digit)*; StringLiteral: SQString | DQSring; IntegerLiteral: [0-9]+; FloatLiteral - : DecimalIntegerLiteral '.' [0-9]* ExponentPart? - | '.' [0-9]+ ExponentPart? + : DecimalIntegerLiteral Dot [0-9]+ ExponentPart? | DecimalIntegerLiteral ExponentPart? ; diff --git a/pkg/parser/antlr/FqlLexer.tokens b/pkg/parser/antlr/FqlLexer.tokens index cc121436..79127cc6 100644 --- a/pkg/parser/antlr/FqlLexer.tokens +++ b/pkg/parser/antlr/FqlLexer.tokens @@ -4,106 +4,103 @@ WhiteSpaces=3 LineTerminator=4 Colon=5 SemiColon=6 -Comma=7 -Dot=8 -Ellipsis=9 -OpenBracket=10 -CloseBracket=11 -OpenParen=12 -CloseParen=13 -OpenBrace=14 -CloseBrace=15 -Gt=16 -Lt=17 -Eq=18 -Gte=19 -Lte=20 -Neq=21 -Plus=22 -Minus=23 -MinusMinus=24 -PlusPlus=25 -Multi=26 -Div=27 -Mod=28 -And=29 -Or=30 +Dot=7 +Comma=8 +OpenBracket=9 +CloseBracket=10 +OpenParen=11 +CloseParen=12 +OpenBrace=13 +CloseBrace=14 +Gt=15 +Lt=16 +Eq=17 +Gte=18 +Lte=19 +Neq=20 +Plus=21 +Minus=22 +MinusMinus=23 +PlusPlus=24 +Multi=25 +Div=26 +Mod=27 +And=28 +Or=29 +Range=30 Assign=31 -Range=32 -QuestionMark=33 -RegexNotMatch=34 -RegexMatch=35 -For=36 -Return=37 -Distinct=38 -Filter=39 -Sort=40 -Limit=41 -Let=42 -Collect=43 -SortDirection=44 -None=45 -Null=46 -BooleanLiteral=47 -Into=48 -Keep=49 -With=50 -Count=51 -All=52 -Any=53 -Aggregate=54 -Like=55 -Not=56 -In=57 -Identifier=58 -StringLiteral=59 -IntegerLiteral=60 -FloatLiteral=61 +QuestionMark=32 +RegexNotMatch=33 +RegexMatch=34 +For=35 +Return=36 +Distinct=37 +Filter=38 +Sort=39 +Limit=40 +Let=41 +Collect=42 +SortDirection=43 +None=44 +Null=45 +BooleanLiteral=46 +Into=47 +Keep=48 +With=49 +Count=50 +All=51 +Any=52 +Aggregate=53 +Like=54 +Not=55 +In=56 +Identifier=57 +StringLiteral=58 +IntegerLiteral=59 +FloatLiteral=60 ':'=5 ';'=6 -','=7 -'.'=8 -'...'=9 -'['=10 -']'=11 -'('=12 -')'=13 -'{'=14 -'}'=15 -'>'=16 -'<'=17 -'=='=18 -'>='=19 -'<='=20 -'!='=21 -'+'=22 -'-'=23 -'--'=24 -'++'=25 -'*'=26 -'/'=27 -'%'=28 +'.'=7 +','=8 +'['=9 +']'=10 +'('=11 +')'=12 +'{'=13 +'}'=14 +'>'=15 +'<'=16 +'=='=17 +'>='=18 +'<='=19 +'!='=20 +'+'=21 +'-'=22 +'--'=23 +'++'=24 +'*'=25 +'/'=26 +'%'=27 '='=31 -'..'=32 -'?'=33 -'!~'=34 -'=~'=35 -'FOR'=36 -'RETURN'=37 -'DISTINCT'=38 -'FILTER'=39 -'SORT'=40 -'LIMIT'=41 -'LET'=42 -'COLLECT'=43 -'NONE'=45 -'NULL'=46 -'INTO'=48 -'KEEP'=49 -'WITH'=50 -'COUNT'=51 -'ALL'=52 -'ANY'=53 -'AGGREGATE'=54 -'LIKE'=55 -'IN'=57 +'?'=32 +'!~'=33 +'=~'=34 +'FOR'=35 +'RETURN'=36 +'DISTINCT'=37 +'FILTER'=38 +'SORT'=39 +'LIMIT'=40 +'LET'=41 +'COLLECT'=42 +'NONE'=44 +'NULL'=45 +'INTO'=47 +'KEEP'=48 +'WITH'=49 +'COUNT'=50 +'ALL'=51 +'ANY'=52 +'AGGREGATE'=53 +'LIKE'=54 +'IN'=56 diff --git a/pkg/parser/antlr/FqlParser.g4 b/pkg/parser/antlr/FqlParser.g4 index 9981831e..8514c72f 100644 --- a/pkg/parser/antlr/FqlParser.g4 +++ b/pkg/parser/antlr/FqlParser.g4 @@ -46,6 +46,7 @@ forExpressionSource | objectLiteral | variable | memberExpression + | rangeOperator ; forExpressionClause @@ -64,7 +65,7 @@ limitClause ; sortClause - : Sort sortClauseExpression (',' sortClauseExpression)* + : Sort sortClauseExpression (Comma sortClauseExpression)* ; sortClauseExpression @@ -129,6 +130,10 @@ variable : Identifier ; +rangeOperator + : integerLiteral Range integerLiteral + ; + arrayLiteral : OpenBracket arrayElementList? CloseBracket ; @@ -211,6 +216,7 @@ expression | Minus expression | Not expression | expression QuestionMark expression? Colon expression + | rangeOperator | stringLiteral | integerLiteral | floatLiteral @@ -222,28 +228,6 @@ expression | noneLiteral ; -reservedWord - : keyword - ; - -keyword - : Return - | In - | Filter - | Sort - | SortDirection - | Limit - | Let - | Collect - | Distinct - | BooleanLiteral - | None - | Null - | All - | Any - | Aggregate - ; - equalityOperator : Gt | Lt diff --git a/pkg/parser/fql/FqlLexer.interp b/pkg/parser/fql/FqlLexer.interp index 98c84242..93099d18 100644 --- a/pkg/parser/fql/FqlLexer.interp +++ b/pkg/parser/fql/FqlLexer.interp @@ -6,9 +6,8 @@ null null ':' ';' -',' '.' -'...' +',' '[' ']' '(' @@ -30,8 +29,8 @@ null '%' null null +null '=' -'..' '?' '!~' '=~' @@ -70,9 +69,8 @@ WhiteSpaces LineTerminator Colon SemiColon -Comma Dot -Ellipsis +Comma OpenBracket CloseBracket OpenParen @@ -94,8 +92,8 @@ Div Mod And Or -Assign Range +Assign QuestionMark RegexNotMatch RegexMatch @@ -133,9 +131,8 @@ WhiteSpaces LineTerminator Colon SemiColon -Comma Dot -Ellipsis +Comma OpenBracket CloseBracket OpenParen @@ -157,8 +154,8 @@ Div Mod And Or -Assign Range +Assign QuestionMark RegexNotMatch RegexMatch @@ -204,4 +201,4 @@ mode names: DEFAULT_MODE atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 63, 496, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 3, 2, 3, 2, 3, 2, 3, 2, 7, 2, 144, 10, 2, 12, 2, 14, 2, 147, 11, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 158, 10, 3, 12, 3, 14, 3, 161, 11, 3, 3, 3, 3, 3, 3, 4, 6, 4, 166, 10, 4, 13, 4, 14, 4, 167, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 237, 10, 30, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 243, 10, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 315, 10, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 345, 10, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 395, 10, 57, 3, 58, 3, 58, 3, 58, 3, 59, 6, 59, 401, 10, 59, 13, 59, 14, 59, 402, 3, 59, 7, 59, 406, 10, 59, 12, 59, 14, 59, 409, 11, 59, 3, 60, 3, 60, 5, 60, 413, 10, 60, 3, 61, 6, 61, 416, 10, 61, 13, 61, 14, 61, 417, 3, 62, 3, 62, 3, 62, 7, 62, 423, 10, 62, 12, 62, 14, 62, 426, 11, 62, 3, 62, 5, 62, 429, 10, 62, 3, 62, 3, 62, 6, 62, 433, 10, 62, 13, 62, 14, 62, 434, 3, 62, 5, 62, 438, 10, 62, 3, 62, 3, 62, 5, 62, 442, 10, 62, 5, 62, 444, 10, 62, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 7, 64, 451, 10, 64, 12, 64, 14, 64, 454, 11, 64, 5, 64, 456, 10, 64, 3, 65, 3, 65, 5, 65, 460, 10, 65, 3, 65, 6, 65, 463, 10, 65, 13, 65, 14, 65, 464, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 7, 68, 477, 10, 68, 12, 68, 14, 68, 480, 11, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 7, 69, 490, 10, 69, 12, 69, 14, 69, 493, 11, 69, 3, 69, 3, 69, 3, 145, 2, 70, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 2, 127, 2, 129, 2, 131, 2, 133, 2, 135, 2, 137, 2, 3, 2, 12, 5, 2, 12, 12, 15, 15, 8234, 8235, 6, 2, 11, 11, 13, 14, 34, 34, 162, 162, 3, 2, 50, 59, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 51, 59, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 4, 2, 67, 92, 99, 124, 4, 2, 36, 36, 94, 94, 4, 2, 41, 41, 94, 94, 2, 519, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 3, 139, 3, 2, 2, 2, 5, 153, 3, 2, 2, 2, 7, 165, 3, 2, 2, 2, 9, 171, 3, 2, 2, 2, 11, 175, 3, 2, 2, 2, 13, 177, 3, 2, 2, 2, 15, 179, 3, 2, 2, 2, 17, 181, 3, 2, 2, 2, 19, 183, 3, 2, 2, 2, 21, 187, 3, 2, 2, 2, 23, 189, 3, 2, 2, 2, 25, 191, 3, 2, 2, 2, 27, 193, 3, 2, 2, 2, 29, 195, 3, 2, 2, 2, 31, 197, 3, 2, 2, 2, 33, 199, 3, 2, 2, 2, 35, 201, 3, 2, 2, 2, 37, 203, 3, 2, 2, 2, 39, 206, 3, 2, 2, 2, 41, 209, 3, 2, 2, 2, 43, 212, 3, 2, 2, 2, 45, 215, 3, 2, 2, 2, 47, 217, 3, 2, 2, 2, 49, 219, 3, 2, 2, 2, 51, 222, 3, 2, 2, 2, 53, 225, 3, 2, 2, 2, 55, 227, 3, 2, 2, 2, 57, 229, 3, 2, 2, 2, 59, 236, 3, 2, 2, 2, 61, 242, 3, 2, 2, 2, 63, 244, 3, 2, 2, 2, 65, 246, 3, 2, 2, 2, 67, 249, 3, 2, 2, 2, 69, 251, 3, 2, 2, 2, 71, 254, 3, 2, 2, 2, 73, 257, 3, 2, 2, 2, 75, 261, 3, 2, 2, 2, 77, 268, 3, 2, 2, 2, 79, 277, 3, 2, 2, 2, 81, 284, 3, 2, 2, 2, 83, 289, 3, 2, 2, 2, 85, 295, 3, 2, 2, 2, 87, 299, 3, 2, 2, 2, 89, 314, 3, 2, 2, 2, 91, 316, 3, 2, 2, 2, 93, 321, 3, 2, 2, 2, 95, 344, 3, 2, 2, 2, 97, 346, 3, 2, 2, 2, 99, 351, 3, 2, 2, 2, 101, 356, 3, 2, 2, 2, 103, 361, 3, 2, 2, 2, 105, 367, 3, 2, 2, 2, 107, 371, 3, 2, 2, 2, 109, 375, 3, 2, 2, 2, 111, 385, 3, 2, 2, 2, 113, 394, 3, 2, 2, 2, 115, 396, 3, 2, 2, 2, 117, 400, 3, 2, 2, 2, 119, 412, 3, 2, 2, 2, 121, 415, 3, 2, 2, 2, 123, 443, 3, 2, 2, 2, 125, 445, 3, 2, 2, 2, 127, 455, 3, 2, 2, 2, 129, 457, 3, 2, 2, 2, 131, 466, 3, 2, 2, 2, 133, 468, 3, 2, 2, 2, 135, 470, 3, 2, 2, 2, 137, 483, 3, 2, 2, 2, 139, 140, 7, 49, 2, 2, 140, 141, 7, 44, 2, 2, 141, 145, 3, 2, 2, 2, 142, 144, 11, 2, 2, 2, 143, 142, 3, 2, 2, 2, 144, 147, 3, 2, 2, 2, 145, 146, 3, 2, 2, 2, 145, 143, 3, 2, 2, 2, 146, 148, 3, 2, 2, 2, 147, 145, 3, 2, 2, 2, 148, 149, 7, 44, 2, 2, 149, 150, 7, 49, 2, 2, 150, 151, 3, 2, 2, 2, 151, 152, 8, 2, 2, 2, 152, 4, 3, 2, 2, 2, 153, 154, 7, 49, 2, 2, 154, 155, 7, 49, 2, 2, 155, 159, 3, 2, 2, 2, 156, 158, 10, 2, 2, 2, 157, 156, 3, 2, 2, 2, 158, 161, 3, 2, 2, 2, 159, 157, 3, 2, 2, 2, 159, 160, 3, 2, 2, 2, 160, 162, 3, 2, 2, 2, 161, 159, 3, 2, 2, 2, 162, 163, 8, 3, 2, 2, 163, 6, 3, 2, 2, 2, 164, 166, 9, 3, 2, 2, 165, 164, 3, 2, 2, 2, 166, 167, 3, 2, 2, 2, 167, 165, 3, 2, 2, 2, 167, 168, 3, 2, 2, 2, 168, 169, 3, 2, 2, 2, 169, 170, 8, 4, 2, 2, 170, 8, 3, 2, 2, 2, 171, 172, 9, 2, 2, 2, 172, 173, 3, 2, 2, 2, 173, 174, 8, 5, 2, 2, 174, 10, 3, 2, 2, 2, 175, 176, 7, 60, 2, 2, 176, 12, 3, 2, 2, 2, 177, 178, 7, 61, 2, 2, 178, 14, 3, 2, 2, 2, 179, 180, 7, 46, 2, 2, 180, 16, 3, 2, 2, 2, 181, 182, 7, 48, 2, 2, 182, 18, 3, 2, 2, 2, 183, 184, 7, 48, 2, 2, 184, 185, 7, 48, 2, 2, 185, 186, 7, 48, 2, 2, 186, 20, 3, 2, 2, 2, 187, 188, 7, 93, 2, 2, 188, 22, 3, 2, 2, 2, 189, 190, 7, 95, 2, 2, 190, 24, 3, 2, 2, 2, 191, 192, 7, 42, 2, 2, 192, 26, 3, 2, 2, 2, 193, 194, 7, 43, 2, 2, 194, 28, 3, 2, 2, 2, 195, 196, 7, 125, 2, 2, 196, 30, 3, 2, 2, 2, 197, 198, 7, 127, 2, 2, 198, 32, 3, 2, 2, 2, 199, 200, 7, 64, 2, 2, 200, 34, 3, 2, 2, 2, 201, 202, 7, 62, 2, 2, 202, 36, 3, 2, 2, 2, 203, 204, 7, 63, 2, 2, 204, 205, 7, 63, 2, 2, 205, 38, 3, 2, 2, 2, 206, 207, 7, 64, 2, 2, 207, 208, 7, 63, 2, 2, 208, 40, 3, 2, 2, 2, 209, 210, 7, 62, 2, 2, 210, 211, 7, 63, 2, 2, 211, 42, 3, 2, 2, 2, 212, 213, 7, 35, 2, 2, 213, 214, 7, 63, 2, 2, 214, 44, 3, 2, 2, 2, 215, 216, 7, 45, 2, 2, 216, 46, 3, 2, 2, 2, 217, 218, 7, 47, 2, 2, 218, 48, 3, 2, 2, 2, 219, 220, 7, 47, 2, 2, 220, 221, 7, 47, 2, 2, 221, 50, 3, 2, 2, 2, 222, 223, 7, 45, 2, 2, 223, 224, 7, 45, 2, 2, 224, 52, 3, 2, 2, 2, 225, 226, 7, 44, 2, 2, 226, 54, 3, 2, 2, 2, 227, 228, 7, 49, 2, 2, 228, 56, 3, 2, 2, 2, 229, 230, 7, 39, 2, 2, 230, 58, 3, 2, 2, 2, 231, 232, 7, 67, 2, 2, 232, 233, 7, 80, 2, 2, 233, 237, 7, 70, 2, 2, 234, 235, 7, 40, 2, 2, 235, 237, 7, 40, 2, 2, 236, 231, 3, 2, 2, 2, 236, 234, 3, 2, 2, 2, 237, 60, 3, 2, 2, 2, 238, 239, 7, 81, 2, 2, 239, 243, 7, 84, 2, 2, 240, 241, 7, 126, 2, 2, 241, 243, 7, 126, 2, 2, 242, 238, 3, 2, 2, 2, 242, 240, 3, 2, 2, 2, 243, 62, 3, 2, 2, 2, 244, 245, 7, 63, 2, 2, 245, 64, 3, 2, 2, 2, 246, 247, 7, 48, 2, 2, 247, 248, 7, 48, 2, 2, 248, 66, 3, 2, 2, 2, 249, 250, 7, 65, 2, 2, 250, 68, 3, 2, 2, 2, 251, 252, 7, 35, 2, 2, 252, 253, 7, 128, 2, 2, 253, 70, 3, 2, 2, 2, 254, 255, 7, 63, 2, 2, 255, 256, 7, 128, 2, 2, 256, 72, 3, 2, 2, 2, 257, 258, 7, 72, 2, 2, 258, 259, 7, 81, 2, 2, 259, 260, 7, 84, 2, 2, 260, 74, 3, 2, 2, 2, 261, 262, 7, 84, 2, 2, 262, 263, 7, 71, 2, 2, 263, 264, 7, 86, 2, 2, 264, 265, 7, 87, 2, 2, 265, 266, 7, 84, 2, 2, 266, 267, 7, 80, 2, 2, 267, 76, 3, 2, 2, 2, 268, 269, 7, 70, 2, 2, 269, 270, 7, 75, 2, 2, 270, 271, 7, 85, 2, 2, 271, 272, 7, 86, 2, 2, 272, 273, 7, 75, 2, 2, 273, 274, 7, 80, 2, 2, 274, 275, 7, 69, 2, 2, 275, 276, 7, 86, 2, 2, 276, 78, 3, 2, 2, 2, 277, 278, 7, 72, 2, 2, 278, 279, 7, 75, 2, 2, 279, 280, 7, 78, 2, 2, 280, 281, 7, 86, 2, 2, 281, 282, 7, 71, 2, 2, 282, 283, 7, 84, 2, 2, 283, 80, 3, 2, 2, 2, 284, 285, 7, 85, 2, 2, 285, 286, 7, 81, 2, 2, 286, 287, 7, 84, 2, 2, 287, 288, 7, 86, 2, 2, 288, 82, 3, 2, 2, 2, 289, 290, 7, 78, 2, 2, 290, 291, 7, 75, 2, 2, 291, 292, 7, 79, 2, 2, 292, 293, 7, 75, 2, 2, 293, 294, 7, 86, 2, 2, 294, 84, 3, 2, 2, 2, 295, 296, 7, 78, 2, 2, 296, 297, 7, 71, 2, 2, 297, 298, 7, 86, 2, 2, 298, 86, 3, 2, 2, 2, 299, 300, 7, 69, 2, 2, 300, 301, 7, 81, 2, 2, 301, 302, 7, 78, 2, 2, 302, 303, 7, 78, 2, 2, 303, 304, 7, 71, 2, 2, 304, 305, 7, 69, 2, 2, 305, 306, 7, 86, 2, 2, 306, 88, 3, 2, 2, 2, 307, 308, 7, 67, 2, 2, 308, 309, 7, 85, 2, 2, 309, 315, 7, 69, 2, 2, 310, 311, 7, 70, 2, 2, 311, 312, 7, 71, 2, 2, 312, 313, 7, 85, 2, 2, 313, 315, 7, 69, 2, 2, 314, 307, 3, 2, 2, 2, 314, 310, 3, 2, 2, 2, 315, 90, 3, 2, 2, 2, 316, 317, 7, 80, 2, 2, 317, 318, 7, 81, 2, 2, 318, 319, 7, 80, 2, 2, 319, 320, 7, 71, 2, 2, 320, 92, 3, 2, 2, 2, 321, 322, 7, 80, 2, 2, 322, 323, 7, 87, 2, 2, 323, 324, 7, 78, 2, 2, 324, 325, 7, 78, 2, 2, 325, 94, 3, 2, 2, 2, 326, 327, 7, 86, 2, 2, 327, 328, 7, 84, 2, 2, 328, 329, 7, 87, 2, 2, 329, 345, 7, 71, 2, 2, 330, 331, 7, 118, 2, 2, 331, 332, 7, 116, 2, 2, 332, 333, 7, 119, 2, 2, 333, 345, 7, 103, 2, 2, 334, 335, 7, 72, 2, 2, 335, 336, 7, 67, 2, 2, 336, 337, 7, 78, 2, 2, 337, 338, 7, 85, 2, 2, 338, 345, 7, 71, 2, 2, 339, 340, 7, 104, 2, 2, 340, 341, 7, 99, 2, 2, 341, 342, 7, 110, 2, 2, 342, 343, 7, 117, 2, 2, 343, 345, 7, 103, 2, 2, 344, 326, 3, 2, 2, 2, 344, 330, 3, 2, 2, 2, 344, 334, 3, 2, 2, 2, 344, 339, 3, 2, 2, 2, 345, 96, 3, 2, 2, 2, 346, 347, 7, 75, 2, 2, 347, 348, 7, 80, 2, 2, 348, 349, 7, 86, 2, 2, 349, 350, 7, 81, 2, 2, 350, 98, 3, 2, 2, 2, 351, 352, 7, 77, 2, 2, 352, 353, 7, 71, 2, 2, 353, 354, 7, 71, 2, 2, 354, 355, 7, 82, 2, 2, 355, 100, 3, 2, 2, 2, 356, 357, 7, 89, 2, 2, 357, 358, 7, 75, 2, 2, 358, 359, 7, 86, 2, 2, 359, 360, 7, 74, 2, 2, 360, 102, 3, 2, 2, 2, 361, 362, 7, 69, 2, 2, 362, 363, 7, 81, 2, 2, 363, 364, 7, 87, 2, 2, 364, 365, 7, 80, 2, 2, 365, 366, 7, 86, 2, 2, 366, 104, 3, 2, 2, 2, 367, 368, 7, 67, 2, 2, 368, 369, 7, 78, 2, 2, 369, 370, 7, 78, 2, 2, 370, 106, 3, 2, 2, 2, 371, 372, 7, 67, 2, 2, 372, 373, 7, 80, 2, 2, 373, 374, 7, 91, 2, 2, 374, 108, 3, 2, 2, 2, 375, 376, 7, 67, 2, 2, 376, 377, 7, 73, 2, 2, 377, 378, 7, 73, 2, 2, 378, 379, 7, 84, 2, 2, 379, 380, 7, 71, 2, 2, 380, 381, 7, 73, 2, 2, 381, 382, 7, 67, 2, 2, 382, 383, 7, 86, 2, 2, 383, 384, 7, 71, 2, 2, 384, 110, 3, 2, 2, 2, 385, 386, 7, 78, 2, 2, 386, 387, 7, 75, 2, 2, 387, 388, 7, 77, 2, 2, 388, 389, 7, 71, 2, 2, 389, 112, 3, 2, 2, 2, 390, 391, 7, 80, 2, 2, 391, 392, 7, 81, 2, 2, 392, 395, 7, 86, 2, 2, 393, 395, 7, 35, 2, 2, 394, 390, 3, 2, 2, 2, 394, 393, 3, 2, 2, 2, 395, 114, 3, 2, 2, 2, 396, 397, 7, 75, 2, 2, 397, 398, 7, 80, 2, 2, 398, 116, 3, 2, 2, 2, 399, 401, 5, 131, 66, 2, 400, 399, 3, 2, 2, 2, 401, 402, 3, 2, 2, 2, 402, 400, 3, 2, 2, 2, 402, 403, 3, 2, 2, 2, 403, 407, 3, 2, 2, 2, 404, 406, 5, 133, 67, 2, 405, 404, 3, 2, 2, 2, 406, 409, 3, 2, 2, 2, 407, 405, 3, 2, 2, 2, 407, 408, 3, 2, 2, 2, 408, 118, 3, 2, 2, 2, 409, 407, 3, 2, 2, 2, 410, 413, 5, 137, 69, 2, 411, 413, 5, 135, 68, 2, 412, 410, 3, 2, 2, 2, 412, 411, 3, 2, 2, 2, 413, 120, 3, 2, 2, 2, 414, 416, 9, 4, 2, 2, 415, 414, 3, 2, 2, 2, 416, 417, 3, 2, 2, 2, 417, 415, 3, 2, 2, 2, 417, 418, 3, 2, 2, 2, 418, 122, 3, 2, 2, 2, 419, 420, 5, 127, 64, 2, 420, 424, 7, 48, 2, 2, 421, 423, 9, 4, 2, 2, 422, 421, 3, 2, 2, 2, 423, 426, 3, 2, 2, 2, 424, 422, 3, 2, 2, 2, 424, 425, 3, 2, 2, 2, 425, 428, 3, 2, 2, 2, 426, 424, 3, 2, 2, 2, 427, 429, 5, 129, 65, 2, 428, 427, 3, 2, 2, 2, 428, 429, 3, 2, 2, 2, 429, 444, 3, 2, 2, 2, 430, 432, 7, 48, 2, 2, 431, 433, 9, 4, 2, 2, 432, 431, 3, 2, 2, 2, 433, 434, 3, 2, 2, 2, 434, 432, 3, 2, 2, 2, 434, 435, 3, 2, 2, 2, 435, 437, 3, 2, 2, 2, 436, 438, 5, 129, 65, 2, 437, 436, 3, 2, 2, 2, 437, 438, 3, 2, 2, 2, 438, 444, 3, 2, 2, 2, 439, 441, 5, 127, 64, 2, 440, 442, 5, 129, 65, 2, 441, 440, 3, 2, 2, 2, 441, 442, 3, 2, 2, 2, 442, 444, 3, 2, 2, 2, 443, 419, 3, 2, 2, 2, 443, 430, 3, 2, 2, 2, 443, 439, 3, 2, 2, 2, 444, 124, 3, 2, 2, 2, 445, 446, 9, 5, 2, 2, 446, 126, 3, 2, 2, 2, 447, 456, 7, 50, 2, 2, 448, 452, 9, 6, 2, 2, 449, 451, 9, 4, 2, 2, 450, 449, 3, 2, 2, 2, 451, 454, 3, 2, 2, 2, 452, 450, 3, 2, 2, 2, 452, 453, 3, 2, 2, 2, 453, 456, 3, 2, 2, 2, 454, 452, 3, 2, 2, 2, 455, 447, 3, 2, 2, 2, 455, 448, 3, 2, 2, 2, 456, 128, 3, 2, 2, 2, 457, 459, 9, 7, 2, 2, 458, 460, 9, 8, 2, 2, 459, 458, 3, 2, 2, 2, 459, 460, 3, 2, 2, 2, 460, 462, 3, 2, 2, 2, 461, 463, 9, 4, 2, 2, 462, 461, 3, 2, 2, 2, 463, 464, 3, 2, 2, 2, 464, 462, 3, 2, 2, 2, 464, 465, 3, 2, 2, 2, 465, 130, 3, 2, 2, 2, 466, 467, 9, 9, 2, 2, 467, 132, 3, 2, 2, 2, 468, 469, 4, 50, 59, 2, 469, 134, 3, 2, 2, 2, 470, 478, 7, 36, 2, 2, 471, 472, 7, 94, 2, 2, 472, 477, 11, 2, 2, 2, 473, 474, 7, 36, 2, 2, 474, 477, 7, 36, 2, 2, 475, 477, 10, 10, 2, 2, 476, 471, 3, 2, 2, 2, 476, 473, 3, 2, 2, 2, 476, 475, 3, 2, 2, 2, 477, 480, 3, 2, 2, 2, 478, 476, 3, 2, 2, 2, 478, 479, 3, 2, 2, 2, 479, 481, 3, 2, 2, 2, 480, 478, 3, 2, 2, 2, 481, 482, 7, 36, 2, 2, 482, 136, 3, 2, 2, 2, 483, 491, 7, 41, 2, 2, 484, 485, 7, 94, 2, 2, 485, 490, 11, 2, 2, 2, 486, 487, 7, 41, 2, 2, 487, 490, 7, 41, 2, 2, 488, 490, 10, 11, 2, 2, 489, 484, 3, 2, 2, 2, 489, 486, 3, 2, 2, 2, 489, 488, 3, 2, 2, 2, 490, 493, 3, 2, 2, 2, 491, 489, 3, 2, 2, 2, 491, 492, 3, 2, 2, 2, 492, 494, 3, 2, 2, 2, 493, 491, 3, 2, 2, 2, 494, 495, 7, 41, 2, 2, 495, 138, 3, 2, 2, 2, 29, 2, 145, 159, 167, 236, 242, 314, 344, 394, 402, 407, 412, 417, 424, 428, 434, 437, 441, 443, 452, 455, 459, 464, 476, 478, 489, 491, 3, 2, 3, 2] \ No newline at end of file +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 62, 480, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 3, 2, 3, 2, 3, 2, 3, 2, 7, 2, 142, 10, 2, 12, 2, 14, 2, 145, 11, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 156, 10, 3, 12, 3, 14, 3, 159, 11, 3, 3, 3, 3, 3, 3, 4, 6, 4, 164, 10, 4, 13, 4, 14, 4, 165, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 231, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 237, 10, 30, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 309, 10, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 5, 47, 339, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 5, 56, 389, 10, 56, 3, 57, 3, 57, 3, 57, 3, 58, 6, 58, 395, 10, 58, 13, 58, 14, 58, 396, 3, 58, 7, 58, 400, 10, 58, 12, 58, 14, 58, 403, 11, 58, 3, 59, 3, 59, 5, 59, 407, 10, 59, 3, 60, 6, 60, 410, 10, 60, 13, 60, 14, 60, 411, 3, 61, 3, 61, 3, 61, 6, 61, 417, 10, 61, 13, 61, 14, 61, 418, 3, 61, 5, 61, 422, 10, 61, 3, 61, 3, 61, 5, 61, 426, 10, 61, 5, 61, 428, 10, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 7, 63, 435, 10, 63, 12, 63, 14, 63, 438, 11, 63, 5, 63, 440, 10, 63, 3, 64, 3, 64, 5, 64, 444, 10, 64, 3, 64, 6, 64, 447, 10, 64, 13, 64, 14, 64, 448, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 7, 67, 461, 10, 67, 12, 67, 14, 67, 464, 11, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 7, 68, 474, 10, 68, 12, 68, 14, 68, 477, 11, 68, 3, 68, 3, 68, 3, 143, 2, 69, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 2, 125, 2, 127, 2, 129, 2, 131, 2, 133, 2, 135, 2, 3, 2, 12, 5, 2, 12, 12, 15, 15, 8234, 8235, 6, 2, 11, 11, 13, 14, 34, 34, 162, 162, 3, 2, 50, 59, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 51, 59, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 4, 2, 67, 92, 99, 124, 4, 2, 36, 36, 94, 94, 4, 2, 41, 41, 94, 94, 2, 500, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 3, 137, 3, 2, 2, 2, 5, 151, 3, 2, 2, 2, 7, 163, 3, 2, 2, 2, 9, 169, 3, 2, 2, 2, 11, 173, 3, 2, 2, 2, 13, 175, 3, 2, 2, 2, 15, 177, 3, 2, 2, 2, 17, 179, 3, 2, 2, 2, 19, 181, 3, 2, 2, 2, 21, 183, 3, 2, 2, 2, 23, 185, 3, 2, 2, 2, 25, 187, 3, 2, 2, 2, 27, 189, 3, 2, 2, 2, 29, 191, 3, 2, 2, 2, 31, 193, 3, 2, 2, 2, 33, 195, 3, 2, 2, 2, 35, 197, 3, 2, 2, 2, 37, 200, 3, 2, 2, 2, 39, 203, 3, 2, 2, 2, 41, 206, 3, 2, 2, 2, 43, 209, 3, 2, 2, 2, 45, 211, 3, 2, 2, 2, 47, 213, 3, 2, 2, 2, 49, 216, 3, 2, 2, 2, 51, 219, 3, 2, 2, 2, 53, 221, 3, 2, 2, 2, 55, 223, 3, 2, 2, 2, 57, 230, 3, 2, 2, 2, 59, 236, 3, 2, 2, 2, 61, 238, 3, 2, 2, 2, 63, 241, 3, 2, 2, 2, 65, 243, 3, 2, 2, 2, 67, 245, 3, 2, 2, 2, 69, 248, 3, 2, 2, 2, 71, 251, 3, 2, 2, 2, 73, 255, 3, 2, 2, 2, 75, 262, 3, 2, 2, 2, 77, 271, 3, 2, 2, 2, 79, 278, 3, 2, 2, 2, 81, 283, 3, 2, 2, 2, 83, 289, 3, 2, 2, 2, 85, 293, 3, 2, 2, 2, 87, 308, 3, 2, 2, 2, 89, 310, 3, 2, 2, 2, 91, 315, 3, 2, 2, 2, 93, 338, 3, 2, 2, 2, 95, 340, 3, 2, 2, 2, 97, 345, 3, 2, 2, 2, 99, 350, 3, 2, 2, 2, 101, 355, 3, 2, 2, 2, 103, 361, 3, 2, 2, 2, 105, 365, 3, 2, 2, 2, 107, 369, 3, 2, 2, 2, 109, 379, 3, 2, 2, 2, 111, 388, 3, 2, 2, 2, 113, 390, 3, 2, 2, 2, 115, 394, 3, 2, 2, 2, 117, 406, 3, 2, 2, 2, 119, 409, 3, 2, 2, 2, 121, 427, 3, 2, 2, 2, 123, 429, 3, 2, 2, 2, 125, 439, 3, 2, 2, 2, 127, 441, 3, 2, 2, 2, 129, 450, 3, 2, 2, 2, 131, 452, 3, 2, 2, 2, 133, 454, 3, 2, 2, 2, 135, 467, 3, 2, 2, 2, 137, 138, 7, 49, 2, 2, 138, 139, 7, 44, 2, 2, 139, 143, 3, 2, 2, 2, 140, 142, 11, 2, 2, 2, 141, 140, 3, 2, 2, 2, 142, 145, 3, 2, 2, 2, 143, 144, 3, 2, 2, 2, 143, 141, 3, 2, 2, 2, 144, 146, 3, 2, 2, 2, 145, 143, 3, 2, 2, 2, 146, 147, 7, 44, 2, 2, 147, 148, 7, 49, 2, 2, 148, 149, 3, 2, 2, 2, 149, 150, 8, 2, 2, 2, 150, 4, 3, 2, 2, 2, 151, 152, 7, 49, 2, 2, 152, 153, 7, 49, 2, 2, 153, 157, 3, 2, 2, 2, 154, 156, 10, 2, 2, 2, 155, 154, 3, 2, 2, 2, 156, 159, 3, 2, 2, 2, 157, 155, 3, 2, 2, 2, 157, 158, 3, 2, 2, 2, 158, 160, 3, 2, 2, 2, 159, 157, 3, 2, 2, 2, 160, 161, 8, 3, 2, 2, 161, 6, 3, 2, 2, 2, 162, 164, 9, 3, 2, 2, 163, 162, 3, 2, 2, 2, 164, 165, 3, 2, 2, 2, 165, 163, 3, 2, 2, 2, 165, 166, 3, 2, 2, 2, 166, 167, 3, 2, 2, 2, 167, 168, 8, 4, 2, 2, 168, 8, 3, 2, 2, 2, 169, 170, 9, 2, 2, 2, 170, 171, 3, 2, 2, 2, 171, 172, 8, 5, 2, 2, 172, 10, 3, 2, 2, 2, 173, 174, 7, 60, 2, 2, 174, 12, 3, 2, 2, 2, 175, 176, 7, 61, 2, 2, 176, 14, 3, 2, 2, 2, 177, 178, 7, 48, 2, 2, 178, 16, 3, 2, 2, 2, 179, 180, 7, 46, 2, 2, 180, 18, 3, 2, 2, 2, 181, 182, 7, 93, 2, 2, 182, 20, 3, 2, 2, 2, 183, 184, 7, 95, 2, 2, 184, 22, 3, 2, 2, 2, 185, 186, 7, 42, 2, 2, 186, 24, 3, 2, 2, 2, 187, 188, 7, 43, 2, 2, 188, 26, 3, 2, 2, 2, 189, 190, 7, 125, 2, 2, 190, 28, 3, 2, 2, 2, 191, 192, 7, 127, 2, 2, 192, 30, 3, 2, 2, 2, 193, 194, 7, 64, 2, 2, 194, 32, 3, 2, 2, 2, 195, 196, 7, 62, 2, 2, 196, 34, 3, 2, 2, 2, 197, 198, 7, 63, 2, 2, 198, 199, 7, 63, 2, 2, 199, 36, 3, 2, 2, 2, 200, 201, 7, 64, 2, 2, 201, 202, 7, 63, 2, 2, 202, 38, 3, 2, 2, 2, 203, 204, 7, 62, 2, 2, 204, 205, 7, 63, 2, 2, 205, 40, 3, 2, 2, 2, 206, 207, 7, 35, 2, 2, 207, 208, 7, 63, 2, 2, 208, 42, 3, 2, 2, 2, 209, 210, 7, 45, 2, 2, 210, 44, 3, 2, 2, 2, 211, 212, 7, 47, 2, 2, 212, 46, 3, 2, 2, 2, 213, 214, 7, 47, 2, 2, 214, 215, 7, 47, 2, 2, 215, 48, 3, 2, 2, 2, 216, 217, 7, 45, 2, 2, 217, 218, 7, 45, 2, 2, 218, 50, 3, 2, 2, 2, 219, 220, 7, 44, 2, 2, 220, 52, 3, 2, 2, 2, 221, 222, 7, 49, 2, 2, 222, 54, 3, 2, 2, 2, 223, 224, 7, 39, 2, 2, 224, 56, 3, 2, 2, 2, 225, 226, 7, 67, 2, 2, 226, 227, 7, 80, 2, 2, 227, 231, 7, 70, 2, 2, 228, 229, 7, 40, 2, 2, 229, 231, 7, 40, 2, 2, 230, 225, 3, 2, 2, 2, 230, 228, 3, 2, 2, 2, 231, 58, 3, 2, 2, 2, 232, 233, 7, 81, 2, 2, 233, 237, 7, 84, 2, 2, 234, 235, 7, 126, 2, 2, 235, 237, 7, 126, 2, 2, 236, 232, 3, 2, 2, 2, 236, 234, 3, 2, 2, 2, 237, 60, 3, 2, 2, 2, 238, 239, 5, 15, 8, 2, 239, 240, 5, 15, 8, 2, 240, 62, 3, 2, 2, 2, 241, 242, 7, 63, 2, 2, 242, 64, 3, 2, 2, 2, 243, 244, 7, 65, 2, 2, 244, 66, 3, 2, 2, 2, 245, 246, 7, 35, 2, 2, 246, 247, 7, 128, 2, 2, 247, 68, 3, 2, 2, 2, 248, 249, 7, 63, 2, 2, 249, 250, 7, 128, 2, 2, 250, 70, 3, 2, 2, 2, 251, 252, 7, 72, 2, 2, 252, 253, 7, 81, 2, 2, 253, 254, 7, 84, 2, 2, 254, 72, 3, 2, 2, 2, 255, 256, 7, 84, 2, 2, 256, 257, 7, 71, 2, 2, 257, 258, 7, 86, 2, 2, 258, 259, 7, 87, 2, 2, 259, 260, 7, 84, 2, 2, 260, 261, 7, 80, 2, 2, 261, 74, 3, 2, 2, 2, 262, 263, 7, 70, 2, 2, 263, 264, 7, 75, 2, 2, 264, 265, 7, 85, 2, 2, 265, 266, 7, 86, 2, 2, 266, 267, 7, 75, 2, 2, 267, 268, 7, 80, 2, 2, 268, 269, 7, 69, 2, 2, 269, 270, 7, 86, 2, 2, 270, 76, 3, 2, 2, 2, 271, 272, 7, 72, 2, 2, 272, 273, 7, 75, 2, 2, 273, 274, 7, 78, 2, 2, 274, 275, 7, 86, 2, 2, 275, 276, 7, 71, 2, 2, 276, 277, 7, 84, 2, 2, 277, 78, 3, 2, 2, 2, 278, 279, 7, 85, 2, 2, 279, 280, 7, 81, 2, 2, 280, 281, 7, 84, 2, 2, 281, 282, 7, 86, 2, 2, 282, 80, 3, 2, 2, 2, 283, 284, 7, 78, 2, 2, 284, 285, 7, 75, 2, 2, 285, 286, 7, 79, 2, 2, 286, 287, 7, 75, 2, 2, 287, 288, 7, 86, 2, 2, 288, 82, 3, 2, 2, 2, 289, 290, 7, 78, 2, 2, 290, 291, 7, 71, 2, 2, 291, 292, 7, 86, 2, 2, 292, 84, 3, 2, 2, 2, 293, 294, 7, 69, 2, 2, 294, 295, 7, 81, 2, 2, 295, 296, 7, 78, 2, 2, 296, 297, 7, 78, 2, 2, 297, 298, 7, 71, 2, 2, 298, 299, 7, 69, 2, 2, 299, 300, 7, 86, 2, 2, 300, 86, 3, 2, 2, 2, 301, 302, 7, 67, 2, 2, 302, 303, 7, 85, 2, 2, 303, 309, 7, 69, 2, 2, 304, 305, 7, 70, 2, 2, 305, 306, 7, 71, 2, 2, 306, 307, 7, 85, 2, 2, 307, 309, 7, 69, 2, 2, 308, 301, 3, 2, 2, 2, 308, 304, 3, 2, 2, 2, 309, 88, 3, 2, 2, 2, 310, 311, 7, 80, 2, 2, 311, 312, 7, 81, 2, 2, 312, 313, 7, 80, 2, 2, 313, 314, 7, 71, 2, 2, 314, 90, 3, 2, 2, 2, 315, 316, 7, 80, 2, 2, 316, 317, 7, 87, 2, 2, 317, 318, 7, 78, 2, 2, 318, 319, 7, 78, 2, 2, 319, 92, 3, 2, 2, 2, 320, 321, 7, 86, 2, 2, 321, 322, 7, 84, 2, 2, 322, 323, 7, 87, 2, 2, 323, 339, 7, 71, 2, 2, 324, 325, 7, 118, 2, 2, 325, 326, 7, 116, 2, 2, 326, 327, 7, 119, 2, 2, 327, 339, 7, 103, 2, 2, 328, 329, 7, 72, 2, 2, 329, 330, 7, 67, 2, 2, 330, 331, 7, 78, 2, 2, 331, 332, 7, 85, 2, 2, 332, 339, 7, 71, 2, 2, 333, 334, 7, 104, 2, 2, 334, 335, 7, 99, 2, 2, 335, 336, 7, 110, 2, 2, 336, 337, 7, 117, 2, 2, 337, 339, 7, 103, 2, 2, 338, 320, 3, 2, 2, 2, 338, 324, 3, 2, 2, 2, 338, 328, 3, 2, 2, 2, 338, 333, 3, 2, 2, 2, 339, 94, 3, 2, 2, 2, 340, 341, 7, 75, 2, 2, 341, 342, 7, 80, 2, 2, 342, 343, 7, 86, 2, 2, 343, 344, 7, 81, 2, 2, 344, 96, 3, 2, 2, 2, 345, 346, 7, 77, 2, 2, 346, 347, 7, 71, 2, 2, 347, 348, 7, 71, 2, 2, 348, 349, 7, 82, 2, 2, 349, 98, 3, 2, 2, 2, 350, 351, 7, 89, 2, 2, 351, 352, 7, 75, 2, 2, 352, 353, 7, 86, 2, 2, 353, 354, 7, 74, 2, 2, 354, 100, 3, 2, 2, 2, 355, 356, 7, 69, 2, 2, 356, 357, 7, 81, 2, 2, 357, 358, 7, 87, 2, 2, 358, 359, 7, 80, 2, 2, 359, 360, 7, 86, 2, 2, 360, 102, 3, 2, 2, 2, 361, 362, 7, 67, 2, 2, 362, 363, 7, 78, 2, 2, 363, 364, 7, 78, 2, 2, 364, 104, 3, 2, 2, 2, 365, 366, 7, 67, 2, 2, 366, 367, 7, 80, 2, 2, 367, 368, 7, 91, 2, 2, 368, 106, 3, 2, 2, 2, 369, 370, 7, 67, 2, 2, 370, 371, 7, 73, 2, 2, 371, 372, 7, 73, 2, 2, 372, 373, 7, 84, 2, 2, 373, 374, 7, 71, 2, 2, 374, 375, 7, 73, 2, 2, 375, 376, 7, 67, 2, 2, 376, 377, 7, 86, 2, 2, 377, 378, 7, 71, 2, 2, 378, 108, 3, 2, 2, 2, 379, 380, 7, 78, 2, 2, 380, 381, 7, 75, 2, 2, 381, 382, 7, 77, 2, 2, 382, 383, 7, 71, 2, 2, 383, 110, 3, 2, 2, 2, 384, 385, 7, 80, 2, 2, 385, 386, 7, 81, 2, 2, 386, 389, 7, 86, 2, 2, 387, 389, 7, 35, 2, 2, 388, 384, 3, 2, 2, 2, 388, 387, 3, 2, 2, 2, 389, 112, 3, 2, 2, 2, 390, 391, 7, 75, 2, 2, 391, 392, 7, 80, 2, 2, 392, 114, 3, 2, 2, 2, 393, 395, 5, 129, 65, 2, 394, 393, 3, 2, 2, 2, 395, 396, 3, 2, 2, 2, 396, 394, 3, 2, 2, 2, 396, 397, 3, 2, 2, 2, 397, 401, 3, 2, 2, 2, 398, 400, 5, 131, 66, 2, 399, 398, 3, 2, 2, 2, 400, 403, 3, 2, 2, 2, 401, 399, 3, 2, 2, 2, 401, 402, 3, 2, 2, 2, 402, 116, 3, 2, 2, 2, 403, 401, 3, 2, 2, 2, 404, 407, 5, 135, 68, 2, 405, 407, 5, 133, 67, 2, 406, 404, 3, 2, 2, 2, 406, 405, 3, 2, 2, 2, 407, 118, 3, 2, 2, 2, 408, 410, 9, 4, 2, 2, 409, 408, 3, 2, 2, 2, 410, 411, 3, 2, 2, 2, 411, 409, 3, 2, 2, 2, 411, 412, 3, 2, 2, 2, 412, 120, 3, 2, 2, 2, 413, 414, 5, 125, 63, 2, 414, 416, 5, 15, 8, 2, 415, 417, 9, 4, 2, 2, 416, 415, 3, 2, 2, 2, 417, 418, 3, 2, 2, 2, 418, 416, 3, 2, 2, 2, 418, 419, 3, 2, 2, 2, 419, 421, 3, 2, 2, 2, 420, 422, 5, 127, 64, 2, 421, 420, 3, 2, 2, 2, 421, 422, 3, 2, 2, 2, 422, 428, 3, 2, 2, 2, 423, 425, 5, 125, 63, 2, 424, 426, 5, 127, 64, 2, 425, 424, 3, 2, 2, 2, 425, 426, 3, 2, 2, 2, 426, 428, 3, 2, 2, 2, 427, 413, 3, 2, 2, 2, 427, 423, 3, 2, 2, 2, 428, 122, 3, 2, 2, 2, 429, 430, 9, 5, 2, 2, 430, 124, 3, 2, 2, 2, 431, 440, 7, 50, 2, 2, 432, 436, 9, 6, 2, 2, 433, 435, 9, 4, 2, 2, 434, 433, 3, 2, 2, 2, 435, 438, 3, 2, 2, 2, 436, 434, 3, 2, 2, 2, 436, 437, 3, 2, 2, 2, 437, 440, 3, 2, 2, 2, 438, 436, 3, 2, 2, 2, 439, 431, 3, 2, 2, 2, 439, 432, 3, 2, 2, 2, 440, 126, 3, 2, 2, 2, 441, 443, 9, 7, 2, 2, 442, 444, 9, 8, 2, 2, 443, 442, 3, 2, 2, 2, 443, 444, 3, 2, 2, 2, 444, 446, 3, 2, 2, 2, 445, 447, 9, 4, 2, 2, 446, 445, 3, 2, 2, 2, 447, 448, 3, 2, 2, 2, 448, 446, 3, 2, 2, 2, 448, 449, 3, 2, 2, 2, 449, 128, 3, 2, 2, 2, 450, 451, 9, 9, 2, 2, 451, 130, 3, 2, 2, 2, 452, 453, 4, 50, 59, 2, 453, 132, 3, 2, 2, 2, 454, 462, 7, 36, 2, 2, 455, 456, 7, 94, 2, 2, 456, 461, 11, 2, 2, 2, 457, 458, 7, 36, 2, 2, 458, 461, 7, 36, 2, 2, 459, 461, 10, 10, 2, 2, 460, 455, 3, 2, 2, 2, 460, 457, 3, 2, 2, 2, 460, 459, 3, 2, 2, 2, 461, 464, 3, 2, 2, 2, 462, 460, 3, 2, 2, 2, 462, 463, 3, 2, 2, 2, 463, 465, 3, 2, 2, 2, 464, 462, 3, 2, 2, 2, 465, 466, 7, 36, 2, 2, 466, 134, 3, 2, 2, 2, 467, 475, 7, 41, 2, 2, 468, 469, 7, 94, 2, 2, 469, 474, 11, 2, 2, 2, 470, 471, 7, 41, 2, 2, 471, 474, 7, 41, 2, 2, 472, 474, 10, 11, 2, 2, 473, 468, 3, 2, 2, 2, 473, 470, 3, 2, 2, 2, 473, 472, 3, 2, 2, 2, 474, 477, 3, 2, 2, 2, 475, 473, 3, 2, 2, 2, 475, 476, 3, 2, 2, 2, 476, 478, 3, 2, 2, 2, 477, 475, 3, 2, 2, 2, 478, 479, 7, 41, 2, 2, 479, 136, 3, 2, 2, 2, 27, 2, 143, 157, 165, 230, 236, 308, 338, 388, 396, 401, 406, 411, 418, 421, 425, 427, 436, 439, 443, 448, 460, 462, 473, 475, 3, 2, 3, 2] \ No newline at end of file diff --git a/pkg/parser/fql/FqlLexer.tokens b/pkg/parser/fql/FqlLexer.tokens index cc121436..79127cc6 100644 --- a/pkg/parser/fql/FqlLexer.tokens +++ b/pkg/parser/fql/FqlLexer.tokens @@ -4,106 +4,103 @@ WhiteSpaces=3 LineTerminator=4 Colon=5 SemiColon=6 -Comma=7 -Dot=8 -Ellipsis=9 -OpenBracket=10 -CloseBracket=11 -OpenParen=12 -CloseParen=13 -OpenBrace=14 -CloseBrace=15 -Gt=16 -Lt=17 -Eq=18 -Gte=19 -Lte=20 -Neq=21 -Plus=22 -Minus=23 -MinusMinus=24 -PlusPlus=25 -Multi=26 -Div=27 -Mod=28 -And=29 -Or=30 +Dot=7 +Comma=8 +OpenBracket=9 +CloseBracket=10 +OpenParen=11 +CloseParen=12 +OpenBrace=13 +CloseBrace=14 +Gt=15 +Lt=16 +Eq=17 +Gte=18 +Lte=19 +Neq=20 +Plus=21 +Minus=22 +MinusMinus=23 +PlusPlus=24 +Multi=25 +Div=26 +Mod=27 +And=28 +Or=29 +Range=30 Assign=31 -Range=32 -QuestionMark=33 -RegexNotMatch=34 -RegexMatch=35 -For=36 -Return=37 -Distinct=38 -Filter=39 -Sort=40 -Limit=41 -Let=42 -Collect=43 -SortDirection=44 -None=45 -Null=46 -BooleanLiteral=47 -Into=48 -Keep=49 -With=50 -Count=51 -All=52 -Any=53 -Aggregate=54 -Like=55 -Not=56 -In=57 -Identifier=58 -StringLiteral=59 -IntegerLiteral=60 -FloatLiteral=61 +QuestionMark=32 +RegexNotMatch=33 +RegexMatch=34 +For=35 +Return=36 +Distinct=37 +Filter=38 +Sort=39 +Limit=40 +Let=41 +Collect=42 +SortDirection=43 +None=44 +Null=45 +BooleanLiteral=46 +Into=47 +Keep=48 +With=49 +Count=50 +All=51 +Any=52 +Aggregate=53 +Like=54 +Not=55 +In=56 +Identifier=57 +StringLiteral=58 +IntegerLiteral=59 +FloatLiteral=60 ':'=5 ';'=6 -','=7 -'.'=8 -'...'=9 -'['=10 -']'=11 -'('=12 -')'=13 -'{'=14 -'}'=15 -'>'=16 -'<'=17 -'=='=18 -'>='=19 -'<='=20 -'!='=21 -'+'=22 -'-'=23 -'--'=24 -'++'=25 -'*'=26 -'/'=27 -'%'=28 +'.'=7 +','=8 +'['=9 +']'=10 +'('=11 +')'=12 +'{'=13 +'}'=14 +'>'=15 +'<'=16 +'=='=17 +'>='=18 +'<='=19 +'!='=20 +'+'=21 +'-'=22 +'--'=23 +'++'=24 +'*'=25 +'/'=26 +'%'=27 '='=31 -'..'=32 -'?'=33 -'!~'=34 -'=~'=35 -'FOR'=36 -'RETURN'=37 -'DISTINCT'=38 -'FILTER'=39 -'SORT'=40 -'LIMIT'=41 -'LET'=42 -'COLLECT'=43 -'NONE'=45 -'NULL'=46 -'INTO'=48 -'KEEP'=49 -'WITH'=50 -'COUNT'=51 -'ALL'=52 -'ANY'=53 -'AGGREGATE'=54 -'LIKE'=55 -'IN'=57 +'?'=32 +'!~'=33 +'=~'=34 +'FOR'=35 +'RETURN'=36 +'DISTINCT'=37 +'FILTER'=38 +'SORT'=39 +'LIMIT'=40 +'LET'=41 +'COLLECT'=42 +'NONE'=44 +'NULL'=45 +'INTO'=47 +'KEEP'=48 +'WITH'=49 +'COUNT'=50 +'ALL'=51 +'ANY'=52 +'AGGREGATE'=53 +'LIKE'=54 +'IN'=56 diff --git a/pkg/parser/fql/FqlParser.interp b/pkg/parser/fql/FqlParser.interp index 7fbf1503..88018e1a 100644 --- a/pkg/parser/fql/FqlParser.interp +++ b/pkg/parser/fql/FqlParser.interp @@ -6,9 +6,8 @@ null null ':' ';' -',' '.' -'...' +',' '[' ']' '(' @@ -30,8 +29,8 @@ null '%' null null +null '=' -'..' '?' '!~' '=~' @@ -70,9 +69,8 @@ WhiteSpaces LineTerminator Colon SemiColon -Comma Dot -Ellipsis +Comma OpenBracket CloseBracket OpenParen @@ -94,8 +92,8 @@ Div Mod And Or -Assign Range +Assign QuestionMark RegexNotMatch RegexMatch @@ -153,6 +151,7 @@ forExpressionBody forExpressionReturn variableDeclaration variable +rangeOperator arrayLiteral objectLiteral booleanLiteral @@ -170,8 +169,6 @@ expressionSequence functionCallExpression arguments expression -reservedWord -keyword equalityOperator logicalOperator mathOperator @@ -179,4 +176,4 @@ unaryOperator atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 63, 480, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 3, 2, 3, 2, 3, 3, 7, 3, 104, 10, 3, 12, 3, 14, 3, 107, 11, 3, 3, 3, 3, 3, 3, 4, 3, 4, 5, 4, 113, 10, 4, 3, 5, 3, 5, 5, 5, 117, 10, 5, 3, 6, 3, 6, 5, 6, 121, 10, 6, 3, 6, 3, 6, 3, 6, 5, 6, 126, 10, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 132, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 138, 10, 7, 3, 7, 3, 7, 3, 7, 7, 7, 143, 10, 7, 12, 7, 14, 7, 146, 11, 7, 3, 7, 7, 7, 149, 10, 7, 12, 7, 14, 7, 152, 11, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 165, 10, 10, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 171, 10, 11, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 180, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 7, 14, 186, 10, 14, 12, 14, 14, 14, 189, 11, 14, 3, 15, 3, 15, 5, 15, 193, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 244, 10, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 5, 24, 262, 10, 24, 3, 25, 3, 25, 5, 25, 266, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 279, 10, 26, 3, 27, 3, 27, 3, 28, 3, 28, 5, 28, 285, 10, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 293, 10, 29, 12, 29, 14, 29, 296, 11, 29, 5, 29, 298, 10, 29, 3, 29, 5, 29, 301, 10, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 6, 35, 317, 10, 35, 13, 35, 14, 35, 318, 3, 35, 7, 35, 322, 10, 35, 12, 35, 14, 35, 325, 11, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 5, 36, 336, 10, 36, 3, 37, 3, 37, 3, 37, 3, 37, 7, 37, 342, 10, 37, 12, 37, 14, 37, 345, 11, 37, 6, 37, 347, 10, 37, 13, 37, 14, 37, 348, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 7, 37, 356, 10, 37, 12, 37, 14, 37, 359, 11, 37, 7, 37, 361, 10, 37, 12, 37, 14, 37, 364, 11, 37, 3, 37, 3, 37, 3, 37, 7, 37, 369, 10, 37, 12, 37, 14, 37, 372, 11, 37, 7, 37, 374, 10, 37, 12, 37, 14, 37, 377, 11, 37, 5, 37, 379, 10, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 7, 41, 392, 10, 41, 12, 41, 14, 41, 395, 11, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 7, 43, 404, 10, 43, 12, 43, 14, 43, 407, 11, 43, 5, 43, 409, 10, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 438, 10, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 455, 10, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 7, 44, 463, 10, 44, 12, 44, 14, 44, 466, 11, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 2, 3, 86, 51, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 2, 8, 3, 2, 47, 48, 5, 2, 39, 49, 54, 56, 59, 59, 3, 2, 18, 23, 3, 2, 31, 32, 4, 2, 24, 25, 28, 30, 4, 2, 24, 25, 57, 58, 2, 498, 2, 100, 3, 2, 2, 2, 4, 105, 3, 2, 2, 2, 6, 112, 3, 2, 2, 2, 8, 116, 3, 2, 2, 2, 10, 131, 3, 2, 2, 2, 12, 133, 3, 2, 2, 2, 14, 155, 3, 2, 2, 2, 16, 157, 3, 2, 2, 2, 18, 164, 3, 2, 2, 2, 20, 170, 3, 2, 2, 2, 22, 172, 3, 2, 2, 2, 24, 175, 3, 2, 2, 2, 26, 181, 3, 2, 2, 2, 28, 190, 3, 2, 2, 2, 30, 243, 3, 2, 2, 2, 32, 245, 3, 2, 2, 2, 34, 247, 3, 2, 2, 2, 36, 249, 3, 2, 2, 2, 38, 251, 3, 2, 2, 2, 40, 253, 3, 2, 2, 2, 42, 255, 3, 2, 2, 2, 44, 257, 3, 2, 2, 2, 46, 261, 3, 2, 2, 2, 48, 265, 3, 2, 2, 2, 50, 278, 3, 2, 2, 2, 52, 280, 3, 2, 2, 2, 54, 282, 3, 2, 2, 2, 56, 288, 3, 2, 2, 2, 58, 304, 3, 2, 2, 2, 60, 306, 3, 2, 2, 2, 62, 308, 3, 2, 2, 2, 64, 310, 3, 2, 2, 2, 66, 312, 3, 2, 2, 2, 68, 314, 3, 2, 2, 2, 70, 335, 3, 2, 2, 2, 72, 378, 3, 2, 2, 2, 74, 380, 3, 2, 2, 2, 76, 382, 3, 2, 2, 2, 78, 386, 3, 2, 2, 2, 80, 388, 3, 2, 2, 2, 82, 396, 3, 2, 2, 2, 84, 399, 3, 2, 2, 2, 86, 437, 3, 2, 2, 2, 88, 467, 3, 2, 2, 2, 90, 469, 3, 2, 2, 2, 92, 471, 3, 2, 2, 2, 94, 473, 3, 2, 2, 2, 96, 475, 3, 2, 2, 2, 98, 477, 3, 2, 2, 2, 100, 101, 5, 4, 3, 2, 101, 3, 3, 2, 2, 2, 102, 104, 5, 6, 4, 2, 103, 102, 3, 2, 2, 2, 104, 107, 3, 2, 2, 2, 105, 103, 3, 2, 2, 2, 105, 106, 3, 2, 2, 2, 106, 108, 3, 2, 2, 2, 107, 105, 3, 2, 2, 2, 108, 109, 5, 8, 5, 2, 109, 5, 3, 2, 2, 2, 110, 113, 5, 82, 42, 2, 111, 113, 5, 50, 26, 2, 112, 110, 3, 2, 2, 2, 112, 111, 3, 2, 2, 2, 113, 7, 3, 2, 2, 2, 114, 117, 5, 10, 6, 2, 115, 117, 5, 12, 7, 2, 116, 114, 3, 2, 2, 2, 116, 115, 3, 2, 2, 2, 117, 9, 3, 2, 2, 2, 118, 120, 7, 39, 2, 2, 119, 121, 7, 40, 2, 2, 120, 119, 3, 2, 2, 2, 120, 121, 3, 2, 2, 2, 121, 122, 3, 2, 2, 2, 122, 132, 5, 86, 44, 2, 123, 125, 7, 39, 2, 2, 124, 126, 7, 40, 2, 2, 125, 124, 3, 2, 2, 2, 125, 126, 3, 2, 2, 2, 126, 127, 3, 2, 2, 2, 127, 128, 7, 14, 2, 2, 128, 129, 5, 12, 7, 2, 129, 130, 7, 15, 2, 2, 130, 132, 3, 2, 2, 2, 131, 118, 3, 2, 2, 2, 131, 123, 3, 2, 2, 2, 132, 11, 3, 2, 2, 2, 133, 134, 7, 38, 2, 2, 134, 137, 5, 14, 8, 2, 135, 136, 7, 9, 2, 2, 136, 138, 5, 16, 9, 2, 137, 135, 3, 2, 2, 2, 137, 138, 3, 2, 2, 2, 138, 139, 3, 2, 2, 2, 139, 140, 7, 59, 2, 2, 140, 144, 5, 18, 10, 2, 141, 143, 5, 20, 11, 2, 142, 141, 3, 2, 2, 2, 143, 146, 3, 2, 2, 2, 144, 142, 3, 2, 2, 2, 144, 145, 3, 2, 2, 2, 145, 150, 3, 2, 2, 2, 146, 144, 3, 2, 2, 2, 147, 149, 5, 46, 24, 2, 148, 147, 3, 2, 2, 2, 149, 152, 3, 2, 2, 2, 150, 148, 3, 2, 2, 2, 150, 151, 3, 2, 2, 2, 151, 153, 3, 2, 2, 2, 152, 150, 3, 2, 2, 2, 153, 154, 5, 48, 25, 2, 154, 13, 3, 2, 2, 2, 155, 156, 7, 60, 2, 2, 156, 15, 3, 2, 2, 2, 157, 158, 7, 60, 2, 2, 158, 17, 3, 2, 2, 2, 159, 165, 5, 82, 42, 2, 160, 165, 5, 54, 28, 2, 161, 165, 5, 56, 29, 2, 162, 165, 5, 52, 27, 2, 163, 165, 5, 72, 37, 2, 164, 159, 3, 2, 2, 2, 164, 160, 3, 2, 2, 2, 164, 161, 3, 2, 2, 2, 164, 162, 3, 2, 2, 2, 164, 163, 3, 2, 2, 2, 165, 19, 3, 2, 2, 2, 166, 171, 5, 24, 13, 2, 167, 171, 5, 26, 14, 2, 168, 171, 5, 22, 12, 2, 169, 171, 5, 30, 16, 2, 170, 166, 3, 2, 2, 2, 170, 167, 3, 2, 2, 2, 170, 168, 3, 2, 2, 2, 170, 169, 3, 2, 2, 2, 171, 21, 3, 2, 2, 2, 172, 173, 7, 41, 2, 2, 173, 174, 5, 86, 44, 2, 174, 23, 3, 2, 2, 2, 175, 176, 7, 43, 2, 2, 176, 179, 7, 62, 2, 2, 177, 178, 7, 9, 2, 2, 178, 180, 7, 62, 2, 2, 179, 177, 3, 2, 2, 2, 179, 180, 3, 2, 2, 2, 180, 25, 3, 2, 2, 2, 181, 182, 7, 42, 2, 2, 182, 187, 5, 28, 15, 2, 183, 184, 7, 9, 2, 2, 184, 186, 5, 28, 15, 2, 185, 183, 3, 2, 2, 2, 186, 189, 3, 2, 2, 2, 187, 185, 3, 2, 2, 2, 187, 188, 3, 2, 2, 2, 188, 27, 3, 2, 2, 2, 189, 187, 3, 2, 2, 2, 190, 192, 5, 86, 44, 2, 191, 193, 7, 46, 2, 2, 192, 191, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 29, 3, 2, 2, 2, 194, 195, 7, 45, 2, 2, 195, 196, 5, 32, 17, 2, 196, 197, 7, 33, 2, 2, 197, 198, 5, 86, 44, 2, 198, 244, 3, 2, 2, 2, 199, 200, 7, 45, 2, 2, 200, 201, 5, 32, 17, 2, 201, 202, 7, 33, 2, 2, 202, 203, 5, 86, 44, 2, 203, 204, 7, 50, 2, 2, 204, 205, 5, 34, 18, 2, 205, 244, 3, 2, 2, 2, 206, 207, 7, 45, 2, 2, 207, 208, 5, 32, 17, 2, 208, 209, 7, 33, 2, 2, 209, 210, 5, 86, 44, 2, 210, 211, 7, 50, 2, 2, 211, 212, 5, 34, 18, 2, 212, 213, 7, 51, 2, 2, 213, 214, 5, 36, 19, 2, 214, 244, 3, 2, 2, 2, 215, 216, 7, 45, 2, 2, 216, 217, 5, 32, 17, 2, 217, 218, 7, 33, 2, 2, 218, 219, 5, 86, 44, 2, 219, 220, 7, 52, 2, 2, 220, 221, 7, 53, 2, 2, 221, 222, 5, 38, 20, 2, 222, 244, 3, 2, 2, 2, 223, 224, 7, 45, 2, 2, 224, 225, 5, 32, 17, 2, 225, 226, 7, 33, 2, 2, 226, 227, 5, 86, 44, 2, 227, 228, 7, 56, 2, 2, 228, 229, 5, 40, 21, 2, 229, 230, 7, 33, 2, 2, 230, 231, 5, 42, 22, 2, 231, 244, 3, 2, 2, 2, 232, 233, 7, 45, 2, 2, 233, 234, 7, 56, 2, 2, 234, 235, 5, 40, 21, 2, 235, 236, 7, 33, 2, 2, 236, 237, 5, 42, 22, 2, 237, 244, 3, 2, 2, 2, 238, 239, 7, 45, 2, 2, 239, 240, 7, 52, 2, 2, 240, 241, 7, 53, 2, 2, 241, 242, 7, 50, 2, 2, 242, 244, 5, 38, 20, 2, 243, 194, 3, 2, 2, 2, 243, 199, 3, 2, 2, 2, 243, 206, 3, 2, 2, 2, 243, 215, 3, 2, 2, 2, 243, 223, 3, 2, 2, 2, 243, 232, 3, 2, 2, 2, 243, 238, 3, 2, 2, 2, 244, 31, 3, 2, 2, 2, 245, 246, 7, 60, 2, 2, 246, 33, 3, 2, 2, 2, 247, 248, 7, 60, 2, 2, 248, 35, 3, 2, 2, 2, 249, 250, 7, 60, 2, 2, 250, 37, 3, 2, 2, 2, 251, 252, 7, 60, 2, 2, 252, 39, 3, 2, 2, 2, 253, 254, 7, 60, 2, 2, 254, 41, 3, 2, 2, 2, 255, 256, 5, 86, 44, 2, 256, 43, 3, 2, 2, 2, 257, 258, 3, 2, 2, 2, 258, 45, 3, 2, 2, 2, 259, 262, 5, 50, 26, 2, 260, 262, 5, 82, 42, 2, 261, 259, 3, 2, 2, 2, 261, 260, 3, 2, 2, 2, 262, 47, 3, 2, 2, 2, 263, 266, 5, 10, 6, 2, 264, 266, 5, 12, 7, 2, 265, 263, 3, 2, 2, 2, 265, 264, 3, 2, 2, 2, 266, 49, 3, 2, 2, 2, 267, 268, 7, 44, 2, 2, 268, 269, 7, 60, 2, 2, 269, 270, 7, 33, 2, 2, 270, 279, 5, 86, 44, 2, 271, 272, 7, 44, 2, 2, 272, 273, 7, 60, 2, 2, 273, 274, 7, 33, 2, 2, 274, 275, 7, 14, 2, 2, 275, 276, 5, 12, 7, 2, 276, 277, 7, 15, 2, 2, 277, 279, 3, 2, 2, 2, 278, 267, 3, 2, 2, 2, 278, 271, 3, 2, 2, 2, 279, 51, 3, 2, 2, 2, 280, 281, 7, 60, 2, 2, 281, 53, 3, 2, 2, 2, 282, 284, 7, 12, 2, 2, 283, 285, 5, 68, 35, 2, 284, 283, 3, 2, 2, 2, 284, 285, 3, 2, 2, 2, 285, 286, 3, 2, 2, 2, 286, 287, 7, 13, 2, 2, 287, 55, 3, 2, 2, 2, 288, 297, 7, 16, 2, 2, 289, 294, 5, 70, 36, 2, 290, 291, 7, 9, 2, 2, 291, 293, 5, 70, 36, 2, 292, 290, 3, 2, 2, 2, 293, 296, 3, 2, 2, 2, 294, 292, 3, 2, 2, 2, 294, 295, 3, 2, 2, 2, 295, 298, 3, 2, 2, 2, 296, 294, 3, 2, 2, 2, 297, 289, 3, 2, 2, 2, 297, 298, 3, 2, 2, 2, 298, 300, 3, 2, 2, 2, 299, 301, 7, 9, 2, 2, 300, 299, 3, 2, 2, 2, 300, 301, 3, 2, 2, 2, 301, 302, 3, 2, 2, 2, 302, 303, 7, 17, 2, 2, 303, 57, 3, 2, 2, 2, 304, 305, 7, 49, 2, 2, 305, 59, 3, 2, 2, 2, 306, 307, 7, 61, 2, 2, 307, 61, 3, 2, 2, 2, 308, 309, 7, 62, 2, 2, 309, 63, 3, 2, 2, 2, 310, 311, 7, 63, 2, 2, 311, 65, 3, 2, 2, 2, 312, 313, 9, 2, 2, 2, 313, 67, 3, 2, 2, 2, 314, 323, 5, 86, 44, 2, 315, 317, 7, 9, 2, 2, 316, 315, 3, 2, 2, 2, 317, 318, 3, 2, 2, 2, 318, 316, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 320, 3, 2, 2, 2, 320, 322, 5, 86, 44, 2, 321, 316, 3, 2, 2, 2, 322, 325, 3, 2, 2, 2, 323, 321, 3, 2, 2, 2, 323, 324, 3, 2, 2, 2, 324, 69, 3, 2, 2, 2, 325, 323, 3, 2, 2, 2, 326, 327, 5, 78, 40, 2, 327, 328, 7, 7, 2, 2, 328, 329, 5, 86, 44, 2, 329, 336, 3, 2, 2, 2, 330, 331, 5, 76, 39, 2, 331, 332, 7, 7, 2, 2, 332, 333, 5, 86, 44, 2, 333, 336, 3, 2, 2, 2, 334, 336, 5, 74, 38, 2, 335, 326, 3, 2, 2, 2, 335, 330, 3, 2, 2, 2, 335, 334, 3, 2, 2, 2, 336, 71, 3, 2, 2, 2, 337, 346, 7, 60, 2, 2, 338, 339, 7, 10, 2, 2, 339, 343, 5, 78, 40, 2, 340, 342, 5, 76, 39, 2, 341, 340, 3, 2, 2, 2, 342, 345, 3, 2, 2, 2, 343, 341, 3, 2, 2, 2, 343, 344, 3, 2, 2, 2, 344, 347, 3, 2, 2, 2, 345, 343, 3, 2, 2, 2, 346, 338, 3, 2, 2, 2, 347, 348, 3, 2, 2, 2, 348, 346, 3, 2, 2, 2, 348, 349, 3, 2, 2, 2, 349, 379, 3, 2, 2, 2, 350, 351, 7, 60, 2, 2, 351, 362, 5, 76, 39, 2, 352, 353, 7, 10, 2, 2, 353, 357, 5, 78, 40, 2, 354, 356, 5, 76, 39, 2, 355, 354, 3, 2, 2, 2, 356, 359, 3, 2, 2, 2, 357, 355, 3, 2, 2, 2, 357, 358, 3, 2, 2, 2, 358, 361, 3, 2, 2, 2, 359, 357, 3, 2, 2, 2, 360, 352, 3, 2, 2, 2, 361, 364, 3, 2, 2, 2, 362, 360, 3, 2, 2, 2, 362, 363, 3, 2, 2, 2, 363, 375, 3, 2, 2, 2, 364, 362, 3, 2, 2, 2, 365, 370, 5, 76, 39, 2, 366, 367, 7, 10, 2, 2, 367, 369, 5, 78, 40, 2, 368, 366, 3, 2, 2, 2, 369, 372, 3, 2, 2, 2, 370, 368, 3, 2, 2, 2, 370, 371, 3, 2, 2, 2, 371, 374, 3, 2, 2, 2, 372, 370, 3, 2, 2, 2, 373, 365, 3, 2, 2, 2, 374, 377, 3, 2, 2, 2, 375, 373, 3, 2, 2, 2, 375, 376, 3, 2, 2, 2, 376, 379, 3, 2, 2, 2, 377, 375, 3, 2, 2, 2, 378, 337, 3, 2, 2, 2, 378, 350, 3, 2, 2, 2, 379, 73, 3, 2, 2, 2, 380, 381, 5, 52, 27, 2, 381, 75, 3, 2, 2, 2, 382, 383, 7, 12, 2, 2, 383, 384, 5, 86, 44, 2, 384, 385, 7, 13, 2, 2, 385, 77, 3, 2, 2, 2, 386, 387, 7, 60, 2, 2, 387, 79, 3, 2, 2, 2, 388, 393, 5, 86, 44, 2, 389, 390, 7, 9, 2, 2, 390, 392, 5, 86, 44, 2, 391, 389, 3, 2, 2, 2, 392, 395, 3, 2, 2, 2, 393, 391, 3, 2, 2, 2, 393, 394, 3, 2, 2, 2, 394, 81, 3, 2, 2, 2, 395, 393, 3, 2, 2, 2, 396, 397, 7, 60, 2, 2, 397, 398, 5, 84, 43, 2, 398, 83, 3, 2, 2, 2, 399, 408, 7, 14, 2, 2, 400, 405, 5, 86, 44, 2, 401, 402, 7, 9, 2, 2, 402, 404, 5, 86, 44, 2, 403, 401, 3, 2, 2, 2, 404, 407, 3, 2, 2, 2, 405, 403, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 409, 3, 2, 2, 2, 407, 405, 3, 2, 2, 2, 408, 400, 3, 2, 2, 2, 408, 409, 3, 2, 2, 2, 409, 410, 3, 2, 2, 2, 410, 411, 7, 15, 2, 2, 411, 85, 3, 2, 2, 2, 412, 413, 8, 44, 1, 2, 413, 438, 5, 82, 42, 2, 414, 415, 7, 14, 2, 2, 415, 416, 5, 80, 41, 2, 416, 417, 7, 15, 2, 2, 417, 438, 3, 2, 2, 2, 418, 419, 7, 27, 2, 2, 419, 438, 5, 86, 44, 17, 420, 421, 7, 26, 2, 2, 421, 438, 5, 86, 44, 16, 422, 423, 7, 24, 2, 2, 423, 438, 5, 86, 44, 15, 424, 425, 7, 25, 2, 2, 425, 438, 5, 86, 44, 14, 426, 427, 7, 58, 2, 2, 427, 438, 5, 86, 44, 13, 428, 438, 5, 60, 31, 2, 429, 438, 5, 62, 32, 2, 430, 438, 5, 64, 33, 2, 431, 438, 5, 58, 30, 2, 432, 438, 5, 54, 28, 2, 433, 438, 5, 56, 29, 2, 434, 438, 5, 52, 27, 2, 435, 438, 5, 72, 37, 2, 436, 438, 5, 66, 34, 2, 437, 412, 3, 2, 2, 2, 437, 414, 3, 2, 2, 2, 437, 418, 3, 2, 2, 2, 437, 420, 3, 2, 2, 2, 437, 422, 3, 2, 2, 2, 437, 424, 3, 2, 2, 2, 437, 426, 3, 2, 2, 2, 437, 428, 3, 2, 2, 2, 437, 429, 3, 2, 2, 2, 437, 430, 3, 2, 2, 2, 437, 431, 3, 2, 2, 2, 437, 432, 3, 2, 2, 2, 437, 433, 3, 2, 2, 2, 437, 434, 3, 2, 2, 2, 437, 435, 3, 2, 2, 2, 437, 436, 3, 2, 2, 2, 438, 464, 3, 2, 2, 2, 439, 440, 12, 24, 2, 2, 440, 441, 5, 92, 47, 2, 441, 442, 5, 86, 44, 25, 442, 463, 3, 2, 2, 2, 443, 444, 12, 23, 2, 2, 444, 445, 5, 94, 48, 2, 445, 446, 5, 86, 44, 24, 446, 463, 3, 2, 2, 2, 447, 448, 12, 22, 2, 2, 448, 449, 5, 96, 49, 2, 449, 450, 5, 86, 44, 23, 450, 463, 3, 2, 2, 2, 451, 452, 12, 12, 2, 2, 452, 454, 7, 35, 2, 2, 453, 455, 5, 86, 44, 2, 454, 453, 3, 2, 2, 2, 454, 455, 3, 2, 2, 2, 455, 456, 3, 2, 2, 2, 456, 457, 7, 7, 2, 2, 457, 463, 5, 86, 44, 13, 458, 459, 12, 19, 2, 2, 459, 463, 7, 27, 2, 2, 460, 461, 12, 18, 2, 2, 461, 463, 7, 26, 2, 2, 462, 439, 3, 2, 2, 2, 462, 443, 3, 2, 2, 2, 462, 447, 3, 2, 2, 2, 462, 451, 3, 2, 2, 2, 462, 458, 3, 2, 2, 2, 462, 460, 3, 2, 2, 2, 463, 466, 3, 2, 2, 2, 464, 462, 3, 2, 2, 2, 464, 465, 3, 2, 2, 2, 465, 87, 3, 2, 2, 2, 466, 464, 3, 2, 2, 2, 467, 468, 5, 90, 46, 2, 468, 89, 3, 2, 2, 2, 469, 470, 9, 3, 2, 2, 470, 91, 3, 2, 2, 2, 471, 472, 9, 4, 2, 2, 472, 93, 3, 2, 2, 2, 473, 474, 9, 5, 2, 2, 474, 95, 3, 2, 2, 2, 475, 476, 9, 6, 2, 2, 476, 97, 3, 2, 2, 2, 477, 478, 9, 7, 2, 2, 478, 99, 3, 2, 2, 2, 41, 105, 112, 116, 120, 125, 131, 137, 144, 150, 164, 170, 179, 187, 192, 243, 261, 265, 278, 284, 294, 297, 300, 318, 323, 335, 343, 348, 357, 362, 370, 375, 378, 393, 405, 408, 437, 454, 462, 464] \ No newline at end of file +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 62, 480, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 3, 2, 3, 2, 3, 3, 7, 3, 102, 10, 3, 12, 3, 14, 3, 105, 11, 3, 3, 3, 3, 3, 3, 4, 3, 4, 5, 4, 111, 10, 4, 3, 5, 3, 5, 5, 5, 115, 10, 5, 3, 6, 3, 6, 5, 6, 119, 10, 6, 3, 6, 3, 6, 3, 6, 5, 6, 124, 10, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 130, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 136, 10, 7, 3, 7, 3, 7, 3, 7, 7, 7, 141, 10, 7, 12, 7, 14, 7, 144, 11, 7, 3, 7, 7, 7, 147, 10, 7, 12, 7, 14, 7, 150, 11, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 164, 10, 10, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 170, 10, 11, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 179, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 7, 14, 185, 10, 14, 12, 14, 14, 14, 188, 11, 14, 3, 15, 3, 15, 5, 15, 192, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 243, 10, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 5, 24, 261, 10, 24, 3, 25, 3, 25, 5, 25, 265, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 278, 10, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 5, 29, 288, 10, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 7, 30, 296, 10, 30, 12, 30, 14, 30, 299, 11, 30, 5, 30, 301, 10, 30, 3, 30, 5, 30, 304, 10, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 6, 36, 320, 10, 36, 13, 36, 14, 36, 321, 3, 36, 7, 36, 325, 10, 36, 12, 36, 14, 36, 328, 11, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 339, 10, 37, 3, 38, 3, 38, 3, 38, 3, 38, 7, 38, 345, 10, 38, 12, 38, 14, 38, 348, 11, 38, 6, 38, 350, 10, 38, 13, 38, 14, 38, 351, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 7, 38, 359, 10, 38, 12, 38, 14, 38, 362, 11, 38, 7, 38, 364, 10, 38, 12, 38, 14, 38, 367, 11, 38, 3, 38, 3, 38, 3, 38, 7, 38, 372, 10, 38, 12, 38, 14, 38, 375, 11, 38, 7, 38, 377, 10, 38, 12, 38, 14, 38, 380, 11, 38, 5, 38, 382, 10, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 7, 42, 395, 10, 42, 12, 42, 14, 42, 398, 11, 42, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 7, 44, 407, 10, 44, 12, 44, 14, 44, 410, 11, 44, 5, 44, 412, 10, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 442, 10, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 459, 10, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 7, 45, 467, 10, 45, 12, 45, 14, 45, 470, 11, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 2, 3, 88, 50, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 2, 7, 3, 2, 46, 47, 3, 2, 17, 22, 3, 2, 30, 31, 4, 2, 23, 24, 27, 29, 4, 2, 23, 24, 56, 57, 2, 501, 2, 98, 3, 2, 2, 2, 4, 103, 3, 2, 2, 2, 6, 110, 3, 2, 2, 2, 8, 114, 3, 2, 2, 2, 10, 129, 3, 2, 2, 2, 12, 131, 3, 2, 2, 2, 14, 153, 3, 2, 2, 2, 16, 155, 3, 2, 2, 2, 18, 163, 3, 2, 2, 2, 20, 169, 3, 2, 2, 2, 22, 171, 3, 2, 2, 2, 24, 174, 3, 2, 2, 2, 26, 180, 3, 2, 2, 2, 28, 189, 3, 2, 2, 2, 30, 242, 3, 2, 2, 2, 32, 244, 3, 2, 2, 2, 34, 246, 3, 2, 2, 2, 36, 248, 3, 2, 2, 2, 38, 250, 3, 2, 2, 2, 40, 252, 3, 2, 2, 2, 42, 254, 3, 2, 2, 2, 44, 256, 3, 2, 2, 2, 46, 260, 3, 2, 2, 2, 48, 264, 3, 2, 2, 2, 50, 277, 3, 2, 2, 2, 52, 279, 3, 2, 2, 2, 54, 281, 3, 2, 2, 2, 56, 285, 3, 2, 2, 2, 58, 291, 3, 2, 2, 2, 60, 307, 3, 2, 2, 2, 62, 309, 3, 2, 2, 2, 64, 311, 3, 2, 2, 2, 66, 313, 3, 2, 2, 2, 68, 315, 3, 2, 2, 2, 70, 317, 3, 2, 2, 2, 72, 338, 3, 2, 2, 2, 74, 381, 3, 2, 2, 2, 76, 383, 3, 2, 2, 2, 78, 385, 3, 2, 2, 2, 80, 389, 3, 2, 2, 2, 82, 391, 3, 2, 2, 2, 84, 399, 3, 2, 2, 2, 86, 402, 3, 2, 2, 2, 88, 441, 3, 2, 2, 2, 90, 471, 3, 2, 2, 2, 92, 473, 3, 2, 2, 2, 94, 475, 3, 2, 2, 2, 96, 477, 3, 2, 2, 2, 98, 99, 5, 4, 3, 2, 99, 3, 3, 2, 2, 2, 100, 102, 5, 6, 4, 2, 101, 100, 3, 2, 2, 2, 102, 105, 3, 2, 2, 2, 103, 101, 3, 2, 2, 2, 103, 104, 3, 2, 2, 2, 104, 106, 3, 2, 2, 2, 105, 103, 3, 2, 2, 2, 106, 107, 5, 8, 5, 2, 107, 5, 3, 2, 2, 2, 108, 111, 5, 84, 43, 2, 109, 111, 5, 50, 26, 2, 110, 108, 3, 2, 2, 2, 110, 109, 3, 2, 2, 2, 111, 7, 3, 2, 2, 2, 112, 115, 5, 10, 6, 2, 113, 115, 5, 12, 7, 2, 114, 112, 3, 2, 2, 2, 114, 113, 3, 2, 2, 2, 115, 9, 3, 2, 2, 2, 116, 118, 7, 38, 2, 2, 117, 119, 7, 39, 2, 2, 118, 117, 3, 2, 2, 2, 118, 119, 3, 2, 2, 2, 119, 120, 3, 2, 2, 2, 120, 130, 5, 88, 45, 2, 121, 123, 7, 38, 2, 2, 122, 124, 7, 39, 2, 2, 123, 122, 3, 2, 2, 2, 123, 124, 3, 2, 2, 2, 124, 125, 3, 2, 2, 2, 125, 126, 7, 13, 2, 2, 126, 127, 5, 12, 7, 2, 127, 128, 7, 14, 2, 2, 128, 130, 3, 2, 2, 2, 129, 116, 3, 2, 2, 2, 129, 121, 3, 2, 2, 2, 130, 11, 3, 2, 2, 2, 131, 132, 7, 37, 2, 2, 132, 135, 5, 14, 8, 2, 133, 134, 7, 10, 2, 2, 134, 136, 5, 16, 9, 2, 135, 133, 3, 2, 2, 2, 135, 136, 3, 2, 2, 2, 136, 137, 3, 2, 2, 2, 137, 138, 7, 58, 2, 2, 138, 142, 5, 18, 10, 2, 139, 141, 5, 20, 11, 2, 140, 139, 3, 2, 2, 2, 141, 144, 3, 2, 2, 2, 142, 140, 3, 2, 2, 2, 142, 143, 3, 2, 2, 2, 143, 148, 3, 2, 2, 2, 144, 142, 3, 2, 2, 2, 145, 147, 5, 46, 24, 2, 146, 145, 3, 2, 2, 2, 147, 150, 3, 2, 2, 2, 148, 146, 3, 2, 2, 2, 148, 149, 3, 2, 2, 2, 149, 151, 3, 2, 2, 2, 150, 148, 3, 2, 2, 2, 151, 152, 5, 48, 25, 2, 152, 13, 3, 2, 2, 2, 153, 154, 7, 59, 2, 2, 154, 15, 3, 2, 2, 2, 155, 156, 7, 59, 2, 2, 156, 17, 3, 2, 2, 2, 157, 164, 5, 84, 43, 2, 158, 164, 5, 56, 29, 2, 159, 164, 5, 58, 30, 2, 160, 164, 5, 52, 27, 2, 161, 164, 5, 74, 38, 2, 162, 164, 5, 54, 28, 2, 163, 157, 3, 2, 2, 2, 163, 158, 3, 2, 2, 2, 163, 159, 3, 2, 2, 2, 163, 160, 3, 2, 2, 2, 163, 161, 3, 2, 2, 2, 163, 162, 3, 2, 2, 2, 164, 19, 3, 2, 2, 2, 165, 170, 5, 24, 13, 2, 166, 170, 5, 26, 14, 2, 167, 170, 5, 22, 12, 2, 168, 170, 5, 30, 16, 2, 169, 165, 3, 2, 2, 2, 169, 166, 3, 2, 2, 2, 169, 167, 3, 2, 2, 2, 169, 168, 3, 2, 2, 2, 170, 21, 3, 2, 2, 2, 171, 172, 7, 40, 2, 2, 172, 173, 5, 88, 45, 2, 173, 23, 3, 2, 2, 2, 174, 175, 7, 42, 2, 2, 175, 178, 7, 61, 2, 2, 176, 177, 7, 10, 2, 2, 177, 179, 7, 61, 2, 2, 178, 176, 3, 2, 2, 2, 178, 179, 3, 2, 2, 2, 179, 25, 3, 2, 2, 2, 180, 181, 7, 41, 2, 2, 181, 186, 5, 28, 15, 2, 182, 183, 7, 10, 2, 2, 183, 185, 5, 28, 15, 2, 184, 182, 3, 2, 2, 2, 185, 188, 3, 2, 2, 2, 186, 184, 3, 2, 2, 2, 186, 187, 3, 2, 2, 2, 187, 27, 3, 2, 2, 2, 188, 186, 3, 2, 2, 2, 189, 191, 5, 88, 45, 2, 190, 192, 7, 45, 2, 2, 191, 190, 3, 2, 2, 2, 191, 192, 3, 2, 2, 2, 192, 29, 3, 2, 2, 2, 193, 194, 7, 44, 2, 2, 194, 195, 5, 32, 17, 2, 195, 196, 7, 33, 2, 2, 196, 197, 5, 88, 45, 2, 197, 243, 3, 2, 2, 2, 198, 199, 7, 44, 2, 2, 199, 200, 5, 32, 17, 2, 200, 201, 7, 33, 2, 2, 201, 202, 5, 88, 45, 2, 202, 203, 7, 49, 2, 2, 203, 204, 5, 34, 18, 2, 204, 243, 3, 2, 2, 2, 205, 206, 7, 44, 2, 2, 206, 207, 5, 32, 17, 2, 207, 208, 7, 33, 2, 2, 208, 209, 5, 88, 45, 2, 209, 210, 7, 49, 2, 2, 210, 211, 5, 34, 18, 2, 211, 212, 7, 50, 2, 2, 212, 213, 5, 36, 19, 2, 213, 243, 3, 2, 2, 2, 214, 215, 7, 44, 2, 2, 215, 216, 5, 32, 17, 2, 216, 217, 7, 33, 2, 2, 217, 218, 5, 88, 45, 2, 218, 219, 7, 51, 2, 2, 219, 220, 7, 52, 2, 2, 220, 221, 5, 38, 20, 2, 221, 243, 3, 2, 2, 2, 222, 223, 7, 44, 2, 2, 223, 224, 5, 32, 17, 2, 224, 225, 7, 33, 2, 2, 225, 226, 5, 88, 45, 2, 226, 227, 7, 55, 2, 2, 227, 228, 5, 40, 21, 2, 228, 229, 7, 33, 2, 2, 229, 230, 5, 42, 22, 2, 230, 243, 3, 2, 2, 2, 231, 232, 7, 44, 2, 2, 232, 233, 7, 55, 2, 2, 233, 234, 5, 40, 21, 2, 234, 235, 7, 33, 2, 2, 235, 236, 5, 42, 22, 2, 236, 243, 3, 2, 2, 2, 237, 238, 7, 44, 2, 2, 238, 239, 7, 51, 2, 2, 239, 240, 7, 52, 2, 2, 240, 241, 7, 49, 2, 2, 241, 243, 5, 38, 20, 2, 242, 193, 3, 2, 2, 2, 242, 198, 3, 2, 2, 2, 242, 205, 3, 2, 2, 2, 242, 214, 3, 2, 2, 2, 242, 222, 3, 2, 2, 2, 242, 231, 3, 2, 2, 2, 242, 237, 3, 2, 2, 2, 243, 31, 3, 2, 2, 2, 244, 245, 7, 59, 2, 2, 245, 33, 3, 2, 2, 2, 246, 247, 7, 59, 2, 2, 247, 35, 3, 2, 2, 2, 248, 249, 7, 59, 2, 2, 249, 37, 3, 2, 2, 2, 250, 251, 7, 59, 2, 2, 251, 39, 3, 2, 2, 2, 252, 253, 7, 59, 2, 2, 253, 41, 3, 2, 2, 2, 254, 255, 5, 88, 45, 2, 255, 43, 3, 2, 2, 2, 256, 257, 3, 2, 2, 2, 257, 45, 3, 2, 2, 2, 258, 261, 5, 50, 26, 2, 259, 261, 5, 84, 43, 2, 260, 258, 3, 2, 2, 2, 260, 259, 3, 2, 2, 2, 261, 47, 3, 2, 2, 2, 262, 265, 5, 10, 6, 2, 263, 265, 5, 12, 7, 2, 264, 262, 3, 2, 2, 2, 264, 263, 3, 2, 2, 2, 265, 49, 3, 2, 2, 2, 266, 267, 7, 43, 2, 2, 267, 268, 7, 59, 2, 2, 268, 269, 7, 33, 2, 2, 269, 278, 5, 88, 45, 2, 270, 271, 7, 43, 2, 2, 271, 272, 7, 59, 2, 2, 272, 273, 7, 33, 2, 2, 273, 274, 7, 13, 2, 2, 274, 275, 5, 12, 7, 2, 275, 276, 7, 14, 2, 2, 276, 278, 3, 2, 2, 2, 277, 266, 3, 2, 2, 2, 277, 270, 3, 2, 2, 2, 278, 51, 3, 2, 2, 2, 279, 280, 7, 59, 2, 2, 280, 53, 3, 2, 2, 2, 281, 282, 5, 64, 33, 2, 282, 283, 7, 32, 2, 2, 283, 284, 5, 64, 33, 2, 284, 55, 3, 2, 2, 2, 285, 287, 7, 11, 2, 2, 286, 288, 5, 70, 36, 2, 287, 286, 3, 2, 2, 2, 287, 288, 3, 2, 2, 2, 288, 289, 3, 2, 2, 2, 289, 290, 7, 12, 2, 2, 290, 57, 3, 2, 2, 2, 291, 300, 7, 15, 2, 2, 292, 297, 5, 72, 37, 2, 293, 294, 7, 10, 2, 2, 294, 296, 5, 72, 37, 2, 295, 293, 3, 2, 2, 2, 296, 299, 3, 2, 2, 2, 297, 295, 3, 2, 2, 2, 297, 298, 3, 2, 2, 2, 298, 301, 3, 2, 2, 2, 299, 297, 3, 2, 2, 2, 300, 292, 3, 2, 2, 2, 300, 301, 3, 2, 2, 2, 301, 303, 3, 2, 2, 2, 302, 304, 7, 10, 2, 2, 303, 302, 3, 2, 2, 2, 303, 304, 3, 2, 2, 2, 304, 305, 3, 2, 2, 2, 305, 306, 7, 16, 2, 2, 306, 59, 3, 2, 2, 2, 307, 308, 7, 48, 2, 2, 308, 61, 3, 2, 2, 2, 309, 310, 7, 60, 2, 2, 310, 63, 3, 2, 2, 2, 311, 312, 7, 61, 2, 2, 312, 65, 3, 2, 2, 2, 313, 314, 7, 62, 2, 2, 314, 67, 3, 2, 2, 2, 315, 316, 9, 2, 2, 2, 316, 69, 3, 2, 2, 2, 317, 326, 5, 88, 45, 2, 318, 320, 7, 10, 2, 2, 319, 318, 3, 2, 2, 2, 320, 321, 3, 2, 2, 2, 321, 319, 3, 2, 2, 2, 321, 322, 3, 2, 2, 2, 322, 323, 3, 2, 2, 2, 323, 325, 5, 88, 45, 2, 324, 319, 3, 2, 2, 2, 325, 328, 3, 2, 2, 2, 326, 324, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 71, 3, 2, 2, 2, 328, 326, 3, 2, 2, 2, 329, 330, 5, 80, 41, 2, 330, 331, 7, 7, 2, 2, 331, 332, 5, 88, 45, 2, 332, 339, 3, 2, 2, 2, 333, 334, 5, 78, 40, 2, 334, 335, 7, 7, 2, 2, 335, 336, 5, 88, 45, 2, 336, 339, 3, 2, 2, 2, 337, 339, 5, 76, 39, 2, 338, 329, 3, 2, 2, 2, 338, 333, 3, 2, 2, 2, 338, 337, 3, 2, 2, 2, 339, 73, 3, 2, 2, 2, 340, 349, 7, 59, 2, 2, 341, 342, 7, 9, 2, 2, 342, 346, 5, 80, 41, 2, 343, 345, 5, 78, 40, 2, 344, 343, 3, 2, 2, 2, 345, 348, 3, 2, 2, 2, 346, 344, 3, 2, 2, 2, 346, 347, 3, 2, 2, 2, 347, 350, 3, 2, 2, 2, 348, 346, 3, 2, 2, 2, 349, 341, 3, 2, 2, 2, 350, 351, 3, 2, 2, 2, 351, 349, 3, 2, 2, 2, 351, 352, 3, 2, 2, 2, 352, 382, 3, 2, 2, 2, 353, 354, 7, 59, 2, 2, 354, 365, 5, 78, 40, 2, 355, 356, 7, 9, 2, 2, 356, 360, 5, 80, 41, 2, 357, 359, 5, 78, 40, 2, 358, 357, 3, 2, 2, 2, 359, 362, 3, 2, 2, 2, 360, 358, 3, 2, 2, 2, 360, 361, 3, 2, 2, 2, 361, 364, 3, 2, 2, 2, 362, 360, 3, 2, 2, 2, 363, 355, 3, 2, 2, 2, 364, 367, 3, 2, 2, 2, 365, 363, 3, 2, 2, 2, 365, 366, 3, 2, 2, 2, 366, 378, 3, 2, 2, 2, 367, 365, 3, 2, 2, 2, 368, 373, 5, 78, 40, 2, 369, 370, 7, 9, 2, 2, 370, 372, 5, 80, 41, 2, 371, 369, 3, 2, 2, 2, 372, 375, 3, 2, 2, 2, 373, 371, 3, 2, 2, 2, 373, 374, 3, 2, 2, 2, 374, 377, 3, 2, 2, 2, 375, 373, 3, 2, 2, 2, 376, 368, 3, 2, 2, 2, 377, 380, 3, 2, 2, 2, 378, 376, 3, 2, 2, 2, 378, 379, 3, 2, 2, 2, 379, 382, 3, 2, 2, 2, 380, 378, 3, 2, 2, 2, 381, 340, 3, 2, 2, 2, 381, 353, 3, 2, 2, 2, 382, 75, 3, 2, 2, 2, 383, 384, 5, 52, 27, 2, 384, 77, 3, 2, 2, 2, 385, 386, 7, 11, 2, 2, 386, 387, 5, 88, 45, 2, 387, 388, 7, 12, 2, 2, 388, 79, 3, 2, 2, 2, 389, 390, 7, 59, 2, 2, 390, 81, 3, 2, 2, 2, 391, 396, 5, 88, 45, 2, 392, 393, 7, 10, 2, 2, 393, 395, 5, 88, 45, 2, 394, 392, 3, 2, 2, 2, 395, 398, 3, 2, 2, 2, 396, 394, 3, 2, 2, 2, 396, 397, 3, 2, 2, 2, 397, 83, 3, 2, 2, 2, 398, 396, 3, 2, 2, 2, 399, 400, 7, 59, 2, 2, 400, 401, 5, 86, 44, 2, 401, 85, 3, 2, 2, 2, 402, 411, 7, 13, 2, 2, 403, 408, 5, 88, 45, 2, 404, 405, 7, 10, 2, 2, 405, 407, 5, 88, 45, 2, 406, 404, 3, 2, 2, 2, 407, 410, 3, 2, 2, 2, 408, 406, 3, 2, 2, 2, 408, 409, 3, 2, 2, 2, 409, 412, 3, 2, 2, 2, 410, 408, 3, 2, 2, 2, 411, 403, 3, 2, 2, 2, 411, 412, 3, 2, 2, 2, 412, 413, 3, 2, 2, 2, 413, 414, 7, 14, 2, 2, 414, 87, 3, 2, 2, 2, 415, 416, 8, 45, 1, 2, 416, 442, 5, 84, 43, 2, 417, 418, 7, 13, 2, 2, 418, 419, 5, 82, 42, 2, 419, 420, 7, 14, 2, 2, 420, 442, 3, 2, 2, 2, 421, 422, 7, 26, 2, 2, 422, 442, 5, 88, 45, 18, 423, 424, 7, 25, 2, 2, 424, 442, 5, 88, 45, 17, 425, 426, 7, 23, 2, 2, 426, 442, 5, 88, 45, 16, 427, 428, 7, 24, 2, 2, 428, 442, 5, 88, 45, 15, 429, 430, 7, 57, 2, 2, 430, 442, 5, 88, 45, 14, 431, 442, 5, 54, 28, 2, 432, 442, 5, 62, 32, 2, 433, 442, 5, 64, 33, 2, 434, 442, 5, 66, 34, 2, 435, 442, 5, 60, 31, 2, 436, 442, 5, 56, 29, 2, 437, 442, 5, 58, 30, 2, 438, 442, 5, 52, 27, 2, 439, 442, 5, 74, 38, 2, 440, 442, 5, 68, 35, 2, 441, 415, 3, 2, 2, 2, 441, 417, 3, 2, 2, 2, 441, 421, 3, 2, 2, 2, 441, 423, 3, 2, 2, 2, 441, 425, 3, 2, 2, 2, 441, 427, 3, 2, 2, 2, 441, 429, 3, 2, 2, 2, 441, 431, 3, 2, 2, 2, 441, 432, 3, 2, 2, 2, 441, 433, 3, 2, 2, 2, 441, 434, 3, 2, 2, 2, 441, 435, 3, 2, 2, 2, 441, 436, 3, 2, 2, 2, 441, 437, 3, 2, 2, 2, 441, 438, 3, 2, 2, 2, 441, 439, 3, 2, 2, 2, 441, 440, 3, 2, 2, 2, 442, 468, 3, 2, 2, 2, 443, 444, 12, 25, 2, 2, 444, 445, 5, 90, 46, 2, 445, 446, 5, 88, 45, 26, 446, 467, 3, 2, 2, 2, 447, 448, 12, 24, 2, 2, 448, 449, 5, 92, 47, 2, 449, 450, 5, 88, 45, 25, 450, 467, 3, 2, 2, 2, 451, 452, 12, 23, 2, 2, 452, 453, 5, 94, 48, 2, 453, 454, 5, 88, 45, 24, 454, 467, 3, 2, 2, 2, 455, 456, 12, 13, 2, 2, 456, 458, 7, 34, 2, 2, 457, 459, 5, 88, 45, 2, 458, 457, 3, 2, 2, 2, 458, 459, 3, 2, 2, 2, 459, 460, 3, 2, 2, 2, 460, 461, 7, 7, 2, 2, 461, 467, 5, 88, 45, 14, 462, 463, 12, 20, 2, 2, 463, 467, 7, 26, 2, 2, 464, 465, 12, 19, 2, 2, 465, 467, 7, 25, 2, 2, 466, 443, 3, 2, 2, 2, 466, 447, 3, 2, 2, 2, 466, 451, 3, 2, 2, 2, 466, 455, 3, 2, 2, 2, 466, 462, 3, 2, 2, 2, 466, 464, 3, 2, 2, 2, 467, 470, 3, 2, 2, 2, 468, 466, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 89, 3, 2, 2, 2, 470, 468, 3, 2, 2, 2, 471, 472, 9, 3, 2, 2, 472, 91, 3, 2, 2, 2, 473, 474, 9, 4, 2, 2, 474, 93, 3, 2, 2, 2, 475, 476, 9, 5, 2, 2, 476, 95, 3, 2, 2, 2, 477, 478, 9, 6, 2, 2, 478, 97, 3, 2, 2, 2, 41, 103, 110, 114, 118, 123, 129, 135, 142, 148, 163, 169, 178, 186, 191, 242, 260, 264, 277, 287, 297, 300, 303, 321, 326, 338, 346, 351, 360, 365, 373, 378, 381, 396, 408, 411, 441, 458, 466, 468] \ No newline at end of file diff --git a/pkg/parser/fql/FqlParser.tokens b/pkg/parser/fql/FqlParser.tokens index cc121436..79127cc6 100644 --- a/pkg/parser/fql/FqlParser.tokens +++ b/pkg/parser/fql/FqlParser.tokens @@ -4,106 +4,103 @@ WhiteSpaces=3 LineTerminator=4 Colon=5 SemiColon=6 -Comma=7 -Dot=8 -Ellipsis=9 -OpenBracket=10 -CloseBracket=11 -OpenParen=12 -CloseParen=13 -OpenBrace=14 -CloseBrace=15 -Gt=16 -Lt=17 -Eq=18 -Gte=19 -Lte=20 -Neq=21 -Plus=22 -Minus=23 -MinusMinus=24 -PlusPlus=25 -Multi=26 -Div=27 -Mod=28 -And=29 -Or=30 +Dot=7 +Comma=8 +OpenBracket=9 +CloseBracket=10 +OpenParen=11 +CloseParen=12 +OpenBrace=13 +CloseBrace=14 +Gt=15 +Lt=16 +Eq=17 +Gte=18 +Lte=19 +Neq=20 +Plus=21 +Minus=22 +MinusMinus=23 +PlusPlus=24 +Multi=25 +Div=26 +Mod=27 +And=28 +Or=29 +Range=30 Assign=31 -Range=32 -QuestionMark=33 -RegexNotMatch=34 -RegexMatch=35 -For=36 -Return=37 -Distinct=38 -Filter=39 -Sort=40 -Limit=41 -Let=42 -Collect=43 -SortDirection=44 -None=45 -Null=46 -BooleanLiteral=47 -Into=48 -Keep=49 -With=50 -Count=51 -All=52 -Any=53 -Aggregate=54 -Like=55 -Not=56 -In=57 -Identifier=58 -StringLiteral=59 -IntegerLiteral=60 -FloatLiteral=61 +QuestionMark=32 +RegexNotMatch=33 +RegexMatch=34 +For=35 +Return=36 +Distinct=37 +Filter=38 +Sort=39 +Limit=40 +Let=41 +Collect=42 +SortDirection=43 +None=44 +Null=45 +BooleanLiteral=46 +Into=47 +Keep=48 +With=49 +Count=50 +All=51 +Any=52 +Aggregate=53 +Like=54 +Not=55 +In=56 +Identifier=57 +StringLiteral=58 +IntegerLiteral=59 +FloatLiteral=60 ':'=5 ';'=6 -','=7 -'.'=8 -'...'=9 -'['=10 -']'=11 -'('=12 -')'=13 -'{'=14 -'}'=15 -'>'=16 -'<'=17 -'=='=18 -'>='=19 -'<='=20 -'!='=21 -'+'=22 -'-'=23 -'--'=24 -'++'=25 -'*'=26 -'/'=27 -'%'=28 +'.'=7 +','=8 +'['=9 +']'=10 +'('=11 +')'=12 +'{'=13 +'}'=14 +'>'=15 +'<'=16 +'=='=17 +'>='=18 +'<='=19 +'!='=20 +'+'=21 +'-'=22 +'--'=23 +'++'=24 +'*'=25 +'/'=26 +'%'=27 '='=31 -'..'=32 -'?'=33 -'!~'=34 -'=~'=35 -'FOR'=36 -'RETURN'=37 -'DISTINCT'=38 -'FILTER'=39 -'SORT'=40 -'LIMIT'=41 -'LET'=42 -'COLLECT'=43 -'NONE'=45 -'NULL'=46 -'INTO'=48 -'KEEP'=49 -'WITH'=50 -'COUNT'=51 -'ALL'=52 -'ANY'=53 -'AGGREGATE'=54 -'LIKE'=55 -'IN'=57 +'?'=32 +'!~'=33 +'=~'=34 +'FOR'=35 +'RETURN'=36 +'DISTINCT'=37 +'FILTER'=38 +'SORT'=39 +'LIMIT'=40 +'LET'=41 +'COLLECT'=42 +'NONE'=44 +'NULL'=45 +'INTO'=47 +'KEEP'=48 +'WITH'=49 +'COUNT'=50 +'ALL'=51 +'ANY'=52 +'AGGREGATE'=53 +'LIKE'=54 +'IN'=56 diff --git a/pkg/parser/fql/fql_lexer.go b/pkg/parser/fql/fql_lexer.go index 54550d94..1727ead2 100644 --- a/pkg/parser/fql/fql_lexer.go +++ b/pkg/parser/fql/fql_lexer.go @@ -14,7 +14,7 @@ var _ = fmt.Printf var _ = unicode.IsLetter var serializedLexerAtn = []uint16{ - 3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 63, 496, + 3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 62, 480, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, @@ -27,56 +27,54 @@ var serializedLexerAtn = []uint16{ 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, - 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 3, 2, 3, - 2, 3, 2, 3, 2, 7, 2, 144, 10, 2, 12, 2, 14, 2, 147, 11, 2, 3, 2, 3, 2, - 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 158, 10, 3, 12, 3, 14, - 3, 161, 11, 3, 3, 3, 3, 3, 3, 4, 6, 4, 166, 10, 4, 13, 4, 14, 4, 167, 3, - 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, - 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, - 3, 13, 3, 14, 3, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, - 18, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, - 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 26, 3, - 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, - 3, 30, 3, 30, 5, 30, 237, 10, 30, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 243, - 10, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, - 3, 35, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, - 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, - 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, - 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, - 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, - 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 315, - 10, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, - 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, - 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 345, - 10, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, - 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, - 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, - 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, - 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 395, 10, 57, - 3, 58, 3, 58, 3, 58, 3, 59, 6, 59, 401, 10, 59, 13, 59, 14, 59, 402, 3, - 59, 7, 59, 406, 10, 59, 12, 59, 14, 59, 409, 11, 59, 3, 60, 3, 60, 5, 60, - 413, 10, 60, 3, 61, 6, 61, 416, 10, 61, 13, 61, 14, 61, 417, 3, 62, 3, - 62, 3, 62, 7, 62, 423, 10, 62, 12, 62, 14, 62, 426, 11, 62, 3, 62, 5, 62, - 429, 10, 62, 3, 62, 3, 62, 6, 62, 433, 10, 62, 13, 62, 14, 62, 434, 3, - 62, 5, 62, 438, 10, 62, 3, 62, 3, 62, 5, 62, 442, 10, 62, 5, 62, 444, 10, - 62, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 7, 64, 451, 10, 64, 12, 64, 14, - 64, 454, 11, 64, 5, 64, 456, 10, 64, 3, 65, 3, 65, 5, 65, 460, 10, 65, - 3, 65, 6, 65, 463, 10, 65, 13, 65, 14, 65, 464, 3, 66, 3, 66, 3, 67, 3, - 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 7, 68, 477, 10, 68, 12, 68, - 14, 68, 480, 11, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, - 69, 7, 69, 490, 10, 69, 12, 69, 14, 69, 493, 11, 69, 3, 69, 3, 69, 3, 145, - 2, 70, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, - 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, - 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, - 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, - 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, - 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, - 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 2, - 127, 2, 129, 2, 131, 2, 133, 2, 135, 2, 137, 2, 3, 2, 12, 5, 2, 12, 12, - 15, 15, 8234, 8235, 6, 2, 11, 11, 13, 14, 34, 34, 162, 162, 3, 2, 50, 59, - 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 51, 59, 4, 2, 71, 71, 103, 103, 4, - 2, 45, 45, 47, 47, 4, 2, 67, 92, 99, 124, 4, 2, 36, 36, 94, 94, 4, 2, 41, - 41, 94, 94, 2, 519, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, + 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 3, 2, 3, 2, 3, 2, 3, 2, + 7, 2, 142, 10, 2, 12, 2, 14, 2, 145, 11, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, + 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 156, 10, 3, 12, 3, 14, 3, 159, 11, 3, + 3, 3, 3, 3, 3, 4, 6, 4, 164, 10, 4, 13, 4, 14, 4, 165, 3, 4, 3, 4, 3, 5, + 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, + 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 15, 3, + 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, + 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 23, 3, 23, 3, + 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, + 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 231, 10, 29, 3, 30, 3, + 30, 3, 30, 3, 30, 5, 30, 237, 10, 30, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, + 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, + 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, + 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, + 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, + 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, + 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, + 3, 44, 3, 44, 5, 44, 309, 10, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, + 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, + 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, + 47, 3, 47, 5, 47, 339, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, + 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, + 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, + 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, + 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, + 5, 56, 389, 10, 56, 3, 57, 3, 57, 3, 57, 3, 58, 6, 58, 395, 10, 58, 13, + 58, 14, 58, 396, 3, 58, 7, 58, 400, 10, 58, 12, 58, 14, 58, 403, 11, 58, + 3, 59, 3, 59, 5, 59, 407, 10, 59, 3, 60, 6, 60, 410, 10, 60, 13, 60, 14, + 60, 411, 3, 61, 3, 61, 3, 61, 6, 61, 417, 10, 61, 13, 61, 14, 61, 418, + 3, 61, 5, 61, 422, 10, 61, 3, 61, 3, 61, 5, 61, 426, 10, 61, 5, 61, 428, + 10, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 7, 63, 435, 10, 63, 12, 63, + 14, 63, 438, 11, 63, 5, 63, 440, 10, 63, 3, 64, 3, 64, 5, 64, 444, 10, + 64, 3, 64, 6, 64, 447, 10, 64, 13, 64, 14, 64, 448, 3, 65, 3, 65, 3, 66, + 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 7, 67, 461, 10, 67, 12, + 67, 14, 67, 464, 11, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, + 3, 68, 7, 68, 474, 10, 68, 12, 68, 14, 68, 477, 11, 68, 3, 68, 3, 68, 3, + 143, 2, 69, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, + 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, + 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, + 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, + 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, + 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, + 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 2, 125, + 2, 127, 2, 129, 2, 131, 2, 133, 2, 135, 2, 3, 2, 12, 5, 2, 12, 12, 15, + 15, 8234, 8235, 6, 2, 11, 11, 13, 14, 34, 34, 162, 162, 3, 2, 50, 59, 5, + 2, 50, 59, 67, 72, 99, 104, 3, 2, 51, 59, 4, 2, 71, 71, 103, 103, 4, 2, + 45, 45, 47, 47, 4, 2, 67, 92, 99, 124, 4, 2, 36, 36, 94, 94, 4, 2, 41, + 41, 94, 94, 2, 500, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, @@ -92,149 +90,143 @@ var serializedLexerAtn = []uint16{ 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, - 2, 2, 2, 2, 123, 3, 2, 2, 2, 3, 139, 3, 2, 2, 2, 5, 153, 3, 2, 2, 2, 7, - 165, 3, 2, 2, 2, 9, 171, 3, 2, 2, 2, 11, 175, 3, 2, 2, 2, 13, 177, 3, 2, - 2, 2, 15, 179, 3, 2, 2, 2, 17, 181, 3, 2, 2, 2, 19, 183, 3, 2, 2, 2, 21, - 187, 3, 2, 2, 2, 23, 189, 3, 2, 2, 2, 25, 191, 3, 2, 2, 2, 27, 193, 3, - 2, 2, 2, 29, 195, 3, 2, 2, 2, 31, 197, 3, 2, 2, 2, 33, 199, 3, 2, 2, 2, - 35, 201, 3, 2, 2, 2, 37, 203, 3, 2, 2, 2, 39, 206, 3, 2, 2, 2, 41, 209, - 3, 2, 2, 2, 43, 212, 3, 2, 2, 2, 45, 215, 3, 2, 2, 2, 47, 217, 3, 2, 2, - 2, 49, 219, 3, 2, 2, 2, 51, 222, 3, 2, 2, 2, 53, 225, 3, 2, 2, 2, 55, 227, - 3, 2, 2, 2, 57, 229, 3, 2, 2, 2, 59, 236, 3, 2, 2, 2, 61, 242, 3, 2, 2, - 2, 63, 244, 3, 2, 2, 2, 65, 246, 3, 2, 2, 2, 67, 249, 3, 2, 2, 2, 69, 251, - 3, 2, 2, 2, 71, 254, 3, 2, 2, 2, 73, 257, 3, 2, 2, 2, 75, 261, 3, 2, 2, - 2, 77, 268, 3, 2, 2, 2, 79, 277, 3, 2, 2, 2, 81, 284, 3, 2, 2, 2, 83, 289, - 3, 2, 2, 2, 85, 295, 3, 2, 2, 2, 87, 299, 3, 2, 2, 2, 89, 314, 3, 2, 2, - 2, 91, 316, 3, 2, 2, 2, 93, 321, 3, 2, 2, 2, 95, 344, 3, 2, 2, 2, 97, 346, - 3, 2, 2, 2, 99, 351, 3, 2, 2, 2, 101, 356, 3, 2, 2, 2, 103, 361, 3, 2, - 2, 2, 105, 367, 3, 2, 2, 2, 107, 371, 3, 2, 2, 2, 109, 375, 3, 2, 2, 2, - 111, 385, 3, 2, 2, 2, 113, 394, 3, 2, 2, 2, 115, 396, 3, 2, 2, 2, 117, - 400, 3, 2, 2, 2, 119, 412, 3, 2, 2, 2, 121, 415, 3, 2, 2, 2, 123, 443, - 3, 2, 2, 2, 125, 445, 3, 2, 2, 2, 127, 455, 3, 2, 2, 2, 129, 457, 3, 2, - 2, 2, 131, 466, 3, 2, 2, 2, 133, 468, 3, 2, 2, 2, 135, 470, 3, 2, 2, 2, - 137, 483, 3, 2, 2, 2, 139, 140, 7, 49, 2, 2, 140, 141, 7, 44, 2, 2, 141, - 145, 3, 2, 2, 2, 142, 144, 11, 2, 2, 2, 143, 142, 3, 2, 2, 2, 144, 147, - 3, 2, 2, 2, 145, 146, 3, 2, 2, 2, 145, 143, 3, 2, 2, 2, 146, 148, 3, 2, - 2, 2, 147, 145, 3, 2, 2, 2, 148, 149, 7, 44, 2, 2, 149, 150, 7, 49, 2, - 2, 150, 151, 3, 2, 2, 2, 151, 152, 8, 2, 2, 2, 152, 4, 3, 2, 2, 2, 153, - 154, 7, 49, 2, 2, 154, 155, 7, 49, 2, 2, 155, 159, 3, 2, 2, 2, 156, 158, - 10, 2, 2, 2, 157, 156, 3, 2, 2, 2, 158, 161, 3, 2, 2, 2, 159, 157, 3, 2, - 2, 2, 159, 160, 3, 2, 2, 2, 160, 162, 3, 2, 2, 2, 161, 159, 3, 2, 2, 2, - 162, 163, 8, 3, 2, 2, 163, 6, 3, 2, 2, 2, 164, 166, 9, 3, 2, 2, 165, 164, - 3, 2, 2, 2, 166, 167, 3, 2, 2, 2, 167, 165, 3, 2, 2, 2, 167, 168, 3, 2, - 2, 2, 168, 169, 3, 2, 2, 2, 169, 170, 8, 4, 2, 2, 170, 8, 3, 2, 2, 2, 171, - 172, 9, 2, 2, 2, 172, 173, 3, 2, 2, 2, 173, 174, 8, 5, 2, 2, 174, 10, 3, - 2, 2, 2, 175, 176, 7, 60, 2, 2, 176, 12, 3, 2, 2, 2, 177, 178, 7, 61, 2, - 2, 178, 14, 3, 2, 2, 2, 179, 180, 7, 46, 2, 2, 180, 16, 3, 2, 2, 2, 181, - 182, 7, 48, 2, 2, 182, 18, 3, 2, 2, 2, 183, 184, 7, 48, 2, 2, 184, 185, - 7, 48, 2, 2, 185, 186, 7, 48, 2, 2, 186, 20, 3, 2, 2, 2, 187, 188, 7, 93, - 2, 2, 188, 22, 3, 2, 2, 2, 189, 190, 7, 95, 2, 2, 190, 24, 3, 2, 2, 2, - 191, 192, 7, 42, 2, 2, 192, 26, 3, 2, 2, 2, 193, 194, 7, 43, 2, 2, 194, - 28, 3, 2, 2, 2, 195, 196, 7, 125, 2, 2, 196, 30, 3, 2, 2, 2, 197, 198, - 7, 127, 2, 2, 198, 32, 3, 2, 2, 2, 199, 200, 7, 64, 2, 2, 200, 34, 3, 2, - 2, 2, 201, 202, 7, 62, 2, 2, 202, 36, 3, 2, 2, 2, 203, 204, 7, 63, 2, 2, - 204, 205, 7, 63, 2, 2, 205, 38, 3, 2, 2, 2, 206, 207, 7, 64, 2, 2, 207, - 208, 7, 63, 2, 2, 208, 40, 3, 2, 2, 2, 209, 210, 7, 62, 2, 2, 210, 211, - 7, 63, 2, 2, 211, 42, 3, 2, 2, 2, 212, 213, 7, 35, 2, 2, 213, 214, 7, 63, - 2, 2, 214, 44, 3, 2, 2, 2, 215, 216, 7, 45, 2, 2, 216, 46, 3, 2, 2, 2, - 217, 218, 7, 47, 2, 2, 218, 48, 3, 2, 2, 2, 219, 220, 7, 47, 2, 2, 220, - 221, 7, 47, 2, 2, 221, 50, 3, 2, 2, 2, 222, 223, 7, 45, 2, 2, 223, 224, - 7, 45, 2, 2, 224, 52, 3, 2, 2, 2, 225, 226, 7, 44, 2, 2, 226, 54, 3, 2, - 2, 2, 227, 228, 7, 49, 2, 2, 228, 56, 3, 2, 2, 2, 229, 230, 7, 39, 2, 2, - 230, 58, 3, 2, 2, 2, 231, 232, 7, 67, 2, 2, 232, 233, 7, 80, 2, 2, 233, - 237, 7, 70, 2, 2, 234, 235, 7, 40, 2, 2, 235, 237, 7, 40, 2, 2, 236, 231, - 3, 2, 2, 2, 236, 234, 3, 2, 2, 2, 237, 60, 3, 2, 2, 2, 238, 239, 7, 81, - 2, 2, 239, 243, 7, 84, 2, 2, 240, 241, 7, 126, 2, 2, 241, 243, 7, 126, - 2, 2, 242, 238, 3, 2, 2, 2, 242, 240, 3, 2, 2, 2, 243, 62, 3, 2, 2, 2, - 244, 245, 7, 63, 2, 2, 245, 64, 3, 2, 2, 2, 246, 247, 7, 48, 2, 2, 247, - 248, 7, 48, 2, 2, 248, 66, 3, 2, 2, 2, 249, 250, 7, 65, 2, 2, 250, 68, - 3, 2, 2, 2, 251, 252, 7, 35, 2, 2, 252, 253, 7, 128, 2, 2, 253, 70, 3, - 2, 2, 2, 254, 255, 7, 63, 2, 2, 255, 256, 7, 128, 2, 2, 256, 72, 3, 2, - 2, 2, 257, 258, 7, 72, 2, 2, 258, 259, 7, 81, 2, 2, 259, 260, 7, 84, 2, - 2, 260, 74, 3, 2, 2, 2, 261, 262, 7, 84, 2, 2, 262, 263, 7, 71, 2, 2, 263, - 264, 7, 86, 2, 2, 264, 265, 7, 87, 2, 2, 265, 266, 7, 84, 2, 2, 266, 267, - 7, 80, 2, 2, 267, 76, 3, 2, 2, 2, 268, 269, 7, 70, 2, 2, 269, 270, 7, 75, - 2, 2, 270, 271, 7, 85, 2, 2, 271, 272, 7, 86, 2, 2, 272, 273, 7, 75, 2, - 2, 273, 274, 7, 80, 2, 2, 274, 275, 7, 69, 2, 2, 275, 276, 7, 86, 2, 2, - 276, 78, 3, 2, 2, 2, 277, 278, 7, 72, 2, 2, 278, 279, 7, 75, 2, 2, 279, - 280, 7, 78, 2, 2, 280, 281, 7, 86, 2, 2, 281, 282, 7, 71, 2, 2, 282, 283, - 7, 84, 2, 2, 283, 80, 3, 2, 2, 2, 284, 285, 7, 85, 2, 2, 285, 286, 7, 81, - 2, 2, 286, 287, 7, 84, 2, 2, 287, 288, 7, 86, 2, 2, 288, 82, 3, 2, 2, 2, - 289, 290, 7, 78, 2, 2, 290, 291, 7, 75, 2, 2, 291, 292, 7, 79, 2, 2, 292, - 293, 7, 75, 2, 2, 293, 294, 7, 86, 2, 2, 294, 84, 3, 2, 2, 2, 295, 296, - 7, 78, 2, 2, 296, 297, 7, 71, 2, 2, 297, 298, 7, 86, 2, 2, 298, 86, 3, - 2, 2, 2, 299, 300, 7, 69, 2, 2, 300, 301, 7, 81, 2, 2, 301, 302, 7, 78, - 2, 2, 302, 303, 7, 78, 2, 2, 303, 304, 7, 71, 2, 2, 304, 305, 7, 69, 2, - 2, 305, 306, 7, 86, 2, 2, 306, 88, 3, 2, 2, 2, 307, 308, 7, 67, 2, 2, 308, - 309, 7, 85, 2, 2, 309, 315, 7, 69, 2, 2, 310, 311, 7, 70, 2, 2, 311, 312, - 7, 71, 2, 2, 312, 313, 7, 85, 2, 2, 313, 315, 7, 69, 2, 2, 314, 307, 3, - 2, 2, 2, 314, 310, 3, 2, 2, 2, 315, 90, 3, 2, 2, 2, 316, 317, 7, 80, 2, - 2, 317, 318, 7, 81, 2, 2, 318, 319, 7, 80, 2, 2, 319, 320, 7, 71, 2, 2, - 320, 92, 3, 2, 2, 2, 321, 322, 7, 80, 2, 2, 322, 323, 7, 87, 2, 2, 323, - 324, 7, 78, 2, 2, 324, 325, 7, 78, 2, 2, 325, 94, 3, 2, 2, 2, 326, 327, - 7, 86, 2, 2, 327, 328, 7, 84, 2, 2, 328, 329, 7, 87, 2, 2, 329, 345, 7, - 71, 2, 2, 330, 331, 7, 118, 2, 2, 331, 332, 7, 116, 2, 2, 332, 333, 7, - 119, 2, 2, 333, 345, 7, 103, 2, 2, 334, 335, 7, 72, 2, 2, 335, 336, 7, - 67, 2, 2, 336, 337, 7, 78, 2, 2, 337, 338, 7, 85, 2, 2, 338, 345, 7, 71, - 2, 2, 339, 340, 7, 104, 2, 2, 340, 341, 7, 99, 2, 2, 341, 342, 7, 110, - 2, 2, 342, 343, 7, 117, 2, 2, 343, 345, 7, 103, 2, 2, 344, 326, 3, 2, 2, - 2, 344, 330, 3, 2, 2, 2, 344, 334, 3, 2, 2, 2, 344, 339, 3, 2, 2, 2, 345, - 96, 3, 2, 2, 2, 346, 347, 7, 75, 2, 2, 347, 348, 7, 80, 2, 2, 348, 349, - 7, 86, 2, 2, 349, 350, 7, 81, 2, 2, 350, 98, 3, 2, 2, 2, 351, 352, 7, 77, - 2, 2, 352, 353, 7, 71, 2, 2, 353, 354, 7, 71, 2, 2, 354, 355, 7, 82, 2, - 2, 355, 100, 3, 2, 2, 2, 356, 357, 7, 89, 2, 2, 357, 358, 7, 75, 2, 2, - 358, 359, 7, 86, 2, 2, 359, 360, 7, 74, 2, 2, 360, 102, 3, 2, 2, 2, 361, - 362, 7, 69, 2, 2, 362, 363, 7, 81, 2, 2, 363, 364, 7, 87, 2, 2, 364, 365, - 7, 80, 2, 2, 365, 366, 7, 86, 2, 2, 366, 104, 3, 2, 2, 2, 367, 368, 7, - 67, 2, 2, 368, 369, 7, 78, 2, 2, 369, 370, 7, 78, 2, 2, 370, 106, 3, 2, - 2, 2, 371, 372, 7, 67, 2, 2, 372, 373, 7, 80, 2, 2, 373, 374, 7, 91, 2, - 2, 374, 108, 3, 2, 2, 2, 375, 376, 7, 67, 2, 2, 376, 377, 7, 73, 2, 2, - 377, 378, 7, 73, 2, 2, 378, 379, 7, 84, 2, 2, 379, 380, 7, 71, 2, 2, 380, - 381, 7, 73, 2, 2, 381, 382, 7, 67, 2, 2, 382, 383, 7, 86, 2, 2, 383, 384, - 7, 71, 2, 2, 384, 110, 3, 2, 2, 2, 385, 386, 7, 78, 2, 2, 386, 387, 7, - 75, 2, 2, 387, 388, 7, 77, 2, 2, 388, 389, 7, 71, 2, 2, 389, 112, 3, 2, - 2, 2, 390, 391, 7, 80, 2, 2, 391, 392, 7, 81, 2, 2, 392, 395, 7, 86, 2, - 2, 393, 395, 7, 35, 2, 2, 394, 390, 3, 2, 2, 2, 394, 393, 3, 2, 2, 2, 395, - 114, 3, 2, 2, 2, 396, 397, 7, 75, 2, 2, 397, 398, 7, 80, 2, 2, 398, 116, - 3, 2, 2, 2, 399, 401, 5, 131, 66, 2, 400, 399, 3, 2, 2, 2, 401, 402, 3, - 2, 2, 2, 402, 400, 3, 2, 2, 2, 402, 403, 3, 2, 2, 2, 403, 407, 3, 2, 2, - 2, 404, 406, 5, 133, 67, 2, 405, 404, 3, 2, 2, 2, 406, 409, 3, 2, 2, 2, - 407, 405, 3, 2, 2, 2, 407, 408, 3, 2, 2, 2, 408, 118, 3, 2, 2, 2, 409, - 407, 3, 2, 2, 2, 410, 413, 5, 137, 69, 2, 411, 413, 5, 135, 68, 2, 412, - 410, 3, 2, 2, 2, 412, 411, 3, 2, 2, 2, 413, 120, 3, 2, 2, 2, 414, 416, - 9, 4, 2, 2, 415, 414, 3, 2, 2, 2, 416, 417, 3, 2, 2, 2, 417, 415, 3, 2, - 2, 2, 417, 418, 3, 2, 2, 2, 418, 122, 3, 2, 2, 2, 419, 420, 5, 127, 64, - 2, 420, 424, 7, 48, 2, 2, 421, 423, 9, 4, 2, 2, 422, 421, 3, 2, 2, 2, 423, - 426, 3, 2, 2, 2, 424, 422, 3, 2, 2, 2, 424, 425, 3, 2, 2, 2, 425, 428, - 3, 2, 2, 2, 426, 424, 3, 2, 2, 2, 427, 429, 5, 129, 65, 2, 428, 427, 3, - 2, 2, 2, 428, 429, 3, 2, 2, 2, 429, 444, 3, 2, 2, 2, 430, 432, 7, 48, 2, - 2, 431, 433, 9, 4, 2, 2, 432, 431, 3, 2, 2, 2, 433, 434, 3, 2, 2, 2, 434, - 432, 3, 2, 2, 2, 434, 435, 3, 2, 2, 2, 435, 437, 3, 2, 2, 2, 436, 438, - 5, 129, 65, 2, 437, 436, 3, 2, 2, 2, 437, 438, 3, 2, 2, 2, 438, 444, 3, - 2, 2, 2, 439, 441, 5, 127, 64, 2, 440, 442, 5, 129, 65, 2, 441, 440, 3, - 2, 2, 2, 441, 442, 3, 2, 2, 2, 442, 444, 3, 2, 2, 2, 443, 419, 3, 2, 2, - 2, 443, 430, 3, 2, 2, 2, 443, 439, 3, 2, 2, 2, 444, 124, 3, 2, 2, 2, 445, - 446, 9, 5, 2, 2, 446, 126, 3, 2, 2, 2, 447, 456, 7, 50, 2, 2, 448, 452, - 9, 6, 2, 2, 449, 451, 9, 4, 2, 2, 450, 449, 3, 2, 2, 2, 451, 454, 3, 2, - 2, 2, 452, 450, 3, 2, 2, 2, 452, 453, 3, 2, 2, 2, 453, 456, 3, 2, 2, 2, - 454, 452, 3, 2, 2, 2, 455, 447, 3, 2, 2, 2, 455, 448, 3, 2, 2, 2, 456, - 128, 3, 2, 2, 2, 457, 459, 9, 7, 2, 2, 458, 460, 9, 8, 2, 2, 459, 458, - 3, 2, 2, 2, 459, 460, 3, 2, 2, 2, 460, 462, 3, 2, 2, 2, 461, 463, 9, 4, - 2, 2, 462, 461, 3, 2, 2, 2, 463, 464, 3, 2, 2, 2, 464, 462, 3, 2, 2, 2, - 464, 465, 3, 2, 2, 2, 465, 130, 3, 2, 2, 2, 466, 467, 9, 9, 2, 2, 467, - 132, 3, 2, 2, 2, 468, 469, 4, 50, 59, 2, 469, 134, 3, 2, 2, 2, 470, 478, - 7, 36, 2, 2, 471, 472, 7, 94, 2, 2, 472, 477, 11, 2, 2, 2, 473, 474, 7, - 36, 2, 2, 474, 477, 7, 36, 2, 2, 475, 477, 10, 10, 2, 2, 476, 471, 3, 2, - 2, 2, 476, 473, 3, 2, 2, 2, 476, 475, 3, 2, 2, 2, 477, 480, 3, 2, 2, 2, - 478, 476, 3, 2, 2, 2, 478, 479, 3, 2, 2, 2, 479, 481, 3, 2, 2, 2, 480, - 478, 3, 2, 2, 2, 481, 482, 7, 36, 2, 2, 482, 136, 3, 2, 2, 2, 483, 491, - 7, 41, 2, 2, 484, 485, 7, 94, 2, 2, 485, 490, 11, 2, 2, 2, 486, 487, 7, - 41, 2, 2, 487, 490, 7, 41, 2, 2, 488, 490, 10, 11, 2, 2, 489, 484, 3, 2, - 2, 2, 489, 486, 3, 2, 2, 2, 489, 488, 3, 2, 2, 2, 490, 493, 3, 2, 2, 2, - 491, 489, 3, 2, 2, 2, 491, 492, 3, 2, 2, 2, 492, 494, 3, 2, 2, 2, 493, - 491, 3, 2, 2, 2, 494, 495, 7, 41, 2, 2, 495, 138, 3, 2, 2, 2, 29, 2, 145, - 159, 167, 236, 242, 314, 344, 394, 402, 407, 412, 417, 424, 428, 434, 437, - 441, 443, 452, 455, 459, 464, 476, 478, 489, 491, 3, 2, 3, 2, + 2, 2, 2, 3, 137, 3, 2, 2, 2, 5, 151, 3, 2, 2, 2, 7, 163, 3, 2, 2, 2, 9, + 169, 3, 2, 2, 2, 11, 173, 3, 2, 2, 2, 13, 175, 3, 2, 2, 2, 15, 177, 3, + 2, 2, 2, 17, 179, 3, 2, 2, 2, 19, 181, 3, 2, 2, 2, 21, 183, 3, 2, 2, 2, + 23, 185, 3, 2, 2, 2, 25, 187, 3, 2, 2, 2, 27, 189, 3, 2, 2, 2, 29, 191, + 3, 2, 2, 2, 31, 193, 3, 2, 2, 2, 33, 195, 3, 2, 2, 2, 35, 197, 3, 2, 2, + 2, 37, 200, 3, 2, 2, 2, 39, 203, 3, 2, 2, 2, 41, 206, 3, 2, 2, 2, 43, 209, + 3, 2, 2, 2, 45, 211, 3, 2, 2, 2, 47, 213, 3, 2, 2, 2, 49, 216, 3, 2, 2, + 2, 51, 219, 3, 2, 2, 2, 53, 221, 3, 2, 2, 2, 55, 223, 3, 2, 2, 2, 57, 230, + 3, 2, 2, 2, 59, 236, 3, 2, 2, 2, 61, 238, 3, 2, 2, 2, 63, 241, 3, 2, 2, + 2, 65, 243, 3, 2, 2, 2, 67, 245, 3, 2, 2, 2, 69, 248, 3, 2, 2, 2, 71, 251, + 3, 2, 2, 2, 73, 255, 3, 2, 2, 2, 75, 262, 3, 2, 2, 2, 77, 271, 3, 2, 2, + 2, 79, 278, 3, 2, 2, 2, 81, 283, 3, 2, 2, 2, 83, 289, 3, 2, 2, 2, 85, 293, + 3, 2, 2, 2, 87, 308, 3, 2, 2, 2, 89, 310, 3, 2, 2, 2, 91, 315, 3, 2, 2, + 2, 93, 338, 3, 2, 2, 2, 95, 340, 3, 2, 2, 2, 97, 345, 3, 2, 2, 2, 99, 350, + 3, 2, 2, 2, 101, 355, 3, 2, 2, 2, 103, 361, 3, 2, 2, 2, 105, 365, 3, 2, + 2, 2, 107, 369, 3, 2, 2, 2, 109, 379, 3, 2, 2, 2, 111, 388, 3, 2, 2, 2, + 113, 390, 3, 2, 2, 2, 115, 394, 3, 2, 2, 2, 117, 406, 3, 2, 2, 2, 119, + 409, 3, 2, 2, 2, 121, 427, 3, 2, 2, 2, 123, 429, 3, 2, 2, 2, 125, 439, + 3, 2, 2, 2, 127, 441, 3, 2, 2, 2, 129, 450, 3, 2, 2, 2, 131, 452, 3, 2, + 2, 2, 133, 454, 3, 2, 2, 2, 135, 467, 3, 2, 2, 2, 137, 138, 7, 49, 2, 2, + 138, 139, 7, 44, 2, 2, 139, 143, 3, 2, 2, 2, 140, 142, 11, 2, 2, 2, 141, + 140, 3, 2, 2, 2, 142, 145, 3, 2, 2, 2, 143, 144, 3, 2, 2, 2, 143, 141, + 3, 2, 2, 2, 144, 146, 3, 2, 2, 2, 145, 143, 3, 2, 2, 2, 146, 147, 7, 44, + 2, 2, 147, 148, 7, 49, 2, 2, 148, 149, 3, 2, 2, 2, 149, 150, 8, 2, 2, 2, + 150, 4, 3, 2, 2, 2, 151, 152, 7, 49, 2, 2, 152, 153, 7, 49, 2, 2, 153, + 157, 3, 2, 2, 2, 154, 156, 10, 2, 2, 2, 155, 154, 3, 2, 2, 2, 156, 159, + 3, 2, 2, 2, 157, 155, 3, 2, 2, 2, 157, 158, 3, 2, 2, 2, 158, 160, 3, 2, + 2, 2, 159, 157, 3, 2, 2, 2, 160, 161, 8, 3, 2, 2, 161, 6, 3, 2, 2, 2, 162, + 164, 9, 3, 2, 2, 163, 162, 3, 2, 2, 2, 164, 165, 3, 2, 2, 2, 165, 163, + 3, 2, 2, 2, 165, 166, 3, 2, 2, 2, 166, 167, 3, 2, 2, 2, 167, 168, 8, 4, + 2, 2, 168, 8, 3, 2, 2, 2, 169, 170, 9, 2, 2, 2, 170, 171, 3, 2, 2, 2, 171, + 172, 8, 5, 2, 2, 172, 10, 3, 2, 2, 2, 173, 174, 7, 60, 2, 2, 174, 12, 3, + 2, 2, 2, 175, 176, 7, 61, 2, 2, 176, 14, 3, 2, 2, 2, 177, 178, 7, 48, 2, + 2, 178, 16, 3, 2, 2, 2, 179, 180, 7, 46, 2, 2, 180, 18, 3, 2, 2, 2, 181, + 182, 7, 93, 2, 2, 182, 20, 3, 2, 2, 2, 183, 184, 7, 95, 2, 2, 184, 22, + 3, 2, 2, 2, 185, 186, 7, 42, 2, 2, 186, 24, 3, 2, 2, 2, 187, 188, 7, 43, + 2, 2, 188, 26, 3, 2, 2, 2, 189, 190, 7, 125, 2, 2, 190, 28, 3, 2, 2, 2, + 191, 192, 7, 127, 2, 2, 192, 30, 3, 2, 2, 2, 193, 194, 7, 64, 2, 2, 194, + 32, 3, 2, 2, 2, 195, 196, 7, 62, 2, 2, 196, 34, 3, 2, 2, 2, 197, 198, 7, + 63, 2, 2, 198, 199, 7, 63, 2, 2, 199, 36, 3, 2, 2, 2, 200, 201, 7, 64, + 2, 2, 201, 202, 7, 63, 2, 2, 202, 38, 3, 2, 2, 2, 203, 204, 7, 62, 2, 2, + 204, 205, 7, 63, 2, 2, 205, 40, 3, 2, 2, 2, 206, 207, 7, 35, 2, 2, 207, + 208, 7, 63, 2, 2, 208, 42, 3, 2, 2, 2, 209, 210, 7, 45, 2, 2, 210, 44, + 3, 2, 2, 2, 211, 212, 7, 47, 2, 2, 212, 46, 3, 2, 2, 2, 213, 214, 7, 47, + 2, 2, 214, 215, 7, 47, 2, 2, 215, 48, 3, 2, 2, 2, 216, 217, 7, 45, 2, 2, + 217, 218, 7, 45, 2, 2, 218, 50, 3, 2, 2, 2, 219, 220, 7, 44, 2, 2, 220, + 52, 3, 2, 2, 2, 221, 222, 7, 49, 2, 2, 222, 54, 3, 2, 2, 2, 223, 224, 7, + 39, 2, 2, 224, 56, 3, 2, 2, 2, 225, 226, 7, 67, 2, 2, 226, 227, 7, 80, + 2, 2, 227, 231, 7, 70, 2, 2, 228, 229, 7, 40, 2, 2, 229, 231, 7, 40, 2, + 2, 230, 225, 3, 2, 2, 2, 230, 228, 3, 2, 2, 2, 231, 58, 3, 2, 2, 2, 232, + 233, 7, 81, 2, 2, 233, 237, 7, 84, 2, 2, 234, 235, 7, 126, 2, 2, 235, 237, + 7, 126, 2, 2, 236, 232, 3, 2, 2, 2, 236, 234, 3, 2, 2, 2, 237, 60, 3, 2, + 2, 2, 238, 239, 5, 15, 8, 2, 239, 240, 5, 15, 8, 2, 240, 62, 3, 2, 2, 2, + 241, 242, 7, 63, 2, 2, 242, 64, 3, 2, 2, 2, 243, 244, 7, 65, 2, 2, 244, + 66, 3, 2, 2, 2, 245, 246, 7, 35, 2, 2, 246, 247, 7, 128, 2, 2, 247, 68, + 3, 2, 2, 2, 248, 249, 7, 63, 2, 2, 249, 250, 7, 128, 2, 2, 250, 70, 3, + 2, 2, 2, 251, 252, 7, 72, 2, 2, 252, 253, 7, 81, 2, 2, 253, 254, 7, 84, + 2, 2, 254, 72, 3, 2, 2, 2, 255, 256, 7, 84, 2, 2, 256, 257, 7, 71, 2, 2, + 257, 258, 7, 86, 2, 2, 258, 259, 7, 87, 2, 2, 259, 260, 7, 84, 2, 2, 260, + 261, 7, 80, 2, 2, 261, 74, 3, 2, 2, 2, 262, 263, 7, 70, 2, 2, 263, 264, + 7, 75, 2, 2, 264, 265, 7, 85, 2, 2, 265, 266, 7, 86, 2, 2, 266, 267, 7, + 75, 2, 2, 267, 268, 7, 80, 2, 2, 268, 269, 7, 69, 2, 2, 269, 270, 7, 86, + 2, 2, 270, 76, 3, 2, 2, 2, 271, 272, 7, 72, 2, 2, 272, 273, 7, 75, 2, 2, + 273, 274, 7, 78, 2, 2, 274, 275, 7, 86, 2, 2, 275, 276, 7, 71, 2, 2, 276, + 277, 7, 84, 2, 2, 277, 78, 3, 2, 2, 2, 278, 279, 7, 85, 2, 2, 279, 280, + 7, 81, 2, 2, 280, 281, 7, 84, 2, 2, 281, 282, 7, 86, 2, 2, 282, 80, 3, + 2, 2, 2, 283, 284, 7, 78, 2, 2, 284, 285, 7, 75, 2, 2, 285, 286, 7, 79, + 2, 2, 286, 287, 7, 75, 2, 2, 287, 288, 7, 86, 2, 2, 288, 82, 3, 2, 2, 2, + 289, 290, 7, 78, 2, 2, 290, 291, 7, 71, 2, 2, 291, 292, 7, 86, 2, 2, 292, + 84, 3, 2, 2, 2, 293, 294, 7, 69, 2, 2, 294, 295, 7, 81, 2, 2, 295, 296, + 7, 78, 2, 2, 296, 297, 7, 78, 2, 2, 297, 298, 7, 71, 2, 2, 298, 299, 7, + 69, 2, 2, 299, 300, 7, 86, 2, 2, 300, 86, 3, 2, 2, 2, 301, 302, 7, 67, + 2, 2, 302, 303, 7, 85, 2, 2, 303, 309, 7, 69, 2, 2, 304, 305, 7, 70, 2, + 2, 305, 306, 7, 71, 2, 2, 306, 307, 7, 85, 2, 2, 307, 309, 7, 69, 2, 2, + 308, 301, 3, 2, 2, 2, 308, 304, 3, 2, 2, 2, 309, 88, 3, 2, 2, 2, 310, 311, + 7, 80, 2, 2, 311, 312, 7, 81, 2, 2, 312, 313, 7, 80, 2, 2, 313, 314, 7, + 71, 2, 2, 314, 90, 3, 2, 2, 2, 315, 316, 7, 80, 2, 2, 316, 317, 7, 87, + 2, 2, 317, 318, 7, 78, 2, 2, 318, 319, 7, 78, 2, 2, 319, 92, 3, 2, 2, 2, + 320, 321, 7, 86, 2, 2, 321, 322, 7, 84, 2, 2, 322, 323, 7, 87, 2, 2, 323, + 339, 7, 71, 2, 2, 324, 325, 7, 118, 2, 2, 325, 326, 7, 116, 2, 2, 326, + 327, 7, 119, 2, 2, 327, 339, 7, 103, 2, 2, 328, 329, 7, 72, 2, 2, 329, + 330, 7, 67, 2, 2, 330, 331, 7, 78, 2, 2, 331, 332, 7, 85, 2, 2, 332, 339, + 7, 71, 2, 2, 333, 334, 7, 104, 2, 2, 334, 335, 7, 99, 2, 2, 335, 336, 7, + 110, 2, 2, 336, 337, 7, 117, 2, 2, 337, 339, 7, 103, 2, 2, 338, 320, 3, + 2, 2, 2, 338, 324, 3, 2, 2, 2, 338, 328, 3, 2, 2, 2, 338, 333, 3, 2, 2, + 2, 339, 94, 3, 2, 2, 2, 340, 341, 7, 75, 2, 2, 341, 342, 7, 80, 2, 2, 342, + 343, 7, 86, 2, 2, 343, 344, 7, 81, 2, 2, 344, 96, 3, 2, 2, 2, 345, 346, + 7, 77, 2, 2, 346, 347, 7, 71, 2, 2, 347, 348, 7, 71, 2, 2, 348, 349, 7, + 82, 2, 2, 349, 98, 3, 2, 2, 2, 350, 351, 7, 89, 2, 2, 351, 352, 7, 75, + 2, 2, 352, 353, 7, 86, 2, 2, 353, 354, 7, 74, 2, 2, 354, 100, 3, 2, 2, + 2, 355, 356, 7, 69, 2, 2, 356, 357, 7, 81, 2, 2, 357, 358, 7, 87, 2, 2, + 358, 359, 7, 80, 2, 2, 359, 360, 7, 86, 2, 2, 360, 102, 3, 2, 2, 2, 361, + 362, 7, 67, 2, 2, 362, 363, 7, 78, 2, 2, 363, 364, 7, 78, 2, 2, 364, 104, + 3, 2, 2, 2, 365, 366, 7, 67, 2, 2, 366, 367, 7, 80, 2, 2, 367, 368, 7, + 91, 2, 2, 368, 106, 3, 2, 2, 2, 369, 370, 7, 67, 2, 2, 370, 371, 7, 73, + 2, 2, 371, 372, 7, 73, 2, 2, 372, 373, 7, 84, 2, 2, 373, 374, 7, 71, 2, + 2, 374, 375, 7, 73, 2, 2, 375, 376, 7, 67, 2, 2, 376, 377, 7, 86, 2, 2, + 377, 378, 7, 71, 2, 2, 378, 108, 3, 2, 2, 2, 379, 380, 7, 78, 2, 2, 380, + 381, 7, 75, 2, 2, 381, 382, 7, 77, 2, 2, 382, 383, 7, 71, 2, 2, 383, 110, + 3, 2, 2, 2, 384, 385, 7, 80, 2, 2, 385, 386, 7, 81, 2, 2, 386, 389, 7, + 86, 2, 2, 387, 389, 7, 35, 2, 2, 388, 384, 3, 2, 2, 2, 388, 387, 3, 2, + 2, 2, 389, 112, 3, 2, 2, 2, 390, 391, 7, 75, 2, 2, 391, 392, 7, 80, 2, + 2, 392, 114, 3, 2, 2, 2, 393, 395, 5, 129, 65, 2, 394, 393, 3, 2, 2, 2, + 395, 396, 3, 2, 2, 2, 396, 394, 3, 2, 2, 2, 396, 397, 3, 2, 2, 2, 397, + 401, 3, 2, 2, 2, 398, 400, 5, 131, 66, 2, 399, 398, 3, 2, 2, 2, 400, 403, + 3, 2, 2, 2, 401, 399, 3, 2, 2, 2, 401, 402, 3, 2, 2, 2, 402, 116, 3, 2, + 2, 2, 403, 401, 3, 2, 2, 2, 404, 407, 5, 135, 68, 2, 405, 407, 5, 133, + 67, 2, 406, 404, 3, 2, 2, 2, 406, 405, 3, 2, 2, 2, 407, 118, 3, 2, 2, 2, + 408, 410, 9, 4, 2, 2, 409, 408, 3, 2, 2, 2, 410, 411, 3, 2, 2, 2, 411, + 409, 3, 2, 2, 2, 411, 412, 3, 2, 2, 2, 412, 120, 3, 2, 2, 2, 413, 414, + 5, 125, 63, 2, 414, 416, 5, 15, 8, 2, 415, 417, 9, 4, 2, 2, 416, 415, 3, + 2, 2, 2, 417, 418, 3, 2, 2, 2, 418, 416, 3, 2, 2, 2, 418, 419, 3, 2, 2, + 2, 419, 421, 3, 2, 2, 2, 420, 422, 5, 127, 64, 2, 421, 420, 3, 2, 2, 2, + 421, 422, 3, 2, 2, 2, 422, 428, 3, 2, 2, 2, 423, 425, 5, 125, 63, 2, 424, + 426, 5, 127, 64, 2, 425, 424, 3, 2, 2, 2, 425, 426, 3, 2, 2, 2, 426, 428, + 3, 2, 2, 2, 427, 413, 3, 2, 2, 2, 427, 423, 3, 2, 2, 2, 428, 122, 3, 2, + 2, 2, 429, 430, 9, 5, 2, 2, 430, 124, 3, 2, 2, 2, 431, 440, 7, 50, 2, 2, + 432, 436, 9, 6, 2, 2, 433, 435, 9, 4, 2, 2, 434, 433, 3, 2, 2, 2, 435, + 438, 3, 2, 2, 2, 436, 434, 3, 2, 2, 2, 436, 437, 3, 2, 2, 2, 437, 440, + 3, 2, 2, 2, 438, 436, 3, 2, 2, 2, 439, 431, 3, 2, 2, 2, 439, 432, 3, 2, + 2, 2, 440, 126, 3, 2, 2, 2, 441, 443, 9, 7, 2, 2, 442, 444, 9, 8, 2, 2, + 443, 442, 3, 2, 2, 2, 443, 444, 3, 2, 2, 2, 444, 446, 3, 2, 2, 2, 445, + 447, 9, 4, 2, 2, 446, 445, 3, 2, 2, 2, 447, 448, 3, 2, 2, 2, 448, 446, + 3, 2, 2, 2, 448, 449, 3, 2, 2, 2, 449, 128, 3, 2, 2, 2, 450, 451, 9, 9, + 2, 2, 451, 130, 3, 2, 2, 2, 452, 453, 4, 50, 59, 2, 453, 132, 3, 2, 2, + 2, 454, 462, 7, 36, 2, 2, 455, 456, 7, 94, 2, 2, 456, 461, 11, 2, 2, 2, + 457, 458, 7, 36, 2, 2, 458, 461, 7, 36, 2, 2, 459, 461, 10, 10, 2, 2, 460, + 455, 3, 2, 2, 2, 460, 457, 3, 2, 2, 2, 460, 459, 3, 2, 2, 2, 461, 464, + 3, 2, 2, 2, 462, 460, 3, 2, 2, 2, 462, 463, 3, 2, 2, 2, 463, 465, 3, 2, + 2, 2, 464, 462, 3, 2, 2, 2, 465, 466, 7, 36, 2, 2, 466, 134, 3, 2, 2, 2, + 467, 475, 7, 41, 2, 2, 468, 469, 7, 94, 2, 2, 469, 474, 11, 2, 2, 2, 470, + 471, 7, 41, 2, 2, 471, 474, 7, 41, 2, 2, 472, 474, 10, 11, 2, 2, 473, 468, + 3, 2, 2, 2, 473, 470, 3, 2, 2, 2, 473, 472, 3, 2, 2, 2, 474, 477, 3, 2, + 2, 2, 475, 473, 3, 2, 2, 2, 475, 476, 3, 2, 2, 2, 476, 478, 3, 2, 2, 2, + 477, 475, 3, 2, 2, 2, 478, 479, 7, 41, 2, 2, 479, 136, 3, 2, 2, 2, 27, + 2, 143, 157, 165, 230, 236, 308, 338, 388, 396, 401, 406, 411, 418, 421, + 425, 427, 436, 439, 443, 448, 460, 462, 473, 475, 3, 2, 3, 2, } var lexerDeserializer = antlr.NewATNDeserializer(nil) @@ -249,36 +241,35 @@ var lexerModeNames = []string{ } var lexerLiteralNames = []string{ - "", "", "", "", "", "':'", "';'", "','", "'.'", "'...'", "'['", "']'", - "'('", "')'", "'{'", "'}'", "'>'", "'<'", "'=='", "'>='", "'<='", "'!='", - "'+'", "'-'", "'--'", "'++'", "'*'", "'/'", "'%'", "", "", "'='", "'..'", - "'?'", "'!~'", "'=~'", "'FOR'", "'RETURN'", "'DISTINCT'", "'FILTER'", "'SORT'", - "'LIMIT'", "'LET'", "'COLLECT'", "", "'NONE'", "'NULL'", "", "'INTO'", - "'KEEP'", "'WITH'", "'COUNT'", "'ALL'", "'ANY'", "'AGGREGATE'", "'LIKE'", - "", "'IN'", + "", "", "", "", "", "':'", "';'", "'.'", "','", "'['", "']'", "'('", "')'", + "'{'", "'}'", "'>'", "'<'", "'=='", "'>='", "'<='", "'!='", "'+'", "'-'", + "'--'", "'++'", "'*'", "'/'", "'%'", "", "", "", "'='", "'?'", "'!~'", + "'=~'", "'FOR'", "'RETURN'", "'DISTINCT'", "'FILTER'", "'SORT'", "'LIMIT'", + "'LET'", "'COLLECT'", "", "'NONE'", "'NULL'", "", "'INTO'", "'KEEP'", "'WITH'", + "'COUNT'", "'ALL'", "'ANY'", "'AGGREGATE'", "'LIKE'", "", "'IN'", } var lexerSymbolicNames = []string{ "", "MultiLineComment", "SingleLineComment", "WhiteSpaces", "LineTerminator", - "Colon", "SemiColon", "Comma", "Dot", "Ellipsis", "OpenBracket", "CloseBracket", - "OpenParen", "CloseParen", "OpenBrace", "CloseBrace", "Gt", "Lt", "Eq", - "Gte", "Lte", "Neq", "Plus", "Minus", "MinusMinus", "PlusPlus", "Multi", - "Div", "Mod", "And", "Or", "Assign", "Range", "QuestionMark", "RegexNotMatch", - "RegexMatch", "For", "Return", "Distinct", "Filter", "Sort", "Limit", "Let", - "Collect", "SortDirection", "None", "Null", "BooleanLiteral", "Into", "Keep", - "With", "Count", "All", "Any", "Aggregate", "Like", "Not", "In", "Identifier", + "Colon", "SemiColon", "Dot", "Comma", "OpenBracket", "CloseBracket", "OpenParen", + "CloseParen", "OpenBrace", "CloseBrace", "Gt", "Lt", "Eq", "Gte", "Lte", + "Neq", "Plus", "Minus", "MinusMinus", "PlusPlus", "Multi", "Div", "Mod", + "And", "Or", "Range", "Assign", "QuestionMark", "RegexNotMatch", "RegexMatch", + "For", "Return", "Distinct", "Filter", "Sort", "Limit", "Let", "Collect", + "SortDirection", "None", "Null", "BooleanLiteral", "Into", "Keep", "With", + "Count", "All", "Any", "Aggregate", "Like", "Not", "In", "Identifier", "StringLiteral", "IntegerLiteral", "FloatLiteral", } var lexerRuleNames = []string{ "MultiLineComment", "SingleLineComment", "WhiteSpaces", "LineTerminator", - "Colon", "SemiColon", "Comma", "Dot", "Ellipsis", "OpenBracket", "CloseBracket", - "OpenParen", "CloseParen", "OpenBrace", "CloseBrace", "Gt", "Lt", "Eq", - "Gte", "Lte", "Neq", "Plus", "Minus", "MinusMinus", "PlusPlus", "Multi", - "Div", "Mod", "And", "Or", "Assign", "Range", "QuestionMark", "RegexNotMatch", - "RegexMatch", "For", "Return", "Distinct", "Filter", "Sort", "Limit", "Let", - "Collect", "SortDirection", "None", "Null", "BooleanLiteral", "Into", "Keep", - "With", "Count", "All", "Any", "Aggregate", "Like", "Not", "In", "Identifier", + "Colon", "SemiColon", "Dot", "Comma", "OpenBracket", "CloseBracket", "OpenParen", + "CloseParen", "OpenBrace", "CloseBrace", "Gt", "Lt", "Eq", "Gte", "Lte", + "Neq", "Plus", "Minus", "MinusMinus", "PlusPlus", "Multi", "Div", "Mod", + "And", "Or", "Range", "Assign", "QuestionMark", "RegexNotMatch", "RegexMatch", + "For", "Return", "Distinct", "Filter", "Sort", "Limit", "Let", "Collect", + "SortDirection", "None", "Null", "BooleanLiteral", "Into", "Keep", "With", + "Count", "All", "Any", "Aggregate", "Like", "Not", "In", "Identifier", "StringLiteral", "IntegerLiteral", "FloatLiteral", "HexDigit", "DecimalIntegerLiteral", "ExponentPart", "Letter", "Digit", "DQSring", "SQString", } @@ -324,59 +315,58 @@ const ( FqlLexerLineTerminator = 4 FqlLexerColon = 5 FqlLexerSemiColon = 6 - FqlLexerComma = 7 - FqlLexerDot = 8 - FqlLexerEllipsis = 9 - FqlLexerOpenBracket = 10 - FqlLexerCloseBracket = 11 - FqlLexerOpenParen = 12 - FqlLexerCloseParen = 13 - FqlLexerOpenBrace = 14 - FqlLexerCloseBrace = 15 - FqlLexerGt = 16 - FqlLexerLt = 17 - FqlLexerEq = 18 - FqlLexerGte = 19 - FqlLexerLte = 20 - FqlLexerNeq = 21 - FqlLexerPlus = 22 - FqlLexerMinus = 23 - FqlLexerMinusMinus = 24 - FqlLexerPlusPlus = 25 - FqlLexerMulti = 26 - FqlLexerDiv = 27 - FqlLexerMod = 28 - FqlLexerAnd = 29 - FqlLexerOr = 30 + FqlLexerDot = 7 + FqlLexerComma = 8 + FqlLexerOpenBracket = 9 + FqlLexerCloseBracket = 10 + FqlLexerOpenParen = 11 + FqlLexerCloseParen = 12 + FqlLexerOpenBrace = 13 + FqlLexerCloseBrace = 14 + FqlLexerGt = 15 + FqlLexerLt = 16 + FqlLexerEq = 17 + FqlLexerGte = 18 + FqlLexerLte = 19 + FqlLexerNeq = 20 + FqlLexerPlus = 21 + FqlLexerMinus = 22 + FqlLexerMinusMinus = 23 + FqlLexerPlusPlus = 24 + FqlLexerMulti = 25 + FqlLexerDiv = 26 + FqlLexerMod = 27 + FqlLexerAnd = 28 + FqlLexerOr = 29 + FqlLexerRange = 30 FqlLexerAssign = 31 - FqlLexerRange = 32 - FqlLexerQuestionMark = 33 - FqlLexerRegexNotMatch = 34 - FqlLexerRegexMatch = 35 - FqlLexerFor = 36 - FqlLexerReturn = 37 - FqlLexerDistinct = 38 - FqlLexerFilter = 39 - FqlLexerSort = 40 - FqlLexerLimit = 41 - FqlLexerLet = 42 - FqlLexerCollect = 43 - FqlLexerSortDirection = 44 - FqlLexerNone = 45 - FqlLexerNull = 46 - FqlLexerBooleanLiteral = 47 - FqlLexerInto = 48 - FqlLexerKeep = 49 - FqlLexerWith = 50 - FqlLexerCount = 51 - FqlLexerAll = 52 - FqlLexerAny = 53 - FqlLexerAggregate = 54 - FqlLexerLike = 55 - FqlLexerNot = 56 - FqlLexerIn = 57 - FqlLexerIdentifier = 58 - FqlLexerStringLiteral = 59 - FqlLexerIntegerLiteral = 60 - FqlLexerFloatLiteral = 61 + FqlLexerQuestionMark = 32 + FqlLexerRegexNotMatch = 33 + FqlLexerRegexMatch = 34 + FqlLexerFor = 35 + FqlLexerReturn = 36 + FqlLexerDistinct = 37 + FqlLexerFilter = 38 + FqlLexerSort = 39 + FqlLexerLimit = 40 + FqlLexerLet = 41 + FqlLexerCollect = 42 + FqlLexerSortDirection = 43 + FqlLexerNone = 44 + FqlLexerNull = 45 + FqlLexerBooleanLiteral = 46 + FqlLexerInto = 47 + FqlLexerKeep = 48 + FqlLexerWith = 49 + FqlLexerCount = 50 + FqlLexerAll = 51 + FqlLexerAny = 52 + FqlLexerAggregate = 53 + FqlLexerLike = 54 + FqlLexerNot = 55 + FqlLexerIn = 56 + FqlLexerIdentifier = 57 + FqlLexerStringLiteral = 58 + FqlLexerIntegerLiteral = 59 + FqlLexerFloatLiteral = 60 ) diff --git a/pkg/parser/fql/fql_parser.go b/pkg/parser/fql/fql_parser.go index ebda7e1e..0cce2414 100644 --- a/pkg/parser/fql/fql_parser.go +++ b/pkg/parser/fql/fql_parser.go @@ -15,7 +15,7 @@ var _ = reflect.Copy var _ = strconv.Itoa var parserATN = []uint16{ - 3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 63, 480, + 3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 62, 480, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, @@ -24,231 +24,231 @@ var parserATN = []uint16{ 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, - 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, - 50, 9, 50, 3, 2, 3, 2, 3, 3, 7, 3, 104, 10, 3, 12, 3, 14, 3, 107, 11, 3, - 3, 3, 3, 3, 3, 4, 3, 4, 5, 4, 113, 10, 4, 3, 5, 3, 5, 5, 5, 117, 10, 5, - 3, 6, 3, 6, 5, 6, 121, 10, 6, 3, 6, 3, 6, 3, 6, 5, 6, 126, 10, 6, 3, 6, - 3, 6, 3, 6, 3, 6, 5, 6, 132, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 138, - 10, 7, 3, 7, 3, 7, 3, 7, 7, 7, 143, 10, 7, 12, 7, 14, 7, 146, 11, 7, 3, - 7, 7, 7, 149, 10, 7, 12, 7, 14, 7, 152, 11, 7, 3, 7, 3, 7, 3, 8, 3, 8, - 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 165, 10, 10, 3, 11, - 3, 11, 3, 11, 3, 11, 5, 11, 171, 10, 11, 3, 12, 3, 12, 3, 12, 3, 13, 3, - 13, 3, 13, 3, 13, 5, 13, 180, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 7, 14, - 186, 10, 14, 12, 14, 14, 14, 189, 11, 14, 3, 15, 3, 15, 5, 15, 193, 10, - 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, + 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 3, + 2, 3, 2, 3, 3, 7, 3, 102, 10, 3, 12, 3, 14, 3, 105, 11, 3, 3, 3, 3, 3, + 3, 4, 3, 4, 5, 4, 111, 10, 4, 3, 5, 3, 5, 5, 5, 115, 10, 5, 3, 6, 3, 6, + 5, 6, 119, 10, 6, 3, 6, 3, 6, 3, 6, 5, 6, 124, 10, 6, 3, 6, 3, 6, 3, 6, + 3, 6, 5, 6, 130, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 136, 10, 7, 3, 7, + 3, 7, 3, 7, 7, 7, 141, 10, 7, 12, 7, 14, 7, 144, 11, 7, 3, 7, 7, 7, 147, + 10, 7, 12, 7, 14, 7, 150, 11, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, + 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 164, 10, 10, 3, 11, 3, 11, + 3, 11, 3, 11, 5, 11, 170, 10, 11, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, + 13, 3, 13, 5, 13, 179, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 7, 14, 185, + 10, 14, 12, 14, 14, 14, 188, 11, 14, 3, 15, 3, 15, 5, 15, 192, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, - 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 244, 10, 16, - 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, - 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 5, 24, 262, 10, 24, 3, 25, 3, 25, - 5, 25, 266, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, - 26, 3, 26, 3, 26, 3, 26, 5, 26, 279, 10, 26, 3, 27, 3, 27, 3, 28, 3, 28, - 5, 28, 285, 10, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 293, - 10, 29, 12, 29, 14, 29, 296, 11, 29, 5, 29, 298, 10, 29, 3, 29, 5, 29, - 301, 10, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, - 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 6, 35, 317, 10, 35, 13, 35, 14, - 35, 318, 3, 35, 7, 35, 322, 10, 35, 12, 35, 14, 35, 325, 11, 35, 3, 36, - 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 5, 36, 336, 10, - 36, 3, 37, 3, 37, 3, 37, 3, 37, 7, 37, 342, 10, 37, 12, 37, 14, 37, 345, - 11, 37, 6, 37, 347, 10, 37, 13, 37, 14, 37, 348, 3, 37, 3, 37, 3, 37, 3, - 37, 3, 37, 7, 37, 356, 10, 37, 12, 37, 14, 37, 359, 11, 37, 7, 37, 361, - 10, 37, 12, 37, 14, 37, 364, 11, 37, 3, 37, 3, 37, 3, 37, 7, 37, 369, 10, - 37, 12, 37, 14, 37, 372, 11, 37, 7, 37, 374, 10, 37, 12, 37, 14, 37, 377, - 11, 37, 5, 37, 379, 10, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, - 40, 3, 40, 3, 41, 3, 41, 3, 41, 7, 41, 392, 10, 41, 12, 41, 14, 41, 395, - 11, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 7, 43, 404, 10, - 43, 12, 43, 14, 43, 407, 11, 43, 5, 43, 409, 10, 43, 3, 43, 3, 43, 3, 44, - 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, - 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, - 3, 44, 3, 44, 3, 44, 5, 44, 438, 10, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, - 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, - 5, 44, 455, 10, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 7, 44, 463, - 10, 44, 12, 44, 14, 44, 466, 11, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, - 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 2, 3, 86, 51, 2, - 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, - 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, - 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 2, 8, 3, 2, 47, 48, 5, 2, 39, - 49, 54, 56, 59, 59, 3, 2, 18, 23, 3, 2, 31, 32, 4, 2, 24, 25, 28, 30, 4, - 2, 24, 25, 57, 58, 2, 498, 2, 100, 3, 2, 2, 2, 4, 105, 3, 2, 2, 2, 6, 112, - 3, 2, 2, 2, 8, 116, 3, 2, 2, 2, 10, 131, 3, 2, 2, 2, 12, 133, 3, 2, 2, - 2, 14, 155, 3, 2, 2, 2, 16, 157, 3, 2, 2, 2, 18, 164, 3, 2, 2, 2, 20, 170, - 3, 2, 2, 2, 22, 172, 3, 2, 2, 2, 24, 175, 3, 2, 2, 2, 26, 181, 3, 2, 2, - 2, 28, 190, 3, 2, 2, 2, 30, 243, 3, 2, 2, 2, 32, 245, 3, 2, 2, 2, 34, 247, - 3, 2, 2, 2, 36, 249, 3, 2, 2, 2, 38, 251, 3, 2, 2, 2, 40, 253, 3, 2, 2, - 2, 42, 255, 3, 2, 2, 2, 44, 257, 3, 2, 2, 2, 46, 261, 3, 2, 2, 2, 48, 265, - 3, 2, 2, 2, 50, 278, 3, 2, 2, 2, 52, 280, 3, 2, 2, 2, 54, 282, 3, 2, 2, - 2, 56, 288, 3, 2, 2, 2, 58, 304, 3, 2, 2, 2, 60, 306, 3, 2, 2, 2, 62, 308, - 3, 2, 2, 2, 64, 310, 3, 2, 2, 2, 66, 312, 3, 2, 2, 2, 68, 314, 3, 2, 2, - 2, 70, 335, 3, 2, 2, 2, 72, 378, 3, 2, 2, 2, 74, 380, 3, 2, 2, 2, 76, 382, - 3, 2, 2, 2, 78, 386, 3, 2, 2, 2, 80, 388, 3, 2, 2, 2, 82, 396, 3, 2, 2, - 2, 84, 399, 3, 2, 2, 2, 86, 437, 3, 2, 2, 2, 88, 467, 3, 2, 2, 2, 90, 469, - 3, 2, 2, 2, 92, 471, 3, 2, 2, 2, 94, 473, 3, 2, 2, 2, 96, 475, 3, 2, 2, - 2, 98, 477, 3, 2, 2, 2, 100, 101, 5, 4, 3, 2, 101, 3, 3, 2, 2, 2, 102, - 104, 5, 6, 4, 2, 103, 102, 3, 2, 2, 2, 104, 107, 3, 2, 2, 2, 105, 103, - 3, 2, 2, 2, 105, 106, 3, 2, 2, 2, 106, 108, 3, 2, 2, 2, 107, 105, 3, 2, - 2, 2, 108, 109, 5, 8, 5, 2, 109, 5, 3, 2, 2, 2, 110, 113, 5, 82, 42, 2, - 111, 113, 5, 50, 26, 2, 112, 110, 3, 2, 2, 2, 112, 111, 3, 2, 2, 2, 113, - 7, 3, 2, 2, 2, 114, 117, 5, 10, 6, 2, 115, 117, 5, 12, 7, 2, 116, 114, - 3, 2, 2, 2, 116, 115, 3, 2, 2, 2, 117, 9, 3, 2, 2, 2, 118, 120, 7, 39, - 2, 2, 119, 121, 7, 40, 2, 2, 120, 119, 3, 2, 2, 2, 120, 121, 3, 2, 2, 2, - 121, 122, 3, 2, 2, 2, 122, 132, 5, 86, 44, 2, 123, 125, 7, 39, 2, 2, 124, - 126, 7, 40, 2, 2, 125, 124, 3, 2, 2, 2, 125, 126, 3, 2, 2, 2, 126, 127, - 3, 2, 2, 2, 127, 128, 7, 14, 2, 2, 128, 129, 5, 12, 7, 2, 129, 130, 7, - 15, 2, 2, 130, 132, 3, 2, 2, 2, 131, 118, 3, 2, 2, 2, 131, 123, 3, 2, 2, - 2, 132, 11, 3, 2, 2, 2, 133, 134, 7, 38, 2, 2, 134, 137, 5, 14, 8, 2, 135, - 136, 7, 9, 2, 2, 136, 138, 5, 16, 9, 2, 137, 135, 3, 2, 2, 2, 137, 138, - 3, 2, 2, 2, 138, 139, 3, 2, 2, 2, 139, 140, 7, 59, 2, 2, 140, 144, 5, 18, - 10, 2, 141, 143, 5, 20, 11, 2, 142, 141, 3, 2, 2, 2, 143, 146, 3, 2, 2, - 2, 144, 142, 3, 2, 2, 2, 144, 145, 3, 2, 2, 2, 145, 150, 3, 2, 2, 2, 146, - 144, 3, 2, 2, 2, 147, 149, 5, 46, 24, 2, 148, 147, 3, 2, 2, 2, 149, 152, - 3, 2, 2, 2, 150, 148, 3, 2, 2, 2, 150, 151, 3, 2, 2, 2, 151, 153, 3, 2, - 2, 2, 152, 150, 3, 2, 2, 2, 153, 154, 5, 48, 25, 2, 154, 13, 3, 2, 2, 2, - 155, 156, 7, 60, 2, 2, 156, 15, 3, 2, 2, 2, 157, 158, 7, 60, 2, 2, 158, - 17, 3, 2, 2, 2, 159, 165, 5, 82, 42, 2, 160, 165, 5, 54, 28, 2, 161, 165, - 5, 56, 29, 2, 162, 165, 5, 52, 27, 2, 163, 165, 5, 72, 37, 2, 164, 159, - 3, 2, 2, 2, 164, 160, 3, 2, 2, 2, 164, 161, 3, 2, 2, 2, 164, 162, 3, 2, - 2, 2, 164, 163, 3, 2, 2, 2, 165, 19, 3, 2, 2, 2, 166, 171, 5, 24, 13, 2, - 167, 171, 5, 26, 14, 2, 168, 171, 5, 22, 12, 2, 169, 171, 5, 30, 16, 2, - 170, 166, 3, 2, 2, 2, 170, 167, 3, 2, 2, 2, 170, 168, 3, 2, 2, 2, 170, - 169, 3, 2, 2, 2, 171, 21, 3, 2, 2, 2, 172, 173, 7, 41, 2, 2, 173, 174, - 5, 86, 44, 2, 174, 23, 3, 2, 2, 2, 175, 176, 7, 43, 2, 2, 176, 179, 7, - 62, 2, 2, 177, 178, 7, 9, 2, 2, 178, 180, 7, 62, 2, 2, 179, 177, 3, 2, - 2, 2, 179, 180, 3, 2, 2, 2, 180, 25, 3, 2, 2, 2, 181, 182, 7, 42, 2, 2, - 182, 187, 5, 28, 15, 2, 183, 184, 7, 9, 2, 2, 184, 186, 5, 28, 15, 2, 185, - 183, 3, 2, 2, 2, 186, 189, 3, 2, 2, 2, 187, 185, 3, 2, 2, 2, 187, 188, - 3, 2, 2, 2, 188, 27, 3, 2, 2, 2, 189, 187, 3, 2, 2, 2, 190, 192, 5, 86, - 44, 2, 191, 193, 7, 46, 2, 2, 192, 191, 3, 2, 2, 2, 192, 193, 3, 2, 2, - 2, 193, 29, 3, 2, 2, 2, 194, 195, 7, 45, 2, 2, 195, 196, 5, 32, 17, 2, - 196, 197, 7, 33, 2, 2, 197, 198, 5, 86, 44, 2, 198, 244, 3, 2, 2, 2, 199, - 200, 7, 45, 2, 2, 200, 201, 5, 32, 17, 2, 201, 202, 7, 33, 2, 2, 202, 203, - 5, 86, 44, 2, 203, 204, 7, 50, 2, 2, 204, 205, 5, 34, 18, 2, 205, 244, - 3, 2, 2, 2, 206, 207, 7, 45, 2, 2, 207, 208, 5, 32, 17, 2, 208, 209, 7, - 33, 2, 2, 209, 210, 5, 86, 44, 2, 210, 211, 7, 50, 2, 2, 211, 212, 5, 34, - 18, 2, 212, 213, 7, 51, 2, 2, 213, 214, 5, 36, 19, 2, 214, 244, 3, 2, 2, - 2, 215, 216, 7, 45, 2, 2, 216, 217, 5, 32, 17, 2, 217, 218, 7, 33, 2, 2, - 218, 219, 5, 86, 44, 2, 219, 220, 7, 52, 2, 2, 220, 221, 7, 53, 2, 2, 221, - 222, 5, 38, 20, 2, 222, 244, 3, 2, 2, 2, 223, 224, 7, 45, 2, 2, 224, 225, - 5, 32, 17, 2, 225, 226, 7, 33, 2, 2, 226, 227, 5, 86, 44, 2, 227, 228, - 7, 56, 2, 2, 228, 229, 5, 40, 21, 2, 229, 230, 7, 33, 2, 2, 230, 231, 5, - 42, 22, 2, 231, 244, 3, 2, 2, 2, 232, 233, 7, 45, 2, 2, 233, 234, 7, 56, - 2, 2, 234, 235, 5, 40, 21, 2, 235, 236, 7, 33, 2, 2, 236, 237, 5, 42, 22, - 2, 237, 244, 3, 2, 2, 2, 238, 239, 7, 45, 2, 2, 239, 240, 7, 52, 2, 2, - 240, 241, 7, 53, 2, 2, 241, 242, 7, 50, 2, 2, 242, 244, 5, 38, 20, 2, 243, - 194, 3, 2, 2, 2, 243, 199, 3, 2, 2, 2, 243, 206, 3, 2, 2, 2, 243, 215, - 3, 2, 2, 2, 243, 223, 3, 2, 2, 2, 243, 232, 3, 2, 2, 2, 243, 238, 3, 2, - 2, 2, 244, 31, 3, 2, 2, 2, 245, 246, 7, 60, 2, 2, 246, 33, 3, 2, 2, 2, - 247, 248, 7, 60, 2, 2, 248, 35, 3, 2, 2, 2, 249, 250, 7, 60, 2, 2, 250, - 37, 3, 2, 2, 2, 251, 252, 7, 60, 2, 2, 252, 39, 3, 2, 2, 2, 253, 254, 7, - 60, 2, 2, 254, 41, 3, 2, 2, 2, 255, 256, 5, 86, 44, 2, 256, 43, 3, 2, 2, - 2, 257, 258, 3, 2, 2, 2, 258, 45, 3, 2, 2, 2, 259, 262, 5, 50, 26, 2, 260, - 262, 5, 82, 42, 2, 261, 259, 3, 2, 2, 2, 261, 260, 3, 2, 2, 2, 262, 47, - 3, 2, 2, 2, 263, 266, 5, 10, 6, 2, 264, 266, 5, 12, 7, 2, 265, 263, 3, - 2, 2, 2, 265, 264, 3, 2, 2, 2, 266, 49, 3, 2, 2, 2, 267, 268, 7, 44, 2, - 2, 268, 269, 7, 60, 2, 2, 269, 270, 7, 33, 2, 2, 270, 279, 5, 86, 44, 2, - 271, 272, 7, 44, 2, 2, 272, 273, 7, 60, 2, 2, 273, 274, 7, 33, 2, 2, 274, - 275, 7, 14, 2, 2, 275, 276, 5, 12, 7, 2, 276, 277, 7, 15, 2, 2, 277, 279, - 3, 2, 2, 2, 278, 267, 3, 2, 2, 2, 278, 271, 3, 2, 2, 2, 279, 51, 3, 2, - 2, 2, 280, 281, 7, 60, 2, 2, 281, 53, 3, 2, 2, 2, 282, 284, 7, 12, 2, 2, - 283, 285, 5, 68, 35, 2, 284, 283, 3, 2, 2, 2, 284, 285, 3, 2, 2, 2, 285, - 286, 3, 2, 2, 2, 286, 287, 7, 13, 2, 2, 287, 55, 3, 2, 2, 2, 288, 297, - 7, 16, 2, 2, 289, 294, 5, 70, 36, 2, 290, 291, 7, 9, 2, 2, 291, 293, 5, - 70, 36, 2, 292, 290, 3, 2, 2, 2, 293, 296, 3, 2, 2, 2, 294, 292, 3, 2, - 2, 2, 294, 295, 3, 2, 2, 2, 295, 298, 3, 2, 2, 2, 296, 294, 3, 2, 2, 2, - 297, 289, 3, 2, 2, 2, 297, 298, 3, 2, 2, 2, 298, 300, 3, 2, 2, 2, 299, - 301, 7, 9, 2, 2, 300, 299, 3, 2, 2, 2, 300, 301, 3, 2, 2, 2, 301, 302, - 3, 2, 2, 2, 302, 303, 7, 17, 2, 2, 303, 57, 3, 2, 2, 2, 304, 305, 7, 49, - 2, 2, 305, 59, 3, 2, 2, 2, 306, 307, 7, 61, 2, 2, 307, 61, 3, 2, 2, 2, - 308, 309, 7, 62, 2, 2, 309, 63, 3, 2, 2, 2, 310, 311, 7, 63, 2, 2, 311, - 65, 3, 2, 2, 2, 312, 313, 9, 2, 2, 2, 313, 67, 3, 2, 2, 2, 314, 323, 5, - 86, 44, 2, 315, 317, 7, 9, 2, 2, 316, 315, 3, 2, 2, 2, 317, 318, 3, 2, - 2, 2, 318, 316, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 320, 3, 2, 2, 2, - 320, 322, 5, 86, 44, 2, 321, 316, 3, 2, 2, 2, 322, 325, 3, 2, 2, 2, 323, - 321, 3, 2, 2, 2, 323, 324, 3, 2, 2, 2, 324, 69, 3, 2, 2, 2, 325, 323, 3, - 2, 2, 2, 326, 327, 5, 78, 40, 2, 327, 328, 7, 7, 2, 2, 328, 329, 5, 86, - 44, 2, 329, 336, 3, 2, 2, 2, 330, 331, 5, 76, 39, 2, 331, 332, 7, 7, 2, - 2, 332, 333, 5, 86, 44, 2, 333, 336, 3, 2, 2, 2, 334, 336, 5, 74, 38, 2, - 335, 326, 3, 2, 2, 2, 335, 330, 3, 2, 2, 2, 335, 334, 3, 2, 2, 2, 336, - 71, 3, 2, 2, 2, 337, 346, 7, 60, 2, 2, 338, 339, 7, 10, 2, 2, 339, 343, - 5, 78, 40, 2, 340, 342, 5, 76, 39, 2, 341, 340, 3, 2, 2, 2, 342, 345, 3, - 2, 2, 2, 343, 341, 3, 2, 2, 2, 343, 344, 3, 2, 2, 2, 344, 347, 3, 2, 2, - 2, 345, 343, 3, 2, 2, 2, 346, 338, 3, 2, 2, 2, 347, 348, 3, 2, 2, 2, 348, - 346, 3, 2, 2, 2, 348, 349, 3, 2, 2, 2, 349, 379, 3, 2, 2, 2, 350, 351, - 7, 60, 2, 2, 351, 362, 5, 76, 39, 2, 352, 353, 7, 10, 2, 2, 353, 357, 5, - 78, 40, 2, 354, 356, 5, 76, 39, 2, 355, 354, 3, 2, 2, 2, 356, 359, 3, 2, - 2, 2, 357, 355, 3, 2, 2, 2, 357, 358, 3, 2, 2, 2, 358, 361, 3, 2, 2, 2, - 359, 357, 3, 2, 2, 2, 360, 352, 3, 2, 2, 2, 361, 364, 3, 2, 2, 2, 362, - 360, 3, 2, 2, 2, 362, 363, 3, 2, 2, 2, 363, 375, 3, 2, 2, 2, 364, 362, - 3, 2, 2, 2, 365, 370, 5, 76, 39, 2, 366, 367, 7, 10, 2, 2, 367, 369, 5, - 78, 40, 2, 368, 366, 3, 2, 2, 2, 369, 372, 3, 2, 2, 2, 370, 368, 3, 2, - 2, 2, 370, 371, 3, 2, 2, 2, 371, 374, 3, 2, 2, 2, 372, 370, 3, 2, 2, 2, - 373, 365, 3, 2, 2, 2, 374, 377, 3, 2, 2, 2, 375, 373, 3, 2, 2, 2, 375, - 376, 3, 2, 2, 2, 376, 379, 3, 2, 2, 2, 377, 375, 3, 2, 2, 2, 378, 337, - 3, 2, 2, 2, 378, 350, 3, 2, 2, 2, 379, 73, 3, 2, 2, 2, 380, 381, 5, 52, - 27, 2, 381, 75, 3, 2, 2, 2, 382, 383, 7, 12, 2, 2, 383, 384, 5, 86, 44, - 2, 384, 385, 7, 13, 2, 2, 385, 77, 3, 2, 2, 2, 386, 387, 7, 60, 2, 2, 387, - 79, 3, 2, 2, 2, 388, 393, 5, 86, 44, 2, 389, 390, 7, 9, 2, 2, 390, 392, - 5, 86, 44, 2, 391, 389, 3, 2, 2, 2, 392, 395, 3, 2, 2, 2, 393, 391, 3, - 2, 2, 2, 393, 394, 3, 2, 2, 2, 394, 81, 3, 2, 2, 2, 395, 393, 3, 2, 2, - 2, 396, 397, 7, 60, 2, 2, 397, 398, 5, 84, 43, 2, 398, 83, 3, 2, 2, 2, - 399, 408, 7, 14, 2, 2, 400, 405, 5, 86, 44, 2, 401, 402, 7, 9, 2, 2, 402, - 404, 5, 86, 44, 2, 403, 401, 3, 2, 2, 2, 404, 407, 3, 2, 2, 2, 405, 403, - 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 409, 3, 2, 2, 2, 407, 405, 3, 2, - 2, 2, 408, 400, 3, 2, 2, 2, 408, 409, 3, 2, 2, 2, 409, 410, 3, 2, 2, 2, - 410, 411, 7, 15, 2, 2, 411, 85, 3, 2, 2, 2, 412, 413, 8, 44, 1, 2, 413, - 438, 5, 82, 42, 2, 414, 415, 7, 14, 2, 2, 415, 416, 5, 80, 41, 2, 416, - 417, 7, 15, 2, 2, 417, 438, 3, 2, 2, 2, 418, 419, 7, 27, 2, 2, 419, 438, - 5, 86, 44, 17, 420, 421, 7, 26, 2, 2, 421, 438, 5, 86, 44, 16, 422, 423, - 7, 24, 2, 2, 423, 438, 5, 86, 44, 15, 424, 425, 7, 25, 2, 2, 425, 438, - 5, 86, 44, 14, 426, 427, 7, 58, 2, 2, 427, 438, 5, 86, 44, 13, 428, 438, - 5, 60, 31, 2, 429, 438, 5, 62, 32, 2, 430, 438, 5, 64, 33, 2, 431, 438, - 5, 58, 30, 2, 432, 438, 5, 54, 28, 2, 433, 438, 5, 56, 29, 2, 434, 438, - 5, 52, 27, 2, 435, 438, 5, 72, 37, 2, 436, 438, 5, 66, 34, 2, 437, 412, - 3, 2, 2, 2, 437, 414, 3, 2, 2, 2, 437, 418, 3, 2, 2, 2, 437, 420, 3, 2, - 2, 2, 437, 422, 3, 2, 2, 2, 437, 424, 3, 2, 2, 2, 437, 426, 3, 2, 2, 2, - 437, 428, 3, 2, 2, 2, 437, 429, 3, 2, 2, 2, 437, 430, 3, 2, 2, 2, 437, - 431, 3, 2, 2, 2, 437, 432, 3, 2, 2, 2, 437, 433, 3, 2, 2, 2, 437, 434, - 3, 2, 2, 2, 437, 435, 3, 2, 2, 2, 437, 436, 3, 2, 2, 2, 438, 464, 3, 2, - 2, 2, 439, 440, 12, 24, 2, 2, 440, 441, 5, 92, 47, 2, 441, 442, 5, 86, - 44, 25, 442, 463, 3, 2, 2, 2, 443, 444, 12, 23, 2, 2, 444, 445, 5, 94, - 48, 2, 445, 446, 5, 86, 44, 24, 446, 463, 3, 2, 2, 2, 447, 448, 12, 22, - 2, 2, 448, 449, 5, 96, 49, 2, 449, 450, 5, 86, 44, 23, 450, 463, 3, 2, - 2, 2, 451, 452, 12, 12, 2, 2, 452, 454, 7, 35, 2, 2, 453, 455, 5, 86, 44, - 2, 454, 453, 3, 2, 2, 2, 454, 455, 3, 2, 2, 2, 455, 456, 3, 2, 2, 2, 456, - 457, 7, 7, 2, 2, 457, 463, 5, 86, 44, 13, 458, 459, 12, 19, 2, 2, 459, - 463, 7, 27, 2, 2, 460, 461, 12, 18, 2, 2, 461, 463, 7, 26, 2, 2, 462, 439, - 3, 2, 2, 2, 462, 443, 3, 2, 2, 2, 462, 447, 3, 2, 2, 2, 462, 451, 3, 2, - 2, 2, 462, 458, 3, 2, 2, 2, 462, 460, 3, 2, 2, 2, 463, 466, 3, 2, 2, 2, - 464, 462, 3, 2, 2, 2, 464, 465, 3, 2, 2, 2, 465, 87, 3, 2, 2, 2, 466, 464, - 3, 2, 2, 2, 467, 468, 5, 90, 46, 2, 468, 89, 3, 2, 2, 2, 469, 470, 9, 3, - 2, 2, 470, 91, 3, 2, 2, 2, 471, 472, 9, 4, 2, 2, 472, 93, 3, 2, 2, 2, 473, - 474, 9, 5, 2, 2, 474, 95, 3, 2, 2, 2, 475, 476, 9, 6, 2, 2, 476, 97, 3, - 2, 2, 2, 477, 478, 9, 7, 2, 2, 478, 99, 3, 2, 2, 2, 41, 105, 112, 116, - 120, 125, 131, 137, 144, 150, 164, 170, 179, 187, 192, 243, 261, 265, 278, - 284, 294, 297, 300, 318, 323, 335, 343, 348, 357, 362, 370, 375, 378, 393, - 405, 408, 437, 454, 462, 464, + 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, + 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 243, 10, 16, 3, + 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 22, + 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 5, 24, 261, 10, 24, 3, 25, 3, 25, 5, + 25, 265, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, + 3, 26, 3, 26, 3, 26, 5, 26, 278, 10, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, + 28, 3, 28, 3, 29, 3, 29, 5, 29, 288, 10, 29, 3, 29, 3, 29, 3, 30, 3, 30, + 3, 30, 3, 30, 7, 30, 296, 10, 30, 12, 30, 14, 30, 299, 11, 30, 5, 30, 301, + 10, 30, 3, 30, 5, 30, 304, 10, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, + 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 6, 36, 320, + 10, 36, 13, 36, 14, 36, 321, 3, 36, 7, 36, 325, 10, 36, 12, 36, 14, 36, + 328, 11, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, + 37, 5, 37, 339, 10, 37, 3, 38, 3, 38, 3, 38, 3, 38, 7, 38, 345, 10, 38, + 12, 38, 14, 38, 348, 11, 38, 6, 38, 350, 10, 38, 13, 38, 14, 38, 351, 3, + 38, 3, 38, 3, 38, 3, 38, 3, 38, 7, 38, 359, 10, 38, 12, 38, 14, 38, 362, + 11, 38, 7, 38, 364, 10, 38, 12, 38, 14, 38, 367, 11, 38, 3, 38, 3, 38, + 3, 38, 7, 38, 372, 10, 38, 12, 38, 14, 38, 375, 11, 38, 7, 38, 377, 10, + 38, 12, 38, 14, 38, 380, 11, 38, 5, 38, 382, 10, 38, 3, 39, 3, 39, 3, 40, + 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 7, 42, 395, 10, + 42, 12, 42, 14, 42, 398, 11, 42, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, + 44, 3, 44, 7, 44, 407, 10, 44, 12, 44, 14, 44, 410, 11, 44, 5, 44, 412, + 10, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, + 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, + 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 442, + 10, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, + 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 459, 10, 45, 3, 45, 3, + 45, 3, 45, 3, 45, 3, 45, 3, 45, 7, 45, 467, 10, 45, 12, 45, 14, 45, 470, + 11, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, + 2, 3, 88, 50, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, + 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, + 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 2, 7, 3, 2, 46, + 47, 3, 2, 17, 22, 3, 2, 30, 31, 4, 2, 23, 24, 27, 29, 4, 2, 23, 24, 56, + 57, 2, 501, 2, 98, 3, 2, 2, 2, 4, 103, 3, 2, 2, 2, 6, 110, 3, 2, 2, 2, + 8, 114, 3, 2, 2, 2, 10, 129, 3, 2, 2, 2, 12, 131, 3, 2, 2, 2, 14, 153, + 3, 2, 2, 2, 16, 155, 3, 2, 2, 2, 18, 163, 3, 2, 2, 2, 20, 169, 3, 2, 2, + 2, 22, 171, 3, 2, 2, 2, 24, 174, 3, 2, 2, 2, 26, 180, 3, 2, 2, 2, 28, 189, + 3, 2, 2, 2, 30, 242, 3, 2, 2, 2, 32, 244, 3, 2, 2, 2, 34, 246, 3, 2, 2, + 2, 36, 248, 3, 2, 2, 2, 38, 250, 3, 2, 2, 2, 40, 252, 3, 2, 2, 2, 42, 254, + 3, 2, 2, 2, 44, 256, 3, 2, 2, 2, 46, 260, 3, 2, 2, 2, 48, 264, 3, 2, 2, + 2, 50, 277, 3, 2, 2, 2, 52, 279, 3, 2, 2, 2, 54, 281, 3, 2, 2, 2, 56, 285, + 3, 2, 2, 2, 58, 291, 3, 2, 2, 2, 60, 307, 3, 2, 2, 2, 62, 309, 3, 2, 2, + 2, 64, 311, 3, 2, 2, 2, 66, 313, 3, 2, 2, 2, 68, 315, 3, 2, 2, 2, 70, 317, + 3, 2, 2, 2, 72, 338, 3, 2, 2, 2, 74, 381, 3, 2, 2, 2, 76, 383, 3, 2, 2, + 2, 78, 385, 3, 2, 2, 2, 80, 389, 3, 2, 2, 2, 82, 391, 3, 2, 2, 2, 84, 399, + 3, 2, 2, 2, 86, 402, 3, 2, 2, 2, 88, 441, 3, 2, 2, 2, 90, 471, 3, 2, 2, + 2, 92, 473, 3, 2, 2, 2, 94, 475, 3, 2, 2, 2, 96, 477, 3, 2, 2, 2, 98, 99, + 5, 4, 3, 2, 99, 3, 3, 2, 2, 2, 100, 102, 5, 6, 4, 2, 101, 100, 3, 2, 2, + 2, 102, 105, 3, 2, 2, 2, 103, 101, 3, 2, 2, 2, 103, 104, 3, 2, 2, 2, 104, + 106, 3, 2, 2, 2, 105, 103, 3, 2, 2, 2, 106, 107, 5, 8, 5, 2, 107, 5, 3, + 2, 2, 2, 108, 111, 5, 84, 43, 2, 109, 111, 5, 50, 26, 2, 110, 108, 3, 2, + 2, 2, 110, 109, 3, 2, 2, 2, 111, 7, 3, 2, 2, 2, 112, 115, 5, 10, 6, 2, + 113, 115, 5, 12, 7, 2, 114, 112, 3, 2, 2, 2, 114, 113, 3, 2, 2, 2, 115, + 9, 3, 2, 2, 2, 116, 118, 7, 38, 2, 2, 117, 119, 7, 39, 2, 2, 118, 117, + 3, 2, 2, 2, 118, 119, 3, 2, 2, 2, 119, 120, 3, 2, 2, 2, 120, 130, 5, 88, + 45, 2, 121, 123, 7, 38, 2, 2, 122, 124, 7, 39, 2, 2, 123, 122, 3, 2, 2, + 2, 123, 124, 3, 2, 2, 2, 124, 125, 3, 2, 2, 2, 125, 126, 7, 13, 2, 2, 126, + 127, 5, 12, 7, 2, 127, 128, 7, 14, 2, 2, 128, 130, 3, 2, 2, 2, 129, 116, + 3, 2, 2, 2, 129, 121, 3, 2, 2, 2, 130, 11, 3, 2, 2, 2, 131, 132, 7, 37, + 2, 2, 132, 135, 5, 14, 8, 2, 133, 134, 7, 10, 2, 2, 134, 136, 5, 16, 9, + 2, 135, 133, 3, 2, 2, 2, 135, 136, 3, 2, 2, 2, 136, 137, 3, 2, 2, 2, 137, + 138, 7, 58, 2, 2, 138, 142, 5, 18, 10, 2, 139, 141, 5, 20, 11, 2, 140, + 139, 3, 2, 2, 2, 141, 144, 3, 2, 2, 2, 142, 140, 3, 2, 2, 2, 142, 143, + 3, 2, 2, 2, 143, 148, 3, 2, 2, 2, 144, 142, 3, 2, 2, 2, 145, 147, 5, 46, + 24, 2, 146, 145, 3, 2, 2, 2, 147, 150, 3, 2, 2, 2, 148, 146, 3, 2, 2, 2, + 148, 149, 3, 2, 2, 2, 149, 151, 3, 2, 2, 2, 150, 148, 3, 2, 2, 2, 151, + 152, 5, 48, 25, 2, 152, 13, 3, 2, 2, 2, 153, 154, 7, 59, 2, 2, 154, 15, + 3, 2, 2, 2, 155, 156, 7, 59, 2, 2, 156, 17, 3, 2, 2, 2, 157, 164, 5, 84, + 43, 2, 158, 164, 5, 56, 29, 2, 159, 164, 5, 58, 30, 2, 160, 164, 5, 52, + 27, 2, 161, 164, 5, 74, 38, 2, 162, 164, 5, 54, 28, 2, 163, 157, 3, 2, + 2, 2, 163, 158, 3, 2, 2, 2, 163, 159, 3, 2, 2, 2, 163, 160, 3, 2, 2, 2, + 163, 161, 3, 2, 2, 2, 163, 162, 3, 2, 2, 2, 164, 19, 3, 2, 2, 2, 165, 170, + 5, 24, 13, 2, 166, 170, 5, 26, 14, 2, 167, 170, 5, 22, 12, 2, 168, 170, + 5, 30, 16, 2, 169, 165, 3, 2, 2, 2, 169, 166, 3, 2, 2, 2, 169, 167, 3, + 2, 2, 2, 169, 168, 3, 2, 2, 2, 170, 21, 3, 2, 2, 2, 171, 172, 7, 40, 2, + 2, 172, 173, 5, 88, 45, 2, 173, 23, 3, 2, 2, 2, 174, 175, 7, 42, 2, 2, + 175, 178, 7, 61, 2, 2, 176, 177, 7, 10, 2, 2, 177, 179, 7, 61, 2, 2, 178, + 176, 3, 2, 2, 2, 178, 179, 3, 2, 2, 2, 179, 25, 3, 2, 2, 2, 180, 181, 7, + 41, 2, 2, 181, 186, 5, 28, 15, 2, 182, 183, 7, 10, 2, 2, 183, 185, 5, 28, + 15, 2, 184, 182, 3, 2, 2, 2, 185, 188, 3, 2, 2, 2, 186, 184, 3, 2, 2, 2, + 186, 187, 3, 2, 2, 2, 187, 27, 3, 2, 2, 2, 188, 186, 3, 2, 2, 2, 189, 191, + 5, 88, 45, 2, 190, 192, 7, 45, 2, 2, 191, 190, 3, 2, 2, 2, 191, 192, 3, + 2, 2, 2, 192, 29, 3, 2, 2, 2, 193, 194, 7, 44, 2, 2, 194, 195, 5, 32, 17, + 2, 195, 196, 7, 33, 2, 2, 196, 197, 5, 88, 45, 2, 197, 243, 3, 2, 2, 2, + 198, 199, 7, 44, 2, 2, 199, 200, 5, 32, 17, 2, 200, 201, 7, 33, 2, 2, 201, + 202, 5, 88, 45, 2, 202, 203, 7, 49, 2, 2, 203, 204, 5, 34, 18, 2, 204, + 243, 3, 2, 2, 2, 205, 206, 7, 44, 2, 2, 206, 207, 5, 32, 17, 2, 207, 208, + 7, 33, 2, 2, 208, 209, 5, 88, 45, 2, 209, 210, 7, 49, 2, 2, 210, 211, 5, + 34, 18, 2, 211, 212, 7, 50, 2, 2, 212, 213, 5, 36, 19, 2, 213, 243, 3, + 2, 2, 2, 214, 215, 7, 44, 2, 2, 215, 216, 5, 32, 17, 2, 216, 217, 7, 33, + 2, 2, 217, 218, 5, 88, 45, 2, 218, 219, 7, 51, 2, 2, 219, 220, 7, 52, 2, + 2, 220, 221, 5, 38, 20, 2, 221, 243, 3, 2, 2, 2, 222, 223, 7, 44, 2, 2, + 223, 224, 5, 32, 17, 2, 224, 225, 7, 33, 2, 2, 225, 226, 5, 88, 45, 2, + 226, 227, 7, 55, 2, 2, 227, 228, 5, 40, 21, 2, 228, 229, 7, 33, 2, 2, 229, + 230, 5, 42, 22, 2, 230, 243, 3, 2, 2, 2, 231, 232, 7, 44, 2, 2, 232, 233, + 7, 55, 2, 2, 233, 234, 5, 40, 21, 2, 234, 235, 7, 33, 2, 2, 235, 236, 5, + 42, 22, 2, 236, 243, 3, 2, 2, 2, 237, 238, 7, 44, 2, 2, 238, 239, 7, 51, + 2, 2, 239, 240, 7, 52, 2, 2, 240, 241, 7, 49, 2, 2, 241, 243, 5, 38, 20, + 2, 242, 193, 3, 2, 2, 2, 242, 198, 3, 2, 2, 2, 242, 205, 3, 2, 2, 2, 242, + 214, 3, 2, 2, 2, 242, 222, 3, 2, 2, 2, 242, 231, 3, 2, 2, 2, 242, 237, + 3, 2, 2, 2, 243, 31, 3, 2, 2, 2, 244, 245, 7, 59, 2, 2, 245, 33, 3, 2, + 2, 2, 246, 247, 7, 59, 2, 2, 247, 35, 3, 2, 2, 2, 248, 249, 7, 59, 2, 2, + 249, 37, 3, 2, 2, 2, 250, 251, 7, 59, 2, 2, 251, 39, 3, 2, 2, 2, 252, 253, + 7, 59, 2, 2, 253, 41, 3, 2, 2, 2, 254, 255, 5, 88, 45, 2, 255, 43, 3, 2, + 2, 2, 256, 257, 3, 2, 2, 2, 257, 45, 3, 2, 2, 2, 258, 261, 5, 50, 26, 2, + 259, 261, 5, 84, 43, 2, 260, 258, 3, 2, 2, 2, 260, 259, 3, 2, 2, 2, 261, + 47, 3, 2, 2, 2, 262, 265, 5, 10, 6, 2, 263, 265, 5, 12, 7, 2, 264, 262, + 3, 2, 2, 2, 264, 263, 3, 2, 2, 2, 265, 49, 3, 2, 2, 2, 266, 267, 7, 43, + 2, 2, 267, 268, 7, 59, 2, 2, 268, 269, 7, 33, 2, 2, 269, 278, 5, 88, 45, + 2, 270, 271, 7, 43, 2, 2, 271, 272, 7, 59, 2, 2, 272, 273, 7, 33, 2, 2, + 273, 274, 7, 13, 2, 2, 274, 275, 5, 12, 7, 2, 275, 276, 7, 14, 2, 2, 276, + 278, 3, 2, 2, 2, 277, 266, 3, 2, 2, 2, 277, 270, 3, 2, 2, 2, 278, 51, 3, + 2, 2, 2, 279, 280, 7, 59, 2, 2, 280, 53, 3, 2, 2, 2, 281, 282, 5, 64, 33, + 2, 282, 283, 7, 32, 2, 2, 283, 284, 5, 64, 33, 2, 284, 55, 3, 2, 2, 2, + 285, 287, 7, 11, 2, 2, 286, 288, 5, 70, 36, 2, 287, 286, 3, 2, 2, 2, 287, + 288, 3, 2, 2, 2, 288, 289, 3, 2, 2, 2, 289, 290, 7, 12, 2, 2, 290, 57, + 3, 2, 2, 2, 291, 300, 7, 15, 2, 2, 292, 297, 5, 72, 37, 2, 293, 294, 7, + 10, 2, 2, 294, 296, 5, 72, 37, 2, 295, 293, 3, 2, 2, 2, 296, 299, 3, 2, + 2, 2, 297, 295, 3, 2, 2, 2, 297, 298, 3, 2, 2, 2, 298, 301, 3, 2, 2, 2, + 299, 297, 3, 2, 2, 2, 300, 292, 3, 2, 2, 2, 300, 301, 3, 2, 2, 2, 301, + 303, 3, 2, 2, 2, 302, 304, 7, 10, 2, 2, 303, 302, 3, 2, 2, 2, 303, 304, + 3, 2, 2, 2, 304, 305, 3, 2, 2, 2, 305, 306, 7, 16, 2, 2, 306, 59, 3, 2, + 2, 2, 307, 308, 7, 48, 2, 2, 308, 61, 3, 2, 2, 2, 309, 310, 7, 60, 2, 2, + 310, 63, 3, 2, 2, 2, 311, 312, 7, 61, 2, 2, 312, 65, 3, 2, 2, 2, 313, 314, + 7, 62, 2, 2, 314, 67, 3, 2, 2, 2, 315, 316, 9, 2, 2, 2, 316, 69, 3, 2, + 2, 2, 317, 326, 5, 88, 45, 2, 318, 320, 7, 10, 2, 2, 319, 318, 3, 2, 2, + 2, 320, 321, 3, 2, 2, 2, 321, 319, 3, 2, 2, 2, 321, 322, 3, 2, 2, 2, 322, + 323, 3, 2, 2, 2, 323, 325, 5, 88, 45, 2, 324, 319, 3, 2, 2, 2, 325, 328, + 3, 2, 2, 2, 326, 324, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 71, 3, 2, + 2, 2, 328, 326, 3, 2, 2, 2, 329, 330, 5, 80, 41, 2, 330, 331, 7, 7, 2, + 2, 331, 332, 5, 88, 45, 2, 332, 339, 3, 2, 2, 2, 333, 334, 5, 78, 40, 2, + 334, 335, 7, 7, 2, 2, 335, 336, 5, 88, 45, 2, 336, 339, 3, 2, 2, 2, 337, + 339, 5, 76, 39, 2, 338, 329, 3, 2, 2, 2, 338, 333, 3, 2, 2, 2, 338, 337, + 3, 2, 2, 2, 339, 73, 3, 2, 2, 2, 340, 349, 7, 59, 2, 2, 341, 342, 7, 9, + 2, 2, 342, 346, 5, 80, 41, 2, 343, 345, 5, 78, 40, 2, 344, 343, 3, 2, 2, + 2, 345, 348, 3, 2, 2, 2, 346, 344, 3, 2, 2, 2, 346, 347, 3, 2, 2, 2, 347, + 350, 3, 2, 2, 2, 348, 346, 3, 2, 2, 2, 349, 341, 3, 2, 2, 2, 350, 351, + 3, 2, 2, 2, 351, 349, 3, 2, 2, 2, 351, 352, 3, 2, 2, 2, 352, 382, 3, 2, + 2, 2, 353, 354, 7, 59, 2, 2, 354, 365, 5, 78, 40, 2, 355, 356, 7, 9, 2, + 2, 356, 360, 5, 80, 41, 2, 357, 359, 5, 78, 40, 2, 358, 357, 3, 2, 2, 2, + 359, 362, 3, 2, 2, 2, 360, 358, 3, 2, 2, 2, 360, 361, 3, 2, 2, 2, 361, + 364, 3, 2, 2, 2, 362, 360, 3, 2, 2, 2, 363, 355, 3, 2, 2, 2, 364, 367, + 3, 2, 2, 2, 365, 363, 3, 2, 2, 2, 365, 366, 3, 2, 2, 2, 366, 378, 3, 2, + 2, 2, 367, 365, 3, 2, 2, 2, 368, 373, 5, 78, 40, 2, 369, 370, 7, 9, 2, + 2, 370, 372, 5, 80, 41, 2, 371, 369, 3, 2, 2, 2, 372, 375, 3, 2, 2, 2, + 373, 371, 3, 2, 2, 2, 373, 374, 3, 2, 2, 2, 374, 377, 3, 2, 2, 2, 375, + 373, 3, 2, 2, 2, 376, 368, 3, 2, 2, 2, 377, 380, 3, 2, 2, 2, 378, 376, + 3, 2, 2, 2, 378, 379, 3, 2, 2, 2, 379, 382, 3, 2, 2, 2, 380, 378, 3, 2, + 2, 2, 381, 340, 3, 2, 2, 2, 381, 353, 3, 2, 2, 2, 382, 75, 3, 2, 2, 2, + 383, 384, 5, 52, 27, 2, 384, 77, 3, 2, 2, 2, 385, 386, 7, 11, 2, 2, 386, + 387, 5, 88, 45, 2, 387, 388, 7, 12, 2, 2, 388, 79, 3, 2, 2, 2, 389, 390, + 7, 59, 2, 2, 390, 81, 3, 2, 2, 2, 391, 396, 5, 88, 45, 2, 392, 393, 7, + 10, 2, 2, 393, 395, 5, 88, 45, 2, 394, 392, 3, 2, 2, 2, 395, 398, 3, 2, + 2, 2, 396, 394, 3, 2, 2, 2, 396, 397, 3, 2, 2, 2, 397, 83, 3, 2, 2, 2, + 398, 396, 3, 2, 2, 2, 399, 400, 7, 59, 2, 2, 400, 401, 5, 86, 44, 2, 401, + 85, 3, 2, 2, 2, 402, 411, 7, 13, 2, 2, 403, 408, 5, 88, 45, 2, 404, 405, + 7, 10, 2, 2, 405, 407, 5, 88, 45, 2, 406, 404, 3, 2, 2, 2, 407, 410, 3, + 2, 2, 2, 408, 406, 3, 2, 2, 2, 408, 409, 3, 2, 2, 2, 409, 412, 3, 2, 2, + 2, 410, 408, 3, 2, 2, 2, 411, 403, 3, 2, 2, 2, 411, 412, 3, 2, 2, 2, 412, + 413, 3, 2, 2, 2, 413, 414, 7, 14, 2, 2, 414, 87, 3, 2, 2, 2, 415, 416, + 8, 45, 1, 2, 416, 442, 5, 84, 43, 2, 417, 418, 7, 13, 2, 2, 418, 419, 5, + 82, 42, 2, 419, 420, 7, 14, 2, 2, 420, 442, 3, 2, 2, 2, 421, 422, 7, 26, + 2, 2, 422, 442, 5, 88, 45, 18, 423, 424, 7, 25, 2, 2, 424, 442, 5, 88, + 45, 17, 425, 426, 7, 23, 2, 2, 426, 442, 5, 88, 45, 16, 427, 428, 7, 24, + 2, 2, 428, 442, 5, 88, 45, 15, 429, 430, 7, 57, 2, 2, 430, 442, 5, 88, + 45, 14, 431, 442, 5, 54, 28, 2, 432, 442, 5, 62, 32, 2, 433, 442, 5, 64, + 33, 2, 434, 442, 5, 66, 34, 2, 435, 442, 5, 60, 31, 2, 436, 442, 5, 56, + 29, 2, 437, 442, 5, 58, 30, 2, 438, 442, 5, 52, 27, 2, 439, 442, 5, 74, + 38, 2, 440, 442, 5, 68, 35, 2, 441, 415, 3, 2, 2, 2, 441, 417, 3, 2, 2, + 2, 441, 421, 3, 2, 2, 2, 441, 423, 3, 2, 2, 2, 441, 425, 3, 2, 2, 2, 441, + 427, 3, 2, 2, 2, 441, 429, 3, 2, 2, 2, 441, 431, 3, 2, 2, 2, 441, 432, + 3, 2, 2, 2, 441, 433, 3, 2, 2, 2, 441, 434, 3, 2, 2, 2, 441, 435, 3, 2, + 2, 2, 441, 436, 3, 2, 2, 2, 441, 437, 3, 2, 2, 2, 441, 438, 3, 2, 2, 2, + 441, 439, 3, 2, 2, 2, 441, 440, 3, 2, 2, 2, 442, 468, 3, 2, 2, 2, 443, + 444, 12, 25, 2, 2, 444, 445, 5, 90, 46, 2, 445, 446, 5, 88, 45, 26, 446, + 467, 3, 2, 2, 2, 447, 448, 12, 24, 2, 2, 448, 449, 5, 92, 47, 2, 449, 450, + 5, 88, 45, 25, 450, 467, 3, 2, 2, 2, 451, 452, 12, 23, 2, 2, 452, 453, + 5, 94, 48, 2, 453, 454, 5, 88, 45, 24, 454, 467, 3, 2, 2, 2, 455, 456, + 12, 13, 2, 2, 456, 458, 7, 34, 2, 2, 457, 459, 5, 88, 45, 2, 458, 457, + 3, 2, 2, 2, 458, 459, 3, 2, 2, 2, 459, 460, 3, 2, 2, 2, 460, 461, 7, 7, + 2, 2, 461, 467, 5, 88, 45, 14, 462, 463, 12, 20, 2, 2, 463, 467, 7, 26, + 2, 2, 464, 465, 12, 19, 2, 2, 465, 467, 7, 25, 2, 2, 466, 443, 3, 2, 2, + 2, 466, 447, 3, 2, 2, 2, 466, 451, 3, 2, 2, 2, 466, 455, 3, 2, 2, 2, 466, + 462, 3, 2, 2, 2, 466, 464, 3, 2, 2, 2, 467, 470, 3, 2, 2, 2, 468, 466, + 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 89, 3, 2, 2, 2, 470, 468, 3, 2, + 2, 2, 471, 472, 9, 3, 2, 2, 472, 91, 3, 2, 2, 2, 473, 474, 9, 4, 2, 2, + 474, 93, 3, 2, 2, 2, 475, 476, 9, 5, 2, 2, 476, 95, 3, 2, 2, 2, 477, 478, + 9, 6, 2, 2, 478, 97, 3, 2, 2, 2, 41, 103, 110, 114, 118, 123, 129, 135, + 142, 148, 163, 169, 178, 186, 191, 242, 260, 264, 277, 287, 297, 300, 303, + 321, 326, 338, 346, 351, 360, 365, 373, 378, 381, 396, 408, 411, 441, 458, + 466, 468, } var deserializer = antlr.NewATNDeserializer(nil) var deserializedATN = deserializer.DeserializeFromUInt16(parserATN) var literalNames = []string{ - "", "", "", "", "", "':'", "';'", "','", "'.'", "'...'", "'['", "']'", - "'('", "')'", "'{'", "'}'", "'>'", "'<'", "'=='", "'>='", "'<='", "'!='", - "'+'", "'-'", "'--'", "'++'", "'*'", "'/'", "'%'", "", "", "'='", "'..'", - "'?'", "'!~'", "'=~'", "'FOR'", "'RETURN'", "'DISTINCT'", "'FILTER'", "'SORT'", - "'LIMIT'", "'LET'", "'COLLECT'", "", "'NONE'", "'NULL'", "", "'INTO'", - "'KEEP'", "'WITH'", "'COUNT'", "'ALL'", "'ANY'", "'AGGREGATE'", "'LIKE'", - "", "'IN'", + "", "", "", "", "", "':'", "';'", "'.'", "','", "'['", "']'", "'('", "')'", + "'{'", "'}'", "'>'", "'<'", "'=='", "'>='", "'<='", "'!='", "'+'", "'-'", + "'--'", "'++'", "'*'", "'/'", "'%'", "", "", "", "'='", "'?'", "'!~'", + "'=~'", "'FOR'", "'RETURN'", "'DISTINCT'", "'FILTER'", "'SORT'", "'LIMIT'", + "'LET'", "'COLLECT'", "", "'NONE'", "'NULL'", "", "'INTO'", "'KEEP'", "'WITH'", + "'COUNT'", "'ALL'", "'ANY'", "'AGGREGATE'", "'LIKE'", "", "'IN'", } var symbolicNames = []string{ "", "MultiLineComment", "SingleLineComment", "WhiteSpaces", "LineTerminator", - "Colon", "SemiColon", "Comma", "Dot", "Ellipsis", "OpenBracket", "CloseBracket", - "OpenParen", "CloseParen", "OpenBrace", "CloseBrace", "Gt", "Lt", "Eq", - "Gte", "Lte", "Neq", "Plus", "Minus", "MinusMinus", "PlusPlus", "Multi", - "Div", "Mod", "And", "Or", "Assign", "Range", "QuestionMark", "RegexNotMatch", - "RegexMatch", "For", "Return", "Distinct", "Filter", "Sort", "Limit", "Let", - "Collect", "SortDirection", "None", "Null", "BooleanLiteral", "Into", "Keep", - "With", "Count", "All", "Any", "Aggregate", "Like", "Not", "In", "Identifier", + "Colon", "SemiColon", "Dot", "Comma", "OpenBracket", "CloseBracket", "OpenParen", + "CloseParen", "OpenBrace", "CloseBrace", "Gt", "Lt", "Eq", "Gte", "Lte", + "Neq", "Plus", "Minus", "MinusMinus", "PlusPlus", "Multi", "Div", "Mod", + "And", "Or", "Range", "Assign", "QuestionMark", "RegexNotMatch", "RegexMatch", + "For", "Return", "Distinct", "Filter", "Sort", "Limit", "Let", "Collect", + "SortDirection", "None", "Null", "BooleanLiteral", "Into", "Keep", "With", + "Count", "All", "Any", "Aggregate", "Like", "Not", "In", "Identifier", "StringLiteral", "IntegerLiteral", "FloatLiteral", } @@ -260,12 +260,11 @@ var ruleNames = []string{ "collectGroupVariable", "collectKeepVariable", "collectCountVariable", "collectAggregateVariable", "collectAggregateExpression", "collectOption", "forExpressionBody", "forExpressionReturn", "variableDeclaration", "variable", - "arrayLiteral", "objectLiteral", "booleanLiteral", "stringLiteral", "integerLiteral", - "floatLiteral", "noneLiteral", "arrayElementList", "propertyAssignment", + "rangeOperator", "arrayLiteral", "objectLiteral", "booleanLiteral", "stringLiteral", + "integerLiteral", "floatLiteral", "noneLiteral", "arrayElementList", "propertyAssignment", "memberExpression", "shorthandPropertyName", "computedPropertyName", "propertyName", "expressionSequence", "functionCallExpression", "arguments", "expression", - "reservedWord", "keyword", "equalityOperator", "logicalOperator", "mathOperator", - "unaryOperator", + "equalityOperator", "logicalOperator", "mathOperator", "unaryOperator", } var decisionToDFA = make([]*antlr.DFA, len(deserializedATN.DecisionToState)) @@ -302,61 +301,60 @@ const ( FqlParserLineTerminator = 4 FqlParserColon = 5 FqlParserSemiColon = 6 - FqlParserComma = 7 - FqlParserDot = 8 - FqlParserEllipsis = 9 - FqlParserOpenBracket = 10 - FqlParserCloseBracket = 11 - FqlParserOpenParen = 12 - FqlParserCloseParen = 13 - FqlParserOpenBrace = 14 - FqlParserCloseBrace = 15 - FqlParserGt = 16 - FqlParserLt = 17 - FqlParserEq = 18 - FqlParserGte = 19 - FqlParserLte = 20 - FqlParserNeq = 21 - FqlParserPlus = 22 - FqlParserMinus = 23 - FqlParserMinusMinus = 24 - FqlParserPlusPlus = 25 - FqlParserMulti = 26 - FqlParserDiv = 27 - FqlParserMod = 28 - FqlParserAnd = 29 - FqlParserOr = 30 + FqlParserDot = 7 + FqlParserComma = 8 + FqlParserOpenBracket = 9 + FqlParserCloseBracket = 10 + FqlParserOpenParen = 11 + FqlParserCloseParen = 12 + FqlParserOpenBrace = 13 + FqlParserCloseBrace = 14 + FqlParserGt = 15 + FqlParserLt = 16 + FqlParserEq = 17 + FqlParserGte = 18 + FqlParserLte = 19 + FqlParserNeq = 20 + FqlParserPlus = 21 + FqlParserMinus = 22 + FqlParserMinusMinus = 23 + FqlParserPlusPlus = 24 + FqlParserMulti = 25 + FqlParserDiv = 26 + FqlParserMod = 27 + FqlParserAnd = 28 + FqlParserOr = 29 + FqlParserRange = 30 FqlParserAssign = 31 - FqlParserRange = 32 - FqlParserQuestionMark = 33 - FqlParserRegexNotMatch = 34 - FqlParserRegexMatch = 35 - FqlParserFor = 36 - FqlParserReturn = 37 - FqlParserDistinct = 38 - FqlParserFilter = 39 - FqlParserSort = 40 - FqlParserLimit = 41 - FqlParserLet = 42 - FqlParserCollect = 43 - FqlParserSortDirection = 44 - FqlParserNone = 45 - FqlParserNull = 46 - FqlParserBooleanLiteral = 47 - FqlParserInto = 48 - FqlParserKeep = 49 - FqlParserWith = 50 - FqlParserCount = 51 - FqlParserAll = 52 - FqlParserAny = 53 - FqlParserAggregate = 54 - FqlParserLike = 55 - FqlParserNot = 56 - FqlParserIn = 57 - FqlParserIdentifier = 58 - FqlParserStringLiteral = 59 - FqlParserIntegerLiteral = 60 - FqlParserFloatLiteral = 61 + FqlParserQuestionMark = 32 + FqlParserRegexNotMatch = 33 + FqlParserRegexMatch = 34 + FqlParserFor = 35 + FqlParserReturn = 36 + FqlParserDistinct = 37 + FqlParserFilter = 38 + FqlParserSort = 39 + FqlParserLimit = 40 + FqlParserLet = 41 + FqlParserCollect = 42 + FqlParserSortDirection = 43 + FqlParserNone = 44 + FqlParserNull = 45 + FqlParserBooleanLiteral = 46 + FqlParserInto = 47 + FqlParserKeep = 48 + FqlParserWith = 49 + FqlParserCount = 50 + FqlParserAll = 51 + FqlParserAny = 52 + FqlParserAggregate = 53 + FqlParserLike = 54 + FqlParserNot = 55 + FqlParserIn = 56 + FqlParserIdentifier = 57 + FqlParserStringLiteral = 58 + FqlParserIntegerLiteral = 59 + FqlParserFloatLiteral = 60 ) // FqlParser rules. @@ -387,29 +385,28 @@ const ( FqlParserRULE_forExpressionReturn = 23 FqlParserRULE_variableDeclaration = 24 FqlParserRULE_variable = 25 - FqlParserRULE_arrayLiteral = 26 - FqlParserRULE_objectLiteral = 27 - FqlParserRULE_booleanLiteral = 28 - FqlParserRULE_stringLiteral = 29 - FqlParserRULE_integerLiteral = 30 - FqlParserRULE_floatLiteral = 31 - FqlParserRULE_noneLiteral = 32 - FqlParserRULE_arrayElementList = 33 - FqlParserRULE_propertyAssignment = 34 - FqlParserRULE_memberExpression = 35 - FqlParserRULE_shorthandPropertyName = 36 - FqlParserRULE_computedPropertyName = 37 - FqlParserRULE_propertyName = 38 - FqlParserRULE_expressionSequence = 39 - FqlParserRULE_functionCallExpression = 40 - FqlParserRULE_arguments = 41 - FqlParserRULE_expression = 42 - FqlParserRULE_reservedWord = 43 - FqlParserRULE_keyword = 44 - FqlParserRULE_equalityOperator = 45 - FqlParserRULE_logicalOperator = 46 - FqlParserRULE_mathOperator = 47 - FqlParserRULE_unaryOperator = 48 + FqlParserRULE_rangeOperator = 26 + FqlParserRULE_arrayLiteral = 27 + FqlParserRULE_objectLiteral = 28 + FqlParserRULE_booleanLiteral = 29 + FqlParserRULE_stringLiteral = 30 + FqlParserRULE_integerLiteral = 31 + FqlParserRULE_floatLiteral = 32 + FqlParserRULE_noneLiteral = 33 + FqlParserRULE_arrayElementList = 34 + FqlParserRULE_propertyAssignment = 35 + FqlParserRULE_memberExpression = 36 + FqlParserRULE_shorthandPropertyName = 37 + FqlParserRULE_computedPropertyName = 38 + FqlParserRULE_propertyName = 39 + FqlParserRULE_expressionSequence = 40 + FqlParserRULE_functionCallExpression = 41 + FqlParserRULE_arguments = 42 + FqlParserRULE_expression = 43 + FqlParserRULE_equalityOperator = 44 + FqlParserRULE_logicalOperator = 45 + FqlParserRULE_mathOperator = 46 + FqlParserRULE_unaryOperator = 47 ) // IProgramContext is an interface to support dynamic dispatch. @@ -512,7 +509,7 @@ func (p *FqlParser) Program() (localctx IProgramContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(98) + p.SetState(96) p.Body() } @@ -642,22 +639,22 @@ func (p *FqlParser) Body() (localctx IBodyContext) { }() p.EnterOuterAlt(localctx, 1) - p.SetState(103) + p.SetState(101) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) for _la == FqlParserLet || _la == FqlParserIdentifier { { - p.SetState(100) + p.SetState(98) p.BodyStatement() } - p.SetState(105) + p.SetState(103) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } { - p.SetState(106) + p.SetState(104) p.BodyExpression() } @@ -772,21 +769,21 @@ func (p *FqlParser) BodyStatement() (localctx IBodyStatementContext) { } }() - p.SetState(110) + p.SetState(108) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { case FqlParserIdentifier: p.EnterOuterAlt(localctx, 1) { - p.SetState(108) + p.SetState(106) p.FunctionCallExpression() } case FqlParserLet: p.EnterOuterAlt(localctx, 2) { - p.SetState(109) + p.SetState(107) p.VariableDeclaration() } @@ -905,21 +902,21 @@ func (p *FqlParser) BodyExpression() (localctx IBodyExpressionContext) { } }() - p.SetState(114) + p.SetState(112) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { case FqlParserReturn: p.EnterOuterAlt(localctx, 1) { - p.SetState(112) + p.SetState(110) p.ReturnExpression() } case FqlParserFor: p.EnterOuterAlt(localctx, 2) { - p.SetState(113) + p.SetState(111) p.ForExpression() } @@ -1055,58 +1052,58 @@ func (p *FqlParser) ReturnExpression() (localctx IReturnExpressionContext) { } }() - p.SetState(129) + p.SetState(127) p.GetErrorHandler().Sync(p) switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 5, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(116) + p.SetState(114) p.Match(FqlParserReturn) } - p.SetState(118) + p.SetState(116) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == FqlParserDistinct { { - p.SetState(117) + p.SetState(115) p.Match(FqlParserDistinct) } } { - p.SetState(120) + p.SetState(118) p.expression(0) } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(121) + p.SetState(119) p.Match(FqlParserReturn) } - p.SetState(123) + p.SetState(121) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == FqlParserDistinct { { - p.SetState(122) + p.SetState(120) p.Match(FqlParserDistinct) } } { - p.SetState(125) + p.SetState(123) p.Match(FqlParserOpenParen) } { - p.SetState(126) + p.SetState(124) p.ForExpression() } { - p.SetState(127) + p.SetState(125) p.Match(FqlParserCloseParen) } @@ -1304,66 +1301,66 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(131) + p.SetState(129) p.Match(FqlParserFor) } { - p.SetState(132) + p.SetState(130) p.ForExpressionValueVariable() } - p.SetState(135) + p.SetState(133) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) if _la == FqlParserComma { { - p.SetState(133) + p.SetState(131) p.Match(FqlParserComma) } { - p.SetState(134) + p.SetState(132) p.ForExpressionKeyVariable() } } { - p.SetState(137) + p.SetState(135) p.Match(FqlParserIn) } { - p.SetState(138) + p.SetState(136) p.ForExpressionSource() } - p.SetState(142) + p.SetState(140) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - for ((_la-39)&-(0x1f+1)) == 0 && ((1<