From 3faa95ff1162c223caaaea7e2eb35cbd35d17f43 Mon Sep 17 00:00:00 2001 From: marc Date: Wed, 12 Aug 2015 13:27:36 -0400 Subject: [PATCH] Rework privilege storage. Work towards #2005. Credentials are now stored as a sorted list of {user, privilegeBitField} The ALL logic makes grant/revoke a bit twisted, but is probably the most expected behavior. GRANT, REVOKE, and SHOW GRANTS are finalized. The final step will be to fix all the CheckPrivilege calls to use the proper privilege and finally remove READ,WRITE. --- sql/create.go | 8 +- sql/database.go | 8 +- sql/database_test.go | 8 +- sql/delete.go | 6 +- sql/descriptor.go | 14 +- sql/drop.go | 10 +- sql/grant.go | 13 +- sql/grant_test.go | 84 - sql/insert.go | 5 +- sql/parser/grant.go | 43 +- sql/parser/revoke.go | 8 +- sql/parser/sql.go | 11730 ++++++++++++++++---------------- sql/parser/sql.y | 47 +- sql/revoke.go | 13 +- sql/revoke_test.go | 102 - sql/select.go | 5 +- sql/show.go | 6 +- sql/testdata/grant_database | 60 +- sql/testdata/grant_table | 50 +- sql/truncate.go | 7 +- sql/update.go | 5 +- structured/permissions.go | 185 - structured/privilege.go | 258 + structured/privilege.pb.go | 515 ++ structured/privilege.proto | 56 + structured/privilege_test.go | 160 + structured/structured.go | 76 +- structured/structured.pb.go | 289 +- structured/structured.proto | 13 +- structured/structured_test.go | 2 + 30 files changed, 7098 insertions(+), 6688 deletions(-) delete mode 100644 sql/grant_test.go delete mode 100644 sql/revoke_test.go delete mode 100644 structured/permissions.go create mode 100644 structured/privilege.go create mode 100644 structured/privilege.pb.go create mode 100644 structured/privilege.proto create mode 100644 structured/privilege_test.go diff --git a/sql/create.go b/sql/create.go index 8ebac53b63b..fa7b764fd6b 100644 --- a/sql/create.go +++ b/sql/create.go @@ -22,6 +22,7 @@ import ( "github.com/cockroachdb/cockroach/security" "github.com/cockroachdb/cockroach/sql/parser" + "github.com/cockroachdb/cockroach/structured" ) // CreateDatabase creates a database. @@ -58,9 +59,8 @@ func (p *planner) CreateTable(n *parser.CreateTable) (planNode, error) { return nil, err } - if !dbDesc.HasPrivilege(p.user, parser.PrivilegeWrite) { - return nil, fmt.Errorf("user %s does not have %s privilege on database %s", - p.user, parser.PrivilegeWrite, dbDesc.Name) + if err := p.checkPrivilege(dbDesc, structured.Privilege_WRITE); err != nil { + return nil, err } desc, err := makeTableDesc(n) @@ -68,7 +68,7 @@ func (p *planner) CreateTable(n *parser.CreateTable) (planNode, error) { return nil, err } // Inherit permissions from the database descriptor. - desc.PrivilegeDescriptor = dbDesc.PrivilegeDescriptor + desc.Privileges = dbDesc.GetPrivileges() if err := desc.AllocateIDs(); err != nil { return nil, err diff --git a/sql/database.go b/sql/database.go index f62ff5e69e3..8bc1f89df65 100644 --- a/sql/database.go +++ b/sql/database.go @@ -19,7 +19,6 @@ package sql import ( "github.com/cockroachdb/cockroach/proto" - "github.com/cockroachdb/cockroach/security" "github.com/cockroachdb/cockroach/sql/parser" "github.com/cockroachdb/cockroach/structured" ) @@ -39,11 +38,8 @@ func (dk databaseKey) Name() string { func makeDatabaseDesc(p *parser.CreateDatabase) structured.DatabaseDescriptor { return structured.DatabaseDescriptor{ - Name: p.Name.String(), - PrivilegeDescriptor: structured.PrivilegeDescriptor{ - Read: []string{security.RootUser}, - Write: []string{security.RootUser}, - }, + Name: p.Name.String(), + Privileges: structured.NewDefaultDatabasePrivilegeDescriptor(), } } diff --git a/sql/database_test.go b/sql/database_test.go index 1cdf00f0d5a..ca710927c99 100644 --- a/sql/database_test.go +++ b/sql/database_test.go @@ -20,7 +20,6 @@ package sql import ( "testing" - "github.com/cockroachdb/cockroach/security" "github.com/cockroachdb/cockroach/sql/parser" "github.com/cockroachdb/cockroach/util/leaktest" ) @@ -40,10 +39,7 @@ func TestMakeDatabaseDesc(t *testing.T) { if desc.ID != 0 { t.Fatalf("expected ID == 0, got %d", desc.ID) } - if len(desc.Read) != 1 || desc.Read[0] != security.RootUser { - t.Fatalf("expected read == [root], got: %v", desc.Read) - } - if len(desc.Write) != 1 || desc.Write[0] != security.RootUser { - t.Fatalf("expected write == [root], got: %v", desc.Write) + if len(desc.GetPrivileges().Users) != 1 { + t.Fatalf("wrong number of privilege users, expected 1, got: %d", len(desc.GetPrivileges().Users)) } } diff --git a/sql/delete.go b/sql/delete.go index 3bdd6480a60..f233e979cdd 100644 --- a/sql/delete.go +++ b/sql/delete.go @@ -19,7 +19,6 @@ package sql import ( "bytes" - "fmt" "github.com/cockroachdb/cockroach/client" "github.com/cockroachdb/cockroach/proto" @@ -38,9 +37,8 @@ func (p *planner) Delete(n *parser.Delete) (planNode, error) { return nil, err } - if !tableDesc.HasPrivilege(p.user, parser.PrivilegeWrite) { - return nil, fmt.Errorf("user %s does not have %s privilege on table %s", - p.user, parser.PrivilegeWrite, tableDesc.Name) + if err := p.checkPrivilege(tableDesc, structured.Privilege_WRITE); err != nil { + return nil, err } // TODO(tamird,pmattis): avoid going through Select to avoid encoding diff --git a/sql/descriptor.go b/sql/descriptor.go index 8caa06c5e30..ef98c98b979 100644 --- a/sql/descriptor.go +++ b/sql/descriptor.go @@ -45,10 +45,7 @@ type descriptorKey interface { // TODO(marc): this is getting rather large. type descriptorProto interface { gogoproto.Message - Grant(*parser.Grant) error - Revoke(*parser.Revoke) error - Show() (structured.UserPrivilegeList, error) - HasPrivilege(string, parser.PrivilegeType) bool + GetPrivileges() *structured.PrivilegeDescriptor GetID() structured.ID SetID(structured.ID) TypeName() string @@ -56,6 +53,15 @@ type descriptorProto interface { Validate() error } +// checkPrivilege verifies that p.user has `privilege` on `descriptor`. +func (p *planner) checkPrivilege(descriptor descriptorProto, privilege structured.Privilege) error { + if descriptor.GetPrivileges().CheckPrivilege(p.user, privilege) { + return nil + } + return fmt.Errorf("user %s does not have %s privilege on %s %s", + p.user, privilege, descriptor.TypeName(), descriptor.GetName()) +} + // writeDescriptor takes a Table or Database descriptor and writes it // if needed, incrementing the descriptor counter. func (p *planner) writeDescriptor(plainKey descriptorKey, descriptor descriptorProto, ifNotExists bool) error { diff --git a/sql/drop.go b/sql/drop.go index 74f862c0df7..8adf0c639bb 100644 --- a/sql/drop.go +++ b/sql/drop.go @@ -66,9 +66,8 @@ func (p *planner) DropTable(n *parser.DropTable) (planNode, error) { return nil, err } - if !tableDesc.HasPrivilege(p.user, parser.PrivilegeWrite) { - return nil, fmt.Errorf("user %s does not have %s privilege on table %s", - p.user, parser.PrivilegeWrite, tableDesc.Name) + if err := p.checkPrivilege(&tableDesc, structured.Privilege_WRITE); err != nil { + return nil, err } if _, err = p.Truncate(&parser.Truncate{Tables: n.Names[i : i+1]}); err != nil { @@ -123,9 +122,8 @@ func (p *planner) DropDatabase(n *parser.DropDatabase) (planNode, error) { return nil, err } - if !desc.HasPrivilege(p.user, parser.PrivilegeWrite) { - return nil, fmt.Errorf("user %s does not have %s privilege on database %s", - p.user, parser.PrivilegeWrite, desc.Name) + if err := p.checkPrivilege(&desc, structured.Privilege_WRITE); err != nil { + return nil, err } tbNames, err := p.getTableNames(&desc) diff --git a/sql/grant.go b/sql/grant.go index b08481ddbb4..4781ae45cd4 100644 --- a/sql/grant.go +++ b/sql/grant.go @@ -18,8 +18,6 @@ package sql import ( - "fmt" - "github.com/cockroachdb/cockroach/sql/parser" "github.com/cockroachdb/cockroach/structured" ) @@ -40,12 +38,15 @@ func (p *planner) Grant(n *parser.Grant) (planNode, error) { return nil, err } - if !descriptor.HasPrivilege(p.user, parser.PrivilegeWrite) { - return nil, fmt.Errorf("user %s does not have %s privilege on %s %s", - p.user, parser.PrivilegeWrite, descriptor.TypeName(), descriptor.GetName()) + if err := p.checkPrivilege(descriptor, structured.Privilege_WRITE); err != nil { + return nil, err + } + + for _, grantee := range n.Grantees { + descriptor.GetPrivileges().Grant(grantee, n.Privileges) } - if err := descriptor.Grant(n); err != nil { + if err := descriptor.Validate(); err != nil { return nil, err } diff --git a/sql/grant_test.go b/sql/grant_test.go deleted file mode 100644 index 93e8144b192..00000000000 --- a/sql/grant_test.go +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2015 The Cockroach Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -// implied. See the License for the specific language governing -// permissions and limitations under the License. See the AUTHORS file -// for names of contributors. -// -// Author: Marc Berhault (marc@cockroachlabs.com) - -package sql_test - -import ( - "testing" - - "github.com/cockroachdb/cockroach/security" - "github.com/cockroachdb/cockroach/structured" - "github.com/cockroachdb/cockroach/util/leaktest" -) - -func TestGrantDatabase(t *testing.T) { - defer leaktest.AfterTest(t) - s, sqlDB, kvDB := setup(t) - defer cleanup(s, sqlDB) - - if _, err := sqlDB.Exec(`CREATE DATABASE test`); err != nil { - t.Fatal(err) - } - - // The first `MaxReservedDescID` (plus 0) are set aside. - descKey := structured.MakeDescMetadataKey(structured.MaxReservedDescID + 1) - desc := structured.DatabaseDescriptor{} - if err := kvDB.GetProto(descKey, &desc); err != nil { - t.Fatal(err) - } - if len(desc.Read) != 1 || desc.Read[0] != security.RootUser { - t.Fatalf("wrong Read list: %+v", desc.Read) - } - if len(desc.Write) != 1 || desc.Write[0] != security.RootUser { - t.Fatalf("wrong Write list: %+v", desc.Write) - } - - // Grant WRITE permissions. - if _, err := sqlDB.Exec(`GRANT WRITE ON DATABASE TEST TO foo`); err != nil { - t.Fatal(err) - } - - if err := kvDB.GetProto(descKey, &desc); err != nil { - t.Fatal(err) - } - if len(desc.Read) != 1 || desc.Read[0] != security.RootUser { - t.Fatalf("wrong Read list: %+v", desc.Read) - } - if len(desc.Write) != 2 || desc.Write[0] != "foo" || desc.Write[1] != security.RootUser { - t.Fatalf("wrong Write list: %+v", desc.Write) - } - - // Grant ALL Permissions. - if _, err := sqlDB.Exec(`GRANT ALL ON DATABASE TEST TO bar`); err != nil { - t.Fatal(err) - } - - if err := kvDB.GetProto(descKey, &desc); err != nil { - t.Fatal(err) - } - if len(desc.Read) != 2 || desc.Read[0] != "bar" || desc.Read[1] != security.RootUser { - t.Fatalf("wrong Read list: %+v", desc.Read) - } - if len(desc.Write) != 3 || desc.Write[0] != "bar" || desc.Write[1] != "foo" || desc.Write[2] != security.RootUser { - t.Fatalf("wrong Write list: %+v", desc.Write) - } - - // Adding permissions to root is a noop. - if _, err := sqlDB.Exec(`GRANT ALL ON DATABASE TEST TO root`); err != nil { - t.Fatal(err) - } -} diff --git a/sql/insert.go b/sql/insert.go index e0bf70f9318..2cda777506f 100644 --- a/sql/insert.go +++ b/sql/insert.go @@ -38,9 +38,8 @@ func (p *planner) Insert(n *parser.Insert) (planNode, error) { return nil, err } - if !tableDesc.HasPrivilege(p.user, parser.PrivilegeWrite) { - return nil, fmt.Errorf("user %s does not have %s privilege on table %s", - p.user, parser.PrivilegeWrite, tableDesc.Name) + if err := p.checkPrivilege(tableDesc, structured.Privilege_WRITE); err != nil { + return nil, err } // Determine which columns we're inserting into. diff --git a/sql/parser/grant.go b/sql/parser/grant.go index 7e3c6c00a51..fd0e5fe2b7e 100644 --- a/sql/parser/grant.go +++ b/sql/parser/grant.go @@ -24,13 +24,14 @@ package parser import ( - "bytes" "fmt" + + "github.com/cockroachdb/cockroach/structured" ) // Grant represents a GRANT statement. type Grant struct { - Privileges PrivilegeList + Privileges structured.PrivilegeList Targets TargetList Grantees NameList } @@ -42,53 +43,15 @@ func (tt TargetType) String() string { return targetNames[tt] } -// PrivilegeType represents the type of privilege. -type PrivilegeType int - -func (pt PrivilegeType) String() string { - return privilegeNames[pt] -} - -// PrivilegeList represents a list of privileges. -type PrivilegeList []PrivilegeType - -func (pl PrivilegeList) String() string { - return pl.Join(", ") -} - -// Join returns the list of privilege names joined using `sep`. -// The default stringer uses `, `, but we want to be able to -// get a tight representation of the string. -func (pl PrivilegeList) Join(sep string) string { - var buf bytes.Buffer - for i, n := range pl { - if i > 0 { - _, _ = buf.WriteString(sep) - } - buf.WriteString(n.String()) - } - return buf.String() -} - // Enums for target and privilege types. const ( TargetDatabase TargetType = iota - - PrivilegeAll PrivilegeType = iota - PrivilegeRead - PrivilegeWrite ) var ( targetNames = [...]string{ TargetDatabase: "DATABASE", } - - privilegeNames = [...]string{ - PrivilegeAll: "ALL", - PrivilegeRead: "READ", - PrivilegeWrite: "WRITE", - } ) // TargetList represents a list of targets. diff --git a/sql/parser/revoke.go b/sql/parser/revoke.go index 1586b0d1b4c..cf948d9f320 100644 --- a/sql/parser/revoke.go +++ b/sql/parser/revoke.go @@ -23,12 +23,16 @@ package parser -import "fmt" +import ( + "fmt" + + "github.com/cockroachdb/cockroach/structured" +) // Revoke represents a REVOKE statements. // PrivilegeList and TargetList are defined in grant.go type Revoke struct { - Privileges PrivilegeList + Privileges structured.PrivilegeList Targets TargetList Grantees NameList } diff --git a/sql/parser/sql.go b/sql/parser/sql.go index 7d5a21332af..fad8accd9b6 100644 --- a/sql/parser/sql.go +++ b/sql/parser/sql.go @@ -5,7 +5,9 @@ package parser import __yyfmt__ "fmt" //line sql.y:22 -//line sql.y:25 +import "github.com/cockroachdb/cockroach/structured" + +//line sql.y:26 type sqlSymType struct { yys int id int @@ -39,8 +41,8 @@ type sqlSymType struct { limit *Limit targetList TargetList targetListPtr *TargetList - privilegeType PrivilegeType - privilegeList PrivilegeList + privilegeType structured.Privilege + privilegeList structured.PrivilegeList } const IDENT = 57346 @@ -899,3811 +901,3795 @@ const sqlEofCode = 1 const sqlErrCode = 2 const sqlMaxDepth = 200 -//line sql.y:3916 +//line sql.y:3947 //line yacctab:1 var sqlExca = [...]int{ -1, 0, 1, 19, 433, 19, - -2, 399, + -2, 406, -1, 1, 1, -1, -2, 0, -1, 33, - 1, 368, - 258, 368, - 312, 368, - 401, 368, - 431, 368, - 433, 368, - -2, 380, + 1, 375, + 258, 375, + 312, 375, + 401, 375, + 431, 375, + 433, 375, + -2, 387, -1, 48, - 1, 371, - 258, 371, - 312, 371, - 401, 371, - 431, 371, - 433, 371, - -2, 379, + 1, 378, + 258, 378, + 312, 378, + 401, 378, + 431, 378, + 433, 378, + -2, 386, -1, 57, 1, 19, 433, 19, - -2, 399, - -1, 92, - 1, 155, - 433, 155, - -2, 1046, - -1, 421, - 150, 410, - 155, 410, - 218, 410, - 256, 410, - -2, 375, - -1, 424, - 150, 409, - 155, 409, - 218, 409, - 256, 409, - -2, 372, - -1, 540, - 150, 409, - 155, 409, - 218, 409, - 256, 409, - -2, 376, - -1, 606, - 430, 895, - -2, 890, - -1, 607, - 430, 896, - -2, 891, + -2, 406, + -1, 99, + 1, 162, + 433, 162, + -2, 1053, + -1, 428, + 150, 417, + 155, 417, + 218, 417, + 256, 417, + -2, 382, + -1, 431, + 150, 416, + 155, 416, + 218, 416, + 256, 416, + -2, 379, + -1, 547, + 150, 416, + 155, 416, + 218, 416, + 256, 416, + -2, 383, -1, 613, - 6, 582, - 430, 582, - -2, 1181, - -1, 636, - 6, 548, - -2, 1164, - -1, 637, - 6, 574, - 430, 574, - -2, 1165, - -1, 638, + 430, 902, + -2, 897, + -1, 614, + 430, 903, + -2, 898, + -1, 620, + 6, 589, + 430, 589, + -2, 1188, + -1, 643, 6, 555, - -2, 1166, - -1, 639, - 6, 574, - 61, 574, - 430, 574, - -2, 1167, - -1, 640, - 6, 574, - 61, 574, - 430, 574, - -2, 1168, - -1, 641, - 6, 577, - -2, 1170, - -1, 642, - 6, 544, -2, 1171, - -1, 643, - 6, 544, - -2, 1172, -1, 644, - 6, 557, - -2, 1175, + 6, 581, + 430, 581, + -2, 1172, -1, 645, - 6, 545, - -2, 1179, + 6, 562, + -2, 1173, -1, 646, - 6, 546, - -2, 1180, + 6, 581, + 61, 581, + 430, 581, + -2, 1174, -1, 647, - 6, 544, - -2, 1187, + 6, 581, + 61, 581, + 430, 581, + -2, 1175, -1, 648, - 6, 549, - -2, 1192, + 6, 584, + -2, 1177, -1, 649, - 6, 547, - -2, 1195, + 6, 551, + -2, 1178, -1, 650, - 6, 585, - -2, 1197, + 6, 551, + -2, 1179, -1, 651, - 6, 585, - -2, 1198, + 6, 564, + -2, 1182, -1, 652, - 6, 572, - 61, 572, - 430, 572, + 6, 552, + -2, 1186, + -1, 653, + 6, 553, + -2, 1187, + -1, 654, + 6, 551, + -2, 1194, + -1, 655, + 6, 556, + -2, 1199, + -1, 656, + 6, 554, -2, 1202, - -1, 937, - 138, 380, - 150, 380, - 155, 380, - 199, 380, - 218, 380, - 256, 380, - 263, 380, - 379, 380, - -2, 694, - -1, 947, - 430, 874, - -2, 868, - -1, 1045, - 430, 281, - -2, 981, - -1, 1185, + -1, 657, + 6, 592, + -2, 1204, + -1, 658, + 6, 592, + -2, 1205, + -1, 659, + 6, 579, + 61, 579, + 430, 579, + -2, 1209, + -1, 944, + 138, 387, + 150, 387, + 155, 387, + 199, 387, + 218, 387, + 256, 387, + 263, 387, + 379, 387, + -2, 701, + -1, 954, + 430, 881, + -2, 875, + -1, 1052, + 430, 288, + -2, 988, + -1, 1192, 13, 0, 14, 0, 15, 0, 413, 0, 414, 0, 415, 0, - -2, 618, - -1, 1186, + -2, 625, + -1, 1193, 13, 0, 14, 0, 15, 0, 413, 0, 414, 0, 415, 0, - -2, 619, - -1, 1187, + -2, 626, + -1, 1194, 13, 0, 14, 0, 15, 0, 413, 0, 414, 0, 415, 0, - -2, 620, - -1, 1189, + -2, 627, + -1, 1196, 13, 0, 14, 0, 15, 0, 413, 0, 414, 0, 415, 0, - -2, 622, - -1, 1190, + -2, 629, + -1, 1197, 13, 0, 14, 0, 15, 0, 413, 0, 414, 0, 415, 0, - -2, 623, - -1, 1191, + -2, 630, + -1, 1198, 13, 0, 14, 0, 15, 0, 413, 0, 414, 0, 415, 0, - -2, 624, - -1, 1194, + -2, 631, + -1, 1201, 45, 0, 182, 0, 217, 0, 338, 0, 410, 0, - -2, 629, - -1, 1232, - 268, 769, - -2, 772, - -1, 1437, - 90, 484, - 161, 484, - 191, 484, - 205, 484, - 215, 484, - 240, 484, - 315, 484, - -2, 380, - -1, 1451, + -2, 636, + -1, 1239, + 268, 776, + -2, 779, + -1, 1444, + 90, 491, + 161, 491, + 191, 491, + 205, 491, + 215, 491, + 240, 491, + 315, 491, + -2, 387, + -1, 1458, 45, 0, 182, 0, 217, 0, 338, 0, 410, 0, - -2, 631, - -1, 1456, + -2, 638, + -1, 1463, 45, 0, 182, 0, 217, 0, 338, 0, 410, 0, - -2, 633, - -1, 1480, - 268, 768, - -2, 771, - -1, 1664, + -2, 640, + -1, 1487, + 268, 775, + -2, 778, + -1, 1671, 45, 0, 182, 0, 217, 0, 338, 0, 410, 0, - -2, 630, - -1, 1666, + -2, 637, + -1, 1673, 45, 0, 182, 0, 217, 0, 338, 0, 410, 0, - -2, 635, - -1, 1672, + -2, 642, + -1, 1679, 203, 0, - -2, 646, - -1, 1682, - 268, 770, - -2, 773, - -1, 1722, + -2, 653, + -1, 1689, + 268, 777, + -2, 780, + -1, 1729, 13, 0, 14, 0, 15, 0, 413, 0, 414, 0, 415, 0, - -2, 675, - -1, 1723, + -2, 682, + -1, 1730, 13, 0, 14, 0, 15, 0, 413, 0, 414, 0, 415, 0, - -2, 676, - -1, 1724, + -2, 683, + -1, 1731, 13, 0, 14, 0, 15, 0, 413, 0, 414, 0, 415, 0, - -2, 677, - -1, 1726, + -2, 684, + -1, 1733, 13, 0, 14, 0, 15, 0, 413, 0, 414, 0, 415, 0, - -2, 679, - -1, 1727, + -2, 686, + -1, 1734, 13, 0, 14, 0, 15, 0, 413, 0, 414, 0, 415, 0, - -2, 680, - -1, 1728, + -2, 687, + -1, 1735, 13, 0, 14, 0, 15, 0, 413, 0, 414, 0, 415, 0, - -2, 681, - -1, 1808, - 432, 1133, - -2, 537, - -1, 1867, + -2, 688, + -1, 1815, + 432, 1140, + -2, 544, + -1, 1874, 45, 0, 182, 0, 217, 0, 338, 0, 410, 0, - -2, 632, - -1, 1871, + -2, 639, + -1, 1878, 45, 0, 182, 0, 217, 0, 338, 0, 410, 0, - -2, 634, - -1, 1872, + -2, 641, + -1, 1879, 203, 0, - -2, 647, - -1, 1876, + -2, 654, + -1, 1883, 45, 0, 182, 0, 217, 0, 338, 0, 410, 0, - -2, 650, - -1, 1877, + -2, 657, + -1, 1884, 45, 0, 182, 0, 217, 0, 338, 0, 410, 0, - -2, 652, - -1, 1982, + -2, 659, + -1, 1989, 45, 0, 182, 0, 217, 0, 338, 0, 410, 0, - -2, 636, - -1, 1983, + -2, 643, + -1, 1990, 45, 0, 182, 0, 217, 0, 338, 0, 410, 0, - -2, 651, - -1, 1984, + -2, 658, + -1, 1991, 45, 0, 182, 0, 217, 0, 338, 0, 410, 0, - -2, 653, - -1, 1992, + -2, 660, + -1, 1999, 203, 0, - -2, 682, - -1, 2046, + -2, 689, + -1, 2053, 203, 0, - -2, 683, - -1, 2106, + -2, 690, + -1, 2113, 45, 0, 217, 0, 338, 0, 410, 0, - -2, 1163, + -2, 1170, } -const sqlNprod = 1298 +const sqlNprod = 1305 const sqlPrivate = 57344 var sqlTokenNames []string var sqlStates []string -const sqlLast = 34233 +const sqlLast = 34069 var sqlAct = [...]int{ - 591, 2105, 1406, 2099, 2083, 2131, 2085, 2053, 2084, 1374, - 1906, 1002, 2104, 854, 2008, 2011, 1009, 1055, 1673, 1121, - 1702, 1338, 1959, 1923, 1907, 1136, 1852, 425, 928, 1859, - 1095, 1440, 1228, 1609, 2018, 94, 1853, 1838, 1575, 744, - 1795, 762, 608, 406, 413, 1379, 1777, 1762, 1092, 32, - 1844, 515, 436, 436, 1372, 1143, 446, 1129, 1615, 1942, - 940, 446, 94, 457, 94, 447, 1085, 93, 1633, 1834, - 1350, 706, 1540, 605, 681, 1349, 1245, 1539, 1086, 943, - 990, 492, 446, 446, 698, 1426, 94, 94, 1310, 604, - 984, 1483, 1444, 1436, 1642, 1418, 1429, 1089, 68, 13, - 430, 1047, 1334, 536, 1040, 671, 597, 1249, 566, 503, - 1010, 1414, 1287, 1211, 936, 1208, 973, 430, 1134, 1239, - 977, 889, 1131, 432, 47, 70, 18, 69, 10, 456, - 525, 456, 742, 71, 6, 1112, 1078, 1090, 716, 576, - 666, 424, 1130, 895, 567, 714, 84, 65, 864, 435, - 862, 699, 47, 463, 547, 546, 13, 865, 455, 48, - 548, 90, 863, 740, 77, 705, 452, 743, 1924, 1003, - 669, 669, 506, 560, 667, 667, 49, 668, 668, 2139, - 683, 47, 1999, 18, 2102, 10, 1242, 1971, 898, 850, - 47, 6, 429, 2079, 73, 433, 1875, 2073, 443, 2069, - 1125, 429, 1999, 453, 1319, 2048, 1477, 422, 1875, 1290, - 1476, 1478, 898, 1007, 461, 1475, 900, 599, 502, 465, - 2036, 896, 459, 1971, 421, 495, 2035, 1475, 2025, 1125, - 73, 1028, 498, 500, 2000, 1985, 1974, 1999, 1875, 1975, - 900, 1973, 1970, 53, 1971, 1971, 899, 1968, 437, 1927, - 1125, 896, 1125, 1920, 913, 1243, 1921, 1919, 1900, 1879, - 1125, 1475, 1475, 504, 1874, 1822, 1774, 1875, 1823, 1125, - 899, 1772, 2031, 1677, 1125, 55, 1475, 1597, 913, 1574, - 1598, 1570, 1028, 898, 1028, 1565, 1555, 1553, 1475, 1556, - 1475, 1552, 1551, 1480, 1475, 1475, 1475, 1479, 1369, 1126, - 1475, 1125, 1125, 1001, 507, 687, 1000, 1961, 688, 56, - 897, 900, 1244, 97, 1789, 1241, 1734, 1681, 51, 653, - 1367, 1033, 1416, 1788, 1028, 1370, 1125, 682, 1224, 52, - 1119, 1074, 561, 491, 442, 2066, 53, 1868, 1599, 2020, - 57, 899, 2056, 516, 701, 756, 756, 50, 1674, 913, - 756, 986, 986, 505, 1756, 1600, 2103, 2043, 1978, 1953, - 985, 985, 1903, 1482, 1901, 1892, 1053, 1891, 55, 1621, - 1886, 1885, 1475, 1884, 1883, 1866, 1747, 1744, 983, 987, - 1335, 469, 1743, 1742, 1685, 1654, 1632, 470, 1514, 1607, - 1562, 1561, 1558, 1557, 1547, 1538, 1513, 1510, 1508, 1506, - 1505, 1504, 56, 1503, 1246, 1493, 898, 1487, 1669, 1368, - 1335, 1306, 991, 530, 851, 560, 446, 1075, 94, 944, - 538, 50, 950, 1583, 1220, 559, 1056, 853, 53, 2101, - 1026, 53, 1704, 2055, 900, 436, 684, 2041, 1994, 1964, - 50, 1956, 1373, 1916, 1911, 1898, 446, 1851, 1849, 541, - 1818, 446, 446, 1333, 678, 1336, 1671, 1785, 898, 1656, - 55, 1863, 1650, 55, 899, 1647, 1514, 53, 1587, 1585, - 1537, 568, 568, 1501, 1500, 1492, 1471, 1470, 1465, 1213, - 1514, 672, 1528, 1529, 1530, 534, 900, 1240, 978, 553, - 94, 446, 923, 734, 56, 1319, 981, 56, 446, 55, - 1870, 66, 898, 51, 691, 1443, 51, 665, 661, 1332, - 1448, 1295, 1254, 540, 52, 898, 899, 52, 94, 1124, - 446, 94, 1054, 94, 913, 897, 1755, 669, 993, 847, - 900, 667, 1006, 56, 668, 67, 1221, 971, 849, 970, - 969, 968, 51, 900, 967, 1620, 1527, 966, 659, 965, - 964, 752, 963, 52, 962, 1865, 961, 704, 533, 682, - 899, 1786, 436, 960, 959, 894, 958, 957, 913, 1056, - 948, 50, 946, 899, 945, 50, 448, 564, 2042, 1980, - 1979, 1658, 876, 542, 881, 944, 1659, 757, 543, 662, - 1937, 890, 422, 453, 901, 902, 903, 904, 905, 907, - 908, 906, 909, 852, 929, 930, 931, 932, 933, 421, - 701, 1759, 735, 1320, 938, 1441, 1407, 674, 901, 902, - 903, 904, 905, 907, 908, 906, 909, 1665, 986, 924, - 562, 430, 690, 1514, 78, 735, 953, 985, 1560, 1559, - 1449, 728, 1056, 893, 510, 523, 511, 955, 2100, 1096, - 75, 405, 947, 1380, 402, 1922, 710, 737, 1824, 1835, - 398, 524, 1003, 731, 919, 446, 2006, 1705, 1250, 974, - 1316, 1339, 1531, 745, 2063, 2117, 1384, 419, 446, 840, - 1015, 94, 844, 94, 845, 843, 1018, 94, 58, 901, - 902, 903, 904, 905, 907, 908, 906, 909, 397, 860, - 1496, 873, 999, 874, 861, 866, 2118, 2097, 446, 894, - 1998, 891, 1362, 422, 94, 2065, 422, 422, 1038, 1791, - 1068, 414, 872, 446, 400, 94, 1939, 1938, 446, 751, - 885, 446, 398, 886, 887, 398, 1603, 1602, 996, 998, - 1601, 1210, 988, 1491, 1061, 1490, 79, 1489, 456, 1488, - 1017, 1452, 702, 1111, 456, 1199, 975, 976, 1034, 870, - 1031, 1049, 1300, 1027, 979, 1110, 1037, 59, 982, 528, - 397, 1299, 1606, 397, 1005, 1175, 489, 416, 469, 1029, - 1210, 989, 1217, 1246, 470, 921, 1107, 1030, 1589, 1215, - 2049, 939, 1059, 1303, 1515, 1516, 1517, 1518, 1519, 1521, - 1522, 1520, 1523, 992, 738, 712, 995, 677, 655, 1952, - 868, 47, 901, 902, 903, 904, 905, 907, 908, 906, - 909, 1050, 469, 469, 80, 1113, 1114, 1077, 470, 470, - 760, 1064, 1116, 713, 428, 1020, 761, 2076, 654, 1016, - 465, 1076, 1021, 1079, 1069, 1019, 951, 1080, 508, 1997, - 446, 1049, 871, 1088, 94, 1035, 1951, 920, 1101, 872, - 1032, 2087, 1065, 2077, 901, 902, 903, 904, 905, 907, - 908, 906, 909, 1066, 1517, 1518, 1519, 1521, 1522, 1520, - 1523, 1862, 1524, 1525, 1526, 446, 1515, 1516, 1517, 1518, - 1519, 1521, 1522, 1520, 1523, 427, 870, 1242, 1694, 509, - 94, 869, 62, 2128, 1311, 1417, 81, 1127, 901, 902, - 903, 904, 905, 907, 908, 906, 909, 556, 557, 78, - 1197, 1094, 683, 1081, 1117, 972, 907, 908, 906, 909, - 568, 2017, 417, 1363, 1176, 1177, 1178, 1179, 1180, 1181, - 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, - 1192, 1193, 1194, 1990, 420, 1098, 1118, 60, 1262, 429, - 1269, 934, 2127, 1109, 1691, 1499, 1243, 1174, 1250, 1591, - 1139, 1643, 1655, 2088, 429, 2117, 1421, 1950, 1627, 1826, - 2086, 760, 760, 1105, 64, 2116, 1138, 761, 761, 871, - 1246, 1825, 1082, 1590, 1259, 2134, 1271, 1218, 1281, 1283, - 1288, 1291, 469, 1140, 1304, 2114, 1424, 446, 470, 1317, - 1104, 1103, 550, 1361, 1041, 446, 1375, 545, 702, 1111, - 1419, 1692, 1273, 1244, 1229, 1957, 1241, 894, 1079, 446, - 1422, 79, 1326, 672, 1381, 1328, 1312, 1038, 869, 2089, - 1331, 1314, 1141, 898, 1521, 1522, 1520, 1523, 1341, 1342, - 506, 1344, 1346, 1347, 1604, 1420, 430, 1198, 1454, 446, - 1265, 570, 526, 1768, 1354, 1355, 1356, 660, 1079, 1763, - 760, 900, 1071, 1846, 1219, 426, 761, 1222, 1315, 82, - 549, 995, 1761, 519, 1072, 1461, 1321, 1463, 995, 2126, - 1578, 1322, 1195, 497, 446, 490, 551, 1209, 94, 1060, - 1216, 899, 1895, 1383, 1897, 612, 1309, 1073, 1046, 913, - 1459, 1769, 1768, 1246, 1376, 1246, 1149, 1421, 551, 750, - 696, 749, 884, 550, 701, 1929, 1413, 2143, 1928, 1266, - 1423, 1428, 1432, 1435, 1428, 1914, 1577, 1382, 898, 1025, - 859, 504, 1784, 1386, 1063, 855, 1827, 1424, 1205, 1389, - 1207, 2082, 890, 1318, 1225, 1230, 1231, 63, 1234, 1690, - 1769, 1641, 2054, 879, 1324, 1377, 900, 1623, 1450, 1387, - 550, 1422, 1327, 1203, 1329, 1282, 736, 1915, 684, 1292, - 1293, 1294, 507, 2132, 1340, 430, 1267, 1337, 1106, 1264, - 1847, 549, 1729, 1439, 1732, 1365, 899, 1638, 1240, 1360, - 1446, 1378, 1845, 1305, 1359, 657, 1139, 1364, 1352, 1139, - 1637, 1457, 1357, 1196, 1630, 451, 1462, 1430, 427, 1581, - 537, 1610, 1138, 1409, 1425, 1138, 753, 2112, 1451, 551, - 1058, 505, 1456, 1896, 1820, 1084, 1083, 1044, 549, 1140, - 760, 1388, 1140, 1634, 1385, 1764, 761, 1142, 47, 1765, - 1411, 2133, 1410, 880, 1438, 1433, 1149, 1474, 1412, 988, - 1415, 1253, 1481, 430, 1993, 2142, 1894, 1541, 1484, 1447, - 1201, 1423, 1631, 2135, 1200, 1542, 1783, 1819, 1268, 1206, - 979, 656, 982, 1497, 1670, 1509, 1767, 1502, 976, 975, - 1464, 1442, 1067, 896, 1764, 522, 520, 1947, 1765, 517, - 1770, 450, 545, 717, 1563, 956, 1149, 867, 1624, 718, - 842, 938, 1455, 1453, 1730, 755, 1252, 1288, 1288, 1288, - 446, 1626, 1595, 1731, 94, 1593, 1323, 1102, 430, 609, - 1571, 1042, 1097, 1458, 894, 1767, 754, 894, 1473, 730, - 1586, 1566, 727, 1460, 568, 686, 1946, 685, 680, 1770, - 1699, 1905, 2118, 672, 739, 1944, 1495, 1122, 513, 1831, - 747, 1263, 1149, 554, 440, 1579, 1049, 1049, 1608, 1908, - 760, 1038, 1052, 1569, 1618, 858, 761, 1051, 1048, 1514, - 1766, 1619, 446, 1924, 1943, 898, 898, 1330, 469, 2019, - 732, 704, 1629, 991, 470, 2045, 1202, 1544, 1545, 1546, - 1635, 3, 1568, 1613, 2032, 558, 1204, 72, 25, 1417, - 719, 1977, 1580, 900, 1622, 1582, 1564, 733, 1008, 1594, - 1567, 1596, 1617, 1468, 892, 856, 1573, 1378, 1646, 1766, - 1572, 1472, 1648, 1661, 1432, 1428, 1576, 1330, 1428, 1445, - 1584, 1123, 2140, 899, 899, 1527, 1485, 1486, 2141, 901, - 902, 903, 904, 905, 907, 908, 906, 909, 1945, 449, - 1605, 555, 441, 514, 1514, 25, 74, 898, 1611, 722, - 735, 1981, 1022, 1024, 1636, 395, 1023, 1639, 1864, 1748, - 1421, 1697, 1663, 1664, 1662, 1666, 1554, 1023, 1536, 1366, - 1139, 1302, 1301, 1139, 1298, 1297, 1653, 1672, 83, 1549, - 1703, 1296, 1258, 1678, 1257, 1256, 1138, 1255, 1683, 1138, - 1424, 1247, 1687, 1688, 1689, 1683, 1640, 1644, 1645, 1430, - 430, 1881, 389, 1140, 1419, 723, 1140, 725, 1652, 1700, - 1651, 396, 702, 697, 1422, 1816, 724, 1698, 949, 1660, - 531, 529, 1709, 527, 415, 1711, 903, 904, 905, 907, - 908, 906, 909, 76, 390, 841, 518, 1888, 1684, 1420, - 2075, 1498, 1989, 1958, 1251, 954, 1693, 1695, 1696, 399, - 26, 401, 403, 404, 1739, 1740, 583, 1760, 1612, 1091, - 748, 695, 1773, 1746, 894, 521, 1779, 1358, 894, 1710, - 2081, 726, 1261, 1706, 1792, 658, 1793, 610, 1146, 611, - 1147, 980, 1810, 1811, 1812, 1813, 1814, 1815, 1787, 1790, - 1778, 1780, 1737, 882, 1222, 721, 598, 391, 1738, 462, - 689, 1088, 94, 1821, 464, 1011, 1214, 1833, 1798, 1248, - 1494, 952, 582, 1752, 1423, 392, 588, 587, 1226, 1799, - 1817, 1797, 1802, 1751, 1776, 1976, 1858, 1832, 894, 1749, - 1854, 1856, 1750, 1657, 2005, 1428, 579, 1435, 1616, 1139, - 1758, 711, 1775, 88, 89, 1313, 1782, 1836, 1839, 1757, - 1754, 1809, 720, 1004, 1794, 1138, 878, 1855, 1108, 875, - 61, 1679, 1860, 1149, 1592, 1861, 857, 1828, 418, 1829, - 1873, 1511, 1140, 1280, 1272, 1842, 1843, 1270, 1867, 1848, - 1260, 883, 1871, 1872, 544, 1889, 552, 1164, 1876, 1877, - 848, 1139, 1139, 1796, 1880, 1139, 607, 1840, 1837, 1882, - 532, 1830, 1348, 670, 1012, 1149, 1850, 1138, 1138, 1850, - 1139, 1138, 1149, 565, 1887, 1128, 563, 1163, 1890, 888, - 1857, 438, 439, 1614, 1140, 1140, 1138, 1735, 1140, 1087, - 512, 96, 1070, 675, 925, 1099, 1779, 1115, 1745, 96, - 96, 1149, 1912, 1140, 94, 2062, 1588, 1899, 96, 96, - 54, 446, 96, 17, 16, 15, 14, 96, 96, 96, - 96, 1780, 12, 1893, 468, 1515, 1516, 1517, 1518, 1519, - 1521, 1522, 1520, 1523, 995, 11, 1408, 96, 96, 96, - 9, 8, 96, 96, 1925, 578, 7, 24, 23, 393, - 22, 5, 394, 21, 1926, 20, 19, 1149, 4, 446, - 2, 1931, 1904, 1, 1618, 1909, 0, 1940, 0, 1139, - 0, 1913, 0, 0, 0, 0, 1960, 0, 0, 0, - 1653, 0, 0, 0, 0, 1138, 1936, 1164, 0, 0, - 894, 0, 1856, 0, 1935, 0, 1708, 0, 0, 1446, - 0, 444, 1140, 1712, 0, 0, 444, 1933, 1934, 0, - 0, 1930, 1617, 0, 938, 0, 1955, 1163, 1969, 1965, - 1948, 0, 1949, 0, 1954, 0, 0, 493, 444, 1149, - 1941, 430, 1741, 0, 1963, 0, 0, 1164, 0, 0, - 0, 1982, 1983, 1984, 0, 1966, 0, 0, 0, 2001, - 1988, 0, 760, 0, 760, 0, 0, 1995, 761, 0, - 761, 1139, 1779, 2010, 94, 94, 94, 1163, 1967, 0, - 1967, 0, 2004, 0, 0, 0, 0, 1138, 0, 2023, - 2024, 2015, 0, 0, 672, 0, 1778, 1780, 1801, 2003, - 0, 2009, 0, 1164, 1140, 0, 0, 1779, 446, 0, - 2002, 430, 0, 0, 0, 894, 1798, 2029, 2007, 0, - 0, 0, 1854, 0, 0, 0, 1435, 1799, 2022, 1797, - 1802, 0, 1780, 1163, 0, 2028, 0, 2027, 2021, 2026, - 0, 2012, 2014, 2012, 1839, 1139, 0, 0, 0, 2033, - 1779, 1860, 0, 0, 1148, 2040, 2039, 2038, 2037, 1149, - 0, 1138, 2051, 2047, 94, 0, 0, 2044, 446, 0, - 94, 1149, 0, 0, 2050, 1780, 1274, 0, 1140, 0, - 1139, 2057, 1960, 0, 0, 2059, 0, 0, 2068, 0, - 2060, 0, 1854, 2034, 0, 0, 1138, 0, 0, 1139, - 446, 939, 2070, 2072, 2071, 0, 0, 2010, 2067, 0, - 2092, 94, 2093, 1140, 0, 1138, 2080, 0, 2074, 0, - 0, 2091, 1149, 1139, 1149, 2095, 2094, 2098, 0, 0, - 0, 2058, 1140, 0, 0, 2009, 0, 2064, 2090, 1138, - 2110, 2113, 2111, 1149, 2115, 1514, 2096, 1528, 1529, 1530, - 0, 0, 1779, 2121, 1166, 0, 1140, 0, 2125, 2109, - 2109, 2122, 2124, 0, 2120, 1869, 1149, 0, 2123, 0, - 0, 0, 0, 2137, 2136, 0, 2138, 1780, 2012, 96, - 0, 0, 96, 0, 96, 0, 96, 0, 0, 2109, - 1932, 0, 2145, 2144, 1148, 0, 0, 0, 0, 0, - 0, 96, 0, 0, 0, 1149, 2146, 0, 0, 0, - 0, 1527, 96, 0, 0, 0, 0, 96, 96, 0, - 96, 0, 0, 2109, 0, 1139, 0, 0, 0, 0, - 1165, 468, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1138, 0, 0, 1148, 0, 0, 0, 0, 0, - 0, 0, 0, 1972, 0, 1972, 96, 96, 1140, 0, - 0, 0, 1149, 0, 96, 0, 0, 0, 0, 0, - 0, 444, 0, 0, 1986, 468, 468, 0, 1145, 0, - 0, 1466, 1467, 759, 96, 0, 96, 96, 0, 96, - 0, 0, 0, 0, 1166, 96, 0, 0, 0, 0, - 1148, 663, 0, 0, 0, 2078, 444, 676, 0, 0, + 598, 2112, 2090, 2106, 2060, 1413, 2138, 2091, 2111, 1128, + 1913, 1009, 1297, 1143, 2092, 861, 2015, 1062, 1859, 1930, + 2018, 1016, 1381, 1709, 1447, 935, 1866, 1966, 1680, 1914, + 2025, 1845, 1235, 1860, 1616, 101, 1102, 432, 522, 1345, + 751, 1769, 769, 413, 420, 1582, 1802, 615, 1851, 1784, + 1379, 1386, 443, 443, 688, 1150, 453, 947, 1841, 1092, + 1433, 453, 101, 464, 101, 1356, 1099, 1622, 454, 713, + 32, 1317, 1949, 1640, 705, 991, 1547, 673, 1357, 1546, + 1252, 997, 1443, 104, 1136, 1490, 950, 1451, 499, 453, + 453, 1436, 1425, 101, 101, 1649, 678, 1096, 510, 1341, + 543, 1054, 573, 1294, 1047, 1017, 68, 13, 1421, 1256, + 1218, 984, 943, 1246, 1215, 1141, 896, 980, 1119, 1138, + 749, 437, 1085, 439, 47, 532, 1097, 723, 70, 18, + 69, 10, 902, 871, 660, 431, 71, 6, 437, 583, + 1093, 574, 869, 100, 65, 706, 553, 91, 470, 721, + 442, 476, 47, 48, 554, 555, 97, 872, 1137, 747, + 750, 462, 870, 77, 13, 712, 459, 676, 440, 513, + 567, 674, 1931, 676, 675, 690, 436, 674, 49, 73, + 675, 47, 1249, 1010, 560, 857, 18, 436, 10, 2146, + 47, 903, 2006, 2109, 6, 903, 1978, 2086, 73, 1484, + 1882, 429, 477, 2080, 1485, 463, 1132, 463, 1482, 2076, + 1483, 468, 2006, 472, 450, 1482, 2038, 1968, 1326, 460, + 509, 444, 904, 1741, 2055, 466, 428, 1882, 2043, 2042, + 2032, 1978, 1132, 1035, 2007, 1992, 1688, 2006, 1882, 612, + 505, 507, 1014, 1374, 1981, 1040, 1681, 1982, 502, 1980, + 1977, 1250, 1978, 1978, 1975, 1934, 1927, 1132, 1132, 1928, + 511, 1926, 1907, 1886, 1132, 1482, 1482, 1881, 53, 1423, + 1882, 1829, 611, 1781, 1830, 1779, 1132, 1684, 1132, 1604, + 1482, 1581, 1605, 1577, 1035, 1572, 1035, 1562, 1482, 1560, + 1563, 1559, 1482, 1558, 1482, 1487, 1482, 1035, 1482, 1486, + 55, 514, 1482, 1376, 1133, 1377, 1132, 1132, 1251, 1008, + 694, 1248, 1007, 695, 1132, 689, 1231, 1126, 1081, 568, + 498, 449, 604, 1606, 2073, 53, 2027, 1796, 708, 57, + 2063, 523, 993, 993, 56, 763, 1795, 763, 1060, 763, + 1607, 992, 992, 51, 1342, 2110, 2050, 1489, 1985, 1960, + 512, 1910, 1908, 1899, 52, 998, 1898, 55, 1482, 990, + 994, 905, 1893, 1892, 1891, 1890, 1873, 1754, 1763, 1751, + 1750, 1749, 50, 1227, 1692, 1661, 1639, 1628, 1614, 1569, + 1568, 1565, 1564, 1554, 1545, 1520, 1517, 1590, 860, 907, + 1515, 56, 1513, 1512, 1521, 1511, 1535, 1536, 1537, 1510, + 1253, 1500, 1494, 1521, 1375, 1313, 1342, 951, 567, 50, + 858, 1082, 957, 1521, 1877, 566, 53, 1063, 2108, 906, + 537, 1033, 1711, 453, 2062, 101, 2048, 545, 2001, 50, + 1971, 691, 1963, 1380, 1923, 53, 1918, 1905, 1870, 1858, + 1856, 1825, 443, 1343, 1678, 1663, 1657, 1654, 55, 1340, + 1594, 1592, 1544, 453, 1508, 1507, 1499, 53, 453, 453, + 1534, 685, 1478, 1477, 1472, 1326, 548, 55, 1220, 904, + 1792, 905, 985, 988, 1450, 1339, 1302, 1261, 575, 575, + 1131, 1000, 56, 1247, 978, 1228, 66, 977, 679, 55, + 741, 51, 976, 975, 1061, 974, 973, 101, 453, 907, + 972, 56, 52, 971, 970, 453, 1455, 969, 968, 967, + 51, 672, 698, 1521, 547, 1535, 1536, 1537, 668, 966, + 67, 52, 905, 56, 965, 101, 964, 453, 101, 906, + 101, 676, 51, 1876, 856, 674, 854, 920, 675, 50, + 1762, 1063, 955, 52, 953, 952, 50, 455, 571, 666, + 907, 2049, 1872, 1627, 689, 476, 1987, 1986, 1665, 759, + 951, 1013, 669, 1666, 859, 1944, 1766, 1521, 541, 443, + 1327, 1448, 901, 1414, 1793, 708, 993, 1567, 1566, 1534, + 906, 540, 1521, 1456, 530, 992, 1538, 518, 920, 883, + 549, 888, 531, 429, 744, 550, 1875, 405, 897, 476, + 476, 946, 764, 962, 2107, 1103, 477, 767, 742, 1387, + 569, 936, 937, 938, 939, 940, 460, 905, 428, 563, + 564, 945, 1929, 1831, 681, 1503, 1842, 1010, 2013, 1712, + 1257, 742, 697, 1534, 981, 404, 1323, 1346, 2070, 517, + 711, 412, 2125, 960, 58, 907, 2005, 1676, 2124, 1391, + 477, 477, 735, 2104, 2072, 1063, 954, 1798, 768, 437, + 1946, 1369, 717, 426, 1075, 435, 421, 409, 407, 1945, + 738, 78, 453, 1610, 1609, 906, 752, 1608, 1056, 1498, + 1497, 847, 1496, 1307, 851, 453, 852, 1022, 101, 1613, + 101, 1495, 850, 1025, 101, 1459, 1206, 1041, 83, 1306, + 1038, 881, 1034, 905, 535, 1538, 867, 873, 880, 1006, + 79, 868, 900, 1182, 429, 453, 901, 429, 429, 898, + 496, 101, 405, 59, 996, 1045, 434, 423, 1217, 1114, + 453, 907, 101, 1056, 995, 453, 709, 1118, 453, 892, + 1217, 745, 893, 894, 1072, 1224, 2056, 80, 405, 1117, + 1002, 1068, 1222, 1003, 1005, 1310, 1123, 684, 767, 767, + 404, 906, 986, 1253, 982, 983, 989, 908, 909, 910, + 911, 912, 914, 915, 913, 916, 606, 82, 1701, 476, + 1959, 1410, 1411, 1412, 1036, 2004, 404, 1120, 1121, 1012, + 436, 1044, 1958, 2135, 1318, 1370, 1531, 1532, 1533, 999, + 1522, 1523, 1524, 1525, 1526, 1528, 1529, 1527, 1530, 768, + 768, 1524, 1525, 1526, 1528, 1529, 1527, 1530, 47, 1522, + 1523, 1524, 1525, 1526, 1528, 1529, 1527, 1530, 1057, 690, + 477, 463, 2024, 1024, 979, 1083, 958, 463, 1071, 1027, + 1076, 472, 1084, 515, 1028, 1409, 1596, 767, 1124, 1023, + 1086, 1042, 1997, 1506, 1087, 1026, 1037, 453, 1869, 941, + 1095, 101, 879, 719, 1650, 1108, 2141, 1662, 1039, 2083, + 1253, 436, 1957, 1634, 2094, 1066, 85, 908, 909, 910, + 911, 912, 914, 915, 913, 916, 1112, 87, 2093, 2123, + 2121, 720, 453, 1257, 516, 2084, 1073, 2134, 768, 877, + 62, 1382, 1964, 1388, 1321, 667, 433, 101, 81, 526, + 1088, 2124, 504, 60, 1134, 1531, 1532, 1533, 424, 1522, + 1523, 1524, 1525, 1526, 1528, 1529, 1527, 1530, 908, 909, + 910, 911, 912, 914, 915, 913, 916, 575, 497, 558, + 427, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, + 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, + 1116, 1125, 1368, 1067, 1232, 1237, 1238, 84, 1241, 88, + 1105, 1611, 1775, 1522, 1523, 1524, 1525, 1526, 1528, 1529, + 1527, 1530, 64, 709, 1118, 1289, 2095, 891, 86, 1299, + 1300, 1301, 878, 1528, 1529, 1527, 1530, 577, 1048, 513, + 533, 1266, 1111, 1278, 1101, 1288, 1290, 1295, 1298, 1936, + 1110, 1311, 1225, 1312, 453, 1089, 1324, 767, 1280, 1249, + 1776, 1229, 453, 1698, 2133, 1002, 1070, 1598, 914, 915, + 913, 916, 1002, 75, 901, 1086, 453, 1935, 1236, 1333, + 679, 876, 1335, 1319, 1045, 1461, 1148, 1338, 1921, 879, + 1181, 1597, 2096, 1389, 2139, 1348, 1349, 1216, 1351, 1353, + 1354, 557, 2150, 1223, 1078, 1032, 453, 866, 768, 862, + 1630, 1361, 1362, 1363, 1585, 1086, 1079, 1204, 1329, 2089, + 1699, 1226, 1697, 1322, 437, 691, 877, 2061, 1250, 1394, + 511, 1328, 1053, 1902, 886, 1904, 1833, 78, 557, 1080, + 743, 453, 1791, 552, 1316, 101, 557, 1922, 1832, 1347, + 1390, 910, 911, 912, 914, 915, 913, 916, 1344, 1637, + 1584, 1383, 2140, 1113, 83, 1854, 1645, 1644, 458, 556, + 1269, 514, 1276, 1420, 1617, 434, 79, 875, 1435, 1439, + 1442, 1435, 89, 1146, 2142, 1251, 2119, 767, 1248, 1325, + 1393, 1065, 1149, 1396, 1771, 63, 1588, 1331, 1772, 897, + 544, 1091, 1736, 1827, 1739, 476, 556, 558, 1334, 1090, + 1336, 1641, 1253, 80, 556, 402, 1145, 1638, 1422, 878, + 512, 1406, 1407, 1408, 887, 1397, 1398, 1399, 1400, 1401, + 1402, 1403, 1404, 1405, 1260, 1774, 1372, 1366, 768, 1437, + 2149, 1367, 1371, 82, 558, 1385, 1826, 1453, 2000, 1777, + 1901, 1631, 1548, 437, 1205, 662, 477, 1428, 661, 1359, + 1432, 1051, 396, 1364, 1903, 1677, 1147, 1446, 876, 1516, + 1471, 1449, 1272, 1475, 1392, 1458, 1790, 1253, 1416, 1463, + 1074, 1479, 903, 1395, 529, 527, 619, 1431, 1384, 1202, + 524, 995, 457, 1549, 397, 47, 1492, 1493, 1445, 1440, + 1418, 1648, 1417, 1834, 1481, 552, 963, 874, 1419, 849, + 1454, 1429, 1954, 1259, 1633, 1491, 1602, 1600, 986, 1488, + 989, 757, 703, 756, 1737, 1330, 708, 1109, 1104, 1773, + 1504, 437, 1337, 1738, 1509, 758, 983, 982, 1543, 737, + 734, 1273, 85, 693, 692, 687, 1706, 1912, 2125, 1556, + 1129, 1570, 746, 1838, 754, 1049, 1462, 398, 945, 1460, + 1247, 1953, 1915, 664, 1295, 1295, 1295, 453, 561, 1576, + 1951, 101, 1059, 520, 81, 399, 1424, 1578, 1468, 865, + 1470, 901, 1337, 1480, 901, 905, 1626, 1593, 1573, 1931, + 447, 575, 2026, 1056, 739, 905, 437, 1056, 1274, 1950, + 679, 1271, 998, 1466, 1058, 1502, 614, 905, 1055, 2052, + 1203, 1430, 1586, 907, 1642, 1615, 565, 2039, 1045, 1146, + 1984, 1625, 1146, 907, 1629, 740, 1015, 899, 760, 453, + 1668, 3, 1575, 84, 1130, 1551, 1552, 1553, 863, 72, + 25, 103, 1636, 906, 1452, 2147, 1601, 1428, 1603, 103, + 103, 920, 1145, 906, 86, 1145, 1620, 2148, 103, 103, + 1571, 1574, 103, 1521, 1580, 906, 562, 103, 103, 103, + 103, 1385, 1579, 1952, 475, 1653, 74, 1431, 521, 1655, + 905, 1439, 1435, 1583, 1591, 1435, 1988, 1624, 448, 456, + 1275, 1426, 1031, 1871, 103, 103, 103, 25, 1755, 103, + 103, 1429, 1147, 1664, 1464, 1147, 742, 1612, 90, 1469, + 1672, 1704, 1029, 1669, 711, 1618, 1030, 762, 1561, 1030, + 1373, 1587, 1309, 1308, 1589, 1305, 1427, 1304, 1303, 1670, + 1671, 1686, 1673, 1265, 1264, 1263, 1262, 1775, 761, 1254, + 1660, 1437, 403, 1770, 1679, 1888, 1823, 1710, 1643, 400, + 1685, 1646, 401, 1705, 956, 1690, 1768, 538, 536, 534, + 1647, 422, 1690, 76, 1659, 1651, 1652, 848, 525, 1694, + 1695, 1696, 1658, 1270, 1895, 2082, 1707, 1505, 1996, 1965, + 406, 1667, 408, 410, 411, 1776, 1258, 961, 437, 1716, + 26, 590, 1718, 1767, 663, 1619, 889, 1742, 1229, 1098, + 755, 1430, 702, 528, 2088, 1268, 665, 617, 1752, 1153, + 618, 1154, 1691, 987, 605, 469, 696, 1700, 1702, 1703, + 471, 1746, 1747, 1018, 1221, 1255, 1465, 1501, 959, 1780, + 1753, 901, 589, 1786, 1713, 901, 1467, 595, 1717, 594, + 1233, 1799, 1783, 1800, 1983, 1865, 1787, 2012, 616, 1817, + 1818, 1819, 1820, 1821, 1822, 1794, 1797, 586, 1623, 718, + 95, 96, 1785, 1744, 1320, 1761, 1011, 1745, 1095, 101, + 885, 1115, 1805, 882, 1840, 61, 1599, 864, 425, 1518, + 1287, 1756, 1279, 1828, 1757, 1759, 1277, 1806, 1267, 1804, + 1765, 1758, 890, 1824, 1809, 901, 551, 1861, 1863, 559, + 855, 1803, 1435, 1146, 1442, 1847, 1146, 1844, 539, 1355, + 677, 1801, 1839, 1019, 1843, 1846, 1862, 1867, 572, 1771, + 1135, 570, 1156, 1772, 1764, 895, 1816, 1835, 445, 767, + 446, 767, 1621, 1094, 709, 704, 1145, 519, 1077, 1145, + 682, 932, 1868, 1106, 1122, 1874, 2069, 1880, 1595, 1878, + 1879, 54, 1896, 17, 585, 1883, 1884, 16, 15, 14, + 1774, 1887, 1864, 12, 11, 1415, 1889, 9, 8, 1849, + 1850, 1782, 7, 1855, 1777, 1789, 1837, 24, 1002, 23, + 768, 1894, 768, 22, 5, 1897, 1147, 21, 20, 1147, + 19, 908, 909, 910, 911, 912, 914, 915, 913, 916, + 4, 1715, 2, 1786, 1, 0, 0, 0, 1719, 1919, + 451, 101, 1836, 0, 1906, 451, 1787, 0, 453, 0, + 0, 0, 0, 0, 0, 0, 103, 0, 0, 103, + 0, 103, 0, 103, 1900, 1857, 0, 1748, 1857, 0, + 0, 0, 0, 500, 451, 0, 0, 1932, 103, 0, + 0, 0, 0, 0, 1773, 0, 0, 0, 1911, 103, + 0, 1933, 1156, 0, 103, 103, 453, 103, 1938, 0, + 0, 1625, 1146, 0, 0, 1916, 0, 0, 475, 0, + 0, 0, 0, 1967, 1660, 0, 0, 1947, 1942, 0, + 0, 0, 0, 1808, 1940, 1941, 0, 901, 1943, 1863, + 0, 946, 0, 103, 103, 1145, 1453, 0, 1937, 0, + 0, 103, 1156, 0, 0, 0, 0, 1976, 0, 0, + 0, 945, 475, 475, 1146, 1146, 1972, 1961, 1146, 1962, + 766, 103, 0, 103, 103, 1948, 103, 1624, 1956, 1970, + 1955, 0, 103, 1146, 0, 0, 0, 0, 1989, 1990, + 1991, 0, 0, 0, 1920, 1147, 2008, 1145, 1145, 437, + 0, 1145, 0, 0, 0, 0, 0, 1995, 1156, 1786, + 2017, 101, 101, 101, 2002, 103, 1145, 0, 103, 1973, + 0, 2011, 1787, 0, 0, 0, 2030, 2031, 0, 0, + 0, 679, 0, 2022, 724, 2016, 2010, 0, 1785, 0, + 725, 2009, 0, 0, 1786, 453, 0, 1147, 1147, 1281, + 1805, 1147, 901, 0, 2036, 0, 0, 1787, 2014, 1861, + 0, 0, 2028, 1442, 0, 1806, 1147, 1804, 0, 437, + 0, 2029, 1809, 0, 0, 2034, 1867, 1974, 2035, 1974, + 2040, 1846, 1146, 2033, 0, 0, 2046, 1786, 0, 2047, + 2045, 0, 2044, 0, 0, 0, 0, 0, 0, 2058, + 1787, 101, 0, 0, 0, 453, 0, 101, 2064, 0, + 2054, 0, 2066, 0, 2051, 1145, 2057, 0, 103, 1967, + 0, 766, 766, 2067, 0, 1939, 0, 0, 0, 1861, + 0, 103, 0, 103, 103, 0, 103, 453, 2075, 103, + 103, 726, 475, 2079, 2017, 2085, 2078, 2081, 101, 0, + 2099, 2074, 2100, 0, 2019, 2021, 2019, 2077, 2087, 0, + 2098, 103, 103, 0, 2102, 1147, 0, 103, 2101, 2016, + 0, 103, 0, 2117, 1146, 2097, 103, 2105, 103, 2118, + 2122, 103, 0, 2103, 103, 0, 2120, 2128, 1979, 1786, + 1979, 2127, 2041, 0, 0, 2132, 2116, 2116, 2129, 2131, + 729, 1171, 1787, 0, 1170, 2130, 0, 1145, 0, 1993, + 766, 2145, 2143, 2144, 0, 0, 0, 451, 1424, 0, + 0, 0, 0, 0, 0, 0, 2116, 0, 0, 2152, + 2151, 0, 1155, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2153, 2065, 0, 0, 670, 1146, 0, + 2071, 0, 451, 683, 0, 0, 730, 1147, 732, 0, + 2116, 0, 1521, 0, 1535, 1536, 1537, 731, 0, 0, + 0, 1808, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1145, 1683, 1146, 0, 0, 0, 0, 1212, 1428, + 1214, 2019, 716, 1281, 1281, 0, 103, 905, 0, 716, + 103, 0, 1146, 103, 0, 0, 103, 103, 0, 1173, + 0, 103, 0, 1210, 1473, 1474, 1145, 0, 1365, 1431, + 0, 716, 733, 0, 0, 907, 1146, 0, 1534, 1156, + 0, 1147, 0, 1426, 0, 1145, 0, 0, 103, 905, + 0, 1171, 0, 1429, 1170, 0, 728, 0, 0, 0, + 0, 0, 0, 103, 0, 906, 0, 0, 0, 1145, + 1281, 1281, 1281, 920, 0, 0, 1147, 907, 1427, 0, + 0, 1156, 1155, 0, 0, 0, 0, 0, 1156, 0, + 766, 1540, 1541, 1542, 0, 1147, 1853, 0, 0, 0, + 0, 1171, 0, 0, 1170, 0, 0, 906, 0, 0, + 0, 0, 0, 727, 0, 920, 0, 1156, 0, 1147, + 1208, 0, 0, 0, 1207, 0, 0, 0, 0, 1213, + 0, 0, 1155, 0, 0, 0, 0, 0, 1146, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1430, 0, 0, 0, 1171, 0, 1173, + 1170, 0, 0, 0, 1538, 0, 0, 0, 0, 0, + 103, 1145, 103, 1156, 1457, 0, 1001, 0, 103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1155, 1020, + 103, 103, 103, 0, 0, 103, 0, 0, 103, 0, + 103, 0, 0, 103, 0, 0, 0, 0, 0, 1173, + 0, 103, 103, 0, 103, 103, 103, 0, 0, 716, + 766, 1147, 103, 0, 0, 1852, 0, 103, 103, 103, + 0, 103, 0, 0, 1064, 591, 33, 0, 475, 1069, + 0, 0, 451, 0, 0, 1156, 1209, 0, 1281, 1281, + 1172, 0, 0, 0, 0, 0, 1211, 103, 0, 0, + 0, 103, 0, 0, 33, 1173, 103, 0, 0, 1674, + 1675, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 430, 0, 0, 438, 0, 1521, 103, + 1535, 1536, 1537, 33, 103, 103, 0, 103, 0, 0, + 0, 0, 33, 438, 1152, 0, 0, 0, 1682, 0, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1521, 1281, 1535, 1536, + 1537, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, + 1729, 1730, 1731, 1732, 1733, 1734, 1735, 0, 1740, 0, + 0, 0, 0, 0, 1534, 0, 0, 0, 0, 0, + 0, 451, 0, 0, 0, 1156, 0, 0, 0, 1521, + 0, 1535, 1536, 1537, 1531, 1532, 1533, 1156, 1522, 1523, + 1524, 1525, 1526, 1528, 1529, 1527, 1530, 0, 0, 0, + 1172, 0, 1534, 0, 0, 0, 716, 0, 0, 0, + 0, 0, 0, 0, 0, 724, 0, 0, 451, 0, + 0, 725, 0, 908, 909, 910, 911, 912, 914, 915, + 913, 916, 0, 0, 0, 0, 0, 0, 1156, 0, + 1156, 0, 0, 0, 0, 1534, 0, 724, 0, 0, + 1172, 0, 0, 725, 1152, 0, 0, 0, 0, 1156, + 0, 0, 0, 0, 0, 908, 909, 910, 911, 912, + 914, 915, 913, 916, 0, 0, 0, 103, 0, 0, + 0, 0, 1156, 1521, 0, 1535, 1536, 1537, 1171, 0, + 1538, 1170, 0, 103, 0, 0, 0, 103, 0, 0, + 0, 0, 0, 0, 1152, 0, 1172, 103, 0, 0, + 103, 0, 0, 103, 0, 0, 0, 0, 0, 1155, + 0, 1156, 726, 0, 0, 0, 0, 0, 716, 0, + 1171, 0, 0, 1170, 0, 0, 716, 1171, 0, 0, + 1170, 103, 0, 0, 103, 0, 0, 103, 0, 1534, + 1332, 0, 0, 0, 726, 103, 0, 0, 0, 0, + 1152, 1155, 0, 0, 0, 0, 1171, 0, 1155, 1170, + 0, 1538, 0, 0, 1281, 0, 0, 0, 1156, 0, + 1358, 729, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1924, 1173, 1155, 0, 0, + 0, 103, 0, 0, 0, 103, 0, 103, 103, 0, + 0, 103, 0, 729, 0, 1378, 0, 0, 0, 0, + 0, 0, 1171, 0, 0, 1170, 0, 0, 0, 0, + 724, 0, 0, 0, 0, 0, 725, 730, 1173, 732, + 0, 0, 0, 0, 0, 1173, 0, 0, 731, 0, + 0, 0, 0, 1155, 1539, 0, 0, 451, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 730, + 0, 732, 0, 103, 1173, 1538, 0, 0, 0, 0, + 731, 0, 0, 0, 0, 430, 0, 0, 0, 0, + 0, 0, 0, 0, 1171, 0, 0, 1170, 0, 1281, + 1531, 1532, 1533, 733, 1522, 1523, 1524, 1525, 1526, 1528, + 1529, 1527, 1530, 0, 0, 0, 0, 0, 0, 0, + 1999, 0, 0, 0, 0, 1155, 0, 728, 0, 0, + 1173, 1360, 0, 0, 0, 733, 0, 726, 1531, 1532, + 1533, 0, 1522, 1523, 1524, 1525, 1526, 1528, 1529, 1527, + 1530, 0, 0, 0, 0, 103, 0, 103, 0, 728, + 0, 103, 0, 0, 0, 0, 0, 103, 0, 103, + 0, 0, 766, 1814, 766, 103, 103, 103, 103, 103, + 103, 1531, 1532, 1533, 727, 1522, 1523, 1524, 1525, 1526, + 1528, 1529, 1527, 1530, 103, 103, 729, 0, 1281, 0, + 103, 0, 1173, 0, 0, 0, 430, 0, 0, 430, + 430, 0, 0, 0, 1171, 0, 727, 1170, 0, 2053, + 0, 103, 0, 103, 103, 0, 1171, 1172, 103, 1170, + 942, 0, 0, 0, 944, 0, 0, 0, 948, 949, + 0, 1020, 724, 0, 0, 1155, 0, 0, 725, 0, + 0, 0, 730, 0, 732, 0, 0, 1155, 0, 0, + 0, 0, 0, 731, 0, 0, 0, 0, 0, 1172, + 0, 0, 0, 0, 0, 0, 1172, 1171, 103, 1171, + 1170, 1152, 1170, 0, 0, 1531, 1532, 1533, 0, 1522, + 1523, 1524, 1525, 1526, 1528, 1529, 1527, 1530, 1171, 905, + 0, 1170, 0, 1632, 0, 1172, 0, 0, 1155, 0, + 1155, 0, 0, 0, 736, 0, 0, 0, 733, 0, + 0, 1171, 1173, 1152, 1170, 0, 0, 907, 33, 1155, + 1152, 0, 0, 930, 1173, 103, 0, 103, 451, 0, + 33, 451, 728, 0, 103, 0, 0, 0, 0, 726, + 0, 0, 1155, 0, 0, 0, 0, 906, 0, 1152, + 1171, 1172, 0, 1170, 0, 920, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1814, 0, 0, + 0, 0, 0, 0, 0, 1173, 0, 1173, 0, 0, + 0, 1155, 103, 0, 0, 0, 0, 103, 0, 727, + 0, 0, 0, 0, 0, 0, 1173, 0, 729, 103, + 0, 0, 0, 0, 0, 1152, 0, 1171, 0, 0, + 1170, 0, 0, 103, 0, 103, 0, 0, 0, 1173, + 0, 0, 0, 1172, 0, 905, 0, 921, 922, 923, + 0, 0, 0, 0, 0, 0, 0, 0, 1155, 0, + 0, 0, 0, 0, 0, 924, 0, 0, 0, 0, + 0, 0, 0, 907, 730, 0, 732, 0, 1173, 930, + 931, 0, 0, 0, 905, 731, 921, 922, 923, 0, + 0, 0, 103, 0, 0, 0, 0, 1152, 0, 0, + 0, 0, 0, 906, 924, 0, 103, 103, 103, 103, + 0, 920, 907, 0, 0, 926, 0, 0, 930, 33, + 0, 1814, 103, 103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1173, 722, 0, 0, 0, + 733, 103, 906, 0, 0, 0, 0, 0, 103, 0, + 920, 0, 0, 0, 905, 103, 921, 922, 923, 1140, + 0, 0, 0, 1172, 728, 0, 0, 0, 0, 451, + 451, 0, 0, 451, 924, 1172, 905, 0, 921, 922, + 923, 0, 907, 0, 0, 0, 0, 1219, 930, 0, + 0, 0, 0, 0, 0, 0, 924, 103, 0, 0, + 0, 103, 0, 103, 907, 0, 0, 0, 0, 0, + 930, 0, 906, 0, 0, 103, 931, 1152, 0, 0, + 920, 727, 0, 0, 0, 103, 1172, 0, 1172, 1152, + 0, 0, 0, 103, 906, 0, 928, 929, 0, 0, + 103, 0, 920, 0, 103, 0, 0, 1172, 0, 0, + 0, 926, 0, 0, 0, 931, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 438, + 1172, 0, 0, 0, 0, 0, 929, 0, 0, 0, + 1152, 0, 1152, 0, 0, 0, 0, 0, 0, 0, + 926, 0, 0, 0, 0, 0, 925, 0, 0, 0, + 0, 1152, 1925, 0, 0, 0, 0, 0, 927, 1172, + 0, 0, 0, 0, 0, 908, 909, 910, 911, 912, + 914, 915, 913, 916, 1152, 931, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 925, 0, 0, 0, 0, + 0, 905, 0, 921, 922, 923, 929, 931, 0, 0, + 716, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 926, 924, 0, 1152, 0, 0, 1172, 0, 929, 907, + 0, 0, 928, 0, 0, 930, 0, 0, 0, 451, + 0, 0, 926, 0, 0, 0, 0, 33, 0, 0, + 0, 0, 0, 0, 0, 1441, 0, 0, 1444, 906, + 0, 0, 0, 0, 0, 925, 0, 920, 0, 0, + 0, 928, 0, 0, 0, 0, 0, 0, 0, 0, + 1152, 0, 0, 0, 0, 0, 0, 925, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1274, 1274, 0, 0, 1164, 0, 0, 0, 96, 0, - 0, 96, 0, 0, 0, 0, 1801, 1531, 0, 0, - 0, 0, 0, 0, 1166, 0, 709, 0, 1533, 1534, - 1535, 0, 0, 709, 1163, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1164, 0, 0, 0, - 1165, 0, 0, 1164, 0, 709, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1274, 1274, 1274, - 0, 0, 0, 0, 0, 0, 1163, 0, 0, 0, - 1166, 0, 1164, 1163, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1145, 0, - 1165, 717, 0, 0, 0, 0, 0, 718, 0, 0, - 0, 96, 1163, 0, 759, 759, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 0, 96, 96, 0, 96, - 0, 0, 96, 96, 0, 468, 0, 0, 1164, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1145, 0, - 0, 0, 0, 0, 96, 96, 1165, 0, 0, 0, - 96, 0, 0, 0, 96, 0, 0, 0, 1163, 96, - 0, 96, 0, 0, 96, 0, 0, 96, 0, 0, + 0, 0, 0, 0, 927, 0, 0, 917, 918, 919, + 0, 908, 909, 910, 911, 912, 914, 915, 913, 916, + 0, 1219, 0, 1314, 1162, 0, 1177, 1157, 1169, 0, + 1315, 0, 0, 0, 0, 0, 944, 1476, 1179, 1178, + 0, 928, 0, 927, 0, 0, 917, 918, 919, 2037, + 908, 909, 910, 911, 912, 914, 915, 913, 916, 0, + 0, 0, 0, 928, 0, 0, 0, 1557, 0, 0, + 0, 0, 931, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1174, 0, 0, 1167, 1166, 0, 0, + 0, 0, 0, 929, 0, 0, 0, 0, 0, 0, + 0, 944, 0, 0, 0, 1165, 0, 926, 0, 2068, + 0, 0, 0, 927, 0, 0, 917, 918, 919, 0, + 908, 909, 910, 911, 912, 914, 915, 913, 916, 0, + 0, 1164, 0, 0, 2126, 927, 0, 0, 917, 918, + 919, 1020, 908, 909, 910, 911, 912, 914, 915, 913, + 916, 905, 925, 921, 922, 923, 2059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 924, 0, 0, 0, 1159, 1160, 0, 762, 907, + 0, 0, 0, 0, 0, 930, 0, 0, 905, 0, + 921, 922, 923, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 924, 906, + 0, 0, 0, 0, 0, 0, 907, 920, 0, 0, + 0, 905, 930, 921, 922, 923, 0, 0, 928, 0, + 1168, 0, 0, 0, 0, 0, 0, 0, 0, 1140, + 0, 924, 1140, 0, 0, 0, 906, 0, 0, 907, + 0, 0, 0, 0, 920, 930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 994, 0, 0, 759, 1145, 0, 1667, 1668, 719, 0, - 1164, 0, 0, 1013, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1524, 1525, 1526, - 0, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1520, 1523, - 1163, 0, 0, 709, 0, 1274, 1274, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1057, 0, - 0, 0, 0, 1062, 0, 0, 444, 722, 1713, 1714, - 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, - 1725, 1726, 1727, 1728, 0, 1733, 0, 0, 0, 96, - 0, 0, 0, 96, 0, 0, 96, 0, 0, 96, - 96, 1148, 0, 0, 96, 0, 0, 1274, 1274, 1274, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 1274, 1274, 723, 1274, 725, 0, 0, 0, 0, - 1164, 96, 0, 0, 724, 0, 0, 0, 717, 0, - 0, 0, 1164, 1148, 718, 0, 96, 0, 0, 0, - 1148, 0, 0, 0, 0, 0, 0, 717, 0, 0, - 1163, 0, 0, 718, 0, 0, 0, 0, 0, 0, - 0, 0, 1163, 759, 0, 0, 0, 0, 0, 1148, - 0, 0, 0, 0, 0, 444, 0, 0, 0, 726, - 584, 33, 0, 1164, 0, 1164, 0, 0, 0, 0, - 0, 1166, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 721, 1164, 0, 0, 0, 0, 33, - 709, 0, 0, 1163, 0, 1163, 0, 0, 0, 0, - 0, 0, 444, 0, 0, 1148, 0, 1164, 423, 0, - 0, 431, 0, 1166, 1163, 719, 0, 0, 33, 0, - 1166, 0, 0, 96, 0, 96, 0, 33, 431, 0, - 0, 96, 0, 0, 719, 0, 0, 1163, 0, 0, - 720, 0, 0, 96, 96, 96, 1164, 1165, 96, 1166, - 0, 96, 0, 96, 0, 0, 96, 1514, 0, 1528, - 1529, 1530, 0, 0, 96, 96, 0, 96, 96, 96, - 0, 0, 0, 759, 722, 96, 1163, 1148, 0, 0, - 96, 96, 96, 0, 96, 0, 0, 0, 0, 1165, - 0, 468, 1917, 722, 0, 1145, 1165, 0, 0, 0, - 0, 0, 0, 1164, 0, 1166, 0, 0, 0, 0, - 96, 0, 709, 0, 96, 0, 0, 0, 0, 96, - 709, 0, 0, 1527, 0, 1165, 0, 0, 0, 0, - 723, 1274, 725, 1163, 1325, 0, 0, 1145, 0, 0, - 0, 724, 96, 0, 1145, 0, 0, 96, 96, 723, - 96, 725, 898, 0, 914, 915, 916, 0, 0, 0, - 724, 0, 0, 0, 1351, 0, 0, 0, 0, 0, - 0, 0, 917, 1145, 0, 0, 0, 1166, 0, 0, - 900, 1165, 0, 0, 0, 0, 923, 0, 0, 0, - 0, 0, 1353, 0, 0, 0, 726, 1148, 0, 1371, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1148, - 899, 729, 0, 0, 0, 726, 0, 1992, 913, 0, - 721, 0, 0, 0, 0, 0, 0, 0, 0, 1145, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 721, - 0, 444, 0, 0, 0, 0, 0, 1514, 0, 1528, - 1529, 1530, 0, 1165, 0, 0, 1274, 0, 0, 0, - 1148, 0, 1148, 0, 0, 0, 898, 1676, 914, 915, - 916, 0, 0, 0, 0, 0, 0, 720, 0, 0, - 0, 1148, 1403, 1404, 1405, 0, 917, 0, 0, 0, - 0, 0, 0, 0, 900, 0, 720, 1166, 0, 0, - 923, 1145, 0, 0, 1148, 0, 0, 0, 0, 1166, - 0, 0, 0, 1527, 0, 0, 2046, 0, 0, 0, - 96, 0, 0, 924, 899, 0, 0, 0, 0, 0, - 0, 0, 913, 0, 0, 0, 96, 0, 0, 0, - 96, 0, 0, 1148, 922, 0, 1402, 0, 0, 0, - 96, 0, 0, 96, 0, 1274, 96, 0, 919, 0, - 1166, 1514, 1166, 1528, 1529, 1530, 0, 0, 0, 0, - 0, 0, 0, 1165, 0, 0, 0, 0, 0, 0, - 0, 1166, 0, 0, 96, 1165, 0, 96, 0, 0, - 96, 0, 0, 423, 0, 0, 0, 0, 96, 0, - 1148, 0, 0, 918, 1166, 0, 0, 0, 0, 0, + 0, 0, 0, 1163, 0, 0, 0, 0, 0, 906, + 0, 0, 0, 0, 0, 0, 0, 920, 0, 0, + 0, 0, 0, 944, 0, 0, 0, 0, 0, 0, + 927, 0, 0, 917, 918, 919, 0, 908, 909, 910, + 911, 912, 914, 915, 913, 916, 0, 0, 0, 1161, + 0, 2023, 931, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1158, 0, + 1176, 1175, 0, 929, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 926, 0, 931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1145, 0, 0, 0, 1013, 0, 1527, 0, 0, - 0, 0, 0, 1145, 0, 0, 1165, 924, 1165, 1531, - 0, 0, 0, 1166, 96, 0, 0, 0, 96, 0, - 96, 96, 0, 0, 96, 0, 0, 1165, 922, 1524, - 1525, 1526, 0, 1515, 1516, 1517, 1518, 1519, 1521, 1522, - 1520, 1523, 919, 0, 0, 0, 0, 0, 0, 921, - 1165, 0, 0, 0, 1145, 0, 1145, 1625, 0, 0, + 0, 1180, 0, 0, 0, 0, 0, 0, 0, 0, + 929, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 931, 33, 926, 0, 0, 0, 0, 0, + 0, 0, 925, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 929, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 926, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 925, + 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1166, 0, 0, 0, 0, 1145, 0, 0, 0, 0, - 0, 0, 0, 0, 423, 0, 96, 423, 423, 1165, - 0, 0, 444, 0, 0, 444, 0, 0, 1145, 0, - 0, 0, 1532, 0, 0, 0, 0, 0, 935, 0, - 0, 0, 937, 0, 0, 0, 941, 942, 0, 0, - 0, 920, 0, 1531, 910, 911, 912, 0, 901, 902, - 903, 904, 905, 907, 908, 906, 909, 1145, 0, 0, - 1307, 0, 0, 0, 717, 0, 1165, 1308, 0, 0, - 718, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 921, 0, 0, 0, 0, 96, 0, - 96, 0, 0, 0, 96, 0, 0, 0, 0, 0, - 96, 0, 96, 0, 0, 759, 1807, 759, 96, 96, - 96, 96, 96, 96, 1145, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 33, 96, 96, 0, - 0, 0, 0, 96, 0, 0, 0, 0, 33, 1524, - 1525, 1526, 0, 1515, 1516, 1517, 1518, 1519, 1521, 1522, - 1520, 1523, 0, 0, 96, 920, 96, 96, 910, 911, - 912, 96, 901, 902, 903, 904, 905, 907, 908, 906, - 909, 719, 1399, 1400, 1401, 0, 1390, 1391, 1392, 1393, - 1394, 1395, 1396, 1397, 1398, 0, 898, 0, 914, 915, - 916, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 917, 0, 0, 0, - 0, 96, 0, 0, 900, 898, 0, 914, 915, 916, - 923, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 722, 0, 0, 444, 444, 917, 0, 444, 0, 0, - 0, 0, 0, 900, 899, 0, 0, 0, 0, 923, - 0, 0, 913, 1524, 1525, 1526, 0, 1515, 1516, 1517, - 1518, 1519, 1521, 1522, 1520, 1523, 0, 0, 96, 0, - 96, 0, 0, 899, 0, 0, 0, 96, 0, 0, - 898, 913, 914, 915, 916, 0, 723, 0, 725, 0, - 0, 0, 0, 0, 0, 0, 0, 724, 0, 0, - 917, 0, 0, 0, 0, 0, 0, 33, 900, 0, - 1807, 0, 0, 0, 923, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, - 96, 898, 0, 914, 915, 916, 0, 0, 899, 0, - 0, 0, 96, 0, 0, 0, 913, 1133, 715, 0, - 0, 917, 726, 0, 0, 0, 96, 924, 96, 900, - 0, 0, 0, 0, 0, 923, 1918, 0, 0, 0, - 0, 0, 0, 0, 0, 1212, 721, 0, 922, 0, - 0, 0, 0, 0, 0, 0, 924, 0, 0, 899, - 0, 0, 919, 0, 0, 0, 0, 913, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 922, 0, 0, - 0, 0, 0, 0, 709, 96, 0, 0, 0, 0, - 0, 919, 0, 0, 0, 0, 0, 0, 0, 96, - 96, 96, 96, 720, 0, 0, 0, 918, 0, 0, - 0, 0, 0, 444, 1807, 96, 96, 0, 0, 0, - 0, 924, 0, 0, 0, 0, 0, 431, 0, 0, - 0, 0, 0, 0, 96, 0, 918, 0, 0, 0, - 0, 96, 922, 0, 0, 0, 0, 0, 96, 0, - 0, 0, 0, 0, 0, 0, 919, 0, 0, 0, + 1140, 1140, 0, 0, 1140, 0, 0, 0, 0, 0, + 0, 0, 925, 0, 0, 0, 0, 0, 928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 924, 0, 0, 0, 1514, 0, 1528, 1529, - 1530, 0, 0, 921, 0, 0, 0, 0, 0, 0, - 96, 0, 0, 922, 96, 0, 96, 0, 0, 0, - 0, 918, 0, 0, 0, 0, 0, 919, 96, 0, - 0, 0, 921, 0, 0, 0, 0, 0, 96, 0, - 0, 0, 0, 2030, 0, 0, 96, 0, 0, 0, - 0, 0, 0, 96, 0, 0, 0, 96, 0, 0, - 0, 0, 1527, 0, 0, 33, 0, 0, 0, 0, - 0, 0, 918, 1434, 0, 920, 1437, 0, 910, 911, - 912, 0, 901, 902, 903, 904, 905, 907, 908, 906, - 909, 0, 0, 0, 0, 0, 0, 921, 0, 1550, - 0, 0, 0, 2061, 920, 0, 0, 910, 911, 912, - 0, 901, 902, 903, 904, 905, 907, 908, 906, 909, - 0, 0, 0, 0, 0, 2119, 0, 0, 0, 898, - 0, 914, 915, 916, 0, 1013, 0, 0, 0, 1212, - 0, 0, 0, 0, 0, 0, 0, 0, 921, 917, - 0, 0, 0, 0, 937, 1469, 0, 900, 0, 0, - 0, 0, 0, 923, 0, 0, 0, 0, 0, 920, - 0, 0, 910, 911, 912, 0, 901, 902, 903, 904, - 905, 907, 908, 906, 909, 0, 0, 899, 1531, 1514, - 2052, 1528, 1529, 1530, 0, 913, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1675, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 937, - 920, 0, 0, 910, 911, 912, 0, 901, 902, 903, - 904, 905, 907, 908, 906, 909, 0, 0, 0, 0, - 0, 2016, 0, 898, 0, 914, 915, 916, 0, 0, - 0, 0, 0, 0, 0, 1527, 0, 0, 0, 0, - 0, 0, 898, 917, 914, 915, 916, 0, 0, 0, - 0, 900, 0, 0, 0, 0, 0, 923, 0, 0, - 0, 0, 917, 0, 0, 0, 0, 0, 0, 0, - 900, 0, 0, 0, 0, 898, 923, 914, 915, 916, - 924, 899, 0, 0, 0, 0, 0, 0, 0, 913, - 0, 0, 0, 0, 0, 917, 0, 0, 0, 0, - 899, 922, 0, 900, 0, 0, 0, 0, 913, 923, - 0, 0, 0, 0, 0, 919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 899, 0, 0, 0, 1133, 0, 0, - 1133, 913, 0, 898, 0, 914, 915, 916, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 918, 1531, 0, 917, 0, 0, 0, 0, 0, 0, - 0, 900, 0, 0, 0, 0, 0, 923, 1524, 1525, - 1526, 0, 1515, 1516, 1517, 1518, 1519, 1521, 1522, 1520, - 1523, 937, 0, 0, 924, 0, 0, 0, 0, 0, - 0, 899, 0, 0, 0, 0, 0, 0, 0, 913, - 0, 0, 0, 924, 0, 922, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 919, - 0, 0, 0, 0, 922, 0, 921, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 924, 0, 919, 0, + 0, 0, 0, 0, 0, 928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 922, 0, 0, - 0, 0, 0, 0, 918, 0, 0, 0, 0, 0, - 0, 919, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 0, 918, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 920, 0, - 0, 910, 911, 912, 924, 901, 902, 903, 904, 905, - 907, 908, 906, 909, 0, 0, 918, 0, 0, 1996, - 0, 0, 0, 0, 0, 922, 0, 0, 0, 0, - 0, 0, 0, 33, 0, 0, 0, 0, 0, 919, - 921, 0, 0, 0, 0, 0, 0, 0, 1133, 1133, - 0, 0, 1133, 0, 0, 0, 0, 0, 0, 921, - 0, 1524, 1525, 1526, 0, 1515, 1516, 1517, 1518, 1519, - 1521, 1522, 1520, 1523, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 918, 0, 0, 0, 0, 0, - 0, 0, 921, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 920, 0, 0, 910, 911, 912, 0, 901, - 902, 903, 904, 905, 907, 908, 906, 909, 0, 0, - 0, 920, 0, 1991, 910, 911, 912, 0, 901, 902, - 903, 904, 905, 907, 908, 906, 909, 0, 0, 0, - 0, 0, 1987, 0, 0, 0, 0, 0, 0, 0, - 921, 0, 0, 0, 920, 0, 0, 910, 911, 912, - 1910, 901, 902, 903, 904, 905, 907, 908, 906, 909, - 0, 0, 0, 0, 0, 1902, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 928, 0, + 927, 0, 0, 917, 918, 919, 0, 908, 909, 910, + 911, 912, 914, 915, 913, 916, 0, 0, 0, 0, + 0, 2003, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1917, 0, 0, 0, 0, 927, 0, 0, + 917, 918, 919, 0, 908, 909, 910, 911, 912, 914, + 915, 913, 916, 0, 0, 0, 0, 0, 1998, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 927, 0, 0, 917, 918, 919, 0, 908, 909, 910, + 911, 912, 914, 915, 913, 916, 0, 0, 0, 0, + 0, 1994, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 944, 0, 0, 0, 0, 0, + 1140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1813, 703, 1807, 0, 0, 708, 0, + 0, 0, 1410, 1411, 1412, 0, 105, 106, 107, 108, + 109, 110, 111, 112, 770, 113, 114, 115, 771, 772, + 773, 774, 775, 776, 777, 116, 117, 778, 118, 119, + 478, 120, 121, 122, 944, 1162, 479, 1177, 1157, 1169, + 779, 123, 124, 125, 126, 127, 780, 781, 128, 1179, + 1178, 129, 782, 130, 131, 132, 133, 0, 783, 480, + 784, 134, 135, 136, 137, 138, 1409, 481, 139, 140, + 141, 785, 142, 143, 144, 145, 146, 147, 786, 482, + 148, 149, 150, 787, 788, 789, 790, 791, 792, 151, + 152, 153, 154, 155, 1174, 156, 157, 1167, 1166, 158, + 793, 159, 794, 160, 161, 162, 163, 164, 795, 165, + 166, 167, 796, 797, 168, 169, 642, 171, 172, 798, + 173, 174, 175, 799, 176, 177, 178, 800, 179, 180, + 181, 182, 0, 183, 184, 185, 0, 801, 186, 802, + 187, 188, 1164, 189, 803, 190, 804, 191, 483, 805, + 484, 192, 193, 194, 806, 195, 196, 0, 807, 0, + 197, 808, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 809, 207, 208, 209, 210, 211, 212, 810, 213, + 485, 0, 214, 215, 216, 217, 1159, 1160, 811, 762, + 812, 218, 486, 219, 487, 220, 221, 222, 223, 224, + 813, 814, 225, 0, 488, 226, 489, 815, 227, 228, + 414, 816, 817, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 415, 0, 490, + 0, 243, 244, 0, 818, 245, 246, 247, 819, 0, + 248, 1168, 249, 250, 251, 820, 252, 821, 822, 253, + 254, 823, 824, 255, 0, 491, 256, 492, 0, 257, + 258, 259, 260, 261, 262, 263, 825, 264, 265, 0, + 266, 0, 269, 267, 268, 826, 270, 271, 272, 273, + 274, 275, 276, 277, 1163, 278, 279, 280, 281, 827, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 828, 293, 294, 493, 295, 296, 0, 297, 298, + 299, 300, 301, 302, 303, 829, 304, 305, 306, 307, + 416, 830, 308, 309, 1810, 310, 311, 494, 312, 313, + 1161, 314, 831, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 0, 832, 325, 326, 833, 327, 1815, + 834, 1176, 1175, 835, 836, 417, 329, 0, 330, 0, + 837, 331, 332, 333, 334, 335, 336, 337, 838, 839, + 338, 339, 340, 341, 342, 840, 841, 343, 344, 345, + 346, 0, 1180, 842, 347, 495, 348, 843, 844, 845, + 846, 349, 350, 351, 352, 353, 354, 355, 356, 0, + 0, 0, 1406, 1407, 1408, 765, 1811, 1812, 1399, 1400, + 1401, 1402, 1403, 1404, 1405, 0, 0, 0, 105, 106, + 107, 108, 109, 110, 111, 112, 770, 113, 114, 115, + 771, 772, 773, 774, 775, 776, 777, 116, 117, 778, + 118, 119, 478, 120, 121, 122, 357, 358, 479, 359, + 0, 360, 779, 123, 124, 125, 126, 127, 780, 781, + 128, 361, 362, 129, 782, 130, 131, 132, 133, 363, + 783, 480, 784, 134, 135, 136, 137, 138, 0, 481, + 139, 140, 141, 785, 142, 143, 144, 145, 146, 147, + 786, 482, 148, 149, 150, 787, 788, 789, 790, 791, + 792, 151, 152, 153, 154, 155, 364, 156, 157, 365, + 366, 158, 793, 159, 794, 160, 161, 162, 163, 164, + 795, 165, 166, 167, 796, 797, 168, 169, 170, 171, + 172, 798, 173, 174, 175, 799, 176, 177, 178, 800, + 179, 180, 181, 182, 367, 183, 184, 185, 368, 801, + 186, 802, 187, 188, 369, 189, 803, 190, 804, 191, + 483, 805, 484, 192, 193, 194, 806, 195, 196, 370, + 807, 371, 197, 808, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 809, 207, 208, 209, 210, 211, 212, + 810, 213, 485, 372, 214, 215, 216, 217, 373, 374, + 811, 375, 812, 218, 486, 219, 487, 220, 221, 222, + 223, 224, 813, 814, 225, 376, 488, 226, 489, 815, + 227, 228, 414, 816, 817, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 415, + 377, 490, 378, 243, 244, 379, 818, 245, 246, 247, + 819, 380, 248, 381, 249, 250, 251, 820, 252, 821, + 822, 253, 254, 823, 824, 255, 382, 491, 256, 492, + 383, 257, 258, 259, 260, 261, 262, 263, 825, 264, + 265, 384, 266, 385, 269, 267, 268, 826, 270, 271, + 272, 273, 274, 275, 276, 277, 386, 278, 279, 280, + 281, 827, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 828, 293, 294, 493, 295, 296, 387, + 297, 298, 299, 300, 301, 302, 303, 829, 304, 305, + 306, 307, 416, 830, 308, 309, 388, 310, 311, 494, + 312, 313, 389, 314, 831, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 390, 832, 325, 326, 833, + 327, 328, 834, 418, 391, 835, 836, 417, 329, 392, + 330, 393, 837, 331, 332, 333, 334, 335, 336, 337, + 838, 839, 338, 339, 340, 341, 342, 840, 841, 343, + 344, 345, 346, 394, 395, 842, 347, 495, 348, 843, + 844, 845, 846, 349, 350, 351, 352, 353, 354, 355, + 356, 765, 0, 0, 0, 0, 0, 0, 0, 0, + 1004, 0, 0, 0, 105, 106, 107, 108, 109, 110, + 111, 112, 770, 113, 114, 115, 771, 772, 773, 774, + 775, 776, 777, 116, 117, 778, 118, 119, 478, 120, + 121, 122, 357, 358, 479, 359, 0, 360, 779, 123, + 124, 125, 126, 127, 780, 781, 128, 361, 362, 129, + 782, 130, 131, 132, 133, 363, 783, 480, 784, 134, + 135, 136, 137, 138, 0, 481, 139, 140, 141, 785, + 142, 143, 144, 145, 146, 147, 786, 482, 148, 149, + 150, 787, 788, 789, 790, 791, 792, 151, 152, 153, + 154, 155, 364, 156, 157, 365, 366, 158, 793, 159, + 794, 160, 161, 162, 163, 164, 795, 165, 166, 167, + 796, 797, 168, 169, 170, 171, 172, 798, 173, 174, + 175, 799, 176, 177, 178, 800, 179, 180, 181, 182, + 367, 183, 184, 185, 368, 801, 186, 802, 187, 188, + 369, 189, 803, 190, 804, 191, 483, 805, 484, 192, + 193, 194, 806, 195, 196, 370, 807, 371, 197, 808, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 809, + 207, 208, 209, 210, 211, 212, 810, 213, 485, 372, + 214, 215, 216, 217, 373, 374, 811, 375, 812, 218, + 486, 219, 487, 220, 221, 222, 223, 224, 813, 814, + 225, 376, 488, 226, 489, 815, 227, 228, 414, 816, + 817, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 415, 377, 490, 378, 243, + 244, 379, 818, 245, 246, 247, 819, 380, 248, 381, + 249, 250, 251, 820, 252, 821, 822, 253, 254, 823, + 824, 255, 382, 491, 256, 492, 383, 257, 258, 259, + 260, 261, 262, 263, 825, 264, 265, 384, 266, 385, + 269, 267, 268, 826, 270, 271, 272, 273, 274, 275, + 276, 277, 386, 278, 279, 280, 281, 827, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 828, + 293, 294, 493, 295, 296, 387, 297, 298, 299, 300, + 301, 302, 303, 829, 304, 305, 306, 307, 416, 830, + 308, 309, 388, 310, 311, 494, 312, 313, 389, 314, + 831, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 390, 832, 325, 326, 833, 327, 328, 834, 418, + 391, 835, 836, 417, 329, 392, 330, 393, 837, 331, + 332, 333, 334, 335, 336, 337, 838, 839, 338, 339, + 340, 341, 342, 840, 841, 343, 344, 345, 346, 394, + 395, 842, 347, 495, 348, 843, 844, 845, 846, 349, + 350, 351, 352, 353, 354, 355, 356, 613, 600, 601, + 602, 603, 599, 587, 0, 0, 0, 0, 0, 0, + 105, 106, 107, 108, 109, 110, 111, 112, 0, 113, + 114, 115, 0, 0, 0, 0, 593, 0, 0, 116, + 117, 0, 118, 119, 478, 120, 121, 122, 357, 643, + 479, 644, 0, 645, 0, 123, 124, 125, 126, 127, + 610, 631, 128, 646, 647, 129, 0, 130, 131, 132, + 133, 639, 0, 621, 0, 134, 135, 136, 137, 138, + 0, 481, 139, 140, 141, 0, 142, 143, 144, 145, + 146, 147, 0, 482, 148, 149, 150, 0, 622, 627, + 623, 624, 628, 151, 152, 153, 154, 155, 648, 156, + 157, 649, 650, 158, 0, 159, 0, 160, 161, 162, + 163, 164, 0, 165, 166, 167, 0, 0, 168, 169, + 642, 171, 172, 0, 173, 174, 175, 0, 176, 177, + 178, 0, 179, 180, 181, 182, 592, 183, 184, 185, + 632, 608, 186, 0, 187, 188, 651, 189, 0, 190, + 0, 191, 483, 0, 484, 192, 193, 194, 0, 195, + 196, 640, 0, 596, 197, 0, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 0, 207, 208, 209, 210, + 211, 212, 0, 213, 485, 372, 214, 215, 216, 217, + 652, 653, 0, 620, 0, 218, 486, 219, 487, 220, + 221, 222, 223, 224, 0, 0, 225, 641, 488, 226, + 489, 0, 227, 228, 414, 625, 626, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 415, 377, 490, 378, 243, 244, 379, 581, 245, + 246, 247, 609, 638, 248, 654, 249, 250, 251, 0, + 252, 0, 0, 253, 254, 0, 0, 255, 382, 491, + 256, 492, 633, 257, 258, 259, 260, 261, 262, 263, + 0, 264, 265, 634, 266, 385, 269, 267, 268, 0, + 270, 271, 272, 273, 274, 275, 276, 277, 655, 278, + 279, 280, 281, 0, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 0, 293, 294, 493, 295, + 296, 597, 297, 298, 299, 300, 301, 302, 303, 53, + 304, 305, 306, 307, 416, 629, 308, 309, 388, 310, + 311, 494, 312, 313, 656, 314, 0, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 635, 0, 325, + 326, 55, 327, 328, 0, 657, 658, 0, 0, 417, + 329, 636, 330, 637, 607, 331, 332, 333, 334, 335, + 336, 337, 0, 584, 338, 339, 340, 341, 342, 630, + 0, 343, 344, 345, 346, 473, 659, 0, 347, 495, + 348, 0, 0, 0, 51, 349, 350, 351, 352, 353, + 354, 355, 356, 582, 0, 52, 0, 0, 0, 0, + 578, 579, 613, 600, 601, 602, 603, 599, 587, 0, + 580, 0, 0, 588, 1969, 105, 106, 107, 108, 109, + 110, 111, 112, 1243, 113, 114, 115, 0, 0, 0, + 0, 593, 0, 0, 116, 117, 0, 118, 119, 478, + 120, 121, 122, 357, 643, 479, 644, 0, 645, 0, + 123, 124, 125, 126, 127, 610, 631, 128, 646, 647, + 129, 0, 130, 131, 132, 133, 639, 0, 621, 0, + 134, 135, 136, 137, 138, 0, 481, 139, 140, 141, + 0, 142, 143, 144, 145, 146, 147, 0, 482, 148, + 149, 150, 0, 622, 627, 623, 624, 628, 151, 152, + 153, 154, 155, 648, 156, 157, 649, 650, 158, 0, + 159, 0, 160, 161, 162, 163, 164, 0, 165, 166, + 167, 1244, 0, 168, 169, 642, 171, 172, 0, 173, + 174, 175, 0, 176, 177, 178, 0, 179, 180, 181, + 182, 592, 183, 184, 185, 632, 608, 186, 0, 187, + 188, 651, 189, 0, 190, 0, 191, 483, 0, 484, + 192, 193, 194, 0, 195, 196, 640, 0, 596, 197, + 0, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 0, 207, 208, 209, 210, 211, 212, 0, 213, 485, + 372, 214, 215, 216, 217, 652, 653, 0, 620, 0, + 218, 486, 219, 487, 220, 221, 222, 223, 224, 0, + 0, 225, 641, 488, 226, 489, 0, 227, 228, 414, + 625, 626, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 415, 377, 490, 378, + 243, 244, 379, 581, 245, 246, 247, 609, 638, 248, + 654, 249, 250, 251, 0, 252, 0, 0, 253, 254, + 0, 0, 255, 382, 491, 256, 492, 633, 257, 258, + 259, 260, 261, 262, 263, 0, 264, 265, 634, 266, + 385, 269, 267, 268, 0, 270, 271, 272, 273, 274, + 275, 276, 277, 655, 278, 279, 280, 281, 0, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 0, 293, 294, 493, 295, 296, 597, 297, 298, 299, + 300, 301, 302, 303, 0, 304, 305, 306, 307, 416, + 629, 308, 309, 388, 310, 311, 494, 312, 313, 656, + 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 635, 0, 325, 326, 0, 327, 328, 0, + 657, 658, 0, 0, 417, 329, 636, 330, 637, 607, + 331, 332, 333, 334, 335, 336, 337, 0, 584, 338, + 339, 340, 341, 342, 630, 0, 343, 344, 345, 346, + 394, 659, 1242, 347, 495, 348, 0, 0, 0, 0, + 349, 350, 351, 352, 353, 354, 355, 356, 582, 0, + 0, 0, 0, 0, 0, 578, 579, 1245, 613, 600, + 601, 602, 603, 599, 587, 580, 0, 0, 588, 1240, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 593, 0, 0, + 116, 117, 0, 118, 119, 478, 120, 121, 122, 357, + 643, 479, 644, 0, 645, 0, 123, 124, 125, 126, + 127, 610, 631, 128, 646, 647, 129, 0, 130, 131, + 132, 133, 639, 0, 621, 0, 134, 135, 136, 137, + 138, 0, 481, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 482, 148, 149, 150, 0, 622, + 627, 623, 624, 628, 151, 152, 153, 154, 155, 648, + 156, 157, 649, 650, 158, 680, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 642, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 592, 183, 184, + 185, 632, 608, 186, 0, 187, 188, 651, 189, 0, + 190, 0, 191, 483, 0, 484, 192, 193, 194, 0, + 195, 196, 640, 0, 596, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 485, 372, 214, 215, 216, + 217, 652, 653, 0, 620, 0, 218, 486, 219, 487, + 220, 221, 222, 223, 224, 0, 0, 225, 641, 488, + 226, 489, 0, 227, 228, 414, 625, 626, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 415, 377, 490, 378, 243, 244, 379, 581, + 245, 246, 247, 609, 638, 248, 654, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 491, 256, 492, 633, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 634, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 655, + 278, 279, 280, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 493, + 295, 296, 597, 297, 298, 299, 300, 301, 302, 303, + 53, 304, 305, 306, 307, 416, 629, 308, 309, 388, + 310, 311, 494, 312, 313, 656, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 635, 0, + 325, 326, 55, 327, 328, 0, 657, 658, 0, 0, + 417, 329, 636, 330, 637, 607, 331, 332, 333, 334, + 335, 336, 337, 0, 584, 338, 339, 340, 341, 342, + 630, 0, 343, 344, 345, 346, 473, 659, 0, 347, + 495, 348, 0, 0, 0, 51, 349, 350, 351, 352, + 353, 354, 355, 356, 582, 0, 52, 0, 0, 0, + 0, 578, 579, 613, 600, 601, 602, 603, 599, 587, + 0, 580, 0, 0, 588, 0, 105, 106, 107, 108, + 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, + 0, 0, 593, 0, 0, 116, 117, 0, 118, 119, + 478, 120, 121, 122, 357, 643, 479, 644, 0, 645, + 0, 123, 124, 125, 126, 127, 610, 631, 128, 646, + 647, 129, 0, 130, 131, 132, 133, 639, 0, 621, + 0, 134, 135, 136, 137, 138, 0, 481, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 482, + 148, 149, 150, 0, 622, 627, 623, 624, 628, 151, + 152, 153, 154, 155, 648, 156, 157, 649, 650, 158, + 0, 159, 0, 160, 161, 162, 163, 164, 0, 165, + 166, 167, 0, 0, 168, 169, 642, 171, 172, 0, + 173, 174, 175, 0, 176, 177, 178, 0, 179, 180, + 181, 182, 592, 183, 184, 185, 632, 608, 186, 0, + 187, 188, 651, 189, 0, 190, 0, 191, 483, 0, + 484, 192, 193, 194, 0, 195, 196, 640, 0, 596, + 197, 0, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 0, 207, 208, 209, 210, 211, 212, 0, 213, + 485, 372, 214, 215, 216, 217, 652, 653, 0, 620, + 0, 218, 486, 219, 487, 220, 221, 222, 223, 224, + 0, 0, 225, 641, 488, 226, 489, 0, 227, 228, + 414, 625, 626, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 415, 377, 490, + 378, 243, 244, 379, 581, 245, 246, 247, 609, 638, + 248, 654, 249, 250, 251, 0, 252, 0, 0, 253, + 254, 0, 0, 255, 382, 491, 256, 492, 633, 257, + 258, 259, 260, 261, 262, 263, 0, 264, 265, 634, + 266, 385, 269, 267, 268, 0, 270, 271, 272, 273, + 274, 275, 276, 277, 655, 278, 279, 280, 281, 0, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 0, 293, 294, 493, 295, 296, 597, 297, 298, + 299, 300, 301, 302, 303, 53, 304, 305, 306, 307, + 416, 629, 308, 309, 388, 310, 311, 494, 312, 313, + 656, 314, 0, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 635, 0, 325, 326, 55, 327, 328, + 0, 657, 658, 0, 0, 417, 329, 636, 330, 637, + 607, 331, 332, 333, 334, 335, 336, 337, 0, 584, + 338, 339, 340, 341, 342, 630, 0, 343, 344, 345, + 346, 473, 659, 0, 347, 495, 348, 0, 0, 0, + 51, 349, 350, 351, 352, 353, 354, 355, 356, 582, + 0, 52, 0, 0, 0, 0, 578, 579, 613, 600, + 601, 602, 603, 599, 587, 0, 580, 0, 0, 588, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 593, 0, 0, + 116, 117, 0, 118, 119, 478, 120, 121, 122, 357, + 643, 479, 644, 0, 645, 1291, 123, 124, 125, 126, + 127, 610, 631, 128, 646, 647, 129, 0, 130, 131, + 132, 133, 639, 0, 621, 0, 134, 135, 136, 137, + 138, 0, 481, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 482, 148, 149, 150, 0, 622, + 627, 623, 624, 628, 151, 152, 153, 154, 155, 648, + 156, 157, 649, 650, 158, 0, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 642, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 592, 183, 184, + 185, 632, 608, 186, 0, 187, 188, 651, 189, 0, + 190, 0, 191, 483, 1296, 484, 192, 193, 194, 0, + 195, 196, 640, 0, 596, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 485, 372, 214, 215, 216, + 217, 652, 653, 0, 620, 0, 218, 486, 219, 487, + 220, 221, 222, 223, 224, 0, 1292, 225, 641, 488, + 226, 489, 0, 227, 228, 414, 625, 626, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 415, 377, 490, 378, 243, 244, 379, 581, + 245, 246, 247, 609, 638, 248, 654, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 491, 256, 492, 633, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 634, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 655, + 278, 279, 280, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 493, + 295, 296, 597, 297, 298, 299, 300, 301, 302, 303, + 0, 304, 305, 306, 307, 416, 629, 308, 309, 388, + 310, 311, 494, 312, 313, 656, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 635, 0, + 325, 326, 0, 327, 328, 0, 657, 658, 0, 1293, + 417, 329, 636, 330, 637, 607, 331, 332, 333, 334, + 335, 336, 337, 0, 584, 338, 339, 340, 341, 342, + 630, 0, 343, 344, 345, 346, 394, 659, 0, 347, + 495, 348, 0, 0, 0, 0, 349, 350, 351, 352, + 353, 354, 355, 356, 582, 0, 0, 0, 0, 0, + 0, 578, 579, 613, 600, 601, 602, 603, 599, 587, + 0, 580, 0, 0, 588, 0, 105, 106, 107, 108, + 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, + 0, 0, 593, 0, 0, 116, 117, 0, 118, 119, + 478, 120, 121, 122, 357, 643, 479, 644, 0, 645, + 0, 123, 124, 125, 126, 127, 610, 631, 128, 646, + 647, 129, 0, 130, 131, 132, 133, 639, 0, 621, + 0, 134, 135, 136, 137, 138, 0, 481, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 482, + 148, 149, 150, 0, 622, 627, 623, 624, 628, 151, + 152, 153, 154, 155, 648, 156, 157, 649, 650, 158, + 0, 159, 0, 160, 161, 162, 163, 164, 0, 165, + 166, 167, 0, 0, 168, 169, 642, 171, 172, 0, + 173, 174, 175, 0, 176, 177, 178, 0, 179, 180, + 181, 182, 592, 183, 184, 185, 632, 608, 186, 0, + 187, 188, 651, 189, 0, 190, 0, 191, 483, 0, + 484, 192, 193, 194, 0, 195, 196, 640, 0, 596, + 197, 0, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 0, 207, 208, 209, 210, 211, 212, 0, 213, + 485, 372, 214, 215, 216, 217, 652, 653, 0, 620, + 0, 218, 486, 219, 487, 220, 221, 222, 223, 224, + 0, 0, 225, 641, 488, 226, 489, 0, 227, 228, + 414, 625, 626, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 415, 377, 490, + 378, 243, 244, 379, 581, 245, 246, 247, 609, 638, + 248, 654, 249, 250, 251, 0, 252, 0, 0, 253, + 254, 0, 0, 255, 382, 491, 256, 492, 633, 257, + 258, 259, 260, 261, 262, 263, 0, 264, 265, 634, + 266, 385, 269, 267, 268, 0, 270, 271, 272, 273, + 274, 275, 276, 277, 655, 278, 279, 280, 281, 0, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 0, 293, 294, 493, 295, 296, 597, 297, 298, + 299, 300, 301, 302, 303, 0, 304, 305, 306, 307, + 416, 629, 308, 309, 388, 310, 311, 494, 312, 313, + 656, 314, 0, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 635, 0, 325, 326, 0, 327, 328, + 0, 657, 658, 0, 0, 417, 329, 636, 330, 637, + 607, 331, 332, 333, 334, 335, 336, 337, 0, 584, + 338, 339, 340, 341, 342, 630, 0, 343, 344, 345, + 346, 394, 659, 0, 347, 495, 348, 0, 0, 0, + 0, 349, 350, 351, 352, 353, 354, 355, 356, 582, + 0, 0, 0, 0, 0, 0, 578, 579, 613, 600, + 601, 602, 603, 599, 587, 0, 580, 0, 0, 588, + 1743, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 593, 0, 0, + 116, 117, 0, 118, 119, 478, 120, 121, 122, 357, + 643, 479, 644, 0, 645, 0, 123, 124, 125, 126, + 127, 610, 631, 128, 646, 647, 129, 0, 130, 131, + 132, 133, 639, 0, 621, 0, 134, 135, 136, 137, + 138, 0, 481, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 482, 148, 149, 150, 0, 622, + 627, 623, 624, 628, 151, 152, 153, 154, 155, 648, + 156, 157, 649, 650, 158, 0, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 642, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 592, 183, 184, + 185, 632, 608, 186, 0, 187, 188, 651, 189, 0, + 190, 0, 191, 483, 0, 484, 192, 193, 194, 0, + 195, 196, 640, 0, 596, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 485, 372, 214, 215, 216, + 217, 652, 653, 0, 620, 0, 218, 486, 219, 487, + 220, 221, 222, 223, 224, 0, 0, 225, 641, 488, + 226, 489, 0, 227, 228, 414, 625, 626, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 415, 377, 490, 378, 243, 244, 379, 581, + 245, 246, 247, 609, 638, 248, 654, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 491, 256, 492, 633, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 634, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 655, + 278, 279, 280, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 493, + 295, 296, 597, 297, 298, 299, 300, 301, 302, 303, + 0, 304, 305, 306, 307, 416, 629, 308, 309, 388, + 310, 311, 494, 312, 313, 656, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 635, 0, + 325, 326, 0, 327, 328, 0, 657, 658, 0, 0, + 417, 329, 636, 330, 637, 607, 331, 332, 333, 334, + 335, 336, 337, 0, 584, 338, 339, 340, 341, 342, + 630, 0, 343, 344, 345, 346, 394, 659, 0, 347, + 495, 348, 0, 0, 0, 0, 349, 350, 351, 352, + 353, 354, 355, 356, 582, 0, 0, 0, 0, 0, + 0, 578, 579, 613, 600, 601, 602, 603, 599, 587, + 0, 580, 0, 0, 588, 1687, 105, 106, 107, 108, + 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, + 0, 0, 593, 0, 0, 116, 117, 0, 118, 119, + 478, 120, 121, 122, 357, 643, 479, 644, 0, 645, + 0, 123, 124, 125, 126, 127, 610, 631, 128, 646, + 647, 129, 0, 130, 131, 132, 133, 639, 0, 621, + 0, 134, 135, 136, 137, 138, 0, 481, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 482, + 148, 149, 150, 0, 622, 627, 623, 624, 628, 151, + 152, 153, 154, 155, 648, 156, 157, 649, 650, 158, + 0, 159, 0, 160, 161, 162, 163, 164, 0, 165, + 166, 167, 0, 0, 168, 169, 642, 171, 172, 0, + 173, 174, 175, 0, 176, 177, 178, 0, 179, 180, + 181, 182, 592, 183, 184, 185, 632, 608, 186, 0, + 187, 188, 651, 189, 0, 190, 0, 191, 483, 0, + 484, 192, 193, 194, 0, 195, 196, 640, 0, 596, + 197, 0, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 0, 207, 208, 209, 210, 211, 212, 0, 213, + 485, 372, 214, 215, 216, 217, 652, 653, 0, 620, + 0, 218, 486, 219, 487, 220, 221, 222, 223, 224, + 0, 0, 225, 641, 488, 226, 489, 0, 227, 228, + 414, 625, 626, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 415, 377, 490, + 378, 243, 244, 379, 581, 245, 246, 247, 609, 638, + 248, 654, 249, 250, 251, 0, 252, 0, 0, 253, + 254, 0, 0, 255, 382, 491, 256, 492, 633, 257, + 258, 259, 260, 261, 262, 263, 0, 264, 265, 634, + 266, 385, 269, 267, 268, 0, 270, 271, 272, 273, + 274, 275, 276, 277, 655, 278, 279, 280, 281, 0, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 0, 293, 294, 493, 295, 296, 597, 297, 298, + 299, 300, 301, 302, 303, 0, 304, 305, 306, 307, + 416, 629, 308, 309, 388, 310, 311, 494, 312, 313, + 656, 314, 0, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 635, 0, 325, 326, 0, 327, 328, + 0, 657, 658, 0, 0, 417, 329, 636, 330, 637, + 607, 331, 332, 333, 334, 335, 336, 337, 0, 584, + 338, 339, 340, 341, 342, 630, 0, 343, 344, 345, + 346, 394, 659, 0, 347, 495, 348, 0, 0, 0, + 0, 349, 350, 351, 352, 353, 354, 355, 356, 582, + 0, 0, 0, 0, 0, 0, 578, 579, 613, 600, + 601, 602, 603, 599, 587, 0, 580, 0, 0, 588, + 1239, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 593, 0, 0, + 116, 117, 0, 118, 119, 478, 120, 121, 122, 357, + 643, 479, 644, 0, 645, 0, 123, 124, 125, 126, + 127, 610, 631, 128, 646, 647, 129, 0, 130, 131, + 132, 133, 639, 0, 621, 0, 134, 135, 136, 137, + 138, 0, 481, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 482, 148, 149, 150, 0, 622, + 627, 623, 624, 628, 151, 152, 153, 154, 155, 648, + 156, 157, 649, 650, 158, 0, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 642, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 592, 183, 184, + 185, 632, 608, 186, 0, 187, 188, 651, 189, 0, + 190, 0, 191, 483, 0, 484, 192, 193, 194, 0, + 195, 196, 640, 0, 596, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 485, 372, 214, 215, 216, + 217, 652, 653, 0, 620, 0, 218, 486, 219, 487, + 220, 221, 222, 223, 224, 0, 0, 225, 641, 488, + 226, 489, 0, 227, 228, 414, 625, 626, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 415, 377, 490, 378, 243, 244, 379, 581, + 245, 246, 247, 609, 638, 248, 654, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 491, 256, 492, 633, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 634, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 655, + 278, 279, 280, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 493, + 295, 296, 597, 297, 298, 299, 300, 301, 302, 303, + 0, 304, 305, 306, 307, 416, 629, 308, 309, 388, + 310, 311, 494, 312, 313, 656, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 635, 0, + 325, 326, 0, 327, 328, 0, 657, 658, 0, 0, + 417, 329, 636, 330, 637, 607, 331, 332, 333, 334, + 335, 336, 337, 0, 584, 338, 339, 340, 341, 342, + 630, 0, 343, 344, 345, 346, 394, 659, 0, 347, + 495, 348, 0, 0, 0, 0, 349, 350, 351, 352, + 353, 354, 355, 356, 582, 0, 0, 0, 0, 0, + 0, 578, 579, 613, 600, 601, 602, 603, 599, 587, + 0, 580, 951, 1234, 588, 0, 105, 106, 107, 108, + 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, + 0, 0, 593, 0, 0, 116, 117, 0, 118, 119, + 478, 120, 121, 122, 357, 643, 479, 644, 0, 645, + 0, 123, 124, 125, 126, 127, 610, 631, 128, 646, + 647, 129, 0, 130, 131, 132, 133, 639, 0, 621, + 0, 134, 135, 136, 137, 138, 0, 481, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 482, + 148, 149, 150, 0, 622, 627, 623, 624, 628, 151, + 152, 153, 154, 155, 648, 156, 157, 649, 650, 158, + 0, 159, 0, 160, 161, 162, 163, 164, 0, 165, + 166, 167, 0, 0, 168, 169, 642, 171, 172, 0, + 173, 174, 175, 0, 176, 177, 178, 0, 179, 180, + 181, 182, 592, 183, 184, 185, 632, 608, 186, 0, + 187, 188, 651, 189, 0, 190, 0, 191, 483, 0, + 484, 192, 193, 194, 0, 195, 196, 640, 0, 596, + 197, 0, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 0, 207, 208, 209, 210, 211, 212, 0, 213, + 485, 372, 214, 215, 216, 217, 652, 653, 0, 620, + 0, 218, 486, 219, 487, 220, 221, 222, 223, 224, + 0, 0, 225, 641, 488, 226, 489, 0, 227, 228, + 414, 625, 626, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 415, 377, 490, + 378, 243, 244, 379, 581, 245, 246, 247, 609, 638, + 248, 654, 249, 250, 251, 0, 252, 0, 0, 253, + 254, 0, 0, 255, 382, 491, 256, 492, 633, 257, + 258, 259, 260, 261, 262, 263, 0, 264, 265, 634, + 266, 385, 269, 267, 268, 0, 270, 271, 272, 273, + 274, 275, 276, 277, 655, 278, 279, 280, 281, 0, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 0, 293, 294, 493, 295, 296, 597, 297, 298, + 299, 300, 301, 302, 303, 0, 304, 305, 306, 307, + 416, 629, 308, 309, 388, 310, 311, 494, 312, 313, + 656, 314, 0, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 635, 0, 325, 326, 0, 327, 328, + 0, 657, 658, 0, 0, 417, 329, 636, 330, 637, + 607, 331, 332, 333, 334, 335, 336, 337, 0, 584, + 338, 339, 340, 341, 342, 630, 0, 343, 344, 345, + 346, 394, 659, 1693, 347, 495, 348, 0, 0, 0, + 0, 349, 350, 351, 352, 353, 354, 355, 356, 582, + 0, 0, 0, 0, 0, 0, 578, 579, 613, 600, + 601, 602, 603, 599, 587, 0, 580, 0, 0, 588, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 593, 0, 0, + 116, 117, 0, 118, 119, 478, 120, 121, 122, 357, + 643, 479, 644, 0, 645, 0, 123, 124, 125, 126, + 127, 610, 631, 128, 646, 647, 129, 0, 130, 131, + 132, 133, 639, 0, 621, 0, 134, 135, 136, 137, + 138, 0, 481, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 482, 148, 149, 150, 0, 622, + 627, 623, 624, 628, 151, 152, 153, 154, 155, 648, + 156, 157, 649, 650, 158, 680, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 642, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 592, 183, 184, + 185, 632, 608, 186, 0, 187, 188, 651, 189, 0, + 190, 0, 191, 483, 0, 484, 192, 193, 194, 0, + 195, 196, 640, 0, 596, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 485, 372, 214, 215, 216, + 217, 652, 653, 0, 620, 0, 218, 486, 219, 487, + 220, 221, 222, 223, 224, 0, 0, 225, 641, 488, + 226, 489, 0, 227, 228, 414, 625, 626, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 415, 377, 490, 378, 243, 244, 379, 581, + 245, 246, 247, 609, 638, 248, 654, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 491, 256, 492, 633, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 634, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 655, + 278, 279, 280, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 493, + 295, 296, 597, 297, 298, 299, 300, 301, 302, 303, + 0, 304, 305, 306, 307, 416, 629, 308, 309, 388, + 310, 311, 494, 312, 313, 656, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 635, 0, + 325, 326, 0, 327, 328, 0, 657, 658, 0, 0, + 417, 329, 636, 330, 637, 607, 331, 332, 333, 334, + 335, 336, 337, 0, 584, 338, 339, 340, 341, 342, + 630, 0, 343, 344, 345, 346, 394, 659, 0, 347, + 495, 348, 0, 0, 0, 0, 349, 350, 351, 352, + 353, 354, 355, 356, 582, 0, 0, 0, 0, 0, + 0, 578, 579, 613, 600, 601, 602, 603, 599, 587, + 0, 580, 0, 0, 588, 0, 105, 106, 107, 108, + 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, + 0, 0, 593, 0, 0, 116, 117, 0, 118, 119, + 478, 120, 121, 122, 357, 643, 479, 644, 0, 645, + 0, 123, 124, 125, 126, 127, 610, 631, 128, 646, + 647, 129, 0, 130, 131, 132, 133, 639, 0, 621, + 0, 134, 135, 136, 137, 138, 0, 481, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 482, + 148, 149, 150, 0, 622, 627, 623, 624, 628, 151, + 152, 153, 154, 155, 648, 156, 157, 649, 650, 158, + 0, 159, 0, 160, 161, 162, 163, 164, 0, 165, + 166, 167, 0, 0, 168, 169, 642, 171, 172, 0, + 173, 174, 175, 0, 176, 177, 178, 0, 179, 180, + 181, 182, 592, 183, 184, 185, 632, 608, 186, 0, + 187, 188, 651, 189, 0, 190, 0, 191, 483, 0, + 484, 192, 193, 194, 0, 195, 196, 640, 0, 596, + 197, 0, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 0, 207, 208, 209, 210, 211, 212, 0, 213, + 485, 372, 214, 215, 216, 217, 652, 653, 0, 620, + 0, 218, 486, 219, 487, 220, 221, 222, 223, 224, + 0, 0, 225, 641, 488, 226, 489, 0, 227, 228, + 414, 625, 626, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 415, 377, 490, + 378, 243, 244, 379, 581, 245, 246, 247, 609, 638, + 248, 654, 249, 250, 251, 0, 252, 0, 0, 253, + 254, 0, 0, 255, 382, 491, 256, 492, 633, 257, + 258, 259, 260, 261, 262, 263, 0, 264, 265, 634, + 266, 385, 269, 267, 268, 0, 270, 271, 272, 273, + 274, 275, 276, 277, 655, 278, 279, 280, 281, 0, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 0, 293, 294, 493, 295, 296, 597, 297, 298, + 299, 300, 301, 302, 303, 0, 304, 305, 306, 307, + 416, 629, 308, 309, 388, 310, 311, 494, 312, 313, + 656, 314, 0, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 635, 0, 325, 326, 0, 327, 328, + 0, 657, 658, 0, 0, 417, 329, 636, 330, 637, + 607, 331, 332, 333, 334, 335, 336, 337, 0, 584, + 338, 339, 340, 341, 342, 630, 0, 343, 344, 345, + 346, 394, 659, 0, 347, 495, 348, 0, 0, 0, + 0, 349, 350, 351, 352, 353, 354, 355, 356, 582, + 0, 0, 0, 0, 0, 0, 578, 579, 576, 613, + 600, 601, 602, 603, 599, 587, 580, 0, 0, 588, + 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, + 0, 113, 114, 115, 0, 0, 0, 0, 593, 0, + 0, 116, 117, 0, 118, 119, 478, 120, 121, 122, + 357, 643, 479, 644, 0, 645, 0, 123, 124, 125, + 126, 127, 610, 631, 128, 646, 647, 129, 0, 130, + 131, 132, 133, 639, 0, 621, 0, 134, 135, 136, + 137, 138, 0, 481, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 482, 148, 149, 150, 0, + 622, 627, 623, 624, 628, 151, 152, 153, 154, 155, + 648, 156, 157, 649, 650, 158, 0, 159, 0, 160, + 161, 162, 163, 164, 0, 165, 166, 167, 0, 0, + 168, 169, 642, 171, 172, 0, 173, 174, 175, 0, + 176, 177, 178, 0, 179, 180, 181, 182, 592, 183, + 184, 185, 632, 608, 186, 0, 187, 188, 651, 189, + 0, 190, 0, 191, 483, 1296, 484, 192, 193, 194, + 0, 195, 196, 640, 0, 596, 197, 0, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, + 209, 210, 211, 212, 0, 213, 485, 372, 214, 215, + 216, 217, 652, 653, 0, 620, 0, 218, 486, 219, + 487, 220, 221, 222, 223, 224, 0, 0, 225, 641, + 488, 226, 489, 0, 227, 228, 414, 625, 626, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 415, 377, 490, 378, 243, 244, 379, + 581, 245, 246, 247, 609, 638, 248, 654, 249, 250, + 251, 0, 252, 0, 0, 253, 254, 0, 0, 255, + 382, 491, 256, 492, 633, 257, 258, 259, 260, 261, + 262, 263, 0, 264, 265, 634, 266, 385, 269, 267, + 268, 0, 270, 271, 272, 273, 274, 275, 276, 277, + 655, 278, 279, 280, 281, 0, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 0, 293, 294, + 493, 295, 296, 597, 297, 298, 299, 300, 301, 302, + 303, 0, 304, 305, 306, 307, 416, 629, 308, 309, + 388, 310, 311, 494, 312, 313, 656, 314, 0, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 635, + 0, 325, 326, 0, 327, 328, 0, 657, 658, 0, + 0, 417, 329, 636, 330, 637, 607, 331, 332, 333, + 334, 335, 336, 337, 0, 584, 338, 339, 340, 341, + 342, 630, 0, 343, 344, 345, 346, 394, 659, 0, + 347, 495, 348, 0, 0, 0, 0, 349, 350, 351, + 352, 353, 354, 355, 356, 582, 0, 0, 0, 0, + 0, 0, 578, 579, 613, 600, 601, 602, 603, 599, + 587, 0, 580, 0, 0, 588, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 884, 113, 114, 115, 0, + 0, 0, 0, 593, 0, 0, 116, 117, 0, 118, + 119, 478, 120, 121, 122, 357, 643, 479, 644, 0, + 645, 0, 123, 124, 125, 126, 127, 610, 631, 128, + 646, 647, 129, 0, 130, 131, 132, 133, 639, 0, + 621, 0, 134, 135, 136, 137, 138, 0, 481, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 482, 148, 149, 150, 0, 622, 627, 623, 624, 628, + 151, 152, 153, 154, 155, 648, 156, 157, 649, 650, + 158, 0, 159, 0, 160, 161, 162, 163, 164, 0, + 165, 166, 167, 0, 0, 168, 169, 642, 171, 172, + 0, 173, 174, 175, 0, 176, 177, 178, 0, 179, + 180, 181, 182, 592, 183, 184, 185, 632, 608, 186, + 0, 187, 188, 651, 189, 0, 190, 0, 191, 483, + 0, 484, 192, 193, 194, 0, 195, 196, 640, 0, + 596, 197, 0, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 0, 207, 208, 209, 210, 211, 212, 0, + 213, 485, 372, 214, 215, 216, 217, 652, 653, 0, + 620, 0, 218, 486, 219, 487, 220, 221, 222, 223, + 224, 0, 0, 225, 641, 488, 226, 489, 0, 227, + 228, 414, 625, 626, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 415, 377, + 490, 378, 243, 244, 379, 581, 245, 246, 247, 609, + 638, 248, 654, 249, 250, 251, 0, 252, 0, 0, + 253, 254, 0, 0, 255, 382, 491, 256, 492, 633, + 257, 258, 259, 260, 261, 262, 263, 0, 264, 265, + 634, 266, 385, 269, 267, 268, 0, 270, 271, 272, + 273, 274, 275, 276, 277, 655, 278, 279, 280, 281, + 0, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 0, 293, 294, 493, 295, 296, 597, 297, + 298, 299, 300, 301, 302, 303, 0, 304, 305, 306, + 307, 416, 629, 308, 309, 388, 310, 311, 494, 312, + 313, 656, 314, 0, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 635, 0, 325, 326, 0, 327, + 328, 0, 657, 658, 0, 0, 417, 329, 636, 330, + 637, 607, 331, 332, 333, 334, 335, 336, 337, 0, + 584, 338, 339, 340, 341, 342, 630, 0, 343, 344, + 345, 346, 394, 659, 0, 347, 495, 348, 0, 0, + 0, 0, 349, 350, 351, 352, 353, 354, 355, 356, + 582, 0, 0, 0, 0, 0, 0, 578, 579, 613, + 600, 601, 602, 603, 599, 587, 0, 580, 0, 0, + 588, 0, 105, 106, 107, 108, 109, 110, 111, 112, + 0, 113, 114, 115, 0, 0, 0, 0, 593, 0, + 0, 116, 117, 0, 118, 119, 478, 120, 121, 122, + 357, 643, 479, 644, 0, 645, 0, 123, 124, 125, + 126, 127, 610, 631, 128, 646, 647, 129, 0, 130, + 131, 132, 133, 639, 0, 621, 0, 134, 135, 136, + 137, 138, 0, 481, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 482, 148, 149, 2115, 0, + 622, 627, 623, 624, 628, 151, 152, 153, 154, 155, + 648, 156, 157, 649, 650, 158, 0, 159, 0, 160, + 161, 162, 163, 164, 0, 165, 166, 167, 0, 0, + 168, 169, 642, 171, 172, 0, 173, 174, 175, 0, + 176, 177, 178, 0, 179, 180, 181, 182, 592, 183, + 184, 185, 632, 608, 186, 0, 187, 188, 651, 189, + 0, 190, 0, 191, 483, 0, 484, 192, 193, 194, + 0, 195, 196, 640, 0, 596, 197, 0, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, + 209, 210, 211, 212, 0, 213, 485, 372, 214, 215, + 216, 217, 652, 653, 0, 620, 0, 218, 486, 219, + 487, 220, 221, 222, 223, 224, 0, 0, 225, 641, + 488, 226, 489, 0, 227, 228, 414, 625, 626, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 415, 377, 490, 378, 243, 244, 379, + 581, 245, 246, 247, 609, 638, 248, 654, 249, 250, + 251, 0, 252, 0, 0, 253, 254, 0, 0, 255, + 382, 491, 256, 492, 633, 257, 258, 259, 260, 261, + 262, 263, 0, 264, 265, 634, 266, 385, 269, 267, + 268, 0, 270, 271, 272, 273, 274, 275, 276, 277, + 655, 278, 279, 280, 281, 0, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 0, 293, 294, + 493, 295, 296, 597, 297, 298, 299, 300, 301, 302, + 303, 0, 304, 305, 306, 307, 416, 629, 308, 309, + 388, 310, 311, 494, 312, 313, 656, 314, 0, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 635, + 0, 325, 326, 0, 327, 328, 0, 657, 658, 0, + 0, 417, 329, 636, 330, 637, 607, 331, 332, 333, + 334, 2114, 336, 337, 0, 584, 338, 339, 340, 341, + 342, 630, 0, 343, 344, 345, 346, 394, 659, 0, + 347, 495, 348, 0, 0, 0, 0, 349, 350, 351, + 352, 353, 354, 355, 356, 582, 0, 0, 0, 0, + 0, 0, 578, 579, 613, 600, 601, 602, 603, 599, + 587, 0, 580, 0, 0, 588, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, + 0, 0, 0, 593, 0, 0, 116, 117, 0, 118, + 119, 478, 120, 121, 122, 2113, 643, 479, 644, 0, + 645, 0, 123, 124, 125, 126, 127, 610, 631, 128, + 646, 647, 129, 0, 130, 131, 132, 133, 639, 0, + 621, 0, 134, 135, 136, 137, 138, 0, 481, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 482, 148, 149, 2115, 0, 622, 627, 623, 624, 628, + 151, 152, 153, 154, 155, 648, 156, 157, 649, 650, + 158, 0, 159, 0, 160, 161, 162, 163, 164, 0, + 165, 166, 167, 0, 0, 168, 169, 642, 171, 172, + 0, 173, 174, 175, 0, 176, 177, 178, 0, 179, + 180, 181, 182, 592, 183, 184, 185, 632, 608, 186, + 0, 187, 188, 651, 189, 0, 190, 0, 191, 483, + 0, 484, 192, 193, 194, 0, 195, 196, 640, 0, + 596, 197, 0, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 0, 207, 208, 209, 210, 211, 212, 0, + 213, 485, 372, 214, 215, 216, 217, 652, 653, 0, + 620, 0, 218, 486, 219, 487, 220, 221, 222, 223, + 224, 0, 0, 225, 641, 488, 226, 489, 0, 227, + 228, 414, 625, 626, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 415, 377, + 490, 378, 243, 244, 379, 581, 245, 246, 247, 609, + 638, 248, 654, 249, 250, 251, 0, 252, 0, 0, + 253, 254, 0, 0, 255, 382, 491, 256, 492, 633, + 257, 258, 259, 260, 261, 262, 263, 0, 264, 265, + 634, 266, 385, 269, 267, 268, 0, 270, 271, 272, + 273, 274, 275, 276, 277, 655, 278, 279, 280, 281, + 0, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 0, 293, 294, 493, 295, 296, 597, 297, + 298, 299, 300, 301, 302, 303, 0, 304, 305, 306, + 307, 416, 629, 308, 309, 388, 310, 311, 494, 312, + 313, 656, 314, 0, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 635, 0, 325, 326, 0, 327, + 328, 0, 657, 658, 0, 0, 417, 329, 636, 330, + 637, 607, 331, 332, 333, 334, 2114, 336, 337, 0, + 584, 338, 339, 340, 341, 342, 630, 0, 343, 344, + 345, 346, 394, 659, 0, 347, 495, 348, 0, 0, + 0, 0, 349, 350, 351, 352, 353, 354, 355, 356, + 582, 0, 0, 0, 0, 0, 0, 578, 579, 613, + 600, 601, 602, 603, 599, 587, 0, 580, 0, 0, + 588, 0, 105, 106, 107, 108, 109, 110, 111, 112, + 0, 113, 114, 115, 0, 0, 0, 0, 593, 0, + 0, 116, 117, 0, 118, 119, 478, 120, 121, 122, + 357, 643, 479, 644, 0, 645, 0, 123, 124, 125, + 126, 127, 610, 631, 128, 646, 647, 129, 0, 130, + 131, 132, 133, 639, 0, 621, 0, 134, 135, 136, + 137, 138, 0, 481, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 482, 148, 149, 150, 0, + 622, 627, 623, 624, 628, 151, 152, 153, 154, 155, + 648, 156, 157, 649, 650, 158, 0, 159, 0, 160, + 161, 162, 163, 164, 0, 165, 166, 167, 0, 0, + 168, 169, 642, 171, 172, 0, 173, 174, 175, 0, + 176, 177, 178, 0, 179, 180, 181, 182, 592, 183, + 184, 185, 632, 608, 186, 0, 187, 188, 651, 189, + 0, 190, 0, 191, 483, 0, 484, 192, 193, 194, + 0, 195, 196, 640, 0, 596, 197, 0, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, + 209, 210, 211, 212, 0, 213, 485, 372, 214, 215, + 216, 217, 652, 653, 0, 620, 0, 218, 486, 219, + 487, 220, 221, 222, 223, 224, 0, 0, 225, 641, + 488, 226, 489, 0, 227, 228, 414, 625, 626, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 415, 377, 490, 378, 243, 244, 379, + 581, 245, 246, 247, 609, 638, 248, 654, 249, 250, + 251, 0, 252, 0, 0, 253, 254, 0, 0, 255, + 382, 491, 256, 492, 633, 257, 258, 259, 260, 261, + 262, 263, 0, 264, 265, 634, 266, 385, 269, 267, + 268, 0, 270, 271, 272, 273, 274, 275, 276, 277, + 655, 278, 279, 280, 281, 0, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 0, 293, 294, + 493, 295, 296, 597, 297, 298, 299, 300, 301, 302, + 303, 0, 304, 305, 306, 307, 416, 629, 308, 309, + 388, 310, 311, 494, 312, 313, 656, 314, 0, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 635, + 0, 325, 326, 0, 327, 328, 0, 657, 658, 0, + 0, 417, 329, 636, 330, 637, 607, 331, 332, 333, + 334, 335, 336, 337, 0, 584, 338, 339, 340, 341, + 342, 630, 0, 343, 344, 345, 346, 394, 659, 0, + 347, 495, 348, 0, 0, 0, 0, 349, 350, 351, + 352, 353, 354, 355, 356, 582, 0, 0, 0, 0, + 0, 0, 578, 579, 613, 600, 601, 602, 603, 599, + 587, 0, 580, 0, 0, 588, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, + 0, 0, 0, 593, 0, 0, 116, 117, 0, 118, + 119, 478, 120, 121, 122, 357, 643, 479, 644, 0, + 645, 0, 123, 124, 125, 126, 127, 610, 631, 128, + 646, 647, 129, 0, 130, 131, 132, 133, 639, 0, + 621, 0, 134, 135, 136, 137, 138, 0, 481, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 482, 148, 149, 150, 0, 622, 627, 623, 624, 628, + 151, 152, 153, 154, 155, 648, 156, 157, 649, 650, + 158, 0, 159, 0, 160, 161, 162, 163, 164, 0, + 165, 166, 167, 0, 0, 168, 169, 642, 171, 172, + 0, 173, 174, 175, 0, 176, 177, 178, 0, 179, + 180, 181, 182, 592, 183, 184, 185, 632, 608, 186, + 0, 187, 188, 651, 189, 0, 190, 0, 191, 483, + 0, 484, 192, 193, 194, 0, 195, 196, 640, 0, + 596, 197, 0, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 0, 207, 208, 209, 210, 211, 212, 0, + 213, 485, 372, 214, 215, 216, 217, 652, 653, 0, + 620, 0, 218, 486, 219, 487, 220, 221, 222, 223, + 224, 0, 0, 225, 641, 488, 226, 489, 0, 227, + 228, 414, 625, 626, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 415, 377, + 490, 378, 243, 244, 379, 581, 245, 246, 247, 609, + 638, 248, 654, 249, 250, 251, 0, 252, 0, 0, + 253, 254, 0, 0, 255, 382, 491, 256, 492, 633, + 257, 258, 259, 260, 261, 262, 263, 0, 264, 265, + 634, 266, 385, 269, 267, 268, 0, 270, 271, 272, + 273, 274, 275, 276, 277, 655, 278, 279, 280, 281, + 0, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 0, 293, 294, 493, 295, 296, 597, 297, + 298, 299, 300, 301, 302, 303, 0, 304, 305, 306, + 307, 416, 629, 308, 309, 388, 310, 311, 494, 312, + 313, 656, 314, 0, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 635, 0, 325, 326, 0, 327, + 328, 0, 657, 658, 0, 0, 417, 329, 636, 330, + 637, 607, 331, 332, 333, 334, 335, 336, 337, 0, + 584, 338, 339, 340, 341, 342, 630, 0, 343, 344, + 345, 346, 394, 659, 0, 347, 495, 348, 0, 0, + 0, 0, 349, 350, 351, 352, 353, 354, 355, 356, + 582, 0, 0, 0, 0, 0, 0, 578, 579, 613, + 600, 601, 602, 603, 599, 587, 0, 580, 0, 0, + 1848, 0, 105, 106, 107, 108, 109, 110, 111, 112, + 0, 113, 114, 115, 0, 0, 0, 0, 593, 0, + 0, 116, 117, 0, 118, 119, 478, 120, 121, 122, + 357, 643, 479, 644, 0, 645, 0, 123, 124, 125, + 126, 127, 610, 631, 128, 646, 647, 129, 0, 130, + 131, 132, 133, 639, 0, 621, 0, 134, 135, 136, + 137, 138, 0, 481, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 482, 148, 149, 150, 0, + 622, 627, 623, 624, 628, 151, 152, 153, 154, 155, + 648, 156, 157, 649, 650, 158, 0, 159, 0, 160, + 161, 162, 163, 164, 0, 165, 166, 167, 0, 0, + 168, 169, 642, 171, 172, 0, 173, 174, 175, 0, + 176, 177, 178, 0, 179, 180, 181, 182, 592, 183, + 184, 185, 632, 608, 186, 0, 187, 188, 651, 189, + 0, 190, 0, 191, 483, 0, 484, 192, 193, 194, + 0, 195, 196, 640, 0, 596, 197, 0, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, + 209, 210, 211, 212, 0, 213, 485, 372, 214, 215, + 216, 217, 652, 653, 0, 620, 0, 218, 486, 219, + 487, 220, 221, 222, 223, 224, 0, 0, 225, 641, + 488, 226, 489, 0, 227, 228, 414, 625, 626, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 415, 377, 490, 378, 243, 244, 379, + 0, 245, 246, 247, 609, 638, 248, 654, 249, 250, + 251, 0, 252, 0, 0, 253, 254, 0, 0, 255, + 382, 491, 256, 492, 633, 257, 258, 259, 260, 261, + 262, 263, 0, 264, 265, 634, 266, 385, 269, 267, + 268, 0, 270, 271, 272, 273, 274, 275, 276, 277, + 655, 278, 279, 280, 281, 0, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 0, 293, 294, + 493, 295, 296, 1286, 297, 298, 299, 300, 301, 302, + 303, 0, 304, 305, 306, 307, 416, 629, 308, 309, + 388, 310, 311, 494, 312, 313, 656, 314, 0, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 635, + 0, 325, 326, 0, 327, 328, 0, 657, 658, 0, + 0, 417, 329, 636, 330, 637, 607, 331, 332, 333, + 334, 335, 336, 337, 0, 0, 338, 339, 340, 341, + 342, 630, 0, 343, 344, 345, 346, 394, 659, 0, + 347, 495, 348, 0, 0, 0, 0, 349, 350, 351, + 352, 353, 354, 355, 356, 0, 0, 0, 0, 0, + 0, 0, 1282, 1283, 613, 600, 601, 602, 603, 599, + 587, 0, 1284, 0, 0, 1285, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, + 0, 0, 0, 593, 0, 0, 116, 117, 0, 118, + 119, 478, 120, 121, 122, 0, 643, 479, 644, 0, + 645, 0, 123, 124, 125, 126, 127, 610, 631, 128, + 646, 647, 129, 0, 130, 131, 132, 133, 639, 0, + 621, 0, 134, 135, 136, 137, 138, 0, 481, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 482, 148, 149, 2115, 0, 622, 627, 623, 624, 628, + 151, 152, 153, 154, 155, 648, 156, 157, 649, 650, + 158, 0, 159, 0, 160, 161, 162, 163, 164, 0, + 165, 166, 167, 0, 0, 168, 169, 642, 171, 172, + 0, 173, 174, 175, 0, 176, 177, 178, 0, 179, + 180, 181, 182, 592, 183, 184, 185, 632, 608, 186, + 0, 187, 188, 651, 189, 0, 190, 0, 191, 483, + 0, 484, 192, 193, 194, 0, 195, 196, 640, 0, + 596, 197, 0, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 0, 207, 208, 209, 210, 211, 212, 0, + 213, 485, 372, 214, 215, 216, 217, 652, 653, 0, + 620, 0, 218, 0, 219, 487, 220, 221, 222, 223, + 224, 0, 0, 225, 641, 488, 226, 0, 0, 227, + 228, 414, 625, 626, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 415, 377, + 490, 378, 243, 244, 379, 581, 245, 246, 247, 609, + 638, 248, 654, 249, 250, 251, 0, 252, 0, 0, + 253, 254, 0, 0, 255, 382, 491, 256, 492, 633, + 257, 258, 259, 260, 261, 262, 263, 0, 264, 265, + 634, 266, 385, 269, 267, 268, 0, 270, 271, 272, + 273, 274, 275, 276, 277, 655, 278, 279, 280, 281, + 0, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 0, 293, 294, 493, 295, 296, 597, 297, + 298, 299, 300, 301, 302, 303, 0, 304, 305, 306, + 307, 416, 629, 308, 309, 388, 310, 311, 0, 312, + 313, 656, 314, 0, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 635, 0, 325, 326, 0, 327, + 328, 0, 657, 658, 0, 0, 417, 329, 636, 330, + 637, 607, 331, 332, 333, 334, 2114, 336, 337, 0, + 584, 338, 339, 340, 341, 342, 630, 0, 343, 344, + 345, 346, 394, 659, 0, 347, 495, 348, 0, 0, + 0, 0, 349, 350, 351, 352, 353, 354, 355, 356, + 0, 0, 0, 0, 0, 0, 0, 578, 579, 613, + 0, 0, 0, 0, 0, 0, 0, 580, 0, 0, + 588, 0, 105, 106, 107, 108, 109, 110, 111, 112, + 0, 113, 114, 115, 0, 0, 0, 0, 0, 0, + 0, 116, 117, 0, 118, 119, 478, 120, 121, 122, + 357, 358, 479, 359, 0, 360, 0, 123, 124, 125, + 126, 127, 0, 631, 128, 361, 362, 129, 0, 130, + 131, 132, 133, 639, 0, 621, 0, 134, 135, 136, + 137, 138, 0, 481, 139, 140, 141, 0, 142, 143, + 144, 145, 146, 147, 0, 482, 148, 149, 150, 0, + 622, 627, 623, 624, 628, 151, 152, 153, 154, 155, + 364, 156, 157, 365, 366, 158, 0, 159, 0, 160, + 161, 162, 163, 164, 0, 165, 166, 167, 0, 0, + 168, 169, 170, 171, 172, 0, 173, 174, 175, 0, + 176, 177, 178, 0, 179, 180, 181, 182, 367, 183, + 184, 185, 632, 0, 186, 0, 187, 188, 369, 189, + 0, 190, 0, 191, 483, 0, 484, 192, 193, 194, + 0, 195, 196, 640, 0, 371, 197, 0, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 0, 207, 208, + 209, 210, 211, 212, 0, 213, 485, 372, 214, 215, + 216, 217, 373, 374, 0, 375, 0, 218, 486, 219, + 487, 220, 221, 222, 223, 224, 1139, 0, 225, 641, + 488, 226, 489, 0, 227, 228, 414, 625, 626, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 415, 377, 490, 378, 243, 244, 379, + 0, 245, 246, 247, 0, 638, 248, 381, 249, 250, + 251, 0, 252, 0, 452, 253, 254, 0, 0, 255, + 382, 491, 256, 492, 633, 257, 258, 259, 260, 261, + 262, 263, 0, 264, 265, 634, 266, 385, 269, 267, + 268, 0, 270, 271, 272, 273, 274, 275, 276, 277, + 386, 278, 279, 280, 281, 0, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 0, 293, 294, + 493, 295, 296, 387, 1144, 298, 299, 300, 301, 302, + 303, 53, 304, 305, 306, 307, 416, 629, 308, 309, + 388, 310, 311, 494, 312, 313, 389, 314, 0, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 635, + 0, 325, 326, 55, 327, 328, 0, 418, 391, 0, + 0, 417, 329, 636, 330, 637, 0, 331, 332, 333, + 334, 335, 336, 337, 0, 0, 338, 339, 340, 341, + 342, 630, 0, 343, 344, 345, 346, 473, 395, 0, + 347, 495, 348, 0, 0, 613, 51, 349, 350, 351, + 352, 353, 354, 355, 356, 0, 0, 52, 105, 106, + 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, + 0, 0, 0, 0, 0, 1142, 0, 116, 117, 0, + 118, 119, 478, 120, 121, 122, 357, 358, 479, 359, + 0, 360, 0, 123, 124, 125, 126, 127, 0, 631, + 128, 361, 362, 129, 0, 130, 131, 132, 133, 639, + 0, 621, 0, 134, 135, 136, 137, 138, 0, 481, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 482, 148, 149, 150, 0, 622, 627, 623, 624, + 628, 151, 152, 153, 154, 155, 364, 156, 157, 365, + 366, 158, 0, 159, 0, 160, 161, 162, 163, 164, + 0, 165, 166, 167, 0, 0, 168, 169, 170, 171, + 172, 0, 173, 174, 175, 0, 176, 177, 178, 0, + 179, 180, 181, 182, 367, 183, 184, 185, 632, 0, + 186, 0, 187, 188, 369, 189, 0, 190, 0, 191, + 483, 0, 484, 192, 193, 194, 0, 195, 196, 640, + 0, 371, 197, 0, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, + 0, 213, 485, 372, 214, 215, 216, 217, 373, 374, + 0, 375, 0, 218, 486, 219, 487, 220, 221, 222, + 223, 224, 1139, 0, 225, 641, 488, 226, 489, 0, + 227, 228, 414, 625, 626, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 415, + 377, 490, 378, 243, 244, 379, 0, 245, 246, 247, + 0, 638, 248, 381, 249, 250, 251, 0, 252, 0, + 452, 253, 254, 0, 0, 255, 382, 491, 256, 492, + 633, 257, 258, 259, 260, 261, 262, 263, 0, 264, + 265, 634, 266, 385, 269, 267, 268, 0, 270, 271, + 272, 273, 274, 275, 276, 277, 386, 278, 279, 280, + 281, 0, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 0, 293, 294, 493, 295, 296, 387, + 1144, 298, 299, 300, 301, 302, 303, 0, 304, 305, + 306, 307, 416, 629, 308, 309, 388, 310, 311, 494, + 312, 313, 389, 314, 0, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 635, 0, 325, 326, 0, + 327, 328, 0, 418, 391, 0, 0, 417, 329, 636, + 330, 637, 0, 331, 332, 333, 334, 335, 336, 337, + 0, 0, 338, 339, 340, 341, 342, 630, 0, 343, + 344, 345, 346, 394, 395, 0, 347, 495, 348, 0, + 613, 0, 0, 349, 350, 351, 352, 353, 354, 355, + 356, 0, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, + 0, 1142, 116, 117, 0, 118, 119, 478, 120, 121, + 122, 357, 358, 479, 359, 0, 360, 0, 123, 124, + 125, 126, 127, 0, 631, 128, 361, 362, 129, 0, + 130, 131, 132, 133, 639, 0, 621, 0, 134, 135, + 136, 137, 138, 0, 481, 139, 140, 141, 0, 142, + 143, 144, 145, 146, 147, 0, 482, 148, 149, 150, + 0, 622, 627, 623, 624, 628, 151, 152, 153, 154, + 155, 364, 156, 157, 365, 366, 158, 0, 159, 0, + 160, 161, 162, 163, 164, 0, 165, 166, 167, 0, + 0, 168, 169, 170, 171, 172, 0, 173, 174, 175, + 0, 176, 177, 178, 0, 179, 180, 181, 182, 367, + 183, 184, 185, 632, 0, 186, 0, 187, 188, 369, + 189, 0, 190, 0, 191, 483, 0, 484, 192, 193, + 194, 0, 195, 196, 640, 0, 371, 197, 0, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 0, 207, + 208, 209, 210, 211, 212, 0, 213, 485, 372, 214, + 215, 216, 217, 373, 374, 0, 375, 0, 218, 486, + 219, 487, 220, 221, 222, 223, 224, 0, 0, 225, + 641, 488, 226, 489, 0, 227, 228, 414, 625, 626, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 415, 377, 490, 378, 243, 244, + 379, 0, 245, 246, 247, 0, 638, 248, 381, 249, + 250, 251, 0, 252, 0, 0, 253, 254, 0, 0, + 255, 382, 491, 256, 492, 633, 257, 258, 259, 260, + 261, 262, 263, 0, 264, 265, 634, 266, 385, 269, + 267, 268, 0, 270, 271, 272, 273, 274, 275, 276, + 277, 386, 278, 279, 280, 281, 0, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 0, 293, + 294, 493, 295, 296, 387, 297, 298, 299, 300, 301, + 302, 303, 0, 304, 305, 306, 307, 416, 629, 308, + 309, 388, 310, 311, 494, 312, 313, 389, 314, 0, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 635, 0, 325, 326, 0, 327, 328, 0, 418, 391, + 0, 0, 417, 329, 636, 330, 637, 0, 331, 332, + 333, 334, 335, 336, 337, 0, 0, 338, 339, 340, + 341, 342, 630, 0, 343, 344, 345, 346, 394, 395, + 0, 347, 495, 348, 0, 613, 0, 0, 349, 350, + 351, 352, 353, 354, 355, 356, 0, 0, 105, 106, + 107, 108, 109, 110, 111, 112, 0, 113, 114, 115, + 0, 0, 0, 0, 0, 0, 1788, 116, 117, 0, + 118, 119, 478, 120, 121, 122, 357, 358, 479, 359, + 0, 360, 0, 123, 124, 125, 126, 127, 0, 631, + 128, 361, 362, 129, 0, 130, 131, 132, 133, 639, + 0, 621, 0, 134, 135, 136, 137, 138, 0, 481, + 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, + 0, 482, 148, 149, 150, 0, 622, 627, 623, 624, + 628, 151, 152, 153, 154, 155, 364, 156, 157, 365, + 366, 158, 0, 159, 0, 160, 161, 162, 163, 164, + 0, 165, 166, 167, 0, 0, 168, 169, 170, 171, + 172, 0, 173, 174, 175, 0, 176, 177, 178, 0, + 179, 180, 181, 182, 367, 183, 184, 185, 632, 0, + 186, 0, 187, 188, 369, 189, 0, 190, 0, 191, + 483, 0, 484, 192, 193, 194, 0, 195, 196, 640, + 0, 371, 197, 0, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 0, 207, 208, 209, 210, 211, 212, + 0, 213, 485, 372, 214, 215, 216, 217, 373, 374, + 0, 375, 0, 218, 486, 219, 487, 220, 221, 222, + 223, 224, 0, 0, 225, 641, 488, 226, 489, 0, + 227, 228, 414, 625, 626, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 415, + 377, 490, 378, 243, 244, 379, 0, 245, 246, 247, + 0, 638, 248, 381, 249, 250, 251, 0, 252, 0, + 0, 253, 254, 0, 0, 255, 382, 491, 256, 492, + 633, 257, 258, 259, 260, 261, 262, 263, 0, 264, + 265, 634, 266, 385, 269, 267, 268, 0, 270, 271, + 272, 273, 274, 275, 276, 277, 386, 278, 279, 280, + 281, 0, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 0, 293, 294, 493, 295, 296, 387, + 1144, 298, 299, 300, 301, 302, 303, 0, 304, 305, + 306, 307, 416, 629, 308, 309, 388, 310, 311, 494, + 312, 313, 389, 314, 0, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 635, 0, 325, 326, 0, + 327, 328, 0, 418, 391, 0, 0, 417, 329, 636, + 330, 637, 0, 331, 332, 333, 334, 335, 336, 337, + 0, 0, 338, 339, 340, 341, 342, 630, 0, 343, + 344, 345, 346, 394, 395, 0, 347, 495, 348, 0, + 474, 0, 0, 349, 350, 351, 352, 353, 354, 355, + 356, 0, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, + 0, 50, 116, 117, 0, 118, 119, 478, 120, 121, + 122, 357, 358, 479, 359, 0, 360, 0, 123, 124, + 125, 126, 127, 0, 0, 128, 361, 362, 129, 0, + 130, 131, 132, 133, 363, 0, 480, 0, 134, 135, + 136, 137, 138, 0, 481, 139, 140, 141, 0, 142, + 143, 144, 145, 146, 147, 0, 482, 148, 149, 150, + 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, + 155, 364, 156, 157, 365, 366, 158, 0, 159, 0, + 160, 161, 162, 163, 164, 0, 165, 166, 167, 0, + 0, 168, 169, 170, 171, 172, 0, 173, 174, 175, + 0, 176, 177, 178, 0, 179, 180, 181, 182, 367, + 183, 184, 185, 368, 0, 186, 0, 187, 188, 369, + 189, 0, 190, 0, 191, 483, 0, 484, 192, 193, + 194, 0, 195, 196, 370, 0, 371, 197, 0, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 0, 207, + 208, 209, 210, 211, 212, 0, 213, 485, 372, 214, + 215, 216, 217, 373, 374, 0, 375, 0, 218, 486, + 219, 487, 220, 221, 222, 223, 224, 0, 0, 225, + 376, 488, 226, 489, 0, 227, 228, 414, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 415, 377, 490, 378, 243, 244, + 379, 0, 245, 246, 247, 0, 380, 248, 381, 249, + 250, 251, 0, 252, 0, 0, 253, 254, 0, 0, + 255, 382, 491, 256, 492, 383, 257, 258, 259, 260, + 261, 262, 263, 0, 264, 265, 384, 266, 385, 269, + 267, 268, 0, 270, 271, 272, 273, 274, 275, 276, + 277, 386, 278, 279, 280, 281, 0, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 0, 293, + 294, 493, 295, 296, 387, 297, 298, 299, 300, 301, + 302, 303, 53, 304, 305, 306, 307, 416, 0, 308, + 309, 388, 310, 311, 494, 312, 313, 389, 314, 0, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 390, 0, 325, 326, 55, 327, 328, 0, 418, 391, + 0, 0, 417, 329, 392, 330, 393, 0, 331, 332, + 333, 334, 335, 336, 337, 0, 0, 338, 339, 340, + 341, 342, 0, 0, 343, 344, 345, 346, 473, 395, + 0, 347, 495, 348, 0, 0, 0, 51, 349, 350, + 351, 352, 353, 354, 355, 356, 0, 0, 52, 0, + 0, 0, 0, 0, 474, 703, 707, 0, 0, 708, + 0, 0, 0, 0, 0, 0, 50, 105, 106, 107, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, + 119, 478, 120, 121, 122, 357, 358, 479, 359, 0, + 360, 0, 123, 124, 125, 126, 127, 0, 0, 128, + 361, 362, 129, 0, 130, 131, 132, 133, 363, 0, + 480, 0, 134, 135, 136, 137, 138, 0, 481, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 482, 148, 149, 150, 0, 0, 0, 0, 0, 0, + 151, 152, 153, 154, 155, 364, 156, 157, 365, 366, + 158, 753, 159, 0, 160, 161, 162, 163, 164, 0, + 165, 166, 167, 0, 0, 168, 169, 170, 171, 172, + 0, 173, 174, 175, 0, 176, 177, 178, 0, 179, + 180, 181, 182, 367, 183, 184, 185, 368, 700, 186, + 0, 187, 188, 369, 189, 0, 190, 0, 191, 483, + 0, 484, 192, 193, 194, 0, 195, 196, 370, 0, + 371, 197, 0, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 0, 207, 208, 209, 210, 211, 212, 0, + 213, 485, 372, 214, 215, 216, 217, 373, 374, 0, + 375, 0, 218, 486, 219, 487, 220, 221, 222, 223, + 224, 0, 0, 225, 376, 488, 226, 489, 0, 227, + 228, 414, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 415, 377, + 490, 378, 243, 244, 379, 0, 245, 246, 247, 0, + 380, 248, 381, 249, 250, 251, 0, 252, 701, 0, + 253, 254, 0, 0, 255, 382, 491, 256, 492, 383, + 257, 258, 259, 260, 261, 262, 263, 0, 264, 265, + 384, 266, 385, 269, 267, 268, 0, 270, 271, 272, + 273, 274, 275, 276, 277, 386, 278, 279, 280, 281, + 0, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 0, 293, 294, 493, 295, 296, 387, 297, + 298, 299, 300, 301, 302, 303, 0, 304, 305, 306, + 307, 416, 0, 308, 309, 388, 310, 311, 494, 312, + 313, 389, 314, 0, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 390, 0, 325, 326, 0, 327, + 328, 0, 418, 391, 0, 0, 417, 329, 392, 330, + 393, 699, 331, 332, 333, 334, 335, 336, 337, 0, + 0, 338, 339, 340, 341, 342, 0, 0, 343, 344, + 345, 346, 394, 395, 0, 347, 495, 348, 0, 0, + 0, 0, 349, 350, 351, 352, 353, 354, 355, 356, + 474, 703, 707, 0, 0, 708, 0, 709, 704, 0, + 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, + 0, 0, 116, 117, 0, 118, 119, 478, 120, 121, + 122, 357, 358, 479, 359, 0, 360, 0, 123, 124, + 125, 126, 127, 0, 0, 128, 361, 362, 129, 0, + 130, 131, 132, 133, 363, 0, 480, 0, 134, 135, + 136, 137, 138, 0, 481, 139, 140, 141, 0, 142, + 143, 144, 145, 146, 147, 0, 482, 148, 149, 150, + 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, + 155, 364, 156, 157, 365, 366, 158, 748, 159, 0, + 160, 161, 162, 163, 164, 0, 165, 166, 167, 0, + 0, 168, 169, 170, 171, 172, 0, 173, 174, 175, + 0, 176, 177, 178, 0, 179, 180, 181, 182, 367, + 183, 184, 185, 368, 700, 186, 0, 187, 188, 369, + 189, 0, 190, 0, 191, 483, 0, 484, 192, 193, + 194, 0, 195, 196, 370, 0, 371, 197, 0, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 0, 207, + 208, 209, 210, 211, 212, 0, 213, 485, 372, 214, + 215, 216, 217, 373, 374, 0, 375, 0, 218, 486, + 219, 487, 220, 221, 222, 223, 224, 0, 0, 225, + 376, 488, 226, 489, 0, 227, 228, 414, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 415, 377, 490, 378, 243, 244, + 379, 0, 245, 246, 247, 0, 380, 248, 381, 249, + 250, 251, 0, 252, 701, 0, 253, 254, 0, 0, + 255, 382, 491, 256, 492, 383, 257, 258, 259, 260, + 261, 262, 263, 0, 264, 265, 384, 266, 385, 269, + 267, 268, 0, 270, 271, 272, 273, 274, 275, 276, + 277, 386, 278, 279, 280, 281, 0, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 0, 293, + 294, 493, 295, 296, 387, 297, 298, 299, 300, 301, + 302, 303, 0, 304, 305, 306, 307, 416, 0, 308, + 309, 388, 310, 311, 494, 312, 313, 389, 314, 0, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 390, 0, 325, 326, 0, 327, 328, 0, 418, 391, + 0, 0, 417, 329, 392, 330, 393, 699, 331, 332, + 333, 334, 335, 336, 337, 0, 0, 338, 339, 340, + 341, 342, 0, 0, 343, 344, 345, 346, 394, 395, + 0, 347, 495, 348, 0, 0, 0, 0, 349, 350, + 351, 352, 353, 354, 355, 356, 474, 703, 707, 0, + 0, 708, 0, 709, 704, 0, 0, 0, 0, 105, + 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, + 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 0, 118, 119, 478, 120, 121, 122, 357, 358, 479, + 359, 0, 360, 0, 123, 124, 125, 126, 127, 0, + 0, 128, 361, 362, 129, 0, 130, 131, 132, 133, + 363, 0, 480, 0, 134, 135, 136, 137, 138, 0, + 481, 139, 140, 141, 0, 142, 143, 144, 145, 146, + 147, 0, 482, 148, 149, 150, 0, 0, 0, 0, + 0, 0, 151, 152, 153, 154, 155, 364, 156, 157, + 365, 366, 158, 0, 159, 0, 160, 161, 162, 163, + 164, 0, 165, 166, 167, 0, 0, 168, 169, 170, + 171, 172, 0, 173, 174, 175, 0, 176, 177, 178, + 0, 179, 180, 181, 182, 367, 183, 184, 185, 368, + 700, 186, 0, 187, 188, 369, 189, 0, 190, 0, + 191, 483, 0, 484, 192, 193, 194, 0, 195, 196, + 370, 0, 371, 197, 0, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 0, 207, 208, 209, 210, 211, + 212, 0, 213, 485, 372, 214, 215, 216, 217, 373, + 374, 0, 375, 0, 218, 486, 219, 487, 220, 221, + 222, 223, 224, 0, 0, 225, 376, 488, 226, 489, + 0, 227, 228, 414, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 415, 377, 490, 378, 243, 244, 379, 0, 245, 246, + 247, 0, 380, 248, 381, 249, 250, 251, 0, 252, + 701, 0, 253, 254, 0, 0, 255, 382, 491, 256, + 492, 383, 257, 258, 259, 260, 261, 262, 263, 0, + 264, 265, 384, 266, 385, 269, 267, 268, 0, 270, + 271, 272, 273, 274, 275, 276, 277, 386, 278, 279, + 280, 281, 0, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 0, 293, 294, 493, 295, 296, + 387, 297, 298, 299, 300, 301, 302, 303, 0, 304, + 305, 306, 307, 416, 0, 308, 309, 388, 310, 311, + 494, 312, 313, 389, 314, 0, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 390, 0, 325, 326, + 0, 327, 328, 0, 418, 391, 0, 0, 417, 329, + 392, 330, 393, 699, 331, 332, 333, 334, 335, 336, + 337, 0, 0, 338, 339, 340, 341, 342, 0, 0, + 343, 344, 345, 346, 394, 395, 0, 347, 495, 348, + 0, 0, 0, 0, 349, 350, 351, 352, 353, 354, + 355, 356, 102, 0, 0, 0, 0, 0, 0, 709, + 704, 1410, 1411, 1412, 0, 105, 106, 107, 108, 109, + 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, + 0, 0, 0, 0, 116, 117, 0, 118, 119, 0, + 120, 121, 122, 357, 358, 0, 359, 0, 360, 0, + 123, 124, 125, 126, 127, 0, 0, 128, 361, 362, + 129, 0, 130, 131, 132, 133, 363, 0, 0, 0, + 134, 135, 136, 137, 138, 1409, 0, 139, 140, 141, + 0, 142, 143, 144, 145, 146, 147, 0, 0, 148, + 149, 150, 0, 0, 0, 0, 0, 0, 151, 152, + 153, 154, 155, 364, 156, 157, 365, 366, 158, 0, + 159, 0, 160, 161, 162, 163, 164, 0, 165, 166, + 167, 0, 0, 168, 169, 170, 171, 172, 0, 173, + 174, 175, 0, 176, 177, 178, 0, 179, 180, 181, + 182, 367, 183, 184, 185, 368, 0, 186, 0, 187, + 188, 369, 189, 0, 190, 0, 191, 0, 0, 0, + 192, 193, 194, 0, 195, 196, 370, 0, 371, 197, + 0, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 0, 207, 208, 209, 210, 211, 212, 0, 213, 0, + 372, 214, 215, 216, 217, 373, 374, 0, 375, 0, + 218, 0, 219, 0, 220, 221, 222, 223, 224, 0, + 0, 225, 376, 0, 226, 0, 0, 227, 228, 414, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 415, 377, 0, 378, + 243, 244, 379, 0, 245, 246, 247, 0, 380, 248, + 381, 249, 250, 251, 0, 252, 0, 0, 253, 254, + 0, 0, 255, 382, 0, 256, 0, 383, 257, 258, + 259, 260, 261, 262, 263, 0, 264, 265, 384, 266, + 385, 269, 267, 268, 0, 270, 271, 272, 273, 274, + 275, 276, 277, 386, 278, 279, 280, 281, 0, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 0, 293, 294, 0, 295, 296, 387, 297, 298, 299, + 300, 301, 302, 303, 0, 304, 305, 306, 307, 416, + 0, 308, 309, 388, 310, 311, 0, 312, 313, 389, + 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 390, 0, 325, 326, 0, 327, 328, 0, + 418, 391, 0, 0, 417, 329, 392, 330, 393, 0, + 331, 332, 333, 334, 335, 336, 337, 0, 0, 338, + 339, 340, 341, 342, 0, 0, 343, 344, 345, 346, + 394, 395, 0, 347, 0, 348, 0, 0, 0, 0, + 349, 350, 351, 352, 353, 354, 355, 356, 0, 0, + 0, 1406, 1407, 1408, 613, 1397, 1398, 1399, 1400, 1401, + 1402, 1403, 1404, 1405, 0, 0, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, + 119, 478, 120, 121, 122, 357, 358, 479, 359, 0, + 360, 0, 123, 124, 125, 126, 127, 0, 631, 128, + 361, 362, 129, 0, 130, 131, 132, 133, 639, 0, + 621, 0, 134, 135, 136, 137, 138, 0, 481, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 482, 148, 149, 150, 0, 622, 627, 623, 624, 628, + 151, 152, 153, 154, 155, 364, 156, 157, 365, 366, + 158, 0, 159, 0, 160, 161, 162, 163, 164, 0, + 165, 166, 167, 0, 0, 168, 169, 170, 171, 172, + 0, 173, 174, 175, 0, 176, 177, 178, 0, 179, + 180, 181, 182, 367, 183, 184, 185, 632, 0, 186, + 0, 187, 188, 369, 189, 0, 190, 0, 191, 483, + 0, 484, 192, 193, 194, 0, 195, 196, 640, 0, + 371, 197, 0, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 0, 207, 208, 209, 210, 211, 212, 0, + 213, 485, 372, 214, 215, 216, 217, 373, 374, 0, + 375, 0, 218, 486, 219, 487, 220, 221, 222, 223, + 224, 0, 0, 225, 641, 488, 226, 489, 0, 227, + 228, 414, 625, 626, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 415, 377, + 490, 378, 243, 244, 379, 0, 245, 246, 247, 0, + 638, 248, 381, 249, 250, 251, 0, 252, 0, 0, + 253, 254, 0, 0, 255, 382, 491, 256, 492, 633, + 257, 258, 259, 260, 261, 262, 263, 0, 264, 265, + 634, 266, 385, 269, 267, 268, 0, 270, 271, 272, + 273, 274, 275, 276, 277, 386, 278, 279, 280, 281, + 0, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 0, 293, 294, 493, 295, 296, 387, 297, + 298, 299, 300, 301, 302, 303, 0, 304, 305, 306, + 307, 416, 629, 308, 309, 388, 310, 311, 494, 312, + 313, 389, 314, 0, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 635, 0, 325, 326, 0, 327, + 328, 0, 418, 391, 0, 0, 417, 329, 636, 330, + 637, 0, 331, 332, 333, 334, 335, 336, 337, 0, + 0, 338, 339, 340, 341, 342, 630, 0, 343, 344, + 345, 346, 394, 395, 0, 347, 495, 348, 102, 0, + 0, 0, 349, 350, 351, 352, 353, 354, 355, 356, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 0, 118, 119, 0, 120, 121, 122, 357, + 358, 0, 359, 0, 360, 0, 123, 124, 125, 126, + 127, 0, 0, 128, 361, 362, 129, 0, 130, 131, + 132, 133, 363, 0, 0, 0, 134, 135, 136, 137, + 138, 0, 0, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 0, 148, 149, 150, 0, 0, + 0, 0, 0, 0, 151, 152, 153, 154, 155, 364, + 156, 157, 365, 366, 158, 0, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 170, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 367, 183, 184, + 185, 368, 0, 186, 0, 187, 188, 369, 189, 0, + 190, 0, 191, 0, 0, 0, 192, 193, 194, 0, + 195, 196, 370, 0, 371, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 0, 372, 214, 215, 216, + 217, 373, 374, 0, 375, 0, 218, 0, 219, 0, + 220, 221, 222, 223, 224, 0, 0, 225, 376, 0, + 226, 0, 0, 227, 228, 414, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 415, 377, 0, 378, 243, 244, 379, 0, + 245, 246, 247, 0, 380, 248, 381, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 0, 256, 0, 383, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 384, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 386, + 278, 279, 280, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 0, + 295, 296, 387, 297, 298, 299, 300, 301, 302, 303, + 53, 304, 305, 306, 307, 416, 0, 308, 309, 388, + 310, 311, 0, 312, 313, 389, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 390, 0, + 325, 326, 55, 327, 328, 0, 418, 391, 0, 0, + 417, 329, 392, 330, 393, 0, 331, 332, 333, 334, + 335, 336, 337, 0, 0, 338, 339, 340, 341, 342, + 0, 0, 343, 344, 345, 346, 473, 395, 0, 347, + 0, 348, 0, 0, 0, 51, 349, 350, 351, 352, + 353, 354, 355, 356, 0, 0, 52, 0, 0, 0, + 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 105, 106, 107, 108, 109, + 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, + 0, 0, 1434, 0, 116, 117, 0, 118, 119, 0, + 120, 121, 122, 357, 358, 0, 359, 0, 360, 0, + 123, 124, 125, 126, 127, 0, 0, 128, 361, 362, + 129, 0, 130, 131, 132, 133, 363, 0, 0, 0, + 134, 135, 136, 137, 138, 0, 0, 139, 140, 141, + 0, 142, 143, 144, 145, 146, 147, 0, 0, 148, + 149, 150, 0, 0, 0, 0, 0, 0, 151, 152, + 153, 154, 155, 364, 156, 157, 365, 366, 158, 0, + 159, 0, 160, 161, 162, 163, 164, 0, 165, 166, + 167, 0, 0, 168, 169, 170, 171, 172, 0, 173, + 174, 175, 0, 176, 177, 178, 0, 179, 180, 181, + 182, 367, 183, 184, 185, 368, 0, 186, 0, 187, + 188, 369, 189, 0, 190, 0, 191, 0, 0, 0, + 192, 193, 194, 0, 195, 196, 370, 0, 371, 197, + 0, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 0, 207, 208, 209, 210, 211, 212, 0, 213, 0, + 372, 214, 215, 216, 217, 373, 374, 0, 375, 0, + 218, 0, 219, 0, 220, 221, 222, 223, 224, 0, + 0, 225, 376, 0, 226, 0, 0, 227, 228, 414, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 415, 377, 0, 378, + 243, 244, 379, 0, 245, 246, 247, 0, 380, 248, + 381, 249, 250, 251, 0, 252, 0, 0, 253, 254, + 0, 0, 255, 382, 0, 256, 0, 383, 257, 258, + 259, 260, 261, 262, 263, 0, 264, 265, 384, 266, + 385, 269, 267, 268, 0, 270, 271, 272, 273, 274, + 275, 276, 277, 386, 278, 279, 280, 281, 0, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 0, 293, 294, 0, 295, 296, 387, 297, 298, 299, + 300, 301, 302, 303, 0, 304, 305, 306, 307, 416, + 0, 308, 309, 388, 310, 311, 0, 312, 313, 389, + 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 390, 0, 325, 326, 0, 327, 328, 0, + 418, 391, 0, 0, 417, 329, 392, 330, 393, 0, + 331, 332, 333, 334, 335, 336, 337, 0, 0, 338, + 339, 340, 341, 342, 0, 0, 343, 344, 345, 346, + 394, 395, 0, 347, 0, 348, 0, 0, 102, 0, + 349, 350, 351, 352, 353, 354, 355, 356, 0, 0, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 567, + 116, 117, 0, 118, 119, 0, 120, 121, 122, 357, + 358, 0, 359, 0, 360, 0, 123, 124, 125, 126, + 127, 0, 0, 128, 361, 362, 129, 0, 130, 131, + 132, 133, 363, 0, 0, 0, 134, 135, 136, 137, + 138, 0, 0, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 0, 148, 149, 150, 0, 0, + 0, 0, 0, 0, 151, 152, 153, 154, 155, 364, + 156, 157, 365, 366, 158, 0, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 170, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 367, 183, 184, + 185, 368, 0, 186, 0, 187, 188, 369, 189, 0, + 190, 0, 191, 0, 0, 0, 192, 193, 194, 0, + 195, 196, 370, 0, 371, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 0, 372, 214, 215, 216, + 217, 373, 374, 0, 375, 0, 218, 0, 219, 0, + 220, 221, 222, 223, 224, 0, 0, 225, 376, 0, + 226, 0, 0, 227, 228, 414, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 415, 377, 0, 378, 243, 244, 379, 0, + 245, 246, 247, 0, 380, 248, 381, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 0, 256, 0, 383, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 384, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 386, + 278, 279, 280, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 0, + 295, 296, 387, 297, 298, 299, 300, 301, 302, 303, + 0, 304, 305, 306, 307, 416, 0, 308, 309, 388, + 310, 311, 0, 312, 313, 389, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 390, 0, + 325, 326, 0, 327, 328, 0, 418, 391, 0, 0, + 417, 329, 392, 330, 393, 0, 331, 332, 333, 334, + 335, 336, 337, 0, 0, 338, 339, 340, 341, 342, + 0, 0, 343, 344, 345, 346, 394, 395, 0, 347, + 0, 348, 0, 102, 0, 0, 349, 350, 351, 352, + 353, 354, 355, 356, 0, 0, 105, 106, 107, 108, + 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, + 0, 0, 0, 0, 1021, 116, 117, 0, 118, 119, + 0, 120, 121, 122, 357, 358, 0, 359, 0, 360, + 0, 123, 124, 125, 126, 127, 0, 0, 128, 361, + 362, 129, 0, 130, 131, 132, 133, 363, 0, 0, + 0, 134, 135, 136, 137, 138, 0, 0, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 0, + 148, 149, 150, 0, 0, 0, 0, 0, 0, 151, + 152, 153, 154, 155, 364, 156, 157, 365, 366, 158, + 0, 159, 0, 160, 161, 162, 163, 164, 0, 165, + 166, 167, 0, 0, 168, 169, 170, 171, 172, 0, + 173, 174, 175, 0, 176, 177, 178, 0, 179, 180, + 181, 182, 367, 183, 184, 185, 368, 0, 186, 0, + 187, 188, 369, 189, 0, 190, 0, 191, 0, 0, + 0, 192, 193, 194, 0, 195, 196, 370, 0, 371, + 197, 0, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 0, 207, 208, 209, 210, 211, 212, 0, 213, + 0, 372, 214, 215, 216, 217, 373, 374, 0, 375, + 0, 218, 0, 219, 0, 220, 221, 222, 223, 224, + 0, 0, 225, 376, 0, 226, 0, 0, 227, 228, + 414, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 415, 377, 0, + 378, 243, 244, 379, 0, 245, 246, 247, 0, 380, + 248, 381, 249, 250, 251, 0, 252, 0, 0, 253, + 254, 0, 0, 255, 382, 0, 256, 0, 383, 257, + 258, 259, 260, 261, 262, 263, 0, 264, 265, 384, + 266, 385, 269, 267, 268, 0, 270, 271, 272, 273, + 274, 275, 276, 277, 386, 278, 279, 280, 281, 0, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 0, 293, 294, 0, 295, 296, 387, 297, 298, + 299, 300, 301, 302, 303, 0, 304, 305, 306, 307, + 416, 0, 308, 309, 388, 310, 311, 0, 312, 313, + 389, 314, 0, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 390, 0, 325, 326, 0, 327, 328, + 0, 418, 391, 0, 0, 417, 329, 392, 330, 393, + 0, 331, 332, 333, 334, 335, 336, 337, 0, 0, + 338, 339, 340, 341, 342, 0, 0, 343, 344, 345, + 346, 394, 395, 0, 347, 0, 348, 0, 102, 0, + 0, 349, 350, 351, 352, 353, 354, 355, 356, 0, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 1711, + 116, 117, 0, 118, 119, 0, 120, 121, 122, 357, + 358, 0, 359, 0, 360, 0, 123, 124, 125, 126, + 127, 0, 0, 128, 361, 362, 129, 0, 130, 131, + 132, 133, 363, 0, 0, 0, 134, 135, 136, 137, + 138, 0, 0, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 0, 148, 149, 150, 0, 0, + 0, 0, 0, 0, 151, 152, 153, 154, 155, 364, + 156, 157, 365, 366, 158, 0, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 170, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 367, 183, 184, + 185, 368, 0, 186, 0, 187, 188, 369, 189, 0, + 190, 0, 191, 0, 0, 0, 192, 193, 194, 0, + 195, 196, 370, 0, 371, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 0, 372, 214, 215, 216, + 217, 373, 374, 0, 375, 0, 218, 0, 219, 0, + 220, 221, 222, 223, 224, 0, 0, 225, 376, 0, + 226, 0, 0, 227, 228, 414, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 415, 377, 0, 378, 243, 244, 379, 0, + 245, 246, 247, 0, 380, 248, 381, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 0, 256, 0, 383, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 384, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 386, + 278, 279, 280, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 0, + 295, 296, 387, 297, 298, 299, 300, 301, 302, 303, + 0, 304, 305, 306, 307, 416, 0, 308, 309, 388, + 310, 311, 0, 312, 313, 389, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 390, 0, + 325, 326, 0, 327, 328, 0, 418, 391, 0, 0, + 417, 329, 392, 330, 393, 0, 331, 332, 333, 334, + 335, 336, 337, 0, 0, 338, 339, 340, 341, 342, + 0, 0, 343, 344, 345, 346, 394, 395, 0, 347, + 0, 348, 0, 102, 0, 0, 349, 350, 351, 352, + 353, 354, 355, 356, 0, 0, 105, 106, 107, 108, + 109, 110, 111, 112, 0, 113, 114, 115, 0, 0, + 0, 0, 0, 0, 1656, 116, 117, 0, 118, 119, + 0, 120, 121, 122, 357, 358, 0, 359, 0, 360, + 0, 123, 124, 125, 126, 127, 0, 0, 128, 361, + 362, 129, 0, 130, 131, 132, 133, 363, 0, 0, + 0, 134, 135, 136, 137, 138, 0, 0, 139, 140, + 141, 0, 142, 143, 144, 145, 146, 147, 0, 0, + 148, 149, 150, 0, 0, 0, 0, 0, 0, 151, + 152, 153, 154, 155, 364, 156, 157, 365, 366, 158, + 0, 159, 0, 160, 161, 162, 163, 164, 0, 165, + 166, 167, 0, 0, 168, 169, 170, 171, 172, 0, + 173, 174, 175, 0, 176, 177, 178, 0, 179, 180, + 181, 182, 367, 183, 184, 185, 368, 0, 186, 0, + 187, 188, 369, 189, 0, 190, 0, 191, 0, 0, + 0, 192, 193, 194, 0, 195, 196, 370, 0, 371, + 197, 0, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 0, 207, 208, 209, 210, 211, 212, 0, 213, + 0, 372, 214, 215, 216, 217, 373, 374, 0, 375, + 0, 218, 0, 219, 0, 220, 221, 222, 223, 224, + 0, 0, 225, 376, 0, 226, 0, 0, 227, 228, + 414, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 415, 377, 0, + 378, 243, 244, 379, 0, 245, 246, 247, 0, 380, + 248, 381, 249, 250, 251, 0, 252, 0, 0, 253, + 254, 0, 0, 255, 382, 0, 256, 0, 383, 257, + 258, 259, 260, 261, 262, 263, 0, 264, 265, 384, + 266, 385, 269, 267, 268, 0, 270, 271, 272, 273, + 274, 275, 276, 277, 386, 278, 279, 280, 281, 0, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 0, 293, 294, 0, 295, 296, 387, 297, 298, + 299, 300, 301, 302, 303, 0, 304, 305, 306, 307, + 416, 0, 308, 309, 388, 310, 311, 0, 312, 313, + 389, 314, 0, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 390, 0, 325, 326, 0, 327, 328, + 0, 418, 391, 0, 0, 417, 329, 392, 330, 393, + 0, 331, 332, 333, 334, 335, 336, 337, 0, 0, + 338, 339, 340, 341, 342, 0, 0, 343, 344, 345, + 346, 394, 395, 0, 347, 0, 348, 0, 474, 0, + 0, 349, 350, 351, 352, 353, 354, 355, 356, 0, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 671, + 116, 117, 0, 118, 119, 478, 120, 121, 122, 357, + 358, 479, 359, 0, 360, 0, 123, 124, 125, 126, + 127, 0, 0, 128, 361, 362, 129, 0, 130, 131, + 132, 133, 363, 0, 480, 0, 134, 135, 136, 137, + 138, 0, 481, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 482, 148, 149, 150, 0, 0, + 0, 0, 0, 0, 151, 152, 153, 154, 155, 364, + 156, 157, 365, 366, 158, 0, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 170, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 367, 183, 184, + 185, 368, 0, 186, 0, 187, 188, 369, 189, 0, + 190, 0, 191, 483, 0, 484, 192, 193, 194, 0, + 195, 196, 370, 0, 371, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 485, 372, 214, 215, 216, + 217, 373, 374, 0, 375, 0, 218, 486, 219, 487, + 220, 221, 222, 223, 224, 0, 0, 225, 376, 488, + 226, 489, 0, 227, 228, 414, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 415, 377, 490, 378, 243, 244, 379, 0, + 245, 246, 247, 0, 380, 248, 381, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 491, 256, 492, 383, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 384, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 386, + 278, 279, 280, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 493, + 295, 296, 387, 297, 298, 299, 300, 301, 302, 303, + 0, 304, 305, 306, 307, 416, 0, 308, 309, 388, + 310, 311, 494, 312, 313, 389, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 390, 0, + 325, 326, 0, 327, 328, 0, 418, 391, 0, 0, + 417, 329, 392, 330, 393, 0, 331, 332, 333, 334, + 335, 336, 337, 0, 0, 338, 339, 340, 341, 342, + 0, 0, 343, 344, 345, 346, 394, 395, 0, 347, + 495, 348, 102, 0, 0, 0, 349, 350, 351, 352, + 353, 354, 355, 356, 0, 105, 106, 107, 108, 109, + 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, + 0, 0, 0, 0, 116, 117, 0, 118, 119, 0, + 120, 121, 122, 357, 358, 0, 359, 0, 360, 0, + 123, 124, 125, 126, 127, 0, 0, 128, 361, 362, + 129, 1048, 130, 131, 132, 133, 363, 0, 0, 0, + 134, 135, 136, 137, 138, 0, 0, 139, 140, 141, + 1046, 142, 143, 144, 145, 146, 147, 0, 0, 148, + 149, 150, 0, 0, 0, 0, 0, 0, 151, 152, + 153, 154, 155, 364, 156, 157, 365, 366, 158, 0, + 159, 0, 160, 161, 162, 163, 164, 0, 165, 166, + 167, 0, 0, 168, 169, 170, 171, 172, 0, 173, + 174, 175, 0, 176, 177, 178, 0, 1052, 180, 181, + 182, 367, 183, 184, 185, 368, 0, 186, 0, 187, + 188, 369, 189, 0, 190, 1053, 191, 0, 0, 0, + 192, 193, 194, 0, 195, 196, 370, 0, 371, 197, + 0, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 0, 207, 208, 1050, 210, 211, 212, 0, 213, 0, + 372, 214, 215, 216, 217, 373, 374, 0, 375, 0, + 218, 0, 219, 0, 220, 221, 222, 223, 224, 0, + 0, 225, 376, 0, 226, 1100, 0, 227, 228, 414, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 415, 377, 0, 378, + 243, 244, 379, 0, 245, 246, 247, 0, 380, 248, + 381, 249, 250, 251, 0, 252, 0, 0, 253, 254, + 0, 0, 255, 382, 0, 256, 0, 383, 257, 258, + 259, 260, 261, 262, 263, 0, 264, 265, 384, 266, + 385, 269, 267, 268, 1051, 270, 271, 272, 273, 274, + 275, 276, 277, 386, 278, 279, 280, 281, 0, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 0, 293, 294, 0, 295, 296, 387, 297, 298, 299, + 300, 301, 302, 303, 0, 304, 305, 306, 307, 416, + 0, 308, 309, 388, 310, 311, 0, 312, 313, 389, + 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 390, 0, 325, 326, 0, 327, 328, 0, + 418, 391, 0, 0, 417, 329, 392, 330, 393, 0, + 331, 332, 333, 334, 335, 336, 337, 0, 1049, 338, + 339, 340, 341, 342, 0, 0, 343, 344, 345, 346, + 394, 395, 0, 347, 0, 348, 102, 0, 0, 0, + 349, 350, 351, 352, 353, 354, 355, 356, 0, 105, + 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, + 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 0, 118, 119, 0, 120, 121, 122, 357, 358, 0, + 359, 0, 360, 0, 123, 124, 125, 126, 127, 0, + 0, 128, 361, 362, 129, 1048, 130, 131, 132, 133, + 363, 0, 0, 1043, 134, 135, 136, 137, 138, 0, + 0, 139, 140, 141, 1046, 142, 143, 144, 145, 146, + 147, 0, 0, 148, 149, 150, 0, 0, 0, 0, + 0, 0, 151, 152, 153, 154, 155, 364, 156, 157, + 365, 366, 158, 0, 159, 0, 160, 161, 162, 163, + 164, 0, 165, 166, 167, 0, 0, 168, 169, 170, + 171, 172, 0, 173, 174, 175, 0, 176, 177, 178, + 0, 1052, 180, 181, 182, 367, 183, 184, 185, 368, + 0, 186, 0, 187, 188, 369, 189, 0, 190, 1053, + 191, 0, 0, 0, 192, 193, 194, 0, 195, 196, + 370, 0, 371, 197, 0, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 0, 207, 208, 1050, 210, 211, + 212, 0, 213, 0, 372, 214, 215, 216, 217, 373, + 374, 0, 375, 0, 218, 0, 219, 0, 220, 221, + 222, 223, 224, 0, 0, 225, 376, 0, 226, 0, + 0, 227, 228, 414, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 415, 377, 0, 378, 243, 244, 379, 0, 245, 246, + 247, 0, 380, 248, 381, 249, 250, 251, 0, 252, + 0, 0, 253, 254, 0, 0, 255, 382, 0, 256, + 0, 383, 257, 258, 259, 260, 261, 262, 263, 0, + 264, 265, 384, 266, 385, 269, 267, 268, 1051, 270, + 271, 272, 273, 274, 275, 276, 277, 386, 278, 279, + 280, 281, 0, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 0, 293, 294, 0, 295, 296, + 387, 297, 298, 299, 300, 301, 302, 303, 0, 304, + 305, 306, 307, 416, 0, 308, 309, 388, 310, 311, + 0, 312, 313, 389, 314, 0, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 390, 0, 325, 326, + 0, 327, 328, 0, 418, 391, 0, 0, 417, 329, + 392, 330, 393, 0, 331, 332, 333, 334, 335, 336, + 337, 0, 1049, 338, 339, 340, 341, 342, 0, 0, + 343, 344, 345, 346, 394, 395, 0, 347, 0, 348, + 102, 0, 0, 0, 349, 350, 351, 352, 353, 354, + 355, 356, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, + 0, 0, 116, 117, 0, 118, 119, 0, 120, 121, + 122, 357, 358, 0, 359, 0, 360, 0, 123, 124, + 125, 126, 127, 0, 0, 128, 361, 362, 129, 1048, + 130, 131, 132, 133, 363, 0, 0, 0, 134, 135, + 136, 137, 138, 0, 0, 139, 140, 141, 1046, 142, + 143, 144, 145, 146, 147, 0, 0, 148, 149, 150, + 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, + 155, 364, 156, 157, 365, 366, 158, 0, 159, 0, + 160, 161, 162, 163, 164, 0, 165, 166, 167, 0, + 0, 168, 169, 170, 171, 172, 0, 173, 174, 175, + 0, 176, 177, 178, 0, 1052, 180, 181, 182, 367, + 183, 184, 185, 368, 0, 186, 0, 187, 188, 369, + 189, 0, 190, 1053, 191, 0, 0, 0, 192, 193, + 194, 0, 195, 196, 370, 0, 371, 197, 0, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 0, 207, + 208, 1050, 210, 211, 212, 0, 213, 0, 372, 214, + 215, 216, 217, 373, 374, 0, 375, 0, 218, 0, + 219, 0, 220, 221, 222, 223, 224, 0, 0, 225, + 376, 0, 226, 0, 0, 227, 228, 414, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 415, 377, 0, 378, 243, 244, + 379, 0, 245, 246, 247, 0, 380, 248, 381, 249, + 250, 251, 0, 252, 0, 0, 253, 254, 0, 0, + 255, 382, 0, 256, 0, 383, 257, 258, 259, 260, + 261, 262, 263, 0, 264, 265, 384, 266, 385, 269, + 267, 268, 1051, 270, 271, 272, 273, 274, 275, 276, + 277, 386, 278, 279, 280, 281, 0, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 0, 293, + 294, 0, 295, 296, 387, 297, 298, 299, 300, 301, + 302, 303, 0, 304, 305, 306, 307, 416, 0, 308, + 309, 388, 310, 311, 0, 312, 313, 389, 314, 0, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 390, 0, 325, 326, 0, 327, 328, 0, 418, 391, + 0, 0, 417, 329, 392, 330, 393, 0, 331, 332, + 333, 334, 335, 336, 337, 0, 1049, 338, 339, 340, + 341, 342, 0, 0, 343, 344, 345, 346, 394, 395, + 0, 347, 0, 348, 102, 0, 0, 0, 349, 350, + 351, 352, 353, 354, 355, 356, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, + 119, 0, 120, 121, 122, 357, 358, 0, 359, 0, + 360, 0, 123, 124, 125, 126, 127, 0, 0, 128, + 361, 362, 129, 0, 130, 131, 132, 133, 363, 0, + 0, 0, 134, 135, 136, 137, 138, 0, 0, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, + 151, 152, 153, 154, 155, 364, 156, 157, 365, 366, + 158, 0, 159, 0, 160, 161, 162, 163, 164, 0, + 165, 166, 167, 0, 0, 168, 169, 170, 171, 172, + 0, 173, 174, 175, 0, 176, 177, 178, 0, 179, + 180, 181, 182, 367, 183, 184, 185, 368, 0, 186, + 0, 187, 188, 369, 189, 0, 190, 0, 191, 0, + 0, 0, 192, 193, 194, 0, 195, 196, 370, 0, + 371, 197, 0, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 0, 207, 208, 209, 210, 211, 212, 0, + 213, 0, 372, 214, 215, 216, 217, 373, 374, 0, + 375, 0, 218, 0, 219, 0, 220, 221, 222, 223, + 224, 0, 0, 225, 376, 0, 226, 0, 0, 227, + 228, 414, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 415, 377, + 0, 378, 243, 244, 379, 0, 245, 246, 247, 0, + 380, 248, 381, 249, 250, 251, 0, 252, 0, 0, + 253, 254, 0, 0, 255, 382, 0, 256, 0, 383, + 257, 258, 259, 260, 261, 262, 263, 0, 264, 265, + 384, 266, 385, 269, 267, 268, 0, 270, 271, 272, + 273, 274, 275, 276, 277, 386, 278, 279, 280, 281, + 0, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 0, 293, 294, 0, 295, 296, 387, 297, + 298, 299, 300, 301, 302, 303, 0, 304, 305, 306, + 307, 416, 0, 308, 309, 388, 310, 311, 0, 312, + 313, 389, 314, 0, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 390, 0, 325, 326, 0, 327, + 328, 0, 418, 391, 0, 0, 417, 329, 392, 330, + 393, 0, 331, 332, 333, 334, 335, 336, 337, 0, + 0, 338, 339, 340, 341, 342, 0, 2020, 343, 344, + 345, 346, 394, 395, 0, 347, 0, 348, 102, 0, + 0, 0, 349, 350, 351, 352, 353, 354, 355, 356, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 1434, 0, + 116, 117, 0, 118, 119, 0, 120, 121, 122, 357, + 358, 0, 359, 0, 360, 0, 123, 124, 125, 126, + 127, 0, 0, 128, 361, 362, 129, 0, 130, 131, + 132, 133, 363, 0, 0, 0, 134, 135, 136, 137, + 138, 0, 0, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 0, 148, 149, 150, 0, 0, + 0, 0, 0, 0, 151, 152, 153, 154, 155, 364, + 156, 157, 365, 366, 158, 0, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 170, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 367, 183, 184, + 185, 368, 0, 186, 0, 187, 188, 369, 189, 0, + 190, 0, 191, 0, 0, 0, 192, 193, 194, 0, + 195, 196, 370, 0, 371, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 0, 372, 214, 215, 216, + 217, 373, 374, 0, 375, 0, 218, 0, 219, 0, + 220, 221, 222, 223, 224, 0, 0, 225, 376, 0, + 226, 0, 0, 227, 228, 414, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 415, 377, 0, 378, 243, 244, 379, 0, + 245, 246, 247, 0, 380, 248, 381, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 0, 256, 0, 383, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 384, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 386, + 278, 279, 280, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 0, + 295, 296, 387, 297, 298, 299, 300, 301, 302, 303, + 0, 304, 305, 306, 307, 416, 0, 308, 309, 388, + 310, 311, 0, 312, 313, 389, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 390, 0, + 325, 326, 0, 327, 328, 0, 418, 391, 0, 0, + 417, 329, 392, 330, 393, 0, 331, 332, 333, 334, + 335, 336, 337, 0, 0, 338, 339, 340, 341, 342, + 0, 0, 343, 344, 345, 346, 394, 395, 0, 347, + 0, 348, 102, 0, 0, 0, 349, 350, 351, 352, + 353, 354, 355, 356, 0, 105, 106, 107, 108, 109, + 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, + 0, 0, 1438, 0, 116, 117, 0, 118, 119, 0, + 120, 121, 122, 357, 358, 0, 359, 0, 360, 0, + 123, 124, 125, 126, 127, 0, 0, 128, 361, 362, + 129, 0, 130, 131, 132, 133, 363, 0, 0, 0, + 134, 135, 136, 137, 138, 0, 0, 139, 140, 141, + 0, 142, 143, 144, 145, 146, 147, 0, 0, 148, + 149, 150, 0, 0, 0, 0, 0, 0, 151, 152, + 153, 154, 155, 364, 156, 157, 365, 366, 158, 0, + 159, 0, 160, 161, 162, 163, 164, 0, 165, 166, + 167, 0, 0, 168, 169, 170, 171, 172, 0, 173, + 174, 175, 0, 176, 177, 178, 0, 179, 180, 181, + 182, 367, 183, 184, 185, 368, 0, 186, 0, 187, + 188, 369, 189, 0, 190, 0, 191, 0, 0, 0, + 192, 193, 194, 0, 195, 196, 370, 0, 371, 197, + 0, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 0, 207, 208, 209, 210, 211, 212, 0, 213, 0, + 372, 214, 215, 216, 217, 373, 374, 0, 375, 0, + 218, 0, 219, 0, 220, 221, 222, 223, 224, 0, + 0, 225, 376, 0, 226, 0, 0, 227, 228, 414, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 415, 377, 0, 378, + 243, 244, 379, 0, 245, 246, 247, 0, 380, 248, + 381, 249, 250, 251, 0, 252, 0, 0, 253, 254, + 0, 0, 255, 382, 0, 256, 0, 383, 257, 258, + 259, 260, 261, 262, 263, 0, 264, 265, 384, 266, + 385, 269, 267, 268, 0, 270, 271, 272, 273, 274, + 275, 276, 277, 386, 278, 279, 280, 281, 0, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 0, 293, 294, 0, 295, 296, 387, 297, 298, 299, + 300, 301, 302, 303, 0, 304, 305, 306, 307, 416, + 0, 308, 309, 388, 310, 311, 0, 312, 313, 389, + 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 390, 0, 325, 326, 0, 327, 328, 0, + 418, 391, 0, 0, 417, 329, 392, 330, 393, 0, + 331, 332, 333, 334, 335, 336, 337, 0, 0, 338, + 339, 340, 341, 342, 0, 0, 343, 344, 345, 346, + 394, 395, 0, 347, 0, 348, 102, 0, 0, 0, + 349, 350, 351, 352, 353, 354, 355, 356, 0, 105, + 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, + 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 0, 118, 119, 0, 120, 121, 122, 357, 358, 0, + 359, 0, 360, 0, 123, 124, 125, 126, 127, 0, + 0, 128, 361, 362, 129, 0, 130, 131, 132, 133, + 363, 0, 0, 0, 134, 135, 136, 137, 138, 0, + 0, 139, 140, 141, 0, 142, 143, 144, 145, 146, + 147, 0, 0, 148, 149, 150, 0, 0, 0, 0, + 0, 0, 151, 152, 153, 154, 155, 364, 156, 157, + 365, 366, 158, 0, 159, 0, 160, 161, 162, 163, + 164, 0, 165, 166, 167, 0, 0, 168, 169, 170, + 171, 172, 0, 173, 174, 175, 0, 176, 177, 178, + 0, 179, 180, 181, 182, 367, 183, 184, 185, 368, + 0, 186, 0, 187, 188, 369, 189, 0, 190, 0, + 191, 0, 0, 0, 192, 193, 194, 0, 195, 196, + 370, 0, 371, 197, 0, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 0, 207, 208, 209, 210, 211, + 212, 0, 213, 0, 372, 214, 215, 216, 217, 373, + 374, 0, 375, 0, 218, 0, 219, 0, 220, 221, + 222, 223, 224, 0, 0, 225, 376, 0, 226, 0, + 0, 227, 228, 414, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 415, 377, 0, 378, 243, 244, 379, 0, 245, 246, + 247, 0, 380, 248, 381, 249, 250, 251, 0, 252, + 0, 452, 253, 254, 0, 0, 255, 382, 0, 256, + 0, 383, 257, 258, 259, 260, 261, 262, 263, 0, + 264, 265, 384, 266, 385, 269, 267, 268, 0, 270, + 271, 272, 273, 274, 275, 276, 277, 386, 278, 279, + 280, 281, 0, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 0, 293, 294, 0, 295, 296, + 387, 297, 298, 299, 300, 301, 302, 303, 0, 304, + 305, 306, 307, 416, 0, 308, 309, 388, 310, 311, + 0, 312, 313, 389, 314, 0, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 390, 0, 325, 326, + 0, 327, 328, 0, 418, 391, 0, 0, 417, 329, + 392, 330, 393, 0, 331, 332, 333, 334, 335, 336, + 337, 0, 0, 338, 339, 340, 341, 342, 0, 0, + 343, 344, 345, 346, 394, 395, 0, 347, 0, 348, + 102, 0, 0, 0, 349, 350, 351, 352, 353, 354, + 355, 356, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, + 0, 0, 116, 117, 0, 118, 119, 0, 120, 121, + 122, 357, 358, 0, 359, 0, 360, 0, 123, 124, + 125, 126, 127, 0, 0, 128, 361, 362, 129, 0, + 130, 131, 132, 133, 363, 0, 0, 0, 134, 135, + 136, 137, 138, 0, 0, 139, 140, 141, 0, 142, + 143, 144, 145, 146, 147, 0, 0, 148, 149, 150, + 0, 0, 0, 0, 0, 0, 151, 152, 153, 715, + 155, 364, 156, 157, 365, 366, 158, 0, 159, 0, + 160, 161, 162, 163, 164, 0, 165, 166, 167, 0, + 0, 168, 169, 170, 171, 172, 0, 173, 174, 175, + 0, 176, 177, 178, 0, 179, 180, 181, 182, 367, + 183, 184, 185, 368, 0, 186, 0, 187, 188, 369, + 189, 0, 190, 0, 191, 0, 0, 0, 192, 193, + 194, 0, 195, 196, 370, 0, 371, 197, 0, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 0, 207, + 208, 209, 210, 211, 212, 0, 213, 0, 372, 214, + 215, 216, 217, 373, 374, 0, 375, 0, 218, 0, + 219, 0, 220, 221, 222, 223, 224, 0, 0, 225, + 376, 0, 226, 0, 0, 227, 228, 414, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 415, 377, 0, 378, 243, 244, + 379, 0, 245, 246, 247, 0, 380, 248, 381, 249, + 250, 251, 0, 252, 0, 0, 253, 254, 0, 0, + 255, 382, 0, 256, 0, 383, 257, 258, 259, 260, + 261, 262, 263, 0, 264, 265, 384, 266, 385, 269, + 267, 268, 0, 270, 271, 272, 273, 274, 275, 276, + 277, 386, 278, 279, 280, 281, 0, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 0, 293, + 294, 0, 295, 296, 387, 297, 298, 299, 300, 301, + 302, 303, 0, 304, 305, 306, 307, 416, 0, 308, + 309, 388, 310, 311, 0, 312, 313, 389, 314, 0, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 390, 0, 325, 326, 714, 327, 328, 0, 418, 391, + 0, 0, 417, 329, 392, 330, 393, 0, 331, 332, + 333, 334, 335, 336, 337, 0, 0, 338, 339, 340, + 341, 342, 0, 0, 343, 344, 345, 346, 394, 395, + 0, 347, 0, 348, 102, 0, 0, 0, 349, 350, + 351, 352, 353, 354, 355, 356, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, + 119, 0, 120, 121, 122, 357, 358, 0, 359, 0, + 360, 0, 123, 124, 125, 126, 127, 0, 0, 128, + 361, 362, 129, 0, 130, 131, 132, 133, 363, 0, + 0, 0, 134, 135, 136, 137, 138, 0, 0, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, + 151, 152, 153, 154, 155, 364, 156, 157, 365, 366, + 158, 0, 159, 0, 160, 161, 162, 163, 164, 0, + 165, 166, 167, 0, 0, 168, 169, 170, 171, 172, + 0, 173, 174, 175, 0, 176, 177, 178, 0, 179, + 180, 181, 182, 367, 183, 184, 185, 368, 0, 186, + 0, 187, 188, 369, 189, 0, 190, 0, 191, 0, + 0, 0, 192, 193, 194, 0, 195, 196, 370, 0, + 371, 197, 0, 198, 199, 200, 201, 503, 203, 204, + 205, 206, 0, 207, 208, 209, 210, 211, 212, 0, + 213, 0, 372, 214, 215, 216, 217, 373, 374, 0, + 375, 0, 218, 0, 219, 0, 220, 221, 222, 223, + 224, 0, 0, 225, 376, 0, 226, 0, 0, 227, + 228, 414, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 415, 377, + 0, 378, 243, 244, 379, 0, 245, 246, 247, 0, + 380, 248, 381, 249, 250, 251, 0, 252, 0, 452, + 253, 254, 0, 0, 255, 382, 0, 256, 0, 383, + 257, 258, 259, 260, 261, 262, 263, 0, 264, 265, + 384, 266, 385, 269, 267, 268, 0, 270, 271, 272, + 273, 274, 275, 276, 277, 386, 278, 279, 280, 281, + 0, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 0, 293, 294, 0, 295, 296, 387, 297, + 298, 299, 300, 301, 302, 303, 0, 304, 305, 306, + 307, 416, 0, 308, 309, 388, 310, 311, 0, 312, + 313, 389, 314, 0, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 390, 0, 325, 326, 0, 327, + 328, 0, 418, 391, 0, 0, 417, 329, 392, 330, + 393, 0, 331, 332, 333, 334, 335, 336, 337, 0, + 0, 338, 339, 340, 341, 342, 0, 0, 343, 344, + 345, 346, 394, 395, 0, 347, 0, 348, 102, 0, + 0, 0, 349, 350, 351, 352, 353, 354, 355, 356, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 0, 118, 119, 0, 120, 121, 122, 357, + 358, 0, 359, 0, 360, 0, 123, 124, 125, 126, + 127, 0, 0, 128, 361, 362, 129, 0, 130, 131, + 132, 133, 363, 0, 0, 0, 134, 135, 136, 137, + 138, 0, 0, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 0, 148, 149, 150, 0, 0, + 0, 0, 0, 0, 151, 152, 153, 154, 155, 364, + 156, 157, 365, 366, 158, 0, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 170, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 367, 183, 184, + 185, 368, 0, 186, 0, 187, 188, 369, 189, 0, + 190, 0, 191, 0, 0, 0, 192, 193, 194, 0, + 195, 196, 370, 0, 371, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 0, 372, 214, 215, 216, + 217, 373, 374, 0, 375, 0, 218, 0, 219, 0, + 220, 221, 222, 223, 224, 0, 0, 225, 376, 0, + 226, 0, 0, 227, 228, 414, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 415, 377, 0, 378, 243, 244, 379, 0, + 245, 246, 247, 0, 380, 248, 381, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 0, 256, 0, 383, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 384, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 386, + 278, 279, 280, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 0, + 295, 296, 387, 297, 298, 299, 300, 301, 302, 303, + 0, 304, 305, 306, 307, 416, 0, 308, 309, 388, + 310, 311, 0, 312, 313, 389, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 390, 0, + 325, 326, 0, 327, 328, 0, 418, 391, 0, 0, + 417, 329, 392, 330, 393, 0, 331, 332, 333, 334, + 335, 336, 337, 0, 0, 338, 339, 340, 341, 342, + 0, 0, 343, 344, 345, 346, 394, 395, 0, 347, + 0, 348, 102, 0, 0, 0, 349, 350, 351, 352, + 353, 354, 355, 356, 0, 105, 106, 107, 108, 109, + 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, + 0, 0, 0, 0, 116, 117, 0, 118, 119, 0, + 120, 121, 122, 357, 358, 0, 359, 0, 360, 0, + 123, 124, 125, 126, 127, 0, 0, 128, 361, 362, + 129, 0, 130, 131, 132, 133, 363, 0, 0, 0, + 134, 135, 136, 137, 138, 0, 0, 139, 140, 141, + 0, 142, 143, 144, 145, 146, 147, 0, 0, 148, + 149, 150, 0, 0, 0, 0, 0, 0, 151, 152, + 153, 154, 155, 364, 156, 157, 365, 366, 158, 0, + 159, 0, 160, 161, 162, 163, 164, 0, 165, 166, + 167, 0, 0, 168, 169, 170, 171, 172, 0, 173, + 174, 175, 0, 176, 177, 178, 0, 179, 180, 181, + 182, 367, 183, 184, 185, 368, 0, 186, 0, 187, + 188, 369, 189, 0, 190, 0, 191, 0, 0, 0, + 192, 193, 194, 0, 195, 196, 370, 0, 371, 197, + 0, 198, 199, 200, 201, 1352, 203, 204, 205, 206, + 0, 207, 208, 209, 210, 211, 212, 0, 213, 0, + 372, 214, 215, 216, 217, 373, 374, 0, 375, 0, + 218, 0, 219, 0, 220, 221, 222, 223, 224, 0, + 0, 225, 376, 0, 226, 0, 0, 227, 228, 414, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 415, 377, 0, 378, + 243, 244, 379, 0, 245, 246, 247, 0, 380, 248, + 381, 249, 250, 251, 0, 252, 0, 0, 253, 254, + 0, 0, 255, 382, 0, 256, 0, 383, 257, 258, + 259, 260, 261, 262, 263, 0, 264, 265, 384, 266, + 385, 269, 267, 268, 0, 270, 271, 272, 273, 274, + 275, 276, 277, 386, 278, 279, 280, 281, 0, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 0, 293, 294, 0, 295, 296, 387, 297, 298, 299, + 300, 301, 302, 303, 0, 304, 305, 306, 307, 416, + 0, 308, 309, 388, 310, 311, 0, 312, 313, 389, + 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 390, 0, 325, 326, 0, 327, 328, 0, + 418, 391, 0, 0, 417, 329, 392, 330, 393, 0, + 331, 332, 333, 334, 335, 336, 337, 0, 0, 338, + 339, 340, 341, 342, 0, 0, 343, 344, 345, 346, + 394, 395, 0, 347, 0, 348, 102, 0, 0, 0, + 349, 350, 351, 352, 353, 354, 355, 356, 0, 105, + 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, + 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 0, 118, 119, 0, 120, 121, 122, 357, 358, 0, + 359, 0, 360, 0, 123, 124, 125, 126, 127, 0, + 0, 128, 361, 362, 129, 0, 130, 131, 132, 133, + 363, 0, 0, 0, 134, 135, 136, 137, 138, 0, + 0, 139, 140, 141, 0, 142, 143, 144, 145, 146, + 147, 0, 0, 148, 149, 150, 0, 0, 0, 0, + 0, 0, 151, 152, 153, 154, 155, 364, 156, 157, + 365, 366, 158, 0, 159, 0, 160, 161, 162, 163, + 164, 0, 165, 166, 167, 0, 0, 168, 169, 170, + 171, 172, 0, 173, 174, 175, 0, 176, 177, 178, + 0, 179, 180, 181, 182, 367, 183, 184, 185, 368, + 0, 186, 0, 187, 188, 369, 189, 0, 190, 0, + 191, 0, 0, 0, 192, 193, 194, 0, 195, 196, + 370, 0, 371, 197, 0, 198, 199, 200, 201, 1350, + 203, 204, 205, 206, 0, 207, 208, 209, 210, 211, + 212, 0, 213, 0, 372, 214, 215, 216, 217, 373, + 374, 0, 375, 0, 218, 0, 219, 0, 220, 221, + 222, 223, 224, 0, 0, 225, 376, 0, 226, 0, + 0, 227, 228, 414, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 415, 377, 0, 378, 243, 244, 379, 0, 245, 246, + 247, 0, 380, 248, 381, 249, 250, 251, 0, 252, + 0, 0, 253, 254, 0, 0, 255, 382, 0, 256, + 0, 383, 257, 258, 259, 260, 261, 262, 263, 0, + 264, 265, 384, 266, 385, 269, 267, 268, 0, 270, + 271, 272, 273, 274, 275, 276, 277, 386, 278, 279, + 280, 281, 0, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 0, 293, 294, 0, 295, 296, + 387, 297, 298, 299, 300, 301, 302, 303, 0, 304, + 305, 306, 307, 416, 0, 308, 309, 388, 310, 311, + 0, 312, 313, 389, 314, 0, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 390, 0, 325, 326, + 0, 327, 328, 0, 418, 391, 0, 0, 417, 329, + 392, 330, 393, 0, 331, 332, 333, 334, 335, 336, + 337, 0, 0, 338, 339, 340, 341, 342, 0, 0, + 343, 344, 345, 346, 394, 395, 0, 347, 0, 348, + 102, 0, 0, 0, 349, 350, 351, 352, 353, 354, + 355, 356, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, + 0, 0, 116, 117, 0, 118, 119, 0, 120, 121, + 122, 357, 358, 0, 359, 0, 360, 0, 123, 124, + 125, 126, 127, 0, 0, 128, 361, 362, 129, 0, + 130, 131, 132, 133, 363, 0, 0, 0, 134, 135, + 136, 137, 138, 0, 0, 139, 140, 141, 0, 142, + 143, 144, 145, 146, 147, 0, 0, 148, 149, 150, + 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, + 155, 364, 156, 157, 365, 366, 158, 0, 159, 0, + 160, 161, 162, 163, 164, 0, 165, 166, 167, 0, + 0, 168, 169, 170, 171, 172, 0, 173, 174, 175, + 0, 176, 177, 178, 0, 179, 180, 181, 182, 367, + 183, 184, 185, 368, 0, 186, 0, 187, 188, 369, + 189, 0, 190, 0, 191, 0, 0, 0, 192, 193, + 194, 0, 195, 196, 370, 0, 371, 197, 0, 198, + 199, 200, 201, 1107, 203, 204, 205, 206, 0, 207, + 208, 209, 210, 211, 212, 0, 213, 0, 372, 214, + 215, 216, 217, 373, 374, 0, 375, 0, 218, 0, + 219, 0, 220, 221, 222, 223, 224, 0, 0, 225, + 376, 0, 226, 0, 0, 227, 228, 414, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 415, 377, 0, 378, 243, 244, + 379, 0, 245, 246, 247, 0, 380, 248, 381, 249, + 250, 251, 0, 252, 0, 0, 253, 254, 0, 0, + 255, 382, 0, 256, 0, 383, 257, 258, 259, 260, + 261, 262, 263, 0, 264, 265, 384, 266, 385, 269, + 267, 268, 0, 270, 271, 272, 273, 274, 275, 276, + 277, 386, 278, 279, 280, 281, 0, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 0, 293, + 294, 0, 295, 296, 387, 297, 298, 299, 300, 301, + 302, 303, 0, 304, 305, 306, 307, 416, 0, 308, + 309, 388, 310, 311, 0, 312, 313, 389, 314, 0, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 390, 0, 325, 326, 0, 327, 328, 0, 418, 391, + 0, 0, 417, 329, 392, 330, 393, 0, 331, 332, + 333, 334, 335, 336, 337, 0, 0, 338, 339, 340, + 341, 342, 0, 0, 343, 344, 345, 346, 394, 395, + 0, 347, 0, 348, 102, 0, 0, 0, 349, 350, + 351, 352, 353, 354, 355, 356, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, + 119, 0, 120, 121, 122, 357, 358, 0, 359, 0, + 360, 0, 123, 124, 125, 126, 127, 0, 0, 128, + 361, 362, 129, 0, 130, 131, 132, 133, 363, 0, + 0, 0, 134, 135, 136, 137, 138, 0, 0, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, + 151, 152, 153, 154, 155, 364, 156, 157, 365, 366, + 158, 0, 159, 0, 160, 161, 162, 163, 164, 0, + 165, 166, 167, 0, 0, 168, 169, 170, 171, 172, + 0, 173, 174, 175, 0, 176, 177, 178, 0, 179, + 180, 181, 182, 367, 183, 184, 185, 368, 0, 186, + 0, 187, 188, 369, 189, 0, 190, 0, 191, 0, + 0, 0, 192, 193, 194, 0, 195, 196, 370, 0, + 371, 197, 0, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 0, 207, 208, 209, 210, 211, 212, 0, + 213, 0, 372, 214, 215, 216, 217, 373, 374, 0, + 375, 0, 218, 0, 219, 0, 220, 221, 222, 223, + 224, 0, 0, 225, 376, 0, 226, 0, 0, 227, + 228, 414, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 99, 377, + 0, 378, 243, 244, 379, 0, 245, 246, 247, 0, + 380, 248, 381, 249, 250, 251, 0, 252, 0, 0, + 253, 254, 0, 0, 255, 382, 0, 256, 0, 383, + 257, 258, 259, 260, 261, 262, 263, 0, 264, 265, + 384, 266, 385, 269, 267, 268, 0, 270, 271, 272, + 273, 274, 275, 276, 277, 386, 278, 279, 280, 281, + 0, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 0, 293, 294, 0, 295, 296, 387, 297, + 298, 299, 300, 301, 302, 303, 0, 304, 305, 306, + 307, 506, 0, 308, 309, 388, 310, 311, 0, 312, + 313, 389, 314, 0, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 390, 0, 325, 326, 0, 327, + 328, 0, 98, 391, 0, 0, 94, 329, 392, 330, + 393, 0, 331, 332, 333, 334, 335, 336, 337, 0, + 0, 338, 339, 340, 341, 342, 0, 0, 343, 344, + 345, 346, 394, 395, 0, 347, 0, 348, 102, 0, + 0, 0, 349, 350, 351, 352, 353, 354, 355, 356, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 0, 118, 119, 0, 120, 121, 122, 357, + 358, 0, 359, 0, 360, 0, 123, 124, 125, 126, + 127, 0, 0, 128, 361, 362, 129, 0, 130, 131, + 132, 133, 363, 0, 0, 0, 134, 135, 136, 137, + 138, 0, 0, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 0, 148, 149, 150, 0, 0, + 0, 0, 0, 0, 151, 152, 153, 154, 155, 364, + 156, 157, 365, 366, 158, 0, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 170, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 367, 183, 184, + 185, 368, 0, 186, 0, 187, 188, 369, 189, 0, + 190, 0, 191, 0, 0, 0, 192, 193, 194, 0, + 195, 196, 370, 0, 371, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 0, 372, 214, 215, 216, + 217, 373, 374, 0, 375, 0, 218, 0, 219, 0, + 220, 221, 222, 223, 224, 0, 0, 225, 376, 0, + 226, 0, 0, 227, 228, 414, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 415, 377, 0, 378, 243, 244, 379, 0, + 245, 246, 247, 0, 380, 248, 381, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 0, 256, 0, 383, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 384, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 386, + 278, 279, 280, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 0, + 295, 296, 387, 297, 298, 853, 300, 301, 302, 303, + 0, 304, 305, 306, 307, 416, 0, 308, 309, 388, + 310, 311, 0, 312, 313, 389, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 390, 0, + 325, 326, 0, 327, 328, 0, 418, 391, 0, 0, + 417, 329, 392, 330, 393, 0, 331, 332, 333, 334, + 335, 336, 337, 0, 0, 338, 339, 340, 341, 342, + 0, 0, 343, 344, 345, 346, 394, 395, 0, 347, + 0, 348, 102, 0, 0, 0, 349, 350, 351, 352, + 353, 354, 355, 356, 0, 105, 106, 107, 108, 109, + 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, + 0, 0, 0, 0, 116, 117, 0, 118, 119, 0, + 120, 121, 122, 357, 358, 0, 359, 0, 360, 0, + 123, 124, 125, 126, 127, 0, 0, 128, 361, 362, + 129, 0, 130, 131, 132, 133, 363, 0, 0, 0, + 134, 135, 136, 137, 138, 0, 0, 139, 140, 141, + 0, 142, 143, 144, 145, 146, 147, 0, 0, 148, + 149, 150, 0, 0, 0, 0, 0, 0, 151, 152, + 153, 154, 155, 364, 156, 157, 365, 366, 158, 0, + 159, 0, 160, 161, 162, 163, 164, 0, 165, 166, + 167, 0, 0, 168, 169, 170, 171, 172, 0, 173, + 174, 175, 0, 176, 177, 178, 0, 179, 180, 181, + 182, 367, 183, 184, 185, 368, 0, 186, 0, 187, + 188, 369, 189, 0, 190, 0, 191, 0, 0, 0, + 192, 193, 194, 0, 195, 196, 370, 0, 371, 197, + 0, 198, 199, 200, 201, 710, 203, 204, 205, 206, + 0, 207, 208, 209, 210, 211, 212, 0, 213, 0, + 372, 214, 215, 216, 217, 373, 374, 0, 375, 0, + 218, 0, 219, 0, 220, 221, 222, 223, 224, 0, + 0, 225, 376, 0, 226, 0, 0, 227, 228, 414, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 415, 377, 0, 378, + 243, 244, 379, 0, 245, 246, 247, 0, 380, 248, + 381, 249, 250, 251, 0, 252, 0, 0, 253, 254, + 0, 0, 255, 382, 0, 256, 0, 383, 257, 258, + 259, 260, 261, 262, 263, 0, 264, 265, 384, 266, + 385, 269, 267, 268, 0, 270, 271, 272, 273, 274, + 275, 276, 277, 386, 278, 279, 280, 281, 0, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 0, 293, 294, 0, 295, 296, 387, 297, 298, 299, + 300, 301, 302, 303, 0, 304, 305, 306, 307, 416, + 0, 308, 309, 388, 310, 311, 0, 312, 313, 389, + 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 390, 0, 325, 326, 0, 327, 328, 0, + 418, 391, 0, 0, 417, 329, 392, 330, 393, 0, + 331, 332, 333, 334, 335, 336, 337, 0, 0, 338, + 339, 340, 341, 342, 0, 0, 343, 344, 345, 346, + 394, 395, 0, 347, 0, 348, 102, 0, 0, 0, + 349, 350, 351, 352, 353, 354, 355, 356, 0, 105, + 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, + 115, 0, 0, 0, 0, 0, 686, 0, 116, 117, + 0, 118, 119, 0, 120, 121, 122, 357, 358, 0, + 359, 0, 360, 0, 123, 124, 125, 126, 127, 0, + 0, 128, 361, 362, 129, 0, 130, 131, 132, 133, + 363, 0, 0, 0, 134, 135, 136, 137, 138, 0, + 0, 139, 140, 141, 0, 142, 143, 144, 145, 146, + 147, 0, 0, 148, 149, 150, 0, 0, 0, 0, + 0, 0, 151, 152, 153, 154, 155, 364, 156, 157, + 365, 366, 158, 0, 159, 0, 160, 161, 162, 163, + 164, 0, 165, 166, 167, 0, 0, 168, 169, 170, + 171, 172, 0, 173, 174, 175, 0, 176, 177, 178, + 0, 179, 180, 181, 182, 367, 183, 184, 185, 368, + 0, 186, 0, 187, 188, 369, 189, 0, 190, 0, + 191, 0, 0, 0, 192, 193, 194, 0, 195, 196, + 370, 0, 371, 197, 0, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 0, 207, 208, 209, 210, 211, + 212, 0, 213, 0, 372, 214, 215, 216, 217, 373, + 374, 0, 375, 0, 218, 0, 219, 0, 220, 221, + 222, 223, 224, 0, 0, 225, 376, 0, 226, 0, + 0, 227, 228, 414, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 415, 377, 0, 378, 243, 244, 379, 0, 245, 246, + 247, 0, 380, 248, 381, 249, 250, 251, 0, 252, + 0, 0, 253, 254, 0, 0, 255, 382, 0, 256, + 0, 383, 257, 258, 259, 260, 261, 262, 263, 0, + 264, 265, 384, 266, 385, 269, 267, 268, 0, 270, + 271, 272, 273, 274, 275, 276, 277, 386, 278, 279, + 280, 281, 0, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 0, 293, 294, 0, 295, 296, + 387, 297, 298, 299, 300, 301, 302, 303, 0, 304, + 305, 306, 307, 416, 0, 0, 309, 388, 310, 311, + 0, 312, 313, 389, 314, 0, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 390, 0, 325, 326, + 0, 327, 328, 0, 418, 391, 0, 0, 417, 329, + 392, 330, 393, 0, 331, 332, 333, 334, 335, 336, + 337, 0, 0, 338, 339, 340, 341, 342, 0, 0, + 343, 344, 345, 346, 394, 395, 0, 347, 0, 348, + 102, 0, 0, 0, 349, 350, 351, 352, 353, 354, + 355, 356, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, + 0, 0, 116, 117, 0, 118, 119, 0, 120, 121, + 122, 357, 358, 0, 359, 0, 360, 0, 123, 124, + 125, 126, 127, 0, 0, 128, 361, 362, 129, 0, + 130, 131, 132, 133, 363, 0, 0, 0, 134, 135, + 136, 137, 138, 0, 0, 139, 140, 141, 0, 142, + 143, 144, 145, 146, 147, 0, 0, 148, 149, 150, + 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, + 155, 364, 156, 157, 365, 366, 158, 0, 159, 0, + 160, 161, 162, 163, 164, 0, 165, 166, 167, 0, + 0, 168, 169, 170, 171, 172, 0, 173, 174, 175, + 0, 176, 177, 178, 0, 179, 180, 181, 182, 367, + 183, 184, 185, 368, 0, 186, 0, 187, 188, 369, + 189, 0, 190, 0, 191, 0, 0, 0, 192, 193, + 194, 0, 195, 196, 370, 0, 371, 197, 0, 198, + 199, 200, 201, 546, 203, 204, 205, 206, 0, 207, + 208, 209, 210, 211, 212, 0, 213, 0, 372, 214, + 215, 216, 217, 373, 374, 0, 375, 0, 218, 0, + 219, 0, 220, 221, 222, 223, 224, 0, 0, 225, + 376, 0, 226, 0, 0, 227, 228, 414, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 415, 377, 0, 378, 243, 244, + 379, 0, 245, 246, 247, 0, 380, 248, 381, 249, + 250, 251, 0, 252, 0, 0, 253, 254, 0, 0, + 255, 382, 0, 256, 0, 383, 257, 258, 259, 260, + 261, 262, 263, 0, 264, 265, 384, 266, 385, 269, + 267, 268, 0, 270, 271, 272, 273, 274, 275, 276, + 277, 386, 278, 279, 280, 281, 0, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 0, 293, + 294, 0, 295, 296, 387, 297, 298, 299, 300, 301, + 302, 303, 0, 304, 305, 306, 307, 416, 0, 308, + 309, 388, 310, 311, 0, 312, 313, 389, 314, 0, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 390, 0, 325, 326, 0, 327, 328, 0, 418, 391, + 0, 0, 417, 329, 392, 330, 393, 0, 331, 332, + 333, 334, 335, 336, 337, 0, 0, 338, 339, 340, + 341, 342, 0, 0, 343, 344, 345, 346, 394, 395, + 0, 347, 0, 348, 102, 0, 0, 0, 349, 350, + 351, 352, 353, 354, 355, 356, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, + 119, 0, 120, 121, 122, 357, 358, 0, 359, 0, + 360, 0, 123, 124, 125, 126, 127, 0, 0, 128, + 361, 362, 129, 0, 130, 131, 132, 133, 363, 0, + 0, 0, 134, 135, 136, 137, 138, 0, 0, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, + 151, 152, 153, 154, 155, 364, 156, 157, 365, 366, + 158, 0, 159, 0, 160, 161, 162, 163, 164, 0, + 165, 166, 167, 0, 0, 168, 169, 170, 171, 172, + 0, 173, 174, 175, 0, 176, 177, 178, 0, 179, + 180, 181, 182, 367, 183, 184, 185, 368, 0, 186, + 0, 187, 188, 369, 189, 0, 190, 0, 191, 0, + 0, 0, 192, 193, 194, 0, 195, 196, 370, 0, + 371, 197, 0, 198, 199, 200, 201, 542, 203, 204, + 205, 206, 0, 207, 208, 209, 210, 211, 212, 0, + 213, 0, 372, 214, 215, 216, 217, 373, 374, 0, + 375, 0, 218, 0, 219, 0, 220, 221, 222, 223, + 224, 0, 0, 225, 376, 0, 226, 0, 0, 227, + 228, 414, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 415, 377, + 0, 378, 243, 244, 379, 0, 245, 246, 247, 0, + 380, 248, 381, 249, 250, 251, 0, 252, 0, 0, + 253, 254, 0, 0, 255, 382, 0, 256, 0, 383, + 257, 258, 259, 260, 261, 262, 263, 0, 264, 265, + 384, 266, 385, 269, 267, 268, 0, 270, 271, 272, + 273, 274, 275, 276, 277, 386, 278, 279, 280, 281, + 0, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 0, 293, 294, 0, 295, 296, 387, 297, + 298, 299, 300, 301, 302, 303, 0, 304, 305, 306, + 307, 416, 0, 308, 309, 388, 310, 311, 0, 312, + 313, 389, 314, 0, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 390, 0, 325, 326, 0, 327, + 328, 0, 418, 391, 0, 0, 417, 329, 392, 330, + 393, 0, 331, 332, 333, 334, 335, 336, 337, 0, + 0, 338, 339, 340, 341, 342, 0, 0, 343, 344, + 345, 346, 394, 395, 0, 347, 0, 348, 102, 0, + 0, 0, 349, 350, 351, 352, 353, 354, 355, 356, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 0, 118, 119, 0, 120, 121, 122, 357, + 358, 0, 359, 0, 360, 0, 123, 124, 125, 126, + 127, 0, 0, 128, 361, 362, 508, 0, 130, 131, + 132, 133, 363, 0, 0, 0, 134, 135, 136, 137, + 138, 0, 0, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 0, 148, 149, 150, 0, 0, + 0, 0, 0, 0, 151, 152, 153, 154, 155, 364, + 156, 157, 365, 366, 158, 0, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 170, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 367, 183, 184, + 185, 368, 0, 186, 0, 187, 188, 369, 189, 0, + 190, 0, 191, 0, 0, 0, 192, 193, 194, 0, + 195, 196, 370, 0, 371, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 0, 372, 214, 215, 216, + 217, 373, 374, 0, 375, 0, 218, 0, 219, 0, + 220, 221, 222, 223, 224, 0, 0, 225, 376, 0, + 226, 0, 0, 227, 228, 414, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 99, 377, 0, 378, 243, 244, 379, 0, + 245, 246, 247, 0, 380, 248, 381, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 0, 256, 0, 383, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 384, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 386, + 278, 279, 280, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 0, + 295, 296, 387, 297, 298, 299, 300, 301, 302, 303, + 0, 304, 305, 306, 307, 506, 0, 308, 309, 388, + 310, 311, 0, 312, 313, 389, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 390, 0, + 325, 326, 0, 327, 328, 0, 98, 391, 0, 0, + 94, 329, 392, 330, 393, 0, 331, 332, 333, 334, + 335, 336, 337, 0, 0, 338, 339, 340, 341, 342, + 0, 0, 343, 344, 345, 346, 394, 395, 0, 347, + 0, 348, 102, 0, 0, 0, 349, 350, 351, 352, + 353, 354, 355, 356, 0, 105, 106, 107, 108, 109, + 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, + 0, 0, 0, 0, 116, 117, 0, 118, 119, 0, + 120, 121, 122, 357, 358, 0, 359, 0, 360, 0, + 123, 124, 125, 126, 127, 0, 0, 128, 361, 362, + 129, 0, 130, 131, 132, 133, 363, 0, 0, 0, + 134, 135, 136, 137, 138, 0, 0, 139, 140, 141, + 0, 142, 143, 144, 145, 146, 147, 0, 0, 148, + 149, 150, 0, 0, 0, 0, 0, 0, 151, 152, + 153, 154, 155, 364, 156, 157, 365, 366, 158, 0, + 159, 0, 160, 161, 162, 163, 164, 0, 165, 166, + 167, 0, 0, 168, 169, 170, 171, 172, 0, 173, + 174, 175, 0, 176, 177, 178, 0, 179, 180, 181, + 182, 367, 183, 184, 185, 368, 0, 186, 0, 187, + 188, 369, 189, 0, 190, 0, 191, 0, 0, 0, + 192, 193, 194, 0, 195, 196, 370, 0, 371, 197, + 0, 198, 199, 200, 201, 501, 203, 204, 205, 206, + 0, 207, 208, 209, 210, 211, 212, 0, 213, 0, + 372, 214, 215, 216, 217, 373, 374, 0, 375, 0, + 218, 0, 219, 0, 220, 221, 222, 223, 224, 0, + 0, 225, 376, 0, 226, 0, 0, 227, 228, 414, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 415, 377, 0, 378, + 243, 244, 379, 0, 245, 246, 247, 0, 380, 248, + 381, 249, 250, 251, 0, 252, 0, 0, 253, 254, + 0, 0, 255, 382, 0, 256, 0, 383, 257, 258, + 259, 260, 261, 262, 263, 0, 264, 265, 384, 266, + 385, 269, 267, 268, 0, 270, 271, 272, 273, 274, + 275, 276, 277, 386, 278, 279, 280, 281, 0, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 0, 293, 294, 0, 295, 296, 387, 297, 298, 299, + 300, 301, 302, 303, 0, 304, 305, 306, 307, 416, + 0, 308, 309, 388, 310, 311, 0, 312, 313, 389, + 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 390, 0, 325, 326, 0, 327, 328, 0, + 418, 391, 0, 0, 417, 329, 392, 330, 393, 0, + 331, 332, 333, 334, 335, 336, 337, 0, 0, 338, + 339, 340, 341, 342, 0, 0, 343, 344, 345, 346, + 394, 395, 0, 347, 0, 348, 102, 0, 0, 0, + 349, 350, 351, 352, 353, 354, 355, 356, 0, 105, + 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, + 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 0, 118, 119, 0, 120, 121, 122, 357, 358, 0, + 359, 0, 360, 0, 123, 124, 125, 126, 127, 0, + 0, 128, 361, 362, 129, 0, 130, 131, 132, 133, + 363, 0, 0, 0, 134, 135, 136, 137, 138, 0, + 0, 139, 140, 141, 0, 142, 143, 144, 145, 146, + 147, 0, 0, 148, 149, 150, 0, 0, 0, 0, + 0, 0, 151, 152, 153, 154, 155, 364, 156, 157, + 365, 366, 158, 0, 159, 0, 160, 161, 162, 163, + 164, 0, 165, 166, 167, 0, 0, 168, 169, 170, + 171, 172, 0, 173, 174, 175, 0, 176, 177, 178, + 0, 179, 180, 181, 182, 367, 183, 184, 185, 368, + 0, 186, 0, 187, 188, 369, 189, 0, 190, 0, + 191, 0, 0, 0, 192, 193, 194, 0, 195, 196, + 370, 0, 371, 197, 0, 198, 199, 200, 201, 467, + 203, 204, 205, 206, 0, 207, 208, 209, 210, 211, + 212, 0, 213, 0, 372, 214, 215, 216, 217, 373, + 374, 0, 375, 0, 218, 0, 219, 0, 220, 221, + 222, 223, 224, 0, 0, 225, 376, 0, 226, 0, + 0, 227, 228, 414, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 415, 377, 0, 378, 243, 244, 379, 0, 245, 246, + 247, 0, 380, 248, 381, 249, 250, 251, 0, 252, + 0, 0, 253, 254, 0, 0, 255, 382, 0, 256, + 0, 383, 257, 258, 259, 260, 261, 262, 263, 0, + 264, 265, 384, 266, 385, 269, 267, 268, 0, 270, + 271, 272, 273, 274, 275, 276, 277, 386, 278, 279, + 280, 281, 0, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 0, 293, 294, 0, 295, 296, + 387, 297, 298, 299, 300, 301, 302, 303, 0, 304, + 305, 306, 307, 416, 0, 308, 309, 388, 310, 311, + 0, 312, 313, 389, 314, 0, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 390, 0, 325, 326, + 0, 327, 328, 0, 418, 391, 0, 0, 417, 329, + 392, 330, 393, 0, 331, 332, 333, 334, 335, 336, + 337, 0, 0, 338, 339, 340, 341, 342, 0, 0, + 343, 344, 345, 346, 394, 395, 0, 347, 0, 348, + 102, 0, 0, 0, 349, 350, 351, 352, 353, 354, + 355, 356, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, + 0, 0, 116, 117, 0, 118, 119, 0, 120, 121, + 122, 357, 358, 0, 359, 0, 360, 0, 123, 124, + 125, 126, 127, 0, 0, 128, 361, 362, 129, 0, + 130, 131, 132, 133, 363, 0, 0, 0, 134, 135, + 136, 137, 138, 0, 0, 139, 140, 141, 0, 142, + 143, 144, 145, 146, 147, 0, 0, 148, 149, 150, + 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, + 155, 364, 156, 157, 365, 366, 158, 0, 159, 0, + 160, 161, 162, 163, 164, 0, 165, 166, 167, 0, + 0, 168, 169, 170, 171, 172, 0, 173, 174, 175, + 0, 176, 177, 178, 0, 179, 180, 181, 182, 367, + 183, 184, 185, 368, 0, 186, 0, 187, 188, 369, + 189, 0, 190, 0, 191, 0, 0, 0, 192, 193, + 194, 0, 195, 196, 370, 0, 371, 197, 0, 198, + 199, 200, 201, 465, 203, 204, 205, 206, 0, 207, + 208, 209, 210, 211, 212, 0, 213, 0, 372, 214, + 215, 216, 217, 373, 374, 0, 375, 0, 218, 0, + 219, 0, 220, 221, 222, 223, 224, 0, 0, 225, + 376, 0, 226, 0, 0, 227, 228, 414, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 415, 377, 0, 378, 243, 244, + 379, 0, 245, 246, 247, 0, 380, 248, 381, 249, + 250, 251, 0, 252, 0, 0, 253, 254, 0, 0, + 255, 382, 0, 256, 0, 383, 257, 258, 259, 260, + 261, 262, 263, 0, 264, 265, 384, 266, 385, 269, + 267, 268, 0, 270, 271, 272, 273, 274, 275, 276, + 277, 386, 278, 279, 280, 281, 0, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 0, 293, + 294, 0, 295, 296, 387, 297, 298, 299, 300, 301, + 302, 303, 0, 304, 305, 306, 307, 416, 0, 308, + 309, 388, 310, 311, 0, 312, 313, 389, 314, 0, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 390, 0, 325, 326, 0, 327, 328, 0, 418, 391, + 0, 0, 417, 329, 392, 330, 393, 0, 331, 332, + 333, 334, 335, 336, 337, 0, 0, 338, 339, 340, + 341, 342, 0, 0, 343, 344, 345, 346, 394, 395, + 0, 347, 0, 348, 102, 0, 0, 0, 349, 350, + 351, 352, 353, 354, 355, 356, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, + 119, 0, 120, 121, 122, 357, 358, 0, 359, 0, + 360, 0, 123, 124, 125, 126, 127, 0, 0, 128, + 361, 362, 129, 0, 130, 131, 132, 133, 363, 0, + 0, 0, 134, 135, 136, 137, 138, 0, 0, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, + 151, 152, 153, 154, 155, 364, 156, 157, 365, 366, + 158, 0, 159, 0, 160, 161, 162, 163, 164, 0, + 165, 166, 167, 0, 0, 168, 169, 170, 171, 172, + 0, 173, 174, 175, 0, 176, 177, 178, 0, 179, + 180, 181, 182, 367, 183, 184, 185, 368, 0, 186, + 0, 187, 188, 369, 189, 0, 190, 0, 191, 0, + 0, 0, 192, 193, 194, 0, 195, 196, 370, 0, + 371, 197, 0, 198, 199, 200, 201, 461, 203, 204, + 205, 206, 0, 207, 208, 209, 210, 211, 212, 0, + 213, 0, 372, 214, 215, 216, 217, 373, 374, 0, + 375, 0, 218, 0, 219, 0, 220, 221, 222, 223, + 224, 0, 0, 225, 376, 0, 226, 0, 0, 227, + 228, 414, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 415, 377, + 0, 378, 243, 244, 379, 0, 245, 246, 247, 0, + 380, 248, 381, 249, 250, 251, 0, 252, 0, 0, + 253, 254, 0, 0, 255, 382, 0, 256, 0, 383, + 257, 258, 259, 260, 261, 262, 263, 0, 264, 265, + 384, 266, 385, 269, 267, 268, 0, 270, 271, 272, + 273, 274, 275, 276, 277, 386, 278, 279, 280, 281, + 0, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 0, 293, 294, 0, 295, 296, 387, 297, + 298, 299, 300, 301, 302, 303, 0, 304, 305, 306, + 307, 416, 0, 308, 309, 388, 310, 311, 0, 312, + 313, 389, 314, 0, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 390, 0, 325, 326, 0, 327, + 328, 0, 418, 391, 0, 0, 417, 329, 392, 330, + 393, 0, 331, 332, 333, 334, 335, 336, 337, 0, + 0, 338, 339, 340, 341, 342, 0, 0, 343, 344, + 345, 346, 394, 395, 0, 347, 0, 348, 102, 0, + 0, 0, 349, 350, 351, 352, 353, 354, 355, 356, + 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 0, 118, 119, 0, 120, 121, 122, 357, + 358, 0, 359, 0, 360, 0, 123, 124, 125, 126, + 127, 0, 0, 128, 361, 362, 129, 0, 130, 131, + 132, 133, 363, 0, 0, 0, 134, 135, 136, 137, + 138, 0, 0, 139, 140, 141, 0, 142, 143, 144, + 145, 146, 147, 0, 0, 148, 149, 150, 0, 0, + 0, 0, 0, 0, 151, 152, 153, 154, 155, 364, + 156, 157, 365, 366, 158, 0, 159, 0, 160, 161, + 162, 163, 164, 0, 165, 166, 167, 0, 0, 168, + 169, 170, 171, 172, 0, 173, 174, 175, 0, 176, + 177, 178, 0, 179, 180, 181, 182, 367, 183, 184, + 185, 368, 0, 186, 0, 187, 188, 369, 189, 0, + 190, 0, 191, 0, 0, 0, 192, 193, 194, 0, + 195, 196, 370, 0, 371, 197, 0, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 0, 213, 0, 372, 214, 215, 216, + 217, 373, 374, 0, 375, 0, 218, 0, 219, 0, + 220, 221, 222, 223, 224, 0, 0, 225, 376, 0, + 226, 0, 0, 227, 228, 414, 0, 0, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 415, 377, 0, 378, 243, 244, 379, 0, + 245, 246, 247, 0, 380, 248, 381, 249, 250, 251, + 0, 252, 0, 0, 253, 254, 0, 0, 255, 382, + 0, 256, 0, 383, 257, 258, 259, 260, 261, 262, + 263, 0, 264, 265, 384, 266, 385, 269, 267, 268, + 0, 270, 271, 272, 273, 274, 275, 276, 277, 386, + 278, 279, 441, 281, 0, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 0, 293, 294, 0, + 295, 296, 387, 297, 298, 299, 300, 301, 302, 303, + 0, 304, 305, 306, 307, 416, 0, 308, 309, 388, + 310, 311, 0, 312, 313, 389, 314, 0, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 390, 0, + 325, 326, 0, 327, 328, 0, 418, 391, 0, 0, + 417, 329, 392, 330, 393, 0, 331, 332, 333, 334, + 335, 336, 337, 0, 0, 338, 339, 340, 341, 342, + 0, 0, 343, 344, 345, 346, 394, 395, 0, 347, + 0, 348, 102, 0, 0, 0, 349, 350, 351, 352, + 353, 354, 355, 356, 0, 105, 106, 107, 108, 109, + 110, 111, 112, 0, 113, 114, 115, 0, 0, 0, + 0, 0, 0, 0, 116, 117, 0, 118, 119, 0, + 120, 121, 122, 357, 358, 0, 359, 0, 360, 0, + 123, 124, 125, 126, 127, 0, 0, 128, 361, 362, + 129, 0, 130, 131, 132, 133, 363, 0, 0, 0, + 134, 135, 136, 137, 138, 0, 0, 139, 140, 141, + 0, 142, 143, 144, 145, 146, 147, 0, 0, 148, + 149, 150, 0, 0, 0, 0, 0, 0, 151, 152, + 153, 154, 155, 364, 156, 157, 365, 366, 158, 0, + 159, 0, 160, 161, 162, 163, 164, 0, 165, 166, + 167, 0, 0, 168, 169, 170, 171, 172, 0, 173, + 174, 175, 0, 176, 177, 178, 0, 179, 180, 181, + 182, 367, 183, 184, 185, 368, 0, 186, 0, 187, + 188, 369, 189, 0, 190, 0, 191, 0, 0, 0, + 192, 193, 194, 0, 195, 196, 370, 0, 371, 197, + 0, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 0, 207, 208, 209, 210, 211, 212, 0, 213, 0, + 372, 214, 215, 216, 217, 373, 374, 0, 375, 0, + 218, 0, 219, 0, 220, 221, 222, 223, 224, 0, + 0, 225, 376, 0, 226, 0, 0, 227, 228, 414, + 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 415, 377, 0, 378, + 243, 244, 379, 0, 245, 246, 247, 0, 380, 248, + 381, 249, 250, 251, 0, 252, 0, 0, 253, 254, + 0, 0, 255, 382, 0, 256, 0, 383, 257, 258, + 259, 260, 261, 262, 263, 0, 264, 265, 384, 266, + 385, 269, 267, 268, 0, 270, 271, 272, 273, 274, + 275, 276, 277, 386, 278, 279, 280, 281, 0, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 0, 293, 294, 0, 295, 296, 387, 297, 298, 419, + 300, 301, 302, 303, 0, 304, 305, 306, 307, 416, + 0, 308, 309, 388, 310, 311, 0, 312, 313, 389, + 314, 0, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 390, 0, 325, 326, 0, 327, 328, 0, + 418, 391, 0, 0, 417, 329, 392, 330, 393, 0, + 331, 332, 333, 334, 335, 336, 337, 0, 0, 338, + 339, 340, 341, 342, 0, 0, 343, 344, 345, 346, + 394, 395, 0, 347, 0, 348, 102, 0, 0, 0, + 349, 350, 351, 352, 353, 354, 355, 356, 0, 105, + 106, 107, 108, 109, 110, 111, 112, 0, 113, 114, + 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 0, 118, 119, 0, 120, 121, 122, 357, 358, 0, + 359, 0, 360, 0, 123, 124, 125, 126, 127, 0, + 0, 128, 361, 362, 129, 0, 130, 131, 132, 133, + 363, 0, 0, 0, 134, 135, 136, 137, 138, 0, + 0, 139, 140, 141, 0, 142, 143, 144, 145, 146, + 147, 0, 0, 148, 149, 150, 0, 0, 0, 0, + 0, 0, 151, 152, 153, 154, 155, 364, 156, 157, + 365, 366, 158, 0, 159, 0, 160, 161, 162, 163, + 164, 0, 165, 166, 167, 0, 0, 168, 169, 170, + 171, 172, 0, 173, 174, 175, 0, 176, 177, 178, + 0, 179, 180, 181, 182, 367, 183, 184, 185, 368, + 0, 186, 0, 187, 188, 369, 189, 0, 190, 0, + 191, 0, 0, 0, 192, 193, 194, 0, 195, 196, + 370, 0, 371, 197, 0, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 0, 207, 208, 209, 210, 211, + 212, 0, 213, 0, 372, 214, 215, 216, 217, 373, + 374, 0, 375, 0, 218, 0, 219, 0, 220, 221, + 222, 223, 224, 0, 0, 225, 376, 0, 226, 0, + 0, 227, 228, 92, 0, 0, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 99, 377, 0, 378, 243, 244, 379, 0, 245, 246, + 247, 0, 380, 248, 381, 249, 250, 251, 0, 252, + 0, 0, 253, 254, 0, 0, 255, 382, 0, 256, + 0, 383, 257, 258, 259, 260, 261, 262, 263, 0, + 264, 265, 384, 266, 385, 269, 267, 268, 0, 270, + 271, 272, 273, 274, 275, 276, 277, 386, 278, 279, + 280, 281, 0, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 0, 293, 294, 0, 295, 296, + 387, 297, 298, 299, 300, 301, 302, 303, 0, 304, + 305, 306, 307, 93, 0, 308, 309, 388, 310, 311, + 0, 312, 313, 389, 314, 0, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 390, 0, 325, 326, + 0, 327, 328, 0, 98, 391, 0, 0, 94, 329, + 392, 330, 393, 0, 331, 332, 333, 334, 335, 336, + 337, 0, 0, 338, 339, 340, 341, 342, 0, 0, + 343, 344, 345, 346, 394, 395, 0, 347, 0, 348, + 1813, 0, 0, 0, 349, 350, 351, 352, 353, 354, + 355, 356, 0, 105, 106, 107, 108, 109, 110, 111, + 112, 0, 113, 114, 115, 0, 0, 0, 0, 0, + 0, 0, 116, 117, 0, 118, 119, 478, 120, 121, + 122, 0, 1162, 479, 1177, 1157, 1169, 0, 123, 124, + 125, 126, 127, 0, 0, 128, 1179, 1178, 129, 0, + 130, 131, 132, 133, 0, 0, 480, 0, 134, 135, + 136, 137, 138, 0, 481, 139, 140, 141, 0, 142, + 143, 144, 145, 146, 147, 0, 482, 148, 149, 150, + 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, + 155, 1174, 156, 157, 1167, 1166, 158, 0, 159, 0, + 160, 161, 162, 163, 164, 0, 165, 166, 167, 0, + 0, 168, 169, 642, 171, 172, 0, 173, 174, 175, + 0, 176, 177, 178, 0, 179, 180, 181, 182, 0, + 183, 184, 185, 0, 0, 186, 0, 187, 188, 1164, + 189, 0, 190, 0, 191, 483, 0, 484, 192, 193, + 194, 0, 195, 196, 0, 0, 0, 197, 0, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 0, 207, + 208, 209, 210, 211, 212, 0, 213, 485, 0, 214, + 215, 216, 217, 1159, 1160, 0, 762, 0, 218, 486, + 219, 487, 220, 221, 222, 223, 224, 0, 0, 225, + 0, 488, 226, 489, 0, 227, 228, 414, 0, 0, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 415, 0, 490, 0, 243, 244, + 0, 0, 245, 246, 247, 0, 0, 248, 1168, 249, + 250, 251, 0, 252, 0, 0, 253, 254, 0, 0, + 255, 0, 491, 256, 492, 0, 257, 258, 259, 260, + 261, 262, 263, 0, 264, 265, 0, 266, 0, 269, + 267, 268, 0, 270, 271, 272, 273, 274, 275, 276, + 277, 1163, 278, 279, 280, 281, 0, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 0, 293, + 294, 493, 295, 296, 0, 297, 298, 299, 300, 301, + 302, 303, 0, 304, 305, 306, 307, 416, 0, 308, + 309, 0, 310, 311, 494, 312, 313, 1161, 314, 0, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 0, 0, 325, 326, 0, 327, 1815, 0, 1176, 1175, + 0, 0, 417, 329, 0, 330, 0, 0, 331, 332, + 333, 334, 335, 336, 337, 0, 0, 338, 339, 340, + 341, 342, 0, 0, 343, 344, 345, 346, 0, 1180, + 0, 347, 495, 348, 102, 0, 0, 0, 349, 350, + 351, 352, 353, 354, 355, 356, 0, 105, 106, 107, + 108, 109, 110, 111, 112, 0, 113, 114, 115, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 0, 118, + 119, 0, 120, 121, 122, 357, 358, 0, 359, 0, + 360, 0, 123, 124, 125, 126, 127, 0, 0, 128, + 361, 362, 129, 0, 130, 131, 132, 133, 363, 0, + 0, 0, 134, 135, 136, 137, 138, 0, 0, 139, + 140, 141, 0, 142, 143, 144, 145, 146, 147, 0, + 0, 148, 149, 150, 0, 0, 0, 0, 0, 0, + 151, 152, 153, 154, 155, 364, 156, 157, 365, 366, + 158, 0, 159, 0, 160, 161, 162, 163, 164, 0, + 165, 166, 167, 0, 0, 168, 169, 170, 171, 172, + 0, 173, 174, 175, 0, 176, 177, 178, 0, 179, + 180, 181, 182, 367, 183, 184, 185, 368, 0, 186, + 0, 187, 188, 369, 189, 0, 190, 0, 191, 0, + 0, 0, 192, 193, 194, 0, 195, 196, 370, 0, + 371, 197, 0, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 0, 207, 208, 209, 210, 211, 212, 0, + 213, 0, 372, 214, 215, 216, 217, 373, 374, 0, + 375, 0, 218, 0, 219, 0, 220, 221, 222, 223, + 224, 0, 0, 225, 376, 0, 226, 0, 0, 227, + 228, 414, 0, 0, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 415, 377, + 0, 378, 243, 244, 379, 0, 245, 246, 247, 0, + 380, 248, 381, 249, 250, 251, 0, 252, 0, 0, + 253, 254, 0, 0, 255, 382, 0, 256, 0, 383, + 257, 258, 259, 260, 0, 262, 263, 0, 264, 265, + 384, 266, 385, 269, 267, 268, 0, 270, 271, 272, + 273, 274, 275, 0, 277, 386, 278, 279, 280, 281, + 0, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 0, 293, 294, 0, 295, 296, 387, 0, + 298, 299, 300, 301, 302, 303, 0, 304, 305, 306, + 307, 416, 0, 308, 309, 388, 310, 311, 0, 312, + 313, 389, 314, 0, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 390, 0, 325, 326, 0, 327, + 328, 0, 418, 391, 0, 0, 417, 329, 392, 330, + 393, 0, 331, 332, 333, 334, 335, 336, 337, 0, + 0, 338, 339, 340, 341, 342, 0, 0, 343, 344, + 345, 346, 394, 395, 0, 347, 905, 348, 921, 922, + 923, 0, 349, 350, 351, 352, 353, 354, 355, 356, + 0, 0, 0, 0, 0, 905, 924, 921, 922, 923, + 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, + 930, 0, 0, 0, 0, 924, 0, 905, 0, 921, + 922, 923, 0, 907, 0, 0, 0, 0, 0, 930, + 0, 0, 0, 0, 906, 0, 905, 924, 921, 922, + 923, 0, 920, 0, 0, 907, 0, 0, 0, 0, + 0, 930, 0, 906, 0, 0, 924, 0, 0, 0, + 0, 920, 0, 0, 907, 905, 0, 921, 922, 923, + 930, 0, 0, 0, 0, 906, 0, 0, 0, 0, + 0, 0, 0, 920, 905, 924, 921, 922, 923, 0, + 0, 0, 0, 907, 906, 0, 0, 0, 0, 930, + 0, 0, 920, 0, 924, 0, 905, 0, 921, 922, + 923, 0, 907, 0, 0, 0, 0, 0, 930, 0, + 0, 0, 0, 906, 0, 905, 924, 921, 922, 923, + 0, 920, 0, 0, 907, 0, 0, 0, 0, 0, + 930, 0, 906, 0, 0, 924, 0, 931, 0, 0, + 920, 0, 0, 907, 0, 0, 0, 0, 0, 930, + 0, 0, 0, 0, 906, 0, 931, 0, 929, 0, + 0, 0, 920, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 926, 906, 0, 0, 0, 929, 931, 0, + 0, 920, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 926, 0, 0, 0, 0, 0, 931, 0, 929, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 920, 0, 0, 910, 911, 912, 0, 901, - 902, 903, 904, 905, 907, 908, 906, 909, 0, 0, - 0, 0, 937, 1878, 0, 0, 0, 0, 1133, 0, + 0, 0, 0, 926, 0, 0, 0, 925, 929, 0, + 0, 0, 0, 0, 0, 0, 931, 0, 0, 0, + 0, 0, 926, 0, 0, 0, 925, 0, 0, 0, + 0, 0, 0, 0, 0, 931, 0, 929, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 925, 0, + 0, 926, 0, 0, 0, 0, 929, 931, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 925, 0, 0, + 926, 0, 0, 0, 0, 0, 931, 0, 929, 0, + 0, 0, 0, 928, 0, 0, 0, 0, 0, 0, + 0, 0, 926, 0, 0, 0, 925, 929, 0, 0, + 0, 0, 928, 0, 0, 0, 0, 0, 0, 0, + 0, 926, 0, 0, 0, 925, 0, 0, 0, 0, + 0, 0, 0, 0, 928, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 925, 0, 0, + 0, 0, 0, 928, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 927, 925, 0, 917, 918, + 919, 0, 908, 909, 910, 911, 912, 914, 915, 913, + 916, 0, 928, 0, 927, 0, 1909, 917, 918, 919, + 0, 908, 909, 910, 911, 912, 914, 915, 913, 916, + 0, 928, 0, 0, 0, 1885, 927, 0, 0, 917, + 918, 919, 0, 908, 909, 910, 911, 912, 914, 915, + 913, 916, 0, 928, 0, 927, 0, 1778, 917, 918, + 919, 0, 908, 909, 910, 911, 912, 914, 915, 913, + 916, 0, 928, 0, 0, 0, 1714, 0, 0, 0, + 0, 0, 0, 0, 927, 0, 0, 917, 918, 919, + 0, 908, 909, 910, 911, 912, 914, 915, 913, 916, + 0, 0, 0, 927, 0, 1689, 917, 918, 919, 0, + 908, 909, 910, 911, 912, 914, 915, 913, 916, 0, + 0, 0, 0, 0, 1635, 927, 0, 0, 917, 918, + 919, 0, 908, 909, 910, 911, 912, 914, 915, 913, + 916, 0, 0, 0, 927, 0, 1230, 917, 918, 919, + 0, 908, 909, 910, 911, 912, 914, 915, 913, 916, + 0, 0, 905, 1760, 921, 922, 923, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 905, 924, 921, 922, 923, 1129, 0, 0, 0, + 907, 0, 0, 0, 0, 0, 930, 0, 0, 0, + 0, 924, 0, 0, 0, 0, 0, 0, 0, 907, + 0, 0, 0, 0, 905, 930, 921, 922, 923, 0, + 906, 0, 0, 0, 0, 0, 934, 0, 920, 0, + 0, 0, 0, 905, 924, 921, 922, 923, 0, 906, + 0, 0, 907, 0, 0, 0, 0, 920, 930, 0, + 0, 0, 0, 924, 0, 0, 933, 0, 0, 0, + 0, 907, 0, 0, 0, 0, 0, 930, 0, 0, + 1130, 0, 906, 0, 0, 0, 0, 0, 0, 0, + 920, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 906, 0, 0, 0, 0, 0, 0, 0, 920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1806, 696, 1800, 0, 0, 701, 0, 0, 0, - 1403, 1404, 1405, 0, 98, 99, 100, 101, 102, 103, - 104, 105, 763, 106, 107, 108, 764, 765, 766, 767, - 768, 769, 770, 109, 110, 771, 111, 112, 471, 113, - 114, 115, 937, 1155, 472, 1170, 1150, 1162, 772, 116, - 117, 118, 119, 120, 773, 774, 121, 1172, 1171, 122, - 775, 123, 124, 125, 126, 0, 776, 473, 777, 127, - 128, 129, 130, 131, 1402, 474, 132, 133, 134, 778, - 135, 136, 137, 138, 139, 140, 779, 475, 141, 142, - 143, 780, 781, 782, 783, 784, 785, 144, 145, 146, - 147, 148, 1167, 149, 150, 1160, 1159, 151, 786, 152, - 787, 153, 154, 155, 156, 157, 788, 158, 159, 160, - 789, 790, 161, 162, 635, 164, 165, 791, 166, 167, - 168, 792, 169, 170, 171, 793, 172, 173, 174, 175, - 0, 176, 177, 178, 0, 794, 179, 795, 180, 181, - 1157, 182, 796, 183, 797, 184, 476, 798, 477, 185, - 186, 187, 799, 188, 189, 0, 800, 0, 190, 801, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 802, - 200, 201, 202, 203, 204, 205, 803, 206, 478, 0, - 207, 208, 209, 210, 1152, 1153, 804, 755, 805, 211, - 479, 212, 480, 213, 214, 215, 216, 217, 806, 807, - 218, 0, 481, 219, 482, 808, 220, 221, 407, 809, - 810, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 408, 0, 483, 0, 236, - 237, 0, 811, 238, 239, 240, 812, 0, 241, 1161, - 242, 243, 244, 813, 245, 814, 815, 246, 247, 816, - 817, 248, 0, 484, 249, 485, 0, 250, 251, 252, - 253, 254, 255, 256, 818, 257, 258, 0, 259, 0, - 262, 260, 261, 819, 263, 264, 265, 266, 267, 268, - 269, 270, 1156, 271, 272, 273, 274, 820, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 821, - 286, 287, 486, 288, 289, 0, 290, 291, 292, 293, - 294, 295, 296, 822, 297, 298, 299, 300, 409, 823, - 301, 302, 1803, 303, 304, 487, 305, 306, 1154, 307, - 824, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 0, 825, 318, 319, 826, 320, 1808, 827, 1169, - 1168, 828, 829, 410, 322, 0, 323, 0, 830, 324, - 325, 326, 327, 328, 329, 330, 831, 832, 331, 332, - 333, 334, 335, 833, 834, 336, 337, 338, 339, 0, - 1173, 835, 340, 488, 341, 836, 837, 838, 839, 342, - 343, 344, 345, 346, 347, 348, 349, 0, 0, 0, - 1399, 1400, 1401, 758, 1804, 1805, 1392, 1393, 1394, 1395, - 1396, 1397, 1398, 0, 0, 0, 98, 99, 100, 101, - 102, 103, 104, 105, 763, 106, 107, 108, 764, 765, - 766, 767, 768, 769, 770, 109, 110, 771, 111, 112, - 471, 113, 114, 115, 350, 351, 472, 352, 0, 353, - 772, 116, 117, 118, 119, 120, 773, 774, 121, 354, - 355, 122, 775, 123, 124, 125, 126, 356, 776, 473, - 777, 127, 128, 129, 130, 131, 0, 474, 132, 133, - 134, 778, 135, 136, 137, 138, 139, 140, 779, 475, - 141, 142, 143, 780, 781, 782, 783, 784, 785, 144, - 145, 146, 147, 148, 357, 149, 150, 358, 359, 151, - 786, 152, 787, 153, 154, 155, 156, 157, 788, 158, - 159, 160, 789, 790, 161, 162, 163, 164, 165, 791, - 166, 167, 168, 792, 169, 170, 171, 793, 172, 173, - 174, 175, 360, 176, 177, 178, 361, 794, 179, 795, - 180, 181, 362, 182, 796, 183, 797, 184, 476, 798, - 477, 185, 186, 187, 799, 188, 189, 363, 800, 364, - 190, 801, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 802, 200, 201, 202, 203, 204, 205, 803, 206, - 478, 365, 207, 208, 209, 210, 366, 367, 804, 368, - 805, 211, 479, 212, 480, 213, 214, 215, 216, 217, - 806, 807, 218, 369, 481, 219, 482, 808, 220, 221, - 407, 809, 810, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 408, 370, 483, - 371, 236, 237, 372, 811, 238, 239, 240, 812, 373, - 241, 374, 242, 243, 244, 813, 245, 814, 815, 246, - 247, 816, 817, 248, 375, 484, 249, 485, 376, 250, - 251, 252, 253, 254, 255, 256, 818, 257, 258, 377, - 259, 378, 262, 260, 261, 819, 263, 264, 265, 266, - 267, 268, 269, 270, 379, 271, 272, 273, 274, 820, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 821, 286, 287, 486, 288, 289, 380, 290, 291, - 292, 293, 294, 295, 296, 822, 297, 298, 299, 300, - 409, 823, 301, 302, 381, 303, 304, 487, 305, 306, - 382, 307, 824, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 383, 825, 318, 319, 826, 320, 321, - 827, 411, 384, 828, 829, 410, 322, 385, 323, 386, - 830, 324, 325, 326, 327, 328, 329, 330, 831, 832, - 331, 332, 333, 334, 335, 833, 834, 336, 337, 338, - 339, 387, 388, 835, 340, 488, 341, 836, 837, 838, - 839, 342, 343, 344, 345, 346, 347, 348, 349, 758, - 0, 0, 0, 0, 0, 0, 0, 0, 997, 0, - 0, 0, 98, 99, 100, 101, 102, 103, 104, 105, - 763, 106, 107, 108, 764, 765, 766, 767, 768, 769, - 770, 109, 110, 771, 111, 112, 471, 113, 114, 115, - 350, 351, 472, 352, 0, 353, 772, 116, 117, 118, - 119, 120, 773, 774, 121, 354, 355, 122, 775, 123, - 124, 125, 126, 356, 776, 473, 777, 127, 128, 129, - 130, 131, 0, 474, 132, 133, 134, 778, 135, 136, - 137, 138, 139, 140, 779, 475, 141, 142, 143, 780, - 781, 782, 783, 784, 785, 144, 145, 146, 147, 148, - 357, 149, 150, 358, 359, 151, 786, 152, 787, 153, - 154, 155, 156, 157, 788, 158, 159, 160, 789, 790, - 161, 162, 163, 164, 165, 791, 166, 167, 168, 792, - 169, 170, 171, 793, 172, 173, 174, 175, 360, 176, - 177, 178, 361, 794, 179, 795, 180, 181, 362, 182, - 796, 183, 797, 184, 476, 798, 477, 185, 186, 187, - 799, 188, 189, 363, 800, 364, 190, 801, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 802, 200, 201, - 202, 203, 204, 205, 803, 206, 478, 365, 207, 208, - 209, 210, 366, 367, 804, 368, 805, 211, 479, 212, - 480, 213, 214, 215, 216, 217, 806, 807, 218, 369, - 481, 219, 482, 808, 220, 221, 407, 809, 810, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 408, 370, 483, 371, 236, 237, 372, - 811, 238, 239, 240, 812, 373, 241, 374, 242, 243, - 244, 813, 245, 814, 815, 246, 247, 816, 817, 248, - 375, 484, 249, 485, 376, 250, 251, 252, 253, 254, - 255, 256, 818, 257, 258, 377, 259, 378, 262, 260, - 261, 819, 263, 264, 265, 266, 267, 268, 269, 270, - 379, 271, 272, 273, 274, 820, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 821, 286, 287, - 486, 288, 289, 380, 290, 291, 292, 293, 294, 295, - 296, 822, 297, 298, 299, 300, 409, 823, 301, 302, - 381, 303, 304, 487, 305, 306, 382, 307, 824, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 383, - 825, 318, 319, 826, 320, 321, 827, 411, 384, 828, - 829, 410, 322, 385, 323, 386, 830, 324, 325, 326, - 327, 328, 329, 330, 831, 832, 331, 332, 333, 334, - 335, 833, 834, 336, 337, 338, 339, 387, 388, 835, - 340, 488, 341, 836, 837, 838, 839, 342, 343, 344, - 345, 346, 347, 348, 349, 606, 593, 594, 595, 596, - 592, 580, 0, 0, 0, 0, 0, 0, 98, 99, - 100, 101, 102, 103, 104, 105, 0, 106, 107, 108, - 0, 0, 0, 0, 586, 0, 0, 109, 110, 0, - 111, 112, 471, 113, 114, 115, 350, 636, 472, 637, - 0, 638, 0, 116, 117, 118, 119, 120, 603, 624, - 121, 639, 640, 122, 0, 123, 124, 125, 126, 632, - 0, 614, 0, 127, 128, 129, 130, 131, 0, 474, - 132, 133, 134, 0, 135, 136, 137, 138, 139, 140, - 0, 475, 141, 142, 143, 0, 615, 620, 616, 617, - 621, 144, 145, 146, 147, 148, 641, 149, 150, 642, - 643, 151, 0, 152, 0, 153, 154, 155, 156, 157, - 0, 158, 159, 160, 0, 0, 161, 162, 635, 164, - 165, 0, 166, 167, 168, 0, 169, 170, 171, 0, - 172, 173, 174, 175, 585, 176, 177, 178, 625, 601, - 179, 0, 180, 181, 644, 182, 0, 183, 0, 184, - 476, 0, 477, 185, 186, 187, 0, 188, 189, 633, - 0, 589, 190, 0, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 0, 200, 201, 202, 203, 204, 205, - 0, 206, 478, 365, 207, 208, 209, 210, 645, 646, - 0, 613, 0, 211, 479, 212, 480, 213, 214, 215, - 216, 217, 0, 0, 218, 634, 481, 219, 482, 0, - 220, 221, 407, 618, 619, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 408, - 370, 483, 371, 236, 237, 372, 574, 238, 239, 240, - 602, 631, 241, 647, 242, 243, 244, 0, 245, 0, - 0, 246, 247, 0, 0, 248, 375, 484, 249, 485, - 626, 250, 251, 252, 253, 254, 255, 256, 0, 257, - 258, 627, 259, 378, 262, 260, 261, 0, 263, 264, - 265, 266, 267, 268, 269, 270, 648, 271, 272, 273, - 274, 0, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 0, 286, 287, 486, 288, 289, 590, - 290, 291, 292, 293, 294, 295, 296, 53, 297, 298, - 299, 300, 409, 622, 301, 302, 381, 303, 304, 487, - 305, 306, 649, 307, 0, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 628, 0, 318, 319, 55, - 320, 321, 0, 650, 651, 0, 0, 410, 322, 629, - 323, 630, 600, 324, 325, 326, 327, 328, 329, 330, - 0, 577, 331, 332, 333, 334, 335, 623, 0, 336, - 337, 338, 339, 466, 652, 0, 340, 488, 341, 0, - 0, 0, 51, 342, 343, 344, 345, 346, 347, 348, - 349, 575, 0, 52, 0, 0, 0, 0, 571, 572, - 606, 593, 594, 595, 596, 592, 580, 0, 573, 0, - 0, 581, 1962, 98, 99, 100, 101, 102, 103, 104, - 105, 1236, 106, 107, 108, 0, 0, 0, 0, 586, - 0, 0, 109, 110, 0, 111, 112, 471, 113, 114, - 115, 350, 636, 472, 637, 0, 638, 0, 116, 117, - 118, 119, 120, 603, 624, 121, 639, 640, 122, 0, - 123, 124, 125, 126, 632, 0, 614, 0, 127, 128, - 129, 130, 131, 0, 474, 132, 133, 134, 0, 135, - 136, 137, 138, 139, 140, 0, 475, 141, 142, 143, - 0, 615, 620, 616, 617, 621, 144, 145, 146, 147, - 148, 641, 149, 150, 642, 643, 151, 0, 152, 0, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 1237, - 0, 161, 162, 635, 164, 165, 0, 166, 167, 168, - 0, 169, 170, 171, 0, 172, 173, 174, 175, 585, - 176, 177, 178, 625, 601, 179, 0, 180, 181, 644, - 182, 0, 183, 0, 184, 476, 0, 477, 185, 186, - 187, 0, 188, 189, 633, 0, 589, 190, 0, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 0, 200, - 201, 202, 203, 204, 205, 0, 206, 478, 365, 207, - 208, 209, 210, 645, 646, 0, 613, 0, 211, 479, - 212, 480, 213, 214, 215, 216, 217, 0, 0, 218, - 634, 481, 219, 482, 0, 220, 221, 407, 618, 619, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 408, 370, 483, 371, 236, 237, - 372, 574, 238, 239, 240, 602, 631, 241, 647, 242, - 243, 244, 0, 245, 0, 0, 246, 247, 0, 0, - 248, 375, 484, 249, 485, 626, 250, 251, 252, 253, - 254, 255, 256, 0, 257, 258, 627, 259, 378, 262, - 260, 261, 0, 263, 264, 265, 266, 267, 268, 269, - 270, 648, 271, 272, 273, 274, 0, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 0, 286, - 287, 486, 288, 289, 590, 290, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 299, 300, 409, 622, 301, - 302, 381, 303, 304, 487, 305, 306, 649, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 628, 0, 318, 319, 0, 320, 321, 0, 650, 651, - 0, 0, 410, 322, 629, 323, 630, 600, 324, 325, - 326, 327, 328, 329, 330, 0, 577, 331, 332, 333, - 334, 335, 623, 0, 336, 337, 338, 339, 387, 652, - 1235, 340, 488, 341, 0, 0, 0, 0, 342, 343, - 344, 345, 346, 347, 348, 349, 575, 0, 0, 0, - 0, 0, 0, 571, 572, 1238, 606, 593, 594, 595, - 596, 592, 580, 573, 0, 0, 581, 1233, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 586, 0, 0, 109, 110, - 0, 111, 112, 471, 113, 114, 115, 350, 636, 472, - 637, 0, 638, 0, 116, 117, 118, 119, 120, 603, - 624, 121, 639, 640, 122, 0, 123, 124, 125, 126, - 632, 0, 614, 0, 127, 128, 129, 130, 131, 0, - 474, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 475, 141, 142, 143, 0, 615, 620, 616, - 617, 621, 144, 145, 146, 147, 148, 641, 149, 150, - 642, 643, 151, 673, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 635, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 585, 176, 177, 178, 625, - 601, 179, 0, 180, 181, 644, 182, 0, 183, 0, - 184, 476, 0, 477, 185, 186, 187, 0, 188, 189, - 633, 0, 589, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 478, 365, 207, 208, 209, 210, 645, - 646, 0, 613, 0, 211, 479, 212, 480, 213, 214, - 215, 216, 217, 0, 0, 218, 634, 481, 219, 482, - 0, 220, 221, 407, 618, 619, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 408, 370, 483, 371, 236, 237, 372, 574, 238, 239, - 240, 602, 631, 241, 647, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 484, 249, - 485, 626, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 627, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 648, 271, 272, - 273, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 486, 288, 289, - 590, 290, 291, 292, 293, 294, 295, 296, 53, 297, - 298, 299, 300, 409, 622, 301, 302, 381, 303, 304, - 487, 305, 306, 649, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 628, 0, 318, 319, - 55, 320, 321, 0, 650, 651, 0, 0, 410, 322, - 629, 323, 630, 600, 324, 325, 326, 327, 328, 329, - 330, 0, 577, 331, 332, 333, 334, 335, 623, 0, - 336, 337, 338, 339, 466, 652, 0, 340, 488, 341, - 0, 0, 0, 51, 342, 343, 344, 345, 346, 347, - 348, 349, 575, 0, 52, 0, 0, 0, 0, 571, - 572, 606, 593, 594, 595, 596, 592, 580, 0, 573, - 0, 0, 581, 0, 98, 99, 100, 101, 102, 103, - 104, 105, 0, 106, 107, 108, 0, 0, 0, 0, - 586, 0, 0, 109, 110, 0, 111, 112, 471, 113, - 114, 115, 350, 636, 472, 637, 0, 638, 0, 116, - 117, 118, 119, 120, 603, 624, 121, 639, 640, 122, - 0, 123, 124, 125, 126, 632, 0, 614, 0, 127, - 128, 129, 130, 131, 0, 474, 132, 133, 134, 0, - 135, 136, 137, 138, 139, 140, 0, 475, 141, 142, - 143, 0, 615, 620, 616, 617, 621, 144, 145, 146, - 147, 148, 641, 149, 150, 642, 643, 151, 0, 152, - 0, 153, 154, 155, 156, 157, 0, 158, 159, 160, - 0, 0, 161, 162, 635, 164, 165, 0, 166, 167, - 168, 0, 169, 170, 171, 0, 172, 173, 174, 175, - 585, 176, 177, 178, 625, 601, 179, 0, 180, 181, - 644, 182, 0, 183, 0, 184, 476, 0, 477, 185, - 186, 187, 0, 188, 189, 633, 0, 589, 190, 0, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 0, 206, 478, 365, - 207, 208, 209, 210, 645, 646, 0, 613, 0, 211, - 479, 212, 480, 213, 214, 215, 216, 217, 0, 0, - 218, 634, 481, 219, 482, 0, 220, 221, 407, 618, - 619, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 408, 370, 483, 371, 236, - 237, 372, 574, 238, 239, 240, 602, 631, 241, 647, - 242, 243, 244, 0, 245, 0, 0, 246, 247, 0, - 0, 248, 375, 484, 249, 485, 626, 250, 251, 252, - 253, 254, 255, 256, 0, 257, 258, 627, 259, 378, - 262, 260, 261, 0, 263, 264, 265, 266, 267, 268, - 269, 270, 648, 271, 272, 273, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 0, - 286, 287, 486, 288, 289, 590, 290, 291, 292, 293, - 294, 295, 296, 53, 297, 298, 299, 300, 409, 622, - 301, 302, 381, 303, 304, 487, 305, 306, 649, 307, - 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 628, 0, 318, 319, 55, 320, 321, 0, 650, - 651, 0, 0, 410, 322, 629, 323, 630, 600, 324, - 325, 326, 327, 328, 329, 330, 0, 577, 331, 332, - 333, 334, 335, 623, 0, 336, 337, 338, 339, 466, - 652, 0, 340, 488, 341, 0, 0, 0, 51, 342, - 343, 344, 345, 346, 347, 348, 349, 575, 0, 52, - 0, 0, 0, 0, 571, 572, 606, 593, 594, 595, - 596, 592, 580, 0, 573, 0, 0, 581, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 586, 0, 0, 109, 110, - 0, 111, 112, 471, 113, 114, 115, 350, 636, 472, - 637, 0, 638, 1284, 116, 117, 118, 119, 120, 603, - 624, 121, 639, 640, 122, 0, 123, 124, 125, 126, - 632, 0, 614, 0, 127, 128, 129, 130, 131, 0, - 474, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 475, 141, 142, 143, 0, 615, 620, 616, - 617, 621, 144, 145, 146, 147, 148, 641, 149, 150, - 642, 643, 151, 0, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 635, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 585, 176, 177, 178, 625, - 601, 179, 0, 180, 181, 644, 182, 0, 183, 0, - 184, 476, 1289, 477, 185, 186, 187, 0, 188, 189, - 633, 0, 589, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 478, 365, 207, 208, 209, 210, 645, - 646, 0, 613, 0, 211, 479, 212, 480, 213, 214, - 215, 216, 217, 0, 1285, 218, 634, 481, 219, 482, - 0, 220, 221, 407, 618, 619, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 408, 370, 483, 371, 236, 237, 372, 574, 238, 239, - 240, 602, 631, 241, 647, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 484, 249, - 485, 626, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 627, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 648, 271, 272, - 273, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 486, 288, 289, - 590, 290, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 409, 622, 301, 302, 381, 303, 304, - 487, 305, 306, 649, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 628, 0, 318, 319, - 0, 320, 321, 0, 650, 651, 0, 1286, 410, 322, - 629, 323, 630, 600, 324, 325, 326, 327, 328, 329, - 330, 0, 577, 331, 332, 333, 334, 335, 623, 0, - 336, 337, 338, 339, 387, 652, 0, 340, 488, 341, - 0, 0, 0, 0, 342, 343, 344, 345, 346, 347, - 348, 349, 575, 0, 0, 0, 0, 0, 0, 571, - 572, 606, 593, 594, 595, 596, 592, 580, 0, 573, - 0, 0, 581, 0, 98, 99, 100, 101, 102, 103, - 104, 105, 0, 106, 107, 108, 0, 0, 0, 0, - 586, 0, 0, 109, 110, 0, 111, 112, 471, 113, - 114, 115, 350, 636, 472, 637, 0, 638, 0, 116, - 117, 118, 119, 120, 603, 624, 121, 639, 640, 122, - 0, 123, 124, 125, 126, 632, 0, 614, 0, 127, - 128, 129, 130, 131, 0, 474, 132, 133, 134, 0, - 135, 136, 137, 138, 139, 140, 0, 475, 141, 142, - 143, 0, 615, 620, 616, 617, 621, 144, 145, 146, - 147, 148, 641, 149, 150, 642, 643, 151, 0, 152, - 0, 153, 154, 155, 156, 157, 0, 158, 159, 160, - 0, 0, 161, 162, 635, 164, 165, 0, 166, 167, - 168, 0, 169, 170, 171, 0, 172, 173, 174, 175, - 585, 176, 177, 178, 625, 601, 179, 0, 180, 181, - 644, 182, 0, 183, 0, 184, 476, 0, 477, 185, - 186, 187, 0, 188, 189, 633, 0, 589, 190, 0, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 0, 206, 478, 365, - 207, 208, 209, 210, 645, 646, 0, 613, 0, 211, - 479, 212, 480, 213, 214, 215, 216, 217, 0, 0, - 218, 634, 481, 219, 482, 0, 220, 221, 407, 618, - 619, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 408, 370, 483, 371, 236, - 237, 372, 574, 238, 239, 240, 602, 631, 241, 647, - 242, 243, 244, 0, 245, 0, 0, 246, 247, 0, - 0, 248, 375, 484, 249, 485, 626, 250, 251, 252, - 253, 254, 255, 256, 0, 257, 258, 627, 259, 378, - 262, 260, 261, 0, 263, 264, 265, 266, 267, 268, - 269, 270, 648, 271, 272, 273, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 0, - 286, 287, 486, 288, 289, 590, 290, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 409, 622, - 301, 302, 381, 303, 304, 487, 305, 306, 649, 307, - 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 628, 0, 318, 319, 0, 320, 321, 0, 650, - 651, 0, 0, 410, 322, 629, 323, 630, 600, 324, - 325, 326, 327, 328, 329, 330, 0, 577, 331, 332, - 333, 334, 335, 623, 0, 336, 337, 338, 339, 387, - 652, 0, 340, 488, 341, 0, 0, 0, 0, 342, - 343, 344, 345, 346, 347, 348, 349, 575, 0, 0, - 0, 0, 0, 0, 571, 572, 606, 593, 594, 595, - 596, 592, 580, 0, 573, 0, 0, 581, 1736, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 586, 0, 0, 109, 110, - 0, 111, 112, 471, 113, 114, 115, 350, 636, 472, - 637, 0, 638, 0, 116, 117, 118, 119, 120, 603, - 624, 121, 639, 640, 122, 0, 123, 124, 125, 126, - 632, 0, 614, 0, 127, 128, 129, 130, 131, 0, - 474, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 475, 141, 142, 143, 0, 615, 620, 616, - 617, 621, 144, 145, 146, 147, 148, 641, 149, 150, - 642, 643, 151, 0, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 635, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 585, 176, 177, 178, 625, - 601, 179, 0, 180, 181, 644, 182, 0, 183, 0, - 184, 476, 0, 477, 185, 186, 187, 0, 188, 189, - 633, 0, 589, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 478, 365, 207, 208, 209, 210, 645, - 646, 0, 613, 0, 211, 479, 212, 480, 213, 214, - 215, 216, 217, 0, 0, 218, 634, 481, 219, 482, - 0, 220, 221, 407, 618, 619, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 408, 370, 483, 371, 236, 237, 372, 574, 238, 239, - 240, 602, 631, 241, 647, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 484, 249, - 485, 626, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 627, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 648, 271, 272, - 273, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 486, 288, 289, - 590, 290, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 409, 622, 301, 302, 381, 303, 304, - 487, 305, 306, 649, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 628, 0, 318, 319, - 0, 320, 321, 0, 650, 651, 0, 0, 410, 322, - 629, 323, 630, 600, 324, 325, 326, 327, 328, 329, - 330, 0, 577, 331, 332, 333, 334, 335, 623, 0, - 336, 337, 338, 339, 387, 652, 0, 340, 488, 341, - 0, 0, 0, 0, 342, 343, 344, 345, 346, 347, - 348, 349, 575, 0, 0, 0, 0, 0, 0, 571, - 572, 606, 593, 594, 595, 596, 592, 580, 0, 573, - 0, 0, 581, 1680, 98, 99, 100, 101, 102, 103, - 104, 105, 0, 106, 107, 108, 0, 0, 0, 0, - 586, 0, 0, 109, 110, 0, 111, 112, 471, 113, - 114, 115, 350, 636, 472, 637, 0, 638, 0, 116, - 117, 118, 119, 120, 603, 624, 121, 639, 640, 122, - 0, 123, 124, 125, 126, 632, 0, 614, 0, 127, - 128, 129, 130, 131, 0, 474, 132, 133, 134, 0, - 135, 136, 137, 138, 139, 140, 0, 475, 141, 142, - 143, 0, 615, 620, 616, 617, 621, 144, 145, 146, - 147, 148, 641, 149, 150, 642, 643, 151, 0, 152, - 0, 153, 154, 155, 156, 157, 0, 158, 159, 160, - 0, 0, 161, 162, 635, 164, 165, 0, 166, 167, - 168, 0, 169, 170, 171, 0, 172, 173, 174, 175, - 585, 176, 177, 178, 625, 601, 179, 0, 180, 181, - 644, 182, 0, 183, 0, 184, 476, 0, 477, 185, - 186, 187, 0, 188, 189, 633, 0, 589, 190, 0, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 0, 206, 478, 365, - 207, 208, 209, 210, 645, 646, 0, 613, 0, 211, - 479, 212, 480, 213, 214, 215, 216, 217, 0, 0, - 218, 634, 481, 219, 482, 0, 220, 221, 407, 618, - 619, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 408, 370, 483, 371, 236, - 237, 372, 574, 238, 239, 240, 602, 631, 241, 647, - 242, 243, 244, 0, 245, 0, 0, 246, 247, 0, - 0, 248, 375, 484, 249, 485, 626, 250, 251, 252, - 253, 254, 255, 256, 0, 257, 258, 627, 259, 378, - 262, 260, 261, 0, 263, 264, 265, 266, 267, 268, - 269, 270, 648, 271, 272, 273, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 0, - 286, 287, 486, 288, 289, 590, 290, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 409, 622, - 301, 302, 381, 303, 304, 487, 305, 306, 649, 307, - 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 628, 0, 318, 319, 0, 320, 321, 0, 650, - 651, 0, 0, 410, 322, 629, 323, 630, 600, 324, - 325, 326, 327, 328, 329, 330, 0, 577, 331, 332, - 333, 334, 335, 623, 0, 336, 337, 338, 339, 387, - 652, 0, 340, 488, 341, 0, 0, 0, 0, 342, - 343, 344, 345, 346, 347, 348, 349, 575, 0, 0, - 0, 0, 0, 0, 571, 572, 606, 593, 594, 595, - 596, 592, 580, 0, 573, 0, 0, 581, 1232, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 586, 0, 0, 109, 110, - 0, 111, 112, 471, 113, 114, 115, 350, 636, 472, - 637, 0, 638, 0, 116, 117, 118, 119, 120, 603, - 624, 121, 639, 640, 122, 0, 123, 124, 125, 126, - 632, 0, 614, 0, 127, 128, 129, 130, 131, 0, - 474, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 475, 141, 142, 143, 0, 615, 620, 616, - 617, 621, 144, 145, 146, 147, 148, 641, 149, 150, - 642, 643, 151, 0, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 635, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 585, 176, 177, 178, 625, - 601, 179, 0, 180, 181, 644, 182, 0, 183, 0, - 184, 476, 0, 477, 185, 186, 187, 0, 188, 189, - 633, 0, 589, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 478, 365, 207, 208, 209, 210, 645, - 646, 0, 613, 0, 211, 479, 212, 480, 213, 214, - 215, 216, 217, 0, 0, 218, 634, 481, 219, 482, - 0, 220, 221, 407, 618, 619, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 408, 370, 483, 371, 236, 237, 372, 574, 238, 239, - 240, 602, 631, 241, 647, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 484, 249, - 485, 626, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 627, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 648, 271, 272, - 273, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 486, 288, 289, - 590, 290, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 409, 622, 301, 302, 381, 303, 304, - 487, 305, 306, 649, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 628, 0, 318, 319, - 0, 320, 321, 0, 650, 651, 0, 0, 410, 322, - 629, 323, 630, 600, 324, 325, 326, 327, 328, 329, - 330, 0, 577, 331, 332, 333, 334, 335, 623, 0, - 336, 337, 338, 339, 387, 652, 0, 340, 488, 341, - 0, 0, 0, 0, 342, 343, 344, 345, 346, 347, - 348, 349, 575, 0, 0, 0, 0, 0, 0, 571, - 572, 606, 593, 594, 595, 596, 592, 580, 0, 573, - 944, 1227, 581, 0, 98, 99, 100, 101, 102, 103, - 104, 105, 0, 106, 107, 108, 0, 0, 0, 0, - 586, 0, 0, 109, 110, 0, 111, 112, 471, 113, - 114, 115, 350, 636, 472, 637, 0, 638, 0, 116, - 117, 118, 119, 120, 603, 624, 121, 639, 640, 122, - 0, 123, 124, 125, 126, 632, 0, 614, 0, 127, - 128, 129, 130, 131, 0, 474, 132, 133, 134, 0, - 135, 136, 137, 138, 139, 140, 0, 475, 141, 142, - 143, 0, 615, 620, 616, 617, 621, 144, 145, 146, - 147, 148, 641, 149, 150, 642, 643, 151, 0, 152, - 0, 153, 154, 155, 156, 157, 0, 158, 159, 160, - 0, 0, 161, 162, 635, 164, 165, 0, 166, 167, - 168, 0, 169, 170, 171, 0, 172, 173, 174, 175, - 585, 176, 177, 178, 625, 601, 179, 0, 180, 181, - 644, 182, 0, 183, 0, 184, 476, 0, 477, 185, - 186, 187, 0, 188, 189, 633, 0, 589, 190, 0, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 0, 206, 478, 365, - 207, 208, 209, 210, 645, 646, 0, 613, 0, 211, - 479, 212, 480, 213, 214, 215, 216, 217, 0, 0, - 218, 634, 481, 219, 482, 0, 220, 221, 407, 618, - 619, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 408, 370, 483, 371, 236, - 237, 372, 574, 238, 239, 240, 602, 631, 241, 647, - 242, 243, 244, 0, 245, 0, 0, 246, 247, 0, - 0, 248, 375, 484, 249, 485, 626, 250, 251, 252, - 253, 254, 255, 256, 0, 257, 258, 627, 259, 378, - 262, 260, 261, 0, 263, 264, 265, 266, 267, 268, - 269, 270, 648, 271, 272, 273, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 0, - 286, 287, 486, 288, 289, 590, 290, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 409, 622, - 301, 302, 381, 303, 304, 487, 305, 306, 649, 307, - 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 628, 0, 318, 319, 0, 320, 321, 0, 650, - 651, 0, 0, 410, 322, 629, 323, 630, 600, 324, - 325, 326, 327, 328, 329, 330, 0, 577, 331, 332, - 333, 334, 335, 623, 0, 336, 337, 338, 339, 387, - 652, 1686, 340, 488, 341, 0, 0, 0, 0, 342, - 343, 344, 345, 346, 347, 348, 349, 575, 0, 0, - 0, 0, 0, 0, 571, 572, 606, 593, 594, 595, - 596, 592, 580, 0, 573, 0, 0, 581, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 586, 0, 0, 109, 110, - 0, 111, 112, 471, 113, 114, 115, 350, 636, 472, - 637, 0, 638, 0, 116, 117, 118, 119, 120, 603, - 624, 121, 639, 640, 122, 0, 123, 124, 125, 126, - 632, 0, 614, 0, 127, 128, 129, 130, 131, 0, - 474, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 475, 141, 142, 143, 0, 615, 620, 616, - 617, 621, 144, 145, 146, 147, 148, 641, 149, 150, - 642, 643, 151, 673, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 635, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 585, 176, 177, 178, 625, - 601, 179, 0, 180, 181, 644, 182, 0, 183, 0, - 184, 476, 0, 477, 185, 186, 187, 0, 188, 189, - 633, 0, 589, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 478, 365, 207, 208, 209, 210, 645, - 646, 0, 613, 0, 211, 479, 212, 480, 213, 214, - 215, 216, 217, 0, 0, 218, 634, 481, 219, 482, - 0, 220, 221, 407, 618, 619, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 408, 370, 483, 371, 236, 237, 372, 574, 238, 239, - 240, 602, 631, 241, 647, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 484, 249, - 485, 626, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 627, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 648, 271, 272, - 273, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 486, 288, 289, - 590, 290, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 409, 622, 301, 302, 381, 303, 304, - 487, 305, 306, 649, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 628, 0, 318, 319, - 0, 320, 321, 0, 650, 651, 0, 0, 410, 322, - 629, 323, 630, 600, 324, 325, 326, 327, 328, 329, - 330, 0, 577, 331, 332, 333, 334, 335, 623, 0, - 336, 337, 338, 339, 387, 652, 0, 340, 488, 341, - 0, 0, 0, 0, 342, 343, 344, 345, 346, 347, - 348, 349, 575, 0, 0, 0, 0, 0, 0, 571, - 572, 606, 593, 594, 595, 596, 592, 580, 0, 573, - 0, 0, 581, 0, 98, 99, 100, 101, 102, 103, - 104, 105, 0, 106, 107, 108, 0, 0, 0, 0, - 586, 0, 0, 109, 110, 0, 111, 112, 471, 113, - 114, 115, 350, 636, 472, 637, 0, 638, 0, 116, - 117, 118, 119, 120, 603, 624, 121, 639, 640, 122, - 0, 123, 124, 125, 126, 632, 0, 614, 0, 127, - 128, 129, 130, 131, 0, 474, 132, 133, 134, 0, - 135, 136, 137, 138, 139, 140, 0, 475, 141, 142, - 143, 0, 615, 620, 616, 617, 621, 144, 145, 146, - 147, 148, 641, 149, 150, 642, 643, 151, 0, 152, - 0, 153, 154, 155, 156, 157, 0, 158, 159, 160, - 0, 0, 161, 162, 635, 164, 165, 0, 166, 167, - 168, 0, 169, 170, 171, 0, 172, 173, 174, 175, - 585, 176, 177, 178, 625, 601, 179, 0, 180, 181, - 644, 182, 0, 183, 0, 184, 476, 0, 477, 185, - 186, 187, 0, 188, 189, 633, 0, 589, 190, 0, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 0, 206, 478, 365, - 207, 208, 209, 210, 645, 646, 0, 613, 0, 211, - 479, 212, 480, 213, 214, 215, 216, 217, 0, 0, - 218, 634, 481, 219, 482, 0, 220, 221, 407, 618, - 619, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 408, 370, 483, 371, 236, - 237, 372, 574, 238, 239, 240, 602, 631, 241, 647, - 242, 243, 244, 0, 245, 0, 0, 246, 247, 0, - 0, 248, 375, 484, 249, 485, 626, 250, 251, 252, - 253, 254, 255, 256, 0, 257, 258, 627, 259, 378, - 262, 260, 261, 0, 263, 264, 265, 266, 267, 268, - 269, 270, 648, 271, 272, 273, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 0, - 286, 287, 486, 288, 289, 590, 290, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 409, 622, - 301, 302, 381, 303, 304, 487, 305, 306, 649, 307, - 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 628, 0, 318, 319, 0, 320, 321, 0, 650, - 651, 0, 0, 410, 322, 629, 323, 630, 600, 324, - 325, 326, 327, 328, 329, 330, 0, 577, 331, 332, - 333, 334, 335, 623, 0, 336, 337, 338, 339, 387, - 652, 0, 340, 488, 341, 0, 0, 0, 0, 342, - 343, 344, 345, 346, 347, 348, 349, 575, 0, 0, - 0, 0, 0, 0, 571, 572, 569, 606, 593, 594, - 595, 596, 592, 580, 573, 0, 0, 581, 0, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 0, 106, - 107, 108, 0, 0, 0, 0, 586, 0, 0, 109, - 110, 0, 111, 112, 471, 113, 114, 115, 350, 636, - 472, 637, 0, 638, 0, 116, 117, 118, 119, 120, - 603, 624, 121, 639, 640, 122, 0, 123, 124, 125, - 126, 632, 0, 614, 0, 127, 128, 129, 130, 131, - 0, 474, 132, 133, 134, 0, 135, 136, 137, 138, - 139, 140, 0, 475, 141, 142, 143, 0, 615, 620, - 616, 617, 621, 144, 145, 146, 147, 148, 641, 149, - 150, 642, 643, 151, 0, 152, 0, 153, 154, 155, - 156, 157, 0, 158, 159, 160, 0, 0, 161, 162, - 635, 164, 165, 0, 166, 167, 168, 0, 169, 170, - 171, 0, 172, 173, 174, 175, 585, 176, 177, 178, - 625, 601, 179, 0, 180, 181, 644, 182, 0, 183, - 0, 184, 476, 1289, 477, 185, 186, 187, 0, 188, - 189, 633, 0, 589, 190, 0, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 0, 206, 478, 365, 207, 208, 209, 210, - 645, 646, 0, 613, 0, 211, 479, 212, 480, 213, - 214, 215, 216, 217, 0, 0, 218, 634, 481, 219, - 482, 0, 220, 221, 407, 618, 619, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 408, 370, 483, 371, 236, 237, 372, 574, 238, - 239, 240, 602, 631, 241, 647, 242, 243, 244, 0, - 245, 0, 0, 246, 247, 0, 0, 248, 375, 484, - 249, 485, 626, 250, 251, 252, 253, 254, 255, 256, - 0, 257, 258, 627, 259, 378, 262, 260, 261, 0, - 263, 264, 265, 266, 267, 268, 269, 270, 648, 271, - 272, 273, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 0, 286, 287, 486, 288, - 289, 590, 290, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 409, 622, 301, 302, 381, 303, - 304, 487, 305, 306, 649, 307, 0, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 628, 0, 318, - 319, 0, 320, 321, 0, 650, 651, 0, 0, 410, - 322, 629, 323, 630, 600, 324, 325, 326, 327, 328, - 329, 330, 0, 577, 331, 332, 333, 334, 335, 623, - 0, 336, 337, 338, 339, 387, 652, 0, 340, 488, - 341, 0, 0, 0, 0, 342, 343, 344, 345, 346, - 347, 348, 349, 575, 0, 0, 0, 0, 0, 0, - 571, 572, 606, 593, 594, 595, 596, 592, 580, 0, - 573, 0, 0, 581, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 877, 106, 107, 108, 0, 0, 0, - 0, 586, 0, 0, 109, 110, 0, 111, 112, 471, - 113, 114, 115, 350, 636, 472, 637, 0, 638, 0, - 116, 117, 118, 119, 120, 603, 624, 121, 639, 640, - 122, 0, 123, 124, 125, 126, 632, 0, 614, 0, - 127, 128, 129, 130, 131, 0, 474, 132, 133, 134, - 0, 135, 136, 137, 138, 139, 140, 0, 475, 141, - 142, 143, 0, 615, 620, 616, 617, 621, 144, 145, - 146, 147, 148, 641, 149, 150, 642, 643, 151, 0, - 152, 0, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 0, 0, 161, 162, 635, 164, 165, 0, 166, - 167, 168, 0, 169, 170, 171, 0, 172, 173, 174, - 175, 585, 176, 177, 178, 625, 601, 179, 0, 180, - 181, 644, 182, 0, 183, 0, 184, 476, 0, 477, - 185, 186, 187, 0, 188, 189, 633, 0, 589, 190, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 0, 200, 201, 202, 203, 204, 205, 0, 206, 478, - 365, 207, 208, 209, 210, 645, 646, 0, 613, 0, - 211, 479, 212, 480, 213, 214, 215, 216, 217, 0, - 0, 218, 634, 481, 219, 482, 0, 220, 221, 407, - 618, 619, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 408, 370, 483, 371, - 236, 237, 372, 574, 238, 239, 240, 602, 631, 241, - 647, 242, 243, 244, 0, 245, 0, 0, 246, 247, - 0, 0, 248, 375, 484, 249, 485, 626, 250, 251, - 252, 253, 254, 255, 256, 0, 257, 258, 627, 259, - 378, 262, 260, 261, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 648, 271, 272, 273, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 0, 286, 287, 486, 288, 289, 590, 290, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 409, - 622, 301, 302, 381, 303, 304, 487, 305, 306, 649, - 307, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 628, 0, 318, 319, 0, 320, 321, 0, - 650, 651, 0, 0, 410, 322, 629, 323, 630, 600, - 324, 325, 326, 327, 328, 329, 330, 0, 577, 331, - 332, 333, 334, 335, 623, 0, 336, 337, 338, 339, - 387, 652, 0, 340, 488, 341, 0, 0, 0, 0, - 342, 343, 344, 345, 346, 347, 348, 349, 575, 0, - 0, 0, 0, 0, 0, 571, 572, 606, 593, 594, - 595, 596, 592, 580, 0, 573, 0, 0, 581, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 0, 106, - 107, 108, 0, 0, 0, 0, 586, 0, 0, 109, - 110, 0, 111, 112, 471, 113, 114, 115, 350, 636, - 472, 637, 0, 638, 0, 116, 117, 118, 119, 120, - 603, 624, 121, 639, 640, 122, 0, 123, 124, 125, - 126, 632, 0, 614, 0, 127, 128, 129, 130, 131, - 0, 474, 132, 133, 134, 0, 135, 136, 137, 138, - 139, 140, 0, 475, 141, 142, 2108, 0, 615, 620, - 616, 617, 621, 144, 145, 146, 147, 148, 641, 149, - 150, 642, 643, 151, 0, 152, 0, 153, 154, 155, - 156, 157, 0, 158, 159, 160, 0, 0, 161, 162, - 635, 164, 165, 0, 166, 167, 168, 0, 169, 170, - 171, 0, 172, 173, 174, 175, 585, 176, 177, 178, - 625, 601, 179, 0, 180, 181, 644, 182, 0, 183, - 0, 184, 476, 0, 477, 185, 186, 187, 0, 188, - 189, 633, 0, 589, 190, 0, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 0, 206, 478, 365, 207, 208, 209, 210, - 645, 646, 0, 613, 0, 211, 479, 212, 480, 213, - 214, 215, 216, 217, 0, 0, 218, 634, 481, 219, - 482, 0, 220, 221, 407, 618, 619, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 408, 370, 483, 371, 236, 237, 372, 574, 238, - 239, 240, 602, 631, 241, 647, 242, 243, 244, 0, - 245, 0, 0, 246, 247, 0, 0, 248, 375, 484, - 249, 485, 626, 250, 251, 252, 253, 254, 255, 256, - 0, 257, 258, 627, 259, 378, 262, 260, 261, 0, - 263, 264, 265, 266, 267, 268, 269, 270, 648, 271, - 272, 273, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 0, 286, 287, 486, 288, - 289, 590, 290, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 409, 622, 301, 302, 381, 303, - 304, 487, 305, 306, 649, 307, 0, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 628, 0, 318, - 319, 0, 320, 321, 0, 650, 651, 0, 0, 410, - 322, 629, 323, 630, 600, 324, 325, 326, 327, 2107, - 329, 330, 0, 577, 331, 332, 333, 334, 335, 623, - 0, 336, 337, 338, 339, 387, 652, 0, 340, 488, - 341, 0, 0, 0, 0, 342, 343, 344, 345, 346, - 347, 348, 349, 575, 0, 0, 0, 0, 0, 0, - 571, 572, 606, 593, 594, 595, 596, 592, 580, 0, - 573, 0, 0, 581, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 0, 106, 107, 108, 0, 0, 0, - 0, 586, 0, 0, 109, 110, 0, 111, 112, 471, - 113, 114, 115, 2106, 636, 472, 637, 0, 638, 0, - 116, 117, 118, 119, 120, 603, 624, 121, 639, 640, - 122, 0, 123, 124, 125, 126, 632, 0, 614, 0, - 127, 128, 129, 130, 131, 0, 474, 132, 133, 134, - 0, 135, 136, 137, 138, 139, 140, 0, 475, 141, - 142, 2108, 0, 615, 620, 616, 617, 621, 144, 145, - 146, 147, 148, 641, 149, 150, 642, 643, 151, 0, - 152, 0, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 0, 0, 161, 162, 635, 164, 165, 0, 166, - 167, 168, 0, 169, 170, 171, 0, 172, 173, 174, - 175, 585, 176, 177, 178, 625, 601, 179, 0, 180, - 181, 644, 182, 0, 183, 0, 184, 476, 0, 477, - 185, 186, 187, 0, 188, 189, 633, 0, 589, 190, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 0, 200, 201, 202, 203, 204, 205, 0, 206, 478, - 365, 207, 208, 209, 210, 645, 646, 0, 613, 0, - 211, 479, 212, 480, 213, 214, 215, 216, 217, 0, - 0, 218, 634, 481, 219, 482, 0, 220, 221, 407, - 618, 619, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 408, 370, 483, 371, - 236, 237, 372, 574, 238, 239, 240, 602, 631, 241, - 647, 242, 243, 244, 0, 245, 0, 0, 246, 247, - 0, 0, 248, 375, 484, 249, 485, 626, 250, 251, - 252, 253, 254, 255, 256, 0, 257, 258, 627, 259, - 378, 262, 260, 261, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 648, 271, 272, 273, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 0, 286, 287, 486, 288, 289, 590, 290, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 409, - 622, 301, 302, 381, 303, 304, 487, 305, 306, 649, - 307, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 628, 0, 318, 319, 0, 320, 321, 0, - 650, 651, 0, 0, 410, 322, 629, 323, 630, 600, - 324, 325, 326, 327, 2107, 329, 330, 0, 577, 331, - 332, 333, 334, 335, 623, 0, 336, 337, 338, 339, - 387, 652, 0, 340, 488, 341, 0, 0, 0, 0, - 342, 343, 344, 345, 346, 347, 348, 349, 575, 0, - 0, 0, 0, 0, 0, 571, 572, 606, 593, 594, - 595, 596, 592, 580, 0, 573, 0, 0, 581, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 0, 106, - 107, 108, 0, 0, 0, 0, 586, 0, 0, 109, - 110, 0, 111, 112, 471, 113, 114, 115, 350, 636, - 472, 637, 0, 638, 0, 116, 117, 118, 119, 120, - 603, 624, 121, 639, 640, 122, 0, 123, 124, 125, - 126, 632, 0, 614, 0, 127, 128, 129, 130, 131, - 0, 474, 132, 133, 134, 0, 135, 136, 137, 138, - 139, 140, 0, 475, 141, 142, 143, 0, 615, 620, - 616, 617, 621, 144, 145, 146, 147, 148, 641, 149, - 150, 642, 643, 151, 0, 152, 0, 153, 154, 155, - 156, 157, 0, 158, 159, 160, 0, 0, 161, 162, - 635, 164, 165, 0, 166, 167, 168, 0, 169, 170, - 171, 0, 172, 173, 174, 175, 585, 176, 177, 178, - 625, 601, 179, 0, 180, 181, 644, 182, 0, 183, - 0, 184, 476, 0, 477, 185, 186, 187, 0, 188, - 189, 633, 0, 589, 190, 0, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 0, 206, 478, 365, 207, 208, 209, 210, - 645, 646, 0, 613, 0, 211, 479, 212, 480, 213, - 214, 215, 216, 217, 0, 0, 218, 634, 481, 219, - 482, 0, 220, 221, 407, 618, 619, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 408, 370, 483, 371, 236, 237, 372, 574, 238, - 239, 240, 602, 631, 241, 647, 242, 243, 244, 0, - 245, 0, 0, 246, 247, 0, 0, 248, 375, 484, - 249, 485, 626, 250, 251, 252, 253, 254, 255, 256, - 0, 257, 258, 627, 259, 378, 262, 260, 261, 0, - 263, 264, 265, 266, 267, 268, 269, 270, 648, 271, - 272, 273, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 0, 286, 287, 486, 288, - 289, 590, 290, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 409, 622, 301, 302, 381, 303, - 304, 487, 305, 306, 649, 307, 0, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 628, 0, 318, - 319, 0, 320, 321, 0, 650, 651, 0, 0, 410, - 322, 629, 323, 630, 600, 324, 325, 326, 327, 328, - 329, 330, 0, 577, 331, 332, 333, 334, 335, 623, - 0, 336, 337, 338, 339, 387, 652, 0, 340, 488, - 341, 0, 0, 0, 0, 342, 343, 344, 345, 346, - 347, 348, 349, 575, 0, 0, 0, 0, 0, 0, - 571, 572, 606, 593, 594, 595, 596, 592, 580, 0, - 573, 0, 0, 581, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 0, 106, 107, 108, 0, 0, 0, - 0, 586, 0, 0, 109, 110, 0, 111, 112, 471, - 113, 114, 115, 350, 636, 472, 637, 0, 638, 0, - 116, 117, 118, 119, 120, 603, 624, 121, 639, 640, - 122, 0, 123, 124, 125, 126, 632, 0, 614, 0, - 127, 128, 129, 130, 131, 0, 474, 132, 133, 134, - 0, 135, 136, 137, 138, 139, 140, 0, 475, 141, - 142, 143, 0, 615, 620, 616, 617, 621, 144, 145, - 146, 147, 148, 641, 149, 150, 642, 643, 151, 0, - 152, 0, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 0, 0, 161, 162, 635, 164, 165, 0, 166, - 167, 168, 0, 169, 170, 171, 0, 172, 173, 174, - 175, 585, 176, 177, 178, 625, 601, 179, 0, 180, - 181, 644, 182, 0, 183, 0, 184, 476, 0, 477, - 185, 186, 187, 0, 188, 189, 633, 0, 589, 190, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 0, 200, 201, 202, 203, 204, 205, 0, 206, 478, - 365, 207, 208, 209, 210, 645, 646, 0, 613, 0, - 211, 479, 212, 480, 213, 214, 215, 216, 217, 0, - 0, 218, 634, 481, 219, 482, 0, 220, 221, 407, - 618, 619, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 408, 370, 483, 371, - 236, 237, 372, 574, 238, 239, 240, 602, 631, 241, - 647, 242, 243, 244, 0, 245, 0, 0, 246, 247, - 0, 0, 248, 375, 484, 249, 485, 626, 250, 251, - 252, 253, 254, 255, 256, 0, 257, 258, 627, 259, - 378, 262, 260, 261, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 648, 271, 272, 273, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 0, 286, 287, 486, 288, 289, 590, 290, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 409, - 622, 301, 302, 381, 303, 304, 487, 305, 306, 649, - 307, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 628, 0, 318, 319, 0, 320, 321, 0, - 650, 651, 0, 0, 410, 322, 629, 323, 630, 600, - 324, 325, 326, 327, 328, 329, 330, 0, 577, 331, - 332, 333, 334, 335, 623, 0, 336, 337, 338, 339, - 387, 652, 0, 340, 488, 341, 0, 0, 0, 0, - 342, 343, 344, 345, 346, 347, 348, 349, 575, 0, - 0, 0, 0, 0, 0, 571, 572, 606, 593, 594, - 595, 596, 592, 580, 0, 573, 0, 0, 1841, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 0, 106, - 107, 108, 0, 0, 0, 0, 586, 0, 0, 109, - 110, 0, 111, 112, 471, 113, 114, 115, 350, 636, - 472, 637, 0, 638, 0, 116, 117, 118, 119, 120, - 603, 624, 121, 639, 640, 122, 0, 123, 124, 125, - 126, 632, 0, 614, 0, 127, 128, 129, 130, 131, - 0, 474, 132, 133, 134, 0, 135, 136, 137, 138, - 139, 140, 0, 475, 141, 142, 143, 0, 615, 620, - 616, 617, 621, 144, 145, 146, 147, 148, 641, 149, - 150, 642, 643, 151, 0, 152, 0, 153, 154, 155, - 156, 157, 0, 158, 159, 160, 0, 0, 161, 162, - 635, 164, 165, 0, 166, 167, 168, 0, 169, 170, - 171, 0, 172, 173, 174, 175, 585, 176, 177, 178, - 625, 601, 179, 0, 180, 181, 644, 182, 0, 183, - 0, 184, 476, 0, 477, 185, 186, 187, 0, 188, - 189, 633, 0, 589, 190, 0, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 0, 206, 478, 365, 207, 208, 209, 210, - 645, 646, 0, 613, 0, 211, 479, 212, 480, 213, - 214, 215, 216, 217, 0, 0, 218, 634, 481, 219, - 482, 0, 220, 221, 407, 618, 619, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 408, 370, 483, 371, 236, 237, 372, 0, 238, - 239, 240, 602, 631, 241, 647, 242, 243, 244, 0, - 245, 0, 0, 246, 247, 0, 0, 248, 375, 484, - 249, 485, 626, 250, 251, 252, 253, 254, 255, 256, - 0, 257, 258, 627, 259, 378, 262, 260, 261, 0, - 263, 264, 265, 266, 267, 268, 269, 270, 648, 271, - 272, 273, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 0, 286, 287, 486, 288, - 289, 1279, 290, 291, 292, 293, 294, 295, 296, 0, - 297, 298, 299, 300, 409, 622, 301, 302, 381, 303, - 304, 487, 305, 306, 649, 307, 0, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 628, 0, 318, - 319, 0, 320, 321, 0, 650, 651, 0, 0, 410, - 322, 629, 323, 630, 600, 324, 325, 326, 327, 328, - 329, 330, 0, 0, 331, 332, 333, 334, 335, 623, - 0, 336, 337, 338, 339, 387, 652, 0, 340, 488, - 341, 0, 0, 0, 0, 342, 343, 344, 345, 346, - 347, 348, 349, 0, 0, 0, 0, 0, 0, 0, - 1275, 1276, 606, 593, 594, 595, 596, 592, 580, 0, - 1277, 0, 0, 1278, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 0, 106, 107, 108, 0, 0, 0, - 0, 586, 0, 0, 109, 110, 0, 111, 112, 471, - 113, 114, 115, 0, 636, 472, 637, 0, 638, 0, - 116, 117, 118, 119, 120, 603, 624, 121, 639, 640, - 122, 0, 123, 124, 125, 126, 632, 0, 614, 0, - 127, 128, 129, 130, 131, 0, 474, 132, 133, 134, - 0, 135, 136, 137, 138, 139, 140, 0, 475, 141, - 142, 2108, 0, 615, 620, 616, 617, 621, 144, 145, - 146, 147, 148, 641, 149, 150, 642, 643, 151, 0, - 152, 0, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 0, 0, 161, 162, 635, 164, 165, 0, 166, - 167, 168, 0, 169, 170, 171, 0, 172, 173, 174, - 175, 585, 176, 177, 178, 625, 601, 179, 0, 180, - 181, 644, 182, 0, 183, 0, 184, 476, 0, 477, - 185, 186, 187, 0, 188, 189, 633, 0, 589, 190, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 0, 200, 201, 202, 203, 204, 205, 0, 206, 478, - 365, 207, 208, 209, 210, 645, 646, 0, 613, 0, - 211, 0, 212, 480, 213, 214, 215, 216, 217, 0, - 0, 218, 634, 481, 219, 0, 0, 220, 221, 407, - 618, 619, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 408, 370, 483, 371, - 236, 237, 372, 574, 238, 239, 240, 602, 631, 241, - 647, 242, 243, 244, 0, 245, 0, 0, 246, 247, - 0, 0, 248, 375, 484, 249, 485, 626, 250, 251, - 252, 253, 254, 255, 256, 0, 257, 258, 627, 259, - 378, 262, 260, 261, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 648, 271, 272, 273, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 0, 286, 287, 486, 288, 289, 590, 290, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 409, - 622, 301, 302, 381, 303, 304, 0, 305, 306, 649, - 307, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 628, 0, 318, 319, 0, 320, 321, 0, - 650, 651, 0, 0, 410, 322, 629, 323, 630, 600, - 324, 325, 326, 327, 2107, 329, 330, 0, 577, 331, - 332, 333, 334, 335, 623, 0, 336, 337, 338, 339, - 387, 652, 0, 340, 488, 341, 0, 0, 0, 0, - 342, 343, 344, 345, 346, 347, 348, 349, 0, 0, - 0, 0, 0, 0, 0, 571, 572, 606, 0, 0, - 0, 0, 0, 0, 0, 573, 0, 0, 581, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 0, 106, - 107, 108, 0, 0, 0, 0, 0, 0, 0, 109, - 110, 0, 111, 112, 471, 113, 114, 115, 350, 351, - 472, 352, 0, 353, 0, 116, 117, 118, 119, 120, - 0, 624, 121, 354, 355, 122, 0, 123, 124, 125, - 126, 632, 0, 614, 0, 127, 128, 129, 130, 131, - 0, 474, 132, 133, 134, 0, 135, 136, 137, 138, - 139, 140, 0, 475, 141, 142, 143, 0, 615, 620, - 616, 617, 621, 144, 145, 146, 147, 148, 357, 149, - 150, 358, 359, 151, 0, 152, 0, 153, 154, 155, - 156, 157, 0, 158, 159, 160, 0, 0, 161, 162, - 163, 164, 165, 0, 166, 167, 168, 0, 169, 170, - 171, 0, 172, 173, 174, 175, 360, 176, 177, 178, - 625, 0, 179, 0, 180, 181, 362, 182, 0, 183, - 0, 184, 476, 0, 477, 185, 186, 187, 0, 188, - 189, 633, 0, 364, 190, 0, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 0, 200, 201, 202, 203, - 204, 205, 0, 206, 478, 365, 207, 208, 209, 210, - 366, 367, 0, 368, 0, 211, 479, 212, 480, 213, - 214, 215, 216, 217, 1132, 0, 218, 634, 481, 219, - 482, 0, 220, 221, 407, 618, 619, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 408, 370, 483, 371, 236, 237, 372, 0, 238, - 239, 240, 0, 631, 241, 374, 242, 243, 244, 0, - 245, 0, 445, 246, 247, 0, 0, 248, 375, 484, - 249, 485, 626, 250, 251, 252, 253, 254, 255, 256, - 0, 257, 258, 627, 259, 378, 262, 260, 261, 0, - 263, 264, 265, 266, 267, 268, 269, 270, 379, 271, - 272, 273, 274, 0, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 0, 286, 287, 486, 288, - 289, 380, 1137, 291, 292, 293, 294, 295, 296, 53, - 297, 298, 299, 300, 409, 622, 301, 302, 381, 303, - 304, 487, 305, 306, 382, 307, 0, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 628, 0, 318, - 319, 55, 320, 321, 0, 411, 384, 0, 0, 410, - 322, 629, 323, 630, 0, 324, 325, 326, 327, 328, - 329, 330, 0, 0, 331, 332, 333, 334, 335, 623, - 0, 336, 337, 338, 339, 466, 388, 0, 340, 488, - 341, 0, 0, 606, 51, 342, 343, 344, 345, 346, - 347, 348, 349, 0, 0, 52, 98, 99, 100, 101, - 102, 103, 104, 105, 0, 106, 107, 108, 0, 0, - 0, 0, 0, 1135, 0, 109, 110, 0, 111, 112, - 471, 113, 114, 115, 350, 351, 472, 352, 0, 353, - 0, 116, 117, 118, 119, 120, 0, 624, 121, 354, - 355, 122, 0, 123, 124, 125, 126, 632, 0, 614, - 0, 127, 128, 129, 130, 131, 0, 474, 132, 133, - 134, 0, 135, 136, 137, 138, 139, 140, 0, 475, - 141, 142, 143, 0, 615, 620, 616, 617, 621, 144, - 145, 146, 147, 148, 357, 149, 150, 358, 359, 151, - 0, 152, 0, 153, 154, 155, 156, 157, 0, 158, - 159, 160, 0, 0, 161, 162, 163, 164, 165, 0, - 166, 167, 168, 0, 169, 170, 171, 0, 172, 173, - 174, 175, 360, 176, 177, 178, 625, 0, 179, 0, - 180, 181, 362, 182, 0, 183, 0, 184, 476, 0, - 477, 185, 186, 187, 0, 188, 189, 633, 0, 364, - 190, 0, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 0, 200, 201, 202, 203, 204, 205, 0, 206, - 478, 365, 207, 208, 209, 210, 366, 367, 0, 368, - 0, 211, 479, 212, 480, 213, 214, 215, 216, 217, - 1132, 0, 218, 634, 481, 219, 482, 0, 220, 221, - 407, 618, 619, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 408, 370, 483, - 371, 236, 237, 372, 0, 238, 239, 240, 0, 631, - 241, 374, 242, 243, 244, 0, 245, 0, 445, 246, - 247, 0, 0, 248, 375, 484, 249, 485, 626, 250, - 251, 252, 253, 254, 255, 256, 0, 257, 258, 627, - 259, 378, 262, 260, 261, 0, 263, 264, 265, 266, - 267, 268, 269, 270, 379, 271, 272, 273, 274, 0, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 0, 286, 287, 486, 288, 289, 380, 1137, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 409, 622, 301, 302, 381, 303, 304, 487, 305, 306, - 382, 307, 0, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 628, 0, 318, 319, 0, 320, 321, - 0, 411, 384, 0, 0, 410, 322, 629, 323, 630, - 0, 324, 325, 326, 327, 328, 329, 330, 0, 0, - 331, 332, 333, 334, 335, 623, 0, 336, 337, 338, - 339, 387, 388, 0, 340, 488, 341, 0, 606, 0, - 0, 342, 343, 344, 345, 346, 347, 348, 349, 0, - 0, 98, 99, 100, 101, 102, 103, 104, 105, 0, - 106, 107, 108, 0, 0, 0, 0, 0, 0, 1135, - 109, 110, 0, 111, 112, 471, 113, 114, 115, 350, - 351, 472, 352, 0, 353, 0, 116, 117, 118, 119, - 120, 0, 624, 121, 354, 355, 122, 0, 123, 124, - 125, 126, 632, 0, 614, 0, 127, 128, 129, 130, - 131, 0, 474, 132, 133, 134, 0, 135, 136, 137, - 138, 139, 140, 0, 475, 141, 142, 143, 0, 615, - 620, 616, 617, 621, 144, 145, 146, 147, 148, 357, - 149, 150, 358, 359, 151, 0, 152, 0, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 0, 0, 161, - 162, 163, 164, 165, 0, 166, 167, 168, 0, 169, - 170, 171, 0, 172, 173, 174, 175, 360, 176, 177, - 178, 625, 0, 179, 0, 180, 181, 362, 182, 0, - 183, 0, 184, 476, 0, 477, 185, 186, 187, 0, - 188, 189, 633, 0, 364, 190, 0, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 0, 200, 201, 202, - 203, 204, 205, 0, 206, 478, 365, 207, 208, 209, - 210, 366, 367, 0, 368, 0, 211, 479, 212, 480, - 213, 214, 215, 216, 217, 0, 0, 218, 634, 481, - 219, 482, 0, 220, 221, 407, 618, 619, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 408, 370, 483, 371, 236, 237, 372, 0, - 238, 239, 240, 0, 631, 241, 374, 242, 243, 244, - 0, 245, 0, 0, 246, 247, 0, 0, 248, 375, - 484, 249, 485, 626, 250, 251, 252, 253, 254, 255, - 256, 0, 257, 258, 627, 259, 378, 262, 260, 261, - 0, 263, 264, 265, 266, 267, 268, 269, 270, 379, - 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 0, 286, 287, 486, - 288, 289, 380, 290, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 409, 622, 301, 302, 381, - 303, 304, 487, 305, 306, 382, 307, 0, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 628, 0, - 318, 319, 0, 320, 321, 0, 411, 384, 0, 0, - 410, 322, 629, 323, 630, 0, 324, 325, 326, 327, - 328, 329, 330, 0, 0, 331, 332, 333, 334, 335, - 623, 0, 336, 337, 338, 339, 387, 388, 0, 340, - 488, 341, 0, 606, 0, 0, 342, 343, 344, 345, - 346, 347, 348, 349, 0, 0, 98, 99, 100, 101, - 102, 103, 104, 105, 0, 106, 107, 108, 0, 0, - 0, 0, 0, 0, 1781, 109, 110, 0, 111, 112, - 471, 113, 114, 115, 350, 351, 472, 352, 0, 353, - 0, 116, 117, 118, 119, 120, 0, 624, 121, 354, - 355, 122, 0, 123, 124, 125, 126, 632, 0, 614, - 0, 127, 128, 129, 130, 131, 0, 474, 132, 133, - 134, 0, 135, 136, 137, 138, 139, 140, 0, 475, - 141, 142, 143, 0, 615, 620, 616, 617, 621, 144, - 145, 146, 147, 148, 357, 149, 150, 358, 359, 151, - 0, 152, 0, 153, 154, 155, 156, 157, 0, 158, - 159, 160, 0, 0, 161, 162, 163, 164, 165, 0, - 166, 167, 168, 0, 169, 170, 171, 0, 172, 173, - 174, 175, 360, 176, 177, 178, 625, 0, 179, 0, - 180, 181, 362, 182, 0, 183, 0, 184, 476, 0, - 477, 185, 186, 187, 0, 188, 189, 633, 0, 364, - 190, 0, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 0, 200, 201, 202, 203, 204, 205, 0, 206, - 478, 365, 207, 208, 209, 210, 366, 367, 0, 368, - 0, 211, 479, 212, 480, 213, 214, 215, 216, 217, - 0, 0, 218, 634, 481, 219, 482, 0, 220, 221, - 407, 618, 619, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 408, 370, 483, - 371, 236, 237, 372, 0, 238, 239, 240, 0, 631, - 241, 374, 242, 243, 244, 0, 245, 0, 0, 246, - 247, 0, 0, 248, 375, 484, 249, 485, 626, 250, - 251, 252, 253, 254, 255, 256, 0, 257, 258, 627, - 259, 378, 262, 260, 261, 0, 263, 264, 265, 266, - 267, 268, 269, 270, 379, 271, 272, 273, 274, 0, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 0, 286, 287, 486, 288, 289, 380, 1137, 291, - 292, 293, 294, 295, 296, 0, 297, 298, 299, 300, - 409, 622, 301, 302, 381, 303, 304, 487, 305, 306, - 382, 307, 0, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 628, 0, 318, 319, 0, 320, 321, - 0, 411, 384, 0, 0, 410, 322, 629, 323, 630, - 0, 324, 325, 326, 327, 328, 329, 330, 0, 0, - 331, 332, 333, 334, 335, 623, 0, 336, 337, 338, - 339, 387, 388, 0, 340, 488, 341, 0, 467, 0, - 0, 342, 343, 344, 345, 346, 347, 348, 349, 0, - 0, 98, 99, 100, 101, 102, 103, 104, 105, 0, - 106, 107, 108, 0, 0, 0, 0, 0, 0, 50, - 109, 110, 0, 111, 112, 471, 113, 114, 115, 350, - 351, 472, 352, 0, 353, 0, 116, 117, 118, 119, - 120, 0, 0, 121, 354, 355, 122, 0, 123, 124, - 125, 126, 356, 0, 473, 0, 127, 128, 129, 130, - 131, 0, 474, 132, 133, 134, 0, 135, 136, 137, - 138, 139, 140, 0, 475, 141, 142, 143, 0, 0, - 0, 0, 0, 0, 144, 145, 146, 147, 148, 357, - 149, 150, 358, 359, 151, 0, 152, 0, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 0, 0, 161, - 162, 163, 164, 165, 0, 166, 167, 168, 0, 169, - 170, 171, 0, 172, 173, 174, 175, 360, 176, 177, - 178, 361, 0, 179, 0, 180, 181, 362, 182, 0, - 183, 0, 184, 476, 0, 477, 185, 186, 187, 0, - 188, 189, 363, 0, 364, 190, 0, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 0, 200, 201, 202, - 203, 204, 205, 0, 206, 478, 365, 207, 208, 209, - 210, 366, 367, 0, 368, 0, 211, 479, 212, 480, - 213, 214, 215, 216, 217, 0, 0, 218, 369, 481, - 219, 482, 0, 220, 221, 407, 0, 0, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 408, 370, 483, 371, 236, 237, 372, 0, - 238, 239, 240, 0, 373, 241, 374, 242, 243, 244, - 0, 245, 0, 0, 246, 247, 0, 0, 248, 375, - 484, 249, 485, 376, 250, 251, 252, 253, 254, 255, - 256, 0, 257, 258, 377, 259, 378, 262, 260, 261, - 0, 263, 264, 265, 266, 267, 268, 269, 270, 379, - 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 0, 286, 287, 486, - 288, 289, 380, 290, 291, 292, 293, 294, 295, 296, - 53, 297, 298, 299, 300, 409, 0, 301, 302, 381, - 303, 304, 487, 305, 306, 382, 307, 0, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 383, 0, - 318, 319, 55, 320, 321, 0, 411, 384, 0, 0, - 410, 322, 385, 323, 386, 0, 324, 325, 326, 327, - 328, 329, 330, 0, 0, 331, 332, 333, 334, 335, - 0, 0, 336, 337, 338, 339, 466, 388, 0, 340, - 488, 341, 0, 0, 0, 51, 342, 343, 344, 345, - 346, 347, 348, 349, 0, 0, 52, 0, 0, 0, - 0, 0, 467, 696, 700, 0, 0, 701, 0, 0, - 0, 0, 0, 0, 50, 98, 99, 100, 101, 102, - 103, 104, 105, 0, 106, 107, 108, 0, 0, 0, - 0, 0, 0, 0, 109, 110, 0, 111, 112, 471, - 113, 114, 115, 350, 351, 472, 352, 0, 353, 0, - 116, 117, 118, 119, 120, 0, 0, 121, 354, 355, - 122, 0, 123, 124, 125, 126, 356, 0, 473, 0, - 127, 128, 129, 130, 131, 0, 474, 132, 133, 134, - 0, 135, 136, 137, 138, 139, 140, 0, 475, 141, - 142, 143, 0, 0, 0, 0, 0, 0, 144, 145, - 146, 147, 148, 357, 149, 150, 358, 359, 151, 746, - 152, 0, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 0, 0, 161, 162, 163, 164, 165, 0, 166, - 167, 168, 0, 169, 170, 171, 0, 172, 173, 174, - 175, 360, 176, 177, 178, 361, 693, 179, 0, 180, - 181, 362, 182, 0, 183, 0, 184, 476, 0, 477, - 185, 186, 187, 0, 188, 189, 363, 0, 364, 190, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 0, 200, 201, 202, 203, 204, 205, 0, 206, 478, - 365, 207, 208, 209, 210, 366, 367, 0, 368, 0, - 211, 479, 212, 480, 213, 214, 215, 216, 217, 0, - 0, 218, 369, 481, 219, 482, 0, 220, 221, 407, - 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 408, 370, 483, 371, - 236, 237, 372, 0, 238, 239, 240, 0, 373, 241, - 374, 242, 243, 244, 0, 245, 694, 0, 246, 247, - 0, 0, 248, 375, 484, 249, 485, 376, 250, 251, - 252, 253, 254, 255, 256, 0, 257, 258, 377, 259, - 378, 262, 260, 261, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 379, 271, 272, 273, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 0, 286, 287, 486, 288, 289, 380, 290, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 409, - 0, 301, 302, 381, 303, 304, 487, 305, 306, 382, - 307, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 383, 0, 318, 319, 0, 320, 321, 0, - 411, 384, 0, 0, 410, 322, 385, 323, 386, 692, - 324, 325, 326, 327, 328, 329, 330, 0, 0, 331, - 332, 333, 334, 335, 0, 0, 336, 337, 338, 339, - 387, 388, 0, 340, 488, 341, 0, 0, 0, 0, - 342, 343, 344, 345, 346, 347, 348, 349, 467, 696, - 700, 0, 0, 701, 0, 702, 697, 0, 0, 0, - 0, 98, 99, 100, 101, 102, 103, 104, 105, 0, - 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, - 109, 110, 0, 111, 112, 471, 113, 114, 115, 350, - 351, 472, 352, 0, 353, 0, 116, 117, 118, 119, - 120, 0, 0, 121, 354, 355, 122, 0, 123, 124, - 125, 126, 356, 0, 473, 0, 127, 128, 129, 130, - 131, 0, 474, 132, 133, 134, 0, 135, 136, 137, - 138, 139, 140, 0, 475, 141, 142, 143, 0, 0, - 0, 0, 0, 0, 144, 145, 146, 147, 148, 357, - 149, 150, 358, 359, 151, 741, 152, 0, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 0, 0, 161, - 162, 163, 164, 165, 0, 166, 167, 168, 0, 169, - 170, 171, 0, 172, 173, 174, 175, 360, 176, 177, - 178, 361, 693, 179, 0, 180, 181, 362, 182, 0, - 183, 0, 184, 476, 0, 477, 185, 186, 187, 0, - 188, 189, 363, 0, 364, 190, 0, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 0, 200, 201, 202, - 203, 204, 205, 0, 206, 478, 365, 207, 208, 209, - 210, 366, 367, 0, 368, 0, 211, 479, 212, 480, - 213, 214, 215, 216, 217, 0, 0, 218, 369, 481, - 219, 482, 0, 220, 221, 407, 0, 0, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 408, 370, 483, 371, 236, 237, 372, 0, - 238, 239, 240, 0, 373, 241, 374, 242, 243, 244, - 0, 245, 694, 0, 246, 247, 0, 0, 248, 375, - 484, 249, 485, 376, 250, 251, 252, 253, 254, 255, - 256, 0, 257, 258, 377, 259, 378, 262, 260, 261, - 0, 263, 264, 265, 266, 267, 268, 269, 270, 379, - 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 0, 286, 287, 486, - 288, 289, 380, 290, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 409, 0, 301, 302, 381, - 303, 304, 487, 305, 306, 382, 307, 0, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 383, 0, - 318, 319, 0, 320, 321, 0, 411, 384, 0, 0, - 410, 322, 385, 323, 386, 692, 324, 325, 326, 327, - 328, 329, 330, 0, 0, 331, 332, 333, 334, 335, - 0, 0, 336, 337, 338, 339, 387, 388, 0, 340, - 488, 341, 0, 0, 0, 0, 342, 343, 344, 345, - 346, 347, 348, 349, 467, 696, 700, 0, 0, 701, - 0, 702, 697, 0, 0, 0, 0, 98, 99, 100, - 101, 102, 103, 104, 105, 0, 106, 107, 108, 0, - 0, 0, 0, 0, 0, 0, 109, 110, 0, 111, - 112, 471, 113, 114, 115, 350, 351, 472, 352, 0, - 353, 0, 116, 117, 118, 119, 120, 0, 0, 121, - 354, 355, 122, 0, 123, 124, 125, 126, 356, 0, - 473, 0, 127, 128, 129, 130, 131, 0, 474, 132, - 133, 134, 0, 135, 136, 137, 138, 139, 140, 0, - 475, 141, 142, 143, 0, 0, 0, 0, 0, 0, - 144, 145, 146, 147, 148, 357, 149, 150, 358, 359, - 151, 0, 152, 0, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 0, 0, 161, 162, 163, 164, 165, - 0, 166, 167, 168, 0, 169, 170, 171, 0, 172, - 173, 174, 175, 360, 176, 177, 178, 361, 693, 179, - 0, 180, 181, 362, 182, 0, 183, 0, 184, 476, - 0, 477, 185, 186, 187, 0, 188, 189, 363, 0, - 364, 190, 0, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 0, 200, 201, 202, 203, 204, 205, 0, - 206, 478, 365, 207, 208, 209, 210, 366, 367, 0, - 368, 0, 211, 479, 212, 480, 213, 214, 215, 216, - 217, 0, 0, 218, 369, 481, 219, 482, 0, 220, - 221, 407, 0, 0, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 408, 370, - 483, 371, 236, 237, 372, 0, 238, 239, 240, 0, - 373, 241, 374, 242, 243, 244, 0, 245, 694, 0, - 246, 247, 0, 0, 248, 375, 484, 249, 485, 376, - 250, 251, 252, 253, 254, 255, 256, 0, 257, 258, - 377, 259, 378, 262, 260, 261, 0, 263, 264, 265, - 266, 267, 268, 269, 270, 379, 271, 272, 273, 274, - 0, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 0, 286, 287, 486, 288, 289, 380, 290, - 291, 292, 293, 294, 295, 296, 0, 297, 298, 299, - 300, 409, 0, 301, 302, 381, 303, 304, 487, 305, - 306, 382, 307, 0, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 383, 0, 318, 319, 0, 320, - 321, 0, 411, 384, 0, 0, 410, 322, 385, 323, - 386, 692, 324, 325, 326, 327, 328, 329, 330, 0, - 0, 331, 332, 333, 334, 335, 0, 0, 336, 337, - 338, 339, 387, 388, 0, 340, 488, 341, 0, 0, - 0, 0, 342, 343, 344, 345, 346, 347, 348, 349, - 95, 0, 0, 0, 0, 0, 0, 702, 697, 1403, - 1404, 1405, 0, 98, 99, 100, 101, 102, 103, 104, - 105, 0, 106, 107, 108, 0, 0, 0, 0, 0, - 0, 0, 109, 110, 0, 111, 112, 0, 113, 114, - 115, 350, 351, 0, 352, 0, 353, 0, 116, 117, - 118, 119, 120, 0, 0, 121, 354, 355, 122, 0, - 123, 124, 125, 126, 356, 0, 0, 0, 127, 128, - 129, 130, 131, 1402, 0, 132, 133, 134, 0, 135, - 136, 137, 138, 139, 140, 0, 0, 141, 142, 143, - 0, 0, 0, 0, 0, 0, 144, 145, 146, 147, - 148, 357, 149, 150, 358, 359, 151, 0, 152, 0, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 0, - 0, 161, 162, 163, 164, 165, 0, 166, 167, 168, - 0, 169, 170, 171, 0, 172, 173, 174, 175, 360, - 176, 177, 178, 361, 0, 179, 0, 180, 181, 362, - 182, 0, 183, 0, 184, 0, 0, 0, 185, 186, - 187, 0, 188, 189, 363, 0, 364, 190, 0, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 0, 200, - 201, 202, 203, 204, 205, 0, 206, 0, 365, 207, - 208, 209, 210, 366, 367, 0, 368, 0, 211, 0, - 212, 0, 213, 214, 215, 216, 217, 0, 0, 218, - 369, 0, 219, 0, 0, 220, 221, 407, 0, 0, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 408, 370, 0, 371, 236, 237, - 372, 0, 238, 239, 240, 0, 373, 241, 374, 242, - 243, 244, 0, 245, 0, 0, 246, 247, 0, 0, - 248, 375, 0, 249, 0, 376, 250, 251, 252, 253, - 254, 255, 256, 0, 257, 258, 377, 259, 378, 262, - 260, 261, 0, 263, 264, 265, 266, 267, 268, 269, - 270, 379, 271, 272, 273, 274, 0, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 0, 286, - 287, 0, 288, 289, 380, 290, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 299, 300, 409, 0, 301, - 302, 381, 303, 304, 0, 305, 306, 382, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 383, 0, 318, 319, 0, 320, 321, 0, 411, 384, - 0, 0, 410, 322, 385, 323, 386, 0, 324, 325, - 326, 327, 328, 329, 330, 0, 0, 331, 332, 333, - 334, 335, 0, 0, 336, 337, 338, 339, 387, 388, - 0, 340, 0, 341, 0, 0, 0, 0, 342, 343, - 344, 345, 346, 347, 348, 349, 0, 0, 0, 1399, - 1400, 1401, 606, 1390, 1391, 1392, 1393, 1394, 1395, 1396, - 1397, 1398, 0, 0, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 0, 106, 107, 108, 0, 0, 0, - 0, 0, 0, 0, 109, 110, 0, 111, 112, 471, - 113, 114, 115, 350, 351, 472, 352, 0, 353, 0, - 116, 117, 118, 119, 120, 0, 624, 121, 354, 355, - 122, 0, 123, 124, 125, 126, 632, 0, 614, 0, - 127, 128, 129, 130, 131, 0, 474, 132, 133, 134, - 0, 135, 136, 137, 138, 139, 140, 0, 475, 141, - 142, 143, 0, 615, 620, 616, 617, 621, 144, 145, - 146, 147, 148, 357, 149, 150, 358, 359, 151, 0, - 152, 0, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 0, 0, 161, 162, 163, 164, 165, 0, 166, - 167, 168, 0, 169, 170, 171, 0, 172, 173, 174, - 175, 360, 176, 177, 178, 625, 0, 179, 0, 180, - 181, 362, 182, 0, 183, 0, 184, 476, 0, 477, - 185, 186, 187, 0, 188, 189, 633, 0, 364, 190, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 0, 200, 201, 202, 203, 204, 205, 0, 206, 478, - 365, 207, 208, 209, 210, 366, 367, 0, 368, 0, - 211, 479, 212, 480, 213, 214, 215, 216, 217, 0, - 0, 218, 634, 481, 219, 482, 0, 220, 221, 407, - 618, 619, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 408, 370, 483, 371, - 236, 237, 372, 0, 238, 239, 240, 0, 631, 241, - 374, 242, 243, 244, 0, 245, 0, 0, 246, 247, - 0, 0, 248, 375, 484, 249, 485, 626, 250, 251, - 252, 253, 254, 255, 256, 0, 257, 258, 627, 259, - 378, 262, 260, 261, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 379, 271, 272, 273, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 0, 286, 287, 486, 288, 289, 380, 290, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 409, - 622, 301, 302, 381, 303, 304, 487, 305, 306, 382, - 307, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 628, 0, 318, 319, 0, 320, 321, 0, - 411, 384, 0, 0, 410, 322, 629, 323, 630, 0, - 324, 325, 326, 327, 328, 329, 330, 0, 0, 331, - 332, 333, 334, 335, 623, 0, 336, 337, 338, 339, - 387, 388, 0, 340, 488, 341, 95, 0, 0, 0, - 342, 343, 344, 345, 346, 347, 348, 349, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 0, 0, 0, 109, 110, - 0, 111, 112, 0, 113, 114, 115, 350, 351, 0, - 352, 0, 353, 0, 116, 117, 118, 119, 120, 0, - 0, 121, 354, 355, 122, 0, 123, 124, 125, 126, - 356, 0, 0, 0, 127, 128, 129, 130, 131, 0, - 0, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 0, 141, 142, 143, 0, 0, 0, 0, - 0, 0, 144, 145, 146, 147, 148, 357, 149, 150, - 358, 359, 151, 0, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 163, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 360, 176, 177, 178, 361, - 0, 179, 0, 180, 181, 362, 182, 0, 183, 0, - 184, 0, 0, 0, 185, 186, 187, 0, 188, 189, - 363, 0, 364, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 0, 365, 207, 208, 209, 210, 366, - 367, 0, 368, 0, 211, 0, 212, 0, 213, 214, - 215, 216, 217, 0, 0, 218, 369, 0, 219, 0, - 0, 220, 221, 407, 0, 0, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 408, 370, 0, 371, 236, 237, 372, 0, 238, 239, - 240, 0, 373, 241, 374, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 0, 249, - 0, 376, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 377, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 379, 271, 272, - 273, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 0, 288, 289, - 380, 290, 291, 292, 293, 294, 295, 296, 53, 297, - 298, 299, 300, 409, 0, 301, 302, 381, 303, 304, - 0, 305, 306, 382, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 383, 0, 318, 319, - 55, 320, 321, 0, 411, 384, 0, 0, 410, 322, - 385, 323, 386, 0, 324, 325, 326, 327, 328, 329, - 330, 0, 0, 331, 332, 333, 334, 335, 0, 0, - 336, 337, 338, 339, 466, 388, 0, 340, 0, 341, - 0, 0, 0, 51, 342, 343, 344, 345, 346, 347, - 348, 349, 0, 0, 52, 0, 0, 0, 0, 0, - 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 50, 98, 99, 100, 101, 102, 103, 104, - 105, 0, 106, 107, 108, 0, 0, 0, 0, 0, - 1427, 0, 109, 110, 0, 111, 112, 0, 113, 114, - 115, 350, 351, 0, 352, 0, 353, 0, 116, 117, - 118, 119, 120, 0, 0, 121, 354, 355, 122, 0, - 123, 124, 125, 126, 356, 0, 0, 0, 127, 128, - 129, 130, 131, 0, 0, 132, 133, 134, 0, 135, - 136, 137, 138, 139, 140, 0, 0, 141, 142, 143, - 0, 0, 0, 0, 0, 0, 144, 145, 146, 147, - 148, 357, 149, 150, 358, 359, 151, 0, 152, 0, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 0, - 0, 161, 162, 163, 164, 165, 0, 166, 167, 168, - 0, 169, 170, 171, 0, 172, 173, 174, 175, 360, - 176, 177, 178, 361, 0, 179, 0, 180, 181, 362, - 182, 0, 183, 0, 184, 0, 0, 0, 185, 186, - 187, 0, 188, 189, 363, 0, 364, 190, 0, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 0, 200, - 201, 202, 203, 204, 205, 0, 206, 0, 365, 207, - 208, 209, 210, 366, 367, 0, 368, 0, 211, 0, - 212, 0, 213, 214, 215, 216, 217, 0, 0, 218, - 369, 0, 219, 0, 0, 220, 221, 407, 0, 0, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 408, 370, 0, 371, 236, 237, - 372, 0, 238, 239, 240, 0, 373, 241, 374, 242, - 243, 244, 0, 245, 0, 0, 246, 247, 0, 0, - 248, 375, 0, 249, 0, 376, 250, 251, 252, 253, - 254, 255, 256, 0, 257, 258, 377, 259, 378, 262, - 260, 261, 0, 263, 264, 265, 266, 267, 268, 269, - 270, 379, 271, 272, 273, 274, 0, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 0, 286, - 287, 0, 288, 289, 380, 290, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 299, 300, 409, 0, 301, - 302, 381, 303, 304, 0, 305, 306, 382, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 383, 0, 318, 319, 0, 320, 321, 0, 411, 384, - 0, 0, 410, 322, 385, 323, 386, 0, 324, 325, - 326, 327, 328, 329, 330, 0, 0, 331, 332, 333, - 334, 335, 0, 0, 336, 337, 338, 339, 387, 388, - 0, 340, 0, 341, 0, 0, 95, 0, 342, 343, - 344, 345, 346, 347, 348, 349, 0, 0, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 0, 0, 560, 109, 110, - 0, 111, 112, 0, 113, 114, 115, 350, 351, 0, - 352, 0, 353, 0, 116, 117, 118, 119, 120, 0, - 0, 121, 354, 355, 122, 0, 123, 124, 125, 126, - 356, 0, 0, 0, 127, 128, 129, 130, 131, 0, - 0, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 0, 141, 142, 143, 0, 0, 0, 0, - 0, 0, 144, 145, 146, 147, 148, 357, 149, 150, - 358, 359, 151, 0, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 163, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 360, 176, 177, 178, 361, - 0, 179, 0, 180, 181, 362, 182, 0, 183, 0, - 184, 0, 0, 0, 185, 186, 187, 0, 188, 189, - 363, 0, 364, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 0, 365, 207, 208, 209, 210, 366, - 367, 0, 368, 0, 211, 0, 212, 0, 213, 214, - 215, 216, 217, 0, 0, 218, 369, 0, 219, 0, - 0, 220, 221, 407, 0, 0, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 408, 370, 0, 371, 236, 237, 372, 0, 238, 239, - 240, 0, 373, 241, 374, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 0, 249, - 0, 376, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 377, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 379, 271, 272, - 273, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 0, 288, 289, - 380, 290, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 409, 0, 301, 302, 381, 303, 304, - 0, 305, 306, 382, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 383, 0, 318, 319, - 0, 320, 321, 0, 411, 384, 0, 0, 410, 322, - 385, 323, 386, 0, 324, 325, 326, 327, 328, 329, - 330, 0, 0, 331, 332, 333, 334, 335, 0, 0, - 336, 337, 338, 339, 387, 388, 0, 340, 0, 341, - 0, 95, 0, 0, 342, 343, 344, 345, 346, 347, - 348, 349, 0, 0, 98, 99, 100, 101, 102, 103, - 104, 105, 0, 106, 107, 108, 0, 0, 0, 0, - 0, 0, 1014, 109, 110, 0, 111, 112, 0, 113, - 114, 115, 350, 351, 0, 352, 0, 353, 0, 116, - 117, 118, 119, 120, 0, 0, 121, 354, 355, 122, - 0, 123, 124, 125, 126, 356, 0, 0, 0, 127, - 128, 129, 130, 131, 0, 0, 132, 133, 134, 0, - 135, 136, 137, 138, 139, 140, 0, 0, 141, 142, - 143, 0, 0, 0, 0, 0, 0, 144, 145, 146, - 147, 148, 357, 149, 150, 358, 359, 151, 0, 152, - 0, 153, 154, 155, 156, 157, 0, 158, 159, 160, - 0, 0, 161, 162, 163, 164, 165, 0, 166, 167, - 168, 0, 169, 170, 171, 0, 172, 173, 174, 175, - 360, 176, 177, 178, 361, 0, 179, 0, 180, 181, - 362, 182, 0, 183, 0, 184, 0, 0, 0, 185, - 186, 187, 0, 188, 189, 363, 0, 364, 190, 0, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 0, 206, 0, 365, - 207, 208, 209, 210, 366, 367, 0, 368, 0, 211, - 0, 212, 0, 213, 214, 215, 216, 217, 0, 0, - 218, 369, 0, 219, 0, 0, 220, 221, 407, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 408, 370, 0, 371, 236, - 237, 372, 0, 238, 239, 240, 0, 373, 241, 374, - 242, 243, 244, 0, 245, 0, 0, 246, 247, 0, - 0, 248, 375, 0, 249, 0, 376, 250, 251, 252, - 253, 254, 255, 256, 0, 257, 258, 377, 259, 378, - 262, 260, 261, 0, 263, 264, 265, 266, 267, 268, - 269, 270, 379, 271, 272, 273, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 0, - 286, 287, 0, 288, 289, 380, 290, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 409, 0, - 301, 302, 381, 303, 304, 0, 305, 306, 382, 307, - 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 383, 0, 318, 319, 0, 320, 321, 0, 411, - 384, 0, 0, 410, 322, 385, 323, 386, 0, 324, - 325, 326, 327, 328, 329, 330, 0, 0, 331, 332, - 333, 334, 335, 0, 0, 336, 337, 338, 339, 387, - 388, 0, 340, 0, 341, 0, 95, 0, 0, 342, - 343, 344, 345, 346, 347, 348, 349, 0, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 0, 0, 1704, 109, 110, - 0, 111, 112, 0, 113, 114, 115, 350, 351, 0, - 352, 0, 353, 0, 116, 117, 118, 119, 120, 0, - 0, 121, 354, 355, 122, 0, 123, 124, 125, 126, - 356, 0, 0, 0, 127, 128, 129, 130, 131, 0, - 0, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 0, 141, 142, 143, 0, 0, 0, 0, - 0, 0, 144, 145, 146, 147, 148, 357, 149, 150, - 358, 359, 151, 0, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 163, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 360, 176, 177, 178, 361, - 0, 179, 0, 180, 181, 362, 182, 0, 183, 0, - 184, 0, 0, 0, 185, 186, 187, 0, 188, 189, - 363, 0, 364, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 0, 365, 207, 208, 209, 210, 366, - 367, 0, 368, 0, 211, 0, 212, 0, 213, 214, - 215, 216, 217, 0, 0, 218, 369, 0, 219, 0, - 0, 220, 221, 407, 0, 0, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 408, 370, 0, 371, 236, 237, 372, 0, 238, 239, - 240, 0, 373, 241, 374, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 0, 249, - 0, 376, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 377, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 379, 271, 272, - 273, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 0, 288, 289, - 380, 290, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 409, 0, 301, 302, 381, 303, 304, - 0, 305, 306, 382, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 383, 0, 318, 319, - 0, 320, 321, 0, 411, 384, 0, 0, 410, 322, - 385, 323, 386, 0, 324, 325, 326, 327, 328, 329, - 330, 0, 0, 331, 332, 333, 334, 335, 0, 0, - 336, 337, 338, 339, 387, 388, 0, 340, 0, 341, - 0, 95, 0, 0, 342, 343, 344, 345, 346, 347, - 348, 349, 0, 0, 98, 99, 100, 101, 102, 103, - 104, 105, 0, 106, 107, 108, 0, 0, 0, 0, - 0, 0, 1649, 109, 110, 0, 111, 112, 0, 113, - 114, 115, 350, 351, 0, 352, 0, 353, 0, 116, - 117, 118, 119, 120, 0, 0, 121, 354, 355, 122, - 0, 123, 124, 125, 126, 356, 0, 0, 0, 127, - 128, 129, 130, 131, 0, 0, 132, 133, 134, 0, - 135, 136, 137, 138, 139, 140, 0, 0, 141, 142, - 143, 0, 0, 0, 0, 0, 0, 144, 145, 146, - 147, 148, 357, 149, 150, 358, 359, 151, 0, 152, - 0, 153, 154, 155, 156, 157, 0, 158, 159, 160, - 0, 0, 161, 162, 163, 164, 165, 0, 166, 167, - 168, 0, 169, 170, 171, 0, 172, 173, 174, 175, - 360, 176, 177, 178, 361, 0, 179, 0, 180, 181, - 362, 182, 0, 183, 0, 184, 0, 0, 0, 185, - 186, 187, 0, 188, 189, 363, 0, 364, 190, 0, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 0, - 200, 201, 202, 203, 204, 205, 0, 206, 0, 365, - 207, 208, 209, 210, 366, 367, 0, 368, 0, 211, - 0, 212, 0, 213, 214, 215, 216, 217, 0, 0, - 218, 369, 0, 219, 0, 0, 220, 221, 407, 0, - 0, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 408, 370, 0, 371, 236, - 237, 372, 0, 238, 239, 240, 0, 373, 241, 374, - 242, 243, 244, 0, 245, 0, 0, 246, 247, 0, - 0, 248, 375, 0, 249, 0, 376, 250, 251, 252, - 253, 254, 255, 256, 0, 257, 258, 377, 259, 378, - 262, 260, 261, 0, 263, 264, 265, 266, 267, 268, - 269, 270, 379, 271, 272, 273, 274, 0, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 0, - 286, 287, 0, 288, 289, 380, 290, 291, 292, 293, - 294, 295, 296, 0, 297, 298, 299, 300, 409, 0, - 301, 302, 381, 303, 304, 0, 305, 306, 382, 307, - 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 383, 0, 318, 319, 0, 320, 321, 0, 411, - 384, 0, 0, 410, 322, 385, 323, 386, 0, 324, - 325, 326, 327, 328, 329, 330, 0, 0, 331, 332, - 333, 334, 335, 0, 0, 336, 337, 338, 339, 387, - 388, 0, 340, 0, 341, 0, 467, 0, 0, 342, - 343, 344, 345, 346, 347, 348, 349, 0, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 0, 0, 664, 109, 110, - 0, 111, 112, 471, 113, 114, 115, 350, 351, 472, - 352, 0, 353, 0, 116, 117, 118, 119, 120, 0, - 0, 121, 354, 355, 122, 0, 123, 124, 125, 126, - 356, 0, 473, 0, 127, 128, 129, 130, 131, 0, - 474, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 475, 141, 142, 143, 0, 0, 0, 0, - 0, 0, 144, 145, 146, 147, 148, 357, 149, 150, - 358, 359, 151, 0, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 163, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 360, 176, 177, 178, 361, - 0, 179, 0, 180, 181, 362, 182, 0, 183, 0, - 184, 476, 0, 477, 185, 186, 187, 0, 188, 189, - 363, 0, 364, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 478, 365, 207, 208, 209, 210, 366, - 367, 0, 368, 0, 211, 479, 212, 480, 213, 214, - 215, 216, 217, 0, 0, 218, 369, 481, 219, 482, - 0, 220, 221, 407, 0, 0, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 408, 370, 483, 371, 236, 237, 372, 0, 238, 239, - 240, 0, 373, 241, 374, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 484, 249, - 485, 376, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 377, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 379, 271, 272, - 273, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 486, 288, 289, - 380, 290, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 409, 0, 301, 302, 381, 303, 304, - 487, 305, 306, 382, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 383, 0, 318, 319, - 0, 320, 321, 0, 411, 384, 0, 0, 410, 322, - 385, 323, 386, 0, 324, 325, 326, 327, 328, 329, - 330, 0, 0, 331, 332, 333, 334, 335, 0, 0, - 336, 337, 338, 339, 387, 388, 0, 340, 488, 341, - 95, 0, 0, 0, 342, 343, 344, 345, 346, 347, - 348, 349, 0, 98, 99, 100, 101, 102, 103, 104, - 105, 0, 106, 107, 108, 0, 0, 0, 0, 0, - 0, 0, 109, 110, 0, 111, 112, 0, 113, 114, - 115, 350, 351, 0, 352, 0, 353, 0, 116, 117, - 118, 119, 120, 0, 0, 121, 354, 355, 122, 1041, - 123, 124, 125, 126, 356, 0, 0, 0, 127, 128, - 129, 130, 131, 0, 0, 132, 133, 134, 1039, 135, - 136, 137, 138, 139, 140, 0, 0, 141, 142, 143, - 0, 0, 0, 0, 0, 0, 144, 145, 146, 147, - 148, 357, 149, 150, 358, 359, 151, 0, 152, 0, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 0, - 0, 161, 162, 163, 164, 165, 0, 166, 167, 168, - 0, 169, 170, 171, 0, 1045, 173, 174, 175, 360, - 176, 177, 178, 361, 0, 179, 0, 180, 181, 362, - 182, 0, 183, 1046, 184, 0, 0, 0, 185, 186, - 187, 0, 188, 189, 363, 0, 364, 190, 0, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 0, 200, - 201, 1043, 203, 204, 205, 0, 206, 0, 365, 207, - 208, 209, 210, 366, 367, 0, 368, 0, 211, 0, - 212, 0, 213, 214, 215, 216, 217, 0, 0, 218, - 369, 0, 219, 1093, 0, 220, 221, 407, 0, 0, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 408, 370, 0, 371, 236, 237, - 372, 0, 238, 239, 240, 0, 373, 241, 374, 242, - 243, 244, 0, 245, 0, 0, 246, 247, 0, 0, - 248, 375, 0, 249, 0, 376, 250, 251, 252, 253, - 254, 255, 256, 0, 257, 258, 377, 259, 378, 262, - 260, 261, 1044, 263, 264, 265, 266, 267, 268, 269, - 270, 379, 271, 272, 273, 274, 0, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 0, 286, - 287, 0, 288, 289, 380, 290, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 299, 300, 409, 0, 301, - 302, 381, 303, 304, 0, 305, 306, 382, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 383, 0, 318, 319, 0, 320, 321, 0, 411, 384, - 0, 0, 410, 322, 385, 323, 386, 0, 324, 325, - 326, 327, 328, 329, 330, 0, 1042, 331, 332, 333, - 334, 335, 0, 0, 336, 337, 338, 339, 387, 388, - 0, 340, 0, 341, 95, 0, 0, 0, 342, 343, - 344, 345, 346, 347, 348, 349, 0, 98, 99, 100, - 101, 102, 103, 104, 105, 0, 106, 107, 108, 0, - 0, 0, 0, 0, 0, 0, 109, 110, 0, 111, - 112, 0, 113, 114, 115, 350, 351, 0, 352, 0, - 353, 0, 116, 117, 118, 119, 120, 0, 0, 121, - 354, 355, 122, 1041, 123, 124, 125, 126, 356, 0, - 0, 1036, 127, 128, 129, 130, 131, 0, 0, 132, - 133, 134, 1039, 135, 136, 137, 138, 139, 140, 0, - 0, 141, 142, 143, 0, 0, 0, 0, 0, 0, - 144, 145, 146, 147, 148, 357, 149, 150, 358, 359, - 151, 0, 152, 0, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 0, 0, 161, 162, 163, 164, 165, - 0, 166, 167, 168, 0, 169, 170, 171, 0, 1045, - 173, 174, 175, 360, 176, 177, 178, 361, 0, 179, - 0, 180, 181, 362, 182, 0, 183, 1046, 184, 0, - 0, 0, 185, 186, 187, 0, 188, 189, 363, 0, - 364, 190, 0, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 0, 200, 201, 1043, 203, 204, 205, 0, - 206, 0, 365, 207, 208, 209, 210, 366, 367, 0, - 368, 0, 211, 0, 212, 0, 213, 214, 215, 216, - 217, 0, 0, 218, 369, 0, 219, 0, 0, 220, - 221, 407, 0, 0, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 408, 370, - 0, 371, 236, 237, 372, 0, 238, 239, 240, 0, - 373, 241, 374, 242, 243, 244, 0, 245, 0, 0, - 246, 247, 0, 0, 248, 375, 0, 249, 0, 376, - 250, 251, 252, 253, 254, 255, 256, 0, 257, 258, - 377, 259, 378, 262, 260, 261, 1044, 263, 264, 265, - 266, 267, 268, 269, 270, 379, 271, 272, 273, 274, - 0, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 0, 286, 287, 0, 288, 289, 380, 290, - 291, 292, 293, 294, 295, 296, 0, 297, 298, 299, - 300, 409, 0, 301, 302, 381, 303, 304, 0, 305, - 306, 382, 307, 0, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 383, 0, 318, 319, 0, 320, - 321, 0, 411, 384, 0, 0, 410, 322, 385, 323, - 386, 0, 324, 325, 326, 327, 328, 329, 330, 0, - 1042, 331, 332, 333, 334, 335, 0, 0, 336, 337, - 338, 339, 387, 388, 0, 340, 0, 341, 95, 0, - 0, 0, 342, 343, 344, 345, 346, 347, 348, 349, - 0, 98, 99, 100, 101, 102, 103, 104, 105, 0, - 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, - 109, 110, 0, 111, 112, 0, 113, 114, 115, 350, - 351, 0, 352, 0, 353, 0, 116, 117, 118, 119, - 120, 0, 0, 121, 354, 355, 122, 1041, 123, 124, - 125, 126, 356, 0, 0, 0, 127, 128, 129, 130, - 131, 0, 0, 132, 133, 134, 1039, 135, 136, 137, - 138, 139, 140, 0, 0, 141, 142, 143, 0, 0, - 0, 0, 0, 0, 144, 145, 146, 147, 148, 357, - 149, 150, 358, 359, 151, 0, 152, 0, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 0, 0, 161, - 162, 163, 164, 165, 0, 166, 167, 168, 0, 169, - 170, 171, 0, 1045, 173, 174, 175, 360, 176, 177, - 178, 361, 0, 179, 0, 180, 181, 362, 182, 0, - 183, 1046, 184, 0, 0, 0, 185, 186, 187, 0, - 188, 189, 363, 0, 364, 190, 0, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 0, 200, 201, 1043, - 203, 204, 205, 0, 206, 0, 365, 207, 208, 209, - 210, 366, 367, 0, 368, 0, 211, 0, 212, 0, - 213, 214, 215, 216, 217, 0, 0, 218, 369, 0, - 219, 0, 0, 220, 221, 407, 0, 0, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 408, 370, 0, 371, 236, 237, 372, 0, - 238, 239, 240, 0, 373, 241, 374, 242, 243, 244, - 0, 245, 0, 0, 246, 247, 0, 0, 248, 375, - 0, 249, 0, 376, 250, 251, 252, 253, 254, 255, - 256, 0, 257, 258, 377, 259, 378, 262, 260, 261, - 1044, 263, 264, 265, 266, 267, 268, 269, 270, 379, - 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 0, 286, 287, 0, - 288, 289, 380, 290, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 409, 0, 301, 302, 381, - 303, 304, 0, 305, 306, 382, 307, 0, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 383, 0, - 318, 319, 0, 320, 321, 0, 411, 384, 0, 0, - 410, 322, 385, 323, 386, 0, 324, 325, 326, 327, - 328, 329, 330, 0, 1042, 331, 332, 333, 334, 335, - 0, 0, 336, 337, 338, 339, 387, 388, 0, 340, - 0, 341, 95, 0, 0, 0, 342, 343, 344, 345, - 346, 347, 348, 349, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 0, 106, 107, 108, 0, 0, 0, - 0, 0, 0, 0, 109, 110, 0, 111, 112, 0, - 113, 114, 115, 350, 351, 0, 352, 0, 353, 0, - 116, 117, 118, 119, 120, 0, 0, 121, 354, 355, - 122, 0, 123, 124, 125, 126, 356, 0, 0, 0, - 127, 128, 129, 130, 131, 0, 0, 132, 133, 134, - 0, 135, 136, 137, 138, 139, 140, 0, 0, 141, - 142, 143, 0, 0, 0, 0, 0, 0, 144, 145, - 146, 147, 148, 357, 149, 150, 358, 359, 151, 0, - 152, 0, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 0, 0, 161, 162, 163, 164, 165, 0, 166, - 167, 168, 0, 169, 170, 171, 0, 172, 173, 174, - 175, 360, 176, 177, 178, 361, 0, 179, 0, 180, - 181, 362, 182, 0, 183, 0, 184, 0, 0, 0, - 185, 186, 187, 0, 188, 189, 363, 0, 364, 190, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 0, 200, 201, 202, 203, 204, 205, 0, 206, 0, - 365, 207, 208, 209, 210, 366, 367, 0, 368, 0, - 211, 0, 212, 0, 213, 214, 215, 216, 217, 0, - 0, 218, 369, 0, 219, 0, 0, 220, 221, 407, - 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 408, 370, 0, 371, - 236, 237, 372, 0, 238, 239, 240, 0, 373, 241, - 374, 242, 243, 244, 0, 245, 0, 0, 246, 247, - 0, 0, 248, 375, 0, 249, 0, 376, 250, 251, - 252, 253, 254, 255, 256, 0, 257, 258, 377, 259, - 378, 262, 260, 261, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 379, 271, 272, 273, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 0, 286, 287, 0, 288, 289, 380, 290, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 409, - 0, 301, 302, 381, 303, 304, 0, 305, 306, 382, - 307, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 383, 0, 318, 319, 0, 320, 321, 0, - 411, 384, 0, 0, 410, 322, 385, 323, 386, 0, - 324, 325, 326, 327, 328, 329, 330, 0, 0, 331, - 332, 333, 334, 335, 0, 2013, 336, 337, 338, 339, - 387, 388, 0, 340, 0, 341, 95, 0, 0, 0, - 342, 343, 344, 345, 346, 347, 348, 349, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 0, 1427, 0, 109, 110, - 0, 111, 112, 0, 113, 114, 115, 350, 351, 0, - 352, 0, 353, 0, 116, 117, 118, 119, 120, 0, - 0, 121, 354, 355, 122, 0, 123, 124, 125, 126, - 356, 0, 0, 0, 127, 128, 129, 130, 131, 0, - 0, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 0, 141, 142, 143, 0, 0, 0, 0, - 0, 0, 144, 145, 146, 147, 148, 357, 149, 150, - 358, 359, 151, 0, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 163, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 360, 176, 177, 178, 361, - 0, 179, 0, 180, 181, 362, 182, 0, 183, 0, - 184, 0, 0, 0, 185, 186, 187, 0, 188, 189, - 363, 0, 364, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 0, 365, 207, 208, 209, 210, 366, - 367, 0, 368, 0, 211, 0, 212, 0, 213, 214, - 215, 216, 217, 0, 0, 218, 369, 0, 219, 0, - 0, 220, 221, 407, 0, 0, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 408, 370, 0, 371, 236, 237, 372, 0, 238, 239, - 240, 0, 373, 241, 374, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 0, 249, - 0, 376, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 377, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 379, 271, 272, - 273, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 0, 288, 289, - 380, 290, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 409, 0, 301, 302, 381, 303, 304, - 0, 305, 306, 382, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 383, 0, 318, 319, - 0, 320, 321, 0, 411, 384, 0, 0, 410, 322, - 385, 323, 386, 0, 324, 325, 326, 327, 328, 329, - 330, 0, 0, 331, 332, 333, 334, 335, 0, 0, - 336, 337, 338, 339, 387, 388, 0, 340, 0, 341, - 95, 0, 0, 0, 342, 343, 344, 345, 346, 347, - 348, 349, 0, 98, 99, 100, 101, 102, 103, 104, - 105, 0, 106, 107, 108, 0, 0, 0, 0, 0, - 1431, 0, 109, 110, 0, 111, 112, 0, 113, 114, - 115, 350, 351, 0, 352, 0, 353, 0, 116, 117, - 118, 119, 120, 0, 0, 121, 354, 355, 122, 0, - 123, 124, 125, 126, 356, 0, 0, 0, 127, 128, - 129, 130, 131, 0, 0, 132, 133, 134, 0, 135, - 136, 137, 138, 139, 140, 0, 0, 141, 142, 143, - 0, 0, 0, 0, 0, 0, 144, 145, 146, 147, - 148, 357, 149, 150, 358, 359, 151, 0, 152, 0, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 0, - 0, 161, 162, 163, 164, 165, 0, 166, 167, 168, - 0, 169, 170, 171, 0, 172, 173, 174, 175, 360, - 176, 177, 178, 361, 0, 179, 0, 180, 181, 362, - 182, 0, 183, 0, 184, 0, 0, 0, 185, 186, - 187, 0, 188, 189, 363, 0, 364, 190, 0, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 0, 200, - 201, 202, 203, 204, 205, 0, 206, 0, 365, 207, - 208, 209, 210, 366, 367, 0, 368, 0, 211, 0, - 212, 0, 213, 214, 215, 216, 217, 0, 0, 218, - 369, 0, 219, 0, 0, 220, 221, 407, 0, 0, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 408, 370, 0, 371, 236, 237, - 372, 0, 238, 239, 240, 0, 373, 241, 374, 242, - 243, 244, 0, 245, 0, 0, 246, 247, 0, 0, - 248, 375, 0, 249, 0, 376, 250, 251, 252, 253, - 254, 255, 256, 0, 257, 258, 377, 259, 378, 262, - 260, 261, 0, 263, 264, 265, 266, 267, 268, 269, - 270, 379, 271, 272, 273, 274, 0, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 0, 286, - 287, 0, 288, 289, 380, 290, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 299, 300, 409, 0, 301, - 302, 381, 303, 304, 0, 305, 306, 382, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 383, 0, 318, 319, 0, 320, 321, 0, 411, 384, - 0, 0, 410, 322, 385, 323, 386, 0, 324, 325, - 326, 327, 328, 329, 330, 0, 0, 331, 332, 333, - 334, 335, 0, 0, 336, 337, 338, 339, 387, 388, - 0, 340, 0, 341, 95, 0, 0, 0, 342, 343, - 344, 345, 346, 347, 348, 349, 0, 98, 99, 100, - 101, 102, 103, 104, 105, 0, 106, 107, 108, 0, - 0, 0, 0, 0, 0, 0, 109, 110, 0, 111, - 112, 0, 113, 114, 115, 350, 351, 0, 352, 0, - 353, 0, 116, 117, 118, 119, 120, 0, 0, 121, - 354, 355, 122, 0, 123, 124, 125, 126, 356, 0, - 0, 0, 127, 128, 129, 130, 131, 0, 0, 132, - 133, 134, 0, 135, 136, 137, 138, 139, 140, 0, - 0, 141, 142, 143, 0, 0, 0, 0, 0, 0, - 144, 145, 146, 147, 148, 357, 149, 150, 358, 359, - 151, 0, 152, 0, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 0, 0, 161, 162, 163, 164, 165, - 0, 166, 167, 168, 0, 169, 170, 171, 0, 172, - 173, 174, 175, 360, 176, 177, 178, 361, 0, 179, - 0, 180, 181, 362, 182, 0, 183, 0, 184, 0, - 0, 0, 185, 186, 187, 0, 188, 189, 363, 0, - 364, 190, 0, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 0, 200, 201, 202, 203, 204, 205, 0, - 206, 0, 365, 207, 208, 209, 210, 366, 367, 0, - 368, 0, 211, 0, 212, 0, 213, 214, 215, 216, - 217, 0, 0, 218, 369, 0, 219, 0, 0, 220, - 221, 407, 0, 0, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 408, 370, - 0, 371, 236, 237, 372, 0, 238, 239, 240, 0, - 373, 241, 374, 242, 243, 244, 0, 245, 0, 445, - 246, 247, 0, 0, 248, 375, 0, 249, 0, 376, - 250, 251, 252, 253, 254, 255, 256, 0, 257, 258, - 377, 259, 378, 262, 260, 261, 0, 263, 264, 265, - 266, 267, 268, 269, 270, 379, 271, 272, 273, 274, - 0, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 0, 286, 287, 0, 288, 289, 380, 290, - 291, 292, 293, 294, 295, 296, 0, 297, 298, 299, - 300, 409, 0, 301, 302, 381, 303, 304, 0, 305, - 306, 382, 307, 0, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 383, 0, 318, 319, 0, 320, - 321, 0, 411, 384, 0, 0, 410, 322, 385, 323, - 386, 0, 324, 325, 326, 327, 328, 329, 330, 0, - 0, 331, 332, 333, 334, 335, 0, 0, 336, 337, - 338, 339, 387, 388, 0, 340, 0, 341, 95, 0, - 0, 0, 342, 343, 344, 345, 346, 347, 348, 349, - 0, 98, 99, 100, 101, 102, 103, 104, 105, 0, - 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, - 109, 110, 0, 111, 112, 0, 113, 114, 115, 350, - 351, 0, 352, 0, 353, 0, 116, 117, 118, 119, - 120, 0, 0, 121, 354, 355, 122, 0, 123, 124, - 125, 126, 356, 0, 0, 0, 127, 128, 129, 130, - 131, 0, 0, 132, 133, 134, 0, 135, 136, 137, - 138, 139, 140, 0, 0, 141, 142, 143, 0, 0, - 0, 0, 0, 0, 144, 145, 146, 708, 148, 357, - 149, 150, 358, 359, 151, 0, 152, 0, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 0, 0, 161, - 162, 163, 164, 165, 0, 166, 167, 168, 0, 169, - 170, 171, 0, 172, 173, 174, 175, 360, 176, 177, - 178, 361, 0, 179, 0, 180, 181, 362, 182, 0, - 183, 0, 184, 0, 0, 0, 185, 186, 187, 0, - 188, 189, 363, 0, 364, 190, 0, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 0, 200, 201, 202, - 203, 204, 205, 0, 206, 0, 365, 207, 208, 209, - 210, 366, 367, 0, 368, 0, 211, 0, 212, 0, - 213, 214, 215, 216, 217, 0, 0, 218, 369, 0, - 219, 0, 0, 220, 221, 407, 0, 0, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 408, 370, 0, 371, 236, 237, 372, 0, - 238, 239, 240, 0, 373, 241, 374, 242, 243, 244, - 0, 245, 0, 0, 246, 247, 0, 0, 248, 375, - 0, 249, 0, 376, 250, 251, 252, 253, 254, 255, - 256, 0, 257, 258, 377, 259, 378, 262, 260, 261, - 0, 263, 264, 265, 266, 267, 268, 269, 270, 379, - 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 0, 286, 287, 0, - 288, 289, 380, 290, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 409, 0, 301, 302, 381, - 303, 304, 0, 305, 306, 382, 307, 0, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 383, 0, - 318, 319, 707, 320, 321, 0, 411, 384, 0, 0, - 410, 322, 385, 323, 386, 0, 324, 325, 326, 327, - 328, 329, 330, 0, 0, 331, 332, 333, 334, 335, - 0, 0, 336, 337, 338, 339, 387, 388, 0, 340, - 0, 341, 95, 0, 0, 0, 342, 343, 344, 345, - 346, 347, 348, 349, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 0, 106, 107, 108, 0, 0, 0, - 0, 0, 0, 0, 109, 110, 0, 111, 112, 0, - 113, 114, 115, 350, 351, 0, 352, 0, 353, 0, - 116, 117, 118, 119, 120, 0, 0, 121, 354, 355, - 122, 0, 123, 124, 125, 126, 356, 0, 0, 0, - 127, 128, 129, 130, 131, 0, 0, 132, 133, 134, - 0, 135, 136, 137, 138, 139, 140, 0, 0, 141, - 142, 143, 0, 0, 0, 0, 0, 0, 144, 145, - 146, 147, 148, 357, 149, 150, 358, 359, 151, 0, - 152, 0, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 0, 0, 161, 162, 163, 164, 165, 0, 166, - 167, 168, 0, 169, 170, 171, 0, 172, 173, 174, - 175, 360, 176, 177, 178, 361, 0, 179, 0, 180, - 181, 362, 182, 0, 183, 0, 184, 0, 0, 0, - 185, 186, 187, 0, 188, 189, 363, 0, 364, 190, - 0, 191, 192, 193, 194, 496, 196, 197, 198, 199, - 0, 200, 201, 202, 203, 204, 205, 0, 206, 0, - 365, 207, 208, 209, 210, 366, 367, 0, 368, 0, - 211, 0, 212, 0, 213, 214, 215, 216, 217, 0, - 0, 218, 369, 0, 219, 0, 0, 220, 221, 407, - 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 408, 370, 0, 371, - 236, 237, 372, 0, 238, 239, 240, 0, 373, 241, - 374, 242, 243, 244, 0, 245, 0, 445, 246, 247, - 0, 0, 248, 375, 0, 249, 0, 376, 250, 251, - 252, 253, 254, 255, 256, 0, 257, 258, 377, 259, - 378, 262, 260, 261, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 379, 271, 272, 273, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 0, 286, 287, 0, 288, 289, 380, 290, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 409, - 0, 301, 302, 381, 303, 304, 0, 305, 306, 382, - 307, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 383, 0, 318, 319, 0, 320, 321, 0, - 411, 384, 0, 0, 410, 322, 385, 323, 386, 0, - 324, 325, 326, 327, 328, 329, 330, 0, 0, 331, - 332, 333, 334, 335, 0, 0, 336, 337, 338, 339, - 387, 388, 0, 340, 0, 341, 95, 0, 0, 0, - 342, 343, 344, 345, 346, 347, 348, 349, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 0, 0, 0, 109, 110, - 0, 111, 112, 0, 113, 114, 115, 350, 351, 0, - 352, 0, 353, 0, 116, 117, 118, 119, 120, 0, - 0, 121, 354, 355, 122, 0, 123, 124, 125, 126, - 356, 0, 0, 0, 127, 128, 129, 130, 131, 0, - 0, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 0, 141, 142, 143, 0, 0, 0, 0, - 0, 0, 144, 145, 146, 147, 148, 357, 149, 150, - 358, 359, 151, 0, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 163, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 360, 176, 177, 178, 361, - 0, 179, 0, 180, 181, 362, 182, 0, 183, 0, - 184, 0, 0, 0, 185, 186, 187, 0, 188, 189, - 363, 0, 364, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 0, 365, 207, 208, 209, 210, 366, - 367, 0, 368, 0, 211, 0, 212, 0, 213, 214, - 215, 216, 217, 0, 0, 218, 369, 0, 219, 0, - 0, 220, 221, 407, 0, 0, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 408, 370, 0, 371, 236, 237, 372, 0, 238, 239, - 240, 0, 373, 241, 374, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 0, 249, - 0, 376, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 377, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 379, 271, 272, - 273, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 0, 288, 289, - 380, 290, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 409, 0, 301, 302, 381, 303, 304, - 0, 305, 306, 382, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 383, 0, 318, 319, - 0, 320, 321, 0, 411, 384, 0, 0, 410, 322, - 385, 323, 386, 0, 324, 325, 326, 327, 328, 329, - 330, 0, 0, 331, 332, 333, 334, 335, 0, 0, - 336, 337, 338, 339, 387, 388, 0, 340, 0, 341, - 95, 0, 0, 0, 342, 343, 344, 345, 346, 347, - 348, 349, 0, 98, 99, 100, 101, 102, 103, 104, - 105, 0, 106, 107, 108, 0, 0, 0, 0, 0, - 0, 0, 109, 110, 0, 111, 112, 0, 113, 114, - 115, 350, 351, 0, 352, 0, 353, 0, 116, 117, - 118, 119, 120, 0, 0, 121, 354, 355, 122, 0, - 123, 124, 125, 126, 356, 0, 0, 0, 127, 128, - 129, 130, 131, 0, 0, 132, 133, 134, 0, 135, - 136, 137, 138, 139, 140, 0, 0, 141, 142, 143, - 0, 0, 0, 0, 0, 0, 144, 145, 146, 147, - 148, 357, 149, 150, 358, 359, 151, 0, 152, 0, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 0, - 0, 161, 162, 163, 164, 165, 0, 166, 167, 168, - 0, 169, 170, 171, 0, 172, 173, 174, 175, 360, - 176, 177, 178, 361, 0, 179, 0, 180, 181, 362, - 182, 0, 183, 0, 184, 0, 0, 0, 185, 186, - 187, 0, 188, 189, 363, 0, 364, 190, 0, 191, - 192, 193, 194, 1345, 196, 197, 198, 199, 0, 200, - 201, 202, 203, 204, 205, 0, 206, 0, 365, 207, - 208, 209, 210, 366, 367, 0, 368, 0, 211, 0, - 212, 0, 213, 214, 215, 216, 217, 0, 0, 218, - 369, 0, 219, 0, 0, 220, 221, 407, 0, 0, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 408, 370, 0, 371, 236, 237, - 372, 0, 238, 239, 240, 0, 373, 241, 374, 242, - 243, 244, 0, 245, 0, 0, 246, 247, 0, 0, - 248, 375, 0, 249, 0, 376, 250, 251, 252, 253, - 254, 255, 256, 0, 257, 258, 377, 259, 378, 262, - 260, 261, 0, 263, 264, 265, 266, 267, 268, 269, - 270, 379, 271, 272, 273, 274, 0, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 0, 286, - 287, 0, 288, 289, 380, 290, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 299, 300, 409, 0, 301, - 302, 381, 303, 304, 0, 305, 306, 382, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 383, 0, 318, 319, 0, 320, 321, 0, 411, 384, - 0, 0, 410, 322, 385, 323, 386, 0, 324, 325, - 326, 327, 328, 329, 330, 0, 0, 331, 332, 333, - 334, 335, 0, 0, 336, 337, 338, 339, 387, 388, - 0, 340, 0, 341, 95, 0, 0, 0, 342, 343, - 344, 345, 346, 347, 348, 349, 0, 98, 99, 100, - 101, 102, 103, 104, 105, 0, 106, 107, 108, 0, - 0, 0, 0, 0, 0, 0, 109, 110, 0, 111, - 112, 0, 113, 114, 115, 350, 351, 0, 352, 0, - 353, 0, 116, 117, 118, 119, 120, 0, 0, 121, - 354, 355, 122, 0, 123, 124, 125, 126, 356, 0, - 0, 0, 127, 128, 129, 130, 131, 0, 0, 132, - 133, 134, 0, 135, 136, 137, 138, 139, 140, 0, - 0, 141, 142, 143, 0, 0, 0, 0, 0, 0, - 144, 145, 146, 147, 148, 357, 149, 150, 358, 359, - 151, 0, 152, 0, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 0, 0, 161, 162, 163, 164, 165, - 0, 166, 167, 168, 0, 169, 170, 171, 0, 172, - 173, 174, 175, 360, 176, 177, 178, 361, 0, 179, - 0, 180, 181, 362, 182, 0, 183, 0, 184, 0, - 0, 0, 185, 186, 187, 0, 188, 189, 363, 0, - 364, 190, 0, 191, 192, 193, 194, 1343, 196, 197, - 198, 199, 0, 200, 201, 202, 203, 204, 205, 0, - 206, 0, 365, 207, 208, 209, 210, 366, 367, 0, - 368, 0, 211, 0, 212, 0, 213, 214, 215, 216, - 217, 0, 0, 218, 369, 0, 219, 0, 0, 220, - 221, 407, 0, 0, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 408, 370, - 0, 371, 236, 237, 372, 0, 238, 239, 240, 0, - 373, 241, 374, 242, 243, 244, 0, 245, 0, 0, - 246, 247, 0, 0, 248, 375, 0, 249, 0, 376, - 250, 251, 252, 253, 254, 255, 256, 0, 257, 258, - 377, 259, 378, 262, 260, 261, 0, 263, 264, 265, - 266, 267, 268, 269, 270, 379, 271, 272, 273, 274, - 0, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 0, 286, 287, 0, 288, 289, 380, 290, - 291, 292, 293, 294, 295, 296, 0, 297, 298, 299, - 300, 409, 0, 301, 302, 381, 303, 304, 0, 305, - 306, 382, 307, 0, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 383, 0, 318, 319, 0, 320, - 321, 0, 411, 384, 0, 0, 410, 322, 385, 323, - 386, 0, 324, 325, 326, 327, 328, 329, 330, 0, - 0, 331, 332, 333, 334, 335, 0, 0, 336, 337, - 338, 339, 387, 388, 0, 340, 0, 341, 95, 0, - 0, 0, 342, 343, 344, 345, 346, 347, 348, 349, - 0, 98, 99, 100, 101, 102, 103, 104, 105, 0, - 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, - 109, 110, 0, 111, 112, 0, 113, 114, 115, 350, - 351, 0, 352, 0, 353, 0, 116, 117, 118, 119, - 120, 0, 0, 121, 354, 355, 122, 0, 123, 124, - 125, 126, 356, 0, 0, 0, 127, 128, 129, 130, - 131, 0, 0, 132, 133, 134, 0, 135, 136, 137, - 138, 139, 140, 0, 0, 141, 142, 143, 0, 0, - 0, 0, 0, 0, 144, 145, 146, 147, 148, 357, - 149, 150, 358, 359, 151, 0, 152, 0, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 0, 0, 161, - 162, 163, 164, 165, 0, 166, 167, 168, 0, 169, - 170, 171, 0, 172, 173, 174, 175, 360, 176, 177, - 178, 361, 0, 179, 0, 180, 181, 362, 182, 0, - 183, 0, 184, 0, 0, 0, 185, 186, 187, 0, - 188, 189, 363, 0, 364, 190, 0, 191, 192, 193, - 194, 1100, 196, 197, 198, 199, 0, 200, 201, 202, - 203, 204, 205, 0, 206, 0, 365, 207, 208, 209, - 210, 366, 367, 0, 368, 0, 211, 0, 212, 0, - 213, 214, 215, 216, 217, 0, 0, 218, 369, 0, - 219, 0, 0, 220, 221, 407, 0, 0, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 408, 370, 0, 371, 236, 237, 372, 0, - 238, 239, 240, 0, 373, 241, 374, 242, 243, 244, - 0, 245, 0, 0, 246, 247, 0, 0, 248, 375, - 0, 249, 0, 376, 250, 251, 252, 253, 254, 255, - 256, 0, 257, 258, 377, 259, 378, 262, 260, 261, - 0, 263, 264, 265, 266, 267, 268, 269, 270, 379, - 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 0, 286, 287, 0, - 288, 289, 380, 290, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 409, 0, 301, 302, 381, - 303, 304, 0, 305, 306, 382, 307, 0, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 383, 0, - 318, 319, 0, 320, 321, 0, 411, 384, 0, 0, - 410, 322, 385, 323, 386, 0, 324, 325, 326, 327, - 328, 329, 330, 0, 0, 331, 332, 333, 334, 335, - 0, 0, 336, 337, 338, 339, 387, 388, 0, 340, - 0, 341, 95, 0, 0, 0, 342, 343, 344, 345, - 346, 347, 348, 349, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 0, 106, 107, 108, 0, 0, 0, - 0, 0, 0, 0, 109, 110, 0, 111, 112, 0, - 113, 114, 115, 350, 351, 0, 352, 0, 353, 0, - 116, 117, 118, 119, 120, 0, 0, 121, 354, 355, - 122, 0, 123, 124, 125, 126, 356, 0, 0, 0, - 127, 128, 129, 130, 131, 0, 0, 132, 133, 134, - 0, 135, 136, 137, 138, 139, 140, 0, 0, 141, - 142, 143, 0, 0, 0, 0, 0, 0, 144, 145, - 146, 147, 148, 357, 149, 150, 358, 359, 151, 0, - 152, 0, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 0, 0, 161, 162, 163, 164, 165, 0, 166, - 167, 168, 0, 169, 170, 171, 0, 172, 173, 174, - 175, 360, 176, 177, 178, 361, 0, 179, 0, 180, - 181, 362, 182, 0, 183, 0, 184, 0, 0, 0, - 185, 186, 187, 0, 188, 189, 363, 0, 364, 190, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 0, 200, 201, 202, 203, 204, 205, 0, 206, 0, - 365, 207, 208, 209, 210, 366, 367, 0, 368, 0, - 211, 0, 212, 0, 213, 214, 215, 216, 217, 0, - 0, 218, 369, 0, 219, 0, 0, 220, 221, 407, - 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 92, 370, 0, 371, - 236, 237, 372, 0, 238, 239, 240, 0, 373, 241, - 374, 242, 243, 244, 0, 245, 0, 0, 246, 247, - 0, 0, 248, 375, 0, 249, 0, 376, 250, 251, - 252, 253, 254, 255, 256, 0, 257, 258, 377, 259, - 378, 262, 260, 261, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 379, 271, 272, 273, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 0, 286, 287, 0, 288, 289, 380, 290, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 499, - 0, 301, 302, 381, 303, 304, 0, 305, 306, 382, - 307, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 383, 0, 318, 319, 0, 320, 321, 0, - 91, 384, 0, 0, 87, 322, 385, 323, 386, 0, - 324, 325, 326, 327, 328, 329, 330, 0, 0, 331, - 332, 333, 334, 335, 0, 0, 336, 337, 338, 339, - 387, 388, 0, 340, 0, 341, 95, 0, 0, 0, - 342, 343, 344, 345, 346, 347, 348, 349, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 0, 0, 0, 109, 110, - 0, 111, 112, 0, 113, 114, 115, 350, 351, 0, - 352, 0, 353, 0, 116, 117, 118, 119, 120, 0, - 0, 121, 354, 355, 122, 0, 123, 124, 125, 126, - 356, 0, 0, 0, 127, 128, 129, 130, 131, 0, - 0, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 0, 141, 142, 143, 0, 0, 0, 0, - 0, 0, 144, 145, 146, 147, 148, 357, 149, 150, - 358, 359, 151, 0, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 163, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 360, 176, 177, 178, 361, - 0, 179, 0, 180, 181, 362, 182, 0, 183, 0, - 184, 0, 0, 0, 185, 186, 187, 0, 188, 189, - 363, 0, 364, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 0, 365, 207, 208, 209, 210, 366, - 367, 0, 368, 0, 211, 0, 212, 0, 213, 214, - 215, 216, 217, 0, 0, 218, 369, 0, 219, 0, - 0, 220, 221, 407, 0, 0, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 408, 370, 0, 371, 236, 237, 372, 0, 238, 239, - 240, 0, 373, 241, 374, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 0, 249, - 0, 376, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 377, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 379, 271, 272, - 273, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 0, 288, 289, - 380, 290, 291, 846, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 409, 0, 301, 302, 381, 303, 304, - 0, 305, 306, 382, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 383, 0, 318, 319, - 0, 320, 321, 0, 411, 384, 0, 0, 410, 322, - 385, 323, 386, 0, 324, 325, 326, 327, 328, 329, - 330, 0, 0, 331, 332, 333, 334, 335, 0, 0, - 336, 337, 338, 339, 387, 388, 0, 340, 0, 341, - 95, 0, 0, 0, 342, 343, 344, 345, 346, 347, - 348, 349, 0, 98, 99, 100, 101, 102, 103, 104, - 105, 0, 106, 107, 108, 0, 0, 0, 0, 0, - 0, 0, 109, 110, 0, 111, 112, 0, 113, 114, - 115, 350, 351, 0, 352, 0, 353, 0, 116, 117, - 118, 119, 120, 0, 0, 121, 354, 355, 122, 0, - 123, 124, 125, 126, 356, 0, 0, 0, 127, 128, - 129, 130, 131, 0, 0, 132, 133, 134, 0, 135, - 136, 137, 138, 139, 140, 0, 0, 141, 142, 143, - 0, 0, 0, 0, 0, 0, 144, 145, 146, 147, - 148, 357, 149, 150, 358, 359, 151, 0, 152, 0, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 0, - 0, 161, 162, 163, 164, 165, 0, 166, 167, 168, - 0, 169, 170, 171, 0, 172, 173, 174, 175, 360, - 176, 177, 178, 361, 0, 179, 0, 180, 181, 362, - 182, 0, 183, 0, 184, 0, 0, 0, 185, 186, - 187, 0, 188, 189, 363, 0, 364, 190, 0, 191, - 192, 193, 194, 703, 196, 197, 198, 199, 0, 200, - 201, 202, 203, 204, 205, 0, 206, 0, 365, 207, - 208, 209, 210, 366, 367, 0, 368, 0, 211, 0, - 212, 0, 213, 214, 215, 216, 217, 0, 0, 218, - 369, 0, 219, 0, 0, 220, 221, 407, 0, 0, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 408, 370, 0, 371, 236, 237, - 372, 0, 238, 239, 240, 0, 373, 241, 374, 242, - 243, 244, 0, 245, 0, 0, 246, 247, 0, 0, - 248, 375, 0, 249, 0, 376, 250, 251, 252, 253, - 254, 255, 256, 0, 257, 258, 377, 259, 378, 262, - 260, 261, 0, 263, 264, 265, 266, 267, 268, 269, - 270, 379, 271, 272, 273, 274, 0, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 0, 286, - 287, 0, 288, 289, 380, 290, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 299, 300, 409, 0, 301, - 302, 381, 303, 304, 0, 305, 306, 382, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 383, 0, 318, 319, 0, 320, 321, 0, 411, 384, - 0, 0, 410, 322, 385, 323, 386, 0, 324, 325, - 326, 327, 328, 329, 330, 0, 0, 331, 332, 333, - 334, 335, 0, 0, 336, 337, 338, 339, 387, 388, - 0, 340, 0, 341, 95, 0, 0, 0, 342, 343, - 344, 345, 346, 347, 348, 349, 0, 98, 99, 100, - 101, 102, 103, 104, 105, 0, 106, 107, 108, 0, - 0, 0, 0, 0, 679, 0, 109, 110, 0, 111, - 112, 0, 113, 114, 115, 350, 351, 0, 352, 0, - 353, 0, 116, 117, 118, 119, 120, 0, 0, 121, - 354, 355, 122, 0, 123, 124, 125, 126, 356, 0, - 0, 0, 127, 128, 129, 130, 131, 0, 0, 132, - 133, 134, 0, 135, 136, 137, 138, 139, 140, 0, - 0, 141, 142, 143, 0, 0, 0, 0, 0, 0, - 144, 145, 146, 147, 148, 357, 149, 150, 358, 359, - 151, 0, 152, 0, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 0, 0, 161, 162, 163, 164, 165, - 0, 166, 167, 168, 0, 169, 170, 171, 0, 172, - 173, 174, 175, 360, 176, 177, 178, 361, 0, 179, - 0, 180, 181, 362, 182, 0, 183, 0, 184, 0, - 0, 0, 185, 186, 187, 0, 188, 189, 363, 0, - 364, 190, 0, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 0, 200, 201, 202, 203, 204, 205, 0, - 206, 0, 365, 207, 208, 209, 210, 366, 367, 0, - 368, 0, 211, 0, 212, 0, 213, 214, 215, 216, - 217, 0, 0, 218, 369, 0, 219, 0, 0, 220, - 221, 407, 0, 0, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 408, 370, - 0, 371, 236, 237, 372, 0, 238, 239, 240, 0, - 373, 241, 374, 242, 243, 244, 0, 245, 0, 0, - 246, 247, 0, 0, 248, 375, 0, 249, 0, 376, - 250, 251, 252, 253, 254, 255, 256, 0, 257, 258, - 377, 259, 378, 262, 260, 261, 0, 263, 264, 265, - 266, 267, 268, 269, 270, 379, 271, 272, 273, 274, - 0, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 0, 286, 287, 0, 288, 289, 380, 290, - 291, 292, 293, 294, 295, 296, 0, 297, 298, 299, - 300, 409, 0, 0, 302, 381, 303, 304, 0, 305, - 306, 382, 307, 0, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 383, 0, 318, 319, 0, 320, - 321, 0, 411, 384, 0, 0, 410, 322, 385, 323, - 386, 0, 324, 325, 326, 327, 328, 329, 330, 0, - 0, 331, 332, 333, 334, 335, 0, 0, 336, 337, - 338, 339, 387, 388, 0, 340, 0, 341, 95, 0, - 0, 0, 342, 343, 344, 345, 346, 347, 348, 349, - 0, 98, 99, 100, 101, 102, 103, 104, 105, 0, - 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, - 109, 110, 0, 111, 112, 0, 113, 114, 115, 350, - 351, 0, 352, 0, 353, 0, 116, 117, 118, 119, - 120, 0, 0, 121, 354, 355, 122, 0, 123, 124, - 125, 126, 356, 0, 0, 0, 127, 128, 129, 130, - 131, 0, 0, 132, 133, 134, 0, 135, 136, 137, - 138, 139, 140, 0, 0, 141, 142, 143, 0, 0, - 0, 0, 0, 0, 144, 145, 146, 147, 148, 357, - 149, 150, 358, 359, 151, 0, 152, 0, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 0, 0, 161, - 162, 163, 164, 165, 0, 166, 167, 168, 0, 169, - 170, 171, 0, 172, 173, 174, 175, 360, 176, 177, - 178, 361, 0, 179, 0, 180, 181, 362, 182, 0, - 183, 0, 184, 0, 0, 0, 185, 186, 187, 0, - 188, 189, 363, 0, 364, 190, 0, 191, 192, 193, - 194, 539, 196, 197, 198, 199, 0, 200, 201, 202, - 203, 204, 205, 0, 206, 0, 365, 207, 208, 209, - 210, 366, 367, 0, 368, 0, 211, 0, 212, 0, - 213, 214, 215, 216, 217, 0, 0, 218, 369, 0, - 219, 0, 0, 220, 221, 407, 0, 0, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 408, 370, 0, 371, 236, 237, 372, 0, - 238, 239, 240, 0, 373, 241, 374, 242, 243, 244, - 0, 245, 0, 0, 246, 247, 0, 0, 248, 375, - 0, 249, 0, 376, 250, 251, 252, 253, 254, 255, - 256, 0, 257, 258, 377, 259, 378, 262, 260, 261, - 0, 263, 264, 265, 266, 267, 268, 269, 270, 379, - 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 0, 286, 287, 0, - 288, 289, 380, 290, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 409, 0, 301, 302, 381, - 303, 304, 0, 305, 306, 382, 307, 0, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 383, 0, - 318, 319, 0, 320, 321, 0, 411, 384, 0, 0, - 410, 322, 385, 323, 386, 0, 324, 325, 326, 327, - 328, 329, 330, 0, 0, 331, 332, 333, 334, 335, - 0, 0, 336, 337, 338, 339, 387, 388, 0, 340, - 0, 341, 95, 0, 0, 0, 342, 343, 344, 345, - 346, 347, 348, 349, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 0, 106, 107, 108, 0, 0, 0, - 0, 0, 0, 0, 109, 110, 0, 111, 112, 0, - 113, 114, 115, 350, 351, 0, 352, 0, 353, 0, - 116, 117, 118, 119, 120, 0, 0, 121, 354, 355, - 122, 0, 123, 124, 125, 126, 356, 0, 0, 0, - 127, 128, 129, 130, 131, 0, 0, 132, 133, 134, - 0, 135, 136, 137, 138, 139, 140, 0, 0, 141, - 142, 143, 0, 0, 0, 0, 0, 0, 144, 145, - 146, 147, 148, 357, 149, 150, 358, 359, 151, 0, - 152, 0, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 0, 0, 161, 162, 163, 164, 165, 0, 166, - 167, 168, 0, 169, 170, 171, 0, 172, 173, 174, - 175, 360, 176, 177, 178, 361, 0, 179, 0, 180, - 181, 362, 182, 0, 183, 0, 184, 0, 0, 0, - 185, 186, 187, 0, 188, 189, 363, 0, 364, 190, - 0, 191, 192, 193, 194, 535, 196, 197, 198, 199, - 0, 200, 201, 202, 203, 204, 205, 0, 206, 0, - 365, 207, 208, 209, 210, 366, 367, 0, 368, 0, - 211, 0, 212, 0, 213, 214, 215, 216, 217, 0, - 0, 218, 369, 0, 219, 0, 0, 220, 221, 407, - 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 408, 370, 0, 371, - 236, 237, 372, 0, 238, 239, 240, 0, 373, 241, - 374, 242, 243, 244, 0, 245, 0, 0, 246, 247, - 0, 0, 248, 375, 0, 249, 0, 376, 250, 251, - 252, 253, 254, 255, 256, 0, 257, 258, 377, 259, - 378, 262, 260, 261, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 379, 271, 272, 273, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 0, 286, 287, 0, 288, 289, 380, 290, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 409, - 0, 301, 302, 381, 303, 304, 0, 305, 306, 382, - 307, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 383, 0, 318, 319, 0, 320, 321, 0, - 411, 384, 0, 0, 410, 322, 385, 323, 386, 0, - 324, 325, 326, 327, 328, 329, 330, 0, 0, 331, - 332, 333, 334, 335, 0, 0, 336, 337, 338, 339, - 387, 388, 0, 340, 0, 341, 95, 0, 0, 0, - 342, 343, 344, 345, 346, 347, 348, 349, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 0, 0, 0, 109, 110, - 0, 111, 112, 0, 113, 114, 115, 350, 351, 0, - 352, 0, 353, 0, 116, 117, 118, 119, 120, 0, - 0, 121, 354, 355, 501, 0, 123, 124, 125, 126, - 356, 0, 0, 0, 127, 128, 129, 130, 131, 0, - 0, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 0, 141, 142, 143, 0, 0, 0, 0, - 0, 0, 144, 145, 146, 147, 148, 357, 149, 150, - 358, 359, 151, 0, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 163, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 360, 176, 177, 178, 361, - 0, 179, 0, 180, 181, 362, 182, 0, 183, 0, - 184, 0, 0, 0, 185, 186, 187, 0, 188, 189, - 363, 0, 364, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 0, 365, 207, 208, 209, 210, 366, - 367, 0, 368, 0, 211, 0, 212, 0, 213, 214, - 215, 216, 217, 0, 0, 218, 369, 0, 219, 0, - 0, 220, 221, 407, 0, 0, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 92, 370, 0, 371, 236, 237, 372, 0, 238, 239, - 240, 0, 373, 241, 374, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 0, 249, - 0, 376, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 377, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 379, 271, 272, - 273, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 0, 288, 289, - 380, 290, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 499, 0, 301, 302, 381, 303, 304, - 0, 305, 306, 382, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 383, 0, 318, 319, - 0, 320, 321, 0, 91, 384, 0, 0, 87, 322, - 385, 323, 386, 0, 324, 325, 326, 327, 328, 329, - 330, 0, 0, 331, 332, 333, 334, 335, 0, 0, - 336, 337, 338, 339, 387, 388, 0, 340, 0, 341, - 95, 0, 0, 0, 342, 343, 344, 345, 346, 347, - 348, 349, 0, 98, 99, 100, 101, 102, 103, 104, - 105, 0, 106, 107, 108, 0, 0, 0, 0, 0, - 0, 0, 109, 110, 0, 111, 112, 0, 113, 114, - 115, 350, 351, 0, 352, 0, 353, 0, 116, 117, - 118, 119, 120, 0, 0, 121, 354, 355, 122, 0, - 123, 124, 125, 126, 356, 0, 0, 0, 127, 128, - 129, 130, 131, 0, 0, 132, 133, 134, 0, 135, - 136, 137, 138, 139, 140, 0, 0, 141, 142, 143, - 0, 0, 0, 0, 0, 0, 144, 145, 146, 147, - 148, 357, 149, 150, 358, 359, 151, 0, 152, 0, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 0, - 0, 161, 162, 163, 164, 165, 0, 166, 167, 168, - 0, 169, 170, 171, 0, 172, 173, 174, 175, 360, - 176, 177, 178, 361, 0, 179, 0, 180, 181, 362, - 182, 0, 183, 0, 184, 0, 0, 0, 185, 186, - 187, 0, 188, 189, 363, 0, 364, 190, 0, 191, - 192, 193, 194, 494, 196, 197, 198, 199, 0, 200, - 201, 202, 203, 204, 205, 0, 206, 0, 365, 207, - 208, 209, 210, 366, 367, 0, 368, 0, 211, 0, - 212, 0, 213, 214, 215, 216, 217, 0, 0, 218, - 369, 0, 219, 0, 0, 220, 221, 407, 0, 0, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 408, 370, 0, 371, 236, 237, - 372, 0, 238, 239, 240, 0, 373, 241, 374, 242, - 243, 244, 0, 245, 0, 0, 246, 247, 0, 0, - 248, 375, 0, 249, 0, 376, 250, 251, 252, 253, - 254, 255, 256, 0, 257, 258, 377, 259, 378, 262, - 260, 261, 0, 263, 264, 265, 266, 267, 268, 269, - 270, 379, 271, 272, 273, 274, 0, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 0, 286, - 287, 0, 288, 289, 380, 290, 291, 292, 293, 294, - 295, 296, 0, 297, 298, 299, 300, 409, 0, 301, - 302, 381, 303, 304, 0, 305, 306, 382, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 383, 0, 318, 319, 0, 320, 321, 0, 411, 384, - 0, 0, 410, 322, 385, 323, 386, 0, 324, 325, - 326, 327, 328, 329, 330, 0, 0, 331, 332, 333, - 334, 335, 0, 0, 336, 337, 338, 339, 387, 388, - 0, 340, 0, 341, 95, 0, 0, 0, 342, 343, - 344, 345, 346, 347, 348, 349, 0, 98, 99, 100, - 101, 102, 103, 104, 105, 0, 106, 107, 108, 0, - 0, 0, 0, 0, 0, 0, 109, 110, 0, 111, - 112, 0, 113, 114, 115, 350, 351, 0, 352, 0, - 353, 0, 116, 117, 118, 119, 120, 0, 0, 121, - 354, 355, 122, 0, 123, 124, 125, 126, 356, 0, - 0, 0, 127, 128, 129, 130, 131, 0, 0, 132, - 133, 134, 0, 135, 136, 137, 138, 139, 140, 0, - 0, 141, 142, 143, 0, 0, 0, 0, 0, 0, - 144, 145, 146, 147, 148, 357, 149, 150, 358, 359, - 151, 0, 152, 0, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 0, 0, 161, 162, 163, 164, 165, - 0, 166, 167, 168, 0, 169, 170, 171, 0, 172, - 173, 174, 175, 360, 176, 177, 178, 361, 0, 179, - 0, 180, 181, 362, 182, 0, 183, 0, 184, 0, - 0, 0, 185, 186, 187, 0, 188, 189, 363, 0, - 364, 190, 0, 191, 192, 193, 194, 460, 196, 197, - 198, 199, 0, 200, 201, 202, 203, 204, 205, 0, - 206, 0, 365, 207, 208, 209, 210, 366, 367, 0, - 368, 0, 211, 0, 212, 0, 213, 214, 215, 216, - 217, 0, 0, 218, 369, 0, 219, 0, 0, 220, - 221, 407, 0, 0, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 408, 370, - 0, 371, 236, 237, 372, 0, 238, 239, 240, 0, - 373, 241, 374, 242, 243, 244, 0, 245, 0, 0, - 246, 247, 0, 0, 248, 375, 0, 249, 0, 376, - 250, 251, 252, 253, 254, 255, 256, 0, 257, 258, - 377, 259, 378, 262, 260, 261, 0, 263, 264, 265, - 266, 267, 268, 269, 270, 379, 271, 272, 273, 274, - 0, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 0, 286, 287, 0, 288, 289, 380, 290, - 291, 292, 293, 294, 295, 296, 0, 297, 298, 299, - 300, 409, 0, 301, 302, 381, 303, 304, 0, 305, - 306, 382, 307, 0, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 383, 0, 318, 319, 0, 320, - 321, 0, 411, 384, 0, 0, 410, 322, 385, 323, - 386, 0, 324, 325, 326, 327, 328, 329, 330, 0, - 0, 331, 332, 333, 334, 335, 0, 0, 336, 337, - 338, 339, 387, 388, 0, 340, 0, 341, 95, 0, - 0, 0, 342, 343, 344, 345, 346, 347, 348, 349, - 0, 98, 99, 100, 101, 102, 103, 104, 105, 0, - 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, - 109, 110, 0, 111, 112, 0, 113, 114, 115, 350, - 351, 0, 352, 0, 353, 0, 116, 117, 118, 119, - 120, 0, 0, 121, 354, 355, 122, 0, 123, 124, - 125, 126, 356, 0, 0, 0, 127, 128, 129, 130, - 131, 0, 0, 132, 133, 134, 0, 135, 136, 137, - 138, 139, 140, 0, 0, 141, 142, 143, 0, 0, - 0, 0, 0, 0, 144, 145, 146, 147, 148, 357, - 149, 150, 358, 359, 151, 0, 152, 0, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 0, 0, 161, - 162, 163, 164, 165, 0, 166, 167, 168, 0, 169, - 170, 171, 0, 172, 173, 174, 175, 360, 176, 177, - 178, 361, 0, 179, 0, 180, 181, 362, 182, 0, - 183, 0, 184, 0, 0, 0, 185, 186, 187, 0, - 188, 189, 363, 0, 364, 190, 0, 191, 192, 193, - 194, 458, 196, 197, 198, 199, 0, 200, 201, 202, - 203, 204, 205, 0, 206, 0, 365, 207, 208, 209, - 210, 366, 367, 0, 368, 0, 211, 0, 212, 0, - 213, 214, 215, 216, 217, 0, 0, 218, 369, 0, - 219, 0, 0, 220, 221, 407, 0, 0, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 408, 370, 0, 371, 236, 237, 372, 0, - 238, 239, 240, 0, 373, 241, 374, 242, 243, 244, - 0, 245, 0, 0, 246, 247, 0, 0, 248, 375, - 0, 249, 0, 376, 250, 251, 252, 253, 254, 255, - 256, 0, 257, 258, 377, 259, 378, 262, 260, 261, - 0, 263, 264, 265, 266, 267, 268, 269, 270, 379, - 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 0, 286, 287, 0, - 288, 289, 380, 290, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 409, 0, 301, 302, 381, - 303, 304, 0, 305, 306, 382, 307, 0, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 383, 0, - 318, 319, 0, 320, 321, 0, 411, 384, 0, 0, - 410, 322, 385, 323, 386, 0, 324, 325, 326, 327, - 328, 329, 330, 0, 0, 331, 332, 333, 334, 335, - 0, 0, 336, 337, 338, 339, 387, 388, 0, 340, - 0, 341, 95, 0, 0, 0, 342, 343, 344, 345, - 346, 347, 348, 349, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 0, 106, 107, 108, 0, 0, 0, - 0, 0, 0, 0, 109, 110, 0, 111, 112, 0, - 113, 114, 115, 350, 351, 0, 352, 0, 353, 0, - 116, 117, 118, 119, 120, 0, 0, 121, 354, 355, - 122, 0, 123, 124, 125, 126, 356, 0, 0, 0, - 127, 128, 129, 130, 131, 0, 0, 132, 133, 134, - 0, 135, 136, 137, 138, 139, 140, 0, 0, 141, - 142, 143, 0, 0, 0, 0, 0, 0, 144, 145, - 146, 147, 148, 357, 149, 150, 358, 359, 151, 0, - 152, 0, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 0, 0, 161, 162, 163, 164, 165, 0, 166, - 167, 168, 0, 169, 170, 171, 0, 172, 173, 174, - 175, 360, 176, 177, 178, 361, 0, 179, 0, 180, - 181, 362, 182, 0, 183, 0, 184, 0, 0, 0, - 185, 186, 187, 0, 188, 189, 363, 0, 364, 190, - 0, 191, 192, 193, 194, 454, 196, 197, 198, 199, - 0, 200, 201, 202, 203, 204, 205, 0, 206, 0, - 365, 207, 208, 209, 210, 366, 367, 0, 368, 0, - 211, 0, 212, 0, 213, 214, 215, 216, 217, 0, - 0, 218, 369, 0, 219, 0, 0, 220, 221, 407, - 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 408, 370, 0, 371, - 236, 237, 372, 0, 238, 239, 240, 0, 373, 241, - 374, 242, 243, 244, 0, 245, 0, 0, 246, 247, - 0, 0, 248, 375, 0, 249, 0, 376, 250, 251, - 252, 253, 254, 255, 256, 0, 257, 258, 377, 259, - 378, 262, 260, 261, 0, 263, 264, 265, 266, 267, - 268, 269, 270, 379, 271, 272, 273, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 0, 286, 287, 0, 288, 289, 380, 290, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 409, - 0, 301, 302, 381, 303, 304, 0, 305, 306, 382, - 307, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 383, 0, 318, 319, 0, 320, 321, 0, - 411, 384, 0, 0, 410, 322, 385, 323, 386, 0, - 324, 325, 326, 327, 328, 329, 330, 0, 0, 331, - 332, 333, 334, 335, 0, 0, 336, 337, 338, 339, - 387, 388, 0, 340, 0, 341, 95, 0, 0, 0, - 342, 343, 344, 345, 346, 347, 348, 349, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 107, - 108, 0, 0, 0, 0, 0, 0, 0, 109, 110, - 0, 111, 112, 0, 113, 114, 115, 350, 351, 0, - 352, 0, 353, 0, 116, 117, 118, 119, 120, 0, - 0, 121, 354, 355, 122, 0, 123, 124, 125, 126, - 356, 0, 0, 0, 127, 128, 129, 130, 131, 0, - 0, 132, 133, 134, 0, 135, 136, 137, 138, 139, - 140, 0, 0, 141, 142, 143, 0, 0, 0, 0, - 0, 0, 144, 145, 146, 147, 148, 357, 149, 150, - 358, 359, 151, 0, 152, 0, 153, 154, 155, 156, - 157, 0, 158, 159, 160, 0, 0, 161, 162, 163, - 164, 165, 0, 166, 167, 168, 0, 169, 170, 171, - 0, 172, 173, 174, 175, 360, 176, 177, 178, 361, - 0, 179, 0, 180, 181, 362, 182, 0, 183, 0, - 184, 0, 0, 0, 185, 186, 187, 0, 188, 189, - 363, 0, 364, 190, 0, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 0, 200, 201, 202, 203, 204, - 205, 0, 206, 0, 365, 207, 208, 209, 210, 366, - 367, 0, 368, 0, 211, 0, 212, 0, 213, 214, - 215, 216, 217, 0, 0, 218, 369, 0, 219, 0, - 0, 220, 221, 407, 0, 0, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 408, 370, 0, 371, 236, 237, 372, 0, 238, 239, - 240, 0, 373, 241, 374, 242, 243, 244, 0, 245, - 0, 0, 246, 247, 0, 0, 248, 375, 0, 249, - 0, 376, 250, 251, 252, 253, 254, 255, 256, 0, - 257, 258, 377, 259, 378, 262, 260, 261, 0, 263, - 264, 265, 266, 267, 268, 269, 270, 379, 271, 272, - 434, 274, 0, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 0, 286, 287, 0, 288, 289, - 380, 290, 291, 292, 293, 294, 295, 296, 0, 297, - 298, 299, 300, 409, 0, 301, 302, 381, 303, 304, - 0, 305, 306, 382, 307, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 383, 0, 318, 319, - 0, 320, 321, 0, 411, 384, 0, 0, 410, 322, - 385, 323, 386, 0, 324, 325, 326, 327, 328, 329, - 330, 0, 0, 331, 332, 333, 334, 335, 0, 0, - 336, 337, 338, 339, 387, 388, 0, 340, 0, 341, - 95, 0, 0, 0, 342, 343, 344, 345, 346, 347, - 348, 349, 0, 98, 99, 100, 101, 102, 103, 104, - 105, 0, 106, 107, 108, 0, 0, 0, 0, 0, - 0, 0, 109, 110, 0, 111, 112, 0, 113, 114, - 115, 350, 351, 0, 352, 0, 353, 0, 116, 117, - 118, 119, 120, 0, 0, 121, 354, 355, 122, 0, - 123, 124, 125, 126, 356, 0, 0, 0, 127, 128, - 129, 130, 131, 0, 0, 132, 133, 134, 0, 135, - 136, 137, 138, 139, 140, 0, 0, 141, 142, 143, - 0, 0, 0, 0, 0, 0, 144, 145, 146, 147, - 148, 357, 149, 150, 358, 359, 151, 0, 152, 0, - 153, 154, 155, 156, 157, 0, 158, 159, 160, 0, - 0, 161, 162, 163, 164, 165, 0, 166, 167, 168, - 0, 169, 170, 171, 0, 172, 173, 174, 175, 360, - 176, 177, 178, 361, 0, 179, 0, 180, 181, 362, - 182, 0, 183, 0, 184, 0, 0, 0, 185, 186, - 187, 0, 188, 189, 363, 0, 364, 190, 0, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 0, 200, - 201, 202, 203, 204, 205, 0, 206, 0, 365, 207, - 208, 209, 210, 366, 367, 0, 368, 0, 211, 0, - 212, 0, 213, 214, 215, 216, 217, 0, 0, 218, - 369, 0, 219, 0, 0, 220, 221, 407, 0, 0, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 408, 370, 0, 371, 236, 237, - 372, 0, 238, 239, 240, 0, 373, 241, 374, 242, - 243, 244, 0, 245, 0, 0, 246, 247, 0, 0, - 248, 375, 0, 249, 0, 376, 250, 251, 252, 253, - 254, 255, 256, 0, 257, 258, 377, 259, 378, 262, - 260, 261, 0, 263, 264, 265, 266, 267, 268, 269, - 270, 379, 271, 272, 273, 274, 0, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 0, 286, - 287, 0, 288, 289, 380, 290, 291, 412, 293, 294, - 295, 296, 0, 297, 298, 299, 300, 409, 0, 301, - 302, 381, 303, 304, 0, 305, 306, 382, 307, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 383, 0, 318, 319, 0, 320, 321, 0, 411, 384, - 0, 0, 410, 322, 385, 323, 386, 0, 324, 325, - 326, 327, 328, 329, 330, 0, 0, 331, 332, 333, - 334, 335, 0, 0, 336, 337, 338, 339, 387, 388, - 0, 340, 0, 341, 95, 0, 0, 0, 342, 343, - 344, 345, 346, 347, 348, 349, 0, 98, 99, 100, - 101, 102, 103, 104, 105, 0, 106, 107, 108, 0, - 0, 0, 0, 0, 0, 0, 109, 110, 0, 111, - 112, 0, 113, 114, 115, 350, 351, 0, 352, 0, - 353, 0, 116, 117, 118, 119, 120, 0, 0, 121, - 354, 355, 122, 0, 123, 124, 125, 126, 356, 0, - 0, 0, 127, 128, 129, 130, 131, 0, 0, 132, - 133, 134, 0, 135, 136, 137, 138, 139, 140, 0, - 0, 141, 142, 143, 0, 0, 0, 0, 0, 0, - 144, 145, 146, 147, 148, 357, 149, 150, 358, 359, - 151, 0, 152, 0, 153, 154, 155, 156, 157, 0, - 158, 159, 160, 0, 0, 161, 162, 163, 164, 165, - 0, 166, 167, 168, 0, 169, 170, 171, 0, 172, - 173, 174, 175, 360, 176, 177, 178, 361, 0, 179, - 0, 180, 181, 362, 182, 0, 183, 0, 184, 0, - 0, 0, 185, 186, 187, 0, 188, 189, 363, 0, - 364, 190, 0, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 0, 200, 201, 202, 203, 204, 205, 0, - 206, 0, 365, 207, 208, 209, 210, 366, 367, 0, - 368, 0, 211, 0, 212, 0, 213, 214, 215, 216, - 217, 0, 0, 218, 369, 0, 219, 0, 0, 220, - 221, 85, 0, 0, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 92, 370, - 0, 371, 236, 237, 372, 0, 238, 239, 240, 0, - 373, 241, 374, 242, 243, 244, 0, 245, 0, 0, - 246, 247, 0, 0, 248, 375, 0, 249, 0, 376, - 250, 251, 252, 253, 254, 255, 256, 0, 257, 258, - 377, 259, 378, 262, 260, 261, 0, 263, 264, 265, - 266, 267, 268, 269, 270, 379, 271, 272, 273, 274, - 0, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 0, 286, 287, 0, 288, 289, 380, 290, - 291, 292, 293, 294, 295, 296, 0, 297, 298, 299, - 300, 86, 0, 301, 302, 381, 303, 304, 0, 305, - 306, 382, 307, 0, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 383, 0, 318, 319, 0, 320, - 321, 0, 91, 384, 0, 0, 87, 322, 385, 323, - 386, 0, 324, 325, 326, 327, 328, 329, 330, 0, - 0, 331, 332, 333, 334, 335, 0, 0, 336, 337, - 338, 339, 387, 388, 0, 340, 0, 341, 1806, 0, - 0, 0, 342, 343, 344, 345, 346, 347, 348, 349, - 0, 98, 99, 100, 101, 102, 103, 104, 105, 0, - 106, 107, 108, 0, 0, 0, 0, 0, 0, 0, - 109, 110, 0, 111, 112, 471, 113, 114, 115, 0, - 1155, 472, 1170, 1150, 1162, 0, 116, 117, 118, 119, - 120, 0, 0, 121, 1172, 1171, 122, 0, 123, 124, - 125, 126, 0, 0, 473, 0, 127, 128, 129, 130, - 131, 0, 474, 132, 133, 134, 0, 135, 136, 137, - 138, 139, 140, 0, 475, 141, 142, 143, 0, 0, - 0, 0, 0, 0, 144, 145, 146, 147, 148, 1167, - 149, 150, 1160, 1159, 151, 0, 152, 0, 153, 154, - 155, 156, 157, 0, 158, 159, 160, 0, 0, 161, - 162, 635, 164, 165, 0, 166, 167, 168, 0, 169, - 170, 171, 0, 172, 173, 174, 175, 0, 176, 177, - 178, 0, 0, 179, 0, 180, 181, 1157, 182, 0, - 183, 0, 184, 476, 0, 477, 185, 186, 187, 0, - 188, 189, 0, 0, 0, 190, 0, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 0, 200, 201, 202, - 203, 204, 205, 0, 206, 478, 0, 207, 208, 209, - 210, 1152, 1153, 0, 755, 0, 211, 479, 212, 480, - 213, 214, 215, 216, 217, 0, 0, 218, 0, 481, - 219, 482, 0, 220, 221, 407, 0, 0, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 408, 0, 483, 0, 236, 237, 0, 0, - 238, 239, 240, 0, 0, 241, 1161, 242, 243, 244, - 0, 245, 0, 0, 246, 247, 0, 0, 248, 0, - 484, 249, 485, 0, 250, 251, 252, 253, 254, 255, - 256, 0, 257, 258, 0, 259, 0, 262, 260, 261, - 0, 263, 264, 265, 266, 267, 268, 269, 270, 1156, - 271, 272, 273, 274, 0, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 0, 286, 287, 486, - 288, 289, 0, 290, 291, 292, 293, 294, 295, 296, - 0, 297, 298, 299, 300, 409, 0, 301, 302, 0, - 303, 304, 487, 305, 306, 1154, 307, 0, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 0, 0, - 318, 319, 0, 320, 1808, 0, 1169, 1168, 0, 0, - 410, 322, 0, 323, 0, 0, 324, 325, 326, 327, - 328, 329, 330, 0, 0, 331, 332, 333, 334, 335, - 0, 0, 336, 337, 338, 339, 0, 1173, 0, 340, - 488, 341, 95, 0, 0, 0, 342, 343, 344, 345, - 346, 347, 348, 349, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 0, 106, 107, 108, 0, 0, 0, - 0, 0, 0, 0, 109, 110, 0, 111, 112, 0, - 113, 114, 115, 350, 351, 0, 352, 0, 353, 0, - 116, 117, 118, 119, 120, 0, 0, 121, 354, 355, - 122, 0, 123, 124, 125, 126, 356, 0, 0, 0, - 127, 128, 129, 130, 131, 0, 0, 132, 133, 134, - 0, 135, 136, 137, 138, 139, 140, 0, 0, 141, - 142, 143, 0, 0, 0, 0, 0, 0, 144, 145, - 146, 147, 148, 357, 149, 150, 358, 359, 151, 0, - 152, 0, 153, 154, 155, 156, 157, 0, 158, 159, - 160, 0, 0, 161, 162, 163, 164, 165, 0, 166, - 167, 168, 0, 169, 170, 171, 0, 172, 173, 174, - 175, 360, 176, 177, 178, 361, 0, 179, 0, 180, - 181, 362, 182, 0, 183, 0, 184, 0, 0, 0, - 185, 186, 187, 0, 188, 189, 363, 0, 364, 190, - 0, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 0, 200, 201, 202, 203, 204, 205, 0, 206, 0, - 365, 207, 208, 209, 210, 366, 367, 0, 368, 0, - 211, 0, 212, 0, 213, 214, 215, 216, 217, 0, - 0, 218, 369, 0, 219, 0, 0, 220, 221, 407, - 0, 0, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 408, 370, 0, 371, - 236, 237, 372, 0, 238, 239, 240, 0, 373, 241, - 374, 242, 243, 244, 0, 245, 0, 0, 246, 247, - 0, 0, 248, 375, 0, 249, 0, 376, 250, 251, - 252, 253, 0, 255, 256, 0, 257, 258, 377, 259, - 378, 262, 260, 261, 0, 263, 264, 265, 266, 267, - 268, 0, 270, 379, 271, 272, 273, 274, 0, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 0, 286, 287, 0, 288, 289, 380, 0, 291, 292, - 293, 294, 295, 296, 0, 297, 298, 299, 300, 409, - 0, 301, 302, 381, 303, 304, 0, 305, 306, 382, - 307, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 383, 0, 318, 319, 0, 320, 321, 0, - 411, 384, 0, 0, 410, 322, 385, 323, 386, 0, - 324, 325, 326, 327, 328, 329, 330, 0, 0, 331, - 332, 333, 334, 335, 0, 0, 336, 337, 338, 339, - 387, 388, 0, 340, 898, 341, 914, 915, 916, 0, - 342, 343, 344, 345, 346, 347, 348, 349, 0, 0, - 0, 0, 0, 898, 917, 914, 915, 916, 0, 0, - 0, 0, 900, 0, 0, 0, 0, 0, 923, 0, - 0, 0, 0, 917, 0, 898, 0, 914, 915, 916, - 0, 900, 0, 0, 0, 0, 0, 923, 0, 0, - 0, 0, 899, 0, 898, 917, 914, 915, 916, 0, - 913, 0, 0, 900, 0, 0, 0, 0, 0, 923, - 0, 899, 0, 0, 917, 0, 0, 0, 0, 913, - 0, 0, 900, 898, 0, 914, 915, 916, 923, 0, - 0, 0, 0, 899, 0, 0, 0, 0, 0, 0, - 0, 913, 898, 917, 914, 915, 916, 0, 0, 0, - 0, 900, 899, 0, 0, 0, 0, 923, 0, 0, - 913, 0, 917, 0, 898, 0, 914, 915, 916, 0, - 900, 0, 0, 0, 0, 0, 923, 0, 0, 0, - 0, 899, 0, 0, 917, 0, 0, 0, 1122, 913, - 0, 0, 900, 0, 0, 0, 0, 0, 923, 0, - 899, 0, 0, 0, 0, 924, 0, 0, 913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 899, 0, 924, 0, 922, 0, 0, 0, - 913, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 919, 0, 0, 0, 0, 922, 924, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 919, - 0, 0, 0, 0, 0, 924, 0, 922, 0, 0, - 0, 0, 1123, 0, 0, 0, 0, 0, 0, 0, - 0, 919, 0, 0, 0, 918, 922, 0, 0, 0, - 0, 0, 0, 0, 924, 0, 0, 0, 0, 0, - 919, 0, 0, 0, 918, 0, 0, 0, 0, 0, - 0, 0, 0, 924, 0, 922, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 918, 0, 0, 919, - 0, 0, 0, 0, 922, 924, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 918, 0, 0, 919, 0, - 0, 0, 0, 0, 0, 0, 922, 0, 0, 0, - 0, 921, 0, 0, 0, 0, 0, 0, 0, 0, - 919, 0, 0, 0, 918, 0, 0, 0, 0, 0, - 921, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 918, 0, 0, 0, 0, 0, 0, - 0, 0, 921, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 918, 0, 0, 0, 0, - 0, 921, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 920, 0, 0, 910, 911, 912, 0, - 901, 902, 903, 904, 905, 907, 908, 906, 909, 0, - 921, 0, 920, 0, 1771, 910, 911, 912, 0, 901, - 902, 903, 904, 905, 907, 908, 906, 909, 0, 921, - 0, 0, 0, 1707, 920, 0, 0, 910, 911, 912, - 0, 901, 902, 903, 904, 905, 907, 908, 906, 909, - 0, 921, 0, 920, 0, 1682, 910, 911, 912, 0, - 901, 902, 903, 904, 905, 907, 908, 906, 909, 0, - 0, 0, 0, 0, 1628, 0, 0, 0, 0, 0, - 0, 0, 920, 0, 0, 910, 911, 912, 0, 901, - 902, 903, 904, 905, 907, 908, 906, 909, 0, 0, - 1120, 920, 0, 1223, 910, 911, 912, 0, 901, 902, - 903, 904, 905, 907, 908, 906, 909, 0, 0, 36, - 1753, 0, 0, 920, 0, 0, 910, 911, 912, 30, - 901, 902, 903, 904, 905, 907, 908, 906, 909, 898, - 0, 914, 915, 916, 0, 0, 37, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 917, - 0, 0, 898, 0, 914, 915, 916, 900, 0, 0, - 0, 0, 0, 923, 927, 0, 0, 39, 0, 0, - 0, 898, 917, 914, 915, 916, 0, 0, 0, 0, - 900, 46, 0, 0, 0, 0, 923, 899, 0, 0, - 0, 917, 0, 0, 926, 913, 0, 0, 0, 900, - 0, 0, 0, 0, 0, 923, 0, 0, 0, 0, - 899, 0, 0, 0, 0, 0, 0, 0, 913, 0, - 27, 0, 0, 0, 0, 0, 40, 0, 0, 899, - 0, 0, 0, 0, 0, 0, 28, 913, 0, 0, - 898, 0, 914, 915, 916, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 29, 0, 898, - 917, 914, 915, 916, 0, 0, 0, 0, 900, 0, - 0, 0, 2130, 0, 923, 0, 0, 0, 0, 917, - 0, 0, 0, 0, 0, 0, 0, 900, 0, 0, - 0, 0, 0, 923, 0, 0, 1542, 0, 899, 0, - 924, 1541, 0, 0, 0, 0, 913, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 899, 0, 0, - 0, 922, 0, 924, 0, 913, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 919, 0, 0, 0, 0, - 0, 0, 924, 0, 922, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 919, 0, - 0, 0, 0, 922, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 44, 919, 0, 0, - 918, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 43, 0, 0, 2129, - 0, 0, 0, 918, 0, 0, 31, 0, 41, 0, - 0, 924, 0, 42, 0, 0, 0, 0, 53, 0, - 0, 0, 918, 0, 0, 34, 0, 0, 0, 35, - 924, 0, 922, 0, 0, 0, 0, 0, 0, 38, - 0, 0, 0, 0, 0, 0, 919, 0, 0, 0, - 55, 922, 0, 0, 0, 0, 921, 0, 0, 0, - 0, 0, 0, 0, 45, 919, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 921, - 0, 0, 0, 0, 56, 0, 898, 0, 914, 915, - 916, 918, 429, 51, 0, 0, 0, 0, 921, 0, - 0, 0, 0, 0, 52, 0, 917, 0, 0, 0, - 918, 0, 0, 0, 900, 0, 0, 0, 0, 0, - 923, 0, 50, 0, 0, 0, 0, 0, 920, 0, - 0, 910, 911, 912, 0, 901, 902, 903, 904, 905, - 907, 908, 906, 909, 899, 0, 0, 0, 0, 0, - 0, 920, 913, 0, 910, 911, 912, 0, 901, 902, - 903, 904, 905, 907, 908, 906, 909, 921, 0, 0, - 920, 0, 0, 910, 911, 912, 0, 901, 902, 903, - 904, 905, 907, 908, 906, 909, 921, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 898, 0, - 914, 915, 916, 0, 0, 0, 0, 0, 0, 1701, - 0, 0, 0, 0, 0, 0, 0, 0, 917, 0, - 0, 1543, 0, 0, 0, 0, 900, 0, 0, 0, - 0, 0, 923, 0, 0, 1548, 0, 0, 0, 920, - 0, 0, 910, 911, 912, 0, 901, 902, 903, 904, - 905, 907, 908, 906, 909, 0, 899, 924, 920, 0, - 0, 910, 911, 912, 913, 901, 902, 903, 904, 905, - 907, 908, 906, 909, 0, 0, 0, 0, 922, 0, + 0, 0, 0, 0, 2137, 0, 0, 0, 0, 0, + 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 931, 0, 929, 0, 0, 0, 1549, 0, + 0, 0, 0, 1548, 36, 0, 0, 0, 926, 0, + 0, 0, 0, 929, 30, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 931, 0, 926, 0, 0, + 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 931, 0, 929, 0, 0, 0, + 0, 0, 0, 925, 0, 0, 0, 0, 0, 0, + 926, 0, 39, 0, 0, 929, 0, 905, 0, 921, + 922, 923, 925, 0, 0, 0, 46, 0, 0, 926, + 0, 0, 0, 0, 0, 0, 0, 924, 0, 0, + 0, 2136, 0, 0, 0, 907, 0, 0, 0, 0, + 0, 930, 0, 0, 0, 925, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, + 0, 40, 0, 0, 925, 906, 0, 0, 0, 928, + 0, 28, 0, 920, 0, 0, 905, 0, 921, 922, + 923, 0, 0, 0, 0, 0, 0, 0, 928, 0, + 0, 0, 29, 0, 0, 0, 924, 0, 0, 0, + 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, + 930, 0, 0, 0, 0, 0, 0, 0, 1127, 0, + 0, 928, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 906, 0, 0, 0, 0, 0, + 928, 927, 920, 0, 917, 918, 919, 0, 908, 909, + 910, 911, 912, 914, 915, 913, 916, 0, 0, 0, + 927, 0, 0, 917, 918, 919, 0, 908, 909, 910, + 911, 912, 914, 915, 913, 916, 0, 0, 931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 919, 0, 0, 898, 0, 914, 915, 916, + 0, 0, 0, 927, 0, 0, 917, 918, 919, 929, + 908, 909, 910, 911, 912, 914, 915, 913, 916, 0, + 0, 44, 927, 926, 0, 917, 918, 919, 0, 908, + 909, 910, 911, 912, 914, 915, 913, 916, 0, 0, + 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 0, 41, 0, 0, 0, 931, 42, 0, + 0, 0, 905, 53, 921, 922, 923, 0, 925, 436, + 34, 0, 0, 0, 35, 0, 0, 0, 929, 0, + 0, 0, 924, 0, 38, 905, 0, 921, 922, 923, + 907, 0, 926, 0, 0, 55, 930, 0, 0, 0, + 0, 0, 0, 0, 0, 924, 0, 0, 1550, 45, + 0, 0, 905, 907, 921, 922, 923, 0, 0, 930, + 906, 0, 0, 0, 0, 0, 0, 0, 920, 56, + 0, 905, 924, 921, 922, 923, 0, 925, 51, 0, + 907, 0, 0, 906, 928, 0, 930, 0, 0, 52, + 0, 920, 905, 0, 921, 922, 923, 0, 0, 907, + 0, 0, 0, 0, 0, 930, 0, 50, 0, 0, + 906, 0, 924, 0, 0, 1514, 0, 0, 920, 0, + 907, 905, 0, 921, 922, 923, 930, 0, 0, 906, + 0, 0, 0, 0, 0, 0, 0, 920, 0, 0, + 0, 924, 0, 0, 905, 0, 921, 922, 923, 907, + 906, 1555, 0, 928, 0, 930, 927, 0, 920, 917, + 918, 919, 0, 908, 909, 910, 911, 912, 914, 915, + 913, 916, 907, 931, 0, 0, 1708, 0, 930, 906, + 0, 0, 0, 0, 0, 0, 0, 920, 0, 0, + 0, 0, 0, 0, 929, 0, 931, 0, 0, 0, + 0, 0, 906, 0, 0, 0, 0, 0, 926, 0, + 920, 0, 0, 0, 0, 0, 0, 929, 0, 0, + 0, 0, 0, 931, 0, 927, 0, 0, 917, 918, + 919, 926, 908, 909, 910, 911, 912, 914, 915, 913, + 916, 0, 931, 0, 929, 0, 0, 0, 0, 0, + 0, 0, 0, 925, 0, 0, 0, 0, 926, 0, + 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 925, 926, 0, 0, + 0, 0, 0, 0, 929, 0, 0, 0, 0, 0, + 0, 0, 931, 0, 0, 0, 0, 0, 926, 0, + 0, 0, 0, 925, 0, 905, 0, 921, 922, 923, + 0, 0, 0, 929, 0, 931, 0, 0, 1519, 0, + 0, 0, 0, 0, 0, 924, 0, 926, 0, 928, + 0, 0, 0, 907, 0, 0, 929, 0, 0, 930, + 0, 0, 0, 925, 0, 0, 0, 0, 0, 0, + 926, 0, 928, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 906, 0, 0, 0, 0, 0, 0, + 0, 920, 925, 0, 0, 0, 0, 0, 0, 928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 917, 0, 0, 0, 0, - 0, 0, 0, 900, 0, 0, 0, 0, 0, 923, - 0, 898, 0, 914, 915, 916, 0, 918, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 928, 0, + 0, 927, 0, 0, 917, 918, 919, 0, 908, 909, + 910, 911, 912, 914, 915, 913, 916, 0, 0, 928, + 0, 0, 0, 0, 927, 0, 0, 917, 918, 919, + 0, 908, 909, 910, 911, 912, 914, 915, 913, 916, + 0, 0, 0, 0, 0, 0, 0, 0, 928, 0, + 0, 927, 0, 0, 917, 918, 919, 0, 908, 909, + 910, 911, 912, 914, 915, 913, 916, 0, 0, 0, + 927, 928, 0, 917, 918, 919, 931, 908, 909, 910, + 911, 912, 914, 915, 913, 916, 0, 0, 0, 0, + 0, 927, 0, 0, 917, 918, 919, 929, 908, 909, + 910, 911, 912, 914, 915, 913, 916, 0, 0, 0, + 0, 926, 0, 0, 0, 0, 0, 0, 0, 0, + 927, 0, 0, 917, 918, 919, 0, 908, 909, 910, + 911, 912, 914, 915, 913, 916, 0, 0, 0, 0, + 0, 0, 0, 927, 0, 0, 917, 918, 919, 0, + 908, 909, 910, 911, 912, 914, 915, 913, 916, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 917, 0, 899, 1507, 0, 0, 0, 0, 900, - 0, 913, 0, 0, 898, 923, 914, 915, 916, 924, + 0, 1162, 0, 1177, 1157, 1169, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1179, 1178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 917, 0, 0, 0, 0, 899, - 922, 0, 900, 0, 0, 0, 0, 913, 923, 0, - 0, 0, 0, 0, 919, 0, 0, 0, 0, 0, - 0, 0, 0, 921, 0, 0, 0, 0, 0, 0, - 0, 0, 899, 0, 0, 898, 0, 914, 915, 916, - 913, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 918, - 0, 0, 0, 900, 0, 0, 0, 0, 0, 923, - 0, 0, 0, 0, 0, 0, 924, 1155, 0, 1170, - 1150, 1162, 0, 0, 0, 898, 0, 914, 915, 916, - 0, 1172, 1171, 899, 0, 920, 0, 922, 910, 911, - 912, 913, 901, 902, 903, 904, 905, 907, 908, 906, - 909, 919, 924, 900, 0, 0, 0, 0, 0, 923, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 922, 0, 921, 1167, 0, 0, 1160, - 1159, 0, 0, 899, 0, 924, 0, 919, 0, 0, - 0, 913, 0, 0, 0, 0, 918, 0, 1158, 0, - 0, 0, 0, 0, 0, 0, 922, 0, 0, 0, - 0, 1512, 0, 0, 0, 0, 0, 0, 0, 0, - 919, 0, 0, 0, 1157, 0, 0, 0, 0, 0, - 0, 0, 918, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 924, 920, 0, 0, - 910, 911, 912, 0, 901, 902, 903, 904, 905, 907, - 908, 906, 909, 0, 0, 918, 0, 922, 1152, 1153, - 0, 755, 921, 0, 0, 0, 0, 0, 0, 0, - 0, 919, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 924, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 921, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1161, 0, 0, 0, 0, 0, 0, - 0, 919, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 921, 0, 0, 920, 0, 0, 910, 911, 912, - 0, 901, 902, 903, 904, 905, 907, 908, 906, 909, - 0, 0, 0, 0, 0, 0, 1156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 920, 0, 0, 910, 911, 912, 0, 901, 902, 903, - 904, 905, 907, 908, 906, 909, 0, 0, 0, 0, - 0, 0, 921, 0, 0, 0, 1144, 0, 0, 0, - 0, 0, 1154, 920, 0, 0, 910, 911, 912, 0, - 901, 902, 903, 904, 905, 907, 908, 906, 909, 0, - 0, 1151, 0, 1169, 1168, 1155, 0, 1170, 1150, 1162, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1172, - 1171, 0, 921, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1173, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 920, 0, 0, 910, 911, 912, - 0, 901, 902, 903, 904, 905, 907, 908, 906, 909, - 0, 0, 0, 0, 1167, 0, 0, 1160, 1159, 0, + 1174, 0, 928, 1167, 1166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1158, 0, 0, 0, - 0, 0, 0, 0, 920, 0, 0, 910, 911, 912, - 0, 901, 902, 903, 904, 905, 907, 908, 906, 909, - 0, 0, 1157, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1152, 1153, 0, 755, + 0, 0, 0, 0, 927, 0, 0, 917, 918, 919, + 0, 908, 909, 910, 911, 912, 914, 915, 913, 916, + 0, 0, 1159, 1160, 0, 762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1156, 0, 0, 0, 0, 0, + 1163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1151, 0, 0, 0, 0, 0, 1161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1154, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1151, - 0, 1169, 1168, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1158, 0, 1176, 1175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1173, + 0, 0, 0, 0, 0, 0, 0, 0, 1180, } var sqlPact = [...]int{ - 32792, -1000, -93, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 32827, -1000, -104, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 572, 799, 105, 625, - 721, 625, -1000, -1000, 31100, 1450, 294, 294, 358, 369, - 294, 366, 24402, 30706, 355, 419, 574, 10, -1000, 696, - -83, 30312, 24402, 1339, -100, 23220, 146, 32792, 1141, 1014, - 23220, 29918, 29524, 29130, -1000, -1000, 141, 15634, -1000, -1000, - -1000, -1000, -1000, 418, 837, -1000, -101, -1000, -1000, -1000, - 24402, 28736, 24008, 835, -1000, 25978, 28342, 937, -1000, -1000, - 484, 237, 1352, -1000, -89, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 528, 797, 90, 1008, + 784, 1008, -1000, -1000, 30892, 1150, 231, 231, 302, 382, + 231, 356, 24194, 30498, 300, 369, 560, -1, -1000, 527, + -58, 30104, 24194, 1325, -113, 23012, 117, 32827, 1092, 927, + 23012, 29710, 29316, 28922, -1000, -1000, 109, 15426, -1000, -1000, + -1000, -1000, -1000, 362, 680, -1000, -114, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 24194, 28528, 23800, + 654, -1000, 25770, 28134, 886, -1000, -1000, 479, 178, 1327, + -1000, -101, -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, @@ -4732,44 +4718,44 @@ var sqlPact = [...]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, -1000, 1139, - -1000, 825, 1136, 1135, 236, -1000, -1000, -1000, -1000, 937, - 937, -1000, 1537, -1000, 405, 1535, -1000, -1000, -1000, -1000, - -1000, -1000, 24402, -1000, 1534, 23220, -1000, 27948, 1035, 27554, - -1000, 696, -1000, -1000, -1000, 862, 1338, 1338, 1338, 1353, - -6, -16, 10, -102, 24402, -1000, 147, -102, 10317, 10317, - -1000, 809, 146, -1000, 170, 20067, -257, -1000, 9902, -1000, - 23220, 24402, 474, 27160, 1205, 125, -1000, -1000, 1204, -107, - 1202, -1000, -126, -1000, 16860, -1000, 146, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1090, -1000, 651, 1085, + 1084, 175, -1000, -1000, -1000, -1000, 886, 886, -1000, 1513, + -1000, 340, 1512, -1000, -1000, -1000, -1000, -1000, -1000, 24194, + -1000, 1511, 23012, -1000, 27740, 975, 27346, -1000, 527, -1000, + -1000, -1000, 948, 1303, 1303, 1303, 1324, -16, -23, -1, + -115, 24194, -1000, 118, -115, 10109, 10109, -1000, 647, 117, + -1000, 143, 19859, -255, -1000, 9694, -1000, 23012, 24194, 424, + 26952, 1162, 120, -1000, -1000, 1161, -119, 1160, -1000, -121, + -1000, 16652, -1000, 117, -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, 26766, - 23614, 340, 500, 3253, 1199, 2606, 1196, 23614, -1000, 1328, - -1000, 1383, 59, -1000, 960, 398, -1000, 1241, 16454, 16048, - 1267, 1115, -1000, -1000, -1000, -87, 5345, 24402, 1155, 23614, - 24402, -1000, 24402, -1000, -1000, 59, -1000, -1000, 26372, -1000, - -1000, -1000, 104, -1000, 173, 900, 1391, 1297, -1000, 895, - -1000, 862, 973, 1147, 1152, 516, 840, 1020, -1000, 11148, - 1011, 12393, 868, 10, -1000, -1000, 10, 10, 12393, -1000, - -1000, 24402, -102, 1390, 24402, 1133, -124, -1000, 32860, -1000, - -1000, 12393, 12393, 12393, 12393, 12393, 693, 145, -1000, -1000, - -1000, 6997, -1000, -1000, -257, 145, -9, -1000, -1000, 144, - 142, -257, -1000, -1000, -1000, -1000, -1000, 140, 1532, 416, - -1000, -1000, -1000, 12393, 245, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1150, -1000, 137, 136, 134, 133, - -1000, -1000, -1000, -1000, 126, 124, 122, 120, 119, 117, - 114, 111, 110, 109, 107, 643, -1000, 274, -1000, 274, - 274, -1000, 58, 58, 66, -1000, -1000, 58, -1000, -1000, - -52, -51, -1000, -1000, -1000, -1000, -1000, -1000, 351, 91, - 98, -1000, -1000, -1000, 24402, -257, -1000, 4939, 5345, 12393, - -128, -1000, 33453, -1000, 263, 102, 1384, 18882, -1000, 24402, - 24402, -1000, 24402, -1000, -1000, 24402, 24402, 141, 20462, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1467, -1000, -1000, - -1000, -1000, 1464, 894, 0, 399, -110, 24402, 24402, -1000, - -1000, -1000, 396, 25978, -113, 394, -1000, 21250, 1296, 1295, - 1290, 139, 24402, 1043, 24402, 845, -4, 24402, -113, 780, - 23220, 1132, 1383, 354, 937, -1000, 778, -1000, -1000, -1000, - -103, -1000, -1000, -1000, -1000, -103, -1000, -1000, -1000, -1000, - -1000, 411, -1000, -1000, -1000, -1000, 5345, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 26558, 23406, 582, 558, + 3021, 1157, 2809, 1156, 23406, -1000, 1292, -1000, 1351, 56, + -1000, 884, 335, -1000, 1199, 16246, 15840, 1221, 1277, -1000, + -1000, -1000, -93, 5137, 24194, 1114, 23406, 24194, -1000, 24194, + -1000, -1000, 56, -1000, -1000, 26164, -1000, -1000, -1000, 100, + -1000, 134, 824, 1364, 1261, -1000, 822, -1000, 948, 911, + 1110, 1112, 843, 683, 956, -1000, 10940, 942, 12185, 733, + -1, -1000, -1000, -1, -1, 12185, -1000, -1000, 24194, -115, + 1353, 24194, 1082, -212, -1000, 32702, -1000, -1000, 12185, 12185, + 12185, 12185, 12185, 591, 116, -1000, -1000, -1000, 6789, -1000, + -1000, -255, 116, -21, -1000, -1000, 115, 114, -255, -1000, + -1000, -1000, -1000, -1000, 112, 1508, 406, -1000, -1000, -1000, + 12185, 201, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 1111, -1000, 96, 94, 89, 79, -1000, -1000, -1000, + -1000, 78, 77, 74, 73, 70, 66, 65, 63, 62, + 57, 54, 552, -1000, 239, -1000, 239, 239, -1000, 42, + 42, 43, -1000, -1000, 42, -1000, -1000, -71, -70, -1000, + -1000, -1000, -1000, -1000, -1000, 294, 35, 51, -1000, -1000, + -1000, 24194, -255, -1000, 4731, 5137, 12185, -122, -1000, 33260, + -1000, 228, 131, 1352, 18674, -1000, 24194, 24194, -1000, 24194, + -1000, -1000, 24194, 24194, 109, 20254, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1467, -1000, -1000, -1000, -1000, 1443, + 820, -9, 338, -137, 24194, 24194, -1000, -1000, -1000, 336, + 25770, -189, 333, -1000, 21042, 1286, 1282, 1250, 111, 24194, + 964, 24194, 709, -13, 24194, -189, 662, 23012, 1080, 1351, + 298, 886, -1000, 770, -1000, -1000, -1000, -116, -1000, -1000, + -1000, -1000, -116, -1000, -1000, -1000, -1000, -1000, 405, -1000, + -1000, -1000, -1000, 5137, -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, @@ -4777,169 +4763,169 @@ var sqlPact = [...]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, -1000, 24194, + -1000, -1000, -1000, 24194, -1000, 774, 23012, 993, 985, 20648, + 24194, 204, 1145, -58, 25376, -1000, 1144, 911, 1110, -1000, + -1000, -1000, -1000, -1000, 656, 627, -1000, 917, -1000, 393, + -1000, -1000, -1000, 33260, -1000, 319, -1000, -1000, 33260, 469, + 508, 24194, 936, -1000, 936, -117, -1000, 32631, -1000, 50, + -127, -1000, 228, 14241, 10109, 33675, 24194, 351, 12185, 12185, + 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, + 12185, 12185, 12185, 12185, 12185, 12185, 12185, 1032, 332, 2085, + 702, 38, 720, 5137, -1000, -1000, 1429, 1429, 1429, 33283, + 33283, 55, -1000, -255, -261, 32195, -118, -255, -1000, -1000, + -1000, 8864, 12185, 8449, -255, 5958, -1000, 913, 1490, 232, + 33260, 1122, 1025, 47, 1487, 1486, 1485, 1484, 12185, 1126, + 12185, 13015, 12185, 12185, 7204, 12185, 12185, 12185, 12185, -1000, + 46, -1000, -1000, -1000, -1000, 1479, -1000, -1000, 1478, -1000, + 1476, -1000, 337, 321, 1474, -1000, 1473, -1000, 422, 228, + 12185, -26, -1000, -1000, -1000, -1000, 3224, 9694, -1000, 482, + 12185, 646, -1000, 17864, 244, 24194, 31, -1000, -1000, -1000, + 155, 24194, -1000, 120, -1000, -1000, -119, -1000, -1000, -1000, + -1000, -1000, 1142, 24194, 24194, 24194, -137, -120, 24194, -1000, + 2594, 24194, -1000, 24194, -1000, 33675, 24194, -1000, 45, 19, + 13, 912, 250, 903, 24194, 24194, -1000, 24982, 24588, 24194, + -1000, -1000, -1000, 5137, -1000, 24194, -1000, -1000, -1000, 2626, + 24194, 24194, 24194, 1933, 24194, 886, -1000, -1000, 585, 501, + -1000, 16652, 913, 1471, -1000, -191, -1000, -1000, -1000, -1000, + -1000, -1000, -27, -128, -129, 33675, -1000, -1000, -1000, -1000, + 24194, 3, 643, -13, 24194, 208, 645, 808, -1000, 24194, + -1000, -1000, -1000, 264, -1000, 469, -1000, 12185, 1470, -1000, + -1000, -1000, -1000, -1000, 863, -137, 12185, 768, 162, -1000, + -1000, -58, 24194, -1000, 1009, -165, 1246, 22224, 22618, 15031, + 22224, -1000, 13845, 159, 1071, -1000, -1000, 44, -1000, -1000, + 1371, 3608, -1000, -1000, -1000, -1000, 76, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 43, 552, 42, 42, 42, -1000, + -1000, -1000, -1000, -1000, -1000, -70, -71, 239, 239, 239, + -1000, -1000, 174, 692, 692, 606, 606, 606, 1344, 1344, + 1344, 1344, 3088, 3088, 3088, 350, 3088, 3088, 3088, 33283, + 33444, 2248, 12185, 331, 690, 38, 12185, -1000, 1215, -1000, + -1000, -1000, 1070, 34, -1000, 13015, 13015, -1000, -1000, -1000, + 6789, 33, -1000, -1000, -1000, -1000, -1000, 32, 12185, -1000, + -1000, 12185, -219, -230, -1000, 33260, -1000, -132, -136, -1000, + -1000, -87, 12185, 12185, 12185, -29, -1000, 327, -1000, 318, + 316, 315, -1000, 26, -30, 495, -1000, 12185, 586, 25, + 24, 12185, -32, -36, -38, -39, 33231, -41, 1069, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -45, 33191, -46, + 2672, -1000, 13015, 13015, 13015, 6789, 22, -47, 32683, -226, + 33164, 10525, 10525, 10525, -48, 33141, 12185, -226, 3263, -138, + -140, -142, 1469, -144, -49, -50, 169, 168, -51, -52, + 24194, 1009, -146, -1000, -1000, 12185, -1000, -1000, 10109, 33260, + 482, 1249, -148, -1000, -1000, 228, 18674, 9694, -150, -1000, + 24194, -191, -1000, -1000, -1000, -1000, -1000, -1000, 935, 12185, + 24194, -1000, 971, 24194, -43, 21, 24194, 20, 718, -1000, + 1134, 774, 1133, 774, -1000, -152, -1000, -92, -1000, -189, + 313, -1000, 310, 309, -189, 607, -191, 56, -1000, -1000, + -1000, -1000, -1000, -53, 24194, 946, -1000, 20648, -1000, 204, + 21436, -1000, 1271, -1000, 123, 1350, -1000, 968, 24194, 1131, + -1000, -1000, 614, 32173, -1000, -1000, 162, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 24402, -1000, -1000, -1000, 24402, -1000, 867, 23220, - 1060, 1059, 20856, 24402, 248, 1189, -83, 25584, -1000, 1184, - 973, 1147, -1000, -1000, -1000, -1000, -1000, 653, 724, -1000, - 982, -1000, 450, -1000, -1000, -1000, 33453, -1000, 335, -1000, - -1000, 33453, 507, 584, 24402, 1019, -1000, 1019, -104, -1000, - 32403, -1000, 89, -132, -1000, 263, 14449, 10317, 33521, 24402, - 413, 12393, 12393, 12393, 12393, 12393, 12393, 12393, 12393, 12393, - 12393, 12393, 12393, 12393, 12393, 12393, 12393, 12393, 12393, 12393, - 875, 391, 1025, 742, 49, 757, 5345, -1000, -1000, 1456, - 1456, 1456, 33514, 33514, 106, -1000, -257, -258, 32362, -106, - -257, -1000, -1000, -1000, 9072, 12393, 8657, -257, 6166, -1000, - 791, 1502, 270, 33453, 1165, 1092, 82, 1498, 1496, 1495, - 1493, 12393, 954, 12393, 13223, 12393, 12393, 7412, 12393, 12393, - 12393, 12393, -1000, 81, -1000, -1000, -1000, -1000, 1492, -1000, - -1000, 1486, -1000, 1485, -1000, 409, 400, 1483, -1000, 1482, - -1000, 460, 263, 12393, -20, -1000, -1000, -1000, -1000, 2841, - 9902, -1000, 592, 12393, 783, -1000, 18072, 278, 24402, 61, - -1000, -1000, -1000, 198, 24402, -1000, 125, -1000, -1000, -107, - -1000, -1000, -1000, -1000, -1000, 1183, 24402, 24402, 24402, -110, - -108, 24402, -1000, 2350, 24402, -1000, 24402, -1000, 33521, 24402, - -1000, 79, 23, 25, 981, 284, 978, 24402, 24402, -1000, - 25190, 24796, 24402, -1000, -1000, -1000, 5345, -1000, 24402, -1000, - -1000, -1000, 2587, 24402, 24402, 24402, 1282, 24402, 937, -1000, - -1000, 636, 639, -1000, 16860, 791, 1480, -1000, -114, -1000, - -1000, -1000, -1000, -1000, -1000, -22, -133, -109, 33521, -1000, - -1000, -1000, -1000, 24402, 12, 758, -4, 24402, 252, 776, - 892, -1000, 24402, -1000, -1000, -1000, 291, -1000, 507, -1000, - 12393, 1478, -1000, -1000, -1000, -1000, -1000, 943, -110, 12393, - 2969, 205, -1000, -1000, -83, 24402, -1000, 1091, -112, 1319, - 22432, 22826, 15239, 22432, -1000, 14053, 203, 1131, -1000, -1000, - 75, -1000, -1000, 1406, 33839, -1000, -1000, -1000, -1000, 80, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 66, 643, 58, - 58, 58, -1000, -1000, -1000, -1000, -1000, -1000, -51, -52, - 274, 274, 274, -1000, -1000, 231, 1127, 1127, 504, 504, - 504, 1374, 1374, 1374, 1374, 447, 447, 447, 395, 447, - 447, 447, 33514, 2955, 1032, 12393, 387, 703, 49, 12393, - -1000, 962, -1000, -1000, -1000, 1130, 48, -1000, 13223, 13223, - -1000, -1000, -1000, 6997, 47, -1000, -1000, -1000, -1000, -1000, - 46, 12393, -1000, -1000, 12393, -219, -223, -1000, 33453, -1000, - -134, -138, -1000, -1000, -71, 12393, 12393, 12393, -24, -1000, - 385, -1000, 383, 381, 379, -1000, 45, -26, 570, -1000, - 12393, 698, 44, 43, 12393, -28, -30, -31, -32, 33420, - -33, 1125, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -34, 33384, -35, 3050, -1000, 13223, 13223, 13223, 6997, 40, - -36, 32841, -207, 33287, 10733, 10733, 10733, -37, 33175, 12393, - -207, 3385, -139, -140, -144, 1477, -145, -38, -39, 230, - 229, -40, -41, 24402, 1091, -146, -1000, -1000, 12393, -1000, - -1000, 10317, 33453, 592, 1293, -150, -1000, -1000, 263, 18882, - 9902, -152, -1000, 24402, -114, -1000, -1000, -1000, -1000, -1000, - -1000, 951, 12393, 24402, -1000, 1034, 24402, -7, 39, 24402, - 38, 660, -1000, 1182, 867, 1179, 867, -1000, -154, -1000, - -77, -1000, -113, 376, -1000, 373, 372, -113, 690, -114, - 59, -1000, -1000, -1000, -1000, -1000, -42, 24402, 1033, -1000, - 20856, -1000, 248, 21644, -1000, 1306, -1000, 115, 1380, -1000, - 1065, 24402, 1178, -1000, -1000, 719, 32333, -1000, -1000, 205, + -1000, -1000, -1000, -1000, 967, -55, -1000, -1000, -1000, -1000, + -1000, 999, 1322, 14241, 922, 921, 14241, 1056, 598, 598, + 598, -1000, -1000, -1000, 24194, 17, -1000, -1000, 19464, 16, + 22618, 22224, -255, -1000, 18278, -56, 1246, -1000, 603, 15, + 5958, 130, 135, 1357, -1000, 1464, 12185, 12185, 1334, 12185, + 13015, 13015, -1000, 511, -1000, -1000, -1000, -1000, 1065, 14, + -1000, 12185, 33675, 2487, 2171, -154, -1000, 6789, 8034, -198, + -255, 32154, 12185, -1000, -1000, 132, -1000, -1000, -57, 9279, + -1000, 32896, -76, -76, -1000, 847, 848, 546, 439, 1462, + 1507, 1172, -1000, 12185, 32965, -1000, 19069, 230, 608, 32125, + -1000, -1000, -1000, -1000, 33675, -1000, 12185, -1000, 1052, 12185, + -1000, 33675, 13015, 13015, 13015, 13015, 13015, 13015, 13015, 13015, + 13015, 13015, 13015, 13015, 13015, 13015, 13015, 13015, 1039, 13015, + 1412, 1412, 1412, -211, 7619, -1000, 1098, 1052, 12185, 12185, + 33675, -60, -61, -62, -1000, 12185, -226, 12185, -1000, -1000, + -1000, -64, -1000, 1449, -1000, 173, -1000, -1000, 173, 1301, + -1000, 999, -1000, 32214, -212, -1000, 110, -58, 482, -1000, + -1000, 151, 1434, -1000, 13, 250, 32106, -156, 24194, -158, + 24194, -1000, 14636, -1000, 24194, -1000, 991, 225, -13, 283, + 24194, -1000, 24194, -1000, -1000, 5137, 4319, 5137, 24194, 24194, + 24194, 24194, 24194, 24194, 1500, -1000, 204, 11, -1000, 1023, + 643, -160, -1000, -1000, -1000, 222, 980, 20648, 24194, -58, + -1000, 1211, 250, 24194, -1000, -1000, -1000, -1000, -1000, -1000, + 226, 12185, 12600, 1246, 14241, 14241, 2048, 920, 14241, -1000, + -1000, -1000, -1000, 10, 24194, 9, 24194, 24194, -1000, -1000, + -255, 22224, -1000, 17470, -87, 429, 1444, 130, 124, -65, + 1356, 2206, 12185, 460, 502, 383, 12185, 12185, 33675, 33210, + -164, -1000, 12185, 12185, -1000, 32084, -168, -1000, 12185, -1000, + 33260, -1000, 1499, 12185, -66, -67, -68, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -69, -1000, -1000, 33260, 12185, -1000, + -1000, 31680, 12185, -75, -1000, -78, 33260, 1098, 33260, -1000, + 392, 392, 571, 571, 571, 1412, 1412, 1412, 1412, 556, + 556, 556, 402, 556, 556, 556, 1050, 970, 7, -1000, + 2568, 12185, -169, -1000, -1000, -1000, 33260, 33260, -79, -1000, + -1000, -1000, -226, 32065, -1000, -80, -1000, -1000, -1000, 226, + -1000, 1183, 14636, 1240, -1000, -1000, 6, -1000, 24194, -1000, + 24194, 799, -1000, -1000, 901, 4, 13015, 24194, -1000, -1000, + -1000, -1000, -170, -175, -1000, 221, 103, 1280, 12185, -176, + 788, -1000, 760, 566, -1000, 12185, -1000, -1000, 33675, 774, + 774, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -101, + 31286, 1443, 1467, -1000, -1000, -1000, 150, -1000, -1000, -1000, + -1000, 305, 296, -1000, 643, 24194, 1247, 1247, -1000, -1000, + 21436, 611, -1000, 473, 461, -82, 3, 208, -1000, 2, + 644, -1000, 24194, 33260, -217, -1000, 33260, -1000, 5543, -1000, + 2048, -1000, 0, 12185, 14241, -1000, 24194, -177, 24194, -181, + -1000, 33675, -182, 33675, -1000, -187, -1000, 1346, -83, -1000, + 128, 127, 1437, -1000, 2206, 12185, 12185, 12185, 2206, 33210, + -196, -1000, 33675, 2206, 2206, -1000, -1000, 3840, -1000, 32896, + -1000, -1000, -1000, -1000, 33260, 578, -1000, 3807, -1000, -1000, + -1000, 13015, 1048, -2, -1000, 33675, 3770, -1000, -1000, -1000, + -1000, -1000, 400, -197, -1000, 24194, -1000, -1000, 6374, 909, + -1000, -1000, -1000, 12185, 2568, -9, -1000, 229, 14636, 17058, + 21830, 24194, 21830, 3520, 532, -1000, -1000, -1000, 33260, 1283, + -1000, -1000, -95, -101, 4319, 24194, 24194, -1000, -201, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1062, -45, -1000, - -1000, -1000, -1000, -1000, 1071, 1348, 14449, 1005, 992, 14449, - 956, 705, 705, 705, -1000, -1000, -1000, 24402, 35, -1000, - -1000, 19672, 32, 22826, 22432, -257, -1000, 18486, -46, 1319, - -1000, 708, 29, 6166, 153, 158, 1400, -1000, 1475, 12393, - 12393, 491, 12393, 13223, 13223, -1000, 272, -1000, -1000, -1000, - -1000, 1124, 26, -1000, 12393, 33521, 3898, 2936, -158, -1000, - 6997, 8242, -117, -257, 32314, 12393, -1000, -1000, 157, -1000, - -1000, -47, 9487, -1000, 32929, -62, -62, -1000, 924, 789, - 666, 459, 1472, 1531, 1216, -1000, 12393, 32948, -1000, 19277, - 268, 711, 32292, -1000, -1000, -1000, -1000, 33521, -1000, 12393, - -1000, 1107, 12393, -1000, 33521, 13223, 13223, 13223, 13223, 13223, - 13223, 13223, 13223, 13223, 13223, 13223, 13223, 13223, 13223, 13223, - 13223, 1069, 13223, 1453, 1453, 1453, -118, 7827, -1000, 1120, - 1107, 12393, 12393, 33521, -48, -49, -54, -1000, 12393, -207, - 12393, -1000, -1000, -1000, -55, -1000, 1470, -1000, 225, -1000, - -1000, 225, 1332, -1000, 1071, -1000, 32381, -124, -1000, 96, - -83, 592, -1000, -1000, 196, 1000, -1000, 25, 284, 32273, - -160, 24402, -165, 24402, -1000, 14844, -1000, 24402, -1000, 1031, - 212, -4, 345, 24402, -1000, 24402, -1000, -1000, 5345, 4527, - 5345, 24402, 24402, 24402, 24402, 24402, 24402, 1529, -1000, 248, - 20, -1000, 1094, 758, -166, -1000, -1000, -1000, 257, 863, - 20856, 24402, -83, -1000, 1257, 284, 24402, -1000, -1000, -1000, - -1000, -1000, -1000, 259, 12393, 12808, 1319, 14449, 14449, 815, - 985, 14449, -1000, -1000, -1000, -1000, 18, 24402, 17, 24402, - 24402, -1000, -1000, -257, 22432, -1000, 17678, -71, 452, 1469, - 153, 127, -56, 1375, 177, 12393, 201, 2084, 469, 12393, - 12393, 33521, 33564, -167, -1000, 12393, 12393, -1000, 4072, -172, - -1000, 12393, -1000, 33453, -1000, 1515, 12393, -57, -58, -60, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -61, -1000, -1000, - 33453, 12393, -1000, -1000, 31888, 12393, -64, -1000, -66, 33453, - 1120, 33453, -1000, 455, 455, 622, 622, 622, 1453, 1453, - 1453, 1453, 1368, 1368, 1368, 377, 1368, 1368, 1368, 1106, - 979, 15, -1000, 3705, 12393, -173, -1000, -1000, -1000, 33453, - 33453, -67, -1000, -1000, -1000, -207, 4004, -1000, -69, -1000, - -1000, -1000, 259, -1000, 1227, 14844, 1287, -1000, -1000, 14, - -1000, 24402, -1000, 24402, 886, -1000, -1000, 971, 13, 13223, - 24402, -1000, -1000, -1000, -1000, -174, -178, -1000, 254, 99, - 1314, 12393, -182, 879, -1000, 876, 601, -1000, 12393, -1000, - -1000, 33521, 867, 867, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -89, 31494, 1464, 1467, -1000, -1000, -1000, 175, - -1000, -1000, -1000, -1000, 363, 362, -1000, 758, 24402, 1272, - 1272, -1000, -1000, 21644, 716, -1000, 537, 490, -72, 12, - 252, -1000, 11, 767, -1000, 24402, 33453, -127, -1000, 33453, - -1000, 5751, -1000, 815, -1000, 9, 12393, 14449, -1000, 24402, - -184, 24402, -189, -1000, 33521, -190, 33521, -1000, -195, -1000, - 1377, -73, -1000, 151, 150, 1462, -1000, 177, 12393, 12393, - 12393, 177, 33564, -196, -1000, 33521, 177, 177, -1000, -1000, - 3971, -1000, 32929, -1000, -1000, -1000, -1000, 33453, 679, -1000, - 3952, -1000, -1000, -1000, 13223, 1104, 8, -1000, 33521, 3838, - -1000, -1000, -1000, -1000, -1000, 464, -197, -1000, 24402, -1000, - -1000, 6582, 1049, -1000, -1000, -1000, 12393, 3705, 0, -1000, - 267, 14844, 17266, 22038, 24402, 22038, 3530, 631, -1000, -1000, - -1000, 33453, 1320, -1000, -1000, -82, -89, 4527, 24402, 24402, - -1000, -203, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1033, 248, -1000, 14844, 24402, -162, -1000, - 1370, 12808, -1000, -1000, 24402, 33453, -1000, -205, -1000, -211, - -1000, 24402, 1320, -1000, 203, 17678, -1000, 7, -1000, -1000, - -1000, 149, 177, 177, 177, -1000, -1000, -1000, -74, 711, - 1343, -1000, 2746, 13223, 33521, -226, -1000, 457, -1000, 14844, - 263, -1000, -1000, 3479, 933, -1000, 3, -1000, -1000, -1000, - -90, 1322, -1000, 24402, -1000, 1322, 1314, 24402, 287, 24402, - 341, -86, -1000, -1000, -1000, -1000, 1000, 248, 758, -232, - 284, 24402, 2, -1000, -234, -1000, -1000, -1000, -1000, -1000, - -1000, 24402, -1000, -1000, 544, 12393, 2746, -238, -1000, 18882, - -1000, -1000, 908, 722, 700, 12393, 17266, 205, -1000, 205, - 22038, 0, -1000, 12393, -1000, -1000, 333, 758, -1000, 247, - -1, -1000, -1000, -1000, -247, -75, 11978, 11978, -207, -1000, - -230, -1000, 1040, -1000, 747, 727, 590, -1000, -1000, -1000, - 3414, -1000, -1000, -1000, 1322, 933, 33453, -1000, -1000, 263, - -4, 14844, -1000, -1000, -1000, -1000, 13638, 808, 585, 32818, - -1000, -1000, -1000, -1000, 1236, -1000, 290, 940, 940, -1000, - 205, 722, -1000, -1000, -252, 1411, -1000, -1000, -1000, -1000, - -1000, -1000, 1428, -1000, -1000, 1016, -1000, -1000, -1000, 247, - 11563, -1000, -1000, -1000, 263, -1000, -1000, + 946, 204, -1000, 14636, 24194, -218, -1000, 1343, 12600, -1000, + -1000, 24194, 33260, -1000, -202, -1000, -203, -1000, 24194, 1283, + -1000, 159, 17470, -1000, -4, -1000, -1000, -1000, 122, 2206, + 2206, 2206, -1000, -1000, -1000, -85, 608, 1317, -1000, 2525, + 13015, 33675, -207, -1000, 413, -1000, 14636, 228, -1000, -1000, + 3355, 858, -1000, -6, -1000, -1000, -1000, -102, 1275, -1000, + 24194, -1000, 1275, 1280, 24194, 251, 24194, 280, -97, -1000, + -1000, -1000, -1000, 1434, 204, 643, -222, 250, 24194, -8, + -1000, -228, -1000, -1000, -1000, -1000, -1000, -1000, 24194, -1000, + -1000, 576, 12185, 2525, -234, -1000, 18674, -1000, -1000, 836, + 630, 713, 12185, 17058, 162, -1000, 162, 21830, -9, -1000, + 12185, -1000, -1000, 279, 643, -1000, 203, -12, -1000, -1000, + -1000, -238, -86, 11770, 11770, -226, -1000, -216, -1000, 959, + -1000, 632, 631, 526, -1000, -1000, -1000, 3333, -1000, -1000, + -1000, 1275, 858, 33260, -1000, -1000, 228, -13, 14636, -1000, + -1000, -1000, -1000, 13430, 743, 475, 32650, -1000, -1000, -1000, + -1000, 1192, -1000, 263, 811, 811, -1000, 162, 630, -1000, + -1000, -242, 1374, -1000, -1000, -1000, -1000, -1000, -1000, 1397, + -1000, -1000, 951, -1000, -1000, -1000, 203, 11355, -1000, -1000, + -1000, 228, -1000, -1000, } var sqlPgo = [...]int{ - 0, 1823, 1820, 1401, 1818, 1816, 1815, 1813, 1811, 1810, - 1808, 1807, 1407, 133, 1806, 1801, 147, 1800, 127, 1796, - 1795, 1782, 98, 1776, 1775, 1774, 1773, 125, 49, 2660, - 176, 159, 1770, 1766, 1765, 19, 2, 138, 34, 145, - 74, 130, 109, 45, 1757, 21, 0, 1755, 1754, 106, - 15, 23, 1805, 1753, 28, 1752, 1750, 66, 1749, 33, - 54, 1743, 17, 3, 30, 1742, 1741, 13, 91, 27, - 1739, 10, 78, 1736, 92, 143, 1735, 71, 67, 158, - 14, 209, 51, 108, 1733, 16, 110, 1724, 60, 114, - 1723, 65, 1722, 111, 162, 150, 661, 26, 88, 1720, - 1718, 37, 1717, 103, 1713, 1710, 9, 1706, 160, 157, - 148, 1704, 1701, 489, 94, 50, 95, 1700, 1697, 1694, - 1693, 112, 119, 76, 1691, 77, 72, 1688, 1686, 101, - 1684, 1680, 155, 154, 1679, 1678, 135, 1676, 1673, 1670, - 1665, 1664, 146, 1663, 1661, 97, 137, 104, 58, 36, - 1658, 75, 40, 11, 140, 32, 1022, 1061, 1656, 113, - 68, 122, 79, 1654, 29, 1646, 1645, 31, 1644, 46, - 18, 1638, 139, 1637, 1636, 1632, 1631, 1630, 107, 1629, - 1626, 105, 39, 85, 93, 96, 121, 24, 57, 118, - 142, 166, 144, 1625, 1624, 1620, 153, 1619, 348, 55, - 1616, 1329, 120, 1601, 1600, 1599, 1281, 1205, 1105, 217, - 1598, 1597, 838, 808, 1595, 1592, 80, 116, 90, 1590, - 84, 167, 163, 1585, 161, 70, 42, 151, 1581, 132, - 1580, 1716, 319, 313, 41, 48, 1579, 1578, 59, 38, - 1577, 47, 4, 6, 7, 8, 5, 102, 89, 73, - 1576, 25, 149, 123, 1570, 195, 1565, 1564, 69, 1563, - 1562, 22, 1561, 20, 1560, 12, 1, 1557, 165, 1556, - 136, 1555, 1466, 1553, 164, 1544, 1531, 115, + 0, 1764, 1762, 1391, 1760, 1750, 1748, 1747, 1744, 1743, + 1739, 1737, 1399, 136, 1732, 1728, 144, 1727, 130, 1725, + 1724, 1723, 106, 1719, 1718, 1717, 1713, 128, 70, 2445, + 178, 153, 1711, 1708, 1706, 9, 5, 127, 30, 149, + 54, 125, 98, 51, 1704, 39, 0, 1703, 1701, 322, + 20, 19, 1714, 1700, 25, 1698, 1697, 59, 1693, 34, + 50, 1692, 17, 3, 36, 1690, 1688, 15, 85, 37, + 1685, 10, 140, 1681, 87, 132, 1680, 69, 143, 161, + 16, 12, 38, 102, 1678, 21, 105, 1673, 57, 112, + 1670, 68, 1669, 108, 162, 142, 592, 18, 71, 1668, + 1667, 31, 1665, 100, 1661, 1660, 22, 1659, 155, 157, + 133, 1656, 1652, 184, 95, 48, 92, 1648, 1646, 1642, + 1640, 103, 113, 80, 1639, 79, 76, 1638, 1637, 101, + 1636, 1635, 146, 154, 1633, 1631, 118, 1630, 1626, 1625, + 1624, 1621, 147, 1620, 1619, 97, 126, 104, 67, 33, + 1618, 65, 46, 11, 77, 32, 1018, 997, 1617, 110, + 73, 119, 86, 1607, 26, 1605, 1604, 24, 1602, 49, + 28, 1600, 139, 1599, 1597, 1592, 1588, 1587, 109, 1585, + 1584, 96, 40, 60, 82, 91, 116, 29, 84, 115, + 158, 166, 141, 1583, 1580, 1576, 148, 1575, 246, 55, + 1574, 1608, 111, 1573, 1571, 1570, 1554, 1323, 1246, 776, + 1569, 1567, 1218, 1215, 1566, 1565, 81, 117, 75, 1564, + 74, 160, 159, 1563, 156, 78, 47, 145, 1562, 120, + 1560, 1366, 134, 83, 42, 66, 1559, 1555, 72, 45, + 1553, 41, 2, 14, 4, 7, 6, 99, 272, 239, + 1551, 13, 150, 123, 1550, 168, 1547, 1546, 58, 1539, + 1538, 27, 1537, 23, 1535, 8, 1, 1534, 165, 1528, + 122, 1527, 1436, 1523, 163, 1521, 1502, 114, } var sqlR1 = [...]int{ @@ -4954,86 +4940,87 @@ var sqlR1 = [...]int{ 14, 14, 14, 14, 131, 79, 79, 78, 78, 82, 82, 15, 15, 15, 16, 16, 16, 16, 16, 197, 197, 196, 194, 195, 195, 195, 17, 21, 268, 268, - 268, 272, 272, 273, 273, 274, 274, 270, 270, 23, - 23, 23, 142, 142, 142, 141, 141, 141, 141, 143, - 143, 143, 143, 224, 222, 222, 229, 229, 55, 55, - 55, 55, 221, 221, 221, 221, 230, 230, 230, 230, - 230, 230, 230, 56, 56, 56, 228, 228, 144, 24, - 24, 24, 24, 24, 24, 24, 223, 223, 269, 269, - 271, 271, 11, 11, 11, 11, 57, 57, 60, 60, - 58, 58, 61, 61, 145, 145, 145, 148, 148, 146, - 150, 239, 239, 240, 240, 240, 241, 241, 241, 241, - 241, 241, 241, 236, 237, 237, 237, 238, 238, 238, - 238, 238, 235, 235, 147, 147, 147, 147, 147, 147, - 147, 147, 219, 219, 67, 67, 244, 244, 244, 244, - 168, 168, 169, 163, 163, 242, 242, 242, 242, 242, - 245, 243, 246, 246, 246, 246, 246, 59, 59, 64, - 64, 106, 106, 106, 106, 247, 12, 12, 103, 43, - 43, 43, 182, 182, 182, 152, 152, 152, 152, 152, - 26, 105, 105, 105, 10, 10, 127, 127, 128, 128, - 45, 45, 71, 71, 187, 187, 187, 51, 51, 50, - 50, 50, 35, 35, 35, 36, 36, 36, 104, 104, - 104, 80, 80, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 129, 129, 130, 130, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 276, 276, 276, 42, 42, 42, 42, 42, 41, 41, - 41, 96, 96, 9, 9, 18, 53, 53, 138, 138, - 138, 140, 140, 140, 139, 139, 139, 98, 98, 27, - 85, 85, 86, 86, 193, 87, 87, 22, 22, 29, - 29, 28, 28, 28, 28, 28, 28, 28, 28, 30, - 30, 31, 31, 31, 31, 31, 31, 31, 253, 253, - 253, 255, 255, 252, 19, 19, 19, 19, 254, 254, - 275, 275, 113, 113, 113, 65, 65, 66, 66, 69, - 69, 68, 70, 70, 186, 186, 94, 94, 94, 94, - 95, 95, 132, 132, 133, 133, 134, 134, 135, 135, - 135, 136, 136, 137, 137, 93, 93, 100, 100, 101, - 101, 102, 160, 160, 109, 109, 110, 110, 111, 111, - 108, 44, 44, 44, 107, 107, 107, 107, 112, 112, - 32, 32, 75, 75, 76, 76, 188, 188, 188, 188, - 188, 188, 188, 189, 189, 189, 189, 189, 189, 183, - 183, 183, 183, 184, 184, 185, 185, 185, 185, 185, - 116, 116, 116, 116, 114, 114, 115, 115, 190, 190, - 190, 190, 99, 99, 191, 191, 191, 161, 161, 164, - 165, 165, 166, 166, 167, 167, 153, 153, 97, 97, - 149, 198, 198, 198, 198, 198, 198, 74, 74, 74, - 199, 199, 199, 199, 199, 199, 199, 199, 200, 200, - 200, 200, 202, 202, 202, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 203, 203, 210, 210, - 211, 211, 212, 213, 204, 204, 205, 205, 206, 207, - 214, 214, 214, 217, 217, 216, 216, 208, 208, 208, - 208, 208, 209, 218, 218, 218, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 123, 123, 155, 155, 155, 155, 155, 155, 155, 155, + 268, 272, 272, 273, 273, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 270, 270, 23, 23, 23, 142, + 142, 142, 141, 141, 141, 141, 143, 143, 143, 143, + 224, 222, 222, 229, 229, 55, 55, 55, 55, 221, + 221, 221, 221, 230, 230, 230, 230, 230, 230, 230, + 56, 56, 56, 228, 228, 144, 24, 24, 24, 24, + 24, 24, 24, 223, 223, 269, 269, 271, 271, 11, + 11, 11, 11, 57, 57, 60, 60, 58, 58, 61, + 61, 145, 145, 145, 148, 148, 146, 150, 239, 239, + 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, + 236, 237, 237, 237, 238, 238, 238, 238, 238, 235, + 235, 147, 147, 147, 147, 147, 147, 147, 147, 219, + 219, 67, 67, 244, 244, 244, 244, 168, 168, 169, + 163, 163, 242, 242, 242, 242, 242, 245, 243, 246, + 246, 246, 246, 246, 59, 59, 64, 64, 106, 106, + 106, 106, 247, 12, 12, 103, 43, 43, 43, 182, + 182, 182, 152, 152, 152, 152, 152, 26, 105, 105, + 105, 10, 10, 127, 127, 128, 128, 45, 45, 71, + 71, 187, 187, 187, 51, 51, 50, 50, 50, 35, + 35, 35, 36, 36, 36, 104, 104, 104, 80, 80, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 129, + 129, 130, 130, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 276, 276, 276, + 42, 42, 42, 42, 42, 41, 41, 41, 96, 96, + 9, 9, 18, 53, 53, 138, 138, 138, 140, 140, + 140, 139, 139, 139, 98, 98, 27, 85, 85, 86, + 86, 193, 87, 87, 22, 22, 29, 29, 28, 28, + 28, 28, 28, 28, 28, 28, 30, 30, 31, 31, + 31, 31, 31, 31, 31, 253, 253, 253, 255, 255, + 252, 19, 19, 19, 19, 254, 254, 275, 275, 113, + 113, 113, 65, 65, 66, 66, 69, 69, 68, 70, + 70, 186, 186, 94, 94, 94, 94, 95, 95, 132, + 132, 133, 133, 134, 134, 135, 135, 135, 136, 136, + 137, 137, 93, 93, 100, 100, 101, 101, 102, 160, + 160, 109, 109, 110, 110, 111, 111, 108, 44, 44, + 44, 107, 107, 107, 107, 112, 112, 32, 32, 75, + 75, 76, 76, 188, 188, 188, 188, 188, 188, 188, + 189, 189, 189, 189, 189, 189, 183, 183, 183, 183, + 184, 184, 185, 185, 185, 185, 185, 116, 116, 116, + 116, 114, 114, 115, 115, 190, 190, 190, 190, 99, + 99, 191, 191, 191, 161, 161, 164, 165, 165, 166, + 166, 167, 167, 153, 153, 97, 97, 149, 198, 198, + 198, 198, 198, 198, 74, 74, 74, 199, 199, 199, + 199, 199, 199, 199, 199, 200, 200, 200, 200, 202, + 202, 202, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 203, 203, 210, 210, 211, 211, 212, + 213, 204, 204, 205, 205, 206, 207, 214, 214, 214, + 217, 217, 216, 216, 208, 208, 208, 208, 208, 209, + 218, 218, 218, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 123, 123, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 155, 155, 155, 155, 155, 155, 155, 155, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 248, 248, 248, 248, 248, 248, 248, 250, - 250, 251, 251, 249, 249, 249, 249, 249, 249, 249, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 248, + 248, 248, 248, 248, 248, 248, 250, 250, 251, 251, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 256, 256, 257, 257, 258, 258, 259, 259, 261, - 262, 262, 262, 263, 267, 267, 260, 260, 264, 264, - 264, 265, 265, 266, 266, 266, 266, 266, 172, 172, - 172, 173, 173, 174, 180, 180, 180, 54, 54, 54, + 249, 249, 249, 249, 249, 249, 249, 249, 256, 256, + 257, 257, 258, 258, 259, 259, 261, 262, 262, 262, + 263, 267, 267, 260, 260, 264, 264, 264, 265, 265, + 266, 266, 266, 266, 266, 172, 172, 172, 173, 173, + 174, 180, 180, 180, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 48, 48, 48, 81, 81, 170, 170, - 162, 162, 162, 171, 171, 117, 117, 215, 215, 215, - 215, 215, 215, 215, 215, 118, 118, 124, 119, 119, - 120, 120, 120, 120, 120, 120, 125, 126, 121, 121, - 121, 159, 159, 175, 179, 179, 178, 177, 177, 176, - 176, 154, 154, 154, 154, 154, 88, 88, 89, 89, - 277, 277, 181, 181, 90, 90, 91, 84, 84, 83, - 83, 192, 192, 192, 192, 77, 77, 52, 52, 72, - 72, 73, 73, 49, 49, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 220, 220, 220, - 46, 46, 46, 47, 47, 226, 226, 226, 227, 227, - 227, 227, 225, 225, 225, 225, 225, 231, 231, 231, + 48, 48, 48, 81, 81, 170, 170, 162, 162, 162, + 171, 171, 117, 117, 215, 215, 215, 215, 215, 215, + 215, 215, 118, 118, 124, 119, 119, 120, 120, 120, + 120, 120, 120, 125, 126, 121, 121, 121, 159, 159, + 175, 179, 179, 178, 177, 177, 176, 176, 154, 154, + 154, 154, 154, 88, 88, 89, 89, 277, 277, 181, + 181, 90, 90, 91, 84, 84, 83, 83, 192, 192, + 192, 192, 77, 77, 52, 52, 72, 72, 73, 73, + 49, 49, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 220, 220, 220, 46, 46, 46, + 47, 47, 226, 226, 226, 227, 227, 227, 227, 225, + 225, 225, 225, 225, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, @@ -5059,20 +5046,20 @@ var sqlR1 = [...]int{ 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 234, 234, 234, 234, 234, 234, 234, 234, 234, + 232, 232, 232, 232, 232, 232, 232, 232, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, - 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 234, } var sqlR2 = [...]int{ @@ -5087,85 +5074,86 @@ var sqlR2 = [...]int{ 3, 5, 3, 5, 1, 1, 3, 1, 2, 2, 3, 2, 3, 5, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 0, 6, 6, 1, 2, - 2, 1, 1, 1, 3, 1, 1, 1, 3, 2, - 3, 3, 2, 5, 1, 3, 3, 3, 3, 1, - 3, 3, 2, 1, 1, 3, 1, 1, 2, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 3, 5, - 1, 1, 1, 1, 1, 0, 1, 1, 2, 4, - 2, 4, 4, 3, 3, 2, 2, 0, 2, 0, - 2, 0, 9, 12, 8, 11, 1, 0, 3, 0, - 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, - 4, 2, 0, 3, 1, 2, 2, 1, 1, 2, - 5, 2, 5, 3, 3, 3, 0, 1, 1, 1, - 1, 1, 3, 1, 4, 4, 2, 4, 5, 3, - 6, 10, 2, 0, 3, 0, 2, 2, 2, 0, - 1, 3, 3, 4, 0, 1, 1, 2, 2, 0, - 3, 3, 2, 1, 1, 2, 2, 4, 0, 2, - 0, 3, 4, 4, 0, 3, 6, 9, 4, 2, - 3, 0, 1, 2, 1, 1, 1, 1, 1, 1, - 5, 2, 2, 0, 13, 16, 1, 0, 1, 0, - 2, 0, 1, 3, 5, 5, 7, 2, 0, 1, - 2, 0, 1, 1, 0, 2, 2, 0, 1, 4, - 5, 1, 3, 6, 6, 8, 6, 8, 8, 10, - 8, 10, 1, 0, 2, 0, 2, 3, 3, 2, - 2, 2, 2, 3, 2, 5, 4, 3, 3, 3, - 1, 1, 0, 3, 2, 2, 1, 2, 1, 3, - 2, 1, 0, 3, 6, 7, 1, 3, 1, 4, - 2, 8, 5, 0, 4, 3, 0, 2, 0, 8, - 1, 3, 1, 1, 3, 5, 5, 1, 1, 3, - 3, 1, 2, 4, 4, 2, 3, 5, 5, 1, - 1, 8, 8, 1, 2, 4, 4, 4, 2, 2, - 3, 1, 3, 6, 1, 1, 1, 1, 1, 0, - 1, 0, 1, 1, 0, 1, 5, 1, 0, 1, - 0, 3, 1, 3, 4, 3, 2, 2, 1, 1, - 1, 0, 2, 5, 2, 3, 1, 1, 1, 3, - 0, 1, 1, 1, 1, 3, 0, 1, 3, 1, - 1, 2, 2, 0, 1, 3, 1, 0, 1, 2, - 3, 1, 2, 0, 2, 4, 2, 3, 2, 0, - 2, 3, 2, 0, 1, 3, 2, 2, 3, 2, - 3, 1, 4, 3, 4, 5, 4, 5, 4, 5, - 2, 4, 1, 1, 0, 1, 4, 5, 4, 0, - 2, 2, 2, 1, 1, 0, 4, 2, 1, 2, - 2, 4, 1, 3, 1, 2, 3, 2, 6, 2, - 1, 3, 4, 0, 2, 0, 2, 0, 1, 3, - 3, 2, 3, 5, 6, 2, 3, 3, 4, 0, - 1, 1, 1, 1, 2, 4, 1, 1, 1, 1, - 1, 1, 3, 5, 0, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 1, 3, 0, 1, 1, - 1, 1, 5, 2, 1, 1, 1, 1, 5, 2, - 2, 2, 1, 1, 0, 3, 0, 1, 5, 2, - 5, 2, 1, 3, 3, 0, 1, 1, 1, 1, - 1, 1, 3, 3, 3, 3, 3, 3, 3, 0, - 1, 4, 1, 3, 3, 5, 2, 2, 2, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, - 5, 4, 6, 4, 6, 5, 7, 3, 4, 3, - 3, 4, 3, 4, 3, 4, 5, 6, 6, 7, - 6, 7, 6, 7, 3, 4, 4, 6, 2, 3, - 4, 1, 3, 2, 2, 2, 3, 3, 3, 3, + 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 2, 3, 3, 2, + 5, 1, 3, 3, 3, 3, 1, 3, 3, 2, + 1, 1, 3, 1, 1, 2, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 3, 5, 1, 1, 1, + 1, 1, 0, 1, 1, 2, 4, 2, 4, 4, + 3, 3, 2, 2, 0, 2, 0, 2, 0, 9, + 12, 8, 11, 1, 0, 3, 0, 1, 3, 1, + 3, 1, 1, 1, 1, 1, 3, 4, 2, 0, + 3, 1, 2, 2, 1, 1, 2, 5, 2, 5, + 3, 3, 3, 0, 1, 1, 1, 1, 1, 3, + 1, 4, 4, 2, 4, 5, 3, 6, 10, 2, + 0, 3, 0, 2, 2, 2, 0, 1, 3, 3, + 4, 0, 1, 1, 2, 2, 0, 3, 3, 2, + 1, 1, 2, 2, 4, 0, 2, 0, 3, 4, + 4, 0, 3, 6, 9, 4, 2, 3, 0, 1, + 2, 1, 1, 1, 1, 1, 1, 5, 2, 2, + 0, 13, 16, 1, 0, 1, 0, 2, 0, 1, + 3, 5, 5, 7, 2, 0, 1, 2, 0, 1, + 1, 0, 2, 2, 0, 1, 4, 5, 1, 3, + 6, 6, 8, 6, 8, 8, 10, 8, 10, 1, + 0, 2, 0, 2, 3, 3, 2, 2, 2, 2, + 3, 2, 5, 4, 3, 3, 3, 1, 1, 0, + 3, 2, 2, 1, 2, 1, 3, 2, 1, 0, + 3, 6, 7, 1, 3, 1, 4, 2, 8, 5, + 0, 4, 3, 0, 2, 0, 8, 1, 3, 1, + 1, 3, 5, 5, 1, 1, 3, 3, 1, 2, + 4, 4, 2, 3, 5, 5, 1, 1, 8, 8, + 1, 2, 4, 4, 4, 2, 2, 3, 1, 3, + 6, 1, 1, 1, 1, 1, 0, 1, 0, 1, + 1, 0, 1, 5, 1, 0, 1, 0, 3, 1, + 3, 4, 3, 2, 2, 1, 1, 1, 0, 2, + 5, 2, 3, 1, 1, 1, 3, 0, 1, 1, + 1, 1, 3, 0, 1, 3, 1, 1, 2, 2, + 0, 1, 3, 1, 0, 1, 2, 3, 1, 2, + 0, 2, 4, 2, 3, 2, 0, 2, 3, 2, + 0, 1, 3, 2, 2, 3, 2, 3, 1, 4, + 3, 4, 5, 4, 5, 4, 5, 2, 4, 1, + 1, 0, 1, 4, 5, 4, 0, 2, 2, 2, + 1, 1, 0, 4, 2, 1, 2, 2, 4, 1, + 3, 1, 2, 3, 2, 6, 2, 1, 3, 4, + 0, 2, 0, 2, 0, 1, 3, 3, 2, 3, + 5, 6, 2, 3, 3, 4, 0, 1, 1, 1, + 1, 2, 4, 1, 1, 1, 1, 1, 1, 3, + 5, 0, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 1, 3, 0, 1, 1, 1, 1, 5, + 2, 1, 1, 1, 1, 5, 2, 2, 2, 1, + 1, 0, 3, 0, 1, 5, 2, 5, 2, 1, + 3, 3, 0, 1, 1, 1, 1, 1, 1, 3, + 3, 3, 3, 3, 3, 3, 0, 1, 4, 1, + 3, 3, 5, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 5, 6, 6, 7, 3, 4, 1, 1, - 2, 4, 1, 1, 1, 2, 2, 2, 2, 1, - 1, 4, 3, 5, 6, 8, 6, 6, 4, 4, - 1, 1, 1, 5, 1, 1, 4, 1, 4, 1, - 4, 1, 4, 1, 1, 1, 1, 6, 4, 4, - 4, 4, 6, 5, 5, 5, 4, 6, 4, 4, - 4, 5, 0, 5, 0, 2, 0, 1, 3, 3, - 2, 2, 0, 6, 1, 0, 3, 0, 2, 2, - 0, 1, 4, 2, 2, 2, 2, 2, 4, 3, - 5, 4, 3, 5, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 2, 2, 3, 5, 4, 6, + 4, 6, 5, 7, 3, 4, 3, 3, 4, 3, + 4, 3, 4, 5, 6, 6, 7, 6, 7, 6, + 7, 3, 4, 4, 6, 2, 3, 4, 1, 3, + 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, + 6, 6, 7, 3, 4, 1, 1, 2, 4, 1, + 1, 1, 2, 2, 2, 2, 1, 1, 4, 3, + 5, 6, 8, 6, 6, 4, 4, 1, 1, 1, + 5, 1, 1, 4, 1, 4, 1, 4, 1, 4, + 1, 1, 1, 1, 6, 4, 4, 4, 4, 6, + 5, 5, 5, 4, 6, 4, 4, 4, 5, 0, + 5, 0, 2, 0, 1, 3, 3, 2, 2, 0, + 6, 1, 0, 3, 0, 2, 2, 0, 1, 4, + 2, 2, 2, 2, 2, 4, 3, 5, 4, 3, + 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 3, 1, 3, - 3, 3, 2, 1, 3, 3, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 4, 3, 2, 3, 0, - 3, 3, 2, 2, 1, 0, 2, 2, 3, 2, - 1, 1, 3, 5, 1, 2, 4, 2, 0, 1, - 0, 2, 2, 2, 3, 5, 1, 2, 0, 2, - 1, 0, 1, 1, 1, 3, 3, 1, 0, 1, - 3, 3, 2, 1, 1, 1, 3, 1, 2, 1, - 3, 3, 0, 1, 2, 1, 1, 1, 1, 1, - 6, 2, 3, 5, 1, 1, 1, 1, 2, 2, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, + 1, 1, 2, 1, 3, 1, 3, 3, 3, 2, + 1, 3, 3, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 4, 3, 2, 3, 0, 3, 3, 2, + 2, 1, 0, 2, 2, 3, 2, 1, 1, 3, + 5, 1, 2, 4, 2, 0, 1, 0, 2, 2, + 2, 3, 5, 1, 2, 0, 2, 1, 0, 1, + 1, 1, 3, 3, 1, 0, 1, 3, 3, 2, + 1, 1, 1, 3, 1, 2, 1, 3, 3, 0, + 1, 2, 1, 1, 1, 1, 1, 6, 2, 3, + 5, 1, 1, 1, 1, 2, 2, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -5205,7 +5193,7 @@ var sqlR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, } var sqlChk = [...]int{ @@ -5216,228 +5204,229 @@ var sqlChk = [...]int{ 134, 316, 321, 304, 284, 372, 89, -253, -31, -30, 430, 401, 412, 326, -32, 358, 392, 433, 116, 195, 385, -131, 103, 358, 185, -16, 396, 430, -22, -18, - -27, -13, -12, 89, -272, 25, -273, -274, 294, 406, - 103, 185, 358, -272, -142, 221, 331, 366, -143, -141, - -224, 362, 238, -78, -46, 4, -231, -233, 17, 18, - 19, 20, 21, 22, 23, 24, 26, 27, 28, 36, - 37, 39, 40, 42, 43, 44, 52, 53, 54, 55, - 56, 59, 62, 64, 65, 66, 67, 72, 73, 74, - 75, 76, 79, 80, 81, 83, 84, 85, 86, 87, - 88, 91, 92, 93, 100, 101, 102, 103, 104, 106, - 107, 110, 112, 114, 115, 116, 117, 118, 120, 121, - 122, 125, 126, 127, 128, 129, 131, 132, 133, 135, - 136, 137, 139, 140, 141, 142, 144, 145, 146, 149, - 151, 152, 154, 156, 158, 162, 163, 164, 166, 167, - 171, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 183, 184, 185, 186, 187, 188, 190, 193, 194, 195, - 196, 202, 204, 206, 207, 208, 209, 210, 213, 216, - 219, 220, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 242, 243, 246, 247, - 248, 251, 253, 254, 255, 257, 260, 261, 264, 267, - 270, 271, 272, 273, 274, 275, 276, 278, 279, 281, - 284, 285, 283, 287, 288, 289, 290, 291, 292, 293, - 294, 296, 297, 298, 299, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 313, 314, 316, 317, - 319, 320, 321, 322, 323, 324, 325, 327, 328, 329, - 330, 333, 334, 336, 337, 339, 340, 342, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 353, 356, 357, - 359, 360, 367, 369, 372, 373, 374, 375, 376, 377, - 378, 381, 382, 383, 384, 385, 388, 389, 390, 391, - 395, 397, 402, 403, 404, 405, 406, 407, 408, 409, - 45, 46, 48, 50, 60, 61, 68, 105, 108, 109, - 143, 147, 153, 168, 170, 192, 197, 198, 200, 214, - 239, 241, 244, 250, 252, 265, 269, 280, 282, 295, - 318, 335, 341, 354, 363, 368, 370, 392, 393, 72, - 104, 167, 185, 359, 362, 25, -276, 404, 366, -276, - 366, -276, 285, -276, -276, 285, -46, 221, 238, 331, - 366, 362, 321, -46, 366, -275, 358, 358, -127, 103, - 380, -30, -31, -29, -68, -69, 379, 199, 138, 263, - -28, -29, -253, -255, 298, -252, -46, -255, -66, -65, - 25, 123, 434, -190, -52, 259, -46, -91, 430, -3, - 160, 201, -191, -190, 177, -79, -78, -46, 177, -79, - 177, -16, -197, -196, -194, -227, 392, 4, -231, -233, - -232, 41, 47, 70, 78, 90, 159, 161, 191, 203, - 205, 215, 217, 240, 266, 268, 315, 338, 396, 358, - 258, 434, -46, -52, 177, -190, 177, 258, -142, 331, - -142, 62, -41, -42, 204, 294, 113, 245, 364, 415, - 160, 409, -56, 6, 111, -82, 432, 160, -269, 258, - 160, -223, 160, 409, -96, -41, -96, 6, 364, 6, - -46, 6, -99, -190, -78, 177, -103, 185, -46, 177, - -68, -69, -109, -94, -111, 155, -132, -133, -108, 218, - 150, 256, -107, -113, 25, 123, -113, -113, 52, 431, - 431, 434, -255, -73, 430, -84, -83, -192, -155, 419, - -157, 417, 418, 427, 245, 410, -172, 380, -52, -158, - 10, 430, -175, -250, -29, 143, 33, -173, -174, 170, - 318, -46, 9, 5, 6, 7, 8, -49, -200, -209, - 371, 148, 249, 57, -248, -249, 4, -231, -226, -201, - -211, -205, -208, 200, 70, 95, 97, 98, 222, 223, - 96, 99, 332, 386, 58, 147, 269, 280, 354, 368, - 370, 250, 68, 168, 214, 127, 46, 48, 50, 60, - 61, 105, 108, 109, 153, 197, 198, 252, 295, 341, - 362, 363, 393, -232, -212, -213, -206, -207, -214, -83, - 258, -91, 419, -52, 430, -88, -154, 432, 435, 428, - -90, -181, -155, 111, -191, -53, -52, 333, -46, 34, - 143, -40, 434, 55, 311, 143, 143, 431, 434, -195, - -221, -182, 371, 148, 258, -228, 5, 418, -220, -227, - 6, 9, 417, 177, -78, -268, -77, 358, 103, -52, - -274, -144, 305, 333, -39, 305, -37, 21, 27, 128, - 390, 333, 187, 243, 254, 245, 309, 143, -39, 305, - 143, -268, 62, 34, 434, -42, 216, 259, 406, 113, - -222, 111, -229, -221, -182, -222, 111, 93, -230, 6, - 4, -209, -182, 111, 221, 200, 432, -225, 4, -231, - -233, -232, -234, 25, 29, 30, 31, 32, 33, 34, - 35, 38, 51, 57, 58, 63, 69, 71, 82, 89, - 94, 95, 96, 97, 98, 99, 111, 113, 119, 123, - 124, 130, 134, 138, 148, 150, 155, 157, 160, 165, - 169, 172, 182, 189, 199, 201, 211, 212, 218, 222, - 223, 245, 249, 256, 258, 259, 262, 263, 277, 286, - 300, 312, 326, 332, 343, 355, 358, 361, 364, 365, - 371, 379, 380, 386, 387, 394, 398, 399, 400, 401, - -224, -271, 155, -268, -224, -224, 321, -46, -105, 434, - 85, 310, 430, 254, -67, 245, 34, -128, 78, 245, - -109, -94, -95, -94, -110, -109, -108, 155, 294, 385, - 243, 336, 206, -133, -132, -134, -155, 25, -137, 152, - 242, -155, -157, -112, 254, -30, -30, -30, -70, -186, - -155, -252, 34, -72, -46, -75, 160, 434, 11, 69, - 39, 417, 418, 419, 420, 421, 424, 422, 423, 425, - 413, 414, 415, 77, 13, 14, 15, 31, 262, 217, - 410, 338, 203, 45, 182, -48, 34, 4, -54, -155, - -155, -155, -155, -155, 268, -29, -89, -29, -155, -81, - -88, -29, -29, -162, 428, 430, 430, -88, 430, 6, - 6, 430, -176, -155, -256, 402, 155, 430, 430, 430, - 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, - 430, 430, 282, -217, 395, -217, -217, -202, 430, -202, - -203, 430, -202, 430, -218, 412, 403, 430, -218, 430, - -216, 61, -75, 430, -52, -154, -225, 419, -225, -155, - 434, 431, -153, 399, -138, -22, 430, 111, 34, -85, - -86, -193, -87, -52, 430, -46, -79, -78, -46, -79, - -16, -196, 5, 9, 9, 245, 430, 364, 434, -77, - -72, 364, -142, 434, 364, -146, 71, -235, -46, 82, - -147, 63, 380, 185, 286, 139, 157, -129, 82, 71, - -129, 82, 82, 227, 383, -62, 430, -52, 187, -78, - 254, -62, -52, 364, -129, 82, -190, 160, 366, -42, - -55, 294, 306, 329, 434, 6, 430, -225, -270, -46, - -46, -40, -190, 176, 176, -57, -72, -58, -46, -145, - -146, -236, -235, 217, -78, -64, 401, 143, -22, -47, - 177, -46, 143, -95, -110, 259, 206, 336, -135, -220, - 430, 418, -136, 318, 319, -44, 248, 340, -77, 434, - 387, -35, 35, 119, 430, 434, 431, -153, -76, -188, - -190, -161, 211, -29, -189, 430, -251, 319, -248, -249, - -49, -192, -198, -199, 335, -201, -210, -204, -208, -209, - 49, 360, 197, 198, 341, 46, 295, 153, 127, 109, - 108, 252, 50, -212, -213, -206, -207, 105, 363, 362, - 48, 61, 60, 393, -78, 362, -155, -155, -155, -155, + -27, -13, -12, 89, -272, 25, -273, -274, 89, 128, + 165, 326, 195, 116, 385, 294, 406, 103, 185, 358, + -272, -142, 221, 331, 366, -143, -141, -224, 362, 238, + -78, -46, 4, -231, -233, 17, 18, 19, 20, 21, + 22, 23, 24, 26, 27, 28, 36, 37, 39, 40, + 42, 43, 44, 52, 53, 54, 55, 56, 59, 62, + 64, 65, 66, 67, 72, 73, 74, 75, 76, 79, + 80, 81, 83, 84, 85, 86, 87, 88, 91, 92, + 93, 100, 101, 102, 103, 104, 106, 107, 110, 112, + 114, 115, 116, 117, 118, 120, 121, 122, 125, 126, + 127, 128, 129, 131, 132, 133, 135, 136, 137, 139, + 140, 141, 142, 144, 145, 146, 149, 151, 152, 154, + 156, 158, 162, 163, 164, 166, 167, 171, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 183, 184, 185, + 186, 187, 188, 190, 193, 194, 195, 196, 202, 204, + 206, 207, 208, 209, 210, 213, 216, 219, 220, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 242, 243, 246, 247, 248, 251, 253, + 254, 255, 257, 260, 261, 264, 267, 270, 271, 272, + 273, 274, 275, 276, 278, 279, 281, 284, 285, 283, + 287, 288, 289, 290, 291, 292, 293, 294, 296, 297, + 298, 299, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 313, 314, 316, 317, 319, 320, 321, + 322, 323, 324, 325, 327, 328, 329, 330, 333, 334, + 336, 337, 339, 340, 342, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 356, 357, 359, 360, 367, + 369, 372, 373, 374, 375, 376, 377, 378, 381, 382, + 383, 384, 385, 388, 389, 390, 391, 395, 397, 402, + 403, 404, 405, 406, 407, 408, 409, 45, 46, 48, + 50, 60, 61, 68, 105, 108, 109, 143, 147, 153, + 168, 170, 192, 197, 198, 200, 214, 239, 241, 244, + 250, 252, 265, 269, 280, 282, 295, 318, 335, 341, + 354, 363, 368, 370, 392, 393, 72, 104, 167, 185, + 359, 362, 25, -276, 404, 366, -276, 366, -276, 285, + -276, -276, 285, -46, 221, 238, 331, 366, 362, 321, + -46, 366, -275, 358, 358, -127, 103, 380, -30, -31, + -29, -68, -69, 379, 199, 138, 263, -28, -29, -253, + -255, 298, -252, -46, -255, -66, -65, 25, 123, 434, + -190, -52, 259, -46, -91, 430, -3, 160, 201, -191, + -190, 177, -79, -78, -46, 177, -79, 177, -16, -197, + -196, -194, -227, 392, 4, -231, -233, -232, 41, 47, + 70, 78, 90, 159, 161, 191, 203, 205, 215, 217, + 240, 266, 268, 315, 338, 396, 358, 258, 434, -46, + -52, 177, -190, 177, 258, -142, 331, -142, 62, -41, + -42, 204, 294, 113, 245, 364, 415, 160, 409, -56, + 6, 111, -82, 432, 160, -269, 258, 160, -223, 160, + 409, -96, -41, -96, 6, 364, 6, -46, 6, -99, + -190, -78, 177, -103, 185, -46, 177, -68, -69, -109, + -94, -111, 155, -132, -133, -108, 218, 150, 256, -107, + -113, 25, 123, -113, -113, 52, 431, 431, 434, -255, + -73, 430, -84, -83, -192, -155, 419, -157, 417, 418, + 427, 245, 410, -172, 380, -52, -158, 10, 430, -175, + -250, -29, 143, 33, -173, -174, 170, 318, -46, 9, + 5, 6, 7, 8, -49, -200, -209, 371, 148, 249, + 57, -248, -249, 4, -231, -226, -201, -211, -205, -208, + 200, 70, 95, 97, 98, 222, 223, 96, 99, 332, + 386, 58, 147, 269, 280, 354, 368, 370, 250, 68, + 168, 214, 127, 46, 48, 50, 60, 61, 105, 108, + 109, 153, 197, 198, 252, 295, 341, 362, 363, 393, + -232, -212, -213, -206, -207, -214, -83, 258, -91, 419, + -52, 430, -88, -154, 432, 435, 428, -90, -181, -155, + 111, -191, -53, -52, 333, -46, 34, 143, -40, 434, + 55, 311, 143, 143, 431, 434, -195, -221, -182, 371, + 148, 258, -228, 5, 418, -220, -227, 6, 9, 417, + 177, -78, -268, -77, 358, 103, -52, -274, -144, 305, + 333, -39, 305, -37, 21, 27, 128, 390, 333, 187, + 243, 254, 245, 309, 143, -39, 305, 143, -268, 62, + 34, 434, -42, 216, 259, 406, 113, -222, 111, -229, + -221, -182, -222, 111, 93, -230, 6, 4, -209, -182, + 111, 221, 200, 432, -225, 4, -231, -233, -232, -234, + 25, 29, 30, 31, 32, 33, 34, 35, 38, 51, + 57, 58, 63, 69, 71, 82, 89, 94, 95, 96, + 97, 98, 99, 111, 113, 119, 123, 124, 130, 134, + 138, 148, 150, 155, 157, 160, 165, 169, 172, 182, + 189, 199, 201, 211, 212, 218, 222, 223, 245, 249, + 256, 258, 259, 262, 263, 277, 286, 300, 312, 326, + 332, 343, 355, 358, 361, 364, 365, 371, 379, 380, + 386, 387, 394, 398, 399, 400, 401, -224, -271, 155, + -268, -224, -224, 321, -46, -105, 434, 85, 310, 430, + 254, -67, 245, 34, -128, 78, 245, -109, -94, -95, + -94, -110, -109, -108, 155, 294, 385, 243, 336, 206, + -133, -132, -134, -155, 25, -137, 152, 242, -155, -157, + -112, 254, -30, -30, -30, -70, -186, -155, -252, 34, + -72, -46, -75, 160, 434, 11, 69, 39, 417, 418, + 419, 420, 421, 424, 422, 423, 425, 413, 414, 415, + 77, 13, 14, 15, 31, 262, 217, 410, 338, 203, + 45, 182, -48, 34, 4, -54, -155, -155, -155, -155, + -155, 268, -29, -89, -29, -155, -81, -88, -29, -29, + -162, 428, 430, 430, -88, 430, 6, 6, 430, -176, + -155, -256, 402, 155, 430, 430, 430, 430, 430, 430, + 430, 430, 430, 430, 430, 430, 430, 430, 430, 282, + -217, 395, -217, -217, -202, 430, -202, -203, 430, -202, + 430, -218, 412, 403, 430, -218, 430, -216, 61, -75, + 430, -52, -154, -225, 419, -225, -155, 434, 431, -153, + 399, -138, -22, 430, 111, 34, -85, -86, -193, -87, + -52, 430, -46, -79, -78, -46, -79, -16, -196, 5, + 9, 9, 245, 430, 364, 434, -77, -72, 364, -142, + 434, 364, -146, 71, -235, -46, 82, -147, 63, 380, + 185, 286, 139, 157, -129, 82, 71, -129, 82, 82, + 227, 383, -62, 430, -52, 187, -78, 254, -62, -52, + 364, -129, 82, -190, 160, 366, -42, -55, 294, 306, + 329, 434, 6, 430, -225, -270, -46, -46, -40, -190, + 176, 176, -57, -72, -58, -46, -145, -146, -236, -235, + 217, -78, -64, 401, 143, -22, -47, 177, -46, 143, + -95, -110, 259, 206, 336, -135, -220, 430, 418, -136, + 318, 319, -44, 248, 340, -77, 434, 387, -35, 35, + 119, 430, 434, 431, -153, -76, -188, -190, -161, 211, + -29, -189, 430, -251, 319, -248, -249, -49, -192, -198, + -199, 335, -201, -210, -204, -208, -209, 49, 360, 197, + 198, 341, 46, 295, 153, 127, 109, 108, 252, 50, + -212, -213, -206, -207, 105, 363, 362, 48, 61, 60, + 393, -78, 362, -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, 217, 338, 45, 182, 364, - 249, 245, 371, 148, 381, 123, 254, 125, -277, 355, - 38, -159, -29, 430, -180, 32, 343, 25, -225, -172, - 318, 430, -154, 431, 434, -81, -171, 429, -155, -162, - -81, -81, 431, 431, -81, 394, 25, 123, 419, -122, - 407, 235, 106, 175, 232, -123, 324, 9, -179, -178, - 398, -257, 151, 169, 430, 9, 9, 9, 9, -155, - -117, -215, 4, 407, 235, 106, 175, 232, 324, 6, - -118, -155, -119, -156, -157, 417, 418, 427, 430, 318, - -120, -155, -81, -155, 51, 212, 365, -121, -155, 160, - -81, -155, -81, -81, -81, 430, 9, 9, 9, 362, - 362, 9, 9, 333, -153, -81, 431, 429, 436, -181, - -98, 312, -155, -140, 258, -77, 392, -46, -75, 434, - 415, -77, -40, 143, -270, -52, -46, -37, -46, -146, - -198, -46, 430, 430, -247, 387, 430, 206, -45, 387, - 206, -46, -46, 177, -46, 177, -46, -46, -92, -151, - -225, -52, -39, 305, -46, -46, -46, -39, 305, -270, - -41, 377, 76, 294, -229, -122, 9, 434, 431, 431, - 434, -52, -60, 430, -106, 258, -62, -78, -103, -43, - 401, 258, 245, -46, 385, -136, -155, 226, -186, -54, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 413, - 414, 415, 77, 13, 14, 15, -36, 411, -19, -22, - -18, -27, -13, -46, -93, 169, 434, 90, -116, 205, - 240, 161, 215, 315, 191, -184, -183, 34, -46, -185, - -183, 34, -46, -161, -29, -46, -184, -29, -189, -188, - -167, 412, 160, 430, -74, 33, -199, -122, 430, 409, - 136, -155, 364, -277, 355, -159, -155, 249, 371, 148, - 381, 123, 254, 125, 160, 430, -156, -156, -81, -29, - 430, 430, -81, -89, -155, 434, 429, 429, 434, 431, - 431, -69, 434, -68, -155, -81, -81, 431, 364, 364, - 364, 364, 430, 431, -177, -178, 130, -155, -262, 267, - 430, 430, -155, 431, 431, 431, 431, 34, 431, 160, - 431, -124, 277, 431, 11, 417, 418, 419, 420, 421, - 424, 422, 423, 425, 413, 414, 415, 77, 13, 14, - 15, 203, 182, -156, -156, -156, -81, 430, 431, -125, - -126, 160, 155, 34, -121, -121, -121, 431, 160, -81, - 434, 431, 431, 431, 9, 431, 434, 431, 431, 409, - 409, 431, 431, -46, -93, 431, -155, -83, -98, 80, - 431, -153, -86, -181, 431, -239, -147, 185, 139, -155, - -72, 185, -72, 430, -247, 430, -46, 430, -33, 128, - 333, 309, -130, 143, -40, 143, -40, 431, 434, 415, - 432, 364, 364, 364, 364, -129, 82, 431, -46, -59, - 188, -145, -237, -64, -61, -148, -150, -235, -46, 75, - 430, 254, 34, 102, 243, -52, 143, 259, 431, -36, - 152, 210, 431, -160, 172, 52, -188, 205, 205, -188, - -116, 205, -114, 266, -114, -114, -46, 430, -46, 430, - 430, -185, -184, -88, 431, 264, 430, -81, 428, 428, - -74, 33, 9, -155, -155, 136, -155, -156, -156, 136, - 160, 430, -155, -170, -198, 31, 31, 431, -155, -81, - 431, 434, 431, -155, -162, 431, 394, -69, -69, -69, - 235, 175, 232, -123, 232, -123, -123, 9, 6, 134, - -155, 361, -263, -46, 430, 399, -68, 431, -198, -155, - -125, -155, -198, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, 123, - 245, 254, 125, -156, 434, -81, 431, -126, -125, -155, - -155, -198, 431, 431, 431, -81, -155, 431, 9, -218, - -218, -216, -160, 429, -139, 430, 258, -22, -98, 415, - -240, 82, -241, 69, 245, 249, 380, 286, 63, 111, - 300, 431, 431, -46, 431, -72, -168, -169, -187, -46, - -251, 430, -72, 245, 111, 245, 349, -62, 111, 102, - -62, 374, -46, -46, -151, -152, -104, -234, -54, -182, - 6, -198, -226, 335, 417, 418, 4, -231, 360, -225, - -46, -46, -46, -46, -46, -46, 6, -64, 430, 183, - 140, -106, 431, 434, 401, 128, 116, 283, -57, -78, - -22, 102, -45, -46, -258, 400, -155, -100, -101, -155, - -102, 430, -188, -188, -115, 387, 258, 205, -188, 430, - -72, 430, -97, -149, -46, -97, -46, -183, -165, -164, - -251, -69, 429, 9, 9, 428, 431, -155, 136, 31, - 31, -155, -155, -170, 431, 434, -155, -155, 431, 431, - -155, 6, -155, 431, 431, 431, 431, -155, -267, -46, - -155, 431, 431, -126, 160, 123, 254, 125, 430, -155, - 431, 431, 431, 431, -258, 124, -71, -187, 82, -91, - -29, 430, -46, -78, 249, 206, 430, -156, -52, 431, - 431, 434, 401, -51, 69, -51, -155, 431, 249, 249, - -220, -155, -198, -40, -40, -82, -226, 415, 364, 364, - -106, -77, -238, 112, 83, 186, 74, 25, -238, -148, - 261, 319, 319, 431, -60, -43, 430, 258, -259, -261, - -46, 434, 431, -115, 430, -155, -188, -72, 431, -97, - 431, 434, -198, 431, 431, 434, -166, 34, 431, 429, - 429, 9, -155, -155, -155, 431, -198, 431, -69, -260, - 274, 431, -156, 160, 430, -170, 431, 385, 246, 434, - 431, -46, -241, -155, -67, -163, 399, -169, -80, -54, - -46, -50, -78, 387, -78, -50, 431, 300, -38, 69, - 421, -82, -152, -46, -46, 431, -239, -59, -64, -71, - -52, 434, 34, -101, -72, 431, 431, -149, -38, -167, - -164, 430, 429, 431, -69, 52, -156, -170, 431, 333, - -187, -153, 431, -244, 229, 430, 432, -35, -78, -35, - -51, -52, -34, 387, -78, 374, 421, -64, -106, 431, - -45, -261, -263, 431, -97, -264, 293, 319, -81, 431, - -85, -219, 243, -242, -245, -243, 258, 161, 273, 339, - -155, -80, -36, -36, -50, -67, -155, 374, -106, -63, - 401, 430, 431, 431, -265, -266, 45, 376, 93, -155, - -265, -153, 187, -243, 258, -245, 258, 385, 116, 431, - -35, -244, -153, -62, -71, -266, 281, 154, 318, 281, - 154, -246, 243, 311, 55, 333, -246, -36, -242, 431, - 31, 20, 249, 111, -63, -266, -153, + -155, -155, 217, 338, 45, 182, 364, 249, 245, 371, + 148, 381, 123, 254, 125, -277, 355, 38, -159, -29, + 430, -180, 32, 343, 25, -225, -172, 318, 430, -154, + 431, 434, -81, -171, 429, -155, -162, -81, -81, 431, + 431, -81, 394, 25, 123, 419, -122, 407, 235, 106, + 175, 232, -123, 324, 9, -179, -178, 398, -257, 151, + 169, 430, 9, 9, 9, 9, -155, -117, -215, 4, + 407, 235, 106, 175, 232, 324, 6, -118, -155, -119, + -156, -157, 417, 418, 427, 430, 318, -120, -155, -81, + -155, 51, 212, 365, -121, -155, 160, -81, -155, -81, + -81, -81, 430, 9, 9, 9, 362, 362, 9, 9, + 333, -153, -81, 431, 429, 436, -181, -98, 312, -155, + -140, 258, -77, 392, -46, -75, 434, 415, -77, -40, + 143, -270, -52, -46, -37, -46, -146, -198, -46, 430, + 430, -247, 387, 430, 206, -45, 387, 206, -46, -46, + 177, -46, 177, -46, -46, -92, -151, -225, -52, -39, + 305, -46, -46, -46, -39, 305, -270, -41, 377, 76, + 294, -229, -122, 9, 434, 431, 431, 434, -52, -60, + 430, -106, 258, -62, -78, -103, -43, 401, 258, 245, + -46, 385, -136, -155, 226, -186, -54, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 413, 414, 415, 77, + 13, 14, 15, -36, 411, -19, -22, -18, -27, -13, + -46, -93, 169, 434, 90, -116, 205, 240, 161, 215, + 315, 191, -184, -183, 34, -46, -185, -183, 34, -46, + -161, -29, -46, -184, -29, -189, -188, -167, 412, 160, + 430, -74, 33, -199, -122, 430, 409, 136, -155, 364, + -277, 355, -159, -155, 249, 371, 148, 381, 123, 254, + 125, 160, 430, -156, -156, -81, -29, 430, 430, -81, + -89, -155, 434, 429, 429, 434, 431, 431, -69, 434, + -68, -155, -81, -81, 431, 364, 364, 364, 364, 430, + 431, -177, -178, 130, -155, -262, 267, 430, 430, -155, + 431, 431, 431, 431, 34, 431, 160, 431, -124, 277, + 431, 11, 417, 418, 419, 420, 421, 424, 422, 423, + 425, 413, 414, 415, 77, 13, 14, 15, 203, 182, + -156, -156, -156, -81, 430, 431, -125, -126, 160, 155, + 34, -121, -121, -121, 431, 160, -81, 434, 431, 431, + 431, 9, 431, 434, 431, 431, 409, 409, 431, 431, + -46, -93, 431, -155, -83, -98, 80, 431, -153, -86, + -181, 431, -239, -147, 185, 139, -155, -72, 185, -72, + 430, -247, 430, -46, 430, -33, 128, 333, 309, -130, + 143, -40, 143, -40, 431, 434, 415, 432, 364, 364, + 364, 364, -129, 82, 431, -46, -59, 188, -145, -237, + -64, -61, -148, -150, -235, -46, 75, 430, 254, 34, + 102, 243, -52, 143, 259, 431, -36, 152, 210, 431, + -160, 172, 52, -188, 205, 205, -188, -116, 205, -114, + 266, -114, -114, -46, 430, -46, 430, 430, -185, -184, + -88, 431, 264, 430, -81, 428, 428, -74, 33, 9, + -155, -155, 136, -155, -156, -156, 136, 160, 430, -155, + -170, -198, 31, 31, 431, -155, -81, 431, 434, 431, + -155, -162, 431, 394, -69, -69, -69, 235, 175, 232, + -123, 232, -123, -123, 9, 6, 134, -155, 361, -263, + -46, 430, 399, -68, 431, -198, -155, -125, -155, -198, + -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, + -156, -156, -156, -156, -156, -156, 123, 245, 254, 125, + -156, 434, -81, 431, -126, -125, -155, -155, -198, 431, + 431, 431, -81, -155, 431, 9, -218, -218, -216, -160, + 429, -139, 430, 258, -22, -98, 415, -240, 82, -241, + 69, 245, 249, 380, 286, 63, 111, 300, 431, 431, + -46, 431, -72, -168, -169, -187, -46, -251, 430, -72, + 245, 111, 245, 349, -62, 111, 102, -62, 374, -46, + -46, -151, -152, -104, -234, -54, -182, 6, -198, -226, + 335, 417, 418, 4, -231, 360, -225, -46, -46, -46, + -46, -46, -46, 6, -64, 430, 183, 140, -106, 431, + 434, 401, 128, 116, 283, -57, -78, -22, 102, -45, + -46, -258, 400, -155, -100, -101, -155, -102, 430, -188, + -188, -115, 387, 258, 205, -188, 430, -72, 430, -97, + -149, -46, -97, -46, -183, -165, -164, -251, -69, 429, + 9, 9, 428, 431, -155, 136, 31, 31, -155, -155, + -170, 431, 434, -155, -155, 431, 431, -155, 6, -155, + 431, 431, 431, 431, -155, -267, -46, -155, 431, 431, + -126, 160, 123, 254, 125, 430, -155, 431, 431, 431, + 431, -258, 124, -71, -187, 82, -91, -29, 430, -46, + -78, 249, 206, 430, -156, -52, 431, 431, 434, 401, + -51, 69, -51, -155, 431, 249, 249, -220, -155, -198, + -40, -40, -82, -226, 415, 364, 364, -106, -77, -238, + 112, 83, 186, 74, 25, -238, -148, 261, 319, 319, + 431, -60, -43, 430, 258, -259, -261, -46, 434, 431, + -115, 430, -155, -188, -72, 431, -97, 431, 434, -198, + 431, 431, 434, -166, 34, 431, 429, 429, 9, -155, + -155, -155, 431, -198, 431, -69, -260, 274, 431, -156, + 160, 430, -170, 431, 385, 246, 434, 431, -46, -241, + -155, -67, -163, 399, -169, -80, -54, -46, -50, -78, + 387, -78, -50, 431, 300, -38, 69, 421, -82, -152, + -46, -46, 431, -239, -59, -64, -71, -52, 434, 34, + -101, -72, 431, 431, -149, -38, -167, -164, 430, 429, + 431, -69, 52, -156, -170, 431, 333, -187, -153, 431, + -244, 229, 430, 432, -35, -78, -35, -51, -52, -34, + 387, -78, 374, 421, -64, -106, 431, -45, -261, -263, + 431, -97, -264, 293, 319, -81, 431, -85, -219, 243, + -242, -245, -243, 258, 161, 273, 339, -155, -80, -36, + -36, -50, -67, -155, 374, -106, -63, 401, 430, 431, + 431, -265, -266, 45, 376, 93, -155, -265, -153, 187, + -243, 258, -245, 258, 385, 116, 431, -35, -244, -153, + -62, -71, -266, 281, 154, 318, 281, 154, -246, 243, + 311, 55, 333, -246, -36, -242, 431, 31, 20, 249, + 111, -63, -266, -153, } var sqlDef = [...]int{ -2, -2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, - 21, 22, 73, 74, 75, 76, 0, 0, 399, 0, - 0, 0, 367, -2, 0, 0, 332, 332, 0, 332, - 332, 332, 0, 0, 0, 401, 277, 398, -2, 410, - 0, 0, 0, 408, 383, 0, 0, -2, 0, 0, - 0, 0, 0, 0, 84, 91, 399, 0, 94, 95, + 21, 22, 73, 74, 75, 76, 0, 0, 406, 0, + 0, 0, 374, -2, 0, 0, 339, 339, 0, 339, + 339, 339, 0, 0, 0, 408, 284, 405, -2, 417, + 0, 0, 0, 415, 390, 0, 0, -2, 0, 0, + 0, 0, 0, 0, 84, 91, 406, 0, 94, 95, 96, 97, 98, 0, 0, 111, 112, 113, 115, 116, - 0, 0, 0, 0, 119, 1031, 1112, 1134, 124, 129, - 0, 1197, -2, 133, 87, 890, 891, 892, 907, 908, - 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, + 117, 118, 119, 120, 121, 122, 123, 0, 0, 0, + 0, 126, 1038, 1119, 1141, 131, 136, 0, 1204, -2, + 140, 87, 897, 898, 899, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, @@ -5449,61 +5438,61 @@ var sqlDef = [...]int{ 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, - 1029, 1030, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, - 1040, 1041, 1042, 1043, 1044, 1045, 1047, 1048, 1049, 1050, - 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, + 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1039, + 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, + 1050, 1051, 1052, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, - 1111, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, + 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, - 1132, 1133, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, + 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, - 1193, 1194, 1195, 1196, 1198, 1199, 1200, 1201, 1202, 0, - 160, 169, 0, 167, 0, 165, 316, 330, 331, 342, - 342, 319, 0, 320, 321, 0, 322, 1031, 1046, 1112, - 1134, 1197, 1103, 324, 0, 0, 400, 0, 0, 0, - 276, -2, 379, 380, -2, 0, 404, 404, 404, 0, - 0, 380, 0, 388, 1084, 391, 872, 389, 858, 0, - 407, 405, 0, 384, 498, 0, 867, 460, 0, 2, - 0, 0, 0, 504, 1004, 59, 85, 80, 1004, 82, - 1004, 92, 0, 99, 105, 102, 1201, 898, 899, 900, - 901, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, - 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 0, - 0, 0, 23, 0, 1004, 0, 1004, 0, 120, 1112, - 121, 931, 122, 338, 0, 0, 336, 0, 0, 0, - 0, 0, 132, 153, 154, 88, 0, 0, 171, 0, - 0, 163, 0, 164, 317, 341, 318, 328, 0, 329, - 323, 327, 273, 502, 225, 1004, 0, 279, 343, 1004, - -2, 0, 421, 447, 444, 0, 418, 419, 448, 0, - 0, 0, 459, 0, 402, 403, 0, 0, 0, 369, - 370, 0, 390, 0, 0, 463, 857, 859, 863, 864, - 602, 0, 0, 0, 0, 0, 0, 0, 688, 689, - 848, 0, 692, 693, 694, 1173, 0, 699, 700, 1177, - 1193, 867, 875, 876, 877, 878, 879, 0, 0, 0, - 884, 885, 886, 840, 742, 710, -2, -2, 873, 538, - 539, 540, 541, -2, 1205, 714, 715, 717, 719, 721, - 723, 724, 725, 726, 0, 1174, 1189, 1190, 1196, 1199, - 1200, 1186, 1169, 1176, 1182, 972, -2, -2, -2, -2, + 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, + 1203, 1205, 1206, 1207, 1208, 1209, 0, 167, 176, 0, + 174, 0, 172, 323, 337, 338, 349, 349, 326, 0, + 327, 328, 0, 329, 1038, 1053, 1119, 1141, 1204, 1110, + 331, 0, 0, 407, 0, 0, 0, 283, -2, 386, + 387, -2, 0, 411, 411, 411, 0, 0, 387, 0, + 395, 1091, 398, 879, 396, 865, 0, 414, 412, 0, + 391, 505, 0, 874, 467, 0, 2, 0, 0, 0, + 511, 1011, 59, 85, 80, 1011, 82, 1011, 92, 0, + 99, 105, 102, 1208, 905, 906, 907, 908, 1210, 1211, + 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, + 1222, 1223, 1224, 1225, 1226, 1227, 0, 0, 0, 23, + 0, 1011, 0, 1011, 0, 127, 1119, 128, 938, 129, + 345, 0, 0, 343, 0, 0, 0, 0, 0, 139, + 160, 161, 88, 0, 0, 178, 0, 0, 170, 0, + 171, 324, 348, 325, 335, 0, 336, 330, 334, 280, + 509, 232, 1011, 0, 286, 350, 1011, -2, 0, 428, + 454, 451, 0, 425, 426, 455, 0, 0, 0, 466, + 0, 409, 410, 0, 0, 0, 376, 377, 0, 397, + 0, 0, 470, 864, 866, 870, 871, 609, 0, 0, + 0, 0, 0, 0, 0, 695, 696, 855, 0, 699, + 700, 701, 1180, 0, 706, 707, 1184, 1200, 874, 882, + 883, 884, 885, 886, 0, 0, 0, 891, 892, 893, + 847, 749, 717, -2, -2, 880, 545, 546, 547, 548, + -2, 1212, 721, 722, 724, 726, 728, 730, 731, 732, + 733, 0, 1181, 1196, 1197, 1203, 1206, 1207, 1193, 1176, + 1183, 1189, 979, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, 897, 560, 561, 566, 567, 576, 463, - 0, 461, 499, 500, 0, 868, 846, 0, 0, 0, - 0, 854, 852, 853, 517, 0, 346, 0, 505, 0, - 0, 79, 0, 57, 58, 0, 0, 399, 0, 101, - 103, 104, 142, 143, 144, 145, 262, 0, 264, 156, - 157, 887, 0, 1004, 225, 0, 108, 0, 956, 865, - 114, 24, 0, 0, 25, 0, 29, 0, 313, 313, - 0, 0, 0, 0, 0, 0, 0, 0, 27, 313, - 0, 0, 0, 0, 0, 340, 0, 334, 335, 337, - 125, 127, 134, 136, 137, 126, 128, 130, 131, 146, - 147, 0, 150, 151, 152, 582, 0, 89, 902, 903, - 904, 905, 906, 1221, 1222, 1223, 1224, 1225, 1226, 1227, + 904, 567, 568, 573, 574, 583, 470, 0, 468, 506, + 507, 0, 875, 853, 0, 0, 0, 0, 861, 859, + 860, 524, 0, 353, 0, 512, 0, 0, 79, 0, + 57, 58, 0, 0, 406, 0, 101, 103, 104, 149, + 150, 151, 152, 269, 0, 271, 163, 164, 894, 0, + 1011, 232, 0, 108, 0, 963, 872, 114, 24, 0, + 0, 25, 0, 29, 0, 320, 320, 0, 0, 0, + 0, 0, 0, 0, 0, 27, 320, 0, 0, 0, + 0, 0, 347, 0, 341, 342, 344, 132, 134, 141, + 143, 144, 133, 135, 137, 138, 153, 154, 0, 157, + 158, 159, 589, 0, 89, 909, 910, 911, 912, 913, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, @@ -5511,137 +5500,138 @@ var sqlDef = [...]int{ 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, - 159, 161, 0, 168, 162, 166, 1103, 326, 59, 0, - 0, 0, 177, 0, 250, 0, 0, 894, 278, 0, - 421, 447, 373, 420, 374, 446, 449, 0, 0, 454, - 0, 456, 0, 416, 417, 422, 426, 427, 430, 433, - 434, 424, 602, 453, 0, 385, 386, 387, 411, 412, - 294, 392, 0, 0, 869, 517, 0, 0, 0, 0, - 0, 777, 778, 779, 780, 781, 784, 782, 783, 785, - 786, 787, 788, 789, 790, 791, 792, 0, 0, 794, - 0, 0, 0, 851, 0, 0, 0, 862, 793, 606, - 607, 608, 627, 628, 0, 658, 690, -2, 796, 0, - 695, 696, 697, 698, 0, 0, 0, -2, 0, 881, - 599, 0, 0, 839, 744, 0, 0, 0, 0, 0, - 0, 0, 806, 0, 819, 825, 0, 0, 0, 0, - 0, 0, 551, 563, 573, 571, 570, 553, 0, 552, - 550, 0, 554, 0, 581, 0, 0, 0, 579, 0, - 569, 0, 517, 0, 0, 847, 841, 842, 843, 0, - 0, 856, 358, 0, 353, 348, 0, 0, 0, 463, - 360, 362, 363, 0, 0, 506, 59, 86, 81, 83, - 93, 100, 263, 889, 888, 0, 0, 0, 0, 109, - 110, 0, 158, 0, 0, 31, 0, 42, 0, 0, - 213, 0, 0, 1011, 0, -2, 0, 0, 0, 312, - 0, 0, 0, 47, 48, 53, 0, 49, 0, 51, - 52, 54, 0, 0, 0, 0, 0, 0, 0, 339, - 333, 0, 0, 141, 0, 599, 0, 90, 170, 117, - 325, 270, 503, 271, 272, 0, 0, 176, 869, 180, - 184, 185, 186, 0, 179, 254, 0, 0, 261, 0, - 1004, 893, 0, 377, 378, 445, 0, 457, 0, 428, - 0, 0, 425, 431, 432, 450, 451, 0, 458, 0, - 0, 297, 292, 293, 399, 0, 871, 436, 462, 464, - 484, 489, 0, 484, 471, 0, 515, 1101, 711, 712, - 0, 860, 603, 529, 0, 530, 531, 532, 533, 599, - 536, 537, 545, 546, 547, 548, 549, 557, 0, 544, - 544, 544, 555, 558, 559, 564, 565, 577, 585, 585, - 574, 574, 574, 572, 604, 0, 609, 610, 611, 612, - 613, 614, 615, 616, 617, -2, -2, -2, 621, -2, - -2, -2, 625, 626, -2, 795, 0, 851, 0, 0, - 637, 0, 640, 642, 644, 0, 0, 659, 0, 0, - 850, 654, 831, 0, 0, 774, 775, 776, 861, 639, - 0, 0, 849, 848, 0, 0, 0, 802, 796, 803, - 0, 0, -2, 702, 410, 0, 0, 0, 0, 882, - 586, 587, 588, 589, 590, 591, 600, 0, 838, 834, - 0, 752, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 807, 808, 809, 810, 811, 812, 813, 814, - 0, 0, 0, 0, 661, 0, 0, 0, 0, 1193, - 0, 796, 824, 0, 0, 0, 0, 0, 796, 0, - 830, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 436, 0, 501, 844, 0, 855, - 77, 0, 516, 358, 0, 0, 350, 347, 517, 0, - 0, 0, 78, 0, 106, 866, 303, 30, 306, 32, - 192, 0, 0, 0, 216, 0, 0, 0, 0, 0, - 0, 315, 43, 1004, 59, 1004, 59, 44, 0, 67, - 70, 50, 26, 0, 304, 0, 0, 28, 313, 107, - 123, 138, 139, 140, 135, 148, 0, 0, 248, 224, - 0, 206, 250, 0, 258, 0, 249, 225, 0, 256, - 0, 0, 0, 344, 455, 0, 0, 452, 413, 297, - 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 415, 0, 0, 394, - 395, 396, 397, 870, 443, 0, 0, 0, 0, 0, - 0, 495, 495, 495, 493, 466, 483, 0, 482, 467, - 485, 0, 482, 489, 484, 0, 469, -2, 471, 0, - 507, 0, 0, 0, 521, 525, 529, 534, 0, 0, - 0, -2, 0, 0, 0, 655, -2, 638, 641, 643, - 645, 0, 0, 660, 0, 0, 0, 0, 0, 656, - 0, 0, 0, 691, 797, 0, 800, 801, 0, 701, - -2, 0, 0, 409, 410, 410, 410, 708, 0, 0, - 0, 0, 0, 0, 0, 835, 0, 0, 709, 0, - 0, 0, 0, 716, 718, 720, 722, 0, 728, 0, - 729, 0, 0, 730, 0, 0, 0, 0, 0, 0, + 1298, 1299, 1300, 1301, 1302, 1303, 1304, 166, 168, 0, + 175, 169, 173, 1110, 333, 59, 0, 0, 0, 184, + 0, 257, 0, 0, 901, 285, 0, 428, 454, 380, + 427, 381, 453, 456, 0, 0, 461, 0, 463, 0, + 423, 424, 429, 433, 434, 437, 440, 441, 431, 609, + 460, 0, 392, 393, 394, 418, 419, 301, 399, 0, + 0, 876, 524, 0, 0, 0, 0, 0, 784, 785, + 786, 787, 788, 791, 789, 790, 792, 793, 794, 795, + 796, 797, 798, 799, 0, 0, 801, 0, 0, 0, + 858, 0, 0, 0, 869, 800, 613, 614, 615, 634, + 635, 0, 665, 697, -2, 803, 0, 702, 703, 704, + 705, 0, 0, 0, -2, 0, 888, 606, 0, 0, + 846, 751, 0, 0, 0, 0, 0, 0, 0, 813, + 0, 826, 832, 0, 0, 0, 0, 0, 0, 558, + 570, 580, 578, 577, 560, 0, 559, 557, 0, 561, + 0, 588, 0, 0, 0, 586, 0, 576, 0, 524, + 0, 0, 854, 848, 849, 850, 0, 0, 863, 365, + 0, 360, 355, 0, 0, 0, 470, 367, 369, 370, + 0, 0, 513, 59, 86, 81, 83, 93, 100, 270, + 896, 895, 0, 0, 0, 0, 109, 110, 0, 165, + 0, 0, 31, 0, 42, 0, 0, 220, 0, 0, + 1018, 0, -2, 0, 0, 0, 319, 0, 0, 0, + 47, 48, 53, 0, 49, 0, 51, 52, 54, 0, + 0, 0, 0, 0, 0, 0, 346, 340, 0, 0, + 148, 0, 606, 0, 90, 177, 124, 332, 277, 510, + 278, 279, 0, 0, 183, 876, 187, 191, 192, 193, + 0, 186, 261, 0, 0, 268, 0, 1011, 900, 0, + 384, 385, 452, 0, 464, 0, 435, 0, 0, 432, + 438, 439, 457, 458, 0, 465, 0, 0, 304, 299, + 300, 406, 0, 878, 443, 469, 471, 491, 496, 0, + 491, 478, 0, 522, 1108, 718, 719, 0, 867, 610, + 536, 0, 537, 538, 539, 540, 606, 543, 544, 552, + 553, 554, 555, 556, 564, 0, 551, 551, 551, 562, + 565, 566, 571, 572, 584, 592, 592, 581, 581, 581, + 579, 611, 0, 616, 617, 618, 619, 620, 621, 622, + 623, 624, -2, -2, -2, 628, -2, -2, -2, 632, + 633, -2, 802, 0, 858, 0, 0, 644, 0, 647, + 649, 651, 0, 0, 666, 0, 0, 857, 661, 838, + 0, 0, 781, 782, 783, 868, 646, 0, 0, 856, + 855, 0, 0, 0, 809, 803, 810, 0, 0, -2, + 709, 417, 0, 0, 0, 0, 889, 593, 594, 595, + 596, 597, 598, 607, 0, 845, 841, 0, 759, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 814, + 815, 816, 817, 818, 819, 820, 821, 0, 0, 0, + 0, 668, 0, 0, 0, 0, 1200, 0, 803, 831, + 0, 0, 0, 0, 0, 803, 0, 837, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 443, 0, 508, 851, 0, 862, 77, 0, 523, + 365, 0, 0, 357, 354, 524, 0, 0, 0, 78, + 0, 106, 873, 310, 30, 313, 32, 199, 0, 0, + 0, 223, 0, 0, 0, 0, 0, 0, 322, 43, + 1011, 59, 1011, 59, 44, 0, 67, 70, 50, 26, + 0, 311, 0, 0, 28, 320, 107, 130, 145, 146, + 147, 142, 155, 0, 0, 255, 231, 0, 213, 257, + 0, 265, 0, 256, 232, 0, 263, 0, 0, 0, + 351, 462, 0, 0, 459, 420, 304, 784, 785, 786, + 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, + 797, 798, 799, 422, 0, 0, 401, 402, 403, 404, + 877, 450, 0, 0, 0, 0, 0, 0, 502, 502, + 502, 500, 473, 490, 0, 489, 474, 492, 0, 489, + 496, 491, 0, 476, -2, 478, 0, 514, 0, 0, + 0, 528, 532, 536, 541, 0, 0, 0, -2, 0, + 0, 0, 662, -2, 645, 648, 650, 652, 0, 0, + 667, 0, 0, 0, 0, 0, 663, 0, 0, 0, + 698, 804, 0, 807, 808, 0, 708, -2, 0, 0, + 416, 417, 417, 417, 715, 0, 0, 0, 0, 0, + 0, 0, 842, 0, 0, 716, 0, 0, 0, 0, + 723, 725, 727, 729, 0, 735, 0, 736, 0, 0, + 737, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 663, 664, 665, 0, 0, 731, 822, - 823, 0, 0, 0, 0, 0, 0, 736, 0, 829, - 0, 738, 739, 740, 0, 542, 0, 556, 585, 583, - 584, 585, 576, 575, 443, 406, 0, 357, 345, 356, - 0, 358, 361, 364, 0, 189, 212, 0, 281, 0, - 0, 0, 0, 0, 219, 0, 280, 0, 33, 0, - 0, 0, 0, 0, 40, 0, 46, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 118, 250, - 0, 181, 203, 254, 0, 182, 187, 188, 0, 0, - 177, 0, 0, 259, 0, 281, 0, 423, 429, 414, - 295, 296, 393, 746, 0, 0, 465, 0, 0, 0, - 0, 0, 490, 494, 491, 492, 480, 0, 480, 0, - 0, 468, 470, 874, 473, 514, 0, 410, 0, 0, - 522, 526, 0, 605, -2, 0, -2, 0, 0, 0, - 0, 0, -2, 0, 798, 0, 0, 832, 0, 0, - 769, 0, -2, 797, 804, 703, 0, 0, 0, 0, - 592, 593, 594, 595, 596, 597, 598, 0, 883, 833, - 837, 0, 750, 751, 755, 0, 0, 713, 0, 805, - 816, 817, 662, 666, 667, 668, 669, 670, 671, 672, - 673, 674, -2, -2, -2, 678, -2, -2, -2, 0, - 0, 0, 686, 818, 0, 0, 772, 820, 821, 826, - 827, 0, 733, 734, 735, 828, 0, 562, 0, 580, - 578, 568, 746, 845, 0, 0, 0, 349, 359, 0, - 191, 0, 194, 0, 0, 197, 198, 0, 0, 0, - 0, 214, 215, 255, 217, 0, 0, 230, 0, 288, - 288, 0, 0, 0, 56, 0, 0, 37, 0, 314, - 38, 0, 59, 59, 68, 69, 265, 266, 267, 268, - 269, 298, 0, 0, 777, 778, 895, 896, -2, 72, - 307, 308, 310, 305, 0, 0, 149, 254, 0, 0, - 0, 174, 178, 0, 0, 251, 0, 0, 0, 179, - 261, 260, 0, 0, 381, 0, 442, 435, 437, 439, - 440, 0, 474, 0, 476, 0, 0, 0, 478, 0, - 0, 0, 0, 518, 0, 0, 869, 472, 0, 510, - 513, 0, 527, 0, 0, 0, 535, -2, 0, 0, - 0, -2, -2, 0, 648, 0, -2, -2, 657, 768, - 797, 880, 410, 704, 706, 707, 601, 836, 757, 754, - 0, 741, 727, 815, 0, 0, 0, 687, 0, 797, - 771, 732, 737, 543, 382, 0, 0, 282, 0, 365, - 366, 0, 0, 195, 196, 199, 0, 201, 225, 218, - 234, 0, 0, 291, 0, 291, 0, 0, 34, 35, - 36, 55, 61, 39, 45, 0, 0, 0, 0, 0, - 172, 0, 204, 207, 208, 209, 210, 211, 205, 183, - 192, 252, 253, 248, 250, 257, 0, 0, 745, 747, - 0, 0, 441, 475, 0, 497, 477, 0, 481, 0, - 486, 0, 61, 488, 515, 0, 509, 0, 703, 528, - 523, 0, -2, -2, -2, 649, 799, 770, 0, 410, - 0, 743, -2, 0, 0, 0, 773, 0, 352, 0, - 517, 355, 193, 0, 229, 220, 0, 231, 232, 301, - 0, 294, 289, 0, 287, 294, 288, 0, 63, 0, - 0, 0, 71, 309, 311, 247, 190, 250, 254, 0, - 281, 0, 0, 438, 0, 479, 487, 519, 520, 508, - 511, 0, 524, 705, 760, 0, -2, 0, 684, 0, - 283, 354, 223, 239, 0, 0, 0, 297, 290, 297, - 291, 225, 41, 0, 60, 299, 0, 254, 175, 66, - 0, 748, 749, 496, 0, 0, 0, 0, 756, 685, - 517, 200, 0, 202, 235, 236, 0, 226, 227, 228, - 0, 302, 284, 285, 294, 229, 62, 300, 173, 517, - 0, 0, 512, 753, 758, 761, -2, 1141, 952, 0, - 759, 351, 222, 237, 0, 238, 0, 0, 0, 233, - 297, 239, 274, 65, 0, 0, 763, 764, 765, 766, - 767, 240, 0, 243, 244, 0, 241, 286, 221, 66, - 0, 242, 245, 246, 517, 762, 275, + 670, 671, 672, 0, 0, 738, 829, 830, 0, 0, + 0, 0, 0, 0, 743, 0, 836, 0, 745, 746, + 747, 0, 549, 0, 563, 592, 590, 591, 592, 583, + 582, 450, 413, 0, 364, 352, 363, 0, 365, 368, + 371, 0, 196, 219, 0, 288, 0, 0, 0, 0, + 0, 226, 0, 287, 0, 33, 0, 0, 0, 0, + 0, 40, 0, 46, 64, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 125, 257, 0, 188, 210, + 261, 0, 189, 194, 195, 0, 0, 184, 0, 0, + 266, 0, 288, 0, 430, 436, 421, 302, 303, 400, + 753, 0, 0, 472, 0, 0, 0, 0, 0, 497, + 501, 498, 499, 487, 0, 487, 0, 0, 475, 477, + 881, 480, 521, 0, 417, 0, 0, 529, 533, 0, + 612, -2, 0, -2, 0, 0, 0, 0, 0, -2, + 0, 805, 0, 0, 839, 0, 0, 776, 0, -2, + 804, 811, 710, 0, 0, 0, 0, 599, 600, 601, + 602, 603, 604, 605, 0, 890, 840, 844, 0, 757, + 758, 762, 0, 0, 720, 0, 812, 823, 824, 669, + 673, 674, 675, 676, 677, 678, 679, 680, 681, -2, + -2, -2, 685, -2, -2, -2, 0, 0, 0, 693, + 825, 0, 0, 779, 827, 828, 833, 834, 0, 740, + 741, 742, 835, 0, 569, 0, 587, 585, 575, 753, + 852, 0, 0, 0, 356, 366, 0, 198, 0, 201, + 0, 0, 204, 205, 0, 0, 0, 0, 221, 222, + 262, 224, 0, 0, 237, 0, 295, 295, 0, 0, + 0, 56, 0, 0, 37, 0, 321, 38, 0, 59, + 59, 68, 69, 272, 273, 274, 275, 276, 305, 0, + 0, 784, 785, 902, 903, -2, 72, 314, 315, 317, + 312, 0, 0, 156, 261, 0, 0, 0, 181, 185, + 0, 0, 258, 0, 0, 0, 186, 268, 267, 0, + 0, 388, 0, 449, 442, 444, 446, 447, 0, 481, + 0, 483, 0, 0, 0, 485, 0, 0, 0, 0, + 525, 0, 0, 876, 479, 0, 517, 520, 0, 534, + 0, 0, 0, 542, -2, 0, 0, 0, -2, -2, + 0, 655, 0, -2, -2, 664, 775, 804, 887, 417, + 711, 713, 714, 608, 843, 764, 761, 0, 748, 734, + 822, 0, 0, 0, 694, 0, 804, 778, 739, 744, + 550, 389, 0, 0, 289, 0, 372, 373, 0, 0, + 202, 203, 206, 0, 208, 232, 225, 241, 0, 0, + 298, 0, 298, 0, 0, 34, 35, 36, 55, 61, + 39, 45, 0, 0, 0, 0, 0, 179, 0, 211, + 214, 215, 216, 217, 218, 212, 190, 199, 259, 260, + 255, 257, 264, 0, 0, 752, 754, 0, 0, 448, + 482, 0, 504, 484, 0, 488, 0, 493, 0, 61, + 495, 522, 0, 516, 0, 710, 535, 530, 0, -2, + -2, -2, 656, 806, 777, 0, 417, 0, 750, -2, + 0, 0, 0, 780, 0, 359, 0, 524, 362, 200, + 0, 236, 227, 0, 238, 239, 308, 0, 301, 296, + 0, 294, 301, 295, 0, 63, 0, 0, 0, 71, + 316, 318, 254, 197, 257, 261, 0, 288, 0, 0, + 445, 0, 486, 494, 526, 527, 515, 518, 0, 531, + 712, 767, 0, -2, 0, 691, 0, 290, 361, 230, + 246, 0, 0, 0, 304, 297, 304, 298, 232, 41, + 0, 60, 306, 0, 261, 182, 66, 0, 755, 756, + 503, 0, 0, 0, 0, 763, 692, 524, 207, 0, + 209, 242, 243, 0, 233, 234, 235, 0, 309, 291, + 292, 301, 236, 62, 307, 180, 524, 0, 0, 519, + 760, 765, 768, -2, 1148, 959, 0, 766, 358, 229, + 244, 0, 245, 0, 0, 0, 240, 304, 246, 281, + 65, 0, 0, 770, 771, 772, 773, 774, 247, 0, + 250, 251, 0, 248, 293, 228, 66, 0, 249, 252, + 253, 524, 769, 282, } var sqlTok1 = [...]int{ @@ -6064,13 +6054,13 @@ sqldefault: case 1: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:458 + //line sql.y:459 { sqllex.(*scanner).stmts = sqlDollar[1].stmts } case 2: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:464 + //line sql.y:465 { if sqlDollar[3].stmt != nil { sqlVAL.stmts = append(sqlDollar[1].stmts, sqlDollar[3].stmt) @@ -6078,7 +6068,7 @@ sqldefault: } case 3: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:470 + //line sql.y:471 { if sqlDollar[1].stmt != nil { sqlVAL.stmts = []Statement{sqlDollar[1].stmt} @@ -6088,399 +6078,399 @@ sqldefault: } case 19: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:495 + //line sql.y:496 { sqlVAL.stmt = nil } case 23: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:507 + //line sql.y:508 { sqlVAL.stmt = nil } case 24: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:511 + //line sql.y:512 { sqlVAL.stmt = nil } case 25: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:517 + //line sql.y:518 { sqlVAL.stmt = nil } case 26: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:521 + //line sql.y:522 { sqlVAL.stmt = nil } case 27: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:527 + //line sql.y:528 { sqlVAL.stmt = nil } case 28: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:531 + //line sql.y:532 { sqlVAL.stmt = nil } case 31: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:541 + //line sql.y:542 { } case 32: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:543 + //line sql.y:544 { } case 33: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:545 + //line sql.y:546 { } case 34: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:547 + //line sql.y:548 { } case 35: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:549 + //line sql.y:550 { } case 36: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:551 + //line sql.y:552 { } case 37: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:553 + //line sql.y:554 { } case 38: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:555 + //line sql.y:556 { } case 39: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:557 + //line sql.y:558 { } case 40: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:559 + //line sql.y:560 { } case 41: sqlDollar = sqlS[sqlpt-8 : sqlpt+1] - //line sql.y:562 + //line sql.y:563 { } case 42: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:564 + //line sql.y:565 { } case 43: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:566 + //line sql.y:567 { } case 44: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:568 + //line sql.y:569 { } case 45: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:570 + //line sql.y:571 { } case 46: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:572 + //line sql.y:573 { } case 47: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:574 + //line sql.y:575 { } case 48: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:576 + //line sql.y:577 { } case 49: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:578 + //line sql.y:579 { } case 50: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:580 + //line sql.y:581 { } case 51: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:582 + //line sql.y:583 { } case 52: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:584 + //line sql.y:585 { } case 53: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:586 + //line sql.y:587 { } case 54: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:588 + //line sql.y:589 { } case 55: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:591 + //line sql.y:592 { } case 56: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:592 + //line sql.y:593 { } case 57: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:595 + //line sql.y:596 { } case 58: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:596 + //line sql.y:597 { } case 59: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:597 + //line sql.y:598 { } case 60: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:600 + //line sql.y:601 { } case 61: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:601 + //line sql.y:602 { } case 62: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:604 + //line sql.y:605 { } case 63: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:605 + //line sql.y:606 { } case 64: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:609 + //line sql.y:610 { sqlVAL.empty = sqlDollar[2].empty } case 65: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:614 + //line sql.y:615 { } case 66: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:615 + //line sql.y:616 { } case 67: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:618 + //line sql.y:619 { } case 68: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:619 + //line sql.y:620 { } case 69: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:623 + //line sql.y:624 { } case 70: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:624 + //line sql.y:625 { } case 71: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:625 + //line sql.y:626 { } case 72: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:626 + //line sql.y:627 { } case 77: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:639 + //line sql.y:640 { sqlVAL.stmt = &Delete{Table: sqlDollar[4].tblExpr, Where: newWhere(astWhere, sqlDollar[5].expr)} } case 78: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:646 + //line sql.y:647 { sqlVAL.stmt = nil } case 79: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:650 + //line sql.y:651 { sqlVAL.stmt = nil } case 80: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:654 + //line sql.y:655 { sqlVAL.stmt = &DropDatabase{Name: Name(sqlDollar[3].str), IfExists: false} } case 81: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:658 + //line sql.y:659 { sqlVAL.stmt = &DropDatabase{Name: Name(sqlDollar[5].str), IfExists: true} } case 82: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:662 + //line sql.y:663 { sqlVAL.stmt = &DropTable{Names: sqlDollar[3].qnames, IfExists: false} } case 83: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:666 + //line sql.y:667 { sqlVAL.stmt = &DropTable{Names: sqlDollar[5].qnames, IfExists: true} } case 84: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:671 + //line sql.y:672 { } case 85: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:675 + //line sql.y:676 { sqlVAL.qnames = QualifiedNames{sqlDollar[1].qname} } case 86: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:679 + //line sql.y:680 { sqlVAL.qnames = append(sqlDollar[1].qnames, sqlDollar[3].qname) } case 87: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:685 + //line sql.y:686 { sqlVAL.qname = &QualifiedName{Base: Name(sqlDollar[1].str)} } case 88: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:689 + //line sql.y:690 { sqlVAL.qname = &QualifiedName{Base: Name(sqlDollar[1].str), Indirect: sqlDollar[2].indirect} } case 89: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:695 + //line sql.y:696 { sqlVAL.indirect = Indirection{NameIndirection(sqlDollar[2].str)} } case 90: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:699 + //line sql.y:700 { sqlVAL.indirect = append(sqlDollar[1].indirect, NameIndirection(sqlDollar[3].str)) } case 91: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:707 + //line sql.y:708 { sqlVAL.stmt = nil } case 92: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:711 + //line sql.y:712 { sqlVAL.stmt = nil } case 93: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:715 + //line sql.y:716 { sqlVAL.stmt = nil } case 102: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:735 + //line sql.y:736 { } case 103: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:738 + //line sql.y:739 { } case 104: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:739 + //line sql.y:740 { } case 105: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:740 + //line sql.y:741 { } case 106: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:745 + //line sql.y:746 { sqlVAL.stmt = &Grant{Privileges: sqlDollar[2].privilegeList, Grantees: NameList(sqlDollar[6].strs), Targets: sqlDollar[4].targetList} } case 107: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:752 + //line sql.y:753 { sqlVAL.stmt = &Revoke{Privileges: sqlDollar[2].privilegeList, Grantees: NameList(sqlDollar[6].strs), Targets: sqlDollar[4].targetList} } case 108: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:759 + //line sql.y:760 { sqlVAL.targetList = TargetList{Tables: QualifiedNames(sqlDollar[1].qnames)} } case 109: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:763 + //line sql.y:764 { // TODO(marc): this is postgres' grammar, but do we really need // both "x" and "TABLE X"? @@ -6488,1403 +6478,1445 @@ sqldefault: } case 110: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:769 + //line sql.y:770 { sqlVAL.targetList = TargetList{Databases: NameList(sqlDollar[2].strs)} } case 111: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:775 + //line sql.y:777 { - sqlVAL.privilegeList = []PrivilegeType{PrivilegeAll} + sqlVAL.privilegeList = structured.PrivilegeList{structured.Privilege_ALL} } case 112: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:778 + //line sql.y:780 { } case 113: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:782 + //line sql.y:784 { - sqlVAL.privilegeList = []PrivilegeType{sqlDollar[1].privilegeType} + sqlVAL.privilegeList = structured.PrivilegeList{sqlDollar[1].privilegeType} } case 114: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:786 + //line sql.y:788 { sqlVAL.privilegeList = append(sqlDollar[1].privilegeList, sqlDollar[3].privilegeType) } case 115: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:792 + //line sql.y:795 { - sqlVAL.privilegeType = PrivilegeRead + sqlVAL.privilegeType = structured.Privilege_CREATE } case 116: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:796 + //line sql.y:799 { - sqlVAL.privilegeType = PrivilegeWrite + sqlVAL.privilegeType = structured.Privilege_DROP } case 117: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:804 + //line sql.y:803 { - sqlVAL.strs = []string{sqlDollar[1].str} + sqlVAL.privilegeType = structured.Privilege_GRANT } case 118: + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:807 + { + sqlVAL.privilegeType = structured.Privilege_SELECT + } + case 119: + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:811 + { + sqlVAL.privilegeType = structured.Privilege_INSERT + } + case 120: + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:815 + { + sqlVAL.privilegeType = structured.Privilege_DELETE + } + case 121: + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:819 + { + sqlVAL.privilegeType = structured.Privilege_UPDATE + } + case 122: + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:823 + { + sqlVAL.privilegeType = structured.Privilege_READ + } + case 123: + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:827 + { + sqlVAL.privilegeType = structured.Privilege_WRITE + } + case 124: + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:835 + { + sqlVAL.strs = []string{sqlDollar[1].str} + } + case 125: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:808 + //line sql.y:839 { sqlVAL.strs = append(sqlDollar[1].strs, sqlDollar[3].str) } - case 119: + case 126: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:816 + //line sql.y:847 { sqlVAL.stmt = sqlDollar[2].stmt } - case 120: + case 127: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:820 + //line sql.y:851 { sqlVAL.stmt = sqlDollar[3].stmt } - case 121: + case 128: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:824 + //line sql.y:855 { sqlVAL.stmt = sqlDollar[3].stmt } - case 122: + case 129: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:829 + //line sql.y:860 { } - case 123: + case 130: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:830 + //line sql.y:861 { } - case 124: + case 131: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:831 + //line sql.y:862 { } - case 125: + case 132: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:835 + //line sql.y:866 { sqlVAL.stmt = &Set{Name: sqlDollar[1].qname, Values: sqlDollar[3].exprs} } - case 126: + case 133: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:839 + //line sql.y:870 { sqlVAL.stmt = &Set{Name: sqlDollar[1].qname, Values: sqlDollar[3].exprs} } - case 127: + case 134: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:843 + //line sql.y:874 { sqlVAL.stmt = &Set{Name: sqlDollar[1].qname} } - case 128: + case 135: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:847 + //line sql.y:878 { sqlVAL.stmt = &Set{Name: sqlDollar[1].qname} } - case 130: + case 137: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:854 + //line sql.y:885 { } - case 131: + case 138: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:856 + //line sql.y:887 { } - case 132: + case 139: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:857 + //line sql.y:888 { } - case 134: + case 141: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:864 + //line sql.y:895 { sqlVAL.exprs = []Expr{sqlDollar[1].expr} } - case 135: + case 142: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:868 + //line sql.y:899 { sqlVAL.exprs = append(sqlDollar[1].exprs, sqlDollar[3].expr) } - case 138: + case 145: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:877 + //line sql.y:908 { } - case 139: + case 146: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:878 + //line sql.y:909 { } - case 140: + case 147: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:879 + //line sql.y:910 { } - case 141: + case 148: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:880 + //line sql.y:911 { } - case 142: + case 149: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:884 + //line sql.y:915 { sqlVAL.expr = BoolVal(true) } - case 143: + case 150: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:888 + //line sql.y:919 { sqlVAL.expr = BoolVal(false) } - case 144: + case 151: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:892 + //line sql.y:923 { sqlVAL.expr = StrVal(sqlDollar[1].str) } - case 146: + case 153: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:908 + //line sql.y:939 { } - case 147: + case 154: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:909 + //line sql.y:940 { } - case 148: + case 155: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:910 + //line sql.y:941 { } - case 149: + case 156: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:911 + //line sql.y:942 { } - case 150: + case 157: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:912 + //line sql.y:943 { } - case 151: + case 158: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:913 + //line sql.y:944 { } - case 152: + case 159: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:914 + //line sql.y:945 { } - case 153: + case 160: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:917 + //line sql.y:948 { } - case 154: + case 161: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:918 + //line sql.y:949 { } - case 155: + case 162: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:919 + //line sql.y:950 { } - case 156: + case 163: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:923 + //line sql.y:954 { sqlVAL.expr = StrVal(sqlDollar[1].str) } - case 157: + case 164: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:927 + //line sql.y:958 { sqlVAL.expr = StrVal(sqlDollar[1].str) } - case 158: + case 165: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:932 + //line sql.y:963 { } - case 159: + case 166: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:936 + //line sql.y:967 { sqlVAL.stmt = &ShowColumns{Table: sqlDollar[4].qname} } - case 160: + case 167: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:940 + //line sql.y:971 { sqlVAL.stmt = &ShowDatabases{} } - case 161: + case 168: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:944 + //line sql.y:975 { sqlVAL.stmt = &ShowGrants{Targets: sqlDollar[3].targetListPtr, Grantees: sqlDollar[4].strs} } - case 162: + case 169: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:948 + //line sql.y:979 { sqlVAL.stmt = &ShowIndex{Table: sqlDollar[4].qname} } - case 163: + case 170: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:952 + //line sql.y:983 { sqlVAL.stmt = &ShowTables{Name: sqlDollar[3].qname} } - case 164: + case 171: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:956 + //line sql.y:987 { sqlVAL.stmt = nil } - case 165: + case 172: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:960 + //line sql.y:991 { sqlVAL.stmt = nil } - case 166: + case 173: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:966 + //line sql.y:997 { sqlVAL.qname = sqlDollar[2].qname } - case 167: + case 174: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:970 + //line sql.y:1001 { sqlVAL.qname = nil } - case 168: + case 175: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:976 + //line sql.y:1007 { tmp := sqlDollar[2].targetList sqlVAL.targetListPtr = &tmp } - case 169: + case 176: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:981 + //line sql.y:1012 { sqlVAL.targetListPtr = nil } - case 170: + case 177: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:987 + //line sql.y:1018 { sqlVAL.strs = sqlDollar[2].strs } - case 171: + case 178: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:991 + //line sql.y:1022 { sqlVAL.strs = nil } - case 172: + case 179: sqlDollar = sqlS[sqlpt-9 : sqlpt+1] - //line sql.y:999 + //line sql.y:1030 { sqlVAL.stmt = &CreateTable{Table: sqlDollar[3].qname, IfNotExists: false, Defs: sqlDollar[5].tblDefs} } - case 173: + case 180: sqlDollar = sqlS[sqlpt-12 : sqlpt+1] - //line sql.y:1004 + //line sql.y:1035 { sqlVAL.stmt = &CreateTable{Table: sqlDollar[6].qname, IfNotExists: true, Defs: sqlDollar[8].tblDefs} } - case 174: + case 181: sqlDollar = sqlS[sqlpt-8 : sqlpt+1] - //line sql.y:1009 + //line sql.y:1040 { sqlVAL.stmt = nil } - case 175: + case 182: sqlDollar = sqlS[sqlpt-11 : sqlpt+1] - //line sql.y:1014 + //line sql.y:1045 { sqlVAL.stmt = nil } - case 177: + case 184: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1021 + //line sql.y:1052 { sqlVAL.tblDefs = nil } - case 178: + case 185: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1027 + //line sql.y:1058 { sqlVAL.empty = sqlDollar[2].empty } - case 179: + case 186: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1030 + //line sql.y:1061 { } - case 180: + case 187: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1034 + //line sql.y:1065 { sqlVAL.tblDefs = TableDefs{sqlDollar[1].tblDef} } - case 181: + case 188: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1038 + //line sql.y:1069 { sqlVAL.tblDefs = append(sqlDollar[1].tblDefs, sqlDollar[3].tblDef) } - case 182: + case 189: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1043 + //line sql.y:1074 { } - case 183: + case 190: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1044 + //line sql.y:1075 { } - case 185: + case 192: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1048 + //line sql.y:1079 { } - case 187: + case 194: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1052 + //line sql.y:1083 { } - case 188: + case 195: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1053 + //line sql.y:1084 { } - case 189: + case 196: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1057 + //line sql.y:1088 { sqlVAL.tblDef = newColumnTableDef(Name(sqlDollar[1].str), sqlDollar[2].colType, sqlDollar[3].colConstraints) } - case 190: + case 197: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1062 + //line sql.y:1093 { } - case 191: + case 198: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1066 + //line sql.y:1097 { sqlVAL.colConstraints = append(sqlDollar[1].colConstraints, sqlDollar[2].colConstraint) } - case 192: + case 199: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1070 + //line sql.y:1101 { sqlVAL.colConstraints = nil } - case 193: + case 200: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1076 + //line sql.y:1107 { // TODO(pmattis): Handle constraint name. sqlVAL.colConstraint = sqlDollar[3].colConstraint } - case 195: + case 202: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1081 + //line sql.y:1112 { } - case 196: + case 203: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1097 + //line sql.y:1128 { sqlVAL.colConstraint = NotNullConstraint{} } - case 197: + case 204: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1101 + //line sql.y:1132 { sqlVAL.colConstraint = NullConstraint{} } - case 198: + case 205: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1105 + //line sql.y:1136 { sqlVAL.colConstraint = UniqueConstraint{} } - case 199: + case 206: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1109 + //line sql.y:1140 { sqlVAL.colConstraint = PrimaryKeyConstraint{} } - case 200: + case 207: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1112 + //line sql.y:1143 { } - case 201: + case 208: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1113 + //line sql.y:1144 { } - case 202: + case 209: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1114 + //line sql.y:1145 { } - case 203: + case 210: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1117 + //line sql.y:1148 { } - case 204: + case 211: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1120 + //line sql.y:1151 { } - case 205: + case 212: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1121 + //line sql.y:1152 { } - case 206: + case 213: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1122 + //line sql.y:1153 { } - case 207: + case 214: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1125 + //line sql.y:1156 { } - case 208: + case 215: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1126 + //line sql.y:1157 { } - case 209: + case 216: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1127 + //line sql.y:1158 { } - case 210: + case 217: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1128 + //line sql.y:1159 { } - case 211: + case 218: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1129 + //line sql.y:1160 { } - case 212: + case 219: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1136 + //line sql.y:1167 { sqlVAL.tblDef = sqlDollar[3].tblDef if i, ok := sqlVAL.tblDef.(*IndexTableDef); ok { i.Name = Name(sqlDollar[2].str) } } - case 213: + case 220: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1143 + //line sql.y:1174 { sqlVAL.tblDef = sqlDollar[1].tblDef } - case 214: + case 221: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1148 + //line sql.y:1179 { } - case 215: + case 222: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1150 + //line sql.y:1181 { sqlVAL.tblDef = &IndexTableDef{Unique: true, Columns: NameList(sqlDollar[3].strs)} } - case 216: + case 223: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1153 + //line sql.y:1184 { } - case 217: + case 224: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1155 + //line sql.y:1186 { sqlVAL.tblDef = &IndexTableDef{Columns: NameList(sqlDollar[3].strs)} } - case 218: + case 225: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1159 + //line sql.y:1190 { sqlVAL.tblDef = &IndexTableDef{PrimaryKey: true, Unique: true, Columns: NameList(sqlDollar[4].strs)} } - case 219: + case 226: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1162 + //line sql.y:1193 { } - case 220: + case 227: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:1164 + //line sql.y:1195 { } - case 221: + case 228: sqlDollar = sqlS[sqlpt-10 : sqlpt+1] - //line sql.y:1166 + //line sql.y:1197 { } - case 222: + case 229: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1169 + //line sql.y:1200 { } - case 223: + case 230: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1170 + //line sql.y:1201 { } - case 224: + case 231: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1174 + //line sql.y:1205 { sqlVAL.strs = sqlDollar[2].strs } - case 225: + case 232: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1178 + //line sql.y:1209 { sqlVAL.strs = nil } - case 226: + case 233: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1183 + //line sql.y:1214 { } - case 227: + case 234: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1184 + //line sql.y:1215 { } - case 228: + case 235: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1185 + //line sql.y:1216 { } - case 229: + case 236: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1186 + //line sql.y:1217 { } - case 230: + case 237: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1189 + //line sql.y:1220 { } - case 231: + case 238: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1190 + //line sql.y:1221 { } - case 232: + case 239: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1193 + //line sql.y:1224 { } - case 233: + case 240: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1196 + //line sql.y:1227 { } - case 234: + case 241: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1197 + //line sql.y:1228 { } - case 235: + case 242: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1204 + //line sql.y:1235 { } - case 236: + case 243: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1205 + //line sql.y:1236 { } - case 237: + case 244: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1206 + //line sql.y:1237 { } - case 238: + case 245: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1207 + //line sql.y:1238 { } - case 239: + case 246: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1208 + //line sql.y:1239 { } - case 240: + case 247: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1211 + //line sql.y:1242 { } - case 241: + case 248: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1214 + //line sql.y:1245 { } - case 242: + case 249: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1217 + //line sql.y:1248 { } - case 243: + case 250: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1218 + //line sql.y:1249 { } - case 244: + case 251: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1219 + //line sql.y:1250 { } - case 245: + case 252: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1220 + //line sql.y:1251 { } - case 246: + case 253: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1221 + //line sql.y:1252 { } - case 247: + case 254: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1224 + //line sql.y:1255 { } - case 248: + case 255: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1225 + //line sql.y:1256 { } - case 249: + case 256: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1228 + //line sql.y:1259 { } - case 250: + case 257: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1229 + //line sql.y:1260 { } - case 251: + case 258: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1232 + //line sql.y:1263 { } - case 252: + case 259: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1233 + //line sql.y:1264 { } - case 253: + case 260: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1234 + //line sql.y:1265 { } - case 254: + case 261: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1235 + //line sql.y:1266 { } - case 255: + case 262: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1238 + //line sql.y:1269 { } - case 256: + case 263: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:1243 + //line sql.y:1274 { sqlVAL.stmt = nil } - case 257: + case 264: sqlDollar = sqlS[sqlpt-9 : sqlpt+1] - //line sql.y:1247 + //line sql.y:1278 { sqlVAL.stmt = nil } - case 258: + case 265: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1252 + //line sql.y:1283 { } - case 259: + case 266: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1255 + //line sql.y:1286 { } - case 260: + case 267: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1256 + //line sql.y:1287 { } - case 261: + case 268: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1257 + //line sql.y:1288 { } - case 262: + case 269: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1261 + //line sql.y:1292 { sqlVAL.expr = NumVal(sqlDollar[1].str) } - case 263: + case 270: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1265 + //line sql.y:1296 { sqlVAL.expr = NumVal("-" + sqlDollar[2].str) } - case 264: + case 271: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1269 + //line sql.y:1300 { sqlVAL.expr = IntVal(sqlDollar[1].ival) } - case 265: + case 272: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1275 + //line sql.y:1306 { } - case 266: + case 273: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1276 + //line sql.y:1307 { } - case 267: + case 274: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1277 + //line sql.y:1308 { } - case 268: + case 275: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1278 + //line sql.y:1309 { } - case 269: + case 276: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1279 + //line sql.y:1310 { } - case 270: + case 277: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1284 + //line sql.y:1315 { sqlVAL.stmt = &Truncate{Tables: sqlDollar[3].qnames} } - case 271: + case 278: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1289 + //line sql.y:1320 { } - case 272: + case 279: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1290 + //line sql.y:1321 { } - case 273: + case 280: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1291 + //line sql.y:1322 { } - case 274: + case 281: sqlDollar = sqlS[sqlpt-13 : sqlpt+1] - //line sql.y:1298 + //line sql.y:1329 { sqlVAL.stmt = nil } - case 275: + case 282: sqlDollar = sqlS[sqlpt-16 : sqlpt+1] - //line sql.y:1304 + //line sql.y:1335 { sqlVAL.stmt = nil } - case 276: + case 283: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1309 + //line sql.y:1340 { } - case 277: + case 284: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1310 + //line sql.y:1341 { } - case 278: + case 285: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1313 + //line sql.y:1344 { } - case 279: + case 286: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1314 + //line sql.y:1345 { } - case 280: + case 287: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1317 + //line sql.y:1348 { } - case 281: + case 288: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1318 + //line sql.y:1349 { } - case 282: + case 289: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1321 + //line sql.y:1352 { } - case 283: + case 290: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1322 + //line sql.y:1353 { } - case 284: + case 291: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1329 + //line sql.y:1360 { } - case 285: + case 292: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1331 + //line sql.y:1362 { } - case 286: + case 293: sqlDollar = sqlS[sqlpt-7 : sqlpt+1] - //line sql.y:1333 + //line sql.y:1364 { } - case 287: + case 294: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1336 + //line sql.y:1367 { } - case 288: + case 295: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1337 + //line sql.y:1368 { } - case 289: + case 296: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1340 + //line sql.y:1371 { } - case 290: + case 297: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1341 + //line sql.y:1372 { } - case 291: + case 298: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1342 + //line sql.y:1373 { } - case 292: + case 299: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1345 + //line sql.y:1376 { } - case 293: + case 300: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1346 + //line sql.y:1377 { } - case 294: + case 301: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1347 + //line sql.y:1378 { } - case 295: + case 302: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1350 + //line sql.y:1381 { } - case 296: + case 303: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1351 + //line sql.y:1382 { } - case 297: + case 304: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1352 + //line sql.y:1383 { } - case 298: + case 305: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1358 + //line sql.y:1389 { } - case 299: + case 306: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1359 + //line sql.y:1390 { } - case 300: + case 307: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1360 + //line sql.y:1391 { } - case 301: + case 308: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1363 + //line sql.y:1394 { } - case 302: + case 309: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1364 + //line sql.y:1395 { } - case 303: + case 310: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:1369 + //line sql.y:1400 { sqlVAL.stmt = nil } - case 304: + case 311: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:1373 + //line sql.y:1404 { sqlVAL.stmt = nil } - case 305: + case 312: sqlDollar = sqlS[sqlpt-8 : sqlpt+1] - //line sql.y:1377 + //line sql.y:1408 { sqlVAL.stmt = nil } - case 306: + case 313: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:1381 + //line sql.y:1412 { sqlVAL.stmt = nil } - case 307: + case 314: sqlDollar = sqlS[sqlpt-8 : sqlpt+1] - //line sql.y:1385 + //line sql.y:1416 { sqlVAL.stmt = nil } - case 308: + case 315: sqlDollar = sqlS[sqlpt-8 : sqlpt+1] - //line sql.y:1389 + //line sql.y:1420 { sqlVAL.stmt = nil } - case 309: + case 316: sqlDollar = sqlS[sqlpt-10 : sqlpt+1] - //line sql.y:1393 + //line sql.y:1424 { sqlVAL.stmt = nil } - case 310: + case 317: sqlDollar = sqlS[sqlpt-8 : sqlpt+1] - //line sql.y:1397 + //line sql.y:1428 { sqlVAL.stmt = nil } - case 311: + case 318: sqlDollar = sqlS[sqlpt-10 : sqlpt+1] - //line sql.y:1401 + //line sql.y:1432 { sqlVAL.stmt = nil } - case 312: + case 319: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1406 + //line sql.y:1437 { } - case 313: + case 320: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1407 + //line sql.y:1438 { } - case 314: + case 321: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1410 + //line sql.y:1441 { } - case 315: + case 322: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1411 + //line sql.y:1442 { } - case 316: + case 323: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1416 + //line sql.y:1447 { sqlVAL.stmt = nil } - case 317: + case 324: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1420 + //line sql.y:1451 { sqlVAL.stmt = nil } - case 318: + case 325: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1424 + //line sql.y:1455 { sqlVAL.stmt = nil } - case 319: + case 326: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1428 + //line sql.y:1459 { sqlVAL.stmt = nil } - case 320: + case 327: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1432 + //line sql.y:1463 { sqlVAL.stmt = nil } - case 321: + case 328: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1436 + //line sql.y:1467 { sqlVAL.stmt = nil } - case 322: + case 329: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1440 + //line sql.y:1471 { sqlVAL.stmt = nil } - case 323: + case 330: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1444 + //line sql.y:1475 { sqlVAL.stmt = nil } - case 324: + case 331: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1448 + //line sql.y:1479 { sqlVAL.stmt = nil } - case 325: + case 332: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1452 + //line sql.y:1483 { sqlVAL.stmt = nil } - case 326: + case 333: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1456 + //line sql.y:1487 { sqlVAL.stmt = nil } - case 327: + case 334: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1460 + //line sql.y:1491 { sqlVAL.stmt = nil } - case 328: + case 335: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1464 + //line sql.y:1495 { sqlVAL.stmt = nil } - case 329: + case 336: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1468 + //line sql.y:1499 { sqlVAL.stmt = nil } - case 330: + case 337: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1473 + //line sql.y:1504 { } - case 331: + case 338: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1474 + //line sql.y:1505 { } - case 332: + case 339: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1475 + //line sql.y:1506 { } - case 333: + case 340: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1478 + //line sql.y:1509 { } - case 334: + case 341: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1479 + //line sql.y:1510 { } - case 335: + case 342: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1480 + //line sql.y:1511 { } - case 336: + case 343: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1481 + //line sql.y:1512 { } - case 337: + case 344: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1482 + //line sql.y:1513 { } - case 338: + case 345: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1486 + //line sql.y:1517 { } - case 339: + case 346: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1487 + //line sql.y:1518 { } - case 340: + case 347: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1488 + //line sql.y:1519 { } - case 341: + case 348: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1491 + //line sql.y:1522 { } - case 342: + case 349: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1492 + //line sql.y:1523 { } - case 343: + case 350: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1496 + //line sql.y:1527 { sqlVAL.stmt = &CreateDatabase{Name: Name(sqlDollar[3].str)} } - case 344: + case 351: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:1500 + //line sql.y:1531 { sqlVAL.stmt = &CreateDatabase{IfNotExists: true, Name: Name(sqlDollar[6].str)} } - case 345: + case 352: sqlDollar = sqlS[sqlpt-7 : sqlpt+1] - //line sql.y:1507 + //line sql.y:1538 { sqlVAL.stmt = sqlDollar[5].stmt sqlVAL.stmt.(*Insert).Table = sqlDollar[4].qname } - case 348: + case 355: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1523 + //line sql.y:1554 { sqlVAL.stmt = &Insert{Rows: sqlDollar[1].stmt.(SelectStatement)} } - case 349: + case 356: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1527 + //line sql.y:1558 { sqlVAL.stmt = &Insert{Columns: sqlDollar[2].qnames, Rows: sqlDollar[4].stmt.(SelectStatement)} } - case 350: + case 357: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1531 + //line sql.y:1562 { sqlVAL.stmt = &Insert{} } - case 351: + case 358: sqlDollar = sqlS[sqlpt-8 : sqlpt+1] - //line sql.y:1536 + //line sql.y:1567 { } - case 352: + case 359: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1537 + //line sql.y:1568 { } - case 353: + case 360: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1538 + //line sql.y:1569 { } - case 354: + case 361: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1541 + //line sql.y:1572 { } - case 355: + case 362: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1542 + //line sql.y:1573 { } - case 356: + case 363: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1543 + //line sql.y:1574 { } - case 357: + case 364: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1546 + //line sql.y:1577 { } - case 358: + case 365: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1547 + //line sql.y:1578 { } - case 359: + case 366: sqlDollar = sqlS[sqlpt-8 : sqlpt+1] - //line sql.y:1555 + //line sql.y:1586 { sqlVAL.stmt = &Update{Table: sqlDollar[3].tblExpr, Exprs: sqlDollar[5].updateExprs, Where: newWhere(astWhere, sqlDollar[7].expr)} } - case 360: + case 367: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1561 + //line sql.y:1592 { sqlVAL.updateExprs = UpdateExprs{sqlDollar[1].updateExpr} } - case 361: + case 368: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1565 + //line sql.y:1596 { sqlVAL.updateExprs = append(sqlDollar[1].updateExprs, sqlDollar[3].updateExpr) } - case 363: + case 370: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1571 + //line sql.y:1602 { } - case 364: + case 371: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1575 + //line sql.y:1606 { sqlVAL.updateExpr = &UpdateExpr{Name: sqlDollar[1].qname, Expr: sqlDollar[3].expr} } - case 365: + case 372: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1586 + //line sql.y:1617 { } - case 366: + case 373: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1587 + //line sql.y:1618 { } - case 369: + case 376: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1632 + //line sql.y:1663 { sqlVAL.stmt = &ParenSelect{Select: sqlDollar[2].stmt.(SelectStatement)} } - case 370: + case 377: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1636 + //line sql.y:1667 { sqlVAL.stmt = &ParenSelect{Select: sqlDollar[2].stmt.(SelectStatement)} } - case 372: + case 379: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1652 + //line sql.y:1683 { sqlVAL.stmt = sqlDollar[1].stmt } - case 373: + case 380: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1656 + //line sql.y:1687 { sqlVAL.stmt = sqlDollar[1].stmt if s, ok := sqlVAL.stmt.(*Select); ok { s.Limit = sqlDollar[4].limit } } - case 374: + case 381: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1663 + //line sql.y:1694 { sqlVAL.stmt = sqlDollar[1].stmt if s, ok := sqlVAL.stmt.(*Select); ok { s.Limit = sqlDollar[3].limit } } - case 375: + case 382: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1670 + //line sql.y:1701 { sqlVAL.stmt = sqlDollar[2].stmt } - case 376: + case 383: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1674 + //line sql.y:1705 { sqlVAL.stmt = sqlDollar[2].stmt } - case 377: + case 384: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1678 + //line sql.y:1709 { sqlVAL.stmt = sqlDollar[2].stmt if s, ok := sqlVAL.stmt.(*Select); ok { s.Limit = sqlDollar[5].limit } } - case 378: + case 385: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1685 + //line sql.y:1716 { sqlVAL.stmt = sqlDollar[2].stmt if s, ok := sqlVAL.stmt.(*Select); ok { s.Limit = sqlDollar[4].limit } } - case 381: + case 388: sqlDollar = sqlS[sqlpt-8 : sqlpt+1] - //line sql.y:1722 + //line sql.y:1753 { sqlVAL.stmt = &Select{ Exprs: sqlDollar[3].selExprs, @@ -7893,9 +7925,9 @@ sqldefault: Having: newWhere(astHaving, sqlDollar[7].expr), } } - case 382: + case 389: sqlDollar = sqlS[sqlpt-8 : sqlpt+1] - //line sql.y:1733 + //line sql.y:1764 { // TODO(pmattis): Support DISTINCT ON? sqlVAL.stmt = &Select{ @@ -7906,9 +7938,9 @@ sqldefault: Having: newWhere(astHaving, sqlDollar[7].expr), } } - case 384: + case 391: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1745 + //line sql.y:1776 { sqlVAL.stmt = &Select{ Exprs: SelectExprs{StarSelectExpr}, @@ -7916,9 +7948,9 @@ sqldefault: tableSelect: true, } } - case 385: + case 392: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1753 + //line sql.y:1784 { // TODO(pmattis): Support all/distinct sqlVAL.stmt = &Union{ @@ -7927,9 +7959,9 @@ sqldefault: Right: sqlDollar[4].stmt.(SelectStatement), } } - case 386: + case 393: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1762 + //line sql.y:1793 { // TODO(pmattis): Support all/distinct sqlVAL.stmt = &Union{ @@ -7938,9 +7970,9 @@ sqldefault: Right: sqlDollar[4].stmt.(SelectStatement), } } - case 387: + case 394: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1771 + //line sql.y:1802 { // TODO(pmattis): Support all/distinct sqlVAL.stmt = &Union{ @@ -7949,129 +7981,129 @@ sqldefault: Right: sqlDollar[4].stmt.(SelectStatement), } } - case 388: + case 395: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1789 + //line sql.y:1820 { } - case 389: + case 396: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1790 + //line sql.y:1821 { } - case 390: + case 397: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1791 + //line sql.y:1822 { } - case 391: + case 398: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1794 + //line sql.y:1825 { } - case 392: + case 399: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1795 + //line sql.y:1826 { } - case 393: + case 400: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:1798 + //line sql.y:1829 { } - case 398: + case 405: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1807 + //line sql.y:1838 { } - case 399: + case 406: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1808 + //line sql.y:1839 { } - case 400: + case 407: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1811 + //line sql.y:1842 { } - case 401: + case 408: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1812 + //line sql.y:1843 { } - case 402: + case 409: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1815 + //line sql.y:1846 { } - case 403: + case 410: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1816 + //line sql.y:1847 { } - case 404: + case 411: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1817 + //line sql.y:1848 { } - case 405: + case 412: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1822 + //line sql.y:1853 { } - case 406: + case 413: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1823 + //line sql.y:1854 { } - case 407: + case 414: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1826 + //line sql.y:1857 { } - case 408: + case 415: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1827 + //line sql.y:1858 { } - case 409: + case 416: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1830 + //line sql.y:1861 { } - case 410: + case 417: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1831 + //line sql.y:1862 { } - case 411: + case 418: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1834 + //line sql.y:1865 { } - case 412: + case 419: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1837 + //line sql.y:1868 { } - case 413: + case 420: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1838 + //line sql.y:1869 { } - case 414: + case 421: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1841 + //line sql.y:1872 { } - case 415: + case 422: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1842 + //line sql.y:1873 { } - case 416: + case 423: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1846 + //line sql.y:1877 { if sqlDollar[1].limit == nil { sqlVAL.limit = sqlDollar[2].limit @@ -8080,24 +8112,24 @@ sqldefault: sqlVAL.limit.Offset = sqlDollar[2].limit.Offset } } - case 417: + case 424: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1855 + //line sql.y:1886 { sqlVAL.limit = sqlDollar[1].limit if sqlDollar[2].limit != nil { sqlVAL.limit.Count = sqlDollar[2].limit.Count } } - case 421: + case 428: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1867 + //line sql.y:1898 { sqlVAL.limit = nil } - case 422: + case 429: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1873 + //line sql.y:1904 { if sqlDollar[2].expr == nil { sqlVAL.limit = nil @@ -8105,87 +8137,52 @@ sqldefault: sqlVAL.limit = &Limit{Count: sqlDollar[2].expr} } } - case 423: + case 430: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:1881 + //line sql.y:1912 { } - case 424: + case 431: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1885 + //line sql.y:1916 { sqlVAL.limit = &Limit{Offset: sqlDollar[2].expr} } - case 425: + case 432: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1892 + //line sql.y:1923 { sqlVAL.limit = &Limit{Offset: sqlDollar[2].expr} } - case 427: + case 434: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1899 + //line sql.y:1930 { sqlVAL.expr = nil } - case 428: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1907 - { - } - case 429: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1908 - { - } - case 430: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1909 - { - } - case 431: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1913 - { - } - case 432: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1914 - { - } - case 433: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1917 - { - } - case 434: + case 435: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1918 + //line sql.y:1938 { } - case 435: + case 436: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] //line sql.y:1939 { } - case 436: + case 437: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] //line sql.y:1940 { } - case 437: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1943 - { - } case 438: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] //line sql.y:1944 { } case 439: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1947 + //line sql.y:1945 { } case 440: @@ -8194,2329 +8191,2364 @@ sqldefault: { } case 441: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1951 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:1949 { } case 442: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1955 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:1970 { - sqlVAL.expr = sqlDollar[2].expr } case 443: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1959 + //line sql.y:1971 { - sqlVAL.expr = nil } case 444: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1964 + //line sql.y:1974 { } case 445: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1965 + //line sql.y:1975 { } case 446: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1968 + //line sql.y:1978 { } case 447: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1969 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:1979 { } case 448: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1972 + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:1982 { } case 449: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1973 + //line sql.y:1986 { + sqlVAL.expr = sqlDollar[2].expr } case 450: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1976 + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:1990 { + sqlVAL.expr = nil } case 451: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:1979 + //line sql.y:1995 { } case 452: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1980 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:1996 { } case 453: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1981 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:1999 { } case 454: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1984 + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:2000 { } case 455: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:1985 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:2003 { } case 456: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1986 + //line sql.y:2004 { } case 457: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1987 + //line sql.y:2007 { } case 458: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1990 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:2010 { } case 459: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:1991 + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:2011 { } case 460: + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:2012 + { + } + case 461: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:1995 + //line sql.y:2015 + { + } + case 462: + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:2016 + { + } + case 463: + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:2017 + { + } + case 464: + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:2018 + { + } + case 465: + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:2021 + { + } + case 466: + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:2022 + { + } + case 467: + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:2026 { sqlVAL.stmt = Values{Tuple(sqlDollar[2].exprs)} } - case 461: + case 468: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:1999 + //line sql.y:2030 { sqlVAL.stmt = append(sqlDollar[1].stmt.(Values), Tuple(sqlDollar[3].exprs)) } - case 462: + case 469: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2009 + //line sql.y:2040 { sqlVAL.tblExprs = sqlDollar[2].tblExprs } - case 463: + case 470: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2013 + //line sql.y:2044 { sqlVAL.tblExprs = nil } - case 464: + case 471: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2019 + //line sql.y:2050 { sqlVAL.tblExprs = TableExprs{sqlDollar[1].tblExpr} } - case 465: + case 472: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2023 + //line sql.y:2054 { sqlVAL.tblExprs = append(sqlDollar[1].tblExprs, sqlDollar[3].tblExpr) } - case 466: + case 473: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2030 + //line sql.y:2061 { sqlVAL.tblExpr = &AliasedTableExpr{Expr: sqlDollar[1].qname, As: Name(sqlDollar[2].str)} } - case 467: + case 474: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2033 + //line sql.y:2064 { } - case 468: + case 475: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2034 + //line sql.y:2065 { } - case 469: + case 476: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2036 + //line sql.y:2067 { sqlVAL.tblExpr = &AliasedTableExpr{Expr: &Subquery{Select: sqlDollar[1].stmt.(SelectStatement)}, As: Name(sqlDollar[2].str)} } - case 470: + case 477: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2039 + //line sql.y:2070 { } - case 472: + case 479: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2041 + //line sql.y:2072 { } - case 473: + case 480: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2059 + //line sql.y:2090 { sqlVAL.tblExpr = &ParenTableExpr{Expr: sqlDollar[2].tblExpr} } - case 474: + case 481: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2063 + //line sql.y:2094 { sqlVAL.tblExpr = &JoinTableExpr{Join: astCrossJoin, Left: sqlDollar[1].tblExpr, Right: sqlDollar[4].tblExpr} } - case 475: + case 482: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2067 + //line sql.y:2098 { sqlVAL.tblExpr = &JoinTableExpr{Join: sqlDollar[2].str, Left: sqlDollar[1].tblExpr, Right: sqlDollar[4].tblExpr, Cond: sqlDollar[5].joinCond} } - case 476: + case 483: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2071 + //line sql.y:2102 { sqlVAL.tblExpr = &JoinTableExpr{Join: astJoin, Left: sqlDollar[1].tblExpr, Right: sqlDollar[3].tblExpr, Cond: sqlDollar[4].joinCond} } - case 477: + case 484: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2075 + //line sql.y:2106 { sqlVAL.tblExpr = &JoinTableExpr{Join: astNaturalJoin, Left: sqlDollar[1].tblExpr, Right: sqlDollar[5].tblExpr} } - case 478: + case 485: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2079 + //line sql.y:2110 { sqlVAL.tblExpr = &JoinTableExpr{Join: astNaturalJoin, Left: sqlDollar[1].tblExpr, Right: sqlDollar[4].tblExpr} } - case 479: + case 486: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2084 + //line sql.y:2115 { } - case 480: + case 487: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2086 + //line sql.y:2117 { sqlVAL.str = sqlDollar[2].str } - case 481: + case 488: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2089 + //line sql.y:2120 { } - case 482: + case 489: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2091 + //line sql.y:2122 { sqlVAL.str = sqlDollar[1].str } - case 484: + case 491: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2098 + //line sql.y:2129 { sqlVAL.str = "" } - case 485: + case 492: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2105 + //line sql.y:2136 { } - case 486: + case 493: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2106 + //line sql.y:2137 { } - case 487: + case 494: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2107 + //line sql.y:2138 { } - case 488: + case 495: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2108 + //line sql.y:2139 { } - case 489: + case 496: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2109 + //line sql.y:2140 { } - case 490: + case 497: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2113 + //line sql.y:2144 { sqlVAL.str = astFullJoin } - case 491: + case 498: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2117 + //line sql.y:2148 { sqlVAL.str = astLeftJoin } - case 492: + case 499: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2121 + //line sql.y:2152 { sqlVAL.str = astRightJoin } - case 493: + case 500: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2125 + //line sql.y:2156 { sqlVAL.str = astInnerJoin } - case 494: + case 501: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2131 + //line sql.y:2162 { } - case 495: + case 502: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2132 + //line sql.y:2163 { } - case 496: + case 503: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2143 + //line sql.y:2174 { sqlVAL.joinCond = &UsingJoinCond{Cols: NameList(sqlDollar[3].strs)} } - case 497: + case 504: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2147 + //line sql.y:2178 { sqlVAL.joinCond = &OnJoinCond{Expr: sqlDollar[2].expr} } - case 498: + case 505: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2153 + //line sql.y:2184 { sqlVAL.qname = sqlDollar[1].qname } - case 499: + case 506: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2157 + //line sql.y:2188 { // TODO(pmattis): Handle the "*". sqlVAL.qname = sqlDollar[1].qname } - case 500: + case 507: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2162 + //line sql.y:2193 { // TODO(pmattis): Support ONLY. sqlVAL.qname = sqlDollar[2].qname } - case 501: + case 508: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2167 + //line sql.y:2198 { // TODO(pmattis): Support ONLY. sqlVAL.qname = sqlDollar[3].qname } - case 502: + case 509: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2174 + //line sql.y:2205 { sqlVAL.qnames = QualifiedNames{sqlDollar[1].qname} } - case 503: + case 510: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2178 + //line sql.y:2209 { sqlVAL.qnames = append(sqlDollar[1].qnames, sqlDollar[3].qname) } - case 504: + case 511: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2191 + //line sql.y:2222 { sqlVAL.tblExpr = &AliasedTableExpr{Expr: sqlDollar[1].qname} } - case 505: + case 512: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2195 + //line sql.y:2226 { sqlVAL.tblExpr = &AliasedTableExpr{Expr: sqlDollar[1].qname, As: Name(sqlDollar[2].str)} } - case 506: + case 513: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2199 + //line sql.y:2230 { sqlVAL.tblExpr = &AliasedTableExpr{Expr: sqlDollar[1].qname, As: Name(sqlDollar[3].str)} } - case 507: + case 514: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2213 + //line sql.y:2244 { } - case 508: + case 515: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2214 + //line sql.y:2245 { } - case 509: + case 516: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2217 + //line sql.y:2248 { } - case 510: + case 517: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2220 + //line sql.y:2251 { } - case 511: + case 518: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2221 + //line sql.y:2252 { } - case 512: + case 519: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2224 + //line sql.y:2255 { } - case 513: + case 520: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2225 + //line sql.y:2256 { } - case 514: + case 521: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2228 + //line sql.y:2259 { } - case 515: + case 522: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2229 + //line sql.y:2260 { } - case 516: + case 523: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2233 + //line sql.y:2264 { sqlVAL.expr = sqlDollar[2].expr } - case 517: + case 524: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2237 + //line sql.y:2268 { sqlVAL.expr = nil } - case 518: + case 525: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2242 + //line sql.y:2273 { } - case 519: + case 526: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2243 + //line sql.y:2274 { } - case 520: + case 527: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2246 + //line sql.y:2277 { } - case 521: + case 528: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2256 + //line sql.y:2287 { sqlVAL.colType = sqlDollar[1].colType } - case 522: + case 529: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2259 + //line sql.y:2290 { } - case 523: + case 530: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2261 + //line sql.y:2292 { } - case 524: + case 531: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2262 + //line sql.y:2293 { } - case 525: + case 532: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2263 + //line sql.y:2294 { } - case 526: + case 533: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2264 + //line sql.y:2295 { } - case 527: + case 534: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2267 + //line sql.y:2298 { } - case 528: + case 535: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2268 + //line sql.y:2299 { } - case 529: + case 536: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2269 + //line sql.y:2300 { } - case 534: + case 541: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2276 + //line sql.y:2307 { } - case 535: + case 542: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2277 + //line sql.y:2308 { } - case 536: + case 543: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2279 + //line sql.y:2310 { sqlVAL.colType = &BlobType{} } - case 537: + case 544: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2283 + //line sql.y:2314 { sqlVAL.colType = &TextType{} } - case 542: + case 549: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2304 + //line sql.y:2335 { sqlVAL.colType = &DecimalType{Prec: sqlDollar[2].ival} } - case 543: + case 550: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2308 + //line sql.y:2339 { sqlVAL.colType = &DecimalType{Prec: sqlDollar[2].ival, Scale: sqlDollar[4].ival} } - case 544: + case 551: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2312 + //line sql.y:2343 { sqlVAL.colType = &DecimalType{} } - case 545: + case 552: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2319 + //line sql.y:2350 { sqlVAL.colType = &IntType{Name: astInt} } - case 546: + case 553: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2323 + //line sql.y:2354 { sqlVAL.colType = &IntType{Name: astInteger} } - case 547: + case 554: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2327 + //line sql.y:2358 { sqlVAL.colType = &IntType{Name: astSmallInt} } - case 548: + case 555: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2331 + //line sql.y:2362 { sqlVAL.colType = &IntType{Name: astBigInt} } - case 549: + case 556: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2335 + //line sql.y:2366 { sqlVAL.colType = &FloatType{Name: astReal} } - case 550: + case 557: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2339 + //line sql.y:2370 { sqlVAL.colType = &FloatType{Name: astFloat, Prec: sqlDollar[2].ival} } - case 551: + case 558: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2343 + //line sql.y:2374 { sqlVAL.colType = &FloatType{Name: astDouble} } - case 552: + case 559: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2347 + //line sql.y:2378 { sqlVAL.colType = sqlDollar[2].colType sqlVAL.colType.(*DecimalType).Name = astDecimal } - case 553: + case 560: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2352 + //line sql.y:2383 { sqlVAL.colType = sqlDollar[2].colType sqlVAL.colType.(*DecimalType).Name = astDecimal } - case 554: + case 561: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2357 + //line sql.y:2388 { sqlVAL.colType = sqlDollar[2].colType sqlVAL.colType.(*DecimalType).Name = astNumeric } - case 555: + case 562: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2362 + //line sql.y:2393 { sqlVAL.colType = &BoolType{} } - case 556: + case 563: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2368 + //line sql.y:2399 { sqlVAL.ival = sqlDollar[2].ival } - case 557: + case 564: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2372 + //line sql.y:2403 { sqlVAL.ival = 0 } - case 562: + case 569: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2390 + //line sql.y:2421 { sqlVAL.colType = &BitType{N: sqlDollar[4].ival} } - case 563: + case 570: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2396 + //line sql.y:2427 { sqlVAL.colType = &BitType{} } - case 568: + case 575: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2412 + //line sql.y:2443 { sqlVAL.colType = sqlDollar[1].colType sqlVAL.colType.(*CharType).N = sqlDollar[3].ival } - case 569: + case 576: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2419 + //line sql.y:2450 { sqlVAL.colType = sqlDollar[1].colType } - case 570: + case 577: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2425 + //line sql.y:2456 { sqlVAL.colType = &CharType{Name: astChar} } - case 571: + case 578: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2429 + //line sql.y:2460 { sqlVAL.colType = &CharType{Name: astChar} } - case 572: + case 579: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2433 + //line sql.y:2464 { sqlVAL.colType = &CharType{Name: astVarChar} } - case 573: + case 580: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2438 + //line sql.y:2469 { } - case 574: + case 581: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2439 + //line sql.y:2470 { } - case 575: + case 582: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2442 + //line sql.y:2473 { } - case 576: + case 583: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2443 + //line sql.y:2474 { } - case 577: + case 584: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2448 + //line sql.y:2479 { sqlVAL.colType = &DateType{} } - case 578: + case 585: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2452 + //line sql.y:2483 { sqlVAL.colType = &TimestampType{} } - case 579: + case 586: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2456 + //line sql.y:2487 { sqlVAL.colType = &TimestampType{} } - case 580: + case 587: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2460 + //line sql.y:2491 { sqlVAL.colType = &TimeType{} } - case 581: + case 588: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2464 + //line sql.y:2495 { sqlVAL.colType = &TimeType{} } - case 582: + case 589: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2469 + //line sql.y:2500 { } - case 583: + case 590: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2472 + //line sql.y:2503 { } - case 584: + case 591: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2473 + //line sql.y:2504 { } - case 585: + case 592: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2474 + //line sql.y:2505 { } - case 586: + case 593: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2477 + //line sql.y:2508 { } - case 587: + case 594: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2478 + //line sql.y:2509 { } - case 588: + case 595: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2479 + //line sql.y:2510 { } - case 589: + case 596: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2480 + //line sql.y:2511 { } - case 590: + case 597: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2481 + //line sql.y:2512 { } - case 591: + case 598: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2482 + //line sql.y:2513 { } - case 592: + case 599: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2483 + //line sql.y:2514 { } - case 593: + case 600: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2484 + //line sql.y:2515 { } - case 594: + case 601: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2485 + //line sql.y:2516 { } - case 595: + case 602: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2486 + //line sql.y:2517 { } - case 596: + case 603: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2487 + //line sql.y:2518 { } - case 597: + case 604: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2488 + //line sql.y:2519 { } - case 598: + case 605: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2489 + //line sql.y:2520 { } - case 599: + case 606: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2490 + //line sql.y:2521 { } - case 600: + case 607: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2493 + //line sql.y:2524 { } - case 601: + case 608: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2494 + //line sql.y:2525 { } - case 603: + case 610: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2518 + //line sql.y:2549 { sqlVAL.expr = &CastExpr{Expr: sqlDollar[1].expr, Type: sqlDollar[3].colType} } - case 604: + case 611: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2521 + //line sql.y:2552 { } - case 605: + case 612: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2522 + //line sql.y:2553 { } - case 606: + case 613: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2531 + //line sql.y:2562 { sqlVAL.expr = &UnaryExpr{Operator: UnaryPlus, Expr: sqlDollar[2].expr} } - case 607: + case 614: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2535 + //line sql.y:2566 { sqlVAL.expr = &UnaryExpr{Operator: UnaryMinus, Expr: sqlDollar[2].expr} } - case 608: + case 615: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2539 + //line sql.y:2570 { sqlVAL.expr = &UnaryExpr{Operator: UnaryComplement, Expr: sqlDollar[2].expr} } - case 609: + case 616: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2543 + //line sql.y:2574 { sqlVAL.expr = &BinaryExpr{Operator: Plus, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 610: + case 617: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2547 + //line sql.y:2578 { sqlVAL.expr = &BinaryExpr{Operator: Minus, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 611: + case 618: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2551 + //line sql.y:2582 { sqlVAL.expr = &BinaryExpr{Operator: Mult, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 612: + case 619: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2555 + //line sql.y:2586 { sqlVAL.expr = &BinaryExpr{Operator: Div, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 613: + case 620: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2559 + //line sql.y:2590 { sqlVAL.expr = &BinaryExpr{Operator: Mod, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 614: + case 621: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2563 + //line sql.y:2594 { sqlVAL.expr = &BinaryExpr{Operator: Exp, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 615: + case 622: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2567 + //line sql.y:2598 { sqlVAL.expr = &BinaryExpr{Operator: Bitand, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 616: + case 623: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2571 + //line sql.y:2602 { sqlVAL.expr = &BinaryExpr{Operator: Bitor, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 617: + case 624: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2575 + //line sql.y:2606 { sqlVAL.expr = &BinaryExpr{Operator: Bitxor, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 618: + case 625: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2579 + //line sql.y:2610 { sqlVAL.expr = &ComparisonExpr{Operator: LT, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 619: + case 626: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2583 + //line sql.y:2614 { sqlVAL.expr = &ComparisonExpr{Operator: GT, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 620: + case 627: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2587 + //line sql.y:2618 { sqlVAL.expr = &ComparisonExpr{Operator: EQ, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 621: + case 628: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2591 + //line sql.y:2622 { sqlVAL.expr = &BinaryExpr{Operator: Concat, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 622: + case 629: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2595 + //line sql.y:2626 { sqlVAL.expr = &ComparisonExpr{Operator: LE, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 623: + case 630: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2599 + //line sql.y:2630 { sqlVAL.expr = &ComparisonExpr{Operator: GE, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 624: + case 631: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2603 + //line sql.y:2634 { sqlVAL.expr = &ComparisonExpr{Operator: NE, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 625: + case 632: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2607 + //line sql.y:2638 { sqlVAL.expr = &AndExpr{Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 626: + case 633: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2611 + //line sql.y:2642 { sqlVAL.expr = &OrExpr{Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 627: + case 634: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2615 + //line sql.y:2646 { sqlVAL.expr = &NotExpr{Expr: sqlDollar[2].expr} } - case 628: + case 635: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2619 + //line sql.y:2650 { sqlVAL.expr = &NotExpr{Expr: sqlDollar[2].expr} } - case 629: + case 636: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2623 + //line sql.y:2654 { sqlVAL.expr = &ComparisonExpr{Operator: Like, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 630: + case 637: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2627 + //line sql.y:2658 { sqlVAL.expr = &ComparisonExpr{Operator: Like, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 631: + case 638: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2631 + //line sql.y:2662 { sqlVAL.expr = &ComparisonExpr{Operator: NotLike, Left: sqlDollar[1].expr, Right: sqlDollar[4].expr} } - case 632: + case 639: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2635 + //line sql.y:2666 { sqlVAL.expr = &ComparisonExpr{Operator: NotLike, Left: sqlDollar[1].expr, Right: sqlDollar[4].expr} } - case 633: + case 640: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2638 + //line sql.y:2669 { } - case 634: + case 641: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2639 + //line sql.y:2670 { } - case 635: + case 642: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2640 + //line sql.y:2671 { } - case 636: + case 643: sqlDollar = sqlS[sqlpt-7 : sqlpt+1] - //line sql.y:2641 + //line sql.y:2672 { } - case 637: + case 644: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2643 + //line sql.y:2674 { sqlVAL.expr = &NullCheck{Expr: sqlDollar[1].expr} } - case 638: + case 645: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2647 + //line sql.y:2678 { sqlVAL.expr = &NullCheck{Not: true, Expr: sqlDollar[1].expr} } - case 639: + case 646: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2650 + //line sql.y:2681 { } - case 640: + case 647: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2651 + //line sql.y:2682 { } - case 641: + case 648: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2652 + //line sql.y:2683 { } - case 642: + case 649: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2653 + //line sql.y:2684 { } - case 643: + case 650: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2654 + //line sql.y:2685 { } - case 644: + case 651: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2655 + //line sql.y:2686 { } - case 645: + case 652: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2656 + //line sql.y:2687 { } - case 646: + case 653: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2657 + //line sql.y:2688 { } - case 647: + case 654: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2658 + //line sql.y:2689 { } - case 648: + case 655: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2659 + //line sql.y:2690 { } - case 649: + case 656: sqlDollar = sqlS[sqlpt-7 : sqlpt+1] - //line sql.y:2660 + //line sql.y:2691 { } - case 650: + case 657: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2662 + //line sql.y:2693 { sqlVAL.expr = &RangeCond{Left: sqlDollar[1].expr, From: sqlDollar[4].expr, To: sqlDollar[6].expr} } - case 651: + case 658: sqlDollar = sqlS[sqlpt-7 : sqlpt+1] - //line sql.y:2666 + //line sql.y:2697 { sqlVAL.expr = &RangeCond{Not: true, Left: sqlDollar[1].expr, From: sqlDollar[5].expr, To: sqlDollar[7].expr} } - case 652: + case 659: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2670 + //line sql.y:2701 { sqlVAL.expr = &RangeCond{Left: sqlDollar[1].expr, From: sqlDollar[4].expr, To: sqlDollar[6].expr} } - case 653: + case 660: sqlDollar = sqlS[sqlpt-7 : sqlpt+1] - //line sql.y:2674 + //line sql.y:2705 { sqlVAL.expr = &RangeCond{Not: true, Left: sqlDollar[1].expr, From: sqlDollar[5].expr, To: sqlDollar[7].expr} } - case 654: + case 661: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2678 + //line sql.y:2709 { sqlVAL.expr = &ComparisonExpr{Operator: In, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 655: + case 662: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2682 + //line sql.y:2713 { sqlVAL.expr = &ComparisonExpr{Operator: NotIn, Left: sqlDollar[1].expr, Right: sqlDollar[4].expr} } - case 656: + case 663: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2685 + //line sql.y:2716 { } - case 657: + case 664: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2686 + //line sql.y:2717 { } - case 658: + case 665: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2687 + //line sql.y:2718 { } - case 659: + case 666: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2688 + //line sql.y:2719 { } - case 660: + case 667: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2689 + //line sql.y:2720 { } - case 662: + case 669: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2701 + //line sql.y:2732 { sqlVAL.expr = &CastExpr{Expr: sqlDollar[1].expr, Type: sqlDollar[3].colType} } - case 663: + case 670: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2705 + //line sql.y:2736 { sqlVAL.expr = &UnaryExpr{Operator: UnaryPlus, Expr: sqlDollar[2].expr} } - case 664: + case 671: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2709 + //line sql.y:2740 { sqlVAL.expr = &UnaryExpr{Operator: UnaryMinus, Expr: sqlDollar[2].expr} } - case 665: + case 672: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2713 + //line sql.y:2744 { sqlVAL.expr = &UnaryExpr{Operator: UnaryComplement, Expr: sqlDollar[2].expr} } - case 666: + case 673: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2717 + //line sql.y:2748 { sqlVAL.expr = &BinaryExpr{Operator: Plus, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 667: + case 674: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2721 + //line sql.y:2752 { sqlVAL.expr = &BinaryExpr{Operator: Minus, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 668: + case 675: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2725 + //line sql.y:2756 { sqlVAL.expr = &BinaryExpr{Operator: Mult, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 669: + case 676: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2729 + //line sql.y:2760 { sqlVAL.expr = &BinaryExpr{Operator: Div, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 670: + case 677: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2733 + //line sql.y:2764 { sqlVAL.expr = &BinaryExpr{Operator: Mod, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 671: + case 678: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2737 + //line sql.y:2768 { sqlVAL.expr = &BinaryExpr{Operator: Exp, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 672: + case 679: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2741 + //line sql.y:2772 { sqlVAL.expr = &BinaryExpr{Operator: Bitand, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 673: + case 680: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2745 + //line sql.y:2776 { sqlVAL.expr = &BinaryExpr{Operator: Bitor, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 674: + case 681: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2749 + //line sql.y:2780 { sqlVAL.expr = &BinaryExpr{Operator: Bitxor, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 675: + case 682: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2753 + //line sql.y:2784 { sqlVAL.expr = &ComparisonExpr{Operator: LT, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 676: + case 683: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2757 + //line sql.y:2788 { sqlVAL.expr = &ComparisonExpr{Operator: GT, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 677: + case 684: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2761 + //line sql.y:2792 { sqlVAL.expr = &ComparisonExpr{Operator: EQ, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 678: + case 685: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2765 + //line sql.y:2796 { sqlVAL.expr = &BinaryExpr{Operator: Concat, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 679: + case 686: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2769 + //line sql.y:2800 { sqlVAL.expr = &ComparisonExpr{Operator: LE, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 680: + case 687: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2773 + //line sql.y:2804 { sqlVAL.expr = &ComparisonExpr{Operator: GE, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 681: + case 688: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2777 + //line sql.y:2808 { sqlVAL.expr = &ComparisonExpr{Operator: NE, Left: sqlDollar[1].expr, Right: sqlDollar[3].expr} } - case 682: + case 689: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2780 + //line sql.y:2811 { } - case 683: + case 690: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2781 + //line sql.y:2812 { } - case 684: + case 691: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2782 + //line sql.y:2813 { } - case 685: + case 692: sqlDollar = sqlS[sqlpt-7 : sqlpt+1] - //line sql.y:2783 + //line sql.y:2814 { } - case 686: + case 693: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2784 + //line sql.y:2815 { } - case 687: + case 694: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2785 + //line sql.y:2816 { } - case 688: + case 695: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2795 + //line sql.y:2826 { sqlVAL.expr = sqlDollar[1].qname } - case 690: + case 697: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2800 + //line sql.y:2831 { sqlVAL.expr = ValArg(sqlDollar[1].ival) } - case 691: + case 698: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2804 + //line sql.y:2835 { sqlVAL.expr = &ParenExpr{Expr: sqlDollar[2].expr} } - case 694: + case 701: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2810 + //line sql.y:2841 { sqlVAL.expr = &Subquery{Select: sqlDollar[1].stmt.(SelectStatement)} } - case 695: + case 702: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2814 + //line sql.y:2845 { sqlVAL.expr = &Subquery{Select: sqlDollar[1].stmt.(SelectStatement)} } - case 696: + case 703: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2818 + //line sql.y:2849 { sqlVAL.expr = &ExistsExpr{Subquery: &Subquery{Select: sqlDollar[2].stmt.(SelectStatement)}} } - case 697: + case 704: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2821 + //line sql.y:2852 { } - case 698: + case 705: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2822 + //line sql.y:2853 { } - case 699: + case 706: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2824 + //line sql.y:2855 { sqlVAL.expr = sqlDollar[1].expr } - case 700: + case 707: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2828 + //line sql.y:2859 { sqlVAL.expr = sqlDollar[1].expr } - case 701: + case 708: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2831 + //line sql.y:2862 { } - case 702: + case 709: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2835 + //line sql.y:2866 { sqlVAL.expr = &FuncExpr{Name: sqlDollar[1].qname} } - case 703: + case 710: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2839 + //line sql.y:2870 { // TODO(pmattis): Support opt_sort_clause or remove it? sqlVAL.expr = &FuncExpr{Name: sqlDollar[1].qname, Exprs: sqlDollar[3].exprs} } - case 704: + case 711: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2844 + //line sql.y:2875 { panic("TODO(pmattis): unimplemented)") } - case 705: + case 712: sqlDollar = sqlS[sqlpt-8 : sqlpt+1] - //line sql.y:2848 + //line sql.y:2879 { panic("TODO(pmattis): unimplemented)") } - case 706: + case 713: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2852 + //line sql.y:2883 { panic("TODO(pmattis): unimplemented)") } - case 707: + case 714: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2856 + //line sql.y:2887 { // TODO(pmattis): Support opt_sort_clause or remove it? sqlVAL.expr = &FuncExpr{Name: sqlDollar[1].qname, Distinct: true, Exprs: sqlDollar[4].exprs} } - case 708: + case 715: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2861 + //line sql.y:2892 { sqlVAL.expr = &FuncExpr{Name: sqlDollar[1].qname, Exprs: Exprs{StarExpr}} } - case 709: + case 716: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2874 + //line sql.y:2905 { // TODO(pmattis): Support within_group_clause, filter_clause and // over_clause? sqlVAL.expr = sqlDollar[1].expr } - case 710: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2880 - { - sqlVAL.expr = sqlDollar[1].expr - } - case 711: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2889 - { - } - case 712: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2890 - { - } - case 713: - sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2894 - { - } - case 714: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2895 - { - } - case 715: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2896 - { - } - case 716: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2897 - { - } case 717: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2898 + //line sql.y:2911 { + sqlVAL.expr = sqlDollar[1].expr } case 718: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2899 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:2920 { } case 719: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2900 + //line sql.y:2921 { } case 720: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2901 + sqlDollar = sqlS[sqlpt-5 : sqlpt+1] + //line sql.y:2925 { } case 721: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2902 + //line sql.y:2926 { } case 722: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2903 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:2927 { } case 723: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2904 + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:2928 { } case 724: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2905 + //line sql.y:2929 { } case 725: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2906 + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:2930 { } case 726: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2907 + //line sql.y:2931 { } case 727: - sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2909 + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:2932 { - sqlVAL.expr = &CastExpr{Expr: sqlDollar[3].expr, Type: sqlDollar[5].colType} } case 728: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2912 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:2933 { } case 729: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2913 + //line sql.y:2934 { } case 730: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2914 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:2935 { } case 731: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2915 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:2936 { } case 732: - sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2916 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:2937 { } case 733: - sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2917 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:2938 { } case 734: - sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2918 + sqlDollar = sqlS[sqlpt-6 : sqlpt+1] + //line sql.y:2940 { + sqlVAL.expr = &CastExpr{Expr: sqlDollar[3].expr, Type: sqlDollar[5].colType} } case 735: - sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2919 + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:2943 { } case 736: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2920 + //line sql.y:2944 { } case 737: - sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2921 + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:2945 { } case 738: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2922 + //line sql.y:2946 { } case 739: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2923 + sqlDollar = sqlS[sqlpt-6 : sqlpt+1] + //line sql.y:2947 { } case 740: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2924 + sqlDollar = sqlS[sqlpt-5 : sqlpt+1] + //line sql.y:2948 { } case 741: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2928 + //line sql.y:2949 { } case 742: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2929 + sqlDollar = sqlS[sqlpt-5 : sqlpt+1] + //line sql.y:2950 { } case 743: - sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:2932 + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:2951 { } case 744: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2933 + sqlDollar = sqlS[sqlpt-6 : sqlpt+1] + //line sql.y:2952 { } case 745: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2937 + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:2953 { } case 746: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2938 + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:2954 { } case 747: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2941 + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:2955 { } case 748: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2942 + sqlDollar = sqlS[sqlpt-5 : sqlpt+1] + //line sql.y:2959 { } case 749: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2945 + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:2960 { } case 750: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2948 + sqlDollar = sqlS[sqlpt-5 : sqlpt+1] + //line sql.y:2963 { } case 751: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2949 + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:2964 { } case 752: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2950 + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:2968 { } case 753: - sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:2954 + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:2969 { } case 754: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2965 + //line sql.y:2972 { } case 755: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2966 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:2973 { } case 756: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:2969 + //line sql.y:2976 { } case 757: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2970 + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:2979 { } case 758: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2978 + //line sql.y:2980 { } case 759: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2979 + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:2981 { } case 760: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:2980 + sqlDollar = sqlS[sqlpt-6 : sqlpt+1] + //line sql.y:2985 { } case 761: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:2983 + //line sql.y:2996 { } case 762: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:2984 + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:2997 { } case 763: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2990 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:3000 { } case 764: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2991 + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:3001 { } case 765: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2992 + //line sql.y:3009 { } case 766: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2993 + //line sql.y:3010 { } case 767: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:2994 + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:3011 { } case 768: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:3005 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3014 { - sqlVAL.expr = Row(sqlDollar[3].exprs) } case 769: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3009 + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:3015 { - sqlVAL.expr = Row(nil) } case 770: - sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:3013 + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:3021 { - sqlVAL.expr = Tuple(append(sqlDollar[2].exprs, sqlDollar[4].expr)) } case 771: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:3019 + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:3022 { - sqlVAL.expr = Row(sqlDollar[3].exprs) } case 772: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] //line sql.y:3023 { - sqlVAL.expr = Row(nil) } case 773: - sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:3029 + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:3024 { - sqlVAL.expr = Tuple(append(sqlDollar[2].exprs, sqlDollar[4].expr)) } case 774: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3034 + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:3025 { } case 775: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3035 + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:3036 { + sqlVAL.expr = Row(sqlDollar[3].exprs) } case 776: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3036 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:3040 { + sqlVAL.expr = Row(nil) } case 777: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3039 + sqlDollar = sqlS[sqlpt-5 : sqlpt+1] + //line sql.y:3044 { + sqlVAL.expr = Tuple(append(sqlDollar[2].exprs, sqlDollar[4].expr)) } case 778: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3040 + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:3050 { + sqlVAL.expr = Row(sqlDollar[3].exprs) } case 779: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3041 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:3054 { + sqlVAL.expr = Row(nil) } case 780: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3042 + sqlDollar = sqlS[sqlpt-5 : sqlpt+1] + //line sql.y:3060 { + sqlVAL.expr = Tuple(append(sqlDollar[2].exprs, sqlDollar[4].expr)) } case 781: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3043 + //line sql.y:3065 { } case 782: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3044 + //line sql.y:3066 { } case 783: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3045 + //line sql.y:3067 { } case 784: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3046 + //line sql.y:3070 { } case 785: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3047 + //line sql.y:3071 { } case 786: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3048 + //line sql.y:3072 { } case 787: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3049 + //line sql.y:3073 { } case 788: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3050 + //line sql.y:3074 { } case 789: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3051 + //line sql.y:3075 { } case 790: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3052 + //line sql.y:3076 { } case 791: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3053 + //line sql.y:3077 { } case 792: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3054 + //line sql.y:3078 { } case 793: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3057 + //line sql.y:3079 { } case 794: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3058 + //line sql.y:3080 { } case 795: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3059 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3081 { } case 796: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3070 + //line sql.y:3082 { - sqlVAL.exprs = Exprs{sqlDollar[1].expr} } case 797: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3074 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3083 { - sqlVAL.exprs = append(sqlDollar[1].exprs, sqlDollar[3].expr) } case 798: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3079 + //line sql.y:3084 { } case 799: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3080 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3085 { } case 800: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3083 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3088 { } case 801: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3084 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3089 { } case 802: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3085 + //line sql.y:3090 { } case 803: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3088 + //line sql.y:3101 { + sqlVAL.exprs = Exprs{sqlDollar[1].expr} } case 804: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3089 + //line sql.y:3105 { + sqlVAL.exprs = append(sqlDollar[1].exprs, sqlDollar[3].expr) } case 805: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3092 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3110 { } case 806: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:3093 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:3111 { } case 807: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3098 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:3114 { } case 808: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3099 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:3115 { } case 809: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3100 + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:3116 { } case 810: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3101 + //line sql.y:3119 { } case 811: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3102 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:3120 { } case 812: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3103 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:3123 { } case 813: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3104 + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:3124 { } case 814: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3105 + //line sql.y:3129 { } case 815: - sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:3113 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3130 { } case 816: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3114 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3131 { } case 817: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3117 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3132 { } case 818: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3121 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3133 { } case 819: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:3122 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3134 { } case 820: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3136 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3135 { } case 821: - sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3137 + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3136 { } case 822: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3138 + sqlDollar = sqlS[sqlpt-4 : sqlpt+1] + //line sql.y:3144 { } case 823: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3139 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:3145 { } case 824: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3140 + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:3148 { } case 825: - sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:3141 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:3152 { } case 826: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3144 + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:3153 { } case 827: - sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3147 + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:3167 { } case 828: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3150 + //line sql.y:3168 { } case 829: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3151 + //line sql.y:3169 { } case 830: - sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3152 + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:3170 { } case 831: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3156 + //line sql.y:3171 { - sqlVAL.expr = &Subquery{Select: sqlDollar[1].stmt.(SelectStatement)} } case 832: + sqlDollar = sqlS[sqlpt-0 : sqlpt+1] + //line sql.y:3172 + { + } + case 833: + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:3175 + { + } + case 834: + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:3178 + { + } + case 835: + sqlDollar = sqlS[sqlpt-3 : sqlpt+1] + //line sql.y:3181 + { + } + case 836: + sqlDollar = sqlS[sqlpt-2 : sqlpt+1] + //line sql.y:3182 + { + } + case 837: + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3183 + { + } + case 838: + sqlDollar = sqlS[sqlpt-1 : sqlpt+1] + //line sql.y:3187 + { + sqlVAL.expr = &Subquery{Select: sqlDollar[1].stmt.(SelectStatement)} + } + case 839: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3160 + //line sql.y:3191 { sqlVAL.expr = Tuple(sqlDollar[2].exprs) } - case 833: + case 840: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:3171 + //line sql.y:3202 { sqlVAL.expr = &CaseExpr{Expr: sqlDollar[2].expr, Whens: sqlDollar[3].whens, Else: sqlDollar[4].expr} } - case 834: + case 841: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3178 + //line sql.y:3209 { sqlVAL.whens = []*When{sqlDollar[1].when} } - case 835: + case 842: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3182 + //line sql.y:3213 { sqlVAL.whens = append(sqlDollar[1].whens, sqlDollar[2].when) } - case 836: + case 843: sqlDollar = sqlS[sqlpt-4 : sqlpt+1] - //line sql.y:3188 + //line sql.y:3219 { sqlVAL.when = &When{Cond: sqlDollar[2].expr, Val: sqlDollar[4].expr} } - case 837: + case 844: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3194 + //line sql.y:3225 { sqlVAL.expr = sqlDollar[2].expr } - case 838: + case 845: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:3198 + //line sql.y:3229 { sqlVAL.expr = nil } - case 840: + case 847: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:3205 + //line sql.y:3236 { sqlVAL.expr = nil } - case 841: + case 848: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3211 + //line sql.y:3242 { sqlVAL.indirectElem = NameIndirection(sqlDollar[2].str) } - case 842: + case 849: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3215 + //line sql.y:3246 { sqlVAL.indirectElem = qualifiedStar } - case 843: + case 850: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3219 + //line sql.y:3250 { sqlVAL.indirectElem = IndexIndirection(sqlDollar[2].str) } - case 844: + case 851: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3223 + //line sql.y:3254 { sqlVAL.indirectElem = &ArrayIndirection{Begin: sqlDollar[2].expr} } - case 845: + case 852: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:3227 + //line sql.y:3258 { sqlVAL.indirectElem = &ArrayIndirection{Begin: sqlDollar[2].expr, End: sqlDollar[4].expr} } - case 846: + case 853: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3233 + //line sql.y:3264 { sqlVAL.indirect = Indirection{sqlDollar[1].indirectElem} } - case 847: + case 854: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3237 + //line sql.y:3268 { sqlVAL.indirect = append(sqlDollar[1].indirect, sqlDollar[2].indirectElem) } - case 848: + case 855: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:3243 + //line sql.y:3274 { sqlVAL.indirect = nil } - case 849: + case 856: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3247 + //line sql.y:3278 { sqlVAL.indirect = append(sqlDollar[1].indirect, sqlDollar[2].indirectElem) } - case 850: + case 857: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3252 + //line sql.y:3283 { } - case 851: + case 858: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:3253 + //line sql.y:3284 { } - case 853: + case 860: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3262 + //line sql.y:3293 { sqlVAL.expr = nil } - case 854: + case 861: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3268 + //line sql.y:3299 { sqlVAL.exprs = []Expr{sqlDollar[1].expr} } - case 855: + case 862: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3272 + //line sql.y:3303 { sqlVAL.exprs = append(sqlDollar[1].exprs, sqlDollar[3].expr) } - case 856: + case 863: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3281 + //line sql.y:3312 { sqlVAL.exprs = sqlDollar[2].exprs } - case 858: + case 865: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:3289 + //line sql.y:3320 { sqlVAL.selExprs = nil } - case 859: + case 866: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3295 + //line sql.y:3326 { sqlVAL.selExprs = SelectExprs{sqlDollar[1].selExpr} } - case 860: + case 867: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3299 + //line sql.y:3330 { sqlVAL.selExprs = append(sqlDollar[1].selExprs, sqlDollar[3].selExpr) } - case 861: + case 868: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3305 + //line sql.y:3336 { sqlVAL.selExpr = SelectExpr{Expr: sqlDollar[1].expr, As: Name(sqlDollar[3].str)} } - case 862: + case 869: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3314 + //line sql.y:3345 { sqlVAL.selExpr = SelectExpr{Expr: sqlDollar[1].expr, As: Name(sqlDollar[2].str)} } - case 863: + case 870: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3318 + //line sql.y:3349 { sqlVAL.selExpr = SelectExpr{Expr: sqlDollar[1].expr} } - case 864: + case 871: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3322 + //line sql.y:3353 { sqlVAL.selExpr = StarSelectExpr } - case 865: + case 872: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3330 + //line sql.y:3361 { sqlVAL.qnames = QualifiedNames{sqlDollar[1].qname} } - case 866: + case 873: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3334 + //line sql.y:3365 { sqlVAL.qnames = append(sqlDollar[1].qnames, sqlDollar[3].qname) } - case 867: + case 874: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3345 + //line sql.y:3376 { sqlVAL.qname = &QualifiedName{Base: Name(sqlDollar[1].str)} } - case 868: + case 875: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3349 + //line sql.y:3380 { sqlVAL.qname = &QualifiedName{Base: Name(sqlDollar[1].str), Indirect: sqlDollar[2].indirect} } - case 869: + case 876: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3355 + //line sql.y:3386 { sqlVAL.strs = []string{sqlDollar[1].str} } - case 870: + case 877: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3359 + //line sql.y:3390 { sqlVAL.strs = append(sqlDollar[1].strs, sqlDollar[3].str) } - case 871: + case 878: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3365 + //line sql.y:3396 { sqlVAL.strs = sqlDollar[2].strs } - case 872: + case 879: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:3368 + //line sql.y:3399 { } - case 873: + case 880: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3378 + //line sql.y:3409 { sqlVAL.qname = &QualifiedName{Base: Name(sqlDollar[1].str)} } - case 874: + case 881: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3382 + //line sql.y:3413 { sqlVAL.qname = &QualifiedName{Base: Name(sqlDollar[1].str), Indirect: sqlDollar[2].indirect} } - case 875: + case 882: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3389 + //line sql.y:3420 { sqlVAL.expr = IntVal(sqlDollar[1].ival) } - case 876: + case 883: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3393 + //line sql.y:3424 { sqlVAL.expr = NumVal(sqlDollar[1].str) } - case 877: + case 884: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3397 + //line sql.y:3428 { // TODO(pmattis): string literal sqlVAL.expr = StrVal(sqlDollar[1].str) } - case 878: + case 885: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3402 + //line sql.y:3433 { // TODO(pmattis): bit literal. sqlVAL.expr = StrVal(sqlDollar[1].str) } - case 879: + case 886: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3407 + //line sql.y:3438 { // TODO(pmattis): hex literal. sqlVAL.expr = StrVal(sqlDollar[1].str) } - case 880: + case 887: sqlDollar = sqlS[sqlpt-6 : sqlpt+1] - //line sql.y:3411 + //line sql.y:3442 { } - case 881: + case 888: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3412 + //line sql.y:3443 { } - case 882: + case 889: sqlDollar = sqlS[sqlpt-3 : sqlpt+1] - //line sql.y:3413 + //line sql.y:3444 { } - case 883: + case 890: sqlDollar = sqlS[sqlpt-5 : sqlpt+1] - //line sql.y:3414 + //line sql.y:3445 { } - case 884: + case 891: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3416 + //line sql.y:3447 { sqlVAL.expr = BoolVal(true) } - case 885: + case 892: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3420 + //line sql.y:3451 { sqlVAL.expr = BoolVal(false) } - case 886: + case 893: sqlDollar = sqlS[sqlpt-1 : sqlpt+1] - //line sql.y:3424 + //line sql.y:3455 { sqlVAL.expr = NullVal{} } - case 888: + case 895: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3431 + //line sql.y:3462 { sqlVAL.ival = +sqlDollar[2].ival } - case 889: + case 896: sqlDollar = sqlS[sqlpt-2 : sqlpt+1] - //line sql.y:3435 + //line sql.y:3466 { sqlVAL.ival = -sqlDollar[2].ival } - case 894: + case 901: sqlDollar = sqlS[sqlpt-0 : sqlpt+1] - //line sql.y:3457 + //line sql.y:3488 { sqlVAL.str = "" } diff --git a/sql/parser/sql.y b/sql/parser/sql.y index 478a421b811..0ce7fec1e79 100644 --- a/sql/parser/sql.y +++ b/sql/parser/sql.y @@ -20,6 +20,7 @@ %{ package parser +import "github.com/cockroachdb/cockroach/structured" %} %union { @@ -54,8 +55,8 @@ package parser limit *Limit targetList TargetList targetListPtr *TargetList - privilegeType PrivilegeType - privilegeList PrivilegeList + privilegeType structured.Privilege + privilegeList structured.PrivilegeList } %type stmt_block @@ -770,31 +771,61 @@ privilege_target: $$ = TargetList{Databases: NameList($2)} } +// ALL is always by itself. privileges: ALL { - $$ = []PrivilegeType{PrivilegeAll} + $$ = structured.PrivilegeList{structured.Privilege_ALL} } | privilege_list { } privilege_list: privilege { - $$ = []PrivilegeType{$1} + $$ = structured.PrivilegeList{$1} } | privilege_list ',' privilege { $$ = append($1, $3) } +// This list must match the list of privileges in structured/privilege.proto. privilege: - READ + CREATE { - $$ = PrivilegeRead + $$ = structured.Privilege_CREATE } - | WRITE +| DROP + { + $$ = structured.Privilege_DROP + } +| GRANT + { + $$ = structured.Privilege_GRANT + } +| SELECT + { + $$ = structured.Privilege_SELECT + } +| INSERT + { + $$ = structured.Privilege_INSERT + } +| DELETE + { + $$ = structured.Privilege_DELETE + } +| UPDATE + { + $$ = structured.Privilege_UPDATE + } +| READ + { + $$ = structured.Privilege_READ + } +| WRITE { - $$ = PrivilegeWrite + $$ = structured.Privilege_WRITE } // TODO(marc): this should not be 'name', but should instead be a diff --git a/sql/revoke.go b/sql/revoke.go index dc70382a1e1..a6a5694ca0f 100644 --- a/sql/revoke.go +++ b/sql/revoke.go @@ -18,8 +18,6 @@ package sql import ( - "fmt" - "github.com/cockroachdb/cockroach/sql/parser" "github.com/cockroachdb/cockroach/structured" ) @@ -40,12 +38,15 @@ func (p *planner) Revoke(n *parser.Revoke) (planNode, error) { return nil, err } - if !descriptor.HasPrivilege(p.user, parser.PrivilegeWrite) { - return nil, fmt.Errorf("user %s does not have %s privilege on %s %s", - p.user, parser.PrivilegeWrite, descriptor.TypeName(), descriptor.GetName()) + if err := p.checkPrivilege(descriptor, structured.Privilege_WRITE); err != nil { + return nil, err + } + + for _, grantee := range n.Grantees { + descriptor.GetPrivileges().Revoke(grantee, n.Privileges) } - if err := descriptor.Revoke(n); err != nil { + if err := descriptor.Validate(); err != nil { return nil, err } diff --git a/sql/revoke_test.go b/sql/revoke_test.go deleted file mode 100644 index 48cb00ea03e..00000000000 --- a/sql/revoke_test.go +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2015 The Cockroach Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -// implied. See the License for the specific language governing -// permissions and limitations under the License. See the AUTHORS file -// for names of contributors. -// -// Author: Marc Berhault (marc@cockroachlabs.com) - -package sql_test - -import ( - "testing" - - "github.com/cockroachdb/cockroach/security" - "github.com/cockroachdb/cockroach/structured" - "github.com/cockroachdb/cockroach/util/leaktest" -) - -func TestRevoke(t *testing.T) { - defer leaktest.AfterTest(t) - s, sqlDB, kvDB := setup(t) - defer cleanup(s, sqlDB) - - if _, err := sqlDB.Exec(`CREATE DATABASE test`); err != nil { - t.Fatal(err) - } - - // The first `MaxReservedDescID` (plus 0) are set aside. - descKey := structured.MakeDescMetadataKey(structured.MaxReservedDescID + 1) - desc := structured.DatabaseDescriptor{} - if err := kvDB.GetProto(descKey, &desc); err != nil { - t.Fatal(err) - } - if len(desc.Read) != 1 || desc.Read[0] != security.RootUser { - t.Fatalf("wrong Read list: %+v", desc.Read) - } - if len(desc.Write) != 1 || desc.Write[0] != security.RootUser { - t.Fatalf("wrong Write list: %+v", desc.Write) - } - - // Add some permissions. - if _, err := sqlDB.Exec(`GRANT ALL ON DATABASE TEST TO rw`); err != nil { - t.Fatal(err) - } - if _, err := sqlDB.Exec(`GRANT READ ON DATABASE TEST TO reader`); err != nil { - t.Fatal(err) - } - if _, err := sqlDB.Exec(`GRANT WRITE ON DATABASE TEST TO writer`); err != nil { - t.Fatal(err) - } - - if err := kvDB.GetProto(descKey, &desc); err != nil { - t.Fatal(err) - } - if len(desc.Read) != 3 || len(desc.Write) != 3 { - t.Fatalf("wrong read/write length: %d, %d", len(desc.Read), len(desc.Write)) - } - - // Test some revokes. - if _, err := sqlDB.Exec(`REVOKE WRITE ON DATABASE TEST FROM writer,reader`); err != nil { - t.Fatal(err) - } - - if err := kvDB.GetProto(descKey, &desc); err != nil { - t.Fatal(err) - } - if len(desc.Read) != 3 { - t.Fatalf("wrong Read list: %+v", desc.Read) - } - if len(desc.Write) != 2 || desc.Write[0] != security.RootUser || desc.Write[1] != "rw" { - t.Fatalf("wrong Write list: %+v", desc.Write) - } - - // Remove ALL Permissions. - if _, err := sqlDB.Exec(`REVOKE ALL ON DATABASE TEST FROM rw`); err != nil { - t.Fatal(err) - } - - if err := kvDB.GetProto(descKey, &desc); err != nil { - t.Fatal(err) - } - if len(desc.Read) != 2 || desc.Read[0] != "reader" || desc.Read[1] != security.RootUser { - t.Fatalf("wrong Read list: %+v", desc.Read) - } - if len(desc.Write) != 1 || desc.Write[0] != security.RootUser { - t.Fatalf("wrong Write list: %+v", desc.Write) - } - - // Removing permissions for "root" fails. - if _, err := sqlDB.Exec(`REVOKE READ ON DATABASE TEST FROM root`); err == nil { - t.Fatal("unexpected success") - } -} diff --git a/sql/select.go b/sql/select.go index fe543cdd586..9445e9d2e44 100644 --- a/sql/select.go +++ b/sql/select.go @@ -45,9 +45,8 @@ func (p *planner) Select(n *parser.Select) (planNode, error) { return nil, err } - if !desc.HasPrivilege(p.user, parser.PrivilegeRead) { - return nil, fmt.Errorf("user %s does not have %s privilege on table %s", - p.user, parser.PrivilegeRead, desc.Name) + if err := p.checkPrivilege(desc, structured.Privilege_READ); err != nil { + return nil, err } // This is only kosher because we know that getAliasedDesc() succeeded. diff --git a/sql/show.go b/sql/show.go index 90eff269ab3..ade9ff21f82 100644 --- a/sql/show.go +++ b/sql/show.go @@ -91,7 +91,7 @@ func (p *planner) ShowGrants(n *parser.ShowGrants) (planNode, error) { wantedUsers[u] = struct{}{} } - userPrivileges, err := descriptor.Show() + userPrivileges, err := descriptor.GetPrivileges().Show() if err != nil { return nil, err } @@ -104,9 +104,7 @@ func (p *planner) ShowGrants(n *parser.ShowGrants) (planNode, error) { v.rows = append(v.rows, []parser.Datum{ parser.DString(descriptor.GetName()), parser.DString(userPriv.User), - // The default stringer uses ", " separators. Strip whitespace - // to make things easier. - parser.DString(userPriv.Privileges.Join(",")), + parser.DString(userPriv.Privileges), }) } return v, nil diff --git a/sql/testdata/grant_database b/sql/testdata/grant_database index 0738d3741af..87207778441 100644 --- a/sql/testdata/grant_database +++ b/sql/testdata/grant_database @@ -5,23 +5,29 @@ query TTT colnames SHOW GRANTS ON DATABASE a ---- Database User Privileges -a root READ,WRITE +a root ALL statement error TODO\(marc\): implement SHOW GRANT with no targets SHOW GRANTS -statement error root user does not have read privilege -REVOKE READ ON DATABASE a FROM root +statement error root user does not have ALL privileges +REVOKE SELECT ON DATABASE a FROM root statement ok GRANT ALL ON DATABASE a TO readwrite, "test-user" +statement error syntax error +GRANT SELECT,ALL ON DATABASE a TO readwrite + +statement error syntax error +REVOKE SELECT,ALL ON DATABASE a FROM readwrite + query TTT SHOW GRANTS ON DATABASE a ---- -a readwrite READ,WRITE -a root READ,WRITE -a test-user READ,WRITE +a readwrite ALL +a root ALL +a test-user ALL # Create table to inherit DB permissions. statement ok @@ -31,45 +37,49 @@ query TTT colnames SHOW GRANTS ON a.t ---- Table User Privileges -t readwrite READ,WRITE -t root READ,WRITE -t test-user READ,WRITE +t readwrite ALL +t root ALL +t test-user ALL query TTT SHOW GRANTS ON DATABASE a FOR readwrite, "test-user" ---- -a readwrite READ,WRITE -a test-user READ,WRITE +a readwrite ALL +a test-user ALL statement ok -REVOKE WRITE ON DATABASE a FROM "test-user",readwrite +REVOKE INSERT,UPDATE ON DATABASE a FROM "test-user",readwrite query TTT SHOW GRANTS ON DATABASE a ---- -a readwrite READ -a root READ,WRITE -a test-user READ +a readwrite CREATE,DELETE,DROP,GRANT,READ,SELECT,WRITE +a root ALL +a test-user CREATE,DELETE,DROP,GRANT,READ,SELECT,WRITE query TTT SHOW GRANTS ON DATABASE a FOR readwrite, "test-user" ---- -a readwrite READ -a test-user READ +a readwrite CREATE,DELETE,DROP,GRANT,READ,SELECT,WRITE +a test-user CREATE,DELETE,DROP,GRANT,READ,SELECT,WRITE statement ok -REVOKE READ ON DATABASE a FROM "test-user" +REVOKE SELECT ON DATABASE a FROM "test-user" query TTT SHOW GRANTS ON DATABASE a ---- -a readwrite READ -a root READ,WRITE +a readwrite CREATE,DELETE,DROP,GRANT,READ,SELECT,WRITE +a root ALL +a test-user CREATE,DELETE,DROP,GRANT,READ,WRITE + +statement ok +REVOKE ALL ON DATABASE a FROM "test-user" query TTT SHOW GRANTS ON DATABASE a FOR readwrite, "test-user" ---- -a readwrite READ +a readwrite CREATE,DELETE,DROP,GRANT,READ,SELECT,WRITE statement ok REVOKE ALL ON DATABASE a FROM readwrite,"test-user" @@ -77,7 +87,7 @@ REVOKE ALL ON DATABASE a FROM readwrite,"test-user" query TTT SHOW GRANTS ON DATABASE a ---- -a root READ,WRITE +a root ALL query TTT SHOW GRANTS ON DATABASE a FOR readwrite, "test-user" @@ -88,6 +98,6 @@ query TTT colnames SHOW GRANTS ON a.t ---- Table User Privileges -t readwrite READ,WRITE -t root READ,WRITE -t test-user READ,WRITE +t readwrite ALL +t root ALL +t test-user ALL diff --git a/sql/testdata/grant_table b/sql/testdata/grant_table index ac806fd8f75..724f9a72436 100644 --- a/sql/testdata/grant_table +++ b/sql/testdata/grant_table @@ -8,8 +8,8 @@ query TTT colnames SHOW GRANTS ON DATABASE a ---- Database User Privileges -a readwrite READ,WRITE -a root READ,WRITE +a readwrite ALL +a root ALL statement error table "t" does not exist SHOW GRANTS ON a.t @@ -33,15 +33,15 @@ query TTT colnames SHOW GRANTS ON t ---- Table User Privileges -t readwrite READ,WRITE -t root READ,WRITE +t readwrite ALL +t root ALL query TTT colnames SHOW GRANTS ON a.t ---- Table User Privileges -t readwrite READ,WRITE -t root READ,WRITE +t readwrite ALL +t root ALL statement ok GRANT ALL ON t TO readwrite, "test-user" @@ -49,45 +49,47 @@ GRANT ALL ON t TO readwrite, "test-user" query TTT SHOW GRANTS ON t ---- -t readwrite READ,WRITE -t root READ,WRITE -t test-user READ,WRITE +t readwrite ALL +t root ALL +t test-user ALL query TTT SHOW GRANTS ON t FOR readwrite, "test-user" ---- -t readwrite READ,WRITE -t test-user READ,WRITE +t readwrite ALL +t test-user ALL statement ok -REVOKE WRITE ON t FROM "test-user",readwrite +REVOKE INSERT,DELETE ON t FROM "test-user",readwrite query TTT SHOW GRANTS ON t ---- -t readwrite READ -t root READ,WRITE -t test-user READ +t readwrite CREATE,DROP,GRANT,READ,SELECT,UPDATE,WRITE +t root ALL +t test-user CREATE,DROP,GRANT,READ,SELECT,UPDATE,WRITE query TTT SHOW GRANTS ON t FOR readwrite, "test-user" ---- -t readwrite READ -t test-user READ +t readwrite CREATE,DROP,GRANT,READ,SELECT,UPDATE,WRITE +t test-user CREATE,DROP,GRANT,READ,SELECT,UPDATE,WRITE statement ok -REVOKE READ ON t FROM "test-user" +REVOKE SELECT ON t FROM "test-user" query TTT SHOW GRANTS ON t ---- -t readwrite READ -t root READ,WRITE +t readwrite CREATE,DROP,GRANT,READ,SELECT,UPDATE,WRITE +t root ALL +t test-user CREATE,DROP,GRANT,READ,UPDATE,WRITE query TTT SHOW GRANTS ON t FOR readwrite, "test-user" ---- -t readwrite READ +t readwrite CREATE,DROP,GRANT,READ,SELECT,UPDATE,WRITE +t test-user CREATE,DROP,GRANT,READ,UPDATE,WRITE statement ok REVOKE ALL ON t FROM readwrite,"test-user" @@ -95,7 +97,7 @@ REVOKE ALL ON t FROM readwrite,"test-user" query TTT SHOW GRANTS ON t ---- -t root READ,WRITE +t root ALL query TTT SHOW GRANTS ON t FOR readwrite, "test-user" @@ -106,5 +108,5 @@ query TTT colnames SHOW GRANTS ON DATABASE a ---- Database User Privileges -a readwrite READ,WRITE -a root READ,WRITE +a readwrite ALL +a root ALL diff --git a/sql/truncate.go b/sql/truncate.go index d66ea7708ca..df08aa17c27 100644 --- a/sql/truncate.go +++ b/sql/truncate.go @@ -18,8 +18,6 @@ package sql import ( - "fmt" - "github.com/cockroachdb/cockroach/client" "github.com/cockroachdb/cockroach/proto" "github.com/cockroachdb/cockroach/sql/parser" @@ -40,9 +38,8 @@ func (p *planner) Truncate(n *parser.Truncate) (planNode, error) { return nil, err } - if !tableDesc.HasPrivilege(p.user, parser.PrivilegeWrite) { - return nil, fmt.Errorf("user %s does not have %s privilege on table %s", - p.user, parser.PrivilegeWrite, tableDesc.Name) + if err := p.checkPrivilege(tableDesc, structured.Privilege_WRITE); err != nil { + return nil, err } tablePrefix := structured.MakeTablePrefix(tableDesc.ID) diff --git a/sql/update.go b/sql/update.go index 1f3657984f9..16ce4ea5c5b 100644 --- a/sql/update.go +++ b/sql/update.go @@ -38,9 +38,8 @@ func (p *planner) Update(n *parser.Update) (planNode, error) { return nil, err } - if !tableDesc.HasPrivilege(p.user, parser.PrivilegeWrite) { - return nil, fmt.Errorf("user %s does not have %s privilege on table %s", - p.user, parser.PrivilegeWrite, tableDesc.Name) + if err := p.checkPrivilege(tableDesc, structured.Privilege_WRITE); err != nil { + return nil, err } // Determine which columns we're inserting into. diff --git a/structured/permissions.go b/structured/permissions.go deleted file mode 100644 index 3af6be60369..00000000000 --- a/structured/permissions.go +++ /dev/null @@ -1,185 +0,0 @@ -// Copyright 2015 The Cockroach Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -// implied. See the License for the specific language governing -// permissions and limitations under the License. See the AUTHORS file -// for names of contributors. -// -// Author: Marc Berhault (marc@cockroachlabs.com) - -package structured - -import ( - "fmt" - "sort" - - "github.com/cockroachdb/cockroach/security" - "github.com/cockroachdb/cockroach/sql/parser" -) - -// permissions describes the full set of permissions for a descriptor. -// This is used for easier manipulation of permisssions. -// TODO(marc): we should eventually store ALL as a specific permission, -// so that newly-added permissions will automatically be picked up. -type permissions struct { - read map[string]struct{} - write map[string]struct{} -} - -// permissionsFromDescriptor builds a permissions object from a descriptor. -func permissionsFromDescriptor(descriptor *PrivilegeDescriptor) (*permissions, error) { - p := &permissions{ - read: map[string]struct{}{}, - write: map[string]struct{}{}, - } - - for _, readUser := range descriptor.Read { - p.read[readUser] = struct{}{} - } - for _, writeUser := range descriptor.Write { - p.write[writeUser] = struct{}{} - } - - if err := p.Validate(); err != nil { - return nil, err - } - return p, nil -} - -// Validate verifies the validity of the permissions object. -// For now, this only involves making sure that the root user -// still has all permissions. -func (p *permissions) Validate() error { - if _, ok := p.read[security.RootUser]; !ok { - return fmt.Errorf("%s user does not have read privileges", security.RootUser) - } - if _, ok := p.write[security.RootUser]; !ok { - return fmt.Errorf("%s user does not have write privileges", security.RootUser) - } - return nil -} - -// FillDescriptor writes the permissions from this object into a descriptor. -func (p *permissions) FillDescriptor(descriptor *PrivilegeDescriptor) error { - if err := p.Validate(); err != nil { - return err - } - - descriptor.Read, descriptor.Write = []string{}, []string{} - for u := range p.read { - descriptor.Read = append(descriptor.Read, u) - } - - for u := range p.write { - descriptor.Write = append(descriptor.Write, u) - } - - sort.Strings(descriptor.Read) - sort.Strings(descriptor.Write) - return nil -} - -// addToMap adds all entries in `newUsers` to the `users` map. -func addToMap(users map[string]struct{}, newUsers []string) { - for _, u := range newUsers { - users[u] = struct{}{} - } -} - -// removeFromMap removes all entries in `newUsers` from the `users` map. -func removeFromMap(users map[string]struct{}, newUsers []string) { - for _, u := range newUsers { - delete(users, u) - } -} - -// Grant takes a parser.Grant node and grants the specified privileges to users. -func (p *permissions) Grant(n *parser.Grant) error { - for _, priv := range n.Privileges { - switch priv { - case parser.PrivilegeAll: - addToMap(p.read, n.Grantees) - addToMap(p.write, n.Grantees) - case parser.PrivilegeRead: - addToMap(p.read, n.Grantees) - case parser.PrivilegeWrite: - addToMap(p.write, n.Grantees) - default: - return fmt.Errorf("grant: unknown privilege %q", priv) - } - } - return nil -} - -// Revoke takes a parser.Revoke node and removes the specified privileges from users. -func (p *permissions) Revoke(n *parser.Revoke) error { - for _, priv := range n.Privileges { - switch priv { - case parser.PrivilegeAll: - removeFromMap(p.read, n.Grantees) - removeFromMap(p.write, n.Grantees) - case parser.PrivilegeRead: - removeFromMap(p.read, n.Grantees) - case parser.PrivilegeWrite: - removeFromMap(p.write, n.Grantees) - default: - return fmt.Errorf("revoke: unknown privilege %q", priv) - } - } - return nil -} - -// UserPrivileges contains a user and list of associated privileges. -type UserPrivileges struct { - User string - Privileges parser.PrivilegeList -} - -// UserPrivilegeList is a list of UserPrivileges. -type UserPrivilegeList []*UserPrivileges - -func (upl UserPrivilegeList) Len() int { - return len(upl) -} - -func (upl UserPrivilegeList) Swap(i, j int) { - upl[i], upl[j] = upl[j], upl[i] -} - -func (upl UserPrivilegeList) Less(i, j int) bool { - return upl[i].User < upl[j].User -} - -// Show returns a slice of { user, list of privileges } sorted by user. -func (p *permissions) Show() UserPrivilegeList { - // Combine all privileges by user. - tmp := map[string]*UserPrivileges{} - for u := range p.read { - tmp[u] = &UserPrivileges{User: u, Privileges: []parser.PrivilegeType{parser.PrivilegeRead}} - } - for u := range p.write { - if _, ok := tmp[u]; !ok { - tmp[u] = &UserPrivileges{User: u, Privileges: []parser.PrivilegeType{parser.PrivilegeWrite}} - } else { - tmp[u].Privileges = append(tmp[u].Privileges, parser.PrivilegeWrite) - } - } - - // Put them all into a slice and sort. - ret := make(UserPrivilegeList, len(tmp), len(tmp)) - i := 0 - for _, up := range tmp { - ret[i] = up - i++ - } - sort.Sort(ret) - return ret -} diff --git a/structured/privilege.go b/structured/privilege.go new file mode 100644 index 00000000000..67ed5ec714c --- /dev/null +++ b/structured/privilege.go @@ -0,0 +1,258 @@ +// Copyright 2015 The Cockroach Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +// implied. See the License for the specific language governing +// permissions and limitations under the License. See the AUTHORS file +// for names of contributors. +// +// Author: Marc Berhault (marc@cockroachlabs.com) + +package structured + +import ( + "fmt" + "sort" + "strings" + + "github.com/cockroachdb/cockroach/security" +) + +// PrivilegeList is a list of privileges. +type PrivilegeList []Privilege + +func (pl PrivilegeList) Len() int { + return len(pl) +} + +func (pl PrivilegeList) Swap(i, j int) { + pl[i], pl[j] = pl[j], pl[i] +} + +func (pl PrivilegeList) Less(i, j int) bool { + return pl[i] < pl[j] +} + +// privilegeValues is a convenience variable holding a sorted +// list of privilege values. +var privilegeValues = func() PrivilegeList { + pv := make(PrivilegeList, len(Privilege_name), len(Privilege_name)) + i := 0 + for v := range Privilege_name { + pv[i] = Privilege(v) + i++ + } + sort.Sort(pv) + return pv +}() + +// String implements the Stringer interface. +// This keeps the existing order and uses ", " as separator. +func (pl PrivilegeList) String() string { + ret := make([]string, len(pl), len(pl)) + for i, p := range pl { + ret[i] = p.String() + } + return strings.Join(ret, ", ") +} + +// SortedString is similar to String() but returns +// privileges sorted by name and uses "," as separator. +func (pl PrivilegeList) SortedString() string { + ret := make([]string, len(pl), len(pl)) + for i, p := range pl { + ret[i] = Privilege_name[int32(p)] + } + sort.Strings(ret) + return strings.Join(ret, ",") +} + +// rawToPrivilegeList converts a set of privileges +// into a PrivilegeList. +func rawToPrivilegeList(m uint32) PrivilegeList { + ret := PrivilegeList{} + for _, p := range privilegeValues { + if m&(1<= user + }) + if idx < len(p.Users) && p.Users[idx].User == user { + return p.Users[idx], true + } + return nil, false +} + +// findOrCreateUser looks for a specific user in the list, creating it if needed. +func (p *PrivilegeDescriptor) findOrCreateUser(user string) *UserPrivileges { + idx := sort.Search(len(p.Users), func(i int) bool { + return p.Users[i].User >= user + }) + if idx == len(p.Users) { + // Not found but should be inserted at the end. + p.Users = append(p.Users, &UserPrivileges{User: user}) + } else if p.Users[idx].User == user { + // Found. + } else { + // New element to be inserted at i. + p.Users = append(p.Users, nil) + copy(p.Users[idx+1:], p.Users[idx:]) + p.Users[idx] = &UserPrivileges{User: user} + } + return p.Users[idx] +} + +// removeUser looks for a given user in the list and removes it if present. +func (p *PrivilegeDescriptor) removeUser(user string) { + idx := sort.Search(len(p.Users), func(i int) bool { + return p.Users[i].User >= user + }) + if idx == len(p.Users) || p.Users[idx].User != user { + // Not found. + return + } + + copy(p.Users[idx:], p.Users[idx+1:]) + p.Users[len(p.Users)-1] = nil + p.Users = p.Users[:len(p.Users)-1] +} + +// NewDefaultDatabasePrivilegeDescriptor returns a privilege descriptor +// with ALL privileges for the root user. +func NewDefaultDatabasePrivilegeDescriptor() *PrivilegeDescriptor { + return &PrivilegeDescriptor{ + Users: []*UserPrivileges{ + { + User: security.RootUser, + Privileges: (1 << uint32(Privilege_ALL)), + }, + }, + } +} + +// Grant adds new privileges to this descriptor for a given list of users. +// TODO(marc): if all privileges other than ALL are set, should we collapse +// them into ALL? +func (p *PrivilegeDescriptor) Grant(user string, privileges PrivilegeList) { + userPriv := p.findOrCreateUser(user) + for _, p := range privileges { + if p == Privilege_ALL { + // TODO(marc): even though this should not happen, error out if + // ALL is not the only privilege being granted. + userPriv.Privileges = (1 << uint32(p)) + break + } else if userPriv.Privileges&(1<= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + postIndex := iNdEx + int(stringLen) + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Privileges", wireType) + } + m.Privileges = 0 + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + m.Privileges |= (uint32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + default: + var sizeOfWire int + for { + sizeOfWire++ + wire >>= 7 + if wire == 0 { + break + } + } + iNdEx -= sizeOfWire + skippy, err := skipPrivilege(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthPrivilege + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + return nil +} +func (m *PrivilegeDescriptor) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Users", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + postIndex := iNdEx + msglen + if msglen < 0 { + return ErrInvalidLengthPrivilege + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Users = append(m.Users, &UserPrivileges{}) + if err := m.Users[len(m.Users)-1].Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + var sizeOfWire int + for { + sizeOfWire++ + wire >>= 7 + if wire == 0 { + break + } + } + iNdEx -= sizeOfWire + skippy, err := skipPrivilege(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthPrivilege + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + return nil +} +func skipPrivilege(data []byte) (n int, err error) { + l := len(data) + iNdEx := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if data[iNdEx-1] < 0x80 { + break + } + } + return iNdEx, nil + case 1: + iNdEx += 8 + return iNdEx, nil + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + iNdEx += length + if length < 0 { + return 0, ErrInvalidLengthPrivilege + } + return iNdEx, nil + case 3: + for { + var innerWire uint64 + var start int = iNdEx + for shift := uint(0); ; shift += 7 { + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + innerWire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + innerWireType := int(innerWire & 0x7) + if innerWireType == 4 { + break + } + next, err := skipPrivilege(data[start:]) + if err != nil { + return 0, err + } + iNdEx = start + next + } + return iNdEx, nil + case 4: + return iNdEx, nil + case 5: + iNdEx += 4 + return iNdEx, nil + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + } + panic("unreachable") +} + +var ( + ErrInvalidLengthPrivilege = fmt.Errorf("proto: negative length found during unmarshaling") +) + +func (m *UserPrivileges) Size() (n int) { + var l int + _ = l + l = len(m.User) + n += 1 + l + sovPrivilege(uint64(l)) + n += 1 + sovPrivilege(uint64(m.Privileges)) + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *PrivilegeDescriptor) Size() (n int) { + var l int + _ = l + if len(m.Users) > 0 { + for _, e := range m.Users { + l = e.Size() + n += 1 + l + sovPrivilege(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func sovPrivilege(x uint64) (n int) { + for { + n++ + x >>= 7 + if x == 0 { + break + } + } + return n +} +func sozPrivilege(x uint64) (n int) { + return sovPrivilege(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *UserPrivileges) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *UserPrivileges) MarshalTo(data []byte) (n int, err error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintPrivilege(data, i, uint64(len(m.User))) + i += copy(data[i:], m.User) + data[i] = 0x10 + i++ + i = encodeVarintPrivilege(data, i, uint64(m.Privileges)) + if m.XXX_unrecognized != nil { + i += copy(data[i:], m.XXX_unrecognized) + } + return i, nil +} + +func (m *PrivilegeDescriptor) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PrivilegeDescriptor) MarshalTo(data []byte) (n int, err error) { + var i int + _ = i + var l int + _ = l + if len(m.Users) > 0 { + for _, msg := range m.Users { + data[i] = 0xa + i++ + i = encodeVarintPrivilege(data, i, uint64(msg.Size())) + n, err := msg.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n + } + } + if m.XXX_unrecognized != nil { + i += copy(data[i:], m.XXX_unrecognized) + } + return i, nil +} + +func encodeFixed64Privilege(data []byte, offset int, v uint64) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + data[offset+4] = uint8(v >> 32) + data[offset+5] = uint8(v >> 40) + data[offset+6] = uint8(v >> 48) + data[offset+7] = uint8(v >> 56) + return offset + 8 +} +func encodeFixed32Privilege(data []byte, offset int, v uint32) int { + data[offset] = uint8(v) + data[offset+1] = uint8(v >> 8) + data[offset+2] = uint8(v >> 16) + data[offset+3] = uint8(v >> 24) + return offset + 4 +} +func encodeVarintPrivilege(data []byte, offset int, v uint64) int { + for v >= 1<<7 { + data[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + data[offset] = uint8(v) + return offset + 1 +} diff --git a/structured/privilege.proto b/structured/privilege.proto new file mode 100644 index 00000000000..c57f95e1d46 --- /dev/null +++ b/structured/privilege.proto @@ -0,0 +1,56 @@ +// Copyright 2015 The Cockroach Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +// implied. See the License for the specific language governing +// permissions and limitations under the License. See the AUTHORS file +// for names of contributors. +// +// Author: Marc Berhault (marc@cockroachlabs.com) + +syntax = "proto2"; +package cockroach.structured; +option go_package = "structured"; + +import "gogoproto/gogo.proto"; + +option (gogoproto.sizer_all) = true; +option (gogoproto.marshaler_all) = true; +option (gogoproto.unmarshaler_all) = true; + +// This list must match the list of privileges in sql/parser/sql.y. +enum Privilege { + // ALL is specifically encoded so that it will automatically + // pick up new privileges. + ALL = 1; + CREATE = 2; + DROP = 3; + GRANT = 4; + SELECT = 5; + INSERT = 6; + DELETE = 7; + UPDATE = 8; + // TODO(marc): deprecate READ|WRITE. + READ = 9; + WRITE = 10; +} + +// UserPrivileges describes the list of privileges available for a given user. +message UserPrivileges { + optional string user = 1 [(gogoproto.nullable) = false]; + // privileges is a bitfield of 2<= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Read", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - postIndex := iNdEx + int(stringLen) - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Read = append(m.Read, string(data[iNdEx:postIndex])) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Write", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := data[iNdEx] - iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - postIndex := iNdEx + int(stringLen) - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Write = append(m.Write, string(data[iNdEx:postIndex])) - iNdEx = postIndex - default: - var sizeOfWire int - for { - sizeOfWire++ - wire >>= 7 - if wire == 0 { - break - } - } - iNdEx -= sizeOfWire - skippy, err := skipStructured(data[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthStructured - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, data[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - return nil -} func (m *TableDescriptor) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 @@ -976,7 +859,7 @@ func (m *TableDescriptor) Unmarshal(data []byte) error { } case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PrivilegeDescriptor", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Privileges", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -997,7 +880,10 @@ func (m *TableDescriptor) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.PrivilegeDescriptor.Unmarshal(data[iNdEx:postIndex]); err != nil { + if m.Privileges == nil { + m.Privileges = &PrivilegeDescriptor{} + } + if err := m.Privileges.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1087,7 +973,7 @@ func (m *DatabaseDescriptor) Unmarshal(data []byte) error { } case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PrivilegeDescriptor", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Privileges", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1108,7 +994,10 @@ func (m *DatabaseDescriptor) Unmarshal(data []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.PrivilegeDescriptor.Unmarshal(data[iNdEx:postIndex]); err != nil { + if m.Privileges == nil { + m.Privileges = &PrivilegeDescriptor{} + } + if err := m.Privileges.Unmarshal(data[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1282,27 +1171,6 @@ func (m *IndexDescriptor) Size() (n int) { return n } -func (m *PrivilegeDescriptor) Size() (n int) { - var l int - _ = l - if len(m.Read) > 0 { - for _, s := range m.Read { - l = len(s) - n += 1 + l + sovStructured(uint64(l)) - } - } - if len(m.Write) > 0 { - for _, s := range m.Write { - l = len(s) - n += 1 + l + sovStructured(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - func (m *TableDescriptor) Size() (n int) { var l int _ = l @@ -1325,8 +1193,10 @@ func (m *TableDescriptor) Size() (n int) { } } n += 1 + sovStructured(uint64(m.NextIndexID)) - l = m.PrivilegeDescriptor.Size() - n += 1 + l + sovStructured(uint64(l)) + if m.Privileges != nil { + l = m.Privileges.Size() + n += 1 + l + sovStructured(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -1339,8 +1209,10 @@ func (m *DatabaseDescriptor) Size() (n int) { l = len(m.Name) n += 1 + l + sovStructured(uint64(l)) n += 1 + sovStructured(uint64(m.ID)) - l = m.PrivilegeDescriptor.Size() - n += 1 + l + sovStructured(uint64(l)) + if m.Privileges != nil { + l = m.Privileges.Size() + n += 1 + l + sovStructured(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -1492,57 +1364,6 @@ func (m *IndexDescriptor) MarshalTo(data []byte) (n int, err error) { return i, nil } -func (m *PrivilegeDescriptor) Marshal() (data []byte, err error) { - size := m.Size() - data = make([]byte, size) - n, err := m.MarshalTo(data) - if err != nil { - return nil, err - } - return data[:n], nil -} - -func (m *PrivilegeDescriptor) MarshalTo(data []byte) (n int, err error) { - var i int - _ = i - var l int - _ = l - if len(m.Read) > 0 { - for _, s := range m.Read { - data[i] = 0xa - i++ - l = len(s) - for l >= 1<<7 { - data[i] = uint8(uint64(l)&0x7f | 0x80) - l >>= 7 - i++ - } - data[i] = uint8(l) - i++ - i += copy(data[i:], s) - } - } - if len(m.Write) > 0 { - for _, s := range m.Write { - data[i] = 0x12 - i++ - l = len(s) - for l >= 1<<7 { - data[i] = uint8(uint64(l)&0x7f | 0x80) - l >>= 7 - i++ - } - data[i] = uint8(l) - i++ - i += copy(data[i:], s) - } - } - if m.XXX_unrecognized != nil { - i += copy(data[i:], m.XXX_unrecognized) - } - return i, nil -} - func (m *TableDescriptor) Marshal() (data []byte, err error) { size := m.Size() data = make([]byte, size) @@ -1603,14 +1424,16 @@ func (m *TableDescriptor) MarshalTo(data []byte) (n int, err error) { data[i] = 0x38 i++ i = encodeVarintStructured(data, i, uint64(m.NextIndexID)) - data[i] = 0x42 - i++ - i = encodeVarintStructured(data, i, uint64(m.PrivilegeDescriptor.Size())) - n3, err := m.PrivilegeDescriptor.MarshalTo(data[i:]) - if err != nil { - return 0, err + if m.Privileges != nil { + data[i] = 0x42 + i++ + i = encodeVarintStructured(data, i, uint64(m.Privileges.Size())) + n3, err := m.Privileges.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n3 } - i += n3 if m.XXX_unrecognized != nil { i += copy(data[i:], m.XXX_unrecognized) } @@ -1639,14 +1462,16 @@ func (m *DatabaseDescriptor) MarshalTo(data []byte) (n int, err error) { data[i] = 0x10 i++ i = encodeVarintStructured(data, i, uint64(m.ID)) - data[i] = 0x1a - i++ - i = encodeVarintStructured(data, i, uint64(m.PrivilegeDescriptor.Size())) - n4, err := m.PrivilegeDescriptor.MarshalTo(data[i:]) - if err != nil { - return 0, err + if m.Privileges != nil { + data[i] = 0x1a + i++ + i = encodeVarintStructured(data, i, uint64(m.Privileges.Size())) + n4, err := m.Privileges.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 } - i += n4 if m.XXX_unrecognized != nil { i += copy(data[i:], m.XXX_unrecognized) } diff --git a/structured/structured.proto b/structured/structured.proto index 95e6662138c..c9770e7319c 100644 --- a/structured/structured.proto +++ b/structured/structured.proto @@ -20,6 +20,7 @@ package cockroach.structured; option go_package = "structured"; import "gogoproto/gogo.proto"; +import "cockroach/structured/privilege.proto"; option (gogoproto.sizer_all) = true; option (gogoproto.marshaler_all) = true; @@ -73,14 +74,6 @@ message IndexDescriptor { (gogoproto.casttype) = "ColumnID"]; } -// PrivilegeDescriptor represents the sets of privileges on a descriptor. -message PrivilegeDescriptor { - // lists of users with read permissions. - repeated string read = 1; - // lists of users with write permissions. - repeated string write = 2; -} - // A TableDescriptor represents a table and is stored in a structured metadata // key. The TableDescriptor has a globally-unique ID, while its member // {Column,Index}Descriptors have locally-unique IDs. @@ -98,7 +91,7 @@ message TableDescriptor { // next_index_id is used to ensure that deleted index ids are not reused. optional uint32 next_index_id = 7 [(gogoproto.nullable) = false, (gogoproto.customname) = "NextIndexID", (gogoproto.casttype) = "IndexID"]; - optional PrivilegeDescriptor privileges = 8 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; + optional PrivilegeDescriptor privileges = 8; } // DatabaseDescriptor represents a namespace (aka database) and is stored @@ -109,5 +102,5 @@ message DatabaseDescriptor { optional string name = 1 [(gogoproto.nullable) = false]; optional uint32 id = 2 [(gogoproto.nullable) = false, (gogoproto.customname) = "ID", (gogoproto.casttype) = "ID"]; - optional PrivilegeDescriptor privileges = 3 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; + optional PrivilegeDescriptor privileges = 3; } diff --git a/structured/structured_test.go b/structured/structured_test.go index 3c9d94b1060..d902f413e06 100644 --- a/structured/structured_test.go +++ b/structured/structured_test.go @@ -38,6 +38,7 @@ func TestAllocateIDs(t *testing.T) { Indexes: []IndexDescriptor{ {Name: "d", ColumnNames: []string{"b", "a"}}, }, + Privileges: NewDefaultDatabasePrivilegeDescriptor(), } if err := desc.AllocateIDs(); err != nil { t.Fatal(err) @@ -54,6 +55,7 @@ func TestAllocateIDs(t *testing.T) { Indexes: []IndexDescriptor{ {ID: 2, Name: "d", ColumnIDs: []ColumnID{2, 1}, ColumnNames: []string{"b", "a"}}, }, + Privileges: NewDefaultDatabasePrivilegeDescriptor(), NextColumnID: 3, NextIndexID: 3, }