From 38573f035107df3a7de9666c066e7e64c4dbb12d Mon Sep 17 00:00:00 2001 From: Harshit Gangal Date: Mon, 29 Jan 2024 18:26:51 +0530 Subject: [PATCH] Explain Statement plan improvement (#14928) Signed-off-by: Harshit Gangal Signed-off-by: Andres Taylor Co-authored-by: Andres Taylor --- changelog/19.0/19.0.0/summary.md | 11 + go/vt/sqlparser/ast_funcs.go | 26 +- go/vt/sqlparser/constants.go | 4 - go/vt/sqlparser/parse_test.go | 15 +- go/vt/sqlparser/sql.go | 6868 ++++++++--------- go/vt/sqlparser/sql.y | 8 - go/vt/vterrors/code.go | 2 + go/vt/vtgate/executor_test.go | 190 +- go/vt/vtgate/planbuilder/builder.go | 26 +- go/vt/vtgate/planbuilder/delete.go | 7 +- go/vt/vtgate/planbuilder/dml_planner.go | 63 - go/vt/vtgate/planbuilder/insert.go | 11 +- .../planbuilder/operator_transformers.go | 6 + .../planbuilder/operators/SQL_builder.go | 4 +- .../vtgate/planbuilder/operators/ast_to_op.go | 2 +- go/vt/vtgate/planbuilder/operators/join.go | 4 +- .../planbuilder/operators/subquery_builder.go | 2 +- go/vt/vtgate/planbuilder/operators/table.go | 2 +- go/vt/vtgate/planbuilder/rewrite.go | 17 +- .../planbuilder/single_sharded_shortcut.go | 2 +- .../planbuilder/testdata/dml_cases.json | 4 +- .../testdata/other_read_cases.json | 95 +- .../testdata/unsupported_cases.json | 5 + go/vt/vtgate/planbuilder/update.go | 7 +- go/vt/vtgate/planbuilder/vexplain.go | 74 +- go/vt/vtgate/semantics/semantic_state.go | 28 + go/vt/vtgate/testdata/executorVSchema.json | 2 +- 27 files changed, 3739 insertions(+), 3746 deletions(-) delete mode 100644 go/vt/vtgate/planbuilder/dml_planner.go diff --git a/changelog/19.0/19.0.0/summary.md b/changelog/19.0/19.0.0/summary.md index e6203044763..00395d26471 100644 --- a/changelog/19.0/19.0.0/summary.md +++ b/changelog/19.0/19.0.0/summary.md @@ -7,6 +7,7 @@ - **[Deprecations and Deletions](#deprecations-and-deletions)** - [VTTablet Flags](#vttablet-flags) - [MySQL binary in vitess/lite Docker image](#mysql-binary-in-lite-image) + - [Explain Statement Format](#explain-stmt-format) - **[Breaking Changes](#breaking-changes)** - [ExecuteFetchAsDBA rejects multi-statement SQL](#execute-fetch-as-dba-reject-multi) - **[New Stats](#new-stats)** @@ -18,6 +19,7 @@ - [Multi Table Delete Support](#multi-table-delete) - [`SHOW VSCHEMA KEYSPACES` Query](#show-vschema-keyspaces) - [`FOREIGN_KEY_CHECKS` is now a Vitess Aware Variable](#fk-checks-vitess-aware) + - [Explain Statement](#explain-statement) - [Partial Multi-shard Commit Warnings](#partial-multi-shard-commit-warnings) - **[Vttestserver](#vttestserver)** - [`--vtcombo-bind-host` flag](#vtcombo-bind-host) @@ -64,6 +66,11 @@ Below is an example of a kubernetes yaml file before and after upgrading to an o mysql80Compatible: mysql:8.0.30 # or even mysql:8.0.34 for instance ``` +#### Explain Statement Format + +Explain statement format `vitess` and `vexplain` were deprecated in v16 and removed in v19 version. +Use [VExplain Statement](https://vitess.io/docs/19.0/user-guides/sql/vexplain/) for understanding Vitess plans. + ### Breaking Changes #### ExecuteFetchAsDBA rejects multi-statement SQL @@ -131,6 +138,10 @@ mysql> show vschema keyspaces; When VTGate receives a query to change the `FOREIGN_KEY_CHECKS` value for a session, instead of sending the value down to MySQL, VTGate now keeps track of the value and changes the queries by adding `SET_VAR(FOREIGN_KEY_CHECKS=On/Off)` style query optimizer hints wherever required. +#### Explain Statement + +`Explain` statement can handle routed table queries now. `Explain` is unsupported when the tables involved in the query refers more than one keyspace. Users should use [VExplain Statement](https://vitess.io/docs/19.0/user-guides/sql/vexplain/) in those cases. + #### Partial Multi-shard Commit Warnings When using `multi` transaction mode (the default), it is possible for Vitess to successfully commit to one shard, but fail to commit to a subsequent shard, thus breaking the atomicity of a multi-shard transaction. diff --git a/go/vt/sqlparser/ast_funcs.go b/go/vt/sqlparser/ast_funcs.go index 54195ed435c..f7e0af8373f 100644 --- a/go/vt/sqlparser/ast_funcs.go +++ b/go/vt/sqlparser/ast_funcs.go @@ -1815,10 +1815,6 @@ func (ty ExplainType) ToString() string { return TreeStr case JSONType: return JSONStr - case VitessType: - return VitessStr - case VTExplainType: - return VTExplainStr case TraditionalType: return TraditionalStr case AnalyzeType: @@ -2154,8 +2150,8 @@ func (s SelectExprs) AllAggregation() bool { return true } -// RemoveKeyspace removes the Qualifier.Qualifier on all ColNames in the AST -func RemoveKeyspace(in SQLNode) { +// RemoveKeyspaceInCol removes the Qualifier.Qualifier on all ColNames in the AST +func RemoveKeyspaceInCol(in SQLNode) { // Walk will only return an error if we return an error from the inner func. safe to ignore here _ = Walk(func(node SQLNode) (kontinue bool, err error) { if col, ok := node.(*ColName); ok && col.Qualifier.Qualifier.NotEmpty() { @@ -2179,6 +2175,24 @@ func RemoveKeyspaceInTables(in SQLNode) { }) } +// RemoveKeyspace removes the Qualifier.Qualifier on all ColNames and Qualifier on all TableNames in the AST +func RemoveKeyspace(in SQLNode) { + Rewrite(in, nil, func(cursor *Cursor) bool { + switch expr := cursor.Node().(type) { + case *ColName: + if expr.Qualifier.Qualifier.NotEmpty() { + expr.Qualifier.Qualifier = NewIdentifierCS("") + } + case TableName: + if expr.Qualifier.NotEmpty() { + expr.Qualifier = NewIdentifierCS("") + cursor.Replace(expr) + } + } + return true + }) +} + func convertStringToInt(integer string) int { val, _ := strconv.Atoi(integer) return val diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go index 42b7cdb4c28..44b88384551 100644 --- a/go/vt/sqlparser/constants.go +++ b/go/vt/sqlparser/constants.go @@ -262,10 +262,8 @@ const ( EmptyStr = "" TreeStr = "tree" JSONStr = "json" - VitessStr = "vitess" TraditionalStr = "traditional" AnalyzeStr = "analyze" - VTExplainStr = "vtexplain" QueriesStr = "queries" AllVExplainStr = "all" PlanStr = "plan" @@ -810,8 +808,6 @@ const ( EmptyType ExplainType = iota TreeType JSONType - VitessType - VTExplainType TraditionalType AnalyzeType ) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index f811dad57d7..156c17b57cf 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -28,12 +28,11 @@ import ( "sync" "testing" - "vitess.io/vitess/go/test/utils" - "github.com/google/go-cmp/cmp" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "vitess.io/vitess/go/test/utils" ) var ( @@ -2524,16 +2523,6 @@ var ( input: "explain format = tree select * from t", }, { input: "explain format = json select * from t", - }, { - input: "explain format = vtexplain select * from t", - }, { - input: "explain format = vitess select * from t", - }, { - input: "describe format = vitess select * from t", - output: "explain format = vitess select * from t", - }, { - input: "describe format = vtexplain select * from t", - output: "explain format = vtexplain select * from t", }, { input: "explain delete from t", }, { diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 45ddaeb969c..1caedc317b1 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -1517,7 +1517,7 @@ var yyExca = [...]int{ 243, 815, -2, 813, -1, 122, - 240, 1595, + 240, 1593, -2, 133, -1, 124, 1, 160, @@ -1536,18 +1536,18 @@ var yyExca = [...]int{ 164, 41, -2, 45, -1, 940, - 87, 1612, - -2, 1461, + 87, 1610, + -2, 1459, -1, 941, - 87, 1613, - 223, 1617, - -2, 1462, + 87, 1611, + 223, 1615, + -2, 1460, -1, 942, - 223, 1616, + 223, 1614, -2, 42, -1, 1025, - 60, 889, - -2, 904, + 60, 887, + -2, 902, -1, 1113, 251, 43, 256, 43, @@ -1557,14 +1557,14 @@ var yyExca = [...]int{ 733, 580, -2, 167, -1, 1501, - 223, 1617, - -2, 1462, + 223, 1615, + -2, 1460, -1, 1710, - 60, 890, - -2, 909, + 60, 888, + -2, 907, -1, 1711, - 60, 891, - -2, 910, + 60, 889, + -2, 908, -1, 1766, 136, 167, 178, 167, @@ -1579,11 +1579,11 @@ var yyExca = [...]int{ 256, 44, -2, 420, -1, 2295, - 223, 1621, - -2, 1615, - -1, 2296, - 223, 1617, + 223, 1619, -2, 1613, + -1, 2296, + 223, 1615, + -2, 1611, -1, 2398, 136, 167, 178, 167, @@ -1592,20 +1592,20 @@ var yyExca = [...]int{ -1, 2405, 26, 188, -2, 190, - -1, 2861, + -1, 2859, 78, 98, 88, 98, - -2, 968, - -1, 2930, + -2, 966, + -1, 2928, 708, 700, -2, 674, - -1, 3138, - 50, 1563, - -2, 1557, - -1, 3953, + -1, 3136, + 50, 1561, + -2, 1555, + -1, 3951, 708, 700, -2, 688, - -1, 4040, + -1, 4038, 90, 632, 95, 632, 105, 632, @@ -1651,91 +1651,91 @@ var yyExca = [...]int{ 219, 632, 220, 632, 221, 632, - -2, 1985, + -2, 1983, } const yyPrivate = 57344 -const yyLast = 55603 +const yyLast = 55501 var yyAct = [...]int{ - 956, 3615, 3616, 87, 3614, 4038, 4115, 3934, 944, 3290, - 4128, 4019, 4082, 1266, 951, 3566, 943, 2089, 4083, 4007, - 2395, 3918, 3190, 1264, 3248, 3197, 3419, 3843, 2101, 3239, - 2324, 3253, 3250, 3249, 3247, 3252, 1769, 3251, 3151, 3916, - 3553, 2326, 3268, 1976, 2469, 2757, 3205, 3984, 3267, 2032, - 738, 3091, 5, 3155, 3152, 3464, 3458, 3653, 2994, 2350, - 909, 2821, 3139, 42, 732, 2366, 1725, 765, 905, 3450, - 1825, 2369, 733, 904, 3270, 2432, 2895, 3297, 2976, 2927, - 2457, 3484, 2437, 2897, 2896, 163, 1023, 2383, 87, 2500, - 1043, 1075, 1020, 43, 1145, 1872, 2846, 2371, 41, 1712, - 2370, 3149, 2813, 2827, 2291, 2797, 2279, 1023, 2246, 2247, - 2085, 2124, 2968, 2040, 2456, 2478, 149, 2517, 1854, 2439, - 2888, 1108, 1085, 2358, 1758, 1103, 2863, 1738, 2373, 1691, - 1513, 2128, 100, 104, 2060, 105, 2344, 1440, 1425, 1972, - 1861, 1082, 1079, 748, 1114, 3154, 1022, 1953, 1026, 2454, - 1083, 1111, 2428, 735, 1109, 1110, 1757, 1121, 2429, 1060, - 2834, 1062, 1743, 2155, 2292, 2197, 3648, 1045, 1032, 2795, - 743, 1042, 3906, 2351, 1473, 107, 2031, 1029, 1497, 1254, - 85, 1028, 1984, 2136, 1820, 167, 1027, 127, 125, 906, - 1018, 1055, 99, 126, 1846, 132, 133, 1194, 1030, 742, - 98, 4116, 1262, 1517, 3554, 1240, 106, 2471, 2472, 2473, - 3969, 84, 1522, 93, 3236, 2471, 2950, 2949, 2515, 2918, - 3546, 1441, 4065, 1050, 1054, 3509, 725, 1017, 2984, 2985, - 3965, 3964, 1035, 2321, 2322, 670, 3970, 1938, 128, 2047, - 1150, 1076, 2046, 2045, 2044, 2043, 1147, 2042, 134, 2015, - 1687, 1210, 3619, 667, 4059, 668, 2793, 3135, 4086, 1164, - 1165, 1166, 1436, 1169, 1170, 1171, 1172, 3095, 1729, 1175, - 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, - 1186, 1187, 1188, 1189, 1190, 1191, 736, 1069, 1124, 1211, - 1070, 1019, 2504, 1036, 1125, 95, 2565, 1021, 1730, 726, - 2, 3943, 1100, 2920, 95, 2940, 2823, 1151, 1154, 1155, - 128, 3258, 1099, 1098, 1727, 4121, 1158, 1457, 1097, 3619, - 1044, 4138, 1087, 2063, 3255, 728, 4081, 4106, 3258, 1451, - 710, 95, 3965, 3424, 1092, 910, 2503, 4069, 4067, 3618, - 4120, 1167, 3423, 710, 1728, 111, 112, 113, 190, 116, - 2347, 1016, 122, 95, 704, 191, 2346, 2943, 662, 1068, - 1072, 908, 4068, 4066, 3919, 2758, 2052, 3256, 3316, 3839, - 723, 724, 129, 3838, 3559, 704, 1719, 3560, 128, 1149, - 1011, 1012, 1013, 1014, 3256, 172, 1148, 1025, 960, 961, - 962, 4096, 3849, 3262, 2574, 4063, 1101, 960, 961, 962, - 1068, 1072, 908, 86, 704, 3578, 3618, 1427, 3567, 4008, - 3262, 86, 4016, 2497, 3848, 1057, 1058, 2094, 701, 4043, - 86, 3336, 1835, 1759, 1247, 1760, 1249, 2837, 2877, 2872, - 3187, 3188, 2871, 2390, 2391, 2873, 2024, 2025, 1447, 2164, - 2794, 169, 3186, 2983, 170, 704, 3577, 4020, 2571, 2389, - 4048, 2967, 2838, 1454, 1230, 1455, 1456, 1009, 1008, 2572, - 3666, 3935, 1235, 1236, 1246, 1248, 686, 189, 4046, 2921, - 2502, 1096, 1259, 1203, 1204, 1218, 1437, 4052, 4053, 684, - 1219, 95, 2884, 3948, 1231, 1224, 3207, 3208, 1217, 95, - 1216, 3294, 1218, 4047, 2448, 3029, 86, 1219, 95, 88, - 1980, 2408, 2407, 3324, 2323, 1206, 704, 3259, 2995, 3322, - 4087, 2830, 2831, 704, 4024, 3292, 2563, 2442, 2023, 681, - 1755, 2027, 718, 4024, 3259, 722, 1193, 3298, 696, 1094, - 716, 4088, 2969, 1695, 704, 2479, 3890, 2156, 3891, 2928, - 3285, 2953, 2158, 691, 2518, 1928, 2163, 2159, 3286, 2354, - 2160, 2161, 2162, 4118, 694, 2157, 2165, 2166, 2167, 2168, - 2169, 2170, 2171, 2172, 2173, 1954, 705, 1237, 2524, 1426, - 1251, 1244, 1474, 2522, 95, 1245, 1168, 1238, 1256, 1232, - 1225, 173, 1258, 1239, 3295, 1250, 1061, 705, 1257, 1929, - 179, 1930, 2997, 1199, 3313, 3206, 1475, 1476, 1477, 1478, - 1479, 1480, 1481, 1483, 1482, 1484, 1485, 3209, 3293, 2541, - 1243, 2542, 2971, 2543, 3548, 2521, 705, 2520, 2566, 2567, - 2569, 2568, 671, 2525, 673, 687, 3547, 707, 2523, 706, - 677, 2544, 675, 679, 688, 680, 1174, 674, 1981, 685, - 1233, 1234, 676, 689, 690, 693, 697, 698, 699, 695, - 692, 4060, 683, 708, 2482, 2957, 2958, 705, 1095, 1173, - 3823, 3030, 3623, 3007, 3006, 3005, 2441, 1104, 2999, 2367, - 3003, 1105, 2998, 3461, 2996, 1105, 3094, 1143, 1698, 3001, - 1071, 1065, 1063, 1142, 1141, 1140, 1139, 4093, 3000, 2531, - 2527, 2529, 2530, 2528, 2532, 2533, 2534, 1138, 1137, 1136, - 1131, 1263, 3209, 1263, 1263, 1839, 3002, 3004, 1144, 1080, - 4139, 1080, 1080, 1116, 1117, 164, 1078, 1973, 705, 2455, - 1153, 1071, 1065, 1063, 1056, 705, 1116, 2972, 2508, 2507, - 1152, 1969, 1446, 1443, 1444, 1445, 1450, 1452, 1449, 1428, - 1448, 1161, 2352, 2353, 3229, 2952, 705, 1756, 1833, 1832, - 1442, 1023, 1498, 1503, 1504, 1831, 1507, 1509, 1510, 1511, - 1512, 2938, 1515, 1516, 1518, 1518, 2922, 1518, 1518, 1523, + 956, 3613, 3614, 87, 3612, 4036, 4113, 3932, 4017, 3288, + 4126, 944, 4080, 1266, 951, 3564, 943, 2089, 4081, 4005, + 2395, 3916, 3188, 3841, 3246, 3195, 3417, 3251, 2101, 1264, + 2324, 3237, 3551, 3248, 3247, 3245, 1769, 3250, 3149, 3249, + 3914, 2326, 2032, 1976, 3089, 5, 3266, 3982, 2469, 2755, + 3203, 3265, 3153, 738, 3462, 3150, 3651, 3456, 2992, 3137, + 905, 3268, 909, 2432, 2893, 42, 765, 2366, 1725, 904, + 1825, 2819, 732, 733, 2974, 2369, 3295, 2925, 2457, 2437, + 2894, 2383, 3448, 3482, 163, 2895, 1023, 1043, 87, 1075, + 2500, 2844, 1020, 41, 43, 1872, 1145, 2795, 2825, 1712, + 2370, 2811, 2247, 2124, 2291, 2085, 2371, 1023, 2246, 2966, + 3147, 1854, 2478, 2279, 2350, 2040, 149, 2456, 2358, 2517, + 2439, 2886, 1085, 1103, 1758, 2861, 1108, 1738, 2373, 1691, + 104, 2128, 100, 1513, 2060, 105, 2344, 1440, 1425, 1972, + 1861, 1082, 1079, 748, 1114, 3152, 2454, 1953, 1022, 1083, + 1026, 1111, 2429, 2428, 1109, 1110, 1121, 1757, 1060, 1743, + 1062, 2197, 2832, 2155, 1473, 3646, 1032, 1042, 99, 1045, + 2136, 3904, 2793, 2351, 743, 107, 2031, 1029, 1254, 2292, + 85, 1027, 1028, 1497, 1984, 167, 127, 125, 126, 906, + 1820, 1018, 735, 1846, 132, 133, 1194, 1055, 1030, 742, + 98, 4114, 1262, 1517, 3552, 1240, 2471, 2472, 2473, 2471, + 84, 1522, 106, 3234, 3967, 1050, 1054, 2948, 2947, 2515, + 2916, 93, 3544, 4063, 2982, 1938, 1441, 1017, 2983, 3963, + 2047, 736, 1035, 2321, 2322, 670, 3507, 2046, 128, 1150, + 3968, 725, 3962, 2045, 2044, 2043, 1076, 134, 1147, 2042, + 1687, 2015, 1210, 667, 2791, 668, 4057, 2565, 3133, 4084, + 1436, 1164, 1165, 1166, 3093, 1169, 1170, 1171, 1172, 1036, + 4136, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, + 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1124, 1211, + 1070, 1069, 1092, 1125, 2821, 2504, 1021, 1019, 3617, 1087, + 3617, 2, 1100, 3941, 4079, 2918, 1457, 1151, 1154, 1155, + 128, 1099, 1098, 1097, 726, 1158, 4104, 4119, 3422, 4067, + 3421, 2347, 710, 2941, 3256, 728, 3917, 2346, 1044, 95, + 3256, 95, 2756, 1729, 1451, 910, 95, 3253, 1727, 2503, + 190, 1167, 4118, 3963, 4066, 1693, 111, 112, 113, 704, + 116, 1016, 710, 122, 4065, 2063, 191, 1719, 2052, 662, + 1068, 1072, 908, 1730, 129, 3314, 95, 3837, 1728, 3836, + 3557, 723, 724, 3558, 4094, 1149, 86, 172, 128, 4064, + 3254, 1011, 1012, 1013, 1014, 3616, 3254, 3616, 1025, 2938, + 1148, 1101, 3847, 4061, 3576, 1427, 3565, 704, 2572, 4006, + 2835, 4014, 86, 2497, 664, 704, 3260, 3846, 960, 961, + 962, 2094, 3260, 960, 961, 962, 1057, 1058, 4041, 3334, + 2875, 2502, 1835, 3575, 1010, 2836, 2792, 1068, 1072, 908, + 86, 2870, 3184, 169, 2869, 2981, 170, 2871, 3185, 3186, + 701, 2569, 1454, 1447, 1455, 1456, 1439, 1091, 2389, 4046, + 1093, 3664, 2390, 2391, 95, 2024, 2025, 2965, 4018, 189, + 1759, 1230, 1760, 2570, 1009, 1008, 1081, 4044, 3933, 1235, + 1236, 1231, 704, 704, 1437, 1259, 4050, 4051, 1218, 2882, + 95, 1980, 1218, 1219, 1193, 3205, 3206, 1219, 686, 2408, + 2407, 86, 4045, 1224, 88, 1217, 3292, 1216, 2563, 3290, + 704, 684, 2828, 2829, 2323, 704, 3322, 3320, 95, 2023, + 1096, 4085, 1203, 1204, 3027, 2448, 2354, 3946, 718, 2027, + 3257, 722, 3296, 716, 2967, 3888, 3257, 3889, 2926, 1695, + 2479, 2524, 4086, 2951, 4022, 1251, 2518, 3283, 2442, 4022, + 4116, 681, 1168, 1954, 1206, 3284, 1233, 1234, 1199, 1096, + 696, 1088, 2541, 3821, 2542, 2969, 2543, 1426, 1090, 1089, + 1256, 705, 1239, 2520, 3546, 691, 1232, 3545, 1094, 95, + 1928, 2544, 1174, 173, 1237, 3542, 694, 2955, 2956, 2566, + 1173, 2567, 179, 2482, 1238, 1258, 2525, 1061, 1225, 3293, + 3621, 1257, 3291, 2522, 3204, 1134, 1474, 2531, 2527, 2529, + 2530, 2528, 2532, 2533, 2534, 2367, 3207, 1094, 2164, 705, + 1105, 1104, 1132, 1698, 1929, 1105, 1930, 705, 3311, 1981, + 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1483, 1482, 1484, + 1485, 1143, 1142, 4137, 1141, 2521, 1140, 1139, 1138, 1137, + 3207, 1136, 1131, 1839, 671, 2919, 673, 687, 2523, 707, + 1144, 706, 677, 4058, 675, 679, 688, 680, 1080, 674, + 4091, 685, 1080, 1117, 676, 689, 690, 693, 697, 698, + 699, 695, 692, 3092, 683, 708, 3459, 1116, 1973, 2455, + 3028, 1071, 1065, 1063, 705, 705, 1153, 2441, 1056, 1080, + 3541, 2970, 1116, 1078, 2508, 2507, 1152, 1095, 1755, 1969, + 1428, 1263, 1161, 1263, 1263, 3227, 2156, 164, 2950, 2352, + 2353, 2158, 705, 1833, 1832, 2163, 2159, 705, 1831, 2160, + 2161, 2162, 4059, 2936, 2157, 2165, 2166, 2167, 2168, 2169, + 2170, 2171, 2172, 2173, 1970, 1829, 1095, 1446, 1443, 1444, + 1445, 1450, 1452, 1449, 1135, 1448, 1209, 661, 1071, 1065, + 1063, 1023, 1498, 1503, 1504, 1442, 1507, 1509, 1510, 1511, + 1512, 1133, 1515, 1516, 1518, 1518, 3929, 1518, 1518, 1523, 1523, 1523, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, @@ -1748,390 +1748,390 @@ var yyAct = [...]int{ 1614, 1615, 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, 1495, 3942, 1252, 2919, 1648, 2942, - 1650, 1651, 1652, 1653, 1654, 1419, 1420, 3507, 3508, 957, - 1508, 3617, 1523, 1523, 1523, 1523, 1523, 1523, 957, 1940, - 1939, 1941, 1942, 1943, 1435, 1102, 709, 1661, 1662, 1663, + 1644, 1645, 1646, 1647, 1495, 2501, 1252, 3940, 1648, 2917, + 1650, 1651, 1652, 1653, 1654, 1419, 1420, 1940, 1939, 1941, + 1942, 1943, 1523, 1523, 1523, 1523, 1523, 1523, 3505, 3506, + 1102, 1418, 1435, 2884, 2953, 1756, 3574, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, - 1674, 1499, 1418, 2941, 2501, 957, 1441, 702, 704, 3576, - 2573, 1134, 165, 1197, 1123, 1064, 2886, 89, 1688, 177, - 4022, 1214, 703, 1220, 1221, 1222, 1223, 3544, 1519, 4022, - 1520, 1521, 3462, 94, 1132, 4051, 3260, 3261, 3617, 1215, - 1123, 94, 1524, 1525, 3407, 1202, 1860, 1260, 1261, 3264, - 94, 2354, 4021, 3260, 3261, 2445, 1064, 1205, 2572, 1488, - 185, 4021, 2955, 2798, 2800, 1718, 3264, 2975, 1488, 1228, - 3314, 1694, 1970, 1123, 1829, 1209, 661, 1685, 2966, 4050, - 1023, 2965, 4132, 4061, 1023, 2499, 3931, 1958, 3498, 1123, - 1023, 1491, 1492, 1493, 1494, 2446, 1489, 1490, 1959, 3103, - 1123, 1505, 2444, 166, 171, 168, 174, 175, 176, 178, - 180, 181, 182, 183, 1451, 1686, 3480, 1122, 1160, 184, - 186, 187, 188, 1116, 1119, 1120, 94, 1080, 2868, 2833, - 3102, 1113, 1117, 2770, 2097, 1747, 2447, 1649, 1208, 124, - 1702, 2396, 3543, 1122, 1706, 2988, 2443, 1488, 1126, 1116, - 1022, 2828, 1112, 1128, 2586, 1859, 3193, 1129, 1127, 669, - 1135, 1485, 3185, 2597, 1468, 1091, 1241, 1719, 1093, 1985, - 1096, 1192, 1039, 1704, 119, 1705, 1122, 104, 1130, 105, - 1213, 2137, 1686, 1133, 1655, 1656, 1657, 1658, 1659, 1660, - 1255, 3956, 1122, 1146, 3539, 2138, 3474, 1692, 1116, 1119, - 1120, 3194, 1080, 1122, 2129, 2519, 1113, 1117, 1126, 1116, - 2036, 1679, 1966, 1128, 1761, 3015, 2911, 1129, 1127, 107, - 705, 1455, 1456, 1447, 2978, 3196, 1439, 4097, 1456, 2977, - 1123, 3662, 2799, 2978, 2129, 1196, 2606, 1955, 2977, 1956, - 1457, 3514, 1957, 3191, 2352, 2353, 2597, 120, 3513, 2486, - 1700, 1869, 1868, 1858, 2496, 1836, 1837, 1838, 2054, 2056, - 2057, 3207, 3208, 1852, 2359, 2360, 2491, 1096, 3192, 1088, - 2494, 1134, 1703, 1132, 1227, 1034, 1090, 1089, 4089, 1923, - 1721, 2498, 1978, 2055, 1845, 1229, 3986, 1874, 1019, 1875, - 1724, 1877, 1879, 1701, 1689, 1883, 1885, 1887, 1889, 1891, - 1864, 1021, 3198, 4130, 2491, 2495, 4131, 1905, 4129, 1752, - 1753, 1263, 2121, 1962, 1242, 1960, 1961, 1986, 1963, 1964, - 1965, 1863, 1913, 1914, 1212, 1094, 2135, 3924, 1919, 1920, - 3499, 3987, 1198, 1122, 3573, 1159, 3574, 1862, 1862, 1156, - 4134, 1195, 4140, 2493, 1828, 1475, 1476, 1477, 1478, 1479, - 1480, 1481, 1483, 1482, 1484, 1485, 3831, 1095, 1855, 3830, - 3821, 1842, 1843, 1841, 1480, 1481, 1483, 1482, 1484, 1485, - 3206, 1457, 3925, 1719, 1866, 3589, 1454, 3588, 1455, 1456, - 2134, 1948, 3209, 2065, 3521, 1707, 1478, 1479, 1480, 1481, - 1483, 1482, 1484, 1485, 1457, 1909, 3520, 2066, 1486, 1487, - 2064, 1901, 3510, 3237, 1904, 1974, 1906, 1474, 3225, 2987, - 2113, 2102, 2103, 2104, 2105, 2115, 2106, 2107, 2108, 2120, - 2116, 2109, 2110, 2117, 2118, 2119, 2111, 2112, 2114, 4141, - 2893, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1483, 1482, - 1484, 1485, 1946, 2892, 128, 1947, 1099, 1098, 2578, 2579, - 2580, 1935, 1097, 1834, 1095, 1476, 1477, 1478, 1479, 1480, - 1481, 1483, 1482, 1484, 1485, 1457, 960, 961, 962, 1991, - 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1459, 1263, 1263, - 2891, 2284, 1987, 1988, 2451, 2281, 710, 1949, 1933, 1932, - 1931, 2013, 87, 1457, 2283, 87, 1992, 1921, 1915, 3195, - 1912, 1911, 1910, 1999, 2000, 2001, 1945, 1454, 955, 1455, - 1456, 1881, 1474, 2012, 1699, 1934, 3017, 1446, 1443, 1444, - 1445, 1450, 1452, 1449, 2284, 1448, 3504, 710, 4090, 3289, - 1454, 1422, 1455, 1456, 2645, 1442, 1475, 1476, 1477, 1478, - 1479, 1480, 1481, 1483, 1482, 1484, 1485, 110, 1755, 4102, - 1719, 1719, 42, 2875, 710, 42, 2467, 2466, 109, 1732, - 108, 101, 2465, 2464, 2092, 2092, 2090, 2090, 2093, 103, - 2463, 2462, 102, 3944, 1989, 1457, 3951, 4100, 1719, 1457, - 3950, 1993, 3928, 1995, 1996, 1997, 1998, 2643, 3927, 1474, - 2002, 1457, 1470, 2058, 1471, 2819, 4117, 1453, 1719, 4077, - 1719, 1454, 2014, 1455, 1456, 1733, 1453, 1719, 1472, 1486, - 1487, 1469, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, - 1483, 1482, 1484, 1485, 1474, 1457, 2585, 1719, 1719, 1454, - 1685, 1455, 1456, 3926, 2175, 3826, 1475, 1476, 1477, 1478, - 1479, 1480, 1481, 1483, 1482, 1484, 1485, 3810, 1475, 1476, - 1477, 1478, 1479, 1480, 1481, 1483, 1482, 1484, 1485, 4030, - 1719, 1457, 3809, 4028, 1719, 3857, 110, 1457, 1686, 85, - 3661, 2037, 85, 2062, 3659, 4026, 1719, 109, 3585, 108, - 2020, 2021, 2819, 4015, 1457, 2068, 1684, 2070, 2071, 2072, - 2073, 2074, 2075, 2077, 2079, 2080, 2081, 2082, 2083, 2084, - 1683, 101, 1682, 1457, 3518, 2067, 2633, 1457, 103, 3903, - 1719, 1454, 102, 1455, 1456, 1454, 1457, 1455, 1456, 2819, - 3994, 2819, 3990, 2295, 1457, 3977, 1719, 1454, 3503, 1455, - 1456, 1457, 3299, 2293, 3296, 2123, 2125, 2096, 3228, 3199, - 3557, 3941, 2603, 3203, 1457, 3901, 1719, 1719, 1499, 3227, - 3202, 3898, 1719, 2294, 2902, 1457, 3834, 1719, 3856, 1457, - 2889, 1454, 2815, 1455, 1456, 2130, 2282, 1719, 2174, 2189, - 2280, 2139, 2140, 2141, 2142, 2819, 3822, 103, 3331, 3557, - 1719, 2819, 3555, 3814, 3204, 2153, 1681, 3880, 1719, 3200, - 2554, 3449, 1719, 2864, 3201, 2491, 1719, 1454, 2864, 1455, - 1456, 1719, 1457, 1454, 2553, 1455, 1456, 2513, 3442, 1719, - 3478, 1719, 3813, 2375, 2512, 2602, 2298, 2299, 2349, 2069, - 1454, 2295, 1455, 1456, 2725, 1719, 3218, 3217, 3439, 1719, - 3565, 2293, 1457, 3215, 3216, 2599, 104, 103, 105, 1454, - 4091, 1455, 1456, 1454, 1719, 1455, 1456, 2329, 1457, 2016, - 2405, 2364, 1454, 1982, 1455, 1456, 2865, 104, 1457, 105, - 1454, 2865, 1455, 1456, 2187, 2061, 2867, 1454, 2929, 1455, - 1456, 2572, 2340, 2377, 2198, 2297, 1457, 1944, 2300, 2301, - 1454, 1457, 1455, 1456, 1936, 1085, 3437, 1719, 1457, 3213, - 3214, 1454, 1926, 1455, 1456, 1454, 1719, 1455, 1456, 1922, - 2414, 2415, 2416, 2417, 1918, 2409, 1736, 2410, 2411, 2412, - 2413, 1917, 2399, 1457, 1035, 1916, 3399, 1719, 1085, 2400, - 2328, 3213, 3212, 2420, 2421, 2422, 2423, 2381, 2843, 1719, - 2907, 1457, 3397, 1719, 2339, 2334, 1734, 2335, 1454, 2316, - 1455, 1456, 3393, 1719, 2271, 2272, 2273, 2274, 2275, 2403, - 2572, 2951, 2342, 1824, 2932, 2434, 2480, 2925, 2926, 2835, - 3390, 1719, 1457, 1253, 2440, 3388, 1719, 2362, 1454, 2835, - 1455, 1456, 1735, 2387, 2386, 2404, 2385, 2819, 2818, 1457, - 2599, 1719, 2402, 2401, 1454, 1069, 1455, 1456, 1070, 3473, - 1457, 2095, 1719, 3150, 1454, 2842, 1455, 1456, 3939, 2318, - 1824, 1823, 1457, 2477, 3473, 2198, 1453, 1457, 3180, 2450, - 1767, 1766, 1454, 109, 1455, 1456, 3818, 1454, 2572, 1455, - 1456, 3475, 3982, 2435, 1454, 1457, 1455, 1456, 3955, 1457, - 2431, 2843, 2424, 2426, 2427, 2449, 2453, 2485, 1457, 2492, - 2488, 3473, 2489, 2819, 2461, 2843, 3386, 1719, 1457, 1454, - 2843, 1455, 1456, 3428, 3215, 3123, 2505, 2388, 2435, 2484, - 2483, 2487, 1124, 3384, 1719, 2599, 1457, 1454, 1125, 1455, - 1456, 2725, 1457, 2630, 3382, 1719, 2629, 2491, 1862, 190, - 2509, 2506, 1453, 2474, 2510, 2511, 3380, 1719, 2357, 1457, - 2923, 3378, 1719, 1720, 1722, 1457, 1723, 2491, 1454, 2319, - 1455, 1456, 2095, 129, 1457, 151, 2038, 2022, 1457, 3376, - 1719, 2593, 1968, 2577, 3540, 1454, 172, 1455, 1456, 1754, - 1107, 1106, 3374, 1719, 95, 2516, 1454, 4056, 1455, 1456, - 3997, 1457, 3372, 1719, 1024, 1457, 190, 1509, 1454, 1509, - 1455, 1456, 3845, 1454, 1726, 1455, 1456, 162, 3811, 3959, - 3370, 1719, 3673, 150, 3538, 2589, 3368, 1719, 3240, 3535, - 129, 1454, 3516, 1455, 1456, 1454, 3341, 1455, 1456, 3340, - 2547, 2295, 169, 172, 1454, 170, 1455, 1456, 1457, 3366, - 1719, 2592, 1826, 2433, 1454, 3287, 1455, 1456, 3364, 1719, - 3242, 1457, 3362, 1719, 1848, 1849, 161, 160, 189, 3522, - 3238, 2294, 1454, 2933, 1455, 1456, 2430, 2425, 1454, 2419, - 1455, 1456, 95, 2418, 2899, 3360, 1719, 1951, 2898, 3346, - 1719, 2562, 1857, 1457, 1853, 1454, 1822, 1455, 1456, 169, - 121, 1454, 170, 1455, 1456, 3526, 2570, 1197, 1457, 3291, - 1454, 3846, 1455, 1456, 1454, 1897, 1455, 1456, 2448, 1457, - 3523, 3524, 3525, 3485, 3486, 189, 1457, 2332, 2018, 2581, - 4112, 666, 3329, 1719, 1457, 4110, 2899, 1454, 2062, 1455, - 1456, 1454, 4084, 1455, 1456, 2790, 1719, 3963, 3885, 2582, - 1457, 2584, 3527, 3528, 3529, 3488, 1457, 3234, 3233, 3232, - 2587, 3150, 2588, 2912, 2548, 1457, 1898, 1899, 1900, 155, - 1850, 158, 3643, 1847, 3642, 156, 157, 2788, 1719, 1893, - 3847, 3491, 173, 1457, 1454, 3490, 1455, 1456, 3169, 2605, - 2019, 179, 2763, 1719, 3168, 2348, 3172, 1454, 1731, 1455, - 1456, 3173, 3479, 2740, 1719, 727, 1457, 2556, 2557, 3170, - 2732, 1719, 2559, 2338, 3171, 2590, 3128, 1037, 2723, 1719, - 3127, 2560, 3641, 1457, 2769, 3466, 1894, 1895, 1896, 1454, - 3923, 1455, 1456, 3465, 2721, 1719, 1457, 3652, 3654, 173, - 2708, 1719, 3469, 2639, 1454, 3137, 1455, 1456, 179, 2706, - 1719, 3174, 1457, 2852, 2853, 1454, 2801, 1455, 1456, 1967, - 1007, 2903, 1454, 1040, 1455, 1456, 1038, 2704, 1719, 1457, - 1454, 1041, 1455, 1456, 1023, 2092, 3211, 2090, 2804, 2882, - 1457, 1163, 1162, 2583, 3140, 3142, 1454, 3307, 1455, 1456, - 2702, 1719, 1454, 3143, 1455, 1456, 1457, 2840, 2841, 2802, - 2137, 1454, 1457, 1455, 1456, 2898, 2375, 2700, 1719, 1023, - 2860, 2981, 1457, 1421, 2138, 2939, 164, 2612, 101, 1454, - 3852, 1455, 1456, 129, 101, 2805, 1457, 2807, 3471, 102, - 2061, 103, 2359, 2360, 2627, 102, 2698, 1719, 4126, 2820, - 103, 1457, 1454, 3230, 1455, 1456, 2839, 1457, 2551, 4035, - 3940, 1457, 3841, 2696, 1719, 3210, 2856, 42, 2343, 1454, - 1457, 1455, 1456, 2540, 2694, 1719, 2857, 108, 2539, 2859, - 2816, 1457, 1454, 164, 1455, 1456, 2595, 2858, 1692, 2792, - 2692, 1719, 1048, 1049, 3126, 2538, 2594, 2829, 1454, 1457, - 1455, 1456, 3125, 3911, 2537, 2536, 2690, 1719, 2535, 3451, - 2885, 2887, 2812, 2576, 1686, 1454, 3910, 1455, 1456, 110, - 2688, 1719, 159, 3888, 2878, 2832, 1454, 2817, 1455, 1456, - 109, 109, 108, 2937, 2862, 2686, 1719, 1457, 3660, 3658, - 3657, 3493, 1454, 1457, 1455, 1456, 2894, 3650, 1454, 2866, - 1455, 1456, 3536, 2869, 2684, 1719, 1457, 3470, 1454, 2440, - 1455, 1456, 2879, 2876, 2132, 2682, 1719, 3468, 1457, 2133, - 2948, 3243, 1454, 2475, 1455, 1456, 2901, 1840, 1457, 2641, - 2890, 2904, 2905, 2680, 1719, 1047, 3649, 1454, 3459, 1455, - 1456, 2835, 110, 1454, 3627, 1455, 1456, 1454, 2900, 1455, - 1456, 2815, 1457, 109, 3031, 2193, 1454, 2631, 1455, 1456, - 2330, 2909, 110, 2913, 2914, 2915, 2908, 1454, 1748, 1455, - 1456, 2678, 1719, 109, 1740, 108, 2945, 2676, 1719, 4113, - 152, 1845, 4114, 153, 103, 1454, 3929, 1455, 1456, 1457, - 2674, 1719, 4114, 4113, 3502, 2934, 2935, 114, 115, 3, - 1457, 2035, 2924, 1719, 10, 2033, 2991, 2992, 9, 1457, - 97, 2944, 3444, 165, 1457, 2034, 1, 1015, 8, 1457, - 177, 1424, 1423, 1454, 3506, 1455, 1456, 4045, 682, 1454, - 2320, 1455, 1456, 1690, 4085, 2277, 2669, 1719, 4041, 4042, - 1937, 2970, 1454, 3008, 1455, 1456, 1927, 1457, 2989, 3568, - 2245, 2973, 3842, 1457, 1454, 3246, 1455, 1456, 2481, 1457, - 3534, 185, 2438, 1115, 1454, 2310, 1455, 1456, 154, 2397, - 165, 2398, 4010, 2665, 1719, 1457, 118, 177, 1073, 117, - 1118, 1226, 1720, 2317, 2663, 1719, 2476, 2946, 1454, 3558, - 1455, 1456, 2883, 2656, 1719, 2406, 3009, 1773, 2654, 1719, - 1771, 3012, 1772, 3440, 166, 171, 168, 174, 175, 176, - 178, 180, 181, 182, 183, 1770, 1775, 2341, 185, 1774, - 184, 186, 187, 188, 3315, 1454, 2632, 1455, 1456, 3406, - 2026, 3405, 717, 2993, 2855, 711, 1454, 3401, 1455, 1456, - 1457, 3010, 192, 3338, 3033, 1454, 1762, 1455, 1456, 3089, - 1454, 2979, 1455, 1456, 2980, 1454, 1741, 1455, 1456, 3337, - 3420, 166, 171, 168, 174, 175, 176, 178, 180, 181, - 182, 183, 1457, 1157, 672, 3219, 2514, 184, 186, 187, - 188, 678, 1506, 1454, 3107, 1455, 1456, 2017, 3124, 1454, - 2870, 1455, 1456, 1067, 1059, 1454, 3096, 1455, 1456, 2331, - 2806, 1066, 3819, 3158, 3098, 3463, 2375, 3136, 3024, 3138, - 2822, 1454, 3141, 1455, 1456, 3134, 2282, 3922, 2282, 1457, - 2280, 3651, 2280, 2452, 3334, 3069, 3995, 2880, 1737, 3157, - 3427, 87, 2604, 2127, 2375, 2375, 2375, 2375, 2375, 3011, - 3079, 3080, 3081, 3082, 3083, 1496, 2374, 3107, 3622, 2053, - 740, 739, 737, 2808, 2375, 1457, 2786, 2375, 3097, 2836, - 3099, 1460, 945, 2990, 3106, 2796, 2377, 1749, 2847, 2845, - 1457, 3162, 1978, 2844, 2549, 2382, 1454, 3131, 1455, 1456, - 3487, 3483, 3179, 4037, 2376, 2372, 2814, 3122, 896, 1457, - 895, 1026, 3118, 1457, 2377, 2377, 2377, 2377, 2377, 749, - 741, 1457, 731, 2785, 894, 3129, 3132, 893, 1454, 3273, - 1455, 1456, 3274, 1457, 2377, 2954, 3288, 2377, 3144, 3145, - 2956, 3263, 2881, 3284, 1028, 3181, 1438, 3161, 3182, 1027, - 1709, 3271, 3164, 3165, 3163, 3167, 1086, 3166, 104, 2781, - 105, 3175, 3312, 3946, 2575, 3183, 3119, 3120, 3121, 1457, - 3335, 1708, 3953, 3189, 2780, 1454, 3254, 1455, 1456, 3552, - 3235, 1457, 2930, 2468, 3130, 69, 46, 3917, 3983, 3071, - 3221, 3073, 3222, 2779, 3220, 888, 885, 2778, 3624, 1457, - 3625, 3626, 3092, 3223, 3224, 2777, 1457, 3084, 3085, 3086, - 3087, 1454, 3093, 1455, 1456, 3966, 3147, 2776, 3272, 3275, - 3967, 884, 3968, 2440, 3276, 3265, 1454, 3244, 1455, 1456, - 2182, 1434, 1431, 4058, 3282, 2028, 96, 3153, 1457, 36, - 35, 34, 3153, 1457, 33, 1454, 32, 1455, 1456, 1454, - 1457, 1455, 1456, 2767, 26, 25, 24, 1454, 3300, 1455, - 1456, 3303, 3302, 23, 22, 2766, 29, 1474, 19, 1454, - 3310, 1455, 1456, 21, 20, 18, 3317, 3318, 3257, 3319, - 3266, 4080, 3321, 2765, 3323, 3320, 3325, 4125, 123, 55, - 2764, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1483, 1482, - 1484, 1485, 52, 50, 131, 1454, 130, 1455, 1456, 53, - 49, 1509, 2591, 1200, 47, 1509, 2596, 1454, 31, 1455, - 1456, 30, 2761, 17, 16, 15, 14, 2756, 3245, 13, - 12, 11, 7, 6, 2749, 1454, 39, 1455, 1456, 2600, - 38, 2601, 1454, 37, 1455, 1456, 2608, 3422, 28, 27, - 2610, 2611, 40, 4, 3426, 2917, 2470, 0, 0, 2617, - 2618, 2619, 2620, 2621, 2622, 2623, 2624, 2625, 2626, 0, - 2628, 0, 0, 0, 1454, 0, 1455, 1456, 0, 1454, - 0, 1455, 1456, 0, 3156, 0, 1454, 0, 1455, 1456, - 0, 2375, 0, 2634, 2635, 2636, 2637, 2638, 3455, 2640, - 3452, 3453, 0, 2642, 3500, 0, 3460, 2647, 2648, 729, - 2649, 3467, 0, 2652, 0, 2653, 2655, 2657, 2658, 2659, - 2660, 2661, 2662, 2664, 2666, 2667, 2668, 2670, 0, 2672, - 2673, 2675, 2677, 2679, 2681, 2683, 2685, 2687, 2689, 2691, - 2693, 2695, 2697, 2699, 2701, 2703, 2705, 2707, 2709, 2710, - 2711, 2377, 2713, 3492, 2715, 3494, 2717, 2718, 3489, 2720, - 2722, 2724, 3495, 3472, 3429, 2727, 3431, 3432, 3433, 2731, - 2121, 3272, 3275, 2736, 2737, 2738, 2739, 3276, 3501, 3305, - 3306, 0, 3517, 0, 3519, 3311, 2750, 2751, 2752, 2753, - 2754, 2755, 0, 0, 2759, 2760, 3562, 3563, 0, 0, - 3457, 0, 2762, 1457, 0, 958, 0, 2768, 3511, 3512, - 959, 0, 0, 2771, 2772, 2773, 2774, 2775, 1046, 0, - 2091, 1052, 1052, 0, 2782, 2783, 0, 2784, 0, 0, - 2787, 2789, 2341, 3482, 2791, 2848, 2851, 2852, 2853, 2849, - 0, 2850, 2854, 0, 2803, 3485, 3486, 0, 0, 0, - 0, 0, 3496, 3497, 0, 0, 0, 0, 0, 0, - 3564, 3545, 1457, 0, 0, 3549, 3550, 3551, 2113, 2102, - 2103, 2104, 2105, 2115, 2106, 2107, 2108, 2120, 2116, 2109, - 2110, 2117, 2118, 2119, 2111, 2112, 2114, 2748, 3580, 3541, - 3542, 0, 0, 0, 0, 965, 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, 0, 1457, 1454, - 0, 1455, 1456, 1457, 0, 0, 2747, 1457, 0, 0, - 0, 1457, 2848, 2851, 2852, 2853, 2849, 1457, 2850, 2854, - 0, 3640, 0, 3644, 3645, 0, 1457, 0, 3630, 0, - 3631, 3632, 3633, 0, 0, 1457, 3620, 0, 0, 0, - 1457, 0, 0, 0, 1457, 0, 3157, 0, 87, 0, - 3157, 0, 0, 0, 0, 3646, 0, 0, 1454, 0, - 1455, 1456, 0, 0, 1457, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3584, 2092, 0, - 2090, 3675, 2746, 0, 3647, 1457, 0, 2745, 0, 3656, - 3655, 2744, 0, 1457, 0, 2743, 0, 3667, 3663, 3665, - 1457, 2742, 0, 0, 0, 0, 0, 0, 42, 0, - 2741, 0, 0, 0, 0, 3825, 0, 0, 0, 2735, - 0, 0, 0, 3679, 2734, 0, 0, 0, 2733, 0, - 0, 0, 0, 0, 1454, 0, 1455, 1456, 0, 1454, - 0, 1455, 1456, 1454, 0, 1455, 1456, 1454, 2730, 1455, - 1456, 3817, 0, 1454, 3816, 1455, 1456, 0, 0, 0, - 0, 3844, 1454, 3832, 1455, 1456, 0, 3815, 0, 2729, - 3837, 1454, 3836, 1455, 1456, 0, 1454, 2728, 1455, 1456, - 1454, 0, 1455, 1456, 2726, 0, 3882, 3883, 3019, 3020, - 3021, 3022, 3023, 0, 0, 3669, 0, 0, 0, 0, - 1454, 0, 1455, 1456, 2092, 0, 2090, 3886, 3028, 0, - 0, 3827, 3828, 3829, 0, 0, 0, 0, 0, 0, - 0, 1454, 3611, 1455, 1456, 3676, 3677, 0, 0, 1454, - 0, 1455, 1456, 3153, 0, 0, 1454, 3157, 1455, 1456, - 0, 0, 0, 3671, 0, 3820, 3889, 0, 0, 0, - 3892, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, - 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, - 1546, 1547, 1548, 1549, 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, 1623, 1624, 1625, 1626, - 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, - 1637, 1638, 1644, 1645, 1646, 1647, 1661, 1662, 1663, 1664, - 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, - 3933, 3156, 3930, 3887, 3915, 3156, 3914, 3912, 3913, 0, - 1457, 0, 0, 0, 3947, 1457, 0, 0, 0, 0, - 0, 1457, 1717, 1713, 0, 0, 1457, 1717, 1713, 0, - 0, 0, 87, 3932, 0, 0, 3159, 1714, 0, 0, - 0, 0, 1714, 0, 0, 0, 0, 0, 1457, 0, - 0, 0, 0, 0, 3177, 0, 0, 3936, 0, 3949, - 1457, 0, 2336, 2337, 1716, 3952, 1715, 1710, 1711, 1716, - 3824, 1715, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3954, 1457, 0, 0, 0, 0, 0, 0, 0, - 0, 3921, 42, 0, 2719, 0, 0, 0, 0, 2716, - 0, 0, 0, 0, 0, 2714, 0, 0, 0, 0, - 2712, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1458, 0, 0, 0, 0, 3972, 3992, 0, 3973, 0, - 0, 87, 2671, 0, 0, 0, 0, 0, 3938, 0, - 0, 0, 0, 0, 2651, 3981, 1454, 0, 1455, 1456, - 1514, 1454, 0, 1455, 1456, 0, 0, 1454, 3988, 1455, - 1456, 0, 1454, 3998, 1455, 1456, 2650, 4023, 4001, 3844, - 4012, 0, 3957, 4009, 0, 4006, 4003, 4002, 4000, 4005, - 3996, 4004, 3309, 0, 1454, 0, 1455, 1456, 0, 0, - 0, 42, 3156, 0, 4033, 0, 1454, 0, 1455, 1456, - 0, 0, 0, 0, 3326, 3327, 4054, 3328, 4044, 3330, - 3332, 4049, 4036, 0, 0, 4062, 0, 0, 1454, 4023, - 1455, 1456, 4064, 3339, 0, 0, 4075, 0, 3343, 3344, - 3345, 3347, 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, - 3356, 3357, 3358, 3359, 3361, 3363, 3365, 3367, 3369, 3371, - 3373, 3375, 3377, 3379, 3381, 3383, 3385, 3387, 3389, 3391, - 3392, 3394, 3395, 3396, 3398, 1978, 4079, 3400, 4095, 3402, - 3403, 3404, 4074, 4105, 3408, 3409, 3410, 3411, 3412, 3413, - 3414, 3415, 3416, 3417, 3418, 2092, 4111, 2090, 4108, 4098, - 4107, 4109, 4104, 3425, 0, 4094, 4023, 3430, 3993, 4119, - 1457, 3434, 3435, 0, 3436, 3438, 4127, 3441, 3443, 3153, - 3445, 3446, 3447, 3448, 4135, 4133, 0, 0, 3454, 0, - 0, 3961, 1457, 1790, 0, 0, 1457, 0, 0, 3971, - 0, 0, 1457, 0, 4144, 4145, 3883, 4143, 0, 0, - 0, 0, 0, 2092, 0, 2090, 4142, 0, 0, 3945, - 0, 0, 0, 3476, 3477, 0, 0, 3481, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4070, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4092, 2646, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2644, 0, 0, 0, - 2609, 0, 0, 0, 0, 0, 2598, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1454, 1739, 1455, 1456, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 86, 44, 45, 88, 0, 1454, 0, - 1455, 1456, 1454, 3556, 1455, 1456, 0, 0, 1454, 1778, - 1455, 1456, 0, 92, 0, 1827, 0, 48, 76, 77, - 0, 74, 78, 0, 0, 0, 0, 0, 0, 0, - 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3575, 0, - 0, 3579, 0, 0, 0, 0, 0, 0, 0, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1693, 95, 0, 0, 0, 0, 0, 0, 3590, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1791, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 664, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3613, 1983, 0, 0, 0, 0, 0, 1010, - 0, 0, 0, 0, 0, 3621, 1804, 1807, 1808, 1809, - 1810, 1811, 1812, 3628, 1813, 1814, 1816, 1817, 1815, 1818, - 1819, 1792, 1793, 1794, 1795, 1776, 1777, 1805, 0, 1779, - 0, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, - 0, 1081, 1789, 1796, 1797, 1798, 1799, 0, 1800, 1801, - 1802, 1803, 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, 3833, 0, - 0, 0, 0, 0, 0, 0, 0, 3840, 0, 0, - 63, 64, 0, 65, 66, 67, 68, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3850, 3851, 0, - 3853, 0, 3854, 3855, 0, 0, 0, 3858, 3859, 3860, + 1674, 1499, 2920, 957, 165, 957, 94, 1441, 709, 1508, + 957, 177, 89, 1860, 2571, 1205, 1064, 3615, 1688, 3615, + 1488, 1214, 1202, 1220, 1221, 1222, 1223, 1215, 1519, 702, + 1520, 1521, 94, 3405, 4049, 3460, 1491, 1492, 1493, 1494, + 4020, 1524, 1525, 2940, 703, 4020, 1505, 1260, 1261, 3258, + 3259, 1488, 185, 1123, 4130, 3258, 3259, 2570, 3496, 1197, + 94, 1228, 3262, 1123, 3478, 1718, 2499, 1201, 3262, 1207, + 2993, 1694, 4019, 1489, 1490, 2866, 2445, 4019, 4048, 1685, + 1023, 2831, 2964, 1064, 1023, 2963, 1247, 2939, 1249, 2768, + 1023, 1123, 2097, 1747, 3312, 166, 171, 168, 174, 175, + 176, 178, 180, 181, 182, 183, 2986, 2796, 2798, 1649, + 1686, 184, 186, 187, 188, 1451, 2446, 704, 1208, 3101, + 3100, 94, 1859, 2444, 124, 2826, 1246, 1248, 669, 1430, + 1959, 1485, 2396, 1488, 3183, 1719, 1123, 2584, 2595, 1468, + 3013, 2973, 1702, 1039, 1213, 119, 1706, 2065, 1255, 3954, + 2129, 1160, 1022, 2909, 2995, 1146, 1122, 2447, 1241, 3537, + 2354, 2066, 1486, 1487, 2064, 1985, 1122, 2443, 1958, 3472, + 1704, 1126, 1116, 3660, 104, 1705, 1128, 1686, 2519, 105, + 1129, 1127, 2036, 1655, 1656, 1657, 1658, 1659, 1660, 2137, + 1966, 1761, 4095, 2129, 1122, 2604, 2491, 1692, 3191, 1456, + 1116, 1119, 1120, 2138, 1080, 1455, 1456, 3512, 1113, 1117, + 3511, 1679, 2486, 1869, 2595, 1868, 1096, 1192, 120, 107, + 1457, 1858, 2496, 2976, 1447, 3005, 3004, 3003, 2975, 1112, + 2997, 2494, 3001, 1244, 2996, 2495, 2994, 1245, 1134, 1122, + 1132, 2999, 4087, 3192, 1126, 1116, 1700, 1250, 3497, 1128, + 2998, 4138, 1034, 1129, 1127, 4132, 1721, 1836, 1837, 1838, + 1123, 1852, 2498, 1123, 1719, 3829, 1227, 3194, 3000, 3002, + 3828, 2134, 1243, 1703, 1130, 4128, 2797, 1229, 4129, 1923, + 4127, 1196, 1978, 2491, 1845, 3189, 3819, 1874, 1212, 1875, + 1724, 1877, 1879, 1864, 1019, 1883, 1885, 1887, 1889, 1891, + 1021, 1701, 3587, 3205, 3206, 1905, 1242, 2976, 3586, 1689, + 3190, 1263, 2975, 1986, 1457, 1752, 1753, 1198, 1955, 1457, + 1956, 1863, 2493, 1957, 1913, 1914, 3571, 2121, 3572, 705, + 1919, 1920, 1948, 1946, 2135, 3519, 1862, 1862, 4139, 3518, + 3984, 2631, 3508, 1828, 3196, 1962, 3922, 1960, 1961, 1457, + 1963, 1964, 1965, 2352, 2353, 3235, 1454, 3223, 1455, 1456, + 1842, 1843, 1841, 1122, 1855, 3015, 1122, 2891, 1159, 1116, + 1119, 1120, 1156, 1080, 1866, 2890, 2889, 1113, 1117, 1480, + 1481, 1483, 1482, 1484, 1485, 3985, 1707, 1195, 2451, 1474, + 2284, 3923, 1470, 1949, 1471, 1909, 1947, 1945, 4100, 1719, + 1933, 1901, 1932, 1095, 1904, 1974, 1906, 1931, 1472, 1486, + 1487, 1469, 3204, 1475, 1476, 1477, 1478, 1479, 1480, 1481, + 1483, 1482, 1484, 1485, 3207, 2113, 2102, 2103, 2104, 2105, + 2115, 2106, 2107, 2108, 2120, 2116, 2109, 2110, 2117, 2118, + 2119, 2111, 2112, 2114, 128, 1099, 1098, 1097, 1935, 3287, + 1454, 1921, 1455, 1456, 1834, 1454, 1915, 1455, 1456, 1912, + 1911, 1751, 1478, 1479, 1480, 1481, 1483, 1482, 1484, 1485, + 1910, 1991, 2054, 2056, 2057, 1422, 1881, 190, 1263, 1263, + 1768, 1699, 1987, 1988, 710, 1454, 1755, 1455, 1456, 2284, + 2013, 4088, 87, 2281, 1732, 87, 1992, 2055, 2576, 2577, + 2578, 129, 2283, 1999, 2000, 2001, 960, 961, 962, 3502, + 710, 3949, 1934, 2012, 172, 3948, 955, 3926, 1446, 1443, + 1444, 1445, 1450, 1452, 1449, 3925, 1448, 1461, 1462, 1463, + 1464, 1465, 1466, 1467, 1459, 3924, 1442, 2873, 710, 1457, + 1733, 3193, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1483, + 1482, 1484, 1485, 3824, 42, 2467, 2466, 42, 2465, 2464, + 3808, 2591, 3807, 1907, 2092, 2092, 2090, 2090, 2093, 3659, + 169, 2463, 2462, 170, 1989, 3657, 110, 1457, 2817, 4115, + 1474, 1993, 2985, 1995, 1996, 1997, 1998, 109, 3583, 108, + 2002, 4075, 1719, 1719, 2058, 1474, 189, 1684, 1952, 1453, + 1719, 3942, 2014, 1683, 1475, 1476, 1477, 1478, 1479, 1480, + 1481, 1483, 1482, 1484, 1485, 1979, 1682, 2643, 3516, 1475, + 1476, 1477, 1478, 1479, 1480, 1481, 1483, 1482, 1484, 1485, + 3501, 1990, 1685, 3297, 2175, 2817, 4013, 1457, 1994, 1476, + 1477, 1478, 1479, 1480, 1481, 1483, 1482, 1484, 1485, 2005, + 2006, 2007, 2008, 2009, 2010, 2011, 2641, 1719, 1474, 1457, + 2583, 4098, 1719, 1686, 2817, 3992, 1453, 1719, 1457, 85, + 3294, 2037, 85, 2062, 1474, 1454, 3226, 1455, 1456, 2601, + 2020, 2021, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1483, + 1482, 1484, 1485, 2817, 3988, 2067, 1457, 3225, 1475, 1476, + 1477, 1478, 1479, 1480, 1481, 1483, 1482, 1484, 1485, 2900, + 173, 3975, 1719, 1454, 2887, 1455, 1456, 1457, 1681, 179, + 2554, 4028, 1719, 2295, 2068, 2553, 2070, 2071, 2072, 2073, + 2074, 2075, 2077, 2079, 2080, 2081, 2082, 2083, 2084, 2293, + 1457, 2513, 2096, 4026, 1719, 1457, 101, 2512, 1499, 2349, + 2123, 2125, 2600, 2294, 3555, 3939, 3855, 102, 2139, 2140, + 2141, 2142, 2280, 1457, 2069, 2130, 3832, 1719, 2174, 2329, + 2593, 110, 2153, 1454, 2282, 1455, 1456, 2817, 3820, 3854, + 2592, 3197, 109, 1457, 108, 3201, 3555, 1719, 2817, 3553, + 2491, 1719, 3200, 103, 2016, 1454, 1982, 1455, 1456, 3476, + 1719, 4024, 1719, 1457, 1454, 1944, 1455, 1456, 2189, 2723, + 1719, 101, 1719, 2375, 3216, 3215, 2298, 2299, 103, 3213, + 3214, 2295, 102, 1936, 3901, 1719, 3202, 3211, 3212, 3899, + 1719, 3198, 1454, 104, 1455, 1456, 3199, 2293, 105, 3211, + 3210, 2841, 1719, 3812, 164, 2041, 1926, 3896, 1719, 3811, + 2405, 2364, 1719, 1454, 104, 1455, 1456, 2570, 2949, 105, + 1824, 2930, 2923, 2924, 2187, 2061, 1922, 3878, 1719, 2817, + 2816, 1457, 2340, 1918, 2198, 2377, 1454, 1719, 1455, 1456, + 1917, 1454, 1457, 1455, 1456, 1085, 1457, 3447, 1719, 2833, + 2297, 2597, 1719, 2300, 2301, 2359, 2360, 2095, 1719, 1454, + 103, 1455, 1456, 1916, 1734, 2409, 1457, 2410, 2411, 2412, + 2413, 2399, 1457, 2813, 1035, 2316, 2328, 2400, 1085, 1454, + 1253, 1455, 1456, 2420, 2421, 2422, 2423, 1457, 103, 2381, + 2862, 2334, 1457, 2335, 3563, 2862, 1824, 1823, 2927, 1454, + 2905, 1455, 1456, 2434, 2271, 2272, 2273, 2274, 2275, 2339, + 2342, 1767, 1766, 1457, 2403, 2414, 2415, 2416, 2417, 1719, + 2480, 2841, 2440, 109, 2362, 2404, 4076, 1719, 1457, 3148, + 3440, 1719, 1457, 2386, 2387, 2385, 1790, 2833, 3471, 1453, + 3471, 2492, 2402, 2401, 3178, 2840, 2597, 1457, 1070, 1069, + 3437, 1719, 3473, 2863, 2570, 3980, 3435, 1719, 2863, 2318, + 3953, 2477, 1457, 2865, 2450, 2198, 3329, 1454, 2570, 1455, + 1456, 3397, 1719, 1457, 2817, 2841, 3395, 1719, 1454, 3426, + 1455, 1456, 1454, 2435, 1455, 1456, 2424, 2426, 2427, 3213, + 2485, 2431, 1453, 2488, 2449, 2489, 2453, 3391, 1719, 2491, + 2841, 2461, 1454, 3121, 1455, 1456, 2388, 1457, 1454, 3471, + 1455, 1456, 3388, 1719, 2505, 2597, 3386, 1719, 2435, 2484, + 2483, 2487, 1124, 1454, 3520, 1455, 1456, 1125, 1454, 1457, + 1455, 1456, 1719, 1457, 2723, 2509, 2628, 1862, 2506, 2510, + 2511, 165, 2627, 2491, 1457, 2474, 3384, 1719, 177, 1454, + 2357, 1455, 1456, 1720, 1722, 1723, 2319, 3382, 1719, 1457, + 2095, 2038, 2022, 1968, 1454, 1754, 1455, 1456, 1454, 1457, + 1455, 1456, 1107, 2575, 1457, 3521, 3522, 3523, 1457, 1106, + 95, 4054, 1778, 1454, 3995, 1455, 1456, 2516, 1457, 185, + 3289, 3380, 1719, 3843, 1726, 3809, 1024, 1509, 1454, 1509, + 1455, 1456, 3671, 3536, 1897, 3533, 2361, 3514, 3339, 1454, + 3338, 1455, 1456, 3850, 2365, 2587, 2368, 3378, 1719, 2041, + 1826, 2433, 3285, 3240, 3236, 2931, 2430, 3238, 3376, 1719, + 2547, 2295, 166, 171, 168, 174, 175, 176, 178, 180, + 181, 182, 183, 1454, 4089, 1455, 1456, 2590, 184, 186, + 187, 188, 2896, 3374, 1719, 1898, 1899, 1900, 3372, 1719, + 2425, 2294, 3370, 1719, 2419, 1454, 1791, 1455, 1456, 1454, + 2418, 1455, 1456, 3937, 95, 1951, 1857, 1853, 1822, 121, + 1454, 2562, 1455, 1456, 2897, 1197, 2846, 2849, 2850, 2851, + 2847, 1457, 2848, 2852, 3844, 1454, 2568, 1455, 1456, 2448, + 2897, 1457, 3483, 3484, 2332, 1454, 4110, 1455, 1456, 4108, + 1454, 4082, 1455, 1456, 1454, 1457, 1455, 1456, 3961, 2579, + 2018, 3883, 1457, 3486, 1454, 3232, 1455, 1456, 2062, 1804, + 1807, 1808, 1809, 1810, 1811, 1812, 3231, 1813, 1814, 1816, + 1817, 1815, 1818, 1819, 1792, 1793, 1794, 1795, 1776, 1777, + 1805, 3230, 1779, 3148, 1780, 1781, 1782, 1783, 1784, 1785, + 1786, 1787, 1788, 2910, 3957, 1789, 1796, 1797, 1798, 1799, + 1457, 1800, 1801, 1802, 1803, 3368, 1719, 2548, 2580, 2603, + 2582, 2639, 2019, 3489, 3524, 3366, 1719, 3170, 666, 2585, + 3168, 2586, 3171, 3488, 3167, 3169, 1457, 2556, 2557, 3364, + 1719, 1457, 2559, 3166, 3845, 2588, 3362, 1719, 1457, 2348, + 3172, 2560, 2850, 2851, 2767, 1731, 1457, 2041, 2581, 2338, + 3477, 3126, 3125, 3921, 2526, 3650, 1457, 1454, 3652, 1455, + 1456, 3525, 3526, 3527, 2545, 2546, 2637, 1454, 2550, 1455, + 1456, 1037, 3135, 1457, 3464, 1474, 2799, 1967, 3467, 1457, + 2555, 1454, 3463, 1455, 1456, 1719, 1893, 2558, 1454, 1457, + 1455, 1456, 727, 1007, 1023, 2092, 2880, 2090, 2802, 1475, + 1476, 1477, 1478, 1479, 1480, 1481, 1483, 1482, 1484, 1485, + 3360, 1719, 1457, 2561, 3209, 3358, 1719, 2838, 2839, 2800, + 1038, 1457, 3344, 1719, 1040, 1163, 2375, 2901, 1162, 1023, + 2858, 3816, 1041, 1894, 1895, 1896, 1454, 2610, 1455, 1456, + 3327, 1719, 3138, 3140, 3305, 1457, 2896, 2137, 2979, 1421, + 2061, 3141, 2937, 2803, 2625, 2805, 129, 2788, 1719, 2837, + 1457, 2138, 1454, 3491, 1455, 1456, 3469, 1454, 1457, 1455, + 1456, 4124, 1457, 3442, 1454, 103, 1455, 1456, 101, 42, + 1457, 3228, 1454, 4033, 1455, 1456, 1457, 2551, 2855, 102, + 2814, 2857, 1454, 3938, 1455, 1456, 2786, 1719, 1692, 2790, + 1457, 2856, 2827, 3839, 1736, 2761, 1719, 2359, 2360, 1454, + 1806, 1455, 1456, 101, 2818, 1454, 1457, 1455, 1456, 1686, + 103, 3208, 2810, 2854, 102, 1454, 2343, 1455, 1456, 2738, + 1719, 1048, 1049, 2876, 2540, 2830, 3641, 2815, 3640, 3124, + 2539, 2538, 2537, 2935, 2730, 1719, 2860, 3123, 1454, 2536, + 1455, 1456, 2721, 1719, 2535, 3449, 3438, 1454, 2864, 1455, + 1456, 1457, 2574, 2867, 2719, 1719, 1457, 2440, 108, 3909, + 1735, 2874, 1457, 3908, 2132, 2883, 2885, 2877, 2121, 2133, + 2946, 1454, 1457, 1455, 1456, 3538, 3639, 3886, 2899, 3658, + 1457, 2888, 110, 2902, 2903, 3656, 1454, 3655, 1455, 1456, + 2706, 1719, 3648, 109, 1454, 108, 1455, 1456, 1454, 2898, + 1455, 1456, 3534, 3468, 103, 2193, 1454, 3466, 1455, 1456, + 110, 2906, 1454, 2907, 1455, 1456, 2911, 2912, 2913, 3241, + 1457, 109, 110, 108, 2943, 1457, 1454, 2475, 1455, 1456, + 1840, 1845, 1047, 109, 109, 2704, 1719, 1457, 2932, 2933, + 2702, 1719, 1454, 1457, 1455, 1456, 2700, 1719, 3647, 3457, + 1457, 2833, 2922, 3625, 2989, 2990, 2698, 1719, 2942, 2813, + 1457, 4112, 4111, 4111, 2696, 1719, 2113, 2102, 2103, 2104, + 2105, 2115, 2106, 2107, 2108, 2120, 2116, 2109, 2110, 2117, + 2118, 2119, 2111, 2112, 2114, 2277, 1457, 1454, 2968, 1455, + 1456, 3006, 1454, 1457, 1455, 1456, 3029, 2987, 1454, 2629, + 1455, 1456, 2330, 2971, 2694, 1719, 1748, 1740, 1454, 3403, + 1455, 1456, 114, 115, 4112, 2310, 1454, 3927, 1455, 1456, + 3500, 2692, 1719, 2035, 3, 1457, 10, 2690, 1719, 1457, + 97, 1, 1720, 2317, 2688, 1719, 1015, 2944, 1424, 3007, + 2033, 3010, 1457, 9, 2686, 1719, 2034, 1423, 3504, 8, + 1717, 1713, 4043, 682, 2320, 1690, 1454, 1457, 1455, 1456, + 4083, 1454, 4039, 1455, 1456, 1714, 2859, 2341, 4040, 1937, + 2684, 1719, 1927, 1454, 3566, 1455, 1456, 2682, 1719, 1454, + 2245, 1455, 1456, 3840, 3244, 1457, 1454, 3031, 1455, 1456, + 2336, 2337, 1716, 2481, 1715, 3532, 1454, 3087, 1455, 1456, + 2438, 2977, 1115, 154, 2978, 2397, 2398, 4008, 118, 2680, + 1719, 1073, 117, 2678, 1719, 1118, 1226, 2476, 3556, 1457, + 2991, 2881, 1454, 2406, 1455, 1456, 2676, 1719, 3008, 1454, + 1773, 1455, 1456, 1771, 1772, 1770, 1775, 1774, 3105, 3313, + 2908, 2674, 1719, 2630, 3404, 3096, 2026, 717, 3094, 2853, + 711, 192, 1762, 1741, 2375, 3418, 2988, 3022, 1157, 672, + 2280, 1454, 2280, 1455, 1456, 1454, 3067, 1455, 1456, 2672, + 1719, 3217, 2282, 2452, 2282, 2514, 678, 3155, 1454, 87, + 1455, 1456, 2375, 2375, 2375, 2375, 2375, 3009, 3077, 3078, + 3079, 3080, 3081, 1454, 1506, 1455, 1456, 2017, 3122, 2868, + 1067, 3105, 2375, 2667, 1719, 2375, 2957, 2958, 2959, 2960, + 2961, 2962, 3104, 3095, 1059, 3097, 2377, 2331, 1457, 3160, + 1978, 1454, 2804, 1455, 1456, 1457, 1066, 3817, 3156, 3129, + 3177, 3461, 3116, 2041, 2972, 3120, 3134, 1457, 3136, 2820, + 3139, 1026, 1457, 3132, 2377, 2377, 2377, 2377, 2377, 3920, + 3649, 3993, 3127, 2878, 3130, 1454, 2980, 1455, 1456, 1457, + 1737, 3142, 3143, 3425, 2377, 2602, 2127, 2377, 1496, 3261, + 2374, 3620, 1027, 1028, 2053, 3159, 740, 3179, 739, 3269, + 3180, 1457, 3161, 104, 3173, 3164, 737, 3181, 105, 3162, + 3163, 2806, 3165, 3117, 3118, 3119, 2834, 1460, 1457, 945, + 3187, 2794, 2663, 1719, 1749, 2845, 2843, 2842, 2549, 2661, + 1719, 2382, 1457, 3485, 3128, 3481, 3220, 3069, 4035, 3071, + 3219, 2654, 1719, 3218, 2376, 1457, 2652, 1719, 2372, 1457, + 2812, 896, 895, 3221, 3222, 3082, 3083, 3084, 3085, 3273, + 3145, 749, 741, 3399, 731, 3270, 1457, 894, 3274, 2440, + 3263, 893, 3271, 3242, 1454, 3272, 1455, 1456, 2952, 3286, + 3280, 1454, 2954, 1455, 1456, 3151, 2892, 2879, 1457, 3282, + 3151, 1438, 1709, 1454, 1086, 1455, 1456, 3301, 1454, 3310, + 1455, 1456, 3336, 3944, 2573, 3298, 3300, 3333, 1708, 3951, + 3252, 3550, 3233, 2928, 2468, 1454, 3335, 1455, 1456, 3308, + 69, 3318, 46, 3915, 3315, 3316, 3981, 3317, 3264, 3332, + 3319, 888, 3321, 2784, 3323, 885, 3622, 1454, 3623, 1455, + 1456, 2846, 2849, 2850, 2851, 2847, 3624, 2848, 2852, 3090, + 2783, 3483, 3484, 3091, 1454, 3964, 1455, 1456, 3965, 1509, + 884, 3966, 2589, 1509, 2182, 1434, 2594, 1431, 1454, 4056, + 1455, 1456, 2779, 2028, 96, 36, 3243, 35, 34, 33, + 32, 1454, 26, 1455, 1456, 1454, 25, 1455, 1456, 2598, + 24, 2599, 23, 1717, 1713, 22, 2606, 29, 19, 3420, + 2608, 2609, 1454, 21, 1455, 1456, 3424, 20, 1714, 2615, + 2616, 2617, 2618, 2619, 2620, 2621, 2622, 2623, 2624, 18, + 2626, 3255, 4078, 4123, 1454, 123, 1455, 1456, 55, 52, + 50, 131, 3154, 1710, 1711, 1716, 130, 1715, 53, 2375, + 49, 1200, 47, 2632, 2633, 2634, 2635, 2636, 31, 2638, + 1457, 30, 3498, 2640, 3453, 17, 3465, 2645, 2646, 729, + 2647, 3450, 3451, 2650, 3458, 2651, 2653, 2655, 2656, 2657, + 2658, 2659, 2660, 2662, 2664, 2665, 2666, 2668, 3309, 2670, + 2671, 2673, 2675, 2677, 2679, 2681, 2683, 2685, 2687, 2689, + 2691, 2693, 2695, 2697, 2699, 2701, 2703, 2705, 2707, 2708, + 2709, 2377, 2711, 3490, 2713, 3492, 2715, 2716, 3487, 2718, + 2720, 2722, 3273, 3499, 3493, 2725, 3229, 1457, 3270, 2729, + 3470, 3274, 1457, 2734, 2735, 2736, 2737, 3303, 3304, 1457, + 16, 15, 14, 13, 2778, 1457, 2748, 2749, 2750, 2751, + 2752, 2753, 3267, 1457, 2757, 2758, 12, 3560, 3561, 1457, + 3455, 3427, 2760, 3429, 3430, 3431, 3281, 2766, 3509, 3510, + 1457, 11, 7, 2769, 2770, 2771, 2772, 2773, 1046, 6, + 39, 1052, 1052, 38, 2780, 2781, 3299, 2782, 37, 3302, + 2785, 2787, 2341, 3480, 2789, 3515, 1454, 3517, 1455, 1456, + 28, 1457, 27, 40, 2801, 4, 2915, 2470, 0, 0, + 0, 2777, 3494, 3495, 0, 0, 2776, 0, 1457, 0, + 3562, 3543, 0, 2775, 0, 3547, 3548, 3549, 1457, 2774, + 0, 0, 0, 0, 1457, 0, 0, 2765, 0, 0, + 0, 0, 0, 2764, 0, 0, 0, 3539, 3540, 0, + 0, 0, 0, 0, 2763, 0, 0, 0, 0, 0, + 0, 0, 0, 1454, 0, 1455, 1456, 1457, 1454, 0, + 1455, 1456, 0, 0, 0, 1454, 1457, 1455, 1456, 0, + 0, 1454, 0, 1455, 1456, 2762, 0, 0, 0, 1454, + 1457, 1455, 1456, 0, 0, 1454, 1457, 1455, 1456, 0, + 1457, 3578, 2759, 0, 0, 0, 1454, 0, 1455, 1456, + 0, 0, 2754, 0, 0, 0, 0, 0, 2747, 3638, + 1457, 3642, 3643, 0, 0, 0, 3628, 0, 3629, 3630, + 3631, 0, 1457, 0, 3618, 0, 0, 1454, 3454, 1455, + 1456, 1457, 0, 0, 3155, 0, 87, 0, 3155, 0, + 0, 2746, 0, 3644, 1454, 0, 1455, 1456, 1457, 0, + 2745, 0, 0, 0, 1454, 0, 1455, 1456, 0, 0, + 1454, 3582, 1455, 1456, 2744, 0, 2092, 0, 2090, 3673, + 2743, 0, 0, 3645, 2742, 1457, 3654, 3653, 3665, 0, + 0, 1457, 0, 0, 0, 0, 3663, 3661, 0, 0, + 0, 0, 0, 1454, 2741, 1455, 1456, 0, 42, 0, + 0, 0, 1454, 3823, 1455, 1456, 2740, 0, 0, 0, + 0, 0, 0, 3513, 3677, 2739, 1454, 0, 1455, 1456, + 0, 0, 1454, 0, 1455, 1456, 1454, 0, 1455, 1456, + 0, 0, 2733, 3528, 0, 0, 3529, 3530, 3531, 0, + 0, 0, 0, 3815, 0, 3814, 1454, 0, 1455, 1456, + 0, 3830, 0, 0, 0, 3842, 0, 3813, 1454, 2732, + 1455, 1456, 3835, 0, 3834, 2731, 0, 1454, 0, 1455, + 1456, 0, 0, 0, 3880, 3881, 3017, 3018, 3019, 3020, + 3021, 0, 0, 3667, 1454, 0, 1455, 1456, 0, 0, + 0, 0, 2092, 0, 2090, 3884, 3026, 0, 0, 0, + 0, 3825, 3826, 3827, 0, 0, 0, 0, 0, 0, + 3609, 1454, 0, 1455, 1456, 3674, 3675, 1454, 0, 1455, + 1456, 3151, 0, 0, 0, 3155, 0, 3887, 0, 0, + 0, 3890, 3669, 3818, 0, 0, 0, 0, 0, 1526, + 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, + 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1546, 1547, + 1548, 1549, 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, 1623, 1624, 1625, 1626, 1627, 1628, + 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, + 1644, 1645, 1646, 1647, 1661, 1662, 1663, 1664, 1665, 1666, + 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 3931, 3154, + 3928, 3913, 3885, 3154, 3910, 3911, 0, 3912, 0, 1457, + 0, 0, 3945, 1457, 0, 0, 0, 0, 0, 1457, + 0, 0, 0, 1457, 0, 0, 0, 3930, 0, 0, + 87, 0, 0, 0, 3157, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1457, 0, 0, + 0, 0, 3175, 0, 0, 3950, 3934, 3947, 1457, 0, + 0, 0, 1457, 0, 0, 0, 0, 0, 3822, 0, + 0, 0, 3952, 0, 0, 0, 1457, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3919, + 0, 0, 42, 2728, 0, 0, 0, 2727, 0, 0, + 0, 0, 0, 2726, 0, 0, 0, 2724, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1458, 0, 0, 0, 3990, 0, 0, 3970, 0, 87, + 3971, 2717, 0, 0, 0, 0, 3936, 0, 0, 0, + 0, 0, 2714, 0, 3979, 1454, 2712, 1455, 1456, 1454, + 1514, 1455, 1456, 0, 0, 1454, 3986, 1455, 1456, 1454, + 2710, 1455, 1456, 3996, 0, 0, 3999, 4007, 4021, 4004, + 3955, 3994, 0, 3842, 4010, 4001, 4000, 3998, 0, 4003, + 3307, 4002, 0, 1454, 0, 1455, 1456, 0, 0, 0, + 3154, 42, 4031, 0, 1454, 0, 1455, 1456, 1454, 0, + 1455, 1456, 3324, 3325, 4052, 3326, 4042, 3328, 3330, 4047, + 4034, 0, 1454, 4060, 1455, 1456, 0, 4062, 0, 1790, + 4021, 3337, 0, 0, 4073, 0, 3341, 3342, 3343, 3345, + 3346, 3347, 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, + 3356, 3357, 3359, 3361, 3363, 3365, 3367, 3369, 3371, 3373, + 3375, 3377, 3379, 3381, 3383, 3385, 3387, 3389, 3390, 3392, + 3393, 3394, 3396, 1978, 4077, 3398, 4093, 3400, 3401, 3402, + 4072, 4103, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, + 3414, 3415, 3416, 2092, 4109, 2090, 4106, 4096, 4105, 4107, + 4102, 3423, 3991, 4092, 4117, 3428, 0, 4021, 0, 3432, + 3433, 0, 3434, 3436, 4125, 3439, 3441, 3151, 3443, 3444, + 3445, 3446, 4133, 4131, 1457, 0, 3452, 0, 1457, 3959, + 0, 0, 0, 0, 1457, 0, 0, 3969, 1457, 0, + 0, 0, 4142, 4143, 3881, 4141, 0, 0, 1457, 0, + 0, 2092, 1457, 2090, 4140, 0, 1457, 3943, 0, 0, + 0, 3474, 3475, 0, 0, 3479, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1778, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3956, 4090, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2669, 0, + 0, 0, 2649, 0, 0, 4068, 0, 0, 2648, 0, + 0, 0, 2644, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2642, 0, 0, 0, 2607, 0, 0, 0, + 2596, 0, 0, 0, 0, 0, 0, 1739, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1791, + 1454, 0, 1455, 1456, 1454, 0, 1455, 1456, 0, 0, + 1454, 3554, 1455, 1456, 1454, 0, 1455, 1456, 958, 0, + 2284, 0, 0, 959, 1454, 1827, 1455, 1456, 1454, 0, + 1455, 1456, 1454, 2091, 1455, 1456, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3573, 0, 0, 3577, + 0, 0, 1804, 1807, 1808, 1809, 1810, 1811, 1812, 0, + 1813, 1814, 1816, 1817, 1815, 1818, 1819, 1792, 1793, 1794, + 1795, 1776, 1777, 1805, 0, 1779, 3588, 1780, 1781, 1782, + 1783, 1784, 1785, 1786, 1787, 1788, 0, 0, 1789, 1796, + 1797, 1798, 1799, 0, 1800, 1801, 1802, 1803, 965, 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, + 3611, 0, 0, 1983, 0, 0, 0, 0, 0, 941, + 0, 0, 0, 3619, 0, 0, 0, 0, 0, 0, + 0, 3626, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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, 195, 0, + 0, 0, 715, 0, 0, 0, 0, 721, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 195, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 721, + 195, 721, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3831, 0, 0, 0, + 0, 0, 0, 0, 0, 3838, 0, 0, 0, 0, + 0, 0, 0, 1806, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3848, 3849, 0, 3851, 0, + 3852, 3853, 0, 0, 0, 3856, 3857, 3858, 3859, 3860, 3861, 3862, 3863, 3864, 3865, 3866, 3867, 3868, 3869, 3870, - 3871, 3872, 3873, 3874, 3875, 3876, 3877, 3878, 3879, 0, - 3881, 3884, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 60, 0, 3893, 3894, 3895, 3896, - 3897, 3899, 3900, 3902, 3904, 3905, 3907, 0, 0, 0, + 3871, 3872, 3873, 3874, 3875, 3876, 3877, 0, 3879, 3882, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3891, 3892, 3893, 3894, 3895, 3897, + 3898, 3900, 3902, 3903, 3905, 0, 0, 0, 0, 0, 0, 0, 0, 2048, 2049, 2050, 2051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2059, 0, - 0, 0, 0, 0, 0, 0, 0, 1806, 0, 0, - 0, 0, 0, 0, 3937, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2098, 2099, 0, 0, 0, 0, 2122, 1052, 1052, 2126, 0, 0, 0, 2131, 0, 0, 0, - 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 0, 2154, 0, 0, 0, 2176, 2177, 2178, 2179, 2180, 2181, 2183, 0, 2188, 0, 2190, 2191, 2192, 0, @@ -2142,475 +2142,428 @@ var yyAct = [...]int{ 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, - 2268, 2269, 2270, 94, 0, 0, 0, 0, 2276, 0, + 2268, 2269, 2270, 0, 0, 0, 0, 0, 2276, 0, 2278, 0, 2285, 2286, 2287, 2288, 2289, 2290, 1052, 0, 1052, 1052, 1052, 1052, 1052, 0, 0, 0, 0, 0, 0, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 0, - 2311, 2312, 2313, 2314, 2315, 0, 0, 0, 0, 4078, - 0, 0, 0, 0, 0, 0, 0, 0, 3962, 1790, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 190, 0, 0, 0, 0, 0, 0, 0, 0, 1052, - 0, 0, 3978, 0, 0, 0, 0, 0, 3979, 3980, - 0, 0, 0, 0, 129, 0, 151, 0, 0, 0, - 0, 0, 0, 0, 0, 2355, 2356, 172, 0, 70, - 3991, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2394, 0, 0, 0, 0, 4017, 4018, 162, 0, - 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, - 4025, 4027, 4029, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 169, 0, 941, 170, 0, 0, 0, - 0, 0, 1201, 0, 1207, 4057, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 138, 139, 161, 160, 189, - 0, 0, 2436, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1778, 0, 0, 0, 0, - 0, 0, 0, 4076, 0, 0, 0, 0, 0, 0, - 0, 195, 0, 0, 195, 0, 0, 190, 715, 0, - 0, 0, 0, 721, 1430, 0, 0, 0, 1844, 0, - 0, 0, 0, 0, 195, 0, 0, 4099, 4101, 4103, - 0, 129, 0, 151, 0, 0, 0, 0, 0, 0, - 195, 0, 0, 0, 172, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4124, 0, 0, 0, 0, 721, 195, 721, 0, 1791, - 155, 136, 158, 143, 135, 162, 156, 157, 4136, 4137, - 0, 150, 0, 173, 0, 0, 0, 0, 0, 0, - 0, 0, 179, 144, 0, 0, 0, 0, 0, 0, - 169, 0, 0, 170, 0, 0, 0, 147, 145, 140, - 141, 142, 146, 0, 0, 0, 0, 0, 0, 137, - 0, 0, 1848, 1849, 161, 160, 189, 0, 148, 0, - 0, 0, 1804, 1807, 1808, 1809, 1810, 1811, 1812, 0, - 1813, 1814, 1816, 1817, 1815, 1818, 1819, 1792, 1793, 1794, - 1795, 1776, 1777, 1805, 0, 1779, 0, 1780, 1781, 1782, - 1783, 1784, 1785, 1786, 1787, 1788, 0, 0, 1789, 1796, - 1797, 1798, 1799, 0, 1800, 1801, 1802, 1803, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2311, 2312, 2313, 2314, 2315, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1052, + 3976, 0, 0, 0, 0, 0, 3977, 3978, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 155, 1850, 158, - 0, 1847, 0, 156, 157, 0, 0, 0, 0, 0, - 173, 0, 0, 0, 0, 0, 0, 0, 0, 179, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2355, 2356, 0, 3989, 0, + 0, 0, 0, 0, 0, 0, 86, 44, 45, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2607, - 0, 0, 0, 0, 0, 0, 940, 0, 0, 2613, - 2614, 2615, 2616, 0, 0, 0, 0, 0, 0, 0, + 0, 2394, 0, 0, 4015, 4016, 92, 0, 0, 0, + 48, 76, 77, 0, 74, 78, 0, 0, 4023, 4025, + 4027, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4055, 0, 0, 0, 0, 0, 0, + 0, 0, 62, 0, 0, 0, 0, 0, 0, 190, + 0, 0, 2436, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1514, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1751, 0, 700, 0, - 0, 0, 0, 0, 720, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1768, 0, 0, 0, 0, - 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, - 0, 0, 0, 1806, 0, 0, 0, 0, 0, 0, + 0, 4074, 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, 720, 0, 720, 0, + 83, 0, 0, 0, 0, 4097, 4099, 4101, 0, 0, + 0, 195, 0, 195, 0, 0, 0, 162, 0, 0, + 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4122, 0, + 0, 0, 169, 0, 0, 170, 0, 0, 0, 0, + 721, 0, 721, 721, 0, 0, 4134, 4135, 0, 0, + 0, 0, 0, 0, 138, 139, 161, 160, 189, 0, + 0, 0, 721, 195, 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, 51, 54, 57, 56, 59, 0, + 73, 1501, 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, 0, 1907, 0, - 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, - 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, - 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1952, 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, - 1979, 0, 185, 0, 0, 0, 0, 1739, 0, 0, - 0, 0, 0, 0, 0, 0, 1990, 0, 0, 0, - 0, 0, 0, 1994, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2005, 2006, 2007, 2008, 2009, 2010, - 2011, 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, 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, 0, 0, 0, 0, 155, + 136, 158, 143, 135, 0, 156, 157, 0, 0, 0, + 0, 0, 173, 63, 64, 0, 65, 66, 67, 68, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 195, 0, 195, - 0, 165, 0, 0, 0, 0, 0, 0, 177, 0, + 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2605, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2611, + 2612, 2613, 2614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 721, 721, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, - 0, 0, 0, 0, 0, 0, 0, 0, 721, 195, + 0, 1501, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1514, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1501, 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, 0, 0, 0, 2986, 0, 0, - 2041, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1052, - 0, 0, 3013, 3014, 0, 0, 3016, 0, 0, 3018, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3025, - 3026, 3027, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3032, 0, 0, 3034, 3035, 3036, 0, 0, 0, - 3037, 3038, 0, 0, 3039, 0, 3040, 0, 0, 0, - 0, 0, 0, 3041, 0, 3042, 0, 0, 0, 3043, - 0, 3044, 0, 0, 3045, 0, 3046, 0, 3047, 0, - 3048, 0, 3049, 0, 3050, 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, - 0, 0, 3063, 0, 3064, 0, 3065, 0, 0, 3066, - 0, 3067, 0, 3068, 0, 2248, 3070, 0, 0, 3072, - 0, 0, 3074, 3075, 3076, 3077, 0, 0, 0, 0, - 3078, 2248, 2248, 2248, 2248, 2248, 0, 1501, 0, 0, - 0, 0, 0, 0, 0, 0, 3088, 0, 0, 0, - 0, 0, 0, 0, 3101, 0, 0, 3105, 0, 1052, - 0, 0, 0, 0, 0, 0, 3108, 3109, 3110, 3111, - 3112, 3113, 0, 0, 0, 3114, 3115, 0, 3116, 0, - 3117, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 195, 0, 0, 0, 721, 721, + 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, + 0, 0, 721, 721, 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, 0, 3148, 0, 720, 1417, 720, - 720, 0, 0, 0, 0, 0, 0, 0, 721, 0, - 0, 195, 0, 0, 0, 0, 0, 0, 0, 720, - 3178, 0, 0, 721, 0, 0, 0, 0, 0, 0, - 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2361, 0, 0, 0, 0, 0, 0, 1500, 2365, - 0, 2368, 0, 0, 2041, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 721, 0, 0, + 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1501, 3241, 0, 0, 0, 0, 721, 721, 0, 721, - 0, 721, 721, 0, 721, 721, 721, 721, 721, 721, - 0, 0, 0, 0, 0, 0, 0, 1501, 0, 0, - 1501, 721, 1501, 195, 0, 0, 0, 0, 0, 0, + 0, 0, 721, 0, 0, 195, 0, 0, 0, 0, + 0, 0, 159, 0, 0, 0, 0, 721, 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, 195, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 721, 0, 195, 0, + 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 721, 0, 195, 195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3333, 0, 0, - 0, 195, 0, 0, 0, 0, 0, 0, 195, 0, - 0, 3342, 0, 0, 0, 0, 0, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 721, 0, 0, 0, + 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1501, 0, 0, 0, 0, 0, + 721, 721, 0, 721, 0, 721, 721, 1739, 721, 721, + 721, 721, 721, 721, 0, 0, 0, 0, 0, 0, + 0, 1501, 0, 0, 1501, 721, 1501, 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, + 721, 0, 195, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 70, 165, 0, 0, 721, 0, 195, 195, + 177, 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, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 721, 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, 1500, 0, - 0, 0, 2041, 0, 0, 0, 0, 0, 0, 2526, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2545, - 2546, 0, 0, 2550, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2555, 0, 0, 0, 0, - 0, 0, 2558, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 720, - 720, 0, 0, 0, 0, 0, 0, 0, 2561, 0, + 0, 0, 0, 0, 0, 0, 0, 940, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 720, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 700, + 0, 0, 0, 0, 0, 720, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2984, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1052, 0, 0, + 3011, 3012, 0, 0, 3014, 0, 0, 3016, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 720, 0, 720, + 0, 0, 0, 0, 0, 0, 0, 3023, 3024, 3025, + 0, 0, 0, 0, 0, 0, 0, 721, 721, 3030, + 0, 0, 3032, 3033, 3034, 0, 0, 0, 3035, 3036, + 721, 0, 3037, 0, 3038, 0, 0, 0, 0, 195, + 0, 3039, 0, 3040, 0, 0, 0, 3041, 0, 3042, + 0, 0, 3043, 0, 3044, 0, 3045, 0, 3046, 0, + 3047, 0, 3048, 0, 3049, 0, 3050, 0, 3051, 0, + 3052, 0, 3053, 0, 3054, 0, 3055, 0, 3056, 0, + 3057, 0, 3058, 0, 3059, 0, 3060, 0, 721, 0, + 3061, 0, 3062, 0, 3063, 0, 0, 3064, 1501, 3065, + 0, 3066, 0, 2248, 3068, 0, 0, 3070, 0, 0, + 3072, 3073, 3074, 3075, 0, 1501, 0, 0, 3076, 2248, + 2248, 2248, 2248, 2248, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3086, 0, 0, 0, 0, 0, + 0, 0, 3099, 0, 0, 3103, 0, 1052, 0, 0, + 0, 0, 0, 0, 3106, 3107, 3108, 3109, 3110, 3111, + 958, 0, 0, 3112, 3113, 959, 3114, 0, 3115, 0, + 0, 0, 0, 0, 0, 2091, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3146, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3176, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2296, + 965, 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, 0, 195, 0, 0, 0, 0, 721, 3239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 720, 0, 0, 0, 0, 0, - 0, 0, 0, 721, 721, 1821, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1830, 721, 0, 0, 0, - 0, 0, 0, 0, 0, 195, 0, 0, 3537, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 720, 0, - 1856, 0, 0, 0, 0, 0, 0, 0, 1865, 0, - 0, 1500, 1867, 0, 0, 1870, 1871, 720, 720, 0, - 720, 3561, 720, 720, 0, 720, 720, 720, 720, 720, - 720, 0, 0, 0, 721, 0, 0, 0, 1500, 1902, - 1903, 1500, 720, 1500, 1501, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1501, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 720, 0, 3581, - 0, 3582, 0, 0, 3583, 0, 0, 3586, 3587, 0, - 1971, 0, 0, 720, 0, 0, 3591, 0, 0, 0, + 0, 0, 0, 195, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3592, 0, 3593, 0, 3594, 0, 3595, 0, 3596, 0, - 3597, 0, 3598, 0, 3599, 0, 3600, 0, 3601, 0, - 3602, 0, 3603, 0, 3604, 0, 3605, 720, 3606, 0, - 3607, 0, 0, 3608, 0, 0, 0, 3609, 0, 3610, - 0, 0, 0, 0, 0, 3612, 0, 0, 0, 0, + 195, 0, 0, 0, 721, 0, 0, 2296, 195, 0, + 195, 0, 195, 195, 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, 3629, 0, - 0, 0, 0, 0, 0, 0, 0, 3634, 0, 3635, - 3636, 0, 3637, 0, 3638, 2296, 0, 0, 0, 3639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3331, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3664, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3672, 0, 0, 3674, 195, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, - 3678, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3812, 0, 0, 195, - 0, 2861, 721, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, - 721, 0, 0, 2296, 195, 0, 195, 0, 195, 195, - 0, 0, 0, 0, 720, 720, 0, 0, 0, 0, - 0, 0, 0, 721, 0, 0, 0, 720, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2910, 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, 720, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1500, 0, 0, 0, 0, - 0, 0, 0, 0, 2100, 0, 0, 721, 0, 3920, - 0, 0, 1500, 721, 0, 0, 0, 0, 0, 0, - 0, 2959, 2960, 2961, 2962, 2963, 2964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2041, 2974, + 0, 721, 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 721, 0, 0, 898, 0, 721, 0, 0, 0, 721, - 721, 0, 0, 2982, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 193, - 0, 0, 665, 0, 195, 195, 0, 0, 195, 0, - 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 195, 0, 665, 0, 0, 0, 720, 195, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1033, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 195, 0, 1053, 1053, 0, 958, 0, - 2284, 0, 721, 959, 665, 0, 0, 0, 0, 0, - 0, 0, 0, 2091, 0, 720, 0, 0, 0, 0, + 0, 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, 0, - 0, 0, 3960, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 720, 0, 0, 720, 0, 0, 0, 0, 0, - 0, 1501, 0, 2296, 0, 0, 0, 0, 3974, 0, - 0, 3975, 0, 3976, 720, 0, 0, 0, 965, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 720, 0, 0, 0, 0, 0, 0, 2458, 2459, - 2460, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 720, 0, - 0, 0, 0, 0, 720, 1865, 0, 4055, 1865, 0, - 1865, 0, 0, 0, 0, 0, 2490, 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, 720, 1417, + 720, 720, 0, 0, 195, 0, 0, 0, 0, 0, + 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, + 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3535, 195, 0, 0, + 0, 0, 0, 0, 0, 0, 721, 0, 0, 1500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4071, 0, 4072, 0, - 4073, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 720, 0, 0, 0, 0, 720, 0, 0, 0, - 720, 720, 0, 3231, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3559, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3283, 0, 0, 0, 0, 0, 0, - 4122, 0, 4123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3301, 0, 195, 3304, 0, 0, 0, - 0, 0, 0, 195, 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, 720, 0, 0, 0, 0, 897, 0, - 0, 195, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1501, 0, 2296, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3579, 0, 3580, + 0, 0, 3581, 0, 0, 3584, 3585, 0, 0, 0, + 0, 0, 0, 0, 3589, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3590, 0, + 3591, 0, 3592, 0, 3593, 0, 3594, 0, 3595, 0, + 3596, 0, 3597, 0, 3598, 0, 3599, 0, 3600, 0, + 3601, 0, 3602, 0, 3603, 0, 3604, 0, 3605, 0, + 0, 3606, 0, 0, 0, 3607, 0, 3608, 0, 0, + 0, 0, 0, 3610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3627, 0, 0, 0, + 0, 0, 0, 0, 0, 3632, 0, 3633, 3634, 0, + 3635, 0, 3636, 0, 0, 0, 0, 3637, 0, 1500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3662, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3670, 0, 0, 3672, 0, 897, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1500, 0, 720, 0, 719, 0, 0, 0, - 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, - 195, 0, 0, 0, 0, 0, 0, 195, 0, 0, - 0, 0, 0, 0, 0, 3456, 0, 0, 0, 0, - 0, 721, 0, 0, 0, 0, 0, 0, 721, 0, - 0, 0, 0, 0, 0, 0, 0, 721, 1077, 0, - 1084, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1501, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 195, 195, 195, 195, - 195, 195, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 195, 195, 0, 0, 0, 0, 0, - 3515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 665, 0, 665, 195, 0, - 3530, 0, 0, 3531, 3532, 3533, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 721, 0, 0, 0, 0, 0, 0, 95, 0, - 0, 958, 0, 0, 0, 946, 959, 960, 961, 962, - 947, 0, 0, 948, 949, 0, 950, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 665, 0, 0, - 955, 963, 964, 0, 0, 0, 0, 0, 0, 721, + 720, 720, 0, 0, 3810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1502, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, + 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, + 720, 0, 0, 0, 0, 0, 719, 0, 721, 0, + 0, 0, 0, 0, 0, 720, 0, 0, 0, 0, + 0, 721, 0, 0, 0, 0, 1821, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1830, 0, 0, 0, + 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, + 195, 0, 0, 0, 0, 0, 0, 0, 1077, 720, + 1084, 1856, 0, 0, 0, 0, 0, 0, 0, 1865, + 0, 0, 1500, 1867, 0, 0, 1870, 1871, 720, 720, + 0, 720, 0, 720, 720, 0, 720, 720, 720, 720, + 720, 720, 0, 0, 0, 0, 0, 3918, 0, 1500, + 1902, 1903, 1500, 720, 1500, 0, 1908, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, + 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, + 0, 195, 0, 0, 0, 0, 0, 0, 720, 0, + 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, + 0, 1971, 721, 0, 720, 0, 0, 0, 0, 0, + 0, 721, 0, 0, 0, 898, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 720, 0, 0, 0, 3277, - 3278, 0, 0, 0, 0, 0, 0, 0, 720, 0, - 0, 965, 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, 2874, 0, 0, 0, 0, 0, 0, + 195, 195, 195, 195, 195, 195, 0, 0, 720, 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, 721, 0, 0, 0, - 0, 0, 0, 0, 3279, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 720, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 721, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 195, 195, 0, + 0, 193, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 195, 720, 0, 0, 721, 0, 0, 0, 720, - 0, 0, 0, 1865, 1865, 0, 0, 0, 720, 721, - 0, 0, 0, 1501, 0, 0, 721, 721, 1501, 195, - 195, 195, 195, 195, 1500, 2947, 0, 0, 0, 0, - 0, 195, 3280, 3281, 0, 1502, 0, 195, 0, 195, - 0, 0, 195, 195, 195, 0, 0, 0, 0, 0, + 195, 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1033, 0, 0, 721, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1053, 1053, 0, + 0, 0, 0, 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3958, 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, 195, 0, - 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, - 0, 721, 0, 0, 1501, 0, 0, 0, 0, 721, - 0, 0, 720, 0, 195, 1033, 911, 0, 0, 0, - 0, 0, 915, 0, 0, 0, 912, 913, 195, 0, - 0, 914, 916, 0, 0, 0, 0, 0, 0, 665, - 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, - 0, 195, 0, 0, 0, 0, 0, 0, 665, 0, - 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3972, 0, 0, 3973, + 0, 3974, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 720, 720, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1502, 0, 0, 1502, 0, - 1502, 665, 0, 0, 0, 0, 0, 0, 0, 1265, - 0, 1265, 1265, 0, 0, 0, 0, 0, 0, 0, - 0, 1924, 0, 0, 0, 721, 0, 0, 0, 0, - 0, 1429, 0, 0, 0, 720, 665, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 720, 0, 0, - 0, 0, 1977, 665, 0, 0, 0, 0, 0, 0, - 195, 0, 0, 0, 0, 0, 0, 0, 0, 665, - 0, 0, 0, 0, 0, 0, 665, 0, 720, 0, - 0, 0, 0, 0, 0, 2003, 2004, 665, 665, 665, - 665, 665, 665, 665, 0, 0, 720, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 720, 0, 721, 0, + 0, 0, 0, 0, 0, 4053, 1500, 0, 0, 0, + 0, 0, 0, 0, 0, 2100, 190, 0, 0, 0, + 0, 0, 0, 1500, 0, 0, 0, 2921, 0, 721, + 0, 0, 0, 0, 4069, 0, 4070, 0, 4071, 0, + 129, 0, 151, 195, 0, 0, 0, 721, 0, 0, + 0, 0, 0, 172, 0, 0, 0, 0, 0, 0, + 0, 721, 0, 0, 0, 1501, 0, 0, 721, 721, + 1501, 195, 195, 195, 195, 195, 0, 0, 0, 0, + 0, 0, 0, 195, 162, 0, 0, 0, 0, 195, + 150, 195, 0, 0, 195, 195, 195, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4120, 169, + 4121, 0, 170, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1848, 1849, 161, 160, 189, 0, 0, 0, 0, + 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 721, 0, 0, 1501, 720, 0, 0, + 0, 721, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 720, 0, 0, 0, 1500, 0, 195, 720, 720, 1500, - 0, 0, 0, 0, 0, 0, 0, 3958, 0, 0, + 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1265, + 195, 1265, 1265, 195, 0, 0, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, + 0, 1429, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 720, 0, 155, 1850, 158, 0, + 1847, 0, 156, 157, 0, 0, 0, 0, 0, 173, + 0, 0, 720, 0, 0, 720, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 195, 0, 0, 195, 195, - 195, 0, 0, 0, 0, 0, 0, 0, 721, 721, - 3226, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 720, 0, 0, 1500, 0, 0, 0, 0, - 720, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3308, 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, 665, 0, 0, 0, 0, 0, 0, + 0, 0, 720, 0, 0, 0, 0, 0, 0, 2458, + 2459, 2460, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 195, 0, 0, 0, 0, 0, 0, 720, + 0, 0, 0, 0, 0, 720, 1865, 0, 0, 1865, + 0, 1865, 0, 0, 0, 0, 0, 2490, 0, 0, + 0, 0, 0, 164, 0, 0, 0, 665, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, + 0, 0, 720, 0, 0, 0, 0, 720, 0, 0, + 0, 720, 720, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 195, 0, 190, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 665, + 1844, 0, 0, 0, 0, 0, 0, 195, 0, 0, + 195, 195, 195, 129, 0, 151, 0, 0, 0, 0, + 721, 721, 0, 0, 0, 0, 172, 1502, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1696, 1697, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, + 0, 1696, 1697, 150, 0, 0, 0, 0, 0, 721, + 721, 721, 721, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 169, 0, 720, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1502, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1053, 1053, 0, 0, 0, 1502, - 0, 1745, 0, 0, 0, 0, 720, 0, 0, 0, + 0, 1745, 0, 0, 1848, 1849, 161, 160, 189, 0, 0, 0, 0, 0, 0, 0, 1763, 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, 0, 0, 0, 0, 0, 0, 1501, - 0, 0, 0, 0, 721, 0, 721, 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, 1500, 0, 720, 0, 0, 0, 0, 1077, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1873, + 165, 0, 0, 0, 0, 0, 0, 177, 0, 1873, 1873, 0, 1873, 0, 1873, 1873, 0, 1882, 1873, 1873, 1873, 1873, 1873, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1077, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 721, 3505, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, - 721, 0, 1053, 1977, 1053, 1053, 1053, 1053, 1053, 1950, - 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1975, 0, 0, 0, 720, - 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1924, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1053, 0, 0, 0, 0, 0, 1265, - 0, 0, 0, 0, 0, 0, 0, 1033, 720, 720, - 720, 720, 0, 0, 0, 0, 721, 0, 0, 0, - 721, 721, 0, 0, 665, 0, 0, 0, 0, 0, - 0, 1977, 665, 0, 665, 0, 665, 2384, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 721, + 0, 0, 0, 0, 1077, 0, 0, 0, 0, 155, + 1850, 158, 0, 1847, 0, 156, 157, 0, 185, 0, + 0, 0, 173, 0, 0, 0, 0, 1502, 0, 0, + 0, 179, 195, 0, 0, 0, 0, 0, 0, 1950, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1501, 0, 0, 0, 1975, 721, 0, 721, 0, + 0, 166, 171, 168, 174, 175, 176, 178, 180, 181, + 182, 183, 0, 0, 0, 0, 0, 184, 186, 187, + 188, 0, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1265, + 0, 0, 0, 0, 0, 0, 0, 1033, 0, 0, + 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, + 0, 665, 721, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, + 665, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 720, 0, 0, 0, + 1502, 0, 0, 0, 0, 0, 0, 0, 0, 720, + 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, + 0, 0, 721, 721, 0, 0, 0, 1502, 0, 0, + 1502, 0, 1502, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 721, 159, 1924, 2872, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1265, 1265, 665, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2029, + 0, 0, 0, 0, 1977, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 665, 0, 0, 0, 0, 720, 0, 665, 0, + 0, 0, 0, 0, 0, 0, 0, 2003, 2004, 665, + 665, 665, 665, 665, 665, 665, 0, 0, 0, 0, + 0, 0, 0, 720, 0, 0, 0, 2086, 0, 0, + 720, 0, 0, 0, 1865, 1865, 0, 0, 0, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 152, 0, 0, 153, 0, 1500, 2945, 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, 165, 0, 0, 0, 0, 0, 0, + 177, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 721, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 185, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1265, 1265, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2029, - 0, 0, 0, 0, 0, 0, 0, 721, 0, 0, - 1500, 0, 0, 0, 0, 720, 0, 720, 0, 0, - 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 166, 171, 168, 174, 175, 176, + 178, 180, 181, 182, 183, 0, 0, 721, 1265, 720, + 184, 186, 187, 188, 0, 0, 0, 1501, 0, 721, + 0, 0, 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 721, 195, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 665, 0, 2086, 0, 0, - 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 665, 665, 0, 720, 665, 0, 2552, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 665, 0, - 0, 720, 0, 0, 0, 665, 0, 0, 0, 0, - 0, 0, 0, 0, 720, 0, 0, 0, 0, 0, + 0, 0, 0, 721, 2296, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2333, 0, 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, - 0, 665, 0, 0, 0, 1501, 0, 721, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, + 721, 0, 0, 0, 1502, 2345, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1053, 1053, 0, 0, + 0, 1502, 0, 1745, 0, 0, 1265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 721, 2296, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 721, 0, 0, 0, 720, 0, 0, - 0, 720, 720, 0, 0, 0, 0, 195, 721, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1502, - 0, 1977, 0, 0, 0, 0, 0, 0, 0, 0, - 720, 0, 0, 0, 0, 0, 0, 0, 1265, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 721, 0, 720, 0, 1077, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 720, 0, 0, 0, + 0, 0, 0, 0, 721, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 721, 0, 0, 0, 0, 195, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2333, 0, 0, - 0, 721, 0, 721, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 721, 0, 721, 0, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2345, 0, 0, 0, 0, + 0, 0, 0, 1084, 0, 720, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 720, + 0, 0, 0, 1500, 0, 0, 720, 720, 1500, 0, + 1077, 0, 0, 0, 0, 0, 1084, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1745, 0, 0, 1265, 0, 0, 0, + 0, 0, 0, 0, 1053, 1977, 1053, 1053, 1053, 1053, + 1053, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1077, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 720, 0, + 0, 0, 0, 1077, 0, 0, 0, 0, 2086, 3224, + 0, 0, 2086, 2086, 0, 0, 0, 0, 0, 1924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 720, 0, 0, 1500, 1053, 0, 0, 0, 720, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1033, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 665, 0, 0, 0, + 0, 0, 0, 1977, 665, 0, 665, 0, 665, 2384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 720, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1084, 0, 0, 0, 0, 0, 0, + 0, 3306, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 95, 0, 0, 958, 0, 0, + 0, 946, 959, 960, 961, 962, 947, 0, 0, 948, + 949, 0, 950, 0, 0, 2564, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 955, 963, 964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1077, 0, 0, 665, 0, 0, 1084, 0, 0, 0, - 0, 1924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 720, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1500, 0, 720, 0, - 0, 0, 0, 1077, 0, 0, 0, 0, 2086, 665, - 0, 0, 2086, 2086, 665, 0, 0, 0, 0, 0, - 0, 0, 720, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 720, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 720, + 0, 0, 0, 0, 0, 3275, 3276, 0, 0, 0, + 0, 0, 0, 0, 0, 720, 1265, 965, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 665, 0, - 0, 0, 0, 0, 0, 2916, 0, 0, 0, 0, - 0, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 720, 0, 2564, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 665, 0, 0, + 3277, 0, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 665, 665, 0, 0, 665, 0, + 2552, 0, 0, 0, 3503, 0, 0, 0, 0, 0, + 665, 0, 0, 0, 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1502, 720, 0, 720, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 665, 665, 665, 665, 665, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 665, 0, 0, 0, 0, 720, 720, + 0, 0, 0, 0, 0, 0, 0, 0, 3278, 3279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 665, 665, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1265, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1053, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 720, 720, 720, + 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1502, 0, 1977, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2807, 0, 0, + 0, 0, 911, 0, 0, 0, 0, 0, 915, 0, + 2822, 0, 912, 913, 0, 0, 0, 914, 916, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2619,200 +2572,194 @@ 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, + 0, 0, 0, 0, 0, 0, 0, 2904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2345, 0, 0, 0, 0, 1500, + 0, 2929, 0, 0, 720, 0, 720, 0, 0, 0, + 2934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 720, 665, 0, 0, 0, 0, + 0, 0, 0, 1924, 0, 0, 0, 0, 0, 0, + 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1053, 0, 0, 0, 0, 0, 0, + 0, 0, 2086, 0, 0, 0, 0, 0, 0, 0, + 0, 665, 0, 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2809, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 665, - 2824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1502, 0, 0, 0, 0, 1502, 665, 665, 665, - 665, 665, 0, 0, 0, 0, 0, 0, 0, 3176, - 0, 0, 0, 0, 0, 1924, 0, 665, 0, 0, - 665, 3184, 1977, 0, 0, 0, 0, 0, 0, 0, + 2086, 0, 0, 0, 0, 0, 720, 0, 0, 0, + 720, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 720, + 665, 0, 0, 0, 0, 0, 0, 2914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 665, 2906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1502, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 665, 0, 2345, 0, 0, 0, 0, 0, - 0, 2931, 0, 0, 0, 0, 665, 0, 0, 0, - 2936, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 665, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1502, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 665, 665, 665, 665, + 665, 665, 0, 0, 0, 3088, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1265, 0, 0, + 0, 0, 0, 665, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 665, 0, 1873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3131, 720, 0, 0, + 0, 0, 0, 1053, 0, 0, 0, 0, 0, 0, + 1265, 0, 0, 0, 0, 0, 0, 3158, 1873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1077, 0, 0, 720, 0, 0, 0, 0, + 2345, 0, 0, 0, 0, 1500, 0, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2086, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 665, 0, + 0, 720, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 720, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1053, 0, 0, 0, 0, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 665, + 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 665, 0, 0, 0, 0, 0, + 0, 1502, 720, 0, 0, 0, 1502, 665, 665, 665, + 665, 665, 0, 0, 0, 0, 0, 0, 0, 3174, + 0, 720, 0, 720, 0, 1924, 3419, 665, 0, 0, + 665, 3182, 1977, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3090, 0, 0, - 0, 0, 0, 665, 0, 0, 665, 665, 665, 1265, - 0, 0, 0, 3700, 3702, 3701, 3765, 3766, 3767, 3768, - 3769, 3770, 3771, 790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1873, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3133, 0, + 0, 0, 0, 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1265, 0, 0, 0, 0, 0, 0, 3160, - 1873, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1502, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 665, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2345, + 2345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1077, 0, 0, 0, 0, 0, - 0, 0, 2345, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3567, 3568, + 3569, 3570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1924, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1502, 0, 0, - 3706, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3714, 3715, 0, 0, 3790, - 3789, 3788, 0, 0, 3786, 3787, 3785, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1924, 0, 0, 3421, 3791, - 911, 0, 766, 767, 3792, 3793, 915, 3794, 769, 770, - 912, 913, 0, 764, 768, 914, 916, 0, 0, 0, + 0, 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3697, 3698, 3699, 3703, 3704, 3705, 3716, 3763, 3764, - 3772, 3774, 867, 3773, 3775, 3776, 3777, 3780, 3781, 3782, - 3783, 3778, 3779, 3784, 3680, 3684, 3681, 3682, 3683, 3695, - 3685, 3686, 3687, 3688, 3689, 3690, 3691, 3692, 3693, 3694, - 3696, 3795, 3796, 3797, 3798, 3799, 3800, 3709, 3713, 3712, - 3710, 3711, 3707, 3708, 3735, 3734, 3736, 3737, 3738, 3739, - 3740, 3741, 3743, 3742, 3744, 3745, 3746, 3747, 3748, 3749, - 3717, 3718, 3721, 3722, 3720, 3719, 3723, 3732, 3733, 3724, - 3725, 3726, 3727, 3728, 3729, 3731, 3730, 3750, 3751, 3752, - 3753, 3754, 3756, 3755, 3759, 3760, 3758, 3757, 3762, 3761, - 0, 2345, 2345, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 917, 0, 918, 0, 0, 922, 0, 0, - 0, 924, 923, 0, 925, 887, 886, 0, 0, 919, - 920, 0, 921, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 665, 0, 0, 665, 665, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3569, 3570, 3571, 3572, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3666, 0, 3668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3801, 3802, 3803, - 3804, 3805, 3806, 3807, 3808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3833, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1502, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3668, 0, 3670, + 0, 0, 0, 0, 0, 0, 0, 3906, 0, 0, + 0, 3906, 3906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2345, 0, 0, 0, 0, 0, 0, 0, 1924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1924, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2345, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3835, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1977, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3908, - 0, 0, 0, 3908, 3908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3983, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3987, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1265, 1265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2345, 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, 4037, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3983, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1924, 0, 2345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 665, 0, 3419, 0, 4037, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3985, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1265, 1265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4031, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3985, 0, 0, 0, 0, 0, 0, + 4009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 393, 3421, 0, 4039, 1400, 1386, 521, + 0, 0, 0, 0, 0, 1924, 0, 0, 0, 0, + 0, 0, 0, 393, 0, 0, 0, 1400, 1386, 521, 0, 1328, 1403, 1297, 1316, 1413, 1319, 1322, 1365, 1275, 1343, 412, 1313, 1268, 1301, 1270, 1308, 1271, 1299, 1330, 269, 1296, 1388, 1347, 1402, 363, 266, 1277, 1302, 426, 1318, 203, 1367, 482, 251, 374, 371, 576, 281, 272, 268, 249, 316, 382, 424, 511, 418, 1409, 367, 1353, - 0, 492, 397, 0, 0, 0, 1332, 1392, 1341, 1379, + 0, 492, 397, 0, 0, 1977, 1332, 1392, 1341, 1379, 1327, 1366, 1285, 1352, 1404, 1314, 1362, 1405, 322, 247, - 324, 202, 409, 493, 285, 0, 0, 0, 0, 4013, - 942, 0, 0, 0, 0, 4014, 0, 0, 0, 0, + 324, 202, 409, 493, 285, 0, 0, 0, 0, 4011, + 942, 0, 0, 0, 0, 4012, 0, 0, 0, 0, 237, 0, 0, 244, 0, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 1310, 1359, 1399, 1311, 1361, 264, 320, 271, 263, 573, 1410, 1391, 1274, @@ -2892,7 +2839,7 @@ var yyAct = [...]int{ 1398, 1335, 0, 0, 228, 1401, 1334, 0, 1364, 0, 1416, 1269, 1355, 0, 1272, 1276, 1412, 1396, 1305, 274, 0, 0, 0, 0, 0, 0, 0, 1331, 1342, 1376, - 1380, 1325, 0, 0, 0, 0, 0, 0, 3185, 0, + 1380, 1325, 0, 0, 0, 0, 0, 0, 3183, 0, 1303, 0, 1351, 0, 0, 0, 1281, 1273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2965,7 +2912,7 @@ var yyAct = [...]int{ 1335, 0, 0, 228, 1401, 1334, 0, 1364, 0, 1416, 1269, 1355, 0, 1272, 1276, 1412, 1396, 1305, 274, 0, 0, 0, 0, 0, 0, 0, 1331, 1342, 1376, 1380, - 1325, 0, 0, 0, 0, 0, 0, 3146, 0, 1303, + 1325, 0, 0, 0, 0, 0, 0, 3144, 0, 1303, 0, 1351, 0, 0, 0, 1281, 1273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3630,7 +3577,7 @@ var yyAct = [...]int{ 901, 0, 0, 617, 0, 0, 899, 0, 0, 0, 0, 362, 0, 329, 197, 224, 0, 0, 408, 457, 469, 0, 0, 0, 952, 0, 467, 422, 595, 232, - 283, 454, 428, 465, 436, 286, 3999, 0, 466, 369, + 283, 454, 428, 465, 436, 286, 3997, 0, 466, 369, 578, 446, 592, 618, 619, 262, 402, 604, 515, 612, 636, 225, 259, 416, 500, 598, 489, 394, 574, 575, 328, 488, 294, 201, 366, 624, 223, 475, 368, 241, @@ -3914,7 +3861,7 @@ var yyAct = [...]int{ 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, 3104, 0, 0, 0, 0, + 1002, 1003, 1004, 1005, 1006, 3102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 0, 398, 256, 0, 449, 901, 0, 0, 617, 0, 0, 899, 0, 0, 0, 0, 362, 0, 329, 197, 224, 0, 0, @@ -3986,7 +3933,7 @@ var yyAct = [...]int{ 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, 3100, 0, + 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 3098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 0, 398, 256, 0, 449, 901, 0, 0, 617, 0, 0, 899, 0, 0, 0, 0, 362, 0, 329, 197, @@ -4929,7 +4876,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 0, 398, 256, 0, 449, 0, 0, 0, 617, - 0, 0, 0, 3909, 0, 0, 0, 362, 0, 329, + 0, 0, 0, 3907, 0, 0, 0, 362, 0, 329, 197, 224, 0, 0, 408, 457, 469, 0, 0, 0, 252, 0, 467, 422, 595, 232, 283, 454, 428, 465, 436, 286, 0, 0, 466, 369, 578, 446, 592, 618, @@ -5058,7 +5005,7 @@ var yyAct = [...]int{ 418, 0, 367, 0, 0, 492, 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, 202, 409, 493, 285, 0, - 0, 0, 0, 2825, 710, 0, 0, 0, 0, 0, + 0, 0, 0, 2823, 710, 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, @@ -5067,7 +5014,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, 2826, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 +5078,8 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 247, 324, 202, 409, 493, 285, 0, 0, 0, 0, 0, 710, 0, 0, - 0, 0, 2810, 0, 0, 0, 0, 237, 0, 0, - 244, 2811, 0, 0, 348, 357, 356, 337, 338, 340, + 0, 0, 2808, 0, 0, 0, 0, 237, 0, 0, + 244, 2809, 0, 0, 348, 357, 356, 337, 338, 340, 342, 347, 354, 360, 0, 0, 0, 0, 0, 264, 320, 271, 263, 573, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, @@ -5363,7 +5310,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 0, 398, 256, 0, 449, 0, 0, 0, 617, 0, 0, - 0, 4032, 0, 0, 0, 362, 0, 329, 197, 224, + 0, 4030, 0, 0, 0, 362, 0, 329, 197, 224, 0, 0, 408, 457, 469, 0, 0, 0, 252, 0, 467, 422, 595, 232, 283, 454, 428, 465, 436, 286, 0, 0, 466, 369, 578, 446, 592, 618, 619, 262, @@ -5507,7 +5454,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, 0, 0, 0, 296, 0, 398, 256, 0, 449, - 0, 0, 0, 617, 0, 0, 0, 3909, 0, 0, + 0, 0, 0, 617, 0, 0, 0, 3907, 0, 0, 0, 362, 0, 329, 197, 224, 0, 0, 408, 457, 469, 0, 0, 0, 252, 0, 467, 422, 595, 232, 283, 454, 428, 465, 436, 286, 0, 0, 466, 369, @@ -6992,7 +6939,7 @@ var yyAct = [...]int{ 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, 4040, 406, 407, 410, 413, 414, 417, + 384, 385, 386, 4038, 406, 407, 410, 413, 414, 417, 419, 420, 423, 427, 431, 432, 433, 435, 437, 439, 451, 456, 470, 471, 472, 473, 474, 477, 478, 483, 484, 485, 486, 487, 495, 496, 509, 579, 581, 596, @@ -7204,8 +7151,8 @@ var yyAct = [...]int{ 541, 538, 566, 567, 544, 549, 528, 540, 545, 558, 565, 562, 522, 526, 530, 539, 557, 556, 537, 548, 559, 543, 531, 524, 532, 0, 196, 220, 365, 0, - 450, 287, 638, 607, 602, 205, 222, 0, 261, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 450, 287, 638, 607, 602, 205, 222, 0, 261, 3698, + 3700, 3699, 3763, 3764, 3765, 3766, 3767, 3768, 3769, 790, 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, @@ -7219,33 +7166,73 @@ var yyAct = [...]int{ 250, 0, 0, 210, 245, 229, 258, 273, 276, 323, 388, 396, 425, 430, 295, 270, 243, 455, 240, 480, 512, 513, 514, 516, 392, 265, 429, 0, 0, 373, - 569, 570, 315, + 569, 570, 315, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3704, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3712, 3713, 0, 0, 3788, 3787, 3786, 0, 0, + 3784, 3785, 3783, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3789, 911, 0, 766, 767, + 3790, 3791, 915, 3792, 769, 770, 912, 913, 0, 764, + 768, 914, 916, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3695, 3696, 3697, + 3701, 3702, 3703, 3714, 3761, 3762, 3770, 3772, 867, 3771, + 3773, 3774, 3775, 3778, 3779, 3780, 3781, 3776, 3777, 3782, + 3678, 3682, 3679, 3680, 3681, 3693, 3683, 3684, 3685, 3686, + 3687, 3688, 3689, 3690, 3691, 3692, 3694, 3793, 3794, 3795, + 3796, 3797, 3798, 3707, 3711, 3710, 3708, 3709, 3705, 3706, + 3733, 3732, 3734, 3735, 3736, 3737, 3738, 3739, 3741, 3740, + 3742, 3743, 3744, 3745, 3746, 3747, 3715, 3716, 3719, 3720, + 3718, 3717, 3721, 3730, 3731, 3722, 3723, 3724, 3725, 3726, + 3727, 3729, 3728, 3748, 3749, 3750, 3751, 3752, 3754, 3753, + 3757, 3758, 3756, 3755, 3760, 3759, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 917, 0, + 918, 0, 0, 922, 0, 0, 0, 924, 923, 0, + 925, 887, 886, 0, 0, 919, 920, 0, 921, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3799, 3800, 3801, 3802, 3803, 3804, 3805, + 3806, } var yyPact = [...]int{ - -1000, -1000, 4254, -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, 2371, 2564, -1000, -1000, -1000, -1000, 2594, -1000, 1027, - 2083, -1000, 2361, 4892, -1000, 54870, 776, -1000, 51978, -434, - 920, 239, 36072, -1000, 212, -1000, 199, 53424, 204, -1000, - -1000, -1000, -1000, -434, 21610, 2285, 59, 58, 54870, -1000, - -1000, -1000, -1000, -353, 2544, 2065, -1000, 411, -1000, -1000, - -1000, -1000, -1000, -1000, 51255, -1000, 1115, -1000, -1000, 2380, - 2365, 2274, 949, 2290, -1000, 2416, 2065, -1000, 21610, 2525, - 2428, 20887, 20887, 480, -1000, -1000, 268, -1000, -1000, 31011, - 54870, 38964, 968, -1000, 2361, -1000, -1000, -1000, 218, -1000, - 395, 1973, -1000, 1972, -1000, 816, 842, 424, 847, 824, - 423, 422, 421, 410, 409, 408, 407, 401, 437, -1000, - 981, 981, -197, -204, 2068, 479, 466, 466, 1032, 498, - 2316, 2315, -1000, -1000, 981, 981, 981, 398, 981, 981, - 981, 981, 375, 352, 981, 981, 981, 981, 981, 981, - 981, 981, 981, 981, 981, 981, 981, 981, 981, 981, - 981, 871, 2361, 307, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 4937, -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, 2440, 2534, -1000, -1000, -1000, -1000, 2659, -1000, 998, + 2072, -1000, 2374, 5011, -1000, 54340, 507, -1000, 51448, -434, + 889, 261, 35542, -1000, 205, -1000, 195, 52894, 200, -1000, + -1000, -1000, -1000, -434, 21080, 2298, 66, 65, 54340, -1000, + -1000, -1000, -1000, -353, 2574, 2067, -1000, 421, -1000, -1000, + -1000, -1000, -1000, -1000, 50725, -1000, 1092, -1000, -1000, 2395, + 2405, 2308, 920, 2331, -1000, 2497, 2067, -1000, 21080, 2572, + 2457, 20357, 20357, 444, -1000, -1000, 269, -1000, -1000, 30481, + 54340, 38434, 310, -1000, 2374, -1000, -1000, -1000, 213, -1000, + 339, 1971, -1000, 1964, -1000, 893, 938, 366, 485, 468, + 365, 363, 362, 361, 360, 358, 356, 355, 379, -1000, + 943, 943, -193, -208, 1409, 445, 430, 430, 1065, 459, + 2342, 2339, -1000, -1000, 943, 943, 943, 364, 943, 943, + 943, 943, 296, 288, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, 943, 943, + 943, 917, 2374, 262, -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, @@ -7289,69 +7276,69 @@ 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, 54870, 232, 54870, -1000, 855, 775, -1000, -1000, -439, - 1104, 1104, 91, 1104, 1104, 1104, 1104, 198, 973, 55, - -1000, 197, 353, 175, 296, 1091, 184, -1000, -1000, 282, - 1091, 1813, -1000, 970, 291, 189, -1000, 1104, 1104, -1000, - 14355, 252, 14355, 14355, -1000, 2350, -1000, -1000, -1000, -1000, - -1000, 1379, -1000, -1000, -1000, -1000, -10, 496, -1000, -1000, - -1000, -1000, 53424, 50532, 238, -1000, -1000, 767, 1858, 1330, - 21610, 1258, 940, -1000, -1000, 1388, 909, -1000, -1000, -1000, - -1000, -1000, 811, -1000, 23779, 23779, 23779, 23779, -1000, -1000, - 1977, 49809, 1977, 1977, 23779, 1977, 23779, 1977, 1977, 1977, - 21610, 1977, 1977, 1977, 1977, -1000, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, -1000, -1000, -1000, -1000, 1977, 854, 1977, - 1977, 1977, 1977, 1977, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 1977, 1977, 1977, 1977, 1977, 1977, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 26671, 1552, 1550, 1536, -1000, 18718, 1977, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 54340, 271, 54340, -1000, 835, 506, -1000, -1000, -438, + 1068, 1068, 98, 1068, 1068, 1068, 1068, 206, 965, 62, + -1000, 184, 259, 182, 275, 1083, 786, -1000, -1000, 247, + 1083, 1770, -1000, 928, 273, 192, -1000, 1068, 1068, -1000, + 13825, 231, 13825, 13825, -1000, 2366, -1000, -1000, -1000, -1000, + -1000, 1323, -1000, -1000, -1000, -1000, -22, 457, -1000, -1000, + -1000, -1000, 52894, 50002, 236, -1000, -1000, 47, 1831, 1285, + 21080, 1315, 915, -1000, -1000, 1188, 895, -1000, -1000, -1000, + -1000, -1000, 788, -1000, 23249, 23249, 23249, 23249, -1000, -1000, + 1973, 49279, 1973, 1973, 23249, 1973, 23249, 1973, 1973, 1973, + 21080, 1973, 1973, 1973, 1973, -1000, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, -1000, -1000, -1000, -1000, 1973, 826, 1973, + 1973, 1973, 1973, 1973, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 1973, 1973, 1973, 1973, 1973, 1973, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 26141, 1466, 1453, 1447, -1000, 18188, 1973, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 54870, -1000, - 1977, 229, 53424, 53424, 405, 1358, -1000, -1000, 2416, 2065, - -1000, 2544, 2471, 411, -1000, 3813, 1479, 1618, 1402, 2065, - 1948, 54870, -1000, 1997, -1000, -1000, -1000, -320, -366, 2206, - 1455, 1786, -1000, -1000, -1000, -1000, 1824, 21610, -1000, -1000, - 2569, -1000, 28118, 852, 2563, 49086, -1000, 480, 480, 1971, - 429, 8, -1000, -1000, -1000, -1000, 1002, 35349, -1000, -1000, - -1000, -1000, -1000, 1862, 54870, -1000, -1000, 4100, 1335, -1000, - 2079, -1000, 1852, -1000, 2035, 21610, 2095, 774, 1335, 514, - 508, 507, -1000, -48, -1000, -1000, -1000, -1000, -1000, -1000, - 981, 981, 981, -1000, 434, 2517, 4892, 5049, -1000, -1000, - -1000, 48363, 2077, 1335, -1000, 2075, -1000, 1055, 849, 875, - 875, 1335, -1000, -1000, 54147, 1335, 1054, 1053, 1335, 1335, - 53424, 53424, -1000, 47640, -1000, 46917, 46194, 1355, 53424, 45471, - 44748, 44025, 43302, 42579, -1000, 2217, -1000, 2153, -1000, -1000, - -1000, 54147, 1335, 1335, 54147, 53424, 54147, 54870, 1335, -1000, - -1000, 377, -1000, -1000, 1346, 1345, 1344, 981, 981, 1342, - 1765, 1761, 1754, 981, 981, 1341, 1749, 37518, 1742, 288, - 1334, 1333, 1332, 1359, 1734, 205, 1727, 1350, 1289, 1331, - 53424, 2070, 54870, -1000, 274, 950, 948, 1000, 2361, 2284, - 1964, 488, 772, 1335, 472, 472, 53424, -1000, 15084, 54870, - 257, -1000, 1703, 21610, -1000, 1094, 1091, 1091, -1000, -1000, - -1000, -1000, -1000, -1000, 1104, 54870, 1094, -1000, -1000, -1000, - 1091, 1104, 54870, 1104, 1104, 1104, 1104, 1091, 1091, 1091, - 1104, 54870, 54870, 54870, 54870, 54870, 54870, 54870, 54870, 54870, - 14355, 970, 1104, -441, -1000, 1699, -1000, -1000, -1000, 2183, -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, 54340, -1000, + 1973, 225, 52894, 52894, 340, 1325, -1000, -1000, 2497, 2067, + -1000, 2574, 2562, 421, -1000, 3109, 1703, 1728, 1444, 2067, + 1947, 54340, -1000, 1987, -1000, -1000, -1000, -296, -301, 2233, + 1390, 1754, -1000, -1000, -1000, -1000, 2432, 21080, -1000, -1000, + 2652, -1000, 27588, 810, 2651, 48556, -1000, 444, 444, 1957, + 607, 45, -1000, -1000, -1000, -1000, 979, 34819, -1000, -1000, + -1000, -1000, -1000, 1803, 54340, -1000, -1000, 3996, 1333, -1000, + 2071, -1000, 1788, -1000, 2013, 21080, 2083, 495, 1333, 477, + 473, 472, -1000, -48, -1000, -1000, -1000, -1000, -1000, -1000, + 943, 943, 943, -1000, 372, 2570, 5011, 7621, -1000, -1000, + -1000, 47833, 2070, 1333, -1000, 2069, -1000, 1023, 816, 855, + 855, 1333, -1000, -1000, 53617, 1333, 1017, 1015, 1333, 1333, + 52894, 52894, -1000, 47110, -1000, 46387, 45664, 1320, 52894, 44941, + 44218, 43495, 42772, 42049, -1000, 2304, -1000, 2052, -1000, -1000, + -1000, 53617, 1333, 1333, 53617, 52894, 53617, 54340, 1333, -1000, + -1000, 369, -1000, -1000, 1314, 1304, 1303, 943, 943, 1300, + 1753, 1730, 1723, 943, 943, 1295, 1716, 36988, 1696, 313, + 1251, 1246, 1244, 1356, 1673, 193, 1655, 1241, 1240, 1237, + 52894, 2068, 54340, -1000, 252, 1031, 980, 978, 2374, 2282, + 1955, 456, 494, 1333, 433, 433, 52894, -1000, 14554, 54340, + 238, -1000, 1646, 21080, -1000, 1090, 1083, 1083, -1000, -1000, + -1000, -1000, -1000, -1000, 1068, 54340, 1090, -1000, -1000, -1000, + 1083, 1068, 54340, 1068, 1068, 1068, 1068, 1083, 1083, 1083, + 1068, 54340, 54340, 54340, 54340, 54340, 54340, 54340, 54340, 54340, + 13825, 928, 1068, -439, -1000, 1644, -1000, -1000, -1000, 2185, -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, @@ -7364,328 +7351,331 @@ 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, -1000, -1000, -1000, -1000, -1000, 14355, 14355, -1000, - -1000, -1000, -1000, -1000, 1959, -1000, 194, 18, 200, -1000, - 41856, 487, 998, -1000, 487, -1000, -1000, -1000, 1958, 41133, - -1000, -443, -445, -446, -447, -1000, -1000, -1000, -448, -451, - -1000, -1000, -1000, 21610, 21610, 21610, 21610, -236, -1000, 1079, - 23779, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 21610, 217, - 1177, 23779, 23779, 23779, 23779, 23779, 23779, 23779, 25225, 24502, - 23779, 23779, 23779, 23779, 23779, 23779, -1000, -1000, 33180, 3205, - 3205, 909, 909, 909, 909, -1000, -159, 1954, 54147, -1000, - -1000, -1000, 851, 21610, 21610, 909, -1000, 1335, 2916, 18718, - 20887, 20887, 21610, 996, 1330, 54147, 21610, -1000, 1402, -1000, - -1000, -1000, -1000, 1224, -1000, -1000, 1096, 2345, 2345, 2345, - 2345, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, - 21610, 2345, 21610, 95, 95, 908, 21610, 21610, 21610, 21610, - 21610, 21610, 17271, 21610, 21610, 23779, 21610, 21610, 21610, 1402, - 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, - 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, - 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, - 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, - 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, - 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, - 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, - 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 1402, - 21610, 1329, 21610, 21610, 21610, 21610, 21610, 21610, 20887, 16542, - 20887, 20887, 20887, 20887, 20887, -1000, -1000, -1000, -1000, -1000, - -1000, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 1402, - 21610, 21610, 21610, 21610, 21610, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1598, 1478, 1458, 21610, -1000, - 1951, -1000, -184, 30288, 21610, 1697, 2555, 2119, 53424, -1000, - -1000, -1000, -1000, 2416, -1000, 2416, 1598, 3808, 2223, 20887, - -1000, -1000, 3808, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 1747, -1000, 54870, 1948, 2402, 53424, -1000, -271, -1000, - -277, 2202, 1668, 812, -1000, 21610, 21610, 1940, -1000, 1176, - 54870, -1000, -236, -1000, 40410, -1000, -1000, 13626, 54870, 393, - 54870, -1000, 29565, 39687, 309, -1000, 8, 1909, -1000, 33, - 15, 17994, 903, -1000, -1000, -1000, 2068, 25948, 1826, 903, - 124, -1000, -1000, -1000, 2035, -1000, 2035, 2035, 2035, 2035, - 812, 812, 812, 812, -1000, -1000, -1000, -1000, -1000, 2066, - 2062, -1000, 2035, 2035, 2035, 2035, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 2060, 2060, 2060, 2059, 2059, 2036, 2036, - 460, -1000, 21610, 416, 38964, 2374, 1328, 1652, 274, 474, - 2110, 1335, 1335, 1335, 474, -1000, 1420, 1412, 1406, -1000, - -520, 1935, -1000, -1000, 2513, -1000, -1000, 891, 1086, 1084, - 902, 53424, 234, 378, -1000, 458, -1000, 38964, 1335, 1051, - 875, 1335, -1000, 1335, -1000, -1000, -1000, -1000, -1000, 1335, - -1000, -1000, 1929, -1000, 1949, 1156, 1083, 1118, 1067, 1929, - -1000, -1000, -166, 1929, -1000, 1929, -1000, 1929, -1000, 1929, - -1000, 1929, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 992, 326, -334, 53424, 234, 486, -1000, 485, 33180, - -1000, -1000, -1000, 33180, 33180, -1000, -1000, -1000, -1000, 1664, - 1657, -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, - -505, 54870, -1000, 251, 993, 335, 333, 328, 54870, 384, - 2444, 2441, 2440, 2431, 2414, 2409, 315, 347, 54870, 54870, - 472, 2157, 54870, 2391, 54870, -1000, -1000, -1000, -1000, -1000, - 1654, 1640, -1000, 1330, 54870, -1000, -1000, 1104, 1104, -1000, - -1000, 54870, 1104, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 1104, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 54870, -1000, -1000, - -1000, -1000, -10, 191, -1000, -1000, 53424, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -63, -1000, 42, 31, - 371, -1000, -1000, -1000, -1000, -1000, 2450, -1000, 1330, 1019, - 1025, -1000, 1977, -1000, -1000, 1269, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 217, 23779, 23779, 23779, 1423, 830, - 1411, 1120, 1229, 1158, 1158, 1134, 23779, 1134, 23779, 926, - 926, 926, 926, 926, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1636, -1000, 1977, 54147, 1843, 16542, 2025, 2368, - 1402, 935, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 13825, 13825, -1000, + -1000, -1000, -1000, -1000, 1954, -1000, 185, 37, 198, -1000, + 41326, 482, 970, -1000, 482, -1000, -1000, -1000, 1953, 40603, + -1000, -441, -445, -446, -447, -1000, -1000, -1000, -453, -460, + -1000, -1000, -1000, 21080, 21080, 21080, 21080, -244, -1000, 1293, + 23249, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 21080, 249, + 941, 23249, 23249, 23249, 23249, 23249, 23249, 23249, 24695, 23972, + 23249, 23249, 23249, 23249, 23249, 23249, -1000, -1000, 32650, 5890, + 5890, 895, 895, 895, 895, -1000, -165, 1952, 53617, -1000, + -1000, -1000, 809, 21080, 21080, 895, -1000, 1333, 2184, 18188, + 20357, 20357, 21080, 942, 1285, 53617, 21080, -1000, 1444, -1000, + -1000, -1000, -1000, 1115, -1000, -1000, 1104, 2372, 2372, 2372, + 2372, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, + 21080, 2372, 21080, 264, 264, 923, 21080, 21080, 21080, 21080, + 21080, 21080, 16741, 21080, 21080, 23249, 21080, 21080, 21080, 1444, + 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, + 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, + 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, + 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, + 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, + 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, + 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, + 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 1444, + 21080, 1337, 21080, 21080, 21080, 21080, 21080, 21080, 20357, 16012, + 20357, 20357, 20357, 20357, 20357, -1000, -1000, -1000, -1000, -1000, + -1000, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, 1444, + 21080, 21080, 21080, 21080, 21080, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1508, 1663, 1451, 21080, -1000, + 1948, -1000, -184, 29758, 21080, 1619, 2647, 2106, 52894, -1000, + -1000, -1000, -1000, 2497, -1000, 2497, 1508, 2686, 2239, 20357, + -1000, -1000, 2686, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 1810, -1000, 54340, 1947, 2450, 52894, -1000, -300, -1000, + -306, 2226, 1599, 921, -1000, 21080, 21080, 1942, -1000, 1807, + 54340, -1000, -244, -1000, 39880, -1000, -1000, 13096, 54340, 329, + 54340, -1000, 29035, 39157, 336, -1000, 45, 1898, -1000, 32, + 34, 17464, 894, -1000, -1000, -1000, 1409, 25418, 1816, 894, + 112, -1000, -1000, -1000, 2013, -1000, 2013, 2013, 2013, 2013, + 921, 921, 921, 921, -1000, -1000, -1000, -1000, -1000, 2063, + 2057, -1000, 2013, 2013, 2013, 2013, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 4138, 1832, -1000, 1832, 1667, 1026, -1000, 21610, - 1402, 4132, -1000, -1000, 1402, 1402, 21610, -1000, -1000, 21610, - 21610, 21610, 21610, 1652, 1652, 1652, 1652, 1652, 1652, 1652, - 1652, 1652, 1652, 21610, 1652, 1928, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 2053, 2053, 2053, 2019, 2019, 2014, 2014, + 411, -1000, 21080, 437, 38434, 2429, 1232, 1818, 252, 434, + 2101, 1333, 1333, 1333, 434, -1000, 1421, 1408, 1405, -1000, + -521, 1937, -1000, -1000, 2567, -1000, -1000, 1062, 1053, 1051, + 865, 52894, 229, 307, -1000, 407, -1000, 38434, 1333, 1014, + 855, 1333, -1000, 1333, -1000, -1000, -1000, -1000, -1000, 1333, + -1000, -1000, 1935, -1000, 1891, 1135, 1044, 1048, 1035, 1935, + -1000, -1000, -176, 1935, -1000, 1935, -1000, 1935, -1000, 1935, + -1000, 1935, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 973, 277, -331, 52894, 229, 452, -1000, 451, 32650, + -1000, -1000, -1000, 32650, 32650, -1000, -1000, -1000, -1000, 1597, + 1591, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1925, 2552, 1620, 1652, 1652, 1652, - 1652, 1652, 21610, 2524, -1000, -1000, -1000, 1449, 4128, 1311, - 4106, 1652, 1652, -1000, 1652, 3888, 3866, 1402, 1858, 2620, - 2615, 1652, 1652, 1652, 1652, 1652, 2606, 2595, 1652, 1652, - 2558, 1652, 3854, 1652, 2512, 2499, 2493, 2455, 2437, 2426, - 2407, 2392, 2378, 2362, 2346, 2335, 2318, 2289, 2272, 2249, - 2231, 2222, 1652, 1652, 1652, 3832, 1652, 3827, 1652, 3821, - 1652, 1652, 3816, 2216, 2200, 1402, 1923, -1000, 3526, 1652, - 3519, 3511, 3490, 2192, 3470, 3466, 3461, 1652, 1652, 1652, - 2185, 3452, 3443, 3437, 3433, 3429, 3424, 3348, 3289, 3036, - 1652, 1458, 1458, 1458, 1458, 1458, 3029, -238, 1652, 1402, - -1000, -1000, -1000, -1000, -1000, 3024, 2174, 2992, 2985, 2967, - 2955, 1402, 1917, 1977, 850, -1000, -1000, 1832, 1402, 1402, - 1832, 1832, 2919, 2907, 2899, 2895, 2876, 2861, 1652, 1652, - -1000, 1652, 2825, 2778, 2159, 2127, 1402, -1000, 1458, 54870, - -1000, -431, -1000, 22, 928, 1977, -1000, 37518, 1402, -1000, - 6928, -1000, 1372, -1000, -1000, -1000, -1000, -1000, 34626, 1687, - 3808, -1000, -1000, 1977, 1829, -1000, -1000, -1000, -1000, 812, - 108, 33903, 912, 912, 139, 1330, 1330, 21610, -1000, -1000, - -1000, -1000, -1000, -1000, 846, 2535, 394, 1977, -1000, 1902, - 3375, -1000, -1000, -1000, 2400, 27395, -1000, -1000, 1977, 1977, - 54870, 1723, 1718, -1000, 845, -1000, 1397, 1909, 8, 12, - -1000, -1000, -1000, -1000, 1330, -1000, 1403, 399, 340, -1000, - 461, -1000, -1000, -1000, -1000, 2308, 103, -1000, -1000, -1000, - 370, 812, -1000, -1000, -1000, -1000, -1000, -1000, 1610, 1610, - -1000, -1000, -1000, -1000, -1000, 1324, -1000, -1000, -1000, -1000, - 1287, -1000, -1000, 1274, -1000, -1000, 2417, 2124, 416, -1000, - -1000, 981, 1604, -1000, -1000, 2291, 981, 981, 53424, -1000, - -1000, 1781, 2374, 251, 54870, 1012, 2156, -1000, 2110, 2110, - 2110, 54870, -1000, -1000, -1000, -1000, -1000, -1000, -507, 165, - 382, -1000, -1000, -1000, 2011, 53424, 1809, -1000, 237, -1000, - 1719, -1000, 53424, -1000, 1805, 2056, 1335, 1335, -1000, -1000, - -1000, 53424, 1977, -1000, -1000, -1000, -1000, 521, 2353, 273, - -1000, -1000, -261, -1000, -1000, 234, 237, 54147, 1335, 903, - -1000, -1000, -1000, -1000, -1000, -508, 1802, 503, 241, 565, - 54870, 54870, 54870, 54870, 54870, 54870, 789, -1000, -1000, 44, - -1000, -1000, 219, -1000, -1000, -1000, -1000, -1000, 219, -1000, - -1000, -1000, -1000, -1000, 327, 484, -1000, 54870, 54870, 919, - -1000, -1000, -1000, -1000, -1000, 1091, -1000, -1000, 1091, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 2347, 54870, 26, -471, -1000, -468, 21610, -1000, -1000, - -1000, -1000, 1206, 821, 1411, 23779, 23779, 2916, 2916, 23779, - -1000, -1000, -1000, 329, 329, 33180, -1000, 23779, 21610, 20887, - -1000, -1000, 21610, 21610, 1004, -1000, 21610, 1307, -1000, 21610, - -1000, -1000, 1458, 1652, 1652, 1652, 1652, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1934, -1000, 21610, - 21610, 21610, 1402, 316, -1000, -1000, -1000, -1000, -1000, 2549, - -1000, 21610, -1000, 33180, 21610, 21610, 21610, -1000, -1000, -1000, - 21610, 21610, -1000, -1000, 21610, -1000, 21610, -1000, -1000, -1000, - -1000, -1000, -1000, 21610, -1000, 21610, -1000, -1000, -1000, 21610, - -1000, 21610, -1000, -1000, 21610, -1000, 21610, -1000, 21610, -1000, - 21610, -1000, 21610, -1000, 21610, -1000, 21610, -1000, 21610, -1000, - 21610, -1000, 21610, -1000, 21610, -1000, 21610, -1000, 21610, -1000, - 21610, -1000, 21610, -1000, 21610, -1000, 21610, -1000, 21610, -1000, - -1000, -1000, 21610, -1000, 21610, -1000, 21610, -1000, -1000, 21610, - -1000, 21610, -1000, 21610, -1000, 21610, 21610, -1000, 21610, 21610, - 21610, -1000, 21610, 21610, 21610, 21610, -1000, -1000, -1000, -1000, - 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, 21610, - -1000, -1000, -1000, -1000, -1000, -1000, 21610, -1000, 38964, 23, - -238, 1329, 23, 1329, 23056, 848, 817, 22333, -1000, 20887, - 15813, -1000, -1000, -1000, -1000, -1000, 21610, 21610, 21610, 21610, - 21610, 21610, -1000, -1000, -1000, 21610, 21610, -1000, 21610, -1000, - 21610, -1000, -1000, -1000, -1000, -1000, 928, -1000, 875, 875, - 875, 53424, -1000, -1000, -1000, -1000, 1907, -1000, 2439, -1000, - 2232, 2228, 2546, 2535, -1000, 29565, 3808, -1000, -1000, 53424, - -423, -1000, 2268, 2306, 912, 912, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 12897, 2416, 21610, 2154, 54147, 244, -1000, - 28842, 53424, 54147, 29565, 29565, 29565, 29565, 29565, -1000, 2197, - 2191, -1000, 2212, 2199, 2254, 54870, -1000, 1598, 1780, -1000, - 21610, 31734, 1870, 29565, -1000, -1000, 29565, 54870, 12168, -1000, - -1000, 25, 9, -1000, -1000, -1000, -1000, 2068, -1000, -1000, - 1064, 2399, 2304, -1000, -1000, -1000, -1000, -1000, 1773, -1000, - 1741, 1906, 1685, 1678, 326, -1000, 2072, 2341, 981, 981, - -1000, 1252, -1000, 1335, 1599, 1588, -1000, -1000, -1000, 502, - -1000, 2386, 54870, 2152, 2151, 2150, -1000, -516, 1247, 2053, - 2016, 21610, 2043, 2511, 1895, 53424, -1000, -1000, 54147, -1000, - 266, -1000, 416, 53424, -1000, -1000, -1000, 378, 54870, -1000, - 7511, -1000, -1000, -1000, 237, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 54870, 249, -1000, 2038, 1377, -1000, -1000, 2101, - -1000, -1000, -1000, -1000, -1000, 233, 209, 1584, 213, 1582, - 213, -1000, 54870, 910, 2124, 54870, -1000, -1000, -1000, 1104, - 1104, -1000, -1000, 2323, -1000, 1335, 1652, 23779, 23779, -1000, - 909, -1000, -1000, 431, -217, 2035, 2035, -1000, 2035, 2036, - -1000, 2035, 178, 2035, 172, 2035, -1000, -1000, 1402, 1402, - -1000, 1458, -1000, 2114, 1695, -1000, 1330, 21610, 2746, -1000, - -1000, -1000, -1000, -1000, -54, 2681, 2665, 1652, -1000, 2022, - 2019, 21610, 1652, 1402, 2071, 1652, 1652, 1652, 1652, 1652, - 1652, 1652, 1652, 1652, 1652, 1652, 1652, 2067, 2044, 2040, - 2031, 2008, 2002, 1984, 1974, 1961, 1943, 1938, 1926, 1915, - 1898, 1817, 1812, 1652, 1652, 1794, 1652, 1784, 1768, -1000, - 1330, 1458, 2659, 1458, 1652, 1652, 2653, 313, 1652, 1676, - 1676, 1676, 1676, 1676, 1458, 1458, 1458, 1458, 1652, 53424, - -1000, -238, -1000, -1000, -293, -302, -1000, 1402, -238, 1905, - 23779, 1652, 23779, 23779, 23779, 1652, 1402, -1000, 1738, 1680, - 2625, 1660, 1652, 2534, 1652, 1652, 1652, 1643, -1000, 2446, - 2446, 2446, 1647, 1372, 54870, -1000, -1000, -1000, -1000, 2535, - 2531, 1897, -1000, -1000, 108, 621, -1000, 2247, 2306, -1000, - 2507, 2262, 2497, -1000, -1000, -1000, -1000, -1000, 1330, -1000, - 2367, 1856, -1000, 984, 1873, -1000, -1000, 20164, 1662, 2214, - 833, 1647, 1893, 3375, 2116, 2148, 3258, -1000, -1000, -1000, - -1000, 2188, -1000, 2184, -1000, -1000, 1997, -1000, 2413, 393, - 29565, 1883, 1883, -1000, 805, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1151, 7511, 2591, -1000, 1578, -1000, 1376, 193, - 1246, -1000, -1000, 981, 981, -1000, 1050, 1043, -1000, 54870, - 2015, -1000, 812, 1554, 812, 1240, -1000, -1000, 1228, -1000, - -1000, -1000, -1000, 2107, 2143, -1000, -1000, -1000, -1000, 54870, - -1000, -1000, 54870, 54870, 54870, 2012, 2492, -1000, 21610, 2007, - 982, 1965, 53424, 53424, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 804, 981, -488, 342, 330, - 981, 981, 981, -526, -1000, -1000, 1633, 1631, -1000, -205, - -1000, 21610, -1000, -1000, -1000, -1000, -1000, 1310, 1310, 1552, - 1550, 1536, -1000, 1997, -1000, -1000, -1000, 1681, -1000, -1000, - -171, 53424, 53424, 53424, 53424, -1000, -1000, -1000, 1178, -1000, + -504, 54340, -1000, 243, 966, 281, 353, 291, 54340, 292, + 2480, 2475, 2468, 2467, 2466, 2460, 258, 287, 54340, 54340, + 433, 2180, 54340, 2410, 54340, -1000, -1000, -1000, -1000, -1000, + 1575, 1570, -1000, 1285, 54340, -1000, -1000, 1068, 1068, -1000, + -1000, 54340, 1068, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 1068, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 54340, -1000, -1000, + -1000, -1000, -22, 173, -1000, -1000, 52894, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -102, -1000, 768, 24, + 375, -1000, -1000, -1000, -1000, -1000, 2489, -1000, 1285, 1003, + 996, -1000, 1973, -1000, -1000, 1319, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 249, 23249, 23249, 23249, 1457, 813, + 1473, 1317, 1413, 1234, 1234, 1149, 23249, 1149, 23249, 896, + 896, 896, 896, 896, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1568, -1000, 1973, 53617, 1749, 16012, 1475, 1632, + 1444, 910, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 909, 1402, 372, -175, 1402, -1000, -1000, 812, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 21610, - -1000, 21610, -1000, 1330, 21610, 2416, 1528, 21610, 21610, -1000, - 1221, 1219, 1652, -1000, -1000, -1000, 21610, -1000, -1000, -1000, + -1000, -1000, 4152, 1743, -1000, 1743, 1604, 985, -1000, 21080, + 1444, 4148, -1000, -1000, 1444, 1444, 21080, -1000, -1000, 21080, + 21080, 21080, 21080, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 21080, 1818, 1934, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 21610, -1000, 21610, -1000, 21610, -1000, 21610, -1000, 21610, -1000, - 21610, -1000, 21610, -1000, 21610, -1000, 21610, -1000, 21610, -1000, - 21610, -1000, 21610, -1000, 21610, -1000, 21610, -1000, 21610, -1000, - 21610, -1000, -1000, 21610, -1000, -1000, -1000, 21610, -1000, 21610, - -1000, 21610, -1000, -1000, -1000, 21610, 287, 329, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1402, - 386, -1000, -1000, -1000, -1000, 2539, -1000, 1402, 21610, 2916, - -1000, 2916, 2916, 2916, -1000, -1000, -1000, 21610, -1000, 21610, - 21610, -1000, 21610, -1000, 21610, -1000, -1000, -1000, -1000, 21610, - 1977, 2225, 1977, 1977, 31734, -1000, -1000, 2531, 2528, 2487, - 2253, 2255, 2255, 2247, -1000, 2480, 2479, -1000, 1524, 2478, - 1520, 1033, -1000, 54147, 21610, 244, -1000, 402, 53424, 244, - 53424, -1000, 2472, -1000, -1000, 21610, 2005, -1000, 21610, -1000, - -1000, -1000, -1000, 3205, 2535, 1883, -1000, -1000, 932, -1000, - 21610, -1000, 10035, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 1512, 1497, -1000, -1000, 2001, 21610, -1000, -1000, -1000, - 1663, 1634, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 1997, -1000, -1000, -1000, -1000, 378, -512, 1867, 53424, 1204, - -1000, 1627, 1895, 381, 244, 1485, 981, 981, 981, 1203, - 1200, 37518, 1608, -1000, 53424, 444, -1000, 378, -1000, -210, - -214, 1652, -1000, -1000, 2396, -1000, -1000, 15813, -1000, -1000, - 1995, 2103, -1000, -1000, -1000, -1000, 2187, -164, -189, -1000, - -1000, 1652, 1652, 2302, 1402, -1000, 1652, 1652, 1609, 1516, - -1000, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, - 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, - 1652, 1458, 1639, -1000, 287, 1402, 2141, -1000, -1000, 3205, - -1000, -1000, 2472, 2463, 23, -1000, -1000, 235, 23, 1330, - 1018, 1402, 1402, 1018, 1603, 1652, 1597, 1561, 1652, 1652, - 32457, -1000, 2456, 2443, 38241, 38241, 928, 2528, -245, 21610, - 21610, 2245, 1190, -1000, -1000, -1000, -1000, 1483, 1438, -1000, - 1432, -1000, 2583, -1000, 1330, -1000, 244, -1000, 803, 1873, - -1000, 2416, 1330, 53424, 1330, 77, 2472, -1000, 1652, -1000, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, -1000, - -1000, 53424, 1849, -1000, -1000, 2394, 1592, 163, -1000, 1424, - 1895, -1000, -1000, 208, -1000, 21610, -1000, 37518, 1430, 1426, - -1000, -1000, -1000, -1000, -526, -1000, -1000, -1000, -1000, -1000, - -1000, 411, 1880, -1000, 979, 53424, 54870, -1000, 2026, -1000, - -1000, -1000, 21610, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1928, 2644, 1255, 1818, 1818, 1818, + 1818, 1818, 21080, 2246, -1000, -1000, -1000, 1518, 4144, 1394, + 4134, 1818, 1818, -1000, 1818, 4130, 4124, 1444, 1831, 2898, + 2893, 1818, 1818, 1818, 1818, 1818, 2881, 2874, 1818, 1818, + 2775, 1818, 4120, 1818, 2741, 2713, 2698, 2685, 2681, 2649, + 2642, 2616, 2606, 2599, 2593, 2576, 2536, 2528, 2518, 2512, + 2507, 2462, 1818, 1818, 1818, 3882, 1818, 3868, 1818, 3864, + 1818, 1818, 3853, 2426, 2414, 1444, 1926, -1000, 3829, 1818, + 3825, 3819, 3815, 2406, 3517, 3511, 3484, 1818, 1818, 1818, + 2391, 3467, 3458, 3446, 3426, 3422, 3416, 3402, 3393, 3360, + 1818, 1451, 1451, 1451, 1451, 1451, 3354, -271, 1818, 1444, + -1000, -1000, -1000, -1000, -1000, 3344, 2367, 3327, 3296, 3285, + 3279, 1444, 1907, 1973, 806, -1000, -1000, 1743, 1444, 1444, + 1743, 1743, 3271, 3265, 3258, 3253, 3186, 3024, 1818, 1818, + -1000, 1818, 3002, 2985, 2358, 2319, 1444, -1000, 1451, 54340, + -1000, -433, -1000, 8, 972, 1973, -1000, 36988, 1444, -1000, + 4188, -1000, 1238, -1000, -1000, -1000, -1000, -1000, 34096, 1838, + 2686, -1000, -1000, 1973, 1721, -1000, -1000, -1000, -1000, 921, + 94, 33373, 886, 886, 130, 1285, 1285, 21080, -1000, -1000, + -1000, -1000, -1000, -1000, 798, 2595, 367, 1973, -1000, 1892, + 2099, -1000, -1000, -1000, 2447, 26865, -1000, -1000, 1973, 1973, + 54340, 1860, 1855, -1000, 792, -1000, 1335, 1898, 45, 14, + -1000, -1000, -1000, -1000, 1285, -1000, 1387, 334, 332, -1000, + 438, -1000, -1000, -1000, -1000, 2305, 100, -1000, -1000, -1000, + 337, 921, -1000, -1000, -1000, -1000, -1000, -1000, 1564, 1564, + -1000, -1000, -1000, -1000, -1000, 1220, -1000, -1000, -1000, -1000, + 1219, -1000, -1000, 1211, -1000, -1000, 2937, 2098, 437, -1000, + -1000, 943, 1559, -1000, -1000, 2337, 943, 943, 52894, -1000, + -1000, 1791, 2429, 243, 54340, 949, 2166, -1000, 2101, 2101, + 2101, 54340, -1000, -1000, -1000, -1000, -1000, -1000, -506, 167, + 558, -1000, -1000, -1000, 7198, 52894, 1714, -1000, 226, -1000, + 1789, -1000, 52894, -1000, 1712, 2018, 1333, 1333, -1000, -1000, + -1000, 52894, 1973, -1000, -1000, -1000, -1000, 483, 2370, 357, + -1000, -1000, -295, -1000, -1000, 229, 226, 53617, 1333, 894, + -1000, -1000, -1000, -1000, -1000, -507, 1709, 466, 233, 487, + 54340, 54340, 54340, 54340, 54340, 54340, 793, -1000, -1000, 50, + -1000, -1000, 211, -1000, -1000, -1000, -1000, -1000, 211, -1000, + -1000, -1000, -1000, -1000, 270, 448, -1000, 54340, 54340, 993, + -1000, -1000, -1000, -1000, -1000, 1083, -1000, -1000, 1083, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2364, + 54340, 18, -475, -1000, -469, 21080, -1000, -1000, -1000, -1000, + 1379, 782, 1473, 23249, 23249, 2184, 2184, 23249, -1000, -1000, + -1000, 831, 831, 32650, -1000, 23249, 21080, 20357, -1000, -1000, + 21080, 21080, 929, -1000, 21080, 1156, -1000, 21080, -1000, -1000, + 1451, 1818, 1818, 1818, 1818, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1884, -1000, 21080, 21080, 21080, + 1444, 335, -1000, -1000, -1000, -1000, -1000, 2641, -1000, 21080, + -1000, 32650, 21080, 21080, 21080, -1000, -1000, -1000, 21080, 21080, + -1000, -1000, 21080, -1000, 21080, -1000, -1000, -1000, -1000, -1000, + -1000, 21080, -1000, 21080, -1000, -1000, -1000, 21080, -1000, 21080, + -1000, -1000, 21080, -1000, 21080, -1000, 21080, -1000, 21080, -1000, + 21080, -1000, 21080, -1000, 21080, -1000, 21080, -1000, 21080, -1000, + 21080, -1000, 21080, -1000, 21080, -1000, 21080, -1000, 21080, -1000, + 21080, -1000, 21080, -1000, 21080, -1000, 21080, -1000, -1000, -1000, + 21080, -1000, 21080, -1000, 21080, -1000, -1000, 21080, -1000, 21080, + -1000, 21080, -1000, 21080, 21080, -1000, 21080, 21080, 21080, -1000, + 21080, 21080, 21080, 21080, -1000, -1000, -1000, -1000, 21080, 21080, + 21080, 21080, 21080, 21080, 21080, 21080, 21080, 21080, -1000, -1000, + -1000, -1000, -1000, -1000, 21080, -1000, 38434, 20, -271, 1337, + 20, 1337, 22526, 838, 837, 21803, -1000, 20357, 15283, -1000, + -1000, -1000, -1000, -1000, 21080, 21080, 21080, 21080, 21080, 21080, + -1000, -1000, -1000, 21080, 21080, -1000, 21080, -1000, 21080, -1000, + -1000, -1000, -1000, -1000, 972, -1000, 855, 855, 855, 52894, + -1000, -1000, -1000, -1000, 1895, -1000, 2474, -1000, 2244, 2243, + 2604, 2595, -1000, 29035, 2686, -1000, -1000, 52894, -422, -1000, + 2275, 2344, 886, 886, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 12367, 2497, 21080, 2156, 53617, 244, -1000, 28312, 52894, + 53617, 29035, 29035, 29035, 29035, 29035, -1000, 2216, 2207, -1000, + 2203, 2200, 2223, 54340, -1000, 1508, 1693, -1000, 21080, 31204, + 1846, 29035, -1000, -1000, 29035, 54340, 11638, -1000, -1000, 15, + 17, -1000, -1000, -1000, -1000, 1409, -1000, -1000, 1106, 2445, + 2322, -1000, -1000, -1000, -1000, -1000, 1691, -1000, 1679, 1881, + 1671, 1666, 277, -1000, 2082, 2362, 943, 943, -1000, 1201, + -1000, 1333, 1547, 1526, -1000, -1000, -1000, 463, -1000, 2404, + 54340, 2154, 2139, 2128, -1000, -517, 1199, 2017, 2025, 21080, + 2016, 2559, 1866, 52894, -1000, -1000, 53617, -1000, 279, -1000, + 437, 52894, -1000, -1000, -1000, 307, 54340, -1000, 8607, -1000, + -1000, -1000, 226, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 54340, 246, -1000, 2015, 1297, -1000, -1000, 1992, -1000, -1000, + -1000, -1000, -1000, 217, 214, 1520, 208, 1483, 208, -1000, + 54340, 909, 2098, 54340, -1000, -1000, -1000, 1068, 1068, -1000, + -1000, 2360, -1000, 1333, 1818, 23249, 23249, -1000, 895, -1000, + -1000, 455, -220, 2013, 2013, -1000, 2013, 2014, -1000, 2013, + 176, 2013, 175, 2013, -1000, -1000, 1444, 1444, -1000, 1451, + -1000, 2302, 1923, -1000, 1285, 21080, 2981, -1000, -1000, -1000, + -1000, -1000, -56, 2968, 2954, 1818, -1000, 2003, 2001, 21080, + 1818, 1444, 2284, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 2277, 2272, 2198, 2191, 2177, + 2167, 2054, 2050, 2045, 2020, 2009, 1983, 1949, 1938, 1908, + 1904, 1818, 1818, 1889, 1818, 1868, 1863, -1000, 1285, 1451, + 2915, 1451, 1818, 1818, 2581, 302, 1818, 1661, 1661, 1661, + 1661, 1661, 1451, 1451, 1451, 1451, 1818, 52894, -1000, -271, + -1000, -1000, -315, -317, -1000, 1444, -271, 1871, 23249, 1818, + 23249, 23249, 23249, 1818, 1444, -1000, 1848, 1842, 2418, 1822, + 1818, 2335, 1818, 1818, 1818, 1739, -1000, 2482, 2482, 2482, + 1642, 1238, 54340, -1000, -1000, -1000, -1000, 2595, 2592, 1867, + -1000, -1000, 94, 624, -1000, 2276, 2344, -1000, 2547, 2278, + 2543, -1000, -1000, -1000, -1000, -1000, 1285, -1000, 2385, 1832, + -1000, 957, 1844, -1000, -1000, 19634, 1651, 2242, 781, 1642, + 1901, 2099, 2105, 2126, 3014, -1000, -1000, -1000, -1000, 2206, + -1000, 2196, -1000, -1000, 1987, -1000, 2325, 329, 29035, 1813, + 1813, -1000, 775, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1069, 8607, 2667, -1000, 1480, -1000, 1359, 204, 1186, -1000, + -1000, 943, 943, -1000, 1012, 1009, -1000, 54340, 2000, -1000, + 921, 1468, 921, 1183, -1000, -1000, 1179, -1000, -1000, -1000, + -1000, 1972, 2232, -1000, -1000, -1000, -1000, 54340, -1000, -1000, + 54340, 54340, 54340, 1998, 2542, -1000, 21080, 1996, 947, 2446, + 52894, 52894, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 412, 943, -486, 283, 280, 943, 943, + 943, -526, -1000, -1000, 1640, 1638, -1000, -209, -1000, 21080, + -1000, -1000, -1000, -1000, -1000, 1350, 1350, 1466, 1453, 1447, + -1000, 1987, -1000, -1000, -1000, 1785, -1000, -1000, -183, 52894, + 52894, 52894, 52894, -1000, -1000, -1000, 1170, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 895, + 1444, 349, -186, 1444, -1000, -1000, 921, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 21080, -1000, 21080, + -1000, 1285, 21080, 2497, 1438, 21080, 21080, -1000, 1152, 1146, + 1818, -1000, -1000, -1000, 21080, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 21080, -1000, + 21080, -1000, 21080, -1000, 21080, -1000, 21080, -1000, 21080, -1000, + 21080, -1000, 21080, -1000, 21080, -1000, 21080, -1000, 21080, -1000, + 21080, -1000, 21080, -1000, 21080, -1000, 21080, -1000, 21080, -1000, + -1000, 21080, -1000, -1000, -1000, 21080, -1000, 21080, -1000, 21080, + -1000, -1000, -1000, 21080, 268, 831, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1444, 314, -1000, + -1000, -1000, -1000, 2598, -1000, 1444, 21080, 2184, -1000, 2184, + 2184, 2184, -1000, -1000, -1000, 21080, -1000, 21080, 21080, -1000, + 21080, -1000, 21080, -1000, -1000, -1000, -1000, 21080, 1973, 2469, + 1973, 1973, 31204, -1000, -1000, 2592, 2590, 2532, 2251, 2255, + 2255, 2276, -1000, 2527, 2525, -1000, 1425, 2519, 1419, 975, + -1000, 53617, 21080, 244, -1000, 393, 52894, 244, 52894, -1000, + 2575, -1000, -1000, 21080, 1995, -1000, 21080, -1000, -1000, -1000, + -1000, 5890, 2595, 1813, -1000, -1000, 904, -1000, 21080, -1000, + 54821, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1412, + 1410, -1000, -1000, 1988, 21080, -1000, -1000, -1000, 1700, 1694, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1987, -1000, + -1000, -1000, -1000, 307, -518, 2292, 52894, 1130, -1000, 1629, + 1866, 274, 244, 1403, 943, 943, 943, 1114, 1109, 36988, + 1618, -1000, 52894, 382, -1000, 307, -1000, -214, -216, 1818, + -1000, -1000, 2427, -1000, -1000, 15283, -1000, -1000, 1986, 2096, + -1000, -1000, -1000, -1000, 2221, -171, -189, -1000, -1000, 1818, + 1818, 2005, 1444, -1000, 1818, 1818, 1630, 1607, -1000, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1451, + 1719, -1000, 268, 1444, 2124, -1000, -1000, 5890, -1000, -1000, + 2575, 2517, 20, -1000, -1000, 224, 20, 1285, 986, 1444, + 1444, 986, 1699, 1818, 1681, 1676, 1818, 1818, 31927, -1000, + 2503, 2499, 37711, 37711, 972, 2590, -283, 21080, 21080, 2248, + 1209, -1000, -1000, -1000, -1000, 1385, 1375, -1000, 1367, -1000, + 2664, -1000, 1285, -1000, 244, -1000, 543, 1844, -1000, 2497, + 1285, 52894, 1285, 84, 2575, -1000, 1818, -1000, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, + 1973, 1973, 1973, 1973, 1973, 1973, 1973, -1000, -1000, 52894, + 2064, -1000, -1000, 2417, 1606, 165, -1000, 1452, 1866, -1000, + -1000, 242, -1000, 21080, -1000, 36988, 1365, 1361, -1000, -1000, + -1000, -1000, -526, -1000, -1000, -1000, -1000, -1000, -1000, 421, + 1852, -1000, 937, 52894, 54340, -1000, 2181, -1000, -1000, -1000, + 21080, -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, - 21610, -1000, 1402, 2140, -1000, -359, -1000, -492, 21610, -238, - -1000, -1000, -238, -1000, -1000, -1000, -1000, -1000, 21610, -1000, - -1000, 21610, -1000, 21610, -1000, -1000, 1577, -1000, -1000, -1000, - -1000, -1000, 1577, 1577, -1000, -245, -1000, 1874, -1000, 53424, - 1330, 1858, -1000, 1149, -1000, -1000, -1000, -1000, -1000, 54147, - 1873, 53424, -1000, 1573, 1402, 1977, 2416, -1000, 1571, -1000, - 411, -1000, 1983, 2016, -1000, -1000, -1000, 19441, -1000, -1000, - -1000, -1000, -1000, 283, -170, 15813, 11439, 1534, -1000, -167, - 1652, 1458, -1000, -461, -1000, -1000, -1000, -1000, 301, -1000, - -1000, 1858, -1000, -1000, 1527, 1515, 1511, 36795, -1000, -1000, - -1000, -1000, -245, -1000, -1000, 2393, -1000, -1000, 1841, -1000, - -1000, 31734, 52701, -1000, -156, 349, -170, 21610, 1980, 1402, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -36, -1000, - -1000, 800, -1000, -1000, -1000, 2101, -185, -1000, -1000, -1000, - 292, -479, -283, -284, 23779, -1000, 21610, -1000, 21610, -1000, - 21610, -1000, -1000, -1000, 53424, 1977, -1000, 1451, -1000, 4856, - -317, 2135, -1000, -132, -1000, -1000, -1000, 1099, 1378, -1000, - -1000, -1000, -1000, -1000, -1000, 1691, 53424, -1000, 436, -1000, - -1000, 15084, -171, -190, 1024, -1000, -1000, -1000, -1000, -1000, - 2916, 1429, 1401, 1652, -1000, 53424, -1000, 52701, -312, 903, - 3205, -1000, 2128, 2123, 2589, -1000, -1000, -1000, -1000, -1000, - -1000, -530, 1447, 261, -1000, -1000, -1000, 292, -306, -1000, - 21610, -1000, 21610, -1000, 1402, -1000, -1000, 2381, 77, -1000, - 2579, -1000, 2575, 989, 989, -1000, 1184, -530, -1000, -1000, - -1000, -1000, 1652, 1652, -1000, -322, -1000, -1000, -1000, -1000, - -1000, 457, 1250, -1000, -1000, -1000, -1000, -1000, 3205, -1000, - -1000, -1000, 220, 220, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 21080, -1000, + 1444, 2121, -1000, -348, -1000, -488, 21080, -271, -1000, -1000, + -271, -1000, -1000, -1000, -1000, -1000, 21080, -1000, -1000, 21080, + -1000, 21080, -1000, -1000, 1563, -1000, -1000, -1000, -1000, -1000, + 1563, 1563, -1000, -283, -1000, 1847, -1000, 52894, 1285, 1831, + -1000, 1203, -1000, -1000, -1000, -1000, -1000, 53617, 1844, 52894, + -1000, 1545, 1444, 1973, 2497, -1000, 1516, -1000, 421, -1000, + 1977, 2025, -1000, -1000, -1000, 18911, -1000, -1000, -1000, -1000, + -1000, 285, -180, 15283, 10909, 1487, -1000, -178, 1818, 1451, + -1000, -462, -1000, -1000, -1000, -1000, 312, -1000, -1000, 1831, + -1000, -1000, 1653, 1595, 1573, 36265, -1000, -1000, -1000, -1000, + -283, -1000, -1000, 2407, -1000, -1000, 1830, -1000, -1000, 31204, + 52171, -1000, -157, 348, -180, 21080, 1974, 1444, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -34, -1000, -1000, 499, + -1000, -1000, -1000, 1992, -187, -1000, -1000, -1000, 317, -478, + -267, -302, 23249, -1000, 21080, -1000, 21080, -1000, 21080, -1000, + -1000, -1000, 52894, 1973, -1000, 1443, -1000, 1883, -339, 2114, + -1000, -131, -1000, -1000, -1000, 1063, 1341, -1000, -1000, -1000, + -1000, -1000, -1000, 2035, 52894, -1000, 409, -1000, -1000, 14554, + -183, -207, 989, -1000, -1000, -1000, -1000, -1000, 2184, 1513, + 1250, 1818, -1000, 52894, -1000, 52171, -323, 894, 5890, -1000, + 2112, 2109, 2608, -1000, -1000, -1000, -1000, -1000, -1000, -530, + 1430, 248, -1000, -1000, -1000, 317, -304, -1000, 21080, -1000, + 21080, -1000, 1444, -1000, -1000, 2394, 84, -1000, 2661, -1000, + 2609, 961, 961, -1000, 1099, -530, -1000, -1000, -1000, -1000, + 1818, 1818, -1000, -373, -1000, -1000, -1000, -1000, -1000, 380, + 1159, -1000, -1000, -1000, -1000, -1000, 5890, -1000, -1000, -1000, + 266, 266, -1000, -1000, } var yyPgo = [...]int{ - 0, 3146, 3145, 29, 6, 37, 35, 3143, 3142, 3139, - 176, 3138, 3133, 3130, 3126, 3123, 3122, 2625, 2615, 2611, - 3121, 3120, 3119, 3116, 3115, 3114, 3113, 3111, 3108, 49, - 93, 60, 98, 211, 213, 3104, 177, 168, 198, 3103, - 3100, 3099, 116, 194, 84, 83, 196, 3096, 3094, 76, - 3093, 3092, 3079, 193, 188, 187, 1079, 3078, 185, 115, - 44, 3077, 3071, 3068, 3065, 3064, 3063, 3058, 3056, 3054, - 3053, 3046, 3045, 3044, 3036, 3034, 3031, 3030, 3029, 300, - 3026, 3025, 19, 3023, 78, 3022, 3021, 3020, 3012, 3011, - 11, 3010, 3005, 26, 45, 3002, 2992, 51, 2991, 2990, - 2988, 2986, 2985, 47, 2978, 21, 2977, 39, 2976, 2975, - 125, 2973, 2972, 2970, 40, 2969, 2966, 2962, 28, 163, - 2961, 2960, 137, 2954, 2953, 2952, 183, 206, 2946, 2201, - 164, 104, 111, 2940, 2936, 99, 197, 2933, 117, 2932, - 2930, 2926, 147, 2925, 3199, 2922, 2919, 68, 74, 153, - 2917, 2914, 286, 73, 8, 16, 17, 2912, 2910, 67, - 72, 2909, 106, 2900, 2898, 102, 71, 2896, 100, 97, - 2895, 2894, 5, 7, 2893, 1, 4, 2, 81, 2891, - 2890, 113, 2885, 2884, 2883, 96, 2879, 2878, 4340, 2877, - 87, 128, 105, 69, 2875, 169, 160, 2872, 2871, 2869, - 2863, 2862, 50, 2861, 2860, 2859, 134, 250, 165, 2858, - 145, 335, 53, 143, 2856, 189, 79, 199, 178, 2855, - 2843, 131, 130, 2842, 2840, 56, 166, 190, 2838, 92, - 127, 123, 171, 90, 132, 2837, 2836, 57, 61, 2831, - 2827, 2825, 2822, 174, 2820, 2819, 62, 2817, 55, 2815, - 192, 2813, 136, 66, 2812, 172, 170, 2811, 64, 2810, - 2809, 65, 95, 101, 38, 2804, 156, 161, 124, 173, - 2803, 2800, 54, 2798, 2797, 2792, 191, 306, 2791, 2786, - 289, 179, 139, 149, 89, 2785, 322, 2784, 2783, 13, - 4995, 7368, 2770, 23, 162, 2766, 2756, 6903, 43, 41, - 30, 2752, 205, 2745, 2744, 2742, 2740, 226, 202, 110, - 159, 58, 2739, 2736, 2734, 36, 2729, 2726, 2725, 2712, - 2710, 2707, 70, 34, 33, 32, 212, 59, 20, 103, - 158, 152, 75, 2705, 2702, 2699, 120, 91, 2696, 155, - 154, 121, 157, 2691, 182, 140, 118, 2690, 94, 31, - 2689, 2688, 2686, 2682, 85, 2681, 2679, 2678, 2673, 150, - 141, 119, 80, 2672, 82, 114, 144, 142, 48, 2670, - 42, 2668, 2665, 24, 195, 27, 2662, 15, 109, 108, - 2660, 5336, 184, 2659, 9, 334, 151, 2656, 2650, 10, - 12, 18, 2649, 2648, 2644, 2643, 129, 2640, 2638, 2637, - 2634, 25, 46, 22, 14, 112, 77, 2632, 2631, 138, - 2627, 2626, 2620, 0, 1005, 126, 2609, 203, + 0, 3337, 3336, 31, 6, 39, 37, 3335, 3333, 3332, + 176, 3330, 3318, 3313, 3310, 3309, 3302, 2706, 2700, 2683, + 3301, 3286, 3273, 3272, 3271, 3270, 3195, 3191, 3188, 42, + 94, 62, 93, 210, 221, 3182, 177, 166, 198, 3181, + 3180, 3178, 116, 193, 80, 85, 195, 3176, 3171, 64, + 3170, 3169, 3168, 188, 187, 186, 1064, 3165, 185, 112, + 48, 3163, 3162, 3161, 3159, 3147, 3143, 3138, 3137, 3135, + 3132, 3130, 3126, 3122, 3120, 3119, 3118, 3117, 3115, 301, + 3114, 3113, 19, 3109, 74, 3107, 3105, 3104, 3101, 3100, + 8, 3098, 3095, 26, 49, 3093, 3089, 44, 3086, 3078, + 3076, 3075, 3071, 47, 3066, 21, 3063, 40, 3062, 3060, + 123, 3054, 3053, 3052, 32, 3051, 3050, 3049, 28, 163, + 3048, 3047, 137, 3044, 3043, 3039, 170, 212, 3034, 2268, + 179, 104, 103, 3032, 3031, 99, 196, 3029, 119, 3027, + 3022, 3019, 147, 3018, 3199, 3015, 3012, 60, 61, 192, + 3011, 3007, 231, 69, 11, 16, 17, 3004, 3002, 66, + 73, 3001, 113, 2992, 2991, 101, 75, 2990, 100, 106, + 2988, 2984, 5, 7, 2978, 1, 4, 2, 83, 2975, + 2973, 115, 2971, 2968, 2967, 91, 2966, 2965, 345, 2964, + 81, 128, 97, 82, 2961, 172, 162, 2959, 2957, 2956, + 2951, 2946, 53, 2938, 2936, 2934, 134, 250, 161, 2931, + 145, 335, 52, 143, 2930, 189, 77, 199, 183, 2928, + 2926, 131, 133, 2925, 2923, 57, 165, 191, 2920, 92, + 127, 118, 167, 87, 132, 2913, 2911, 56, 71, 2910, + 2909, 2903, 2900, 164, 2899, 2898, 59, 2896, 54, 2891, + 168, 2888, 136, 68, 2887, 171, 174, 2886, 72, 2882, + 2877, 67, 95, 110, 38, 2874, 157, 160, 124, 173, + 2860, 2859, 55, 2858, 2857, 2854, 197, 294, 2836, 2835, + 289, 178, 139, 146, 90, 2831, 299, 2819, 2818, 13, + 4419, 6688, 2815, 29, 159, 2813, 2812, 6915, 43, 41, + 30, 2811, 205, 2810, 2809, 2807, 2806, 241, 202, 105, + 158, 58, 2804, 2803, 2799, 36, 2797, 2796, 2795, 2794, + 2793, 2790, 70, 35, 34, 33, 211, 114, 20, 98, + 152, 153, 63, 2783, 2781, 2778, 121, 89, 2777, 155, + 154, 126, 156, 2776, 184, 140, 111, 2775, 96, 27, + 2772, 2771, 2768, 2767, 84, 2766, 2765, 2763, 2762, 149, + 141, 120, 78, 2760, 79, 117, 144, 142, 51, 2755, + 46, 2753, 2744, 24, 194, 23, 2743, 15, 102, 108, + 2740, 5697, 190, 2734, 9, 292, 151, 2732, 2729, 10, + 12, 18, 2728, 2722, 2720, 2715, 129, 2714, 2713, 2712, + 2708, 25, 50, 22, 14, 109, 76, 2707, 2698, 138, + 2696, 2691, 2690, 0, 1005, 125, 2684, 203, } -//line sql.y:8613 +//line sql.y:8605 type yySymType struct { union any empty struct{} @@ -8452,40 +8442,39 @@ var yyR1 = [...]int{ 281, 398, 398, 398, 274, 274, 66, 66, 66, 303, 303, 303, 303, 69, 69, 407, 407, 408, 408, 409, 409, 409, 70, 71, 71, 305, 305, 306, 306, 72, - 73, 85, 85, 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, 395, 395, - 396, 397, 397, 397, 397, 76, 78, 27, 27, 27, - 27, 27, 27, 134, 134, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 129, 129, 129, - 123, 123, 416, 79, 80, 80, 127, 127, 127, 120, - 120, 120, 126, 126, 126, 12, 12, 13, 260, 260, - 14, 14, 131, 131, 133, 133, 133, 133, 133, 135, - 135, 135, 135, 135, 135, 135, 130, 130, 132, 132, - 132, 132, 295, 295, 295, 294, 294, 165, 165, 167, - 166, 166, 168, 168, 169, 169, 169, 169, 214, 214, - 191, 191, 253, 253, 254, 254, 252, 252, 259, 259, - 255, 255, 255, 255, 262, 262, 170, 170, 170, 170, - 178, 178, 179, 179, 180, 180, 304, 304, 300, 300, - 300, 299, 299, 184, 184, 184, 186, 185, 185, 185, - 185, 187, 187, 189, 189, 188, 188, 190, 195, 195, - 194, 194, 192, 192, 192, 192, 193, 193, 193, 193, - 196, 196, 144, 144, 144, 144, 144, 144, 144, 144, - 157, 157, 157, 157, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 243, 243, 149, 149, 149, + 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, 395, 395, 396, 397, + 397, 397, 397, 76, 78, 27, 27, 27, 27, 27, + 27, 134, 134, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 129, 129, 129, 123, 123, + 416, 79, 80, 80, 127, 127, 127, 120, 120, 120, + 126, 126, 126, 12, 12, 13, 260, 260, 14, 14, + 131, 131, 133, 133, 133, 133, 133, 135, 135, 135, + 135, 135, 135, 135, 130, 130, 132, 132, 132, 132, + 295, 295, 295, 294, 294, 165, 165, 167, 166, 166, + 168, 168, 169, 169, 169, 169, 214, 214, 191, 191, + 253, 253, 254, 254, 252, 252, 259, 259, 255, 255, + 255, 255, 262, 262, 170, 170, 170, 170, 178, 178, + 179, 179, 180, 180, 304, 304, 300, 300, 300, 299, + 299, 184, 184, 184, 186, 185, 185, 185, 185, 187, + 187, 189, 189, 188, 188, 190, 195, 195, 194, 194, + 192, 192, 192, 192, 193, 193, 193, 193, 196, 196, + 144, 144, 144, 144, 144, 144, 144, 144, 157, 157, + 157, 157, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 243, 243, 149, 149, 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, 219, 219, 218, - 218, 87, 87, 87, 88, 88, 89, 89, 89, 89, - 89, 90, 90, 90, 90, 90, 90, 90, 92, 92, - 91, 91, 209, 209, 292, 292, 93, 94, 94, 97, - 97, 96, 95, 95, 101, 101, 98, 98, 100, 100, - 99, 102, 102, 103, 104, 104, 275, 275, 197, 197, - 205, 205, 205, 205, 198, 198, 198, 198, 198, 198, - 198, 206, 206, 206, 213, 207, 207, 203, 203, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 219, 219, 218, 218, 87, + 87, 87, 88, 88, 89, 89, 89, 89, 89, 90, + 90, 90, 90, 90, 90, 90, 92, 92, 91, 91, + 209, 209, 292, 292, 93, 94, 94, 97, 97, 96, + 95, 95, 101, 101, 98, 98, 100, 100, 99, 102, + 102, 103, 104, 104, 275, 275, 197, 197, 205, 205, + 205, 205, 198, 198, 198, 198, 198, 198, 198, 206, + 206, 206, 213, 207, 207, 203, 203, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, @@ -8504,35 +8493,36 @@ var yyR1 = [...]int{ 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 162, 162, 162, 162, 224, 224, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 151, 151, 163, 163, 163, 163, 164, 164, 164, - 164, 164, 164, 164, 312, 312, 118, 118, 118, 118, + 202, 202, 202, 202, 202, 202, 202, 202, 162, 162, + 162, 162, 224, 224, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 151, + 151, 163, 163, 163, 163, 164, 164, 164, 164, 164, + 164, 164, 312, 312, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 119, 119, 119, 119, + 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 417, 417, 326, 326, 326, 204, - 204, 204, 204, 204, 125, 125, 125, 125, 125, 309, - 309, 309, 313, 313, 313, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 314, 314, 222, 222, 121, 121, 220, 220, 221, 223, - 223, 215, 215, 215, 215, 217, 217, 200, 200, 200, - 225, 225, 226, 226, 105, 106, 106, 107, 107, 227, - 227, 229, 228, 228, 230, 231, 231, 231, 232, 232, - 233, 233, 233, 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, 250, 250, - 250, 250, 250, 250, 250, 234, 234, 234, 241, 241, - 241, 237, 237, 239, 239, 239, 240, 240, 240, 238, - 247, 247, 249, 249, 248, 248, 244, 244, 245, 245, - 246, 246, 246, 242, 242, 199, 199, 199, 199, 199, - 251, 251, 251, 251, 263, 263, 210, 210, 212, 212, - 211, 211, 161, 264, 264, 272, 269, 269, 270, 270, - 296, 296, 296, 273, 273, 286, 286, 282, 282, 283, - 283, 276, 276, 288, 288, 288, 77, 208, 208, 365, - 365, 362, 291, 291, 293, 293, 297, 297, 301, 301, - 298, 298, 8, 410, 410, 410, 289, 289, 289, 289, + 119, 119, 417, 417, 326, 326, 326, 204, 204, 204, + 204, 204, 125, 125, 125, 125, 125, 309, 309, 309, + 313, 313, 313, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 314, 314, + 222, 222, 121, 121, 220, 220, 221, 223, 223, 215, + 215, 215, 215, 217, 217, 200, 200, 200, 225, 225, + 226, 226, 105, 106, 106, 107, 107, 227, 227, 229, + 228, 228, 230, 231, 231, 231, 232, 232, 233, 233, + 233, 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, 250, 250, 250, 250, + 250, 250, 250, 234, 234, 234, 241, 241, 241, 237, + 237, 239, 239, 239, 240, 240, 240, 238, 247, 247, + 249, 249, 248, 248, 244, 244, 245, 245, 246, 246, + 246, 242, 242, 199, 199, 199, 199, 199, 251, 251, + 251, 251, 263, 263, 210, 210, 212, 212, 211, 211, + 161, 264, 264, 272, 269, 269, 270, 270, 296, 296, + 296, 273, 273, 286, 286, 282, 282, 283, 283, 276, + 276, 288, 288, 288, 77, 208, 208, 365, 365, 362, + 291, 291, 293, 293, 297, 297, 301, 301, 298, 298, + 8, 410, 410, 410, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, @@ -8547,8 +8537,7 @@ var yyR1 = [...]int{ 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 289, 289, 289, 289, 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, @@ -8594,7 +8583,8 @@ var yyR1 = [...]int{ 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, 413, 414, 307, 308, 308, 308, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 413, + 414, 307, 308, 308, 308, } var yyR2 = [...]int{ @@ -8680,87 +8670,87 @@ var yyR2 = [...]int{ 2, 0, 1, 1, 1, 1, 2, 1, 3, 1, 1, 1, 1, 1, 3, 0, 1, 1, 3, 3, 2, 2, 1, 1, 5, 0, 1, 0, 1, 2, - 3, 0, 3, 3, 3, 3, 3, 1, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 4, 4, 4, 2, 2, 3, 1, 3, - 2, 1, 2, 1, 2, 2, 4, 3, 3, 6, - 4, 7, 6, 1, 3, 2, 2, 2, 2, 1, - 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, 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, + 3, 0, 3, 3, 3, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + 4, 4, 4, 2, 2, 3, 1, 3, 2, 1, + 2, 1, 2, 2, 4, 3, 3, 6, 4, 7, + 6, 1, 3, 2, 2, 2, 2, 1, 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, + 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, 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, + 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, 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, 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, 1, 1, 1, 1, @@ -8822,7 +8812,7 @@ 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, 0, 0, 1, 1, + 1, 0, 0, 1, 1, } var yyChk = [...]int{ @@ -9082,325 +9072,325 @@ var yyChk = [...]int{ 308, 305, 310, 311, 312, 24, 24, 24, 24, 24, 24, 294, 296, 298, 284, -188, -188, -282, 77, -183, -188, 27, -297, 90, 90, -188, -280, -280, -188, -280, - -280, -188, -409, 325, -291, 359, 681, 682, 684, 683, - -122, 417, 88, 579, 23, -123, 23, -413, 119, 120, - 121, -206, -149, -152, -149, 143, 264, -149, -149, -413, - -215, -414, -293, 26, 88, 78, -414, 168, 88, 88, - -414, -414, 88, 15, -223, -221, 150, -144, -414, 88, - -414, -414, -207, -144, -144, -144, -144, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -207, -414, 88, - 88, 15, -313, 26, -414, -414, -414, -414, -414, -222, - -414, 15, -414, 78, 88, 163, 88, -414, -414, -414, - 88, 88, -414, -414, 88, -414, 88, -414, -414, -414, - -414, -414, -414, 88, -414, 88, -414, -414, -414, 88, - -414, 88, -414, -414, 88, -414, 88, -414, 88, -414, + -280, -188, -409, 325, -291, 359, 681, 683, -122, 417, + 88, 579, 23, -123, 23, -413, 119, 120, 121, -206, + -149, -152, -149, 143, 264, -149, -149, -413, -215, -414, + -293, 26, 88, 78, -414, 168, 88, 88, -414, -414, + 88, 15, -223, -221, 150, -144, -414, 88, -414, -414, + -207, -144, -144, -144, -144, -414, -414, -414, -414, -414, + -414, -414, -414, -414, -414, -207, -414, 88, 88, 15, + -313, 26, -414, -414, -414, -414, -414, -222, -414, 15, + -414, 78, 88, 163, 88, -414, -414, -414, 88, 88, + -414, -414, 88, -414, 88, -414, -414, -414, -414, -414, + -414, 88, -414, 88, -414, -414, -414, 88, -414, 88, + -414, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, - 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, - -414, -414, 88, -414, 88, -414, 88, -414, -414, 88, - -414, 88, -414, 88, -414, 88, 88, -414, 88, 88, - 88, -414, 88, 88, 88, 88, -414, -414, -414, -414, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - -414, -414, -414, -414, -414, -414, 88, -94, 603, -414, - -414, 88, -414, 88, 88, 88, 88, 88, -414, -413, - 223, -414, -414, -414, -414, -414, 88, 88, 88, 88, - 88, 88, -414, -414, -414, 88, 88, -414, 88, -414, - 88, -414, -396, 687, 418, -195, -194, -192, 75, 244, - 76, -413, -299, -414, -156, -258, -259, -258, -200, -291, - 96, 105, -234, -165, -167, 15, -135, -213, 89, 88, - -327, -238, -244, -277, -291, 90, 179, -329, 179, -329, - 372, 373, -230, 223, -196, 16, -199, 33, 58, -29, - -413, -413, 33, 88, -184, -186, -185, -187, 67, 71, - 73, 68, 69, 70, 74, -304, 26, -31, -166, -31, - -413, -188, -181, -415, 15, 78, -415, 88, 223, -268, - -271, 420, 417, 423, -381, 90, -110, 88, -354, -341, - -235, -139, 41, -334, 379, -327, 586, -327, -336, 90, - -336, 96, 96, 96, 89, -49, -44, -45, 34, 82, - -361, -348, 90, 40, -348, -348, -291, 89, -231, -138, - -188, 144, 77, -365, -365, -365, -297, -2, 726, 732, - 138, 87, 384, 19, -252, 88, 89, -216, 302, 89, - -112, -291, 89, 87, -346, -346, -291, -413, 240, 32, - 32, 670, 626, 618, -59, -216, -215, -381, -328, 725, - 724, 89, 242, 300, -143, 437, -140, 90, 91, -188, - -188, -188, -188, -188, -188, 232, 229, 407, -405, 313, - -405, 285, 243, -181, -188, 88, -84, 259, 254, -302, - -302, 34, -188, 417, 699, 697, -144, 143, 264, -160, - -152, -118, -118, -149, -311, 179, 345, 263, 343, 339, - 359, 350, 377, 341, 378, 336, 335, 334, -311, -309, - -149, -207, -132, -144, -144, 151, -144, 149, -144, -414, - -414, -414, -414, -414, -227, -144, -144, -144, -414, 179, - 345, 15, -144, -309, -144, -144, -144, -144, -144, -144, + 88, -414, 88, -414, 88, -414, 88, -414, -414, -414, + 88, -414, 88, -414, 88, -414, -414, 88, -414, 88, + -414, 88, -414, 88, 88, -414, 88, 88, 88, -414, + 88, 88, 88, 88, -414, -414, -414, -414, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, -414, -414, + -414, -414, -414, -414, 88, -94, 603, -414, -414, 88, + -414, 88, 88, 88, 88, 88, -414, -413, 223, -414, + -414, -414, -414, -414, 88, 88, 88, 88, 88, 88, + -414, -414, -414, 88, 88, -414, 88, -414, 88, -414, + -396, 687, 418, -195, -194, -192, 75, 244, 76, -413, + -299, -414, -156, -258, -259, -258, -200, -291, 96, 105, + -234, -165, -167, 15, -135, -213, 89, 88, -327, -238, + -244, -277, -291, 90, 179, -329, 179, -329, 372, 373, + -230, 223, -196, 16, -199, 33, 58, -29, -413, -413, + 33, 88, -184, -186, -185, -187, 67, 71, 73, 68, + 69, 70, 74, -304, 26, -31, -166, -31, -413, -188, + -181, -415, 15, 78, -415, 88, 223, -268, -271, 420, + 417, 423, -381, 90, -110, 88, -354, -341, -235, -139, + 41, -334, 379, -327, 586, -327, -336, 90, -336, 96, + 96, 96, 89, -49, -44, -45, 34, 82, -361, -348, + 90, 40, -348, -348, -291, 89, -231, -138, -188, 144, + 77, -365, -365, -365, -297, -2, 726, 732, 138, 87, + 384, 19, -252, 88, 89, -216, 302, 89, -112, -291, + 89, 87, -346, -346, -291, -413, 240, 32, 32, 670, + 626, 618, -59, -216, -215, -381, -328, 725, 724, 89, + 242, 300, -143, 437, -140, 90, 91, -188, -188, -188, + -188, -188, -188, 232, 229, 407, -405, 313, -405, 285, + 243, -181, -188, 88, -84, 259, 254, -302, -302, 34, + -188, 417, 699, 697, -144, 143, 264, -160, -152, -118, + -118, -149, -311, 179, 345, 263, 343, 339, 359, 350, + 377, 341, 378, 336, 335, 334, -311, -309, -149, -207, + -132, -144, -144, 151, -144, 149, -144, -414, -414, -414, + -414, -414, -227, -144, -144, -144, -414, 179, 345, 15, + -144, -309, -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, -378, - -144, -207, -144, -207, -144, -144, -144, -144, -144, -379, - -379, -379, -379, -379, -207, -207, -207, -207, -144, -413, - -291, -97, -96, -95, 653, 244, -94, -162, -97, -162, - 222, -144, 222, 222, 222, -144, -131, -293, -144, -144, - -144, -144, -144, -144, -144, -144, -144, -144, -192, -342, - -342, -342, -262, 88, -273, 23, 15, 58, 58, -165, - -196, -166, -135, -291, -241, 680, -247, 47, -245, -246, - 48, -242, 49, 57, -329, -329, 170, -232, -144, -263, - 77, -264, -272, -215, -210, -212, -211, -413, -251, -414, - -291, -262, -264, -168, -169, -169, -168, -169, 67, 67, - 67, 72, 67, 72, 67, -185, -297, -414, -144, -300, - 78, -166, -166, -190, -297, 170, 417, 421, 422, -354, - -403, 119, 144, 32, 77, 375, 101, -401, 178, 615, - 665, 670, 626, 619, 660, -402, 246, 137, 138, 258, - 26, 42, 89, 88, 89, 88, 89, 89, 88, -285, - -284, -45, -44, -348, -348, 96, -381, 90, 90, 242, - 27, -188, 77, 77, 77, -113, 730, 96, 87, -3, - 82, -144, 87, 20, -337, -215, -372, -323, -373, -324, - -325, -5, -6, -349, -116, 58, 101, -63, 45, 241, - 710, 711, 127, -413, 723, -364, -252, -368, -370, -188, - -148, -413, -159, -146, -145, -147, -153, 168, 169, 263, - 341, 342, -216, -188, -137, 291, 299, 87, -141, 92, - -384, 78, 282, 375, 282, 375, 90, -406, 314, 90, - -406, -188, -84, -49, -188, -280, -280, 34, -381, -414, - -160, -152, -125, 163, 579, -314, 585, -322, -322, -322, - -332, -322, 331, -322, 331, -322, -414, -414, -414, 88, - -414, 23, -414, -144, 88, -121, 475, 88, 88, -414, - 87, 87, -144, -414, -414, -414, 88, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, + -144, -144, -144, -144, -144, -144, -144, -378, -144, -207, + -144, -207, -144, -144, -144, -144, -144, -379, -379, -379, + -379, -379, -207, -207, -207, -207, -144, -413, -291, -97, + -96, -95, 653, 244, -94, -162, -97, -162, 222, -144, + 222, 222, 222, -144, -131, -293, -144, -144, -144, -144, + -144, -144, -144, -144, -144, -144, -192, -342, -342, -342, + -262, 88, -273, 23, 15, 58, 58, -165, -196, -166, + -135, -291, -241, 680, -247, 47, -245, -246, 48, -242, + 49, 57, -329, -329, 170, -232, -144, -263, 77, -264, + -272, -215, -210, -212, -211, -413, -251, -414, -291, -262, + -264, -168, -169, -169, -168, -169, 67, 67, 67, 72, + 67, 72, 67, -185, -297, -414, -144, -300, 78, -166, + -166, -190, -297, 170, 417, 421, 422, -354, -403, 119, + 144, 32, 77, 375, 101, -401, 178, 615, 665, 670, + 626, 619, 660, -402, 246, 137, 138, 258, 26, 42, + 89, 88, 89, 88, 89, 89, 88, -285, -284, -45, + -44, -348, -348, 96, -381, 90, 90, 242, 27, -188, + 77, 77, 77, -113, 730, 96, 87, -3, 82, -144, + 87, 20, -337, -215, -372, -323, -373, -324, -325, -5, + -6, -349, -116, 58, 101, -63, 45, 241, 710, 711, + 127, -413, 723, -364, -252, -368, -370, -188, -148, -413, + -159, -146, -145, -147, -153, 168, 169, 263, 341, 342, + -216, -188, -137, 291, 299, 87, -141, 92, -384, 78, + 282, 375, 282, 375, 90, -406, 314, 90, -406, -188, + -84, -49, -188, -280, -280, 34, -381, -414, -160, -152, + -125, 163, 579, -314, 585, -322, -322, -322, -332, -322, + 331, -322, 331, -322, -414, -414, -414, 88, -414, 23, + -414, -144, 88, -121, 475, 88, 88, -414, 87, 87, + -144, -414, -414, -414, 88, -414, -414, -414, -414, -414, + -414, -414, -414, -414, -414, -414, -414, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, 88, -414, - 88, -414, -414, 88, -414, -414, -414, 88, -414, 88, - -414, 88, -414, -414, -414, 88, -312, 671, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -93, - -292, -291, -94, 635, 635, -414, -94, -224, 88, -149, - -414, -149, -149, -149, -414, -414, -414, 88, -414, 88, - 88, -414, 88, -414, 88, -414, -414, -414, -414, 88, - -193, 23, -193, -193, -414, -258, -188, -196, -225, 17, - -238, 52, 351, -249, -248, 56, 48, -246, 20, 50, - 20, 31, -263, 88, 152, 88, -414, -414, 88, 58, - 223, -414, -196, -179, -178, 77, 78, -180, 77, -178, - 67, 67, -253, 88, -261, -166, -196, -196, 223, 119, - -413, -148, 13, 90, 90, -381, -400, 714, 715, 32, - 96, -348, -348, 138, 138, -188, 87, -327, 90, -327, - 96, 96, 32, 83, 84, 85, 32, 79, 80, 81, - -188, -188, -188, -188, -369, 87, 20, -144, 87, 152, - 89, -252, -252, 278, 163, -348, 708, 284, 284, -348, - -348, -348, -115, -114, 730, 89, -414, 88, -335, 579, - 582, -144, -154, -154, -253, 89, -377, 579, -383, -291, - -291, -291, -291, 96, 98, -414, 577, 74, 580, -414, - -327, -144, -144, -144, -232, 90, -144, -144, 96, 96, - -414, -144, -144, -144, -144, -144, -144, -144, -144, -144, + -414, 88, -414, -414, -414, 88, -414, 88, -414, 88, + -414, -414, -414, 88, -312, 671, -414, -414, -414, -414, + -414, -414, -414, -414, -414, -414, -414, -93, -292, -291, + -94, 635, 635, -414, -94, -224, 88, -149, -414, -149, + -149, -149, -414, -414, -414, 88, -414, 88, 88, -414, + 88, -414, 88, -414, -414, -414, -414, 88, -193, 23, + -193, -193, -414, -258, -188, -196, -225, 17, -238, 52, + 351, -249, -248, 56, 48, -246, 20, 50, 20, 31, + -263, 88, 152, 88, -414, -414, 88, 58, 223, -414, + -196, -179, -178, 77, 78, -180, 77, -178, 67, 67, + -253, 88, -261, -166, -196, -196, 223, 119, -413, -148, + 13, 90, 90, -381, -400, 714, 715, 32, 96, -348, + -348, 138, 138, -188, 87, -327, 90, -327, 96, 96, + 32, 83, 84, 85, 32, 79, 80, 81, -188, -188, + -188, -188, -369, 87, 20, -144, 87, 152, 89, -252, + -252, 278, 163, -348, 708, 284, 284, -348, -348, -348, + -115, -114, 730, 89, -414, 88, -335, 579, 582, -144, + -154, -154, -253, 89, -377, 579, -383, -291, -291, -291, + -291, 96, 98, -414, 577, 74, 580, -414, -327, -144, + -144, -144, -232, 90, -144, -144, 96, 96, -414, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -207, -144, -414, -176, -175, -177, 691, 119, 32, - -311, -414, -209, 276, -100, -99, -98, 15, -414, -144, - -118, -118, -118, -118, -144, -144, -144, -144, -144, -144, - -413, 67, 19, 17, -413, -413, -300, -225, -226, 18, - 20, -239, 54, -237, 53, -237, -248, 20, 20, 90, - 20, 90, 138, -272, -144, -212, 58, -29, -291, -210, - -291, -227, -144, 87, -144, -156, -196, -196, -144, -202, - 499, 501, 502, 503, 500, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 504, 515, 476, 477, 478, - 108, 110, 109, 479, 480, 481, 345, 527, 528, 522, - 525, 526, 524, 523, 360, 361, 482, 545, 546, 550, - 549, 547, 548, 551, 554, 555, 556, 557, 558, 559, - 561, 560, 552, 553, 530, 529, 531, 532, 533, 534, - 535, 536, 538, 537, 539, 540, 541, 542, 543, 544, - 562, 563, 564, 565, 566, 568, 567, 572, 571, 569, - 570, 574, 573, 483, 484, 111, 112, 113, 114, 115, - 116, 117, 485, 488, 486, 489, 490, 491, 496, 497, - 492, 493, 494, 495, 498, 371, 369, 370, 366, 365, - 364, 424, 429, 430, 432, 516, 517, 518, 519, 520, - 521, 672, 673, 674, 675, 676, 677, 678, 679, 90, - 90, 87, -144, 89, 89, -253, -368, -60, 89, -254, - -252, 96, 89, 279, -211, -413, 90, -348, -348, -348, - 96, 96, -299, -414, 88, -291, -402, -370, 583, 583, - -414, 26, -376, -375, -293, 87, 78, 63, 578, 581, - -414, -414, 88, -414, -414, -414, 89, 89, -414, -414, + -144, -144, -144, -144, -144, -144, -144, -144, -144, -207, + -144, -414, -176, -175, -177, 691, 119, 32, -311, -414, + -209, 276, -100, -99, -98, 15, -414, -144, -118, -118, + -118, -118, -144, -144, -144, -144, -144, -144, -413, 67, + 19, 17, -413, -413, -300, -225, -226, 18, 20, -239, + 54, -237, 53, -237, -248, 20, 20, 90, 20, 90, + 138, -272, -144, -212, 58, -29, -291, -210, -291, -227, + -144, 87, -144, -156, -196, -196, -144, -202, 499, 501, + 502, 503, 500, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 504, 515, 476, 477, 478, 108, 110, + 109, 479, 480, 481, 345, 527, 528, 522, 525, 526, + 524, 523, 360, 361, 482, 545, 546, 550, 549, 547, + 548, 551, 554, 555, 556, 557, 558, 559, 561, 560, + 552, 553, 530, 529, 531, 532, 533, 534, 535, 536, + 538, 537, 539, 540, 541, 542, 543, 544, 562, 563, + 564, 565, 566, 568, 567, 572, 571, 569, 570, 574, + 573, 483, 484, 111, 112, 113, 114, 115, 116, 117, + 485, 488, 486, 489, 490, 491, 496, 497, 492, 493, + 494, 495, 498, 371, 369, 370, 366, 365, 364, 424, + 429, 430, 432, 516, 517, 518, 519, 520, 521, 672, + 673, 674, 675, 676, 677, 678, 679, 90, 90, 87, + -144, 89, 89, -253, -368, -60, 89, -254, -252, 96, + 89, 279, -211, -413, 90, -348, -348, -348, 96, 96, + -299, -414, 88, -291, -402, -370, 583, 583, -414, 26, + -376, -375, -293, 87, 78, 63, 578, 581, -414, -414, + 88, -414, -414, -414, 89, 89, -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - 88, -414, -175, -177, -414, 77, -156, -227, 20, -97, - 301, 303, -97, -414, -414, -414, -414, -414, 88, -414, - -414, 88, -414, 88, -414, -414, -255, -414, -291, 246, - 20, 20, -255, -255, -195, -226, -107, -106, -105, 609, - -144, -207, -240, 55, 77, 122, 90, 90, 90, 13, - -210, 223, -232, -252, -173, 384, -227, -414, -252, 89, - 26, 89, 732, 138, 89, -211, -124, -413, 275, -299, - 90, 90, -114, -117, -29, 88, 152, -252, -188, 63, - -144, -207, -414, 77, 590, 691, -92, -91, -88, 702, - 728, -207, -94, -94, -144, -144, -144, 88, -414, -414, - -414, -107, 88, -104, -103, -291, 77, 122, -264, -291, - 89, -414, -413, -232, 89, -236, -29, 87, -3, 275, - -323, -373, -324, -325, -5, -6, -349, -82, 579, -375, - -353, -297, -293, 90, 96, 89, 579, -414, -414, -90, - 146, 700, 668, -154, 222, -414, 88, -414, 88, -414, - 88, -291, 246, -105, 88, 26, -300, -174, -172, -291, - 632, -393, -392, 575, -403, -399, 119, 144, 101, -401, - 670, 626, 128, 129, -82, -144, 87, -414, -83, 290, - 687, 223, -384, 580, -90, 701, 646, 621, 646, 621, - -149, -144, -144, -144, -103, -413, -414, 88, 23, -315, - -62, 643, -390, -391, 77, -394, 390, 642, 663, 119, - 90, 89, -252, 251, -298, -377, 581, 143, -118, -414, - 88, -414, 88, -414, -93, -172, 639, -328, -156, -391, - 77, -390, 77, 14, 13, -4, 731, 89, 292, -90, - 646, 621, -144, -144, -414, -61, 27, -173, -389, 259, - 254, 257, 33, -389, 96, -4, -414, -414, 643, 253, - 32, 119, -156, -176, -175, -175, + -414, -414, -414, -414, -414, -414, -414, -414, 88, -414, + -175, -177, -414, 77, -156, -227, 20, -97, 301, 303, + -97, -414, -414, -414, -414, -414, 88, -414, -414, 88, + -414, 88, -414, -414, -255, -414, -291, 246, 20, 20, + -255, -255, -195, -226, -107, -106, -105, 609, -144, -207, + -240, 55, 77, 122, 90, 90, 90, 13, -210, 223, + -232, -252, -173, 384, -227, -414, -252, 89, 26, 89, + 732, 138, 89, -211, -124, -413, 275, -299, 90, 90, + -114, -117, -29, 88, 152, -252, -188, 63, -144, -207, + -414, 77, 590, 691, -92, -91, -88, 702, 728, -207, + -94, -94, -144, -144, -144, 88, -414, -414, -414, -107, + 88, -104, -103, -291, 77, 122, -264, -291, 89, -414, + -413, -232, 89, -236, -29, 87, -3, 275, -323, -373, + -324, -325, -5, -6, -349, -82, 579, -375, -353, -297, + -293, 90, 96, 89, 579, -414, -414, -90, 146, 700, + 668, -154, 222, -414, 88, -414, 88, -414, 88, -291, + 246, -105, 88, 26, -300, -174, -172, -291, 632, -393, + -392, 575, -403, -399, 119, 144, 101, -401, 670, 626, + 128, 129, -82, -144, 87, -414, -83, 290, 687, 223, + -384, 580, -90, 701, 646, 621, 646, 621, -149, -144, + -144, -144, -103, -413, -414, 88, 23, -315, -62, 643, + -390, -391, 77, -394, 390, 642, 663, 119, 90, 89, + -252, 251, -298, -377, 581, 143, -118, -414, 88, -414, + 88, -414, -93, -172, 639, -328, -156, -391, 77, -390, + 77, 14, 13, -4, 731, 89, 292, -90, 646, 621, + -144, -144, -414, -61, 27, -173, -389, 259, 254, 257, + 33, -389, 96, -4, -414, -414, 643, 253, 32, 119, + -156, -176, -175, -175, } var yyDef = [...]int{ - 882, -2, -2, 884, 2, 4, 5, 6, 7, 8, + 880, -2, -2, 882, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 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, 1618, 0, 882, 0, 877, - 0, -2, 797, 803, 0, 812, -2, 0, 0, 882, - 882, 2243, 2243, 877, 0, 0, 0, 0, 0, 882, - 882, 882, 882, 1623, 1479, 52, 882, 0, 87, 88, - 832, 833, 834, 67, 0, 2241, 883, 1, 3, 73, - 77, 0, 0, 0, 60, 1488, 0, 80, 0, 0, - 886, 0, 0, 1601, 882, 882, 0, 128, 129, 0, + 39, 72, 74, 75, 880, 880, 880, 0, 880, 0, + 0, 880, -2, -2, 880, 1616, 0, 880, 0, 875, + 0, -2, 797, 803, 0, 812, -2, 0, 0, 880, + 880, 2241, 2241, 875, 0, 0, 0, 0, 0, 880, + 880, 880, 880, 1621, 1477, 52, 880, 0, 87, 88, + 830, 831, 832, 67, 0, 2239, 881, 1, 3, 73, + 77, 0, 0, 0, 60, 1486, 0, 80, 0, 0, + 884, 0, 0, 1599, 880, 880, 0, 128, 129, 0, 0, 0, -2, 132, -2, 161, 162, 163, 0, 168, 607, 526, 578, 524, 563, -2, 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 529, - 401, 401, 0, 0, -2, 512, 512, 512, 1603, 0, + 401, 401, 0, 0, -2, 512, 512, 512, 1601, 0, 0, 0, 560, 463, 401, 401, 401, 0, 401, 401, 401, 401, 0, 0, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 1506, 167, 1619, 1616, 1617, 1776, 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, 0, 1595, 0, 720, 985, 0, 878, 879, 0, + 401, 1504, 167, 1617, 1614, 1615, 1774, 1775, 1776, 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, 0, 1593, 0, 720, 983, 0, 876, 877, 0, 786, 786, 0, 786, 786, 786, 786, 0, 0, 0, 734, 0, 0, 0, 0, 783, 0, 750, 751, 0, 783, 0, 757, 789, 0, 0, 764, 786, 786, 767, - 2244, 0, 2244, 2244, 1586, 0, 780, 778, 792, 793, + 2242, 0, 2242, 2242, 1584, 0, 780, 778, 792, 793, 42, 796, 799, 800, 801, 802, 805, 0, 816, 819, - 1612, 1613, 0, 821, 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, - 1452, 0, 0, 1414, 1414, 1150, 1414, 1414, 1416, 1416, - 1416, 1828, 1967, 1975, 2151, 1789, 1795, 1796, 1797, 2097, - 2098, 2099, 2100, 2188, 2189, 2193, 1891, 1784, 2164, 2165, - 0, 2240, 1928, 1936, 1937, 1961, 2061, 2174, 1807, 1956, - 2025, 1888, 1910, 1911, 2043, 2044, 1932, 1933, 1914, 2103, - 2105, 2121, 2122, 2107, 2109, 2118, 2124, 2129, 2108, 2120, - 2125, 2138, 2142, 2145, 2146, 2147, 2115, 2113, 2126, 2130, - 2132, 2134, 2140, 2143, 2116, 2114, 2127, 2131, 2133, 2135, - 2141, 2144, 2102, 2106, 2110, 2119, 2137, 2117, 2136, 2111, - 2123, 2128, 2139, 2112, 2104, 1926, 1929, 1917, 1918, 1920, - 1922, 1927, 1934, 1940, 1919, 1939, 1938, 0, 1915, 1916, - 1921, 1931, 1935, 1923, 1924, 1925, 1930, 1941, 1981, 1980, - 1979, 2024, 1952, 2023, 0, 0, 0, 0, 0, 1779, - 1833, 1834, 2148, 1336, 1337, 1338, 1339, 0, 0, 0, - 0, 0, 0, 0, 293, 294, 1465, 1466, 46, 1134, - 1582, 1416, 1416, 1416, 1416, 1416, 1416, 1076, 1077, 1078, - 1079, 1080, 1104, 1105, 1111, 1112, 2038, 2039, 2040, 2041, - 1871, 2183, 1880, 1881, 2020, 2021, 1893, 1894, 2214, 2215, + 1610, 1611, 0, 821, 826, 843, 844, 0, 47, 1133, + 0, 1005, 0, 1011, -2, 1022, 1039, 1040, 1041, 1042, + 1043, 1045, 1046, 1047, 0, 0, 0, 0, 1052, 1053, + 0, 0, 0, 0, 0, 1114, 0, 0, 0, 0, + 1450, 0, 0, 1412, 1412, 1148, 1412, 1412, 1414, 1414, + 1414, 1826, 1965, 1973, 2149, 1787, 1793, 1794, 1795, 2095, + 2096, 2097, 2098, 2186, 2187, 2191, 1889, 1782, 2162, 2163, + 0, 2238, 1926, 1934, 1935, 1959, 2059, 2172, 1805, 1954, + 2023, 1886, 1908, 1909, 2041, 2042, 1930, 1931, 1912, 2101, + 2103, 2119, 2120, 2105, 2107, 2116, 2122, 2127, 2106, 2118, + 2123, 2136, 2140, 2143, 2144, 2145, 2113, 2111, 2124, 2128, + 2130, 2132, 2138, 2141, 2114, 2112, 2125, 2129, 2131, 2133, + 2139, 2142, 2100, 2104, 2108, 2117, 2135, 2115, 2134, 2109, + 2121, 2126, 2137, 2110, 2102, 1924, 1927, 1915, 1916, 1918, + 1920, 1925, 1932, 1938, 1917, 1937, 1936, 0, 1913, 1914, + 1919, 1929, 1933, 1921, 1922, 1923, 1928, 1939, 1979, 1978, + 1977, 2022, 1950, 2021, 0, 0, 0, 0, 0, 1777, + 1831, 1832, 2146, 1334, 1335, 1336, 1337, 0, 0, 0, + 0, 0, 0, 0, 293, 294, 1463, 1464, 46, 1132, + 1580, 1414, 1414, 1414, 1414, 1414, 1414, 1074, 1075, 1076, + 1077, 1078, 1102, 1103, 1109, 1110, 2036, 2037, 2038, 2039, + 1869, 2181, 1878, 1879, 2018, 2019, 1891, 1892, 2212, 2213, -2, -2, -2, 234, 235, 236, 237, 238, 239, 240, - 241, 0, 1832, 2162, 2163, 230, 0, 0, 298, 299, - 295, 296, 297, 1118, 1119, 251, 252, 253, 254, 255, + 241, 0, 1830, 2160, 2161, 230, 0, 0, 298, 299, + 295, 296, 297, 1116, 1117, 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, 2243, 0, 855, - 0, 0, 0, 0, 0, 0, 1624, 1625, 1488, 0, - 1480, 1479, 65, 0, 882, -2, 0, 0, 0, 0, - 49, 0, 54, 942, 885, 79, 78, 1528, 1531, 0, - 0, 0, 61, 1489, 69, 71, 1490, 0, 887, 888, - 0, 918, 922, 0, 0, 0, 1602, 1601, 1601, 104, + 286, 287, 288, 289, 290, 291, 292, 2241, 0, 853, + 0, 0, 0, 0, 0, 0, 1622, 1623, 1486, 0, + 1478, 1477, 65, 0, 880, -2, 0, 0, 0, 0, + 49, 0, 54, 940, 883, 79, 78, 1526, 1529, 0, + 0, 0, 61, 1487, 69, 71, 1488, 0, 885, 886, + 0, 916, 920, 0, 0, 0, 1600, 1599, 1599, 104, 0, 0, 105, 125, 126, 127, 0, 0, 111, 112, - 1588, 1589, 45, 0, 0, 179, 180, 0, 43, 428, - 0, 175, 0, 421, 360, 0, 1506, 0, 0, 0, - 0, 0, 882, 0, 1596, 156, 157, 164, 165, 166, + 1586, 1587, 45, 0, 0, 179, 180, 0, 43, 428, + 0, 175, 0, 421, 360, 0, 1504, 0, 0, 0, + 0, 0, 880, 0, 1594, 156, 157, 164, 165, 166, 401, 401, 401, 575, 0, 0, 167, 167, 533, 534, 535, 0, 0, -2, 426, 0, 513, 0, 0, 415, 415, 419, 417, 418, 0, 0, 0, 0, 0, 0, 0, 0, 552, 0, 553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 668, 0, 402, 0, 573, 574, - 464, 0, 0, 0, 0, 0, 0, 0, 0, 1604, - 1605, 0, 550, 551, 0, 0, 0, 401, 401, 0, + 464, 0, 0, 0, 0, 0, 0, 0, 0, 1602, + 1603, 0, 550, 551, 0, 0, 0, 401, 401, 0, 0, 0, 0, 401, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 155, 1519, 0, 0, 0, -2, 0, - 712, 0, 0, 0, 1597, 1597, 0, 719, 0, 0, + 0, 0, 0, 155, 1517, 0, 0, 0, -2, 0, + 712, 0, 0, 0, 1595, 1595, 0, 719, 0, 0, 0, 724, 0, 0, 725, 0, 783, 783, 781, 782, 727, 728, 729, 730, 786, 0, 0, 410, 411, 412, 783, 786, 0, 786, 786, 786, 786, 783, 783, 783, 786, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2244, 789, 786, 0, 758, 0, 759, 760, 761, 762, - 765, 766, 768, 2245, 2246, 1614, 1615, 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, 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, 2244, 2244, 772, - 776, 1587, 798, 804, 806, 807, 0, 0, 817, 820, - 839, 51, 1879, 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, - 1461, -2, 0, 0, 0, 1061, 1062, 0, 0, 0, - 0, 0, 0, 0, 1453, 0, 0, 1148, 0, 1149, - 1151, 1152, 1153, 0, 1154, 1155, 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, 1607, 0, 0, 0, 0, 0, 0, + 2242, 789, 786, 0, 758, 0, 759, 760, 761, 762, + 765, 766, 768, 2243, 2244, 1612, 1613, 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, 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, 2242, 2242, 772, + 776, 1585, 798, 804, 806, 807, 0, 0, 817, 820, + 837, 51, 1877, 825, 51, 827, 828, 829, 855, 856, + 861, 0, 0, 0, 0, 867, 868, 869, 0, 0, + 872, 873, 874, 0, 0, 0, 0, 0, 1003, 0, + 0, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1023, 1024, 0, 0, + 0, 1048, 1049, 1050, 1051, 1054, 0, 1065, 0, 1067, + 1459, -2, 0, 0, 0, 1059, 1060, 0, 0, 0, + 0, 0, 0, 0, 1451, 0, 0, 1146, 0, 1147, + 1149, 1150, 1151, 0, 1152, 1153, 890, 890, 890, 890, + 890, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 890, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -9408,62 +9398,62 @@ var yyDef = [...]int{ 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 902, 0, - 0, 902, 902, 0, 0, 222, 223, 224, 225, 226, + 0, 0, 0, 0, 0, 0, 0, 0, 900, 0, + 0, 900, 900, 0, 0, 222, 223, 224, 225, 226, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 243, 244, 245, 246, - 247, 300, 248, 249, 250, 1134, 0, 0, 0, 48, - 847, 848, 0, 968, 1607, 0, 0, 898, 0, 1622, - 59, 68, 70, 1488, 63, 1488, 0, 904, 0, 0, - -2, -2, 905, 911, 912, 913, 914, 915, 56, 2242, - 57, 0, 76, 0, 50, 0, 0, 1529, 0, 1532, - 0, 0, 0, 374, 1536, 0, 0, 1481, 1482, 1485, - 0, 919, 1973, 923, 0, 925, 926, 0, 0, 102, - 0, 984, 0, 0, 0, 113, 0, 115, 116, 0, - 0, 0, 385, 1590, 1591, 1592, -2, 408, 0, 385, + 247, 300, 248, 249, 250, 1132, 0, 0, 0, 48, + 845, 846, 0, 966, 1605, 0, 0, 896, 0, 1620, + 59, 68, 70, 1486, 63, 1486, 0, 902, 0, 0, + -2, -2, 903, 909, 910, 911, 912, 913, 56, 2240, + 57, 0, 76, 0, 50, 0, 0, 1527, 0, 1530, + 0, 0, 0, 374, 1534, 0, 0, 1479, 1480, 1483, + 0, 917, 1971, 921, 0, 923, 924, 0, 0, 102, + 0, 982, 0, 0, 0, 113, 0, 115, 116, 0, + 0, 0, 385, 1588, 1589, 1590, -2, 408, 0, 385, 369, 308, 309, 310, 360, 312, 360, 360, 360, 360, 374, 374, 374, 374, 343, 344, 345, 346, 347, 0, 0, 329, 360, 360, 360, 360, 350, 351, 352, 353, 354, 355, 356, 357, 313, 314, 315, 316, 317, 318, 319, 320, 321, 362, 362, 362, 362, 362, 366, 366, - 0, 44, 0, 389, 0, 1485, 0, 0, 1519, 1599, - 1609, 0, 0, 0, 1599, 134, 0, 0, 0, 576, + 0, 44, 0, 389, 0, 1483, 0, 0, 1517, 1597, + 1607, 0, 0, 0, 1597, 134, 0, 0, 0, 576, 618, 527, 564, 577, 0, 530, 531, -2, 0, 0, 512, 0, 514, 0, 409, 0, -2, 0, 419, 0, 415, 419, 416, 419, 407, 420, 554, 555, 556, 0, - 558, 559, 648, 954, 0, 0, 0, 0, 0, 654, + 558, 559, 648, 952, 0, 0, 0, 0, 0, 654, 655, 656, 0, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 565, 566, 567, 568, 569, 570, 571, 572, 0, 0, 0, 0, 514, 0, 561, 0, 0, 465, 466, 467, 0, 0, 470, 471, 472, 473, 0, - 0, 476, 477, 478, 971, 972, 479, 480, 505, 506, + 0, 476, 477, 478, 969, 970, 479, 480, 505, 506, 507, 481, 482, 483, 484, 485, 486, 487, 499, 500, 501, 502, 503, 504, 488, 489, 490, 491, 492, 493, - 496, 0, 149, 1510, 0, 0, 0, 0, 0, 0, + 496, 0, 149, 1508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1597, 0, 0, 0, 0, 901, 986, 1620, 1621, 721, + 1595, 0, 0, 0, 0, 899, 984, 1618, 1619, 721, 0, 0, 787, 788, 0, 413, 414, 786, 786, 731, 773, 0, 786, 735, 774, 736, 738, 737, 739, 752, 753, 786, 742, 784, 785, 743, 744, 745, 746, 747, 748, 749, 769, 754, 755, 756, 790, 0, 794, 795, - 770, 771, 0, 0, 810, 811, 0, 818, 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, 1429, 1430, 1431, 1065, - 301, 302, 0, 1066, 0, 0, 0, 0, 0, 0, - 0, 0, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, - 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, - 1394, 1395, 1135, 0, 916, 0, 0, 1459, 1456, 0, - 0, 0, 1415, 1417, 0, 0, 0, 893, 894, 0, + 770, 771, 0, 0, 810, 811, 0, 818, 840, 838, + 839, 841, 833, 834, 835, 836, 0, 842, 0, 0, + 858, 98, 863, 864, 865, 866, 878, 871, 1134, 1000, + 1001, 1002, 0, 1004, 1008, 0, 1118, 1120, 1010, 1006, + 1012, 1129, 1130, 1131, 0, 0, 0, 0, 0, 1016, + 1020, 1025, 1026, 1027, 1028, 1029, 0, 1030, 0, 1033, + 1034, 1035, 1036, 1037, 1038, 1044, 1427, 1428, 1429, 1063, + 301, 302, 0, 1064, 0, 0, 0, 0, 0, 0, + 0, 0, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, + 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, + 1392, 1393, 1133, 0, 914, 0, 0, 1457, 1454, 0, + 0, 0, 1413, 1415, 0, 0, 0, 891, 892, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1396, 1397, 1398, 1399, - 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, - 1410, 1411, 1412, 1413, 0, 0, 1432, 0, 0, 0, - 0, 0, 1452, 0, 1071, 1072, 1073, 0, 0, 0, - 0, 0, 0, 1194, 0, 0, 0, 0, 1608, 0, + 0, 0, 0, 0, 0, 0, 1394, 1395, 1396, 1397, + 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, + 1408, 1409, 1410, 1411, 0, 0, 1430, 0, 0, 0, + 0, 0, 1450, 0, 1069, 1070, 1071, 0, 0, 0, + 0, 0, 0, 1192, 0, 0, 0, 0, 1606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -9472,25 +9462,25 @@ var yyDef = [...]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, - 1340, 1341, 1342, 1343, 41, 0, 0, 0, 0, 0, - 0, 0, 903, 1463, 0, -2, -2, 0, 0, 0, + 1338, 1339, 1340, 1341, 41, 0, 0, 0, 0, 0, + 0, 0, 901, 1461, 0, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1365, 0, 0, 0, 0, 0, 0, 1580, 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, 1530, 1533, 1534, 374, - 1556, 0, 383, 383, 380, 1491, 1492, 0, 1484, 1486, - 1487, 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, + 1363, 0, 0, 0, 0, 0, 0, 1578, 0, 0, + 848, 849, 851, 0, 986, 0, 967, 0, 0, 854, + 0, 895, 0, 898, 62, 64, 907, 908, 0, 925, + 904, 58, 53, 0, 0, 944, 1528, 1531, 1532, 374, + 1554, 0, 383, 383, 380, 1489, 1490, 0, 1482, 1484, + 1485, 81, 922, 918, 0, 998, 0, 0, 981, 0, + 928, 930, 931, 932, 964, 0, 935, 936, 0, 0, + 0, 0, 0, 100, 983, 106, 0, 114, 0, 0, 119, 120, 107, 108, 109, 110, 0, 607, -2, 460, 181, 183, 184, 185, 176, -2, 372, 370, 371, 311, 374, 374, 337, 338, 339, 340, 341, 342, 0, 0, 330, 331, 332, 333, 322, 0, 323, 324, 325, 364, - 0, 326, 327, 0, 328, 427, 0, 1493, 390, 391, + 0, 326, 327, 0, 328, 427, 0, 1491, 390, 391, 393, 401, 0, 396, 397, 0, 401, 401, 0, 422, - 423, 0, 1485, 1510, 0, 0, 0, 1610, 1609, 1609, - 1609, 0, 169, 170, 171, 172, 173, 174, 643, 0, + 423, 0, 1483, 1508, 0, 0, 0, 1608, 1607, 1607, + 1607, 0, 169, 170, 171, 172, 173, 174, 643, 0, 0, 619, 641, 642, 167, 0, 0, 177, 516, 515, 0, 675, 0, 425, 0, 0, 419, 419, 404, 405, 557, 0, 0, 650, 651, 652, 653, 0, 0, 0, @@ -9498,167 +9488,167 @@ var yyDef = [...]int{ 468, 469, 474, 475, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 592, 593, 594, 597, 599, 518, 603, 605, 596, 598, 600, 518, 604, - 606, 1507, 1508, 1509, 0, 0, 713, 0, 0, 451, - 96, 1598, 718, 722, 723, 783, 741, 775, 783, 733, - 740, 763, 808, 809, 814, 822, 823, 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, 1463, 0, 0, 0, 1117, 0, 0, 0, - 1139, 1140, 0, 0, 0, 1457, 0, 0, 1146, 0, - 1418, 1156, 0, 0, 0, 0, 0, 1162, 1163, 1164, - 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1479, 1173, 0, - 0, 0, 0, 0, 1178, 1179, 1180, 1181, 1182, 0, - 1184, 0, 1185, 0, 0, 0, 0, 1192, 1193, 1195, - 0, 0, 1198, 1199, 0, 1201, 0, 1203, 1204, 1205, - 1206, 1207, 1208, 0, 1210, 0, 1212, 1213, 1214, 0, - 1216, 0, 1218, 1219, 0, 1221, 0, 1223, 0, 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, - 1272, 1273, 0, 1275, 0, 1277, 0, 1280, 1281, 0, - 1283, 0, 1286, 0, 1289, 0, 0, 1290, 0, 0, - 0, 1294, 0, 0, 0, 0, 1303, 1304, 1305, 1306, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1317, 1318, 1319, 1320, 1321, 1322, 0, 1324, 0, 1099, - 0, 0, 1099, 0, 0, 0, 0, 0, 1137, 902, - 0, 1419, 1420, 1421, 1422, 1423, 0, 0, 0, 0, - 0, 0, 1363, 1364, 1366, 0, 0, 1369, 0, 1371, - 0, 1581, 849, 852, 854, 940, 989, 990, 0, 0, - 0, 0, 970, 1606, 895, 896, 899, 948, 0, 1467, - 0, 0, 927, 1000, 928, 0, 907, 55, 943, 0, - 1538, 1537, 1550, 1563, 383, 383, 377, 378, 384, 379, - 381, 382, 1483, 0, 1488, 0, 1574, 0, 0, 1566, - 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, 95, 0, 0, 0, 117, - 118, 0, 0, 124, 386, 387, 158, 167, 462, 182, - 435, 0, 0, 307, 373, 334, 335, 336, 0, 358, - 0, 0, 0, 0, 456, 130, 1497, 1496, 401, 401, - 392, 0, 395, 0, 0, 0, 1611, 361, 424, 0, - 148, 0, 0, 0, 0, 0, 154, 613, 0, 0, - 620, 0, 0, 0, 525, 0, 536, 537, 0, 647, - -2, 709, 389, 0, 403, 406, 955, 0, 0, 538, - 0, 541, 542, 455, 516, 547, 548, 562, 549, 497, - 498, 495, 0, 0, 1520, 1521, 1526, 1524, 1525, 135, - 583, 585, 589, 584, 588, 0, 0, 0, 520, 0, - 520, 581, 0, 451, 1493, 0, 717, 452, 453, 786, - 786, 859, 99, 0, 862, 0, 0, 0, 0, 1016, - 1020, 1033, 1034, 1424, 1450, 360, 360, 1437, 360, 366, - 1440, 360, 1442, 360, 1445, 360, 1448, 1449, 0, 0, - 1063, 0, 917, 0, 0, 1145, 1460, 0, 0, 1157, - 1158, 1159, 1160, 1161, 1454, 0, 0, 0, 1177, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 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, 1374, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1094, - 1098, 0, 1100, 1101, 0, 0, 1326, 0, 0, 1344, - 0, 0, 0, 0, 0, 0, 0, 1464, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 991, 996, - 996, 996, 0, 0, 0, 1593, 1594, 1468, 1469, 1000, - 1470, 929, 908, 947, 1556, 0, 1549, 0, -2, 1558, - 0, 0, 0, 1564, 375, 376, 921, 82, 1001, 85, - 0, 1574, 1583, 0, 1565, 1576, 1578, 0, 0, 0, - 1570, 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, 461, - 186, 191, 0, 0, 0, 196, 0, 198, 0, 0, - 0, 203, 204, 401, 401, 436, 0, 304, 306, 0, - 0, 189, 374, 0, 374, 0, 365, 367, 0, 437, - 457, 1494, 1495, 0, 0, 394, 398, 399, 400, 0, - 1600, 150, 0, 0, 0, 616, 0, 644, 0, 0, - 0, 0, 0, 0, 178, 517, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 0, 401, 0, 0, 0, - 401, 401, 401, 0, 701, 388, 0, 0, 672, 669, - 539, 0, 220, 221, 228, 229, 231, 0, 0, 0, - 0, 0, 546, 942, 1511, 1512, 1513, 0, 1523, 1527, - 138, 0, 0, 0, 0, 591, 595, 601, 0, 519, - 602, 714, 715, 716, 97, 726, 732, 861, 881, 1009, - 1017, 1021, 0, 0, 0, 0, 1451, 1435, 374, 1438, - 1439, 1441, 1443, 1444, 1446, 1447, 1059, 1060, 1064, 0, - 1142, 0, 1144, 1458, 0, 1488, 0, 0, 0, 1176, - 0, 0, 0, 1187, 1186, 1188, 0, 1190, 1191, 1196, - 1197, 1200, 1202, 1209, 1211, 1215, 1217, 1220, 1222, 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, 1274, 1276, 0, 1279, 1282, 1284, 0, 1287, 0, - 1291, 0, 1293, 1295, 1296, 0, 0, 0, 1307, 1308, - 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1323, 0, - 1092, 1095, 1325, 1102, 1103, 1108, 1328, 0, 0, 0, - 1331, 0, 0, 0, 1335, 1138, 1346, 0, 1351, 0, - 0, 1357, 0, 1361, 0, 1367, 1368, 1370, 1372, 0, - 0, 0, 0, 0, 968, 949, 66, 1470, 1472, 0, - 1543, 1541, 1541, 1551, 1552, 0, 0, 1559, 0, 0, - 0, 0, 86, 0, 0, 0, 1579, 0, 0, 0, - 0, 103, 1479, 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, 303, 305, 0, 0, 348, 359, 349, - 0, 0, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, - 942, 151, 152, 153, 608, 0, 618, 0, 944, 0, - 611, 0, 528, 0, 0, 0, 401, 401, 401, 0, - 0, 0, 0, 686, 0, 0, 649, 0, 657, 0, - 0, 0, 232, 233, 0, 1522, 582, 0, 136, 137, - 0, 0, 587, 521, 522, 1057, 0, 0, 0, 1058, - 1436, 0, 0, 0, 0, 1455, 0, 0, 0, 0, - 1183, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1299, 0, 0, 0, 638, 639, 0, - 1375, 1097, 1479, 0, 1099, 1109, 1110, 0, 1099, 1345, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 997, 0, 0, 0, 0, 988, 1472, 1477, 0, - 0, 1546, 0, 1539, 1542, 1540, 1553, 0, 0, 1560, - 0, 1562, 0, 1584, 1585, 1577, 0, 1569, 1572, 1568, - 1571, 1488, 960, 0, 965, 0, 1479, 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, 363, 368, 0, 0, 0, 609, 0, - 945, 621, 612, 0, 699, 0, 703, 0, 0, 0, - 706, 707, 708, 685, 0, 689, 429, 673, 670, 671, - 540, 0, 139, 140, 0, 0, 0, 1425, 0, 1428, - 1141, 1143, 0, 1172, 1174, 1175, 1433, 1434, 1189, 1225, - 1228, 1231, 1234, 1237, 1240, 1243, 1246, 1249, 1252, 1255, - 1258, 1261, 1264, 1267, 1270, 1278, 1285, 1288, 1292, 1297, - 0, 1300, 0, 0, 1301, 0, 640, 1088, 0, 0, - 1106, 1107, 0, 1330, 1332, 1333, 1334, 1347, 0, 1352, - 1353, 0, 1358, 0, 1362, 1373, 0, 993, 950, 951, - 998, 999, 0, 0, 941, 1477, 84, 1478, 1475, 0, - 1473, 1471, 1535, 0, 1544, 1545, 1554, 1555, 1561, 0, - 1567, 0, 89, 0, 0, 0, 1488, 193, 0, 212, - 0, 617, 0, 620, 610, 697, 698, 0, 710, 702, - 704, 705, 687, -2, 1514, 0, 0, 0, 590, 1426, - 0, 0, 1302, 0, 636, 637, 1096, 1089, 0, 1074, - 1075, 1093, 1327, 1329, 0, 0, 0, 0, 992, 994, - 995, 83, 0, 1474, 1114, 0, 1547, 1548, 1575, 1573, - 961, 968, 0, 90, 442, 435, 1514, 0, 0, 0, - 690, 691, 692, 693, 694, 695, 696, 579, 1516, 141, - 142, 0, 509, 510, 511, 135, 0, 1147, 1298, 1090, - 0, 0, 0, 0, 0, 1348, 0, 1354, 0, 1359, - 0, 952, 953, 1476, 0, 0, 622, 0, 624, 0, - -2, 430, 443, 0, 187, 213, 214, 0, 0, 217, - 218, 219, 210, 211, 131, 0, 0, 711, 0, 1517, - 1518, 0, 138, 0, 0, 1081, 1082, 1083, 1084, 1086, - 0, 0, 0, 0, 1115, 1094, 623, 0, 0, 385, - 0, 633, 431, 432, 0, 438, 439, 440, 441, 215, - 216, 645, 0, 0, 508, 586, 1427, 0, 0, 1349, - 0, 1355, 0, 1360, 0, 625, 626, 634, 0, 433, - 0, 434, 0, 0, 0, 614, 0, 645, 1515, 1091, - 1085, 1087, 0, 0, 1113, 0, 635, 631, 444, 446, - 447, 0, 0, 445, 646, 615, 1350, 1356, 0, 448, - 449, 450, 627, 628, 629, 630, + 606, 1505, 1506, 1507, 0, 0, 713, 0, 0, 451, + 96, 1596, 718, 722, 723, 783, 741, 775, 783, 733, + 740, 763, 808, 809, 814, 822, 823, 824, 862, 0, + 0, 0, 0, 870, 0, 0, 1009, 1119, 1121, 1013, + 0, 1017, 1021, 0, 0, 0, 0, 0, 1068, 1066, + 1461, 0, 0, 0, 1115, 0, 0, 0, 1137, 1138, + 0, 0, 0, 1455, 0, 0, 1144, 0, 1416, 1154, + 0, 0, 0, 0, 0, 1160, 1161, 1162, 1163, 1164, + 1165, 1166, 1167, 1168, 1169, 1477, 1171, 0, 0, 0, + 0, 0, 1176, 1177, 1178, 1179, 1180, 0, 1182, 0, + 1183, 0, 0, 0, 0, 1190, 1191, 1193, 0, 0, + 1196, 1197, 0, 1199, 0, 1201, 1202, 1203, 1204, 1205, + 1206, 0, 1208, 0, 1210, 1211, 1212, 0, 1214, 0, + 1216, 1217, 0, 1219, 0, 1221, 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, 1270, 1271, + 0, 1273, 0, 1275, 0, 1278, 1279, 0, 1281, 0, + 1284, 0, 1287, 0, 0, 1288, 0, 0, 0, 1292, + 0, 0, 0, 0, 1301, 1302, 1303, 1304, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1315, 1316, + 1317, 1318, 1319, 1320, 0, 1322, 0, 1097, 0, 0, + 1097, 0, 0, 0, 0, 0, 1135, 900, 0, 1417, + 1418, 1419, 1420, 1421, 0, 0, 0, 0, 0, 0, + 1361, 1362, 1364, 0, 0, 1367, 0, 1369, 0, 1579, + 847, 850, 852, 938, 987, 988, 0, 0, 0, 0, + 968, 1604, 893, 894, 897, 946, 0, 1465, 0, 0, + 925, 998, 926, 0, 905, 55, 941, 0, 1536, 1535, + 1548, 1561, 383, 383, 377, 378, 384, 379, 381, 382, + 1481, 0, 1486, 0, 1572, 0, 0, 1564, 0, 0, + 0, 0, 0, 0, 0, 0, 971, 0, 0, 974, + 0, 0, 0, 0, 965, 936, 0, 937, 0, -2, + 0, 0, 94, 95, 0, 0, 0, 117, 118, 0, + 0, 124, 386, 387, 158, 167, 462, 182, 435, 0, + 0, 307, 373, 334, 335, 336, 0, 358, 0, 0, + 0, 0, 456, 130, 1495, 1494, 401, 401, 392, 0, + 395, 0, 0, 0, 1609, 361, 424, 0, 148, 0, + 0, 0, 0, 0, 154, 613, 0, 0, 620, 0, + 0, 0, 525, 0, 536, 537, 0, 647, -2, 709, + 389, 0, 403, 406, 953, 0, 0, 538, 0, 541, + 542, 455, 516, 547, 548, 562, 549, 497, 498, 495, + 0, 0, 1518, 1519, 1524, 1522, 1523, 135, 583, 585, + 589, 584, 588, 0, 0, 0, 520, 0, 520, 581, + 0, 451, 1491, 0, 717, 452, 453, 786, 786, 857, + 99, 0, 860, 0, 0, 0, 0, 1014, 1018, 1031, + 1032, 1422, 1448, 360, 360, 1435, 360, 366, 1438, 360, + 1440, 360, 1443, 360, 1446, 1447, 0, 0, 1061, 0, + 915, 0, 0, 1143, 1458, 0, 0, 1155, 1156, 1157, + 1158, 1159, 1452, 0, 0, 0, 1175, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 1372, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1092, 1096, 0, + 1098, 1099, 0, 0, 1324, 0, 0, 1342, 0, 0, + 0, 0, 0, 0, 0, 1462, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 989, 994, 994, 994, + 0, 0, 0, 1591, 1592, 1466, 1467, 998, 1468, 927, + 906, 945, 1554, 0, 1547, 0, -2, 1556, 0, 0, + 0, 1562, 375, 376, 919, 82, 999, 85, 0, 1572, + 1581, 0, 1563, 1574, 1576, 0, 0, 0, 1568, 0, + 998, 929, 960, 962, 0, 957, 972, 973, 975, 0, + 977, 0, 979, 980, 940, 934, 0, 102, 0, 998, + 998, 101, 0, 985, 121, 122, 123, 461, 186, 191, + 0, 0, 0, 196, 0, 198, 0, 0, 0, 203, + 204, 401, 401, 436, 0, 304, 306, 0, 0, 189, + 374, 0, 374, 0, 365, 367, 0, 437, 457, 1492, + 1493, 0, 0, 394, 398, 399, 400, 0, 1598, 150, + 0, 0, 0, 616, 0, 644, 0, 0, 0, 0, + 0, 0, 178, 517, 676, 677, 678, 679, 680, 681, + 682, 683, 684, 0, 401, 0, 0, 0, 401, 401, + 401, 0, 701, 388, 0, 0, 672, 669, 539, 0, + 220, 221, 228, 229, 231, 0, 0, 0, 0, 0, + 546, 940, 1509, 1510, 1511, 0, 1521, 1525, 138, 0, + 0, 0, 0, 591, 595, 601, 0, 519, 602, 714, + 715, 716, 97, 726, 732, 859, 879, 1007, 1015, 1019, + 0, 0, 0, 0, 1449, 1433, 374, 1436, 1437, 1439, + 1441, 1442, 1444, 1445, 1057, 1058, 1062, 0, 1140, 0, + 1142, 1456, 0, 1486, 0, 0, 0, 1174, 0, 0, + 0, 1185, 1184, 1186, 0, 1188, 1189, 1194, 1195, 1198, + 1200, 1207, 1209, 1213, 1215, 1218, 1220, 1222, 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, 1272, + 1274, 0, 1277, 1280, 1282, 0, 1285, 0, 1289, 0, + 1291, 1293, 1294, 0, 0, 0, 1305, 1306, 1307, 1308, + 1309, 1310, 1311, 1312, 1313, 1314, 1321, 0, 1090, 1093, + 1323, 1100, 1101, 1106, 1326, 0, 0, 0, 1329, 0, + 0, 0, 1333, 1136, 1344, 0, 1349, 0, 0, 1355, + 0, 1359, 0, 1365, 1366, 1368, 1370, 0, 0, 0, + 0, 0, 966, 947, 66, 1468, 1470, 0, 1541, 1539, + 1539, 1549, 1550, 0, 0, 1557, 0, 0, 0, 0, + 86, 0, 0, 0, 1577, 0, 0, 0, 0, 103, + 1477, 954, 961, 0, 0, 955, 0, 956, 976, 978, + 933, 0, 998, 998, 92, 93, 0, 192, 0, 194, + 0, 197, 199, 200, 201, 207, 208, 209, 202, 0, + 0, 303, 305, 0, 0, 348, 359, 349, 0, 0, + 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 940, 151, + 152, 153, 608, 0, 618, 0, 942, 0, 611, 0, + 528, 0, 0, 0, 401, 401, 401, 0, 0, 0, + 0, 686, 0, 0, 649, 0, 657, 0, 0, 0, + 232, 233, 0, 1520, 582, 0, 136, 137, 0, 0, + 587, 521, 522, 1055, 0, 0, 0, 1056, 1434, 0, + 0, 0, 0, 1453, 0, 0, 0, 0, 1181, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1297, 0, 0, 0, 638, 639, 0, 1373, 1095, + 1477, 0, 1097, 1107, 1108, 0, 1097, 1343, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 995, + 0, 0, 0, 0, 986, 1470, 1475, 0, 0, 1544, + 0, 1537, 1540, 1538, 1551, 0, 0, 1558, 0, 1560, + 0, 1582, 1583, 1575, 0, 1567, 1570, 1566, 1569, 1486, + 958, 0, 963, 0, 1477, 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, 363, 368, 0, 0, 0, 609, 0, 943, 621, + 612, 0, 699, 0, 703, 0, 0, 0, 706, 707, + 708, 685, 0, 689, 429, 673, 670, 671, 540, 0, + 139, 140, 0, 0, 0, 1423, 0, 1426, 1139, 1141, + 0, 1170, 1172, 1173, 1431, 1432, 1187, 1223, 1226, 1229, + 1232, 1235, 1238, 1241, 1244, 1247, 1250, 1253, 1256, 1259, + 1262, 1265, 1268, 1276, 1283, 1286, 1290, 1295, 0, 1298, + 0, 0, 1299, 0, 640, 1086, 0, 0, 1104, 1105, + 0, 1328, 1330, 1331, 1332, 1345, 0, 1350, 1351, 0, + 1356, 0, 1360, 1371, 0, 991, 948, 949, 996, 997, + 0, 0, 939, 1475, 84, 1476, 1473, 0, 1471, 1469, + 1533, 0, 1542, 1543, 1552, 1553, 1559, 0, 1565, 0, + 89, 0, 0, 0, 1486, 193, 0, 212, 0, 617, + 0, 620, 610, 697, 698, 0, 710, 702, 704, 705, + 687, -2, 1512, 0, 0, 0, 590, 1424, 0, 0, + 1300, 0, 636, 637, 1094, 1087, 0, 1072, 1073, 1091, + 1325, 1327, 0, 0, 0, 0, 990, 992, 993, 83, + 0, 1472, 1112, 0, 1545, 1546, 1573, 1571, 959, 966, + 0, 90, 442, 435, 1512, 0, 0, 0, 690, 691, + 692, 693, 694, 695, 696, 579, 1514, 141, 142, 0, + 509, 510, 511, 135, 0, 1145, 1296, 1088, 0, 0, + 0, 0, 0, 1346, 0, 1352, 0, 1357, 0, 950, + 951, 1474, 0, 0, 622, 0, 624, 0, -2, 430, + 443, 0, 187, 213, 214, 0, 0, 217, 218, 219, + 210, 211, 131, 0, 0, 711, 0, 1515, 1516, 0, + 138, 0, 0, 1079, 1080, 1081, 1082, 1084, 0, 0, + 0, 0, 1113, 1092, 623, 0, 0, 385, 0, 633, + 431, 432, 0, 438, 439, 440, 441, 215, 216, 645, + 0, 0, 508, 586, 1425, 0, 0, 1347, 0, 1353, + 0, 1358, 0, 625, 626, 634, 0, 433, 0, 434, + 0, 0, 0, 614, 0, 645, 1513, 1089, 1083, 1085, + 0, 0, 1111, 0, 635, 631, 444, 446, 447, 0, + 0, 445, 646, 615, 1348, 1354, 0, 448, 449, 450, + 627, 628, 629, 630, } var yyTok1 = [...]int{ @@ -16176,39 +16166,39 @@ yydefault: var yyLOCAL ExplainType //line sql.y:4433 { - yyLOCAL = VitessType + yyLOCAL = TraditionalType } yyVAL.union = yyLOCAL case 825: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ExplainType //line sql.y:4437 { - yyLOCAL = VTExplainType + yyLOCAL = AnalyzeType } yyVAL.union = yyLOCAL case 826: - yyDollar = yyS[yypt-3 : yypt+1] - var yyLOCAL ExplainType -//line sql.y:4441 + yyDollar = yyS[yypt-0 : yypt+1] + var yyLOCAL VExplainType +//line sql.y:4442 { - yyLOCAL = TraditionalType + yyLOCAL = PlanVExplainType } yyVAL.union = yyLOCAL case 827: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL ExplainType -//line sql.y:4445 + var yyLOCAL VExplainType +//line sql.y:4446 { - yyLOCAL = AnalyzeType + yyLOCAL = PlanVExplainType } yyVAL.union = yyLOCAL case 828: - yyDollar = yyS[yypt-0 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL VExplainType //line sql.y:4450 { - yyLOCAL = PlanVExplainType + yyLOCAL = AllVExplainType } yyVAL.union = yyLOCAL case 829: @@ -16216,25 +16206,21 @@ yydefault: var yyLOCAL VExplainType //line sql.y:4454 { - yyLOCAL = PlanVExplainType + yyLOCAL = QueriesVExplainType } yyVAL.union = yyLOCAL case 830: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL VExplainType -//line sql.y:4458 +//line sql.y:4460 { - yyLOCAL = AllVExplainType + yyVAL.str = yyDollar[1].str } - yyVAL.union = yyLOCAL case 831: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL VExplainType -//line sql.y:4462 +//line sql.y:4464 { - yyLOCAL = QueriesVExplainType + yyVAL.str = yyDollar[1].str } - yyVAL.union = yyLOCAL case 832: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4468 @@ -16243,22 +16229,26 @@ yydefault: } case 833: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4472 + var yyLOCAL Statement +//line sql.y:4474 { - yyVAL.str = yyDollar[1].str + yyLOCAL = yyDollar[1].selStmtUnion() } + yyVAL.union = yyLOCAL case 834: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4476 + var yyLOCAL Statement +//line sql.y:4478 { - yyVAL.str = yyDollar[1].str + yyLOCAL = yyDollar[1].statementUnion() } + yyVAL.union = yyLOCAL case 835: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement //line sql.y:4482 { - yyLOCAL = yyDollar[1].selStmtUnion() + yyLOCAL = yyDollar[1].statementUnion() } yyVAL.union = yyLOCAL case 836: @@ -16270,218 +16260,214 @@ yydefault: } yyVAL.union = yyLOCAL case 837: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL Statement -//line sql.y:4490 - { - yyLOCAL = yyDollar[1].statementUnion() - } - yyVAL.union = yyLOCAL - case 838: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL Statement -//line sql.y:4494 - { - yyLOCAL = yyDollar[1].statementUnion() - } - yyVAL.union = yyLOCAL - case 839: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4499 +//line sql.y:4491 { yyVAL.str = "" } - case 840: + case 838: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4503 +//line sql.y:4495 { yyVAL.str = yyDollar[1].identifierCI.val } - case 841: + case 839: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4507 +//line sql.y:4499 { yyVAL.str = encodeSQLString(yyDollar[1].str) } - case 842: + case 840: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4513 +//line sql.y:4505 { yyLOCAL = &ExplainTab{Table: yyDollar[3].tableName, Wild: yyDollar[4].str} } yyVAL.union = yyLOCAL - case 843: + case 841: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4517 +//line sql.y:4509 { yyLOCAL = &ExplainStmt{Type: yyDollar[3].explainTypeUnion(), Statement: yyDollar[4].statementUnion(), Comments: Comments(yyDollar[2].strs).Parsed()} } yyVAL.union = yyLOCAL - case 844: + case 842: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4523 +//line sql.y:4515 { yyLOCAL = &VExplainStmt{Type: yyDollar[3].vexplainTypeUnion(), Statement: yyDollar[4].statementUnion(), Comments: Comments(yyDollar[2].strs).Parsed()} } yyVAL.union = yyLOCAL - case 845: + case 843: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4529 +//line sql.y:4521 { yyLOCAL = &OtherAdmin{} } yyVAL.union = yyLOCAL - case 846: + case 844: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4533 +//line sql.y:4525 { yyLOCAL = &OtherAdmin{} } yyVAL.union = yyLOCAL - case 847: + case 845: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4539 +//line sql.y:4531 { yyLOCAL = &LockTables{Tables: yyDollar[3].tableAndLockTypesUnion()} } yyVAL.union = yyLOCAL - case 848: + case 846: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableAndLockTypes -//line sql.y:4545 +//line sql.y:4537 { yyLOCAL = TableAndLockTypes{yyDollar[1].tableAndLockTypeUnion()} } yyVAL.union = yyLOCAL - case 849: + case 847: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4549 +//line sql.y:4541 { yySLICE := (*TableAndLockTypes)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableAndLockTypeUnion()) } - case 850: + case 848: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *TableAndLockType -//line sql.y:4555 +//line sql.y:4547 { yyLOCAL = &TableAndLockType{Table: yyDollar[1].aliasedTableNameUnion(), Lock: yyDollar[2].lockTypeUnion()} } yyVAL.union = yyLOCAL - case 851: + case 849: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LockType -//line sql.y:4561 +//line sql.y:4553 { yyLOCAL = Read } yyVAL.union = yyLOCAL - case 852: + case 850: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL LockType -//line sql.y:4565 +//line sql.y:4557 { yyLOCAL = ReadLocal } yyVAL.union = yyLOCAL - case 853: + case 851: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LockType -//line sql.y:4569 +//line sql.y:4561 { yyLOCAL = Write } yyVAL.union = yyLOCAL - case 854: + case 852: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL LockType -//line sql.y:4573 +//line sql.y:4565 { yyLOCAL = LowPriorityWrite } yyVAL.union = yyLOCAL - case 855: + case 853: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4579 +//line sql.y:4571 { yyLOCAL = &UnlockTables{} } yyVAL.union = yyLOCAL - case 856: + case 854: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4585 +//line sql.y:4577 { yyLOCAL = &RevertMigration{Comments: Comments(yyDollar[2].strs).Parsed(), UUID: string(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 857: + case 855: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4591 +//line sql.y:4583 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), FlushOptions: yyDollar[3].strs} } yyVAL.union = yyLOCAL - case 858: + case 856: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4595 +//line sql.y:4587 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion()} } yyVAL.union = yyLOCAL - case 859: + case 857: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:4599 +//line sql.y:4591 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), WithLock: true} } yyVAL.union = yyLOCAL - case 860: + case 858: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4603 +//line sql.y:4595 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion()} } yyVAL.union = yyLOCAL - case 861: + case 859: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:4607 +//line sql.y:4599 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), WithLock: true} } yyVAL.union = yyLOCAL - case 862: + case 860: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:4611 +//line sql.y:4603 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), ForExport: true} } yyVAL.union = yyLOCAL - case 863: + case 861: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4617 +//line sql.y:4609 { yyVAL.strs = []string{yyDollar[1].str} } - case 864: + case 862: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4621 +//line sql.y:4613 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[3].str) } + case 863: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:4619 + { + yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + } + case 864: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:4623 + { + yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + } case 865: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4627 @@ -16495,16 +16481,16 @@ yydefault: yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 867: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4635 { - yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyVAL.str = string(yyDollar[1].str) } case 868: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4639 { - yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyVAL.str = string(yyDollar[1].str) } case 869: yyDollar = yyS[yypt-1 : yypt+1] @@ -16513,28 +16499,28 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 870: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:4647 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyDollar[3].str } case 871: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4651 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 872: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4655 { - yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyDollar[3].str + yyVAL.str = string(yyDollar[1].str) } case 873: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4659 { - yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyVAL.str = string(yyDollar[1].str) } case 874: yyDollar = yyS[yypt-1 : yypt+1] @@ -16543,156 +16529,144 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 875: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4667 - { - yyVAL.str = string(yyDollar[1].str) - } - case 876: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4671 - { - yyVAL.str = string(yyDollar[1].str) - } - case 877: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4676 +//line sql.y:4668 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 878: + case 876: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4680 +//line sql.y:4672 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 879: + case 877: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4684 +//line sql.y:4676 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 880: + case 878: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4689 +//line sql.y:4681 { yyVAL.str = "" } - case 881: + case 879: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4693 +//line sql.y:4685 { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) + " " + yyDollar[3].identifierCI.String() } - case 882: + case 880: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4698 +//line sql.y:4690 { setAllowComments(yylex, true) } - case 883: + case 881: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4702 +//line sql.y:4694 { yyVAL.strs = yyDollar[2].strs setAllowComments(yylex, false) } - case 884: + case 882: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4708 +//line sql.y:4700 { yyVAL.strs = nil } - case 885: + case 883: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4712 +//line sql.y:4704 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[2].str) } - case 886: + case 884: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4718 +//line sql.y:4710 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 887: + case 885: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:4722 +//line sql.y:4714 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 888: + case 886: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:4726 +//line sql.y:4718 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 889: + case 887: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4731 +//line sql.y:4723 { yyVAL.str = "" } - case 890: + case 888: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4735 +//line sql.y:4727 { yyVAL.str = SQLNoCacheStr } - case 891: + case 889: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4739 +//line sql.y:4731 { yyVAL.str = SQLCacheStr } - case 892: + case 890: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4744 +//line sql.y:4736 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 893: + case 891: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4748 +//line sql.y:4740 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 894: + case 892: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4752 +//line sql.y:4744 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 895: + case 893: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4758 +//line sql.y:4750 { yyLOCAL = &PrepareStmt{Name: yyDollar[3].identifierCI, Comments: Comments(yyDollar[2].strs).Parsed(), Statement: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 896: + case 894: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4762 +//line sql.y:4754 { yyLOCAL = &PrepareStmt{ Name: yyDollar[3].identifierCI, @@ -16701,595 +16675,595 @@ yydefault: } } yyVAL.union = yyLOCAL - case 897: + case 895: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4772 +//line sql.y:4764 { yyLOCAL = &ExecuteStmt{Name: yyDollar[3].identifierCI, Comments: Comments(yyDollar[2].strs).Parsed(), Arguments: yyDollar[4].variablesUnion()} } yyVAL.union = yyLOCAL - case 898: + case 896: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4777 +//line sql.y:4769 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 899: + case 897: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4781 +//line sql.y:4773 { yyLOCAL = yyDollar[2].variablesUnion() } yyVAL.union = yyLOCAL - case 900: + case 898: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4787 +//line sql.y:4779 { yyLOCAL = &DeallocateStmt{Comments: Comments(yyDollar[2].strs).Parsed(), Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 901: + case 899: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4791 +//line sql.y:4783 { yyLOCAL = &DeallocateStmt{Comments: Comments(yyDollar[2].strs).Parsed(), Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 902: + case 900: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4796 +//line sql.y:4788 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 903: + case 901: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4800 +//line sql.y:4792 { yyLOCAL = yyDollar[1].selectExprsUnion() } yyVAL.union = yyLOCAL - case 904: + case 902: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4805 +//line sql.y:4797 { yyVAL.strs = nil } - case 905: + case 903: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4809 +//line sql.y:4801 { yyVAL.strs = []string{yyDollar[1].str} } - case 906: + case 904: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4813 +//line sql.y:4805 { // 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} } - case 907: + case 905: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4817 +//line sql.y:4809 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } - case 908: + case 906: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4821 +//line sql.y:4813 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } - case 909: + case 907: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4827 +//line sql.y:4819 { yyVAL.str = SQLNoCacheStr } - case 910: + case 908: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4831 +//line sql.y:4823 { yyVAL.str = SQLCacheStr } - case 911: + case 909: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4835 +//line sql.y:4827 { yyVAL.str = DistinctStr } - case 912: + case 910: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4839 +//line sql.y:4831 { yyVAL.str = DistinctStr } - case 913: + case 911: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4843 +//line sql.y:4835 { yyVAL.str = StraightJoinHint } - case 914: + case 912: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4847 +//line sql.y:4839 { yyVAL.str = SQLCalcFoundRowsStr } - case 915: + case 913: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4851 +//line sql.y:4843 { 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: + case 914: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4857 +//line sql.y:4849 { yyLOCAL = SelectExprs{yyDollar[1].selectExprUnion()} } yyVAL.union = yyLOCAL - case 917: + case 915: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4861 +//line sql.y:4853 { yySLICE := (*SelectExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].selectExprUnion()) } - case 918: + case 916: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4867 +//line sql.y:4859 { yyLOCAL = &StarExpr{} } yyVAL.union = yyLOCAL - case 919: + case 917: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4871 +//line sql.y:4863 { yyLOCAL = &AliasedExpr{Expr: yyDollar[1].exprUnion(), As: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 920: + case 918: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4875 +//line sql.y:4867 { yyLOCAL = &StarExpr{TableName: TableName{Name: yyDollar[1].identifierCS}} } yyVAL.union = yyLOCAL - case 921: + case 919: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4879 +//line sql.y:4871 { yyLOCAL = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}} } yyVAL.union = yyLOCAL - case 922: + case 920: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4884 +//line sql.y:4876 { yyVAL.identifierCI = IdentifierCI{} } - case 923: + case 921: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4888 +//line sql.y:4880 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 924: + case 922: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4892 +//line sql.y:4884 { yyVAL.identifierCI = yyDollar[2].identifierCI } - case 926: + case 924: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4899 +//line sql.y:4891 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 927: + case 925: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4904 +//line sql.y:4896 { yyLOCAL = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewIdentifierCS("dual")}}} } yyVAL.union = yyLOCAL - case 928: + case 926: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4908 +//line sql.y:4900 { yyLOCAL = yyDollar[1].tableExprsUnion() } yyVAL.union = yyLOCAL - case 929: + case 927: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4914 +//line sql.y:4906 { yyLOCAL = yyDollar[2].tableExprsUnion() } yyVAL.union = yyLOCAL - case 930: + case 928: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4920 +//line sql.y:4912 { yyLOCAL = TableExprs{yyDollar[1].tableExprUnion()} } yyVAL.union = yyLOCAL - case 931: + case 929: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4924 +//line sql.y:4916 { yySLICE := (*TableExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableExprUnion()) } - case 934: + case 932: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4934 +//line sql.y:4926 { yyLOCAL = yyDollar[1].aliasedTableNameUnion() } yyVAL.union = yyLOCAL - case 935: + case 933: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4938 +//line sql.y:4930 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].derivedTableUnion(), As: yyDollar[3].identifierCS, Columns: yyDollar[4].columnsUnion()} } yyVAL.union = yyLOCAL - case 936: + case 934: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4942 +//line sql.y:4934 { yyLOCAL = &ParenTableExpr{Exprs: yyDollar[2].tableExprsUnion()} } yyVAL.union = yyLOCAL - case 937: + case 935: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:4946 +//line sql.y:4938 { yyLOCAL = yyDollar[1].tableExprUnion() } yyVAL.union = yyLOCAL - case 938: + case 936: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:4952 +//line sql.y:4944 { yyLOCAL = &DerivedTable{Lateral: false, Select: yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 939: + case 937: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:4956 +//line sql.y:4948 { yyLOCAL = &DerivedTable{Lateral: true, Select: yyDollar[2].selStmtUnion()} } yyVAL.union = yyLOCAL - case 940: + case 938: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:4962 +//line sql.y:4954 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].identifierCS, Hints: yyDollar[3].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 941: + case 939: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:4966 +//line sql.y:4958 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitionsUnion(), As: yyDollar[6].identifierCS, Hints: yyDollar[7].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 942: + case 940: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:4971 +//line sql.y:4963 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 943: + case 941: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:4975 +//line sql.y:4967 { yyLOCAL = yyDollar[2].columnsUnion() } yyVAL.union = yyLOCAL - case 944: + case 942: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:4980 +//line sql.y:4972 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 945: + case 943: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4984 +//line sql.y:4976 { yyLOCAL = yyDollar[1].columnsUnion() } yyVAL.union = yyLOCAL - case 946: + case 944: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:4990 +//line sql.y:4982 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 947: + case 945: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4994 +//line sql.y:4986 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 948: + case 946: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*Variable -//line sql.y:5000 +//line sql.y:4992 { yyLOCAL = []*Variable{yyDollar[1].variableUnion()} } yyVAL.union = yyLOCAL - case 949: + case 947: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5004 +//line sql.y:4996 { yySLICE := (*[]*Variable)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].variableUnion()) } - case 950: + case 948: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:5010 +//line sql.y:5002 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 951: + case 949: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:5014 +//line sql.y:5006 { yyLOCAL = Columns{NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 952: + case 950: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5018 +//line sql.y:5010 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 953: + case 951: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5022 +//line sql.y:5014 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, NewIdentifierCI(string(yyDollar[3].str))) } - case 954: + case 952: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Partitions -//line sql.y:5028 +//line sql.y:5020 { yyLOCAL = Partitions{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 955: + case 953: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5032 +//line sql.y:5024 { yySLICE := (*Partitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 956: + case 954: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5045 +//line sql.y:5037 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 957: + case 955: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5049 +//line sql.y:5041 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 958: + case 956: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5053 +//line sql.y:5045 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 959: + case 957: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5057 +//line sql.y:5049 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion()} } yyVAL.union = yyLOCAL - case 960: + case 958: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5063 +//line sql.y:5055 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 961: + case 959: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:5065 +//line sql.y:5057 { yyVAL.joinCondition = &JoinCondition{Using: yyDollar[3].columnsUnion()} } - case 962: + case 960: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5069 +//line sql.y:5061 { yyVAL.joinCondition = &JoinCondition{} } - case 963: + case 961: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5071 +//line sql.y:5063 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 964: + case 962: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5075 +//line sql.y:5067 { yyVAL.joinCondition = &JoinCondition{} } - case 965: + case 963: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5077 +//line sql.y:5069 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 966: + case 964: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5080 +//line sql.y:5072 { yyVAL.empty = struct{}{} } - case 967: + case 965: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5082 +//line sql.y:5074 { yyVAL.empty = struct{}{} } - case 968: + case 966: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5085 +//line sql.y:5077 { yyVAL.identifierCS = NewIdentifierCS("") } - case 969: + case 967: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5089 +//line sql.y:5081 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 970: + case 968: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5093 +//line sql.y:5085 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 972: + case 970: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5100 +//line sql.y:5092 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 973: + case 971: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:5106 +//line sql.y:5098 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 974: + case 972: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5110 +//line sql.y:5102 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 975: + case 973: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5114 +//line sql.y:5106 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 976: + case 974: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:5120 +//line sql.y:5112 { yyLOCAL = StraightJoinType } yyVAL.union = yyLOCAL - case 977: + case 975: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5126 +//line sql.y:5118 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 978: + case 976: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:5130 +//line sql.y:5122 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 979: + case 977: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5134 +//line sql.y:5126 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 980: + case 978: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:5138 +//line sql.y:5130 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 981: + case 979: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5144 +//line sql.y:5136 { yyLOCAL = NaturalJoinType } yyVAL.union = yyLOCAL - case 982: + case 980: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5148 +//line sql.y:5140 { if yyDollar[2].joinTypeUnion() == LeftJoinType { yyLOCAL = NaturalLeftJoinType @@ -17298,363 +17272,379 @@ yydefault: } } yyVAL.union = yyLOCAL - case 983: + case 981: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5158 +//line sql.y:5150 { yyVAL.tableName = yyDollar[2].tableName } - case 984: + case 982: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5162 +//line sql.y:5154 { yyVAL.tableName = yyDollar[1].tableName } - case 985: + case 983: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5168 +//line sql.y:5160 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 986: + case 984: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5172 +//line sql.y:5164 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS} } - case 987: + case 985: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5178 +//line sql.y:5170 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 988: + case 986: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5183 +//line sql.y:5175 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 989: + case 987: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5187 +//line sql.y:5179 { yyLOCAL = yyDollar[1].indexHintsUnion() } yyVAL.union = yyLOCAL - case 990: + case 988: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5193 +//line sql.y:5185 { yyLOCAL = IndexHints{yyDollar[1].indexHintUnion()} } yyVAL.union = yyLOCAL - case 991: + case 989: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5197 +//line sql.y:5189 { yySLICE := (*IndexHints)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].indexHintUnion()) } - case 992: + case 990: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5203 +//line sql.y:5195 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 993: + case 991: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5207 +//line sql.y:5199 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion()} } yyVAL.union = yyLOCAL - case 994: + case 992: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5211 +//line sql.y:5203 { yyLOCAL = &IndexHint{Type: IgnoreOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 995: + case 993: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5215 +//line sql.y:5207 { yyLOCAL = &IndexHint{Type: ForceOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 996: + case 994: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5220 +//line sql.y:5212 { yyLOCAL = NoForType } yyVAL.union = yyLOCAL - case 997: + case 995: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5224 +//line sql.y:5216 { yyLOCAL = JoinForType } yyVAL.union = yyLOCAL - case 998: + case 996: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5228 +//line sql.y:5220 { yyLOCAL = OrderByForType } yyVAL.union = yyLOCAL - case 999: + case 997: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5232 +//line sql.y:5224 { yyLOCAL = GroupByForType } yyVAL.union = yyLOCAL - case 1000: + case 998: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:5238 +//line sql.y:5230 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1001: + case 999: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5242 +//line sql.y:5234 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1002: + case 1000: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5249 +//line sql.y:5241 { yyLOCAL = &OrExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1003: + case 1001: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5253 +//line sql.y:5245 { yyLOCAL = &XorExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1004: + case 1002: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5257 +//line sql.y:5249 { yyLOCAL = &AndExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1005: + case 1003: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5261 +//line sql.y:5253 { yyLOCAL = &NotExpr{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1006: + case 1004: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5265 +//line sql.y:5257 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].isExprOperatorUnion()} } yyVAL.union = yyLOCAL - case 1007: + case 1005: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5269 +//line sql.y:5261 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1008: + case 1006: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5273 +//line sql.y:5265 { yyLOCAL = &AssignmentExpr{Left: yyDollar[1].variableUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1009: + case 1007: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5277 +//line sql.y:5269 { yyLOCAL = &MemberOfExpr{Value: yyDollar[1].exprUnion(), JSONArr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1010: + case 1008: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5283 +//line sql.y:5275 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNullOp} } yyVAL.union = yyLOCAL - case 1011: + case 1009: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5287 +//line sql.y:5279 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNotNullOp} } yyVAL.union = yyLOCAL - case 1012: + case 1010: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5291 +//line sql.y:5283 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: yyDollar[2].comparisonExprOperatorUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1013: + case 1011: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5295 +//line sql.y:5287 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1014: + case 1012: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5301 +//line sql.y:5293 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: InOp, Right: yyDollar[3].colTupleUnion()} } yyVAL.union = yyLOCAL - case 1015: + case 1013: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5305 +//line sql.y:5297 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotInOp, Right: yyDollar[4].colTupleUnion()} } yyVAL.union = yyLOCAL - case 1016: + case 1014: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5309 +//line sql.y:5301 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: true, From: yyDollar[3].exprUnion(), To: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1017: + case 1015: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5313 +//line sql.y:5305 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: false, From: yyDollar[4].exprUnion(), To: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 1018: + case 1016: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5317 +//line sql.y:5309 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1019: + case 1017: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5321 +//line sql.y:5313 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1020: + case 1018: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5325 +//line sql.y:5317 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion(), Escape: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1021: + case 1019: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5329 +//line sql.y:5321 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion(), Escape: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 1022: + case 1020: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5333 +//line sql.y:5325 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: RegexpOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1023: + case 1021: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5337 +//line sql.y:5329 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotRegexpOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1024: + case 1022: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5341 +//line sql.y:5333 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1025: + case 1023: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5347 +//line sql.y:5339 { } - case 1026: + case 1024: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5350 +//line sql.y:5342 { } - case 1027: + case 1025: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5356 +//line sql.y:5348 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitOrOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1028: + case 1026: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5360 +//line sql.y:5352 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitAndOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL + case 1027: + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL Expr +//line sql.y:5356 + { + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftLeftOp, Right: yyDollar[3].exprUnion()} + } + yyVAL.union = yyLOCAL + case 1028: + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL Expr +//line sql.y:5360 + { + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftRightOp, Right: yyDollar[3].exprUnion()} + } + yyVAL.union = yyLOCAL case 1029: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr //line sql.y:5364 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftLeftOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: PlusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1030: @@ -17662,39 +17652,39 @@ yydefault: var yyLOCAL Expr //line sql.y:5368 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftRightOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MinusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1031: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:5372 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: PlusOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprBinaryAdd, Date: yyDollar[1].exprUnion(), Unit: yyDollar[5].intervalTypeUnion(), Interval: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1032: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:5376 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MinusOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprBinarySub, Date: yyDollar[1].exprUnion(), Unit: yyDollar[5].intervalTypeUnion(), Interval: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1033: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr //line sql.y:5380 { - yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprBinaryAdd, Date: yyDollar[1].exprUnion(), Unit: yyDollar[5].intervalTypeUnion(), Interval: yyDollar[4].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MultOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1034: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr //line sql.y:5384 { - yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprBinarySub, Date: yyDollar[1].exprUnion(), Unit: yyDollar[5].intervalTypeUnion(), Interval: yyDollar[4].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: DivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1035: @@ -17702,7 +17692,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5388 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MultOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1036: @@ -17710,7 +17700,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5392 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: DivOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: IntDivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1037: @@ -17726,29 +17716,29 @@ yydefault: var yyLOCAL Expr //line sql.y:5400 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: IntDivOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitXorOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1039: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr //line sql.y:5404 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1040: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5408 +//line sql.y:5410 { - yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitXorOp, Right: yyDollar[3].exprUnion()} + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1041: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5412 +//line sql.y:5414 { yyLOCAL = yyDollar[1].exprUnion() } @@ -17770,11 +17760,11 @@ yydefault: } yyVAL.union = yyLOCAL case 1044: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr //line sql.y:5426 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = &CollateExpr{Expr: yyDollar[1].exprUnion(), Collation: yyDollar[3].str} } yyVAL.union = yyLOCAL case 1045: @@ -17786,11 +17776,11 @@ yydefault: } yyVAL.union = yyLOCAL case 1046: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr //line sql.y:5434 { - yyLOCAL = &CollateExpr{Expr: yyDollar[1].exprUnion(), Collation: yyDollar[3].str} + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1047: @@ -17798,23 +17788,23 @@ yydefault: var yyLOCAL Expr //line sql.y:5438 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL case 1048: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:5442 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = yyDollar[2].exprUnion() // TODO: do we really want to ignore unary '+' before any kind of literals? } yyVAL.union = yyLOCAL case 1049: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:5446 { - yyLOCAL = yyDollar[1].variableUnion() + yyLOCAL = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 1050: @@ -17822,93 +17812,77 @@ yydefault: var yyLOCAL Expr //line sql.y:5450 { - yyLOCAL = yyDollar[2].exprUnion() // TODO: do we really want to ignore unary '+' before any kind of literals? + yyLOCAL = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 1051: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:5454 - { - yyLOCAL = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].exprUnion()} - } - yyVAL.union = yyLOCAL - case 1052: - yyDollar = yyS[yypt-2 : yypt+1] - var yyLOCAL Expr -//line sql.y:5458 - { - yyLOCAL = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].exprUnion()} - } - yyVAL.union = yyLOCAL - case 1053: - yyDollar = yyS[yypt-2 : yypt+1] - var yyLOCAL Expr -//line sql.y:5462 { yyLOCAL = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1054: + case 1052: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5466 +//line sql.y:5458 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1055: + case 1053: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5470 +//line sql.y:5462 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1056: + case 1054: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5474 +//line sql.y:5466 { yyLOCAL = &ExistsExpr{Subquery: yyDollar[2].subqueryUnion()} } yyVAL.union = yyLOCAL - case 1057: + case 1055: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:5478 +//line sql.y:5470 { yyLOCAL = &MatchExpr{Columns: yyDollar[2].colNamesUnion(), Expr: yyDollar[5].exprUnion(), Option: yyDollar[6].matchExprOptionUnion()} } yyVAL.union = yyLOCAL - case 1058: + case 1056: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:5482 +//line sql.y:5474 { yyLOCAL = &CastExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion(), Array: yyDollar[6].booleanUnion()} } yyVAL.union = yyLOCAL - case 1059: + case 1057: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5486 +//line sql.y:5478 { yyLOCAL = &ConvertExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion()} } yyVAL.union = yyLOCAL - case 1060: + case 1058: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5490 +//line sql.y:5482 { yyLOCAL = &ConvertUsingExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].str} } yyVAL.union = yyLOCAL - case 1061: + case 1059: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5494 +//line sql.y:5486 { // 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: @@ -17917,611 +17891,627 @@ yydefault: yyLOCAL = &ConvertExpr{Expr: yyDollar[2].exprUnion(), Type: &ConvertType{Type: yyDollar[1].str}} } yyVAL.union = yyLOCAL - case 1062: + case 1060: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5502 +//line sql.y:5494 { yyLOCAL = &Default{ColName: yyDollar[2].str} } yyVAL.union = yyLOCAL - case 1063: + case 1061: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5506 +//line sql.y:5498 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprBinaryAddLeft, Date: yyDollar[5].exprUnion(), Unit: yyDollar[3].intervalTypeUnion(), Interval: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1064: + case 1062: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5510 +//line sql.y:5502 { yyLOCAL = &IntervalFuncExpr{Expr: yyDollar[3].exprUnion(), Exprs: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1065: + case 1063: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5514 +//line sql.y:5506 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: JSONExtractOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1066: + case 1064: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5518 +//line sql.y:5510 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: JSONUnquoteExtractOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1067: + case 1065: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5524 +//line sql.y:5516 { yyLOCAL = yyDollar[1].colNamesUnion() } yyVAL.union = yyLOCAL - case 1068: + case 1066: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5528 +//line sql.y:5520 { yyLOCAL = yyDollar[2].colNamesUnion() } yyVAL.union = yyLOCAL - case 1069: + case 1067: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5534 +//line sql.y:5526 { yyLOCAL = []*ColName{yyDollar[1].colNameUnion()} } yyVAL.union = yyLOCAL - case 1070: + case 1068: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5538 +//line sql.y:5530 { yySLICE := (*[]*ColName)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].colNameUnion()) } - case 1071: + case 1069: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5544 +//line sql.y:5536 { yyLOCAL = BothTrimType } yyVAL.union = yyLOCAL - case 1072: + case 1070: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5548 +//line sql.y:5540 { yyLOCAL = LeadingTrimType } yyVAL.union = yyLOCAL - case 1073: + case 1071: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5552 +//line sql.y:5544 { yyLOCAL = TrailingTrimType } yyVAL.union = yyLOCAL - case 1074: + case 1072: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FrameUnitType -//line sql.y:5558 +//line sql.y:5550 { yyLOCAL = FrameRowsType } yyVAL.union = yyLOCAL - case 1075: + case 1073: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FrameUnitType -//line sql.y:5562 +//line sql.y:5554 { yyLOCAL = FrameRangeType } yyVAL.union = yyLOCAL - case 1076: + case 1074: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5569 +//line sql.y:5561 { yyLOCAL = CumeDistExprType } yyVAL.union = yyLOCAL - case 1077: + case 1075: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5573 +//line sql.y:5565 { yyLOCAL = DenseRankExprType } yyVAL.union = yyLOCAL - case 1078: + case 1076: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5577 +//line sql.y:5569 { yyLOCAL = PercentRankExprType } yyVAL.union = yyLOCAL - case 1079: + case 1077: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5581 +//line sql.y:5573 { yyLOCAL = RankExprType } yyVAL.union = yyLOCAL - case 1080: + case 1078: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5585 +//line sql.y:5577 { yyLOCAL = RowNumberExprType } yyVAL.union = yyLOCAL - case 1081: + case 1079: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5591 +//line sql.y:5583 { yyLOCAL = &FramePoint{Type: CurrentRowType} } yyVAL.union = yyLOCAL - case 1082: + case 1080: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5595 +//line sql.y:5587 { yyLOCAL = &FramePoint{Type: UnboundedPrecedingType} } yyVAL.union = yyLOCAL - case 1083: + case 1081: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5599 +//line sql.y:5591 { yyLOCAL = &FramePoint{Type: UnboundedFollowingType} } yyVAL.union = yyLOCAL - case 1084: + case 1082: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5603 +//line sql.y:5595 { yyLOCAL = &FramePoint{Type: ExprPrecedingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1085: + case 1083: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5607 +//line sql.y:5599 { yyLOCAL = &FramePoint{Type: ExprPrecedingType, Expr: yyDollar[2].exprUnion(), Unit: yyDollar[3].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1086: + case 1084: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5611 +//line sql.y:5603 { yyLOCAL = &FramePoint{Type: ExprFollowingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1087: + case 1085: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5615 +//line sql.y:5607 { yyLOCAL = &FramePoint{Type: ExprFollowingType, Expr: yyDollar[2].exprUnion(), Unit: yyDollar[3].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1088: + case 1086: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5620 +//line sql.y:5612 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1089: + case 1087: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5624 +//line sql.y:5616 { yyLOCAL = yyDollar[1].frameClauseUnion() } yyVAL.union = yyLOCAL - case 1090: + case 1088: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5630 +//line sql.y:5622 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[2].framePointUnion()} } yyVAL.union = yyLOCAL - case 1091: + case 1089: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5634 +//line sql.y:5626 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[3].framePointUnion(), End: yyDollar[5].framePointUnion()} } yyVAL.union = yyLOCAL - case 1092: + case 1090: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:5639 +//line sql.y:5631 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1093: + case 1091: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Exprs -//line sql.y:5643 +//line sql.y:5635 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1094: + case 1092: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5648 +//line sql.y:5640 { } - case 1095: + case 1093: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5651 +//line sql.y:5643 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1096: + case 1094: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *WindowSpecification -//line sql.y:5657 +//line sql.y:5649 { yyLOCAL = &WindowSpecification{Name: yyDollar[1].identifierCI, PartitionClause: yyDollar[2].exprsUnion(), OrderClause: yyDollar[3].orderByUnion(), FrameClause: yyDollar[4].frameClauseUnion()} } yyVAL.union = yyLOCAL - case 1097: + case 1095: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5663 +//line sql.y:5655 { yyLOCAL = &OverClause{WindowSpec: yyDollar[3].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1098: + case 1096: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5667 +//line sql.y:5659 { yyLOCAL = &OverClause{WindowName: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 1099: + case 1097: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5672 +//line sql.y:5664 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1101: + case 1099: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5679 +//line sql.y:5671 { yyLOCAL = &NullTreatmentClause{yyDollar[1].nullTreatmentTypeUnion()} } yyVAL.union = yyLOCAL - case 1102: + case 1100: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5685 +//line sql.y:5677 { yyLOCAL = RespectNullsType } yyVAL.union = yyLOCAL - case 1103: + case 1101: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5689 +//line sql.y:5681 { yyLOCAL = IgnoreNullsType } yyVAL.union = yyLOCAL - case 1104: + case 1102: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5695 +//line sql.y:5687 { yyLOCAL = FirstValueExprType } yyVAL.union = yyLOCAL - case 1105: + case 1103: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5699 +//line sql.y:5691 { yyLOCAL = LastValueExprType } yyVAL.union = yyLOCAL - case 1106: + case 1104: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5705 +//line sql.y:5697 { yyLOCAL = FromFirstType } yyVAL.union = yyLOCAL - case 1107: + case 1105: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5709 +//line sql.y:5701 { yyLOCAL = FromLastType } yyVAL.union = yyLOCAL - case 1108: + case 1106: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5714 +//line sql.y:5706 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1110: + case 1108: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5721 +//line sql.y:5713 { yyLOCAL = &FromFirstLastClause{yyDollar[1].fromFirstLastTypeUnion()} } yyVAL.union = yyLOCAL - case 1111: + case 1109: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5727 +//line sql.y:5719 { yyLOCAL = LagExprType } yyVAL.union = yyLOCAL - case 1112: + case 1110: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5731 +//line sql.y:5723 { yyLOCAL = LeadExprType } yyVAL.union = yyLOCAL - case 1113: + case 1111: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *WindowDefinition -//line sql.y:5737 +//line sql.y:5729 { yyLOCAL = &WindowDefinition{Name: yyDollar[1].identifierCI, WindowSpec: yyDollar[4].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1114: + case 1112: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL WindowDefinitions -//line sql.y:5743 +//line sql.y:5735 { yyLOCAL = WindowDefinitions{yyDollar[1].windowDefinitionUnion()} } yyVAL.union = yyLOCAL - case 1115: + case 1113: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5747 +//line sql.y:5739 { yySLICE := (*WindowDefinitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].windowDefinitionUnion()) } - case 1116: + case 1114: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5753 +//line sql.y:5745 { yyVAL.str = "" } - case 1117: + case 1115: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5757 +//line sql.y:5749 { yyVAL.str = string(yyDollar[2].identifierCI.String()) } - case 1118: + case 1116: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5763 +//line sql.y:5755 { yyLOCAL = BoolVal(true) } yyVAL.union = yyLOCAL - case 1119: + case 1117: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5767 +//line sql.y:5759 { yyLOCAL = BoolVal(false) } yyVAL.union = yyLOCAL - case 1120: + case 1118: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5774 +//line sql.y:5766 { yyLOCAL = IsTrueOp } yyVAL.union = yyLOCAL - case 1121: + case 1119: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5778 +//line sql.y:5770 { yyLOCAL = IsNotTrueOp } yyVAL.union = yyLOCAL - case 1122: + case 1120: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5782 +//line sql.y:5774 { yyLOCAL = IsFalseOp } yyVAL.union = yyLOCAL - case 1123: + case 1121: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5786 +//line sql.y:5778 { yyLOCAL = IsNotFalseOp } yyVAL.union = yyLOCAL - case 1124: + case 1122: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5792 +//line sql.y:5784 { yyLOCAL = EqualOp } yyVAL.union = yyLOCAL - case 1125: + case 1123: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5796 +//line sql.y:5788 { yyLOCAL = LessThanOp } yyVAL.union = yyLOCAL - case 1126: + case 1124: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5800 +//line sql.y:5792 { yyLOCAL = GreaterThanOp } yyVAL.union = yyLOCAL - case 1127: + case 1125: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5804 +//line sql.y:5796 { yyLOCAL = LessEqualOp } yyVAL.union = yyLOCAL - case 1128: + case 1126: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5808 +//line sql.y:5800 { yyLOCAL = GreaterEqualOp } yyVAL.union = yyLOCAL - case 1129: + case 1127: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5812 +//line sql.y:5804 { yyLOCAL = NotEqualOp } yyVAL.union = yyLOCAL - case 1130: + case 1128: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5816 +//line sql.y:5808 { yyLOCAL = NullSafeEqualOp } yyVAL.union = yyLOCAL - case 1131: + case 1129: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5822 +//line sql.y:5814 { yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL - case 1132: + case 1130: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5826 +//line sql.y:5818 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1133: + case 1131: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5830 +//line sql.y:5822 { yyLOCAL = ListArg(yyDollar[1].str[2:]) markBindVariable(yylex, yyDollar[1].str[2:]) } yyVAL.union = yyLOCAL - case 1134: + case 1132: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Subquery -//line sql.y:5837 +//line sql.y:5829 { yyLOCAL = &Subquery{yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1135: + case 1133: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:5843 +//line sql.y:5835 { yyLOCAL = Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1136: + case 1134: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5847 +//line sql.y:5839 { yySLICE := (*Exprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].exprUnion()) } - case 1137: + case 1135: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5857 +//line sql.y:5849 { yyLOCAL = &FuncExpr{Name: yyDollar[1].identifierCI, Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1138: + case 1136: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5861 +//line sql.y:5853 { yyLOCAL = &FuncExpr{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCI, Exprs: yyDollar[5].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1139: + case 1137: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5871 +//line sql.y:5863 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("left"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1140: + case 1138: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5875 +//line sql.y:5867 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("right"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL + case 1139: + yyDollar = yyS[yypt-8 : yypt+1] + var yyLOCAL Expr +//line sql.y:5871 + { + yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} + } + yyVAL.union = yyLOCAL + case 1140: + yyDollar = yyS[yypt-6 : yypt+1] + var yyLOCAL Expr +//line sql.y:5875 + { + yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} + } + yyVAL.union = yyLOCAL case 1141: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr @@ -18539,67 +18529,67 @@ yydefault: } yyVAL.union = yyLOCAL case 1143: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:5887 { - yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} + yyLOCAL = &CaseExpr{Expr: yyDollar[2].exprUnion(), Whens: yyDollar[3].whensUnion(), Else: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1144: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5891 { - yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} + yyLOCAL = &ValuesFuncExpr{Name: yyDollar[3].colNameUnion()} } yyVAL.union = yyLOCAL case 1145: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr //line sql.y:5895 { - yyLOCAL = &CaseExpr{Expr: yyDollar[2].exprUnion(), Whens: yyDollar[3].whensUnion(), Else: yyDollar[4].exprUnion()} + yyLOCAL = &InsertExpr{Str: yyDollar[3].exprUnion(), Pos: yyDollar[5].exprUnion(), Len: yyDollar[7].exprUnion(), NewStr: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL case 1146: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr //line sql.y:5899 { - yyLOCAL = &ValuesFuncExpr{Name: yyDollar[3].colNameUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI(yyDollar[1].str)} } yyVAL.union = yyLOCAL case 1147: - yyDollar = yyS[yypt-10 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5903 +//line sql.y:5910 { - yyLOCAL = &InsertExpr{Str: yyDollar[3].exprUnion(), Pos: yyDollar[5].exprUnion(), Len: yyDollar[7].exprUnion(), NewStr: yyDollar[9].exprUnion()} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("utc_date")} } yyVAL.union = yyLOCAL case 1148: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5907 +//line sql.y:5914 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI(yyDollar[1].str)} + yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL case 1149: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5918 +//line sql.y:5920 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("utc_date")} + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("current_date")} } yyVAL.union = yyLOCAL case 1150: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5922 +//line sql.y:5924 { - yyLOCAL = yyDollar[1].exprUnion() + yyLOCAL = &FuncExpr{Name: NewIdentifierCI("curdate")} } yyVAL.union = yyLOCAL case 1151: @@ -18607,47 +18597,47 @@ yydefault: var yyLOCAL Expr //line sql.y:5928 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("current_date")} + yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("utc_time"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL case 1152: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5932 +//line sql.y:5933 { - yyLOCAL = &FuncExpr{Name: NewIdentifierCI("curdate")} + yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("curtime"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL case 1153: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5936 +//line sql.y:5938 { - yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("utc_time"), Fsp: yyDollar[2].integerUnion()} + yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("current_time"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL case 1154: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5941 +//line sql.y:5942 { - yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("curtime"), Fsp: yyDollar[2].integerUnion()} + yyLOCAL = &CountStar{} } yyVAL.union = yyLOCAL case 1155: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:5946 { - yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("current_time"), Fsp: yyDollar[2].integerUnion()} + yyLOCAL = &Count{Distinct: yyDollar[3].booleanUnion(), Args: yyDollar[4].exprsUnion()} } yyVAL.union = yyLOCAL case 1156: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:5950 { - yyLOCAL = &CountStar{} + yyLOCAL = &Max{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1157: @@ -18655,7 +18645,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5954 { - yyLOCAL = &Count{Distinct: yyDollar[3].booleanUnion(), Args: yyDollar[4].exprsUnion()} + yyLOCAL = &Min{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1158: @@ -18663,7 +18653,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5958 { - yyLOCAL = &Max{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} + yyLOCAL = &Sum{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1159: @@ -18671,23 +18661,23 @@ yydefault: var yyLOCAL Expr //line sql.y:5962 { - yyLOCAL = &Min{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} + yyLOCAL = &Avg{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL case 1160: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5966 { - yyLOCAL = &Sum{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} + yyLOCAL = &BitAnd{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1161: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:5970 { - yyLOCAL = &Avg{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion()} + yyLOCAL = &BitOr{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1162: @@ -18695,7 +18685,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5974 { - yyLOCAL = &BitAnd{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &BitXor{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1163: @@ -18703,7 +18693,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5978 { - yyLOCAL = &BitOr{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &Std{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1164: @@ -18711,7 +18701,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5982 { - yyLOCAL = &BitXor{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &StdDev{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1165: @@ -18719,7 +18709,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5986 { - yyLOCAL = &Std{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &StdPop{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1166: @@ -18727,7 +18717,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5990 { - yyLOCAL = &StdDev{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &StdSamp{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1167: @@ -18735,7 +18725,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5994 { - yyLOCAL = &StdPop{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &VarPop{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1168: @@ -18743,7 +18733,7 @@ yydefault: var yyLOCAL Expr //line sql.y:5998 { - yyLOCAL = &StdSamp{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &VarSamp{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1169: @@ -18751,15 +18741,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6002 { - yyLOCAL = &VarPop{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &Variance{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1170: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6006 { - yyLOCAL = &VarSamp{Arg: yyDollar[3].exprUnion()} + 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 1171: @@ -18767,7 +18757,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6010 { - yyLOCAL = &Variance{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &AnyValue{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1172: @@ -18775,47 +18765,47 @@ yydefault: var yyLOCAL Expr //line sql.y:6014 { - yyLOCAL = &GroupConcatExpr{Distinct: yyDollar[3].booleanUnion(), Exprs: yyDollar[4].exprsUnion(), OrderBy: yyDollar[5].orderByUnion(), Separator: yyDollar[6].str, Limit: yyDollar[7].limitUnion()} + yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprTimestampadd, Date: yyDollar[7].exprUnion(), Interval: yyDollar[5].exprUnion(), Unit: yyDollar[3].intervalTypeUnion()} } yyVAL.union = yyLOCAL case 1173: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6018 { - yyLOCAL = &AnyValue{Arg: yyDollar[3].exprUnion()} + yyLOCAL = &TimestampDiffExpr{Unit: yyDollar[3].intervalTypeUnion(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1174: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6022 { - yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprTimestampadd, Date: yyDollar[7].exprUnion(), Interval: yyDollar[5].exprUnion(), Unit: yyDollar[3].intervalTypeUnion()} + yyLOCAL = &ExtractFuncExpr{IntervalType: yyDollar[3].intervalTypeUnion(), Expr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1175: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:6026 { - yyLOCAL = &TimestampDiffExpr{Unit: yyDollar[3].intervalTypeUnion(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} + yyLOCAL = &WeightStringFuncExpr{Expr: yyDollar[3].exprUnion(), As: yyDollar[4].convertTypeUnion()} } yyVAL.union = yyLOCAL case 1176: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6030 { - yyLOCAL = &ExtractFuncExpr{IntervalType: yyDollar[3].intervalTypeUnion(), Expr: yyDollar[5].exprUnion()} + yyLOCAL = &JSONPrettyExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1177: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6034 { - yyLOCAL = &WeightStringFuncExpr{Expr: yyDollar[3].exprUnion(), As: yyDollar[4].convertTypeUnion()} + yyLOCAL = &JSONStorageFreeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1178: @@ -18823,7 +18813,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6038 { - yyLOCAL = &JSONPrettyExpr{JSONVal: yyDollar[3].exprUnion()} + yyLOCAL = &JSONStorageSizeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1179: @@ -18831,7 +18821,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6042 { - yyLOCAL = &JSONStorageFreeExpr{JSONVal: yyDollar[3].exprUnion()} + yyLOCAL = &TrimFuncExpr{TrimFuncType: LTrimType, Type: LeadingTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1180: @@ -18839,15 +18829,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6046 { - yyLOCAL = &JSONStorageSizeExpr{JSONVal: yyDollar[3].exprUnion()} + yyLOCAL = &TrimFuncExpr{TrimFuncType: RTrimType, Type: TrailingTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1181: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr //line sql.y:6050 { - yyLOCAL = &TrimFuncExpr{TrimFuncType: LTrimType, Type: LeadingTrimType, StringArg: yyDollar[3].exprUnion()} + yyLOCAL = &TrimFuncExpr{Type: yyDollar[3].trimTypeUnion(), TrimArg: yyDollar[4].exprUnion(), StringArg: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL case 1182: @@ -18855,31 +18845,31 @@ yydefault: var yyLOCAL Expr //line sql.y:6054 { - yyLOCAL = &TrimFuncExpr{TrimFuncType: RTrimType, Type: TrailingTrimType, StringArg: yyDollar[3].exprUnion()} + yyLOCAL = &TrimFuncExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1183: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6058 { - yyLOCAL = &TrimFuncExpr{Type: yyDollar[3].trimTypeUnion(), TrimArg: yyDollar[4].exprUnion(), StringArg: yyDollar[6].exprUnion()} + yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL case 1184: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6062 { - yyLOCAL = &TrimFuncExpr{StringArg: yyDollar[3].exprUnion()} + yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion(), Charset: yyDollar[5].str} } yyVAL.union = yyLOCAL case 1185: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6066 { - yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion()} + yyLOCAL = &TrimFuncExpr{TrimArg: yyDollar[3].exprUnion(), StringArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1186: @@ -18887,15 +18877,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6070 { - yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion(), Charset: yyDollar[5].str} + yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1187: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6074 { - yyLOCAL = &TrimFuncExpr{TrimArg: yyDollar[3].exprUnion(), StringArg: yyDollar[5].exprUnion()} + yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion(), Pos: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1188: @@ -18907,35 +18897,35 @@ yydefault: } yyVAL.union = yyLOCAL case 1189: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6082 { - yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion(), Pos: yyDollar[7].exprUnion()} + yyLOCAL = &LockingFunc{Type: GetLock, Name: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1190: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6086 { - yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} + yyLOCAL = &LockingFunc{Type: IsFreeLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1191: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6090 { - yyLOCAL = &LockingFunc{Type: GetLock, Name: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} + yyLOCAL = &LockingFunc{Type: IsUsedLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1192: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr //line sql.y:6094 { - yyLOCAL = &LockingFunc{Type: IsFreeLock, Name: yyDollar[3].exprUnion()} + yyLOCAL = &LockingFunc{Type: ReleaseAllLocks} } yyVAL.union = yyLOCAL case 1193: @@ -18943,47 +18933,47 @@ yydefault: var yyLOCAL Expr //line sql.y:6098 { - yyLOCAL = &LockingFunc{Type: IsUsedLock, Name: yyDollar[3].exprUnion()} + yyLOCAL = &LockingFunc{Type: ReleaseLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1194: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6102 { - yyLOCAL = &LockingFunc{Type: ReleaseAllLocks} + yyLOCAL = &JSONSchemaValidFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1195: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6106 { - yyLOCAL = &LockingFunc{Type: ReleaseLock, Name: yyDollar[3].exprUnion()} + yyLOCAL = &JSONSchemaValidationReportFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1196: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6110 { - yyLOCAL = &JSONSchemaValidFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} + yyLOCAL = &JSONArrayExpr{Params: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL case 1197: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6114 { - yyLOCAL = &JSONSchemaValidationReportFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFormatExpr{FormatType: BinaryFormat, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1198: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6118 { - yyLOCAL = &JSONArrayExpr{Params: yyDollar[3].exprsUnion()} + yyLOCAL = &GeomFormatExpr{FormatType: BinaryFormat, Geom: yyDollar[3].exprUnion(), AxisOrderOpt: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1199: @@ -18991,7 +18981,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6122 { - yyLOCAL = &GeomFormatExpr{FormatType: BinaryFormat, Geom: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFormatExpr{FormatType: TextFormat, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1200: @@ -18999,7 +18989,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6126 { - yyLOCAL = &GeomFormatExpr{FormatType: BinaryFormat, Geom: yyDollar[3].exprUnion(), AxisOrderOpt: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFormatExpr{FormatType: TextFormat, Geom: yyDollar[3].exprUnion(), AxisOrderOpt: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1201: @@ -19007,15 +18997,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6130 { - yyLOCAL = &GeomFormatExpr{FormatType: TextFormat, Geom: yyDollar[3].exprUnion()} + yyLOCAL = &GeomPropertyFuncExpr{Property: IsEmpty, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1202: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6134 { - yyLOCAL = &GeomFormatExpr{FormatType: TextFormat, Geom: yyDollar[3].exprUnion(), AxisOrderOpt: yyDollar[5].exprUnion()} + yyLOCAL = &GeomPropertyFuncExpr{Property: IsSimple, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1203: @@ -19023,7 +19013,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6138 { - yyLOCAL = &GeomPropertyFuncExpr{Property: IsEmpty, Geom: yyDollar[3].exprUnion()} + yyLOCAL = &GeomPropertyFuncExpr{Property: Dimension, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1204: @@ -19031,7 +19021,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6142 { - yyLOCAL = &GeomPropertyFuncExpr{Property: IsSimple, Geom: yyDollar[3].exprUnion()} + yyLOCAL = &GeomPropertyFuncExpr{Property: Envelope, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1205: @@ -19039,7 +19029,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6146 { - yyLOCAL = &GeomPropertyFuncExpr{Property: Dimension, Geom: yyDollar[3].exprUnion()} + yyLOCAL = &GeomPropertyFuncExpr{Property: GeometryType, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1206: @@ -19047,15 +19037,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6150 { - yyLOCAL = &GeomPropertyFuncExpr{Property: Envelope, Geom: yyDollar[3].exprUnion()} + yyLOCAL = &PointPropertyFuncExpr{Property: Latitude, Point: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1207: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6154 { - yyLOCAL = &GeomPropertyFuncExpr{Property: GeometryType, Geom: yyDollar[3].exprUnion()} + yyLOCAL = &PointPropertyFuncExpr{Property: Latitude, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1208: @@ -19063,7 +19053,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6158 { - yyLOCAL = &PointPropertyFuncExpr{Property: Latitude, Point: yyDollar[3].exprUnion()} + yyLOCAL = &PointPropertyFuncExpr{Property: Longitude, Point: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1209: @@ -19071,7 +19061,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6162 { - yyLOCAL = &PointPropertyFuncExpr{Property: Latitude, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} + yyLOCAL = &PointPropertyFuncExpr{Property: Longitude, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1210: @@ -19079,15 +19069,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6166 { - yyLOCAL = &PointPropertyFuncExpr{Property: Longitude, Point: yyDollar[3].exprUnion()} + yyLOCAL = &LinestrPropertyFuncExpr{Property: EndPoint, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1211: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6170 { - yyLOCAL = &PointPropertyFuncExpr{Property: Longitude, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} + yyLOCAL = &LinestrPropertyFuncExpr{Property: IsClosed, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1212: @@ -19095,15 +19085,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6174 { - yyLOCAL = &LinestrPropertyFuncExpr{Property: EndPoint, Linestring: yyDollar[3].exprUnion()} + yyLOCAL = &LinestrPropertyFuncExpr{Property: Length, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1213: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6178 { - yyLOCAL = &LinestrPropertyFuncExpr{Property: IsClosed, Linestring: yyDollar[3].exprUnion()} + yyLOCAL = &LinestrPropertyFuncExpr{Property: Length, Linestring: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1214: @@ -19111,7 +19101,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6182 { - yyLOCAL = &LinestrPropertyFuncExpr{Property: Length, Linestring: yyDollar[3].exprUnion()} + yyLOCAL = &LinestrPropertyFuncExpr{Property: NumPoints, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1215: @@ -19119,7 +19109,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6186 { - yyLOCAL = &LinestrPropertyFuncExpr{Property: Length, Linestring: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} + yyLOCAL = &LinestrPropertyFuncExpr{Property: PointN, Linestring: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1216: @@ -19127,23 +19117,23 @@ yydefault: var yyLOCAL Expr //line sql.y:6190 { - yyLOCAL = &LinestrPropertyFuncExpr{Property: NumPoints, Linestring: yyDollar[3].exprUnion()} + yyLOCAL = &LinestrPropertyFuncExpr{Property: StartPoint, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1217: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6194 { - yyLOCAL = &LinestrPropertyFuncExpr{Property: PointN, Linestring: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} + yyLOCAL = &PointPropertyFuncExpr{Property: XCordinate, Point: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1218: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6198 { - yyLOCAL = &LinestrPropertyFuncExpr{Property: StartPoint, Linestring: yyDollar[3].exprUnion()} + yyLOCAL = &PointPropertyFuncExpr{Property: XCordinate, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1219: @@ -19151,7 +19141,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6202 { - yyLOCAL = &PointPropertyFuncExpr{Property: XCordinate, Point: yyDollar[3].exprUnion()} + yyLOCAL = &PointPropertyFuncExpr{Property: YCordinate, Point: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1220: @@ -19159,7 +19149,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6206 { - yyLOCAL = &PointPropertyFuncExpr{Property: XCordinate, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} + yyLOCAL = &PointPropertyFuncExpr{Property: YCordinate, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1221: @@ -19167,7 +19157,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6210 { - yyLOCAL = &PointPropertyFuncExpr{Property: YCordinate, Point: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: GeometryFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1222: @@ -19175,391 +19165,391 @@ yydefault: var yyLOCAL Expr //line sql.y:6214 { - yyLOCAL = &PointPropertyFuncExpr{Property: YCordinate, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: GeometryFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1223: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6218 { - yyLOCAL = &GeomFromTextExpr{Type: GeometryFromText, WktText: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: GeometryFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1224: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6222 { - yyLOCAL = &GeomFromTextExpr{Type: GeometryFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: GeometryCollectionFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1225: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6226 { - yyLOCAL = &GeomFromTextExpr{Type: GeometryFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: GeometryCollectionFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1226: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6230 { - yyLOCAL = &GeomFromTextExpr{Type: GeometryCollectionFromText, WktText: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: GeometryCollectionFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1227: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6234 { - yyLOCAL = &GeomFromTextExpr{Type: GeometryCollectionFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: LineStringFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1228: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6238 { - yyLOCAL = &GeomFromTextExpr{Type: GeometryCollectionFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: LineStringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1229: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6242 { - yyLOCAL = &GeomFromTextExpr{Type: LineStringFromText, WktText: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: LineStringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1230: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6246 { - yyLOCAL = &GeomFromTextExpr{Type: LineStringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: MultiLinestringFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1231: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6250 { - yyLOCAL = &GeomFromTextExpr{Type: LineStringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: MultiLinestringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1232: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6254 { - yyLOCAL = &GeomFromTextExpr{Type: MultiLinestringFromText, WktText: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: MultiLinestringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1233: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6258 { - yyLOCAL = &GeomFromTextExpr{Type: MultiLinestringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: MultiPointFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1234: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6262 { - yyLOCAL = &GeomFromTextExpr{Type: MultiLinestringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: MultiPointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1235: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6266 { - yyLOCAL = &GeomFromTextExpr{Type: MultiPointFromText, WktText: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: MultiPointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1236: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6270 { - yyLOCAL = &GeomFromTextExpr{Type: MultiPointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: MultiPolygonFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1237: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6274 { - yyLOCAL = &GeomFromTextExpr{Type: MultiPointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: MultiPolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1238: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6278 { - yyLOCAL = &GeomFromTextExpr{Type: MultiPolygonFromText, WktText: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: MultiPolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1239: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6282 { - yyLOCAL = &GeomFromTextExpr{Type: MultiPolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: PointFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1240: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6286 { - yyLOCAL = &GeomFromTextExpr{Type: MultiPolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: PointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1241: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6290 { - yyLOCAL = &GeomFromTextExpr{Type: PointFromText, WktText: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: PointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1242: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6294 { - yyLOCAL = &GeomFromTextExpr{Type: PointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: PolygonFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1243: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6298 { - yyLOCAL = &GeomFromTextExpr{Type: PointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: PolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1244: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6302 { - yyLOCAL = &GeomFromTextExpr{Type: PolygonFromText, WktText: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromTextExpr{Type: PolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1245: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6306 { - yyLOCAL = &GeomFromTextExpr{Type: PolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: GeometryFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1246: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6310 { - yyLOCAL = &GeomFromTextExpr{Type: PolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: GeometryFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1247: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6314 { - yyLOCAL = &GeomFromWKBExpr{Type: GeometryFromWKB, WkbBlob: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: GeometryFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1248: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6318 { - yyLOCAL = &GeomFromWKBExpr{Type: GeometryFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: GeometryCollectionFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1249: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6322 { - yyLOCAL = &GeomFromWKBExpr{Type: GeometryFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: GeometryCollectionFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1250: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6326 { - yyLOCAL = &GeomFromWKBExpr{Type: GeometryCollectionFromWKB, WkbBlob: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: GeometryCollectionFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1251: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6330 { - yyLOCAL = &GeomFromWKBExpr{Type: GeometryCollectionFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: LineStringFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1252: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6334 { - yyLOCAL = &GeomFromWKBExpr{Type: GeometryCollectionFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: LineStringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1253: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6338 { - yyLOCAL = &GeomFromWKBExpr{Type: LineStringFromWKB, WkbBlob: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: LineStringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1254: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6342 { - yyLOCAL = &GeomFromWKBExpr{Type: LineStringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: MultiLinestringFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1255: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6346 { - yyLOCAL = &GeomFromWKBExpr{Type: LineStringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: MultiLinestringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1256: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6350 { - yyLOCAL = &GeomFromWKBExpr{Type: MultiLinestringFromWKB, WkbBlob: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: MultiLinestringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1257: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6354 { - yyLOCAL = &GeomFromWKBExpr{Type: MultiLinestringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: MultiPointFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1258: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6358 { - yyLOCAL = &GeomFromWKBExpr{Type: MultiLinestringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: MultiPointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1259: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6362 { - yyLOCAL = &GeomFromWKBExpr{Type: MultiPointFromWKB, WkbBlob: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: MultiPointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1260: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6366 { - yyLOCAL = &GeomFromWKBExpr{Type: MultiPointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: MultiPolygonFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1261: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6370 { - yyLOCAL = &GeomFromWKBExpr{Type: MultiPointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: MultiPolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1262: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6374 { - yyLOCAL = &GeomFromWKBExpr{Type: MultiPolygonFromWKB, WkbBlob: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: MultiPolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1263: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6378 { - yyLOCAL = &GeomFromWKBExpr{Type: MultiPolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: PointFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1264: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6382 { - yyLOCAL = &GeomFromWKBExpr{Type: MultiPolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: PointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1265: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6386 { - yyLOCAL = &GeomFromWKBExpr{Type: PointFromWKB, WkbBlob: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: PointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1266: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6390 { - yyLOCAL = &GeomFromWKBExpr{Type: PointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: PolygonFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1267: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6394 { - yyLOCAL = &GeomFromWKBExpr{Type: PointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: PolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1268: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6398 { - yyLOCAL = &GeomFromWKBExpr{Type: PolygonFromWKB, WkbBlob: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromWKBExpr{Type: PolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1269: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6402 { - yyLOCAL = &GeomFromWKBExpr{Type: PolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} + yyLOCAL = &PolygonPropertyFuncExpr{Property: Area, Polygon: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1270: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6406 { - yyLOCAL = &GeomFromWKBExpr{Type: PolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} + yyLOCAL = &PolygonPropertyFuncExpr{Property: Centroid, Polygon: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1271: @@ -19567,15 +19557,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6410 { - yyLOCAL = &PolygonPropertyFuncExpr{Property: Area, Polygon: yyDollar[3].exprUnion()} + yyLOCAL = &PolygonPropertyFuncExpr{Property: ExteriorRing, Polygon: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1272: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6414 { - yyLOCAL = &PolygonPropertyFuncExpr{Property: Centroid, Polygon: yyDollar[3].exprUnion()} + yyLOCAL = &PolygonPropertyFuncExpr{Property: InteriorRingN, Polygon: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1273: @@ -19583,7 +19573,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6418 { - yyLOCAL = &PolygonPropertyFuncExpr{Property: ExteriorRing, Polygon: yyDollar[3].exprUnion()} + yyLOCAL = &PolygonPropertyFuncExpr{Property: NumInteriorRings, Polygon: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1274: @@ -19591,7 +19581,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6422 { - yyLOCAL = &PolygonPropertyFuncExpr{Property: InteriorRingN, Polygon: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} + yyLOCAL = &GeomCollPropertyFuncExpr{Property: GeometryN, GeomColl: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1275: @@ -19599,47 +19589,47 @@ yydefault: var yyLOCAL Expr //line sql.y:6426 { - yyLOCAL = &PolygonPropertyFuncExpr{Property: NumInteriorRings, Polygon: yyDollar[3].exprUnion()} + yyLOCAL = &GeomCollPropertyFuncExpr{Property: NumGeometries, GeomColl: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1276: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6430 { - yyLOCAL = &GeomCollPropertyFuncExpr{Property: GeometryN, GeomColl: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} + yyLOCAL = &GeoHashFromLatLongExpr{Longitude: yyDollar[3].exprUnion(), Latitude: yyDollar[5].exprUnion(), MaxLength: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1277: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6434 { - yyLOCAL = &GeomCollPropertyFuncExpr{Property: NumGeometries, GeomColl: yyDollar[3].exprUnion()} + yyLOCAL = &GeoHashFromPointExpr{Point: yyDollar[3].exprUnion(), MaxLength: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1278: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6438 { - yyLOCAL = &GeoHashFromLatLongExpr{Longitude: yyDollar[3].exprUnion(), Latitude: yyDollar[5].exprUnion(), MaxLength: yyDollar[7].exprUnion()} + yyLOCAL = &GeomFromGeoHashExpr{GeomType: LatitudeFromHash, GeoHash: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1279: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6442 { - yyLOCAL = &GeoHashFromPointExpr{Point: yyDollar[3].exprUnion(), MaxLength: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromGeoHashExpr{GeomType: LongitudeFromHash, GeoHash: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1280: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6446 { - yyLOCAL = &GeomFromGeoHashExpr{GeomType: LatitudeFromHash, GeoHash: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromGeoHashExpr{GeomType: PointFromHash, GeoHash: yyDollar[3].exprUnion(), SridOpt: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1281: @@ -19647,7 +19637,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6450 { - yyLOCAL = &GeomFromGeoHashExpr{GeomType: LongitudeFromHash, GeoHash: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromGeoJSONExpr{GeoJSON: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1282: @@ -19655,71 +19645,71 @@ yydefault: var yyLOCAL Expr //line sql.y:6454 { - yyLOCAL = &GeomFromGeoHashExpr{GeomType: PointFromHash, GeoHash: yyDollar[3].exprUnion(), SridOpt: yyDollar[5].exprUnion()} + yyLOCAL = &GeomFromGeoJSONExpr{GeoJSON: yyDollar[3].exprUnion(), HigherDimHandlerOpt: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1283: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6458 { - yyLOCAL = &GeomFromGeoJSONExpr{GeoJSON: yyDollar[3].exprUnion()} + yyLOCAL = &GeomFromGeoJSONExpr{GeoJSON: yyDollar[3].exprUnion(), HigherDimHandlerOpt: yyDollar[5].exprUnion(), Srid: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1284: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6462 { - yyLOCAL = &GeomFromGeoJSONExpr{GeoJSON: yyDollar[3].exprUnion(), HigherDimHandlerOpt: yyDollar[5].exprUnion()} + yyLOCAL = &GeoJSONFromGeomExpr{Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1285: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6466 { - yyLOCAL = &GeomFromGeoJSONExpr{GeoJSON: yyDollar[3].exprUnion(), HigherDimHandlerOpt: yyDollar[5].exprUnion(), Srid: yyDollar[7].exprUnion()} + yyLOCAL = &GeoJSONFromGeomExpr{Geom: yyDollar[3].exprUnion(), MaxDecimalDigits: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1286: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6470 { - yyLOCAL = &GeoJSONFromGeomExpr{Geom: yyDollar[3].exprUnion()} + yyLOCAL = &GeoJSONFromGeomExpr{Geom: yyDollar[3].exprUnion(), MaxDecimalDigits: yyDollar[5].exprUnion(), Bitmask: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1287: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6474 { - yyLOCAL = &GeoJSONFromGeomExpr{Geom: yyDollar[3].exprUnion(), MaxDecimalDigits: yyDollar[5].exprUnion()} + yyLOCAL = &JSONObjectExpr{Params: yyDollar[3].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1288: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6478 { - yyLOCAL = &GeoJSONFromGeomExpr{Geom: yyDollar[3].exprUnion(), MaxDecimalDigits: yyDollar[5].exprUnion(), Bitmask: yyDollar[7].exprUnion()} + yyLOCAL = &JSONQuoteExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1289: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6482 { - yyLOCAL = &JSONObjectExpr{Params: yyDollar[3].jsonObjectParamsUnion()} + yyLOCAL = &JSONContainsExpr{Target: yyDollar[3].exprUnion(), Candidate: yyDollar[5].exprsUnion()[0], PathList: yyDollar[5].exprsUnion()[1:]} } yyVAL.union = yyLOCAL case 1290: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6486 { - yyLOCAL = &JSONQuoteExpr{StringArg: yyDollar[3].exprUnion()} + yyLOCAL = &JSONContainsPathExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), PathList: yyDollar[7].exprsUnion()} } yyVAL.union = yyLOCAL case 1291: @@ -19727,15 +19717,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6490 { - yyLOCAL = &JSONContainsExpr{Target: yyDollar[3].exprUnion(), Candidate: yyDollar[5].exprsUnion()[0], PathList: yyDollar[5].exprsUnion()[1:]} + yyLOCAL = &JSONExtractExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1292: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6494 { - yyLOCAL = &JSONContainsPathExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), PathList: yyDollar[7].exprsUnion()} + yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1293: @@ -19743,79 +19733,79 @@ yydefault: var yyLOCAL Expr //line sql.y:6498 { - yyLOCAL = &JSONExtractExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1294: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6502 { - yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONOverlapsExpr{JSONDoc1: yyDollar[3].exprUnion(), JSONDoc2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1295: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6506 { - yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} + yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL case 1296: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr //line sql.y:6510 { - yyLOCAL = &JSONOverlapsExpr{JSONDoc1: yyDollar[3].exprUnion(), JSONDoc2: yyDollar[5].exprUnion()} + 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 1297: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr //line sql.y:6514 { - yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion()} + yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion()} } yyVAL.union = yyLOCAL case 1298: - yyDollar = yyS[yypt-10 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6518 { - yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion(), EscapeChar: yyDollar[9].exprsUnion()[0], PathList: yyDollar[9].exprsUnion()[1:]} + yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL case 1299: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6522 { - yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion()} + yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL case 1300: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr //line sql.y:6526 { - yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} + 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 1301: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6530 { - yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} + yyLOCAL = &JSONAttributesExpr{Type: DepthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1302: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6534 { - yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion(), ErrorOnResponse: yyDollar[8].jtOnResponseUnion()} + yyLOCAL = &JSONAttributesExpr{Type: ValidAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1303: @@ -19823,7 +19813,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6538 { - yyLOCAL = &JSONAttributesExpr{Type: DepthAttributeType, JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONAttributesExpr{Type: TypeAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1304: @@ -19831,23 +19821,23 @@ yydefault: var yyLOCAL Expr //line sql.y:6542 { - yyLOCAL = &JSONAttributesExpr{Type: ValidAttributeType, JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1305: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6546 { - yyLOCAL = &JSONAttributesExpr{Type: TypeAttributeType, JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1306: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6550 { - yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayAppendType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1307: @@ -19855,7 +19845,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6554 { - yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1308: @@ -19863,7 +19853,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6558 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayAppendType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1309: @@ -19871,7 +19861,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6562 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONReplaceType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1310: @@ -19879,7 +19869,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6566 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONValueModifierExpr{Type: JSONSetType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL case 1311: @@ -19887,7 +19877,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6570 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONReplaceType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONValueMergeExpr{Type: JSONMergeType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1312: @@ -19895,7 +19885,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6574 { - yyLOCAL = &JSONValueModifierExpr{Type: JSONSetType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} + yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePatchType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1313: @@ -19903,7 +19893,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6578 { - yyLOCAL = &JSONValueMergeExpr{Type: JSONMergeType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePreserveType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1314: @@ -19911,23 +19901,23 @@ yydefault: var yyLOCAL Expr //line sql.y:6582 { - yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePatchType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONRemoveExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL case 1315: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6586 { - yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePreserveType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} + yyLOCAL = &JSONUnquoteExpr{JSONValue: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL case 1316: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr //line sql.y:6590 { - yyLOCAL = &JSONRemoveExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} + yyLOCAL = &MultiPolygonExpr{PolygonParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL case 1317: @@ -19935,7 +19925,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6594 { - yyLOCAL = &JSONUnquoteExpr{JSONValue: yyDollar[3].exprUnion()} + yyLOCAL = &MultiPointExpr{PointParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL case 1318: @@ -19943,7 +19933,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6598 { - yyLOCAL = &MultiPolygonExpr{PolygonParams: yyDollar[3].exprsUnion()} + yyLOCAL = &MultiLinestringExpr{LinestringParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL case 1319: @@ -19951,7 +19941,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6602 { - yyLOCAL = &MultiPointExpr{PointParams: yyDollar[3].exprsUnion()} + yyLOCAL = &PolygonExpr{LinestringParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL case 1320: @@ -19959,15 +19949,15 @@ yydefault: var yyLOCAL Expr //line sql.y:6606 { - yyLOCAL = &MultiLinestringExpr{LinestringParams: yyDollar[3].exprsUnion()} + yyLOCAL = &LineStringExpr{PointParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL case 1321: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6610 { - yyLOCAL = &PolygonExpr{LinestringParams: yyDollar[3].exprsUnion()} + yyLOCAL = &PointExpr{XCordinate: yyDollar[3].exprUnion(), YCordinate: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL case 1322: @@ -19975,7 +19965,7 @@ yydefault: var yyLOCAL Expr //line sql.y:6614 { - yyLOCAL = &LineStringExpr{PointParams: yyDollar[3].exprsUnion()} + yyLOCAL = &ArgumentLessWindowExpr{Type: yyDollar[1].argumentLessWindowExprTypeUnion(), OverClause: yyDollar[4].overClauseUnion()} } yyVAL.union = yyLOCAL case 1323: @@ -19983,31 +19973,31 @@ yydefault: var yyLOCAL Expr //line sql.y:6618 { - yyLOCAL = &PointExpr{XCordinate: yyDollar[3].exprUnion(), YCordinate: yyDollar[5].exprUnion()} + yyLOCAL = &FirstOrLastValueExpr{Type: yyDollar[1].firstOrLastValueExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL case 1324: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr //line sql.y:6622 { - yyLOCAL = &ArgumentLessWindowExpr{Type: yyDollar[1].argumentLessWindowExprTypeUnion(), OverClause: yyDollar[4].overClauseUnion()} + yyLOCAL = &NtileExpr{N: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL case 1325: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr //line sql.y:6626 { - yyLOCAL = &FirstOrLastValueExpr{Type: yyDollar[1].firstOrLastValueExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} + 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 1326: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6630 { - yyLOCAL = &NtileExpr{N: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} + yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL case 1327: @@ -20015,23 +20005,23 @@ yydefault: var yyLOCAL Expr //line sql.y:6634 { - yyLOCAL = &NTHValueExpr{Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), FromFirstLastClause: yyDollar[7].fromFirstLastClauseUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} + 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 1328: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6638 { - yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} + yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprAdddate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} } yyVAL.union = yyLOCAL case 1329: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr //line sql.y:6642 { - 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()} + yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprAdddate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[5].exprUnion(), Unit: IntervalNone} } yyVAL.union = yyLOCAL case 1330: @@ -20039,346 +20029,346 @@ yydefault: var yyLOCAL Expr //line sql.y:6646 { - yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprAdddate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} + yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprDateAdd, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} } yyVAL.union = yyLOCAL case 1331: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6650 { - yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprAdddate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[5].exprUnion(), Unit: IntervalNone} + yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprDateSub, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} } yyVAL.union = yyLOCAL case 1332: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr //line sql.y:6654 - { - yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprDateAdd, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} - } - yyVAL.union = yyLOCAL - case 1333: - yyDollar = yyS[yypt-8 : yypt+1] - var yyLOCAL Expr -//line sql.y:6658 - { - yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprDateSub, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} - } - yyVAL.union = yyLOCAL - case 1334: - yyDollar = yyS[yypt-8 : yypt+1] - var yyLOCAL Expr -//line sql.y:6662 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprSubdate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1335: + case 1333: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6666 +//line sql.y:6658 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprSubdate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[5].exprUnion(), Unit: IntervalNone} } yyVAL.union = yyLOCAL - case 1340: + case 1338: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6676 +//line sql.y:6668 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1341: + case 1339: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6680 +//line sql.y:6672 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1342: + case 1340: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6684 +//line sql.y:6676 { yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL - case 1343: + case 1341: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6688 +//line sql.y:6680 { yyLOCAL = parseBindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1344: + case 1342: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6693 +//line sql.y:6685 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1345: + case 1343: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6697 +//line sql.y:6689 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1346: + case 1344: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6703 +//line sql.y:6695 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1347: + case 1345: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6707 +//line sql.y:6699 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1348: + case 1346: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6711 +//line sql.y:6703 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1349: + case 1347: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6715 +//line sql.y:6707 { 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 1350: + case 1348: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6719 +//line sql.y:6711 { // 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 1351: + case 1349: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6724 +//line sql.y:6716 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1352: + case 1350: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6728 +//line sql.y:6720 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), MatchType: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1353: + case 1351: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6732 +//line sql.y:6724 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1354: + case 1352: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6736 +//line sql.y:6728 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1355: + case 1353: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6740 +//line sql.y:6732 { 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 1356: + case 1354: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6744 +//line sql.y:6736 { // 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 1357: + case 1355: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6749 +//line sql.y:6741 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1358: + case 1356: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6753 +//line sql.y:6745 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1359: + case 1357: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6757 +//line sql.y:6749 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1360: + case 1358: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6761 +//line sql.y:6753 { // 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 1361: + case 1359: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6768 +//line sql.y:6760 { yyLOCAL = &ExtractValueExpr{Fragment: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1362: + case 1360: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6772 +//line sql.y:6764 { yyLOCAL = &UpdateXMLExpr{Target: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion(), NewXML: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1363: + case 1361: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6778 +//line sql.y:6770 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatBytesType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1364: + case 1362: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6782 +//line sql.y:6774 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatPicoTimeType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1365: + case 1363: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6786 +//line sql.y:6778 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsCurrentThreadIDType} } yyVAL.union = yyLOCAL - case 1366: + case 1364: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6790 +//line sql.y:6782 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsThreadIDType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1367: + case 1365: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6796 +//line sql.y:6788 { yyLOCAL = >IDFuncExpr{Type: GTIDSubsetType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1368: + case 1366: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6800 +//line sql.y:6792 { yyLOCAL = >IDFuncExpr{Type: GTIDSubtractType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1369: + case 1367: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6804 +//line sql.y:6796 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1370: + case 1368: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6808 +//line sql.y:6800 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1371: + case 1369: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6812 +//line sql.y:6804 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1372: + case 1370: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6816 +//line sql.y:6808 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1373: + case 1371: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6820 +//line sql.y:6812 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion(), Channel: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1374: + case 1372: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6825 +//line sql.y:6817 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1375: + case 1373: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6829 +//line sql.y:6821 { yyLOCAL = yyDollar[2].convertTypeUnion() } yyVAL.union = yyLOCAL + case 1374: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL IntervalType +//line sql.y:6827 + { + yyLOCAL = IntervalDayHour + } + yyVAL.union = yyLOCAL + case 1375: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL IntervalType +//line sql.y:6831 + { + yyLOCAL = IntervalDayMicrosecond + } + yyVAL.union = yyLOCAL case 1376: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType //line sql.y:6835 { - yyLOCAL = IntervalDayHour + yyLOCAL = IntervalDayMinute } yyVAL.union = yyLOCAL case 1377: @@ -20386,7 +20376,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6839 { - yyLOCAL = IntervalDayMicrosecond + yyLOCAL = IntervalDaySecond } yyVAL.union = yyLOCAL case 1378: @@ -20394,7 +20384,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6843 { - yyLOCAL = IntervalDayMinute + yyLOCAL = IntervalHourMicrosecond } yyVAL.union = yyLOCAL case 1379: @@ -20402,7 +20392,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6847 { - yyLOCAL = IntervalDaySecond + yyLOCAL = IntervalHourMinute } yyVAL.union = yyLOCAL case 1380: @@ -20410,7 +20400,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6851 { - yyLOCAL = IntervalHourMicrosecond + yyLOCAL = IntervalHourSecond } yyVAL.union = yyLOCAL case 1381: @@ -20418,7 +20408,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6855 { - yyLOCAL = IntervalHourMinute + yyLOCAL = IntervalMinuteMicrosecond } yyVAL.union = yyLOCAL case 1382: @@ -20426,7 +20416,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6859 { - yyLOCAL = IntervalHourSecond + yyLOCAL = IntervalMinuteSecond } yyVAL.union = yyLOCAL case 1383: @@ -20434,7 +20424,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6863 { - yyLOCAL = IntervalMinuteMicrosecond + yyLOCAL = IntervalSecondMicrosecond } yyVAL.union = yyLOCAL case 1384: @@ -20442,7 +20432,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6867 { - yyLOCAL = IntervalMinuteSecond + yyLOCAL = IntervalYearMonth } yyVAL.union = yyLOCAL case 1385: @@ -20450,7 +20440,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6871 { - yyLOCAL = IntervalSecondMicrosecond + yyLOCAL = IntervalDay } yyVAL.union = yyLOCAL case 1386: @@ -20458,7 +20448,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6875 { - yyLOCAL = IntervalYearMonth + yyLOCAL = IntervalWeek } yyVAL.union = yyLOCAL case 1387: @@ -20466,7 +20456,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6879 { - yyLOCAL = IntervalDay + yyLOCAL = IntervalHour } yyVAL.union = yyLOCAL case 1388: @@ -20474,7 +20464,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6883 { - yyLOCAL = IntervalWeek + yyLOCAL = IntervalMinute } yyVAL.union = yyLOCAL case 1389: @@ -20482,7 +20472,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6887 { - yyLOCAL = IntervalHour + yyLOCAL = IntervalMonth } yyVAL.union = yyLOCAL case 1390: @@ -20490,7 +20480,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6891 { - yyLOCAL = IntervalMinute + yyLOCAL = IntervalQuarter } yyVAL.union = yyLOCAL case 1391: @@ -20498,7 +20488,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6895 { - yyLOCAL = IntervalMonth + yyLOCAL = IntervalSecond } yyVAL.union = yyLOCAL case 1392: @@ -20506,7 +20496,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6899 { - yyLOCAL = IntervalQuarter + yyLOCAL = IntervalMicrosecond } yyVAL.union = yyLOCAL case 1393: @@ -20514,23 +20504,23 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6903 { - yyLOCAL = IntervalSecond + yyLOCAL = IntervalYear } yyVAL.union = yyLOCAL case 1394: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6907 +//line sql.y:6909 { - yyLOCAL = IntervalMicrosecond + yyLOCAL = IntervalDay } yyVAL.union = yyLOCAL case 1395: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6911 +//line sql.y:6913 { - yyLOCAL = IntervalYear + yyLOCAL = IntervalWeek } yyVAL.union = yyLOCAL case 1396: @@ -20538,7 +20528,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6917 { - yyLOCAL = IntervalDay + yyLOCAL = IntervalHour } yyVAL.union = yyLOCAL case 1397: @@ -20546,7 +20536,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6921 { - yyLOCAL = IntervalWeek + yyLOCAL = IntervalMinute } yyVAL.union = yyLOCAL case 1398: @@ -20554,7 +20544,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6925 { - yyLOCAL = IntervalHour + yyLOCAL = IntervalMonth } yyVAL.union = yyLOCAL case 1399: @@ -20562,7 +20552,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6929 { - yyLOCAL = IntervalMinute + yyLOCAL = IntervalQuarter } yyVAL.union = yyLOCAL case 1400: @@ -20570,7 +20560,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6933 { - yyLOCAL = IntervalMonth + yyLOCAL = IntervalSecond } yyVAL.union = yyLOCAL case 1401: @@ -20578,7 +20568,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6937 { - yyLOCAL = IntervalQuarter + yyLOCAL = IntervalMicrosecond } yyVAL.union = yyLOCAL case 1402: @@ -20586,7 +20576,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6941 { - yyLOCAL = IntervalSecond + yyLOCAL = IntervalYear } yyVAL.union = yyLOCAL case 1403: @@ -20594,7 +20584,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6945 { - yyLOCAL = IntervalMicrosecond + yyLOCAL = IntervalDay } yyVAL.union = yyLOCAL case 1404: @@ -20602,7 +20592,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6949 { - yyLOCAL = IntervalYear + yyLOCAL = IntervalWeek } yyVAL.union = yyLOCAL case 1405: @@ -20610,7 +20600,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6953 { - yyLOCAL = IntervalDay + yyLOCAL = IntervalHour } yyVAL.union = yyLOCAL case 1406: @@ -20618,7 +20608,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6957 { - yyLOCAL = IntervalWeek + yyLOCAL = IntervalMinute } yyVAL.union = yyLOCAL case 1407: @@ -20626,7 +20616,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6961 { - yyLOCAL = IntervalHour + yyLOCAL = IntervalMonth } yyVAL.union = yyLOCAL case 1408: @@ -20634,7 +20624,7 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6965 { - yyLOCAL = IntervalMinute + yyLOCAL = IntervalQuarter } yyVAL.union = yyLOCAL case 1409: @@ -20642,444 +20632,428 @@ yydefault: var yyLOCAL IntervalType //line sql.y:6969 { - yyLOCAL = IntervalMonth + yyLOCAL = IntervalSecond } yyVAL.union = yyLOCAL case 1410: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType //line sql.y:6973 - { - yyLOCAL = IntervalQuarter - } - yyVAL.union = yyLOCAL - case 1411: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL IntervalType -//line sql.y:6977 - { - yyLOCAL = IntervalSecond - } - yyVAL.union = yyLOCAL - case 1412: - yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL IntervalType -//line sql.y:6981 { yyLOCAL = IntervalMicrosecond } yyVAL.union = yyLOCAL - case 1413: + case 1411: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6985 +//line sql.y:6977 { yyLOCAL = IntervalYear } yyVAL.union = yyLOCAL - case 1416: + case 1414: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:6995 +//line sql.y:6987 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1417: + case 1415: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int -//line sql.y:6999 +//line sql.y:6991 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1418: + case 1416: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:7003 +//line sql.y:6995 { yyLOCAL = convertStringToInt(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1419: + case 1417: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7013 +//line sql.y:7005 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("if"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1420: + case 1418: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7017 +//line sql.y:7009 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("database"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1421: + case 1419: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7021 +//line sql.y:7013 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("schema"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1422: + case 1420: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7025 +//line sql.y:7017 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("mod"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1423: + case 1421: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7029 +//line sql.y:7021 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("replace"), Exprs: yyDollar[3].selectExprsUnion()} } yyVAL.union = yyLOCAL - case 1424: + case 1422: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7035 +//line sql.y:7027 { yyLOCAL = NoOption } yyVAL.union = yyLOCAL - case 1425: + case 1423: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7039 +//line sql.y:7031 { yyLOCAL = BooleanModeOpt } yyVAL.union = yyLOCAL - case 1426: + case 1424: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7043 +//line sql.y:7035 { yyLOCAL = NaturalLanguageModeOpt } yyVAL.union = yyLOCAL - case 1427: + case 1425: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7047 +//line sql.y:7039 { yyLOCAL = NaturalLanguageModeWithQueryExpansionOpt } yyVAL.union = yyLOCAL - case 1428: + case 1426: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7051 +//line sql.y:7043 { yyLOCAL = QueryExpansionOpt } yyVAL.union = yyLOCAL - case 1429: + case 1427: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7057 +//line sql.y:7049 { yyVAL.str = string(yyDollar[1].identifierCI.String()) } - case 1430: + case 1428: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7061 +//line sql.y:7053 { yyVAL.str = string(yyDollar[1].str) } - case 1431: + case 1429: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7065 +//line sql.y:7057 { yyVAL.str = string(yyDollar[1].str) } - case 1432: + case 1430: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7071 +//line sql.y:7063 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1433: + case 1431: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7075 +//line sql.y:7067 { yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: NewIntLiteral(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 1434: + case 1432: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7079 +//line sql.y:7071 { yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: NewIntLiteral(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 1435: + case 1433: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7085 +//line sql.y:7077 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1436: + case 1434: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7089 +//line sql.y:7081 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].columnCharset} } yyVAL.union = yyLOCAL - case 1437: + case 1435: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7093 +//line sql.y:7085 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1438: + case 1436: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7097 +//line sql.y:7089 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1439: + case 1437: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7101 +//line sql.y:7093 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} yyLOCAL.Length = yyDollar[2].LengthScaleOption.Length yyLOCAL.Scale = yyDollar[2].LengthScaleOption.Scale } yyVAL.union = yyLOCAL - case 1440: + case 1438: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7107 +//line sql.y:7099 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1441: + case 1439: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7111 +//line sql.y:7103 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1442: + case 1440: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7115 +//line sql.y:7107 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1443: + case 1441: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7119 +//line sql.y:7111 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1444: + case 1442: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7123 +//line sql.y:7115 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1445: + case 1443: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7127 +//line sql.y:7119 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1446: + case 1444: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7131 +//line sql.y:7123 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1447: + case 1445: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7135 +//line sql.y:7127 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()} } yyVAL.union = yyLOCAL - case 1448: + case 1446: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7139 +//line sql.y:7131 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1449: + case 1447: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7143 +//line sql.y:7135 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1450: + case 1448: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7149 +//line sql.y:7141 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1451: + case 1449: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:7153 +//line sql.y:7145 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1452: + case 1450: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:7158 +//line sql.y:7150 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1453: + case 1451: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7162 +//line sql.y:7154 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1454: + case 1452: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7167 +//line sql.y:7159 { yyVAL.str = string("") } - case 1455: + case 1453: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7171 +//line sql.y:7163 { yyVAL.str = encodeSQLString(yyDollar[2].str) } - case 1456: + case 1454: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*When -//line sql.y:7177 +//line sql.y:7169 { yyLOCAL = []*When{yyDollar[1].whenUnion()} } yyVAL.union = yyLOCAL - case 1457: + case 1455: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7181 +//line sql.y:7173 { yySLICE := (*[]*When)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].whenUnion()) } - case 1458: + case 1456: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *When -//line sql.y:7187 +//line sql.y:7179 { yyLOCAL = &When{Cond: yyDollar[2].exprUnion(), Val: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1459: + case 1457: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:7192 +//line sql.y:7184 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1460: + case 1458: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:7196 +//line sql.y:7188 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1461: + case 1459: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:7202 +//line sql.y:7194 { yyLOCAL = &ColName{Name: yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1462: + case 1460: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:7206 +//line sql.y:7198 { yyLOCAL = &ColName{Name: NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 1463: + case 1461: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColName -//line sql.y:7210 +//line sql.y:7202 { yyLOCAL = &ColName{Qualifier: TableName{Name: yyDollar[1].identifierCS}, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1464: + case 1462: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ColName -//line sql.y:7214 +//line sql.y:7206 { yyLOCAL = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}, Name: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 1465: + case 1463: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7220 +//line sql.y:7212 { yyLOCAL = yyDollar[1].colNameUnion() } yyVAL.union = yyLOCAL - case 1466: + case 1464: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7224 +//line sql.y:7216 { yyLOCAL = &Offset{V: convertStringToInt(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1467: + case 1465: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7230 +//line sql.y:7222 { // TODO(sougou): Deprecate this construct. if yyDollar[1].identifierCI.Lowered() != "value" { @@ -21089,426 +21063,426 @@ yydefault: yyLOCAL = NewIntLiteral("1") } yyVAL.union = yyLOCAL - case 1468: + case 1466: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:7239 +//line sql.y:7231 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1469: + case 1467: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:7243 +//line sql.y:7235 { yyLOCAL = parseBindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1470: + case 1468: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:7248 +//line sql.y:7240 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1471: + case 1469: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Exprs -//line sql.y:7252 +//line sql.y:7244 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1472: + case 1470: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:7257 +//line sql.y:7249 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1473: + case 1471: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:7261 +//line sql.y:7253 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1474: + case 1472: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *NamedWindow -//line sql.y:7267 +//line sql.y:7259 { yyLOCAL = &NamedWindow{yyDollar[2].windowDefinitionsUnion()} } yyVAL.union = yyLOCAL - case 1475: + case 1473: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:7273 +//line sql.y:7265 { yyLOCAL = NamedWindows{yyDollar[1].namedWindowUnion()} } yyVAL.union = yyLOCAL - case 1476: + case 1474: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7277 +//line sql.y:7269 { yySLICE := (*NamedWindows)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].namedWindowUnion()) } - case 1477: + case 1475: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:7282 +//line sql.y:7274 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1478: + case 1476: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:7286 +//line sql.y:7278 { yyLOCAL = yyDollar[1].namedWindowsUnion() } yyVAL.union = yyLOCAL - case 1479: + case 1477: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderBy -//line sql.y:7291 +//line sql.y:7283 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1480: + case 1478: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:7295 +//line sql.y:7287 { yyLOCAL = yyDollar[1].orderByUnion() } yyVAL.union = yyLOCAL - case 1481: + case 1479: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL OrderBy -//line sql.y:7301 +//line sql.y:7293 { yyLOCAL = yyDollar[3].orderByUnion() } yyVAL.union = yyLOCAL - case 1482: + case 1480: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:7307 +//line sql.y:7299 { yyLOCAL = OrderBy{yyDollar[1].orderUnion()} } yyVAL.union = yyLOCAL - case 1483: + case 1481: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7311 +//line sql.y:7303 { yySLICE := (*OrderBy)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].orderUnion()) } - case 1484: + case 1482: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Order -//line sql.y:7317 +//line sql.y:7309 { yyLOCAL = &Order{Expr: yyDollar[1].exprUnion(), Direction: yyDollar[2].orderDirectionUnion()} } yyVAL.union = yyLOCAL - case 1485: + case 1483: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:7322 +//line sql.y:7314 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1486: + case 1484: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:7326 +//line sql.y:7318 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1487: + case 1485: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:7330 +//line sql.y:7322 { yyLOCAL = DescOrder } yyVAL.union = yyLOCAL - case 1488: + case 1486: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Limit -//line sql.y:7335 +//line sql.y:7327 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1489: + case 1487: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Limit -//line sql.y:7339 +//line sql.y:7331 { yyLOCAL = yyDollar[1].limitUnion() } yyVAL.union = yyLOCAL - case 1490: + case 1488: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Limit -//line sql.y:7345 +//line sql.y:7337 { yyLOCAL = &Limit{Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1491: + case 1489: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:7349 +//line sql.y:7341 { yyLOCAL = &Limit{Offset: yyDollar[2].exprUnion(), Rowcount: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1492: + case 1490: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:7353 +//line sql.y:7345 { yyLOCAL = &Limit{Offset: yyDollar[4].exprUnion(), Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1493: + case 1491: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7358 +//line sql.y:7350 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1494: + case 1492: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7362 +//line sql.y:7354 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1495: + case 1493: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7366 +//line sql.y:7358 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1496: + case 1494: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7370 +//line sql.y:7362 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1497: + case 1495: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7374 +//line sql.y:7366 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1498: + case 1496: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7381 +//line sql.y:7373 { yyLOCAL = &LockOption{Type: DefaultType} } yyVAL.union = yyLOCAL - case 1499: + case 1497: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7385 +//line sql.y:7377 { yyLOCAL = &LockOption{Type: NoneType} } yyVAL.union = yyLOCAL - case 1500: + case 1498: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7389 +//line sql.y:7381 { yyLOCAL = &LockOption{Type: SharedType} } yyVAL.union = yyLOCAL - case 1501: + case 1499: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7393 +//line sql.y:7385 { yyLOCAL = &LockOption{Type: ExclusiveType} } yyVAL.union = yyLOCAL - case 1502: + case 1500: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7399 +//line sql.y:7391 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1503: + case 1501: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7403 +//line sql.y:7395 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1504: + case 1502: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7407 +//line sql.y:7399 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1505: + case 1503: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7411 +//line sql.y:7403 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1506: + case 1504: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7416 +//line sql.y:7408 { yyVAL.str = "" } - case 1507: + case 1505: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7420 +//line sql.y:7412 { yyVAL.str = string(yyDollar[3].str) } - case 1508: + case 1506: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7424 +//line sql.y:7416 { yyVAL.str = string(yyDollar[3].str) } - case 1509: + case 1507: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7428 +//line sql.y:7420 { yyVAL.str = string(yyDollar[3].str) } - case 1510: + case 1508: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7433 +//line sql.y:7425 { yyVAL.str = "" } - case 1511: + case 1509: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7437 +//line sql.y:7429 { yyVAL.str = yyDollar[3].str } - case 1512: + case 1510: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7443 +//line sql.y:7435 { yyVAL.str = string(yyDollar[1].str) } - case 1513: + case 1511: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7447 +//line sql.y:7439 { yyVAL.str = string(yyDollar[1].str) } - case 1514: + case 1512: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7452 +//line sql.y:7444 { yyVAL.str = "" } - case 1515: + case 1513: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:7456 +//line sql.y:7448 { yyVAL.str = yyDollar[2].str } - case 1516: + case 1514: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7461 +//line sql.y:7453 { yyVAL.str = "cascaded" } - case 1517: + case 1515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7465 +//line sql.y:7457 { yyVAL.str = string(yyDollar[1].str) } - case 1518: + case 1516: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7469 +//line sql.y:7461 { yyVAL.str = string(yyDollar[1].str) } - case 1519: + case 1517: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Definer -//line sql.y:7474 +//line sql.y:7466 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1520: + case 1518: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:7478 +//line sql.y:7470 { yyLOCAL = yyDollar[3].definerUnion() } yyVAL.union = yyLOCAL - case 1521: + case 1519: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Definer -//line sql.y:7484 +//line sql.y:7476 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1522: + case 1520: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:7490 +//line sql.y:7482 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1523: + case 1521: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Definer -//line sql.y:7496 +//line sql.y:7488 { yyLOCAL = &Definer{ Name: yyDollar[1].str, @@ -21516,409 +21490,409 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1524: + case 1522: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7505 +//line sql.y:7497 { yyVAL.str = encodeSQLString(yyDollar[1].str) } - case 1525: + case 1523: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7509 +//line sql.y:7501 { yyVAL.str = formatIdentifier(yyDollar[1].str) } - case 1526: + case 1524: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7514 +//line sql.y:7506 { yyVAL.str = "" } - case 1527: + case 1525: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7518 +//line sql.y:7510 { yyVAL.str = formatAddress(yyDollar[1].str) } - case 1528: + case 1526: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Lock -//line sql.y:7524 +//line sql.y:7516 { yyLOCAL = ForUpdateLock } yyVAL.union = yyLOCAL - case 1529: + case 1527: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Lock -//line sql.y:7528 +//line sql.y:7520 { yyLOCAL = ForUpdateLockNoWait } yyVAL.union = yyLOCAL - case 1530: + case 1528: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Lock -//line sql.y:7532 +//line sql.y:7524 { yyLOCAL = ForUpdateLockSkipLocked } yyVAL.union = yyLOCAL - case 1531: + case 1529: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Lock -//line sql.y:7536 +//line sql.y:7528 { yyLOCAL = ForShareLock } yyVAL.union = yyLOCAL - case 1532: + case 1530: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Lock -//line sql.y:7540 +//line sql.y:7532 { yyLOCAL = ForShareLockNoWait } yyVAL.union = yyLOCAL - case 1533: + case 1531: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Lock -//line sql.y:7544 +//line sql.y:7536 { yyLOCAL = ForShareLockSkipLocked } yyVAL.union = yyLOCAL - case 1534: + case 1532: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Lock -//line sql.y:7548 +//line sql.y:7540 { yyLOCAL = ShareModeLock } yyVAL.union = yyLOCAL - case 1535: + case 1533: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:7554 +//line sql.y:7546 { 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 1536: + case 1534: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:7558 +//line sql.y:7550 { yyLOCAL = &SelectInto{Type: IntoDumpfile, FileName: encodeSQLString(yyDollar[3].str), Charset: ColumnCharset{}, FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1537: + case 1535: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:7562 +//line sql.y:7554 { yyLOCAL = &SelectInto{Type: IntoOutfile, FileName: encodeSQLString(yyDollar[3].str), Charset: yyDollar[4].columnCharset, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1538: + case 1536: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7567 +//line sql.y:7559 { yyVAL.str = "" } - case 1539: + case 1537: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7571 +//line sql.y:7563 { yyVAL.str = " format csv" + yyDollar[3].str } - case 1540: + case 1538: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7575 +//line sql.y:7567 { yyVAL.str = " format text" + yyDollar[3].str } - case 1541: + case 1539: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7580 +//line sql.y:7572 { yyVAL.str = "" } - case 1542: + case 1540: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7584 +//line sql.y:7576 { yyVAL.str = " header" } - case 1543: + case 1541: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7589 +//line sql.y:7581 { yyVAL.str = "" } - case 1544: + case 1542: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7593 +//line sql.y:7585 { yyVAL.str = " manifest on" } - case 1545: + case 1543: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7597 +//line sql.y:7589 { yyVAL.str = " manifest off" } - case 1546: + case 1544: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7602 +//line sql.y:7594 { yyVAL.str = "" } - case 1547: + case 1545: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7606 +//line sql.y:7598 { yyVAL.str = " overwrite on" } - case 1548: + case 1546: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7610 +//line sql.y:7602 { yyVAL.str = " overwrite off" } - case 1549: + case 1547: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7616 +//line sql.y:7608 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1550: + case 1548: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7621 +//line sql.y:7613 { yyVAL.str = "" } - case 1551: + case 1549: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7625 +//line sql.y:7617 { yyVAL.str = " lines" + yyDollar[2].str } - case 1552: + case 1550: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7631 +//line sql.y:7623 { yyVAL.str = yyDollar[1].str } - case 1553: + case 1551: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7635 +//line sql.y:7627 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1554: + case 1552: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7641 +//line sql.y:7633 { yyVAL.str = " starting by " + encodeSQLString(yyDollar[3].str) } - case 1555: + case 1553: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7645 +//line sql.y:7637 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1556: + case 1554: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7650 +//line sql.y:7642 { yyVAL.str = "" } - case 1557: + case 1555: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7654 +//line sql.y:7646 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str } - case 1558: + case 1556: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7660 +//line sql.y:7652 { yyVAL.str = yyDollar[1].str } - case 1559: + case 1557: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7664 +//line sql.y:7656 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1560: + case 1558: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7670 +//line sql.y:7662 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1561: + case 1559: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:7674 +//line sql.y:7666 { yyVAL.str = yyDollar[1].str + " enclosed by " + encodeSQLString(yyDollar[4].str) } - case 1562: + case 1560: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7678 +//line sql.y:7670 { yyVAL.str = " escaped by " + encodeSQLString(yyDollar[3].str) } - case 1563: + case 1561: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7683 +//line sql.y:7675 { yyVAL.str = "" } - case 1564: + case 1562: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7687 +//line sql.y:7679 { yyVAL.str = " optionally" } - case 1565: + case 1563: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Insert -//line sql.y:7700 +//line sql.y:7692 { yyLOCAL = &Insert{Rows: yyDollar[2].valuesUnion()} } yyVAL.union = yyLOCAL - case 1566: + case 1564: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Insert -//line sql.y:7704 +//line sql.y:7696 { yyLOCAL = &Insert{Rows: yyDollar[1].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1567: + case 1565: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *Insert -//line sql.y:7708 +//line sql.y:7700 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[5].valuesUnion()} } yyVAL.union = yyLOCAL - case 1568: + case 1566: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Insert -//line sql.y:7712 +//line sql.y:7704 { yyLOCAL = &Insert{Columns: []IdentifierCI{}, Rows: yyDollar[4].valuesUnion()} } yyVAL.union = yyLOCAL - case 1569: + case 1567: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Insert -//line sql.y:7716 +//line sql.y:7708 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[4].selStmtUnion()} } yyVAL.union = yyLOCAL - case 1570: + case 1568: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:7722 +//line sql.y:7714 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1571: + case 1569: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:7726 +//line sql.y:7718 { yyLOCAL = Columns{yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1572: + case 1570: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7730 +//line sql.y:7722 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 1573: + case 1571: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:7734 +//line sql.y:7726 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[5].identifierCI) } - case 1574: + case 1572: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7739 +//line sql.y:7731 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1575: + case 1573: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7743 +//line sql.y:7735 { yyLOCAL = yyDollar[5].updateExprsUnion() } yyVAL.union = yyLOCAL - case 1576: + case 1574: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Values -//line sql.y:7749 +//line sql.y:7741 { yyLOCAL = Values{yyDollar[1].valTupleUnion()} } yyVAL.union = yyLOCAL - case 1577: + case 1575: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7753 +//line sql.y:7745 { yySLICE := (*Values)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].valTupleUnion()) } - case 1578: + case 1576: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7759 +//line sql.y:7751 { yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL - case 1579: + case 1577: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7763 +//line sql.y:7755 { yyLOCAL = ValTuple{} } yyVAL.union = yyLOCAL - case 1580: + case 1578: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7769 +//line sql.y:7761 { yyLOCAL = ValTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 1581: + case 1579: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7773 +//line sql.y:7765 { yyLOCAL = ValTuple(yyDollar[3].exprsUnion()) } yyVAL.union = yyLOCAL - case 1582: + case 1580: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7778 +//line sql.y:7770 { if len(yyDollar[1].valTupleUnion()) == 1 { yyLOCAL = yyDollar[1].valTupleUnion()[0] @@ -21927,300 +21901,300 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1583: + case 1581: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7788 +//line sql.y:7780 { yyLOCAL = UpdateExprs{yyDollar[1].updateExprUnion()} } yyVAL.union = yyLOCAL - case 1584: + case 1582: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7792 +//line sql.y:7784 { yySLICE := (*UpdateExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].updateExprUnion()) } - case 1585: + case 1583: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *UpdateExpr -//line sql.y:7798 +//line sql.y:7790 { yyLOCAL = &UpdateExpr{Name: yyDollar[1].colNameUnion(), Expr: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1587: + case 1585: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7805 +//line sql.y:7797 { yyVAL.str = "charset" } - case 1590: + case 1588: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7815 +//line sql.y:7807 { yyLOCAL = NewStrLiteral(yyDollar[1].identifierCI.String()) } yyVAL.union = yyLOCAL - case 1591: + case 1589: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7819 +//line sql.y:7811 { yyLOCAL = NewStrLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1592: + case 1590: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7823 +//line sql.y:7815 { yyLOCAL = &Default{} } yyVAL.union = yyLOCAL - case 1595: + case 1593: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7832 +//line sql.y:7824 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1596: + case 1594: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:7834 +//line sql.y:7826 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1597: + case 1595: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7837 +//line sql.y:7829 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1598: + case 1596: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:7839 +//line sql.y:7831 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1599: + case 1597: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7842 +//line sql.y:7834 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1600: + case 1598: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line sql.y:7844 +//line sql.y:7836 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1601: + case 1599: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Ignore -//line sql.y:7847 +//line sql.y:7839 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1602: + case 1600: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Ignore -//line sql.y:7849 +//line sql.y:7841 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1603: + case 1601: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7852 +//line sql.y:7844 { yyVAL.empty = struct{}{} } - case 1604: + case 1602: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7854 +//line sql.y:7846 { yyVAL.empty = struct{}{} } - case 1605: + case 1603: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7856 +//line sql.y:7848 { yyVAL.empty = struct{}{} } - case 1606: + case 1604: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:7860 +//line sql.y:7852 { yyLOCAL = &CallProc{Name: yyDollar[2].tableName, Params: yyDollar[4].exprsUnion()} } yyVAL.union = yyLOCAL - case 1607: + case 1605: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:7865 +//line sql.y:7857 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1608: + case 1606: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:7869 +//line sql.y:7861 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1609: + case 1607: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:7874 +//line sql.y:7866 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1610: + case 1608: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:7876 +//line sql.y:7868 { yyLOCAL = []*IndexOption{yyDollar[1].indexOptionUnion()} } yyVAL.union = yyLOCAL - case 1611: + case 1609: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:7880 +//line sql.y:7872 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), String: string(yyDollar[2].identifierCI.String())} } yyVAL.union = yyLOCAL - case 1612: + case 1610: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7886 +//line sql.y:7878 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1613: + case 1611: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7890 +//line sql.y:7882 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 1615: + case 1613: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7897 +//line sql.y:7889 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 1616: + case 1614: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7903 +//line sql.y:7895 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 1617: + case 1615: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7907 +//line sql.y:7899 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 1618: + case 1616: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7913 +//line sql.y:7905 { yyVAL.identifierCS = NewIdentifierCS("") } - case 1619: + case 1617: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7917 +//line sql.y:7909 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 1621: + case 1619: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7924 +//line sql.y:7916 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 1622: + case 1620: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:7930 +//line sql.y:7922 { yyLOCAL = &Kill{Type: yyDollar[2].killTypeUnion(), ProcesslistID: convertStringToUInt64(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 1623: + case 1621: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL KillType -//line sql.y:7936 +//line sql.y:7928 { yyLOCAL = ConnectionType } yyVAL.union = yyLOCAL - case 1624: + case 1622: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL KillType -//line sql.y:7940 +//line sql.y:7932 { yyLOCAL = ConnectionType } yyVAL.union = yyLOCAL - case 1625: + case 1623: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL KillType -//line sql.y:7944 +//line sql.y:7936 { yyLOCAL = QueryType } yyVAL.union = yyLOCAL - case 2241: + case 2239: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8588 +//line sql.y:8580 { } - case 2242: + case 2240: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8593 +//line sql.y:8585 { } - case 2243: + case 2241: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:8597 +//line sql.y:8589 { skipToEnd(yylex) } - case 2244: + case 2242: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:8602 +//line sql.y:8594 { skipToEnd(yylex) } - case 2245: + case 2243: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8606 +//line sql.y:8598 { skipToEnd(yylex) } - case 2246: + case 2244: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8610 +//line sql.y:8602 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 8a8e716278e..a11c9868668 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -4429,14 +4429,6 @@ explain_format_opt: { $$ = TreeType } -| FORMAT '=' VITESS - { - $$ = VitessType - } -| FORMAT '=' VTEXPLAIN - { - $$ = VTExplainType - } | FORMAT '=' TRADITIONAL { $$ = TraditionalType diff --git a/go/vt/vterrors/code.go b/go/vt/vterrors/code.go index 5e13e23b54e..1942faf12ad 100644 --- a/go/vt/vterrors/code.go +++ b/go/vt/vterrors/code.go @@ -56,6 +56,7 @@ var ( VT03028 = errorWithState("VT03028", vtrpcpb.Code_INVALID_ARGUMENT, BadNullError, "Column '%s' cannot be null on row %d, col %d", "The column cannot have null value.") VT03029 = errorWithState("VT03029", vtrpcpb.Code_INVALID_ARGUMENT, WrongValueCountOnRow, "column count does not match value count with the row for vindex '%s'", "The number of columns you want to insert do not match the number of columns of your SELECT query.") VT03030 = errorWithState("VT03030", vtrpcpb.Code_INVALID_ARGUMENT, WrongValueCountOnRow, "lookup column count does not match value count with the row (columns, count): (%v, %d)", "The number of columns you want to insert do not match the number of columns of your SELECT query.") + VT03031 = errorWithoutState("VT03031", vtrpcpb.Code_INVALID_ARGUMENT, "EXPLAIN is only supported for single keyspace", "EXPLAIN has to be sent down as a single query to the underlying MySQL, and this is not possible if it uses tables from multiple keyspaces") VT05001 = errorWithState("VT05001", vtrpcpb.Code_NOT_FOUND, DbDropExists, "cannot drop database '%s'; database does not exists", "The given database does not exist; Vitess cannot drop it.") VT05002 = errorWithState("VT05002", vtrpcpb.Code_NOT_FOUND, BadDb, "cannot alter database '%s'; unknown database", "The given database does not exist; Vitess cannot alter it.") @@ -138,6 +139,7 @@ var ( VT03028, VT03029, VT03030, + VT03031, VT05001, VT05002, VT05003, diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index bbb92513927..1670d64b6fc 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -1156,97 +1156,6 @@ func TestExecutorComment(t *testing.T) { } } -func TestExecutorOther(t *testing.T) { - executor, sbc1, sbc2, sbclookup, ctx := createExecutorEnv(t) - - type cnts struct { - Sbc1Cnt int64 - Sbc2Cnt int64 - SbcLookupCnt int64 - } - - tcs := []struct { - targetStr string - - hasNoKeyspaceErr bool - hasDestinationShardErr bool - wantCnts cnts - }{ - { - targetStr: "", - hasNoKeyspaceErr: true, - }, - { - targetStr: "TestExecutor[-]", - hasDestinationShardErr: true, - }, - { - targetStr: KsTestUnsharded, - wantCnts: cnts{ - Sbc1Cnt: 0, - Sbc2Cnt: 0, - SbcLookupCnt: 1, - }, - }, - { - targetStr: "TestExecutor", - wantCnts: cnts{ - Sbc1Cnt: 1, - Sbc2Cnt: 0, - SbcLookupCnt: 0, - }, - }, - { - targetStr: "TestExecutor/-20", - wantCnts: cnts{ - Sbc1Cnt: 1, - Sbc2Cnt: 0, - SbcLookupCnt: 0, - }, - }, - { - targetStr: "TestExecutor[00]", - wantCnts: cnts{ - Sbc1Cnt: 1, - Sbc2Cnt: 0, - SbcLookupCnt: 0, - }, - }, - } - - stmts := []string{ - "describe select * from t1", - "explain select * from t1", - "repair table t1", - "optimize table t1", - } - - for _, stmt := range stmts { - for _, tc := range tcs { - t.Run(fmt.Sprintf("%s-%s", stmt, tc.targetStr), func(t *testing.T) { - sbc1.ExecCount.Store(0) - sbc2.ExecCount.Store(0) - sbclookup.ExecCount.Store(0) - - _, err := executor.Execute(ctx, nil, "TestExecute", NewSafeSession(&vtgatepb.Session{TargetString: tc.targetStr}), stmt, nil) - if tc.hasNoKeyspaceErr { - assert.Error(t, err, errNoKeyspace) - } else if tc.hasDestinationShardErr { - assert.Errorf(t, err, "Destination can only be a single shard for statement: %s", stmt) - } else { - assert.NoError(t, err) - } - - utils.MustMatch(t, tc.wantCnts, cnts{ - Sbc1Cnt: sbc1.ExecCount.Load(), - Sbc2Cnt: sbc2.ExecCount.Load(), - SbcLookupCnt: sbclookup.ExecCount.Load(), - }) - }) - } - } -} - func TestExecutorDDL(t *testing.T) { executor, sbc1, sbc2, sbclookup, ctx := createExecutorEnv(t) @@ -2146,8 +2055,8 @@ func TestServingKeyspaces(t *testing.T) { require.Equal(t, `[[VARCHAR("TestUnsharded")]]`, fmt.Sprintf("%v", result.Rows)) } -func TestExecutorOtherRead(t *testing.T) { - executor, sbc1, sbc2, sbclookup, _ := createExecutorEnv(t) +func TestExecutorOther(t *testing.T) { + executor, sbc1, sbc2, sbclookup, ctx := createExecutorEnv(t) type cnts struct { Sbc1Cnt int64 @@ -2186,26 +2095,42 @@ func TestExecutorOtherRead(t *testing.T) { SbcLookupCnt: 0, }, }, + { + targetStr: "TestExecutor/-20", + wantCnts: cnts{ + Sbc1Cnt: 1, + Sbc2Cnt: 0, + SbcLookupCnt: 0, + }, + }, + { + targetStr: "TestExecutor[00]", + wantCnts: cnts{ + Sbc1Cnt: 1, + Sbc2Cnt: 0, + SbcLookupCnt: 0, + }, + }, } stmts := []string{ - "describe select * from t1", - "explain select * from t1", + "repair table t1", + "optimize table t1", "do 1", } for _, stmt := range stmts { for _, tc := range tcs { - t.Run(stmt+tc.targetStr, func(t *testing.T) { + t.Run(fmt.Sprintf("%s-%s", stmt, tc.targetStr), func(t *testing.T) { sbc1.ExecCount.Store(0) sbc2.ExecCount.Store(0) sbclookup.ExecCount.Store(0) - _, err := executor.Execute(context.Background(), nil, "TestExecute", NewSafeSession(&vtgatepb.Session{TargetString: tc.targetStr}), stmt, nil) + _, err := executor.Execute(ctx, nil, "TestExecute", NewSafeSession(&vtgatepb.Session{TargetString: tc.targetStr}), stmt, nil) if tc.hasNoKeyspaceErr { - assert.EqualError(t, err, errNoKeyspace.Error()) + assert.Error(t, err, errNoKeyspace) } else if tc.hasDestinationShardErr { - assert.Errorf(t, err, "Destination can only be a single shard for statement: %s, got: DestinationExactKeyRange(-)", stmt) + assert.Errorf(t, err, "Destination can only be a single shard for statement: %s", stmt) } else { assert.NoError(t, err) } @@ -2214,7 +2139,7 @@ func TestExecutorOtherRead(t *testing.T) { Sbc1Cnt: sbc1.ExecCount.Load(), Sbc2Cnt: sbc2.ExecCount.Load(), SbcLookupCnt: sbclookup.ExecCount.Load(), - }, "count did not match") + }) }) } } @@ -2269,6 +2194,71 @@ func TestExecutorAnalyze(t *testing.T) { } } +func TestExecutorExplainStmt(t *testing.T) { + executor, sbc1, sbc2, sbclookup, ctx := createExecutorEnv(t) + + type cnts struct { + Sbc1Cnt int64 + Sbc2Cnt int64 + SbcLookupCnt int64 + } + + tcs := []struct { + targetStr string + + wantCnts cnts + }{ + { + targetStr: "", + wantCnts: cnts{Sbc1Cnt: 1}, + }, + { + targetStr: "TestExecutor[-]", + wantCnts: cnts{Sbc1Cnt: 1, Sbc2Cnt: 1}, + }, + { + targetStr: KsTestUnsharded, + wantCnts: cnts{SbcLookupCnt: 1}, + }, + { + targetStr: "TestExecutor", + wantCnts: cnts{Sbc1Cnt: 1}, + }, + { + targetStr: "TestExecutor/-20", + wantCnts: cnts{Sbc1Cnt: 1}, + }, + { + targetStr: "TestExecutor[00]", + wantCnts: cnts{Sbc1Cnt: 1}, + }, + } + + stmts := []string{ + "describe select * from t1", + "explain select * from t1", + } + + for _, stmt := range stmts { + for _, tc := range tcs { + t.Run(fmt.Sprintf("%s-%s", stmt, tc.targetStr), func(t *testing.T) { + sbc1.ExecCount.Store(0) + sbc2.ExecCount.Store(0) + sbclookup.ExecCount.Store(0) + + _, err := executor.Execute(ctx, nil, "TestExecute", NewSafeSession(&vtgatepb.Session{TargetString: tc.targetStr}), stmt, nil) + assert.NoError(t, err) + + utils.MustMatch(t, tc.wantCnts, cnts{ + Sbc1Cnt: sbc1.ExecCount.Load(), + Sbc2Cnt: sbc2.ExecCount.Load(), + SbcLookupCnt: sbclookup.ExecCount.Load(), + }) + }) + } + } +} + func TestExecutorVExplain(t *testing.T) { executor, _, _, _, ctx := createExecutorEnv(t) diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index edb0db85c5e..e79e19ee96b 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -157,25 +157,7 @@ func buildRoutePlan(stmt sqlparser.Statement, reservedVars *sqlparser.ReservedVa func createInstructionFor(ctx context.Context, query string, stmt sqlparser.Statement, reservedVars *sqlparser.ReservedVars, vschema plancontext.VSchema, enableOnlineDDL, enableDirectDDL bool) (*planResult, error) { switch stmt := stmt.(type) { - case *sqlparser.Select: - configuredPlanner, err := getConfiguredPlanner(vschema, stmt, query) - if err != nil { - return nil, err - } - return buildRoutePlan(stmt, reservedVars, vschema, configuredPlanner) - case *sqlparser.Insert: - configuredPlanner, err := getConfiguredPlanner(vschema, stmt, query) - if err != nil { - return nil, err - } - return buildRoutePlan(stmt, reservedVars, vschema, configuredPlanner) - case *sqlparser.Update: - configuredPlanner, err := getConfiguredPlanner(vschema, stmt, query) - if err != nil { - return nil, err - } - return buildRoutePlan(stmt, reservedVars, vschema, configuredPlanner) - case *sqlparser.Delete: + case *sqlparser.Select, *sqlparser.Insert, *sqlparser.Update, *sqlparser.Delete: configuredPlanner, err := getConfiguredPlanner(vschema, stmt, query) if err != nil { return nil, err @@ -203,8 +185,10 @@ func createInstructionFor(ctx context.Context, query string, stmt sqlparser.Stat return buildVSchemaDDLPlan(stmt, vschema) case *sqlparser.Use: return buildUsePlan(stmt) - case sqlparser.Explain: - return buildExplainPlan(ctx, stmt, reservedVars, vschema, enableOnlineDDL, enableDirectDDL) + case *sqlparser.ExplainTab: + return explainTabPlan(stmt, vschema) + case *sqlparser.ExplainStmt: + return buildRoutePlan(stmt, reservedVars, vschema, buildExplainStmtPlan) case *sqlparser.VExplainStmt: return buildVExplainPlan(ctx, stmt, reservedVars, vschema, enableOnlineDDL, enableDirectDDL) case *sqlparser.OtherAdmin: diff --git a/go/vt/vtgate/planbuilder/delete.go b/go/vt/vtgate/planbuilder/delete.go index 059c663465d..08353383e73 100644 --- a/go/vt/vtgate/planbuilder/delete.go +++ b/go/vt/vtgate/planbuilder/delete.go @@ -50,7 +50,7 @@ func gen4DeleteStmtPlanner( return nil, err } - err = rewriteRoutedTables(deleteStmt, vschema) + err = queryRewrite(ctx.SemTable, reservedVars, deleteStmt) if err != nil { return nil, err } @@ -72,11 +72,6 @@ func gen4DeleteStmtPlanner( return nil, err } - err = queryRewrite(ctx.SemTable, reservedVars, deleteStmt) - if err != nil { - return nil, err - } - op, err := operators.PlanQuery(ctx, deleteStmt) if err != nil { return nil, err diff --git a/go/vt/vtgate/planbuilder/dml_planner.go b/go/vt/vtgate/planbuilder/dml_planner.go deleted file mode 100644 index 7ec616f7f36..00000000000 --- a/go/vt/vtgate/planbuilder/dml_planner.go +++ /dev/null @@ -1,63 +0,0 @@ -/* -Copyright 2019 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 planbuilder - -import ( - "vitess.io/vitess/go/vt/sqlparser" - "vitess.io/vitess/go/vt/vterrors" - "vitess.io/vitess/go/vt/vtgate/planbuilder/plancontext" -) - -func rewriteRoutedTables(stmt sqlparser.Statement, vschema plancontext.VSchema) error { - // Rewrite routed tables - return sqlparser.Walk(func(node sqlparser.SQLNode) (bool, error) { - aliasTbl, isAlias := node.(*sqlparser.AliasedTableExpr) - if !isAlias { - return true, nil - } - tableName, ok := aliasTbl.Expr.(sqlparser.TableName) - if !ok { - return true, nil - } - vschemaTable, vindexTbl, _, _, _, err := vschema.FindTableOrVindex(tableName) - if err != nil { - return false, err - } - if vindexTbl != nil { - // vindex cannot be present in a dml statement. - return false, vterrors.VT09014() - } - - if vschemaTable.Name.String() != tableName.Name.String() { - name := tableName.Name - if aliasTbl.As.IsEmpty() { - // if the user hasn't specified an alias, we'll insert one here so the old table name still works - aliasTbl.As = sqlparser.NewIdentifierCS(name.String()) - } - tableName.Name = sqlparser.NewIdentifierCS(vschemaTable.Name.String()) - aliasTbl.Expr = tableName - } - - return true, nil - }, stmt) -} - -func generateQuery(statement sqlparser.Statement) string { - buf := sqlparser.NewTrackedBuffer(dmlFormatter) - statement.Format(buf) - return buf.String() -} diff --git a/go/vt/vtgate/planbuilder/insert.go b/go/vt/vtgate/planbuilder/insert.go index 173c0213073..b08330f060d 100644 --- a/go/vt/vtgate/planbuilder/insert.go +++ b/go/vt/vtgate/planbuilder/insert.go @@ -19,9 +19,11 @@ package planbuilder import ( querypb "vitess.io/vitess/go/vt/proto/query" "vitess.io/vitess/go/vt/sqlparser" + "vitess.io/vitess/go/vt/vterrors" "vitess.io/vitess/go/vt/vtgate/engine" "vitess.io/vitess/go/vt/vtgate/planbuilder/operators" "vitess.io/vitess/go/vt/vtgate/planbuilder/plancontext" + "vitess.io/vitess/go/vt/vtgate/semantics" "vitess.io/vitess/go/vt/vtgate/vindexes" ) @@ -31,7 +33,7 @@ func gen4InsertStmtPlanner(version querypb.ExecuteOptions_PlannerVersion, insStm return nil, err } - err = rewriteRoutedTables(insStmt, vschema) + err = queryRewrite(ctx.SemTable, reservedVars, insStmt) if err != nil { return nil, err } @@ -60,12 +62,11 @@ func gen4InsertStmtPlanner(version querypb.ExecuteOptions_PlannerVersion, insStm return nil, err } - if err = errOutIfPlanCannotBeConstructed(ctx, tblInfo.GetVindexTable()); err != nil { - return nil, err + if _, isVindex := tblInfo.(*semantics.VindexTable); isVindex { + return nil, vterrors.VT09014() } - err = queryRewrite(ctx.SemTable, reservedVars, insStmt) - if err != nil { + if err = errOutIfPlanCannotBeConstructed(ctx, tblInfo.GetVindexTable()); err != nil { return nil, err } diff --git a/go/vt/vtgate/planbuilder/operator_transformers.go b/go/vt/vtgate/planbuilder/operator_transformers.go index f4cdce82a53..cadfba91772 100644 --- a/go/vt/vtgate/planbuilder/operator_transformers.go +++ b/go/vt/vtgate/planbuilder/operator_transformers.go @@ -911,3 +911,9 @@ func transformHashJoin(ctx *plancontext.PlanningContext, op *operators.HashJoin) }, }, nil } + +func generateQuery(statement sqlparser.Statement) string { + buf := sqlparser.NewTrackedBuffer(dmlFormatter) + statement.Format(buf) + return buf.String() +} diff --git a/go/vt/vtgate/planbuilder/operators/SQL_builder.go b/go/vt/vtgate/planbuilder/operators/SQL_builder.go index d042ff3032e..58b0cfe6545 100644 --- a/go/vt/vtgate/planbuilder/operators/SQL_builder.go +++ b/go/vt/vtgate/planbuilder/operators/SQL_builder.go @@ -309,7 +309,7 @@ func (ts *tableSorter) Swap(i, j int) { func removeKeyspaceFromSelectExpr(expr sqlparser.SelectExpr) { switch expr := expr.(type) { case *sqlparser.AliasedExpr: - sqlparser.RemoveKeyspace(expr.Expr) + sqlparser.RemoveKeyspaceInCol(expr.Expr) case *sqlparser.StarExpr: expr.TableName.Qualifier = sqlparser.NewIdentifierCS("") } @@ -567,7 +567,7 @@ func buildFilter(op *Filter, qb *queryBuilder) { func buildDerived(op *Horizon, qb *queryBuilder) { buildQuery(op.Source, qb) - sqlparser.RemoveKeyspace(op.Query) + sqlparser.RemoveKeyspaceInCol(op.Query) stmt := qb.stmt qb.stmt = nil diff --git a/go/vt/vtgate/planbuilder/operators/ast_to_op.go b/go/vt/vtgate/planbuilder/operators/ast_to_op.go index 7a4758493b2..aa6495eec9e 100644 --- a/go/vt/vtgate/planbuilder/operators/ast_to_op.go +++ b/go/vt/vtgate/planbuilder/operators/ast_to_op.go @@ -72,7 +72,7 @@ func addWherePredicates(ctx *plancontext.PlanningContext, expr sqlparser.Expr, o outerID := TableID(op) exprs := sqlparser.SplitAndExpression(nil, expr) for _, expr := range exprs { - sqlparser.RemoveKeyspace(expr) + sqlparser.RemoveKeyspaceInCol(expr) subq := sqc.handleSubquery(ctx, expr, outerID) if subq != nil { continue diff --git a/go/vt/vtgate/planbuilder/operators/join.go b/go/vt/vtgate/planbuilder/operators/join.go index 42ec1b75562..0796d237b88 100644 --- a/go/vt/vtgate/planbuilder/operators/join.go +++ b/go/vt/vtgate/planbuilder/operators/join.go @@ -92,7 +92,7 @@ func createOuterJoin(tableExpr *sqlparser.JoinTableExpr, lhs, rhs Operator) Oper panic(vterrors.VT12001("subquery in outer join predicate")) } predicate := tableExpr.Condition.On - sqlparser.RemoveKeyspace(predicate) + sqlparser.RemoveKeyspaceInCol(predicate) return &Join{LHS: lhs, RHS: rhs, LeftJoin: true, Predicate: predicate} } @@ -115,7 +115,7 @@ func createInnerJoin(ctx *plancontext.PlanningContext, tableExpr *sqlparser.Join sqc := &SubQueryBuilder{} outerID := TableID(op) joinPredicate := tableExpr.Condition.On - sqlparser.RemoveKeyspace(joinPredicate) + sqlparser.RemoveKeyspaceInCol(joinPredicate) exprs := sqlparser.SplitAndExpression(nil, joinPredicate) for _, pred := range exprs { subq := sqc.handleSubquery(ctx, pred, outerID) diff --git a/go/vt/vtgate/planbuilder/operators/subquery_builder.go b/go/vt/vtgate/planbuilder/operators/subquery_builder.go index e582295ba91..f69de0dedc4 100644 --- a/go/vt/vtgate/planbuilder/operators/subquery_builder.go +++ b/go/vt/vtgate/planbuilder/operators/subquery_builder.go @@ -201,7 +201,7 @@ func (sqb *SubQueryBuilder) inspectWhere( outerID: sqb.outerID, } for _, predicate := range sqlparser.SplitAndExpression(nil, in.Expr) { - sqlparser.RemoveKeyspace(predicate) + sqlparser.RemoveKeyspaceInCol(predicate) subq := sqb.handleSubquery(ctx, predicate, sqb.totalID) if subq != nil { continue diff --git a/go/vt/vtgate/planbuilder/operators/table.go b/go/vt/vtgate/planbuilder/operators/table.go index bf03243bb81..4bdf6f75c8b 100644 --- a/go/vt/vtgate/planbuilder/operators/table.go +++ b/go/vt/vtgate/planbuilder/operators/table.go @@ -115,7 +115,7 @@ func addColumn(ctx *plancontext.PlanningContext, op ColNameColumns, e sqlparser. if !ok { panic(vterrors.VT09018(fmt.Sprintf("cannot add '%s' expression to a table/vindex", sqlparser.String(e)))) } - sqlparser.RemoveKeyspace(col) + sqlparser.RemoveKeyspaceInCol(col) cols := op.GetColNames() colAsExpr := func(c *sqlparser.ColName) sqlparser.Expr { return c } if offset, found := canReuseColumn(ctx, cols, e, colAsExpr); found { diff --git a/go/vt/vtgate/planbuilder/rewrite.go b/go/vt/vtgate/planbuilder/rewrite.go index facde9c0e5b..396c27bd559 100644 --- a/go/vt/vtgate/planbuilder/rewrite.go +++ b/go/vt/vtgate/planbuilder/rewrite.go @@ -24,7 +24,6 @@ import ( type rewriter struct { semTable *semantics.SemTable reservedVars *sqlparser.ReservedVars - inSubquery int err error } @@ -33,26 +32,16 @@ func queryRewrite(semTable *semantics.SemTable, reservedVars *sqlparser.Reserved semTable: semTable, reservedVars: reservedVars, } - sqlparser.Rewrite(statement, r.rewriteDown, r.rewriteUp) + sqlparser.Rewrite(statement, r.rewriteDown, nil) return nil } -func (r *rewriter) rewriteUp(cursor *sqlparser.Cursor) bool { - _, ok := cursor.Node().(*sqlparser.Subquery) - if ok { - r.inSubquery-- - } - return true -} - func (r *rewriter) rewriteDown(cursor *sqlparser.Cursor) bool { switch node := cursor.Node().(type) { case *sqlparser.Select: rewriteHavingClause(node) case *sqlparser.AliasedTableExpr: - // rewrite names of the routed tables for the subquery - // We only need to do this for non-derived tables and if they are in a subquery - if _, isDerived := node.Expr.(*sqlparser.DerivedTable); isDerived || r.inSubquery == 0 { + if _, isDerived := node.Expr.(*sqlparser.DerivedTable); isDerived { break } // find the tableSet and tableInfo that this table points to @@ -83,8 +72,6 @@ func (r *rewriter) rewriteDown(cursor *sqlparser.Cursor) bool { // replace the table name with the original table tableName.Name = vindexTable.Name node.Expr = tableName - case *sqlparser.Subquery: - r.inSubquery++ } return true } diff --git a/go/vt/vtgate/planbuilder/single_sharded_shortcut.go b/go/vt/vtgate/planbuilder/single_sharded_shortcut.go index e3999c0703d..dea4e7bb595 100644 --- a/go/vt/vtgate/planbuilder/single_sharded_shortcut.go +++ b/go/vt/vtgate/planbuilder/single_sharded_shortcut.go @@ -105,7 +105,7 @@ func getTableNames(semTable *semantics.SemTable) ([]sqlparser.TableName, error) func removeKeyspaceFromSelectExpr(expr sqlparser.SelectExpr) { switch expr := expr.(type) { case *sqlparser.AliasedExpr: - sqlparser.RemoveKeyspace(expr.Expr) + sqlparser.RemoveKeyspaceInCol(expr.Expr) case *sqlparser.StarExpr: expr.TableName.Qualifier = sqlparser.NewIdentifierCS("") } diff --git a/go/vt/vtgate/planbuilder/testdata/dml_cases.json b/go/vt/vtgate/planbuilder/testdata/dml_cases.json index 99306aac737..d7a6b32adf3 100644 --- a/go/vt/vtgate/planbuilder/testdata/dml_cases.json +++ b/go/vt/vtgate/planbuilder/testdata/dml_cases.json @@ -4410,8 +4410,8 @@ } }, { - "comment": "explain dml without any directive should fail", - "query": "explain format=vtexplain delete from user", + "comment": "vexplain all dml without any directive should fail", + "query": "vexplain all delete from user", "plan": "VT09008: vexplain queries/all will actually run queries" }, { diff --git a/go/vt/vtgate/planbuilder/testdata/other_read_cases.json b/go/vt/vtgate/planbuilder/testdata/other_read_cases.json index 92c8d132eda..8b67623186a 100644 --- a/go/vt/vtgate/planbuilder/testdata/other_read_cases.json +++ b/go/vt/vtgate/planbuilder/testdata/other_read_cases.json @@ -14,22 +14,10 @@ "TargetDestination": "AnyShard()", "Query": "explain select * from `user`", "SingleShardOnly": true - } - } - }, - { - "comment": "Explain Vitess statement", - "query": "explain format=vitess select * from user", - "plan": { - "QueryType": "EXPLAIN", - "Original": "explain format=vitess select * from user", - "Instructions": { - "OperatorType": "Rows", - "Fields": { - "JSON": "VARCHAR" - }, - "RowCount": 1 - } + }, + "TablesUsed": [ + "main.user" + ] } }, { @@ -67,7 +55,10 @@ "TargetDestination": "AnyShard()", "Query": "explain select * from t", "SingleShardOnly": true - } + }, + "TablesUsed": [ + "main.t" + ] } }, { @@ -85,7 +76,75 @@ "TargetDestination": "AnyShard()", "Query": "explain select * from t", "SingleShardOnly": true - } + }, + "TablesUsed": [ + "main.t" + ] + } + }, + { + "comment": "explain - routed table with same name", + "query": "explain select 1, second_user.user.id from second_user.user", + "plan": { + "QueryType": "EXPLAIN", + "Original": "explain select 1, second_user.user.id from second_user.user", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "TargetDestination": "AnyShard()", + "Query": "explain select 1, `user`.id from `user`", + "SingleShardOnly": true + }, + "TablesUsed": [ + "user.user" + ] + } + }, + { + "comment": "explain - routed table with different name", + "query": "explain select 1, second_user.foo.id, foo.col from second_user.foo", + "plan": { + "QueryType": "EXPLAIN", + "Original": "explain select 1, second_user.foo.id, foo.col from second_user.foo", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "TargetDestination": "AnyShard()", + "Query": "explain select 1, foo.id, foo.col from `user` as foo", + "SingleShardOnly": true + }, + "TablesUsed": [ + "user.foo" + ] + } + }, + { + "comment": "explain - routed table with join on different table on routed keyspace", + "query": "explain select 1, second_user.foo.id, foo.col from second_user.foo join user.user join user.music", + "plan": { + "QueryType": "EXPLAIN", + "Original": "explain select 1, second_user.foo.id, foo.col from second_user.foo join user.user join user.music", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "TargetDestination": "AnyShard()", + "Query": "explain select 1, foo.id, foo.col from `user` as foo join `user` join music", + "SingleShardOnly": true + }, + "TablesUsed": [ + "user.foo", + "user.user", + "user.music" + ] } } ] diff --git a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.json b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.json index 4e6fb251be8..54507d94145 100644 --- a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.json +++ b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.json @@ -279,6 +279,11 @@ "query": "delete from user where x = (@val := 42)", "plan": "VT12001: unsupported: Assignment expression" }, + { + "comment": "explain - routed table with join on different keyspace table", + "query": "explain select 1, second_user.foo.id, foo.col from second_user.foo join user.user join main.unsharded", + "plan": "VT03031: EXPLAIN is only supported for single keyspace" + }, { "comment": "extremum on input from both sides", "query": "insert into music(user_id, id) select foo, bar from music on duplicate key update id = id+1", diff --git a/go/vt/vtgate/planbuilder/update.go b/go/vt/vtgate/planbuilder/update.go index 9fbfd85afab..eb21546224c 100644 --- a/go/vt/vtgate/planbuilder/update.go +++ b/go/vt/vtgate/planbuilder/update.go @@ -42,7 +42,7 @@ func gen4UpdateStmtPlanner( return nil, err } - err = rewriteRoutedTables(updStmt, vschema) + err = queryRewrite(ctx.SemTable, reservedVars, updStmt) if err != nil { return nil, err } @@ -71,11 +71,6 @@ func gen4UpdateStmtPlanner( return nil, ctx.SemTable.NotUnshardedErr } - err = queryRewrite(ctx.SemTable, reservedVars, updStmt) - if err != nil { - return nil, err - } - op, err := operators.PlanQuery(ctx, updStmt) if err != nil { return nil, err diff --git a/go/vt/vtgate/planbuilder/vexplain.go b/go/vt/vtgate/planbuilder/vexplain.go index 5c99ab87a95..7b200fb2e09 100644 --- a/go/vt/vtgate/planbuilder/vexplain.go +++ b/go/vt/vtgate/planbuilder/vexplain.go @@ -19,9 +19,6 @@ package planbuilder import ( "context" "encoding/json" - "fmt" - - "vitess.io/vitess/go/vt/vtgate/planbuilder/plancontext" "vitess.io/vitess/go/sqltypes" "vitess.io/vitess/go/vt/key" @@ -30,28 +27,10 @@ import ( "vitess.io/vitess/go/vt/sqlparser" "vitess.io/vitess/go/vt/vterrors" "vitess.io/vitess/go/vt/vtgate/engine" + "vitess.io/vitess/go/vt/vtgate/planbuilder/operators" + "vitess.io/vitess/go/vt/vtgate/planbuilder/plancontext" ) -// Builds an explain-plan for the given Primitive -func buildExplainPlan(ctx context.Context, stmt sqlparser.Explain, reservedVars *sqlparser.ReservedVars, vschema plancontext.VSchema, enableOnlineDDL, enableDirectDDL bool) (*planResult, error) { - switch explain := stmt.(type) { - case *sqlparser.ExplainTab: - return explainTabPlan(explain, vschema) - case *sqlparser.ExplainStmt: - switch explain.Type { - case sqlparser.VitessType: - vschema.PlannerWarning("EXPLAIN FORMAT = VITESS is deprecated, please use VEXPLAIN PLAN instead.") - return buildVExplainVtgatePlan(ctx, explain.Statement, reservedVars, vschema, enableOnlineDDL, enableDirectDDL) - case sqlparser.VTExplainType: - vschema.PlannerWarning("EXPLAIN FORMAT = VTEXPLAIN is deprecated, please use VEXPLAIN QUERIES instead.") - return buildVExplainLoggingPlan(ctx, &sqlparser.VExplainStmt{Type: sqlparser.QueriesVExplainType, Statement: explain.Statement, Comments: explain.Comments}, reservedVars, vschema, enableOnlineDDL, enableDirectDDL) - default: - return buildOtherReadAndAdmin(sqlparser.String(explain), vschema) - } - } - return nil, vterrors.VT13001(fmt.Sprintf("unexpected explain type: %T", stmt)) -} - func buildVExplainPlan(ctx context.Context, vexplainStmt *sqlparser.VExplainStmt, reservedVars *sqlparser.ReservedVars, vschema plancontext.VSchema, enableOnlineDDL, enableDirectDDL bool) (*planResult, error) { switch vexplainStmt.Type { case sqlparser.QueriesVExplainType, sqlparser.AllVExplainType: @@ -125,3 +104,52 @@ func buildVExplainLoggingPlan(ctx context.Context, explain *sqlparser.VExplainSt return &planResult{primitive: &engine.VExplain{Input: input.primitive, Type: explain.Type}, tables: input.tables}, nil } + +// buildExplainStmtPlan takes an EXPLAIN query and if possible sends the whole query to a single shard +func buildExplainStmtPlan(stmt sqlparser.Statement, reservedVars *sqlparser.ReservedVars, vschema plancontext.VSchema) (*planResult, error) { + explain := stmt.(*sqlparser.ExplainStmt) + switch explain.Statement.(type) { + case sqlparser.SelectStatement, *sqlparser.Update, *sqlparser.Delete, *sqlparser.Insert: + return explainPlan(explain, reservedVars, vschema) + default: + return buildOtherReadAndAdmin(sqlparser.String(explain), vschema) + } + +} + +func explainPlan(explain *sqlparser.ExplainStmt, reservedVars *sqlparser.ReservedVars, vschema plancontext.VSchema) (*planResult, error) { + ctx, err := plancontext.CreatePlanningContext(explain.Statement, reservedVars, vschema, Gen4) + if err != nil { + return nil, err + } + + ks := ctx.SemTable.SingleKeyspace() + if ks == nil { + return nil, vterrors.VT03031() + } + + if err = queryRewrite(ctx.SemTable, reservedVars, explain.Statement); err != nil { + return nil, err + } + + // Remove keyspace qualifier from columns and tables. + sqlparser.RemoveKeyspace(explain.Statement) + + var tables []string + for _, table := range ctx.SemTable.Tables { + name, err := table.Name() + if err != nil { + // this is just for reporting which tables we are touching + // it's OK to ignore errors here + continue + } + tables = append(tables, operators.QualifiedString(ks, name.Name.String())) + } + + return newPlanResult(&engine.Send{ + Keyspace: ks, + TargetDestination: key.DestinationAnyShard{}, + Query: sqlparser.String(explain), + SingleShardOnly: true, + }, tables...), nil +} diff --git a/go/vt/vtgate/semantics/semantic_state.go b/go/vt/vtgate/semantics/semantic_state.go index 08b89027b83..4a2b70fe81a 100644 --- a/go/vt/vtgate/semantics/semantic_state.go +++ b/go/vt/vtgate/semantics/semantic_state.go @@ -764,6 +764,34 @@ func (st *SemTable) SingleUnshardedKeyspace() (ks *vindexes.Keyspace, tables []* return ks, tables } +// SingleUnshardedKeyspace returns the single keyspace if all tables in the query are in the same keyspace +func (st *SemTable) SingleKeyspace() (ks *vindexes.Keyspace) { + validKS := func(this *vindexes.Keyspace) bool { + if this == nil { + return true + } + if ks == nil { + // first keyspace we see + ks = this + } else if ks != this { + return false + } + return true + } + + for _, table := range st.Tables { + if _, isDT := table.(*DerivedTable); isDT { + continue + } + + vtbl := table.GetVindexTable() + if !validKS(vtbl.Keyspace) { + return nil + } + } + return +} + // EqualsExpr compares two expressions using the semantic analysis information. // This means that we use the binding info to recognize that two ColName's can point to the same // table column even though they are written differently. Example would be the `foobar` column in the following query: diff --git a/go/vt/vtgate/testdata/executorVSchema.json b/go/vt/vtgate/testdata/executorVSchema.json index e353c082374..ba917708df8 100644 --- a/go/vt/vtgate/testdata/executorVSchema.json +++ b/go/vt/vtgate/testdata/executorVSchema.json @@ -354,7 +354,7 @@ "type": "reference", "source": "TestUnsharded.zip_detail" }, - "multicol_tbl": { + "multicol_tbl": { "column_vindexes": [ { "columns": ["cola", "colb"],