From d1952d08ba76fd8d2cce0295cafbddae74ab781b Mon Sep 17 00:00:00 2001 From: liipx Date: Mon, 5 Nov 2018 12:05:40 +0800 Subject: [PATCH] update vitess, rename Newtable to others --- advisor/heuristic.go | 2 +- ast/meta.go | 86 +- ast/meta_test.go | 60 +- env/env.go | 16 +- vendor/vendor.json | 46 +- .../vitess.io/vitess/go/vt/sqlparser/ast.go | 64 +- .../vitess.io/vitess/go/vt/sqlparser/sql.go | 4046 +++++++++-------- vendor/vitess.io/vitess/go/vt/sqlparser/sql.y | 48 +- 8 files changed, 2240 insertions(+), 2128 deletions(-) diff --git a/advisor/heuristic.go b/advisor/heuristic.go index f125a04..46fbf5c 100644 --- a/advisor/heuristic.go +++ b/advisor/heuristic.go @@ -2305,7 +2305,7 @@ func (q *Query4Audit) RuleCreateDualTable() Rule { var rule = q.RuleOK() switch s := q.Stmt.(type) { case *sqlparser.DDL: - if s.NewName.Name.String() == "dual" { + if s.Table.Name.String() == "dual" { rule = HeuristicRules["TBL.003"] } diff --git a/ast/meta.go b/ast/meta.go index 2762146..97a7c78 100644 --- a/ast/meta.go +++ b/ast/meta.go @@ -77,27 +77,15 @@ func GetMeta(stmt sqlparser.Statement, meta common.Meta) common.Meta { switch expr := node.(type) { case *sqlparser.DDL: // 如果SQL是一个DDL,则不需要继续遍历语法树了 - db1 := expr.Table.Qualifier.String() - tb1 := expr.Table.Name.String() - db2 := expr.NewName.Qualifier.String() - tb2 := expr.NewName.Name.String() - - if tb1 != "" { - if _, ok := meta[db1]; !ok { - meta[db1] = common.NewDB(db1) - } - - meta[db1].Table[tb1] = common.NewTable(tb1) + for _, tb := range expr.FromTables { + appendTable(tb, "", meta) } - if tb2 != "" { - if _, ok := meta[db2]; !ok { - meta[db2] = common.NewDB(db2) - } - - meta[db2].Table[tb2] = common.NewTable(tb2) + for _, tb := range expr.ToTables { + appendTable(tb, "", meta) } + appendTable(expr.Table, "", meta) return false, nil case *sqlparser.AliasedTableExpr: // 非 DDL 情况下处理 TableExpr @@ -110,26 +98,7 @@ func GetMeta(stmt sqlparser.Statement, meta common.Meta) common.Meta { // 表名存放在 AST 中 TableName 里,包含表名与表前缀名。 // 当与 As 相对应的 Expr 为 TableName 的时候,别名才是一张实体表的别名,否则为结果集的别名。 case sqlparser.TableName: - db := table.Qualifier.String() - tb := table.Name.String() - - if meta[db] == nil { - meta[db] = common.NewDB(db) - } - - meta[db].Table[tb] = common.NewTable(tb) - - // alias去重 - aliasExist := false - for _, existedAlias := range meta[db].Table[tb].TableAliases { - if existedAlias == expr.As.String() { - aliasExist = true - } - } - if !aliasExist { - meta[db].Table[tb].TableAliases = append(meta[db].Table[tb].TableAliases, expr.As.String()) - } - + appendTable(table, expr.As.String(), meta) default: // 如果 AliasedTableExpr 中的 Expr 不是 TableName 结构体,则表示该表为一个查询结果集(子查询或临时表)。 // 在这里记录一下别名,但将列名制空,用来保证在其他环节中判断列前缀的时候不会有遗漏 @@ -152,6 +121,49 @@ func GetMeta(stmt sqlparser.Statement, meta common.Meta) common.Meta { return meta } +// appendTable 将 sqlparser.TableName 中的库表信息提取后放到 meta 中 +// @tb 为 sqlparser.TableName 对象 +// @as 为该表的别名,无别名时为空 +// @meta 为信息集合 +func appendTable(tb sqlparser.TableName, as string, meta map[string]*common.DB) map[string]*common.DB { + if meta == nil { + return meta + } + + dbName := tb.Qualifier.String() + tbName := tb.Name.String() + if tbName == "" { + return meta + } + + if meta[dbName] == nil { + meta[dbName] = common.NewDB(dbName) + } + + meta[dbName].Table[tbName] = common.NewTable(tbName) + mergeAlias(dbName, tbName, as, meta) + + return meta +} + +// mergeAlias 将所有的表别名归并到一个表下 +func mergeAlias(db, tb, as string, meta map[string]*common.DB) { + if meta == nil || as == "" { + return + } + + aliasExist := false + for _, existedAlias := range meta[db].Table[tb].TableAliases { + if existedAlias == as { + aliasExist = true + } + } + + if !aliasExist { + meta[db].Table[tb].TableAliases = append(meta[db].Table[tb].TableAliases, as) + } +} + // eqOperators 等值条件判断关键字 var eqOperators = map[string]string{ "=": "eq", diff --git a/ast/meta_test.go b/ast/meta_test.go index 2da7a70..e952f33 100644 --- a/ast/meta_test.go +++ b/ast/meta_test.go @@ -59,7 +59,7 @@ func TestFindCondition(t *testing.T) { for _, sql := range common.TestSQLs { fmt.Println(sql) stmt, err := sqlparser.Parse(sql) - //pretty.Println(stmt) + // pretty.Println(stmt) if err != nil { panic(err) } @@ -143,7 +143,7 @@ func TestFindJoinTable(t *testing.T) { for _, sql := range sqlList { fmt.Println(sql) stmt, err := sqlparser.Parse(sql) - //pretty.Println(stmt) + // pretty.Println(stmt) if err != nil { panic(err) } @@ -167,7 +167,7 @@ func TestFindJoinCols(t *testing.T) { for _, sql := range sqlList { fmt.Println(sql) stmt, err := sqlparser.Parse(sql) - //pretty.Println(stmt) + // pretty.Println(stmt) if err != nil { panic(err) } @@ -189,7 +189,7 @@ func TestFindJoinColBeWhereEQ(t *testing.T) { for _, sql := range sqlList { fmt.Println(sql) stmt, err := sqlparser.Parse(sql) - //pretty.Println(stmt) + // pretty.Println(stmt) if err != nil { panic(err) } @@ -211,7 +211,7 @@ func TestFindJoinColBeWhereINEQ(t *testing.T) { for _, sql := range sqlList { fmt.Println(sql) stmt, err := sqlparser.Parse(sql) - //pretty.Println(stmt) + // pretty.Println(stmt) if err != nil { panic(err) } @@ -239,7 +239,7 @@ func TestFindAllCondition(t *testing.T) { for _, sql := range sqlList { fmt.Println(sql) stmt, err := sqlparser.Parse(sql) - //pretty.Println(stmt) + // pretty.Println(stmt) if err != nil { panic(err) } @@ -258,7 +258,7 @@ func TestFindColumn(t *testing.T) { for _, sql := range sqlList { fmt.Println(sql) stmt, err := sqlparser.Parse(sql) - //pretty.Println(stmt) + // pretty.Println(stmt) if err != nil { panic(err) } @@ -286,7 +286,7 @@ func TestFindAllCols(t *testing.T) { for _, sql := range sqlList { fmt.Println(sql) stmt, err := sqlparser.Parse(sql) - //pretty.Println(stmt) + // pretty.Println(stmt) if err != nil { panic(err) } @@ -322,3 +322,47 @@ func TestGetSubqueryDepth(t *testing.T) { fmt.Println(dep) } } + +func TestAppendTable(t *testing.T) { + sqlList := []string{ + "select ID,name from (select address from customer_list where SID=1 order by phone limit 50,10) a join customer_list l on (a.address=l.address) join city c on (c.city=l.city) order by phone desc;", + } + + meta := make(map[string]*common.DB) + for _, sql := range sqlList { + fmt.Println(sql) + stmt, err := sqlparser.Parse(sql) + if err != nil { + t.Error("syntax check error.") + } + + err = sqlparser.Walk(func(node sqlparser.SQLNode) (kontinue bool, err error) { + switch expr := node.(type) { + case *sqlparser.AliasedTableExpr: + switch table := expr.Expr.(type) { + case sqlparser.TableName: + appendTable(table, expr.As.String(), meta) + default: + if meta == nil { + meta = make(map[string]*common.DB) + } + if meta[""] == nil { + meta[""] = common.NewDB("") + } + meta[""].Table[""] = common.NewTable("") + meta[""].Table[""].TableAliases = append(meta[""].Table[""].TableAliases, expr.As.String()) + } + } + return true, nil + }, stmt) + + if err != nil { + t.Error(err) + } + } + + // 仅对第一条测试SQL进行测试,验证别名正确性 + if meta[""].Table["customer_list"].TableAliases[0] != "l" || meta[""].Table["city"].TableAliases[0] != "c" { + t.Error("alias filed\n", pretty.Sprint(meta)) + } +} diff --git a/env/env.go b/env/env.go index d4eaf48..0ba09c8 100644 --- a/env/env.go +++ b/env/env.go @@ -248,11 +248,25 @@ func (ve *VirtualEnv) BuildVirtualEnv(rEnv *database.Connector, SQLs ...string) // 为了支持并发,需要将DB进行映射,但db.table这种形式无法保证DB的映射是正确的 // TODO:暂不支持 create db.tableName (id int) 形式的建表语句 - if stmt.Table.Qualifier.String() != "" || stmt.NewName.Qualifier.String() != "" { + if stmt.Table.Qualifier.String() != "" { common.Log.Error("BuildVirtualEnv DDL Not support '.'") return false } + for _, tb := range stmt.FromTables { + if tb.Qualifier.String() != "" { + common.Log.Error("BuildVirtualEnv DDL Not support '.'") + return false + } + } + + for _, tb := range stmt.ToTables { + if tb.Qualifier.String() != "" { + common.Log.Error("BuildVirtualEnv DDL Not support '.'") + return false + } + } + // 拉取表结构 table := stmt.Table.Name.String() if table != "" { diff --git a/vendor/vendor.json b/vendor/vendor.json index 90b88c7..c2dbdd0 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -1016,68 +1016,68 @@ { "checksumSHA1": "w8FCRjH70gM6QttB9QrEh9Y1x64=", "path": "vitess.io/vitess", - "revision": "6fca9975675109decbf1c389641597929824eeba", - "revisionTime": "2018-10-31T20:10:04Z" + "revision": "54855ec7b36906b6d53aa5af0f0293a0a73ae928", + "revisionTime": "2018-11-05T03:16:12Z" }, { "checksumSHA1": "aKn1oKcY74N8TRLm3Ayt7Q4bbI4=", "path": "vitess.io/vitess/go/bytes2", - "revision": "6fca9975675109decbf1c389641597929824eeba", - "revisionTime": "2018-10-31T20:10:04Z" + "revision": "54855ec7b36906b6d53aa5af0f0293a0a73ae928", + "revisionTime": "2018-11-05T03:16:12Z" }, { "checksumSHA1": "JVCEN4UGRmg3TofIBdzZMZ3G0Ww=", "path": "vitess.io/vitess/go/hack", - "revision": "6fca9975675109decbf1c389641597929824eeba", - "revisionTime": "2018-10-31T20:10:04Z" + "revision": "54855ec7b36906b6d53aa5af0f0293a0a73ae928", + "revisionTime": "2018-11-05T03:16:12Z" }, { "checksumSHA1": "e1WJ7vCnVrlQQQlc6n/FewCDMso=", "path": "vitess.io/vitess/go/sqltypes", - "revision": "6fca9975675109decbf1c389641597929824eeba", - "revisionTime": "2018-10-31T20:10:04Z" + "revision": "54855ec7b36906b6d53aa5af0f0293a0a73ae928", + "revisionTime": "2018-11-05T03:16:12Z" }, { "checksumSHA1": "ntFIQYkBS51G6y+FEkjFW40+HOU=", "path": "vitess.io/vitess/go/vt/log", - "revision": "6fca9975675109decbf1c389641597929824eeba", - "revisionTime": "2018-10-31T20:10:04Z" + "revision": "54855ec7b36906b6d53aa5af0f0293a0a73ae928", + "revisionTime": "2018-11-05T03:16:12Z" }, { "checksumSHA1": "XozR8bmeSR5KTe/nlUJkpJY2HKI=", "path": "vitess.io/vitess/go/vt/proto/query", - "revision": "6fca9975675109decbf1c389641597929824eeba", - "revisionTime": "2018-10-31T20:10:04Z" + "revision": "54855ec7b36906b6d53aa5af0f0293a0a73ae928", + "revisionTime": "2018-11-05T03:16:12Z" }, { "checksumSHA1": "OnWsUHLDKcO3spwH0jD55SvKD24=", "path": "vitess.io/vitess/go/vt/proto/topodata", - "revision": "6fca9975675109decbf1c389641597929824eeba", - "revisionTime": "2018-10-31T20:10:04Z" + "revision": "54855ec7b36906b6d53aa5af0f0293a0a73ae928", + "revisionTime": "2018-11-05T03:16:12Z" }, { "checksumSHA1": "sBAuZ/itMR8U8qbK4yLHxkP6Cpc=", "path": "vitess.io/vitess/go/vt/proto/vtgate", - "revision": "6fca9975675109decbf1c389641597929824eeba", - "revisionTime": "2018-10-31T20:10:04Z" + "revision": "54855ec7b36906b6d53aa5af0f0293a0a73ae928", + "revisionTime": "2018-11-05T03:16:12Z" }, { "checksumSHA1": "pLWM+SPGZs3k+IhjktE/cGUlpM0=", "path": "vitess.io/vitess/go/vt/proto/vtrpc", - "revision": "6fca9975675109decbf1c389641597929824eeba", - "revisionTime": "2018-10-31T20:10:04Z" + "revision": "54855ec7b36906b6d53aa5af0f0293a0a73ae928", + "revisionTime": "2018-11-05T03:16:12Z" }, { - "checksumSHA1": "re3V8oX+ujxHbNZuB+QEtrcXxE8=", + "checksumSHA1": "3rucaIfitefjezWeglPndd50Mcw=", "path": "vitess.io/vitess/go/vt/sqlparser", - "revision": "6fca9975675109decbf1c389641597929824eeba", - "revisionTime": "2018-10-31T20:10:04Z" + "revision": "54855ec7b36906b6d53aa5af0f0293a0a73ae928", + "revisionTime": "2018-11-05T03:16:12Z" }, { "checksumSHA1": "oF4XzuOzwvj1iduX/lYqNSyY/HM=", "path": "vitess.io/vitess/go/vt/vterrors", - "revision": "6fca9975675109decbf1c389641597929824eeba", - "revisionTime": "2018-10-31T20:10:04Z" + "revision": "54855ec7b36906b6d53aa5af0f0293a0a73ae928", + "revisionTime": "2018-11-05T03:16:12Z" } ], "rootPath": "github.com/XiaoMi/soar" diff --git a/vendor/vitess.io/vitess/go/vt/sqlparser/ast.go b/vendor/vitess.io/vitess/go/vt/sqlparser/ast.go index 71120ee..46f6556 100644 --- a/vendor/vitess.io/vitess/go/vt/sqlparser/ast.go +++ b/vendor/vitess.io/vitess/go/vt/sqlparser/ast.go @@ -718,21 +718,30 @@ func (node *DBDDL) walkSubtree(visit Visit) error { return nil } -// DDL represents a CREATE, ALTER, DROP, RENAME or TRUNCATE statement. -// Table is set for AlterStr, DropStr, RenameStr, TruncateStr -// NewName is set for AlterStr, CreateStr, RenameStr. -// VindexSpec is set for CreateVindexStr, DropVindexStr, AddColVindexStr, DropColVindexStr -// VindexCols is set for AddColVindexStr +// DDL represents a CREATE, ALTER, DROP, RENAME, TRUNCATE or ANALYZE statement. type DDL struct { - Action string - Table TableName - NewName TableName + Action string + + // FromTables is set if Action is RenameStr or DropStr. + FromTables TableNames + + // ToTables is set if Action is RenameStr. + ToTables TableNames + + // Table is set if Action is other than RenameStr or DropStr. + Table TableName + + // The following fields are set if a DDL was fully analyzed. IfExists bool TableSpec *TableSpec OptLike *OptLike PartitionSpec *PartitionSpec - VindexSpec *VindexSpec - VindexCols []ColIdent + + // VindexSpec is set for CreateVindexStr, DropVindexStr, AddColVindexStr, DropColVindexStr. + VindexSpec *VindexSpec + + // VindexCols is set for AddColVindexStr. + VindexCols []ColIdent } // DDL strings. @@ -756,20 +765,23 @@ func (node *DDL) Format(buf *TrackedBuffer) { switch node.Action { case CreateStr: if node.OptLike != nil { - buf.Myprintf("%s table %v %v", node.Action, node.NewName, node.OptLike) + buf.Myprintf("%s table %v %v", node.Action, node.Table, node.OptLike) } else if node.TableSpec != nil { - buf.Myprintf("%s table %v %v", node.Action, node.NewName, node.TableSpec) + buf.Myprintf("%s table %v %v", node.Action, node.Table, node.TableSpec) } else { - buf.Myprintf("%s table %v", node.Action, node.NewName) + buf.Myprintf("%s table %v", node.Action, node.Table) } case DropStr: exists := "" if node.IfExists { exists = " if exists" } - buf.Myprintf("%s table%s %v", node.Action, exists, node.Table) + buf.Myprintf("%s table%s %v", node.Action, exists, node.FromTables) case RenameStr: - buf.Myprintf("%s table %v to %v", node.Action, node.Table, node.NewName) + buf.Myprintf("%s table %v to %v", node.Action, node.FromTables[0], node.ToTables[0]) + for i := 1; i < len(node.FromTables); i++ { + buf.Myprintf(", %v to %v", node.FromTables[i], node.ToTables[i]) + } case AlterStr: if node.PartitionSpec != nil { buf.Myprintf("%s table %v %v", node.Action, node.Table, node.PartitionSpec) @@ -804,11 +816,23 @@ func (node *DDL) walkSubtree(visit Visit) error { if node == nil { return nil } - return Walk( - visit, - node.Table, - node.NewName, - ) + for _, t := range node.AffectedTables() { + if err := Walk(visit, t); err != nil { + return err + } + } + return nil +} + +// AffectedTables returns the list table names affected by the DDL. +func (node *DDL) AffectedTables() TableNames { + if node.Action == RenameStr || node.Action == DropStr { + list := make(TableNames, 0, len(node.FromTables)+len(node.ToTables)) + list = append(list, node.FromTables...) + list = append(list, node.ToTables...) + return list + } + return TableNames{node.Table} } // Partition strings diff --git a/vendor/vitess.io/vitess/go/vt/sqlparser/sql.go b/vendor/vitess.io/vitess/go/vt/sqlparser/sql.go index 663a5b2..bf7658b 100644 --- a/vendor/vitess.io/vitess/go/vt/sqlparser/sql.go +++ b/vendor/vitess.io/vitess/go/vt/sqlparser/sql.go @@ -628,349 +628,367 @@ var yyExca = [...]int{ 5, 29, -2, 4, -1, 37, - 159, 292, - 160, 292, - -2, 282, + 159, 294, + 160, 294, + -2, 284, -1, 262, - 112, 622, - -2, 618, + 112, 624, + -2, 620, -1, 263, - 112, 623, - -2, 619, + 112, 625, + -2, 621, -1, 326, - 82, 791, + 82, 793, -2, 60, -1, 327, - 82, 749, + 82, 751, -2, 61, -1, 332, - 82, 729, - -2, 584, - -1, 334, - 82, 770, + 82, 731, -2, 586, - -1, 586, - 1, 344, - 5, 344, - 12, 344, - 13, 344, - 14, 344, - 15, 344, - 17, 344, - 19, 344, - 30, 344, - 31, 344, - 42, 344, - 43, 344, - 44, 344, - 45, 344, - 46, 344, - 48, 344, - 49, 344, - 52, 344, - 53, 344, - 55, 344, - 56, 344, - 263, 344, - -2, 362, - -1, 589, + -1, 334, + 82, 772, + -2, 588, + -1, 587, + 1, 346, + 5, 346, + 12, 346, + 13, 346, + 14, 346, + 15, 346, + 17, 346, + 19, 346, + 30, 346, + 31, 346, + 42, 346, + 43, 346, + 44, 346, + 45, 346, + 46, 346, + 48, 346, + 49, 346, + 52, 346, + 53, 346, + 55, 346, + 56, 346, + 263, 346, + -2, 364, + -1, 590, 53, 43, 55, 43, -2, 45, - -1, 725, - 112, 625, - -2, 621, - -1, 937, + -1, 727, + 112, 627, + -2, 623, + -1, 940, 5, 30, - -2, 428, - -1, 962, + -2, 430, + -1, 965, 5, 29, - -2, 558, - -1, 1202, + -2, 560, + -1, 1207, 5, 30, - -2, 559, - -1, 1252, - 5, 29, -2, 561, - -1, 1325, + -1, 1257, + 5, 29, + -2, 563, + -1, 1330, 5, 30, - -2, 562, + -2, 564, } const yyPrivate = 57344 -const yyLast = 11302 +const yyLast = 11224 var yyAct = [...]int{ - 263, 1360, 1350, 1316, 876, 661, 965, 551, 1264, 1103, - 983, 241, 804, 1137, 1034, 1100, 966, 267, 1104, 903, - 850, 870, 293, 989, 836, 826, 57, 802, 269, 1008, - 1222, 1110, 82, 1116, 856, 750, 204, 1077, 260, 204, - 690, 929, 1037, 760, 550, 3, 1025, 823, 806, 599, - 840, 483, 776, 727, 866, 791, 489, 827, 430, 495, - 784, 294, 51, 232, 503, 598, 322, 204, 82, 325, - 265, 582, 204, 911, 204, 331, 82, 250, 320, 56, - 1353, 1337, 1348, 1323, 1345, 877, 757, 1336, 1322, 583, - 1095, 1196, 565, 435, 1275, 1131, 240, 1145, 1146, 1147, - 1132, 1133, 818, 819, 817, 1150, 1148, 254, 233, 234, - 235, 236, 996, 51, 239, 995, 238, 600, 997, 601, - 456, 246, 759, 24, 25, 52, 27, 28, 1291, 516, - 515, 525, 526, 518, 519, 520, 521, 522, 523, 524, - 517, 237, 43, 527, 1016, 849, 61, 29, 48, 49, - 199, 195, 196, 197, 474, 1225, 1241, 857, 1185, 1183, - 231, 475, 472, 473, 467, 468, 1347, 38, 1344, 461, - 1317, 54, 63, 64, 65, 66, 67, 1058, 785, 841, - 1307, 1265, 1368, 1273, 445, 438, 458, 193, 460, 444, - 984, 986, 669, 204, 1267, 204, 1055, 192, 843, 193, - 660, 204, 1057, 1126, 1125, 1124, 433, 441, 204, 207, - 194, 905, 82, 82, 82, 82, 1296, 82, 457, 459, - 539, 540, 1364, 1205, 1064, 843, 945, 82, 923, 824, - 699, 507, 31, 32, 34, 33, 36, 451, 50, 516, - 515, 525, 526, 518, 519, 520, 521, 522, 523, 524, - 517, 527, 696, 527, 1009, 1154, 502, 82, 1305, 37, - 44, 45, 1266, 70, 46, 47, 35, 985, 198, 517, - 1164, 491, 527, 462, 462, 462, 462, 1149, 462, 39, - 40, 588, 41, 42, 1274, 1272, 857, 1114, 462, 904, - 481, 492, 930, 537, 842, 1292, 1321, 602, 1056, 71, - 1054, 479, 480, 455, 691, 1097, 1155, 777, 51, 541, - 542, 543, 544, 545, 546, 547, 548, 201, 204, 204, - 204, 842, 843, 536, 82, 664, 538, 500, 1362, 1014, - 82, 1363, 1193, 1361, 518, 519, 520, 521, 522, 523, - 524, 517, 1310, 502, 527, 497, 581, 586, 321, 1327, - 777, 431, 952, 432, 549, 434, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 53, 564, 566, 566, 566, - 566, 566, 566, 566, 566, 574, 575, 576, 577, 1232, - 587, 191, 464, 465, 466, 692, 469, 447, 448, 449, - 596, 846, 431, 1231, 493, 1329, 478, 847, 590, 567, - 568, 569, 570, 571, 572, 573, 516, 515, 525, 526, - 518, 519, 520, 521, 522, 523, 524, 517, 842, 54, - 527, 1029, 734, 839, 837, 429, 838, 501, 500, 730, - 204, 835, 841, 942, 1099, 82, 732, 733, 731, 1369, - 1028, 204, 204, 82, 502, 204, 317, 318, 204, 702, - 703, 1017, 204, 437, 82, 82, 82, 82, 82, 82, - 82, 82, 520, 521, 522, 523, 524, 517, 82, 82, - 527, 941, 1303, 940, 442, 1306, 443, 204, 1370, 463, - 1248, 22, 450, 501, 500, 501, 500, 1229, 1061, 452, - 501, 500, 920, 921, 922, 82, 462, 501, 500, 204, - 502, 1026, 502, 704, 462, 82, 751, 502, 752, 998, - 1009, 999, 1004, 698, 502, 462, 462, 462, 462, 462, - 462, 462, 462, 1270, 1346, 676, 879, 678, 753, 462, - 462, 439, 440, 728, 717, 719, 720, 675, 292, 729, - 718, 245, 1333, 482, 1270, 1314, 482, 328, 726, 82, - 697, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 744, 745, 746, 747, 748, 749, 674, 501, 500, 721, - 80, 706, 1270, 482, 1270, 1297, 769, 772, 1270, 1269, - 204, 723, 778, 725, 502, 1220, 1219, 1330, 204, 204, - 665, 663, 204, 204, 1207, 482, 82, 658, 764, 580, - 51, 589, 1204, 482, 659, 453, 330, 1161, 1160, 82, - 754, 755, 668, 446, 436, 553, 586, 1157, 1158, 812, - 586, 774, 1280, 679, 680, 681, 682, 683, 684, 685, - 686, 1157, 1156, 935, 482, 788, 482, 687, 688, 852, - 853, 854, 855, 1078, 762, 482, 609, 608, 24, 803, - 810, 1279, 1276, 587, 24, 863, 864, 865, 858, 859, - 860, 204, 781, 815, 82, 814, 82, 1151, 831, 990, - 204, 990, 960, 204, 82, 844, 961, 765, 766, 872, - 1080, 1101, 1251, 773, 1113, 811, 593, 592, 1067, 1113, - 204, 58, 204, 204, 762, 787, 54, 780, 1200, 782, - 783, 788, 54, 662, 1163, 947, 1159, 1000, 816, 868, - 869, 610, 788, 1082, 1113, 1086, 24, 1081, 944, 1079, - 788, 935, 666, 667, 1084, 462, 670, 462, 594, 673, - 592, 935, 935, 1083, 595, 462, 525, 526, 518, 519, - 520, 521, 522, 523, 524, 517, 1085, 1087, 527, 946, - 330, 330, 330, 330, 728, 330, 913, 912, 693, 700, - 729, 874, 943, 247, 54, 330, 54, 1338, 1313, 1236, - 1227, 926, 927, 928, 851, 725, 1212, 871, 1142, 1003, - 713, 1117, 1118, 705, 867, 925, 924, 862, 861, 204, - 204, 204, 204, 204, 1355, 505, 1351, 1144, 1120, 1101, - 1030, 204, 672, 328, 204, 967, 476, 712, 204, 1045, - 977, 54, 204, 1123, 1122, 978, 974, 586, 586, 586, - 586, 586, 973, 1342, 1335, 975, 1063, 82, 951, 962, - 976, 908, 586, 880, 919, 882, 992, 1341, 1043, 991, - 586, 761, 763, 901, 251, 252, 963, 964, 764, 496, - 587, 587, 587, 587, 587, 980, 988, 779, 918, 917, - 968, 786, 330, 971, 494, 803, 993, 987, 604, 979, - 1010, 797, 798, 587, 813, 82, 82, 1021, 82, 969, - 970, 934, 972, 484, 1001, 607, 454, 1018, 1019, 1006, - 1007, 1013, 1237, 1312, 256, 485, 1311, 949, 1249, 1011, - 1005, 82, 1198, 881, 1020, 1044, 1022, 1023, 1024, 1027, - 1049, 1046, 1039, 1047, 1042, 204, 671, 801, 1040, 1041, - 248, 249, 496, 916, 82, 242, 1285, 243, 1050, 58, - 1284, 915, 1048, 1239, 990, 477, 689, 462, 1051, 1357, - 1356, 1357, 875, 1060, 498, 1293, 1226, 1036, 695, 60, - 62, 899, 591, 55, 900, 1, 1349, 878, 1033, 887, - 1315, 1263, 462, 1136, 82, 82, 834, 1102, 1071, 1073, - 1074, 902, 825, 330, 69, 428, 1096, 1088, 967, 1076, - 1089, 330, 1090, 1091, 1105, 1093, 1094, 724, 82, 1112, - 68, 1304, 330, 330, 330, 330, 330, 330, 330, 330, - 833, 82, 832, 82, 82, 1121, 330, 330, 1107, 1271, - 1224, 1070, 845, 1015, 848, 1130, 1128, 1143, 1309, 1127, - 1012, 725, 615, 1106, 613, 51, 1134, 614, 612, 1139, - 617, 204, 616, 708, 611, 215, 1140, 1141, 323, 82, - 800, 603, 873, 505, 932, 1032, 330, 499, 933, 72, - 1053, 1052, 82, 204, 883, 937, 938, 939, 470, 82, - 1135, 471, 217, 535, 948, 82, 1152, 1153, 204, 954, - 1059, 955, 956, 957, 958, 328, 914, 994, 329, 1108, - 1172, 701, 488, 1283, 1238, 950, 562, 756, 828, 775, - 1173, 268, 1190, 982, 716, 1174, 586, 770, 770, 1178, - 1179, 1165, 1180, 770, 1181, 1182, 281, 1184, 278, 280, - 279, 1176, 707, 959, 1167, 509, 266, 1170, 1199, 258, - 585, 578, 792, 283, 282, 285, 286, 287, 288, 587, - 1209, 967, 284, 289, 330, 82, 790, 486, 490, 1208, - 1218, 789, 1119, 82, 1115, 584, 1066, 330, 1195, 793, - 796, 797, 798, 794, 508, 795, 799, 1194, 1290, 1221, - 711, 26, 59, 82, 82, 82, 516, 515, 525, 526, - 518, 519, 520, 521, 522, 523, 524, 517, 1234, 724, - 527, 253, 19, 18, 17, 20, 1214, 1215, 1216, 552, - 16, 1228, 1001, 1230, 15, 14, 1065, 30, 563, 21, - 13, 12, 330, 11, 330, 82, 82, 10, 82, 9, - 8, 7, 330, 82, 1240, 82, 82, 82, 204, 1250, - 1257, 82, 1235, 1105, 462, 1075, 6, 5, 1242, 1243, - 1262, 1244, 1245, 1246, 1268, 4, 244, 82, 330, 23, - 893, 2, 0, 1258, 0, 1259, 1260, 1261, 1252, 793, - 796, 797, 798, 794, 892, 795, 799, 0, 0, 1117, - 1118, 1294, 1106, 0, 0, 1253, 0, 1281, 0, 0, - 0, 82, 1302, 1301, 1105, 0, 1277, 0, 1278, 0, - 0, 0, 897, 0, 0, 0, 0, 0, 0, 0, - 0, 891, 0, 1319, 0, 0, 0, 82, 1295, 1282, - 1324, 0, 0, 0, 0, 0, 828, 0, 204, 0, - 0, 967, 1162, 1106, 0, 51, 0, 0, 82, 0, - 1331, 0, 0, 0, 0, 0, 770, 0, 0, 0, - 0, 0, 1233, 0, 1169, 0, 1339, 1340, 0, 82, - 0, 888, 885, 886, 0, 884, 0, 0, 0, 0, - 0, 0, 1354, 0, 1045, 0, 0, 1035, 0, 1365, - 0, 1175, 0, 0, 0, 330, 487, 0, 1177, 1343, - 0, 0, 694, 0, 0, 0, 895, 898, 0, 1186, - 1187, 1188, 0, 1043, 1191, 0, 0, 0, 0, 0, - 0, 1358, 0, 0, 0, 714, 715, 1201, 1202, 1203, - 0, 1206, 202, 1069, 0, 230, 0, 0, 0, 1352, - 0, 0, 890, 1031, 330, 0, 330, 0, 1217, 0, - 0, 0, 0, 0, 0, 1092, 0, 0, 0, 0, - 257, 0, 0, 202, 889, 0, 0, 0, 202, 330, - 202, 0, 0, 0, 0, 0, 0, 0, 552, 0, - 1044, 767, 768, 0, 0, 1049, 1046, 1039, 1047, 1042, - 0, 0, 330, 1040, 1041, 0, 1192, 482, 0, 0, - 0, 0, 0, 0, 894, 0, 0, 1048, 0, 0, - 828, 0, 828, 1038, 330, 0, 1247, 896, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 822, 0, 770, - 0, 0, 1109, 1111, 516, 515, 525, 526, 518, 519, - 520, 521, 522, 523, 524, 517, 0, 0, 527, 0, - 0, 0, 0, 0, 0, 0, 1111, 0, 0, 0, - 0, 0, 0, 1286, 1287, 1288, 1289, 0, 213, 330, - 0, 330, 1138, 0, 1069, 0, 0, 0, 0, 0, - 1298, 1299, 1300, 0, 0, 0, 0, 0, 0, 202, - 0, 202, 226, 0, 0, 0, 0, 202, 0, 0, - 0, 0, 0, 0, 202, 0, 0, 1166, 0, 0, - 0, 1320, 0, 0, 0, 0, 1325, 0, 0, 1328, - 1168, 0, 909, 910, 482, 490, 0, 1171, 0, 0, - 0, 0, 0, 330, 0, 0, 1332, 0, 0, 0, - 0, 0, 0, 208, 828, 0, 0, 0, 0, 0, - 210, 0, 0, 0, 0, 0, 0, 0, 216, 212, - 0, 516, 515, 525, 526, 518, 519, 520, 521, 522, - 523, 524, 517, 1035, 828, 527, 0, 0, 0, 1366, - 1367, 0, 770, 0, 0, 0, 0, 936, 0, 0, - 214, 0, 0, 218, 0, 0, 225, 0, 0, 1189, - 482, 0, 953, 330, 0, 0, 0, 0, 0, 0, - 0, 1223, 0, 0, 202, 202, 202, 0, 0, 0, - 0, 0, 209, 0, 0, 0, 0, 0, 0, 0, - 0, 330, 330, 330, 0, 0, 0, 516, 515, 525, - 526, 518, 519, 520, 521, 522, 523, 524, 517, 219, - 211, 527, 220, 221, 222, 224, 223, 229, 0, 0, - 0, 0, 0, 228, 227, 0, 0, 0, 0, 0, - 0, 0, 0, 1254, 1255, 0, 1256, 0, 0, 0, - 0, 1223, 0, 1223, 1223, 1223, 0, 0, 0, 1138, - 511, 0, 514, 0, 0, 0, 0, 0, 528, 529, - 530, 531, 532, 533, 534, 1223, 512, 513, 510, 516, - 515, 525, 526, 518, 519, 520, 521, 522, 523, 524, - 517, 0, 0, 527, 0, 0, 202, 0, 0, 1072, - 1062, 0, 0, 0, 0, 0, 0, 202, 202, 1308, - 0, 202, 0, 0, 202, 0, 0, 0, 677, 516, - 515, 525, 526, 518, 519, 520, 521, 522, 523, 524, - 517, 0, 770, 527, 0, 1326, 0, 0, 0, 0, - 0, 0, 0, 202, 0, 0, 0, 1098, 0, 0, - 0, 0, 0, 0, 0, 0, 1334, 0, 0, 0, - 0, 0, 0, 0, 0, 202, 931, 0, 0, 0, - 0, 0, 0, 0, 677, 0, 0, 1223, 0, 0, - 0, 0, 0, 0, 0, 1129, 516, 515, 525, 526, - 518, 519, 520, 521, 522, 523, 524, 517, 0, 0, - 527, 516, 515, 525, 526, 518, 519, 520, 521, 522, - 523, 524, 517, 0, 0, 527, 257, 0, 0, 0, - 0, 257, 257, 0, 0, 771, 771, 257, 0, 0, - 0, 771, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 257, 257, 257, 257, 632, 202, 0, 0, 0, - 0, 0, 0, 0, 202, 808, 0, 0, 202, 202, - 515, 525, 526, 518, 519, 520, 521, 522, 523, 524, - 517, 0, 0, 527, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1197, 0, 0, 0, 0, 0, - 0, 552, 0, 0, 0, 0, 0, 0, 0, 1210, - 0, 0, 1211, 0, 0, 1213, 0, 0, 0, 0, - 0, 0, 0, 620, 0, 0, 0, 202, 0, 0, - 0, 0, 0, 0, 0, 0, 202, 0, 0, 202, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 202, 0, 906, 907, - 633, 0, 0, 0, 0, 0, 677, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, - 0, 0, 646, 647, 648, 649, 650, 651, 652, 0, - 653, 654, 655, 656, 657, 634, 635, 636, 637, 618, - 619, 0, 0, 621, 0, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 638, 639, 640, 641, 642, - 643, 644, 645, 0, 0, 257, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 257, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 771, 202, 202, 202, 202, 202, - 0, 0, 0, 0, 0, 0, 0, 981, 0, 0, - 202, 0, 0, 0, 808, 0, 0, 0, 202, 1318, - 552, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 263, 1365, 1355, 1321, 878, 662, 968, 1227, 552, 267, + 1269, 1107, 986, 1141, 969, 1104, 1037, 828, 293, 829, + 806, 804, 906, 57, 838, 1108, 1120, 872, 551, 3, + 825, 1114, 82, 1011, 1081, 932, 204, 331, 762, 204, + 992, 759, 600, 241, 752, 692, 1040, 1028, 793, 232, + 778, 729, 294, 51, 842, 808, 484, 490, 430, 584, + 852, 496, 583, 265, 868, 599, 325, 204, 82, 320, + 786, 914, 204, 504, 204, 322, 82, 250, 56, 1358, + 240, 1342, 1353, 462, 566, 1328, 1350, 895, 879, 1341, + 1099, 1201, 435, 1327, 233, 234, 235, 236, 1280, 858, + 239, 894, 254, 601, 51, 602, 457, 199, 195, 196, + 197, 1135, 246, 1136, 1137, 269, 1296, 517, 516, 526, + 527, 519, 520, 521, 522, 523, 524, 525, 518, 899, + 819, 528, 260, 61, 238, 1149, 1150, 1151, 893, 999, + 237, 475, 998, 1154, 1152, 1000, 820, 821, 476, 473, + 474, 1019, 851, 1230, 1246, 859, 761, 231, 1190, 63, + 64, 65, 66, 67, 1188, 468, 469, 1352, 1349, 1322, + 1082, 1061, 459, 787, 461, 445, 1312, 843, 1373, 987, + 989, 1270, 446, 438, 1369, 192, 193, 193, 890, 887, + 888, 1062, 886, 204, 1272, 204, 671, 1130, 845, 661, + 441, 204, 1278, 1058, 458, 460, 845, 1084, 204, 1060, + 1129, 1128, 82, 82, 82, 82, 433, 82, 207, 194, + 540, 541, 1301, 897, 900, 198, 1210, 82, 1068, 521, + 522, 523, 524, 525, 518, 1012, 948, 528, 926, 701, + 1086, 1158, 1090, 508, 1085, 452, 1083, 518, 826, 528, + 528, 1088, 693, 698, 502, 501, 988, 82, 431, 892, + 1087, 1103, 1271, 908, 463, 463, 463, 463, 492, 463, + 501, 503, 503, 1089, 1091, 493, 1310, 70, 1168, 463, + 1118, 891, 603, 1297, 859, 1101, 503, 480, 481, 456, + 1367, 429, 1159, 1368, 844, 1366, 465, 466, 467, 51, + 470, 1326, 844, 1279, 1277, 1059, 944, 1057, 943, 437, + 479, 502, 501, 71, 537, 1153, 779, 539, 204, 204, + 204, 896, 736, 848, 82, 502, 501, 845, 503, 849, + 82, 665, 482, 694, 898, 945, 734, 735, 733, 1017, + 582, 907, 503, 1315, 779, 550, 955, 554, 555, 556, + 557, 558, 559, 560, 561, 562, 431, 565, 567, 567, + 567, 567, 567, 567, 567, 567, 575, 576, 577, 578, + 498, 588, 1332, 448, 449, 450, 719, 721, 722, 191, + 538, 494, 720, 1237, 1236, 502, 501, 439, 440, 591, + 54, 568, 569, 570, 571, 572, 573, 574, 1032, 597, + 732, 1031, 503, 542, 543, 544, 545, 546, 547, 548, + 549, 517, 516, 526, 527, 519, 520, 521, 522, 523, + 524, 525, 518, 844, 1020, 528, 704, 705, 841, 839, + 204, 840, 1374, 22, 587, 82, 837, 843, 923, 924, + 925, 204, 204, 82, 317, 318, 204, 1334, 753, 204, + 754, 1311, 1001, 204, 1002, 82, 82, 82, 82, 82, + 82, 82, 82, 464, 933, 1253, 1234, 1065, 1029, 82, + 82, 1375, 1275, 1351, 502, 501, 1338, 483, 204, 519, + 520, 521, 522, 523, 524, 525, 518, 463, 292, 528, + 680, 503, 1308, 245, 1012, 463, 82, 1275, 1319, 483, + 204, 1275, 483, 1275, 1302, 1335, 82, 463, 463, 463, + 463, 463, 463, 463, 463, 672, 1275, 1274, 660, 1007, + 80, 463, 463, 24, 678, 881, 669, 1225, 1224, 1285, + 730, 328, 1212, 483, 1209, 483, 706, 755, 681, 682, + 683, 684, 685, 686, 687, 688, 727, 963, 700, 677, + 82, 964, 689, 690, 676, 666, 330, 283, 282, 285, + 286, 287, 288, 664, 436, 659, 284, 289, 454, 771, + 774, 54, 708, 1165, 1164, 780, 1161, 1162, 594, 723, + 725, 204, 447, 766, 1284, 699, 1161, 1160, 1281, 204, + 204, 483, 51, 204, 204, 938, 483, 82, 790, 483, + 764, 483, 502, 501, 756, 757, 1155, 554, 610, 609, + 82, 846, 1105, 1117, 814, 1117, 764, 1205, 783, 503, + 595, 790, 593, 993, 776, 24, 1167, 731, 517, 516, + 526, 527, 519, 520, 521, 522, 523, 524, 525, 518, + 24, 805, 528, 728, 993, 588, 737, 738, 739, 740, + 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, + 751, 812, 204, 816, 817, 82, 790, 82, 1256, 833, + 58, 204, 204, 54, 789, 204, 82, 1163, 1071, 950, + 854, 855, 856, 857, 1003, 818, 874, 1117, 54, 947, + 938, 813, 204, 593, 204, 204, 865, 866, 867, 790, + 330, 330, 330, 330, 587, 330, 593, 596, 587, 702, + 938, 670, 767, 768, 247, 330, 54, 463, 775, 463, + 870, 871, 938, 949, 860, 861, 862, 1343, 463, 1197, + 483, 1318, 782, 946, 784, 785, 1241, 1232, 853, 727, + 795, 798, 799, 800, 796, 506, 797, 801, 882, 1217, + 884, 873, 730, 1146, 1121, 1122, 1127, 1006, 869, 904, + 915, 864, 54, 916, 863, 663, 876, 517, 516, 526, + 527, 519, 520, 521, 522, 523, 524, 525, 518, 927, + 1360, 528, 1356, 1148, 1124, 928, 1105, 328, 1033, 674, + 477, 204, 204, 204, 204, 204, 980, 978, 1126, 970, + 714, 981, 979, 204, 977, 982, 204, 799, 800, 976, + 204, 1347, 330, 1340, 204, 965, 251, 252, 605, 1067, + 911, 497, 1346, 921, 920, 485, 707, 1024, 954, 82, + 1203, 608, 455, 1016, 766, 994, 495, 486, 1317, 966, + 967, 1316, 1254, 588, 588, 588, 588, 588, 1004, 731, + 983, 972, 973, 971, 975, 995, 974, 1014, 805, 1008, + 990, 996, 1242, 883, 673, 991, 588, 929, 930, 931, + 922, 803, 248, 249, 497, 919, 1013, 82, 82, 242, + 82, 1290, 243, 918, 763, 765, 58, 1289, 1244, 1023, + 993, 1025, 1026, 1027, 478, 1009, 1010, 1362, 1361, 62, + 781, 691, 499, 1362, 82, 1298, 587, 587, 587, 587, + 587, 1231, 1030, 697, 60, 592, 55, 937, 204, 1, + 1354, 587, 880, 330, 1036, 889, 1320, 82, 1268, 587, + 463, 330, 1140, 952, 1053, 1039, 836, 827, 69, 428, + 68, 1309, 835, 330, 330, 330, 330, 330, 330, 330, + 330, 1064, 834, 1276, 1021, 1022, 463, 330, 330, 1229, + 847, 1035, 1018, 850, 1147, 1075, 1314, 82, 82, 1074, + 1106, 1015, 726, 970, 616, 614, 1100, 1080, 615, 613, + 1093, 618, 617, 1109, 710, 612, 727, 1063, 215, 1092, + 323, 82, 802, 604, 506, 1111, 875, 330, 500, 72, + 1056, 1125, 1055, 885, 82, 471, 82, 82, 472, 1116, + 217, 536, 256, 917, 997, 329, 1132, 1110, 1112, 51, + 703, 1138, 1131, 489, 1288, 1139, 1243, 953, 563, 777, + 268, 718, 1143, 281, 204, 1134, 278, 280, 758, 279, + 709, 962, 82, 1144, 1145, 510, 266, 258, 772, 772, + 586, 579, 1156, 1157, 772, 82, 204, 794, 792, 791, + 328, 1123, 82, 204, 1119, 585, 1077, 1078, 1070, 82, + 1200, 1295, 204, 830, 713, 26, 59, 253, 19, 1094, + 1095, 18, 1097, 1098, 17, 330, 20, 1177, 935, 16, + 1169, 15, 936, 1179, 14, 443, 30, 21, 330, 940, + 941, 942, 13, 1171, 12, 11, 1174, 10, 951, 9, + 8, 1178, 7, 957, 1186, 958, 959, 960, 961, 6, + 5, 4, 1204, 244, 588, 23, 2, 970, 0, 0, + 0, 0, 1214, 0, 0, 0, 0, 985, 0, 82, + 1213, 0, 0, 1183, 1184, 0, 1185, 82, 0, 1187, + 0, 1189, 1199, 330, 0, 330, 0, 0, 1004, 0, + 0, 0, 0, 0, 330, 726, 488, 82, 82, 82, + 0, 0, 0, 0, 0, 0, 1223, 0, 0, 0, + 589, 1219, 1220, 1221, 1239, 0, 0, 587, 1240, 0, + 330, 516, 526, 527, 519, 520, 521, 522, 523, 524, + 525, 518, 202, 1226, 528, 230, 0, 0, 0, 1181, + 82, 82, 0, 82, 0, 0, 201, 0, 82, 463, + 82, 82, 82, 204, 1109, 1263, 82, 1264, 1265, 1266, + 257, 1255, 0, 202, 0, 0, 0, 1257, 202, 1273, + 202, 0, 82, 1267, 0, 0, 0, 321, 0, 1286, + 1238, 0, 432, 0, 434, 487, 491, 1262, 1110, 0, + 1233, 1258, 1235, 0, 1282, 0, 1283, 0, 1299, 0, + 1079, 0, 509, 0, 0, 1109, 82, 0, 772, 1307, + 1306, 0, 0, 0, 1245, 0, 0, 1300, 0, 0, + 0, 0, 830, 1048, 0, 1287, 0, 0, 0, 1324, + 0, 0, 82, 0, 0, 1329, 0, 553, 970, 1110, + 0, 51, 0, 204, 0, 0, 564, 330, 0, 0, + 0, 0, 1046, 82, 0, 1336, 0, 1247, 1248, 0, + 1249, 1250, 1251, 0, 0, 0, 0, 0, 0, 0, + 0, 1344, 1345, 1038, 82, 0, 0, 0, 0, 0, + 0, 1348, 0, 0, 0, 0, 0, 1359, 0, 202, + 0, 202, 0, 0, 1370, 1034, 330, 202, 330, 0, + 0, 0, 0, 442, 202, 444, 795, 798, 799, 800, + 796, 451, 797, 801, 0, 0, 1121, 1122, 453, 1047, + 1073, 0, 330, 0, 1052, 1049, 1042, 1050, 1045, 0, + 1048, 0, 1043, 1044, 0, 1357, 0, 1180, 0, 0, + 0, 0, 1096, 0, 1182, 330, 1051, 0, 0, 0, + 0, 0, 1054, 0, 0, 1191, 1192, 1193, 0, 1046, + 1196, 0, 0, 0, 0, 0, 0, 330, 0, 0, + 0, 0, 0, 1206, 1207, 1208, 0, 1211, 0, 0, + 0, 0, 772, 0, 0, 1113, 1115, 0, 0, 0, + 0, 0, 0, 0, 1222, 0, 0, 830, 0, 830, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1115, + 0, 0, 0, 0, 202, 202, 202, 0, 0, 0, + 1363, 696, 330, 0, 330, 1142, 1047, 0, 581, 0, + 590, 1052, 1049, 1042, 1050, 1045, 0, 0, 0, 1043, + 1044, 0, 0, 0, 716, 717, 0, 0, 0, 0, + 0, 0, 0, 1051, 0, 0, 0, 0, 0, 1041, + 1170, 0, 1073, 1252, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1172, 0, 0, 0, 0, 0, 0, + 1175, 0, 0, 0, 0, 0, 0, 330, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 553, 0, 0, + 769, 770, 0, 0, 0, 0, 0, 0, 0, 0, + 1291, 1292, 1293, 1294, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 202, 1303, 1304, 1305, + 0, 0, 830, 0, 0, 0, 772, 202, 202, 0, + 611, 0, 202, 0, 0, 202, 824, 0, 0, 679, + 0, 667, 668, 0, 0, 0, 321, 330, 1325, 675, + 0, 1038, 830, 1330, 0, 1228, 0, 0, 0, 0, + 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, + 0, 0, 0, 1337, 0, 330, 330, 330, 695, 0, + 0, 1076, 0, 0, 0, 0, 202, 0, 0, 0, + 0, 0, 0, 0, 0, 679, 0, 0, 0, 0, + 715, 517, 516, 526, 527, 519, 520, 521, 522, 523, + 524, 525, 518, 0, 0, 528, 1371, 1372, 1259, 1260, + 0, 1261, 0, 0, 0, 0, 1228, 0, 1228, 1228, + 1228, 0, 912, 913, 1142, 491, 0, 257, 0, 0, + 0, 0, 257, 257, 0, 0, 773, 773, 257, 0, + 1228, 0, 773, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 257, 257, 257, 257, 0, 202, 0, 0, + 0, 0, 0, 0, 0, 202, 810, 0, 0, 202, + 202, 788, 0, 0, 1313, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 815, 0, 0, 939, 0, 0, + 0, 24, 25, 52, 27, 28, 0, 772, 0, 0, + 1331, 0, 956, 0, 0, 0, 0, 0, 0, 0, + 43, 0, 0, 0, 0, 29, 48, 49, 0, 0, + 0, 1339, 526, 527, 519, 520, 521, 522, 523, 524, + 525, 518, 0, 213, 528, 38, 0, 0, 202, 54, + 0, 0, 1228, 0, 0, 0, 0, 202, 202, 0, + 0, 202, 877, 0, 0, 0, 0, 226, 0, 0, + 0, 901, 902, 0, 0, 903, 0, 0, 202, 0, + 909, 910, 0, 0, 0, 0, 0, 0, 679, 0, + 0, 0, 905, 0, 0, 0, 0, 0, 0, 0, + 257, 0, 0, 0, 0, 0, 0, 633, 0, 0, + 31, 32, 34, 33, 36, 0, 50, 0, 208, 0, + 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, + 0, 0, 0, 216, 212, 0, 0, 37, 44, 45, + 0, 1066, 46, 47, 35, 0, 0, 257, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, + 41, 42, 0, 257, 0, 214, 1194, 483, 218, 0, + 0, 225, 0, 0, 0, 0, 773, 202, 202, 202, + 202, 202, 0, 0, 0, 621, 0, 0, 1102, 984, + 0, 0, 202, 0, 0, 0, 810, 209, 0, 0, + 202, 0, 0, 0, 517, 516, 526, 527, 519, 520, + 521, 522, 523, 524, 525, 518, 0, 1198, 528, 0, + 0, 0, 634, 0, 219, 211, 1133, 220, 221, 222, + 224, 223, 229, 0, 0, 0, 0, 0, 228, 227, + 0, 0, 0, 53, 647, 648, 649, 650, 651, 652, + 653, 0, 654, 655, 656, 657, 658, 635, 636, 637, + 638, 619, 620, 0, 0, 622, 0, 623, 624, 625, + 626, 627, 628, 629, 630, 631, 632, 639, 640, 641, + 642, 643, 644, 645, 646, 0, 0, 0, 0, 0, + 0, 517, 516, 526, 527, 519, 520, 521, 522, 523, + 524, 525, 518, 0, 202, 528, 0, 0, 0, 0, + 0, 0, 0, 1195, 257, 0, 0, 0, 1069, 0, + 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 679, 1202, 0, 0, 0, + 0, 0, 0, 553, 0, 0, 0, 0, 0, 0, + 773, 1215, 0, 512, 1216, 515, 0, 1218, 0, 0, + 0, 529, 530, 531, 532, 533, 534, 535, 0, 513, + 514, 511, 517, 516, 526, 527, 519, 520, 521, 522, + 523, 524, 525, 518, 0, 0, 528, 517, 516, 526, + 527, 519, 520, 521, 522, 523, 524, 525, 518, 0, + 0, 528, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, + 202, 103, 0, 0, 0, 0, 0, 119, 0, 121, + 0, 0, 157, 130, 1166, 0, 0, 0, 0, 0, + 0, 0, 202, 0, 934, 0, 0, 0, 0, 202, + 0, 81, 0, 0, 0, 0, 1173, 0, 202, 0, + 96, 0, 0, 1176, 517, 516, 526, 527, 519, 520, + 521, 522, 523, 524, 525, 518, 0, 0, 528, 0, + 0, 0, 0, 0, 0, 0, 0, 517, 516, 526, + 527, 519, 520, 521, 522, 523, 524, 525, 518, 0, + 0, 528, 0, 0, 773, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 108, 0, 0, 0, 205, + 0, 0, 1323, 553, 144, 0, 160, 110, 118, 84, + 90, 0, 109, 136, 149, 153, 0, 0, 0, 99, + 0, 151, 140, 173, 0, 141, 150, 122, 165, 145, + 172, 206, 180, 162, 179, 186, 85, 161, 171, 97, + 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, + 102, 106, 101, 137, 166, 167, 100, 189, 91, 178, + 89, 92, 177, 135, 164, 170, 129, 126, 88, 168, + 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, + 131, 133, 0, 0, 0, 158, 175, 190, 94, 810, + 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, + 134, 93, 113, 155, 116, 123, 147, 188, 139, 152, + 98, 174, 156, 517, 516, 526, 527, 519, 520, 521, + 522, 523, 524, 525, 518, 0, 0, 528, 0, 0, + 83, 0, 120, 187, 146, 105, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 257, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 257, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 677, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 0, 0, 771, 0, 0, - 0, 0, 0, 103, 0, 0, 0, 0, 0, 119, - 0, 121, 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 773, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 202, 0, 516, - 515, 525, 526, 518, 519, 520, 521, 522, 523, 524, - 517, 0, 0, 527, 0, 0, 0, 0, 0, 202, - 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, - 0, 205, 0, 0, 202, 0, 144, 0, 160, 110, - 118, 84, 90, 0, 109, 136, 149, 153, 0, 0, - 0, 99, 0, 151, 140, 173, 0, 141, 150, 122, + 0, 416, 407, 1333, 378, 419, 356, 370, 427, 371, + 372, 400, 342, 386, 138, 368, 0, 359, 337, 365, + 338, 357, 380, 103, 383, 355, 409, 389, 418, 119, + 425, 121, 394, 0, 157, 130, 0, 0, 382, 411, + 384, 405, 377, 401, 347, 393, 420, 369, 398, 421, + 0, 0, 0, 81, 0, 831, 832, 0, 0, 0, + 0, 0, 96, 0, 396, 415, 367, 397, 399, 336, + 395, 0, 340, 343, 426, 413, 362, 363, 1005, 0, + 0, 0, 0, 0, 0, 381, 385, 402, 375, 0, + 0, 0, 0, 0, 0, 0, 0, 360, 0, 392, + 0, 0, 0, 344, 341, 0, 0, 379, 0, 0, + 0, 346, 0, 361, 403, 0, 335, 108, 406, 412, + 376, 205, 414, 374, 373, 417, 144, 0, 160, 110, + 118, 84, 90, 0, 109, 136, 149, 153, 410, 358, + 366, 99, 364, 151, 140, 173, 391, 141, 150, 122, 165, 145, 172, 206, 180, 162, 179, 186, 85, 161, 171, 97, 154, 87, 169, 159, 128, 114, 115, 86, - 771, 148, 102, 106, 101, 137, 166, 167, 100, 189, + 0, 148, 102, 106, 101, 137, 166, 167, 100, 189, 91, 178, 89, 92, 177, 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, 104, 111, 142, 124, 143, - 112, 132, 131, 133, 0, 0, 0, 158, 175, 190, - 94, 0, 163, 181, 182, 183, 184, 185, 0, 0, + 112, 132, 131, 133, 0, 339, 0, 158, 175, 190, + 94, 354, 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, 123, 147, 188, - 139, 152, 98, 174, 156, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 83, 0, 120, 187, 146, 105, 176, 416, + 139, 152, 98, 174, 156, 350, 353, 348, 349, 387, + 388, 422, 423, 424, 404, 345, 0, 351, 352, 0, + 408, 390, 83, 0, 120, 187, 146, 105, 176, 416, 407, 0, 378, 419, 356, 370, 427, 371, 372, 400, - 342, 386, 138, 368, 808, 359, 337, 365, 338, 357, + 342, 386, 138, 368, 0, 359, 337, 365, 338, 357, 380, 103, 383, 355, 409, 389, 418, 119, 425, 121, 394, 0, 157, 130, 0, 0, 382, 411, 384, 405, 377, 401, 347, 393, 420, 369, 398, 421, 0, 0, - 0, 81, 0, 829, 830, 0, 0, 0, 0, 0, + 0, 81, 0, 831, 832, 0, 0, 0, 0, 0, 96, 0, 396, 415, 367, 397, 399, 336, 395, 0, - 340, 343, 426, 413, 362, 363, 1002, 0, 0, 0, + 340, 343, 426, 413, 362, 363, 0, 0, 0, 0, 0, 0, 0, 381, 385, 402, 375, 0, 0, 0, - 771, 0, 0, 0, 0, 360, 0, 392, 0, 0, - 0, 344, 341, 0, 202, 379, 0, 0, 0, 346, + 0, 0, 0, 0, 0, 360, 0, 392, 0, 0, + 0, 344, 341, 0, 0, 379, 0, 0, 0, 346, 0, 361, 403, 0, 335, 108, 406, 412, 376, 205, 414, 374, 373, 417, 144, 0, 160, 110, 118, 84, 90, 0, 109, 136, 149, 153, 410, 358, 366, 99, @@ -990,8 +1008,8 @@ var yyAct = [...]int{ 138, 368, 0, 359, 337, 365, 338, 357, 380, 103, 383, 355, 409, 389, 418, 119, 425, 121, 394, 0, 157, 130, 0, 0, 382, 411, 384, 405, 377, 401, - 347, 393, 420, 369, 398, 421, 0, 0, 0, 81, - 0, 829, 830, 0, 0, 0, 0, 0, 96, 0, + 347, 393, 420, 369, 398, 421, 54, 0, 0, 81, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 396, 415, 367, 397, 399, 336, 395, 0, 340, 343, 426, 413, 362, 363, 0, 0, 0, 0, 0, 0, 0, 381, 385, 402, 375, 0, 0, 0, 0, 0, @@ -1016,11 +1034,11 @@ var yyAct = [...]int{ 0, 359, 337, 365, 338, 357, 380, 103, 383, 355, 409, 389, 418, 119, 425, 121, 394, 0, 157, 130, 0, 0, 382, 411, 384, 405, 377, 401, 347, 393, - 420, 369, 398, 421, 54, 0, 0, 81, 0, 0, + 420, 369, 398, 421, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 396, 415, 367, 397, 399, 336, 395, 0, 340, 343, 426, 413, 362, 363, 0, 0, 0, 0, 0, 0, 0, 381, - 385, 402, 375, 0, 0, 0, 0, 0, 0, 0, + 385, 402, 375, 0, 0, 0, 0, 0, 0, 1072, 0, 360, 0, 392, 0, 0, 0, 344, 341, 0, 0, 379, 0, 0, 0, 346, 0, 361, 403, 0, 335, 108, 406, 412, 376, 205, 414, 374, 373, 417, @@ -1042,11 +1060,11 @@ var yyAct = [...]int{ 337, 365, 338, 357, 380, 103, 383, 355, 409, 389, 418, 119, 425, 121, 394, 0, 157, 130, 0, 0, 382, 411, 384, 405, 377, 401, 347, 393, 420, 369, - 398, 421, 0, 0, 0, 81, 0, 0, 0, 0, + 398, 421, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 396, 415, 367, 397, 399, 336, 395, 0, 340, 343, 426, 413, 362, 363, 0, 0, 0, 0, 0, 0, 0, 381, 385, 402, - 375, 0, 0, 0, 0, 0, 0, 1068, 0, 360, + 375, 0, 0, 0, 0, 0, 0, 724, 0, 360, 0, 392, 0, 0, 0, 344, 341, 0, 0, 379, 0, 0, 0, 346, 0, 361, 403, 0, 335, 108, 406, 412, 376, 205, 414, 374, 373, 417, 144, 0, @@ -1068,11 +1086,11 @@ var yyAct = [...]int{ 338, 357, 380, 103, 383, 355, 409, 389, 418, 119, 425, 121, 394, 0, 157, 130, 0, 0, 382, 411, 384, 405, 377, 401, 347, 393, 420, 369, 398, 421, - 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 396, 415, 367, 397, 399, 336, 395, 0, 340, 343, 426, 413, 362, 363, 0, 0, 0, 0, 0, 0, 0, 381, 385, 402, 375, 0, - 0, 0, 0, 0, 0, 722, 0, 360, 0, 392, + 0, 0, 0, 0, 0, 0, 0, 360, 0, 392, 0, 0, 0, 344, 341, 0, 0, 379, 0, 0, 0, 346, 0, 361, 403, 0, 335, 108, 406, 412, 376, 205, 414, 374, 373, 417, 144, 0, 160, 110, @@ -1094,7 +1112,7 @@ var yyAct = [...]int{ 380, 103, 383, 355, 409, 389, 418, 119, 425, 121, 394, 0, 157, 130, 0, 0, 382, 411, 384, 405, 377, 401, 347, 393, 420, 369, 398, 421, 0, 0, - 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 396, 415, 367, 397, 399, 336, 395, 0, 340, 343, 426, 413, 362, 363, 0, 0, 0, 0, 0, 0, 0, 381, 385, 402, 375, 0, 0, 0, @@ -1119,7 +1137,7 @@ var yyAct = [...]int{ 138, 368, 0, 359, 337, 365, 338, 357, 380, 103, 383, 355, 409, 389, 418, 119, 425, 121, 394, 0, 157, 130, 0, 0, 382, 411, 384, 405, 377, 401, - 347, 393, 420, 369, 398, 421, 0, 0, 0, 262, + 347, 393, 420, 369, 398, 421, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 396, 415, 367, 397, 399, 336, 395, 0, 340, 343, 426, 413, 362, 363, 0, 0, 0, 0, 0, 0, @@ -1132,11 +1150,11 @@ var yyAct = [...]int{ 140, 173, 391, 141, 150, 122, 165, 145, 172, 206, 180, 162, 179, 186, 85, 161, 171, 97, 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, 102, 106, - 101, 137, 166, 167, 100, 189, 91, 178, 89, 92, + 101, 137, 166, 167, 100, 189, 91, 178, 89, 333, 177, 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, 131, 133, 0, 339, 0, 158, 175, 190, 94, 354, 163, 181, - 182, 183, 184, 185, 0, 0, 95, 107, 134, 93, + 182, 183, 184, 185, 0, 0, 95, 107, 334, 332, 113, 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, 350, 353, 348, 349, 387, 388, 422, 423, 424, 404, 345, 0, 351, 352, 0, 408, 390, 83, 0, @@ -1145,7 +1163,7 @@ var yyAct = [...]int{ 0, 359, 337, 365, 338, 357, 380, 103, 383, 355, 409, 389, 418, 119, 425, 121, 394, 0, 157, 130, 0, 0, 382, 411, 384, 405, 377, 401, 347, 393, - 420, 369, 398, 421, 0, 0, 0, 81, 0, 0, + 420, 369, 398, 421, 0, 0, 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 396, 415, 367, 397, 399, 336, 395, 0, 340, 343, 426, 413, 362, 363, 0, 0, 0, 0, 0, 0, 0, 381, @@ -1158,11 +1176,11 @@ var yyAct = [...]int{ 391, 141, 150, 122, 165, 145, 172, 206, 180, 162, 179, 186, 85, 161, 171, 97, 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, 102, 106, 101, 137, - 166, 167, 100, 189, 91, 178, 89, 333, 177, 135, + 166, 167, 100, 189, 91, 178, 89, 92, 177, 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, 131, 133, 0, 339, 0, 158, 175, 190, 94, 354, 163, 181, 182, 183, - 184, 185, 0, 0, 95, 107, 334, 332, 113, 155, + 184, 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, 350, 353, 348, 349, 387, 388, 422, 423, 424, 404, 345, 0, 351, 352, 0, 408, 390, 83, 0, 120, 187, @@ -1171,7 +1189,7 @@ var yyAct = [...]int{ 337, 365, 338, 357, 380, 103, 383, 355, 409, 389, 418, 119, 425, 121, 394, 0, 157, 130, 0, 0, 382, 411, 384, 405, 377, 401, 347, 393, 420, 369, - 398, 421, 0, 0, 0, 203, 0, 0, 0, 0, + 398, 421, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 396, 415, 367, 397, 399, 336, 395, 0, 340, 343, 426, 413, 362, 363, 0, 0, 0, 0, 0, 0, 0, 381, 385, 402, @@ -1182,13 +1200,13 @@ var yyAct = [...]int{ 160, 110, 118, 84, 90, 0, 109, 136, 149, 153, 410, 358, 366, 99, 364, 151, 140, 173, 391, 141, 150, 122, 165, 145, 172, 206, 180, 162, 179, 186, - 85, 161, 171, 97, 154, 87, 169, 159, 128, 114, + 85, 161, 598, 97, 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, 102, 106, 101, 137, 166, 167, - 100, 189, 91, 178, 89, 92, 177, 135, 164, 170, + 100, 189, 91, 178, 89, 333, 177, 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, 131, 133, 0, 339, 0, 158, 175, 190, 94, 354, 163, 181, 182, 183, 184, 185, - 0, 0, 95, 107, 134, 93, 113, 155, 116, 123, + 0, 0, 95, 107, 334, 332, 113, 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, 350, 353, 348, 349, 387, 388, 422, 423, 424, 404, 345, 0, 351, 352, 0, 408, 390, 83, 0, 120, 187, 146, 105, @@ -1208,67 +1226,115 @@ var yyAct = [...]int{ 118, 84, 90, 0, 109, 136, 149, 153, 410, 358, 366, 99, 364, 151, 140, 173, 391, 141, 150, 122, 165, 145, 172, 206, 180, 162, 179, 186, 85, 161, - 597, 97, 154, 87, 169, 159, 128, 114, 115, 86, + 324, 97, 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, 102, 106, 101, 137, 166, 167, 100, 189, 91, 178, 89, 333, 177, 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, 131, 133, 0, 339, 0, 158, 175, 190, 94, 354, 163, 181, 182, 183, 184, 185, 0, 0, - 95, 107, 334, 332, 113, 155, 116, 123, 147, 188, + 95, 107, 334, 332, 327, 326, 116, 123, 147, 188, 139, 152, 98, 174, 156, 350, 353, 348, 349, 387, 388, 422, 423, 424, 404, 345, 0, 351, 352, 0, - 408, 390, 83, 0, 120, 187, 146, 105, 176, 416, - 407, 0, 378, 419, 356, 370, 427, 371, 372, 400, - 342, 386, 138, 368, 0, 359, 337, 365, 338, 357, - 380, 103, 383, 355, 409, 389, 418, 119, 425, 121, - 394, 0, 157, 130, 0, 0, 382, 411, 384, 405, - 377, 401, 347, 393, 420, 369, 398, 421, 0, 0, - 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 0, 396, 415, 367, 397, 399, 336, 395, 0, - 340, 343, 426, 413, 362, 363, 0, 0, 0, 0, - 0, 0, 0, 381, 385, 402, 375, 0, 0, 0, - 0, 0, 0, 0, 0, 360, 0, 392, 0, 0, - 0, 344, 341, 0, 0, 379, 0, 0, 0, 346, - 0, 361, 403, 0, 335, 108, 406, 412, 376, 205, - 414, 374, 373, 417, 144, 0, 160, 110, 118, 84, - 90, 0, 109, 136, 149, 153, 410, 358, 366, 99, - 364, 151, 140, 173, 391, 141, 150, 122, 165, 145, - 172, 206, 180, 162, 179, 186, 85, 161, 324, 97, - 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, - 102, 106, 101, 137, 166, 167, 100, 189, 91, 178, - 89, 333, 177, 135, 164, 170, 129, 126, 88, 168, - 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, - 131, 133, 0, 339, 0, 158, 175, 190, 94, 354, - 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, - 334, 332, 327, 326, 116, 123, 147, 188, 139, 152, - 98, 174, 156, 350, 353, 348, 349, 387, 388, 422, - 423, 424, 404, 345, 0, 351, 352, 0, 408, 390, - 83, 0, 120, 187, 146, 105, 176, 138, 0, 0, - 0, 0, 264, 0, 0, 0, 103, 0, 261, 0, - 0, 0, 119, 304, 121, 0, 0, 157, 130, 0, - 0, 0, 0, 295, 296, 0, 0, 0, 0, 0, - 0, 820, 0, 54, 0, 0, 262, 283, 282, 285, - 286, 287, 288, 0, 0, 96, 284, 289, 290, 291, - 821, 0, 0, 259, 276, 0, 303, 0, 0, 0, + 408, 390, 83, 0, 120, 187, 146, 105, 176, 138, + 0, 0, 0, 0, 264, 0, 0, 0, 103, 0, + 261, 0, 0, 0, 119, 304, 121, 0, 0, 157, + 130, 0, 0, 0, 0, 295, 296, 0, 0, 0, + 0, 0, 0, 822, 0, 54, 0, 0, 262, 283, + 282, 285, 286, 287, 288, 0, 0, 96, 284, 289, + 290, 291, 823, 0, 0, 259, 276, 0, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 273, 274, 0, 0, - 0, 0, 315, 0, 275, 0, 0, 270, 271, 272, - 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 0, 0, 0, 205, 0, 0, 313, 0, 144, - 0, 160, 110, 118, 84, 90, 0, 109, 136, 149, - 153, 0, 0, 0, 99, 0, 151, 140, 173, 0, - 141, 150, 122, 165, 145, 172, 206, 180, 162, 179, - 186, 85, 161, 171, 97, 154, 87, 169, 159, 128, - 114, 115, 86, 0, 148, 102, 106, 101, 137, 166, - 167, 100, 189, 91, 178, 89, 92, 177, 135, 164, - 170, 129, 126, 88, 168, 127, 125, 117, 104, 111, - 142, 124, 143, 112, 132, 131, 133, 0, 0, 0, - 158, 175, 190, 94, 0, 163, 181, 182, 183, 184, - 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, - 123, 147, 188, 139, 152, 98, 174, 156, 305, 314, - 311, 312, 309, 310, 308, 307, 306, 316, 297, 298, - 299, 300, 302, 0, 301, 83, 0, 120, 187, 146, - 105, 176, 138, 0, 0, 758, 0, 264, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 273, 274, + 0, 0, 0, 0, 315, 0, 275, 0, 0, 270, + 271, 272, 277, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 108, 0, 0, 0, 205, 0, 0, 313, + 0, 144, 0, 160, 110, 118, 84, 90, 0, 109, + 136, 149, 153, 0, 0, 0, 99, 0, 151, 140, + 173, 0, 141, 150, 122, 165, 145, 172, 206, 180, + 162, 179, 186, 85, 161, 171, 97, 154, 87, 169, + 159, 128, 114, 115, 86, 0, 148, 102, 106, 101, + 137, 166, 167, 100, 189, 91, 178, 89, 92, 177, + 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, + 104, 111, 142, 124, 143, 112, 132, 131, 133, 0, + 0, 0, 158, 175, 190, 94, 0, 163, 181, 182, + 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, + 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, + 305, 314, 311, 312, 309, 310, 308, 307, 306, 316, + 297, 298, 299, 300, 302, 0, 301, 83, 0, 120, + 187, 146, 105, 176, 138, 0, 0, 760, 0, 264, + 0, 0, 0, 103, 0, 261, 0, 0, 0, 119, + 304, 121, 0, 0, 157, 130, 0, 0, 0, 0, + 295, 296, 0, 0, 0, 0, 0, 0, 0, 0, + 54, 0, 0, 262, 283, 282, 285, 286, 287, 288, + 0, 0, 96, 284, 289, 290, 291, 0, 0, 0, + 259, 276, 0, 303, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 273, 274, 255, 0, 0, 0, 315, + 0, 275, 0, 0, 270, 271, 272, 277, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, + 0, 205, 0, 0, 313, 0, 144, 0, 160, 110, + 118, 84, 90, 0, 109, 136, 149, 153, 0, 0, + 0, 99, 0, 151, 140, 173, 0, 141, 150, 122, + 165, 145, 172, 206, 180, 162, 179, 186, 85, 161, + 171, 97, 154, 87, 169, 159, 128, 114, 115, 86, + 0, 148, 102, 106, 101, 137, 166, 167, 100, 189, + 91, 178, 89, 92, 177, 135, 164, 170, 129, 126, + 88, 168, 127, 125, 117, 104, 111, 142, 124, 143, + 112, 132, 131, 133, 0, 0, 0, 158, 175, 190, + 94, 0, 163, 181, 182, 183, 184, 185, 0, 0, + 95, 107, 134, 93, 113, 155, 116, 123, 147, 188, + 139, 152, 98, 174, 156, 305, 314, 311, 312, 309, + 310, 308, 307, 306, 316, 297, 298, 299, 300, 302, + 0, 301, 83, 0, 120, 187, 146, 105, 176, 138, + 0, 0, 0, 0, 264, 0, 0, 0, 103, 0, + 261, 0, 0, 0, 119, 304, 121, 0, 0, 157, + 130, 0, 0, 0, 0, 295, 296, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 483, 262, 283, + 282, 285, 286, 287, 288, 0, 0, 96, 284, 289, + 290, 291, 0, 0, 0, 259, 276, 0, 303, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 273, 274, + 0, 0, 0, 0, 315, 0, 275, 0, 0, 270, + 271, 272, 277, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 108, 0, 0, 0, 205, 0, 0, 313, + 0, 144, 0, 160, 110, 118, 84, 90, 0, 109, + 136, 149, 153, 0, 0, 0, 99, 0, 151, 140, + 173, 0, 141, 150, 122, 165, 145, 172, 206, 180, + 162, 179, 186, 85, 161, 171, 97, 154, 87, 169, + 159, 128, 114, 115, 86, 0, 148, 102, 106, 101, + 137, 166, 167, 100, 189, 91, 178, 89, 92, 177, + 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, + 104, 111, 142, 124, 143, 112, 132, 131, 133, 0, + 0, 0, 158, 175, 190, 94, 0, 163, 181, 182, + 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, + 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, + 305, 314, 311, 312, 309, 310, 308, 307, 306, 316, + 297, 298, 299, 300, 302, 0, 301, 83, 0, 120, + 187, 146, 105, 176, 138, 0, 0, 0, 0, 264, + 0, 0, 0, 103, 0, 261, 0, 0, 0, 119, + 304, 121, 0, 0, 157, 130, 0, 0, 0, 0, + 295, 296, 0, 0, 0, 0, 0, 0, 0, 0, + 54, 0, 0, 262, 283, 282, 285, 286, 287, 288, + 0, 0, 96, 284, 289, 290, 291, 0, 0, 0, + 259, 276, 0, 303, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 273, 274, 255, 0, 0, 0, 315, + 0, 275, 0, 0, 270, 271, 272, 277, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, + 0, 205, 0, 0, 313, 0, 144, 0, 160, 110, + 118, 84, 90, 0, 109, 136, 149, 153, 0, 0, + 0, 99, 0, 151, 140, 173, 0, 141, 150, 122, + 165, 145, 172, 206, 180, 162, 179, 186, 85, 161, + 171, 97, 154, 87, 169, 159, 128, 114, 115, 86, + 0, 148, 102, 106, 101, 137, 166, 167, 100, 189, + 91, 178, 89, 92, 177, 135, 164, 170, 129, 126, + 88, 168, 127, 125, 117, 104, 111, 142, 124, 143, + 112, 132, 131, 133, 0, 0, 0, 158, 175, 190, + 94, 0, 163, 181, 182, 183, 184, 185, 0, 0, + 95, 107, 134, 93, 113, 155, 116, 123, 147, 188, + 139, 152, 98, 174, 156, 305, 314, 311, 312, 309, + 310, 308, 307, 306, 316, 297, 298, 299, 300, 302, + 24, 301, 83, 0, 120, 187, 146, 105, 176, 0, + 0, 0, 138, 0, 0, 0, 0, 264, 0, 0, 0, 103, 0, 261, 0, 0, 0, 119, 304, 121, 0, 0, 157, 130, 0, 0, 0, 0, 295, 296, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, @@ -1276,7 +1342,7 @@ var yyAct = [...]int{ 96, 284, 289, 290, 291, 0, 0, 0, 259, 276, 0, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 273, 274, 255, 0, 0, 0, 315, 0, 275, + 0, 273, 274, 0, 0, 0, 0, 315, 0, 275, 0, 0, 270, 271, 272, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 205, 0, 0, 313, 0, 144, 0, 160, 110, 118, 84, @@ -1296,7 +1362,7 @@ var yyAct = [...]int{ 0, 0, 264, 0, 0, 0, 103, 0, 261, 0, 0, 0, 119, 304, 121, 0, 0, 157, 130, 0, 0, 0, 0, 295, 296, 0, 0, 0, 0, 0, - 0, 0, 0, 54, 0, 482, 262, 283, 282, 285, + 0, 0, 0, 54, 0, 0, 262, 283, 282, 285, 286, 287, 288, 0, 0, 96, 284, 289, 290, 291, 0, 0, 0, 259, 276, 0, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1316,229 +1382,62 @@ var yyAct = [...]int{ 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, 305, 314, 311, 312, 309, 310, 308, 307, 306, 316, 297, 298, - 299, 300, 302, 0, 301, 83, 0, 120, 187, 146, - 105, 176, 138, 0, 0, 0, 0, 264, 0, 0, - 0, 103, 0, 261, 0, 0, 0, 119, 304, 121, - 0, 0, 157, 130, 0, 0, 0, 0, 295, 296, - 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, - 0, 262, 283, 282, 285, 286, 287, 288, 0, 0, - 96, 284, 289, 290, 291, 0, 0, 0, 259, 276, - 0, 303, 0, 0, 0, 0, 0, 0, 0, 0, + 299, 300, 302, 138, 301, 83, 0, 120, 187, 146, + 105, 176, 103, 0, 0, 0, 0, 0, 119, 304, + 121, 0, 0, 157, 130, 0, 0, 0, 0, 295, + 296, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 262, 283, 282, 285, 286, 287, 288, 0, + 0, 96, 284, 289, 290, 291, 0, 0, 0, 0, + 276, 0, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 273, 274, 255, 0, 0, 0, 315, 0, 275, - 0, 0, 270, 271, 272, 277, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 108, 0, 0, 0, 205, - 0, 0, 313, 0, 144, 0, 160, 110, 118, 84, - 90, 0, 109, 136, 149, 153, 0, 0, 0, 99, - 0, 151, 140, 173, 0, 141, 150, 122, 165, 145, - 172, 206, 180, 162, 179, 186, 85, 161, 171, 97, - 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, - 102, 106, 101, 137, 166, 167, 100, 189, 91, 178, - 89, 92, 177, 135, 164, 170, 129, 126, 88, 168, - 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, - 131, 133, 0, 0, 0, 158, 175, 190, 94, 0, - 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, - 134, 93, 113, 155, 116, 123, 147, 188, 139, 152, - 98, 174, 156, 305, 314, 311, 312, 309, 310, 308, - 307, 306, 316, 297, 298, 299, 300, 302, 24, 301, - 83, 0, 120, 187, 146, 105, 176, 0, 0, 0, - 138, 0, 0, 0, 0, 264, 0, 0, 0, 103, - 0, 261, 0, 0, 0, 119, 304, 121, 0, 0, - 157, 130, 0, 0, 0, 0, 295, 296, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 0, 0, 262, - 283, 282, 285, 286, 287, 288, 0, 0, 96, 284, - 289, 290, 291, 0, 0, 0, 259, 276, 0, 303, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 273, - 274, 0, 0, 0, 0, 315, 0, 275, 0, 0, - 270, 271, 272, 277, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 108, 0, 0, 0, 205, 0, 0, - 313, 0, 144, 0, 160, 110, 118, 84, 90, 0, - 109, 136, 149, 153, 0, 0, 0, 99, 0, 151, - 140, 173, 0, 141, 150, 122, 165, 145, 172, 206, - 180, 162, 179, 186, 85, 161, 171, 97, 154, 87, - 169, 159, 128, 114, 115, 86, 0, 148, 102, 106, - 101, 137, 166, 167, 100, 189, 91, 178, 89, 92, - 177, 135, 164, 170, 129, 126, 88, 168, 127, 125, - 117, 104, 111, 142, 124, 143, 112, 132, 131, 133, - 0, 0, 0, 158, 175, 190, 94, 0, 163, 181, - 182, 183, 184, 185, 0, 0, 95, 107, 134, 93, - 113, 155, 116, 123, 147, 188, 139, 152, 98, 174, - 156, 305, 314, 311, 312, 309, 310, 308, 307, 306, - 316, 297, 298, 299, 300, 302, 0, 301, 83, 0, - 120, 187, 146, 105, 176, 138, 0, 0, 0, 0, - 264, 0, 0, 0, 103, 0, 261, 0, 0, 0, - 119, 304, 121, 0, 0, 157, 130, 0, 0, 0, - 0, 295, 296, 0, 0, 0, 0, 0, 0, 0, - 0, 54, 0, 0, 262, 283, 282, 285, 286, 287, - 288, 0, 0, 96, 284, 289, 290, 291, 0, 0, - 0, 259, 276, 0, 303, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 273, 274, 0, 0, 0, 0, - 315, 0, 275, 0, 0, 270, 271, 272, 277, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, - 0, 0, 205, 0, 0, 313, 0, 144, 0, 160, - 110, 118, 84, 90, 0, 109, 136, 149, 153, 0, - 0, 0, 99, 0, 151, 140, 173, 0, 141, 150, - 122, 165, 145, 172, 206, 180, 162, 179, 186, 85, - 161, 171, 97, 154, 87, 169, 159, 128, 114, 115, - 86, 0, 148, 102, 106, 101, 137, 166, 167, 100, - 189, 91, 178, 89, 92, 177, 135, 164, 170, 129, - 126, 88, 168, 127, 125, 117, 104, 111, 142, 124, - 143, 112, 132, 131, 133, 0, 0, 0, 158, 175, - 190, 94, 0, 163, 181, 182, 183, 184, 185, 0, - 0, 95, 107, 134, 93, 113, 155, 116, 123, 147, - 188, 139, 152, 98, 174, 156, 305, 314, 311, 312, - 309, 310, 308, 307, 306, 316, 297, 298, 299, 300, - 302, 138, 301, 83, 0, 120, 187, 146, 105, 176, - 103, 0, 0, 0, 0, 0, 119, 304, 121, 0, - 0, 157, 130, 0, 0, 0, 0, 295, 296, 0, - 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, - 262, 283, 282, 285, 286, 287, 288, 0, 0, 96, - 284, 289, 290, 291, 0, 0, 0, 0, 276, 0, - 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 273, 274, 0, 0, 0, 0, 315, 0, 275, 0, - 0, 270, 271, 272, 277, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 108, 0, 0, 0, 205, 0, - 0, 313, 0, 144, 0, 160, 110, 118, 84, 90, - 0, 109, 136, 149, 153, 0, 0, 0, 99, 0, - 151, 140, 173, 1359, 141, 150, 122, 165, 145, 172, - 206, 180, 162, 179, 186, 85, 161, 171, 97, 154, - 87, 169, 159, 128, 114, 115, 86, 0, 148, 102, - 106, 101, 137, 166, 167, 100, 189, 91, 178, 89, - 92, 177, 135, 164, 170, 129, 126, 88, 168, 127, - 125, 117, 104, 111, 142, 124, 143, 112, 132, 131, - 133, 0, 0, 0, 158, 175, 190, 94, 0, 163, - 181, 182, 183, 184, 185, 0, 0, 95, 107, 134, - 93, 113, 155, 116, 123, 147, 188, 139, 152, 98, - 174, 156, 305, 314, 311, 312, 309, 310, 308, 307, - 306, 316, 297, 298, 299, 300, 302, 138, 301, 83, - 0, 120, 187, 146, 105, 176, 103, 0, 0, 0, - 0, 0, 119, 304, 121, 0, 0, 157, 130, 0, - 0, 0, 0, 295, 296, 0, 0, 0, 0, 0, - 0, 0, 0, 54, 0, 0, 262, 283, 282, 285, - 286, 287, 288, 0, 0, 96, 284, 289, 290, 291, - 0, 0, 0, 0, 276, 0, 303, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 273, 274, 0, 0, - 0, 0, 315, 0, 275, 0, 0, 270, 271, 272, - 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 0, 0, 0, 205, 0, 0, 313, 0, 144, - 0, 160, 110, 118, 84, 90, 0, 109, 136, 149, - 153, 0, 0, 0, 99, 0, 151, 140, 173, 0, - 141, 150, 122, 165, 145, 172, 206, 180, 162, 179, - 186, 85, 161, 171, 97, 154, 87, 169, 159, 128, - 114, 115, 86, 0, 148, 102, 106, 101, 137, 166, - 167, 100, 189, 91, 178, 89, 92, 177, 135, 164, - 170, 129, 126, 88, 168, 127, 125, 117, 104, 111, - 142, 124, 143, 112, 132, 131, 133, 0, 0, 0, - 158, 175, 190, 94, 0, 163, 181, 182, 183, 184, - 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, - 123, 147, 188, 139, 152, 98, 174, 156, 305, 314, - 311, 312, 309, 310, 308, 307, 306, 316, 297, 298, - 299, 300, 302, 0, 301, 83, 0, 120, 187, 146, - 105, 176, 138, 0, 0, 0, 504, 0, 0, 0, - 0, 103, 0, 0, 0, 0, 0, 119, 0, 121, - 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, + 0, 0, 273, 274, 0, 0, 0, 0, 315, 0, + 275, 0, 0, 270, 271, 272, 277, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, + 205, 0, 0, 313, 0, 144, 0, 160, 110, 118, + 84, 90, 0, 109, 136, 149, 153, 0, 0, 0, + 99, 0, 151, 140, 173, 1364, 141, 150, 122, 165, + 145, 172, 206, 180, 162, 179, 186, 85, 161, 171, + 97, 154, 87, 169, 159, 128, 114, 115, 86, 0, + 148, 102, 106, 101, 137, 166, 167, 100, 189, 91, + 178, 89, 92, 177, 135, 164, 170, 129, 126, 88, + 168, 127, 125, 117, 104, 111, 142, 124, 143, 112, + 132, 131, 133, 0, 0, 0, 158, 175, 190, 94, + 0, 163, 181, 182, 183, 184, 185, 0, 0, 95, + 107, 134, 93, 113, 155, 116, 123, 147, 188, 139, + 152, 98, 174, 156, 305, 314, 311, 312, 309, 310, + 308, 307, 306, 316, 297, 298, 299, 300, 302, 138, + 301, 83, 0, 120, 187, 146, 105, 176, 103, 0, + 0, 0, 0, 0, 119, 304, 121, 0, 0, 157, + 130, 0, 0, 0, 0, 295, 296, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, 262, 283, + 282, 285, 286, 287, 288, 0, 0, 96, 284, 289, + 290, 291, 0, 0, 0, 0, 276, 0, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 81, 0, 506, 0, 0, 0, 0, 0, 0, - 96, 0, 0, 0, 0, 0, 501, 500, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 502, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 108, 0, 0, 0, 205, - 0, 0, 0, 0, 144, 0, 160, 110, 118, 84, - 90, 0, 109, 136, 149, 153, 0, 0, 0, 99, - 0, 151, 140, 173, 0, 141, 150, 122, 165, 145, - 172, 206, 180, 162, 179, 186, 85, 161, 171, 97, - 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, - 102, 106, 101, 137, 166, 167, 100, 189, 91, 178, - 89, 92, 177, 135, 164, 170, 129, 126, 88, 168, - 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, - 131, 133, 0, 0, 0, 158, 175, 190, 94, 0, - 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, - 134, 93, 113, 155, 116, 123, 147, 188, 139, 152, - 98, 174, 156, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, - 83, 103, 120, 187, 146, 105, 176, 119, 0, 121, - 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 0, 0, 0, 0, 0, 74, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 108, 77, 78, 0, 73, - 0, 0, 0, 79, 144, 0, 160, 110, 118, 84, - 90, 0, 109, 136, 149, 153, 0, 0, 0, 99, - 0, 151, 140, 173, 0, 141, 150, 122, 165, 145, - 172, 75, 180, 162, 179, 186, 85, 161, 171, 97, - 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, - 102, 106, 101, 137, 166, 167, 100, 189, 91, 178, - 89, 92, 177, 135, 164, 170, 129, 126, 88, 168, - 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, - 131, 133, 0, 0, 0, 158, 175, 190, 94, 0, - 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, - 134, 93, 113, 155, 116, 123, 147, 188, 139, 152, - 98, 174, 156, 0, 76, 0, 0, 0, 0, 0, - 0, 0, 138, 0, 0, 0, 807, 0, 0, 0, - 83, 103, 120, 187, 146, 105, 176, 119, 0, 121, - 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 203, 0, 809, 0, 0, 0, 0, 0, 0, - 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 108, 0, 0, 0, 205, - 0, 0, 0, 0, 144, 0, 160, 110, 118, 84, - 90, 0, 109, 136, 149, 153, 0, 0, 0, 99, - 0, 151, 140, 173, 0, 141, 150, 122, 165, 145, - 172, 206, 180, 162, 179, 186, 85, 161, 171, 97, - 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, - 102, 106, 101, 137, 166, 167, 100, 189, 91, 178, - 89, 92, 177, 135, 164, 170, 129, 126, 88, 168, - 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, - 131, 133, 0, 0, 0, 158, 175, 190, 94, 0, - 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, - 134, 93, 113, 155, 116, 123, 147, 188, 139, 152, - 98, 174, 156, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, - 83, 0, 120, 187, 146, 105, 176, 103, 0, 0, - 0, 0, 0, 119, 0, 121, 0, 0, 157, 130, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 0, 0, 81, 0, 0, - 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 0, 0, 0, 205, 0, 0, 0, 0, - 144, 0, 160, 110, 118, 84, 90, 0, 109, 136, - 149, 153, 0, 0, 0, 99, 0, 151, 140, 173, - 0, 141, 150, 122, 165, 145, 172, 206, 180, 162, - 179, 186, 85, 161, 171, 97, 154, 87, 169, 159, - 128, 114, 115, 86, 0, 148, 102, 106, 101, 137, - 166, 167, 100, 189, 91, 178, 89, 92, 177, 135, - 164, 170, 129, 126, 88, 168, 127, 125, 117, 104, - 111, 142, 124, 143, 112, 132, 131, 133, 0, 0, - 0, 158, 175, 190, 94, 0, 163, 181, 182, 183, - 184, 185, 0, 0, 95, 107, 134, 93, 113, 155, - 116, 123, 147, 188, 139, 152, 98, 174, 156, 0, - 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 0, 83, 0, 120, 187, - 146, 105, 176, 103, 0, 0, 0, 0, 0, 119, + 0, 0, 0, 0, 0, 0, 0, 0, 273, 274, + 0, 0, 0, 0, 315, 0, 275, 0, 0, 270, + 271, 272, 277, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 108, 0, 0, 0, 205, 0, 0, 313, + 0, 144, 0, 160, 110, 118, 84, 90, 0, 109, + 136, 149, 153, 0, 0, 0, 99, 0, 151, 140, + 173, 0, 141, 150, 122, 165, 145, 172, 206, 180, + 162, 179, 186, 85, 161, 171, 97, 154, 87, 169, + 159, 128, 114, 115, 86, 0, 148, 102, 106, 101, + 137, 166, 167, 100, 189, 91, 178, 89, 92, 177, + 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, + 104, 111, 142, 124, 143, 112, 132, 131, 133, 0, + 0, 0, 158, 175, 190, 94, 0, 163, 181, 182, + 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, + 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, + 305, 314, 311, 312, 309, 310, 308, 307, 306, 316, + 297, 298, 299, 300, 302, 0, 301, 83, 0, 120, + 187, 146, 105, 176, 138, 0, 0, 0, 505, 0, + 0, 0, 0, 103, 0, 0, 0, 0, 0, 119, 0, 121, 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 203, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 81, 0, 507, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 0, 0, 0, 502, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, @@ -1554,21 +1453,21 @@ var yyAct = [...]int{ 94, 0, 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 0, 0, 0, 807, 0, + 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 83, 103, 120, 187, 146, 105, 176, 119, 0, 121, 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 203, 0, 809, 0, 0, 0, 0, - 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, - 0, 205, 0, 0, 0, 0, 144, 0, 160, 110, + 0, 0, 0, 0, 0, 0, 0, 108, 77, 78, + 0, 73, 0, 0, 0, 79, 144, 0, 160, 110, 118, 84, 90, 0, 109, 136, 149, 153, 0, 0, - 0, 99, 0, 151, 140, 173, 0, 805, 150, 122, - 165, 145, 172, 206, 180, 162, 179, 186, 85, 161, + 0, 99, 0, 151, 140, 173, 0, 141, 150, 122, + 165, 145, 172, 75, 180, 162, 179, 186, 85, 161, 171, 97, 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, 102, 106, 101, 137, 166, 167, 100, 189, 91, 178, 89, 92, 177, 135, 164, 170, 129, 126, @@ -1576,12 +1475,12 @@ var yyAct = [...]int{ 112, 132, 131, 133, 0, 0, 0, 158, 175, 190, 94, 0, 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, 123, 147, 188, - 139, 152, 98, 174, 156, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, + 139, 152, 98, 174, 156, 0, 76, 0, 0, 0, + 0, 0, 0, 0, 138, 0, 0, 0, 809, 0, 0, 0, 83, 103, 120, 187, 146, 105, 176, 119, 0, 121, 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 81, 0, 0, 709, 0, 0, 710, + 0, 0, 0, 203, 0, 811, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1599,13 +1498,13 @@ var yyAct = [...]int{ 112, 132, 131, 133, 0, 0, 0, 158, 175, 190, 94, 0, 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, 123, 147, 188, - 139, 152, 98, 174, 156, 0, 0, 0, 0, 0, + 139, 152, 98, 174, 156, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 83, 0, 120, 187, 146, 105, 176, 103, - 0, 606, 0, 0, 0, 119, 0, 121, 0, 0, + 0, 0, 0, 0, 0, 119, 0, 121, 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, - 0, 605, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 0, 0, 0, 0, 0, 54, 0, 0, 81, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1623,228 +1522,322 @@ var yyAct = [...]int{ 0, 0, 0, 158, 175, 190, 94, 0, 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, 123, 147, 188, 139, 152, 98, 174, - 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 138, 0, 0, 0, 0, 0, 0, 0, 83, 103, - 120, 187, 146, 105, 176, 119, 0, 121, 0, 0, - 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 0, 0, 203, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 156, 0, 0, 0, 24, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 138, 0, 83, 0, + 120, 187, 146, 105, 176, 103, 0, 0, 0, 0, + 0, 119, 0, 121, 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 54, 0, 0, 203, 0, 0, 0, 0, + 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 108, 0, 0, 0, 205, 0, 0, - 0, 0, 144, 0, 160, 110, 118, 84, 90, 0, - 109, 136, 149, 153, 0, 0, 0, 99, 0, 151, - 140, 173, 0, 141, 150, 122, 165, 145, 172, 206, - 180, 162, 179, 186, 85, 161, 171, 97, 154, 87, - 169, 159, 128, 114, 115, 86, 0, 148, 102, 106, - 101, 137, 166, 167, 100, 189, 91, 178, 89, 92, - 177, 135, 164, 170, 129, 126, 88, 168, 127, 125, - 117, 104, 111, 142, 124, 143, 112, 132, 131, 133, - 0, 0, 0, 158, 175, 190, 94, 0, 163, 181, - 182, 183, 184, 185, 0, 0, 95, 107, 134, 93, - 113, 155, 116, 123, 147, 188, 139, 152, 98, 174, - 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 138, 0, 0, 0, 0, 0, 0, 0, 83, 103, - 120, 187, 146, 105, 176, 119, 0, 121, 0, 0, - 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, - 0, 809, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, + 0, 0, 0, 205, 0, 0, 0, 0, 144, 0, + 160, 110, 118, 84, 90, 0, 109, 136, 149, 153, + 0, 0, 0, 99, 0, 151, 140, 173, 0, 141, + 150, 122, 165, 145, 172, 206, 180, 162, 179, 186, + 85, 161, 171, 97, 154, 87, 169, 159, 128, 114, + 115, 86, 0, 148, 102, 106, 101, 137, 166, 167, + 100, 189, 91, 178, 89, 92, 177, 135, 164, 170, + 129, 126, 88, 168, 127, 125, 117, 104, 111, 142, + 124, 143, 112, 132, 131, 133, 0, 0, 0, 158, + 175, 190, 94, 0, 163, 181, 182, 183, 184, 185, + 0, 0, 95, 107, 134, 93, 113, 155, 116, 123, + 147, 188, 139, 152, 98, 174, 156, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, + 809, 0, 0, 0, 83, 103, 120, 187, 146, 105, + 176, 119, 0, 121, 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 203, 0, 811, 0, 0, + 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 108, 0, 0, 0, 205, 0, 0, - 0, 0, 144, 0, 160, 110, 118, 84, 90, 0, - 109, 136, 149, 153, 0, 0, 0, 99, 0, 151, - 140, 173, 0, 141, 150, 122, 165, 145, 172, 206, - 180, 162, 179, 186, 85, 161, 171, 97, 154, 87, - 169, 159, 128, 114, 115, 86, 0, 148, 102, 106, - 101, 137, 166, 167, 100, 189, 91, 178, 89, 92, - 177, 135, 164, 170, 129, 126, 88, 168, 127, 125, - 117, 104, 111, 142, 124, 143, 112, 132, 131, 133, - 0, 0, 0, 158, 175, 190, 94, 0, 163, 181, - 182, 183, 184, 185, 0, 0, 95, 107, 134, 93, - 113, 155, 116, 123, 147, 188, 139, 152, 98, 174, - 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 138, 0, 0, 0, 0, 0, 0, 0, 83, 103, - 120, 187, 146, 105, 176, 119, 0, 121, 0, 0, - 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, - 0, 506, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, + 0, 0, 0, 205, 0, 0, 0, 0, 144, 0, + 160, 110, 118, 84, 90, 0, 109, 136, 149, 153, + 0, 0, 0, 99, 0, 151, 140, 173, 0, 807, + 150, 122, 165, 145, 172, 206, 180, 162, 179, 186, + 85, 161, 171, 97, 154, 87, 169, 159, 128, 114, + 115, 86, 0, 148, 102, 106, 101, 137, 166, 167, + 100, 189, 91, 178, 89, 92, 177, 135, 164, 170, + 129, 126, 88, 168, 127, 125, 117, 104, 111, 142, + 124, 143, 112, 132, 131, 133, 0, 0, 0, 158, + 175, 190, 94, 0, 163, 181, 182, 183, 184, 185, + 0, 0, 95, 107, 134, 93, 113, 155, 116, 123, + 147, 188, 139, 152, 98, 174, 156, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, + 0, 0, 0, 0, 83, 103, 120, 187, 146, 105, + 176, 119, 0, 121, 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 711, 0, + 0, 712, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 108, 0, 0, 0, 205, 0, 0, - 0, 0, 144, 0, 160, 110, 118, 84, 90, 0, - 109, 136, 149, 153, 0, 0, 0, 99, 0, 151, - 140, 173, 0, 141, 150, 122, 165, 145, 172, 206, - 180, 162, 179, 186, 85, 161, 171, 97, 154, 87, - 169, 159, 128, 114, 115, 86, 0, 148, 102, 106, - 101, 137, 166, 167, 100, 189, 91, 178, 89, 92, - 177, 135, 164, 170, 129, 126, 88, 168, 127, 125, - 117, 104, 111, 142, 124, 143, 112, 132, 131, 133, - 0, 0, 0, 158, 175, 190, 94, 0, 163, 181, - 182, 183, 184, 185, 0, 0, 95, 107, 134, 93, - 113, 155, 116, 123, 147, 188, 139, 152, 98, 174, - 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 138, 83, 0, - 120, 187, 146, 105, 176, 579, 103, 0, 0, 0, - 0, 0, 119, 0, 121, 0, 0, 157, 130, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, + 0, 0, 0, 205, 0, 0, 0, 0, 144, 0, + 160, 110, 118, 84, 90, 0, 109, 136, 149, 153, + 0, 0, 0, 99, 0, 151, 140, 173, 0, 141, + 150, 122, 165, 145, 172, 206, 180, 162, 179, 186, + 85, 161, 171, 97, 154, 87, 169, 159, 128, 114, + 115, 86, 0, 148, 102, 106, 101, 137, 166, 167, + 100, 189, 91, 178, 89, 92, 177, 135, 164, 170, + 129, 126, 88, 168, 127, 125, 117, 104, 111, 142, + 124, 143, 112, 132, 131, 133, 0, 0, 0, 158, + 175, 190, 94, 0, 163, 181, 182, 183, 184, 185, + 0, 0, 95, 107, 134, 93, 113, 155, 116, 123, + 147, 188, 139, 152, 98, 174, 156, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 138, 0, 83, 0, 120, 187, 146, 105, + 176, 103, 0, 607, 0, 0, 0, 119, 0, 121, + 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 203, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, + 0, 81, 0, 606, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 108, 0, 0, 0, 205, + 0, 0, 0, 0, 144, 0, 160, 110, 118, 84, + 90, 0, 109, 136, 149, 153, 0, 0, 0, 99, + 0, 151, 140, 173, 0, 141, 150, 122, 165, 145, + 172, 206, 180, 162, 179, 186, 85, 161, 171, 97, + 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, + 102, 106, 101, 137, 166, 167, 100, 189, 91, 178, + 89, 92, 177, 135, 164, 170, 129, 126, 88, 168, + 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, + 131, 133, 0, 0, 0, 158, 175, 190, 94, 0, + 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, + 134, 93, 113, 155, 116, 123, 147, 188, 139, 152, + 98, 174, 156, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, + 83, 103, 120, 187, 146, 105, 176, 119, 0, 121, + 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, + 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 108, 0, 0, 0, 205, + 0, 0, 0, 0, 144, 0, 160, 110, 118, 84, + 90, 0, 109, 136, 149, 153, 0, 0, 0, 99, + 0, 151, 140, 173, 0, 141, 150, 122, 165, 145, + 172, 206, 180, 162, 179, 186, 85, 161, 171, 97, + 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, + 102, 106, 101, 137, 166, 167, 100, 189, 91, 178, + 89, 92, 177, 135, 164, 170, 129, 126, 88, 168, + 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, + 131, 133, 0, 0, 0, 158, 175, 190, 94, 0, + 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, + 134, 93, 113, 155, 116, 123, 147, 188, 139, 152, + 98, 174, 156, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, + 83, 103, 120, 187, 146, 105, 176, 119, 0, 121, + 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 203, 0, 811, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 108, 0, 0, 0, 205, + 0, 0, 0, 0, 144, 0, 160, 110, 118, 84, + 90, 0, 109, 136, 149, 153, 0, 0, 0, 99, + 0, 151, 140, 173, 0, 141, 150, 122, 165, 145, + 172, 206, 180, 162, 179, 186, 85, 161, 171, 97, + 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, + 102, 106, 101, 137, 166, 167, 100, 189, 91, 178, + 89, 92, 177, 135, 164, 170, 129, 126, 88, 168, + 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, + 131, 133, 0, 0, 0, 158, 175, 190, 94, 0, + 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, + 134, 93, 113, 155, 116, 123, 147, 188, 139, 152, + 98, 174, 156, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, + 83, 103, 120, 187, 146, 105, 176, 119, 0, 121, + 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 0, 507, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 0, 0, 0, 205, 0, 0, 0, 0, 144, - 0, 160, 110, 118, 84, 90, 0, 109, 136, 149, - 153, 0, 0, 0, 99, 0, 151, 140, 173, 0, - 141, 150, 122, 165, 145, 172, 206, 180, 162, 179, - 186, 85, 161, 171, 97, 154, 87, 169, 159, 128, - 114, 115, 86, 0, 148, 102, 106, 101, 137, 166, - 167, 100, 189, 91, 178, 89, 92, 177, 135, 164, - 170, 129, 126, 88, 168, 127, 125, 117, 104, 111, - 142, 124, 143, 112, 132, 131, 133, 0, 0, 0, - 158, 175, 190, 94, 0, 163, 181, 182, 183, 184, - 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, - 123, 147, 188, 139, 152, 98, 174, 156, 0, 0, - 319, 0, 0, 0, 0, 0, 0, 138, 0, 0, - 0, 0, 0, 0, 0, 83, 103, 120, 187, 146, - 105, 176, 119, 0, 121, 0, 0, 157, 130, 0, + 0, 0, 0, 0, 0, 108, 0, 0, 0, 205, + 0, 0, 0, 0, 144, 0, 160, 110, 118, 84, + 90, 0, 109, 136, 149, 153, 0, 0, 0, 99, + 0, 151, 140, 173, 0, 141, 150, 122, 165, 145, + 172, 206, 180, 162, 179, 186, 85, 161, 171, 97, + 154, 87, 169, 159, 128, 114, 115, 86, 0, 148, + 102, 106, 101, 137, 166, 167, 100, 189, 91, 178, + 89, 92, 177, 135, 164, 170, 129, 126, 88, 168, + 127, 125, 117, 104, 111, 142, 124, 143, 112, 132, + 131, 133, 0, 0, 0, 158, 175, 190, 94, 0, + 163, 181, 182, 183, 184, 185, 0, 0, 95, 107, + 134, 93, 113, 155, 116, 123, 147, 188, 139, 152, + 98, 174, 156, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 83, 0, 120, 187, 146, 105, 176, 580, 103, 0, + 0, 0, 0, 0, 119, 0, 121, 0, 0, 157, + 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 203, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 203, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 108, 0, 0, 0, 205, 0, 0, 0, + 0, 144, 0, 160, 110, 118, 84, 90, 0, 109, + 136, 149, 153, 0, 0, 0, 99, 0, 151, 140, + 173, 0, 141, 150, 122, 165, 145, 172, 206, 180, + 162, 179, 186, 85, 161, 171, 97, 154, 87, 169, + 159, 128, 114, 115, 86, 0, 148, 102, 106, 101, + 137, 166, 167, 100, 189, 91, 178, 89, 92, 177, + 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, + 104, 111, 142, 124, 143, 112, 132, 131, 133, 0, + 0, 0, 158, 175, 190, 94, 0, 163, 181, 182, + 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, + 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, + 0, 0, 319, 0, 0, 0, 0, 0, 0, 138, + 0, 0, 0, 0, 0, 0, 0, 83, 103, 120, + 187, 146, 105, 176, 119, 0, 121, 0, 0, 157, + 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 203, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 0, 0, 0, 205, 0, 0, 0, 0, 144, - 0, 160, 110, 118, 84, 90, 0, 109, 136, 149, - 153, 0, 0, 0, 99, 0, 151, 140, 173, 0, - 141, 150, 122, 165, 145, 172, 206, 180, 162, 179, - 186, 85, 161, 171, 97, 154, 87, 169, 159, 128, - 114, 115, 86, 0, 148, 102, 106, 101, 137, 166, - 167, 100, 189, 91, 178, 89, 92, 177, 135, 164, - 170, 129, 126, 88, 168, 127, 125, 117, 104, 111, - 142, 124, 143, 112, 132, 131, 133, 0, 0, 0, - 158, 175, 190, 94, 0, 163, 181, 182, 183, 184, - 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, - 123, 147, 188, 139, 152, 98, 174, 156, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, - 0, 0, 0, 0, 0, 83, 103, 120, 187, 146, - 105, 176, 119, 0, 121, 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 203, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 108, 0, 0, 0, 205, 0, 0, 0, + 0, 144, 0, 160, 110, 118, 84, 90, 0, 109, + 136, 149, 153, 0, 0, 0, 99, 0, 151, 140, + 173, 0, 141, 150, 122, 165, 145, 172, 206, 180, + 162, 179, 186, 85, 161, 171, 97, 154, 87, 169, + 159, 128, 114, 115, 86, 0, 148, 102, 106, 101, + 137, 166, 167, 100, 189, 91, 178, 89, 92, 177, + 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, + 104, 111, 142, 124, 143, 112, 132, 131, 133, 0, + 0, 0, 158, 175, 190, 94, 0, 163, 181, 182, + 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, + 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 0, 0, 0, 0, 0, 0, 83, 103, 120, + 187, 146, 105, 176, 119, 0, 121, 0, 0, 157, + 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 203, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 0, 200, 0, 205, 0, 0, 0, 0, 144, - 0, 160, 110, 118, 84, 90, 0, 109, 136, 149, - 153, 0, 0, 0, 99, 0, 151, 140, 173, 0, - 141, 150, 122, 165, 145, 172, 206, 180, 162, 179, - 186, 85, 161, 171, 97, 154, 87, 169, 159, 128, - 114, 115, 86, 0, 148, 102, 106, 101, 137, 166, - 167, 100, 189, 91, 178, 89, 92, 177, 135, 164, - 170, 129, 126, 88, 168, 127, 125, 117, 104, 111, - 142, 124, 143, 112, 132, 131, 133, 0, 0, 0, - 158, 175, 190, 94, 0, 163, 181, 182, 183, 184, - 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, - 123, 147, 188, 139, 152, 98, 174, 156, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, - 0, 0, 0, 0, 0, 83, 103, 120, 187, 146, - 105, 176, 119, 0, 121, 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 108, 0, 200, 0, 205, 0, 0, 0, + 0, 144, 0, 160, 110, 118, 84, 90, 0, 109, + 136, 149, 153, 0, 0, 0, 99, 0, 151, 140, + 173, 0, 141, 150, 122, 165, 145, 172, 206, 180, + 162, 179, 186, 85, 161, 171, 97, 154, 87, 169, + 159, 128, 114, 115, 86, 0, 148, 102, 106, 101, + 137, 166, 167, 100, 189, 91, 178, 89, 92, 177, + 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, + 104, 111, 142, 124, 143, 112, 132, 131, 133, 0, + 0, 0, 158, 175, 190, 94, 0, 163, 181, 182, + 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, + 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 0, 0, 0, 0, 0, 0, 83, 103, 120, + 187, 146, 105, 176, 119, 0, 121, 0, 0, 157, + 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 0, 0, 0, 205, 0, 0, 0, 0, 144, - 0, 160, 110, 118, 84, 90, 0, 109, 136, 149, - 153, 0, 0, 0, 99, 0, 151, 140, 173, 0, - 141, 150, 122, 165, 145, 172, 206, 180, 162, 179, - 186, 85, 161, 171, 97, 154, 87, 169, 159, 128, - 114, 115, 86, 0, 148, 102, 106, 101, 137, 166, - 167, 100, 189, 91, 178, 89, 92, 177, 135, 164, - 170, 129, 126, 88, 168, 127, 125, 117, 104, 111, - 142, 124, 143, 112, 132, 131, 133, 0, 0, 0, - 158, 175, 190, 94, 0, 163, 181, 182, 183, 184, - 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, - 123, 147, 188, 139, 152, 98, 174, 156, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, - 0, 0, 0, 0, 0, 83, 103, 120, 187, 146, - 105, 176, 119, 0, 121, 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 203, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 108, 0, 0, 0, 205, 0, 0, 0, + 0, 144, 0, 160, 110, 118, 84, 90, 0, 109, + 136, 149, 153, 0, 0, 0, 99, 0, 151, 140, + 173, 0, 141, 150, 122, 165, 145, 172, 206, 180, + 162, 179, 186, 85, 161, 171, 97, 154, 87, 169, + 159, 128, 114, 115, 86, 0, 148, 102, 106, 101, + 137, 166, 167, 100, 189, 91, 178, 89, 92, 177, + 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, + 104, 111, 142, 124, 143, 112, 132, 131, 133, 0, + 0, 0, 158, 175, 190, 94, 0, 163, 181, 182, + 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, + 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 0, 0, 0, 0, 0, 0, 83, 103, 120, + 187, 146, 105, 176, 119, 0, 121, 0, 0, 157, + 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 203, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 0, 0, 0, 205, 0, 0, 0, 0, 144, - 0, 160, 110, 118, 84, 90, 0, 109, 136, 149, - 153, 0, 0, 0, 99, 0, 151, 140, 173, 0, - 141, 150, 122, 165, 145, 172, 206, 180, 162, 179, - 186, 85, 161, 171, 97, 154, 87, 169, 159, 128, - 114, 115, 86, 0, 148, 102, 106, 101, 137, 166, - 167, 100, 189, 91, 178, 89, 92, 177, 135, 164, - 170, 129, 126, 88, 168, 127, 125, 117, 104, 111, - 142, 124, 143, 112, 132, 131, 133, 0, 0, 0, - 158, 175, 190, 94, 0, 163, 181, 182, 183, 184, - 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, - 123, 147, 188, 139, 152, 98, 174, 156, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, - 0, 0, 0, 0, 0, 83, 103, 120, 187, 146, - 105, 176, 119, 0, 121, 0, 0, 157, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, + 0, 0, 108, 0, 0, 0, 205, 0, 0, 0, + 0, 144, 0, 160, 110, 118, 84, 90, 0, 109, + 136, 149, 153, 0, 0, 0, 99, 0, 151, 140, + 173, 0, 141, 150, 122, 165, 145, 172, 206, 180, + 162, 179, 186, 85, 161, 171, 97, 154, 87, 169, + 159, 128, 114, 115, 86, 0, 148, 102, 106, 101, + 137, 166, 167, 100, 189, 91, 178, 89, 92, 177, + 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, + 104, 111, 142, 124, 143, 112, 132, 131, 133, 0, + 0, 0, 158, 175, 190, 94, 0, 163, 181, 182, + 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, + 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 0, 0, 0, 0, 0, 0, 83, 103, 120, + 187, 146, 105, 176, 119, 0, 121, 0, 0, 157, + 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 0, 0, 0, 205, 0, 0, 0, 0, 144, - 0, 160, 110, 118, 84, 90, 0, 109, 136, 149, - 153, 0, 0, 0, 99, 0, 151, 140, 173, 0, - 141, 150, 122, 165, 145, 172, 206, 180, 162, 179, - 186, 85, 161, 171, 97, 154, 87, 169, 159, 128, - 114, 115, 86, 0, 148, 102, 106, 101, 137, 166, - 167, 100, 189, 91, 178, 89, 92, 177, 135, 164, - 170, 129, 126, 88, 168, 127, 125, 117, 104, 111, - 142, 124, 143, 112, 132, 131, 133, 0, 0, 0, - 158, 175, 190, 94, 0, 163, 181, 182, 183, 184, - 185, 0, 0, 95, 107, 134, 93, 113, 155, 116, - 123, 147, 188, 139, 152, 98, 174, 156, 0, 0, + 0, 0, 108, 0, 0, 0, 205, 0, 0, 0, + 0, 144, 0, 160, 110, 118, 84, 90, 0, 109, + 136, 149, 153, 0, 0, 0, 99, 0, 151, 140, + 173, 0, 141, 150, 122, 165, 145, 172, 206, 180, + 162, 179, 186, 85, 161, 171, 97, 154, 87, 169, + 159, 128, 114, 115, 86, 0, 148, 102, 106, 101, + 137, 166, 167, 100, 189, 91, 178, 89, 92, 177, + 135, 164, 170, 129, 126, 88, 168, 127, 125, 117, + 104, 111, 142, 124, 143, 112, 132, 131, 133, 0, + 0, 0, 158, 175, 190, 94, 0, 163, 181, 182, + 183, 184, 185, 0, 0, 95, 107, 134, 93, 113, + 155, 116, 123, 147, 188, 139, 152, 98, 174, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 83, 0, 120, 187, 146, - 105, 176, + 0, 0, 0, 0, 0, 0, 0, 83, 0, 120, + 187, 146, 105, 176, } var yyPact = [...]int{ - 117, -1000, -184, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1775, -1000, -185, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 871, 909, -1000, -1000, -1000, -1000, -1000, -1000, + 223, 7486, 60, 96, -15, 10271, 95, 1790, 10731, -1000, + -7, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -76, -82, + -1000, 619, -1000, -1000, -1000, -1000, -1000, 862, 866, 708, + 852, 776, -1000, 6046, 59, 59, 10041, 5066, -1000, -1000, + 201, 10731, 92, 10731, -156, 10501, 55, 55, 55, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 914, 944, -1000, -1000, -1000, -1000, -1000, -1000, - 209, 7564, 72, 87, 28, 10349, 86, 1505, 10809, -1000, - -4, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -75, -100, - -1000, 710, -1000, -1000, -1000, -1000, -1000, 908, 911, 757, - 900, 804, -1000, 6124, 60, 60, 10119, 5144, -1000, -1000, - 335, 10809, 82, 10809, -155, 10579, 57, 57, 57, -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, @@ -1855,22 +1848,22 @@ 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, 77, 10731, -1000, 10731, 54, 525, 54, 54, 54, + 10731, -1000, 133, -1000, -1000, -1000, -1000, 10731, 511, 802, + 49, 3002, 3002, 3002, 3002, 6, 3002, -75, 738, 882, + -1000, -1000, -1000, -1000, -1000, -1000, 3002, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 84, 10809, -1000, 10809, 56, 556, 56, 56, 56, - 10809, -1000, 125, -1000, -1000, -1000, -1000, 10809, 548, 856, - 63, 3080, 3080, 3080, 3080, 5, 3080, -62, 754, 923, - -1000, -1000, -1000, -1000, -1000, -1000, 3080, -1000, -1000, -1000, + 443, 806, 6539, 6539, 871, -1000, 619, -1000, -1000, -1000, + 800, -1000, -1000, 305, 891, -1000, 7256, 131, -1000, 6539, + 2059, 662, -1000, -1000, 662, -1000, -1000, 107, -1000, -1000, + 7011, 7011, 7011, 7011, 7011, 7011, 7011, 7011, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 490, 864, 6617, 6617, 914, -1000, 710, -1000, -1000, -1000, - 828, -1000, -1000, 280, 933, -1000, 7334, 119, -1000, 6617, - 1686, 712, -1000, -1000, 712, -1000, -1000, 107, -1000, -1000, - 7089, 7089, 7089, 7089, 7089, 7089, 7089, 7089, -1000, -1000, + -1000, -1000, 662, -1000, 6294, 662, 662, 662, 662, 662, + 662, 662, 662, 6539, 662, 662, 662, 662, 662, 662, + 662, 662, 662, 662, 662, 662, 662, 9811, 9114, 10731, + 567, -1000, 652, 4808, -127, -1000, -1000, -1000, 200, 8884, + -1000, -1000, -1000, 801, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 712, -1000, 6372, 712, 712, 712, 712, 712, - 712, 712, 712, 6617, 712, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 712, 712, 712, 9889, 9192, 10809, - 675, -1000, 679, 4886, -113, -1000, -1000, -1000, 215, 8962, - -1000, -1000, -1000, 855, -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, @@ -1878,201 +1871,191 @@ 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, -1000, 553, 10731, + -1000, 1857, -1000, 508, 3002, 74, 712, 506, 257, 498, + 10731, 10731, 3002, 656, 70, 10731, 841, 737, 10731, 497, + 492, -1000, 4550, -1000, 3002, 3002, 3002, 3002, 3002, 3002, + 3002, 3002, -1000, -1000, -1000, -1000, -1000, -1000, 3002, 3002, + -1000, 890, 241, -1000, -1000, -1000, -1000, 10731, 6539, -1000, + -1000, -1000, -1000, -1000, -1000, 904, 161, 530, 127, 654, + -1000, 402, 862, 443, 776, 8648, 757, -1000, -1000, 10731, + -1000, 6539, 6539, 308, -1000, 9574, -1000, -1000, 3518, 183, + 7011, 336, 246, 7011, 7011, 7011, 7011, 7011, 7011, 7011, + 7011, 7011, 7011, 7011, 7011, 7011, 7011, 7011, 391, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 480, -1000, 619, + 499, 499, 142, 142, 142, 142, 142, 142, 142, 2174, + 5556, 443, 545, 239, 6294, 6046, 6046, 6539, 6539, 10961, + 10961, 6046, 853, 238, 239, 10961, -1000, 443, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 6046, 6046, 6046, 6046, 22, + 10731, -1000, 644, 698, -1000, -1000, -1000, 849, 8188, 8418, + 22, 638, 9114, 10731, -1000, -1000, 4292, 652, -127, 630, + -1000, -101, -87, 5311, 141, -1000, -1000, -1000, -1000, 2744, + 299, 555, 255, -60, -1000, -1000, -1000, 684, -1000, 684, + 684, 684, 684, -32, -32, -32, -32, -1000, -1000, -1000, + -1000, -1000, 710, 707, -1000, 684, 684, 684, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 591, 10809, - -1000, 1915, -1000, 540, 3080, 75, 650, 534, 251, 533, - 10809, 10809, 3080, 66, 10809, 893, 750, 10809, 509, 480, - -1000, 4628, -1000, 3080, 3080, 3080, 3080, 3080, 3080, 3080, - 3080, -1000, -1000, -1000, -1000, -1000, -1000, 3080, 3080, -1000, - 925, 293, -1000, -1000, -1000, -1000, 10809, 6617, -1000, -1000, - -1000, -1000, -1000, -1000, 939, 160, 495, 118, 704, -1000, - 425, 908, 490, 804, 8726, 764, -1000, -1000, 10809, -1000, - 6617, 6617, 466, -1000, 9652, -1000, -1000, 3596, 167, 7089, - 365, 346, 7089, 7089, 7089, 7089, 7089, 7089, 7089, 7089, - 7089, 7089, 7089, 7089, 7089, 7089, 7089, 449, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 471, -1000, 710, 1065, - 1065, 144, 144, 144, 144, 144, 144, 144, 2306, 5634, - 490, 589, 413, 6372, 6124, 6124, 6617, 6617, 11039, 11039, - 6124, 901, 229, 413, 11039, -1000, 490, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 6124, 6124, 6124, 6124, 27, 10809, - -1000, 665, 1107, -1000, -1000, -1000, 895, 8266, 8496, 27, - 632, 9192, 10809, -1000, -1000, 4370, 679, -113, 653, -1000, - -127, -131, 5389, 122, -1000, -1000, -1000, -1000, 2822, 294, - 619, 323, -67, -1000, -1000, -1000, 720, -1000, 720, 720, - 720, 720, -30, -30, -30, -30, -1000, -1000, -1000, -1000, - -1000, 734, 733, -1000, 720, 720, 720, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 704, 704, 704, 697, 697, 713, + -1000, 10731, -171, 468, 3002, 840, 3002, -1000, 72, -1000, + 10731, 10731, 651, -1000, 10731, 3002, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 730, 730, 730, 723, 723, 708, -1000, - 10809, -174, 469, 3080, 880, 3080, -1000, 1225, -1000, 10809, - -1000, -1000, 10809, 3080, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 10809, - 199, 10809, 10809, -1000, 413, -1000, 793, 6617, 6617, 4112, - 6617, -1000, -1000, -1000, 864, -1000, 901, 912, -1000, 825, - 824, 6124, -1000, -1000, 167, 254, -1000, -1000, 424, -1000, - -1000, -1000, -1000, 116, 712, -1000, 1808, -1000, -1000, -1000, - -1000, 365, 7089, 7089, 7089, 146, 1808, 1793, 641, 1866, - 144, 363, 363, 165, 165, 165, 165, 165, 237, 237, - -1000, -1000, -1000, 490, -1000, -1000, -1000, 490, 6124, 666, - -1000, -1000, 6617, -1000, 490, 578, 578, 418, 411, 707, - -1000, 114, 694, 578, 6124, 272, -1000, 6617, 490, -1000, - 578, 490, 578, 578, 642, 712, -1000, 11039, 9192, 9192, - 9192, 9192, 9192, -1000, 780, 774, -1000, 783, 768, 827, - 10809, -1000, 580, 8266, 140, 712, -1000, 9422, -1000, -1000, - 922, 9192, 657, -1000, -1000, 653, -113, -120, -1000, -1000, - -1000, -1000, 413, -1000, 452, 652, 2564, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 725, 455, -1000, 872, 170, 197, - 453, 871, -1000, -1000, -1000, 862, -1000, 261, -69, -1000, - -1000, 391, -30, -30, -1000, -1000, 122, 847, 122, 122, - 122, 442, 442, -1000, -1000, -1000, -1000, 380, -1000, -1000, - -1000, 361, -1000, 748, 10579, 3080, -1000, 3854, -1000, -1000, - -1000, -1000, -1000, -1000, 1326, 781, 174, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 26, -1000, - 3080, -1000, 293, -1000, 429, 6617, -1000, -1000, 787, 413, - 413, 112, -1000, -1000, 10809, -1000, -1000, -1000, -1000, 677, - -1000, -1000, -1000, 3338, 6124, -1000, 146, 1808, 1726, -1000, - 7089, 7089, -1000, -1000, 578, 6124, 413, -1000, -1000, -1000, - 535, 449, 535, 7089, 7089, 4112, 7089, 7089, -166, 676, - 224, -1000, 6617, 355, -1000, -1000, -1000, -1000, -1000, 747, - 11039, 712, -1000, 8030, 10579, 659, -1000, 205, 1107, 729, - 746, 1207, -1000, -1000, -1000, -1000, 772, -1000, 771, -1000, - -1000, -1000, -1000, -1000, 81, 80, 79, 10579, -1000, 914, - 6617, 657, -1000, -1000, -1000, -137, -136, -1000, -1000, -1000, - 2822, -1000, 2822, 10579, 41, -1000, 453, 453, -1000, -1000, - -1000, 724, 745, 38, -1000, -1000, -1000, 611, 122, 122, - -1000, 198, -1000, -1000, -1000, 576, -1000, 562, 651, 552, - 10809, -1000, -1000, 649, -1000, 188, -1000, -1000, 10579, -1000, + -1000, 10731, 251, 10731, 10731, -1000, 239, -1000, 782, 6539, + 6539, 4034, 6539, -1000, -1000, -1000, 806, -1000, 853, 864, + -1000, 790, 789, 6046, -1000, -1000, 183, 197, -1000, -1000, + 370, -1000, -1000, -1000, -1000, 126, 662, -1000, 2320, -1000, + -1000, -1000, -1000, 336, 7011, 7011, 7011, 318, 2320, 2151, + 1717, 1097, 142, 130, 130, 143, 143, 143, 143, 143, + 382, 382, -1000, -1000, -1000, 443, -1000, -1000, -1000, 443, + 6046, 635, -1000, -1000, 6539, -1000, 443, 540, 540, 253, + 313, 678, -1000, 124, 668, 540, 6046, 266, -1000, 6539, + 443, -1000, 540, 443, 540, 540, 517, 662, -1000, 10961, + 9114, 9114, 9114, 9114, 9114, -1000, 767, 762, -1000, 755, + 754, 763, 10731, -1000, 543, 8188, 129, 662, -1000, 9344, + -1000, -1000, 878, 9114, 611, -1000, -1000, 630, -127, -93, + -1000, -1000, -1000, -1000, 239, -1000, 395, 629, 2486, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 703, 462, -1000, 831, + 170, 178, 437, 829, -1000, -1000, -1000, 804, -1000, 271, + -62, -1000, -1000, 364, -32, -32, -1000, -1000, 141, 797, + 141, 141, 141, 409, 409, -1000, -1000, -1000, -1000, 341, + -1000, -1000, -1000, 338, -1000, 736, 10501, 3002, -1000, 3776, + -1000, -1000, -1000, -1000, -1000, -1000, 1372, 1265, 181, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 10579, 10809, -1000, -1000, -1000, -1000, -1000, 10579, -1000, - 199, -1000, 413, -1000, 3854, -1000, 922, 9192, -1000, -1000, - 490, -1000, 7089, 1808, 1808, -1000, -1000, 490, 720, 720, - -1000, 720, 723, -1000, 720, -13, 720, -14, 490, 490, - 1614, 1073, -1000, 1411, 313, 712, -163, -1000, 413, 6617, - -1000, 875, 629, 643, -1000, -1000, 5879, 490, 547, 111, - 539, -1000, 914, 11039, 6617, -1000, -1000, 6617, 722, -1000, - 6617, -1000, -1000, -1000, 712, 712, 712, 539, 908, 413, - -1000, -1000, -1000, -1000, 2564, -1000, 530, -1000, 720, -1000, - -1000, -1000, 10579, -54, 937, -1000, -1000, -1000, -1000, 716, - -1000, -1000, -1000, -1000, -1000, -1000, -30, 428, -30, 333, - -1000, 319, 3080, 3854, 2822, -1000, 715, -1000, -1000, -1000, - -1000, 866, -1000, 920, 646, -1000, 1808, -1000, -1000, 99, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 7089, - 7089, -1000, 7089, 7089, 7089, 490, 421, 413, 870, -1000, - 712, -1000, -1000, 648, 10579, 10579, -1000, 10579, 908, -1000, - 413, 413, 10579, 413, 10579, 10579, 10579, 7794, -1000, 128, - 10579, -1000, 523, -1000, 155, -1000, -145, 596, 122, -1000, - 122, 595, 566, -1000, -1000, -1000, 10579, 712, 916, 910, - -1000, -1000, 1538, 1538, 1538, 1538, 36, -1000, -1000, 936, - -1000, 712, -1000, 710, 104, -1000, -1000, -1000, 519, 517, - 517, 517, 140, 128, -1000, 415, 176, 416, -1000, 40, - 10579, 276, 868, -1000, 865, 714, -1000, -1000, -1000, -1000, - -1000, 489, 19, -1000, 6617, 6617, -1000, -1000, -1000, -1000, - 490, 39, -177, 11039, 643, 490, 10579, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 289, -1000, -1000, 10809, -1000, -1000, - 336, -1000, -1000, 531, 650, 487, -1000, 10579, 413, 639, - -1000, 785, -171, -180, 634, -1000, -1000, -1000, 713, -1000, - -1000, -174, -1000, 19, 803, -1000, 784, -1000, 10579, -1000, - -1000, 15, -175, 468, 12, -178, 744, 712, -181, 742, - -1000, 930, 6853, -1000, -1000, 932, 192, 192, 1538, 490, - -1000, -1000, -1000, 47, 410, -1000, -1000, -1000, -1000, -1000, - -1000, + 20, 65, -1000, 3002, -1000, 241, -1000, 408, 6539, -1000, + -1000, 780, 239, 239, 116, -1000, -1000, 10731, -1000, -1000, + -1000, -1000, 667, -1000, -1000, -1000, 3260, 6046, -1000, 318, + 2320, 1588, -1000, 7011, 7011, -1000, -1000, 540, 6046, 239, + -1000, -1000, -1000, 62, 391, 62, 7011, 7011, 4034, 7011, + 7011, -166, 655, 204, -1000, 6539, 182, -1000, -1000, -1000, + -1000, -1000, 734, 10961, 662, -1000, 7952, 10501, 632, -1000, + 198, 698, 702, 732, 1334, -1000, -1000, -1000, -1000, 756, + -1000, 714, -1000, -1000, -1000, -1000, -1000, 87, 86, 73, + 10501, -1000, 871, 6539, 611, -1000, -1000, -1000, -121, -123, + -1000, -1000, -1000, 2744, -1000, 2744, 10501, 39, -1000, 437, + 437, -1000, -1000, -1000, 699, 731, 76, -1000, -1000, -1000, + 550, 141, 141, -1000, 184, -1000, -1000, -1000, 531, -1000, + 521, 622, 518, 10731, -1000, -1000, 571, -1000, 196, -1000, + -1000, 10501, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 10501, 10731, -1000, -1000, -1000, -1000, + -1000, 10501, 10731, -1000, 251, -1000, 239, -1000, 3776, -1000, + 878, 9114, -1000, -1000, 443, -1000, 7011, 2320, 2320, -1000, + -1000, 443, 684, 684, -1000, 684, 697, -1000, 684, -8, + 684, -14, 443, 443, 1891, 2074, -1000, 674, 1978, 662, + -163, -1000, 239, 6539, -1000, 803, 560, 562, -1000, -1000, + 5801, 443, 479, 114, 477, -1000, 871, 10961, 6539, -1000, + -1000, 6539, 695, -1000, 6539, -1000, -1000, -1000, 662, 662, + 662, 477, 862, 239, -1000, -1000, -1000, -1000, 2486, -1000, + 472, -1000, 684, -1000, -1000, -1000, 10501, -56, 902, -1000, + -1000, -1000, -1000, 683, -1000, -1000, -1000, -1000, -1000, -1000, + -32, 407, -32, 324, -1000, 323, 3002, 3776, 2744, -1000, + 682, -1000, -1000, -1000, -1000, 836, -1000, -1000, 875, 566, + -1000, 2320, -1000, -1000, 97, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 7011, 7011, -1000, 7011, 7011, 7011, + 443, 406, 239, 814, -1000, 662, -1000, -1000, 634, 10501, + 10501, -1000, 10501, 862, -1000, 239, 239, 10501, 239, 10501, + 10501, 10501, 7716, -1000, 128, 10501, -1000, 461, -1000, 174, + -1000, -141, 532, 141, -1000, 141, 528, 473, -1000, -1000, + -1000, 10501, 662, 873, 865, -1000, -1000, 535, 535, 535, + 535, 24, -1000, -1000, 896, -1000, 662, -1000, 619, 110, + -1000, -1000, -1000, 448, 446, 446, 446, 129, 128, -1000, + 435, 194, 392, -1000, 36, 10501, 277, 813, -1000, 810, + 677, -1000, -1000, -1000, -1000, -1000, 442, 18, -1000, 6539, + 6539, -1000, -1000, -1000, -1000, 443, 44, -175, 10961, 562, + 443, 10501, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 312, + -1000, -1000, 10731, -1000, -1000, 388, -1000, -1000, 449, 712, + 421, -1000, 10501, 239, 561, -1000, 774, -169, -180, 558, + -1000, -1000, -1000, 673, -1000, -1000, -171, -1000, 18, 788, + -1000, 772, -1000, 10501, -1000, -1000, 15, -173, 417, 13, + -178, 730, 662, -182, 728, -1000, 888, 6775, -1000, -1000, + 894, 154, 154, 535, 443, -1000, -1000, -1000, 43, 403, + -1000, -1000, -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1241, 44, 481, 1239, 1236, 1235, 1227, 1226, 1211, - 1210, 1209, 1207, 1203, 1201, 1200, 1199, 1197, 1195, 1194, - 1190, 1185, 1184, 1183, 1182, 146, 1181, 1162, 1161, 59, - 1160, 77, 1158, 1148, 41, 122, 86, 43, 894, 1146, - 27, 71, 89, 1145, 33, 1144, 1142, 78, 1141, 55, - 1136, 1122, 281, 1121, 1120, 10, 23, 1119, 1116, 1115, - 1113, 70, 38, 1112, 1110, 1109, 1108, 1106, 1094, 53, - 7, 9, 22, 18, 1091, 28, 17, 1089, 52, 1086, - 1085, 1084, 1083, 26, 1082, 56, 1081, 11, 51, 1079, - 30, 60, 31, 15, 6, 66, 65, 1078, 16, 69, - 49, 1077, 1076, 381, 1063, 1062, 40, 1061, 1058, 19, - 189, 453, 1054, 1051, 1050, 1049, 75, 0, 538, 479, - 64, 1047, 1042, 1041, 1366, 73, 48, 12, 1040, 63, - 169, 35, 1038, 1035, 37, 1034, 1032, 1030, 1028, 1027, - 1024, 1022, 20, 1020, 1018, 1017, 34, 47, 1014, 1013, - 54, 21, 1012, 1010, 1009, 46, 58, 1002, 1000, 50, - 29, 991, 990, 975, 974, 972, 25, 57, 966, 13, - 963, 8, 961, 24, 960, 3, 959, 14, 958, 4, - 957, 5, 42, 1, 956, 2, 955, 953, 61, 290, - 952, 950, 92, + 0, 1126, 28, 433, 1125, 1123, 1121, 1120, 1119, 1112, + 1110, 1109, 1107, 1105, 1104, 1102, 1097, 1096, 1095, 1094, + 1091, 1089, 1086, 1084, 1081, 1078, 133, 1077, 1076, 1075, + 61, 1074, 77, 1071, 1070, 35, 156, 41, 38, 1012, + 1068, 21, 62, 59, 1065, 26, 1064, 1061, 69, 1059, + 48, 1058, 1057, 1180, 1051, 1050, 12, 40, 1047, 1046, + 1045, 1041, 63, 132, 1040, 1039, 1037, 1036, 1033, 1031, + 51, 8, 11, 18, 25, 1030, 115, 9, 1029, 50, + 1028, 1027, 1026, 1024, 23, 1023, 57, 1020, 43, 56, + 1018, 7, 70, 31, 15, 6, 75, 65, 1015, 14, + 66, 42, 1014, 1013, 379, 1011, 1010, 45, 1008, 1005, + 22, 175, 309, 1003, 1002, 1000, 999, 37, 0, 488, + 463, 73, 998, 996, 993, 1166, 71, 55, 20, 992, + 49, 83, 44, 990, 988, 34, 985, 982, 981, 979, + 978, 975, 974, 60, 971, 966, 964, 99, 30, 963, + 962, 64, 27, 960, 959, 953, 47, 58, 952, 942, + 54, 33, 941, 940, 939, 938, 937, 17, 19, 936, + 13, 932, 10, 928, 24, 926, 3, 925, 16, 924, + 4, 922, 5, 46, 1, 920, 2, 919, 916, 52, + 332, 915, 899, 84, } var yyR1 = [...]int{ - 0, 186, 187, 187, 1, 1, 1, 1, 1, 1, + 0, 187, 188, 188, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 6, 3, 4, - 4, 5, 5, 7, 7, 28, 28, 8, 9, 9, - 9, 190, 190, 47, 47, 91, 91, 10, 10, 10, - 10, 96, 96, 100, 100, 100, 101, 101, 101, 101, - 132, 132, 11, 11, 11, 11, 11, 11, 11, 11, - 181, 181, 180, 179, 179, 178, 178, 177, 17, 162, - 164, 164, 163, 163, 163, 163, 156, 135, 135, 135, - 135, 138, 138, 136, 136, 136, 136, 136, 136, 136, - 137, 137, 137, 137, 137, 139, 139, 139, 139, 139, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 141, 141, 141, 141, 141, - 141, 141, 141, 155, 155, 142, 142, 150, 150, 151, - 151, 151, 148, 148, 149, 149, 152, 152, 152, 143, - 143, 143, 143, 143, 143, 143, 143, 145, 145, 145, - 153, 153, 146, 146, 146, 147, 147, 147, 154, 154, - 154, 154, 154, 144, 144, 157, 157, 172, 172, 171, - 171, 171, 161, 161, 168, 168, 168, 168, 168, 159, - 159, 160, 160, 170, 170, 169, 158, 158, 173, 173, - 173, 173, 184, 185, 183, 183, 183, 183, 183, 165, - 165, 165, 166, 166, 166, 167, 167, 167, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 182, 182, 182, - 182, 182, 182, 182, 182, 182, 182, 182, 176, 174, - 174, 175, 175, 13, 14, 14, 14, 14, 14, 15, - 15, 18, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 107, 107, 105, 105, 108, 108, 106, 106, 106, 109, - 109, 109, 133, 133, 133, 20, 20, 22, 22, 23, - 24, 21, 21, 21, 21, 21, 21, 21, 16, 191, - 25, 26, 26, 27, 27, 27, 31, 31, 31, 29, - 29, 30, 30, 36, 36, 35, 35, 37, 37, 37, - 37, 121, 121, 121, 120, 120, 39, 39, 40, 40, - 41, 41, 42, 42, 42, 42, 54, 54, 90, 90, - 92, 92, 43, 43, 43, 43, 44, 44, 45, 45, - 46, 46, 128, 128, 127, 127, 127, 126, 126, 48, - 48, 48, 50, 49, 49, 49, 49, 51, 51, 53, - 53, 52, 52, 55, 55, 55, 55, 56, 56, 38, - 38, 38, 38, 38, 38, 38, 104, 104, 58, 58, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 68, 68, 68, 68, 68, 68, 59, 59, 59, 59, - 59, 59, 59, 34, 34, 69, 69, 69, 75, 70, - 70, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 66, 66, 66, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 65, 65, 65, 65, 65, 65, 65, 65, 192, - 192, 67, 67, 67, 67, 32, 32, 32, 32, 32, - 131, 131, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 79, 79, 33, 33, 77, - 77, 78, 80, 80, 76, 76, 76, 61, 61, 61, - 61, 61, 61, 61, 61, 63, 63, 63, 81, 81, - 82, 82, 83, 83, 84, 84, 85, 86, 86, 86, - 87, 87, 87, 87, 88, 88, 88, 60, 60, 60, - 60, 60, 60, 89, 89, 89, 89, 93, 93, 71, - 71, 73, 73, 72, 74, 94, 94, 98, 95, 95, - 99, 99, 99, 99, 97, 97, 97, 123, 123, 123, - 102, 102, 110, 110, 111, 111, 103, 103, 112, 112, - 112, 112, 112, 112, 112, 112, 112, 112, 113, 113, - 113, 114, 114, 115, 115, 115, 122, 122, 118, 118, - 119, 119, 124, 124, 125, 125, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, + 4, 5, 5, 7, 7, 29, 29, 8, 9, 9, + 9, 191, 191, 48, 48, 92, 92, 10, 10, 10, + 10, 97, 97, 101, 101, 101, 102, 102, 102, 102, + 133, 133, 11, 11, 11, 11, 11, 11, 11, 11, + 182, 182, 181, 180, 180, 179, 179, 178, 17, 163, + 165, 165, 164, 164, 164, 164, 157, 136, 136, 136, + 136, 139, 139, 137, 137, 137, 137, 137, 137, 137, + 138, 138, 138, 138, 138, 140, 140, 140, 140, 140, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 142, 142, 142, 142, 142, + 142, 142, 142, 156, 156, 143, 143, 151, 151, 152, + 152, 152, 149, 149, 150, 150, 153, 153, 153, 144, + 144, 144, 144, 144, 144, 144, 144, 146, 146, 146, + 154, 154, 147, 147, 147, 148, 148, 148, 155, 155, + 155, 155, 155, 145, 145, 158, 158, 173, 173, 172, + 172, 172, 162, 162, 169, 169, 169, 169, 169, 160, + 160, 161, 161, 171, 171, 170, 159, 159, 174, 174, + 174, 174, 185, 186, 184, 184, 184, 184, 184, 166, + 166, 166, 167, 167, 167, 168, 168, 168, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 183, 183, 177, 175, + 175, 176, 176, 13, 18, 18, 14, 14, 14, 14, + 14, 15, 15, 19, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 108, 108, 106, 106, 109, 109, 107, 107, + 107, 110, 110, 110, 134, 134, 134, 21, 21, 23, + 23, 24, 25, 22, 22, 22, 22, 22, 22, 22, + 16, 192, 26, 27, 27, 28, 28, 28, 32, 32, + 32, 30, 30, 31, 31, 37, 37, 36, 36, 38, + 38, 38, 38, 122, 122, 122, 121, 121, 40, 40, + 41, 41, 42, 42, 43, 43, 43, 43, 55, 55, + 91, 91, 93, 93, 44, 44, 44, 44, 45, 45, + 46, 46, 47, 47, 129, 129, 128, 128, 128, 127, + 127, 49, 49, 49, 51, 50, 50, 50, 50, 52, + 52, 54, 54, 53, 53, 56, 56, 56, 56, 57, + 57, 39, 39, 39, 39, 39, 39, 39, 105, 105, + 59, 59, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 69, 69, 69, 69, 69, 69, 60, 60, + 60, 60, 60, 60, 60, 35, 35, 70, 70, 70, + 76, 71, 71, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 67, 67, 67, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 66, 66, 66, 66, 66, 66, 66, + 66, 193, 193, 68, 68, 68, 68, 33, 33, 33, + 33, 33, 132, 132, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 80, 80, 34, + 34, 78, 78, 79, 81, 81, 77, 77, 77, 62, + 62, 62, 62, 62, 62, 62, 62, 64, 64, 64, + 82, 82, 83, 83, 84, 84, 85, 85, 86, 87, + 87, 87, 88, 88, 88, 88, 89, 89, 89, 61, + 61, 61, 61, 61, 61, 90, 90, 90, 90, 94, + 94, 72, 72, 74, 74, 73, 75, 95, 95, 99, + 96, 96, 100, 100, 100, 100, 98, 98, 98, 124, + 124, 124, 103, 103, 111, 111, 112, 112, 104, 104, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 114, 114, 114, 115, 115, 116, 116, 116, 123, 123, + 119, 119, 120, 120, 125, 125, 126, 126, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, @@ -2082,9 +2065,18 @@ var yyR1 = [...]int{ 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 188, - 189, 129, 130, 130, 130, + 117, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 189, 190, 130, 131, 131, 131, } var yyR2 = [...]int{ @@ -2112,44 +2104,44 @@ var yyR2 = [...]int{ 1, 3, 1, 2, 3, 1, 1, 1, 6, 7, 7, 12, 7, 7, 7, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, - 3, 8, 8, 5, 4, 6, 5, 4, 4, 3, - 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, - 3, 3, 3, 3, 4, 3, 7, 5, 4, 2, - 2, 4, 4, 2, 2, 2, 2, 2, 2, 3, - 1, 1, 0, 1, 1, 1, 0, 2, 2, 0, - 2, 2, 0, 1, 1, 2, 1, 1, 2, 1, - 1, 2, 2, 2, 2, 2, 3, 3, 2, 0, - 2, 0, 2, 1, 2, 2, 0, 1, 1, 0, - 1, 0, 1, 0, 1, 1, 3, 1, 2, 3, - 5, 0, 1, 2, 1, 1, 0, 2, 1, 3, - 1, 1, 1, 3, 1, 3, 3, 7, 1, 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, 0, 5, 5, 5, 0, 2, 1, - 3, 3, 2, 3, 1, 2, 0, 3, 1, 1, - 3, 3, 4, 4, 5, 3, 4, 5, 6, 2, - 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 0, 2, 1, 1, 1, 3, 1, - 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, + 3, 8, 8, 3, 3, 5, 4, 6, 5, 4, + 4, 3, 2, 3, 4, 4, 4, 4, 4, 4, + 4, 4, 3, 3, 3, 3, 4, 3, 7, 5, + 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, + 2, 3, 1, 1, 0, 1, 1, 1, 0, 2, + 2, 0, 2, 2, 0, 1, 1, 2, 1, 1, + 2, 1, 1, 2, 2, 2, 2, 2, 3, 3, + 2, 0, 2, 0, 2, 1, 2, 2, 0, 1, + 1, 0, 1, 0, 1, 0, 1, 1, 3, 1, + 2, 3, 5, 0, 1, 2, 1, 1, 0, 2, + 1, 3, 1, 1, 1, 3, 1, 3, 3, 7, + 1, 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, 0, 5, 5, 5, 0, + 2, 1, 3, 3, 2, 3, 1, 2, 0, 3, + 1, 1, 3, 3, 4, 4, 5, 3, 4, 5, + 6, 2, 1, 2, 1, 2, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, + 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 2, 2, 2, 2, 2, 3, 1, - 1, 1, 1, 4, 5, 6, 4, 4, 6, 6, - 6, 6, 8, 8, 6, 8, 8, 9, 7, 5, - 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, - 2, 4, 4, 4, 4, 0, 3, 4, 7, 3, - 1, 1, 2, 3, 3, 1, 2, 2, 1, 2, - 1, 2, 2, 1, 2, 0, 1, 0, 2, 1, - 2, 4, 0, 2, 1, 3, 5, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 0, 3, - 0, 2, 0, 3, 1, 3, 2, 0, 1, 1, - 0, 2, 4, 4, 0, 2, 4, 2, 1, 3, - 5, 4, 6, 1, 3, 3, 5, 0, 5, 1, - 3, 1, 2, 3, 1, 1, 3, 3, 1, 3, - 3, 3, 3, 3, 1, 2, 1, 1, 1, 1, - 1, 1, 0, 2, 0, 3, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, - 1, 1, 1, 0, 1, 1, 0, 2, 1, 1, + 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, + 3, 1, 1, 1, 1, 4, 5, 6, 4, 4, + 6, 6, 6, 6, 8, 8, 6, 8, 8, 9, + 7, 5, 4, 2, 2, 2, 2, 2, 2, 2, + 2, 0, 2, 4, 4, 4, 4, 0, 3, 4, + 7, 3, 1, 1, 2, 3, 3, 1, 2, 2, + 1, 2, 1, 2, 2, 1, 2, 0, 1, 0, + 2, 1, 2, 4, 0, 2, 1, 3, 5, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 0, 3, 0, 2, 0, 3, 1, 3, 2, 0, + 1, 1, 0, 2, 4, 4, 0, 2, 4, 2, + 1, 3, 5, 4, 6, 1, 3, 3, 5, 0, + 5, 1, 3, 1, 2, 3, 1, 1, 3, 3, + 1, 3, 3, 3, 3, 3, 1, 2, 1, 1, + 1, 1, 1, 1, 0, 2, 0, 3, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 0, 1, 1, 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, @@ -2171,19 +2163,19 @@ 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, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 1, 1, } var yyChk = [...]int{ - -1000, -186, -1, -2, -6, -7, -8, -9, -10, -11, - -12, -13, -14, -15, -18, -19, -20, -22, -23, -24, - -21, -16, -3, -4, 6, 7, -28, 9, 10, 30, + -1000, -187, -1, -2, -6, -7, -8, -9, -10, -11, + -12, -13, -14, -15, -19, -20, -21, -23, -24, -25, + -22, -16, -3, -4, 6, 7, -29, 9, 10, 30, -17, 115, 116, 118, 117, 149, 119, 142, 50, 162, 163, 165, 166, 25, 143, 144, 147, 148, 31, 32, - 121, -188, 8, 248, 54, -187, 263, -83, 15, -27, - 5, -25, -191, -25, -25, -25, -25, -25, -162, -164, - 54, 90, -115, 125, 72, 157, 240, 122, 123, 129, - -118, 57, -117, 256, 135, 162, 173, 167, 194, 186, + 121, -189, 8, 248, 54, -188, 263, -84, 15, -28, + 5, -26, -192, -26, -26, -26, -26, -26, -163, -165, + 54, 90, -116, 125, 72, 157, 240, 122, 123, 129, + -119, 57, -118, 256, 135, 162, 173, 167, 194, 186, 136, 184, 187, 227, 214, 224, 66, 165, 236, 145, 182, 178, 176, 27, 199, 261, 177, 225, 121, 138, 133, 200, 204, 228, 171, 172, 230, 198, 134, 33, @@ -2194,21 +2186,21 @@ var yyChk = [...]int{ 132, 163, 159, 216, 190, 154, 180, 181, 195, 168, 191, 164, 156, 149, 237, 212, 262, 188, 185, 160, 158, 217, 218, 219, 220, 221, 161, 259, 233, 183, - 213, -103, 125, 127, 123, 123, 124, 125, 240, 122, - 123, -52, -124, 57, -117, 125, 157, 123, 108, 187, - 115, 215, 124, 33, 155, -133, 123, -105, 158, 214, + 213, -104, 125, 127, 123, 123, 124, 125, 240, 122, + 123, -53, -125, 57, -118, 125, 157, 123, 108, 187, + 115, 215, 124, 33, 155, -134, 123, -106, 158, 214, 217, 218, 219, 221, 220, 161, 57, 229, 228, 222, - -124, 164, -129, -129, -129, -129, -129, 216, 216, -129, - -2, -87, 17, 16, -5, -3, -188, 6, 20, 21, - -31, 40, 41, -26, -37, 99, -38, -124, -57, 74, - -62, 29, 57, -117, 23, -61, -58, -76, -74, -75, - 108, 109, 110, 97, 98, 105, 75, 111, -66, -64, - -65, -67, 59, 58, 67, 60, 61, 62, 63, 68, - 69, 70, -118, -72, -188, 44, 45, 249, 250, 251, + -125, 164, -130, -130, -130, -130, -130, 216, 216, -130, + -2, -88, 17, 16, -5, -3, -189, 6, 20, 21, + -32, 40, 41, -27, -38, 99, -39, -125, -58, 74, + -63, 29, 57, -118, 23, -62, -59, -77, -75, -76, + 108, 109, 110, 97, 98, 105, 75, 111, -67, -65, + -66, -68, 59, 58, 67, 60, 61, 62, 63, 68, + 69, 70, -119, -73, -189, 44, 45, 249, 250, 251, 252, 255, 253, 77, 34, 239, 247, 246, 245, 243, - 244, 241, 242, 128, 240, 103, 248, -103, -103, 11, - -47, -52, -95, -132, 164, -99, 229, 228, -119, -97, - -118, -116, 227, 187, 226, 120, 73, 22, 24, 209, + 244, 241, 242, 128, 240, 103, 248, -104, -104, 11, + -48, -53, -96, -133, 164, -100, 229, 228, -120, -98, + -119, -117, 227, 187, 226, 120, 73, 22, 24, 209, 76, 108, 16, 77, 107, 249, 115, 48, 241, 242, 239, 251, 252, 240, 215, 29, 10, 25, 143, 21, 101, 117, 80, 81, 146, 23, 144, 70, 19, 51, @@ -2217,243 +2209,243 @@ var yyChk = [...]int{ 255, 150, 103, 49, 36, 74, 68, 71, 52, 72, 15, 47, 91, 118, 248, 45, 122, 6, 254, 30, 142, 43, 123, 79, 126, 69, 5, 129, 32, 9, - 50, 53, 245, 246, 247, 34, 78, 12, -163, 90, - -156, 57, -52, 124, -52, 248, -118, -111, 128, -111, - -111, 123, -52, -52, -110, 128, 57, -110, -110, -110, - -52, 112, -52, 57, 30, 240, 57, 155, 123, 156, - 125, -130, -188, -119, -130, -130, -130, 159, 160, -130, - -108, -107, 224, 225, 216, 223, 52, 12, -130, -129, - -129, -189, 56, -88, 19, 31, -38, -124, -84, -85, - -38, -83, -2, -25, 36, -29, 21, 65, 11, -121, - 73, 72, 89, -120, 22, -118, 59, 112, -38, -59, - 92, 74, 90, 91, 76, 94, 93, 104, 97, 98, - 99, 100, 101, 102, 103, 95, 96, 107, 82, 83, - 84, 85, 86, 87, 88, -104, -188, -75, -188, 113, - 114, -62, -62, -62, -62, -62, -62, -62, -62, -188, - -2, -70, -38, -188, -188, -188, -188, -188, -188, -188, - -188, -188, -79, -38, -188, -192, -188, -192, -192, -192, - -192, -192, -192, -192, -188, -188, -188, -188, -53, 26, - -52, -40, -41, -42, -43, -54, -75, -188, -52, -52, - -47, -190, 55, 11, 53, 55, -95, 164, -96, -100, - 230, 232, 82, -123, -118, 59, 29, 30, 56, 55, - -52, -135, -138, -140, -139, -141, -136, -137, 184, 185, - 108, 188, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 30, 145, 180, 181, 182, 183, 200, 201, - 202, 203, 204, 205, 206, 207, 167, 168, 169, 170, - 171, 172, 173, 175, 176, 177, 178, 179, 57, -130, - 125, -181, 53, 57, 74, 57, -52, -52, -130, 126, - -52, 23, 52, -52, 57, 57, -125, -124, -116, -130, - -130, -130, -130, -130, -130, -130, -130, -130, -130, 11, - -106, 11, 92, -52, -38, 9, 92, 55, 18, 112, - 55, -86, 24, 25, -87, -189, -31, -63, -118, 60, - 63, -30, 43, -52, -38, -38, -68, 68, 74, 69, - 70, -120, 99, -125, -119, -116, -62, -69, -72, -75, - 64, 92, 90, 91, 76, -62, -62, -62, -62, -62, - -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, - -131, 57, 59, 57, -61, -61, -118, -36, 21, -35, - -37, -189, 55, -189, -2, -35, -35, -38, -38, -76, - -118, -124, -76, -35, -29, -77, -78, 78, -76, -189, - -35, -36, -35, -35, -91, 151, -52, 30, 55, -48, - -50, -49, -51, 42, 46, 48, 43, 44, 45, 49, - -128, 22, -40, -188, -127, 151, -126, 22, -124, 59, - -91, 53, -40, -52, -99, -96, 55, 231, 233, 234, - 52, 71, -38, -147, 107, -165, -166, -167, -119, 59, - 60, -156, -157, -158, -168, 137, -173, 130, 132, 129, - -159, 138, 124, 28, 56, -152, 68, 74, -148, 212, - -142, 54, -142, -142, -142, -142, -146, 187, -146, -146, - -146, 54, 54, -142, -142, -142, -150, 54, -150, -150, - -151, 54, -151, -122, 53, -52, -179, 259, -180, 57, - -130, 23, -130, -112, 120, 117, 118, -176, 116, 209, - 187, 66, 29, 15, 249, 151, 262, 57, 152, -52, - -52, -130, -52, -109, 90, 12, -124, -124, 38, -38, - -38, -125, -85, -88, -102, 19, 11, 34, 34, -35, - 68, 69, 70, 112, -188, -69, -62, -62, -62, -34, - 146, 73, -189, -189, -35, 55, -38, -189, -189, -189, - 55, 53, 22, 55, 11, 112, 55, 11, -189, -35, - -80, -78, 80, -38, -189, -189, -189, -189, -189, -60, - 30, 34, -2, -188, -188, -94, -98, -76, -41, -42, - -42, -41, -42, 42, 42, 42, 47, 42, 47, 42, - -49, -124, -189, -55, 50, 127, 51, -188, -126, -56, - 12, -40, -56, -100, -101, 235, 232, 238, 57, 59, - 55, -167, 82, 54, 57, 28, -159, -159, -160, 57, - -160, 28, -143, 29, 68, -149, 213, 60, -146, -146, - -147, 30, -147, -147, -147, -155, 59, -155, 60, 60, - 52, -118, -130, -178, -177, -119, -129, -182, 157, 131, - 137, 138, 133, 57, 124, 28, 130, 132, 151, 129, - -182, 157, -113, -114, 126, 22, 124, 28, 151, -130, - -106, 59, -38, 39, 112, -52, -39, 11, 99, -119, - -36, -34, 73, -62, -62, -189, -37, -134, 108, 184, - 145, 182, 178, 198, 189, 211, 180, 212, -131, -134, - -62, -62, -119, -62, -62, 256, -83, 81, -38, 79, - -93, 52, -94, -71, -73, -72, -188, -2, -89, -118, - -92, -118, -56, 55, 82, -45, -44, 52, 53, -46, - 52, -44, 42, 42, 124, 124, 124, -92, -83, -38, - -56, 232, 236, 237, -166, -167, -170, -169, -118, -173, - -160, -160, 54, -145, 52, 59, 60, 61, 68, 239, - 67, 56, -147, -147, 57, 108, 56, 55, 56, 55, - 56, 55, -52, 55, 82, -129, -118, -129, -118, -52, - -129, -118, -109, -56, -40, -189, -62, -189, -142, -142, - -142, -151, -142, 172, -142, 172, -189, -189, -189, 55, - 19, -189, 55, 19, -188, -33, 254, -38, 27, -93, - 55, -189, -189, -189, 55, 112, -189, 55, -83, -98, - -38, -38, 54, -38, -188, -188, -188, -189, -87, 56, - 55, -142, -90, -118, -153, 209, 9, 54, -146, 59, - -146, 60, 60, -130, -177, -167, 54, 26, -81, 13, - -146, 57, -62, -62, -62, -62, -62, -189, 59, 28, - -73, 34, -2, -188, -118, -118, -118, -87, -90, -90, - -90, -90, -127, -172, -171, 53, 134, 66, -169, 56, - 55, -154, 130, 28, 129, 239, 56, -147, -147, 56, - 56, -90, -188, -82, 14, 16, -189, -189, -189, -189, - -32, 92, 259, 9, -71, -2, 112, 56, -189, -189, - -189, -55, -171, 57, -161, 82, 59, 140, -118, -144, - 66, 28, 28, 54, 56, -174, -175, 151, -38, -70, - -189, 257, 49, 260, -94, -189, -118, 60, -52, 59, - 56, -181, -189, 55, -118, 39, 258, 261, 54, -179, - -175, 34, 39, -90, 153, 259, 56, 154, 260, -184, - -185, 52, -188, 261, -185, 52, 10, 9, -62, 150, - -183, 141, 136, 139, 30, -183, -189, -189, 135, 29, - 68, + 50, 53, 245, 246, 247, 34, 78, 12, -164, 90, + -157, 57, -53, 124, -53, 248, -119, -112, 128, -112, + -112, 123, -53, -18, -53, -111, 128, 57, -111, -111, + -111, -53, 112, -53, 57, 30, 240, 57, 155, 123, + 156, 125, -131, -189, -120, -131, -131, -131, 159, 160, + -131, -109, -108, 224, 225, 216, 223, 52, 12, -131, + -130, -130, -190, 56, -89, 19, 31, -39, -125, -85, + -86, -39, -84, -2, -26, 36, -30, 21, 65, 11, + -122, 73, 72, 89, -121, 22, -119, 59, 112, -39, + -60, 92, 74, 90, 91, 76, 94, 93, 104, 97, + 98, 99, 100, 101, 102, 103, 95, 96, 107, 82, + 83, 84, 85, 86, 87, 88, -105, -189, -76, -189, + 113, 114, -63, -63, -63, -63, -63, -63, -63, -63, + -189, -2, -71, -39, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -80, -39, -189, -193, -189, -193, -193, + -193, -193, -193, -193, -193, -189, -189, -189, -189, -54, + 26, -53, -41, -42, -43, -44, -55, -76, -189, -53, + -53, -48, -191, 55, 11, 53, 55, -96, 164, -97, + -101, 230, 232, 82, -124, -119, 59, 29, 30, 56, + 55, -53, -136, -139, -141, -140, -142, -137, -138, 184, + 185, 108, 188, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 30, 145, 180, 181, 182, 183, 200, + 201, 202, 203, 204, 205, 206, 207, 167, 168, 169, + 170, 171, 172, 173, 175, 176, 177, 178, 179, 57, + -131, 125, -182, 53, 57, 74, 57, -53, -53, -131, + 55, 126, -48, 23, 52, -53, 57, 57, -126, -125, + -117, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, 11, -107, 11, 92, -53, -39, 9, 92, 55, + 18, 112, 55, -87, 24, 25, -88, -190, -32, -64, + -119, 60, 63, -31, 43, -53, -39, -39, -69, 68, + 74, 69, 70, -121, 99, -126, -120, -117, -63, -70, + -73, -76, 64, 92, 90, 91, 76, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -132, 57, 59, 57, -62, -62, -119, -37, + 21, -36, -38, -190, 55, -190, -2, -36, -36, -39, + -39, -77, -119, -125, -77, -36, -30, -78, -79, 78, + -77, -190, -36, -37, -36, -36, -92, 151, -53, 30, + 55, -49, -51, -50, -52, 42, 46, 48, 43, 44, + 45, 49, -129, 22, -41, -189, -128, 151, -127, 22, + -125, 59, -92, 53, -41, -53, -100, -97, 55, 231, + 233, 234, 52, 71, -39, -148, 107, -166, -167, -168, + -120, 59, 60, -157, -158, -159, -169, 137, -174, 130, + 132, 129, -160, 138, 124, 28, 56, -153, 68, 74, + -149, 212, -143, 54, -143, -143, -143, -143, -147, 187, + -147, -147, -147, 54, 54, -143, -143, -143, -151, 54, + -151, -151, -152, 54, -152, -123, 53, -53, -180, 259, + -181, 57, -131, 23, -131, -113, 120, 117, 118, -177, + 116, 209, 187, 66, 29, 15, 249, 151, 262, 57, + 152, -53, -53, -53, -131, -53, -110, 90, 12, -125, + -125, 38, -39, -39, -126, -86, -89, -103, 19, 11, + 34, 34, -36, 68, 69, 70, 112, -189, -70, -63, + -63, -63, -35, 146, 73, -190, -190, -36, 55, -39, + -190, -190, -190, 55, 53, 22, 55, 11, 112, 55, + 11, -190, -36, -81, -79, 80, -39, -190, -190, -190, + -190, -190, -61, 30, 34, -2, -189, -189, -95, -99, + -77, -42, -43, -43, -42, -43, 42, 42, 42, 47, + 42, 47, 42, -50, -125, -190, -56, 50, 127, 51, + -189, -127, -57, 12, -41, -57, -101, -102, 235, 232, + 238, 57, 59, 55, -168, 82, 54, 57, 28, -160, + -160, -161, 57, -161, 28, -144, 29, 68, -150, 213, + 60, -147, -147, -148, 30, -148, -148, -148, -156, 59, + -156, 60, 60, 52, -119, -131, -179, -178, -120, -130, + -183, 157, 131, 137, 138, 133, 57, 124, 28, 130, + 132, 151, 129, -183, 157, -114, -115, 126, 22, 124, + 28, 151, 126, -131, -107, 59, -39, 39, 112, -53, + -40, 11, 99, -120, -37, -35, 73, -63, -63, -190, + -38, -135, 108, 184, 145, 182, 178, 198, 189, 211, + 180, 212, -132, -135, -63, -63, -120, -63, -63, 256, + -84, 81, -39, 79, -94, 52, -95, -72, -74, -73, + -189, -2, -90, -119, -93, -119, -57, 55, 82, -46, + -45, 52, 53, -47, 52, -45, 42, 42, 124, 124, + 124, -93, -84, -39, -57, 232, 236, 237, -167, -168, + -171, -170, -119, -174, -161, -161, 54, -146, 52, 59, + 60, 61, 68, 239, 67, 56, -148, -148, 57, 108, + 56, 55, 56, 55, 56, 55, -53, 55, 82, -130, + -119, -130, -119, -53, -130, -119, -53, -110, -57, -41, + -190, -63, -190, -143, -143, -143, -152, -143, 172, -143, + 172, -190, -190, -190, 55, 19, -190, 55, 19, -189, + -34, 254, -39, 27, -94, 55, -190, -190, -190, 55, + 112, -190, 55, -84, -99, -39, -39, 54, -39, -189, + -189, -189, -190, -88, 56, 55, -143, -91, -119, -154, + 209, 9, 54, -147, 59, -147, 60, 60, -131, -178, + -168, 54, 26, -82, 13, -147, 57, -63, -63, -63, + -63, -63, -190, 59, 28, -74, 34, -2, -189, -119, + -119, -119, -88, -91, -91, -91, -91, -128, -173, -172, + 53, 134, 66, -170, 56, 55, -155, 130, 28, 129, + 239, 56, -148, -148, 56, 56, -91, -189, -83, 14, + 16, -190, -190, -190, -190, -33, 92, 259, 9, -72, + -2, 112, 56, -190, -190, -190, -56, -172, 57, -162, + 82, 59, 140, -119, -145, 66, 28, 28, 54, 56, + -175, -176, 151, -39, -71, -190, 257, 49, 260, -95, + -190, -119, 60, -53, 59, 56, -182, -190, 55, -119, + 39, 258, 261, 54, -180, -176, 34, 39, -91, 153, + 259, 56, 154, 260, -185, -186, 52, -189, 261, -186, + 52, 10, 9, -63, 150, -184, 141, 136, 139, 30, + -184, -190, -190, 135, 29, 68, } var yyDef = [...]int{ 23, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 542, 0, 309, 309, 309, 309, 309, 309, - 0, 613, 596, 0, 0, 0, 0, -2, 296, 297, - 0, 299, 300, 831, 831, 831, 831, 831, 0, 0, - 831, 0, 35, 36, 829, 1, 3, 550, 0, 0, - 313, 316, 311, 0, 596, 596, 0, 0, 62, 63, - 0, 0, 0, 816, 0, 817, 594, 594, 594, 614, - 615, 618, 619, 719, 720, 721, 722, 723, 724, 725, - 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, - 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, - 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, - 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, - 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, - 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, - 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, - 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, - 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, - 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, - 828, 0, 0, 597, 0, 592, 0, 592, 592, 592, - 0, 250, 381, 622, 623, 816, 817, 0, 0, 0, - 0, 832, 832, 832, 832, 0, 832, 0, 269, 270, - 273, 274, 275, 276, 277, 278, 832, 293, 294, 283, - 295, 298, 301, 302, 303, 304, 305, 831, 831, 308, - 29, 554, 0, 0, 542, 31, 0, 309, 314, 315, - 319, 317, 318, 310, 0, 327, 331, 0, 389, 0, - 394, 396, -2, -2, 0, 431, 432, 433, 434, 435, - 0, 0, 0, 0, 0, 0, 0, 0, 459, 460, - 461, 462, 527, 528, 529, 530, 531, 532, 533, 534, - 398, 399, 524, 574, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 515, 0, 489, 489, 489, 489, 489, - 489, 489, 489, 0, 0, 0, 0, 0, 0, 0, - 0, 43, 47, 0, 807, 578, -2, -2, 0, 0, - 620, 621, -2, 728, -2, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, - 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, - 711, 712, 713, 714, 715, 716, 717, 718, 0, 0, - 82, 0, 80, 0, 832, 0, 70, 0, 0, 0, - 0, 0, 832, 0, 0, 0, 0, 0, 0, 0, - 249, 0, 251, 832, 832, 832, 832, 832, 832, 832, - 832, 260, 833, 834, 261, 262, 263, 832, 832, 265, - 0, 286, 284, 285, 280, 281, 0, 0, 279, 306, - 307, 30, 830, 24, 0, 0, 551, 0, 543, 544, - 547, 550, 29, 316, 0, 321, 320, 312, 0, 328, - 0, 0, 0, 332, 0, 334, 335, 0, 392, 0, + 21, 22, 544, 0, 311, 311, 311, 311, 311, 311, + 0, 615, 598, 0, 0, 0, 0, -2, 298, 299, + 0, 301, 302, 833, 833, 833, 833, 833, 0, 0, + 833, 0, 35, 36, 831, 1, 3, 552, 0, 0, + 315, 318, 313, 0, 598, 598, 0, 0, 62, 63, + 0, 0, 0, 818, 0, 819, 596, 596, 596, 616, + 617, 620, 621, 721, 722, 723, 724, 725, 726, 727, + 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, + 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, + 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, + 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, + 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, + 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, + 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, + 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, + 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, + 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, + 830, 0, 0, 599, 0, 594, 0, 594, 594, 594, + 0, 252, 383, 624, 625, 818, 819, 0, 0, 0, + 0, 834, 834, 834, 834, 0, 834, 0, 271, 272, + 275, 276, 277, 278, 279, 280, 834, 295, 296, 285, + 297, 300, 303, 304, 305, 306, 307, 833, 833, 310, + 29, 556, 0, 0, 544, 31, 0, 311, 316, 317, + 321, 319, 320, 312, 0, 329, 333, 0, 391, 0, + 396, 398, -2, -2, 0, 433, 434, 435, 436, 437, + 0, 0, 0, 0, 0, 0, 0, 0, 461, 462, + 463, 464, 529, 530, 531, 532, 533, 534, 535, 536, + 400, 401, 526, 576, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 517, 0, 491, 491, 491, 491, 491, + 491, 491, 491, 0, 0, 0, 0, 0, 0, 0, + 0, 43, 47, 0, 809, 580, -2, -2, 0, 0, + 622, 623, -2, 730, -2, 628, 629, 630, 631, 632, + 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, + 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, + 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, + 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, + 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, + 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, + 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, + 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, + 713, 714, 715, 716, 717, 718, 719, 720, 0, 0, + 82, 0, 80, 0, 834, 0, 70, 0, 0, 0, + 0, 0, 834, 243, 0, 0, 0, 0, 0, 0, + 0, 251, 0, 253, 834, 834, 834, 834, 834, 834, + 834, 834, 262, 835, 836, 263, 264, 265, 834, 834, + 267, 0, 288, 286, 287, 282, 283, 0, 0, 281, + 308, 309, 30, 832, 24, 0, 0, 553, 0, 545, + 546, 549, 552, 29, 318, 0, 323, 322, 314, 0, + 330, 0, 0, 0, 334, 0, 336, 337, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, - 418, 419, 420, 421, 422, 395, 0, 409, 0, 0, - 0, 451, 452, 453, 454, 455, 456, 457, 0, 323, - 29, 0, 429, 0, 0, 0, 0, 0, 0, 0, - 0, 319, 0, 516, 0, 481, 0, 482, 483, 484, - 485, 486, 487, 488, 0, 323, 0, 0, 45, 0, - 380, 0, 338, 340, 341, 342, -2, 0, 364, -2, - 0, 0, 0, 41, 42, 0, 48, 807, 50, 51, - 0, 0, 0, 165, 587, 588, 589, 585, 209, 0, - 0, 146, 142, 88, 89, 90, 135, 92, 135, 135, - 135, 135, 162, 162, 162, 162, 118, 119, 120, 121, - 122, 0, 0, 105, 135, 135, 135, 109, 125, 126, - 127, 128, 129, 130, 131, 132, 93, 94, 95, 96, - 97, 98, 99, 137, 137, 137, 139, 139, 616, 65, - 0, 73, 0, 832, 0, 832, 78, 0, 225, 0, - 244, 593, 0, 832, 247, 248, 382, 624, 625, 252, - 253, 254, 255, 256, 257, 258, 259, 264, 268, 0, - 289, 0, 0, 272, 271, 555, 0, 0, 0, 0, - 0, 546, 548, 549, 554, 32, 319, 0, 535, 0, - 0, 0, 322, 27, 390, 391, 393, 410, 0, 412, - 414, 333, 329, 0, 525, -2, 400, 401, 425, 426, - 427, 0, 0, 0, 0, 423, 405, 0, 436, 437, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 418, + 419, 420, 421, 422, 423, 424, 397, 0, 411, 0, + 0, 0, 453, 454, 455, 456, 457, 458, 459, 0, + 325, 29, 0, 431, 0, 0, 0, 0, 0, 0, + 0, 0, 321, 0, 518, 0, 483, 0, 484, 485, + 486, 487, 488, 489, 490, 0, 325, 0, 0, 45, + 0, 382, 0, 340, 342, 343, 344, -2, 0, 366, + -2, 0, 0, 0, 41, 42, 0, 48, 809, 50, + 51, 0, 0, 0, 165, 589, 590, 591, 587, 209, + 0, 0, 146, 142, 88, 89, 90, 135, 92, 135, + 135, 135, 135, 162, 162, 162, 162, 118, 119, 120, + 121, 122, 0, 0, 105, 135, 135, 135, 109, 125, + 126, 127, 128, 129, 130, 131, 132, 93, 94, 95, + 96, 97, 98, 99, 137, 137, 137, 139, 139, 618, + 65, 0, 73, 0, 834, 0, 834, 78, 0, 225, + 0, 0, 246, 595, 0, 834, 249, 250, 384, 626, + 627, 254, 255, 256, 257, 258, 259, 260, 261, 266, + 270, 0, 291, 0, 0, 274, 273, 557, 0, 0, + 0, 0, 0, 548, 550, 551, 556, 32, 321, 0, + 537, 0, 0, 0, 324, 27, 392, 393, 395, 412, + 0, 414, 416, 335, 331, 0, 527, -2, 402, 403, + 427, 428, 429, 0, 0, 0, 0, 425, 407, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 450, 500, 501, 0, 448, 449, 458, 0, 0, 324, - 325, 428, 0, 573, 29, 0, 0, 0, 0, 0, - 524, 0, 0, 0, 0, 522, 519, 0, 0, 490, - 0, 0, 0, 0, 0, 0, 379, 0, 0, 0, - 0, 0, 0, 369, 0, 0, 372, 0, 0, 0, - 0, 363, 0, 0, 383, 777, 365, 0, 367, 368, - 387, 0, 387, 44, 579, 49, 0, 0, 54, 55, - 580, 581, 582, 583, 0, 79, 210, 212, 215, 216, - 217, 83, 84, 85, 0, 0, 197, 0, 0, 191, - 191, 0, 189, 190, 81, 149, 147, 0, 144, 143, - 91, 0, 162, 162, 112, 113, 165, 0, 165, 165, - 165, 0, 0, 106, 107, 108, 100, 0, 101, 102, - 103, 0, 104, 0, 0, 832, 67, 0, 71, 72, - 68, 595, 69, 831, 0, 0, 608, 226, 598, 599, - 600, 601, 602, 603, 604, 605, 606, 607, 0, 243, - 832, 246, 286, 267, 0, 0, 287, 288, 0, 552, - 553, 0, 545, 25, 0, 590, 591, 536, 537, 336, - 411, 413, 415, 0, 323, 402, 423, 406, 0, 403, - 0, 0, 397, 463, 0, 0, 430, -2, 466, 467, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 542, - 0, 520, 0, 0, 480, 491, 492, 493, 494, 567, - 0, 0, -2, 0, 0, 387, 575, 0, 339, 358, - 360, 0, 355, 370, 371, 373, 0, 375, 0, 377, - 378, 343, 345, 346, 0, 0, 0, 0, 366, 542, - 0, 387, 40, 52, 53, 0, 0, 59, 166, 167, - 0, 213, 0, 0, 0, 184, 191, 191, 187, 192, - 188, 0, 157, 0, 148, 87, 145, 0, 165, 165, - 114, 0, 115, 116, 117, 0, 133, 0, 0, 0, - 0, 617, 66, 74, 75, 0, 218, 831, 0, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 831, 0, 0, 831, 609, 610, 611, 612, 0, 245, - 289, 290, 291, 556, 0, 26, 387, 0, 330, 526, - 0, 404, 0, 424, 407, 464, 326, 0, 135, 135, - 505, 135, 139, 508, 135, 510, 135, 513, 0, 0, - 0, 0, 525, 0, 0, 0, 517, 479, 523, 0, - 33, 0, 567, 557, 569, 571, 0, 29, 0, 563, - 0, 350, 542, 0, 0, 352, 359, 0, 0, 353, - 0, 354, 374, 376, 0, 0, 0, 0, 550, 388, - 39, 56, 57, 58, 211, 214, 0, 193, 135, 196, - 185, 186, 0, 160, 0, 150, 151, 152, 153, 154, - 156, 136, 110, 111, 163, 164, 162, 0, 162, 0, - 140, 0, 832, 0, 0, 219, 0, 220, 222, 223, - 224, 0, 266, 538, 337, 465, 408, 468, 502, 162, - 506, 507, 509, 511, 512, 514, 470, 469, 471, 0, - 0, 474, 0, 0, 0, 0, 0, 521, 0, 34, - 0, 572, -2, 0, 0, 0, 46, 0, 550, 576, - 577, 356, 0, 361, 0, 0, 0, 364, 38, 176, - 0, 195, 0, 348, 168, 161, 0, 0, 165, 134, - 165, 0, 0, 64, 76, 77, 0, 0, 540, 0, - 503, 504, 0, 0, 0, 0, 495, 478, 518, 0, - 570, 0, -2, 0, 565, 564, 351, 37, 0, 0, - 0, 0, 383, 175, 177, 0, 182, 0, 194, 0, - 0, 173, 0, 170, 172, 158, 155, 123, 124, 138, - 141, 0, 0, 28, 0, 0, 472, 473, 475, 476, - 0, 0, 0, 0, 560, 29, 0, 357, 384, 385, - 386, 347, 178, 179, 0, 183, 181, 0, 349, 86, - 0, 169, 171, 0, 70, 0, 239, 0, 541, 539, - 477, 0, 0, 0, 568, -2, 566, 180, 0, 174, - 159, 73, 238, 0, 0, 496, 0, 499, 0, 221, - 240, 0, 497, 0, 0, 0, 198, 0, 0, 199, - 200, 0, 0, 498, 201, 0, 0, 0, 0, 0, - 202, 204, 205, 0, 0, 203, 241, 242, 206, 207, - 208, + 448, 449, 452, 502, 503, 0, 450, 451, 460, 0, + 0, 326, 327, 430, 0, 575, 29, 0, 0, 0, + 0, 0, 526, 0, 0, 0, 0, 524, 521, 0, + 0, 492, 0, 0, 0, 0, 0, 0, 381, 0, + 0, 0, 0, 0, 0, 371, 0, 0, 374, 0, + 0, 0, 0, 365, 0, 0, 385, 779, 367, 0, + 369, 370, 389, 0, 389, 44, 581, 49, 0, 0, + 54, 55, 582, 583, 584, 585, 0, 79, 210, 212, + 215, 216, 217, 83, 84, 85, 0, 0, 197, 0, + 0, 191, 191, 0, 189, 190, 81, 149, 147, 0, + 144, 143, 91, 0, 162, 162, 112, 113, 165, 0, + 165, 165, 165, 0, 0, 106, 107, 108, 100, 0, + 101, 102, 103, 0, 104, 0, 0, 834, 67, 0, + 71, 72, 68, 597, 69, 833, 0, 0, 610, 226, + 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, + 0, 0, 244, 834, 248, 288, 269, 0, 0, 289, + 290, 0, 554, 555, 0, 547, 25, 0, 592, 593, + 538, 539, 338, 413, 415, 417, 0, 325, 404, 425, + 408, 0, 405, 0, 0, 399, 465, 0, 0, 432, + -2, 468, 469, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 544, 0, 522, 0, 0, 482, 493, 494, + 495, 496, 569, 0, 0, -2, 0, 0, 389, 577, + 0, 341, 360, 362, 0, 357, 372, 373, 375, 0, + 377, 0, 379, 380, 345, 347, 348, 0, 0, 0, + 0, 368, 544, 0, 389, 40, 52, 53, 0, 0, + 59, 166, 167, 0, 213, 0, 0, 0, 184, 191, + 191, 187, 192, 188, 0, 157, 0, 148, 87, 145, + 0, 165, 165, 114, 0, 115, 116, 117, 0, 133, + 0, 0, 0, 0, 619, 66, 74, 75, 0, 218, + 833, 0, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 833, 0, 0, 833, 611, 612, 613, + 614, 0, 0, 247, 291, 292, 293, 558, 0, 26, + 389, 0, 332, 528, 0, 406, 0, 426, 409, 466, + 328, 0, 135, 135, 507, 135, 139, 510, 135, 512, + 135, 515, 0, 0, 0, 0, 527, 0, 0, 0, + 519, 481, 525, 0, 33, 0, 569, 559, 571, 573, + 0, 29, 0, 565, 0, 352, 544, 0, 0, 354, + 361, 0, 0, 355, 0, 356, 376, 378, 0, 0, + 0, 0, 552, 390, 39, 56, 57, 58, 211, 214, + 0, 193, 135, 196, 185, 186, 0, 160, 0, 150, + 151, 152, 153, 154, 156, 136, 110, 111, 163, 164, + 162, 0, 162, 0, 140, 0, 834, 0, 0, 219, + 0, 220, 222, 223, 224, 0, 245, 268, 540, 339, + 467, 410, 470, 504, 162, 508, 509, 511, 513, 514, + 516, 472, 471, 473, 0, 0, 476, 0, 0, 0, + 0, 0, 523, 0, 34, 0, 574, -2, 0, 0, + 0, 46, 0, 552, 578, 579, 358, 0, 363, 0, + 0, 0, 366, 38, 176, 0, 195, 0, 350, 168, + 161, 0, 0, 165, 134, 165, 0, 0, 64, 76, + 77, 0, 0, 542, 0, 505, 506, 0, 0, 0, + 0, 497, 480, 520, 0, 572, 0, -2, 0, 567, + 566, 353, 37, 0, 0, 0, 0, 385, 175, 177, + 0, 182, 0, 194, 0, 0, 173, 0, 170, 172, + 158, 155, 123, 124, 138, 141, 0, 0, 28, 0, + 0, 474, 475, 477, 478, 0, 0, 0, 0, 562, + 29, 0, 359, 386, 387, 388, 349, 178, 179, 0, + 183, 181, 0, 351, 86, 0, 169, 171, 0, 70, + 0, 239, 0, 543, 541, 479, 0, 0, 0, 570, + -2, 568, 180, 0, 174, 159, 73, 238, 0, 0, + 498, 0, 501, 0, 221, 240, 0, 499, 0, 0, + 0, 198, 0, 0, 199, 200, 0, 0, 500, 201, + 0, 0, 0, 0, 0, 202, 204, 205, 0, 0, + 203, 241, 242, 206, 207, 208, } var yyTok1 = [...]int{ @@ -3132,19 +3124,19 @@ yydefault: //line sql.y:561 { // Change this to an alter statement - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[7].tableName, NewName: yyDollar[7].tableName} + yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[7].tableName} } case 65: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:566 { - yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[3].tableName.ToViewName()} + yyVAL.statement = &DDL{Action: CreateStr, Table: yyDollar[3].tableName.ToViewName()} } case 66: yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:570 { - yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[5].tableName.ToViewName()} + yyVAL.statement = &DDL{Action: CreateStr, Table: yyDollar[5].tableName.ToViewName()} } case 67: yyDollar = yyS[yypt-5 : yypt+1] @@ -3222,7 +3214,7 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:634 { - yyVAL.ddl = &DDL{Action: CreateStr, NewName: yyDollar[4].tableName} + yyVAL.ddl = &DDL{Action: CreateStr, Table: yyDollar[4].tableName} setDDL(yylex, yyVAL.ddl) } case 79: @@ -4076,19 +4068,19 @@ yydefault: yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:1292 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} + yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} } case 219: yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:1296 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} + yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} } case 220: yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:1300 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} + yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} } case 221: yyDollar = yyS[yypt-12 : yypt+1] @@ -4122,20 +4114,20 @@ yydefault: //line sql.y:1327 { // Change this to a rename statement - yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[4].tableName, NewName: yyDollar[7].tableName} + yyVAL.statement = &DDL{Action: RenameStr, FromTables: TableNames{yyDollar[4].tableName}, ToTables: TableNames{yyDollar[7].tableName}} } case 224: yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:1332 { // Rename an index can just be an alter - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} + yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} } case 225: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1337 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName.ToViewName(), NewName: yyDollar[3].tableName.ToViewName()} + yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName.ToViewName()} } case 226: yyDollar = yyS[yypt-5 : yypt+1] @@ -4174,162 +4166,176 @@ yydefault: yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } case 243: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1386 { - yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[3].tableName, NewName: yyDollar[5].tableName} + yyVAL.statement = yyDollar[3].ddl } case 244: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1392 + { + yyVAL.ddl = &DDL{Action: RenameStr, FromTables: TableNames{yyDollar[1].tableName}, ToTables: TableNames{yyDollar[3].tableName}} + } + case 245: + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:1396 + { + yyVAL.ddl = yyDollar[1].ddl + yyVAL.ddl.FromTables = append(yyVAL.ddl.FromTables, yyDollar[3].tableName) + yyVAL.ddl.ToTables = append(yyVAL.ddl.ToTables, yyDollar[5].tableName) + } + case 246: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:1404 { var exists bool if yyDollar[3].byt != 0 { exists = true } - yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName, IfExists: exists} + yyVAL.statement = &DDL{Action: DropStr, FromTables: yyDollar[4].tableNames, IfExists: exists} } - case 245: + case 247: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1400 +//line sql.y:1412 { // Change this to an alter statement - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableName, NewName: yyDollar[5].tableName} + yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableName} } - case 246: + case 248: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1405 +//line sql.y:1417 { var exists bool if yyDollar[3].byt != 0 { exists = true } - yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName.ToViewName(), IfExists: exists} + yyVAL.statement = &DDL{Action: DropStr, FromTables: TableNames{yyDollar[4].tableName.ToViewName()}, IfExists: exists} } - case 247: + case 249: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1413 +//line sql.y:1425 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 248: + case 250: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1417 +//line sql.y:1429 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 249: + case 251: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1423 +//line sql.y:1435 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[3].tableName} } - case 250: + case 252: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1427 +//line sql.y:1439 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[2].tableName} } - case 251: + case 253: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1432 +//line sql.y:1444 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName, NewName: yyDollar[3].tableName} + yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName} } - case 252: + case 254: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1438 +//line sql.y:1450 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 253: + case 255: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1442 +//line sql.y:1454 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 254: + case 256: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1446 +//line sql.y:1458 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 255: + case 257: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1451 +//line sql.y:1463 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 256: + case 258: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1455 +//line sql.y:1467 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 257: + case 259: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1459 +//line sql.y:1471 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 258: + case 260: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1463 +//line sql.y:1475 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 259: + case 261: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1467 +//line sql.y:1479 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 260: + case 262: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1471 +//line sql.y:1483 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 261: + case 263: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1475 +//line sql.y:1487 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 262: + case 264: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1479 +//line sql.y:1491 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 263: + case 265: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1483 +//line sql.y:1495 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 264: + case 266: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1487 +//line sql.y:1499 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } - case 265: + case 267: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1491 +//line sql.y:1503 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 266: + case 268: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1495 +//line sql.y:1507 { showTablesOpt := &ShowTablesOpt{Full: yyDollar[2].str, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName} } - case 267: + case 269: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1500 +//line sql.y:1512 { // this is ugly, but I couldn't find a better way for now if yyDollar[3].str == "processlist" { @@ -4339,650 +4345,650 @@ yydefault: yyVAL.statement = &Show{Type: yyDollar[3].str, ShowTablesOpt: showTablesOpt} } } - case 268: + case 270: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1510 +//line sql.y:1522 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } - case 269: + case 271: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1514 +//line sql.y:1526 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 270: + case 272: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1518 +//line sql.y:1530 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 271: + case 273: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1522 +//line sql.y:1534 { // Cannot dereference $4 directly, or else the parser stackcannot be pooled. See yyParsePooled showCollationFilterOpt := yyDollar[4].expr yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowCollationFilterOpt: &showCollationFilterOpt} } - case 272: + case 274: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1528 +//line sql.y:1540 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), OnTable: yyDollar[4].tableName} } - case 273: + case 275: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1532 +//line sql.y:1544 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 274: + case 276: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1536 +//line sql.y:1548 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 275: + case 277: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1540 +//line sql.y:1552 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 276: + case 278: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1544 +//line sql.y:1556 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 277: + case 279: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1548 +//line sql.y:1560 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 278: + case 280: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1552 +//line sql.y:1564 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 279: + case 281: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1562 +//line sql.y:1574 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 280: + case 282: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1568 +//line sql.y:1580 { yyVAL.str = string(yyDollar[1].bytes) } - case 281: + case 283: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1572 +//line sql.y:1584 { yyVAL.str = string(yyDollar[1].bytes) } - case 282: + case 284: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1578 +//line sql.y:1590 { yyVAL.str = "" } - case 283: + case 285: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1582 +//line sql.y:1594 { yyVAL.str = "full " } - case 284: + case 286: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1588 +//line sql.y:1600 { yyVAL.str = string(yyDollar[1].bytes) } - case 285: + case 287: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1592 +//line sql.y:1604 { yyVAL.str = string(yyDollar[1].bytes) } - case 286: + case 288: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1598 +//line sql.y:1610 { yyVAL.str = "" } - case 287: + case 289: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1602 +//line sql.y:1614 { yyVAL.str = yyDollar[2].tableIdent.v } - case 288: + case 290: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1606 +//line sql.y:1618 { yyVAL.str = yyDollar[2].tableIdent.v } - case 289: + case 291: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1612 +//line sql.y:1624 { yyVAL.showFilter = nil } - case 290: + case 292: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1616 +//line sql.y:1628 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 291: + case 293: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1620 +//line sql.y:1632 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } - case 292: + case 294: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1626 +//line sql.y:1638 { yyVAL.str = "" } - case 293: + case 295: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1630 +//line sql.y:1642 { yyVAL.str = SessionStr } - case 294: + case 296: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1634 +//line sql.y:1646 { yyVAL.str = GlobalStr } - case 295: + case 297: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1640 +//line sql.y:1652 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } - case 296: + case 298: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1644 +//line sql.y:1656 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } - case 297: + case 299: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1650 +//line sql.y:1662 { yyVAL.statement = &Begin{} } - case 298: + case 300: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1654 +//line sql.y:1666 { yyVAL.statement = &Begin{} } - case 299: + case 301: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1660 +//line sql.y:1672 { yyVAL.statement = &Commit{} } - case 300: + case 302: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1666 +//line sql.y:1678 { yyVAL.statement = &Rollback{} } - case 301: + case 303: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1672 +//line sql.y:1684 { yyVAL.statement = &OtherRead{} } - case 302: + case 304: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1676 +//line sql.y:1688 { yyVAL.statement = &OtherRead{} } - case 303: + case 305: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1680 +//line sql.y:1692 { yyVAL.statement = &OtherRead{} } - case 304: + case 306: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1684 +//line sql.y:1696 { yyVAL.statement = &OtherAdmin{} } - case 305: + case 307: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1688 +//line sql.y:1700 { yyVAL.statement = &OtherAdmin{} } - case 306: + case 308: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1692 +//line sql.y:1704 { yyVAL.statement = &OtherAdmin{} } - case 307: + case 309: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1696 +//line sql.y:1708 { yyVAL.statement = &OtherAdmin{} } - case 308: + case 310: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1702 +//line sql.y:1714 { yyVAL.statement = &DDL{Action: FlushStr} } - case 309: + case 311: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1706 +//line sql.y:1718 { setAllowComments(yylex, true) } - case 310: + case 312: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1710 +//line sql.y:1722 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 311: + case 313: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1716 +//line sql.y:1728 { yyVAL.bytes2 = nil } - case 312: + case 314: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1720 +//line sql.y:1732 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 313: + case 315: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1726 +//line sql.y:1738 { yyVAL.str = UnionStr } - case 314: + case 316: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1730 +//line sql.y:1742 { yyVAL.str = UnionAllStr } - case 315: + case 317: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1734 +//line sql.y:1746 { yyVAL.str = UnionDistinctStr } - case 316: + case 318: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1739 +//line sql.y:1751 { yyVAL.str = "" } - case 317: + case 319: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1743 +//line sql.y:1755 { yyVAL.str = SQLNoCacheStr } - case 318: + case 320: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1747 +//line sql.y:1759 { yyVAL.str = SQLCacheStr } - case 319: + case 321: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1752 +//line sql.y:1764 { yyVAL.str = "" } - case 320: + case 322: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1756 +//line sql.y:1768 { yyVAL.str = DistinctStr } - case 321: + case 323: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1761 +//line sql.y:1773 { yyVAL.str = "" } - case 322: + case 324: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1765 +//line sql.y:1777 { yyVAL.str = StraightJoinHint } - case 323: + case 325: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1770 +//line sql.y:1782 { yyVAL.selectExprs = nil } - case 324: + case 326: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1774 +//line sql.y:1786 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 325: + case 327: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1780 +//line sql.y:1792 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 326: + case 328: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1784 +//line sql.y:1796 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 327: + case 329: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1790 +//line sql.y:1802 { yyVAL.selectExpr = &StarExpr{} } - case 328: + case 330: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1794 +//line sql.y:1806 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 329: + case 331: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1798 +//line sql.y:1810 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 330: + case 332: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1802 +//line sql.y:1814 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 331: + case 333: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1807 +//line sql.y:1819 { yyVAL.colIdent = ColIdent{} } - case 332: + case 334: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1811 +//line sql.y:1823 { yyVAL.colIdent = yyDollar[1].colIdent } - case 333: + case 335: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1815 +//line sql.y:1827 { yyVAL.colIdent = yyDollar[2].colIdent } - case 335: + case 337: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1822 +//line sql.y:1834 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 336: + case 338: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1827 +//line sql.y:1839 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 337: + case 339: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1831 +//line sql.y:1843 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 338: + case 340: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1837 +//line sql.y:1849 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 339: + case 341: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1841 +//line sql.y:1853 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 342: + case 344: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1851 +//line sql.y:1863 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 343: + case 345: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1855 +//line sql.y:1867 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 344: + case 346: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1859 +//line sql.y:1871 { // missed alias for subquery yylex.Error("Every derived table must have its own alias") return 1 } - case 345: + case 347: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1865 +//line sql.y:1877 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 346: + case 348: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1871 +//line sql.y:1883 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 347: + case 349: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1875 +//line sql.y:1887 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 348: + case 350: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1881 +//line sql.y:1893 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 349: + case 351: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1885 +//line sql.y:1897 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 350: + case 352: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1891 +//line sql.y:1903 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 351: + case 353: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1895 +//line sql.y:1907 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 352: + case 354: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1908 +//line sql.y:1920 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 353: + case 355: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1912 +//line sql.y:1924 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 354: + case 356: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1916 +//line sql.y:1928 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 355: + case 357: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1920 +//line sql.y:1932 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 356: + case 358: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1926 +//line sql.y:1938 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 357: + case 359: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1928 +//line sql.y:1940 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 358: + case 360: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1932 +//line sql.y:1944 { yyVAL.joinCondition = JoinCondition{} } - case 359: + case 361: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1934 +//line sql.y:1946 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 360: + case 362: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1938 +//line sql.y:1950 { yyVAL.joinCondition = JoinCondition{} } - case 361: + case 363: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1940 +//line sql.y:1952 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 362: + case 364: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1943 +//line sql.y:1955 { yyVAL.empty = struct{}{} } - case 363: + case 365: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1945 +//line sql.y:1957 { yyVAL.empty = struct{}{} } - case 364: + case 366: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1948 +//line sql.y:1960 { yyVAL.tableIdent = NewTableIdent("") } - case 365: + case 367: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1952 +//line sql.y:1964 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 366: + case 368: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1956 +//line sql.y:1968 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 368: + case 370: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1963 +//line sql.y:1975 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 369: + case 371: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1969 +//line sql.y:1981 { yyVAL.str = JoinStr } - case 370: + case 372: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1973 +//line sql.y:1985 { yyVAL.str = JoinStr } - case 371: + case 373: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1977 +//line sql.y:1989 { yyVAL.str = JoinStr } - case 372: + case 374: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1983 +//line sql.y:1995 { yyVAL.str = StraightJoinStr } - case 373: + case 375: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1989 +//line sql.y:2001 { yyVAL.str = LeftJoinStr } - case 374: + case 376: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1993 +//line sql.y:2005 { yyVAL.str = LeftJoinStr } - case 375: + case 377: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1997 +//line sql.y:2009 { yyVAL.str = RightJoinStr } - case 376: + case 378: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2001 +//line sql.y:2013 { yyVAL.str = RightJoinStr } - case 377: + case 379: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2007 +//line sql.y:2019 { yyVAL.str = NaturalJoinStr } - case 378: + case 380: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2011 +//line sql.y:2023 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -4990,459 +4996,459 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 379: + case 381: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2021 +//line sql.y:2033 { yyVAL.tableName = yyDollar[2].tableName } - case 380: + case 382: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2025 +//line sql.y:2037 { yyVAL.tableName = yyDollar[1].tableName } - case 381: + case 383: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2031 +//line sql.y:2043 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 382: + case 384: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2035 +//line sql.y:2047 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 383: + case 385: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2040 +//line sql.y:2052 { yyVAL.indexHints = nil } - case 384: + case 386: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2044 +//line sql.y:2056 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } - case 385: + case 387: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2048 +//line sql.y:2060 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } - case 386: + case 388: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2052 +//line sql.y:2064 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } - case 387: + case 389: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2057 +//line sql.y:2069 { yyVAL.expr = nil } - case 388: + case 390: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2061 +//line sql.y:2073 { yyVAL.expr = yyDollar[2].expr } - case 389: + case 391: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2067 +//line sql.y:2079 { yyVAL.expr = yyDollar[1].expr } - case 390: + case 392: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2071 +//line sql.y:2083 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 391: + case 393: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2075 +//line sql.y:2087 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 392: + case 394: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2079 +//line sql.y:2091 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 393: + case 395: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2083 +//line sql.y:2095 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 394: + case 396: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2087 +//line sql.y:2099 { yyVAL.expr = yyDollar[1].expr } - case 395: + case 397: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2091 +//line sql.y:2103 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 396: + case 398: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2097 +//line sql.y:2109 { yyVAL.str = "" } - case 397: + case 399: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2101 +//line sql.y:2113 { yyVAL.str = string(yyDollar[2].bytes) } - case 398: + case 400: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2107 +//line sql.y:2119 { yyVAL.boolVal = BoolVal(true) } - case 399: + case 401: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2111 +//line sql.y:2123 { yyVAL.boolVal = BoolVal(false) } - case 400: + case 402: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2117 +//line sql.y:2129 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } - case 401: + case 403: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2121 +//line sql.y:2133 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 402: + case 404: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2125 +//line sql.y:2137 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 403: + case 405: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2129 +//line sql.y:2141 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 404: + case 406: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2133 +//line sql.y:2145 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 405: + case 407: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2137 +//line sql.y:2149 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } - case 406: + case 408: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2141 +//line sql.y:2153 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } - case 407: + case 409: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2145 +//line sql.y:2157 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 408: + case 410: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2149 +//line sql.y:2161 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 409: + case 411: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2153 +//line sql.y:2165 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 410: + case 412: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2159 +//line sql.y:2171 { yyVAL.str = IsNullStr } - case 411: + case 413: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2163 +//line sql.y:2175 { yyVAL.str = IsNotNullStr } - case 412: + case 414: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2167 +//line sql.y:2179 { yyVAL.str = IsTrueStr } - case 413: + case 415: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2171 +//line sql.y:2183 { yyVAL.str = IsNotTrueStr } - case 414: + case 416: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2175 +//line sql.y:2187 { yyVAL.str = IsFalseStr } - case 415: + case 417: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2179 +//line sql.y:2191 { yyVAL.str = IsNotFalseStr } - case 416: + case 418: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2185 +//line sql.y:2197 { yyVAL.str = EqualStr } - case 417: + case 419: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2189 +//line sql.y:2201 { yyVAL.str = LessThanStr } - case 418: + case 420: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2193 +//line sql.y:2205 { yyVAL.str = GreaterThanStr } - case 419: + case 421: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2197 +//line sql.y:2209 { yyVAL.str = LessEqualStr } - case 420: + case 422: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2201 +//line sql.y:2213 { yyVAL.str = GreaterEqualStr } - case 421: + case 423: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2205 +//line sql.y:2217 { yyVAL.str = NotEqualStr } - case 422: + case 424: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2209 +//line sql.y:2221 { yyVAL.str = NullSafeEqualStr } - case 423: + case 425: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2214 +//line sql.y:2226 { yyVAL.expr = nil } - case 424: + case 426: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2218 +//line sql.y:2230 { yyVAL.expr = yyDollar[2].expr } - case 425: + case 427: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2224 +//line sql.y:2236 { yyVAL.colTuple = yyDollar[1].valTuple } - case 426: + case 428: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2228 +//line sql.y:2240 { yyVAL.colTuple = yyDollar[1].subquery } - case 427: + case 429: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2232 +//line sql.y:2244 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 428: + case 430: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2238 +//line sql.y:2250 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 429: + case 431: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2244 +//line sql.y:2256 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 430: + case 432: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2248 +//line sql.y:2260 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 431: + case 433: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2254 +//line sql.y:2266 { yyVAL.expr = yyDollar[1].expr } - case 432: + case 434: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2258 +//line sql.y:2270 { yyVAL.expr = yyDollar[1].boolVal } - case 433: + case 435: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2262 +//line sql.y:2274 { yyVAL.expr = yyDollar[1].colName } - case 434: + case 436: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2266 +//line sql.y:2278 { yyVAL.expr = yyDollar[1].expr } - case 435: + case 437: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2270 +//line sql.y:2282 { yyVAL.expr = yyDollar[1].subquery } - case 436: + case 438: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2274 +//line sql.y:2286 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } - case 437: + case 439: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2278 +//line sql.y:2290 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } - case 438: + case 440: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2282 +//line sql.y:2294 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } - case 439: + case 441: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2286 +//line sql.y:2298 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } - case 440: + case 442: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2290 +//line sql.y:2302 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } - case 441: + case 443: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2294 +//line sql.y:2306 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } - case 442: + case 444: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2298 +//line sql.y:2310 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } - case 443: + case 445: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2302 +//line sql.y:2314 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } - case 444: + case 446: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2306 +//line sql.y:2318 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 445: + case 447: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2310 +//line sql.y:2322 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 446: + case 448: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2314 +//line sql.y:2326 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } - case 447: + case 449: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2318 +//line sql.y:2330 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } - case 448: + case 450: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2322 +//line sql.y:2334 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 449: + case 451: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2326 +//line sql.y:2338 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 450: + case 452: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2330 +//line sql.y:2342 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 451: + case 453: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2334 +//line sql.y:2346 { yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } - case 452: + case 454: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2338 +//line sql.y:2350 { yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} } - case 453: + case 455: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2342 +//line sql.y:2354 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Str, Expr: yyDollar[2].expr} } - case 454: + case 456: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2346 +//line sql.y:2358 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -5450,9 +5456,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 455: + case 457: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2354 +//line sql.y:2366 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -5466,21 +5472,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 456: + case 458: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2368 +//line sql.y:2380 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 457: + case 459: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2372 +//line sql.y:2384 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 458: + case 460: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2376 +//line sql.y:2388 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -5488,431 +5494,431 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 463: + case 465: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2394 +//line sql.y:2406 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 464: + case 466: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2398 +//line sql.y:2410 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 465: + case 467: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2402 +//line sql.y:2414 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 466: + case 468: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2412 +//line sql.y:2424 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 467: + case 469: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2416 +//line sql.y:2428 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 468: + case 470: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2420 +//line sql.y:2432 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 469: + case 471: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2424 +//line sql.y:2436 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 470: + case 472: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2428 +//line sql.y:2440 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 471: + case 473: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2432 +//line sql.y:2444 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 472: + case 474: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2436 +//line sql.y:2448 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 473: + case 475: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2440 +//line sql.y:2452 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 474: + case 476: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2444 +//line sql.y:2456 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 475: + case 477: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2448 +//line sql.y:2460 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 476: + case 478: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2452 +//line sql.y:2464 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 477: + case 479: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2456 +//line sql.y:2468 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } - case 478: + case 480: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2460 +//line sql.y:2472 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str} } - case 479: + case 481: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2464 +//line sql.y:2476 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 480: + case 482: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2468 +//line sql.y:2480 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 481: + case 483: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2478 +//line sql.y:2490 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 482: + case 484: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2482 +//line sql.y:2494 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 483: + case 485: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2486 +//line sql.y:2498 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 484: + case 486: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2490 +//line sql.y:2502 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 485: + case 487: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2495 +//line sql.y:2507 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 486: + case 488: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2500 +//line sql.y:2512 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 487: + case 489: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2505 +//line sql.y:2517 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 488: + case 490: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2510 +//line sql.y:2522 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 491: + case 493: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2524 +//line sql.y:2536 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 492: + case 494: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2528 +//line sql.y:2540 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 493: + case 495: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2532 +//line sql.y:2544 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 494: + case 496: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2536 +//line sql.y:2548 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 495: + case 497: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2542 +//line sql.y:2554 { yyVAL.str = "" } - case 496: + case 498: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2546 +//line sql.y:2558 { yyVAL.str = BooleanModeStr } - case 497: + case 499: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2550 +//line sql.y:2562 { yyVAL.str = NaturalLanguageModeStr } - case 498: + case 500: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2554 +//line sql.y:2566 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } - case 499: + case 501: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2558 +//line sql.y:2570 { yyVAL.str = QueryExpansionStr } - case 500: + case 502: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2564 +//line sql.y:2576 { yyVAL.str = string(yyDollar[1].bytes) } - case 501: + case 503: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2568 +//line sql.y:2580 { yyVAL.str = string(yyDollar[1].bytes) } - case 502: + case 504: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2574 +//line sql.y:2586 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 503: + case 505: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2578 +//line sql.y:2590 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } - case 504: + case 506: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2582 +//line sql.y:2594 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: string(yyDollar[3].bytes)} } - case 505: + case 507: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2586 +//line sql.y:2598 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 506: + case 508: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2590 +//line sql.y:2602 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 507: + case 509: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2594 +//line sql.y:2606 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 508: + case 510: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2600 +//line sql.y:2612 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 509: + case 511: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2604 +//line sql.y:2616 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 510: + case 512: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2608 +//line sql.y:2620 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 511: + case 513: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2612 +//line sql.y:2624 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 512: + case 514: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2616 +//line sql.y:2628 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 513: + case 515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2620 +//line sql.y:2632 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 514: + case 516: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2624 +//line sql.y:2636 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 515: + case 517: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2629 +//line sql.y:2641 { yyVAL.expr = nil } - case 516: + case 518: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2633 +//line sql.y:2645 { yyVAL.expr = yyDollar[1].expr } - case 517: + case 519: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2638 +//line sql.y:2650 { yyVAL.str = string("") } - case 518: + case 520: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2642 +//line sql.y:2654 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 519: + case 521: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2648 +//line sql.y:2660 { yyVAL.whens = []*When{yyDollar[1].when} } - case 520: + case 522: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2652 +//line sql.y:2664 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 521: + case 523: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2658 +//line sql.y:2670 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 522: + case 524: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2663 +//line sql.y:2675 { yyVAL.expr = nil } - case 523: + case 525: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2667 +//line sql.y:2679 { yyVAL.expr = yyDollar[2].expr } - case 524: + case 526: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2673 +//line sql.y:2685 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 525: + case 527: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2677 +//line sql.y:2689 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 526: + case 528: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2681 +//line sql.y:2693 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 527: + case 529: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2687 +//line sql.y:2699 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 528: + case 530: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2691 +//line sql.y:2703 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } - case 529: + case 531: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2695 +//line sql.y:2707 { yyVAL.expr = NewBitVal(yyDollar[1].bytes) } - case 530: + case 532: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2699 +//line sql.y:2711 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 531: + case 533: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2703 +//line sql.y:2715 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } - case 532: + case 534: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2707 +//line sql.y:2719 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } - case 533: + case 535: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2711 +//line sql.y:2723 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 534: + case 536: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2715 +//line sql.y:2727 { yyVAL.expr = &NullVal{} } - case 535: + case 537: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2721 +//line sql.y:2733 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -5921,239 +5927,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 536: + case 538: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2730 +//line sql.y:2742 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 537: + case 539: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2734 +//line sql.y:2746 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 538: + case 540: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2739 +//line sql.y:2751 { yyVAL.exprs = nil } - case 539: + case 541: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2743 +//line sql.y:2755 { yyVAL.exprs = yyDollar[3].exprs } - case 540: + case 542: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2748 +//line sql.y:2760 { yyVAL.expr = nil } - case 541: + case 543: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2752 +//line sql.y:2764 { yyVAL.expr = yyDollar[2].expr } - case 542: + case 544: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2757 +//line sql.y:2769 { yyVAL.orderBy = nil } - case 543: + case 545: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2761 +//line sql.y:2773 { yyVAL.orderBy = yyDollar[3].orderBy } - case 544: + case 546: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2767 +//line sql.y:2779 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 545: + case 547: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2771 +//line sql.y:2783 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 546: + case 548: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2777 +//line sql.y:2789 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 547: + case 549: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2782 +//line sql.y:2794 { yyVAL.str = AscScr } - case 548: + case 550: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2786 +//line sql.y:2798 { yyVAL.str = AscScr } - case 549: + case 551: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2790 +//line sql.y:2802 { yyVAL.str = DescScr } - case 550: + case 552: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2795 +//line sql.y:2807 { yyVAL.limit = nil } - case 551: + case 553: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2799 +//line sql.y:2811 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 552: + case 554: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2803 +//line sql.y:2815 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 553: + case 555: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2807 +//line sql.y:2819 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 554: + case 556: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2812 +//line sql.y:2824 { yyVAL.str = "" } - case 555: + case 557: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2816 +//line sql.y:2828 { yyVAL.str = ForUpdateStr } - case 556: + case 558: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2820 +//line sql.y:2832 { yyVAL.str = ShareModeStr } - case 557: + case 559: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2833 +//line sql.y:2845 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 558: + case 560: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2837 +//line sql.y:2849 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 559: + case 561: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2841 +//line sql.y:2853 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 560: + case 562: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2846 +//line sql.y:2858 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 561: + case 563: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2850 +//line sql.y:2862 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 562: + case 564: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2854 +//line sql.y:2866 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 563: + case 565: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2861 +//line sql.y:2873 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 564: + case 566: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2865 +//line sql.y:2877 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 565: + case 567: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2869 +//line sql.y:2881 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 566: + case 568: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2873 +//line sql.y:2885 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 567: + case 569: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2878 +//line sql.y:2890 { yyVAL.updateExprs = nil } - case 568: + case 570: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2882 +//line sql.y:2894 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 569: + case 571: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2888 +//line sql.y:2900 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 570: + case 572: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2892 +//line sql.y:2904 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 571: + case 573: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2898 +//line sql.y:2910 { yyVAL.valTuple = yyDollar[1].valTuple } - case 572: + case 574: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2902 +//line sql.y:2914 { yyVAL.valTuple = ValTuple{} } - case 573: + case 575: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2908 +//line sql.y:2920 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 574: + case 576: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2914 +//line sql.y:2926 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]} @@ -6161,312 +6167,312 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 575: + case 577: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2924 +//line sql.y:2936 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 576: + case 578: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2928 +//line sql.y:2940 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 577: + case 579: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2934 +//line sql.y:2946 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 578: + case 580: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2940 +//line sql.y:2952 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 579: + case 581: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2944 +//line sql.y:2956 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 580: + case 582: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2950 +//line sql.y:2962 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } - case 581: + case 583: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2954 +//line sql.y:2966 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("off"))} } - case 582: + case 584: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2958 +//line sql.y:2970 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} } - case 583: + case 585: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2962 +//line sql.y:2974 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 585: + case 587: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2969 +//line sql.y:2981 { yyVAL.bytes = []byte("charset") } - case 587: + case 589: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2976 +//line sql.y:2988 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 588: + case 590: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2980 +//line sql.y:2992 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 589: + case 591: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2984 +//line sql.y:2996 { yyVAL.expr = &Default{} } - case 592: + case 594: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2993 +//line sql.y:3005 { yyVAL.byt = 0 } - case 593: + case 595: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2995 +//line sql.y:3007 { yyVAL.byt = 1 } - case 594: + case 596: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2998 +//line sql.y:3010 { yyVAL.empty = struct{}{} } - case 595: + case 597: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3000 +//line sql.y:3012 { yyVAL.empty = struct{}{} } - case 596: + case 598: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3003 +//line sql.y:3015 { yyVAL.str = "" } - case 597: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3005 - { - yyVAL.str = IgnoreStr - } - case 598: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3009 - { - yyVAL.empty = struct{}{} - } case 599: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3011 +//line sql.y:3017 { - yyVAL.empty = struct{}{} + yyVAL.str = IgnoreStr } case 600: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3013 +//line sql.y:3021 { yyVAL.empty = struct{}{} } case 601: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3015 +//line sql.y:3023 { yyVAL.empty = struct{}{} } case 602: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3017 +//line sql.y:3025 { yyVAL.empty = struct{}{} } case 603: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3019 +//line sql.y:3027 { yyVAL.empty = struct{}{} } case 604: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3021 +//line sql.y:3029 { yyVAL.empty = struct{}{} } case 605: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3023 +//line sql.y:3031 { yyVAL.empty = struct{}{} } case 606: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3025 +//line sql.y:3033 { yyVAL.empty = struct{}{} } case 607: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3027 +//line sql.y:3035 { yyVAL.empty = struct{}{} } case 608: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3030 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3037 { yyVAL.empty = struct{}{} } case 609: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3032 +//line sql.y:3039 { yyVAL.empty = struct{}{} } case 610: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3034 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3042 { yyVAL.empty = struct{}{} } case 611: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3038 +//line sql.y:3044 { yyVAL.empty = struct{}{} } case 612: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3040 +//line sql.y:3046 { yyVAL.empty = struct{}{} } case 613: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3043 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3050 { yyVAL.empty = struct{}{} } case 614: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3045 +//line sql.y:3052 { yyVAL.empty = struct{}{} } case 615: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3047 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3055 { yyVAL.empty = struct{}{} } case 616: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3057 + { + yyVAL.empty = struct{}{} + } + case 617: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3059 + { + yyVAL.empty = struct{}{} + } + case 618: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3050 +//line sql.y:3062 { yyVAL.colIdent = ColIdent{} } - case 617: + case 619: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3052 +//line sql.y:3064 { yyVAL.colIdent = yyDollar[2].colIdent } - case 618: + case 620: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3056 +//line sql.y:3068 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 619: + case 621: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3060 +//line sql.y:3072 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 621: + case 623: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3067 +//line sql.y:3079 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 622: + case 624: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3073 +//line sql.y:3085 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 623: + case 625: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3077 +//line sql.y:3089 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 625: + case 627: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3084 +//line sql.y:3096 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 829: + case 831: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3313 +//line sql.y:3325 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 830: + case 832: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3322 +//line sql.y:3334 { decNesting(yylex) } - case 831: + case 833: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3327 +//line sql.y:3339 { skipToEnd(yylex) } - case 832: + case 834: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3332 +//line sql.y:3344 { skipToEnd(yylex) } - case 833: + case 835: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3336 +//line sql.y:3348 { skipToEnd(yylex) } - case 834: + case 836: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3340 +//line sql.y:3352 { skipToEnd(yylex) } diff --git a/vendor/vitess.io/vitess/go/vt/sqlparser/sql.y b/vendor/vitess.io/vitess/go/vt/sqlparser/sql.y index a86a33f..4836293 100644 --- a/vendor/vitess.io/vitess/go/vt/sqlparser/sql.y +++ b/vendor/vitess.io/vitess/go/vt/sqlparser/sql.y @@ -204,7 +204,7 @@ func skipToEnd(yylex interface{}) { %type select_statement base_select union_lhs union_rhs %type stream_statement insert_statement update_statement delete_statement set_statement %type create_statement alter_statement rename_statement drop_statement truncate_statement flush_statement -%type create_table_prefix +%type create_table_prefix rename_list %type analyze_statement show_statement use_statement other_statement %type begin_statement commit_statement rollback_statement %type comment_opt comment_list @@ -560,15 +560,15 @@ create_statement: | CREATE constraint_opt INDEX ID using_opt ON table_name ddl_skip_to_end { // Change this to an alter statement - $$ = &DDL{Action: AlterStr, Table: $7, NewName:$7} + $$ = &DDL{Action: AlterStr, Table: $7} } | CREATE VIEW table_name ddl_skip_to_end { - $$ = &DDL{Action: CreateStr, NewName: $3.ToViewName()} + $$ = &DDL{Action: CreateStr, Table: $3.ToViewName()} } | CREATE OR REPLACE VIEW table_name ddl_skip_to_end { - $$ = &DDL{Action: CreateStr, NewName: $5.ToViewName()} + $$ = &DDL{Action: CreateStr, Table: $5.ToViewName()} } | CREATE VINDEX sql_id vindex_type_opt vindex_params_opt { @@ -632,7 +632,7 @@ vindex_param: create_table_prefix: CREATE TABLE not_exists_opt table_name { - $$ = &DDL{Action: CreateStr, NewName: $4} + $$ = &DDL{Action: CreateStr, Table: $4} setDDL(yylex, $$) } @@ -1290,15 +1290,15 @@ table_opt_value: alter_statement: ALTER ignore_opt TABLE table_name non_add_drop_or_rename_operation skip_to_end { - $$ = &DDL{Action: AlterStr, Table: $4, NewName: $4} + $$ = &DDL{Action: AlterStr, Table: $4} } | ALTER ignore_opt TABLE table_name ADD alter_object_type skip_to_end { - $$ = &DDL{Action: AlterStr, Table: $4, NewName: $4} + $$ = &DDL{Action: AlterStr, Table: $4} } | ALTER ignore_opt TABLE table_name DROP alter_object_type skip_to_end { - $$ = &DDL{Action: AlterStr, Table: $4, NewName: $4} + $$ = &DDL{Action: AlterStr, Table: $4} } | ALTER ignore_opt TABLE table_name ADD VINDEX sql_id '(' column_list ')' vindex_type_opt vindex_params_opt { @@ -1326,16 +1326,16 @@ alter_statement: | ALTER ignore_opt TABLE table_name RENAME to_opt table_name { // Change this to a rename statement - $$ = &DDL{Action: RenameStr, Table: $4, NewName: $7} + $$ = &DDL{Action: RenameStr, FromTables: TableNames{$4}, ToTables: TableNames{$7}} } | ALTER ignore_opt TABLE table_name RENAME index_opt skip_to_end { // Rename an index can just be an alter - $$ = &DDL{Action: AlterStr, Table: $4, NewName: $4} + $$ = &DDL{Action: AlterStr, Table: $4} } | ALTER VIEW table_name ddl_skip_to_end { - $$ = &DDL{Action: AlterStr, Table: $3.ToViewName(), NewName: $3.ToViewName()} + $$ = &DDL{Action: AlterStr, Table: $3.ToViewName()} } | ALTER ignore_opt TABLE table_name partition_operation { @@ -1382,24 +1382,36 @@ partition_definition: } rename_statement: - RENAME TABLE table_name TO table_name + RENAME TABLE rename_list { - $$ = &DDL{Action: RenameStr, Table: $3, NewName: $5} + $$ = $3 + } + +rename_list: + table_name TO table_name + { + $$ = &DDL{Action: RenameStr, FromTables: TableNames{$1}, ToTables: TableNames{$3}} + } +| rename_list ',' table_name TO table_name + { + $$ = $1 + $$.FromTables = append($$.FromTables, $3) + $$.ToTables = append($$.ToTables, $5) } drop_statement: - DROP TABLE exists_opt table_name + DROP TABLE exists_opt table_name_list { var exists bool if $3 != 0 { exists = true } - $$ = &DDL{Action: DropStr, Table: $4, IfExists: exists} + $$ = &DDL{Action: DropStr, FromTables: $4, IfExists: exists} } | DROP INDEX ID ON table_name ddl_skip_to_end { // Change this to an alter statement - $$ = &DDL{Action: AlterStr, Table: $5, NewName: $5} + $$ = &DDL{Action: AlterStr, Table: $5} } | DROP VIEW exists_opt table_name ddl_skip_to_end { @@ -1407,7 +1419,7 @@ drop_statement: if $3 != 0 { exists = true } - $$ = &DDL{Action: DropStr, Table: $4.ToViewName(), IfExists: exists} + $$ = &DDL{Action: DropStr, FromTables: TableNames{$4.ToViewName()}, IfExists: exists} } | DROP DATABASE exists_opt ID { @@ -1430,7 +1442,7 @@ truncate_statement: analyze_statement: ANALYZE TABLE table_name { - $$ = &DDL{Action: AlterStr, Table: $3, NewName: $3} + $$ = &DDL{Action: AlterStr, Table: $3} } show_statement: -- GitLab