From aeb008c9220f3d5a4b39d554cd601d913c71b2eb Mon Sep 17 00:00:00 2001 From: Manan Gupta <35839558+GuptaManan100@users.noreply.github.com> Date: Mon, 12 Feb 2024 19:29:14 +0530 Subject: [PATCH] Feature: Adding support for Vindex Hints to allow for greater control over shard routing (#15172) Signed-off-by: Manan Gupta Signed-off-by: Andres Taylor Signed-off-by: Harshit Gangal Co-authored-by: Andres Taylor Co-authored-by: Harshit Gangal --- changelog/20.0/20.0.0/summary.md | 29 + changelog/20.0/README.md | 2 + changelog/README.md | 1 + go/mysql/sqlerror/sql_error.go | 1 + .../endtoend/vtgate/queries/misc/misc_test.go | 37 +- .../endtoend/vtgate/queries/misc/schema.sql | 26 +- .../endtoend/vtgate/queries/misc/vschema.json | 55 + go/vt/sqlparser/ast_format.go | 2 +- go/vt/sqlparser/ast_format_fast.go | 2 +- go/vt/sqlparser/ast_funcs.go | 16 +- go/vt/sqlparser/constants.go | 13 +- go/vt/sqlparser/parse_test.go | 14 + go/vt/sqlparser/sql.go | 7451 +++++++++-------- go/vt/sqlparser/sql.y | 34 +- go/vt/vterrors/code.go | 2 + go/vt/vterrors/state.go | 1 + go/vt/vtgate/planbuilder/operators/route.go | 17 +- .../planbuilder/operators/route_planning.go | 3 +- .../planbuilder/operators/sharded_routing.go | 35 +- .../planbuilder/testdata/from_cases.json | 78 + .../planbuilder/testdata/select_cases.json | 78 + go/vt/vtgate/semantics/analyzer_test.go | 101 +- go/vt/vtgate/semantics/check_invalid.go | 25 + go/vt/vtgate/semantics/check_invalid_test.go | 62 + go/vt/vtgate/semantics/early_rewriter.go | 74 +- go/vt/vtgate/semantics/errors.go | 24 + .../vtgate/semantics/info_schema_gen_test.go | 1 - go/vt/vtgate/semantics/real_table.go | 6 + go/vt/vtgate/semantics/table_collector.go | 48 +- 29 files changed, 4459 insertions(+), 3779 deletions(-) create mode 100644 changelog/20.0/20.0.0/summary.md create mode 100644 changelog/20.0/README.md create mode 100644 go/vt/vtgate/semantics/check_invalid_test.go diff --git a/changelog/20.0/20.0.0/summary.md b/changelog/20.0/20.0.0/summary.md new file mode 100644 index 00000000000..c947ea2a0aa --- /dev/null +++ b/changelog/20.0/20.0.0/summary.md @@ -0,0 +1,29 @@ +## Summary + +### Table of Contents + +- **[Major Changes](#major-changes)** + - **[Query Serving](#query-serving)** + - [Vindex Hints](#vindex-hints) +- **[Minor Changes](#minor-changes)** + + +## Major Changes + + +### Query Serving + +#### Vindex Hints + +Vitess now supports Vindex hints that provide a way for users to influence the shard routing of queries in Vitess by specifying, which vindexes should be considered or ignored by the query planner. This feature enhances the control over query execution, allowing for potentially more efficient data access patterns in sharded databases. + +Example: + ```sql + SELECT * FROM user USE VINDEX (hash_user_id, secondary_vindex) WHERE user_id = 123; + SELECT * FROM order IGNORE VINDEX (range_order_id) WHERE order_date = '2021-01-01'; + ``` + +For more information about Vindex hints and its usage, please consult the documentation. + +## Minor Changes + diff --git a/changelog/20.0/README.md b/changelog/20.0/README.md new file mode 100644 index 00000000000..4fb70ae78c1 --- /dev/null +++ b/changelog/20.0/README.md @@ -0,0 +1,2 @@ +## v20.0 +* **[20.0.0](20.0.0)** diff --git a/changelog/README.md b/changelog/README.md index 66ed9543e5d..3a55d986643 100644 --- a/changelog/README.md +++ b/changelog/README.md @@ -1,4 +1,5 @@ ## Releases +* [20.0](20.0) * [19.0](19.0) * [18.0](18.0) * [17.0](17.0) diff --git a/go/mysql/sqlerror/sql_error.go b/go/mysql/sqlerror/sql_error.go index 2796189dde2..3ffbc7f9c8c 100644 --- a/go/mysql/sqlerror/sql_error.go +++ b/go/mysql/sqlerror/sql_error.go @@ -217,6 +217,7 @@ var stateToMysqlCode = map[vterrors.State]mysqlCode{ vterrors.WrongValueCountOnRow: {num: ERWrongValueCountOnRow, state: SSWrongValueCountOnRow}, vterrors.WrongArguments: {num: ERWrongArguments, state: SSUnknownSQLState}, vterrors.UnknownStmtHandler: {num: ERUnknownStmtHandler, state: SSUnknownSQLState}, + vterrors.KeyDoesNotExist: {num: ERKeyDoesNotExist, state: SSClientError}, vterrors.UnknownTimeZone: {num: ERUnknownTimeZone, state: SSUnknownSQLState}, vterrors.RegexpStringNotTerminated: {num: ERRegexpStringNotTerminated, state: SSUnknownSQLState}, vterrors.RegexpBufferOverflow: {num: ERRegexpBufferOverflow, state: SSUnknownSQLState}, diff --git a/go/test/endtoend/vtgate/queries/misc/misc_test.go b/go/test/endtoend/vtgate/queries/misc/misc_test.go index eca46cfcc29..0b7671c753d 100644 --- a/go/test/endtoend/vtgate/queries/misc/misc_test.go +++ b/go/test/endtoend/vtgate/queries/misc/misc_test.go @@ -36,7 +36,7 @@ func start(t *testing.T) (utils.MySQLCompare, func()) { require.NoError(t, err) deleteAll := func() { - tables := []string{"t1", "uks.unsharded"} + tables := []string{"t1", "tbl", "unq_idx", "nonunq_idx", "uks.unsharded"} for _, table := range tables { _, _ = mcmp.ExecAndIgnore("delete from " + table) } @@ -137,6 +137,41 @@ func TestCast(t *testing.T) { mcmp.AssertMatches("select cast('3.2' as unsigned)", `[[UINT64(3)]]`) } +// TestVindexHints tests that vindex hints work as intended. +func TestVindexHints(t *testing.T) { + utils.SkipIfBinaryIsBelowVersion(t, 20, "vtgate") + mcmp, closer := start(t) + defer closer() + + mcmp.Exec("insert into tbl(id, unq_col, nonunq_col) values (1,0,10), (2,10,10), (3,4,20), (4,30,20), (5,40,10)") + mcmp.AssertMatches("select id, unq_col, nonunq_col from tbl where unq_col = 10 and id = 2 and nonunq_col in (10, 20)", "[[INT64(2) INT64(10) INT64(10)]]") + + // Verify that without any vindex hints, the query plan uses a hash vindex. + res, err := mcmp.VtConn.ExecuteFetch("vexplain plan select id, unq_col, nonunq_col from tbl where unq_col = 10 and id = 2 and nonunq_col in (10, 20)", 100, false) + require.NoError(t, err) + require.Contains(t, fmt.Sprintf("%v", res.Rows), "hash") + + // Now we make the query explicitly use the unique lookup vindex. + // We make sure the query still works. + res, err = mcmp.VtConn.ExecuteFetch("select id, unq_col, nonunq_col from tbl USE VINDEX (unq_vdx) where unq_col = 10 and id = 2 and nonunq_col in (10, 20)", 100, false) + require.NoError(t, err) + require.EqualValues(t, fmt.Sprintf("%v", res.Rows), "[[INT64(2) INT64(10) INT64(10)]]") + // Verify that we are using the unq_vdx, that we requested explicitly. + res, err = mcmp.VtConn.ExecuteFetch("vexplain plan select id, unq_col, nonunq_col from tbl USE VINDEX (unq_vdx) where unq_col = 10 and id = 2 and nonunq_col in (10, 20)", 100, false) + require.NoError(t, err) + require.Contains(t, fmt.Sprintf("%v", res.Rows), "unq_vdx") + + // Now we make the query explicitly refuse two of the three vindexes. + // We make sure the query still works. + res, err = mcmp.VtConn.ExecuteFetch("select id, unq_col, nonunq_col from tbl IGNORE VINDEX (hash, unq_vdx) where unq_col = 10 and id = 2 and nonunq_col in (10, 20)", 100, false) + require.NoError(t, err) + require.EqualValues(t, fmt.Sprintf("%v", res.Rows), "[[INT64(2) INT64(10) INT64(10)]]") + // Verify that we are using the nonunq_vdx, which is the only one left to be used. + res, err = mcmp.VtConn.ExecuteFetch("vexplain plan select id, unq_col, nonunq_col from tbl IGNORE VINDEX (hash, unq_vdx) where unq_col = 10 and id = 2 and nonunq_col in (10, 20)", 100, false) + require.NoError(t, err) + require.Contains(t, fmt.Sprintf("%v", res.Rows), "nonunq_vdx") +} + func TestOuterJoinWithPredicate(t *testing.T) { mcmp, closer := start(t) defer closer() diff --git a/go/test/endtoend/vtgate/queries/misc/schema.sql b/go/test/endtoend/vtgate/queries/misc/schema.sql index ceac0c07e6d..6fd57b9183d 100644 --- a/go/test/endtoend/vtgate/queries/misc/schema.sql +++ b/go/test/endtoend/vtgate/queries/misc/schema.sql @@ -2,4 +2,28 @@ create table if not exists t1( id1 bigint, id2 bigint, primary key(id1) -) Engine=InnoDB; \ No newline at end of file +) Engine=InnoDB; + +create table unq_idx +( + unq_col bigint, + keyspace_id varbinary(20), + primary key (unq_col) +) Engine = InnoDB; + +create table nonunq_idx +( + nonunq_col bigint, + id bigint, + keyspace_id varbinary(20), + primary key (nonunq_col, id) +) Engine = InnoDB; + +create table tbl +( + id bigint, + unq_col bigint, + nonunq_col bigint, + primary key (id), + unique (unq_col) +) Engine = InnoDB; diff --git a/go/test/endtoend/vtgate/queries/misc/vschema.json b/go/test/endtoend/vtgate/queries/misc/vschema.json index 60aa2bc9c07..f56b1fc1b36 100644 --- a/go/test/endtoend/vtgate/queries/misc/vschema.json +++ b/go/test/endtoend/vtgate/queries/misc/vschema.json @@ -3,6 +3,26 @@ "vindexes": { "hash": { "type": "hash" + }, + "unq_vdx": { + "type": "consistent_lookup_unique", + "params": { + "table": "unq_idx", + "from": "unq_col", + "to": "keyspace_id", + "ignore_nulls": "true" + }, + "owner": "tbl" + }, + "nonunq_vdx": { + "type": "consistent_lookup", + "params": { + "table": "nonunq_idx", + "from": "nonunq_col,id", + "to": "keyspace_id", + "ignore_nulls": "true" + }, + "owner": "tbl" } }, "tables": { @@ -13,6 +33,41 @@ "name": "hash" } ] + }, + "tbl": { + "column_vindexes": [ + { + "column": "id", + "name": "hash" + }, + { + "column": "unq_col", + "name": "unq_vdx" + }, + { + "columns": [ + "nonunq_col", + "id" + ], + "name": "nonunq_vdx" + } + ] + }, + "unq_idx": { + "column_vindexes": [ + { + "column": "unq_col", + "name": "hash" + } + ] + }, + "nonunq_idx": { + "column_vindexes": [ + { + "column": "nonunq_col", + "name": "hash" + } + ] } } } \ No newline at end of file diff --git a/go/vt/sqlparser/ast_format.go b/go/vt/sqlparser/ast_format.go index 9f5f54bfa3d..59ed4add5ee 100644 --- a/go/vt/sqlparser/ast_format.go +++ b/go/vt/sqlparser/ast_format.go @@ -1241,7 +1241,7 @@ func (node IndexHints) Format(buf *TrackedBuffer) { // Format formats the node. func (node *IndexHint) Format(buf *TrackedBuffer) { - buf.astPrintf(node, " %sindex ", node.Type.ToString()) + buf.astPrintf(node, " %s ", node.Type.ToString()) if node.ForType != NoForType { buf.astPrintf(node, "for %s ", node.ForType.ToString()) } diff --git a/go/vt/sqlparser/ast_format_fast.go b/go/vt/sqlparser/ast_format_fast.go index f6a5d6df570..bad1854d28e 100644 --- a/go/vt/sqlparser/ast_format_fast.go +++ b/go/vt/sqlparser/ast_format_fast.go @@ -1616,7 +1616,7 @@ func (node IndexHints) FormatFast(buf *TrackedBuffer) { func (node *IndexHint) FormatFast(buf *TrackedBuffer) { buf.WriteByte(' ') buf.WriteString(node.Type.ToString()) - buf.WriteString("index ") + buf.WriteByte(' ') if node.ForType != NoForType { buf.WriteString("for ") buf.WriteString(node.ForType.ToString()) diff --git a/go/vt/sqlparser/ast_funcs.go b/go/vt/sqlparser/ast_funcs.go index a23c6311d24..ecbfef2ff66 100644 --- a/go/vt/sqlparser/ast_funcs.go +++ b/go/vt/sqlparser/ast_funcs.go @@ -1559,14 +1559,28 @@ func (ty IndexHintType) ToString() string { case UseOp: return UseStr case IgnoreOp: - return IgnoreStr + return IgnoreIndexStr case ForceOp: return ForceStr + case UseVindexOp: + return UseVindexStr + case IgnoreVindexOp: + return IgnoreVindexStr default: return "Unknown IndexHintType" } } +// IsVindexHint returns if the given hint is a Vindex hint or not. +func (ty IndexHintType) IsVindexHint() bool { + switch ty { + case UseVindexOp, IgnoreVindexOp: + return true + default: + return false + } +} + // ToString returns the type as a string func (ty IndexHintForType) ToString() string { switch ty { diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go index 44b88384551..becaad2a2fe 100644 --- a/go/vt/sqlparser/constants.go +++ b/go/vt/sqlparser/constants.go @@ -122,10 +122,15 @@ const ( NaturalLeftJoinStr = "natural left join" NaturalRightJoinStr = "natural right join" - // Index hints. - UseStr = "use " + // IgnoreStr string. IgnoreStr = "ignore " - ForceStr = "force " + + // Index hints. + UseStr = "use index" + IgnoreIndexStr = "ignore index" + ForceStr = "force index" + UseVindexStr = "use vindex" + IgnoreVindexStr = "ignore vindex" // Index hints For types. JoinForStr = "join" @@ -760,6 +765,8 @@ const ( UseOp IndexHintType = iota IgnoreOp ForceOp + UseVindexOp + IgnoreVindexOp ) // Constant for Enum Type - IndexHintForType diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index cb79bda64b0..f90ae16606e 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -2659,6 +2659,20 @@ var ( }, { input: "SELECT id FROM blog_posts USE INDEX (PRIMARY) WHERE id = 10", output: "select id from blog_posts use index (`PRIMARY`) where id = 10", + }, { + input: "select * from payment_pulls ignore vindex (lookup_vindex_name) where customer_id in (1, 10) and payment_id = 5", + }, { + input: "select * from payment_pulls ignore vindex (lookup_vindex_name, x, t) order by id", + output: "select * from payment_pulls ignore vindex (lookup_vindex_name, x, t) order by id asc", + }, { + input: "select * from payment_pulls use vindex (lookup_vindex_name) where customer_id in (1, 10) and payment_id = 5", + }, { + input: "select * from payment_pulls use vindex (lookup_vindex_name, x, t) order by id", + output: "select * from payment_pulls use vindex (lookup_vindex_name, x, t) order by id asc", + }, { + input: "select * from payment_pulls use vindex (lookup_vindex_name, x, t) ignore vindex (x, t)", + }, { + input: "select * from payment_pulls use vindex (lookup_vindex_name, x, t) ignore vindex (x, t) join tab ignore vindex (y)", }, { input: "select name, group_concat(score) from t group by name", output: "select `name`, group_concat(score) from t group by `name`", diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 92a1641797d..b35472fce71 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -1521,7 +1521,7 @@ var yyExca = [...]int{ 244, 817, -2, 815, -1, 122, - 241, 1596, + 241, 1597, -2, 133, -1, 124, 1, 160, @@ -1540,14 +1540,14 @@ var yyExca = [...]int{ 165, 41, -2, 45, -1, 942, - 88, 1613, - -2, 1462, - -1, 943, 88, 1614, - 224, 1618, -2, 1463, + -1, 943, + 88, 1615, + 224, 1619, + -2, 1464, -1, 944, - 224, 1617, + 224, 1618, -2, 42, -1, 1028, 61, 889, @@ -1561,55 +1561,55 @@ var yyExca = [...]int{ 735, 582, -2, 167, -1, 1504, - 224, 1618, - -2, 1463, + 224, 1619, + -2, 1464, -1, 1715, 61, 890, - -2, 909, + -2, 908, -1, 1716, 61, 891, - -2, 910, - -1, 1771, + -2, 909, + -1, 1772, 137, 167, 179, 167, 349, 167, -2, 460, - -1, 1852, + -1, 1853, 138, 410, 247, 410, -2, 514, - -1, 1861, + -1, 1862, 252, 44, 257, 44, -2, 422, - -1, 2301, - 224, 1622, - -2, 1616, -1, 2302, - 224, 1618, - -2, 1614, - -1, 2404, + 224, 1623, + -2, 1617, + -1, 2303, + 224, 1619, + -2, 1615, + -1, 2405, 137, 167, 179, 167, 349, 167, -2, 461, - -1, 2411, + -1, 2412, 27, 188, -2, 190, -1, 2866, 79, 98, 89, 98, - -2, 968, + -2, 967, -1, 2935, 710, 702, -2, 676, - -1, 3144, - 51, 1564, - -2, 1558, - -1, 3962, + -1, 3145, + 51, 1565, + -2, 1559, + -1, 3970, 710, 702, -2, 690, - -1, 4049, + -1, 4056, 91, 634, 96, 634, 106, 634, @@ -1655,91 +1655,91 @@ var yyExca = [...]int{ 220, 634, 221, 634, 222, 634, - -2, 1987, + -2, 1988, } const yyPrivate = 57344 -const yyLast = 55627 +const yyLast = 56127 var yyAct = [...]int{ - 958, 3623, 2401, 87, 3622, 4124, 3943, 3624, 3296, 4137, - 4028, 4092, 4091, 4016, 953, 1269, 945, 2330, 2094, 1981, - 4047, 3927, 1267, 3196, 3203, 3426, 3851, 3245, 3157, 2106, - 3254, 3259, 3256, 3255, 1774, 3253, 2037, 3258, 3257, 5, - 3573, 3925, 2762, 2332, 3560, 3274, 3211, 3097, 2475, 739, - 3273, 3161, 3158, 3471, 946, 3661, 2999, 3465, 2356, 3145, - 907, 767, 911, 2438, 734, 42, 2375, 2900, 1730, 3993, - 906, 2826, 1830, 2981, 3303, 3276, 2932, 2463, 1078, 2443, - 1148, 2902, 2372, 3491, 2901, 2389, 1026, 163, 87, 2506, - 2851, 1046, 1023, 43, 2377, 1877, 2832, 41, 2818, 2376, - 2297, 2802, 2253, 1717, 2285, 2090, 2045, 1026, 2252, 2129, - 149, 3155, 2973, 2462, 2364, 2484, 2523, 2445, 1859, 2893, - 1111, 1106, 1088, 2868, 1763, 1743, 2379, 1696, 2134, 1517, - 2065, 1443, 1428, 1977, 104, 105, 2350, 100, 1866, 1085, - 1082, 1114, 1117, 2460, 749, 1958, 3160, 2839, 1025, 2434, - 1029, 733, 1112, 1113, 1086, 736, 1124, 2435, 2357, 1762, - 744, 1748, 1063, 1065, 2161, 1035, 3656, 2203, 1045, 1048, - 1500, 3915, 2800, 1476, 3457, 2142, 2298, 2036, 1257, 1989, - 107, 1031, 99, 1032, 127, 1030, 85, 125, 167, 1021, - 1825, 126, 132, 133, 1197, 84, 908, 106, 1058, 1851, - 93, 1033, 743, 1265, 1521, 737, 1243, 726, 98, 4125, - 2477, 2478, 2479, 3978, 3561, 3242, 2477, 1526, 2955, 2954, - 671, 1053, 1057, 2923, 2521, 3553, 3516, 1020, 4074, 2989, - 2990, 3973, 1150, 3974, 2327, 2328, 2052, 1038, 1943, 3979, - 1079, 128, 1153, 2051, 1692, 1167, 1168, 1169, 2050, 1172, - 1173, 1174, 1175, 134, 2049, 1178, 1179, 1180, 1181, 1182, - 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, - 1193, 1194, 2048, 2047, 2020, 1073, 2, 1072, 1127, 3264, - 727, 1024, 1022, 1039, 1213, 4068, 95, 1103, 668, 2798, - 669, 2571, 3141, 1128, 1460, 2510, 95, 1154, 1157, 1158, - 1734, 4095, 3952, 1090, 2925, 2828, 1439, 1047, 3627, 1102, - 1214, 4147, 1101, 128, 1732, 1161, 1100, 1095, 3101, 729, - 4090, 111, 112, 113, 4130, 116, 1170, 711, 122, 711, - 1735, 191, 3974, 2945, 663, 3262, 912, 3264, 4115, 2509, - 3431, 95, 4078, 4076, 1733, 190, 724, 725, 705, 4129, - 3261, 1019, 3627, 3430, 2353, 2352, 1014, 1015, 1016, 1017, - 2068, 3268, 2948, 1028, 3928, 190, 2763, 4077, 4075, 129, - 2057, 961, 962, 963, 705, 961, 962, 963, 3322, 95, - 3847, 128, 172, 3846, 3566, 1152, 1151, 3567, 4105, 129, - 1104, 1060, 1061, 3262, 86, 3626, 3857, 4072, 1071, 1075, - 910, 3585, 172, 1071, 1075, 910, 1430, 3574, 4017, 1724, - 4025, 2503, 3856, 86, 2099, 4052, 3343, 702, 1840, 3268, - 86, 4029, 1764, 2877, 1765, 2882, 2876, 2396, 2397, 2878, - 2799, 1457, 3192, 1458, 1459, 2578, 2988, 2508, 169, 3626, - 2575, 170, 2395, 705, 2842, 2972, 1094, 1233, 705, 1096, - 3193, 3194, 4057, 2029, 2030, 3584, 1012, 1262, 169, 1011, - 3944, 170, 3674, 2889, 189, 687, 1221, 1238, 1239, 2843, - 4055, 1222, 95, 1234, 3957, 3265, 705, 1221, 685, 4061, - 4062, 3330, 1222, 3300, 189, 1227, 2414, 2413, 3213, 3214, - 1220, 95, 1219, 2835, 2836, 4056, 3298, 4033, 95, 705, - 2576, 4033, 1985, 3328, 705, 2028, 2329, 3035, 2569, 1196, - 719, 2032, 723, 717, 3304, 1760, 1964, 2974, 682, 1933, - 1440, 86, 1700, 3899, 88, 3900, 2933, 697, 2485, 2958, - 3291, 1259, 4127, 3265, 1959, 2547, 2530, 2548, 3292, 2549, - 2524, 1171, 692, 1099, 1254, 1206, 1207, 2360, 1099, 1202, - 1091, 1236, 1237, 695, 4096, 1242, 2976, 1093, 1092, 3831, - 706, 3555, 1250, 1934, 1252, 1935, 2526, 1261, 1235, 1429, - 3554, 2454, 1240, 1260, 2170, 4097, 3301, 1209, 173, 2550, - 1228, 1177, 1241, 1176, 2488, 1844, 706, 179, 1703, 3299, - 1137, 2531, 3551, 3631, 2448, 2373, 1135, 3212, 173, 95, - 1108, 1097, 1249, 1251, 1107, 1146, 1097, 179, 1108, 3215, - 1145, 1144, 1143, 3215, 2572, 1142, 2573, 1141, 1140, 2962, - 2963, 672, 1139, 674, 688, 1064, 708, 1147, 707, 678, - 1134, 676, 680, 689, 681, 1083, 675, 1477, 686, 1081, - 1986, 677, 690, 691, 694, 698, 699, 700, 696, 693, - 4148, 684, 709, 4102, 1083, 706, 1119, 1059, 1491, 3319, - 706, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1486, 1485, - 1487, 1488, 2162, 3036, 1083, 1978, 2461, 2164, 2977, 1120, - 2514, 2169, 2165, 4069, 2513, 2166, 2167, 2168, 706, 1974, - 2163, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, - 2926, 1431, 1266, 3468, 1266, 1266, 3235, 3550, 2528, 1247, - 1164, 706, 164, 1248, 2957, 1838, 706, 1837, 1836, 1074, - 1068, 1066, 2943, 1253, 1074, 1068, 1066, 1975, 3100, 1834, - 1098, 1967, 164, 1965, 1966, 1098, 1968, 1969, 1970, 1138, - 2358, 2359, 1761, 2447, 2993, 1136, 1212, 662, 1246, 4070, - 2527, 3940, 1026, 1501, 1506, 1507, 3505, 1510, 1512, 1513, - 1514, 1515, 1516, 2529, 1519, 1520, 1522, 1522, 3487, 1522, + 958, 3626, 3951, 87, 3627, 946, 3625, 953, 2095, 4037, + 4144, 2107, 4131, 3297, 4025, 2331, 3197, 3204, 4098, 1269, + 945, 4099, 1982, 3935, 3858, 2402, 3246, 3158, 4054, 3255, + 3260, 3257, 3427, 3256, 3254, 3259, 3258, 911, 3933, 3563, + 42, 1267, 2763, 2333, 3097, 2038, 3275, 3576, 5, 3212, + 739, 3162, 3159, 3474, 3468, 2476, 3668, 3274, 2999, 2357, + 3156, 2826, 733, 3458, 734, 3277, 2900, 907, 3146, 2439, + 767, 1831, 1775, 2981, 906, 3304, 2444, 2932, 2901, 4002, + 1731, 2464, 2902, 2507, 2390, 163, 1026, 1078, 87, 2376, + 1046, 1023, 2851, 2373, 2378, 1878, 2832, 43, 2819, 2377, + 2298, 2803, 3494, 2286, 2254, 2130, 1148, 1026, 2091, 2046, + 41, 2973, 2253, 2485, 149, 2463, 2365, 2524, 1860, 2446, + 2893, 1106, 1088, 1025, 1111, 1029, 1764, 2868, 2380, 1744, + 2135, 1696, 100, 104, 105, 1517, 2066, 2351, 1443, 1428, + 1867, 1978, 1085, 1082, 1048, 1959, 3161, 749, 1117, 2461, + 1086, 2435, 2436, 1112, 1113, 1763, 1063, 1749, 1065, 1035, + 2299, 1114, 744, 1718, 737, 1124, 2204, 3663, 2143, 2162, + 2801, 2839, 1476, 99, 1257, 107, 2037, 1045, 1990, 127, + 125, 1032, 3655, 2358, 85, 1031, 167, 1826, 126, 1852, + 132, 908, 1500, 133, 1058, 1021, 1197, 726, 1030, 743, + 1521, 1033, 98, 736, 1265, 1243, 4132, 2478, 2479, 2480, + 3986, 3564, 3243, 2478, 93, 1526, 2923, 1053, 1057, 2522, + 84, 1444, 106, 2955, 2954, 3556, 4081, 2989, 1020, 2990, + 3981, 3982, 1038, 2328, 2329, 2053, 3987, 2052, 2051, 128, + 1153, 3519, 2050, 134, 1079, 671, 2049, 2048, 2021, 1213, + 4075, 668, 1692, 669, 2799, 2572, 3142, 4102, 1150, 3101, + 4154, 4097, 4122, 3432, 1439, 1944, 3431, 2509, 2354, 2353, + 727, 1167, 1168, 1169, 1039, 1172, 1173, 1174, 1175, 1072, + 3265, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, + 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1127, 2511, + 1073, 2, 1128, 3960, 1102, 1101, 1024, 1022, 95, 1735, + 711, 128, 1103, 1100, 1733, 2828, 2948, 1154, 1157, 1158, + 3630, 1047, 3630, 1460, 1161, 3936, 2925, 729, 2764, 1454, + 95, 3982, 2058, 3323, 1090, 4137, 3263, 1095, 95, 1736, + 4085, 912, 4083, 2510, 1734, 3265, 111, 112, 113, 2069, + 116, 1170, 1019, 122, 705, 705, 191, 711, 3262, 663, + 4136, 3854, 3269, 3853, 1152, 4084, 3569, 4082, 2945, 3570, + 4112, 724, 725, 1214, 1071, 1075, 910, 1725, 190, 128, + 1151, 1014, 1015, 1016, 1017, 3864, 4079, 95, 1028, 961, + 962, 963, 961, 962, 963, 3588, 1104, 86, 702, 1430, + 3577, 3263, 129, 1071, 1075, 910, 4026, 3629, 4034, 3629, + 2504, 3863, 2100, 4059, 3344, 172, 1060, 1061, 3587, 705, + 1841, 2962, 2963, 2800, 86, 3194, 3195, 3269, 1094, 4064, + 3193, 1096, 2397, 2398, 2877, 2988, 2579, 2876, 1450, 4038, + 2878, 1442, 2030, 2031, 86, 705, 687, 4062, 705, 1099, + 2576, 1206, 1207, 1765, 2972, 1766, 4068, 4069, 2882, 685, + 1457, 1444, 1458, 1459, 2396, 3214, 3215, 1262, 2842, 1233, + 1012, 169, 4063, 3681, 170, 95, 3266, 1221, 1440, 1238, + 1239, 1011, 1222, 1209, 1221, 3952, 1234, 1227, 2361, 1222, + 1220, 2889, 1219, 2843, 705, 86, 3965, 189, 88, 682, + 1986, 2577, 95, 2455, 1250, 2330, 1252, 1097, 697, 705, + 4103, 2415, 2414, 3301, 3035, 4042, 2835, 2836, 4042, 2570, + 3331, 3329, 95, 692, 719, 1477, 2449, 2029, 3299, 1196, + 1099, 4104, 1091, 2033, 695, 723, 1761, 2361, 717, 1093, + 1092, 3266, 3305, 2974, 1249, 1251, 1934, 3320, 1700, 1478, + 1479, 1480, 1481, 1482, 1483, 1484, 1486, 1485, 1487, 1488, + 2933, 3906, 1429, 3907, 2486, 2958, 706, 706, 3292, 1454, + 1960, 2525, 4134, 95, 3213, 1254, 3293, 1261, 2573, 2531, + 2574, 1235, 1228, 1260, 1240, 1259, 3216, 1202, 1097, 2548, + 1935, 2549, 1936, 2550, 1241, 2529, 2976, 1236, 1237, 3558, + 1242, 1064, 672, 3557, 674, 688, 3302, 708, 2551, 707, + 678, 173, 676, 680, 689, 681, 1177, 675, 2489, 686, + 179, 3300, 677, 690, 691, 694, 698, 699, 700, 696, + 693, 706, 684, 709, 2532, 1176, 1098, 2528, 1987, 2538, + 2534, 2536, 2537, 2535, 2539, 2540, 2541, 2527, 4076, 1703, + 2530, 1247, 1107, 3838, 3634, 1248, 1108, 706, 2374, 1108, + 706, 2926, 1146, 1145, 1845, 1253, 1144, 3471, 1143, 3100, + 1142, 1141, 1140, 1139, 1134, 2448, 1147, 3216, 1450, 1083, + 3036, 2359, 2360, 1083, 1120, 4109, 4155, 1081, 1156, 1083, + 1246, 1119, 2977, 1979, 1119, 1074, 1068, 1066, 1155, 2462, + 1059, 2515, 1266, 2514, 1266, 1266, 706, 1975, 1431, 1164, + 3236, 2957, 1839, 1838, 1837, 2943, 1976, 1098, 1835, 1212, + 662, 706, 1492, 1493, 1074, 1068, 1066, 4077, 3948, 2971, + 2359, 2360, 2970, 1449, 1446, 1447, 1448, 1453, 1455, 1452, + 3508, 1451, 2508, 3490, 2873, 164, 2838, 2776, 2103, 1753, + 1653, 1445, 1026, 1501, 1506, 1507, 1211, 1510, 1512, 1513, + 1514, 1515, 1516, 1762, 1519, 1520, 1522, 1522, 2960, 1522, 1522, 1527, 1527, 1527, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, @@ -1752,988 +1752,1030 @@ var yyAct = [...]int{ 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, - 1646, 1647, 1648, 1649, 1650, 1651, 1498, 3951, 1255, 2924, - 1652, 959, 1654, 1655, 1656, 1657, 1658, 1422, 1423, 3514, - 3515, 959, 2507, 1511, 1527, 1527, 1527, 1527, 1527, 1527, - 1105, 1945, 1944, 1946, 1947, 1948, 710, 1421, 2947, 1665, + 1646, 1647, 1648, 1649, 1650, 1651, 2891, 1255, 3959, 1498, + 1652, 1200, 1654, 1655, 1656, 1657, 1658, 710, 1422, 1423, + 1494, 1495, 1496, 1497, 1527, 1527, 1527, 1527, 1527, 1527, + 1508, 2924, 3586, 959, 3517, 3518, 1105, 1438, 703, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, - 1676, 1677, 1678, 1491, 4031, 3266, 3267, 703, 4031, 1502, - 165, 1494, 1495, 1496, 1497, 2891, 959, 177, 3270, 3583, - 1693, 1508, 704, 3414, 1444, 94, 2960, 1205, 3625, 1438, - 165, 1523, 2946, 1524, 1525, 1444, 4030, 177, 4060, 1218, - 4030, 1208, 89, 1217, 94, 1223, 1224, 1225, 1226, 1528, - 1529, 94, 2577, 1200, 2576, 1067, 1126, 2927, 185, 3109, - 1067, 1865, 3469, 3266, 3267, 2971, 2980, 1723, 2970, 1263, - 1264, 1963, 3625, 2873, 1699, 1231, 3270, 2838, 185, 2833, - 1156, 1690, 4059, 1026, 4141, 2775, 1119, 1026, 2102, 2590, - 1155, 1752, 1163, 1026, 2803, 2805, 3108, 2505, 1492, 1493, - 1126, 166, 171, 168, 174, 175, 176, 178, 180, 181, - 182, 183, 1653, 705, 1211, 670, 1691, 184, 186, 187, - 188, 166, 171, 168, 174, 175, 176, 178, 180, 181, - 182, 183, 1454, 2451, 2402, 1491, 3320, 184, 186, 187, - 188, 2601, 124, 1454, 1488, 1707, 3191, 1471, 1042, 1711, - 1258, 1126, 94, 3965, 1724, 1025, 2360, 119, 1149, 1125, - 3199, 3546, 2537, 2533, 2535, 2536, 2534, 2538, 2539, 2540, - 1864, 1216, 3000, 2452, 3481, 1244, 1990, 1709, 1710, 2525, - 2450, 104, 105, 2041, 1691, 1483, 1484, 1486, 1485, 1487, - 1488, 1659, 1660, 1661, 1662, 1663, 1664, 1971, 1697, 1766, - 3021, 2143, 2135, 1125, 1126, 3200, 2916, 2502, 1129, 1119, - 1099, 1195, 4106, 1131, 2453, 2144, 1684, 1132, 1130, 1459, - 2983, 1960, 3670, 1961, 2449, 2982, 1962, 107, 3521, 3202, - 120, 3520, 2983, 2601, 2135, 2492, 2611, 2982, 1133, 1874, - 1460, 1450, 1458, 1459, 1841, 1842, 1843, 3197, 1126, 1873, - 1705, 1863, 1450, 1857, 1125, 1442, 3002, 2500, 1137, 1135, - 1119, 1122, 1123, 2804, 1083, 3213, 3214, 1037, 1116, 1120, - 4098, 3506, 3198, 1726, 1708, 1199, 4143, 2497, 1694, 3839, - 1230, 1850, 1022, 1706, 1928, 3995, 1126, 1983, 1024, 1115, - 1879, 1232, 1880, 2504, 1882, 1884, 1729, 1910, 1888, 1890, - 1892, 1894, 1896, 1869, 1953, 4139, 3204, 1125, 4140, 1162, - 4138, 1918, 1919, 1159, 1266, 1215, 2501, 1924, 1925, 1757, - 1758, 2497, 1868, 1245, 1991, 706, 1724, 3012, 3011, 3010, - 3996, 4149, 3004, 2290, 3008, 1201, 3003, 3933, 3001, 1867, - 1867, 1724, 3838, 3006, 1833, 3580, 2141, 3581, 2140, 2358, - 2359, 1125, 3005, 2059, 2061, 2062, 3295, 1119, 1122, 1123, - 2499, 1083, 1848, 1846, 1712, 1116, 1120, 1860, 1952, 1847, - 3007, 3009, 3829, 3597, 3212, 3596, 2070, 1457, 2060, 1458, - 1459, 1198, 3934, 1914, 1871, 3528, 3215, 1951, 1940, 1125, - 2071, 1489, 1490, 2069, 1129, 1119, 1477, 1098, 2992, 1131, - 3527, 1425, 1979, 1132, 1130, 2582, 2583, 2584, 3517, 1477, - 3243, 1906, 3231, 2898, 1909, 2897, 1911, 2896, 4150, 1460, + 1676, 1677, 1678, 704, 1502, 959, 3267, 3268, 1946, 1945, + 1947, 1948, 1949, 959, 1126, 4067, 89, 1421, 2927, 3271, + 1693, 1511, 4040, 2947, 3321, 4040, 3472, 1523, 94, 1524, + 1525, 1067, 3554, 1449, 1446, 1447, 1448, 1453, 1455, 1452, + 3628, 1451, 3628, 165, 705, 1231, 1137, 1528, 1529, 1218, + 177, 1445, 3415, 2578, 4039, 94, 1690, 4039, 1205, 4066, + 1067, 1208, 3200, 1135, 1866, 2452, 1126, 2946, 1491, 1126, + 2506, 3267, 3268, 1491, 1699, 94, 2577, 2980, 3109, 3108, + 124, 1724, 2833, 1026, 3271, 670, 1171, 1026, 2804, 2806, + 2403, 185, 1491, 1026, 3192, 1488, 1725, 4148, 2602, 1471, + 2144, 1042, 1216, 1964, 1244, 2453, 1217, 3201, 1223, 1224, + 1225, 1226, 2451, 2171, 2145, 1991, 1258, 1125, 1099, 1195, + 1707, 3973, 1149, 119, 1711, 3021, 94, 3549, 1698, 1691, + 1025, 3203, 1263, 1264, 166, 171, 168, 174, 175, 176, + 178, 180, 181, 182, 183, 3484, 2454, 3553, 2526, 3198, + 184, 186, 187, 188, 2993, 1965, 2450, 2042, 3128, 2591, + 1483, 1484, 1486, 1485, 1487, 1488, 1972, 3214, 3215, 1125, + 3000, 1767, 1125, 1865, 3199, 2602, 1709, 1710, 4113, 2136, + 104, 105, 2136, 1199, 2612, 2916, 1459, 665, 2071, 1659, + 1660, 1661, 1662, 1663, 1664, 1138, 120, 1691, 1458, 1459, + 1697, 3677, 2072, 1489, 1490, 2070, 3524, 1013, 3205, 3523, + 3126, 2163, 1136, 1684, 2493, 1875, 2165, 1874, 1864, 1163, + 2170, 2166, 107, 2503, 2167, 2168, 2169, 4105, 2498, 2164, + 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2498, + 2501, 1137, 2983, 2983, 1126, 2142, 1215, 2982, 2982, 1084, + 1230, 1135, 1245, 1961, 3002, 1962, 706, 2805, 1963, 1705, + 3509, 1232, 1858, 1992, 1727, 1037, 2505, 2502, 1694, 4150, + 1842, 1843, 1844, 1201, 3846, 1126, 3213, 1126, 2500, 3583, + 1708, 3584, 3845, 4004, 1929, 1851, 1725, 4156, 3216, 1198, + 1880, 1984, 1881, 2141, 1883, 1885, 1730, 1706, 1889, 1891, + 1893, 1895, 1897, 1870, 3836, 1098, 1911, 1022, 2060, 2062, + 2063, 3941, 3600, 1024, 1266, 1758, 1759, 2127, 4146, 1460, + 3599, 4147, 3531, 4145, 1869, 3012, 3011, 3010, 4005, 3530, + 3004, 1126, 3008, 2061, 3003, 3520, 3001, 1919, 1920, 3244, + 1460, 3006, 3232, 1925, 1926, 2898, 1834, 1125, 1868, 1868, + 3005, 2291, 1126, 1119, 1122, 1123, 3942, 1083, 2897, 1848, + 1849, 1116, 1120, 1847, 1861, 2366, 2367, 2896, 3007, 3009, + 1968, 1954, 1966, 1967, 4157, 1969, 1970, 1971, 1125, 1872, + 1125, 2458, 1115, 1129, 1119, 1129, 1119, 1955, 1131, 1712, + 1131, 1939, 1132, 1130, 1132, 1130, 1481, 1482, 1483, 1484, + 1486, 1485, 1487, 1488, 3868, 3202, 1907, 1952, 1915, 1910, + 1980, 1912, 1941, 1133, 3296, 2119, 2108, 2109, 2110, 2111, + 2121, 2112, 2113, 2114, 2126, 2122, 2115, 2116, 2123, 2124, + 2125, 2117, 2118, 2120, 1125, 1953, 1162, 2583, 2584, 2585, + 1159, 1102, 1101, 961, 962, 963, 1938, 1937, 128, 1927, + 1100, 190, 1921, 1425, 1918, 1125, 1457, 1840, 1458, 1459, + 2291, 1119, 1122, 1123, 2288, 1083, 1917, 1916, 1997, 1116, + 1120, 1951, 1887, 2290, 1460, 129, 1940, 1457, 1460, 1458, + 1459, 1266, 1266, 1704, 711, 1993, 1994, 957, 172, 2019, + 1460, 3514, 711, 2880, 711, 87, 1477, 1761, 87, 1998, + 2474, 2473, 2647, 2472, 2471, 1460, 2005, 2006, 2007, 1464, + 1465, 1466, 1467, 1468, 1469, 1470, 1462, 2608, 2018, 1460, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1486, 1485, 1487, - 1488, 1477, 1839, 1478, 1479, 1480, 1481, 1482, 1483, 1484, - 1486, 1485, 1487, 1488, 2457, 1954, 1102, 1460, 1938, 1101, - 128, 1950, 1939, 1100, 1937, 1478, 1479, 1480, 1481, 1482, - 1483, 1484, 1486, 1485, 1487, 1488, 961, 962, 963, 1996, + 1488, 4106, 42, 2824, 4133, 42, 2470, 2469, 4093, 1725, + 1456, 1725, 2639, 1738, 169, 2824, 4033, 170, 1478, 1479, + 1480, 1481, 1482, 1483, 1484, 1486, 1485, 1487, 1488, 3968, + 2098, 2098, 2099, 4118, 1725, 2824, 4012, 103, 1460, 3967, + 189, 3945, 1477, 2096, 2096, 1473, 1725, 1474, 1479, 1480, + 1481, 1482, 1483, 1484, 1486, 1485, 1487, 1488, 2064, 1739, + 2607, 1475, 1489, 1490, 1472, 3944, 1478, 1479, 1480, 1481, + 1482, 1483, 1484, 1486, 1485, 1487, 1488, 1477, 3943, 2992, + 1690, 1457, 101, 1458, 1459, 1457, 3841, 1458, 1459, 103, + 3023, 2182, 3825, 102, 2824, 4008, 1725, 1457, 3824, 1458, + 1459, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1486, 1485, + 1487, 1488, 1457, 3676, 1458, 1459, 3206, 3926, 1725, 1725, + 3210, 3674, 2649, 4116, 1725, 3961, 1457, 3209, 1458, 1459, + 3596, 1995, 1456, 1725, 3567, 3958, 3849, 1725, 1999, 1689, + 2001, 2002, 2003, 2004, 2043, 1688, 85, 2008, 1725, 85, + 2068, 2824, 3837, 1691, 173, 2026, 2027, 1477, 1687, 2020, + 1460, 3211, 3528, 179, 3513, 1460, 3207, 3306, 1477, 2127, + 2075, 3208, 3567, 1725, 3483, 1457, 2073, 1458, 1459, 2651, + 1460, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1486, 1485, + 1487, 1488, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1486, + 1485, 1487, 1488, 2302, 2129, 2131, 2301, 3303, 2074, 3235, + 2076, 2077, 2078, 2079, 2080, 2081, 2083, 2085, 2086, 2087, + 2088, 2089, 2090, 1502, 2102, 2300, 1477, 3234, 2590, 1460, + 2146, 2147, 2148, 2149, 2907, 1460, 2824, 3565, 2289, 2498, + 1725, 2137, 2894, 2287, 2160, 4048, 1725, 3873, 2181, 1686, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1486, 1485, 1487, - 1488, 1266, 1266, 1936, 1926, 1920, 1992, 1993, 1917, 1916, - 1915, 1886, 1704, 2018, 1477, 87, 711, 1473, 87, 1474, - 1997, 3511, 711, 3201, 4111, 1724, 1760, 2004, 2005, 2006, - 2880, 711, 4099, 1475, 1489, 1490, 1472, 2017, 1478, 1479, - 1480, 1481, 1482, 1483, 1484, 1486, 1485, 1487, 1488, 2473, - 2472, 3960, 1460, 2471, 2470, 3959, 1449, 1446, 1447, 1448, - 1453, 1455, 1452, 2126, 1451, 2469, 2468, 1449, 1446, 1447, - 1448, 1453, 1455, 1452, 1445, 1451, 1457, 42, 1458, 1459, - 42, 2824, 4126, 4086, 1724, 1445, 3937, 2097, 2097, 2095, - 2095, 3936, 2098, 1479, 1480, 1481, 1482, 1483, 1484, 1486, - 1485, 1487, 1488, 3935, 1457, 2648, 1458, 1459, 2063, 3834, - 1737, 1477, 3818, 3023, 3817, 1456, 1724, 3480, 1994, 1456, - 1724, 2824, 4024, 1460, 3669, 1998, 3667, 2000, 2001, 2002, - 2003, 3593, 2126, 2650, 2007, 1478, 1479, 1480, 1481, 1482, - 1483, 1484, 1486, 1485, 1487, 1488, 2019, 1481, 1482, 1483, - 1484, 1486, 1485, 1487, 1488, 1690, 1738, 2824, 4003, 2181, - 1689, 2118, 2107, 2108, 2109, 2110, 2120, 2111, 2112, 2113, - 2125, 2121, 2114, 2115, 2122, 2123, 2124, 2116, 2117, 2119, - 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1462, 1688, 1457, - 1691, 1458, 1459, 2824, 3999, 2042, 1687, 2067, 85, 3525, - 101, 85, 3986, 1724, 2025, 2026, 1460, 103, 4109, 1724, - 2073, 102, 2075, 2076, 2077, 2078, 2079, 2080, 2082, 2084, - 2085, 2086, 2087, 2088, 2089, 3564, 3950, 2072, 3842, 1724, - 2118, 2107, 2108, 2109, 2110, 2120, 2111, 2112, 2113, 2125, - 2121, 2114, 2115, 2122, 2123, 2124, 2116, 2117, 2119, 2301, - 2824, 3830, 2101, 2300, 1460, 3510, 2299, 3564, 1724, 1460, - 1457, 2074, 1458, 1459, 3205, 1460, 1724, 1724, 3209, 1460, - 2128, 2130, 2824, 3562, 3953, 3208, 2497, 1724, 1502, 1460, - 3305, 2607, 3302, 1460, 3485, 1724, 2286, 2145, 2146, 2147, - 2148, 4039, 1724, 2180, 110, 2195, 2136, 1477, 3234, 2589, - 110, 2159, 2730, 1724, 3866, 109, 101, 108, 3233, 3210, - 2907, 109, 2894, 108, 3206, 1686, 103, 102, 1679, 3207, - 2560, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1486, 1485, - 1487, 1488, 3224, 3223, 2599, 2559, 2304, 2305, 2381, 4037, - 1724, 3221, 3222, 1457, 2598, 1458, 1459, 2519, 2301, 2518, - 4035, 1724, 2370, 2355, 2606, 2299, 1460, 2411, 3219, 3220, - 3219, 3218, 104, 105, 3912, 1724, 2848, 1724, 3910, 1724, - 1460, 2335, 1724, 3865, 1460, 1724, 3822, 2288, 2576, 2956, - 3821, 1724, 2193, 104, 105, 2869, 2646, 1829, 2937, 2066, - 1460, 1457, 2204, 1458, 1459, 1460, 1457, 2021, 1458, 1459, - 2383, 2346, 1457, 1460, 1458, 1459, 1457, 1987, 1458, 1459, - 1088, 2303, 2930, 2931, 2306, 2307, 1457, 1949, 1458, 1459, - 1457, 1941, 1458, 1459, 2420, 2421, 2422, 2423, 2824, 2823, - 4087, 2406, 2415, 103, 2416, 2417, 2418, 2419, 1931, 2405, - 1795, 3907, 1724, 1088, 1038, 2387, 2820, 2334, 2870, 1927, - 2426, 2427, 2428, 2429, 2322, 3889, 1724, 2340, 2872, 2341, - 1724, 103, 2277, 2278, 2279, 2280, 2281, 1923, 2440, 2603, - 1724, 2345, 1922, 2409, 2348, 3456, 1724, 2100, 1724, 3572, - 3449, 1724, 2840, 1921, 2486, 1460, 2446, 2869, 3446, 1724, - 2934, 2368, 1724, 1457, 1460, 1458, 1459, 2912, 1073, 1739, - 1072, 2393, 2392, 2391, 1256, 2408, 2407, 1457, 1460, 1458, - 1459, 1457, 1460, 1458, 1459, 2483, 1829, 1828, 2324, 2603, - 1772, 1771, 3156, 2840, 2204, 2456, 1460, 1457, 3186, 1458, - 1459, 2498, 1457, 3480, 1458, 1459, 2847, 2410, 2576, 109, - 1457, 1456, 1458, 1459, 3482, 3991, 2441, 1460, 3964, 2824, - 2870, 1460, 2437, 2848, 2848, 1460, 2430, 2432, 2433, 2459, - 2576, 3435, 2491, 2467, 2455, 2494, 1741, 2495, 2511, 1460, - 3444, 1724, 2290, 1460, 3221, 3337, 2287, 1127, 3129, 3406, - 1724, 2441, 2490, 2489, 2493, 2289, 1783, 1460, 2394, 2497, - 2603, 2848, 1128, 3404, 1724, 3480, 2730, 3400, 1724, 957, - 2515, 2635, 1867, 190, 2516, 2517, 2512, 2634, 1456, 2497, - 2480, 3397, 1724, 2363, 1728, 2325, 2100, 2043, 1725, 1727, - 2027, 1973, 1457, 1759, 1458, 1459, 1110, 129, 1109, 151, - 3529, 1457, 1740, 1458, 1459, 3246, 3395, 1724, 2581, 1027, - 172, 1724, 95, 2522, 1460, 1457, 4065, 1458, 1459, 1457, - 4006, 1458, 1459, 2904, 3393, 1724, 3853, 1200, 3391, 1724, - 1731, 3819, 1512, 1457, 1512, 1458, 1459, 3681, 3545, 3542, - 1796, 162, 3389, 1724, 1460, 3523, 3348, 150, 3347, 1831, - 2593, 3530, 3531, 3532, 1457, 3297, 1458, 1459, 1457, 2553, - 1458, 1459, 1457, 2439, 1458, 1459, 169, 2638, 2301, 170, - 1460, 3293, 2300, 3248, 1460, 2596, 1457, 3244, 1458, 1459, - 1457, 1460, 1458, 1459, 2938, 1460, 2436, 95, 138, 139, - 161, 160, 189, 2431, 1457, 2425, 1458, 1459, 3854, 3387, - 1724, 2424, 1956, 1809, 1812, 1813, 1814, 1815, 1816, 1817, - 2568, 1818, 1819, 1821, 1822, 1820, 1823, 1824, 1797, 1798, - 1799, 1800, 1781, 1782, 1810, 2574, 1784, 1862, 1785, 1786, - 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1858, 1827, 1794, - 1801, 1802, 1803, 1804, 121, 1805, 1806, 1807, 1808, 4121, - 2585, 1457, 1460, 1458, 1459, 3385, 1724, 2903, 1460, 3383, - 1724, 3492, 3493, 2454, 2067, 2338, 3381, 1724, 4119, 4093, - 3379, 1724, 3972, 3894, 1460, 3495, 2586, 2023, 2588, 1460, - 3240, 1457, 3239, 1458, 1459, 3238, 3156, 2591, 2917, 2592, - 2554, 1460, 667, 155, 136, 158, 143, 135, 3178, 156, - 157, 3498, 1460, 3179, 1902, 2904, 173, 1457, 1460, 1458, - 1459, 1457, 2610, 1458, 1459, 179, 144, 3497, 1457, 3175, - 1458, 1459, 1457, 1460, 1458, 1459, 3180, 2587, 2857, 2858, - 147, 145, 140, 141, 142, 146, 1460, 3377, 1724, 2024, - 1460, 3176, 137, 3375, 1724, 3174, 3177, 2594, 3968, 1460, - 2774, 148, 3855, 2562, 2563, 1903, 1904, 1905, 2565, 3373, - 1724, 2354, 1736, 1040, 3371, 1724, 728, 2566, 2644, 2344, - 3486, 3134, 1460, 3133, 2365, 2366, 3369, 1724, 3473, 3651, - 1460, 3650, 2806, 3932, 1460, 3660, 3472, 3367, 1724, 1457, - 3476, 1458, 1459, 3353, 1724, 1457, 3662, 1458, 1459, 3143, - 1026, 2097, 1043, 2095, 3533, 2809, 3146, 3148, 3335, 1724, - 1044, 1457, 1041, 1458, 1459, 3149, 1457, 2887, 1458, 1459, - 1972, 2795, 1724, 2845, 2846, 2793, 1724, 2807, 1457, 3649, - 1458, 1459, 2381, 1010, 1898, 1026, 2865, 2617, 3217, 1457, - 164, 1458, 1459, 2908, 1166, 1457, 1165, 1458, 1459, 1460, - 3313, 3534, 3535, 3536, 2632, 1811, 2066, 2768, 1724, 2844, - 1457, 1460, 1458, 1459, 2825, 2745, 1724, 1460, 2903, 2737, - 1724, 1460, 2986, 1457, 1424, 1458, 1459, 1457, 1460, 1458, - 1459, 1899, 1900, 1901, 101, 42, 1457, 2143, 1458, 1459, - 3478, 103, 2944, 101, 2862, 102, 1460, 2864, 2863, 129, - 2821, 2144, 1697, 2797, 102, 110, 2834, 1460, 103, 1457, - 4135, 1458, 1459, 3236, 1460, 2557, 109, 1457, 108, 1458, - 1459, 1457, 4044, 1458, 1459, 2890, 2892, 103, 3949, 1691, - 1460, 2365, 2366, 2817, 2728, 1724, 159, 2546, 2810, 2837, - 2812, 3849, 2883, 2867, 2822, 3216, 2726, 1724, 2861, 2942, - 2349, 3458, 2713, 1724, 1460, 2545, 2711, 1724, 1051, 1052, - 2544, 2543, 2871, 2709, 1724, 3132, 2542, 2541, 2953, 2874, - 2580, 109, 2446, 3131, 1460, 2881, 108, 2884, 2906, 1460, - 2138, 2707, 1724, 2909, 2910, 2139, 1457, 3920, 1458, 1459, - 1460, 3657, 2705, 1724, 3919, 2895, 1460, 3897, 1457, 3861, - 1458, 1459, 1460, 3668, 1457, 3666, 1458, 1459, 1457, 110, - 1458, 1459, 2905, 3466, 1460, 1457, 4100, 1458, 1459, 2840, - 109, 2199, 108, 2913, 3665, 3658, 2914, 3543, 2918, 2919, - 2920, 3635, 3477, 1457, 3475, 1458, 1459, 3249, 2481, 2950, - 3948, 1850, 1845, 1050, 1457, 152, 1458, 1459, 153, 4123, - 4122, 1457, 1460, 1458, 1459, 110, 2820, 3037, 1460, 2703, - 1724, 2939, 2940, 2636, 2701, 1724, 109, 1457, 2929, 1458, - 1459, 2996, 2997, 1460, 2336, 2699, 1724, 2949, 165, 1753, - 1460, 2697, 1724, 1745, 4123, 177, 1460, 2695, 1724, 114, - 115, 1457, 4122, 1458, 1459, 1460, 3, 3938, 3509, 2693, - 1724, 2283, 97, 2040, 2994, 3013, 10, 2975, 1, 2597, - 2978, 1457, 1018, 1458, 1459, 1460, 1457, 1427, 1458, 1459, - 1460, 2038, 2039, 1426, 9, 8, 185, 1457, 3513, 1458, - 1459, 2316, 4054, 1457, 683, 1458, 1459, 2691, 1724, 1457, - 2326, 1458, 1459, 2689, 1724, 1460, 1695, 4094, 4050, 1725, - 2323, 1457, 1460, 1458, 1459, 3014, 4051, 1942, 2687, 1724, - 2951, 1932, 3575, 3017, 2251, 2685, 1724, 3850, 3252, 166, - 171, 168, 174, 175, 176, 178, 180, 181, 182, 183, - 2683, 1724, 2487, 3541, 2347, 184, 186, 187, 188, 1457, - 1460, 1458, 1459, 2444, 1118, 1457, 154, 1458, 1459, 2998, - 2681, 1724, 2403, 1460, 3039, 2679, 1724, 3015, 2404, 1460, - 1457, 4019, 1458, 1459, 3095, 118, 1076, 1457, 2984, 1458, - 1459, 2985, 117, 1457, 1121, 1458, 1459, 1229, 2482, 3565, - 2674, 1724, 1457, 2888, 1458, 1459, 2412, 2670, 1724, 1778, - 1776, 1777, 1775, 1460, 1780, 1779, 2995, 3321, 3113, 2637, - 3413, 2031, 1457, 718, 1458, 1459, 2860, 1457, 3102, 1458, - 1459, 712, 192, 1767, 1746, 3104, 3427, 1160, 673, 3225, - 2520, 2381, 3030, 679, 1509, 2668, 1724, 2286, 2022, 2286, - 3130, 2875, 1457, 3075, 1458, 1459, 1460, 1070, 3500, 1457, - 2458, 1458, 1459, 1062, 3163, 3826, 87, 3016, 2337, 2381, - 2381, 2381, 2381, 2381, 1460, 3085, 3086, 3087, 3088, 3089, - 2811, 3113, 1069, 3827, 1460, 3164, 3470, 3142, 3144, 2381, - 2827, 3103, 2381, 3105, 1460, 3112, 3168, 1457, 3451, 1458, - 1459, 3147, 1460, 2383, 3185, 3140, 3931, 3137, 1460, 1983, - 1457, 3659, 1458, 1459, 1460, 4004, 1457, 2885, 1458, 1459, - 1742, 1460, 3128, 3124, 3434, 2609, 2133, 1499, 1029, 2380, - 3630, 2383, 2383, 2383, 2383, 2383, 3135, 2058, 2288, 741, - 2288, 2661, 1724, 740, 738, 3138, 3150, 3151, 2813, 2841, - 1457, 2383, 1458, 1459, 2383, 3187, 3269, 1463, 3188, 1031, - 3547, 947, 3167, 1030, 3170, 3171, 3277, 3173, 3169, 3447, - 3181, 3172, 1460, 2801, 104, 105, 1754, 1460, 3189, 3412, - 3125, 3126, 3127, 1460, 2852, 2850, 3136, 2659, 1724, 2849, - 3195, 2555, 2388, 1457, 2899, 1458, 1459, 1460, 3077, 3408, - 3079, 1460, 3494, 3227, 3229, 3230, 3345, 3228, 3490, 3226, - 4046, 1457, 1460, 1458, 1459, 2382, 3090, 3091, 3092, 3093, - 2378, 1457, 1460, 1458, 1459, 2819, 3281, 3278, 3153, 3250, - 898, 1457, 897, 1458, 1459, 2446, 3282, 3271, 750, 1457, - 742, 1458, 1459, 732, 960, 1457, 3288, 1458, 1459, 896, - 1460, 1457, 895, 1458, 1459, 3279, 3280, 3344, 1457, 3159, - 1458, 1459, 3341, 2959, 3159, 3294, 2961, 3309, 3339, 1460, - 3306, 2886, 3308, 3290, 1441, 1714, 1089, 3316, 3318, 3955, - 2579, 3342, 2791, 1713, 3962, 3260, 2790, 3559, 3326, 3241, - 1460, 2935, 2474, 3323, 3324, 3272, 3325, 2786, 69, 3327, - 46, 3329, 3926, 3331, 1722, 1718, 3992, 2785, 890, 1457, - 887, 1458, 1459, 3632, 1457, 3633, 1458, 1459, 3634, 1719, - 1457, 3098, 1458, 1459, 3099, 3975, 3976, 1512, 886, 2595, - 3977, 1512, 2188, 2600, 1457, 2784, 1458, 1459, 1457, 1437, - 1458, 1459, 1434, 4067, 2342, 2343, 1721, 2033, 1720, 1457, - 3251, 1458, 1459, 96, 2783, 36, 2604, 35, 2605, 1457, - 3429, 1458, 1459, 34, 2613, 33, 32, 3433, 2615, 2616, - 26, 25, 24, 23, 22, 2782, 29, 2622, 2623, 2624, - 2625, 2626, 2627, 2628, 2629, 2630, 2631, 1457, 2633, 1458, - 1459, 2853, 2856, 2857, 2858, 2854, 19, 2855, 2859, 21, - 3162, 3492, 3493, 20, 18, 730, 1457, 2381, 1458, 1459, - 3263, 2639, 2640, 2641, 2642, 2643, 4089, 2645, 4134, 3317, - 3507, 2647, 123, 55, 3474, 2652, 2653, 1457, 2654, 1458, - 1459, 2657, 3467, 2658, 2660, 2662, 2663, 2664, 2665, 2666, - 2667, 2669, 2671, 2672, 2673, 2675, 52, 2677, 2678, 2680, - 2682, 2684, 2686, 2688, 2690, 2692, 2694, 2696, 2698, 2700, - 2702, 2704, 2706, 2708, 2710, 2712, 2714, 2715, 2716, 2383, - 2718, 3499, 2720, 3502, 2722, 2723, 3496, 2725, 2727, 2729, - 3281, 3278, 3436, 2732, 3438, 3439, 3440, 2736, 3501, 3479, - 3282, 2741, 2742, 2743, 2744, 3508, 50, 3524, 131, 3526, - 130, 3462, 53, 3464, 2755, 2756, 2757, 2758, 2759, 2760, - 3518, 3519, 2764, 2765, 1049, 3311, 3312, 1055, 1055, 1460, - 2767, 3459, 3460, 1460, 1008, 2773, 2290, 1460, 49, 1009, - 1203, 2776, 2777, 2778, 2779, 2780, 3489, 47, 31, 2096, - 30, 17, 2787, 2788, 16, 2789, 15, 14, 2792, 2794, - 2347, 13, 2796, 12, 11, 3503, 3504, 7, 3569, 3570, - 6, 39, 2808, 3552, 38, 37, 28, 3556, 3557, 3558, - 27, 40, 1460, 4, 2922, 2476, 1460, 0, 3571, 0, - 1460, 0, 0, 0, 1460, 0, 0, 0, 1460, 2853, - 2856, 2857, 2858, 2854, 0, 2855, 2859, 0, 0, 0, - 0, 0, 0, 3587, 2781, 3548, 3549, 0, 2772, 1460, - 0, 0, 2771, 0, 966, 967, 968, 969, 970, 971, + 1488, 1204, 1679, 1210, 2561, 4046, 1725, 2119, 2108, 2109, + 2110, 2111, 2121, 2112, 2113, 2114, 2126, 2122, 2115, 2116, + 2123, 2124, 2125, 2117, 2118, 2120, 2305, 2306, 164, 2382, + 101, 3488, 1725, 2196, 2560, 1460, 2520, 1457, 2821, 1458, + 1459, 102, 1457, 2302, 1458, 1459, 2371, 2731, 1725, 3225, + 3224, 104, 105, 103, 4044, 1725, 110, 1457, 2519, 1458, + 1459, 1725, 1460, 1433, 2356, 2300, 2384, 109, 110, 108, + 2336, 2412, 104, 105, 3222, 3223, 3220, 3221, 103, 109, + 2194, 108, 3220, 3219, 2067, 2304, 2848, 1725, 2307, 2308, + 2205, 2577, 2956, 1830, 2937, 3872, 1725, 1460, 2930, 2931, + 3829, 1088, 2824, 2823, 2869, 2022, 1457, 2869, 1458, 1459, + 1988, 2604, 1457, 3828, 1458, 1459, 2421, 2422, 2423, 2424, + 3919, 1725, 2416, 1950, 2417, 2418, 2419, 2420, 2406, 1942, + 1038, 2407, 1460, 1932, 1088, 2323, 2335, 1725, 2840, 2388, + 2427, 2428, 2429, 2430, 1928, 2346, 1460, 3917, 1725, 1725, + 3575, 2347, 2604, 1725, 2101, 1725, 2341, 1924, 2342, 2349, + 2278, 2279, 2280, 2281, 2282, 2441, 1923, 2870, 2410, 1460, + 2870, 1922, 1457, 1460, 1458, 1459, 2487, 2872, 2369, 1460, + 2577, 2447, 3914, 1725, 1830, 1829, 3187, 2393, 2394, 2392, + 1773, 1772, 2934, 1072, 1740, 1256, 2577, 2409, 2408, 1457, + 2912, 1458, 1459, 1460, 86, 44, 45, 88, 3157, 2840, + 2848, 1460, 2847, 2411, 1073, 2484, 2325, 3503, 2457, 3483, + 2499, 2600, 2205, 3338, 92, 1456, 3485, 4000, 48, 76, + 77, 2599, 74, 78, 1457, 3972, 1458, 1459, 109, 2824, + 2442, 75, 2431, 2433, 2434, 2438, 1460, 2848, 3436, 3222, + 2460, 2456, 3131, 2492, 3896, 1725, 2495, 2395, 2496, 4107, + 2468, 1460, 2604, 2731, 3457, 1725, 165, 2848, 2512, 1457, + 62, 1458, 1459, 177, 2636, 2442, 2491, 2494, 2498, 2635, + 2490, 3483, 95, 1457, 2498, 1458, 1459, 2481, 1127, 1725, + 2364, 1729, 1128, 2326, 2516, 2513, 3450, 1725, 2517, 2518, + 2101, 2044, 1868, 2028, 1460, 1974, 1457, 1456, 1458, 1459, + 1457, 1460, 1458, 1459, 185, 1760, 1457, 3532, 1458, 1459, + 1110, 1109, 1726, 1728, 1027, 95, 1460, 1903, 83, 2582, + 4128, 3447, 1725, 1460, 2598, 4072, 4015, 2523, 3860, 1732, + 1457, 3826, 1458, 1459, 1460, 3247, 3445, 1725, 1457, 3688, + 1458, 1459, 3548, 1512, 1460, 1512, 3545, 166, 171, 168, + 174, 175, 176, 178, 180, 181, 182, 183, 3533, 3534, + 3535, 2594, 3976, 184, 186, 187, 188, 3526, 1904, 1905, + 1906, 3349, 4126, 1457, 3348, 1458, 1459, 1832, 2554, 3407, + 1725, 2440, 1460, 2302, 3294, 2904, 2301, 1757, 1457, 1460, + 1458, 1459, 95, 3249, 1460, 3245, 2938, 2437, 2432, 2426, + 2903, 3405, 1725, 2425, 1957, 2597, 1774, 1200, 3401, 1725, + 1460, 1863, 51, 54, 57, 56, 59, 1859, 73, 3398, + 1725, 82, 79, 1460, 1828, 121, 3495, 3496, 2569, 3396, + 1725, 1457, 1460, 1458, 1459, 3298, 3861, 2455, 1457, 2339, + 1458, 1459, 4100, 2575, 3536, 61, 91, 90, 2904, 2024, + 71, 72, 58, 1457, 3980, 1458, 1459, 1460, 80, 81, + 1457, 3901, 1458, 1459, 3498, 3241, 3240, 2586, 3956, 3239, + 1460, 1457, 3157, 1458, 1459, 3833, 2917, 2555, 2068, 3394, + 1725, 1457, 1460, 1458, 1459, 3179, 3654, 3862, 3653, 1913, + 3180, 3537, 3538, 3539, 3177, 3392, 1725, 2588, 3501, 3178, + 667, 63, 64, 3500, 65, 66, 67, 68, 3390, 1725, + 3176, 2025, 3181, 1460, 2857, 2858, 3175, 3388, 1725, 1457, + 2355, 1458, 1459, 1737, 1958, 2611, 1457, 1460, 1458, 1459, + 2345, 1457, 3489, 1458, 1459, 2587, 3652, 2589, 1460, 1899, + 3136, 1985, 3386, 1725, 3135, 1460, 2592, 1457, 2593, 1458, + 1459, 1460, 1040, 2595, 3940, 3384, 1725, 1996, 3667, 1460, + 1457, 2775, 1458, 1459, 2000, 60, 1460, 3382, 1725, 1457, + 3669, 1458, 1459, 1460, 728, 2011, 2012, 2013, 2014, 2015, + 2016, 2017, 3476, 1460, 3144, 2645, 1900, 1901, 1902, 1460, + 3475, 3147, 3149, 2807, 1457, 1043, 1458, 1459, 3380, 1725, + 3150, 1041, 1973, 1044, 3479, 2098, 2810, 1457, 1460, 1458, + 1459, 1026, 3378, 1725, 1010, 3218, 2887, 2908, 2096, 1457, + 1166, 1458, 1459, 3376, 1725, 1165, 2144, 2563, 2564, 1460, + 3374, 1725, 2566, 3314, 2845, 2846, 3372, 1725, 2808, 1460, + 2145, 2567, 2903, 2382, 3370, 1725, 1026, 2865, 1742, 2986, + 1457, 3452, 1458, 1459, 101, 89, 2618, 1460, 3368, 1725, + 2811, 1460, 2813, 1424, 1457, 102, 1458, 1459, 3354, 1725, + 2944, 42, 2067, 2633, 3448, 1457, 2825, 1458, 1459, 2844, + 2862, 129, 1457, 2864, 1458, 1459, 3481, 1460, 1457, 103, + 1458, 1459, 4142, 3336, 1725, 1460, 1457, 101, 1458, 1459, + 1460, 2366, 2367, 1457, 103, 1458, 1459, 3237, 102, 2558, + 1457, 4051, 1458, 1459, 1741, 1697, 3957, 2834, 2798, 3856, + 1457, 3217, 1458, 1459, 2796, 1725, 1457, 2861, 1458, 1459, + 2350, 2547, 2863, 1051, 1052, 2546, 2545, 2890, 2892, 2818, + 2544, 3134, 2794, 1725, 1460, 1457, 3413, 1458, 1459, 3133, + 3459, 2883, 2543, 1691, 2837, 2542, 2581, 2867, 2822, 108, + 2942, 1460, 3925, 3924, 3904, 94, 1457, 1460, 1458, 1459, + 3675, 2047, 2769, 1725, 1460, 3673, 1457, 2871, 1458, 1459, + 2746, 1725, 2874, 1460, 109, 3409, 2881, 2447, 3672, 1460, + 3665, 3664, 2884, 1460, 1457, 3546, 1458, 1459, 1457, 1460, + 1458, 1459, 2953, 1460, 2139, 110, 3469, 2895, 1460, 2140, + 3638, 3480, 3478, 3250, 2482, 2906, 109, 1460, 108, 1846, + 2909, 2910, 1050, 1460, 1457, 2905, 1458, 1459, 2840, 2738, + 1725, 2821, 1457, 110, 1458, 1459, 2913, 1457, 2914, 1458, + 1459, 2918, 2919, 2920, 109, 2200, 2729, 1725, 3037, 1460, + 2637, 2950, 2727, 1725, 4130, 4129, 1851, 2337, 1754, 2714, + 1725, 4130, 1746, 4129, 2996, 2997, 1460, 3946, 2712, 1725, + 3512, 70, 2939, 2940, 2710, 1725, 3, 97, 2708, 1725, + 2929, 1457, 1460, 1458, 1459, 3550, 2949, 1, 2706, 1725, + 1460, 114, 115, 2704, 1725, 1460, 1018, 1427, 1457, 1460, + 1458, 1459, 2702, 1725, 1457, 1460, 1458, 1459, 2700, 1725, + 1460, 1457, 1426, 1458, 1459, 2994, 1460, 2975, 3013, 3516, + 1457, 4061, 1458, 1459, 2978, 2284, 1457, 683, 1458, 1459, + 1457, 1460, 1458, 1459, 2698, 1725, 1457, 2327, 1458, 1459, + 1457, 2041, 1458, 1459, 10, 1457, 2039, 1458, 1459, 9, + 2040, 2696, 1725, 8, 1457, 2317, 1458, 1459, 1695, 4101, + 1457, 4057, 1458, 1459, 4058, 1943, 2951, 2694, 1725, 3014, + 3017, 1933, 3578, 1726, 2324, 2692, 1725, 2252, 3857, 3253, + 2690, 1725, 2488, 3544, 2688, 1725, 1457, 2445, 1458, 1459, + 2686, 1725, 1118, 154, 2404, 2684, 1725, 2405, 4028, 118, + 1076, 2682, 1725, 1457, 117, 1458, 1459, 1121, 1229, 2348, + 2483, 3568, 2888, 2413, 1779, 1460, 2995, 2899, 3039, 1457, + 1460, 1458, 1459, 1777, 1778, 3095, 1776, 1457, 2984, 1458, + 1459, 2985, 1457, 1781, 1458, 1459, 1457, 1780, 1458, 1459, + 3322, 1460, 1457, 2638, 1458, 1459, 3414, 1457, 2032, 1458, + 1459, 718, 1460, 1457, 110, 1458, 1459, 2860, 2998, 712, + 1460, 192, 1768, 1747, 3428, 109, 3015, 108, 1457, 3102, + 1458, 1459, 1160, 3104, 673, 2368, 103, 3226, 3113, 2521, + 679, 1509, 2382, 2372, 2023, 2375, 3132, 1460, 2047, 3030, + 2289, 2875, 2289, 1070, 1062, 2287, 3075, 2287, 1460, 2338, + 2680, 1725, 2812, 1069, 3164, 3346, 87, 3834, 3165, 2382, + 2382, 2382, 2382, 2382, 3473, 2459, 3016, 3143, 3145, 2384, + 3085, 3086, 3087, 3088, 3089, 2827, 2675, 1725, 3148, 2382, + 3141, 3103, 2382, 3105, 3939, 3169, 3112, 2671, 1725, 3666, + 3113, 4013, 3186, 1029, 1460, 3345, 2384, 2384, 2384, 2384, + 2384, 1460, 1457, 1984, 1458, 1459, 2885, 1457, 1743, 1458, + 1459, 1460, 3435, 3130, 3124, 2610, 2384, 2134, 1499, 2384, + 2381, 3139, 2669, 1725, 3633, 2059, 1460, 3137, 1457, 741, + 1458, 1459, 740, 2662, 1725, 738, 3151, 3152, 2814, 1457, + 1460, 1458, 1459, 2841, 1463, 947, 3270, 1457, 2802, 1458, + 1459, 1755, 3168, 1031, 3171, 3172, 3278, 3174, 3170, 2852, + 1460, 3173, 3182, 104, 105, 2850, 1030, 3190, 3188, 2849, + 1460, 3189, 2556, 2389, 1457, 1460, 1458, 1459, 3196, 3342, + 3125, 3127, 3129, 1460, 3497, 1457, 3340, 1458, 1459, 1460, + 3493, 3229, 4053, 3227, 3228, 2383, 2792, 3077, 2379, 3079, + 2820, 3138, 898, 897, 1460, 750, 742, 732, 1460, 960, + 896, 2660, 1725, 895, 3280, 3090, 3091, 3092, 3093, 1460, + 3230, 3231, 3281, 3282, 3272, 2791, 3279, 3154, 3251, 2447, + 3283, 1457, 2959, 1458, 1459, 3295, 2047, 3289, 1457, 1460, + 1458, 1459, 2961, 2533, 3160, 2787, 2886, 3291, 1457, 3160, + 1458, 1459, 1441, 2552, 2553, 2786, 3310, 2557, 1714, 1717, + 2785, 3307, 3309, 1457, 1089, 1458, 1459, 3317, 2784, 2562, + 1460, 3319, 3963, 2580, 2783, 1460, 2565, 1457, 3343, 1458, + 1459, 1713, 3324, 3325, 3327, 3326, 3273, 3970, 3328, 2782, + 3330, 3261, 3332, 2773, 3562, 3242, 2935, 1457, 2475, 1458, + 1459, 69, 2568, 46, 2772, 3934, 4001, 1457, 890, 1458, + 1459, 887, 1457, 3635, 1458, 1459, 3636, 1512, 3637, 3098, + 1457, 1512, 1458, 1459, 2771, 3099, 1457, 3983, 1458, 1459, + 3984, 886, 3985, 2189, 2596, 3252, 1437, 3460, 2601, 3462, + 1434, 1457, 4074, 1458, 1459, 1457, 2034, 1458, 1459, 96, + 3430, 36, 35, 34, 33, 2770, 1457, 3434, 1458, 1459, + 2767, 2605, 32, 2606, 26, 25, 1460, 24, 3318, 2614, + 23, 22, 29, 2616, 2617, 19, 1457, 21, 1458, 1459, + 20, 18, 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630, + 2631, 2632, 3264, 2634, 4096, 3163, 4141, 123, 2382, 55, + 52, 3461, 50, 3463, 3465, 131, 130, 1457, 53, 1458, + 1459, 3510, 1457, 3470, 1458, 1459, 2640, 2641, 2642, 2643, + 2644, 49, 2646, 1460, 3477, 1203, 2648, 47, 31, 3482, + 2653, 2654, 30, 2655, 17, 2384, 2658, 16, 2659, 2661, + 2663, 2664, 2665, 2666, 2667, 2668, 2670, 2672, 2673, 2674, + 2676, 2762, 2678, 2679, 2681, 2683, 2685, 2687, 2689, 2691, + 2693, 2695, 2697, 2699, 2701, 2703, 2705, 2707, 2709, 2711, + 2713, 2715, 2716, 2717, 3502, 2719, 3511, 2721, 3282, 2723, + 2724, 3279, 2726, 2728, 2730, 3283, 3499, 3505, 2733, 3527, + 3504, 3529, 2737, 15, 14, 13, 2742, 2743, 2744, 2745, + 3572, 3573, 12, 1457, 11, 1458, 1459, 7, 2755, 2756, + 2757, 2758, 2759, 2760, 2761, 1460, 1008, 2765, 2766, 3467, + 3437, 1009, 3439, 3440, 3441, 2768, 6, 3521, 3522, 39, + 2774, 2097, 38, 37, 1723, 1719, 2777, 2778, 2779, 2780, + 2781, 28, 27, 40, 4, 2922, 2477, 2788, 2789, 1720, + 2790, 3492, 0, 2793, 2795, 2348, 0, 2797, 0, 0, + 1457, 0, 1458, 1459, 1460, 0, 0, 2809, 3312, 3313, + 3506, 3507, 1460, 0, 2343, 2344, 1722, 0, 1721, 1460, + 3555, 3574, 0, 0, 3559, 3560, 3561, 0, 1460, 0, + 0, 0, 0, 0, 0, 3590, 0, 3551, 3552, 0, + 2754, 0, 0, 0, 0, 0, 966, 967, 968, 969, + 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, + 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, + 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, + 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1460, 2753, + 0, 0, 1457, 1460, 1458, 1459, 0, 2752, 0, 3641, + 1460, 3642, 3643, 3644, 2751, 1460, 2866, 0, 0, 3651, + 0, 0, 3658, 2750, 3660, 0, 0, 1460, 0, 0, + 0, 1460, 0, 0, 3631, 2853, 2856, 2857, 2858, 2854, + 3661, 2855, 2859, 0, 0, 0, 3164, 0, 87, 1460, + 3164, 1457, 0, 1458, 1459, 0, 0, 0, 0, 1457, + 0, 1458, 1459, 0, 1723, 1719, 1457, 0, 1458, 1459, + 0, 2098, 3690, 0, 0, 1457, 0, 1458, 1459, 1720, + 0, 3595, 3662, 2749, 2096, 42, 0, 3671, 2748, 3670, + 2915, 1460, 0, 3682, 0, 2747, 3678, 3680, 0, 0, + 2741, 0, 0, 0, 1715, 1716, 1722, 0, 1721, 0, + 1460, 0, 2740, 0, 0, 3840, 2739, 0, 2853, 2856, + 2857, 2858, 2854, 3694, 2855, 2859, 0, 0, 3495, 3496, + 0, 0, 0, 0, 2736, 1457, 0, 1458, 1459, 0, + 1457, 0, 1458, 1459, 0, 0, 0, 1457, 0, 1458, + 1459, 0, 1457, 0, 1458, 1459, 2964, 2965, 2966, 2967, + 2968, 2969, 3832, 3831, 1457, 3847, 1458, 1459, 1457, 0, + 1458, 1459, 0, 0, 3852, 3851, 2735, 0, 0, 3859, + 0, 3830, 0, 2047, 2979, 0, 1457, 3898, 1458, 1459, + 3899, 0, 0, 0, 0, 2734, 3684, 0, 2098, 3902, + 3025, 3026, 3027, 3028, 3029, 3659, 2987, 0, 0, 0, + 0, 2096, 0, 0, 0, 0, 0, 0, 0, 0, + 3034, 0, 3622, 3842, 3843, 3844, 0, 0, 1457, 0, + 1458, 1459, 0, 0, 0, 3160, 3691, 3692, 0, 0, + 3905, 0, 3164, 0, 3908, 0, 3835, 1457, 3686, 1458, + 1459, 0, 0, 0, 0, 0, 1530, 1531, 1532, 1533, + 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, + 1544, 1545, 1546, 1547, 1548, 1550, 1551, 1552, 1553, 1554, + 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, + 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, + 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, + 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, + 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, + 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, + 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, + 1625, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, + 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1648, 1649, 1650, + 1651, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, + 1674, 1675, 1676, 1677, 1678, 730, 3950, 3163, 3947, 3903, + 3932, 3163, 3931, 0, 3922, 0, 1460, 0, 0, 3964, + 1460, 3928, 0, 3930, 1460, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, + 0, 0, 0, 0, 3949, 0, 0, 3166, 0, 0, + 0, 1460, 0, 0, 0, 0, 0, 0, 0, 0, + 1460, 0, 0, 0, 0, 3184, 3966, 3953, 0, 3969, + 0, 0, 0, 0, 42, 0, 3839, 0, 0, 0, + 0, 0, 3971, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1460, 0, 0, 0, 3938, 0, + 0, 2732, 0, 0, 0, 2725, 0, 0, 0, 2722, + 0, 0, 0, 0, 1049, 0, 0, 1055, 1055, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3989, 0, + 0, 3990, 0, 4010, 0, 0, 2720, 0, 87, 0, + 0, 0, 0, 0, 3955, 2718, 0, 0, 0, 0, + 0, 3999, 0, 1457, 4006, 1458, 1459, 1457, 0, 1458, + 1459, 1457, 0, 1458, 1459, 0, 3238, 4016, 0, 0, + 0, 4041, 0, 0, 0, 42, 0, 4027, 3974, 2677, + 4019, 4024, 4021, 4014, 4020, 4018, 4023, 4022, 1457, 0, + 1458, 1459, 3276, 3316, 3859, 4030, 0, 1457, 0, 1458, + 1459, 0, 0, 3163, 4049, 4052, 3290, 0, 0, 4070, + 4060, 4065, 0, 0, 0, 3333, 3334, 0, 3335, 0, + 3337, 3339, 0, 0, 4041, 0, 3308, 4078, 4080, 3311, + 0, 1457, 4091, 1458, 1459, 3347, 0, 0, 0, 0, + 3351, 3352, 3353, 3355, 3356, 3357, 3358, 3359, 3360, 3361, + 3362, 3363, 3364, 3365, 3366, 3367, 3369, 3371, 3373, 3375, + 3377, 3379, 3381, 3383, 3385, 3387, 3389, 3391, 3393, 3395, + 3397, 3399, 3400, 3402, 3403, 3404, 3406, 1984, 4114, 3408, + 4110, 3410, 3411, 3412, 2098, 4124, 3416, 3417, 3418, 3419, + 3420, 3421, 3422, 3423, 3424, 3425, 3426, 2096, 4127, 4041, + 4125, 4123, 4121, 4135, 4120, 3433, 4111, 4143, 4095, 3438, + 4090, 4011, 190, 3442, 3443, 0, 3444, 3446, 3160, 3449, + 3451, 4149, 3453, 3454, 3455, 3456, 4151, 1460, 0, 3978, + 0, 1460, 3464, 0, 0, 0, 129, 3988, 151, 0, + 4160, 4161, 2098, 4158, 3899, 4159, 0, 1460, 0, 172, + 0, 0, 4094, 0, 0, 2096, 0, 0, 0, 0, + 3962, 1460, 1796, 0, 0, 0, 3486, 3487, 0, 0, + 3491, 0, 1460, 0, 0, 0, 190, 1460, 0, 0, + 162, 3466, 0, 0, 0, 0, 150, 2928, 1460, 0, + 4108, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 129, 0, 151, 0, 0, 169, 0, 0, 170, 0, + 0, 0, 2657, 172, 0, 0, 2656, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4086, 138, 139, 161, + 160, 189, 2652, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 162, 0, 2650, 0, 0, 0, + 150, 0, 0, 0, 0, 0, 0, 2615, 0, 0, + 0, 0, 2609, 0, 1457, 3525, 1458, 1459, 1457, 169, + 1458, 1459, 170, 2603, 0, 0, 3566, 0, 0, 0, + 0, 0, 0, 0, 1457, 3540, 1458, 1459, 3541, 3542, + 3543, 1854, 1855, 161, 160, 189, 0, 0, 1457, 0, + 1458, 1459, 0, 0, 0, 0, 0, 0, 1784, 1457, + 0, 1458, 1459, 0, 1457, 0, 1458, 1459, 0, 0, + 0, 3585, 0, 0, 3589, 1457, 0, 1458, 1459, 0, + 0, 0, 155, 136, 158, 143, 135, 0, 156, 157, + 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, + 0, 0, 3601, 0, 179, 144, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, + 145, 140, 141, 142, 146, 0, 0, 0, 0, 0, + 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, + 148, 0, 1797, 0, 0, 0, 155, 1856, 158, 0, + 1853, 0, 156, 157, 0, 0, 0, 0, 0, 173, + 0, 0, 0, 0, 0, 0, 3624, 0, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3632, + 0, 0, 0, 0, 0, 0, 0, 3639, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1810, 1813, 1814, 1815, 1816, + 1817, 1818, 0, 1819, 1820, 1822, 1823, 1821, 1824, 1825, + 1798, 1799, 1800, 1801, 1782, 1783, 1811, 0, 1785, 164, + 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 0, + 0, 1795, 1802, 1803, 1804, 1805, 0, 1806, 1807, 1808, + 1809, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1461, 0, 0, + 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3848, 0, 0, 0, 1518, 0, + 0, 0, 0, 3855, 0, 159, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3865, 3866, 3867, 0, 3869, 0, 3870, + 3871, 0, 0, 0, 3874, 3875, 3876, 3877, 3878, 3879, + 3880, 3881, 3882, 3883, 3884, 3885, 3886, 3887, 3888, 3889, + 3890, 3891, 3892, 3893, 3894, 3895, 0, 3897, 3900, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, + 0, 0, 0, 3909, 3910, 3911, 3912, 3913, 3915, 3916, + 3918, 3920, 3921, 3923, 0, 0, 0, 3927, 0, 0, + 0, 3929, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 152, 0, 0, 153, 0, 0, + 0, 0, 0, 0, 0, 3954, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1812, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, + 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, + 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 185, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 165, 0, 0, 0, 0, 0, 0, 177, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 166, 171, + 168, 174, 175, 176, 178, 180, 181, 182, 183, 0, + 0, 0, 0, 0, 184, 186, 187, 188, 0, 185, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1745, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 166, 171, 168, 174, 175, 176, 178, 180, + 181, 182, 183, 0, 0, 0, 0, 0, 184, 186, + 187, 188, 0, 0, 1833, 0, 0, 0, 1796, 0, + 3979, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3975, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3994, 0, 0, 0, 0, 0, + 3997, 0, 3998, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4009, 0, 0, 0, 0, 0, 0, + 0, 0, 943, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4035, + 4036, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4043, 4045, 4047, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 195, 4073, + 0, 195, 1989, 0, 0, 716, 0, 0, 0, 0, + 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 195, 0, 0, 1784, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1008, 4092, 2291, 195, 0, 1009, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2097, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 722, 195, 722, 0, 0, 0, 0, 4115, + 4117, 4119, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4140, 0, 0, 0, 0, 0, 1797, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4152, 4153, 0, 0, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, - 1002, 1003, 1004, 1005, 1006, 1007, 1457, 2770, 1458, 1459, - 1457, 2769, 1458, 1459, 1457, 2766, 1458, 1459, 0, 2761, - 1460, 0, 0, 2754, 0, 0, 0, 0, 3648, 1460, - 3652, 3653, 0, 0, 1460, 0, 3638, 0, 3639, 3640, - 3641, 3628, 0, 0, 2753, 1460, 0, 0, 0, 3654, - 1460, 0, 0, 3163, 0, 87, 0, 3163, 0, 1457, - 0, 1458, 1459, 1457, 0, 1458, 1459, 1457, 0, 1458, - 1459, 1457, 0, 1458, 1459, 1457, 0, 1458, 1459, 0, - 0, 3592, 0, 0, 0, 2097, 0, 2095, 0, 3683, - 1460, 3675, 3655, 0, 3664, 3663, 1457, 0, 1458, 1459, - 0, 1460, 0, 3671, 3673, 2752, 1722, 1718, 0, 0, - 0, 0, 0, 0, 2751, 0, 1460, 42, 0, 2750, - 0, 1719, 3833, 0, 0, 0, 0, 0, 0, 3687, - 2749, 0, 0, 0, 0, 2748, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1715, 1716, 1721, 0, - 1720, 0, 0, 0, 0, 0, 0, 1457, 0, 1458, - 1459, 0, 3825, 3824, 0, 0, 1457, 3852, 1458, 1459, - 0, 1457, 3840, 1458, 1459, 2747, 3823, 0, 0, 3844, - 3845, 0, 1457, 0, 1458, 1459, 2746, 1457, 0, 1458, - 1459, 0, 0, 0, 3891, 3025, 3026, 3027, 3028, 3029, - 3892, 2740, 0, 3677, 3835, 3836, 3837, 0, 0, 0, - 0, 0, 2097, 0, 2095, 3034, 3895, 0, 0, 3684, - 3685, 0, 0, 3619, 0, 0, 0, 1457, 0, 1458, - 1459, 0, 0, 0, 0, 0, 0, 0, 1457, 0, - 1458, 1459, 0, 0, 0, 3163, 0, 3159, 0, 3679, - 3898, 0, 3828, 1457, 3901, 1458, 1459, 0, 0, 1530, - 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, - 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1550, 1551, - 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, - 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, - 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, - 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, - 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, - 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, - 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, - 1622, 1623, 1624, 1625, 1627, 1628, 1629, 1630, 1631, 1632, - 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, - 1648, 1649, 1650, 1651, 1665, 1666, 1667, 1668, 1669, 1670, - 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 3942, 3162, - 3896, 3939, 3924, 3162, 3921, 3922, 0, 3923, 0, 0, - 0, 1460, 3956, 0, 0, 1460, 0, 0, 0, 1460, - 0, 0, 0, 0, 1460, 0, 0, 0, 3941, 0, - 87, 0, 0, 3165, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1460, 0, 0, 0, - 1460, 3183, 0, 0, 3945, 0, 0, 1460, 0, 3958, - 0, 0, 0, 0, 0, 0, 3963, 3961, 3832, 0, - 0, 0, 0, 0, 0, 0, 0, 1460, 0, 0, - 0, 0, 0, 3930, 0, 0, 0, 0, 0, 0, - 0, 0, 42, 0, 0, 0, 2739, 1461, 0, 0, - 2738, 0, 0, 0, 2735, 0, 0, 0, 0, 2734, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3981, 0, 0, 3982, 4001, 0, 0, 1518, 0, - 87, 2733, 0, 0, 0, 2731, 3947, 0, 0, 0, - 0, 0, 2724, 0, 0, 0, 3990, 3997, 1457, 0, - 1458, 1459, 1457, 0, 1458, 1459, 1457, 0, 1458, 1459, - 4007, 1457, 2721, 1458, 1459, 0, 4005, 3852, 4021, 0, - 3966, 4018, 0, 4010, 4015, 4012, 4011, 0, 4009, 3315, - 4014, 4013, 0, 1457, 0, 1458, 1459, 1457, 0, 1458, - 1459, 3162, 42, 4042, 1457, 0, 1458, 1459, 4045, 4063, - 0, 3332, 3333, 0, 3334, 0, 3336, 3338, 4053, 4058, - 0, 0, 4032, 4071, 1457, 0, 1458, 1459, 0, 0, - 4073, 3346, 1460, 0, 0, 4084, 3350, 3351, 3352, 3354, - 3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362, 3363, 3364, - 3365, 3366, 3368, 3370, 3372, 3374, 3376, 3378, 3380, 3382, - 3384, 3386, 3388, 3390, 3392, 3394, 3396, 3398, 3399, 3401, - 3402, 3403, 3405, 4088, 4032, 3407, 1983, 3409, 3410, 3411, - 4103, 4116, 3415, 3416, 3417, 3418, 3419, 3420, 3421, 3422, - 3423, 3424, 3425, 4118, 2097, 4120, 2095, 4114, 4117, 4107, - 4113, 3432, 4104, 4083, 4002, 3437, 1460, 4128, 0, 3441, - 3442, 0, 3443, 3445, 4136, 3448, 3450, 2719, 3452, 3453, - 3454, 3455, 4144, 4142, 3970, 3159, 3461, 0, 0, 0, - 1460, 0, 3980, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1460, 4153, 4154, 0, 4152, 1460, 0, 0, - 3892, 4032, 2097, 1460, 2095, 0, 4151, 1460, 3954, 0, - 0, 3483, 3484, 0, 0, 3488, 0, 1460, 0, 1457, - 0, 1458, 1459, 1460, 0, 0, 0, 0, 1460, 4079, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2717, 4101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2676, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1744, 2656, 0, 0, - 0, 0, 2655, 0, 0, 0, 0, 0, 2651, 0, - 0, 0, 2649, 1457, 0, 1458, 1459, 0, 86, 44, - 45, 88, 2614, 0, 0, 0, 0, 0, 2608, 0, - 0, 0, 0, 2602, 1832, 0, 0, 1457, 92, 1458, - 1459, 3563, 48, 76, 77, 0, 74, 78, 0, 1457, - 0, 1458, 1459, 0, 1457, 75, 1458, 1459, 0, 0, - 1457, 0, 1458, 1459, 1457, 0, 1458, 1459, 0, 0, - 943, 0, 0, 0, 1457, 0, 1458, 1459, 0, 0, - 1457, 0, 1458, 1459, 62, 1457, 3582, 1458, 1459, 3586, - 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3598, 0, 0, - 0, 0, 0, 0, 0, 0, 195, 0, 0, 195, - 0, 0, 0, 716, 0, 0, 0, 0, 722, 0, - 0, 0, 83, 0, 0, 0, 0, 0, 0, 195, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1988, 0, 0, 195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3621, 0, 0, 0, 0, 0, 0, 0, 0, - 722, 195, 722, 0, 3629, 0, 0, 0, 0, 0, - 0, 0, 3636, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 54, 57, 56, - 59, 0, 73, 0, 0, 82, 79, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, - 91, 90, 0, 0, 71, 72, 58, 0, 0, 0, - 0, 0, 80, 81, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 63, 64, 3841, 65, 66, - 67, 68, 0, 0, 0, 0, 3848, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3858, 3859, 3860, 0, - 3862, 0, 3863, 3864, 0, 0, 0, 3867, 3868, 3869, - 3870, 3871, 3872, 3873, 3874, 3875, 3876, 3877, 3878, 3879, - 3880, 3881, 3882, 3883, 3884, 3885, 3886, 3887, 3888, 60, - 3890, 3893, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2053, 2054, 2055, 2056, 3902, 3903, 3904, 3905, - 3906, 3908, 3909, 3911, 3913, 3914, 3916, 2064, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2103, 2104, 3946, 0, 0, 0, 2127, 1055, - 1055, 2131, 2132, 0, 0, 0, 2137, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 0, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, - 2158, 0, 2160, 0, 0, 0, 2182, 2183, 2184, 2185, - 2186, 2187, 2189, 0, 2194, 0, 2196, 2197, 2198, 0, - 2200, 2201, 2202, 0, 2205, 2206, 2207, 2208, 2209, 2210, - 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, - 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, - 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, - 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, - 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, - 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, - 2274, 2275, 2276, 0, 0, 0, 0, 0, 2282, 94, - 2284, 0, 2291, 2292, 2293, 2294, 2295, 2296, 1055, 0, + 1002, 1003, 1004, 1005, 1006, 1007, 0, 0, 0, 0, + 0, 1810, 1813, 1814, 1815, 1816, 1817, 1818, 0, 1819, + 1820, 1822, 1823, 1821, 1824, 1825, 1798, 1799, 1800, 1801, + 1782, 1783, 1811, 0, 1785, 0, 1786, 1787, 1788, 1789, + 1790, 1791, 1792, 1793, 1794, 0, 0, 1795, 1802, 1803, + 1804, 1805, 0, 1806, 1807, 1808, 1809, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2054, 2055, 2056, 2057, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2065, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2104, 2105, 0, 0, 0, 0, 2128, 1055, + 1055, 2132, 2133, 0, 0, 0, 2138, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, + 2159, 0, 2161, 0, 0, 0, 2183, 2184, 2185, 2186, + 2187, 2188, 2190, 0, 2195, 0, 2197, 2198, 2199, 0, + 2201, 2202, 2203, 0, 2206, 2207, 2208, 2209, 2210, 2211, + 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, + 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, + 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, + 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, + 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, + 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, + 2275, 2276, 2277, 1812, 0, 0, 0, 0, 2283, 0, + 2285, 0, 2292, 2293, 2294, 2295, 2296, 2297, 1055, 0, 1055, 1055, 1055, 1055, 1055, 0, 0, 0, 0, 0, - 0, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 0, - 2317, 2318, 2319, 2320, 2321, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2928, 3971, - 1055, 1795, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 129, 0, 151, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3987, 172, 0, 2361, 2362, 0, 3988, - 3989, 0, 0, 0, 0, 70, 0, 0, 0, 0, - 1698, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4000, 2400, 0, 0, 162, 0, 0, 0, 0, - 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 195, 0, 195, 0, 4026, 4027, 0, - 169, 0, 0, 170, 0, 0, 0, 0, 0, 0, - 0, 4034, 4036, 4038, 0, 0, 0, 0, 0, 665, - 0, 0, 1853, 1854, 161, 160, 189, 0, 0, 0, - 0, 0, 722, 2442, 722, 722, 4066, 0, 0, 1013, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 722, 195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1783, 0, 0, - 0, 0, 0, 0, 4085, 0, 0, 0, 0, 0, - 0, 1084, 0, 1504, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1849, 0, 0, 0, 4108, 4110, - 4112, 0, 0, 0, 0, 0, 0, 129, 0, 151, - 0, 0, 0, 0, 0, 0, 0, 155, 1855, 158, - 172, 1852, 0, 156, 157, 0, 0, 0, 0, 0, - 173, 4133, 0, 0, 0, 0, 0, 0, 0, 179, - 0, 1796, 0, 0, 0, 0, 0, 0, 0, 4145, - 4146, 162, 0, 0, 0, 0, 0, 150, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 169, 0, 0, 170, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1853, 1854, - 161, 160, 189, 0, 1809, 1812, 1813, 1814, 1815, 1816, - 1817, 0, 1818, 1819, 1821, 1822, 1820, 1823, 1824, 1797, - 1798, 1799, 1800, 1781, 1782, 1810, 0, 1784, 0, 1785, - 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 0, 0, - 1794, 1801, 1802, 1803, 1804, 0, 1805, 1806, 1807, 1808, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1504, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 155, 1855, 158, 0, 1852, 0, 156, - 157, 0, 0, 0, 0, 0, 173, 0, 0, 0, - 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, - 0, 2612, 195, 0, 0, 0, 722, 722, 0, 0, - 0, 2618, 2619, 2620, 2621, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, - 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 722, 0, 0, 195, - 0, 0, 0, 0, 1518, 0, 0, 0, 0, 0, - 0, 722, 0, 0, 0, 0, 0, 0, 195, 0, + 0, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 0, + 2318, 2319, 2320, 2321, 2322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 722, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1504, 0, - 164, 0, 0, 0, 722, 722, 1811, 722, 0, 722, - 722, 0, 722, 722, 722, 722, 722, 722, 0, 152, - 0, 0, 153, 0, 0, 1504, 0, 0, 1504, 722, - 1504, 195, 0, 0, 0, 0, 0, 0, 0, 0, + 1055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 195, 165, 0, 0, 0, 0, 0, 0, 177, - 0, 0, 0, 0, 722, 0, 195, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2362, 2363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 722, 0, 195, 195, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 159, 0, 0, 195, - 185, 0, 0, 0, 0, 0, 195, 0, 0, 1744, - 0, 0, 0, 0, 0, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 722, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, + 0, 0, 0, 2401, 0, 1850, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, + 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 166, 171, 168, 174, 175, 176, 178, - 180, 181, 182, 183, 0, 0, 0, 0, 0, 184, - 186, 187, 188, 1204, 0, 1210, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 195, 0, 195, 0, 0, + 0, 0, 162, 0, 2443, 0, 0, 95, 150, 0, + 1008, 0, 0, 0, 948, 1009, 961, 962, 963, 949, + 0, 0, 950, 951, 0, 952, 0, 169, 0, 0, + 170, 0, 0, 0, 722, 0, 722, 722, 0, 957, + 964, 965, 0, 0, 0, 0, 0, 0, 0, 1854, + 1855, 161, 160, 189, 0, 0, 722, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1504, 0, 0, 3284, 3285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 152, 0, 0, 153, 0, + 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, + 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, + 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, + 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, + 1006, 1007, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 155, 1856, 158, 0, 1853, 0, + 156, 157, 0, 0, 0, 0, 0, 173, 0, 0, + 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, + 0, 0, 0, 3286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1433, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, - 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 185, 0, 0, 0, - 0, 722, 722, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 722, 0, 0, 0, 0, 0, - 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2991, 0, 166, - 171, 168, 174, 175, 176, 178, 180, 181, 182, 183, - 0, 0, 0, 0, 0, 184, 186, 187, 188, 1055, - 0, 0, 3018, 3019, 3020, 0, 0, 3022, 0, 0, - 3024, 0, 722, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1504, 0, 0, 0, 0, 0, 0, 0, - 3031, 3032, 3033, 0, 0, 0, 0, 0, 0, 0, - 1504, 0, 3038, 0, 0, 3040, 3041, 3042, 0, 0, - 0, 3043, 3044, 0, 0, 3045, 0, 3046, 0, 0, - 0, 0, 0, 0, 3047, 0, 3048, 0, 0, 0, - 3049, 0, 3050, 0, 0, 3051, 0, 3052, 0, 3053, - 0, 3054, 0, 3055, 0, 3056, 0, 3057, 0, 3058, - 0, 3059, 0, 3060, 0, 3061, 0, 3062, 0, 3063, - 0, 3064, 0, 3065, 0, 3066, 0, 3067, 0, 3068, - 0, 0, 0, 3069, 0, 3070, 0, 3071, 0, 0, - 3072, 0, 3073, 0, 3074, 0, 2254, 3076, 0, 0, - 3078, 0, 0, 3080, 3081, 3082, 3083, 0, 0, 0, - 0, 3084, 2254, 2254, 2254, 2254, 2254, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3094, 0, 0, - 0, 0, 0, 0, 0, 3107, 0, 0, 3111, 0, - 1055, 0, 0, 0, 2302, 0, 0, 3114, 3115, 3116, - 3117, 3118, 3119, 0, 0, 0, 3120, 3121, 0, 3122, - 0, 3123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1756, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, - 0, 0, 0, 0, 722, 0, 0, 0, 1773, 0, - 0, 0, 0, 0, 0, 0, 3154, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, - 0, 0, 722, 0, 0, 0, 0, 0, 0, 0, - 0, 3184, 0, 0, 0, 0, 195, 0, 0, 0, - 722, 0, 0, 2302, 195, 0, 195, 0, 195, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1912, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1957, 0, 0, 0, - 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1984, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 722, 0, 1995, - 0, 0, 0, 722, 0, 0, 1999, 0, 0, 942, - 0, 0, 0, 0, 0, 0, 0, 2010, 2011, 2012, - 2013, 2014, 2015, 2016, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3340, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 722, 0, 0, 3349, 0, 722, 0, 0, 0, 722, - 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 701, 0, 0, 0, 0, 0, 721, 0, 0, + 0, 3287, 3288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, - 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 195, 195, 0, 0, 195, 0, - 195, 0, 0, 0, 0, 0, 0, 0, 0, 721, - 195, 721, 0, 0, 0, 0, 0, 195, 0, 0, + 0, 0, 0, 0, 0, 0, 1504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2613, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2619, 2620, 2621, 2622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, - 0, 0, 722, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 195, 913, 0, 0, 722, 722, + 0, 917, 0, 0, 0, 914, 915, 0, 0, 0, + 916, 918, 0, 0, 0, 1518, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 722, 0, + 0, 195, 0, 0, 0, 0, 0, 159, 0, 0, + 0, 0, 0, 722, 0, 0, 0, 0, 0, 0, + 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2046, 95, 0, 0, 1008, 0, 0, - 0, 948, 1009, 961, 962, 963, 949, 0, 0, 950, - 951, 0, 952, 0, 0, 0, 0, 0, 0, 0, - 0, 1504, 0, 2302, 0, 0, 957, 964, 965, 0, + 0, 0, 0, 0, 0, 0, 0, 722, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1504, 0, 0, 0, 0, 0, 722, 722, 0, 722, + 0, 722, 722, 0, 722, 722, 722, 722, 722, 722, + 0, 0, 0, 0, 0, 0, 0, 1504, 0, 0, + 1504, 722, 1504, 195, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 152, 0, 0, 153, + 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 722, 0, 195, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, + 1745, 0, 722, 0, 195, 195, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3544, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 195, 0, 0, 0, 0, 0, 0, 195, 0, + 0, 0, 0, 0, 0, 0, 0, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 722, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3568, 0, 3283, 3284, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 966, 967, 968, - 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, - 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, - 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, - 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 0, - 0, 3588, 0, 3589, 0, 3590, 0, 3591, 0, 0, - 3594, 3595, 0, 0, 0, 0, 0, 0, 0, 3599, + 0, 0, 0, 942, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3600, 0, 3601, 0, 3602, 0, 3603, - 3285, 3604, 0, 3605, 0, 3606, 0, 3607, 0, 3608, - 0, 3609, 0, 3610, 0, 3611, 0, 3612, 0, 3613, - 0, 3614, 0, 3615, 0, 0, 3616, 0, 0, 0, - 3617, 0, 3618, 0, 0, 0, 0, 0, 3620, 0, + 166, 171, 168, 174, 175, 176, 178, 180, 181, 182, + 183, 0, 0, 0, 0, 0, 184, 186, 187, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3637, 0, 0, 0, 0, 0, 0, 0, 0, - 3642, 0, 3643, 3644, 0, 3645, 195, 3646, 3286, 3287, - 0, 0, 3647, 0, 195, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 722, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3672, 722, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3680, 0, - 0, 3682, 0, 0, 0, 0, 2367, 0, 0, 0, - 0, 0, 195, 3686, 2371, 0, 2374, 195, 0, 2046, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3820, + 0, 0, 0, 0, 0, 701, 0, 0, 0, 0, + 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 913, 0, 0, 0, 0, 0, 917, 0, - 0, 0, 914, 915, 0, 0, 0, 916, 918, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 722, 0, 0, 0, 0, - 0, 195, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 722, 0, 0, 0, 0, 0, 0, 722, - 0, 0, 0, 0, 0, 0, 0, 0, 722, 0, + 0, 0, 0, 721, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1504, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 195, 195, 195, - 195, 195, 195, 3929, 0, 0, 0, 0, 0, 0, - 0, 899, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 195, 195, 0, 0, 0, 0, + 0, 0, 0, 722, 722, 0, 0, 0, 2991, 0, + 0, 0, 0, 0, 0, 0, 722, 0, 0, 0, + 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, + 1055, 0, 0, 3018, 3019, 3020, 0, 0, 3022, 0, + 0, 3024, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3031, 3032, 3033, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3038, 722, 0, 3040, 3041, 3042, 0, + 0, 0, 3043, 3044, 1504, 0, 3045, 0, 3046, 0, + 0, 0, 0, 0, 0, 3047, 0, 3048, 0, 0, + 0, 3049, 1504, 3050, 0, 0, 3051, 0, 3052, 0, + 3053, 0, 3054, 0, 3055, 0, 3056, 0, 3057, 0, + 3058, 0, 3059, 0, 3060, 0, 3061, 0, 3062, 0, + 3063, 0, 3064, 0, 3065, 0, 3066, 0, 3067, 0, + 3068, 0, 0, 0, 3069, 0, 3070, 0, 3071, 0, + 0, 3072, 0, 3073, 0, 3074, 0, 2255, 3076, 0, + 0, 3078, 0, 0, 3080, 3081, 3082, 3083, 0, 0, + 0, 0, 3084, 2255, 2255, 2255, 2255, 2255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3094, 0, + 0, 0, 0, 0, 0, 0, 3107, 0, 0, 3111, + 0, 1055, 0, 0, 0, 0, 0, 0, 3114, 3115, + 3116, 3117, 3118, 3119, 0, 0, 0, 3120, 3121, 0, + 3122, 0, 3123, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2303, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3155, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 195, 0, 0, 0, 0, 722, 0, 0, 0, + 0, 3185, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 195, 0, 0, 722, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, + 0, 0, 0, 722, 0, 0, 2303, 195, 0, 195, + 0, 195, 195, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3248, 0, 0, 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 721, 1420, 721, 721, 1008, 0, 195, 0, 0, - 1009, 0, 0, 0, 0, 0, 0, 2046, 0, 0, - 2096, 0, 0, 721, 2532, 0, 0, 0, 0, 0, - 722, 0, 0, 0, 2551, 2552, 0, 0, 2556, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2561, 0, 1503, 0, 0, 0, 0, 2564, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 722, - 0, 0, 0, 2567, 0, 0, 0, 0, 0, 0, - 0, 1080, 0, 1087, 0, 966, 967, 968, 969, 970, - 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, - 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, - 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, - 1001, 1002, 1003, 1004, 1005, 1006, 1007, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3969, 0, 0, + 0, 0, 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 722, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 722, 0, 0, 0, - 0, 0, 0, 3983, 0, 0, 3984, 0, 3985, 0, + 722, 0, 0, 0, 0, 0, 722, 0, 0, 3341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 722, 0, 0, + 0, 0, 0, 3350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 195, 0, 1503, 0, 722, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 722, - 0, 0, 0, 1504, 0, 0, 722, 722, 1504, 195, - 195, 195, 195, 195, 0, 0, 0, 0, 0, 0, - 0, 195, 0, 0, 0, 0, 0, 195, 0, 195, - 0, 0, 195, 195, 195, 0, 0, 0, 0, 0, - 0, 0, 4064, 0, 0, 721, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 722, 0, 0, 0, 0, 722, 0, + 0, 0, 722, 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4080, 0, 4081, 0, 4082, 0, 0, 195, 0, - 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, - 0, 722, 0, 0, 1504, 0, 0, 0, 0, 722, - 721, 0, 0, 0, 195, 0, 0, 0, 0, 0, - 0, 1826, 0, 0, 0, 0, 0, 0, 195, 0, - 0, 1835, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, - 0, 195, 0, 0, 721, 4131, 1861, 4132, 0, 0, - 0, 0, 0, 0, 1870, 0, 0, 1503, 1872, 0, - 0, 1875, 1876, 721, 721, 0, 721, 0, 721, 721, - 0, 721, 721, 721, 721, 721, 721, 2866, 0, 0, - 0, 0, 0, 0, 1503, 1907, 1908, 1503, 721, 1503, - 900, 1913, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1976, 0, 0, 721, - 0, 0, 0, 0, 0, 0, 193, 0, 0, 666, - 0, 2915, 0, 0, 0, 0, 722, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 721, 0, 1036, 0, 0, 0, 0, - 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1056, 1056, 0, 0, 0, 0, 0, 0, - 0, 666, 0, 0, 0, 0, 0, 2964, 2965, 2966, - 2967, 2968, 2969, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2046, 2979, 0, 195, 0, 0, + 195, 0, 0, 0, 0, 0, 0, 195, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 195, 195, 0, + 0, 195, 0, 195, 0, 721, 1420, 721, 721, 0, + 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, + 195, 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2987, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, + 0, 0, 0, 0, 0, 722, 1503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 195, 0, 0, 195, - 195, 195, 0, 1268, 0, 1268, 1268, 0, 0, 722, - 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 721, 721, 0, 0, 0, 0, 0, 0, 722, 722, - 722, 722, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3547, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1504, 0, 2303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1503, 0, 0, 0, 0, 0, 0, 0, 0, - 2105, 0, 0, 0, 0, 0, 0, 0, 0, 1503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3591, 0, 3592, 0, 3593, 0, 3594, 0, + 0, 3597, 3598, 0, 0, 0, 0, 0, 0, 0, + 3602, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3603, 0, 3604, 0, 3605, 0, + 3606, 0, 3607, 0, 3608, 0, 3609, 0, 3610, 0, + 3611, 0, 3612, 0, 3613, 0, 3614, 1503, 3615, 0, + 3616, 0, 3617, 0, 3618, 0, 0, 3619, 0, 0, + 0, 3620, 0, 3621, 0, 0, 0, 0, 0, 3623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3640, 0, 0, 0, 0, 0, 0, 0, + 0, 3645, 0, 3646, 3647, 0, 3648, 0, 3649, 721, + 721, 0, 0, 3650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, + 3679, 0, 0, 0, 0, 0, 0, 195, 0, 721, + 0, 3687, 0, 0, 3689, 0, 0, 0, 722, 0, + 0, 0, 0, 0, 721, 0, 3693, 0, 0, 0, + 0, 722, 0, 0, 0, 1827, 0, 0, 0, 0, + 0, 0, 3827, 0, 0, 1836, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, + 195, 0, 0, 0, 0, 0, 0, 0, 721, 0, + 1862, 0, 0, 0, 0, 0, 0, 0, 1871, 0, + 0, 1503, 1873, 0, 0, 1876, 1877, 721, 721, 0, + 721, 0, 721, 721, 0, 721, 721, 721, 721, 721, + 721, 0, 0, 0, 0, 0, 0, 0, 1503, 1908, + 1909, 1503, 721, 1503, 0, 1914, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 722, 0, + 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, + 0, 195, 0, 0, 0, 0, 0, 721, 0, 0, + 0, 0, 0, 0, 0, 722, 0, 0, 0, 0, + 1977, 0, 722, 721, 0, 0, 0, 0, 0, 0, + 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, + 3937, 0, 0, 0, 0, 0, 0, 1504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, + 195, 195, 195, 195, 195, 195, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1504, 0, 0, 0, 0, 722, 0, 722, 0, + 0, 0, 0, 0, 0, 0, 0, 195, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 900, 0, 0, 0, 0, 0, 0, 0, + 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, + 0, 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 722, 0, 3237, 0, - 0, 0, 0, 0, 0, 0, 0, 1701, 1702, 195, - 0, 0, 722, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 721, 3275, 722, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3289, 0, - 0, 0, 0, 0, 0, 0, 0, 1750, 0, 0, - 0, 721, 0, 0, 0, 0, 0, 0, 3307, 0, - 0, 3310, 1768, 0, 0, 0, 0, 0, 0, 721, - 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, + 0, 666, 722, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1036, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 721, 0, 0, 0, 0, 0, 0, 722, - 0, 0, 0, 722, 722, 0, 1080, 0, 0, 0, + 0, 0, 0, 0, 1056, 1056, 0, 0, 0, 0, + 0, 0, 0, 666, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 721, 721, 0, 0, 0, 0, + 0, 0, 0, 0, 3977, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1878, 1878, 0, 1878, 0, - 1878, 1878, 722, 1887, 1878, 1878, 1878, 1878, 1878, 0, - 0, 0, 0, 666, 0, 666, 0, 0, 0, 721, - 1080, 0, 0, 0, 0, 0, 2464, 2465, 2466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, - 0, 0, 721, 1870, 0, 1955, 1870, 0, 1870, 0, - 0, 0, 0, 0, 2496, 0, 0, 0, 0, 0, - 0, 1980, 0, 0, 0, 666, 0, 0, 0, 0, - 0, 3463, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 721, - 0, 0, 0, 1505, 721, 0, 0, 0, 721, 721, - 0, 0, 0, 0, 0, 1268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3991, 0, 0, 3992, 0, 3993, 0, 722, 0, 0, + 0, 0, 0, 0, 0, 721, 0, 0, 899, 722, + 0, 0, 0, 0, 0, 1503, 0, 0, 0, 0, + 0, 0, 0, 0, 2106, 0, 0, 0, 0, 0, + 0, 0, 0, 1503, 0, 0, 0, 0, 0, 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3522, 0, 0, 0, - 0, 0, 0, 0, 722, 195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3537, 0, 0, 3538, - 3539, 3540, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 195, 0, 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 722, 0, 0, 0, 1504, 720, 0, 722, 722, + 1504, 195, 195, 195, 195, 195, 0, 0, 0, 0, + 0, 4071, 0, 195, 0, 0, 0, 0, 0, 195, + 0, 195, 0, 0, 195, 195, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, + 4087, 0, 4088, 0, 4089, 0, 0, 0, 1080, 0, + 1087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 722, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1504, - 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, + 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 722, 0, 0, 1504, 721, 0, 0, + 0, 722, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1268, 1268, 0, 722, 2302, 0, 0, 0, - 1503, 0, 721, 0, 0, 2034, 0, 0, 0, 0, - 0, 0, 0, 0, 1505, 0, 0, 722, 0, 0, + 195, 0, 4138, 0, 4139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 195, 722, 0, 0, 0, 0, 0, 0, 0, + 195, 0, 0, 195, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2091, 0, 0, 0, 0, 0, 0, - 0, 0, 666, 0, 722, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1036, 722, 0, 0, 0, - 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 722, 0, 722, 0, 666, + 0, 0, 0, 0, 721, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 666, 0, + 0, 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1505, 0, + 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, + 0, 2465, 2466, 2467, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, + 0, 721, 0, 0, 0, 0, 0, 721, 1871, 0, + 0, 1871, 0, 1871, 0, 0, 0, 0, 0, 2497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1505, 0, 0, 1505, 0, - 1505, 666, 0, 0, 0, 1268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1929, 0, 0, 721, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 666, 721, 0, 0, + 195, 0, 0, 0, 721, 0, 0, 0, 0, 721, + 0, 0, 0, 721, 721, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1982, 666, 0, 2339, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 666, - 0, 0, 0, 0, 0, 0, 666, 0, 0, 0, - 0, 0, 2879, 2351, 0, 2008, 2009, 666, 666, 666, - 666, 666, 666, 666, 0, 0, 0, 0, 0, 0, - 0, 1750, 0, 0, 1268, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 666, 0, 666, 0, 195, + 0, 0, 195, 195, 195, 0, 0, 0, 0, 0, + 0, 0, 722, 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1080, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 721, 0, 0, 0, 0, 0, 0, 721, 0, - 0, 0, 1870, 1870, 0, 0, 0, 721, 0, 0, - 0, 1087, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1503, 2952, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1080, 0, - 0, 0, 0, 0, 1087, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 666, 0, 0, + 0, 722, 722, 722, 722, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, + 0, 0, 0, 0, 0, 1505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1080, 0, 0, 0, 0, 2091, 0, 0, 0, - 2091, 2091, 0, 0, 0, 0, 0, 0, 0, 721, - 0, 0, 0, 666, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1503, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1505, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1056, 1056, 0, 0, 0, 0, - 1505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 722, 0, 722, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1268, 721, 0, 0, 0, 0, + 1268, 0, 1268, 1268, 0, 0, 1504, 0, 0, 0, + 0, 722, 0, 722, 0, 0, 0, 0, 0, 0, + 0, 0, 1432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1505, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 195, 0, 0, 722, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 722, 0, 0, 0, 666, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1036, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 721, + 0, 666, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, + 666, 0, 0, 0, 722, 0, 0, 0, 0, 0, + 0, 722, 0, 722, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2879, 0, 0, + 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, + 1505, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1505, 0, 0, + 1505, 0, 1505, 666, 0, 0, 0, 0, 0, 721, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1930, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 721, 0, 666, 0, + 0, 0, 0, 721, 0, 0, 0, 1871, 1871, 0, + 0, 0, 721, 0, 1983, 666, 0, 0, 0, 0, + 0, 0, 0, 0, 1701, 1702, 0, 0, 1503, 2952, + 0, 666, 0, 0, 0, 0, 0, 0, 666, 0, + 0, 0, 0, 0, 0, 0, 0, 2009, 2010, 666, + 666, 666, 666, 666, 666, 666, 0, 0, 0, 722, + 0, 0, 0, 0, 1751, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 195, 0, 0, 0, 1769, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 722, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, - 0, 0, 0, 1056, 1982, 1056, 1056, 1056, 1056, 1056, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, + 0, 0, 0, 1080, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1879, 1879, 0, 1879, 0, 1879, 1879, 0, + 1888, 1879, 1879, 1879, 1879, 1879, 0, 0, 0, 722, + 0, 0, 0, 721, 0, 0, 0, 1080, 0, 722, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1504, + 0, 722, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1956, 0, 0, 722, 2303, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1981, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 195, 722, 0, 666, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, - 0, 0, 1503, 0, 0, 721, 721, 1503, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1929, + 0, 0, 0, 722, 0, 0, 0, 0, 0, 0, + 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1505, 722, 0, 0, 0, 0, + 195, 0, 0, 0, 0, 0, 1056, 1056, 0, 0, + 0, 721, 1505, 0, 722, 0, 722, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 721, 0, 0, 0, 1503, 0, 0, 721, + 721, 1503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1056, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1036, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 666, 0, 3232, 0, - 0, 0, 0, 1982, 666, 0, 666, 0, 666, 2390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 721, 0, 0, 1503, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3708, 3710, 3709, 3773, - 3774, 3775, 3776, 3777, 3778, 3779, 792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3233, 0, 0, 0, 0, 0, 0, 1268, + 1268, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2035, 0, 721, 0, 0, 1503, 0, 0, + 0, 0, 721, 0, 0, 1056, 1983, 1056, 1056, 1056, + 1056, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2814, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2092, 1930, 0, 0, 3315, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1036, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 666, + 0, 0, 0, 0, 0, 0, 1983, 666, 0, 666, + 0, 666, 2391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 666, 0, 0, - 0, 0, 0, 0, 666, 0, 2911, 0, 0, 0, - 0, 0, 0, 0, 666, 666, 0, 0, 666, 0, - 2558, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 666, 0, 0, 2351, 0, 0, 0, 666, 0, 0, - 2936, 0, 0, 0, 0, 0, 0, 0, 0, 2941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1268, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2340, 0, 0, 0, 0, 0, 0, 3515, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2352, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1751, + 666, 0, 1268, 721, 721, 0, 0, 666, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 666, 666, 0, + 0, 666, 1080, 2559, 0, 0, 0, 0, 0, 0, 0, 0, 0, 666, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3714, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3512, 0, 0, 0, 3722, 3723, - 0, 0, 3798, 3797, 3796, 0, 0, 3794, 3795, 3793, + 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 721, 721, 721, 721, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 666, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 721, 721, + 0, 0, 0, 0, 0, 0, 1080, 0, 0, 0, + 0, 0, 1087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1505, 0, 1982, 0, 0, 0, 0, 0, 0, - 0, 2091, 3799, 913, 0, 768, 769, 3800, 3801, 917, - 3802, 771, 772, 914, 915, 0, 766, 770, 916, 918, - 0, 0, 0, 0, 0, 0, 0, 721, 721, 721, - 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2091, 0, 0, 0, 0, 3705, 3706, 3707, 3711, 3712, - 3713, 3724, 3771, 3772, 3780, 3782, 869, 3781, 3783, 3784, - 3785, 3788, 3789, 3790, 3791, 3786, 3787, 3792, 3688, 3692, - 3689, 3690, 3691, 3703, 3693, 3694, 3695, 3696, 3697, 3698, - 3699, 3700, 3701, 3702, 3704, 3803, 3804, 3805, 3806, 3807, - 3808, 3717, 3721, 3720, 3718, 3719, 3715, 3716, 3743, 3742, - 3744, 3745, 3746, 3747, 3748, 3749, 3751, 3750, 3752, 3753, - 3754, 3755, 3756, 3757, 3725, 3726, 3729, 3730, 3728, 3727, - 3731, 3740, 3741, 3732, 3733, 3734, 3735, 3736, 3737, 3739, - 3738, 3758, 3759, 3760, 3761, 3762, 3764, 3763, 3767, 3768, - 3766, 3765, 3770, 3769, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3096, 919, 0, 920, 0, - 0, 924, 0, 0, 0, 926, 925, 1268, 927, 889, - 888, 0, 0, 921, 922, 0, 923, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1878, 0, - 1503, 0, 0, 0, 0, 721, 666, 721, 0, 0, - 0, 0, 0, 0, 1929, 0, 3139, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1268, 0, 0, 0, 0, 0, 0, 3166, 1878, 0, - 0, 3809, 3810, 3811, 3812, 3813, 3814, 3815, 3816, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 666, 0, 0, 721, 0, 666, 0, 0, + 0, 0, 0, 0, 1505, 0, 1983, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1080, + 0, 0, 0, 0, 2092, 0, 0, 0, 2092, 2092, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1080, 0, 0, 0, 0, 0, 0, 0, - 2351, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 666, 0, 0, 0, 0, 0, 0, 2921, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, - 0, 0, 721, 721, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 721, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1505, 0, 0, 0, 0, 0, - 0, 721, 0, 0, 0, 0, 0, 666, 666, 666, - 666, 666, 666, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1503, 0, 0, + 0, 0, 721, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 666, 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2571, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1056, 0, 0, 3428, 0, 0, + 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1268, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 666, + 0, 0, 0, 0, 0, 0, 0, 1930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, + 0, 0, 721, 0, 721, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 666, 0, 0, 0, 0, + 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 666, 0, 0, 0, 0, 0, + 0, 2921, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 666, 666, 666, 666, 666, 666, 0, 0, 0, 0, + 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2815, 0, 0, 666, 666, 0, + 0, 0, 0, 0, 0, 0, 0, 2829, 0, 0, + 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, + 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2351, 2351, 0, 0, 0, 0, 0, 0, 721, 0, - 0, 0, 0, 0, 0, 1056, 0, 0, 1503, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1503, 0, 721, 0, 2911, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 721, 721, 0, 0, + 0, 2352, 0, 0, 0, 0, 0, 0, 2936, 0, + 0, 0, 0, 0, 0, 0, 0, 2941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 721, 721, 0, 0, 0, 3576, - 3577, 3578, 3579, 0, 0, 0, 0, 0, 0, 0, - 0, 666, 0, 0, 0, 0, 721, 0, 0, 0, + 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 721, 0, 1505, 0, 0, 0, 0, 1505, 666, - 666, 666, 666, 666, 0, 0, 0, 0, 0, 0, - 0, 3182, 0, 0, 0, 0, 0, 1929, 0, 666, - 0, 0, 666, 3190, 1982, 0, 0, 0, 0, 0, - 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 666, 0, - 0, 0, 0, 0, 721, 0, 721, 0, 0, 0, - 0, 0, 0, 0, 1505, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1056, 0, + 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 721, 0, 721, 0, 2092, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 666, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 666, 0, - 0, 666, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3676, 0, 3678, + 0, 0, 0, 0, 0, 1505, 0, 0, 0, 0, + 1505, 666, 666, 666, 666, 666, 0, 0, 2092, 0, + 0, 0, 0, 3183, 0, 0, 0, 0, 0, 1930, + 0, 666, 0, 0, 666, 3191, 1983, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1505, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 666, 3715, 3717, 3716, + 3780, 3781, 3782, 3783, 3784, 3785, 3786, 792, 0, 0, + 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3096, 0, 0, 0, 0, 0, 0, + 666, 0, 0, 666, 0, 1268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3843, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1268, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3140, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1268, 0, 0, + 0, 0, 0, 0, 3167, 1879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3917, 0, 0, 0, 3917, 3917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 666, 0, 0, - 0, 0, 0, 2351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 666, 0, 0, 0, + 0, 0, 0, 0, 0, 666, 0, 0, 0, 1080, + 0, 0, 0, 0, 0, 0, 0, 2352, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 666, 0, 0, 666, - 666, 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3721, 0, 0, 0, 0, 0, + 666, 0, 0, 0, 0, 0, 0, 0, 0, 3729, + 3730, 0, 0, 3805, 3804, 3803, 0, 0, 3801, 3802, + 3800, 0, 0, 0, 0, 0, 0, 0, 0, 666, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 666, + 0, 0, 666, 666, 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3806, 913, 0, 768, 769, 3807, 3808, + 917, 3809, 771, 772, 914, 915, 0, 766, 770, 916, + 918, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3429, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3712, 3713, 3714, 3718, + 3719, 3720, 3731, 3778, 3779, 3787, 3789, 869, 3788, 3790, + 3791, 3792, 3795, 3796, 3797, 3798, 3793, 3794, 3799, 3695, + 3699, 3696, 3697, 3698, 3710, 3700, 3701, 3702, 3703, 3704, + 3705, 3706, 3707, 3708, 3709, 3711, 3810, 3811, 3812, 3813, + 3814, 3815, 3724, 3728, 3727, 3725, 3726, 3722, 3723, 3750, + 3749, 3751, 3752, 3753, 3754, 3755, 3756, 3758, 3757, 3759, + 3760, 3761, 3762, 3763, 3764, 3732, 3733, 3736, 3737, 3735, + 3734, 3738, 3747, 3748, 3739, 3740, 3741, 3742, 3743, 3744, + 3746, 3745, 3765, 3766, 3767, 3768, 3769, 3771, 3770, 3774, + 3775, 3773, 3772, 3777, 3776, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 919, 0, 920, + 0, 0, 924, 0, 0, 0, 926, 925, 0, 927, + 889, 888, 0, 0, 921, 922, 0, 923, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2352, 2352, + 0, 0, 0, 0, 0, 0, 0, 1930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3579, 3580, 3581, + 3582, 0, 3816, 3817, 3818, 3819, 3820, 3821, 3822, 3823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2741,73 +2783,81 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3994, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3998, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1929, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1268, 1268, 0, 0, - 0, 1505, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4048, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3656, + 0, 3656, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3683, 0, 3685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3994, 0, 0, 0, 1929, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3428, 0, 4048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3850, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3656, 0, 0, 0, 666, 0, 0, 3656, 0, 3656, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1929, 0, 0, 0, + 1983, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3995, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4003, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4007, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1268, 1268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1505, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4020, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1929, 0, 0, 0, 0, 0, 0, 393, 0, - 0, 0, 0, 1403, 1389, 522, 0, 1331, 1406, 1300, + 0, 2352, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 393, 0, + 3429, 0, 4055, 1403, 1389, 522, 0, 1331, 1406, 1300, 1319, 1416, 1322, 1325, 1368, 1278, 1346, 413, 1316, 1271, 1304, 1273, 1311, 1274, 1302, 1333, 269, 1299, 1391, 1350, 1405, 363, 266, 1280, 1305, 427, 1321, 203, 1370, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, 419, 1412, 367, 1356, 0, 493, 398, 0, - 0, 1982, 1335, 1395, 1344, 1382, 1330, 1369, 1288, 1355, + 0, 0, 1335, 1395, 1344, 1382, 1330, 1369, 1288, 1355, 1407, 1317, 1365, 1408, 322, 247, 324, 202, 410, 494, - 285, 0, 0, 0, 0, 4022, 944, 0, 0, 0, - 0, 4023, 0, 0, 0, 0, 237, 0, 0, 244, + 285, 0, 0, 0, 0, 4031, 944, 0, 0, 0, + 0, 4032, 0, 0, 0, 0, 237, 0, 0, 244, 0, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 1313, 1362, 1402, 1314, 1364, 264, 320, 271, 263, 574, 1413, 1394, 1277, 1343, 1401, 1338, 0, @@ -2887,7 +2937,7 @@ var yyAct = [...]int{ 0, 0, 228, 1404, 1337, 0, 1367, 0, 1419, 1272, 1358, 0, 1275, 1279, 1415, 1399, 1308, 274, 0, 0, 0, 0, 0, 0, 0, 1334, 1345, 1379, 1383, 1328, - 0, 0, 0, 0, 0, 0, 3191, 0, 1306, 0, + 0, 0, 0, 0, 0, 0, 3192, 0, 1306, 0, 1354, 0, 0, 0, 1284, 1276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2960,7 +3010,7 @@ var yyAct = [...]int{ 1338, 0, 0, 228, 1404, 1337, 0, 1367, 0, 1419, 1272, 1358, 0, 1275, 1279, 1415, 1399, 1308, 274, 0, 0, 0, 0, 0, 0, 0, 1334, 1345, 1379, 1383, - 1328, 0, 0, 0, 0, 0, 0, 3152, 0, 1306, + 1328, 0, 0, 0, 0, 0, 0, 3153, 0, 1306, 0, 1354, 0, 0, 0, 1284, 1276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3033,7 +3083,7 @@ var yyAct = [...]int{ 1401, 1338, 0, 0, 228, 1404, 1337, 0, 1367, 0, 1419, 1272, 1358, 0, 1275, 1279, 1415, 1399, 1308, 274, 0, 0, 0, 0, 0, 0, 0, 1334, 1345, 1379, - 1383, 1328, 0, 0, 0, 0, 0, 0, 2369, 0, + 1383, 1328, 0, 0, 0, 0, 0, 0, 2370, 0, 1306, 0, 1354, 0, 0, 0, 1284, 1276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3395,7 +3445,7 @@ var yyAct = [...]int{ 962, 963, 949, 0, 237, 950, 951, 244, 952, 0, 909, 794, 796, 795, 859, 860, 861, 862, 863, 864, 865, 792, 957, 964, 965, 0, 264, 320, 271, 263, - 574, 0, 0, 2190, 2191, 2192, 0, 0, 0, 228, + 574, 0, 0, 2191, 2192, 2193, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 731, 748, 0, 762, 0, 0, 0, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3462,12 +3512,12 @@ var yyAct = [...]int{ 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, 419, 763, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 758, 759, 0, - 0, 0, 0, 0, 0, 2398, 0, 322, 247, 324, + 0, 0, 0, 0, 0, 2399, 0, 322, 247, 324, 202, 410, 494, 285, 0, 95, 0, 0, 1008, 944, 735, 910, 948, 1009, 961, 962, 963, 949, 0, 237, 950, 951, 244, 952, 0, 909, 794, 796, 795, 859, 860, 861, 862, 863, 864, 865, 792, 957, 964, 965, - 2399, 264, 320, 271, 263, 574, 0, 0, 0, 0, + 2400, 264, 320, 271, 263, 574, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 731, 748, 0, 762, 0, 0, 0, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3627,7 +3677,7 @@ var yyAct = [...]int{ 618, 0, 0, 901, 0, 0, 0, 0, 362, 0, 329, 197, 224, 0, 0, 409, 458, 470, 0, 0, 0, 954, 0, 468, 423, 596, 232, 283, 455, 429, - 466, 437, 286, 4008, 0, 467, 369, 579, 447, 593, + 466, 437, 286, 4017, 0, 467, 369, 579, 447, 593, 619, 620, 262, 403, 605, 516, 613, 637, 225, 259, 417, 501, 599, 490, 394, 575, 576, 328, 489, 294, 201, 366, 625, 223, 476, 368, 241, 230, 581, 602, @@ -3681,7 +3731,7 @@ var yyAct = [...]int{ 419, 763, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 758, 759, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, 202, 410, 494, 285, 0, - 95, 0, 1724, 1008, 944, 735, 910, 948, 1009, 961, + 95, 0, 1725, 1008, 944, 735, 910, 948, 1009, 961, 962, 963, 949, 0, 237, 950, 951, 244, 952, 0, 909, 794, 796, 795, 859, 860, 861, 862, 863, 864, 865, 792, 957, 964, 965, 0, 264, 320, 271, 263, @@ -4129,7 +4179,7 @@ var yyAct = [...]int{ 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, - 1003, 1004, 1005, 1006, 1007, 2083, 0, 0, 0, 0, + 1003, 1004, 1005, 1006, 1007, 2084, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 0, 399, 256, 0, 450, 903, 0, 0, 618, 0, 0, 901, 0, 0, 0, 0, 362, 0, 329, 197, 224, 0, 0, @@ -4202,7 +4252,7 @@ var yyAct = [...]int{ 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, - 2081, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 0, 399, 256, 0, 450, 903, 0, 0, 618, 0, 0, 901, 0, 0, 0, 0, 362, 0, 329, 197, 224, 0, 0, 409, 458, 470, 0, 0, @@ -4456,8 +4506,8 @@ var yyAct = [...]int{ 529, 541, 546, 559, 566, 563, 523, 527, 531, 540, 558, 557, 538, 549, 560, 544, 532, 525, 533, 0, 196, 220, 365, 94, 451, 287, 639, 608, 603, 205, - 222, 0, 261, 0, 0, 0, 0, 0, 0, 2385, - 0, 0, 2384, 0, 0, 0, 0, 0, 0, 0, + 222, 0, 261, 0, 0, 0, 0, 0, 0, 2386, + 0, 0, 2385, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 200, 208, 221, 231, 235, 242, 260, 275, 277, 284, 297, 309, 317, 318, 321, 327, 377, 383, 384, 385, 386, 406, 407, 408, 411, @@ -4470,15 +4520,15 @@ var yyAct = [...]int{ 498, 226, 463, 289, 250, 0, 0, 210, 245, 229, 258, 273, 276, 323, 388, 397, 426, 431, 295, 270, 243, 456, 240, 481, 513, 514, 515, 517, 392, 265, - 430, 1747, 0, 373, 570, 571, 315, 0, 522, 0, + 430, 1748, 0, 373, 570, 571, 315, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 413, 0, 0, 0, 1749, 0, 0, 0, 0, 269, + 413, 0, 0, 0, 1750, 0, 0, 0, 0, 269, 0, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, 419, 0, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, - 202, 410, 494, 285, 0, 0, 0, 0, 1751, 711, + 202, 410, 494, 285, 0, 0, 0, 0, 1752, 711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 244, 0, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 0, 0, 0, 0, @@ -4551,7 +4601,7 @@ var yyAct = [...]int{ 419, 0, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, 202, 410, 494, 285, 0, - 95, 0, 1724, 0, 711, 0, 0, 0, 0, 0, + 95, 0, 1725, 0, 711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 244, 0, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 0, 0, 0, 0, 0, 264, 320, 271, 263, @@ -4674,7 +4724,7 @@ var yyAct = [...]int{ 563, 523, 527, 531, 540, 558, 557, 538, 549, 560, 544, 532, 525, 533, 0, 196, 220, 365, 0, 451, 287, 639, 608, 603, 205, 222, 0, 261, 0, 0, - 0, 0, 0, 0, 2385, 0, 0, 2384, 0, 0, + 0, 0, 0, 0, 2386, 0, 0, 2385, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 200, 208, 221, 231, 235, 242, 260, 275, 277, 284, 297, 309, 317, 318, 321, 327, 377, 383, 384, 385, @@ -4689,14 +4739,14 @@ var yyAct = [...]int{ 397, 426, 431, 295, 270, 243, 456, 240, 481, 513, 514, 515, 517, 392, 265, 430, 393, 0, 373, 570, 571, 315, 0, 522, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 413, 0, 0, 0, 2333, + 0, 0, 0, 0, 0, 413, 0, 0, 0, 2334, 0, 0, 0, 0, 269, 0, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, 419, 0, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, 202, 410, 494, 285, 0, - 0, 0, 0, 1930, 194, 0, 0, 0, 0, 0, + 0, 0, 0, 1931, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 244, 0, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 0, 0, 0, 0, 0, 264, 320, 271, 263, @@ -4714,7 +4764,7 @@ var yyAct = [...]int{ 0, 450, 0, 0, 0, 618, 0, 0, 0, 0, 0, 0, 0, 362, 0, 329, 197, 224, 0, 0, 409, 458, 470, 0, 0, 0, 252, 0, 468, 423, - 596, 232, 283, 455, 429, 466, 437, 286, 0, 2331, + 596, 232, 283, 455, 429, 466, 437, 286, 0, 2332, 467, 369, 579, 447, 593, 619, 620, 262, 403, 605, 516, 613, 637, 225, 259, 417, 501, 599, 490, 394, 575, 576, 328, 489, 294, 201, 366, 625, 223, 476, @@ -4834,14 +4884,14 @@ var yyAct = [...]int{ 397, 426, 431, 295, 270, 243, 456, 240, 481, 513, 514, 515, 517, 392, 265, 430, 393, 0, 373, 570, 571, 315, 0, 522, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 413, 0, 0, 0, 2333, + 0, 0, 0, 0, 0, 413, 0, 0, 0, 2334, 0, 0, 0, 0, 269, 0, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, 419, 0, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, 202, 410, 494, 285, 0, - 0, 0, 0, 1930, 194, 0, 0, 0, 0, 0, + 0, 0, 0, 1931, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 244, 0, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 0, 0, 0, 0, 0, 264, 320, 271, 263, @@ -4913,7 +4963,7 @@ var yyAct = [...]int{ 249, 316, 382, 425, 512, 419, 0, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, - 202, 410, 494, 285, 0, 0, 0, 1724, 0, 711, + 202, 410, 494, 285, 0, 0, 0, 1725, 0, 711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 244, 0, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 0, 0, 0, 0, @@ -4929,7 +4979,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 0, 399, 256, 0, 450, 0, 0, 0, - 618, 0, 0, 0, 3918, 0, 0, 0, 362, 0, + 618, 0, 0, 0, 3657, 0, 0, 0, 362, 0, 329, 197, 224, 0, 0, 409, 458, 470, 0, 0, 0, 252, 0, 468, 423, 596, 232, 283, 455, 429, 466, 437, 286, 0, 0, 467, 369, 579, 447, 593, @@ -4986,7 +5036,7 @@ var yyAct = [...]int{ 419, 0, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, 202, 410, 494, 285, 0, - 0, 0, 0, 2092, 711, 0, 0, 0, 0, 0, + 0, 0, 0, 2093, 711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 244, 0, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 0, 0, 0, 0, 0, 264, 320, 271, 263, @@ -4995,7 +5045,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2093, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2094, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5131,8 +5181,8 @@ var yyAct = [...]int{ 419, 0, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, 202, 410, 494, 285, 0, - 0, 0, 0, 0, 711, 0, 0, 0, 0, 2815, - 0, 0, 0, 0, 237, 0, 0, 244, 2816, 0, + 0, 0, 0, 0, 711, 0, 0, 0, 0, 2816, + 0, 0, 0, 0, 237, 0, 0, 244, 2817, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 0, 0, 0, 0, 0, 264, 320, 271, 263, 574, 0, 0, 0, 0, 0, 0, 0, 0, 228, @@ -5198,12 +5248,12 @@ var yyAct = [...]int{ 430, 393, 0, 373, 570, 571, 315, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, 0, 0, 0, 0, 0, 0, 0, 269, - 1770, 0, 0, 0, 363, 266, 0, 0, 427, 0, + 1771, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, 419, 0, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, - 202, 410, 494, 285, 0, 0, 0, 0, 1769, 711, + 202, 410, 494, 285, 0, 0, 0, 0, 1770, 711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 244, 0, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 0, 0, 0, 0, @@ -5364,7 +5414,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 0, 399, 256, 0, 450, 0, 0, 0, - 618, 0, 0, 0, 4041, 0, 0, 0, 362, 0, + 618, 0, 0, 0, 3996, 0, 0, 0, 362, 0, 329, 197, 224, 0, 0, 409, 458, 470, 0, 0, 0, 252, 0, 468, 423, 596, 232, 283, 455, 429, 466, 437, 286, 0, 0, 467, 369, 579, 447, 593, @@ -5421,7 +5471,7 @@ var yyAct = [...]int{ 419, 0, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, 202, 410, 494, 285, 0, - 0, 0, 0, 1930, 194, 0, 0, 0, 0, 0, + 0, 0, 0, 1931, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 244, 0, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 0, 0, 0, 0, 0, 264, 320, 271, 263, @@ -5509,7 +5559,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 0, 399, 256, 0, 450, 0, 0, 0, - 618, 0, 0, 0, 3918, 0, 0, 0, 362, 0, + 618, 0, 0, 0, 3657, 0, 0, 0, 362, 0, 329, 197, 224, 0, 0, 409, 458, 470, 0, 0, 0, 252, 0, 468, 423, 596, 232, 283, 455, 429, 466, 437, 286, 0, 0, 467, 369, 579, 447, 593, @@ -5631,7 +5681,7 @@ var yyAct = [...]int{ 258, 273, 276, 323, 388, 397, 426, 431, 295, 270, 243, 456, 240, 481, 513, 514, 515, 517, 392, 265, 430, 393, 0, 373, 570, 571, 315, 0, 522, 0, - 0, 0, 0, 2386, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2387, 0, 0, 0, 0, 0, 0, 413, 0, 0, 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, @@ -5711,7 +5761,7 @@ var yyAct = [...]int{ 419, 0, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, 202, 410, 494, 285, 0, - 0, 0, 0, 1751, 711, 0, 0, 0, 0, 0, + 0, 0, 0, 1752, 711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 244, 0, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 0, 0, 0, 0, 0, 264, 320, 271, 263, @@ -5832,7 +5882,7 @@ var yyAct = [...]int{ 554, 556, 562, 565, 524, 526, 528, 530, 543, 542, 539, 567, 568, 545, 550, 529, 541, 546, 559, 566, 563, 523, 527, 531, 540, 558, 557, 538, 549, 560, - 544, 532, 525, 533, 0, 196, 220, 365, 2044, 451, + 544, 532, 525, 533, 0, 196, 220, 365, 2045, 451, 287, 639, 608, 603, 205, 222, 0, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, @@ -5856,7 +5906,7 @@ var yyAct = [...]int{ 419, 0, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, 202, 410, 494, 285, 0, - 0, 0, 0, 2035, 711, 0, 0, 0, 0, 0, + 0, 0, 0, 2036, 711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 244, 0, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 0, 0, 0, 0, 0, 264, 320, 271, 263, @@ -5922,7 +5972,7 @@ var yyAct = [...]int{ 243, 456, 240, 481, 513, 514, 515, 517, 392, 265, 430, 393, 0, 373, 570, 571, 315, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 413, 0, 1897, 0, 0, 0, 0, 0, 0, 269, + 413, 0, 1898, 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, 419, 0, 367, 0, 0, @@ -5994,7 +6044,7 @@ var yyAct = [...]int{ 397, 426, 431, 295, 270, 243, 456, 240, 481, 513, 514, 515, 517, 392, 265, 430, 393, 0, 373, 570, 571, 315, 0, 522, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 413, 0, 1895, 0, 0, + 0, 0, 0, 0, 0, 413, 0, 1896, 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, @@ -6067,7 +6117,7 @@ var yyAct = [...]int{ 243, 456, 240, 481, 513, 514, 515, 517, 392, 265, 430, 393, 0, 373, 570, 571, 315, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 413, 0, 1893, 0, 0, 0, 0, 0, 0, 269, + 413, 0, 1894, 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, 419, 0, 367, 0, 0, @@ -6139,7 +6189,7 @@ var yyAct = [...]int{ 397, 426, 431, 295, 270, 243, 456, 240, 481, 513, 514, 515, 517, 392, 265, 430, 393, 0, 373, 570, 571, 315, 0, 522, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 413, 0, 1891, 0, 0, + 0, 0, 0, 0, 0, 413, 0, 1892, 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, @@ -6212,7 +6262,7 @@ var yyAct = [...]int{ 243, 456, 240, 481, 513, 514, 515, 517, 392, 265, 430, 393, 0, 373, 570, 571, 315, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 413, 0, 1889, 0, 0, 0, 0, 0, 0, 269, + 413, 0, 1890, 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, 419, 0, 367, 0, 0, @@ -6284,7 +6334,7 @@ var yyAct = [...]int{ 397, 426, 431, 295, 270, 243, 456, 240, 481, 513, 514, 515, 517, 392, 265, 430, 393, 0, 373, 570, 571, 315, 0, 522, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 413, 0, 1885, 0, 0, + 0, 0, 0, 0, 0, 413, 0, 1886, 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, @@ -6357,7 +6407,7 @@ var yyAct = [...]int{ 243, 456, 240, 481, 513, 514, 515, 517, 392, 265, 430, 393, 0, 373, 570, 571, 315, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 413, 0, 1883, 0, 0, 0, 0, 0, 0, 269, + 413, 0, 1884, 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, 419, 0, 367, 0, 0, @@ -6429,7 +6479,7 @@ var yyAct = [...]int{ 397, 426, 431, 295, 270, 243, 456, 240, 481, 513, 514, 515, 517, 392, 265, 430, 393, 0, 373, 570, 571, 315, 0, 522, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 413, 0, 1881, 0, 0, + 0, 0, 0, 0, 0, 413, 0, 1882, 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, @@ -6508,7 +6558,7 @@ var yyAct = [...]int{ 249, 316, 382, 425, 512, 419, 0, 367, 0, 0, 493, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, - 202, 410, 494, 285, 0, 1856, 0, 0, 0, 711, + 202, 410, 494, 285, 0, 1857, 0, 0, 0, 711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 244, 0, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 0, 0, 0, 0, @@ -6575,7 +6625,7 @@ var yyAct = [...]int{ 514, 515, 517, 392, 265, 430, 393, 0, 373, 570, 571, 315, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, 0, 0, 0, - 0, 0, 0, 1755, 269, 0, 0, 0, 0, 363, + 0, 0, 0, 1756, 269, 0, 0, 0, 0, 363, 266, 0, 0, 427, 0, 203, 0, 483, 251, 374, 371, 577, 281, 272, 268, 249, 316, 382, 425, 512, 419, 0, 367, 0, 0, 493, 398, 0, 0, 0, @@ -6998,7 +7048,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 200, 208, 221, 231, 235, 242, 260, 275, 277, 284, 297, 309, 317, 318, 321, 327, 377, 383, 384, 385, - 386, 4049, 407, 408, 411, 414, 415, 418, 420, 421, + 386, 4056, 407, 408, 411, 414, 415, 418, 420, 421, 424, 428, 432, 433, 434, 436, 438, 440, 452, 457, 471, 472, 473, 474, 475, 478, 479, 484, 485, 486, 487, 488, 496, 497, 510, 580, 582, 597, 615, 621, @@ -7229,26 +7279,26 @@ var yyAct = [...]int{ } var yyPact = [...]int{ - -1000, -1000, 4248, -1000, -527, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1924, -1000, -533, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 2410, 2446, -1000, -1000, -1000, -1000, 2625, -1000, 1009, - 2106, -1000, 2416, 2014, -1000, 54892, 506, -1000, 51992, -401, - 875, 237, 36042, -1000, 194, -1000, 186, 53442, 190, -1000, - -1000, -1000, -1000, -401, 21542, 2337, 59, 56, 54892, -1000, - -1000, -1000, -1000, -355, 2596, 2049, -1000, 384, -1000, -1000, - -1000, -1000, -1000, -1000, 51267, -1000, 1106, -1000, -1000, 2427, - 2419, 2299, 924, 2308, -1000, 2504, 2049, -1000, 21542, 2572, - 2483, 20817, 20817, 412, -1000, -1000, 306, -1000, -1000, 30967, - 54892, 38942, 308, -1000, 2416, -1000, -1000, -1000, 211, -1000, - 331, 1959, -1000, 1957, -1000, 952, 901, 353, 468, 462, - 345, 341, 340, 338, 335, 334, 333, 328, 355, -1000, - 945, 945, -199, -200, 356, 778, 408, 408, 1005, 466, - 2359, 2357, -1000, -1000, 945, 945, 945, 362, 945, 945, - 945, 945, 298, 296, 945, 945, 945, 945, 945, 945, - 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, - 945, 910, 2416, 262, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 2413, 2785, -1000, -1000, -1000, -1000, 2617, -1000, 975, + 2077, -1000, 2388, 4123, -1000, 55392, 479, -1000, 52492, -438, + 845, 218, 36542, -1000, 219, -1000, 200, 53942, 213, -1000, + -1000, -1000, -1000, -438, 22042, 2308, 81, 70, 55392, -1000, + -1000, -1000, -1000, -354, 2564, 2044, -1000, 387, -1000, -1000, + -1000, -1000, -1000, -1000, 51767, -1000, 1104, -1000, -1000, 2398, + 2370, 2278, 877, 2291, -1000, 2477, 2044, -1000, 22042, 2541, + 2448, 21317, 21317, 455, -1000, -1000, 282, -1000, -1000, 31467, + 55392, 39442, 290, -1000, 2388, -1000, -1000, -1000, 217, -1000, + 379, 1962, -1000, 1961, -1000, 1045, 1076, 397, 875, 858, + 396, 395, 394, 393, 391, 389, 386, 385, 404, -1000, + 909, 909, -205, -221, 1382, 446, 443, 443, 1132, 465, + 2328, 2323, -1000, -1000, 909, 909, 909, 847, 909, 909, + 909, 909, 350, 331, 909, 909, 909, 909, 909, 909, + 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, + 909, 818, 2388, 300, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -7295,67 +7345,67 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 54892, 303, 54892, -1000, 830, 505, -1000, -1000, - -408, 1094, 1094, 92, 1094, 1094, 1094, 1094, 197, 978, - 47, -1000, 185, 263, 179, 267, 1099, 321, -1000, -1000, - 255, 1099, 1833, -1000, 929, 243, 173, -1000, 1094, 1094, - -1000, 14268, 235, 14268, 14268, -1000, 2390, -1000, -1000, -1000, - -1000, -1000, 1248, -1000, -1000, -1000, -1000, -12, 457, -1000, - -1000, -1000, -1000, 53442, 50542, 281, -1000, -1000, 795, 1872, - 1468, 21542, 1447, 922, -1000, -1000, 1292, 896, -1000, -1000, - -1000, -1000, -1000, 812, -1000, 23717, 23717, 23717, 23717, -1000, - -1000, 1974, 49817, 1974, 1974, 23717, 1974, 23717, 1974, 1974, - 1974, 1974, 21542, 1974, 1974, 1974, 1974, -1000, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, -1000, -1000, -1000, -1000, 1974, - 828, 1974, 1974, 1974, 1974, 1974, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1974, 1974, 1974, 1974, 1974, 1974, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, -1000, -1000, -1000, 1647, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 26617, 1525, 1517, 1489, -1000, 18642, 1974, + -1000, -1000, 55392, 209, 55392, -1000, 532, 478, -1000, -1000, + -443, 1025, 1025, 92, 1025, 1025, 1025, 1025, 199, 948, + 69, -1000, 198, 309, 191, 312, 1028, 263, -1000, -1000, + 286, 1028, 1834, -1000, 895, 297, 183, -1000, 1025, 1025, + -1000, 14768, 265, 14768, 14768, -1000, 2369, -1000, -1000, -1000, + -1000, -1000, 1300, -1000, -1000, -1000, -1000, -19, 464, -1000, + -1000, -1000, -1000, 53942, 51042, 239, -1000, -1000, 41, 1866, + 1631, 22042, 1296, 874, -1000, -1000, 1370, 853, -1000, -1000, + -1000, -1000, -1000, 496, -1000, 24217, 24217, 24217, 24217, -1000, + -1000, 1967, 50317, 1967, 1967, 24217, 1967, 24217, 1967, 1967, + 1967, 1967, 22042, 1967, 1967, 1967, 1967, -1000, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, -1000, -1000, -1000, -1000, 1967, + 526, 1967, 1967, 1967, 1967, 1967, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 1967, 1967, 1967, 1967, 1967, 1967, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, -1000, -1000, -1000, 1641, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 27117, 1537, 1524, 1518, -1000, 19142, 1967, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 54892, -1000, 1974, 217, 53442, 53442, 314, 1335, -1000, - -1000, 2504, 2049, -1000, 2596, 2550, 384, -1000, 3511, 1705, - 1596, 1597, 2049, 1945, 54892, -1000, 1992, -1000, -1000, -1000, - -322, -336, 2249, 1485, 1828, -1000, -1000, -1000, -1000, 1963, - 21542, -1000, -1000, 2617, -1000, 28067, 807, 2613, 49092, -1000, - 412, 412, 1954, 423, 6, -1000, -1000, -1000, -1000, 986, - 35317, -1000, -1000, -1000, -1000, -1000, 1851, 54892, -1000, -1000, - 4867, 1344, -1000, 2100, -1000, 1847, -1000, 2011, 21542, 1994, - 488, 1344, 476, 475, 473, -1000, -53, -1000, -1000, -1000, - -1000, -1000, -1000, 945, 945, 945, -1000, 313, 2571, 2014, - 5064, -1000, -1000, -1000, 48367, 2099, 1344, -1000, 2089, -1000, - 1052, 863, 857, 857, 1344, -1000, -1000, 54167, 1344, 1050, - 1040, 1344, 1344, 53442, 53442, -1000, 47642, -1000, 46917, 46192, - 1334, 53442, 45467, 44742, 44017, 43292, 42567, -1000, 2351, -1000, - 2221, -1000, -1000, -1000, 54167, 1344, 1344, 54167, 53442, 54167, - 54892, 1344, -1000, -1000, 339, -1000, -1000, 1333, 1332, 1331, - 945, 945, 1328, 1812, 1801, 1796, 945, 945, 1327, 1778, - 37492, 1767, 261, 1326, 1297, 1291, 1295, 1750, 205, 1746, - 1294, 1211, 1288, 53442, 2064, 54892, -1000, 242, 933, 425, - 984, 2416, 2324, 1952, 445, 486, 1344, 429, 429, 53442, - -1000, 14999, 54892, 258, -1000, 1736, 21542, -1000, 1100, 1099, - 1099, -1000, -1000, -1000, -1000, -1000, -1000, 1094, 54892, 1100, - -1000, -1000, -1000, 1099, 1094, 54892, 1094, 1094, 1094, 1094, - 1099, 1099, 1099, 1094, 54892, 54892, 54892, 54892, 54892, 54892, - 54892, 54892, 54892, 14268, 929, 1094, -418, -1000, 1726, -1000, - -1000, -1000, 2211, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 55392, -1000, 1967, 243, 53942, 53942, 375, 1326, -1000, + -1000, 2477, 2044, -1000, 2564, 2536, 387, -1000, 3479, 1777, + 1528, 1499, 2044, 1932, 55392, -1000, 1981, -1000, -1000, -1000, + -322, -327, 2200, 1438, 1833, -1000, -1000, -1000, -1000, 2365, + 22042, -1000, -1000, 2586, -1000, 28567, 525, 2582, 49592, -1000, + 455, 455, 1956, 444, 37, -1000, -1000, -1000, -1000, 958, + 35817, -1000, -1000, -1000, -1000, -1000, 1831, 55392, -1000, -1000, + 4884, 1332, -1000, 2076, -1000, 1825, -1000, 2029, 22042, 2064, + 477, 1332, 472, 471, 470, -1000, -51, -1000, -1000, -1000, + -1000, -1000, -1000, 909, 909, 909, -1000, 392, 2538, 4123, + 5575, -1000, -1000, -1000, 48867, 2069, 1332, -1000, 2063, -1000, + 1019, 866, 870, 870, 1332, -1000, -1000, 54667, 1332, 1018, + 1016, 1332, 1332, 53942, 53942, -1000, 48142, -1000, 47417, 46692, + 1315, 53942, 45967, 45242, 44517, 43792, 43067, -1000, 2246, -1000, + 2024, -1000, -1000, -1000, 54667, 1332, 1332, 54667, 53942, 54667, + 55392, 1332, -1000, -1000, 372, -1000, -1000, 1310, 1309, 1297, + 909, 909, 1295, 1810, 1805, 1796, 909, 909, 1292, 1783, + 37992, 1772, 288, 1290, 1289, 1234, 1319, 1768, 232, 1762, + 1314, 1278, 1230, 53942, 2056, 55392, -1000, 278, 965, 1004, + 953, 2388, 2296, 1946, 463, 475, 1332, 447, 447, 53942, + -1000, 15499, 55392, 256, -1000, 1749, 22042, -1000, 1039, 1028, + 1028, -1000, -1000, -1000, -1000, -1000, -1000, 1025, 55392, 1039, + -1000, -1000, -1000, 1028, 1025, 55392, 1025, 1025, 1025, 1025, + 1028, 1028, 1028, 1025, 55392, 55392, 55392, 55392, 55392, 55392, + 55392, 55392, 55392, 14768, 895, 1025, -444, -1000, 1744, -1000, + -1000, -1000, 2173, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -7371,328 +7421,329 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 14268, 14268, -1000, -1000, -1000, -1000, -1000, 1951, -1000, 180, - 34, 189, -1000, 41842, 511, 970, -1000, 511, -1000, -1000, - -1000, 1948, 41117, -1000, -419, -420, -438, -444, -1000, -1000, - -1000, -449, -456, -1000, -1000, -1000, 21542, 21542, 21542, 21542, - -234, -1000, 1173, 23717, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 21542, 253, 1169, 23717, 23717, 23717, 23717, 23717, 23717, - 23717, 25167, 24442, 23717, 23717, 23717, 23717, 23717, 23717, -1000, - -1000, 33142, 6794, 6794, 896, 896, 896, 896, -1000, -164, - 1947, 54167, -1000, -1000, -1000, 804, 21542, 21542, 896, -1000, - 1344, 1207, 18642, 20817, 20817, 21542, 21542, 993, 1468, 54167, - 21542, -1000, 1597, -1000, -1000, -1000, -1000, 1191, -1000, -1000, - 1115, 2411, 2411, 2411, 2411, 21542, 21542, 21542, 21542, 21542, - 21542, 21542, 21542, 21542, 21542, 2411, 21542, 229, 229, 1138, - 21542, 21542, 21542, 21542, 21542, 21542, 17192, 21542, 21542, 23717, - 21542, 21542, 21542, 1597, 21542, 21542, 21542, 21542, 21542, 21542, - 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, - 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, - 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, - 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, - 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, - 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, - 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, 21542, - 21542, 21542, 21542, 1597, 21542, 1899, 21542, 21542, 21542, 21542, - 21542, 21542, 20817, 16461, 20817, 20817, 20817, 20817, 20817, -1000, - -1000, -1000, -1000, -1000, -1000, 21542, 21542, 21542, 21542, 21542, - 21542, 21542, 21542, 1597, 21542, 21542, 21542, 21542, 21542, -1000, + 14768, 14768, -1000, -1000, -1000, -1000, -1000, 1944, -1000, 202, + 23, 211, -1000, 42342, 485, 944, -1000, 485, -1000, -1000, + -1000, 1942, 41617, -1000, -445, -446, -450, -454, -1000, -1000, + -1000, -455, -457, -1000, -1000, -1000, 22042, 22042, 22042, 22042, + -272, -1000, 1128, 24217, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 22042, 242, 981, 24217, 24217, 24217, 24217, 24217, 24217, + 24217, 25667, 24942, 24217, 24217, 24217, 24217, 24217, 24217, -1000, + -1000, 33642, 3215, 3215, 853, 853, 853, 853, -1000, -166, + 1941, 54667, -1000, -1000, -1000, 524, 22042, 22042, 853, -1000, + 1332, 1294, 19142, 21317, 21317, 22042, 22042, 970, 1631, 54667, + 22042, -1000, 1499, -1000, -1000, -1000, -1000, 1136, -1000, -1000, + 1014, 2340, 2340, 2340, 2340, 22042, 22042, 22042, 22042, 22042, + 22042, 22042, 22042, 22042, 22042, 2340, 22042, 708, 708, 912, + 22042, 22042, 22042, 22042, 22042, 22042, 17692, 22042, 22042, 24217, + 22042, 22042, 22042, 1499, 22042, 22042, 22042, 22042, 22042, 22042, + 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, + 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, + 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, + 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, + 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, + 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, + 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, 22042, + 22042, 22042, 22042, 1499, 22042, 1307, 22042, 22042, 22042, 22042, + 22042, 22042, 21317, 16961, 21317, 21317, 21317, 21317, 21317, -1000, + -1000, -1000, -1000, -1000, -1000, 22042, 22042, 22042, 22042, 22042, + 22042, 22042, 22042, 1499, 22042, 22042, 22042, 22042, 22042, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 1711, 1702, 1450, 21542, -1000, 1946, -1000, -184, 30242, 21542, - 1700, 2608, 2136, 53442, -1000, -1000, -1000, -1000, 2504, -1000, - 2504, 1711, 3059, 2258, 20817, -1000, -1000, 3059, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1822, -1000, 54892, 1945, - 2473, 53442, -1000, -274, -1000, -275, 2247, 1682, 916, -1000, - 21542, 21542, 1944, -1000, 2295, 54892, -1000, -234, -1000, 40392, - -1000, -1000, 13537, 54892, 318, 54892, -1000, 29517, 39667, 311, - -1000, 6, 1919, -1000, 25, 8, 17917, 895, -1000, -1000, - -1000, 356, 25892, 1867, 895, 108, -1000, -1000, -1000, 2011, - -1000, 2011, 2011, 2011, 2011, 916, 916, 916, 916, -1000, - -1000, -1000, -1000, -1000, 2063, 2057, -1000, 2011, 2011, 2011, - 2011, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2055, 2055, - 2055, 2048, 2048, 2025, 2025, 402, -1000, 21542, 492, 38942, - 2452, 1287, 1176, 242, 430, 2134, 1344, 1344, 1344, 430, - -1000, 1394, 1382, 1378, -1000, -519, 1941, -1000, -1000, 2567, - -1000, -1000, 1049, 1071, 1070, 1087, 53442, 226, 307, -1000, - 422, -1000, 38942, 1344, 1036, 857, 1344, -1000, 1344, -1000, - -1000, -1000, -1000, -1000, 1344, -1000, -1000, 1940, -1000, 1920, - 1172, 1069, 1128, 1019, 1940, -1000, -1000, -170, 1940, -1000, - 1940, -1000, 1940, -1000, 1940, -1000, 1940, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1003, 292, -333, 53442, - 226, 440, -1000, 436, 33142, -1000, -1000, -1000, 33142, 33142, - -1000, -1000, -1000, -1000, 1678, 1676, -1000, -1000, -1000, -1000, + 1789, 1736, 1391, 22042, -1000, 1934, -1000, -185, 30742, 22042, + 1709, 2581, 2100, 53942, -1000, -1000, -1000, -1000, 2477, -1000, + 2477, 1789, 3299, 2209, 21317, -1000, -1000, 3299, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1476, -1000, 55392, + 1932, 2443, 53942, -1000, -360, -1000, -361, 2196, 1703, 357, + -1000, 22042, 22042, 1931, -1000, 1276, 55392, -1000, -272, -1000, + 40892, -1000, -1000, 14037, 55392, 381, 55392, -1000, 30017, 40167, + 311, -1000, 37, 1898, -1000, 47, 13, 18417, 851, -1000, + -1000, -1000, 1382, 26392, 1853, 851, 133, -1000, -1000, -1000, + 2029, -1000, 2029, 2029, 2029, 2029, 357, 357, 357, 357, + -1000, -1000, -1000, -1000, -1000, 2055, 2051, -1000, 2029, 2029, + 2029, 2029, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2050, + 2050, 2050, 2049, 2049, 2033, 2033, 437, -1000, 22042, 424, + 39442, 2412, 1224, 1701, 278, 453, 2098, 1332, 1332, 1332, + 453, -1000, 1385, 1352, 1349, -1000, -522, 1928, -1000, -1000, + 2533, -1000, -1000, 1153, 1063, 1053, 1078, 53942, 262, 341, + -1000, 427, -1000, 39442, 1332, 1015, 870, 1332, -1000, 1332, + -1000, -1000, -1000, -1000, -1000, 1332, -1000, -1000, 1925, -1000, + 1919, 1090, 1052, 1079, 1035, 1925, -1000, -1000, -171, 1925, + -1000, 1925, -1000, 1925, -1000, 1925, -1000, 1925, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 976, 122, -329, + 53942, 262, 459, -1000, 457, 33642, -1000, -1000, -1000, 33642, + 33642, -1000, -1000, -1000, -1000, 1697, 1675, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -501, 54892, -1000, 246, 966, - 283, 467, 295, 54892, 796, 2492, 2491, 2486, 2485, 2480, - 2462, 240, 294, 54892, 54892, 429, 2162, 54892, 2437, 54892, - -1000, -1000, -1000, -1000, -1000, 1664, 1649, -1000, 1468, 54892, - -1000, -1000, 1094, 1094, -1000, -1000, 54892, 1094, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1094, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -506, 55392, -1000, 277, + 935, 364, 354, 338, 55392, 333, 2470, 2467, 2455, 2451, + 2450, 2446, 294, 323, 55392, 55392, 447, 2139, 55392, 2421, + 55392, -1000, -1000, -1000, -1000, -1000, 1673, 1643, -1000, 1631, + 55392, -1000, -1000, 1025, 1025, -1000, -1000, 55392, 1025, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1025, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 54892, -1000, -1000, -1000, -1000, -12, 182, -1000, - -1000, 53442, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -69, -1000, 784, 22, 411, -1000, -1000, -1000, -1000, - -1000, 2496, -1000, 1468, 1039, 1015, -1000, 1974, -1000, -1000, - 1225, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 253, - 23717, 23717, 23717, 1575, 764, 1229, 1244, 1346, 1398, 1398, - 954, 23717, 954, 23717, 908, 908, 908, 908, 908, -1000, - -1000, -1000, -1000, -1000, -1000, 1647, -1000, 1644, -1000, 1974, - 54167, 1808, 16461, 2632, 1675, 1597, 912, -1000, -1000, -1000, + -1000, -1000, -1000, 55392, -1000, -1000, -1000, -1000, -19, 193, + -1000, -1000, 53942, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -105, -1000, 281, 32, 412, -1000, -1000, -1000, + -1000, -1000, 2472, -1000, 1631, 995, 982, -1000, 1967, -1000, + -1000, 1257, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 242, 24217, 24217, 24217, 1554, 834, 1496, 1322, 1351, 1167, + 1167, 929, 24217, 929, 24217, 859, 859, 859, 859, 859, + -1000, -1000, -1000, -1000, -1000, -1000, 1641, -1000, 1628, -1000, + 1967, 54667, 1795, 16961, 2037, 1872, 1499, 869, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 4184, 1800, -1000, - 1800, 1685, 4179, 1025, -1000, 21542, 1597, 4173, -1000, -1000, - 1597, 1597, 21542, -1000, -1000, 21542, 21542, 21542, 21542, 1176, - 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 21542, - 1176, 1938, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 4204, 1793, + -1000, 1793, 1441, 4193, 973, -1000, 22042, 1499, 4188, -1000, + -1000, 1499, 1499, 22042, -1000, -1000, 22042, 22042, 22042, 22042, + 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, + 22042, 1701, 1920, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 1932, 2597, 2090, 1176, 1176, 1176, 1176, 1176, 21542, 1790, - -1000, -1000, -1000, 1446, 4163, 1389, 4159, 1176, 1176, -1000, - 1176, 4153, 4148, 1597, 1872, 2878, 2832, 1176, 1176, 1176, - 1176, 1176, 2736, 2698, 1176, 1176, 2691, 1176, 4136, 1176, - 2666, 2661, 2641, 2626, 2619, 2604, 2598, 2560, 2548, 2542, - 2536, 2525, 2520, 2453, 2442, 2424, 2417, 2413, 1176, 1176, - 1176, 4112, 1176, 4038, 1176, 3893, 1176, 1176, 3873, 2407, - 2395, 1597, 1927, -1000, 3866, 1176, 3862, 3840, 3835, 2330, - 3831, 3827, 3542, 1176, 1176, 1176, 2326, 3527, 3516, 3476, - 3471, 3460, 3455, 3446, 3385, 3364, 1176, 1450, 1450, 1450, - 1450, 1450, 3360, -239, 1176, 1597, -1000, -1000, -1000, -1000, - -1000, 3356, 2318, 3352, 3348, 3303, 3299, 1597, 1921, 1974, - 801, -1000, -1000, 1800, 1597, 1597, 1800, 1800, 3295, 3066, - 3045, 3026, 2998, 2988, 1176, 1176, -1000, 1176, 2977, 2973, - 2286, 2282, 1597, -1000, 1450, 54892, -1000, -400, -1000, 11, - 958, 1974, -1000, 37492, 1597, -1000, 3213, -1000, 1180, -1000, - -1000, -1000, -1000, -1000, 34592, 1850, 3059, -1000, -1000, 1974, - 1759, -1000, -1000, -1000, -1000, 916, 81, 33867, 839, 839, - 120, 1468, 1468, 21542, -1000, -1000, -1000, -1000, -1000, -1000, - 793, 2552, 410, 1974, -1000, 1922, 3301, -1000, -1000, -1000, - 2471, 27342, -1000, -1000, 1974, 1974, 54892, 1891, 1789, -1000, - 789, -1000, 1354, 1919, 6, 5, -1000, -1000, -1000, -1000, - 1468, -1000, 1359, 323, 336, -1000, 383, -1000, -1000, -1000, - -1000, 2325, 83, -1000, -1000, -1000, 367, 916, -1000, -1000, - -1000, -1000, -1000, -1000, 1641, 1641, -1000, -1000, -1000, -1000, - -1000, 1260, -1000, -1000, -1000, -1000, 1258, -1000, -1000, 1256, - -1000, -1000, 2884, 2172, 492, -1000, -1000, 945, 1639, -1000, - -1000, 2352, 945, 945, 53442, -1000, -1000, 1827, 2452, 246, - 54892, 1001, 2160, -1000, 2134, 2134, 2134, 54892, -1000, -1000, - -1000, -1000, -1000, -1000, -505, 165, 612, -1000, -1000, -1000, - 4878, 53442, 1743, -1000, 223, -1000, 1820, -1000, 53442, -1000, - 1718, 2046, 1344, 1344, -1000, -1000, -1000, 53442, 1974, -1000, - -1000, -1000, -1000, 481, 2409, 300, -1000, -1000, -258, -1000, - -1000, 226, 223, 54167, 1344, 895, -1000, -1000, -1000, -1000, - -1000, -508, 1709, 471, 228, 528, 54892, 54892, 54892, 54892, - 54892, 54892, 775, -1000, -1000, 37, -1000, -1000, 203, -1000, - -1000, -1000, -1000, -1000, 203, -1000, -1000, -1000, -1000, -1000, - 270, 434, -1000, 54892, 54892, 917, -1000, -1000, -1000, -1000, - -1000, 1099, -1000, -1000, 1099, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 2387, 54892, 18, -472, -1000, - -469, 21542, -1000, -1000, -1000, -1000, 1194, 479, 1229, 23717, - 23717, 1207, 1207, 23717, -1000, -1000, -1000, 932, 932, 33142, - -1000, 23717, 21542, 20817, -1000, -1000, 21542, 21542, 21542, 988, - -1000, 21542, 1383, -1000, 21542, -1000, -1000, 1450, 1176, 1176, - 1176, 1176, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1939, -1000, 21542, 21542, 21542, 1597, 327, -1000, - -1000, -1000, -1000, -1000, 2591, -1000, 21542, -1000, 33142, 21542, - 21542, 21542, -1000, -1000, -1000, 21542, 21542, -1000, -1000, 21542, - -1000, 21542, -1000, -1000, -1000, -1000, -1000, -1000, 21542, -1000, - 21542, -1000, -1000, -1000, 21542, -1000, 21542, -1000, -1000, 21542, - -1000, 21542, -1000, 21542, -1000, 21542, -1000, 21542, -1000, 21542, - -1000, 21542, -1000, 21542, -1000, 21542, -1000, 21542, -1000, 21542, - -1000, 21542, -1000, 21542, -1000, 21542, -1000, 21542, -1000, 21542, - -1000, 21542, -1000, 21542, -1000, -1000, -1000, 21542, -1000, 21542, - -1000, 21542, -1000, -1000, 21542, -1000, 21542, -1000, 21542, -1000, - 21542, 21542, -1000, 21542, 21542, 21542, -1000, 21542, 21542, 21542, - 21542, -1000, -1000, -1000, -1000, 21542, 21542, 21542, 21542, 21542, - 21542, 21542, 21542, 21542, 21542, -1000, -1000, -1000, -1000, -1000, - -1000, 21542, -1000, 38942, 73, -239, 1899, 73, 1899, 22992, - 813, 776, 22267, -1000, 20817, 15730, -1000, -1000, -1000, -1000, - -1000, 21542, 21542, 21542, 21542, 21542, 21542, -1000, -1000, -1000, - 21542, 21542, -1000, 21542, -1000, 21542, -1000, -1000, -1000, -1000, - -1000, 958, -1000, 857, 857, 857, 53442, -1000, -1000, -1000, - -1000, 1909, -1000, 2499, -1000, 2264, 2262, 2590, 2552, -1000, - 29517, 3059, -1000, -1000, 53442, -390, -1000, 2301, 2307, 839, - 839, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 12806, 2504, - 21542, 2158, 54167, 208, -1000, 28792, 53442, 54167, 29517, 29517, - 29517, 29517, 29517, -1000, 2227, 2201, -1000, 2223, 2180, 2208, - 54892, -1000, 1711, 1697, -1000, 21542, 31692, 1869, 29517, -1000, - -1000, 29517, 54892, 12075, -1000, -1000, 14, 28, -1000, -1000, - -1000, -1000, 356, -1000, -1000, 1067, 2468, 2345, -1000, -1000, - -1000, -1000, -1000, 1691, -1000, 1689, 1905, 1672, 1663, 292, - -1000, 1990, 2383, 945, 945, -1000, 1255, -1000, 1344, 1637, - 1627, -1000, -1000, -1000, 463, -1000, 2435, 54892, 2157, 2154, - 2152, -1000, -517, 1253, 2039, 1972, 21542, 2035, 2566, 1880, - 53442, -1000, -1000, 54167, -1000, 291, -1000, 492, 53442, -1000, - -1000, -1000, 307, 54892, -1000, 6296, -1000, -1000, -1000, 223, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 54892, 238, -1000, - 2033, 1203, -1000, -1000, 2026, -1000, -1000, -1000, -1000, -1000, - 213, 200, 1611, 199, 1609, 199, -1000, 54892, 905, 2172, - 54892, -1000, -1000, -1000, 1094, 1094, -1000, -1000, 2365, -1000, - 1344, 1176, 23717, 23717, -1000, 896, -1000, -1000, 495, -209, - 2011, 2011, -1000, 2011, 2025, -1000, 2011, 171, 2011, 149, - 2011, -1000, -1000, 1597, 1597, -1000, 1450, -1000, 2269, 1971, - 2959, -1000, 1468, 21542, 2953, -1000, -1000, -1000, -1000, -1000, - -61, 2948, 2897, 1176, -1000, 2010, 2008, 21542, 1176, 1597, - 2254, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, - 1176, 1176, 1176, 2248, 2237, 2225, 2220, 2204, 2198, 2131, - 2127, 2120, 2116, 2060, 2003, 1989, 1985, 1967, 1942, 1176, - 1176, 1928, 1176, 1924, 1910, -1000, 1468, 1450, 2890, 1450, - 1176, 1176, 2870, 290, 1176, 1633, 1633, 1633, 1633, 1633, - 1450, 1450, 1450, 1450, 1176, 53442, -1000, -239, -1000, -1000, - -284, -297, -1000, 1597, -239, 1892, 23717, 1176, 23717, 23717, - 23717, 1176, 1597, -1000, 1901, 1819, 2860, 1811, 1176, 2789, - 1176, 1176, 1176, 1806, -1000, 2477, 2477, 2477, 1607, 1180, - 54892, -1000, -1000, -1000, -1000, 2552, 2545, 1884, -1000, -1000, - 81, 650, -1000, 2279, 2307, -1000, 2563, 2289, 2561, -1000, - -1000, -1000, -1000, -1000, 1468, -1000, 2408, 1864, -1000, 961, - 1875, -1000, -1000, 20092, 1615, 2261, 544, 1607, 1926, 3301, - 2133, 2147, 3103, -1000, -1000, -1000, -1000, 2199, -1000, 2183, - -1000, -1000, 1992, -1000, 2749, 318, 29517, 1885, 1885, -1000, - 532, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1091, 6296, - 2634, -1000, 1584, -1000, 1350, 193, 1251, -1000, -1000, 945, - 945, -1000, 1032, 1029, -1000, 54892, 2007, -1000, 916, 1528, - 916, 1243, -1000, -1000, 1228, -1000, -1000, -1000, -1000, 2017, - 2321, -1000, -1000, -1000, -1000, 54892, -1000, -1000, 54892, 54892, - 54892, 2001, 2556, -1000, 21542, 2000, 948, 2850, 53442, 53442, + -1000, 1915, 2574, 1455, 1701, 1701, 1701, 1701, 1701, 22042, + 1426, -1000, -1000, -1000, 1513, 4177, 1485, 4163, 1701, 1701, + -1000, 1701, 4147, 4143, 1499, 1866, 2912, 2834, 1701, 1701, + 1701, 1701, 1701, 2823, 2788, 1701, 1701, 2777, 1701, 3910, + 1701, 2751, 2652, 2646, 2641, 2635, 2631, 2626, 2618, 2602, + 2585, 2559, 2553, 2544, 2539, 2529, 2525, 2519, 2510, 1701, + 1701, 1701, 3876, 1701, 3867, 1701, 3840, 1701, 1701, 3836, + 2503, 2497, 1499, 1904, -1000, 3832, 1701, 3546, 3527, 3485, + 2480, 3467, 3463, 3451, 1701, 1701, 1701, 2431, 3446, 3439, + 3434, 3374, 3365, 3358, 3350, 3301, 3209, 1701, 1391, 1391, + 1391, 1391, 1391, 3152, -277, 1701, 1499, -1000, -1000, -1000, + -1000, -1000, 3061, 2423, 3056, 3025, 3005, 2994, 1499, 1903, + 1967, 523, -1000, -1000, 1793, 1499, 1499, 1793, 1793, 2990, + 2975, 2969, 2961, 2956, 2946, 1701, 1701, -1000, 1701, 2926, + 2897, 2393, 2375, 1499, -1000, 1391, 55392, -1000, -435, -1000, + 4, 952, 1967, -1000, 37992, 1499, -1000, 4983, -1000, 1198, + -1000, -1000, -1000, -1000, -1000, 35092, 1752, -1000, -1000, -1000, + 1967, 1743, -1000, -1000, -1000, -1000, 357, 99, 34367, 842, + 842, 143, 1631, 1631, 22042, -1000, -1000, -1000, -1000, -1000, + -1000, 522, 2551, 434, 1967, -1000, 1908, 3407, -1000, -1000, + -1000, 2440, 27842, -1000, -1000, 1967, 1967, 55392, 1821, 1818, + -1000, 520, -1000, 1345, 1898, 37, 16, -1000, -1000, -1000, + -1000, 1631, -1000, 1342, 382, 369, -1000, 431, -1000, -1000, + -1000, -1000, 2314, 111, -1000, -1000, -1000, 308, 357, -1000, + -1000, -1000, -1000, -1000, -1000, 1621, 1621, -1000, -1000, -1000, + -1000, -1000, 1210, -1000, -1000, -1000, -1000, 1201, -1000, -1000, + 1188, -1000, -1000, 2667, 2105, 424, -1000, -1000, 909, 1613, + -1000, -1000, 2316, 909, 909, 53942, -1000, -1000, 1840, 2412, + 277, 55392, 980, 2138, -1000, 2098, 2098, 2098, 55392, -1000, + -1000, -1000, -1000, -1000, -1000, -512, 187, 573, -1000, -1000, + -1000, 4187, 53942, 1739, -1000, 257, -1000, 1832, -1000, 53942, + -1000, 1734, 2048, 1332, 1332, -1000, -1000, -1000, 53942, 1967, + -1000, -1000, -1000, -1000, 474, 2377, 335, -1000, -1000, -304, + -1000, -1000, 262, 257, 54667, 1332, 851, -1000, -1000, -1000, + -1000, -1000, -503, 1732, 468, 264, 330, 55392, 55392, 55392, + 55392, 55392, 55392, 499, -1000, -1000, 46, -1000, -1000, 229, + -1000, -1000, -1000, -1000, -1000, 229, -1000, -1000, -1000, -1000, + -1000, 310, 448, -1000, 55392, 55392, 928, -1000, -1000, -1000, + -1000, -1000, 1028, -1000, -1000, 1028, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 2354, 55392, 17, -474, + -1000, -470, 22042, -1000, -1000, -1000, -1000, 1405, 829, 1496, + 24217, 24217, 1294, 1294, 24217, -1000, -1000, -1000, 930, 930, + 33642, -1000, 24217, 22042, 21317, -1000, -1000, 22042, 22042, 22042, + 913, -1000, 22042, 1410, -1000, 22042, -1000, -1000, 1391, 1701, + 1701, 1701, 1701, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 1948, -1000, 22042, 22042, 22042, 1499, 334, + -1000, -1000, -1000, -1000, -1000, 2572, -1000, 22042, -1000, 33642, + 22042, 22042, 22042, -1000, -1000, -1000, 22042, 22042, -1000, -1000, + 22042, -1000, 22042, -1000, -1000, -1000, -1000, -1000, -1000, 22042, + -1000, 22042, -1000, -1000, -1000, 22042, -1000, 22042, -1000, -1000, + 22042, -1000, 22042, -1000, 22042, -1000, 22042, -1000, 22042, -1000, + 22042, -1000, 22042, -1000, 22042, -1000, 22042, -1000, 22042, -1000, + 22042, -1000, 22042, -1000, 22042, -1000, 22042, -1000, 22042, -1000, + 22042, -1000, 22042, -1000, 22042, -1000, -1000, -1000, 22042, -1000, + 22042, -1000, 22042, -1000, -1000, 22042, -1000, 22042, -1000, 22042, + -1000, 22042, 22042, -1000, 22042, 22042, 22042, -1000, 22042, 22042, + 22042, 22042, -1000, -1000, -1000, -1000, 22042, 22042, 22042, 22042, + 22042, 22042, 22042, 22042, 22042, 22042, -1000, -1000, -1000, -1000, + -1000, -1000, 22042, -1000, 39442, 14, -277, 1307, 14, 1307, + 23492, 796, 795, 22767, -1000, 21317, 16230, -1000, -1000, -1000, + -1000, -1000, 22042, 22042, 22042, 22042, 22042, 22042, -1000, -1000, + -1000, 22042, 22042, -1000, 22042, -1000, 22042, -1000, -1000, -1000, + -1000, -1000, 952, -1000, 867, 815, 870, 53942, -1000, -1000, + -1000, -1000, 1893, -1000, 2465, -1000, 2225, 2221, 2555, 2551, + -1000, 30017, -1000, -1000, 53942, -426, -1000, 2276, 2282, 842, + 842, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 13306, 2477, + 22042, 2134, 54667, 250, -1000, 29292, 53942, 54667, 30017, 30017, + 30017, 30017, 30017, -1000, 2188, 2182, -1000, 2166, 2157, 2184, + 55392, -1000, 1789, 1727, -1000, 22042, 32192, 1837, 30017, -1000, + -1000, 30017, 55392, 12575, -1000, -1000, 12, 3, -1000, -1000, + -1000, -1000, 1382, -1000, -1000, 969, 2434, 2312, -1000, -1000, + -1000, -1000, -1000, 1723, -1000, 1717, 1890, 1715, 1690, 122, + -1000, 2042, 2347, 909, 909, -1000, 1185, -1000, 1332, 1606, + 1588, -1000, -1000, -1000, 467, -1000, 2419, 55392, 2131, 2128, + 2127, -1000, -520, 1182, 2047, 1992, 22042, 2045, 2532, 1880, + 53942, -1000, -1000, 54667, -1000, 299, -1000, 424, 53942, -1000, + -1000, -1000, 341, 55392, -1000, 5569, -1000, -1000, -1000, 257, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 55392, 276, -1000, + 2036, 1261, -1000, -1000, 2096, -1000, -1000, -1000, -1000, -1000, + 245, 230, 1586, 227, 1546, 227, -1000, 55392, 927, 2105, + 55392, -1000, -1000, -1000, 1025, 1025, -1000, -1000, 2338, -1000, + 1332, 1701, 24217, 24217, -1000, 853, -1000, -1000, 383, -254, + 2029, 2029, -1000, 2029, 2033, -1000, 2029, 189, 2029, 188, + 2029, -1000, -1000, 1499, 1499, -1000, 1391, -1000, 2344, 1929, + 2887, -1000, 1631, 22042, 2880, -1000, -1000, -1000, -1000, -1000, + -63, 2796, 2756, 1701, -1000, 2026, 2023, 22042, 1701, 1499, + 2319, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, + 1701, 1701, 1701, 2309, 2295, 2287, 2281, 2274, 2263, 2249, + 2218, 2206, 2193, 2168, 2159, 2146, 2130, 2080, 2070, 1701, + 1701, 2059, 1701, 2052, 2030, -1000, 1631, 1391, 2436, 1391, + 1701, 1701, 2397, 319, 1701, 1688, 1688, 1688, 1688, 1688, + 1391, 1391, 1391, 1391, 1701, 53942, -1000, -277, -1000, -1000, + -371, -374, -1000, 1499, -277, 1889, 24217, 1701, 24217, 24217, + 24217, 1701, 1499, -1000, 1987, 1972, 2325, 1937, 1701, 2302, + 1701, 1701, 1701, 1905, -1000, 2466, 1967, 2466, 1967, 2466, + 1620, 1198, 55392, -1000, -1000, -1000, -1000, 2551, 2528, 1888, + -1000, 99, 614, -1000, 2273, 2282, -1000, 2531, 2293, 2530, + -1000, -1000, -1000, -1000, -1000, 1631, -1000, 2394, 1860, -1000, + 932, 1867, -1000, -1000, 20592, 1672, 2213, 519, 1620, 1922, + 3407, 2088, 2126, 3490, -1000, -1000, -1000, -1000, 2175, -1000, + 2170, -1000, -1000, 1981, -1000, 1858, 381, 30017, 1851, 1851, + -1000, 516, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1080, + 5569, 2596, -1000, 1543, -1000, 1340, 208, 1178, -1000, -1000, + 909, 909, -1000, 1010, 1007, -1000, 55392, 2019, -1000, 357, + 1541, 357, 1172, -1000, -1000, 1165, -1000, -1000, -1000, -1000, + 2014, 2151, -1000, -1000, -1000, -1000, 55392, -1000, -1000, 55392, + 55392, 55392, 1998, 2514, -1000, 22042, 1994, 914, 2535, 53942, + 53942, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 808, 909, -485, 318, 314, 909, 909, 909, + -521, -1000, -1000, 1617, 1553, -1000, -215, -1000, 22042, -1000, + -1000, -1000, -1000, -1000, 1286, 1286, 1537, 1524, 1518, -1000, + 1981, -1000, -1000, -1000, 1790, -1000, -1000, -181, 53942, 53942, + 53942, 53942, -1000, -1000, -1000, 1122, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 853, 1499, + 343, -187, 1499, -1000, -1000, 357, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 22042, -1000, 22042, -1000, + 22042, 1631, 22042, 2477, 1509, 22042, 22042, -1000, 1163, 1155, + 1701, -1000, -1000, -1000, 22042, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 22042, -1000, + 22042, -1000, 22042, -1000, 22042, -1000, 22042, -1000, 22042, -1000, + 22042, -1000, 22042, -1000, 22042, -1000, 22042, -1000, 22042, -1000, + 22042, -1000, 22042, -1000, 22042, -1000, 22042, -1000, 22042, -1000, + -1000, 22042, -1000, -1000, -1000, 22042, -1000, 22042, -1000, 22042, + -1000, -1000, -1000, 22042, 287, 930, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1499, 377, -1000, + -1000, -1000, -1000, 2534, -1000, 1499, 22042, 1294, -1000, 1294, + 1294, 1294, -1000, -1000, -1000, 22042, -1000, 22042, 22042, -1000, + 22042, -1000, 22042, -1000, -1000, -1000, -1000, 22042, 1967, 2208, + 38717, 1967, 38717, 1967, 32192, -1000, -1000, 2528, 2512, 2509, + 2243, 2256, 2256, 2273, -1000, 2507, 2494, -1000, 1500, 2489, + 1492, 1002, -1000, 54667, 22042, 250, -1000, 414, 53942, 250, + 53942, -1000, 2504, -1000, -1000, 22042, 1991, -1000, 22042, -1000, + -1000, -1000, -1000, 3215, 2551, 1851, -1000, -1000, 863, -1000, + 22042, -1000, 10388, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 1477, 1471, -1000, -1000, 1983, 22042, -1000, -1000, -1000, + 1753, 1740, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1981, -1000, -1000, -1000, -1000, 341, -516, 2125, 53942, 1147, + -1000, 1532, 1880, 373, 250, 1465, 909, 909, 909, 1125, + 1117, 37992, 1517, -1000, 53942, 418, -1000, 341, -1000, -222, + -224, 1701, -1000, -1000, 2432, -1000, -1000, 16230, -1000, -1000, + 1980, 2097, -1000, -1000, -1000, -1000, 2163, -169, -198, -1000, + -1000, 1701, 1701, 1701, 1255, 1499, -1000, 1701, 1701, 1735, + 1627, -1000, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, + 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, + 1701, 1701, 1391, 1895, -1000, 287, 1499, 2123, -1000, -1000, + 3215, -1000, -1000, 2504, 2483, 14, -1000, -1000, 259, 14, + 1631, 946, 1499, 1499, 946, 1823, 1701, 1788, 1761, 1701, + 1701, 32917, -1000, 2482, 2481, 1498, -1000, -1000, 38717, 1498, + 38717, 952, 2512, -286, 22042, 22042, 2238, 1173, -1000, -1000, + -1000, -1000, 1457, 1444, -1000, 1420, -1000, 2593, -1000, 1631, + -1000, 250, -1000, 504, 1867, -1000, 2477, 1631, 53942, 1631, + 100, 2504, -1000, 1701, -1000, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, -1000, -1000, 53942, 2118, -1000, -1000, + 2429, 1515, 164, -1000, 1505, 1880, -1000, -1000, 220, -1000, + 22042, -1000, 37992, 1418, 1408, -1000, -1000, -1000, -1000, -521, + -1000, -1000, -1000, -1000, -1000, -1000, 387, 1876, -1000, 908, + 53942, 55392, -1000, 2038, -1000, -1000, -1000, -1000, 22042, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 428, 945, -485, 285, 276, 945, 945, 945, -518, - -1000, -1000, 1603, 1588, -1000, -197, -1000, 21542, -1000, -1000, - -1000, -1000, -1000, 1309, 1309, 1525, 1517, 1489, -1000, 1992, - -1000, -1000, -1000, 1809, -1000, -1000, -174, 53442, 53442, 53442, - 53442, -1000, -1000, -1000, 1188, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 896, 1597, 380, - -181, 1597, -1000, -1000, 916, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 21542, -1000, 21542, -1000, 21542, - 1468, 21542, 2504, 1460, 21542, 21542, -1000, 1218, 1216, 1176, - -1000, -1000, -1000, 21542, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 21542, -1000, 21542, - -1000, 21542, -1000, 21542, -1000, 21542, -1000, 21542, -1000, 21542, - -1000, 21542, -1000, 21542, -1000, 21542, -1000, 21542, -1000, 21542, - -1000, 21542, -1000, 21542, -1000, 21542, -1000, 21542, -1000, -1000, - 21542, -1000, -1000, -1000, 21542, -1000, 21542, -1000, 21542, -1000, - -1000, -1000, 21542, 319, 932, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1597, 316, -1000, -1000, - -1000, -1000, 2565, -1000, 1597, 21542, 1207, -1000, 1207, 1207, - 1207, -1000, -1000, -1000, 21542, -1000, 21542, 21542, -1000, 21542, - -1000, 21542, -1000, -1000, -1000, -1000, 21542, 1974, 2311, 1974, - 1974, 31692, -1000, -1000, 2545, 2522, 2554, 2280, 2292, 2292, - 2279, -1000, 2553, 2534, -1000, 1455, 2532, 1453, 1023, -1000, - 54167, 21542, 208, -1000, 403, 53442, 208, 53442, -1000, 2501, - -1000, -1000, 21542, 1999, -1000, 21542, -1000, -1000, -1000, -1000, - 6794, 2552, 1885, -1000, -1000, 915, -1000, 21542, -1000, 9027, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1443, 1441, - -1000, -1000, 1993, 21542, -1000, -1000, -1000, 1710, 1706, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1992, -1000, -1000, - -1000, -1000, 307, -513, 2755, 53442, 1215, -1000, 1581, 1880, - 279, 208, 1438, 945, 945, 945, 1185, 1122, 37492, 1559, - -1000, 53442, 354, -1000, 307, -1000, -202, -205, 1176, -1000, - -1000, 2464, -1000, -1000, 15730, -1000, -1000, 1988, 2069, -1000, - -1000, -1000, -1000, 2238, -168, -187, -1000, -1000, 1176, 1176, - 1176, 2460, 1597, -1000, 1176, 1176, 1703, 1634, -1000, 1176, - 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, - 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1450, - 1786, -1000, 319, 1597, 2145, -1000, -1000, 6794, -1000, -1000, - 2501, 2526, 73, -1000, -1000, 221, 73, 1468, 1004, 1597, - 1597, 1004, 1772, 1176, 1699, 1695, 1176, 1176, 32417, -1000, - 2523, 2516, 38217, 38217, 958, 2522, -247, 21542, 21542, 2277, - 1199, -1000, -1000, -1000, -1000, 1432, 1420, -1000, 1415, -1000, - 2633, -1000, 1468, -1000, 208, -1000, 527, 1875, -1000, 2504, - 1468, 53442, 1468, 75, 2501, -1000, 1176, -1000, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, -1000, -1000, 53442, - 2500, -1000, -1000, 2451, 1556, 163, -1000, 1604, 1880, -1000, - -1000, 198, -1000, 21542, -1000, 37492, 1384, 1380, -1000, -1000, - -1000, -1000, -518, -1000, -1000, -1000, -1000, -1000, -1000, 384, - 1879, -1000, 940, 53442, 54892, -1000, 2234, -1000, -1000, -1000, - -1000, 21542, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 21542, - -1000, 1597, 2144, -1000, -361, -1000, -491, 21542, -239, -1000, - -1000, -239, -1000, -1000, -1000, -1000, -1000, 21542, -1000, -1000, - 21542, -1000, 21542, -1000, -1000, 1533, -1000, -1000, -1000, -1000, - -1000, 1533, 1533, -1000, -247, -1000, 1876, -1000, 53442, 1468, - 1872, -1000, 1147, -1000, -1000, -1000, -1000, -1000, 54167, 1875, - 53442, -1000, 1524, 1597, 1974, 2504, -1000, 1488, -1000, 384, - -1000, 1982, 1972, -1000, -1000, -1000, 19367, -1000, -1000, -1000, - -1000, -1000, 233, -173, 15730, 11344, 1452, -1000, -171, 1176, - 1450, -1000, -460, -1000, -1000, -1000, -1000, 274, -1000, -1000, - 1872, -1000, -1000, 1681, 1670, 1622, 36767, -1000, -1000, -1000, - -1000, -247, -1000, -1000, 2445, -1000, -1000, 1448, -1000, -1000, - 31692, 52717, -1000, -162, 350, -173, 21542, 1978, 1597, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -6, -1000, -1000, - 525, -1000, -1000, -1000, 2026, -185, -1000, -1000, -1000, 278, - -475, -280, -281, 23717, -1000, 21542, -1000, 21542, -1000, 21542, - -1000, -1000, -1000, 53442, 1974, -1000, 1414, -1000, 1826, -325, - 2141, -1000, -90, -1000, -1000, -1000, 1090, 1361, -1000, -1000, - -1000, -1000, -1000, -1000, 2476, 53442, -1000, 401, -1000, -1000, - 14999, -174, -195, 1008, -1000, -1000, -1000, -1000, -1000, 1207, - 1539, 1355, 1176, -1000, 53442, -1000, 52717, -303, 895, 6794, - -1000, 2140, 2121, 2585, -1000, -1000, -1000, -1000, -1000, -1000, - -524, 1412, 239, -1000, -1000, -1000, 278, -299, -1000, 21542, - -1000, 21542, -1000, 1597, -1000, -1000, 2432, 75, -1000, 2620, - -1000, 2627, 990, 990, -1000, 1119, -524, -1000, -1000, -1000, - -1000, 1176, 1176, -1000, -334, -1000, -1000, -1000, -1000, -1000, - 396, 1238, -1000, -1000, -1000, -1000, -1000, 6794, -1000, -1000, - -1000, 275, 275, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 22042, -1000, 1499, 2116, + -1000, -362, -1000, -494, 22042, -277, -1000, -1000, -277, -1000, + -1000, -1000, -1000, -1000, 22042, -1000, -1000, 22042, -1000, 22042, + -1000, -1000, 1498, -1000, -1000, -1000, 37267, -1000, 1498, -1000, + 1498, -1000, -286, -1000, 1868, -1000, 53942, 1631, 1866, -1000, + 1145, -1000, -1000, -1000, -1000, -1000, 54667, 1867, 53942, -1000, + 1475, 1499, 1967, 2477, -1000, 1416, -1000, 387, -1000, 1978, + 1992, -1000, -1000, -1000, 19867, -1000, -1000, -1000, -1000, -1000, + 234, -175, 16230, 11844, 1396, -1000, -173, 1701, 1391, -1000, + -462, -1000, -1000, -1000, -1000, 292, -1000, -1000, 1866, -1000, + -1000, 1695, 1646, 1626, -1000, -1000, -1000, -1000, -1000, -1000, + -286, -1000, -1000, 2424, -1000, -1000, 1555, -1000, -1000, 32192, + 53217, -1000, -164, 327, -175, 22042, 1977, 1499, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -41, -1000, -1000, 503, + -1000, -1000, -1000, 2096, -196, -1000, -1000, -1000, 295, -477, + -281, -283, 24217, -1000, 22042, -1000, 22042, -1000, 22042, -1000, + 53942, 1967, -1000, 1389, -1000, 4148, -384, 2104, -1000, -134, + -1000, -1000, -1000, 1047, 1380, -1000, -1000, -1000, -1000, -1000, + -1000, 1899, 53942, -1000, 433, -1000, -1000, 15499, -181, -213, + 974, -1000, -1000, -1000, -1000, -1000, 1294, 1504, 1414, 1701, + -1000, 53942, -1000, 53217, -379, 851, 3215, -1000, 2034, 1982, + 2580, -1000, -1000, -1000, -1000, -1000, -1000, -527, 1384, 279, + -1000, -1000, -1000, 295, -288, -1000, 22042, -1000, 22042, -1000, + 1499, -1000, -1000, 2404, 100, -1000, 2587, -1000, 2588, 1003, + 1003, -1000, 1112, -527, -1000, -1000, -1000, -1000, 1701, 1701, + -1000, -385, -1000, -1000, -1000, -1000, -1000, 432, 1194, -1000, + -1000, -1000, -1000, -1000, 3215, -1000, -1000, -1000, 289, 289, + -1000, -1000, } var yyPgo = [...]int{ - 0, 3355, 3354, 27, 5, 38, 37, 3353, 3351, 3350, - 177, 3346, 3345, 3344, 3341, 3340, 3337, 2672, 2671, 2653, - 3334, 3333, 3331, 3327, 3326, 3324, 3321, 3320, 3318, 36, - 93, 62, 97, 195, 200, 3317, 183, 165, 201, 3310, - 3308, 3282, 110, 199, 84, 81, 193, 3280, 3278, 67, - 3276, 3226, 3203, 191, 187, 184, 1082, 3202, 188, 115, - 48, 3198, 3196, 3190, 3184, 3183, 3179, 3176, 3156, 3154, - 3153, 3152, 3151, 3150, 3146, 3145, 3143, 3137, 3135, 276, - 3133, 3127, 13, 3123, 73, 3122, 3119, 3112, 3110, 3108, - 10, 3106, 3105, 25, 42, 3104, 3101, 47, 3098, 3095, - 3093, 3090, 3088, 69, 3086, 21, 3082, 41, 3080, 3078, - 121, 3072, 3071, 3069, 44, 3067, 3065, 3064, 29, 164, - 3063, 3061, 131, 3060, 3059, 3058, 175, 197, 3056, 2242, - 176, 100, 109, 3055, 3054, 103, 194, 3053, 116, 3051, - 3046, 3045, 145, 3043, 3185, 3036, 3035, 60, 75, 155, - 3032, 3029, 205, 70, 54, 3024, 16, 18, 3023, 3020, - 61, 64, 3018, 104, 3012, 3010, 98, 66, 3005, 99, - 94, 3000, 2995, 20, 6, 2990, 1, 4, 7, 83, - 2988, 2982, 106, 2972, 2971, 2969, 90, 2965, 2964, 4940, - 2956, 85, 126, 101, 174, 2953, 172, 147, 2941, 2937, - 2929, 2928, 2924, 49, 2923, 2919, 2917, 130, 244, 167, - 2910, 146, 336, 51, 144, 2909, 196, 76, 202, 170, - 2907, 2906, 128, 129, 2905, 2904, 57, 166, 189, 2900, - 92, 125, 114, 168, 91, 137, 2897, 2895, 55, 71, - 2891, 2886, 2885, 2881, 173, 2870, 2868, 59, 2867, 53, - 2866, 182, 2865, 136, 68, 2863, 171, 160, 2862, 151, - 2860, 2848, 82, 95, 111, 28, 2843, 159, 163, 124, - 158, 2837, 2831, 52, 2830, 2828, 2824, 198, 305, 2823, - 2820, 310, 178, 133, 143, 89, 2819, 303, 2818, 2817, - 15, 4310, 6851, 2816, 22, 161, 2814, 2813, 7340, 19, - 43, 17, 2812, 206, 2811, 2806, 2803, 2801, 207, 203, - 105, 162, 56, 2800, 2799, 2797, 34, 2795, 2794, 2792, - 2791, 2790, 2789, 72, 35, 33, 32, 217, 58, 2, - 96, 157, 149, 63, 2786, 2783, 2779, 119, 78, 2778, - 153, 152, 120, 156, 2777, 179, 138, 118, 2774, 80, - 31, 2772, 2766, 2765, 2761, 87, 2758, 2752, 2746, 2744, - 154, 139, 117, 77, 2743, 79, 113, 142, 140, 50, - 2733, 45, 2732, 2718, 30, 192, 26, 2717, 40, 102, - 108, 2714, 6179, 190, 2712, 8, 317, 141, 2711, 2707, - 9, 12, 11, 2706, 2698, 2697, 2696, 127, 2690, 2684, - 2682, 2678, 24, 46, 23, 14, 112, 74, 2673, 2667, - 132, 2662, 2658, 2652, 0, 1007, 123, 2646, 204, + 0, 3336, 3335, 26, 12, 36, 35, 3334, 3333, 3332, + 176, 3331, 3323, 3322, 3319, 3316, 3297, 2690, 2686, 2681, + 3294, 3292, 3285, 3284, 3283, 3227, 3224, 3222, 3218, 45, + 97, 37, 110, 220, 214, 3217, 181, 159, 201, 3215, + 3211, 3198, 114, 189, 78, 82, 193, 3196, 3195, 66, + 3192, 3190, 3189, 188, 180, 179, 1020, 3187, 186, 113, + 55, 3186, 3184, 3182, 3171, 3170, 3167, 3165, 3162, 3161, + 3160, 3157, 3155, 3154, 3152, 3144, 3143, 3142, 3141, 301, + 3139, 3136, 14, 3132, 73, 3130, 3126, 3123, 3122, 3121, + 9, 3120, 3117, 32, 42, 3115, 3109, 44, 3108, 3106, + 3103, 3101, 3098, 79, 3096, 23, 3095, 38, 3093, 3091, + 121, 3088, 3086, 3085, 39, 3084, 3081, 3077, 11, 169, + 3071, 3068, 138, 3063, 3062, 3061, 168, 222, 3054, 2240, + 160, 100, 105, 3049, 3048, 3042, 163, 196, 3037, 117, + 3036, 3032, 3025, 145, 3022, 3825, 3012, 3004, 67, 65, + 203, 3003, 3000, 164, 74, 5, 2999, 20, 8, 2997, + 2996, 70, 64, 2995, 103, 2993, 2992, 98, 89, 2990, + 99, 94, 2988, 2985, 28, 2, 2982, 1, 6, 4, + 102, 2980, 2974, 109, 2963, 2962, 2959, 92, 2955, 2949, + 1068, 2941, 84, 128, 101, 63, 2938, 170, 171, 2935, + 2934, 2933, 2928, 2925, 50, 2922, 2919, 2915, 136, 252, + 166, 2914, 146, 341, 51, 147, 2910, 191, 77, 199, + 192, 2908, 2907, 130, 135, 2905, 2902, 54, 167, 195, + 2898, 91, 129, 116, 177, 90, 132, 2896, 2881, 56, + 61, 2879, 2874, 2870, 2868, 172, 2865, 2858, 68, 2857, + 53, 2854, 173, 2848, 137, 80, 2847, 182, 162, 2843, + 62, 2842, 2839, 93, 95, 60, 27, 2834, 155, 158, + 126, 183, 2833, 2831, 52, 2826, 2824, 2821, 194, 315, + 2820, 2819, 373, 174, 141, 149, 83, 2817, 334, 2814, + 2812, 19, 4982, 7758, 2804, 41, 157, 2803, 2802, 7552, + 22, 43, 15, 2801, 205, 2799, 2797, 2791, 2788, 197, + 204, 108, 156, 58, 2786, 2783, 2780, 72, 2777, 2773, + 2766, 2764, 2763, 2754, 71, 34, 33, 31, 215, 59, + 25, 96, 152, 151, 69, 2753, 2752, 2751, 120, 87, + 2750, 154, 153, 124, 165, 2748, 178, 140, 118, 2747, + 106, 30, 2744, 2740, 2739, 2738, 85, 2737, 2734, 2733, + 2732, 150, 142, 119, 81, 2727, 76, 115, 148, 143, + 57, 2723, 46, 2722, 2719, 29, 190, 24, 2718, 47, + 104, 112, 2717, 6263, 187, 2712, 13, 337, 161, 2711, + 2705, 10, 18, 21, 2704, 2701, 2699, 2698, 131, 2677, + 2667, 2661, 2659, 17, 49, 16, 7, 111, 75, 2652, + 2637, 139, 2636, 2627, 2617, 0, 1021, 127, 2616, 200, } -//line sql.y:8629 +//line sql.y:8635 type yySymType struct { union any empty struct{} @@ -8377,59 +8428,59 @@ func (st *yySymType) withUnion() *With { } var yyR1 = [...]int{ - 0, 412, 413, 413, 7, 7, 7, 7, 7, 7, + 0, 413, 414, 414, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 259, 382, 383, 383, 257, 257, 28, 74, 36, + 7, 260, 383, 384, 384, 258, 258, 28, 74, 36, 36, 35, 35, 38, 38, 37, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 29, 29, 29, 29, 30, 30, 30, 30, 30, 15, 16, 34, 34, 17, 17, 108, 108, 18, - 19, 19, 19, 19, 416, 416, 184, 184, 182, 182, - 183, 183, 262, 262, 20, 266, 266, 268, 268, 268, - 268, 258, 258, 258, 21, 21, 267, 267, 269, 269, - 269, 272, 272, 272, 272, 311, 311, 311, 22, 22, - 22, 22, 22, 128, 128, 385, 385, 384, 378, 378, - 377, 377, 376, 381, 381, 380, 380, 379, 40, 41, - 50, 50, 50, 50, 51, 52, 386, 386, 351, 57, + 19, 19, 19, 19, 417, 417, 185, 185, 183, 183, + 184, 184, 263, 263, 20, 267, 267, 269, 269, 269, + 269, 259, 259, 259, 21, 21, 268, 268, 270, 270, + 270, 273, 273, 273, 273, 312, 312, 312, 22, 22, + 22, 22, 22, 128, 128, 386, 386, 385, 379, 379, + 378, 378, 377, 382, 382, 381, 381, 380, 40, 41, + 50, 50, 50, 50, 51, 52, 387, 387, 352, 57, 57, 56, 56, 56, 56, 56, 56, 58, 58, 54, - 54, 53, 53, 55, 55, 353, 353, 339, 339, 352, - 352, 352, 352, 352, 352, 352, 338, 338, 139, 139, - 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - 236, 236, 236, 236, 236, 236, 236, 401, 401, 401, - 400, 400, 237, 237, 237, 237, 237, 237, 237, 237, - 148, 148, 160, 160, 160, 160, 160, 160, 146, 146, - 147, 145, 145, 145, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 405, 405, 405, 405, 405, 405, 405, 405, 405, - 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, - 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, - 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, - 405, 405, 405, 159, 159, 154, 154, 154, 156, 156, - 155, 155, 155, 157, 157, 402, 402, 402, 402, 316, - 316, 316, 316, 319, 319, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 318, 318, 318, 318, 318, 318, - 318, 320, 320, 320, 320, 320, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 322, 322, 322, 322, 322, 322, 322, 322, - 337, 337, 323, 323, 331, 331, 332, 332, 333, 333, - 333, 334, 334, 334, 335, 335, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 330, 330, 329, 329, 329, - 340, 365, 365, 364, 364, 362, 362, 362, 362, 362, - 362, 362, 362, 349, 349, 359, 359, 359, 359, 359, - 348, 348, 344, 344, 344, 345, 345, 346, 346, 343, - 343, 347, 347, 361, 361, 360, 360, 341, 341, 342, - 342, 367, 403, 403, 403, 403, 403, 404, 404, 368, - 393, 395, 395, 395, 394, 394, 391, 392, 390, 390, - 390, 390, 390, 84, 84, 84, 285, 285, 286, 286, - 357, 357, 356, 356, 356, 358, 358, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 280, 280, - 280, 389, 389, 389, 389, 389, 389, 388, 388, 388, - 354, 354, 354, 354, 387, 387, 59, 59, 217, 217, - 406, 406, 407, 407, 407, 47, 47, 47, 47, 47, + 54, 53, 53, 55, 55, 354, 354, 340, 340, 353, + 353, 353, 353, 353, 353, 353, 339, 339, 140, 140, + 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 237, 237, 237, 237, 402, 402, 402, + 401, 401, 238, 238, 238, 238, 238, 238, 238, 238, + 149, 149, 161, 161, 161, 161, 161, 161, 147, 147, + 148, 146, 146, 146, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 406, 406, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 160, 160, 155, 155, 155, 157, 157, + 156, 156, 156, 158, 158, 403, 403, 403, 403, 317, + 317, 317, 317, 320, 320, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 319, 319, 319, 319, 319, 319, + 319, 321, 321, 321, 321, 321, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 323, 323, 323, 323, 323, 323, 323, 323, + 338, 338, 324, 324, 332, 332, 333, 333, 334, 334, + 334, 335, 335, 335, 336, 336, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 331, 331, 330, 330, 330, + 341, 366, 366, 365, 365, 363, 363, 363, 363, 363, + 363, 363, 363, 350, 350, 360, 360, 360, 360, 360, + 349, 349, 345, 345, 345, 346, 346, 347, 347, 344, + 344, 348, 348, 362, 362, 361, 361, 342, 342, 343, + 343, 368, 404, 404, 404, 404, 404, 405, 405, 369, + 394, 396, 396, 396, 395, 395, 392, 393, 391, 391, + 391, 391, 391, 84, 84, 84, 286, 286, 287, 287, + 358, 358, 357, 357, 357, 359, 359, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 281, 281, + 281, 390, 390, 390, 390, 390, 390, 389, 389, 389, + 355, 355, 355, 355, 388, 388, 59, 59, 218, 218, + 407, 407, 408, 408, 408, 47, 47, 47, 47, 47, 47, 46, 46, 46, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, @@ -8438,129 +8489,108 @@ var yyR1 = [...]int{ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 110, - 110, 111, 111, 111, 111, 113, 113, 113, 370, 370, - 60, 60, 3, 3, 172, 174, 175, 175, 173, 173, - 173, 173, 173, 173, 62, 62, 61, 61, 177, 176, - 178, 178, 178, 1, 1, 2, 2, 4, 4, 375, - 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, - 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, - 375, 336, 336, 336, 369, 369, 371, 112, 112, 112, + 110, 111, 111, 111, 111, 113, 113, 113, 371, 371, + 60, 60, 3, 3, 173, 175, 176, 176, 174, 174, + 174, 174, 174, 174, 62, 62, 61, 61, 178, 177, + 179, 179, 179, 1, 1, 2, 2, 4, 4, 376, + 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, + 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, + 376, 337, 337, 337, 370, 370, 372, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 116, 115, 115, - 114, 117, 117, 117, 117, 117, 117, 117, 117, 373, - 373, 373, 63, 63, 374, 324, 325, 326, 5, 6, - 350, 372, 124, 124, 24, 39, 39, 25, 25, 25, + 114, 117, 117, 117, 117, 117, 117, 117, 117, 374, + 374, 374, 63, 63, 375, 325, 326, 327, 5, 6, + 351, 373, 124, 124, 24, 39, 39, 25, 25, 25, 25, 26, 26, 64, 67, 67, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 279, - 279, 288, 288, 278, 278, 303, 303, 303, 281, 281, - 281, 282, 282, 399, 399, 399, 275, 275, 66, 66, - 66, 304, 304, 304, 304, 69, 69, 408, 408, 409, - 409, 410, 410, 410, 70, 71, 71, 306, 306, 307, - 307, 72, 73, 85, 85, 85, 85, 85, 86, 86, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 280, + 280, 289, 289, 279, 279, 304, 304, 304, 282, 282, + 282, 283, 283, 400, 400, 400, 276, 276, 66, 66, + 66, 305, 305, 305, 305, 69, 69, 409, 409, 410, + 410, 411, 411, 411, 70, 71, 71, 307, 307, 308, + 308, 72, 73, 85, 85, 85, 85, 85, 86, 86, 86, 86, 109, 109, 109, 10, 10, 10, 10, 81, - 81, 81, 9, 9, 11, 68, 68, 75, 396, 396, - 397, 398, 398, 398, 398, 76, 78, 27, 27, 27, - 27, 27, 27, 134, 134, 122, 122, 122, 122, 122, + 81, 81, 9, 9, 11, 68, 68, 75, 397, 397, + 398, 399, 399, 399, 399, 76, 78, 27, 27, 27, + 27, 27, 27, 135, 135, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 129, 129, 129, - 123, 123, 417, 79, 80, 80, 127, 127, 127, 120, - 120, 120, 126, 126, 126, 12, 12, 13, 261, 261, - 14, 14, 131, 131, 133, 133, 133, 133, 133, 135, - 135, 135, 135, 135, 135, 135, 130, 130, 132, 132, - 132, 132, 296, 296, 296, 295, 295, 166, 166, 168, - 167, 167, 169, 169, 170, 170, 170, 170, 215, 215, - 192, 192, 254, 254, 255, 255, 253, 253, 260, 260, - 256, 256, 256, 256, 263, 263, 171, 171, 171, 171, - 179, 179, 180, 180, 181, 181, 305, 305, 301, 301, - 301, 300, 300, 185, 185, 185, 187, 186, 186, 186, - 186, 188, 188, 190, 190, 189, 189, 191, 196, 196, - 195, 195, 193, 193, 193, 193, 194, 194, 194, 194, - 197, 197, 144, 144, 144, 144, 144, 144, 144, 144, - 158, 158, 158, 158, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 244, 244, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 220, 220, 219, - 219, 87, 87, 87, 88, 88, 89, 89, 89, 89, - 89, 90, 90, 90, 90, 90, 90, 90, 92, 92, - 91, 91, 210, 210, 293, 293, 93, 94, 94, 97, - 97, 96, 95, 95, 101, 101, 98, 98, 100, 100, - 99, 102, 102, 103, 104, 104, 276, 276, 198, 198, - 206, 206, 206, 206, 199, 199, 199, 199, 199, 199, - 199, 207, 207, 207, 214, 208, 208, 204, 204, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 163, 163, 163, 163, 225, 225, 150, 150, 150, + 123, 123, 418, 79, 80, 80, 127, 127, 127, 120, + 120, 120, 126, 126, 126, 12, 12, 13, 262, 262, + 14, 14, 131, 131, 134, 134, 133, 133, 136, 136, + 136, 136, 136, 136, 136, 130, 130, 132, 132, 132, + 132, 297, 297, 297, 296, 296, 167, 167, 169, 168, + 168, 170, 170, 171, 171, 171, 171, 216, 216, 193, + 193, 255, 255, 256, 256, 254, 254, 261, 261, 257, + 257, 257, 257, 264, 264, 172, 172, 172, 172, 180, + 180, 181, 181, 182, 182, 306, 306, 302, 302, 302, + 301, 301, 186, 186, 186, 188, 187, 187, 187, 187, + 189, 189, 191, 191, 190, 190, 192, 197, 197, 196, + 196, 194, 194, 194, 194, 194, 194, 195, 195, 195, + 195, 198, 198, 145, 145, 145, 145, 145, 145, 145, + 145, 159, 159, 159, 159, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 245, 245, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 151, 151, 164, 164, 164, 164, 165, 165, - 165, 165, 165, 165, 165, 313, 313, 118, 118, 118, + 150, 150, 150, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 221, 221, + 220, 220, 87, 87, 87, 88, 88, 89, 89, 89, + 89, 89, 90, 90, 90, 90, 90, 90, 90, 92, + 92, 91, 91, 211, 211, 294, 294, 93, 94, 94, + 97, 97, 96, 95, 95, 101, 101, 98, 98, 100, + 100, 99, 102, 102, 103, 104, 104, 277, 277, 199, + 199, 207, 207, 207, 207, 200, 200, 200, 200, 200, + 200, 200, 208, 208, 208, 215, 209, 209, 205, 205, + 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, + 203, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 164, 164, 164, 164, 226, 226, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 152, 152, 165, 165, 165, 165, 166, + 166, 166, 166, 166, 166, 166, 314, 314, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 119, 119, 119, + 118, 118, 118, 118, 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 418, 418, 327, 327, 327, - 205, 205, 205, 205, 205, 125, 125, 125, 125, 125, - 310, 310, 310, 314, 314, 314, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 315, 315, 223, 223, 121, 121, 221, 221, 222, - 224, 224, 216, 216, 216, 216, 218, 218, 201, 201, - 201, 226, 226, 227, 227, 105, 106, 106, 107, 107, - 228, 228, 230, 229, 229, 231, 232, 232, 232, 233, - 233, 234, 234, 234, 49, 49, 49, 49, 49, 44, - 44, 44, 44, 45, 45, 45, 45, 136, 136, 136, - 136, 138, 138, 137, 137, 82, 82, 83, 83, 83, - 142, 142, 143, 143, 143, 140, 140, 141, 141, 251, - 251, 251, 251, 251, 251, 251, 235, 235, 235, 242, - 242, 242, 238, 238, 240, 240, 240, 241, 241, 241, - 239, 248, 248, 250, 250, 249, 249, 245, 245, 246, - 246, 247, 247, 247, 243, 243, 200, 200, 200, 200, - 200, 252, 252, 252, 252, 264, 264, 211, 211, 213, - 213, 212, 212, 162, 265, 265, 273, 270, 270, 271, - 271, 297, 297, 297, 274, 274, 287, 287, 283, 283, - 284, 284, 277, 277, 289, 289, 289, 77, 209, 209, - 366, 366, 363, 292, 292, 294, 294, 298, 298, 302, - 302, 299, 299, 8, 411, 411, 411, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 119, 119, 119, 119, 119, 119, 419, 419, 328, 328, + 328, 206, 206, 206, 206, 206, 125, 125, 125, 125, + 125, 311, 311, 311, 315, 315, 315, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 316, 316, 224, 224, 121, 121, 222, 222, + 223, 225, 225, 217, 217, 217, 217, 219, 219, 202, + 202, 202, 227, 227, 228, 228, 105, 106, 106, 107, + 107, 229, 229, 231, 230, 230, 232, 233, 233, 233, + 234, 234, 235, 235, 235, 49, 49, 49, 49, 49, + 44, 44, 44, 44, 45, 45, 45, 45, 137, 137, + 137, 137, 139, 139, 138, 138, 82, 82, 83, 83, + 83, 143, 143, 144, 144, 144, 141, 141, 142, 142, + 252, 252, 252, 252, 252, 252, 252, 236, 236, 236, + 243, 243, 243, 239, 239, 241, 241, 241, 242, 242, + 242, 240, 249, 249, 251, 251, 250, 250, 246, 246, + 247, 247, 248, 248, 248, 244, 244, 201, 201, 201, + 201, 201, 253, 253, 253, 253, 265, 265, 212, 212, + 214, 214, 213, 213, 163, 266, 266, 274, 271, 271, + 272, 272, 298, 298, 298, 275, 275, 288, 288, 284, + 284, 285, 285, 278, 278, 290, 290, 290, 77, 210, + 210, 367, 367, 364, 293, 293, 295, 295, 299, 299, + 303, 303, 300, 300, 8, 412, 412, 412, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, @@ -8575,33 +8605,54 @@ var yyR1 = [...]int{ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 414, 415, 308, 309, 309, 309, + 291, 291, 291, 291, 291, 291, 291, 291, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 415, 416, 309, 310, 310, 310, } var yyR2 = [...]int{ @@ -8695,79 +8746,79 @@ var yyR2 = [...]int{ 1, 1, 3, 2, 1, 1, 1, 0, 1, 1, 0, 3, 0, 2, 0, 2, 1, 2, 2, 0, 1, 1, 0, 1, 1, 5, 5, 4, 0, 2, - 4, 4, 0, 1, 0, 1, 2, 3, 4, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, - 3, 5, 0, 1, 2, 1, 1, 0, 1, 2, - 1, 3, 1, 1, 1, 4, 3, 1, 1, 2, - 3, 7, 0, 3, 0, 1, 1, 3, 1, 3, - 1, 1, 3, 3, 1, 3, 4, 4, 4, 3, - 2, 4, 0, 1, 0, 2, 0, 1, 0, 1, - 2, 1, 1, 1, 2, 2, 1, 2, 3, 2, - 3, 2, 2, 2, 1, 1, 3, 3, 0, 1, - 1, 2, 6, 5, 6, 6, 0, 2, 3, 3, - 0, 2, 3, 3, 3, 2, 3, 1, 3, 6, - 3, 4, 3, 1, 3, 4, 5, 6, 3, 4, - 5, 6, 3, 4, 1, 1, 1, 3, 3, 3, - 3, 3, 3, 5, 5, 3, 3, 3, 3, 3, - 3, 1, 1, 1, 1, 1, 3, 1, 1, 1, - 2, 2, 2, 2, 1, 1, 2, 7, 7, 6, - 6, 2, 2, 5, 6, 3, 3, 1, 3, 1, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 4, 2, 4, 0, 1, - 2, 5, 0, 3, 0, 1, 4, 4, 2, 0, - 1, 1, 2, 2, 1, 1, 2, 2, 0, 1, - 1, 1, 1, 5, 1, 3, 0, 3, 1, 1, - 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 4, 6, 4, - 4, 8, 8, 6, 8, 6, 5, 4, 10, 2, - 2, 1, 2, 2, 2, 2, 2, 4, 5, 5, - 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 8, 4, 8, 8, 6, 5, 4, - 4, 4, 4, 4, 7, 4, 4, 6, 6, 6, - 8, 6, 6, 4, 4, 3, 4, 6, 6, 4, - 4, 6, 4, 6, 4, 4, 4, 4, 4, 4, - 6, 4, 6, 4, 4, 4, 6, 4, 6, 4, - 4, 6, 4, 6, 4, 6, 8, 4, 6, 8, + 4, 4, 0, 1, 0, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 1, 2, 3, + 5, 0, 1, 2, 1, 1, 0, 1, 2, 1, + 3, 1, 1, 1, 4, 3, 1, 1, 2, 3, + 7, 0, 3, 0, 1, 1, 3, 1, 3, 1, + 1, 3, 3, 1, 3, 4, 4, 4, 3, 2, + 4, 0, 1, 0, 2, 0, 1, 0, 1, 2, + 1, 1, 1, 2, 2, 1, 2, 3, 2, 3, + 2, 2, 2, 1, 1, 3, 3, 0, 1, 1, + 2, 6, 5, 6, 6, 5, 5, 0, 2, 3, + 3, 0, 2, 3, 3, 3, 2, 3, 1, 3, + 6, 3, 4, 3, 1, 3, 4, 5, 6, 3, + 4, 5, 6, 3, 4, 1, 1, 1, 3, 3, + 3, 3, 3, 3, 5, 5, 3, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 3, 1, 1, + 1, 2, 2, 2, 2, 1, 1, 2, 7, 7, + 6, 6, 2, 2, 5, 6, 3, 3, 1, 3, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 4, 2, 4, 0, + 1, 2, 5, 0, 3, 0, 1, 4, 4, 2, + 0, 1, 1, 2, 2, 1, 1, 2, 2, 0, + 1, 1, 1, 1, 5, 1, 3, 0, 3, 1, + 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 3, 4, 6, + 4, 4, 8, 8, 6, 8, 6, 5, 4, 10, + 2, 2, 1, 2, 2, 2, 2, 2, 4, 5, + 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 8, 4, 8, 8, 6, 5, + 4, 4, 4, 4, 4, 7, 4, 4, 6, 6, + 6, 8, 6, 6, 4, 4, 3, 4, 6, 6, + 4, 4, 6, 4, 6, 4, 4, 4, 4, 4, + 4, 6, 4, 6, 4, 4, 4, 6, 4, 6, + 4, 4, 6, 4, 6, 4, 6, 8, 4, 6, + 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, - 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, - 6, 8, 4, 4, 4, 6, 4, 6, 4, 8, - 6, 4, 4, 6, 4, 6, 8, 4, 6, 8, - 4, 4, 6, 8, 6, 4, 6, 6, 8, 10, - 7, 8, 8, 9, 4, 4, 4, 4, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, - 4, 4, 4, 4, 6, 4, 6, 5, 9, 6, - 9, 8, 6, 8, 8, 8, 6, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 2, 6, 8, 10, - 12, 14, 6, 8, 8, 10, 12, 14, 6, 8, - 10, 12, 6, 8, 4, 4, 3, 4, 6, 6, - 4, 6, 4, 6, 8, 0, 2, 1, 1, 1, + 4, 6, 8, 4, 4, 4, 6, 4, 6, 4, + 8, 6, 4, 4, 6, 4, 6, 8, 4, 6, + 8, 4, 4, 6, 8, 6, 4, 6, 6, 8, + 10, 7, 8, 8, 9, 4, 4, 4, 4, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, + 4, 4, 4, 4, 4, 6, 4, 6, 5, 9, + 6, 9, 8, 6, 8, 8, 8, 6, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 2, 6, 8, + 10, 12, 14, 6, 8, 8, 10, 12, 14, 6, + 8, 10, 12, 6, 8, 4, 4, 3, 4, 6, + 6, 4, 6, 4, 6, 8, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 2, 0, 2, 3, - 4, 4, 4, 4, 4, 0, 3, 4, 7, 3, - 1, 1, 1, 0, 5, 5, 2, 3, 1, 2, - 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, - 1, 0, 1, 0, 1, 0, 2, 1, 2, 4, - 0, 2, 1, 1, 3, 5, 1, 1, 1, 2, - 2, 0, 3, 0, 2, 2, 1, 3, 0, 1, - 0, 1, 3, 1, 3, 2, 0, 1, 1, 0, - 1, 2, 4, 4, 0, 2, 2, 1, 1, 3, - 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, - 3, 0, 3, 1, 1, 0, 4, 0, 1, 1, - 0, 3, 1, 3, 2, 1, 1, 0, 1, 2, - 3, 4, 2, 3, 4, 4, 9, 3, 5, 0, - 3, 3, 0, 1, 0, 2, 2, 0, 2, 2, - 2, 0, 2, 1, 2, 3, 3, 0, 2, 1, - 2, 3, 4, 3, 0, 1, 2, 1, 5, 4, - 4, 1, 3, 3, 5, 0, 5, 1, 3, 1, - 2, 3, 4, 1, 1, 3, 3, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 0, 1, 0, 2, - 0, 3, 0, 1, 0, 1, 1, 5, 0, 1, - 0, 1, 2, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 1, 3, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 2, 0, 2, + 3, 4, 4, 4, 4, 4, 0, 3, 4, 7, + 3, 1, 1, 1, 0, 5, 5, 2, 3, 1, + 2, 2, 1, 2, 1, 2, 2, 1, 2, 2, + 1, 1, 0, 1, 0, 1, 0, 2, 1, 2, + 4, 0, 2, 1, 1, 3, 5, 1, 1, 1, + 2, 2, 0, 3, 0, 2, 2, 1, 3, 0, + 1, 0, 1, 3, 1, 3, 2, 0, 1, 1, + 0, 1, 2, 4, 4, 0, 2, 2, 1, 1, + 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, + 3, 3, 0, 3, 1, 1, 0, 4, 0, 1, + 1, 0, 3, 1, 3, 2, 1, 1, 0, 1, + 2, 3, 4, 2, 3, 4, 4, 9, 3, 5, + 0, 3, 3, 0, 1, 0, 2, 2, 0, 2, + 2, 2, 0, 2, 1, 2, 3, 3, 0, 2, + 1, 2, 3, 4, 3, 0, 1, 2, 1, 5, + 4, 4, 1, 3, 3, 5, 0, 5, 1, 3, + 1, 2, 3, 4, 1, 1, 3, 3, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, + 2, 0, 3, 0, 1, 0, 1, 1, 5, 0, + 1, 0, 1, 2, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -8829,11 +8880,11 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, } var yyChk = [...]int{ - -1000, -412, -79, -417, -7, -29, -15, -16, -17, -18, + -1000, -413, -79, -418, -7, -29, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -64, -67, -65, -66, -69, -70, -71, -72, -73, -9, -11, -68, -27, -28, -74, -75, -76, -77, -78, -12, -13, -14, @@ -8841,18 +8892,18 @@ var yyChk = [...]int{ -50, 228, -51, -41, 229, -52, 231, 230, 268, 232, 381, 261, 76, 317, 318, 320, 321, 322, 323, -109, 687, 266, 267, 234, 38, 47, 35, 36, 39, 238, - 274, 275, 237, 134, -33, -36, 10, -414, 13, 471, - 263, 262, 30, -34, 581, 88, -80, -413, 735, -251, - -235, 24, 35, 31, -234, -230, -127, -235, 22, 20, - 9, -79, -79, -79, 14, 15, -79, -351, -353, 88, + 274, 275, 237, 134, -33, -36, 10, -415, 13, 471, + 263, 262, 30, -34, 581, 88, -80, -414, 735, -252, + -236, 24, 35, 31, -235, -231, -127, -236, 22, 20, + 9, -79, -79, -79, 14, 15, -79, -352, -354, 88, 161, 88, -79, -57, -56, -54, -53, -55, -58, 33, - -47, -48, -375, -46, -43, 233, 230, 278, 124, 125, + -47, -48, -376, -46, -43, 233, 230, 278, 124, 125, 268, 269, 270, 232, 252, 267, 271, 266, 287, -42, - 83, 35, 581, 584, -358, 229, 235, 236, 231, 472, - 127, 126, 77, -355, 376, 614, 705, -58, 707, 102, + 83, 35, 581, 584, -359, 229, 235, 236, 231, 472, + 127, 126, 77, -356, 376, 614, 705, -58, 707, 102, 105, 706, 46, 242, 708, 709, 710, 621, 711, 251, 712, 713, 714, 715, 721, 662, 722, 723, 724, 128, - 9, -79, -302, -298, 92, -291, 578, 254, 612, 425, + 9, -79, -303, -299, 92, -292, 578, 254, 612, 425, 613, 303, 83, 43, 517, 587, 373, 376, 614, 502, 705, 382, 317, 333, 327, 507, 508, 509, 356, 348, 579, 615, 588, 306, 255, 291, 699, 346, 137, 707, @@ -8899,17 +8950,17 @@ var yyChk = [...]int{ 410, 412, 316, 411, 686, 680, 681, 290, 461, 584, 324, 345, 380, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 480, 241, -79, 241, -189, -298, -129, 689, 691, - 180, -270, 384, -288, 386, 399, 394, 404, 392, -279, - 395, 397, 281, -399, 414, 241, 401, 228, 387, 396, + 460, 480, 241, -79, 241, -190, -299, -129, 689, 691, + 180, -271, 384, -289, 386, 399, 394, 404, 392, -280, + 395, 397, 281, -400, 414, 241, 401, 228, 387, 396, 405, 406, 305, 412, 407, 316, 411, 290, 408, 409, - 410, -382, 180, 710, 725, 137, 349, 391, 389, 415, - 689, 92, -304, 92, 93, 94, -291, 319, -306, 324, - -292, -382, -291, 322, -79, -79, -308, -308, -129, -208, - -144, 145, -158, -259, -161, 93, -149, -152, -202, -203, - -204, -205, -159, -218, -257, 169, 170, 177, 146, -214, - -162, 28, 577, 473, 472, 180, 33, 223, 70, 71, - 475, 476, 148, 59, 13, 438, 439, -160, 428, 429, + 410, -383, 180, 710, 725, 137, 349, 391, 389, 415, + 689, 92, -305, 92, 93, 94, -292, 319, -307, 324, + -293, -383, -292, 322, -79, -79, -309, -309, -129, -209, + -145, 145, -159, -260, -162, 93, -150, -153, -203, -204, + -205, -206, -160, -219, -258, 169, 170, 177, 146, -215, + -163, 28, 577, 473, 472, 180, 33, 223, 70, 71, + 475, 476, 148, 59, 13, 438, 439, -161, 428, 429, 440, 434, 435, 501, 503, 504, 505, 502, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 506, 517, 478, 479, 119, 480, 109, 111, 110, 481, 482, 483, @@ -8922,44 +8973,44 @@ var yyChk = [...]int{ 113, 114, 115, 116, 117, 118, 487, 490, 488, 489, 491, 492, 493, 498, 499, 494, 495, 496, 497, 500, 372, 370, 371, 367, 366, 365, -89, -101, 603, 602, - -102, 425, 430, 431, 433, -150, -151, -164, -165, -292, - -298, 246, 427, 240, 175, 471, -153, -147, -216, 108, - 94, -31, -212, 426, 436, 437, 441, 432, 442, 589, + -102, 425, 430, 431, 433, -151, -152, -165, -166, -293, + -299, 246, 427, 240, 175, 471, -154, -148, -217, 108, + 94, -31, -213, 426, 436, 437, 441, 432, 442, 589, 591, 606, 607, 609, 594, 599, 598, 601, 518, 519, 520, 521, 522, 523, 674, 675, 676, 677, 678, 679, - 680, 681, -382, -291, 92, -156, -154, -198, 95, 100, - 103, 104, 106, -405, 264, 342, 343, 120, -414, 703, - -155, 97, 98, 99, 121, 122, 181, 182, 183, 184, + 680, 681, -383, -292, 92, -157, -155, -199, 95, 100, + 103, 104, 106, -406, 264, 342, 343, 120, -415, 703, + -156, 97, 98, 99, 121, 122, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 91, 96, - 46, 400, 400, -189, -79, -79, -79, -79, -411, 706, - 582, -228, -127, -230, -33, -31, -414, 10, -79, -31, - -32, -30, -36, -38, 608, -37, -298, 101, -235, -251, - 14, 63, 164, 44, 52, -233, -234, -34, -31, -144, - 21, 25, 26, -132, 171, -144, -298, -132, -277, 245, - -79, -79, -266, -311, 319, -268, 415, 689, 414, -258, - -271, 92, -257, -270, 413, 93, -352, 161, -338, -342, - -292, 256, -368, 252, -189, -361, -360, -292, -414, -128, - -287, 242, 250, 249, 138, -386, 141, 298, 427, 240, - -53, -54, -55, -270, 179, 709, -110, 273, 277, 89, - 89, -342, -341, -340, -387, 277, 256, -367, -359, 248, - 257, -348, 249, 250, -343, 242, 139, -387, -343, 247, + 46, 400, 400, -190, -79, -79, -79, -79, -412, 706, + 582, -229, -127, -231, -33, -31, -415, 10, -79, -31, + -32, -30, -36, -38, 608, -37, -299, 101, -236, -252, + 14, 63, 164, 44, 52, -234, -235, -34, -31, -145, + 21, 25, 26, -132, 171, -145, -299, -132, -278, 245, + -79, -79, -267, -312, 319, -269, 415, 689, 414, -259, + -272, 92, -258, -271, 413, 93, -353, 161, -339, -343, + -293, 256, -369, 252, -190, -362, -361, -293, -415, -128, + -288, 242, 250, 249, 138, -387, 141, 298, 427, 240, + -53, -54, -55, -271, 179, 709, -110, 273, 277, 89, + 89, -343, -342, -341, -388, 277, 256, -368, -360, 248, + 257, -349, 249, 250, -344, 242, 139, -388, -344, 247, 257, 252, 256, 277, 277, 128, 277, 128, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 272, -349, 153, - -349, 585, 585, -355, -387, 252, 242, -387, -387, 248, - -289, -343, 244, 27, 244, 37, 37, -349, -349, -349, - -270, 179, -349, -349, -349, -349, 285, 285, -349, -349, - -349, -349, -349, -349, -349, -349, -349, -349, -349, -349, - -349, -349, -349, -349, -349, 241, -386, -136, 411, 305, - 83, -56, 287, -39, -189, -287, 242, 243, -386, 274, - -189, 224, 241, 692, -281, 161, 17, -281, -278, 400, - 398, 385, 390, -281, -281, -281, -281, 288, 383, -344, + 277, 277, 277, 277, 277, 277, 277, 272, -350, 153, + -350, 585, 585, -356, -388, 252, 242, -388, -388, 248, + -290, -344, 244, 27, 244, 37, 37, -350, -350, -350, + -271, 179, -350, -350, -350, -350, 285, 285, -350, -350, + -350, -350, -350, -350, -350, -350, -350, -350, -350, -350, + -350, -350, -350, -350, -350, 241, -387, -137, 411, 305, + 83, -56, 287, -39, -190, -288, 242, 243, -387, 274, + -190, 224, 241, 692, -282, 161, 17, -282, -279, 400, + 398, 385, 390, -282, -282, -282, -282, 288, 383, -345, 242, 37, 253, 400, 288, 383, 288, 289, 288, 289, - 393, 403, 288, -303, 16, 164, 427, 388, 392, 281, - 241, 282, 243, 402, 289, -303, 91, -282, 161, 288, - 400, 394, 284, -281, -281, -309, -414, -294, -292, -290, + 393, 403, 288, -304, 16, 164, 427, 388, 392, 281, + 241, 282, 243, 402, 289, -304, 91, -283, 161, 288, + 400, 394, 284, -282, -282, -310, -415, -295, -293, -291, 233, 25, 144, 27, 29, 147, 180, 131, 21, 148, 39, 235, 349, 252, 179, 248, 472, 228, 74, 589, 428, 435, 426, 434, 438, 474, 475, 427, 386, 33, @@ -8975,280 +9026,281 @@ var yyChk = [...]int{ 477, 34, 261, 249, 130, 69, 442, 610, 241, 150, 244, 133, 121, 9, 138, 36, 14, 76, 79, 439, 440, 441, 59, 129, 581, 149, 17, 611, 419, 143, - -382, 692, -309, -309, 34, 93, -408, -409, -410, 581, - 418, 244, -292, -189, -85, 682, 232, -86, 688, 25, - 239, -134, 400, -122, 180, 710, 693, 694, 695, 692, + -383, 692, -310, -310, 34, 93, -409, -410, -411, 581, + 418, 244, -293, -190, -85, 682, 232, -86, 688, 25, + 239, -135, 400, -122, 180, 710, 693, 694, 695, 692, 397, 700, 698, 696, 288, 697, 89, 141, 143, 144, - 4, -144, 160, -199, 153, 154, 155, 156, 157, 158, - 159, 165, 164, 145, 147, 161, -244, 142, 166, 167, + 4, -145, 160, -200, 153, 154, 155, 156, 157, 158, + 159, 165, 164, 145, 147, 161, -245, 142, 166, 167, 168, 169, 170, 171, 172, 174, 173, 175, 176, 162, - 163, 179, 226, 227, -152, -152, -152, -152, -214, -220, - -219, -414, -216, -382, -291, -298, -414, -414, -152, -276, - -414, -149, -414, -414, -414, -414, -414, -223, -144, -414, - -414, -418, -414, -418, -418, -418, -327, -414, -327, -327, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, 224, -414, -414, -414, -414, -414, -327, - -327, -327, -327, -327, -327, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, 91, - 104, 100, 103, 95, -218, 106, 91, 91, 91, 91, - -31, -32, -208, -414, -308, -396, -397, -192, -189, -414, - 305, -292, -292, 274, 97, -233, -34, -31, -228, -234, - -230, -31, -79, -120, -133, 65, 66, -135, 26, 40, - 69, 67, 25, -415, 90, -415, -251, -415, 89, -38, - -254, 88, 636, 666, 636, 666, 63, 45, 91, 91, - 89, 23, -229, -231, -144, 16, -296, 4, -295, 27, - -292, 91, 224, 16, -190, 31, -189, -277, -277, 89, - 92, 319, -267, -269, 416, 418, 153, -297, -292, 91, - 33, 90, 89, -189, -316, -319, -321, -320, -322, -317, - -318, 346, 347, 180, 350, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 363, 34, 264, 342, 343, 344, - 345, 364, 365, 366, 367, 369, 370, 371, 372, 327, - 348, 579, 328, 329, 330, 331, 332, 333, 335, 336, - 339, 337, 338, 340, 341, -383, -382, 88, 90, 89, - -323, 88, -144, -136, 241, -382, 242, 242, 242, -79, - 471, -349, -349, -349, 272, 21, -46, -43, -375, 20, - -42, -43, 233, 124, 125, 230, 88, -338, 88, -347, - -383, -382, 88, 139, 247, 138, -346, -343, -346, -347, - -382, -216, -382, 139, 139, -382, -382, -263, -292, -263, - -263, 25, -263, 25, -263, 25, 97, -292, -263, 25, - -263, 25, -263, 25, -263, 25, -263, 25, 33, 80, - 81, 82, 33, 84, 85, 86, -216, -382, -382, -216, - -338, -216, -189, -382, -270, 97, 97, 97, -349, -349, - 97, 91, 91, 91, -349, -349, 97, 91, -300, -298, - 91, 91, -388, 258, 302, 304, 97, 97, 97, 97, - 33, 91, -389, 33, 717, 716, 718, 719, 720, 91, - 97, 33, 97, 33, 97, -292, 88, -189, -142, 292, - 228, 230, 233, 78, 91, 308, 309, 306, 311, 312, - 313, 153, 46, 89, 244, 241, -382, -283, 246, -283, - -292, -299, -298, -290, -189, 244, 382, 91, -144, -345, - 16, 164, -303, -303, -281, -189, -345, -303, -281, -189, - -281, -281, -281, -281, -303, -303, -303, -281, -298, -298, - -189, -189, -189, -189, -189, -189, -189, -309, -282, -281, - 692, 91, -275, 16, 78, -309, -309, 89, 325, 419, - 420, -307, 322, -81, -292, 91, -10, -29, -18, -17, - -19, 153, -10, 89, 581, -182, -189, 692, 692, 692, - 692, 692, 692, -144, -144, -144, -144, 604, -206, 120, - 145, 121, 122, -161, -144, -207, -212, -214, 107, 164, - 147, 161, -244, -149, -152, -149, -149, -149, -149, -149, - -149, 223, -149, 223, -149, -149, -149, -149, -149, -149, - -310, -292, 91, 180, -157, -156, 106, -405, -157, 578, - 89, -219, 224, -144, -144, -382, -118, 444, 445, 446, - 447, 449, 450, 451, 454, 455, 459, 460, 443, 461, - 448, 453, 456, 457, 458, 452, 345, -144, -130, -132, - -130, -144, -144, -221, -222, 149, -216, -144, -415, -415, - 97, 171, -126, 26, 40, -126, -126, -126, -126, -144, - -144, -144, -144, -144, -144, -144, -144, -144, -144, -126, - -144, -119, 443, 461, 448, 453, 456, 457, 458, 452, - 345, 462, 463, 464, 465, 466, 467, 468, 469, 470, - -119, -118, -144, -144, -144, -144, -144, -144, -87, -144, - 131, 132, 133, -208, -144, -149, -144, -144, -144, -415, - -144, -144, -144, -209, -208, -144, -144, -144, -144, -144, - -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -381, -380, -379, -144, -144, -144, -144, -144, -144, - -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -144, -144, -144, -144, -144, -144, -208, -208, -208, - -208, -208, -144, -415, -144, -163, -147, 97, -259, 106, - 93, -144, -144, -144, -144, -144, -144, -131, -130, -294, - -299, -290, -291, -130, -131, -131, -130, -130, -144, -144, - -144, -144, -144, -144, -144, -144, -415, -144, -144, -144, - -144, -144, -251, -415, -208, 89, -398, 418, 419, 690, - -301, 277, -300, 27, -209, 91, 16, -261, 79, -292, - -233, -233, 65, 66, 61, -130, -135, -415, -37, 27, - -253, -292, 629, 629, 64, 91, -328, -270, 373, 374, - 180, -144, -144, 89, -232, 29, 30, -189, -295, 171, - -299, -189, -262, 277, -189, -167, -169, -170, -171, -192, - -215, -414, -172, -31, 600, 597, 16, -182, -183, -191, - -298, -268, -311, -267, 89, 417, 419, 420, 78, 123, - -144, -329, 179, -357, -356, -355, -338, -340, -341, -342, - 90, -329, -334, 379, 378, -323, -323, -323, -323, -323, - -328, -328, -328, -328, 88, 88, -323, -323, -323, -323, - -331, 88, -331, -331, -332, -331, 88, -332, -333, 88, - -333, -368, -144, -365, -364, -362, -363, 251, 102, 672, - 628, 581, 621, 662, 79, -360, -232, 97, -415, -142, - -284, 246, -366, -363, -382, -382, -382, -284, 92, 91, - 92, 91, 92, 91, -111, -60, -1, 729, 730, 731, - 89, 21, -339, -338, -59, 302, -371, -372, 277, -367, - -361, -347, 139, -346, -347, -347, -382, 89, 31, 128, - 128, 128, 128, 581, 230, 34, -285, 620, 145, 672, - 628, -338, -59, 244, 244, -310, -310, -310, 91, 91, - -280, 725, -182, -138, 294, 153, 283, 283, 241, 296, - 241, 296, -189, 307, 310, 308, 309, 306, 311, 312, - 313, 25, 25, 25, 25, 25, 25, 295, 297, 299, - 285, -189, -189, -283, 78, -184, -189, 28, -298, 91, - 91, -189, -281, -281, -189, -281, -281, -189, -410, 326, - -292, 360, 683, 685, -122, 418, 89, 581, 24, -123, - 24, -414, 120, 121, 122, -207, -149, -152, -149, 144, - 265, -149, -149, -414, -216, -415, -294, 27, 89, 79, - -415, 169, 89, 89, -415, -415, 89, 16, 89, -224, - -222, 151, -144, -415, 89, -415, -415, -208, -144, -144, - -144, -144, -415, -415, -415, -415, -415, -415, -415, -415, - -415, -415, -208, -415, 89, 89, 16, -314, 27, -415, - -415, -415, -415, -415, -223, -415, 16, -415, 79, 89, - 164, 89, -415, -415, -415, 89, 89, -415, -415, 89, - -415, 89, -415, -415, -415, -415, -415, -415, 89, -415, - 89, -415, -415, -415, 89, -415, 89, -415, -415, 89, - -415, 89, -415, 89, -415, 89, -415, 89, -415, 89, - -415, 89, -415, 89, -415, 89, -415, 89, -415, 89, - -415, 89, -415, 89, -415, 89, -415, 89, -415, 89, - -415, 89, -415, 89, -415, -415, -415, 89, -415, 89, - -415, 89, -415, -415, 89, -415, 89, -415, 89, -415, - 89, 89, -415, 89, 89, 89, -415, 89, 89, 89, - 89, -415, -415, -415, -415, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, -415, -415, -415, -415, -415, - -415, 89, -94, 605, -415, -415, 89, -415, 89, 89, - 89, 89, 89, -415, -414, 224, -415, -415, -415, -415, - -415, 89, 89, 89, 89, 89, 89, -415, -415, -415, - 89, 89, -415, 89, -415, 89, -415, -397, 689, 419, - -196, -195, -193, 76, 245, 77, -414, -300, -415, -157, - -259, -260, -259, -201, -292, 97, 106, -235, -166, -168, - 16, -135, -214, 90, 89, -328, -239, -245, -278, -292, - 91, 180, -330, 180, -330, 373, 374, -231, 224, -197, - 17, -200, 34, 59, -29, -414, -414, 34, 89, -185, - -187, -186, -188, 68, 72, 74, 69, 70, 71, 75, - -305, 27, -31, -167, -31, -414, -189, -182, -416, 16, - 79, -416, 89, 224, -269, -272, 421, 418, 424, -382, - 91, -110, 89, -355, -342, -236, -139, 42, -335, 380, - -328, 588, -328, -337, 91, -337, 97, 97, 97, 90, - -49, -44, -45, 35, 83, -362, -349, 91, 41, -349, - -349, -292, 90, -232, -138, -189, 145, 78, -366, -366, - -366, -298, -2, 728, 734, 139, 88, 385, 20, -253, - 89, 90, -217, 303, 90, -112, -292, 90, 88, -347, - -347, -292, -414, 241, 33, 33, 672, 628, 620, -59, - -217, -216, -382, -329, 727, 726, 90, 243, 301, -143, - 438, -140, 91, 92, -189, -189, -189, -189, -189, -189, - 233, 230, 408, -406, 314, -406, 286, 244, -182, -189, - 89, -84, 260, 255, -303, -303, 35, -189, 418, 701, - 699, -144, 144, 265, -161, -152, -118, -118, -149, -312, - 180, 346, 264, 344, 340, 360, 351, 378, 342, 379, - 337, 336, 335, -312, -310, -149, -208, -132, -144, -144, - -144, 152, -144, 150, -144, -415, -415, -415, -415, -415, - -228, -144, -144, -144, -415, 180, 346, 16, -144, -310, - -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -144, -144, -144, -144, -379, -144, -208, -144, -208, - -144, -144, -144, -144, -144, -380, -380, -380, -380, -380, - -208, -208, -208, -208, -144, -414, -292, -97, -96, -95, - 655, 245, -94, -163, -97, -163, 223, -144, 223, 223, - 223, -144, -131, -294, -144, -144, -144, -144, -144, -144, - -144, -144, -144, -144, -193, -343, -343, -343, -263, 89, - -274, 24, 16, 59, 59, -166, -197, -167, -135, -292, - -242, 682, -248, 48, -246, -247, 49, -243, 50, 58, - -330, -330, 171, -233, -144, -264, 78, -265, -273, -216, - -211, -213, -212, -414, -252, -415, -292, -263, -265, -169, - -170, -170, -169, -170, 68, 68, 68, 73, 68, 73, - 68, -186, -298, -415, -144, -301, 79, -167, -167, -191, - -298, 171, 418, 422, 423, -355, -404, 120, 145, 33, - 78, 376, 102, -402, 179, 617, 667, 672, 628, 621, - 662, -403, 247, 138, 139, 259, 27, 43, 90, 89, - 90, 89, 90, 90, 89, -286, -285, -45, -44, -349, - -349, 97, -382, 91, 91, 243, 28, -189, 78, 78, - 78, -113, 732, 97, 88, -3, 83, -144, 88, 21, - -338, -216, -373, -324, -374, -325, -326, -5, -6, -350, - -116, 59, 102, -63, 46, 242, 712, 713, 128, -414, - 725, -365, -253, -369, -371, -189, -148, -414, -160, -146, - -145, -147, -153, 169, 170, 264, 342, 343, -217, -189, - -137, 292, 300, 88, -141, 93, -385, 79, 283, 376, - 283, 376, 91, -407, 315, 91, -407, -189, -84, -49, - -189, -281, -281, 35, -382, -415, -161, -152, -125, 164, - 581, -315, 587, -323, -323, -323, -333, -323, 332, -323, - 332, -323, -415, -415, -415, 89, -415, 24, -415, 89, - -144, 89, -121, 477, 89, 89, -415, 88, 88, -144, - -415, -415, -415, 89, -415, -415, -415, -415, -415, -415, - -415, -415, -415, -415, -415, -415, -415, 89, -415, 89, - -415, 89, -415, 89, -415, 89, -415, 89, -415, 89, - -415, 89, -415, 89, -415, 89, -415, 89, -415, 89, - -415, 89, -415, 89, -415, 89, -415, 89, -415, -415, - 89, -415, -415, -415, 89, -415, 89, -415, 89, -415, - -415, -415, 89, -313, 673, -415, -415, -415, -415, -415, - -415, -415, -415, -415, -415, -415, -93, -293, -292, -94, - 637, 637, -415, -94, -225, 89, -149, -415, -149, -149, - -149, -415, -415, -415, 89, -415, 89, 89, -415, 89, - -415, 89, -415, -415, -415, -415, 89, -194, 24, -194, - -194, -415, -259, -189, -197, -226, 18, -239, 53, 352, - -250, -249, 57, 49, -247, 21, 51, 21, 32, -264, - 89, 153, 89, -415, -415, 89, 59, 224, -415, -197, - -180, -179, 78, 79, -181, 78, -179, 68, 68, -254, - 89, -262, -167, -197, -197, 224, 120, -414, -148, 14, - 91, 91, -382, -401, 716, 717, 33, 97, -349, -349, - 139, 139, -189, 88, -328, 91, -328, 97, 97, 33, - 84, 85, 86, 33, 80, 81, 82, -189, -189, -189, - -189, -370, 88, 21, -144, 88, 153, 90, -253, -253, - 279, 164, -349, 710, 285, 285, -349, -349, -349, -115, - -114, 732, 90, -415, 89, -336, 581, 584, -144, -154, - -154, -254, 90, -378, 581, -384, -292, -292, -292, -292, - 97, 99, -415, 579, 75, 582, -415, -328, -144, -144, - -144, -144, -233, 91, -144, -144, 97, 97, -415, -144, - -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -144, -144, -144, -144, -144, -144, -144, -144, -208, - -144, -415, -177, -176, -178, 693, 120, 33, -312, -415, - -210, 277, -100, -99, -98, 16, -415, -144, -118, -118, - -118, -118, -144, -144, -144, -144, -144, -144, -414, 68, - 20, 18, -414, -414, -301, -226, -227, 19, 21, -240, - 55, -238, 54, -238, -249, 21, 21, 91, 21, 91, - 139, -273, -144, -213, 59, -29, -292, -211, -292, -228, - -144, 88, -144, -157, -197, -197, -144, -203, 501, 503, - 504, 505, 502, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 506, 517, 478, 479, 480, 109, 111, - 110, 481, 482, 483, 346, 529, 530, 524, 527, 528, - 526, 525, 361, 362, 484, 547, 548, 552, 551, 549, - 550, 553, 556, 557, 558, 559, 560, 561, 563, 562, - 554, 555, 532, 531, 533, 534, 535, 536, 537, 538, - 540, 539, 541, 542, 543, 544, 545, 546, 564, 565, - 566, 567, 568, 570, 569, 574, 573, 571, 572, 576, - 575, 485, 486, 112, 113, 114, 115, 116, 117, 118, - 487, 490, 488, 491, 492, 493, 498, 499, 494, 495, - 496, 497, 500, 372, 370, 371, 367, 366, 365, 425, - 430, 431, 433, 518, 519, 520, 521, 522, 523, 674, - 675, 676, 677, 678, 679, 680, 681, 91, 91, 88, - -144, 90, 90, -254, -369, -60, 90, -255, -253, 97, - 90, 280, -212, -414, 91, -349, -349, -349, 97, 97, - -300, -415, 89, -292, -403, -371, 585, 585, -415, 27, - -377, -376, -294, 88, 79, 64, 580, 583, -415, -415, - -415, 89, -415, -415, -415, 90, 90, -415, -415, -415, + 163, 179, 226, 227, -153, -153, -153, -153, -215, -221, + -220, -415, -217, -383, -292, -299, -415, -415, -153, -277, + -415, -150, -415, -415, -415, -415, -415, -224, -145, -415, + -415, -419, -415, -419, -419, -419, -328, -415, -328, -328, + -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, + -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, + -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, - -415, -415, -415, -415, -415, -415, -415, -415, -415, 89, - -415, -176, -178, -415, 78, -157, -228, 21, -97, 302, - 304, -97, -415, -415, -415, -415, -415, 89, -415, -415, - 89, -415, 89, -415, -415, -256, -415, -292, 247, 21, - 21, -256, -256, -196, -227, -107, -106, -105, 611, -144, - -208, -241, 56, 78, 123, 91, 91, 91, 14, -211, - 224, -233, -253, -174, 385, -228, -415, -253, 90, 27, - 90, 734, 139, 90, -212, -124, -414, 276, -300, 91, - 91, -114, -117, -29, 89, 153, -253, -189, 64, -144, - -208, -415, 78, 592, 693, -92, -91, -88, 704, 730, - -208, -94, -94, -144, -144, -144, 89, -415, -415, -415, - -107, 89, -104, -103, -292, 78, 123, -265, -292, 90, - -415, -414, -233, 90, -237, -29, 88, -3, 276, -324, - -374, -325, -326, -5, -6, -350, -82, 581, -376, -354, - -298, -294, 91, 97, 90, 581, -415, -415, -90, 147, - 702, 670, -154, 223, -415, 89, -415, 89, -415, 89, - -292, 247, -105, 89, 27, -301, -175, -173, -292, 634, - -394, -393, 577, -404, -400, 120, 145, 102, -402, 672, - 628, 129, 130, -82, -144, 88, -415, -83, 291, 689, - 224, -385, 582, -90, 703, 648, 623, 648, 623, -149, - -144, -144, -144, -103, -414, -415, 89, 24, -316, -62, - 645, -391, -392, 78, -395, 391, 644, 665, 120, 91, - 90, -253, 252, -299, -378, 583, 144, -118, -415, 89, - -415, 89, -415, -93, -173, 641, -329, -157, -392, 78, - -391, 78, 15, 14, -4, 733, 90, 293, -90, 648, - 623, -144, -144, -415, -61, 28, -174, -390, 260, 255, - 258, 34, -390, 97, -4, -415, -415, 645, 254, 33, - 120, -157, -177, -176, -176, + -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, + -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, + -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, + -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, + -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, + -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, + -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, + -415, -415, -415, -415, -415, -415, -415, -415, -415, -415, + -415, -415, -415, 224, -415, -415, -415, -415, -415, -328, + -328, -328, -328, -328, -328, -415, -415, -415, -415, -415, + -415, -415, -415, -415, -415, -415, -415, -415, -415, 91, + 104, 100, 103, 95, -219, 106, 91, 91, 91, 91, + -31, -32, -209, -415, -309, -397, -398, -193, -190, -415, + 305, -293, -293, 274, 97, -234, -34, -31, -229, -235, + -231, -31, -79, -120, -134, 65, 66, -133, -136, 26, + 40, 69, 67, 25, -416, 90, -416, -252, -416, 89, + -38, -255, 88, 636, 666, 636, 666, 63, 45, 91, + 91, 89, 23, -230, -232, -145, 16, -297, 4, -296, + 27, -293, 91, 224, 16, -191, 31, -190, -278, -278, + 89, 92, 319, -268, -270, 416, 418, 153, -298, -293, + 91, 33, 90, 89, -190, -317, -320, -322, -321, -323, + -318, -319, 346, 347, 180, 350, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 363, 34, 264, 342, 343, + 344, 345, 364, 365, 366, 367, 369, 370, 371, 372, + 327, 348, 579, 328, 329, 330, 331, 332, 333, 335, + 336, 339, 337, 338, 340, 341, -384, -383, 88, 90, + 89, -324, 88, -145, -137, 241, -383, 242, 242, 242, + -79, 471, -350, -350, -350, 272, 21, -46, -43, -376, + 20, -42, -43, 233, 124, 125, 230, 88, -339, 88, + -348, -384, -383, 88, 139, 247, 138, -347, -344, -347, + -348, -383, -217, -383, 139, 139, -383, -383, -264, -293, + -264, -264, 25, -264, 25, -264, 25, 97, -293, -264, + 25, -264, 25, -264, 25, -264, 25, -264, 25, 33, + 80, 81, 82, 33, 84, 85, 86, -217, -383, -383, + -217, -339, -217, -190, -383, -271, 97, 97, 97, -350, + -350, 97, 91, 91, 91, -350, -350, 97, 91, -301, + -299, 91, 91, -389, 258, 302, 304, 97, 97, 97, + 97, 33, 91, -390, 33, 717, 716, 718, 719, 720, + 91, 97, 33, 97, 33, 97, -293, 88, -190, -143, + 292, 228, 230, 233, 78, 91, 308, 309, 306, 311, + 312, 313, 153, 46, 89, 244, 241, -383, -284, 246, + -284, -293, -300, -299, -291, -190, 244, 382, 91, -145, + -346, 16, 164, -304, -304, -282, -190, -346, -304, -282, + -190, -282, -282, -282, -282, -304, -304, -304, -282, -299, + -299, -190, -190, -190, -190, -190, -190, -190, -310, -283, + -282, 692, 91, -276, 16, 78, -310, -310, 89, 325, + 419, 420, -308, 322, -81, -293, 91, -10, -29, -18, + -17, -19, 153, -10, 89, 581, -183, -190, 692, 692, + 692, 692, 692, 692, -145, -145, -145, -145, 604, -207, + 120, 145, 121, 122, -162, -145, -208, -213, -215, 107, + 164, 147, 161, -245, -150, -153, -150, -150, -150, -150, + -150, -150, 223, -150, 223, -150, -150, -150, -150, -150, + -150, -311, -293, 91, 180, -158, -157, 106, -406, -158, + 578, 89, -220, 224, -145, -145, -383, -118, 444, 445, + 446, 447, 449, 450, 451, 454, 455, 459, 460, 443, + 461, 448, 453, 456, 457, 458, 452, 345, -145, -130, + -132, -130, -145, -145, -222, -223, 149, -217, -145, -416, + -416, 97, 171, -126, 26, 40, -126, -126, -126, -126, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -126, -145, -119, 443, 461, 448, 453, 456, 457, 458, + 452, 345, 462, 463, 464, 465, 466, 467, 468, 469, + 470, -119, -118, -145, -145, -145, -145, -145, -145, -87, + -145, 131, 132, 133, -209, -145, -150, -145, -145, -145, + -416, -145, -145, -145, -210, -209, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -382, -381, -380, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -209, -209, + -209, -209, -209, -145, -416, -145, -164, -148, 97, -260, + 106, 93, -145, -145, -145, -145, -145, -145, -131, -130, + -295, -300, -291, -292, -130, -131, -131, -130, -130, -145, + -145, -145, -145, -145, -145, -145, -145, -416, -145, -145, + -145, -145, -145, -252, -416, -209, 89, -399, 418, 419, + 690, -302, 277, -301, 27, -210, 91, 16, -262, 79, + -293, -234, -234, 65, 66, 61, -130, -136, -416, -37, + 27, -254, -293, 629, 629, 64, 91, -329, -271, 373, + 374, 180, -145, -145, 89, -233, 29, 30, -190, -296, + 171, -300, -190, -263, 277, -190, -168, -170, -171, -172, + -193, -216, -415, -173, -31, 600, 597, 16, -183, -184, + -192, -299, -269, -312, -268, 89, 417, 419, 420, 78, + 123, -145, -330, 179, -358, -357, -356, -339, -341, -342, + -343, 90, -330, -335, 379, 378, -324, -324, -324, -324, + -324, -329, -329, -329, -329, 88, 88, -324, -324, -324, + -324, -332, 88, -332, -332, -333, -332, 88, -333, -334, + 88, -334, -369, -145, -366, -365, -363, -364, 251, 102, + 672, 628, 581, 621, 662, 79, -361, -233, 97, -416, + -143, -285, 246, -367, -364, -383, -383, -383, -285, 92, + 91, 92, 91, 92, 91, -111, -60, -1, 729, 730, + 731, 89, 21, -340, -339, -59, 302, -372, -373, 277, + -368, -362, -348, 139, -347, -348, -348, -383, 89, 31, + 128, 128, 128, 128, 581, 230, 34, -286, 620, 145, + 672, 628, -339, -59, 244, 244, -311, -311, -311, 91, + 91, -281, 725, -183, -139, 294, 153, 283, 283, 241, + 296, 241, 296, -190, 307, 310, 308, 309, 306, 311, + 312, 313, 25, 25, 25, 25, 25, 25, 295, 297, + 299, 285, -190, -190, -284, 78, -185, -190, 28, -299, + 91, 91, -190, -282, -282, -190, -282, -282, -190, -411, + 326, -293, 360, 683, 685, -122, 418, 89, 581, 24, + -123, 24, -415, 120, 121, 122, -208, -150, -153, -150, + 144, 265, -150, -150, -415, -217, -416, -295, 27, 89, + 79, -416, 169, 89, 89, -416, -416, 89, 16, 89, + -225, -223, 151, -145, -416, 89, -416, -416, -209, -145, + -145, -145, -145, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -209, -416, 89, 89, 16, -315, 27, + -416, -416, -416, -416, -416, -224, -416, 16, -416, 79, + 89, 164, 89, -416, -416, -416, 89, 89, -416, -416, + 89, -416, 89, -416, -416, -416, -416, -416, -416, 89, + -416, 89, -416, -416, -416, 89, -416, 89, -416, -416, + 89, -416, 89, -416, 89, -416, 89, -416, 89, -416, + 89, -416, 89, -416, 89, -416, 89, -416, 89, -416, + 89, -416, 89, -416, 89, -416, 89, -416, 89, -416, + 89, -416, 89, -416, 89, -416, -416, -416, 89, -416, + 89, -416, 89, -416, -416, 89, -416, 89, -416, 89, + -416, 89, 89, -416, 89, 89, 89, -416, 89, 89, + 89, 89, -416, -416, -416, -416, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, -416, -416, -416, -416, + -416, -416, 89, -94, 605, -416, -416, 89, -416, 89, + 89, 89, 89, 89, -416, -415, 224, -416, -416, -416, + -416, -416, 89, 89, 89, 89, 89, 89, -416, -416, + -416, 89, 89, -416, 89, -416, 89, -416, -398, 689, + 419, -197, -196, -194, 76, 245, 77, -415, -301, -416, + -158, -260, -261, -260, -202, -293, 97, 106, -236, -167, + -169, 16, -215, 90, 89, -329, -240, -246, -279, -293, + 91, 180, -331, 180, -331, 373, 374, -232, 224, -198, + 17, -201, 34, 59, -29, -415, -415, 34, 89, -186, + -188, -187, -189, 68, 72, 74, 69, 70, 71, 75, + -306, 27, -31, -168, -31, -415, -190, -183, -417, 16, + 79, -417, 89, 224, -270, -273, 421, 418, 424, -383, + 91, -110, 89, -356, -343, -237, -140, 42, -336, 380, + -329, 588, -329, -338, 91, -338, 97, 97, 97, 90, + -49, -44, -45, 35, 83, -363, -350, 91, 41, -350, + -350, -293, 90, -233, -139, -190, 145, 78, -367, -367, + -367, -299, -2, 728, 734, 139, 88, 385, 20, -254, + 89, 90, -218, 303, 90, -112, -293, 90, 88, -348, + -348, -293, -415, 241, 33, 33, 672, 628, 620, -59, + -218, -217, -383, -330, 727, 726, 90, 243, 301, -144, + 438, -141, 91, 92, -190, -190, -190, -190, -190, -190, + 233, 230, 408, -407, 314, -407, 286, 244, -183, -190, + 89, -84, 260, 255, -304, -304, 35, -190, 418, 701, + 699, -145, 144, 265, -162, -153, -118, -118, -150, -313, + 180, 346, 264, 344, 340, 360, 351, 378, 342, 379, + 337, 336, 335, -313, -311, -150, -209, -132, -145, -145, + -145, 152, -145, 150, -145, -416, -416, -416, -416, -416, + -229, -145, -145, -145, -416, 180, 346, 16, -145, -311, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -380, -145, -209, -145, -209, + -145, -145, -145, -145, -145, -381, -381, -381, -381, -381, + -209, -209, -209, -209, -145, -415, -293, -97, -96, -95, + 655, 245, -94, -164, -97, -164, 223, -145, 223, 223, + 223, -145, -131, -295, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -194, -344, 283, -344, 283, -344, + -264, 89, -275, 24, 16, 59, 59, -167, -198, -168, + -293, -243, 682, -249, 48, -247, -248, 49, -244, 50, + 58, -331, -331, 171, -234, -145, -265, 78, -266, -274, + -217, -212, -214, -213, -415, -253, -416, -293, -264, -266, + -170, -171, -171, -170, -171, 68, 68, 68, 73, 68, + 73, 68, -187, -299, -416, -145, -302, 79, -168, -168, + -192, -299, 171, 418, 422, 423, -356, -405, 120, 145, + 33, 78, 376, 102, -403, 179, 617, 667, 672, 628, + 621, 662, -404, 247, 138, 139, 259, 27, 43, 90, + 89, 90, 89, 90, 90, 89, -287, -286, -45, -44, + -350, -350, 97, -383, 91, 91, 243, 28, -190, 78, + 78, 78, -113, 732, 97, 88, -3, 83, -145, 88, + 21, -339, -217, -374, -325, -375, -326, -327, -5, -6, + -351, -116, 59, 102, -63, 46, 242, 712, 713, 128, + -415, 725, -366, -254, -370, -372, -190, -149, -415, -161, + -147, -146, -148, -154, 169, 170, 264, 342, 343, -218, + -190, -138, 292, 300, 88, -142, 93, -386, 79, 283, + 376, 283, 376, 91, -408, 315, 91, -408, -190, -84, + -49, -190, -282, -282, 35, -383, -416, -162, -153, -125, + 164, 581, -316, 587, -324, -324, -324, -334, -324, 332, + -324, 332, -324, -416, -416, -416, 89, -416, 24, -416, + 89, -145, 89, -121, 477, 89, 89, -416, 88, 88, + -145, -416, -416, -416, 89, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416, 89, -416, + 89, -416, 89, -416, 89, -416, 89, -416, 89, -416, + 89, -416, 89, -416, 89, -416, 89, -416, 89, -416, + 89, -416, 89, -416, 89, -416, 89, -416, 89, -416, + -416, 89, -416, -416, -416, 89, -416, 89, -416, 89, + -416, -416, -416, 89, -314, 673, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -93, -294, -293, + -94, 637, 637, -416, -94, -226, 89, -150, -416, -150, + -150, -150, -416, -416, -416, 89, -416, 89, 89, -416, + 89, -416, 89, -416, -416, -416, -416, 89, -195, 24, + -415, -195, -415, -195, -416, -260, -190, -198, -227, 18, + -240, 53, 352, -251, -250, 57, 49, -248, 21, 51, + 21, 32, -265, 89, 153, 89, -416, -416, 89, 59, + 224, -416, -198, -181, -180, 78, 79, -182, 78, -180, + 68, 68, -255, 89, -263, -168, -198, -198, 224, 120, + -415, -149, 14, 91, 91, -383, -402, 716, 717, 33, + 97, -350, -350, 139, 139, -190, 88, -329, 91, -329, + 97, 97, 33, 84, 85, 86, 33, 80, 81, 82, + -190, -190, -190, -190, -371, 88, 21, -145, 88, 153, + 90, -254, -254, 279, 164, -350, 710, 285, 285, -350, + -350, -350, -115, -114, 732, 90, -416, 89, -337, 581, + 584, -145, -155, -155, -255, 90, -379, 581, -385, -293, + -293, -293, -293, 97, 99, -416, 579, 75, 582, -416, + -329, -145, -145, -145, -145, -234, 91, -145, -145, 97, + 97, -416, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -209, -145, -416, -178, -177, -179, 693, 120, + 33, -313, -416, -211, 277, -100, -99, -98, 16, -416, + -145, -118, -118, -118, -118, -145, -145, -145, -145, -145, + -145, -415, 68, 20, 18, -257, -293, 247, -415, -257, + -415, -302, -227, -228, 19, 21, -241, 55, -239, 54, + -239, -250, 21, 21, 91, 21, 91, 139, -274, -145, + -214, 59, -29, -293, -212, -293, -229, -145, 88, -145, + -158, -198, -198, -145, -204, 501, 503, 504, 505, 502, + 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, + 506, 517, 478, 479, 480, 109, 111, 110, 481, 482, + 483, 346, 529, 530, 524, 527, 528, 526, 525, 361, + 362, 484, 547, 548, 552, 551, 549, 550, 553, 556, + 557, 558, 559, 560, 561, 563, 562, 554, 555, 532, + 531, 533, 534, 535, 536, 537, 538, 540, 539, 541, + 542, 543, 544, 545, 546, 564, 565, 566, 567, 568, + 570, 569, 574, 573, 571, 572, 576, 575, 485, 486, + 112, 113, 114, 115, 116, 117, 118, 487, 490, 488, + 491, 492, 493, 498, 499, 494, 495, 496, 497, 500, + 372, 370, 371, 367, 366, 365, 425, 430, 431, 433, + 518, 519, 520, 521, 522, 523, 674, 675, 676, 677, + 678, 679, 680, 681, 91, 91, 88, -145, 90, 90, + -255, -370, -60, 90, -256, -254, 97, 90, 280, -213, + -415, 91, -350, -350, -350, 97, 97, -301, -416, 89, + -293, -404, -372, 585, 585, -416, 27, -378, -377, -295, + 88, 79, 64, 580, 583, -416, -416, -416, 89, -416, + -416, -416, 90, 90, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, -416, -416, -416, -416, + -416, -416, -416, -416, -416, -416, 89, -416, -177, -179, + -416, 78, -158, -229, 21, -97, 302, 304, -97, -416, + -416, -416, -416, -416, 89, -416, -416, 89, -416, 89, + -416, -416, -257, -416, 21, 21, 89, -416, -257, -416, + -257, -197, -228, -107, -106, -105, 611, -145, -209, -242, + 56, 78, 123, 91, 91, 91, 14, -212, 224, -234, + -254, -175, 385, -229, -416, -254, 90, 27, 90, 734, + 139, 90, -213, -124, -415, 276, -301, 91, 91, -114, + -117, -29, 89, 153, -254, -190, 64, -145, -209, -416, + 78, 592, 693, -92, -91, -88, 704, 730, -209, -94, + -94, -145, -145, -145, -416, -293, 247, -416, -416, -107, + 89, -104, -103, -293, 78, 123, -266, -293, 90, -416, + -415, -234, 90, -238, -29, 88, -3, 276, -325, -375, + -326, -327, -5, -6, -351, -82, 581, -377, -355, -299, + -295, 91, 97, 90, 581, -416, -416, -90, 147, 702, + 670, -155, 223, -416, 89, -416, 89, -416, 89, -105, + 89, 27, -302, -176, -174, -293, 634, -395, -394, 577, + -405, -401, 120, 145, 102, -403, 672, 628, 129, 130, + -82, -145, 88, -416, -83, 291, 689, 224, -386, 582, + -90, 703, 648, 623, 648, 623, -150, -145, -145, -145, + -103, -415, -416, 89, 24, -317, -62, 645, -392, -393, + 78, -396, 391, 644, 665, 120, 91, 90, -254, 252, + -300, -379, 583, 144, -118, -416, 89, -416, 89, -416, + -93, -174, 641, -330, -158, -393, 78, -392, 78, 15, + 14, -4, 733, 90, 293, -90, 648, 623, -145, -145, + -416, -61, 28, -175, -391, 260, 255, 258, 34, -391, + 97, -4, -416, -416, 645, 254, 33, 120, -158, -178, + -177, -177, } var yyDef = [...]int{ @@ -9257,158 +9309,158 @@ var yyDef = [...]int{ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 72, 74, 75, 882, 882, 882, 0, 882, 0, - 0, 882, -2, -2, 882, 1619, 0, 882, 0, 877, + 0, 882, -2, -2, 882, 1620, 0, 882, 0, 877, 0, -2, 799, 805, 0, 814, -2, 0, 0, 882, - 882, 2245, 2245, 877, 0, 0, 0, 0, 0, 882, - 882, 882, 882, 1624, 1480, 52, 882, 0, 87, 88, - 832, 833, 834, 67, 0, 2243, 883, 1, 3, 73, - 77, 0, 0, 0, 60, 1489, 0, 80, 0, 0, - 886, 0, 0, 1602, 882, 882, 0, 128, 129, 0, + 882, 2246, 2246, 877, 0, 0, 0, 0, 0, 882, + 882, 882, 882, 1625, 1481, 52, 882, 0, 87, 88, + 832, 833, 834, 67, 0, 2244, 883, 1, 3, 73, + 77, 0, 0, 0, 60, 1490, 0, 80, 0, 0, + 886, 0, 0, 1603, 882, 882, 0, 128, 129, 0, 0, 0, -2, 132, -2, 161, 162, 163, 0, 168, 609, 528, 580, 526, 565, -2, 514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 531, - 403, 403, 0, 0, -2, 514, 514, 514, 1604, 0, + 403, 403, 0, 0, -2, 514, 514, 514, 1605, 0, 0, 0, 562, 465, 403, 403, 403, 0, 403, 403, 403, 403, 0, 0, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 1507, 167, 1620, 1617, 1618, 1777, 1778, 1779, 1780, - 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, - 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, - 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, - 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, - 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, - 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, - 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, - 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, - 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, - 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, - 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, - 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, - 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, - 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, - 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, - 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, - 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, - 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, - 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, - 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, - 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, - 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, - 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, - 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, - 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, - 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, - 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, - 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, - 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, - 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, - 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, - 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, - 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, - 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, - 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, - 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, - 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, - 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, - 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, - 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, - 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, - 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, - 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, - 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, - 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, - 2241, 2242, 0, 1596, 0, 722, 985, 0, 878, 879, + 403, 1508, 167, 1621, 1618, 1619, 1778, 1779, 1780, 1781, + 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, + 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, + 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, + 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, + 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, + 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, + 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, + 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, + 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, + 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, + 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, + 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, + 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, + 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, + 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, + 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, + 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, + 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, + 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, + 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, + 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, + 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, + 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, + 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, + 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, + 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, + 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, + 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, + 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, + 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, + 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, + 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, + 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, + 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, + 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, + 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, + 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, + 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, + 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, + 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, + 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, + 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, + 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, + 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, + 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, + 2242, 2243, 0, 1597, 0, 722, 984, 0, 878, 879, 0, 788, 788, 0, 788, 788, 788, 788, 0, 0, 0, 736, 0, 0, 0, 0, 785, 0, 752, 753, 0, 785, 0, 759, 791, 0, 0, 766, 788, 788, - 769, 2246, 0, 2246, 2246, 1587, 0, 782, 780, 794, + 769, 2247, 0, 2247, 2247, 1588, 0, 782, 780, 794, 795, 42, 798, 801, 802, 803, 804, 807, 0, 818, - 821, 1613, 1614, 0, 823, 828, 845, 846, 0, 47, - 1135, 0, 1007, 0, 1013, -2, 1024, 1041, 1042, 1043, - 1044, 1045, 1047, 1048, 1049, 0, 0, 0, 0, 1054, - 1055, 0, 0, 0, 0, 0, 1116, 0, 0, 0, - 0, 1976, 1453, 0, 0, 1415, 1415, 1151, 1415, 1415, - 1417, 1417, 1417, 1829, 1968, 1977, 2153, 1790, 1796, 1797, - 1798, 2099, 2100, 2101, 2102, 2190, 2191, 2195, 1892, 1785, - 2166, 2167, 0, 2242, 1929, 1937, 1938, 1962, 2063, 2176, - 1808, 1957, 2027, 1889, 1911, 1912, 2045, 2046, 1933, 1934, - 1915, 2105, 2107, 2123, 2124, 2109, 2111, 2120, 2126, 2131, - 2110, 2122, 2127, 2140, 2144, 2147, 2148, 2149, 2117, 2115, - 2128, 2132, 2134, 2136, 2142, 2145, 2118, 2116, 2129, 2133, - 2135, 2137, 2143, 2146, 2104, 2108, 2112, 2121, 2139, 2119, - 2138, 2113, 2125, 2130, 2141, 2114, 2106, 1927, 1930, 1918, - 1919, 1921, 1923, 1928, 1935, 1941, 1920, 1940, 1939, 0, - 1916, 1917, 1922, 1932, 1936, 1924, 1925, 1926, 1931, 1942, - 1983, 1982, 1981, 2026, 1953, 2025, 0, 0, 0, 0, - 0, 1780, 1834, 1835, 2150, 1337, 1338, 1339, 1340, 0, - 0, 0, 0, 0, 0, 0, 293, 294, 1466, 1467, - 46, 1134, 1583, 1417, 1417, 1417, 1417, 1417, 1417, 1076, - 1077, 1078, 1079, 1080, 1104, 1105, 1111, 1112, 2040, 2041, - 2042, 2043, 1872, 2185, 1881, 1882, 2022, 2023, 1894, 1895, - 2216, 2217, -2, -2, -2, 234, 235, 236, 237, 238, - 239, 240, 241, 0, 1833, 2164, 2165, 230, 0, 0, - 298, 295, 296, 297, 1118, 1119, 251, 252, 253, 254, + 821, 1614, 1615, 0, 823, 828, 845, 846, 0, 47, + 1136, 0, 1008, 0, 1014, -2, 1025, 1042, 1043, 1044, + 1045, 1046, 1048, 1049, 1050, 0, 0, 0, 0, 1055, + 1056, 0, 0, 0, 0, 0, 1117, 0, 0, 0, + 0, 1977, 1454, 0, 0, 1416, 1416, 1152, 1416, 1416, + 1418, 1418, 1418, 1830, 1969, 1978, 2154, 1791, 1797, 1798, + 1799, 2100, 2101, 2102, 2103, 2191, 2192, 2196, 1893, 1786, + 2167, 2168, 0, 2243, 1930, 1938, 1939, 1963, 2064, 2177, + 1809, 1958, 2028, 1890, 1912, 1913, 2046, 2047, 1934, 1935, + 1916, 2106, 2108, 2124, 2125, 2110, 2112, 2121, 2127, 2132, + 2111, 2123, 2128, 2141, 2145, 2148, 2149, 2150, 2118, 2116, + 2129, 2133, 2135, 2137, 2143, 2146, 2119, 2117, 2130, 2134, + 2136, 2138, 2144, 2147, 2105, 2109, 2113, 2122, 2140, 2120, + 2139, 2114, 2126, 2131, 2142, 2115, 2107, 1928, 1931, 1919, + 1920, 1922, 1924, 1929, 1936, 1942, 1921, 1941, 1940, 0, + 1917, 1918, 1923, 1933, 1937, 1925, 1926, 1927, 1932, 1943, + 1984, 1983, 1982, 2027, 1954, 2026, 0, 0, 0, 0, + 0, 1781, 1835, 1836, 2151, 1338, 1339, 1340, 1341, 0, + 0, 0, 0, 0, 0, 0, 293, 294, 1467, 1468, + 46, 1135, 1584, 1418, 1418, 1418, 1418, 1418, 1418, 1077, + 1078, 1079, 1080, 1081, 1105, 1106, 1112, 1113, 2041, 2042, + 2043, 2044, 1873, 2186, 1882, 1883, 2023, 2024, 1895, 1896, + 2217, 2218, -2, -2, -2, 234, 235, 236, 237, 238, + 239, 240, 241, 0, 1834, 2165, 2166, 230, 0, 0, + 298, 295, 296, 297, 1119, 1120, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 300, 301, - 2245, 0, 855, 0, 0, 0, 0, 0, 0, 1625, - 1626, 1489, 0, 1481, 1480, 65, 0, 882, -2, 0, - 0, 0, 0, 49, 0, 54, 942, 885, 79, 78, - 1529, 1532, 0, 0, 0, 61, 1490, 69, 71, 1491, - 0, 887, 888, 0, 918, 922, 0, 0, 0, 1603, - 1602, 1602, 104, 0, 0, 105, 125, 126, 127, 0, - 0, 111, 112, 1589, 1590, 45, 0, 0, 179, 180, - 0, 43, 430, 0, 175, 0, 423, 362, 0, 1507, - 0, 0, 0, 0, 0, 882, 0, 1597, 156, 157, + 2246, 0, 855, 0, 0, 0, 0, 0, 0, 1626, + 1627, 1490, 0, 1482, 1481, 65, 0, 882, -2, 0, + 0, 0, 0, 49, 0, 54, 941, 885, 79, 78, + 1530, 1533, 0, 0, 0, 61, 1491, 69, 71, 1492, + 0, 887, 888, 0, 917, 921, 0, 0, 0, 1604, + 1603, 1603, 104, 0, 0, 105, 125, 126, 127, 0, + 0, 111, 112, 1590, 1591, 45, 0, 0, 179, 180, + 0, 43, 430, 0, 175, 0, 423, 362, 0, 1508, + 0, 0, 0, 0, 0, 882, 0, 1598, 156, 157, 164, 165, 166, 403, 403, 403, 577, 0, 0, 167, 167, 535, 536, 537, 0, 0, -2, 428, 0, 515, 0, 0, 417, 417, 421, 419, 420, 0, 0, 0, 0, 0, 0, 0, 0, 554, 0, 555, 0, 0, 0, 0, 0, 0, 0, 0, 0, 670, 0, 404, 0, 575, 576, 466, 0, 0, 0, 0, 0, 0, - 0, 0, 1605, 1606, 0, 552, 553, 0, 0, 0, + 0, 0, 1606, 1607, 0, 552, 553, 0, 0, 0, 403, 403, 0, 0, 0, 0, 403, 403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 155, 1520, 0, 0, - 0, -2, 0, 714, 0, 0, 0, 1598, 1598, 0, + 0, 0, 0, 0, 0, 0, 155, 1521, 0, 0, + 0, -2, 0, 714, 0, 0, 0, 1599, 1599, 0, 721, 0, 0, 0, 726, 0, 0, 727, 0, 785, 785, 783, 784, 729, 730, 731, 732, 788, 0, 0, 412, 413, 414, 785, 788, 0, 788, 788, 788, 788, 785, 785, 785, 788, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2246, 791, 788, 0, 760, 0, 761, - 762, 763, 764, 767, 768, 770, 2247, 2248, 1615, 1616, - 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, - 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, - 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, - 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, - 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, - 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, - 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, - 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, - 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, - 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, - 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, - 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, - 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, - 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, - 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, - 2246, 2246, 774, 778, 1588, 800, 806, 808, 809, 0, - 0, 819, 822, 839, 51, 1880, 827, 51, 829, 830, + 0, 0, 0, 2247, 791, 788, 0, 760, 0, 761, + 762, 763, 764, 767, 768, 770, 2248, 2249, 1616, 1617, + 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, + 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, + 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, + 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, + 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, + 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, + 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, + 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, + 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, + 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, + 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, + 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, + 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, + 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, + 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, + 2247, 2247, 774, 778, 1589, 800, 806, 808, 809, 0, + 0, 819, 822, 839, 51, 1881, 827, 51, 829, 830, 831, 857, 858, 863, 0, 0, 0, 0, 869, 870, 871, 0, 0, 874, 875, 876, 0, 0, 0, 0, - 0, 1005, 0, 0, 1124, 1125, 1126, 1127, 1128, 1129, - 1130, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1025, - 1026, 0, 0, 0, 1050, 1051, 1052, 1053, 1056, 0, - 1067, 0, 1069, 1462, -2, 0, 0, 0, 1061, 1062, - 0, 0, 0, 0, 0, 0, 0, 0, 1454, 0, - 0, 1149, 0, 1150, 1152, 1153, 1154, 0, 1155, 1156, + 0, 1006, 0, 0, 1125, 1126, 1127, 1128, 1129, 1130, + 1131, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1026, + 1027, 0, 0, 0, 1051, 1052, 1053, 1054, 1057, 0, + 1068, 0, 1070, 1463, -2, 0, 0, 0, 1062, 1063, + 0, 0, 0, 0, 0, 0, 0, 0, 1455, 0, + 0, 1150, 0, 1151, 1153, 1154, 1155, 0, 1156, 1157, 892, 892, 892, 892, 892, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 892, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1608, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -9421,253 +9473,254 @@ var yyDef = [...]int{ 223, 224, 225, 226, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 242, 243, 244, 245, 246, 247, 302, 248, 249, 250, - 1134, 0, 0, 0, 48, 847, 848, 0, 968, 1608, - 0, 0, 898, 0, 1623, 59, 68, 70, 1489, 63, - 1489, 0, 904, 0, 0, -2, -2, 905, 911, 912, - 913, 914, 915, 56, 2244, 57, 0, 76, 0, 50, - 0, 0, 1530, 0, 1533, 0, 0, 0, 376, 1537, - 0, 0, 1482, 1483, 1486, 0, 919, 1974, 923, 0, - 925, 926, 0, 0, 102, 0, 984, 0, 0, 0, - 113, 0, 115, 116, 0, 0, 0, 387, 1591, 1592, - 1593, -2, 410, 0, 387, 371, 310, 311, 312, 362, - 314, 362, 362, 362, 362, 376, 376, 376, 376, 345, - 346, 347, 348, 349, 0, 0, 331, 362, 362, 362, - 362, 352, 353, 354, 355, 356, 357, 358, 359, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 364, 364, - 364, 364, 364, 368, 368, 0, 44, 0, 391, 0, - 1486, 0, 0, 1520, 1600, 1610, 0, 0, 0, 1600, - 134, 0, 0, 0, 578, 620, 529, 566, 579, 0, - 532, 533, -2, 0, 0, 514, 0, 516, 0, 411, - 0, -2, 0, 421, 0, 417, 421, 418, 421, 409, - 422, 556, 557, 558, 0, 560, 561, 650, 954, 0, - 0, 0, 0, 0, 656, 657, 658, 0, 660, 661, - 662, 663, 664, 665, 666, 667, 668, 669, 567, 568, - 569, 570, 571, 572, 573, 574, 0, 0, 0, 0, - 516, 0, 563, 0, 0, 467, 468, 469, 0, 0, - 472, 473, 474, 475, 0, 0, 478, 479, 480, 971, - 972, 481, 482, 507, 508, 509, 483, 484, 485, 486, - 487, 488, 489, 501, 502, 503, 504, 505, 506, 490, - 491, 492, 493, 494, 495, 498, 0, 149, 1511, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1598, 0, 0, 0, 0, - 901, 986, 1621, 1622, 723, 0, 0, 789, 790, 0, - 415, 416, 788, 788, 733, 775, 0, 788, 737, 776, - 738, 740, 739, 741, 754, 755, 788, 744, 786, 787, - 745, 746, 747, 748, 749, 750, 751, 771, 756, 757, - 758, 792, 0, 796, 797, 772, 773, 0, 0, 812, - 813, 0, 820, 842, 840, 841, 843, 835, 836, 837, - 838, 0, 844, 0, 0, 860, 98, 865, 866, 867, - 868, 880, 873, 1136, 1002, 1003, 1004, 0, 1006, 1010, - 0, 1120, 1122, 1012, 1008, 1014, 1131, 1132, 1133, 0, - 0, 0, 0, 0, 1018, 1022, 1027, 1028, 1029, 1030, - 1031, 0, 1032, 0, 1035, 1036, 1037, 1038, 1039, 1040, - 1046, 1430, 1431, 1432, 1065, 303, 304, 0, 1066, 0, - 0, 0, 0, 0, 0, 0, 0, 1377, 1378, 1379, + 1135, 0, 0, 0, 48, 847, 848, 0, 967, 1609, + 0, 0, 898, 0, 1624, 59, 68, 70, 1490, 63, + 1490, 0, 904, 0, 0, -2, -2, 905, 906, 910, + 911, 912, 913, 914, 56, 2245, 57, 0, 76, 0, + 50, 0, 0, 1531, 0, 1534, 0, 0, 0, 376, + 1538, 0, 0, 1483, 1484, 1487, 0, 918, 1975, 922, + 0, 924, 925, 0, 0, 102, 0, 983, 0, 0, + 0, 113, 0, 115, 116, 0, 0, 0, 387, 1592, + 1593, 1594, -2, 410, 0, 387, 371, 310, 311, 312, + 362, 314, 362, 362, 362, 362, 376, 376, 376, 376, + 345, 346, 347, 348, 349, 0, 0, 331, 362, 362, + 362, 362, 352, 353, 354, 355, 356, 357, 358, 359, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 364, + 364, 364, 364, 364, 368, 368, 0, 44, 0, 391, + 0, 1487, 0, 0, 1521, 1601, 1611, 0, 0, 0, + 1601, 134, 0, 0, 0, 578, 620, 529, 566, 579, + 0, 532, 533, -2, 0, 0, 514, 0, 516, 0, + 411, 0, -2, 0, 421, 0, 417, 421, 418, 421, + 409, 422, 556, 557, 558, 0, 560, 561, 650, 953, + 0, 0, 0, 0, 0, 656, 657, 658, 0, 660, + 661, 662, 663, 664, 665, 666, 667, 668, 669, 567, + 568, 569, 570, 571, 572, 573, 574, 0, 0, 0, + 0, 516, 0, 563, 0, 0, 467, 468, 469, 0, + 0, 472, 473, 474, 475, 0, 0, 478, 479, 480, + 970, 971, 481, 482, 507, 508, 509, 483, 484, 485, + 486, 487, 488, 489, 501, 502, 503, 504, 505, 506, + 490, 491, 492, 493, 494, 495, 498, 0, 149, 1512, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1599, 0, 0, 0, + 0, 901, 985, 1622, 1623, 723, 0, 0, 789, 790, + 0, 415, 416, 788, 788, 733, 775, 0, 788, 737, + 776, 738, 740, 739, 741, 754, 755, 788, 744, 786, + 787, 745, 746, 747, 748, 749, 750, 751, 771, 756, + 757, 758, 792, 0, 796, 797, 772, 773, 0, 0, + 812, 813, 0, 820, 842, 840, 841, 843, 835, 836, + 837, 838, 0, 844, 0, 0, 860, 98, 865, 866, + 867, 868, 880, 873, 1137, 1003, 1004, 1005, 0, 1007, + 1011, 0, 1121, 1123, 1013, 1009, 1015, 1132, 1133, 1134, + 0, 0, 0, 0, 0, 1019, 1023, 1028, 1029, 1030, + 1031, 1032, 0, 1033, 0, 1036, 1037, 1038, 1039, 1040, + 1041, 1047, 1431, 1432, 1433, 1066, 303, 304, 0, 1067, + 0, 0, 0, 0, 0, 0, 0, 0, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, - 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1135, 0, 916, - 0, 0, 0, 1460, 1457, 0, 0, 0, 1416, 1418, - 0, 0, 0, 893, 894, 0, 0, 0, 0, 0, + 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1136, 0, + 915, 0, 0, 0, 1461, 1458, 0, 0, 0, 1417, + 1419, 0, 0, 0, 893, 894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, + 0, 0, 0, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, - 0, 0, 1433, 0, 0, 0, 0, 0, 1453, 0, - 1071, 1072, 1073, 0, 0, 0, 0, 0, 0, 1195, - 0, 0, 0, 0, 1609, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 144, 145, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1341, 1342, 1343, 1344, - 41, 0, 0, 0, 0, 0, 0, 0, 903, 1464, - 0, -2, -2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1366, 0, 0, 0, - 0, 0, 0, 1581, 0, 0, 850, 851, 853, 0, - 988, 0, 969, 0, 0, 856, 0, 897, 0, 900, - 62, 64, 909, 910, 0, 927, 906, 58, 53, 0, - 0, 946, 1531, 1534, 1535, 376, 1557, 0, 385, 385, - 382, 1492, 1493, 0, 1485, 1487, 1488, 81, 924, 920, - 0, 1000, 0, 0, 983, 0, 930, 932, 933, 934, - 966, 0, 937, 938, 0, 0, 0, 0, 0, 100, - 985, 106, 0, 114, 0, 0, 119, 120, 107, 108, - 109, 110, 0, 609, -2, 462, 181, 183, 184, 185, - 176, -2, 374, 372, 373, 313, 376, 376, 339, 340, - 341, 342, 343, 344, 0, 0, 332, 333, 334, 335, - 324, 0, 325, 326, 327, 366, 0, 328, 329, 0, - 330, 429, 0, 1494, 392, 393, 395, 403, 0, 398, - 399, 0, 403, 403, 0, 424, 425, 0, 1486, 1511, - 0, 0, 0, 1611, 1610, 1610, 1610, 0, 169, 170, - 171, 172, 173, 174, 645, 0, 0, 621, 643, 644, - 167, 0, 0, 177, 518, 517, 0, 677, 0, 427, - 0, 0, 421, 421, 406, 407, 559, 0, 0, 652, - 653, 654, 655, 0, 0, 0, 545, 456, 0, 546, - 547, 516, 518, 0, 0, 387, 470, 471, 476, 477, - 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 594, 595, 596, 599, 601, 520, 605, - 607, 598, 600, 602, 520, 606, 608, 1508, 1509, 1510, - 0, 0, 715, 0, 0, 453, 96, 1599, 720, 724, - 725, 785, 743, 777, 785, 735, 742, 765, 810, 811, - 816, 824, 825, 826, 864, 0, 0, 0, 0, 872, - 0, 0, 1011, 1121, 1123, 1015, 0, 1019, 1023, 0, - 0, 0, 0, 0, 1070, 1068, 1464, 0, 0, 0, - 1117, 0, 0, 0, 1139, 1140, 0, 0, 0, 0, - 1458, 0, 0, 1147, 0, 1419, 1157, 0, 0, 0, - 0, 0, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, - 1171, 1172, 1480, 1174, 0, 0, 0, 0, 0, 1179, - 1180, 1181, 1182, 1183, 0, 1185, 0, 1186, 0, 0, - 0, 0, 1193, 1194, 1196, 0, 0, 1199, 1200, 0, - 1202, 0, 1204, 1205, 1206, 1207, 1208, 1209, 0, 1211, - 0, 1213, 1214, 1215, 0, 1217, 0, 1219, 1220, 0, - 1222, 0, 1224, 0, 1227, 0, 1230, 0, 1233, 0, - 1236, 0, 1239, 0, 1242, 0, 1245, 0, 1248, 0, - 1251, 0, 1254, 0, 1257, 0, 1260, 0, 1263, 0, - 1266, 0, 1269, 0, 1272, 1273, 1274, 0, 1276, 0, - 1278, 0, 1281, 1282, 0, 1284, 0, 1287, 0, 1290, - 0, 0, 1291, 0, 0, 0, 1295, 0, 0, 0, - 0, 1304, 1305, 1306, 1307, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1318, 1319, 1320, 1321, 1322, - 1323, 0, 1325, 0, 1099, 0, 0, 1099, 0, 0, - 0, 0, 0, 1137, 902, 0, 1420, 1421, 1422, 1423, - 1424, 0, 0, 0, 0, 0, 0, 1364, 1365, 1367, - 0, 0, 1370, 0, 1372, 0, 1582, 849, 852, 854, - 940, 989, 990, 0, 0, 0, 0, 970, 1607, 895, - 896, 899, 948, 0, 1468, 0, 0, 927, 1000, 928, - 0, 907, 55, 943, 0, 1539, 1538, 1551, 1564, 385, - 385, 379, 380, 386, 381, 383, 384, 1484, 0, 1489, - 0, 1575, 0, 0, 1567, 0, 0, 0, 0, 0, - 0, 0, 0, 973, 0, 0, 976, 0, 0, 0, - 0, 967, 938, 0, 939, 0, -2, 0, 0, 94, + 1415, 0, 0, 1434, 0, 0, 0, 0, 0, 1454, + 0, 1072, 1073, 1074, 0, 0, 0, 0, 0, 0, + 1196, 0, 0, 0, 0, 1610, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 144, 145, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1342, 1343, 1344, + 1345, 41, 0, 0, 0, 0, 0, 0, 0, 903, + 1465, 0, -2, -2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1367, 0, 0, + 0, 0, 0, 0, 1582, 0, 0, 850, 851, 853, + 0, 987, 0, 968, 0, 0, 856, 0, 897, 0, + 900, 62, 64, 908, 909, 0, 926, 907, 58, 53, + 0, 0, 945, 1532, 1535, 1536, 376, 1558, 0, 385, + 385, 382, 1493, 1494, 0, 1486, 1488, 1489, 81, 923, + 919, 0, 1001, 0, 0, 982, 0, 929, 931, 932, + 933, 965, 0, 936, 937, 0, 0, 0, 0, 0, + 100, 984, 106, 0, 114, 0, 0, 119, 120, 107, + 108, 109, 110, 0, 609, -2, 462, 181, 183, 184, + 185, 176, -2, 374, 372, 373, 313, 376, 376, 339, + 340, 341, 342, 343, 344, 0, 0, 332, 333, 334, + 335, 324, 0, 325, 326, 327, 366, 0, 328, 329, + 0, 330, 429, 0, 1495, 392, 393, 395, 403, 0, + 398, 399, 0, 403, 403, 0, 424, 425, 0, 1487, + 1512, 0, 0, 0, 1612, 1611, 1611, 1611, 0, 169, + 170, 171, 172, 173, 174, 645, 0, 0, 621, 643, + 644, 167, 0, 0, 177, 518, 517, 0, 677, 0, + 427, 0, 0, 421, 421, 406, 407, 559, 0, 0, + 652, 653, 654, 655, 0, 0, 0, 545, 456, 0, + 546, 547, 516, 518, 0, 0, 387, 470, 471, 476, + 477, 496, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 594, 595, 596, 599, 601, 520, + 605, 607, 598, 600, 602, 520, 606, 608, 1509, 1510, + 1511, 0, 0, 715, 0, 0, 453, 96, 1600, 720, + 724, 725, 785, 743, 777, 785, 735, 742, 765, 810, + 811, 816, 824, 825, 826, 864, 0, 0, 0, 0, + 872, 0, 0, 1012, 1122, 1124, 1016, 0, 1020, 1024, + 0, 0, 0, 0, 0, 1071, 1069, 1465, 0, 0, + 0, 1118, 0, 0, 0, 1140, 1141, 0, 0, 0, + 0, 1459, 0, 0, 1148, 0, 1420, 1158, 0, 0, + 0, 0, 0, 1164, 1165, 1166, 1167, 1168, 1169, 1170, + 1171, 1172, 1173, 1481, 1175, 0, 0, 0, 0, 0, + 1180, 1181, 1182, 1183, 1184, 0, 1186, 0, 1187, 0, + 0, 0, 0, 1194, 1195, 1197, 0, 0, 1200, 1201, + 0, 1203, 0, 1205, 1206, 1207, 1208, 1209, 1210, 0, + 1212, 0, 1214, 1215, 1216, 0, 1218, 0, 1220, 1221, + 0, 1223, 0, 1225, 0, 1228, 0, 1231, 0, 1234, + 0, 1237, 0, 1240, 0, 1243, 0, 1246, 0, 1249, + 0, 1252, 0, 1255, 0, 1258, 0, 1261, 0, 1264, + 0, 1267, 0, 1270, 0, 1273, 1274, 1275, 0, 1277, + 0, 1279, 0, 1282, 1283, 0, 1285, 0, 1288, 0, + 1291, 0, 0, 1292, 0, 0, 0, 1296, 0, 0, + 0, 0, 1305, 1306, 1307, 1308, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1319, 1320, 1321, 1322, + 1323, 1324, 0, 1326, 0, 1100, 0, 0, 1100, 0, + 0, 0, 0, 0, 1138, 902, 0, 1421, 1422, 1423, + 1424, 1425, 0, 0, 0, 0, 0, 0, 1365, 1366, + 1368, 0, 0, 1371, 0, 1373, 0, 1583, 849, 852, + 854, 939, 988, 989, 0, 0, 0, 0, 969, 1608, + 895, 896, 899, 947, 0, 1469, 0, 0, 926, 1001, + 927, 0, 55, 942, 0, 1540, 1539, 1552, 1565, 385, + 385, 379, 380, 386, 381, 383, 384, 1485, 0, 1490, + 0, 1576, 0, 0, 1568, 0, 0, 0, 0, 0, + 0, 0, 0, 972, 0, 0, 975, 0, 0, 0, + 0, 966, 937, 0, 938, 0, -2, 0, 0, 94, 95, 0, 0, 0, 117, 118, 0, 0, 124, 388, 389, 158, 167, 464, 182, 437, 0, 0, 309, 375, 336, 337, 338, 0, 360, 0, 0, 0, 0, 458, - 130, 1498, 1497, 403, 403, 394, 0, 397, 0, 0, - 0, 1612, 363, 426, 0, 148, 0, 0, 0, 0, + 130, 1499, 1498, 403, 403, 394, 0, 397, 0, 0, + 0, 1613, 363, 426, 0, 148, 0, 0, 0, 0, 0, 154, 615, 0, 0, 622, 0, 0, 0, 527, 0, 538, 539, 0, 649, -2, 711, 391, 0, 405, - 408, 955, 0, 0, 540, 0, 543, 544, 457, 518, - 549, 550, 564, 551, 499, 500, 497, 0, 0, 1521, - 1522, 1527, 1525, 1526, 135, 585, 587, 591, 586, 590, - 0, 0, 0, 522, 0, 522, 583, 0, 453, 1494, + 408, 954, 0, 0, 540, 0, 543, 544, 457, 518, + 549, 550, 564, 551, 499, 500, 497, 0, 0, 1522, + 1523, 1528, 1526, 1527, 135, 585, 587, 591, 586, 590, + 0, 0, 0, 522, 0, 522, 583, 0, 453, 1495, 0, 719, 454, 455, 788, 788, 859, 99, 0, 862, - 0, 0, 0, 0, 1016, 1020, 1033, 1034, 1425, 1451, - 362, 362, 1438, 362, 368, 1441, 362, 1443, 362, 1446, - 362, 1449, 1450, 0, 0, 1063, 0, 917, 0, 0, - 0, 1146, 1461, 0, 0, 1158, 1159, 1160, 1161, 1162, - 1455, 0, 0, 0, 1178, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1017, 1021, 1034, 1035, 1426, 1452, + 362, 362, 1439, 362, 368, 1442, 362, 1444, 362, 1447, + 362, 1450, 1451, 0, 0, 1064, 0, 916, 0, 0, + 0, 1147, 1462, 0, 0, 1159, 1160, 1161, 1162, 1163, + 1456, 0, 0, 0, 1179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 147, 0, 0, 0, - 0, 0, 0, 1375, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1094, 1098, 0, 1100, 1101, - 0, 0, 1327, 0, 0, 1345, 0, 0, 0, 0, - 0, 0, 0, 1465, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 991, 996, 996, 996, 0, 0, - 0, 1594, 1595, 1469, 1470, 1000, 1471, 929, 908, 947, - 1557, 0, 1550, 0, -2, 1559, 0, 0, 0, 1565, - 377, 378, 921, 82, 1001, 85, 0, 1575, 1584, 0, - 1566, 1577, 1579, 0, 0, 0, 1571, 0, 1000, 931, - 962, 964, 0, 959, 974, 975, 977, 0, 979, 0, - 981, 982, 942, 936, 0, 102, 0, 1000, 1000, 101, - 0, 987, 121, 122, 123, 463, 186, 191, 0, 0, - 0, 196, 0, 198, 0, 0, 0, 203, 204, 403, - 403, 438, 0, 306, 308, 0, 0, 189, 376, 0, - 376, 0, 367, 369, 0, 439, 459, 1495, 1496, 0, - 0, 396, 400, 401, 402, 0, 1601, 150, 0, 0, - 0, 618, 0, 646, 0, 0, 0, 0, 0, 0, - 178, 519, 678, 679, 680, 681, 682, 683, 684, 685, - 686, 0, 403, 0, 0, 0, 403, 403, 403, 0, - 703, 390, 0, 0, 674, 671, 541, 0, 220, 221, - 228, 229, 231, 0, 0, 0, 0, 0, 548, 942, - 1512, 1513, 1514, 0, 1524, 1528, 138, 0, 0, 0, - 0, 593, 597, 603, 0, 521, 604, 716, 717, 718, - 97, 728, 734, 861, 881, 1009, 1017, 1021, 0, 0, - 0, 0, 1452, 1436, 376, 1439, 1440, 1442, 1444, 1445, - 1447, 1448, 1059, 1060, 1064, 0, 1143, 0, 1145, 0, - 1459, 0, 1489, 0, 0, 0, 1177, 0, 0, 0, - 1188, 1187, 1189, 0, 1191, 1192, 1197, 1198, 1201, 1203, - 1210, 1212, 1216, 1218, 1221, 1223, 1225, 0, 1228, 0, - 1231, 0, 1234, 0, 1237, 0, 1240, 0, 1243, 0, - 1246, 0, 1249, 0, 1252, 0, 1255, 0, 1258, 0, - 1261, 0, 1264, 0, 1267, 0, 1270, 0, 1275, 1277, - 0, 1280, 1283, 1285, 0, 1288, 0, 1292, 0, 1294, - 1296, 1297, 0, 0, 0, 1308, 1309, 1310, 1311, 1312, - 1313, 1314, 1315, 1316, 1317, 1324, 0, 1092, 1095, 1326, - 1102, 1103, 1108, 1329, 0, 0, 0, 1332, 0, 0, - 0, 1336, 1138, 1347, 0, 1352, 0, 0, 1358, 0, - 1362, 0, 1368, 1369, 1371, 1373, 0, 0, 0, 0, - 0, 968, 949, 66, 1471, 1473, 0, 1544, 1542, 1542, - 1552, 1553, 0, 0, 1560, 0, 0, 0, 0, 86, - 0, 0, 0, 1580, 0, 0, 0, 0, 103, 1480, - 956, 963, 0, 0, 957, 0, 958, 978, 980, 935, - 0, 1000, 1000, 92, 93, 0, 192, 0, 194, 0, - 197, 199, 200, 201, 207, 208, 209, 202, 0, 0, - 305, 307, 0, 0, 350, 361, 351, 0, 0, 1499, - 1500, 1501, 1502, 1503, 1504, 1505, 1506, 942, 151, 152, - 153, 610, 0, 620, 0, 944, 0, 613, 0, 530, - 0, 0, 0, 403, 403, 403, 0, 0, 0, 0, - 688, 0, 0, 651, 0, 659, 0, 0, 0, 232, - 233, 0, 1523, 584, 0, 136, 137, 0, 0, 589, - 523, 524, 1057, 0, 0, 0, 1058, 1437, 0, 0, - 0, 0, 0, 1456, 0, 0, 0, 0, 1184, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1300, 0, 0, 0, 640, 641, 0, 1376, 1097, - 1480, 0, 1099, 1109, 1110, 0, 1099, 1346, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 997, - 0, 0, 0, 0, 988, 1473, 1478, 0, 0, 1547, - 0, 1540, 1543, 1541, 1554, 0, 0, 1561, 0, 1563, - 0, 1585, 1586, 1578, 0, 1570, 1573, 1569, 1572, 1489, - 960, 0, 965, 0, 1480, 91, 0, 195, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 205, 206, 0, - 0, 365, 370, 0, 0, 0, 611, 0, 945, 623, - 614, 0, 701, 0, 705, 0, 0, 0, 708, 709, - 710, 687, 0, 691, 431, 675, 672, 673, 542, 0, - 139, 140, 0, 0, 0, 1426, 0, 1429, 1141, 1144, - 1142, 0, 1173, 1175, 1176, 1434, 1435, 1190, 1226, 1229, - 1232, 1235, 1238, 1241, 1244, 1247, 1250, 1253, 1256, 1259, - 1262, 1265, 1268, 1271, 1279, 1286, 1289, 1293, 1298, 0, - 1301, 0, 0, 1302, 0, 642, 1088, 0, 0, 1106, - 1107, 0, 1331, 1333, 1334, 1335, 1348, 0, 1353, 1354, - 0, 1359, 0, 1363, 1374, 0, 993, 950, 951, 998, - 999, 0, 0, 941, 1478, 84, 1479, 1476, 0, 1474, - 1472, 1536, 0, 1545, 1546, 1555, 1556, 1562, 0, 1568, - 0, 89, 0, 0, 0, 1489, 193, 0, 212, 0, - 619, 0, 622, 612, 699, 700, 0, 712, 704, 706, - 707, 689, -2, 1515, 0, 0, 0, 592, 1427, 0, - 0, 1303, 0, 638, 639, 1096, 1089, 0, 1074, 1075, - 1093, 1328, 1330, 0, 0, 0, 0, 992, 994, 995, - 83, 0, 1475, 1114, 0, 1548, 1549, 1576, 1574, 961, - 968, 0, 90, 444, 437, 1515, 0, 0, 0, 692, - 693, 694, 695, 696, 697, 698, 581, 1517, 141, 142, - 0, 511, 512, 513, 135, 0, 1148, 1299, 1090, 0, - 0, 0, 0, 0, 1349, 0, 1355, 0, 1360, 0, - 952, 953, 1477, 0, 0, 624, 0, 626, 0, -2, - 432, 445, 0, 187, 213, 214, 0, 0, 217, 218, - 219, 210, 211, 131, 0, 0, 713, 0, 1518, 1519, - 0, 138, 0, 0, 1081, 1082, 1083, 1084, 1086, 0, - 0, 0, 0, 1115, 1094, 625, 0, 0, 387, 0, - 635, 433, 434, 0, 440, 441, 442, 443, 215, 216, - 647, 0, 0, 510, 588, 1428, 0, 0, 1350, 0, - 1356, 0, 1361, 0, 627, 628, 636, 0, 435, 0, - 436, 0, 0, 0, 616, 0, 647, 1516, 1091, 1085, - 1087, 0, 0, 1113, 0, 637, 633, 446, 448, 449, - 0, 0, 447, 648, 617, 1351, 1357, 0, 450, 451, - 452, 629, 630, 631, 632, + 0, 0, 0, 1376, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1095, 1099, 0, 1101, 1102, + 0, 0, 1328, 0, 0, 1346, 0, 0, 0, 0, + 0, 0, 0, 1466, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 990, 997, 0, 997, 0, 997, + 0, 0, 0, 1595, 1596, 1470, 1471, 1001, 1472, 928, + 946, 1558, 0, 1551, 0, -2, 1560, 0, 0, 0, + 1566, 377, 378, 920, 82, 1002, 85, 0, 1576, 1585, + 0, 1567, 1578, 1580, 0, 0, 0, 1572, 0, 1001, + 930, 961, 963, 0, 958, 973, 974, 976, 0, 978, + 0, 980, 981, 941, 935, 0, 102, 0, 1001, 1001, + 101, 0, 986, 121, 122, 123, 463, 186, 191, 0, + 0, 0, 196, 0, 198, 0, 0, 0, 203, 204, + 403, 403, 438, 0, 306, 308, 0, 0, 189, 376, + 0, 376, 0, 367, 369, 0, 439, 459, 1496, 1497, + 0, 0, 396, 400, 401, 402, 0, 1602, 150, 0, + 0, 0, 618, 0, 646, 0, 0, 0, 0, 0, + 0, 178, 519, 678, 679, 680, 681, 682, 683, 684, + 685, 686, 0, 403, 0, 0, 0, 403, 403, 403, + 0, 703, 390, 0, 0, 674, 671, 541, 0, 220, + 221, 228, 229, 231, 0, 0, 0, 0, 0, 548, + 941, 1513, 1514, 1515, 0, 1525, 1529, 138, 0, 0, + 0, 0, 593, 597, 603, 0, 521, 604, 716, 717, + 718, 97, 728, 734, 861, 881, 1010, 1018, 1022, 0, + 0, 0, 0, 1453, 1437, 376, 1440, 1441, 1443, 1445, + 1446, 1448, 1449, 1060, 1061, 1065, 0, 1144, 0, 1146, + 0, 1460, 0, 1490, 0, 0, 0, 1178, 0, 0, + 0, 1189, 1188, 1190, 0, 1192, 1193, 1198, 1199, 1202, + 1204, 1211, 1213, 1217, 1219, 1222, 1224, 1226, 0, 1229, + 0, 1232, 0, 1235, 0, 1238, 0, 1241, 0, 1244, + 0, 1247, 0, 1250, 0, 1253, 0, 1256, 0, 1259, + 0, 1262, 0, 1265, 0, 1268, 0, 1271, 0, 1276, + 1278, 0, 1281, 1284, 1286, 0, 1289, 0, 1293, 0, + 1295, 1297, 1298, 0, 0, 0, 1309, 1310, 1311, 1312, + 1313, 1314, 1315, 1316, 1317, 1318, 1325, 0, 1093, 1096, + 1327, 1103, 1104, 1109, 1330, 0, 0, 0, 1333, 0, + 0, 0, 1337, 1139, 1348, 0, 1353, 0, 0, 1359, + 0, 1363, 0, 1369, 1370, 1372, 1374, 0, 0, 0, + 0, 0, 0, 0, 967, 948, 66, 1472, 1474, 0, + 1545, 1543, 1543, 1553, 1554, 0, 0, 1561, 0, 0, + 0, 0, 86, 0, 0, 0, 1581, 0, 0, 0, + 0, 103, 1481, 955, 962, 0, 0, 956, 0, 957, + 977, 979, 934, 0, 1001, 1001, 92, 93, 0, 192, + 0, 194, 0, 197, 199, 200, 201, 207, 208, 209, + 202, 0, 0, 305, 307, 0, 0, 350, 361, 351, + 0, 0, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, + 941, 151, 152, 153, 610, 0, 620, 0, 943, 0, + 613, 0, 530, 0, 0, 0, 403, 403, 403, 0, + 0, 0, 0, 688, 0, 0, 651, 0, 659, 0, + 0, 0, 232, 233, 0, 1524, 584, 0, 136, 137, + 0, 0, 589, 523, 524, 1058, 0, 0, 0, 1059, + 1438, 0, 0, 0, 0, 0, 1457, 0, 0, 0, + 0, 1185, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1301, 0, 0, 0, 640, 641, + 0, 1377, 1098, 1481, 0, 1100, 1110, 1111, 0, 1100, + 1347, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 998, 0, 0, 0, 949, 950, 0, 0, + 0, 987, 1474, 1479, 0, 0, 1548, 0, 1541, 1544, + 1542, 1555, 0, 0, 1562, 0, 1564, 0, 1586, 1587, + 1579, 0, 1571, 1574, 1570, 1573, 1490, 959, 0, 964, + 0, 1481, 91, 0, 195, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 205, 206, 0, 0, 365, 370, + 0, 0, 0, 611, 0, 944, 623, 614, 0, 701, + 0, 705, 0, 0, 0, 708, 709, 710, 687, 0, + 691, 431, 675, 672, 673, 542, 0, 139, 140, 0, + 0, 0, 1427, 0, 1430, 1142, 1145, 1143, 0, 1174, + 1176, 1177, 1435, 1436, 1191, 1227, 1230, 1233, 1236, 1239, + 1242, 1245, 1248, 1251, 1254, 1257, 1260, 1263, 1266, 1269, + 1272, 1280, 1287, 1290, 1294, 1299, 0, 1302, 0, 0, + 1303, 0, 642, 1089, 0, 0, 1107, 1108, 0, 1332, + 1334, 1335, 1336, 1349, 0, 1354, 1355, 0, 1360, 0, + 1364, 1375, 0, 992, 999, 1000, 0, 995, 0, 996, + 0, 940, 1479, 84, 1480, 1477, 0, 1475, 1473, 1537, + 0, 1546, 1547, 1556, 1557, 1563, 0, 1569, 0, 89, + 0, 0, 0, 1490, 193, 0, 212, 0, 619, 0, + 622, 612, 699, 700, 0, 712, 704, 706, 707, 689, + -2, 1516, 0, 0, 0, 592, 1428, 0, 0, 1304, + 0, 638, 639, 1097, 1090, 0, 1075, 1076, 1094, 1329, + 1331, 0, 0, 0, 991, 951, 952, 993, 994, 83, + 0, 1476, 1115, 0, 1549, 1550, 1577, 1575, 960, 967, + 0, 90, 444, 437, 1516, 0, 0, 0, 692, 693, + 694, 695, 696, 697, 698, 581, 1518, 141, 142, 0, + 511, 512, 513, 135, 0, 1149, 1300, 1091, 0, 0, + 0, 0, 0, 1350, 0, 1356, 0, 1361, 0, 1478, + 0, 0, 624, 0, 626, 0, -2, 432, 445, 0, + 187, 213, 214, 0, 0, 217, 218, 219, 210, 211, + 131, 0, 0, 713, 0, 1519, 1520, 0, 138, 0, + 0, 1082, 1083, 1084, 1085, 1087, 0, 0, 0, 0, + 1116, 1095, 625, 0, 0, 387, 0, 635, 433, 434, + 0, 440, 441, 442, 443, 215, 216, 647, 0, 0, + 510, 588, 1429, 0, 0, 1351, 0, 1357, 0, 1362, + 0, 627, 628, 636, 0, 435, 0, 436, 0, 0, + 0, 616, 0, 647, 1517, 1092, 1086, 1088, 0, 0, + 1114, 0, 637, 633, 446, 448, 449, 0, 0, 447, + 648, 617, 1352, 1358, 0, 450, 451, 452, 629, 630, + 631, 632, } var yyTok1 = [...]int{ @@ -16777,529 +16830,523 @@ yydefault: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4820 { - yyVAL.strs = []string{yyDollar[1].str} + yyVAL.strs = yyDollar[1].strs } case 906: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4824 - { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' - yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str} + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4826 + { + yyVAL.strs = []string{yyDollar[1].str} } case 907: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4828 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:4830 { - yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} + yyVAL.strs = append(yyDollar[1].strs, yyDollar[2].str) } case 908: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4832 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4836 { - yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} + yyVAL.str = SQLNoCacheStr } case 909: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4838 +//line sql.y:4840 { - yyVAL.str = SQLNoCacheStr + yyVAL.str = SQLCacheStr } case 910: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4842 +//line sql.y:4844 { - yyVAL.str = SQLCacheStr + yyVAL.str = DistinctStr } case 911: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4846 +//line sql.y:4848 { yyVAL.str = DistinctStr } case 912: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4850 +//line sql.y:4852 { - yyVAL.str = DistinctStr + yyVAL.str = StraightJoinHint } case 913: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4854 +//line sql.y:4856 { - yyVAL.str = StraightJoinHint + yyVAL.str = SQLCalcFoundRowsStr } case 914: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4858 +//line sql.y:4860 { - yyVAL.str = SQLCalcFoundRowsStr + yyVAL.str = AllStr // These are not picked up by NewSelect, and so ALL will be dropped. But this is OK, since it's redundant anyway } case 915: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4862 - { - yyVAL.str = AllStr // These are not picked up by NewSelect, and so ALL will be dropped. But this is OK, since it's redundant anyway - } - case 916: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL SelectExprs -//line sql.y:4868 + var yyLOCAL SelectExprs +//line sql.y:4866 { yyLOCAL = SelectExprs{yyDollar[1].selectExprUnion()} } yyVAL.union = yyLOCAL - case 917: + case 916: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4872 +//line sql.y:4870 { yySLICE := (*SelectExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].selectExprUnion()) } - case 918: + case 917: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4878 +//line sql.y:4876 { yyLOCAL = &StarExpr{} } yyVAL.union = yyLOCAL - case 919: + case 918: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4882 +//line sql.y:4880 { yyLOCAL = &AliasedExpr{Expr: yyDollar[1].exprUnion(), As: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 920: + case 919: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4886 +//line sql.y:4884 { yyLOCAL = &StarExpr{TableName: TableName{Name: yyDollar[1].identifierCS}} } yyVAL.union = yyLOCAL - case 921: + case 920: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4890 +//line sql.y:4888 { yyLOCAL = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}} } yyVAL.union = yyLOCAL - case 922: + case 921: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4895 +//line sql.y:4893 { yyVAL.identifierCI = IdentifierCI{} } - case 923: + case 922: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4899 +//line sql.y:4897 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 924: + case 923: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4903 +//line sql.y:4901 { yyVAL.identifierCI = yyDollar[2].identifierCI } - case 926: + case 925: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4910 +//line sql.y:4908 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 927: + case 926: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4915 +//line sql.y:4913 { yyLOCAL = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewIdentifierCS("dual")}}} } yyVAL.union = yyLOCAL - case 928: + case 927: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4919 +//line sql.y:4917 { yyLOCAL = yyDollar[1].tableExprsUnion() } yyVAL.union = yyLOCAL - case 929: + case 928: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4925 +//line sql.y:4923 { yyLOCAL = yyDollar[2].tableExprsUnion() } yyVAL.union = yyLOCAL - case 930: + case 929: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4931 +//line sql.y:4929 { yyLOCAL = TableExprs{yyDollar[1].tableExprUnion()} } yyVAL.union = yyLOCAL - case 931: + case 930: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4935 +//line sql.y:4933 { yySLICE := (*TableExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableExprUnion()) } - case 934: + case 933: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4945 +//line sql.y:4943 { yyLOCAL = yyDollar[1].aliasedTableNameUnion() } yyVAL.union = yyLOCAL - case 935: + case 934: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4949 +//line sql.y:4947 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].derivedTableUnion(), As: yyDollar[3].identifierCS, Columns: yyDollar[4].columnsUnion()} } yyVAL.union = yyLOCAL - case 936: + case 935: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4953 +//line sql.y:4951 { yyLOCAL = &ParenTableExpr{Exprs: yyDollar[2].tableExprsUnion()} } yyVAL.union = yyLOCAL - case 937: + case 936: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4957 +//line sql.y:4955 { yyLOCAL = yyDollar[1].tableExprUnion() } yyVAL.union = yyLOCAL - case 938: + case 937: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:4963 +//line sql.y:4961 { yyLOCAL = &DerivedTable{Lateral: false, Select: yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 939: + case 938: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:4967 +//line sql.y:4965 { yyLOCAL = &DerivedTable{Lateral: true, Select: yyDollar[2].selStmtUnion()} } yyVAL.union = yyLOCAL - case 940: + case 939: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:4973 +//line sql.y:4971 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].identifierCS, Hints: yyDollar[3].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 941: + case 940: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:4977 +//line sql.y:4975 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitionsUnion(), As: yyDollar[6].identifierCS, Hints: yyDollar[7].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 942: + case 941: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:4982 +//line sql.y:4980 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 943: + case 942: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:4986 +//line sql.y:4984 { yyLOCAL = yyDollar[2].columnsUnion() } yyVAL.union = yyLOCAL - case 944: + case 943: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:4991 +//line sql.y:4989 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 945: + case 944: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4995 +//line sql.y:4993 { yyLOCAL = yyDollar[1].columnsUnion() } yyVAL.union = yyLOCAL - case 946: + case 945: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:5001 +//line sql.y:4999 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 947: + case 946: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5005 +//line sql.y:5003 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 948: + case 947: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*Variable -//line sql.y:5011 +//line sql.y:5009 { yyLOCAL = []*Variable{yyDollar[1].variableUnion()} } yyVAL.union = yyLOCAL - case 949: + case 948: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5015 +//line sql.y:5013 { yySLICE := (*[]*Variable)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].variableUnion()) } - case 950: + case 949: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:5021 +//line sql.y:5019 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 951: + case 950: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:5025 +//line sql.y:5023 { yyLOCAL = Columns{NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 952: + case 951: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5029 +//line sql.y:5027 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 953: + case 952: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5033 +//line sql.y:5031 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, NewIdentifierCI(string(yyDollar[3].str))) } - case 954: + case 953: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Partitions -//line sql.y:5039 +//line sql.y:5037 { yyLOCAL = Partitions{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 955: + case 954: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5043 +//line sql.y:5041 { yySLICE := (*Partitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 956: + case 955: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5056 +//line sql.y:5054 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 957: + case 956: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5060 +//line sql.y:5058 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 958: + case 957: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5064 +//line sql.y:5062 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 959: + case 958: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5068 +//line sql.y:5066 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion()} } yyVAL.union = yyLOCAL - case 960: + case 959: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5074 +//line sql.y:5072 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 961: + case 960: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:5076 +//line sql.y:5074 { yyVAL.joinCondition = &JoinCondition{Using: yyDollar[3].columnsUnion()} } - case 962: + case 961: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5080 +//line sql.y:5078 { yyVAL.joinCondition = &JoinCondition{} } - case 963: + case 962: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5082 +//line sql.y:5080 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 964: + case 963: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5086 +//line sql.y:5084 { yyVAL.joinCondition = &JoinCondition{} } - case 965: + case 964: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5088 +//line sql.y:5086 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 966: + case 965: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5091 +//line sql.y:5089 { yyVAL.empty = struct{}{} } - case 967: + case 966: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5093 +//line sql.y:5091 { yyVAL.empty = struct{}{} } - case 968: + case 967: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5096 +//line sql.y:5094 { yyVAL.identifierCS = NewIdentifierCS("") } - case 969: + case 968: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5100 +//line sql.y:5098 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 970: + case 969: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5104 +//line sql.y:5102 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 972: + case 971: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5111 +//line sql.y:5109 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 973: + case 972: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:5117 +//line sql.y:5115 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 974: + case 973: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5121 +//line sql.y:5119 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 975: + case 974: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5125 +//line sql.y:5123 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 976: + case 975: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:5131 +//line sql.y:5129 { yyLOCAL = StraightJoinType } yyVAL.union = yyLOCAL - case 977: + case 976: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5137 +//line sql.y:5135 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 978: + case 977: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:5141 +//line sql.y:5139 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 979: + case 978: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5145 +//line sql.y:5143 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 980: + case 979: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:5149 +//line sql.y:5147 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 981: + case 980: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5155 +//line sql.y:5153 { yyLOCAL = NaturalJoinType } yyVAL.union = yyLOCAL - case 982: + case 981: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5159 +//line sql.y:5157 { if yyDollar[2].joinTypeUnion() == LeftJoinType { yyLOCAL = NaturalLeftJoinType @@ -17308,461 +17355,469 @@ yydefault: } } yyVAL.union = yyLOCAL - case 983: + case 982: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5169 +//line sql.y:5167 { yyVAL.tableName = yyDollar[2].tableName } - case 984: + case 983: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5173 +//line sql.y:5171 { yyVAL.tableName = yyDollar[1].tableName } - case 985: + case 984: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5179 +//line sql.y:5177 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 986: + case 985: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5183 +//line sql.y:5181 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS} } - case 987: + case 986: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5189 +//line sql.y:5187 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 988: + case 987: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5194 +//line sql.y:5192 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 989: + case 988: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5198 +//line sql.y:5196 { yyLOCAL = yyDollar[1].indexHintsUnion() } yyVAL.union = yyLOCAL - case 990: + case 989: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5204 +//line sql.y:5202 { yyLOCAL = IndexHints{yyDollar[1].indexHintUnion()} } yyVAL.union = yyLOCAL - case 991: + case 990: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5208 +//line sql.y:5206 { yySLICE := (*IndexHints)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].indexHintUnion()) } - case 992: + case 991: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5214 +//line sql.y:5212 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 993: + case 992: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5218 +//line sql.y:5216 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion()} } yyVAL.union = yyLOCAL - case 994: + case 993: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5222 +//line sql.y:5220 { yyLOCAL = &IndexHint{Type: IgnoreOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 995: + case 994: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5226 +//line sql.y:5224 { yyLOCAL = &IndexHint{Type: ForceOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL + case 995: + yyDollar = yyS[yypt-5 : yypt+1] + var yyLOCAL *IndexHint +//line sql.y:5228 + { + yyLOCAL = &IndexHint{Type: UseVindexOp, Indexes: yyDollar[4].columnsUnion()} + } + yyVAL.union = yyLOCAL case 996: + yyDollar = yyS[yypt-5 : yypt+1] + var yyLOCAL *IndexHint +//line sql.y:5232 + { + yyLOCAL = &IndexHint{Type: IgnoreVindexOp, Indexes: yyDollar[4].columnsUnion()} + } + yyVAL.union = yyLOCAL + case 997: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5231 +//line sql.y:5237 { yyLOCAL = NoForType } yyVAL.union = yyLOCAL - case 997: + case 998: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5235 +//line sql.y:5241 { yyLOCAL = JoinForType } yyVAL.union = yyLOCAL - case 998: + case 999: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5239 +//line sql.y:5245 { yyLOCAL = OrderByForType } yyVAL.union = yyLOCAL - case 999: + case 1000: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5243 +//line sql.y:5249 { yyLOCAL = GroupByForType } yyVAL.union = yyLOCAL - case 1000: + case 1001: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:5249 +//line sql.y:5255 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1001: + case 1002: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5253 +//line sql.y:5259 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1002: + case 1003: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5260 +//line sql.y:5266 { yyLOCAL = &OrExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1003: + case 1004: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5264 +//line sql.y:5270 { yyLOCAL = &XorExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1004: + case 1005: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5268 +//line sql.y:5274 { yyLOCAL = &AndExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1005: + case 1006: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5272 +//line sql.y:5278 { yyLOCAL = &NotExpr{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1006: + case 1007: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5276 +//line sql.y:5282 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].isExprOperatorUnion()} } yyVAL.union = yyLOCAL - case 1007: + case 1008: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5280 +//line sql.y:5286 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1008: + case 1009: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5284 +//line sql.y:5290 { yyLOCAL = &AssignmentExpr{Left: yyDollar[1].variableUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1009: + case 1010: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5288 +//line sql.y:5294 { yyLOCAL = &MemberOfExpr{Value: yyDollar[1].exprUnion(), JSONArr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1010: + case 1011: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5294 +//line sql.y:5300 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNullOp} } yyVAL.union = yyLOCAL - case 1011: + case 1012: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5298 +//line sql.y:5304 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNotNullOp} } yyVAL.union = yyLOCAL - case 1012: + case 1013: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5302 +//line sql.y:5308 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: yyDollar[2].comparisonExprOperatorUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1013: + case 1014: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5306 +//line sql.y:5312 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1014: + case 1015: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5312 +//line sql.y:5318 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: InOp, Right: yyDollar[3].colTupleUnion()} } yyVAL.union = yyLOCAL - case 1015: + case 1016: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5316 +//line sql.y:5322 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotInOp, Right: yyDollar[4].colTupleUnion()} } yyVAL.union = yyLOCAL - case 1016: + case 1017: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5320 +//line sql.y:5326 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: true, From: yyDollar[3].exprUnion(), To: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1017: + case 1018: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5324 +//line sql.y:5330 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: false, From: yyDollar[4].exprUnion(), To: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 1018: + case 1019: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5328 +//line sql.y:5334 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1019: + case 1020: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5332 +//line sql.y:5338 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1020: + case 1021: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5336 +//line sql.y:5342 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion(), Escape: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1021: + case 1022: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5340 +//line sql.y:5346 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion(), Escape: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 1022: + case 1023: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5344 +//line sql.y:5350 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: RegexpOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1023: + case 1024: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5348 +//line sql.y:5354 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotRegexpOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1024: + case 1025: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5352 +//line sql.y:5358 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1025: + case 1026: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5358 +//line sql.y:5364 { } - case 1026: + case 1027: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5361 +//line sql.y:5367 { } - case 1027: + case 1028: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5367 +//line sql.y:5373 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitOrOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1028: + case 1029: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5371 +//line sql.y:5377 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitAndOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1029: + case 1030: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5375 +//line sql.y:5381 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftLeftOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1030: + case 1031: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5379 +//line sql.y:5385 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftRightOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1031: + case 1032: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5383 +//line sql.y:5389 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: PlusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1032: + case 1033: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5387 +//line sql.y:5393 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MinusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1033: + case 1034: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5391 +//line sql.y:5397 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprBinaryAdd, Date: yyDollar[1].exprUnion(), Unit: yyDollar[5].intervalTypeUnion(), Interval: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1034: + case 1035: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5395 +//line sql.y:5401 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprBinarySub, Date: yyDollar[1].exprUnion(), Unit: yyDollar[5].intervalTypeUnion(), Interval: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1035: + case 1036: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5399 +//line sql.y:5405 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MultOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1036: + case 1037: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5403 +//line sql.y:5409 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: DivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1037: + case 1038: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5407 +//line sql.y:5413 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1038: + case 1039: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5411 +//line sql.y:5417 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: IntDivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1039: + case 1040: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5415 +//line sql.y:5421 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1040: + case 1041: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5419 +//line sql.y:5425 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitXorOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1041: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL Expr -//line sql.y:5423 - { - yyLOCAL = yyDollar[1].exprUnion() - } - yyVAL.union = yyLOCAL case 1042: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr @@ -17774,7 +17829,7 @@ yydefault: case 1043: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5433 +//line sql.y:5435 { yyLOCAL = yyDollar[1].exprUnion() } @@ -17782,7 +17837,7 @@ yydefault: case 1044: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5437 +//line sql.y:5439 { yyLOCAL = yyDollar[1].exprUnion() } @@ -17790,135 +17845,143 @@ yydefault: case 1045: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5441 +//line sql.y:5443 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1046: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL Expr +//line sql.y:5447 + { + yyLOCAL = yyDollar[1].exprUnion() + } + yyVAL.union = yyLOCAL + case 1047: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5445 +//line sql.y:5451 { yyLOCAL = &CollateExpr{Expr: yyDollar[1].exprUnion(), Collation: yyDollar[3].str} } yyVAL.union = yyLOCAL - case 1047: + case 1048: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5449 +//line sql.y:5455 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1048: + case 1049: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5453 +//line sql.y:5459 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1049: + case 1050: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5457 +//line sql.y:5463 { yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL - case 1050: + case 1051: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5461 +//line sql.y:5467 { yyLOCAL = yyDollar[2].exprUnion() // TODO: do we really want to ignore unary '+' before any kind of literals? } yyVAL.union = yyLOCAL - case 1051: + case 1052: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5465 +//line sql.y:5471 { yyLOCAL = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1052: + case 1053: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5469 +//line sql.y:5475 { yyLOCAL = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1053: + case 1054: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5473 +//line sql.y:5479 { yyLOCAL = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1054: + case 1055: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5477 +//line sql.y:5483 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1055: + case 1056: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5481 +//line sql.y:5487 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1056: + case 1057: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5485 +//line sql.y:5491 { yyLOCAL = &ExistsExpr{Subquery: yyDollar[2].subqueryUnion()} } yyVAL.union = yyLOCAL - case 1057: + case 1058: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:5489 +//line sql.y:5495 { yyLOCAL = &MatchExpr{Columns: yyDollar[2].colNamesUnion(), Expr: yyDollar[5].exprUnion(), Option: yyDollar[6].matchExprOptionUnion()} } yyVAL.union = yyLOCAL - case 1058: + case 1059: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:5493 +//line sql.y:5499 { yyLOCAL = &CastExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion(), Array: yyDollar[6].booleanUnion()} } yyVAL.union = yyLOCAL - case 1059: + case 1060: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5497 +//line sql.y:5503 { yyLOCAL = &ConvertExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion()} } yyVAL.union = yyLOCAL - case 1060: + case 1061: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5501 +//line sql.y:5507 { yyLOCAL = &ConvertUsingExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].str} } yyVAL.union = yyLOCAL - case 1061: + case 1062: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5505 +//line sql.y:5511 { // From: https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html#operator_binary // To convert a string expression to a binary string, these constructs are equivalent: @@ -17927,3177 +17990,3177 @@ yydefault: yyLOCAL = &ConvertExpr{Expr: yyDollar[2].exprUnion(), Type: &ConvertType{Type: yyDollar[1].str}} } yyVAL.union = yyLOCAL - case 1062: + case 1063: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5513 +//line sql.y:5519 { yyLOCAL = &Default{ColName: yyDollar[2].str} } yyVAL.union = yyLOCAL - case 1063: + case 1064: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5517 +//line sql.y:5523 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprBinaryAddLeft, Date: yyDollar[5].exprUnion(), Unit: yyDollar[3].intervalTypeUnion(), Interval: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1064: + case 1065: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5521 +//line sql.y:5527 { yyLOCAL = &IntervalFuncExpr{Expr: yyDollar[3].exprUnion(), Exprs: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1065: + case 1066: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5525 +//line sql.y:5531 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: JSONExtractOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1066: + case 1067: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5529 +//line sql.y:5535 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: JSONUnquoteExtractOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1067: + case 1068: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5535 +//line sql.y:5541 { yyLOCAL = yyDollar[1].colNamesUnion() } yyVAL.union = yyLOCAL - case 1068: + case 1069: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5539 +//line sql.y:5545 { yyLOCAL = yyDollar[2].colNamesUnion() } yyVAL.union = yyLOCAL - case 1069: + case 1070: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5545 +//line sql.y:5551 { yyLOCAL = []*ColName{yyDollar[1].colNameUnion()} } yyVAL.union = yyLOCAL - case 1070: + case 1071: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5549 +//line sql.y:5555 { yySLICE := (*[]*ColName)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].colNameUnion()) } - case 1071: + case 1072: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5555 +//line sql.y:5561 { yyLOCAL = BothTrimType } yyVAL.union = yyLOCAL - case 1072: + case 1073: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5559 +//line sql.y:5565 { yyLOCAL = LeadingTrimType } yyVAL.union = yyLOCAL - case 1073: + case 1074: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5563 +//line sql.y:5569 { yyLOCAL = TrailingTrimType } yyVAL.union = yyLOCAL - case 1074: + case 1075: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FrameUnitType -//line sql.y:5569 +//line sql.y:5575 { yyLOCAL = FrameRowsType } yyVAL.union = yyLOCAL - case 1075: + case 1076: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FrameUnitType -//line sql.y:5573 +//line sql.y:5579 { yyLOCAL = FrameRangeType } yyVAL.union = yyLOCAL - case 1076: + case 1077: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5580 +//line sql.y:5586 { yyLOCAL = CumeDistExprType } yyVAL.union = yyLOCAL - case 1077: + case 1078: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5584 +//line sql.y:5590 { yyLOCAL = DenseRankExprType } yyVAL.union = yyLOCAL - case 1078: + case 1079: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5588 +//line sql.y:5594 { yyLOCAL = PercentRankExprType } yyVAL.union = yyLOCAL - case 1079: + case 1080: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5592 +//line sql.y:5598 { yyLOCAL = RankExprType } yyVAL.union = yyLOCAL - case 1080: + case 1081: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5596 +//line sql.y:5602 { yyLOCAL = RowNumberExprType } yyVAL.union = yyLOCAL - case 1081: + case 1082: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5602 +//line sql.y:5608 { yyLOCAL = &FramePoint{Type: CurrentRowType} } yyVAL.union = yyLOCAL - case 1082: + case 1083: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5606 +//line sql.y:5612 { yyLOCAL = &FramePoint{Type: UnboundedPrecedingType} } yyVAL.union = yyLOCAL - case 1083: + case 1084: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5610 +//line sql.y:5616 { yyLOCAL = &FramePoint{Type: UnboundedFollowingType} } yyVAL.union = yyLOCAL - case 1084: + case 1085: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5614 +//line sql.y:5620 { yyLOCAL = &FramePoint{Type: ExprPrecedingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1085: + case 1086: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5618 +//line sql.y:5624 { yyLOCAL = &FramePoint{Type: ExprPrecedingType, Expr: yyDollar[2].exprUnion(), Unit: yyDollar[3].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1086: + case 1087: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5622 +//line sql.y:5628 { yyLOCAL = &FramePoint{Type: ExprFollowingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1087: + case 1088: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5626 +//line sql.y:5632 { yyLOCAL = &FramePoint{Type: ExprFollowingType, Expr: yyDollar[2].exprUnion(), Unit: yyDollar[3].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1088: + case 1089: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5631 +//line sql.y:5637 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1089: + case 1090: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5635 +//line sql.y:5641 { yyLOCAL = yyDollar[1].frameClauseUnion() } yyVAL.union = yyLOCAL - case 1090: + case 1091: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5641 +//line sql.y:5647 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[2].framePointUnion()} } yyVAL.union = yyLOCAL - case 1091: + case 1092: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5645 +//line sql.y:5651 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[3].framePointUnion(), End: yyDollar[5].framePointUnion()} } yyVAL.union = yyLOCAL - case 1092: + case 1093: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:5650 +//line sql.y:5656 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1093: + case 1094: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Exprs -//line sql.y:5654 +//line sql.y:5660 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1094: + case 1095: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5659 +//line sql.y:5665 { } - case 1095: + case 1096: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5662 +//line sql.y:5668 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1096: + case 1097: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *WindowSpecification -//line sql.y:5668 +//line sql.y:5674 { yyLOCAL = &WindowSpecification{Name: yyDollar[1].identifierCI, PartitionClause: yyDollar[2].exprsUnion(), OrderClause: yyDollar[3].orderByUnion(), FrameClause: yyDollar[4].frameClauseUnion()} } yyVAL.union = yyLOCAL - case 1097: + case 1098: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5674 +//line sql.y:5680 { yyLOCAL = &OverClause{WindowSpec: yyDollar[3].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1098: + case 1099: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5678 +//line sql.y:5684 { yyLOCAL = &OverClause{WindowName: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 1099: + case 1100: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5683 +//line sql.y:5689 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1101: + case 1102: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5690 +//line sql.y:5696 { yyLOCAL = &NullTreatmentClause{yyDollar[1].nullTreatmentTypeUnion()} } yyVAL.union = yyLOCAL - case 1102: + case 1103: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5696 +//line sql.y:5702 { yyLOCAL = RespectNullsType } yyVAL.union = yyLOCAL - case 1103: + case 1104: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5700 +//line sql.y:5706 { yyLOCAL = IgnoreNullsType } yyVAL.union = yyLOCAL - case 1104: + case 1105: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5706 +//line sql.y:5712 { yyLOCAL = FirstValueExprType } yyVAL.union = yyLOCAL - case 1105: + case 1106: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5710 +//line sql.y:5716 { yyLOCAL = LastValueExprType } yyVAL.union = yyLOCAL - case 1106: + case 1107: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5716 +//line sql.y:5722 { yyLOCAL = FromFirstType } yyVAL.union = yyLOCAL - case 1107: + case 1108: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5720 +//line sql.y:5726 { yyLOCAL = FromLastType } yyVAL.union = yyLOCAL - case 1108: + case 1109: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5725 +//line sql.y:5731 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1110: + case 1111: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5732 +//line sql.y:5738 { yyLOCAL = &FromFirstLastClause{yyDollar[1].fromFirstLastTypeUnion()} } yyVAL.union = yyLOCAL - case 1111: + case 1112: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5738 +//line sql.y:5744 { yyLOCAL = LagExprType } yyVAL.union = yyLOCAL - case 1112: + case 1113: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5742 +//line sql.y:5748 { yyLOCAL = LeadExprType } yyVAL.union = yyLOCAL - case 1113: + case 1114: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *WindowDefinition -//line sql.y:5748 +//line sql.y:5754 { yyLOCAL = &WindowDefinition{Name: yyDollar[1].identifierCI, WindowSpec: yyDollar[4].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1114: + case 1115: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL WindowDefinitions -//line sql.y:5754 +//line sql.y:5760 { yyLOCAL = WindowDefinitions{yyDollar[1].windowDefinitionUnion()} } yyVAL.union = yyLOCAL - case 1115: + case 1116: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5758 +//line sql.y:5764 { yySLICE := (*WindowDefinitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].windowDefinitionUnion()) } - case 1116: + case 1117: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5764 +//line sql.y:5770 { yyVAL.str = "" } - case 1117: + case 1118: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5768 +//line sql.y:5774 { yyVAL.str = string(yyDollar[2].identifierCI.String()) } - case 1118: + case 1119: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5774 +//line sql.y:5780 { yyLOCAL = BoolVal(true) } yyVAL.union = yyLOCAL - case 1119: + case 1120: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5778 +//line sql.y:5784 { yyLOCAL = BoolVal(false) } yyVAL.union = yyLOCAL - case 1120: + case 1121: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5785 +//line sql.y:5791 { yyLOCAL = IsTrueOp } yyVAL.union = yyLOCAL - case 1121: + case 1122: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5789 +//line sql.y:5795 { yyLOCAL = IsNotTrueOp } yyVAL.union = yyLOCAL - case 1122: + case 1123: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5793 +//line sql.y:5799 { yyLOCAL = IsFalseOp } yyVAL.union = yyLOCAL - case 1123: + case 1124: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5797 +//line sql.y:5803 { yyLOCAL = IsNotFalseOp } yyVAL.union = yyLOCAL - case 1124: + case 1125: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5803 +//line sql.y:5809 { yyLOCAL = EqualOp } yyVAL.union = yyLOCAL - case 1125: + case 1126: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5807 +//line sql.y:5813 { yyLOCAL = LessThanOp } yyVAL.union = yyLOCAL - case 1126: + case 1127: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5811 +//line sql.y:5817 { yyLOCAL = GreaterThanOp } yyVAL.union = yyLOCAL - case 1127: + case 1128: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5815 +//line sql.y:5821 { yyLOCAL = LessEqualOp } yyVAL.union = yyLOCAL - case 1128: + case 1129: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5819 +//line sql.y:5825 { yyLOCAL = GreaterEqualOp } yyVAL.union = yyLOCAL - case 1129: + case 1130: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5823 +//line sql.y:5829 { yyLOCAL = NotEqualOp } yyVAL.union = yyLOCAL - case 1130: + case 1131: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5827 +//line sql.y:5833 { yyLOCAL = NullSafeEqualOp } yyVAL.union = yyLOCAL - case 1131: + case 1132: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5833 +//line sql.y:5839 { yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL - case 1132: + case 1133: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5837 +//line sql.y:5843 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1133: + case 1134: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5841 +//line sql.y:5847 { yyLOCAL = ListArg(yyDollar[1].str[2:]) markBindVariable(yylex, yyDollar[1].str[2:]) } yyVAL.union = yyLOCAL - case 1134: + case 1135: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Subquery -//line sql.y:5848 +//line sql.y:5854 { yyLOCAL = &Subquery{yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1135: + case 1136: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:5854 +//line sql.y:5860 { yyLOCAL = Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1136: + case 1137: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5858 +//line sql.y:5864 { yySLICE := (*Exprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].exprUnion()) } - case 1137: + case 1138: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5868 +//line sql.y:5874 { yyLOCAL = &FuncExpr{Name: yyDollar[1].identifierCI, Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1138: + case 1139: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5872 +//line sql.y:5878 { yyLOCAL = &FuncExpr{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCI, Exprs: yyDollar[5].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1139: + case 1140: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5882 +//line sql.y:5888 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("left"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1140: + case 1141: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5886 +//line sql.y:5892 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("right"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1141: + case 1142: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5890 +//line sql.y:5896 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1142: + case 1143: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5894 +//line sql.y:5900 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1143: + case 1144: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5898 +//line sql.y:5904 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1144: + case 1145: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5902 +//line sql.y:5908 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1145: + case 1146: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5906 +//line sql.y:5912 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1146: + case 1147: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5910 +//line sql.y:5916 { yyLOCAL = &CaseExpr{Expr: yyDollar[2].exprUnion(), Whens: yyDollar[3].whensUnion(), Else: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1147: + case 1148: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5914 +//line sql.y:5920 { yyLOCAL = &ValuesFuncExpr{Name: yyDollar[3].colNameUnion()} } yyVAL.union = yyLOCAL - case 1148: + case 1149: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:5918 +//line sql.y:5924 { yyLOCAL = &InsertExpr{Str: yyDollar[3].exprUnion(), Pos: yyDollar[5].exprUnion(), Len: yyDollar[7].exprUnion(), NewStr: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1149: + case 1150: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5922 +//line sql.y:5928 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1150: + case 1151: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5933 +//line sql.y:5939 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("utc_date")} } yyVAL.union = yyLOCAL - case 1151: + case 1152: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5937 +//line sql.y:5943 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1152: + case 1153: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5943 +//line sql.y:5949 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("current_date")} } yyVAL.union = yyLOCAL - case 1153: + case 1154: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5947 +//line sql.y:5953 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("curdate")} } yyVAL.union = yyLOCAL - case 1154: + case 1155: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5951 +//line sql.y:5957 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("utc_time"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL - case 1155: + case 1156: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5956 +//line sql.y:5962 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("curtime"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL - case 1156: + case 1157: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5961 +//line sql.y:5967 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("current_time"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL - case 1157: + case 1158: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5965 +//line sql.y:5971 { yyLOCAL = &CountStar{} } yyVAL.union = yyLOCAL - case 1158: + case 1159: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5969 +//line sql.y:5975 { yyLOCAL = &Count{Distinct: yyDollar[3].booleanUnion(), Args: yyDollar[4].exprsUnion()} } yyVAL.union = yyLOCAL - case 1159: + case 1160: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5973 +//line sql.y:5979 { yyLOCAL = &Max{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1160: + case 1161: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5977 +//line sql.y:5983 { yyLOCAL = &Min{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1161: + case 1162: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5981 +//line sql.y:5987 { yyLOCAL = &Sum{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1162: + case 1163: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5985 +//line sql.y:5991 { yyLOCAL = &Avg{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1163: + case 1164: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5989 +//line sql.y:5995 { yyLOCAL = &BitAnd{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1164: + case 1165: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5993 +//line sql.y:5999 { yyLOCAL = &BitOr{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1165: + case 1166: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5997 +//line sql.y:6003 { yyLOCAL = &BitXor{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1166: + case 1167: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6001 +//line sql.y:6007 { yyLOCAL = &Std{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1167: + case 1168: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6005 +//line sql.y:6011 { yyLOCAL = &StdDev{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1168: + case 1169: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6009 +//line sql.y:6015 { yyLOCAL = &StdPop{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1169: + case 1170: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6013 +//line sql.y:6019 { yyLOCAL = &StdSamp{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1170: + case 1171: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6017 +//line sql.y:6023 { yyLOCAL = &VarPop{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1171: + case 1172: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6021 +//line sql.y:6027 { yyLOCAL = &VarSamp{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1172: + case 1173: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6025 +//line sql.y:6031 { yyLOCAL = &Variance{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1173: + case 1174: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6029 +//line sql.y:6035 { yyLOCAL = &GroupConcatExpr{Distinct: yyDollar[3].booleanUnion(), Exprs: yyDollar[4].exprsUnion(), OrderBy: yyDollar[5].orderByUnion(), Separator: yyDollar[6].str, Limit: yyDollar[7].limitUnion()} } yyVAL.union = yyLOCAL - case 1174: + case 1175: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6033 +//line sql.y:6039 { yyLOCAL = &AnyValue{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1175: + case 1176: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6037 +//line sql.y:6043 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprTimestampadd, Date: yyDollar[7].exprUnion(), Interval: yyDollar[5].exprUnion(), Unit: yyDollar[3].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1176: + case 1177: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6041 +//line sql.y:6047 { yyLOCAL = &TimestampDiffExpr{Unit: yyDollar[3].intervalTypeUnion(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1177: + case 1178: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6045 +//line sql.y:6051 { yyLOCAL = &ExtractFuncExpr{IntervalType: yyDollar[3].intervalTypeUnion(), Expr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1178: + case 1179: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6049 +//line sql.y:6055 { yyLOCAL = &WeightStringFuncExpr{Expr: yyDollar[3].exprUnion(), As: yyDollar[4].convertTypeUnion()} } yyVAL.union = yyLOCAL - case 1179: + case 1180: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6053 +//line sql.y:6059 { yyLOCAL = &JSONPrettyExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1180: + case 1181: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6057 +//line sql.y:6063 { yyLOCAL = &JSONStorageFreeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1181: + case 1182: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6061 +//line sql.y:6067 { yyLOCAL = &JSONStorageSizeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1182: + case 1183: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6065 +//line sql.y:6071 { yyLOCAL = &TrimFuncExpr{TrimFuncType: LTrimType, Type: LeadingTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1183: + case 1184: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6069 +//line sql.y:6075 { yyLOCAL = &TrimFuncExpr{TrimFuncType: RTrimType, Type: TrailingTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1184: + case 1185: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:6073 +//line sql.y:6079 { yyLOCAL = &TrimFuncExpr{Type: yyDollar[3].trimTypeUnion(), TrimArg: yyDollar[4].exprUnion(), StringArg: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 1185: + case 1186: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6077 +//line sql.y:6083 { yyLOCAL = &TrimFuncExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1186: + case 1187: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6081 +//line sql.y:6087 { yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1187: + case 1188: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6085 +//line sql.y:6091 { yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion(), Charset: yyDollar[5].str} } yyVAL.union = yyLOCAL - case 1188: + case 1189: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6089 +//line sql.y:6095 { yyLOCAL = &TrimFuncExpr{TrimArg: yyDollar[3].exprUnion(), StringArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1189: + case 1190: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6093 +//line sql.y:6099 { yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1190: + case 1191: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6097 +//line sql.y:6103 { yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion(), Pos: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1191: + case 1192: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6101 +//line sql.y:6107 { yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1192: + case 1193: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6105 +//line sql.y:6111 { yyLOCAL = &LockingFunc{Type: GetLock, Name: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1193: + case 1194: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6109 +//line sql.y:6115 { yyLOCAL = &LockingFunc{Type: IsFreeLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1194: + case 1195: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6113 +//line sql.y:6119 { yyLOCAL = &LockingFunc{Type: IsUsedLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1195: + case 1196: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6117 +//line sql.y:6123 { yyLOCAL = &LockingFunc{Type: ReleaseAllLocks} } yyVAL.union = yyLOCAL - case 1196: + case 1197: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6121 +//line sql.y:6127 { yyLOCAL = &LockingFunc{Type: ReleaseLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1197: + case 1198: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6125 +//line sql.y:6131 { yyLOCAL = &JSONSchemaValidFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1198: + case 1199: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6129 +//line sql.y:6135 { yyLOCAL = &JSONSchemaValidationReportFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1199: + case 1200: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6133 +//line sql.y:6139 { yyLOCAL = &JSONArrayExpr{Params: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1200: + case 1201: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6137 +//line sql.y:6143 { yyLOCAL = &GeomFormatExpr{FormatType: BinaryFormat, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1201: + case 1202: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6141 +//line sql.y:6147 { yyLOCAL = &GeomFormatExpr{FormatType: BinaryFormat, Geom: yyDollar[3].exprUnion(), AxisOrderOpt: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1202: + case 1203: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6145 +//line sql.y:6151 { yyLOCAL = &GeomFormatExpr{FormatType: TextFormat, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1203: + case 1204: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6149 +//line sql.y:6155 { yyLOCAL = &GeomFormatExpr{FormatType: TextFormat, Geom: yyDollar[3].exprUnion(), AxisOrderOpt: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1204: + case 1205: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6153 +//line sql.y:6159 { yyLOCAL = &GeomPropertyFuncExpr{Property: IsEmpty, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1205: + case 1206: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6157 +//line sql.y:6163 { yyLOCAL = &GeomPropertyFuncExpr{Property: IsSimple, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1206: + case 1207: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6161 +//line sql.y:6167 { yyLOCAL = &GeomPropertyFuncExpr{Property: Dimension, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1207: + case 1208: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6165 +//line sql.y:6171 { yyLOCAL = &GeomPropertyFuncExpr{Property: Envelope, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1208: + case 1209: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6169 +//line sql.y:6175 { yyLOCAL = &GeomPropertyFuncExpr{Property: GeometryType, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1209: + case 1210: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6173 +//line sql.y:6179 { yyLOCAL = &PointPropertyFuncExpr{Property: Latitude, Point: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1210: + case 1211: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6177 +//line sql.y:6183 { yyLOCAL = &PointPropertyFuncExpr{Property: Latitude, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1211: + case 1212: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6181 +//line sql.y:6187 { yyLOCAL = &PointPropertyFuncExpr{Property: Longitude, Point: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1212: + case 1213: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6185 +//line sql.y:6191 { yyLOCAL = &PointPropertyFuncExpr{Property: Longitude, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1213: + case 1214: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6189 +//line sql.y:6195 { yyLOCAL = &LinestrPropertyFuncExpr{Property: EndPoint, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1214: + case 1215: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6193 +//line sql.y:6199 { yyLOCAL = &LinestrPropertyFuncExpr{Property: IsClosed, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1215: + case 1216: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6197 +//line sql.y:6203 { yyLOCAL = &LinestrPropertyFuncExpr{Property: Length, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1216: + case 1217: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6201 +//line sql.y:6207 { yyLOCAL = &LinestrPropertyFuncExpr{Property: Length, Linestring: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1217: + case 1218: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6205 +//line sql.y:6211 { yyLOCAL = &LinestrPropertyFuncExpr{Property: NumPoints, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1218: + case 1219: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6209 +//line sql.y:6215 { yyLOCAL = &LinestrPropertyFuncExpr{Property: PointN, Linestring: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1219: + case 1220: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6213 +//line sql.y:6219 { yyLOCAL = &LinestrPropertyFuncExpr{Property: StartPoint, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1220: + case 1221: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6217 +//line sql.y:6223 { yyLOCAL = &PointPropertyFuncExpr{Property: XCordinate, Point: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1221: + case 1222: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6221 +//line sql.y:6227 { yyLOCAL = &PointPropertyFuncExpr{Property: XCordinate, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1222: + case 1223: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6225 +//line sql.y:6231 { yyLOCAL = &PointPropertyFuncExpr{Property: YCordinate, Point: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1223: + case 1224: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6229 +//line sql.y:6235 { yyLOCAL = &PointPropertyFuncExpr{Property: YCordinate, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1224: + case 1225: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6233 +//line sql.y:6239 { yyLOCAL = &GeomFromTextExpr{Type: GeometryFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1225: + case 1226: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6237 +//line sql.y:6243 { yyLOCAL = &GeomFromTextExpr{Type: GeometryFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1226: + case 1227: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6241 +//line sql.y:6247 { yyLOCAL = &GeomFromTextExpr{Type: GeometryFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1227: + case 1228: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6245 +//line sql.y:6251 { yyLOCAL = &GeomFromTextExpr{Type: GeometryCollectionFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1228: + case 1229: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6249 +//line sql.y:6255 { yyLOCAL = &GeomFromTextExpr{Type: GeometryCollectionFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1229: + case 1230: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6253 +//line sql.y:6259 { yyLOCAL = &GeomFromTextExpr{Type: GeometryCollectionFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1230: + case 1231: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6257 +//line sql.y:6263 { yyLOCAL = &GeomFromTextExpr{Type: LineStringFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1231: + case 1232: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6261 +//line sql.y:6267 { yyLOCAL = &GeomFromTextExpr{Type: LineStringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1232: + case 1233: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6265 +//line sql.y:6271 { yyLOCAL = &GeomFromTextExpr{Type: LineStringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1233: + case 1234: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6269 +//line sql.y:6275 { yyLOCAL = &GeomFromTextExpr{Type: MultiLinestringFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1234: + case 1235: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6273 +//line sql.y:6279 { yyLOCAL = &GeomFromTextExpr{Type: MultiLinestringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1235: + case 1236: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6277 +//line sql.y:6283 { yyLOCAL = &GeomFromTextExpr{Type: MultiLinestringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1236: + case 1237: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6281 +//line sql.y:6287 { yyLOCAL = &GeomFromTextExpr{Type: MultiPointFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1237: + case 1238: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6285 +//line sql.y:6291 { yyLOCAL = &GeomFromTextExpr{Type: MultiPointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1238: + case 1239: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6289 +//line sql.y:6295 { yyLOCAL = &GeomFromTextExpr{Type: MultiPointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1239: + case 1240: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6293 +//line sql.y:6299 { yyLOCAL = &GeomFromTextExpr{Type: MultiPolygonFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1240: + case 1241: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6297 +//line sql.y:6303 { yyLOCAL = &GeomFromTextExpr{Type: MultiPolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1241: + case 1242: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6301 +//line sql.y:6307 { yyLOCAL = &GeomFromTextExpr{Type: MultiPolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1242: + case 1243: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6305 +//line sql.y:6311 { yyLOCAL = &GeomFromTextExpr{Type: PointFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1243: + case 1244: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6309 +//line sql.y:6315 { yyLOCAL = &GeomFromTextExpr{Type: PointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1244: + case 1245: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6313 +//line sql.y:6319 { yyLOCAL = &GeomFromTextExpr{Type: PointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1245: + case 1246: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6317 +//line sql.y:6323 { yyLOCAL = &GeomFromTextExpr{Type: PolygonFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1246: + case 1247: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6321 +//line sql.y:6327 { yyLOCAL = &GeomFromTextExpr{Type: PolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1247: + case 1248: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6325 +//line sql.y:6331 { yyLOCAL = &GeomFromTextExpr{Type: PolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1248: + case 1249: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6329 +//line sql.y:6335 { yyLOCAL = &GeomFromWKBExpr{Type: GeometryFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1249: + case 1250: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6333 +//line sql.y:6339 { yyLOCAL = &GeomFromWKBExpr{Type: GeometryFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1250: + case 1251: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6337 +//line sql.y:6343 { yyLOCAL = &GeomFromWKBExpr{Type: GeometryFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1251: + case 1252: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6341 +//line sql.y:6347 { yyLOCAL = &GeomFromWKBExpr{Type: GeometryCollectionFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1252: + case 1253: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6345 +//line sql.y:6351 { yyLOCAL = &GeomFromWKBExpr{Type: GeometryCollectionFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1253: + case 1254: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6349 +//line sql.y:6355 { yyLOCAL = &GeomFromWKBExpr{Type: GeometryCollectionFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1254: + case 1255: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6353 +//line sql.y:6359 { yyLOCAL = &GeomFromWKBExpr{Type: LineStringFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1255: + case 1256: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6357 +//line sql.y:6363 { yyLOCAL = &GeomFromWKBExpr{Type: LineStringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1256: + case 1257: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6361 +//line sql.y:6367 { yyLOCAL = &GeomFromWKBExpr{Type: LineStringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1257: + case 1258: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6365 +//line sql.y:6371 { yyLOCAL = &GeomFromWKBExpr{Type: MultiLinestringFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1258: + case 1259: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6369 +//line sql.y:6375 { yyLOCAL = &GeomFromWKBExpr{Type: MultiLinestringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1259: + case 1260: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6373 +//line sql.y:6379 { yyLOCAL = &GeomFromWKBExpr{Type: MultiLinestringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1260: + case 1261: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6377 +//line sql.y:6383 { yyLOCAL = &GeomFromWKBExpr{Type: MultiPointFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1261: + case 1262: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6381 +//line sql.y:6387 { yyLOCAL = &GeomFromWKBExpr{Type: MultiPointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1262: + case 1263: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6385 +//line sql.y:6391 { yyLOCAL = &GeomFromWKBExpr{Type: MultiPointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1263: + case 1264: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6389 +//line sql.y:6395 { yyLOCAL = &GeomFromWKBExpr{Type: MultiPolygonFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1264: + case 1265: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6393 +//line sql.y:6399 { yyLOCAL = &GeomFromWKBExpr{Type: MultiPolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1265: + case 1266: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6397 +//line sql.y:6403 { yyLOCAL = &GeomFromWKBExpr{Type: MultiPolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1266: + case 1267: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6401 +//line sql.y:6407 { yyLOCAL = &GeomFromWKBExpr{Type: PointFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1267: + case 1268: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6405 +//line sql.y:6411 { yyLOCAL = &GeomFromWKBExpr{Type: PointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1268: + case 1269: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6409 +//line sql.y:6415 { yyLOCAL = &GeomFromWKBExpr{Type: PointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1269: + case 1270: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6413 +//line sql.y:6419 { yyLOCAL = &GeomFromWKBExpr{Type: PolygonFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1270: + case 1271: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6417 +//line sql.y:6423 { yyLOCAL = &GeomFromWKBExpr{Type: PolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1271: + case 1272: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6421 +//line sql.y:6427 { yyLOCAL = &GeomFromWKBExpr{Type: PolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1272: + case 1273: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6425 +//line sql.y:6431 { yyLOCAL = &PolygonPropertyFuncExpr{Property: Area, Polygon: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1273: + case 1274: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6429 +//line sql.y:6435 { yyLOCAL = &PolygonPropertyFuncExpr{Property: Centroid, Polygon: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1274: + case 1275: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6433 +//line sql.y:6439 { yyLOCAL = &PolygonPropertyFuncExpr{Property: ExteriorRing, Polygon: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1275: + case 1276: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6437 +//line sql.y:6443 { yyLOCAL = &PolygonPropertyFuncExpr{Property: InteriorRingN, Polygon: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1276: + case 1277: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6441 +//line sql.y:6447 { yyLOCAL = &PolygonPropertyFuncExpr{Property: NumInteriorRings, Polygon: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1277: + case 1278: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6445 +//line sql.y:6451 { yyLOCAL = &GeomCollPropertyFuncExpr{Property: GeometryN, GeomColl: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1278: + case 1279: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6449 +//line sql.y:6455 { yyLOCAL = &GeomCollPropertyFuncExpr{Property: NumGeometries, GeomColl: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1279: + case 1280: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6453 +//line sql.y:6459 { yyLOCAL = &GeoHashFromLatLongExpr{Longitude: yyDollar[3].exprUnion(), Latitude: yyDollar[5].exprUnion(), MaxLength: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1280: + case 1281: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6457 +//line sql.y:6463 { yyLOCAL = &GeoHashFromPointExpr{Point: yyDollar[3].exprUnion(), MaxLength: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1281: + case 1282: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6461 +//line sql.y:6467 { yyLOCAL = &GeomFromGeoHashExpr{GeomType: LatitudeFromHash, GeoHash: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1282: + case 1283: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6465 +//line sql.y:6471 { yyLOCAL = &GeomFromGeoHashExpr{GeomType: LongitudeFromHash, GeoHash: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1283: + case 1284: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6469 +//line sql.y:6475 { yyLOCAL = &GeomFromGeoHashExpr{GeomType: PointFromHash, GeoHash: yyDollar[3].exprUnion(), SridOpt: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1284: + case 1285: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6473 +//line sql.y:6479 { yyLOCAL = &GeomFromGeoJSONExpr{GeoJSON: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1285: + case 1286: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6477 +//line sql.y:6483 { yyLOCAL = &GeomFromGeoJSONExpr{GeoJSON: yyDollar[3].exprUnion(), HigherDimHandlerOpt: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1286: + case 1287: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6481 +//line sql.y:6487 { yyLOCAL = &GeomFromGeoJSONExpr{GeoJSON: yyDollar[3].exprUnion(), HigherDimHandlerOpt: yyDollar[5].exprUnion(), Srid: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1287: + case 1288: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6485 +//line sql.y:6491 { yyLOCAL = &GeoJSONFromGeomExpr{Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1288: + case 1289: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6489 +//line sql.y:6495 { yyLOCAL = &GeoJSONFromGeomExpr{Geom: yyDollar[3].exprUnion(), MaxDecimalDigits: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1289: + case 1290: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6493 +//line sql.y:6499 { yyLOCAL = &GeoJSONFromGeomExpr{Geom: yyDollar[3].exprUnion(), MaxDecimalDigits: yyDollar[5].exprUnion(), Bitmask: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1290: + case 1291: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6497 +//line sql.y:6503 { yyLOCAL = &JSONObjectExpr{Params: yyDollar[3].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1291: + case 1292: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6501 +//line sql.y:6507 { yyLOCAL = &JSONQuoteExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1292: + case 1293: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6505 +//line sql.y:6511 { yyLOCAL = &JSONContainsExpr{Target: yyDollar[3].exprUnion(), Candidate: yyDollar[5].exprsUnion()[0], PathList: yyDollar[5].exprsUnion()[1:]} } yyVAL.union = yyLOCAL - case 1293: + case 1294: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6509 +//line sql.y:6515 { yyLOCAL = &JSONContainsPathExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), PathList: yyDollar[7].exprsUnion()} } yyVAL.union = yyLOCAL - case 1294: + case 1295: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6513 +//line sql.y:6519 { yyLOCAL = &JSONExtractExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1295: + case 1296: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6517 +//line sql.y:6523 { yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1296: + case 1297: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6521 +//line sql.y:6527 { yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1297: + case 1298: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6525 +//line sql.y:6531 { yyLOCAL = &JSONOverlapsExpr{JSONDoc1: yyDollar[3].exprUnion(), JSONDoc2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1298: + case 1299: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6529 +//line sql.y:6535 { yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1299: + case 1300: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6533 +//line sql.y:6539 { yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion(), EscapeChar: yyDollar[9].exprsUnion()[0], PathList: yyDollar[9].exprsUnion()[1:]} } yyVAL.union = yyLOCAL - case 1300: + case 1301: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:6537 +//line sql.y:6543 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion()} } yyVAL.union = yyLOCAL - case 1301: + case 1302: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6541 +//line sql.y:6547 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL - case 1302: + case 1303: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6545 +//line sql.y:6551 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL - case 1303: + case 1304: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:6549 +//line sql.y:6555 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion(), ErrorOnResponse: yyDollar[8].jtOnResponseUnion()} } yyVAL.union = yyLOCAL - case 1304: + case 1305: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6553 +//line sql.y:6559 { yyLOCAL = &JSONAttributesExpr{Type: DepthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1305: + case 1306: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6557 +//line sql.y:6563 { yyLOCAL = &JSONAttributesExpr{Type: ValidAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1306: + case 1307: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6561 +//line sql.y:6567 { yyLOCAL = &JSONAttributesExpr{Type: TypeAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1307: + case 1308: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6565 +//line sql.y:6571 { yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1308: + case 1309: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6569 +//line sql.y:6575 { yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1309: + case 1310: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6573 +//line sql.y:6579 { yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayAppendType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1310: + case 1311: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6577 +//line sql.y:6583 { yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1311: + case 1312: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6581 +//line sql.y:6587 { yyLOCAL = &JSONValueModifierExpr{Type: JSONInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1312: + case 1313: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6585 +//line sql.y:6591 { yyLOCAL = &JSONValueModifierExpr{Type: JSONReplaceType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1313: + case 1314: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6589 +//line sql.y:6595 { yyLOCAL = &JSONValueModifierExpr{Type: JSONSetType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1314: + case 1315: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6593 +//line sql.y:6599 { yyLOCAL = &JSONValueMergeExpr{Type: JSONMergeType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1315: + case 1316: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6597 +//line sql.y:6603 { yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePatchType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1316: + case 1317: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6601 +//line sql.y:6607 { yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePreserveType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1317: + case 1318: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6605 +//line sql.y:6611 { yyLOCAL = &JSONRemoveExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1318: + case 1319: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6609 +//line sql.y:6615 { yyLOCAL = &JSONUnquoteExpr{JSONValue: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1319: + case 1320: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6613 +//line sql.y:6619 { yyLOCAL = &MultiPolygonExpr{PolygonParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1320: + case 1321: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6617 +//line sql.y:6623 { yyLOCAL = &MultiPointExpr{PointParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1321: + case 1322: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6621 +//line sql.y:6627 { yyLOCAL = &MultiLinestringExpr{LinestringParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1322: + case 1323: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6625 +//line sql.y:6631 { yyLOCAL = &PolygonExpr{LinestringParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1323: + case 1324: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6629 +//line sql.y:6635 { yyLOCAL = &LineStringExpr{PointParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1324: + case 1325: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6633 +//line sql.y:6639 { yyLOCAL = &PointExpr{XCordinate: yyDollar[3].exprUnion(), YCordinate: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1325: + case 1326: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6637 +//line sql.y:6643 { yyLOCAL = &ArgumentLessWindowExpr{Type: yyDollar[1].argumentLessWindowExprTypeUnion(), OverClause: yyDollar[4].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1326: + case 1327: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6641 +//line sql.y:6647 { yyLOCAL = &FirstOrLastValueExpr{Type: yyDollar[1].firstOrLastValueExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1327: + case 1328: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6645 +//line sql.y:6651 { yyLOCAL = &NtileExpr{N: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1328: + case 1329: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:6649 +//line sql.y:6655 { yyLOCAL = &NTHValueExpr{Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), FromFirstLastClause: yyDollar[7].fromFirstLastClauseUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1329: + case 1330: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6653 +//line sql.y:6659 { yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1330: + case 1331: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:6657 +//line sql.y:6663 { yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), Default: yyDollar[6].exprUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1331: + case 1332: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6661 +//line sql.y:6667 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprAdddate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1332: + case 1333: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6665 +//line sql.y:6671 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprAdddate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[5].exprUnion(), Unit: IntervalNone} } yyVAL.union = yyLOCAL - case 1333: + case 1334: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6669 +//line sql.y:6675 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprDateAdd, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1334: + case 1335: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6673 +//line sql.y:6679 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprDateSub, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1335: + case 1336: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6677 +//line sql.y:6683 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprSubdate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1336: + case 1337: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6681 +//line sql.y:6687 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprSubdate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[5].exprUnion(), Unit: IntervalNone} } yyVAL.union = yyLOCAL - case 1341: + case 1342: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6691 +//line sql.y:6697 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1342: + case 1343: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6695 +//line sql.y:6701 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1343: + case 1344: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6699 +//line sql.y:6705 { yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL - case 1344: + case 1345: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6703 +//line sql.y:6709 { yyLOCAL = parseBindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1345: + case 1346: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6708 +//line sql.y:6714 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1346: + case 1347: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6712 +//line sql.y:6718 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1347: + case 1348: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6718 +//line sql.y:6724 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1348: + case 1349: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6722 +//line sql.y:6728 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1349: + case 1350: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6726 +//line sql.y:6732 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1350: + case 1351: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6730 +//line sql.y:6736 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), ReturnOption: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1351: + case 1352: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6734 +//line sql.y:6740 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), ReturnOption: yyDollar[11].exprUnion(), MatchType: yyDollar[13].exprUnion()} } yyVAL.union = yyLOCAL - case 1352: + case 1353: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6739 +//line sql.y:6745 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1353: + case 1354: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6743 +//line sql.y:6749 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), MatchType: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1354: + case 1355: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6747 +//line sql.y:6753 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1355: + case 1356: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6751 +//line sql.y:6757 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1356: + case 1357: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6755 +//line sql.y:6761 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion(), Occurrence: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1357: + case 1358: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6759 +//line sql.y:6765 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion(), Occurrence: yyDollar[11].exprUnion(), MatchType: yyDollar[13].exprUnion()} } yyVAL.union = yyLOCAL - case 1358: + case 1359: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6764 +//line sql.y:6770 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1359: + case 1360: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6768 +//line sql.y:6774 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1360: + case 1361: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6772 +//line sql.y:6778 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1361: + case 1362: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6776 +//line sql.y:6782 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), MatchType: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1362: + case 1363: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6783 +//line sql.y:6789 { yyLOCAL = &ExtractValueExpr{Fragment: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1363: + case 1364: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6787 +//line sql.y:6793 { yyLOCAL = &UpdateXMLExpr{Target: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion(), NewXML: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1364: + case 1365: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6793 +//line sql.y:6799 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatBytesType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1365: + case 1366: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6797 +//line sql.y:6803 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatPicoTimeType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1366: + case 1367: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6801 +//line sql.y:6807 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsCurrentThreadIDType} } yyVAL.union = yyLOCAL - case 1367: + case 1368: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6805 +//line sql.y:6811 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsThreadIDType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1368: + case 1369: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6811 +//line sql.y:6817 { yyLOCAL = >IDFuncExpr{Type: GTIDSubsetType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1369: + case 1370: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6815 +//line sql.y:6821 { yyLOCAL = >IDFuncExpr{Type: GTIDSubtractType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1370: + case 1371: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6819 +//line sql.y:6825 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1371: + case 1372: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6823 +//line sql.y:6829 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1372: + case 1373: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6827 +//line sql.y:6833 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1373: + case 1374: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6831 +//line sql.y:6837 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1374: + case 1375: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6835 +//line sql.y:6841 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion(), Channel: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1375: + case 1376: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6840 +//line sql.y:6846 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1376: + case 1377: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6844 +//line sql.y:6850 { yyLOCAL = yyDollar[2].convertTypeUnion() } yyVAL.union = yyLOCAL - case 1377: + case 1378: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6850 +//line sql.y:6856 { yyLOCAL = IntervalDayHour } yyVAL.union = yyLOCAL - case 1378: + case 1379: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6854 +//line sql.y:6860 { yyLOCAL = IntervalDayMicrosecond } yyVAL.union = yyLOCAL - case 1379: + case 1380: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6858 +//line sql.y:6864 { yyLOCAL = IntervalDayMinute } yyVAL.union = yyLOCAL - case 1380: + case 1381: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6862 +//line sql.y:6868 { yyLOCAL = IntervalDaySecond } yyVAL.union = yyLOCAL - case 1381: + case 1382: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6866 +//line sql.y:6872 { yyLOCAL = IntervalHourMicrosecond } yyVAL.union = yyLOCAL - case 1382: + case 1383: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6870 +//line sql.y:6876 { yyLOCAL = IntervalHourMinute } yyVAL.union = yyLOCAL - case 1383: + case 1384: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6874 +//line sql.y:6880 { yyLOCAL = IntervalHourSecond } yyVAL.union = yyLOCAL - case 1384: + case 1385: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6878 +//line sql.y:6884 { yyLOCAL = IntervalMinuteMicrosecond } yyVAL.union = yyLOCAL - case 1385: + case 1386: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6882 +//line sql.y:6888 { yyLOCAL = IntervalMinuteSecond } yyVAL.union = yyLOCAL - case 1386: + case 1387: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6886 +//line sql.y:6892 { yyLOCAL = IntervalSecondMicrosecond } yyVAL.union = yyLOCAL - case 1387: + case 1388: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6890 +//line sql.y:6896 { yyLOCAL = IntervalYearMonth } yyVAL.union = yyLOCAL - case 1388: + case 1389: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6894 +//line sql.y:6900 { yyLOCAL = IntervalDay } yyVAL.union = yyLOCAL - case 1389: + case 1390: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6898 +//line sql.y:6904 { yyLOCAL = IntervalWeek } yyVAL.union = yyLOCAL - case 1390: + case 1391: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6902 +//line sql.y:6908 { yyLOCAL = IntervalHour } yyVAL.union = yyLOCAL - case 1391: + case 1392: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6906 +//line sql.y:6912 { yyLOCAL = IntervalMinute } yyVAL.union = yyLOCAL - case 1392: + case 1393: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6910 +//line sql.y:6916 { yyLOCAL = IntervalMonth } yyVAL.union = yyLOCAL - case 1393: + case 1394: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6914 +//line sql.y:6920 { yyLOCAL = IntervalQuarter } yyVAL.union = yyLOCAL - case 1394: + case 1395: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6918 +//line sql.y:6924 { yyLOCAL = IntervalSecond } yyVAL.union = yyLOCAL - case 1395: + case 1396: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6922 +//line sql.y:6928 { yyLOCAL = IntervalMicrosecond } yyVAL.union = yyLOCAL - case 1396: + case 1397: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6926 +//line sql.y:6932 { yyLOCAL = IntervalYear } yyVAL.union = yyLOCAL - case 1397: + case 1398: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6932 +//line sql.y:6938 { yyLOCAL = IntervalDay } yyVAL.union = yyLOCAL - case 1398: + case 1399: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6936 +//line sql.y:6942 { yyLOCAL = IntervalWeek } yyVAL.union = yyLOCAL - case 1399: + case 1400: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6940 +//line sql.y:6946 { yyLOCAL = IntervalHour } yyVAL.union = yyLOCAL - case 1400: + case 1401: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6944 +//line sql.y:6950 { yyLOCAL = IntervalMinute } yyVAL.union = yyLOCAL - case 1401: + case 1402: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6948 +//line sql.y:6954 { yyLOCAL = IntervalMonth } yyVAL.union = yyLOCAL - case 1402: + case 1403: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6952 +//line sql.y:6958 { yyLOCAL = IntervalQuarter } yyVAL.union = yyLOCAL - case 1403: + case 1404: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6956 +//line sql.y:6962 { yyLOCAL = IntervalSecond } yyVAL.union = yyLOCAL - case 1404: + case 1405: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6960 +//line sql.y:6966 { yyLOCAL = IntervalMicrosecond } yyVAL.union = yyLOCAL - case 1405: + case 1406: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6964 +//line sql.y:6970 { yyLOCAL = IntervalYear } yyVAL.union = yyLOCAL - case 1406: + case 1407: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6968 +//line sql.y:6974 { yyLOCAL = IntervalDay } yyVAL.union = yyLOCAL - case 1407: + case 1408: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6972 +//line sql.y:6978 { yyLOCAL = IntervalWeek } yyVAL.union = yyLOCAL - case 1408: + case 1409: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6976 +//line sql.y:6982 { yyLOCAL = IntervalHour } yyVAL.union = yyLOCAL - case 1409: + case 1410: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6980 +//line sql.y:6986 { yyLOCAL = IntervalMinute } yyVAL.union = yyLOCAL - case 1410: + case 1411: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6984 +//line sql.y:6990 { yyLOCAL = IntervalMonth } yyVAL.union = yyLOCAL - case 1411: + case 1412: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6988 +//line sql.y:6994 { yyLOCAL = IntervalQuarter } yyVAL.union = yyLOCAL - case 1412: + case 1413: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6992 +//line sql.y:6998 { yyLOCAL = IntervalSecond } yyVAL.union = yyLOCAL - case 1413: + case 1414: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6996 +//line sql.y:7002 { yyLOCAL = IntervalMicrosecond } yyVAL.union = yyLOCAL - case 1414: + case 1415: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7000 +//line sql.y:7006 { yyLOCAL = IntervalYear } yyVAL.union = yyLOCAL - case 1417: + case 1418: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:7010 +//line sql.y:7016 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1418: + case 1419: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int -//line sql.y:7014 +//line sql.y:7020 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1419: + case 1420: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:7018 +//line sql.y:7024 { yyLOCAL = convertStringToInt(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1420: + case 1421: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7028 +//line sql.y:7034 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("if"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1421: + case 1422: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7032 +//line sql.y:7038 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("database"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1422: + case 1423: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7036 +//line sql.y:7042 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("schema"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1423: + case 1424: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7040 +//line sql.y:7046 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("mod"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1424: + case 1425: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7044 +//line sql.y:7050 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("replace"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1425: + case 1426: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7050 +//line sql.y:7056 { yyLOCAL = NoOption } yyVAL.union = yyLOCAL - case 1426: + case 1427: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7054 +//line sql.y:7060 { yyLOCAL = BooleanModeOpt } yyVAL.union = yyLOCAL - case 1427: + case 1428: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7058 +//line sql.y:7064 { yyLOCAL = NaturalLanguageModeOpt } yyVAL.union = yyLOCAL - case 1428: + case 1429: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7062 +//line sql.y:7068 { yyLOCAL = NaturalLanguageModeWithQueryExpansionOpt } yyVAL.union = yyLOCAL - case 1429: + case 1430: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7066 +//line sql.y:7072 { yyLOCAL = QueryExpansionOpt } yyVAL.union = yyLOCAL - case 1430: + case 1431: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7072 +//line sql.y:7078 { yyVAL.str = string(yyDollar[1].identifierCI.String()) } - case 1431: + case 1432: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7076 +//line sql.y:7082 { yyVAL.str = string(yyDollar[1].str) } - case 1432: + case 1433: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7080 +//line sql.y:7086 { yyVAL.str = string(yyDollar[1].str) } - case 1433: + case 1434: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7086 +//line sql.y:7092 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1434: + case 1435: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7090 +//line sql.y:7096 { yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: NewIntLiteral(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 1435: + case 1436: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7094 +//line sql.y:7100 { yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: NewIntLiteral(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 1436: + case 1437: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7100 +//line sql.y:7106 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1437: + case 1438: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7104 +//line sql.y:7110 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].columnCharset} } yyVAL.union = yyLOCAL - case 1438: + case 1439: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7108 +//line sql.y:7114 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1439: + case 1440: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7112 +//line sql.y:7118 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1440: + case 1441: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7116 +//line sql.y:7122 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} yyLOCAL.Length = yyDollar[2].LengthScaleOption.Length yyLOCAL.Scale = yyDollar[2].LengthScaleOption.Scale } yyVAL.union = yyLOCAL - case 1441: + case 1442: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7122 +//line sql.y:7128 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1442: + case 1443: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7126 +//line sql.y:7132 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1443: + case 1444: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7130 +//line sql.y:7136 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1444: + case 1445: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7134 +//line sql.y:7140 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1445: + case 1446: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7138 +//line sql.y:7144 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1446: + case 1447: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7142 +//line sql.y:7148 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1447: + case 1448: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7146 +//line sql.y:7152 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1448: + case 1449: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7150 +//line sql.y:7156 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1449: + case 1450: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7154 +//line sql.y:7160 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1450: + case 1451: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7158 +//line sql.y:7164 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1451: + case 1452: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7164 +//line sql.y:7170 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1452: + case 1453: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:7168 +//line sql.y:7174 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1453: + case 1454: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:7173 +//line sql.y:7179 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1454: + case 1455: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7177 +//line sql.y:7183 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1455: + case 1456: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7182 +//line sql.y:7188 { yyVAL.str = string("") } - case 1456: + case 1457: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7186 +//line sql.y:7192 { yyVAL.str = encodeSQLString(yyDollar[2].str) } - case 1457: + case 1458: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*When -//line sql.y:7192 +//line sql.y:7198 { yyLOCAL = []*When{yyDollar[1].whenUnion()} } yyVAL.union = yyLOCAL - case 1458: + case 1459: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7196 +//line sql.y:7202 { yySLICE := (*[]*When)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].whenUnion()) } - case 1459: + case 1460: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *When -//line sql.y:7202 +//line sql.y:7208 { yyLOCAL = &When{Cond: yyDollar[2].exprUnion(), Val: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1460: + case 1461: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:7207 +//line sql.y:7213 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1461: + case 1462: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:7211 +//line sql.y:7217 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1462: + case 1463: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:7217 +//line sql.y:7223 { yyLOCAL = &ColName{Name: yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1463: + case 1464: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:7221 +//line sql.y:7227 { yyLOCAL = &ColName{Name: NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 1464: + case 1465: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColName -//line sql.y:7225 +//line sql.y:7231 { yyLOCAL = &ColName{Qualifier: TableName{Name: yyDollar[1].identifierCS}, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1465: + case 1466: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ColName -//line sql.y:7229 +//line sql.y:7235 { yyLOCAL = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}, Name: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 1466: + case 1467: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7235 +//line sql.y:7241 { yyLOCAL = yyDollar[1].colNameUnion() } yyVAL.union = yyLOCAL - case 1467: + case 1468: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7239 +//line sql.y:7245 { yyLOCAL = &Offset{V: convertStringToInt(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1468: + case 1469: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7245 +//line sql.y:7251 { // TODO(sougou): Deprecate this construct. if yyDollar[1].identifierCI.Lowered() != "value" { @@ -21107,426 +21170,426 @@ yydefault: yyLOCAL = NewIntLiteral("1") } yyVAL.union = yyLOCAL - case 1469: + case 1470: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:7254 +//line sql.y:7260 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1470: + case 1471: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:7258 +//line sql.y:7264 { yyLOCAL = parseBindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1471: + case 1472: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:7263 +//line sql.y:7269 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1472: + case 1473: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Exprs -//line sql.y:7267 +//line sql.y:7273 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1473: + case 1474: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:7272 +//line sql.y:7278 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1474: + case 1475: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:7276 +//line sql.y:7282 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1475: + case 1476: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *NamedWindow -//line sql.y:7282 +//line sql.y:7288 { yyLOCAL = &NamedWindow{yyDollar[2].windowDefinitionsUnion()} } yyVAL.union = yyLOCAL - case 1476: + case 1477: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:7288 +//line sql.y:7294 { yyLOCAL = NamedWindows{yyDollar[1].namedWindowUnion()} } yyVAL.union = yyLOCAL - case 1477: + case 1478: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7292 +//line sql.y:7298 { yySLICE := (*NamedWindows)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].namedWindowUnion()) } - case 1478: + case 1479: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:7297 +//line sql.y:7303 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1479: + case 1480: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:7301 +//line sql.y:7307 { yyLOCAL = yyDollar[1].namedWindowsUnion() } yyVAL.union = yyLOCAL - case 1480: + case 1481: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderBy -//line sql.y:7306 +//line sql.y:7312 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1481: + case 1482: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:7310 +//line sql.y:7316 { yyLOCAL = yyDollar[1].orderByUnion() } yyVAL.union = yyLOCAL - case 1482: + case 1483: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL OrderBy -//line sql.y:7316 +//line sql.y:7322 { yyLOCAL = yyDollar[3].orderByUnion() } yyVAL.union = yyLOCAL - case 1483: + case 1484: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:7322 +//line sql.y:7328 { yyLOCAL = OrderBy{yyDollar[1].orderUnion()} } yyVAL.union = yyLOCAL - case 1484: + case 1485: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7326 +//line sql.y:7332 { yySLICE := (*OrderBy)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].orderUnion()) } - case 1485: + case 1486: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Order -//line sql.y:7332 +//line sql.y:7338 { yyLOCAL = &Order{Expr: yyDollar[1].exprUnion(), Direction: yyDollar[2].orderDirectionUnion()} } yyVAL.union = yyLOCAL - case 1486: + case 1487: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:7337 +//line sql.y:7343 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1487: + case 1488: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:7341 +//line sql.y:7347 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1488: + case 1489: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:7345 +//line sql.y:7351 { yyLOCAL = DescOrder } yyVAL.union = yyLOCAL - case 1489: + case 1490: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Limit -//line sql.y:7350 +//line sql.y:7356 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1490: + case 1491: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Limit -//line sql.y:7354 +//line sql.y:7360 { yyLOCAL = yyDollar[1].limitUnion() } yyVAL.union = yyLOCAL - case 1491: + case 1492: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Limit -//line sql.y:7360 +//line sql.y:7366 { yyLOCAL = &Limit{Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1492: + case 1493: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:7364 +//line sql.y:7370 { yyLOCAL = &Limit{Offset: yyDollar[2].exprUnion(), Rowcount: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1493: + case 1494: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:7368 +//line sql.y:7374 { yyLOCAL = &Limit{Offset: yyDollar[4].exprUnion(), Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1494: + case 1495: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7373 +//line sql.y:7379 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1495: + case 1496: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7377 +//line sql.y:7383 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1496: + case 1497: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7381 +//line sql.y:7387 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1497: + case 1498: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7385 +//line sql.y:7391 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1498: + case 1499: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7389 +//line sql.y:7395 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1499: + case 1500: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7396 +//line sql.y:7402 { yyLOCAL = &LockOption{Type: DefaultType} } yyVAL.union = yyLOCAL - case 1500: + case 1501: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7400 +//line sql.y:7406 { yyLOCAL = &LockOption{Type: NoneType} } yyVAL.union = yyLOCAL - case 1501: + case 1502: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7404 +//line sql.y:7410 { yyLOCAL = &LockOption{Type: SharedType} } yyVAL.union = yyLOCAL - case 1502: + case 1503: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7408 +//line sql.y:7414 { yyLOCAL = &LockOption{Type: ExclusiveType} } yyVAL.union = yyLOCAL - case 1503: + case 1504: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7414 +//line sql.y:7420 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1504: + case 1505: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7418 +//line sql.y:7424 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1505: + case 1506: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7422 +//line sql.y:7428 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1506: + case 1507: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7426 +//line sql.y:7432 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1507: + case 1508: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7431 +//line sql.y:7437 { yyVAL.str = "" } - case 1508: + case 1509: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7435 +//line sql.y:7441 { yyVAL.str = string(yyDollar[3].str) } - case 1509: + case 1510: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7439 +//line sql.y:7445 { yyVAL.str = string(yyDollar[3].str) } - case 1510: + case 1511: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7443 +//line sql.y:7449 { yyVAL.str = string(yyDollar[3].str) } - case 1511: + case 1512: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7448 +//line sql.y:7454 { yyVAL.str = "" } - case 1512: + case 1513: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7452 +//line sql.y:7458 { yyVAL.str = yyDollar[3].str } - case 1513: + case 1514: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7458 +//line sql.y:7464 { yyVAL.str = string(yyDollar[1].str) } - case 1514: + case 1515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7462 +//line sql.y:7468 { yyVAL.str = string(yyDollar[1].str) } - case 1515: + case 1516: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7467 +//line sql.y:7473 { yyVAL.str = "" } - case 1516: + case 1517: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:7471 +//line sql.y:7477 { yyVAL.str = yyDollar[2].str } - case 1517: + case 1518: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7476 +//line sql.y:7482 { yyVAL.str = "cascaded" } - case 1518: + case 1519: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7480 +//line sql.y:7486 { yyVAL.str = string(yyDollar[1].str) } - case 1519: + case 1520: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7484 +//line sql.y:7490 { yyVAL.str = string(yyDollar[1].str) } - case 1520: + case 1521: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Definer -//line sql.y:7489 +//line sql.y:7495 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1521: + case 1522: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:7493 +//line sql.y:7499 { yyLOCAL = yyDollar[3].definerUnion() } yyVAL.union = yyLOCAL - case 1522: + case 1523: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Definer -//line sql.y:7499 +//line sql.y:7505 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1523: + case 1524: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:7505 +//line sql.y:7511 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1524: + case 1525: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Definer -//line sql.y:7511 +//line sql.y:7517 { yyLOCAL = &Definer{ Name: yyDollar[1].str, @@ -21534,409 +21597,409 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1525: + case 1526: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7520 +//line sql.y:7526 { yyVAL.str = encodeSQLString(yyDollar[1].str) } - case 1526: + case 1527: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7524 +//line sql.y:7530 { yyVAL.str = formatIdentifier(yyDollar[1].str) } - case 1527: + case 1528: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7529 +//line sql.y:7535 { yyVAL.str = "" } - case 1528: + case 1529: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7533 +//line sql.y:7539 { yyVAL.str = formatAddress(yyDollar[1].str) } - case 1529: + case 1530: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Lock -//line sql.y:7539 +//line sql.y:7545 { yyLOCAL = ForUpdateLock } yyVAL.union = yyLOCAL - case 1530: + case 1531: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Lock -//line sql.y:7543 +//line sql.y:7549 { yyLOCAL = ForUpdateLockNoWait } yyVAL.union = yyLOCAL - case 1531: + case 1532: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Lock -//line sql.y:7547 +//line sql.y:7553 { yyLOCAL = ForUpdateLockSkipLocked } yyVAL.union = yyLOCAL - case 1532: + case 1533: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Lock -//line sql.y:7551 +//line sql.y:7557 { yyLOCAL = ForShareLock } yyVAL.union = yyLOCAL - case 1533: + case 1534: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Lock -//line sql.y:7555 +//line sql.y:7561 { yyLOCAL = ForShareLockNoWait } yyVAL.union = yyLOCAL - case 1534: + case 1535: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Lock -//line sql.y:7559 +//line sql.y:7565 { yyLOCAL = ForShareLockSkipLocked } yyVAL.union = yyLOCAL - case 1535: + case 1536: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Lock -//line sql.y:7563 +//line sql.y:7569 { yyLOCAL = ShareModeLock } yyVAL.union = yyLOCAL - case 1536: + case 1537: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:7569 +//line sql.y:7575 { yyLOCAL = &SelectInto{Type: IntoOutfileS3, FileName: encodeSQLString(yyDollar[4].str), Charset: yyDollar[5].columnCharset, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } yyVAL.union = yyLOCAL - case 1537: + case 1538: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:7573 +//line sql.y:7579 { yyLOCAL = &SelectInto{Type: IntoDumpfile, FileName: encodeSQLString(yyDollar[3].str), Charset: ColumnCharset{}, FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1538: + case 1539: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:7577 +//line sql.y:7583 { yyLOCAL = &SelectInto{Type: IntoOutfile, FileName: encodeSQLString(yyDollar[3].str), Charset: yyDollar[4].columnCharset, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1539: + case 1540: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7582 +//line sql.y:7588 { yyVAL.str = "" } - case 1540: + case 1541: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7586 +//line sql.y:7592 { yyVAL.str = " format csv" + yyDollar[3].str } - case 1541: + case 1542: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7590 +//line sql.y:7596 { yyVAL.str = " format text" + yyDollar[3].str } - case 1542: + case 1543: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7595 +//line sql.y:7601 { yyVAL.str = "" } - case 1543: + case 1544: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7599 +//line sql.y:7605 { yyVAL.str = " header" } - case 1544: + case 1545: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7604 +//line sql.y:7610 { yyVAL.str = "" } - case 1545: + case 1546: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7608 +//line sql.y:7614 { yyVAL.str = " manifest on" } - case 1546: + case 1547: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7612 +//line sql.y:7618 { yyVAL.str = " manifest off" } - case 1547: + case 1548: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7617 +//line sql.y:7623 { yyVAL.str = "" } - case 1548: + case 1549: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7621 +//line sql.y:7627 { yyVAL.str = " overwrite on" } - case 1549: + case 1550: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7625 +//line sql.y:7631 { yyVAL.str = " overwrite off" } - case 1550: + case 1551: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7631 +//line sql.y:7637 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1551: + case 1552: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7636 +//line sql.y:7642 { yyVAL.str = "" } - case 1552: + case 1553: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7640 +//line sql.y:7646 { yyVAL.str = " lines" + yyDollar[2].str } - case 1553: + case 1554: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7646 +//line sql.y:7652 { yyVAL.str = yyDollar[1].str } - case 1554: + case 1555: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7650 +//line sql.y:7656 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1555: + case 1556: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7656 +//line sql.y:7662 { yyVAL.str = " starting by " + encodeSQLString(yyDollar[3].str) } - case 1556: + case 1557: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7660 +//line sql.y:7666 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1557: + case 1558: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7665 +//line sql.y:7671 { yyVAL.str = "" } - case 1558: + case 1559: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7669 +//line sql.y:7675 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str } - case 1559: + case 1560: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7675 +//line sql.y:7681 { yyVAL.str = yyDollar[1].str } - case 1560: + case 1561: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7679 +//line sql.y:7685 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1561: + case 1562: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7685 +//line sql.y:7691 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1562: + case 1563: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:7689 +//line sql.y:7695 { yyVAL.str = yyDollar[1].str + " enclosed by " + encodeSQLString(yyDollar[4].str) } - case 1563: + case 1564: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7693 +//line sql.y:7699 { yyVAL.str = " escaped by " + encodeSQLString(yyDollar[3].str) } - case 1564: + case 1565: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7698 +//line sql.y:7704 { yyVAL.str = "" } - case 1565: + case 1566: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7702 +//line sql.y:7708 { yyVAL.str = " optionally" } - case 1566: + case 1567: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Insert -//line sql.y:7715 +//line sql.y:7721 { yyLOCAL = &Insert{Rows: yyDollar[2].valuesUnion()} } yyVAL.union = yyLOCAL - case 1567: + case 1568: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Insert -//line sql.y:7719 +//line sql.y:7725 { yyLOCAL = &Insert{Rows: yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1568: + case 1569: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *Insert -//line sql.y:7723 +//line sql.y:7729 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[5].valuesUnion()} } yyVAL.union = yyLOCAL - case 1569: + case 1570: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Insert -//line sql.y:7727 +//line sql.y:7733 { yyLOCAL = &Insert{Columns: []IdentifierCI{}, Rows: yyDollar[4].valuesUnion()} } yyVAL.union = yyLOCAL - case 1570: + case 1571: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Insert -//line sql.y:7731 +//line sql.y:7737 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[4].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1571: + case 1572: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:7737 +//line sql.y:7743 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1572: + case 1573: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:7741 +//line sql.y:7747 { yyLOCAL = Columns{yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1573: + case 1574: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7745 +//line sql.y:7751 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 1574: + case 1575: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:7749 +//line sql.y:7755 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[5].identifierCI) } - case 1575: + case 1576: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7754 +//line sql.y:7760 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1576: + case 1577: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7758 +//line sql.y:7764 { yyLOCAL = yyDollar[5].updateExprsUnion() } yyVAL.union = yyLOCAL - case 1577: + case 1578: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Values -//line sql.y:7764 +//line sql.y:7770 { yyLOCAL = Values{yyDollar[1].valTupleUnion()} } yyVAL.union = yyLOCAL - case 1578: + case 1579: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7768 +//line sql.y:7774 { yySLICE := (*Values)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].valTupleUnion()) } - case 1579: + case 1580: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7774 +//line sql.y:7780 { yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL - case 1580: + case 1581: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7778 +//line sql.y:7784 { yyLOCAL = ValTuple{} } yyVAL.union = yyLOCAL - case 1581: + case 1582: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7784 +//line sql.y:7790 { yyLOCAL = ValTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 1582: + case 1583: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7788 +//line sql.y:7794 { yyLOCAL = ValTuple(yyDollar[3].exprsUnion()) } yyVAL.union = yyLOCAL - case 1583: + case 1584: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7793 +//line sql.y:7799 { if len(yyDollar[1].valTupleUnion()) == 1 { yyLOCAL = yyDollar[1].valTupleUnion()[0] @@ -21945,300 +22008,300 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1584: + case 1585: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7803 +//line sql.y:7809 { yyLOCAL = UpdateExprs{yyDollar[1].updateExprUnion()} } yyVAL.union = yyLOCAL - case 1585: + case 1586: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7807 +//line sql.y:7813 { yySLICE := (*UpdateExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].updateExprUnion()) } - case 1586: + case 1587: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *UpdateExpr -//line sql.y:7813 +//line sql.y:7819 { yyLOCAL = &UpdateExpr{Name: yyDollar[1].colNameUnion(), Expr: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1588: + case 1589: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7820 +//line sql.y:7826 { yyVAL.str = "charset" } - case 1591: + case 1592: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7830 +//line sql.y:7836 { yyLOCAL = NewStrLiteral(yyDollar[1].identifierCI.String()) } yyVAL.union = yyLOCAL - case 1592: + case 1593: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7834 +//line sql.y:7840 { yyLOCAL = NewStrLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1593: + case 1594: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7838 +//line sql.y:7844 { yyLOCAL = &Default{} } yyVAL.union = yyLOCAL - case 1596: + case 1597: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7847 +//line sql.y:7853 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1597: + case 1598: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:7849 +//line sql.y:7855 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1598: + case 1599: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7852 +//line sql.y:7858 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1599: + case 1600: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:7854 +//line sql.y:7860 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1600: + case 1601: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7857 +//line sql.y:7863 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1601: + case 1602: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line sql.y:7859 +//line sql.y:7865 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1602: + case 1603: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Ignore -//line sql.y:7862 +//line sql.y:7868 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1603: + case 1604: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Ignore -//line sql.y:7864 +//line sql.y:7870 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1604: + case 1605: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7867 +//line sql.y:7873 { yyVAL.empty = struct{}{} } - case 1605: + case 1606: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7869 +//line sql.y:7875 { yyVAL.empty = struct{}{} } - case 1606: + case 1607: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7871 +//line sql.y:7877 { yyVAL.empty = struct{}{} } - case 1607: + case 1608: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:7875 +//line sql.y:7881 { yyLOCAL = &CallProc{Name: yyDollar[2].tableName, Params: yyDollar[4].exprsUnion()} } yyVAL.union = yyLOCAL - case 1608: + case 1609: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:7880 +//line sql.y:7886 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1609: + case 1610: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:7884 +//line sql.y:7890 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1610: + case 1611: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:7889 +//line sql.y:7895 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1611: + case 1612: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:7891 +//line sql.y:7897 { yyLOCAL = []*IndexOption{yyDollar[1].indexOptionUnion()} } yyVAL.union = yyLOCAL - case 1612: + case 1613: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:7895 +//line sql.y:7901 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), String: string(yyDollar[2].identifierCI.String())} } yyVAL.union = yyLOCAL - case 1613: + case 1614: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7901 +//line sql.y:7907 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1614: + case 1615: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7905 +//line sql.y:7911 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 1616: + case 1617: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7912 +//line sql.y:7918 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 1617: + case 1618: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7918 +//line sql.y:7924 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 1618: + case 1619: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7922 +//line sql.y:7928 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 1619: + case 1620: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7928 +//line sql.y:7934 { yyVAL.identifierCS = NewIdentifierCS("") } - case 1620: + case 1621: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7932 +//line sql.y:7938 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 1622: + case 1623: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7939 +//line sql.y:7945 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 1623: + case 1624: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:7945 +//line sql.y:7951 { yyLOCAL = &Kill{Type: yyDollar[2].killTypeUnion(), ProcesslistID: convertStringToUInt64(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 1624: + case 1625: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL KillType -//line sql.y:7951 +//line sql.y:7957 { yyLOCAL = ConnectionType } yyVAL.union = yyLOCAL - case 1625: + case 1626: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL KillType -//line sql.y:7955 +//line sql.y:7961 { yyLOCAL = ConnectionType } yyVAL.union = yyLOCAL - case 1626: + case 1627: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL KillType -//line sql.y:7959 +//line sql.y:7965 { yyLOCAL = QueryType } yyVAL.union = yyLOCAL - case 2243: + case 2244: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8604 +//line sql.y:8610 { } - case 2244: + case 2245: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8609 +//line sql.y:8615 { } - case 2245: + case 2246: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:8613 +//line sql.y:8619 { skipToEnd(yylex) } - case 2246: + case 2247: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:8618 +//line sql.y:8624 { skipToEnd(yylex) } - case 2247: + case 2248: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8622 +//line sql.y:8628 { skipToEnd(yylex) } - case 2248: + case 2249: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8626 +//line sql.y:8632 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 61ecaf3a661..26c74b7fe47 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -468,7 +468,7 @@ func markBindVariable(yylex yyLexer, bvar string) { %type distinct_opt union_op replace_opt local_opt %type select_expression_list select_expression_list_opt %type select_expression -%type select_options flush_option_list +%type select_options select_options_opt flush_option_list %type select_option algorithm_view security_view security_view_opt %type generated_always_opt user_username address_opt %type definer_opt user @@ -906,11 +906,11 @@ vstream_statement: // query_primary is an unparenthesized SELECT with no order by clause or beyond. query_primary: // 1 2 3 4 5 6 7 8 9 10 - SELECT comment_opt select_options select_expression_list into_clause from_opt where_expression_opt group_by_opt having_opt named_windows_list_opt + SELECT comment_opt select_options_opt select_expression_list into_clause from_opt where_expression_opt group_by_opt having_opt named_windows_list_opt { $$ = NewSelect(Comments($2), $4/*SelectExprs*/, $3/*options*/, $5/*into*/, $6/*from*/, NewWhere(WhereClause, $7), GroupBy($8), NewWhere(HavingClause, $9), $10) } -| SELECT comment_opt select_options select_expression_list from_opt where_expression_opt group_by_opt having_opt named_windows_list_opt +| SELECT comment_opt select_options_opt select_expression_list from_opt where_expression_opt group_by_opt having_opt named_windows_list_opt { $$ = NewSelect(Comments($2), $4/*SelectExprs*/, $3/*options*/, nil, $5/*from*/, NewWhere(WhereClause, $6), GroupBy($7), NewWhere(HavingClause, $8), $9) } @@ -4812,25 +4812,23 @@ select_expression_list_opt: $$ = $1 } -select_options: +select_options_opt: { $$ = nil } -| select_option +| select_options { - $$ = []string{$1} - } -| select_option select_option // TODO: figure out a way to do this recursively instead. - { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' - $$ = []string{$1, $2} + $$ = $1 } -| select_option select_option select_option + +select_options: +select_option { - $$ = []string{$1, $2, $3} + $$ = []string{$1} } -| select_option select_option select_option select_option +| select_options select_option { - $$ = []string{$1, $2, $3, $4} + $$ = append($1, $2) } select_option: @@ -5226,6 +5224,14 @@ index_hint: { $$ = &IndexHint{Type: ForceOp, ForType: $3, Indexes: $5} } +| USE VINDEX openb index_list closeb + { + $$ = &IndexHint{Type: UseVindexOp, Indexes: $4 } + } +| IGNORE VINDEX openb index_list closeb + { + $$ = &IndexHint{Type: IgnoreVindexOp, Indexes: $4} + } index_hint_for_opt: { diff --git a/go/vt/vterrors/code.go b/go/vt/vterrors/code.go index 1942faf12ad..48529abe515 100644 --- a/go/vt/vterrors/code.go +++ b/go/vt/vterrors/code.go @@ -89,6 +89,8 @@ var ( VT09017 = errorWithoutState("VT09017", vtrpcpb.Code_FAILED_PRECONDITION, "%s", "Invalid syntax for the statement type.") VT09018 = errorWithoutState("VT09018", vtrpcpb.Code_FAILED_PRECONDITION, "%s", "Invalid syntax for the vindex function statement.") VT09019 = errorWithoutState("VT09019", vtrpcpb.Code_FAILED_PRECONDITION, "keyspace '%s' has cyclic foreign keys", "Vitess doesn't support cyclic foreign keys.") + VT09020 = errorWithoutState("VT09020", vtrpcpb.Code_FAILED_PRECONDITION, "can not use multiple vindex hints for table %s", "Vitess does not allow using multiple vindex hints on the same table.") + VT09021 = errorWithState("VT09021", vtrpcpb.Code_FAILED_PRECONDITION, KeyDoesNotExist, "Vindex '%s' does not exist in table '%s'", "Vindex hints have to reference an existing vindex, and no such vindex could be found for the given table.") VT10001 = errorWithoutState("VT10001", vtrpcpb.Code_ABORTED, "foreign key constraints are not allowed", "Foreign key constraints are not allowed, see https://vitess.io/blog/2021-06-15-online-ddl-why-no-fk/.") VT10002 = errorWithoutState("VT10002", vtrpcpb.Code_ABORTED, "'replace into' with foreign key constraints are not allowed", "Foreign key constraints sometimes are not written in binary logs and will cause issue with vreplication workflows like online-ddl.") diff --git a/go/vt/vterrors/state.go b/go/vt/vterrors/state.go index 5d286b0c991..00d64dd39a5 100644 --- a/go/vt/vterrors/state.go +++ b/go/vt/vterrors/state.go @@ -59,6 +59,7 @@ const ( RowIsReferenced2 NoReferencedRow2 UnknownStmtHandler + KeyDoesNotExist // not found BadDb diff --git a/go/vt/vtgate/planbuilder/operators/route.go b/go/vt/vtgate/planbuilder/operators/route.go index ea50f605105..5742877fbe3 100644 --- a/go/vt/vtgate/planbuilder/operators/route.go +++ b/go/vt/vtgate/planbuilder/operators/route.go @@ -371,12 +371,11 @@ func (vpp *VindexPlusPredicates) bestOption() *VindexOption { func createRoute( ctx *plancontext.PlanningContext, queryTable *QueryTable, - solves semantics.TableSet, ) Operator { if queryTable.IsInfSchema { return createInfSchemaRoute(ctx, queryTable) } - return findVSchemaTableAndCreateRoute(ctx, queryTable, queryTable.Table, solves, true /*planAlternates*/) + return findVSchemaTableAndCreateRoute(ctx, queryTable, queryTable.Table, true /*planAlternates*/) } // findVSchemaTableAndCreateRoute consults the VSchema to find a suitable @@ -385,7 +384,6 @@ func findVSchemaTableAndCreateRoute( ctx *plancontext.PlanningContext, queryTable *QueryTable, tableName sqlparser.TableName, - solves semantics.TableSet, planAlternates bool, ) *Route { vschemaTable, _, _, tabletType, target, err := ctx.VSchema.FindTableOrVindex(tableName) @@ -399,7 +397,6 @@ func findVSchemaTableAndCreateRoute( ctx, queryTable, vschemaTable, - solves, planAlternates, targeted, ) @@ -442,7 +439,6 @@ func createRouteFromVSchemaTable( ctx *plancontext.PlanningContext, queryTable *QueryTable, vschemaTable *vindexes.Table, - solves semantics.TableSet, planAlternates bool, targeted Routing, ) *Route { @@ -474,7 +470,7 @@ func createRouteFromVSchemaTable( if targeted != nil { routing = targeted } else { - routing = createRoutingForVTable(vschemaTable, solves) + routing = createRoutingForVTable(ctx, vschemaTable, queryTable.ID) } for _, predicate := range queryTable.Predicates { @@ -491,14 +487,14 @@ func createRouteFromVSchemaTable( } case *AnyShardRouting: if planAlternates { - routing.Alternates = createAlternateRoutesFromVSchemaTable(ctx, queryTable, vschemaTable, solves) + routing.Alternates = createAlternateRoutesFromVSchemaTable(ctx, queryTable, vschemaTable) } } return plan } -func createRoutingForVTable(vschemaTable *vindexes.Table, id semantics.TableSet) Routing { +func createRoutingForVTable(ctx *plancontext.PlanningContext, vschemaTable *vindexes.Table, id semantics.TableSet) Routing { switch { case vschemaTable.Type == vindexes.TypeSequence: return &SequenceRouting{keyspace: vschemaTable.Keyspace} @@ -507,7 +503,7 @@ func createRoutingForVTable(vschemaTable *vindexes.Table, id semantics.TableSet) case vschemaTable.Type == vindexes.TypeReference || !vschemaTable.Keyspace.Sharded: return &AnyShardRouting{keyspace: vschemaTable.Keyspace} default: - return newShardedRouting(vschemaTable, id) + return newShardedRouting(ctx, vschemaTable, id) } } @@ -515,7 +511,6 @@ func createAlternateRoutesFromVSchemaTable( ctx *plancontext.PlanningContext, queryTable *QueryTable, vschemaTable *vindexes.Table, - solves semantics.TableSet, ) map[*vindexes.Keyspace]*Route { routes := make(map[*vindexes.Keyspace]*Route) @@ -529,7 +524,6 @@ func createAlternateRoutesFromVSchemaTable( Name: referenceTable.Name, Qualifier: sqlparser.NewIdentifierCS(ksName), }, - solves, false, /*planAlternates*/ ) routes[referenceTable.Keyspace] = route @@ -540,7 +534,6 @@ func createAlternateRoutesFromVSchemaTable( ctx, queryTable, vschemaTable.Source.TableName, - solves, false, /*planAlternates*/ ) keyspace := route.Routing.Keyspace() diff --git a/go/vt/vtgate/planbuilder/operators/route_planning.go b/go/vt/vtgate/planbuilder/operators/route_planning.go index 6290ec9038c..c6940f7d356 100644 --- a/go/vt/vtgate/planbuilder/operators/route_planning.go +++ b/go/vt/vtgate/planbuilder/operators/route_planning.go @@ -205,8 +205,7 @@ func seedOperatorList(ctx *plancontext.PlanningContext, qg *QueryGraph) []Operat // we start by seeding the table with the single routes for i, table := range qg.Tables { - solves := ctx.SemTable.TableSetFor(table.Alias) - plan := createRoute(ctx, table, solves) + plan := createRoute(ctx, table) if qg.NoDeps != nil { plan = plan.AddPredicate(ctx, qg.NoDeps) } diff --git a/go/vt/vtgate/planbuilder/operators/sharded_routing.go b/go/vt/vtgate/planbuilder/operators/sharded_routing.go index ef6117b1d8e..29ee88787b5 100644 --- a/go/vt/vtgate/planbuilder/operators/sharded_routing.go +++ b/go/vt/vtgate/planbuilder/operators/sharded_routing.go @@ -52,7 +52,7 @@ type ShardedRouting struct { var _ Routing = (*ShardedRouting)(nil) -func newShardedRouting(vtable *vindexes.Table, id semantics.TableSet) Routing { +func newShardedRouting(ctx *plancontext.PlanningContext, vtable *vindexes.Table, id semantics.TableSet) Routing { routing := &ShardedRouting{ RouteOpCode: engine.Scatter, keyspace: vtable.Keyspace, @@ -77,7 +77,33 @@ func newShardedRouting(vtable *vindexes.Table, id semantics.TableSet) Routing { } } + // Find the tableInfo for the given id + ti, err := ctx.SemTable.TableInfoFor(id) + if err != nil { + panic(err) + } + + // If the tableInfo is a realTable, then get the vindexHint from it. + var vindexHint *sqlparser.IndexHint + rt, isRt := ti.(*semantics.RealTable) + if isRt { + vindexHint = rt.GetVindexHint() + } for _, columnVindex := range vtable.ColumnVindexes { + if vindexHint != nil { + switch vindexHint.Type { + case sqlparser.UseVindexOp: + // For a USE VINDEX type vindex hint, we want to skip any vindex that isn't in the indexes list. + if !indexesContains(vindexHint.Indexes, columnVindex.Name) { + continue + } + case sqlparser.IgnoreVindexOp: + // For a IGNORE VINDEX type vindex hint, we want to skip any vindex that is in the indexes list. + if indexesContains(vindexHint.Indexes, columnVindex.Name) { + continue + } + } + } // ignore any backfilling vindexes from vindex selection. if columnVindex.IsBackfilling() { continue @@ -87,6 +113,13 @@ func newShardedRouting(vtable *vindexes.Table, id semantics.TableSet) Routing { return routing } +// indexesContains is a helper function that returns whether a given string is part of the IdentifierCI list. +func indexesContains(indexes []sqlparser.IdentifierCI, name string) bool { + return slices.ContainsFunc(indexes, func(ci sqlparser.IdentifierCI) bool { + return ci.EqualString(name) + }) +} + func (tr *ShardedRouting) isScatter() bool { return tr.RouteOpCode == engine.Scatter } diff --git a/go/vt/vtgate/planbuilder/testdata/from_cases.json b/go/vt/vtgate/planbuilder/testdata/from_cases.json index 0d9b1447a4c..6ec0d1ab135 100644 --- a/go/vt/vtgate/planbuilder/testdata/from_cases.json +++ b/go/vt/vtgate/planbuilder/testdata/from_cases.json @@ -4342,5 +4342,83 @@ "user.user_extra" ] } + }, + { + "comment": "join table influencing vindex selection with ignore and use vindex syntax", + "query": "select u.intcol, u.id from user u use vindex (name_user_map) join music m ignore vindex(user_index) on u.col = m.col where u.name = 'bb' and u.id = 3 and m.user_id = 5 and m.id = 20", + "plan": { + "QueryType": "SELECT", + "Original": "select u.intcol, u.id from user u use vindex (name_user_map) join music m ignore vindex(user_index) on u.col = m.col where u.name = 'bb' and u.id = 3 and m.user_id = 5 and m.id = 20", + "Instructions": { + "OperatorType": "Join", + "Variant": "Join", + "JoinColumnIndexes": "L:0,L:1", + "JoinVars": { + "u_col": 2 + }, + "TableName": "`user`_music", + "Inputs": [ + { + "OperatorType": "VindexLookup", + "Variant": "Equal", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "Values": [ + "'bb'" + ], + "Vindex": "name_user_map", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "IN", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select `name`, keyspace_id from name_user_vdx where 1 != 1", + "Query": "select `name`, keyspace_id from name_user_vdx where `name` in ::__vals", + "Table": "name_user_vdx", + "Values": [ + "::name" + ], + "Vindex": "user_index" + }, + { + "OperatorType": "Route", + "Variant": "ByDestination", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select u.intcol, u.id, u.col from `user` as u where 1 != 1", + "Query": "select u.intcol, u.id, u.col from `user` as u where u.`name` = 'bb' and u.id = 3", + "Table": "`user`" + } + ] + }, + { + "OperatorType": "Route", + "Variant": "EqualUnique", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select 1 from music as m where 1 != 1", + "Query": "select 1 from music as m where m.user_id = 5 and m.id = 20 and m.col = :u_col", + "Table": "music", + "Values": [ + "20" + ], + "Vindex": "music_user_map" + } + ] + }, + "TablesUsed": [ + "user.music", + "user.user" + ] + } } ] diff --git a/go/vt/vtgate/planbuilder/testdata/select_cases.json b/go/vt/vtgate/planbuilder/testdata/select_cases.json index cee664e6cd9..6c88aa1e6ec 100644 --- a/go/vt/vtgate/planbuilder/testdata/select_cases.json +++ b/go/vt/vtgate/planbuilder/testdata/select_cases.json @@ -980,6 +980,84 @@ ] } }, + { + "comment": "Selection but explicitly ignore a vindex", + "query": "select * from user ignore vindex (user_index) where id = 1", + "plan": { + "QueryType": "SELECT", + "Original": "select * from user ignore vindex (user_index) where id = 1", + "Instructions": { + "OperatorType": "Route", + "Variant": "Scatter", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select * from `user` where 1 != 1", + "Query": "select * from `user` where id = 1", + "Table": "`user`" + }, + "TablesUsed": [ + "user.user" + ] + } + }, + { + "comment": "Selection but make the planner explicitly use a vindex", + "query": "select intcol, id from user use vindex (name_user_map) where costly = 'aa' and name = 'bb' and id = 3", + "plan": { + "QueryType": "SELECT", + "Original": "select intcol, id from user use vindex (name_user_map) where costly = 'aa' and name = 'bb' and id = 3", + "Instructions": { + "OperatorType": "VindexLookup", + "Variant": "Equal", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "Values": [ + "'bb'" + ], + "Vindex": "name_user_map", + "Inputs": [ + { + "OperatorType": "Route", + "Variant": "IN", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select `name`, keyspace_id from name_user_vdx where 1 != 1", + "Query": "select `name`, keyspace_id from name_user_vdx where `name` in ::__vals", + "Table": "name_user_vdx", + "Values": [ + "::name" + ], + "Vindex": "user_index" + }, + { + "OperatorType": "Route", + "Variant": "ByDestination", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "FieldQuery": "select intcol, id from `user` where 1 != 1", + "Query": "select intcol, id from `user` where costly = 'aa' and `name` = 'bb' and id = 3", + "Table": "`user`" + } + ] + }, + "TablesUsed": [ + "user.user" + ] + } + }, + { + "comment": "Vindex hint on a non-existing vindex", + "query": "select * from user use vindex (does_not_exist) where id = 1", + "plan": "VT09021: Vindex 'does_not_exist' does not exist in table 'user.user'" + }, { "comment": "sharded limit offset", "query": "select user_id from music order by user_id limit 10, 20", diff --git a/go/vt/vtgate/semantics/analyzer_test.go b/go/vt/vtgate/semantics/analyzer_test.go index 0257aad8a72..10f85326751 100644 --- a/go/vt/vtgate/semantics/analyzer_test.go +++ b/go/vt/vtgate/semantics/analyzer_test.go @@ -646,6 +646,37 @@ func TestOrderByBindingTable(t *testing.T) { } } +func TestVindexHints(t *testing.T) { + // tests that vindex hints point to existing vindexes, or an error should be returned + tcases := []struct { + sql string + expectedErr string + }{{ + sql: "select col from t use vindex (does_not_exist)", + expectedErr: "Vindex 'does_not_exist' does not exist in table 'ks1.t'", + }, { + sql: "select col from t ignore vindex (does_not_exist)", + expectedErr: "Vindex 'does_not_exist' does not exist in table 'ks1.t'", + }, { + sql: "select col from t use vindex (id_vindex)", + }, { + sql: "select col from t ignore vindex (id_vindex)", + }} + for _, tc := range tcases { + t.Run(tc.sql, func(t *testing.T) { + parse, err := sqlparser.NewTestParser().Parse(tc.sql) + require.NoError(t, err) + + _, err = AnalyzeStrict(parse, "d", fakeSchemaInfo()) + if tc.expectedErr == "" { + require.NoError(t, err) + } else { + require.ErrorContains(t, err, tc.expectedErr) + } + }) + } +} + func TestGroupByBinding(t *testing.T) { tcases := []struct { sql string @@ -1508,15 +1539,15 @@ func TestSingleUnshardedKeyspace(t *testing.T) { query: "select 1 from t as A, t as B", unsharded: ks1, tables: []*vindexes.Table{ - {Keyspace: ks1, Name: sqlparser.NewIdentifierCS("t")}, - {Keyspace: ks1, Name: sqlparser.NewIdentifierCS("t")}, + tableT(), + tableT(), }, }, { query: "insert into t select * from t", unsharded: ks1, tables: []*vindexes.Table{ - {Keyspace: ks1, Name: sqlparser.NewIdentifierCS("t")}, - {Keyspace: ks1, Name: sqlparser.NewIdentifierCS("t")}, + tableT(), + tableT(), }, }, } @@ -1622,29 +1653,53 @@ var ks3 = &vindexes.Keyspace{ // create table t1(id bigint) // create table t2(uid bigint, name varchar(255)) func fakeSchemaInfo() *FakeSI { - cols1 := []vindexes.Column{{ - Name: sqlparser.NewIdentifierCI("id"), - Type: querypb.Type_INT64, - }} - cols2 := []vindexes.Column{{ - Name: sqlparser.NewIdentifierCI("uid"), - Type: querypb.Type_INT64, - }, { - Name: sqlparser.NewIdentifierCI("name"), - Type: querypb.Type_VARCHAR, - CollationName: "utf8_bin", - }, { - Name: sqlparser.NewIdentifierCI("textcol"), - Type: querypb.Type_VARCHAR, - CollationName: "big5_bin", - }} si := &FakeSI{ Tables: map[string]*vindexes.Table{ - "t": {Name: sqlparser.NewIdentifierCS("t"), Keyspace: ks1}, - "t1": {Name: sqlparser.NewIdentifierCS("t1"), Columns: cols1, ColumnListAuthoritative: true, Keyspace: ks2}, - "t2": {Name: sqlparser.NewIdentifierCS("t2"), Columns: cols2, ColumnListAuthoritative: true, Keyspace: ks3}, + "t": tableT(), + "t1": tableT1(), + "t2": tableT2(), }, } return si } + +func tableT() *vindexes.Table { + return &vindexes.Table{ + Name: sqlparser.NewIdentifierCS("t"), + Keyspace: ks1, + ColumnVindexes: []*vindexes.ColumnVindex{ + {Name: "id_vindex"}, + }, + } +} +func tableT1() *vindexes.Table { + return &vindexes.Table{ + Name: sqlparser.NewIdentifierCS("t1"), + Columns: []vindexes.Column{{ + Name: sqlparser.NewIdentifierCI("id"), + Type: querypb.Type_INT64, + }}, + ColumnListAuthoritative: true, + Keyspace: ks2, + } +} +func tableT2() *vindexes.Table { + return &vindexes.Table{ + Name: sqlparser.NewIdentifierCS("t2"), + Columns: []vindexes.Column{{ + Name: sqlparser.NewIdentifierCI("uid"), + Type: querypb.Type_INT64, + }, { + Name: sqlparser.NewIdentifierCI("name"), + Type: querypb.Type_VARCHAR, + CollationName: "utf8_bin", + }, { + Name: sqlparser.NewIdentifierCI("textcol"), + Type: querypb.Type_VARCHAR, + CollationName: "big5_bin", + }}, + ColumnListAuthoritative: true, + Keyspace: ks3, + } +} diff --git a/go/vt/vtgate/semantics/check_invalid.go b/go/vt/vtgate/semantics/check_invalid.go index 54b2de5c36f..38dacefa1f0 100644 --- a/go/vt/vtgate/semantics/check_invalid.go +++ b/go/vt/vtgate/semantics/check_invalid.go @@ -30,6 +30,8 @@ func (a *analyzer) checkForInvalidConstructs(cursor *sqlparser.Cursor) error { return a.checkSelect(cursor, node) case *sqlparser.Nextval: return a.checkNextVal() + case *sqlparser.AliasedTableExpr: + return checkAliasedTableExpr(node) case *sqlparser.JoinTableExpr: return a.checkJoin(node) case *sqlparser.LockingFunc: @@ -191,3 +193,26 @@ func checkUpdate(node *sqlparser.Update) error { } return nil } + +// checkAliasedTableExpr checks the validity of AliasedTableExpr. +func checkAliasedTableExpr(node *sqlparser.AliasedTableExpr) error { + if len(node.Hints) == 0 { + return nil + } + alreadySeenVindexHint := false + for _, hint := range node.Hints { + if hint.Type.IsVindexHint() { + if alreadySeenVindexHint { + // TableName is safe to call, because only TableExpr can have hints. + // And we already checked for hints being empty. + tableName, err := node.TableName() + if err != nil { + return err + } + return &CantUseMultipleVindexHints{Table: sqlparser.String(tableName)} + } + alreadySeenVindexHint = true + } + } + return nil +} diff --git a/go/vt/vtgate/semantics/check_invalid_test.go b/go/vt/vtgate/semantics/check_invalid_test.go new file mode 100644 index 00000000000..004c37fd854 --- /dev/null +++ b/go/vt/vtgate/semantics/check_invalid_test.go @@ -0,0 +1,62 @@ +/* +Copyright 2024 The Vitess Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package semantics + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "vitess.io/vitess/go/vt/sqlparser" +) + +func TestCheckAliasedTableExpr(t *testing.T) { + tests := []struct { + name string + tableString string + wantErr string + }{ + { + name: "Valid AliasedTable - USE VINDEX", + tableString: "payment_pulls use vindex (lookup_vindex_name, x, t)", + }, { + name: "Valid AliasedTable - IGNORE VINDEX", + tableString: "payment_pulls ignore vindex (lookup_vindex_name, x, t)", + }, { + name: "Invalid AliasedTable - multiple USE VINDEX", + tableString: "payment_pulls use vindex (lookup_vindex_name, x, t) use vindex (x)", + wantErr: "VT09020: can not use multiple vindex hints for table payment_pulls", + }, { + name: "Invalid AliasedTable - mixed vindex hints", + tableString: "t.payment_pulls use vindex (lookup_vindex_name, x, t) ignore vindex (x)", + wantErr: "VT09020: can not use multiple vindex hints for table t.payment_pulls", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + stmt, err := sqlparser.NewTestParser().Parse("select * from " + tt.tableString) + require.NoError(t, err) + node := stmt.(*sqlparser.Select).From[0].(*sqlparser.AliasedTableExpr) + err = checkAliasedTableExpr(node) + if tt.wantErr != "" { + require.EqualError(t, err, tt.wantErr) + } else { + require.NoError(t, err) + } + }) + } +} diff --git a/go/vt/vtgate/semantics/early_rewriter.go b/go/vt/vtgate/semantics/early_rewriter.go index 08d432ae9d0..ed1f30c670e 100644 --- a/go/vt/vtgate/semantics/early_rewriter.go +++ b/go/vt/vtgate/semantics/early_rewriter.go @@ -43,7 +43,7 @@ func (r *earlyRewriter) down(cursor *sqlparser.Cursor) error { case sqlparser.SelectExprs: return r.handleSelectExprs(cursor, node) case *sqlparser.JoinTableExpr: - r.handleJoinTableExpr(node) + r.handleJoinTableExprDown(node) case sqlparser.OrderBy: r.clause = "order clause" iter := &orderByIterator{ @@ -72,21 +72,26 @@ func (r *earlyRewriter) down(cursor *sqlparser.Cursor) error { case *sqlparser.AliasedTableExpr: return r.handleAliasedTable(node) case *sqlparser.Delete: - // When we do not have any target, it is a single table delete. - // In a single table delete, the table references is always a single aliased table expression. - if len(node.Targets) != 0 { - return nil - } - tblExpr, ok := node.TableExprs[0].(*sqlparser.AliasedTableExpr) - if !ok { - return nil - } - tblName, err := tblExpr.TableName() - if err != nil { - return err - } - node.Targets = append(node.Targets, tblName) + return handleDelete(node) + } + return nil +} + +func handleDelete(del *sqlparser.Delete) error { + // When we do not have any target, it is a single table delete. + // In a single table delete, the table references is always a single aliased table expression. + if len(del.Targets) != 0 { + return nil + } + tblExpr, ok := del.TableExprs[0].(*sqlparser.AliasedTableExpr) + if !ok { + return nil + } + tblName, err := tblExpr.TableName() + if err != nil { + return err } + del.Targets = append(del.Targets, tblName) return nil } @@ -140,21 +145,32 @@ func rewriteNotExpr(cursor *sqlparser.Cursor, node *sqlparser.NotExpr) { } func (r *earlyRewriter) up(cursor *sqlparser.Cursor) error { + switch node := cursor.Node().(type) { + case *sqlparser.JoinTableExpr: + return r.handleJoinTableExprUp(node) + case *sqlparser.AliasedTableExpr: + // this rewriting is done in the `up` phase, because we need the vindex hints to have been + // processed while collecting the tables. + return removeVindexHints(node) + } + return nil +} + +func (r *earlyRewriter) handleJoinTableExprUp(join *sqlparser.JoinTableExpr) error { // this rewriting is done in the `up` phase, because we need the scope to have been // filled in with the available tables - node, ok := cursor.Node().(*sqlparser.JoinTableExpr) - if !ok || len(node.Condition.Using) == 0 { + if len(join.Condition.Using) == 0 { return nil } - err := rewriteJoinUsing(r.binder, node) + err := rewriteJoinUsing(r.binder, join) if err != nil { return err } // since the binder has already been over the join, we need to invoke it again, so it // can bind columns to the right tables - sqlparser.Rewrite(node.Condition.On, nil, func(cursor *sqlparser.Cursor) bool { + sqlparser.Rewrite(join.Condition.On, nil, func(cursor *sqlparser.Cursor) bool { innerErr := r.binder.up(cursor) if innerErr == nil { return true @@ -166,6 +182,22 @@ func (r *earlyRewriter) up(cursor *sqlparser.Cursor) error { return err } +// removeVindexHints removes the vindex hints from the aliased table expression provided. +func removeVindexHints(node *sqlparser.AliasedTableExpr) error { + if len(node.Hints) == 0 { + return nil + } + var newHints sqlparser.IndexHints + for _, hint := range node.Hints { + if hint.Type.IsVindexHint() { + continue + } + newHints = append(newHints, hint) + } + node.Hints = newHints + return nil +} + // handleWhereClause processes WHERE clauses, specifically the HAVING clause. func (r *earlyRewriter) handleWhereClause(node *sqlparser.Where, parent sqlparser.SQLNode) error { sel, ok := parent.(*sqlparser.Select) @@ -193,8 +225,8 @@ func (r *earlyRewriter) handleSelectExprs(cursor *sqlparser.Cursor, node sqlpars return r.expandStar(cursor, node) } -// handleJoinTableExpr processes JOIN table expressions and handles the Straight Join type. -func (r *earlyRewriter) handleJoinTableExpr(node *sqlparser.JoinTableExpr) { +// handleJoinTableExprDown processes JOIN table expressions and handles the Straight Join type. +func (r *earlyRewriter) handleJoinTableExprDown(node *sqlparser.JoinTableExpr) { if node.Join != sqlparser.StraightJoinType { return } diff --git a/go/vt/vtgate/semantics/errors.go b/go/vt/vtgate/semantics/errors.go index 8d0b23d7f82..0be85633632 100644 --- a/go/vt/vtgate/semantics/errors.go +++ b/go/vt/vtgate/semantics/errors.go @@ -51,6 +51,12 @@ type ( AmbiguousColumnError struct{ Column string } SubqueryColumnCountError struct{ Expected int } ColumnsMissingInSchemaError struct{} + CantUseMultipleVindexHints struct{ Table string } + + NoSuchVindexFound struct { + Table string + VindexName string + } UnsupportedMultiTablesInUpdateError struct { ExprCount int @@ -261,3 +267,21 @@ func (e *ColumnsMissingInSchemaError) Error() string { func (e *ColumnsMissingInSchemaError) ErrorCode() vtrpcpb.Code { return vtrpcpb.Code_INVALID_ARGUMENT } + +// CantUseMultipleVindexHints +func (c *CantUseMultipleVindexHints) Error() string { + return vterrors.VT09020(c.Table).Error() +} + +func (c *CantUseMultipleVindexHints) ErrorCode() vtrpcpb.Code { + return vtrpcpb.Code_FAILED_PRECONDITION +} + +// CantUseMultipleVindexHints +func (c *NoSuchVindexFound) Error() string { + return vterrors.VT09021(c.VindexName, c.Table).Error() +} + +func (c *NoSuchVindexFound) ErrorCode() vtrpcpb.Code { + return vtrpcpb.Code_FAILED_PRECONDITION +} diff --git a/go/vt/vtgate/semantics/info_schema_gen_test.go b/go/vt/vtgate/semantics/info_schema_gen_test.go index c2c5e07bf82..efa7433dd05 100644 --- a/go/vt/vtgate/semantics/info_schema_gen_test.go +++ b/go/vt/vtgate/semantics/info_schema_gen_test.go @@ -29,7 +29,6 @@ import ( "vitess.io/vitess/go/mysql/collations" "vitess.io/vitess/go/sqltypes" - "vitess.io/vitess/go/vt/sqlparser" ) diff --git a/go/vt/vtgate/semantics/real_table.go b/go/vt/vtgate/semantics/real_table.go index d12df6acfa9..a8c3d699b59 100644 --- a/go/vt/vtgate/semantics/real_table.go +++ b/go/vt/vtgate/semantics/real_table.go @@ -31,6 +31,7 @@ type RealTable struct { dbName, tableName string ASTNode *sqlparser.AliasedTableExpr Table *vindexes.Table + VindexHint *sqlparser.IndexHint isInfSchema bool collationEnv *collations.Environment } @@ -102,6 +103,11 @@ func (r *RealTable) GetVindexTable() *vindexes.Table { return r.Table } +// GetVindexHint implements the TableInfo interface +func (r *RealTable) GetVindexHint() *sqlparser.IndexHint { + return r.VindexHint +} + // Name implements the TableInfo interface func (r *RealTable) Name() (sqlparser.TableName, error) { return r.ASTNode.TableName() diff --git a/go/vt/vtgate/semantics/table_collector.go b/go/vt/vtgate/semantics/table_collector.go index 3d070583347..90f939538a6 100644 --- a/go/vt/vtgate/semantics/table_collector.go +++ b/go/vt/vtgate/semantics/table_collector.go @@ -17,6 +17,8 @@ limitations under the License. package semantics import ( + "fmt" + querypb "vitess.io/vitess/go/vt/proto/query" "vitess.io/vitess/go/vt/sqlparser" "vitess.io/vitess/go/vt/vterrors" @@ -116,7 +118,10 @@ func (tc *tableCollector) handleTableName(node *sqlparser.AliasedTableExpr, t sq } scope := tc.scoper.currentScope() - tableInfo := tc.createTable(t, node, tbl, isInfSchema, vindex) + tableInfo, err := tc.createTable(t, node, tbl, isInfSchema, vindex) + if err != nil { + return err + } tc.Tables = append(tc.Tables, tableInfo) return scope.addTable(tableInfo) @@ -229,11 +234,18 @@ func (tc *tableCollector) createTable( tbl *vindexes.Table, isInfSchema bool, vindex vindexes.Vindex, -) TableInfo { +) (TableInfo, error) { + hint := getVindexHint(alias.Hints) + + if err := checkValidVindexHints(hint, tbl); err != nil { + return nil, err + } + table := &RealTable{ tableName: alias.As.String(), ASTNode: alias, Table: tbl, + VindexHint: hint, isInfSchema: isInfSchema, collationEnv: tc.si.Environment().CollationEnv(), } @@ -252,7 +264,37 @@ func (tc *tableCollector) createTable( return &VindexTable{ Table: table, Vindex: vindex, + }, nil + } + return table, nil +} + +func checkValidVindexHints(hint *sqlparser.IndexHint, tbl *vindexes.Table) error { + if hint == nil { + return nil + } +outer: + for _, index := range hint.Indexes { + for _, columnVindex := range tbl.ColumnVindexes { + if index.EqualString(columnVindex.Name) { + continue outer + } + } + // we found a hint on a non-existing vindex + return &NoSuchVindexFound{ + Table: fmt.Sprintf("%s.%s", tbl.Keyspace.Name, tbl.Name.String()), + VindexName: index.String(), } } - return table + return nil +} + +// getVindexHint gets the vindex hint from the list of IndexHints. +func getVindexHint(hints sqlparser.IndexHints) *sqlparser.IndexHint { + for _, hint := range hints { + if hint.Type.IsVindexHint() { + return hint + } + } + return nil }