diff --git a/pkg/bootstrap/versions/v4_0_0/cluster_upgrade_list.go b/pkg/bootstrap/versions/v4_0_0/cluster_upgrade_list.go index cbb54bc19c66b..f899b6ccac638 100644 --- a/pkg/bootstrap/versions/v4_0_0/cluster_upgrade_list.go +++ b/pkg/bootstrap/versions/v4_0_0/cluster_upgrade_list.go @@ -25,6 +25,7 @@ import ( var clusterUpgEntries = []versions.UpgradeEntry{ upg_mo_iscp_log_new, upg_mo_iscp_task, + upg_mo_index_update_new, upg_create_mo_branch_metadata, upg_rename_system_stmt_info_4000, upg_create_system_stmt_info_4000, @@ -53,6 +54,16 @@ var upg_mo_iscp_task = versions.UpgradeEntry{ }, } +var upg_mo_index_update_new = versions.UpgradeEntry{ + Schema: catalog.MO_CATALOG, + TableName: catalog.MO_INDEX_UPDATE, + UpgType: versions.CREATE_NEW_TABLE, + UpgSql: frontend.MoCatalogMoIndexUpdateDDL, + CheckFunc: func(txn executor.TxnExecutor, accountId uint32) (bool, error) { + return versions.CheckTableDefinition(txn, accountId, catalog.MO_CATALOG, catalog.MO_INDEX_UPDATE) + }, +} + var upg_create_mo_branch_metadata = versions.UpgradeEntry{ Schema: catalog.MO_CATALOG, TableName: catalog.MO_BRANCH_METADATA, diff --git a/pkg/catalog/types.go b/pkg/catalog/types.go index 5b6c602cccef2..63a9146bc6d2d 100644 --- a/pkg/catalog/types.go +++ b/pkg/catalog/types.go @@ -174,6 +174,8 @@ const ( MO_ISCP_LOG = "mo_iscp_log" MO_STORED_PROCEDURE = "mo_stored_procedure" + MO_INDEX_UPDATE = "mo_index_update" + MO_BRANCH_METADATA = "mo_branch_metadata" ) diff --git a/pkg/cnservice/server_task.go b/pkg/cnservice/server_task.go index feab98991809f..2724c90c680aa 100644 --- a/pkg/cnservice/server_task.go +++ b/pkg/cnservice/server_task.go @@ -38,6 +38,7 @@ import ( db_holder "github.com/matrixorigin/matrixone/pkg/util/export/etl/db" ie "github.com/matrixorigin/matrixone/pkg/util/internalExecutor" "github.com/matrixorigin/matrixone/pkg/util/metric/mometric" + "github.com/matrixorigin/matrixone/pkg/vectorindex/idxcron" "github.com/matrixorigin/matrixone/pkg/vm/engine/disttae" "github.com/matrixorigin/matrixone/pkg/vm/engine/tae/common" "go.uber.org/zap" @@ -338,4 +339,13 @@ func (s *service) registerExecutorsLocked() { common.ISCPAllocator, ), ) + + s.task.runner.RegisterExecutor(task.TaskCode_IndexUpdateTaskExecutor, + idxcron.IndexUpdateTaskExecutorFactory( + s.cfg.UUID, + s.storeEngine, + s._txnClient, + common.ISCPAllocator, + ), + ) } diff --git a/pkg/container/bytejson/bytejson.go b/pkg/container/bytejson/bytejson.go index 058d97dbfe37f..52d7694d9931d 100644 --- a/pkg/container/bytejson/bytejson.go +++ b/pkg/container/bytejson/bytejson.go @@ -126,7 +126,14 @@ func (bj ByteJson) GetUint64() uint64 { } func (bj ByteJson) GetFloat64() float64 { - return math.Float64frombits(bj.GetUint64()) + switch bj.Type { + case TpCodeInt64: + return float64(bj.GetInt64()) + case TpCodeUint64: + return float64(bj.GetUint64()) + default: + return math.Float64frombits(bj.GetUint64()) + } } func (bj ByteJson) GetString() []byte { diff --git a/pkg/frontend/authenticate.go b/pkg/frontend/authenticate.go index d574cc083f806..e47245d98d647 100644 --- a/pkg/frontend/authenticate.go +++ b/pkg/frontend/authenticate.go @@ -933,6 +933,7 @@ var ( catalog.MO_TABLE_STATS: 0, catalog.MO_MERGE_SETTINGS: 0, catalog.MO_ISCP_LOG: 0, + catalog.MO_INDEX_UPDATE: 0, catalog.MO_BRANCH_METADATA: 0, } sysAccountTables = map[string]struct{}{ @@ -979,6 +980,7 @@ var ( catalog.MO_ACCOUNT_LOCK: 0, catalog.MO_MERGE_SETTINGS: 0, catalog.MO_ISCP_LOG: 0, + catalog.MO_INDEX_UPDATE: 0, catalog.MO_BRANCH_METADATA: 0, } createDbInformationSchemaSql = "create database information_schema;" @@ -1021,6 +1023,7 @@ var ( MoCatalogMergeSettingsDDL, MoCatalogMergeSettingsInitData, MoCatalogMoISCPLogDDL, + MoCatalogMoIndexUpdateDDL, MoCatalogBranchMetadataDDL, } @@ -7829,7 +7832,9 @@ func createTablesInMoCatalogOfGeneralTenant2(bh BackgroundExec, ca *createAccoun if strings.HasPrefix(sql, fmt.Sprintf("CREATE TABLE mo_catalog.%s", catalog.MO_ISCP_LOG)) { return true } - + if strings.HasPrefix(sql, fmt.Sprintf("CREATE TABLE mo_catalog.%s", catalog.MO_INDEX_UPDATE)) { + return true + } if strings.HasPrefix(sql, fmt.Sprintf("create table mo_catalog.%s", catalog.MO_BRANCH_METADATA)) { return true } diff --git a/pkg/frontend/predefined.go b/pkg/frontend/predefined.go index ca617b5aec3c5..b7fd490ed57a8 100644 --- a/pkg/frontend/predefined.go +++ b/pkg/frontend/predefined.go @@ -282,6 +282,20 @@ var ( primary key(account_id, table_id, job_name, job_id) )` + MoCatalogMoIndexUpdateDDL = `CREATE TABLE mo_catalog.mo_index_update ( + account_id INT UNSIGNED NOT NULL, + table_id BIGINT UNSIGNED NOT NULL, + db_name VARCHAR NOT NULL, + table_name VARCHAR NOT NULL, + index_name VARCHAR NOT NULL, + action VARCHAR NOT NULL, + metadata JSON NOT NULL, + status JSON NOT NULL, + create_at TIMESTAMP NOT NULL, + last_update_at TIMESTAMP NULL, + primary key(account_id, table_id, index_name, action) + )` + MoCatalogMoSessionsDDL = `CREATE VIEW mo_catalog.mo_sessions AS SELECT node_id, conn_id, session_id, account, user, host, db, session_start, command, info, txn_id, statement_id, statement_type, query_type, sql_source_type, query_start, client_host, role, proxy_host FROM mo_sessions() AS mo_sessions_tmp` MoCatalogMoConfigurationsDDL = `CREATE VIEW mo_catalog.mo_configurations AS SELECT node_type, node_id, name, current_value, default_value, internal FROM mo_configurations() AS mo_configurations_tmp` MoCatalogMoLocksDDL = `CREATE VIEW mo_catalog.mo_locks AS SELECT cn_id, txn_id, table_id, lock_key, lock_content, lock_mode, lock_status, lock_wait FROM mo_locks() AS mo_locks_tmp` diff --git a/pkg/frontend/variables.go b/pkg/frontend/variables.go index 14a60dd80ee02..bb7e9c010dd79 100644 --- a/pkg/frontend/variables.go +++ b/pkg/frontend/variables.go @@ -3552,7 +3552,7 @@ var gSysVarsDefs = map[string]SystemVariable{ Dynamic: true, SetVarHintApplies: false, Type: InitSystemVariableBoolType("experimental_ivf_index"), - Default: int64(0), + Default: int8(0), }, "ivf_threads_build": { Name: "ivf_threads_build", @@ -3583,8 +3583,8 @@ var gSysVarsDefs = map[string]SystemVariable{ Scope: ScopeBoth, Dynamic: true, SetVarHintApplies: false, - Type: InitSystemVariableIntType("kmeans_train_percent", 1, 100, false), - Default: int64(10), + Type: InitSystemVariableDoubleType("kmeans_train_percent", 0, 100), + Default: float64(10), }, "kmeans_max_iteration": { Name: "kmeans_max_iteration", @@ -3608,7 +3608,7 @@ var gSysVarsDefs = map[string]SystemVariable{ Dynamic: true, SetVarHintApplies: false, Type: InitSystemVariableBoolType("experimental_fulltext_index"), - Default: int64(0), + Default: int8(0), }, "ft_relevancy_algorithm": { Name: fulltext.FulltextRelevancyAlgo, @@ -3624,7 +3624,7 @@ var gSysVarsDefs = map[string]SystemVariable{ Dynamic: true, SetVarHintApplies: false, Type: InitSystemVariableBoolType("experimental_hnsw_index"), - Default: int64(0), + Default: int8(0), }, "hnsw_threads_build": { Name: "hnsw_threads_build", diff --git a/pkg/pb/plan/plan.pb.go b/pkg/pb/plan/plan.pb.go index c0069e73d4a35..652e7e5cfc3a5 100644 --- a/pkg/pb/plan/plan.pb.go +++ b/pkg/pb/plan/plan.pb.go @@ -2694,6 +2694,7 @@ func (m *Function) GetArgs() []*Expr { type Expr struct { Typ Type `protobuf:"bytes,1,opt,name=typ,proto3" json:"typ"` // Types that are valid to be assigned to Expr: + // // *Expr_Lit // *Expr_P // *Expr_V @@ -4602,6 +4603,7 @@ func (m *TableDef) GetFeatureFlag() uint64 { // XXX: Deprecated and to be removed soon. type TableDef_DefType struct { // Types that are valid to be assigned to Def: + // // *TableDef_DefType_Properties Def isTableDef_DefType_Def `protobuf_oneof:"def"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -4871,18 +4873,18 @@ func (m *HashMapStats) GetRanges() []float64 { } type Stats struct { - //for scan, number of blocks to read from S3 + // for scan, number of blocks to read from S3 BlockNum int32 `protobuf:"varint,1,opt,name=block_num,json=blockNum,proto3" json:"block_num,omitempty"` - //for scan, cost of reading from S3, basically the read lines - //for other nodes, it means the estimated cost of current node + // for scan, cost of reading from S3, basically the read lines + // for other nodes, it means the estimated cost of current node Cost float64 `protobuf:"fixed64,2,opt,name=cost,proto3" json:"cost,omitempty"` - //number of output lines + // number of output lines Outcnt float64 `protobuf:"fixed64,3,opt,name=outcnt,proto3" json:"outcnt,omitempty"` // average size of one row Rowsize float64 `protobuf:"fixed64,4,opt,name=rowsize,proto3" json:"rowsize,omitempty"` - //for scan, this means total count of all table, before filtering + // for scan, this means total count of all table, before filtering TableCnt float64 `protobuf:"fixed64,5,opt,name=table_cnt,json=tableCnt,proto3" json:"table_cnt,omitempty"` - //for scan, selectivity means outcnt divide total count + // for scan, selectivity means outcnt divide total count Selectivity float64 `protobuf:"fixed64,6,opt,name=selectivity,proto3" json:"selectivity,omitempty"` ForceOneCN bool `protobuf:"varint,7,opt,name=forceOneCN,proto3" json:"forceOneCN,omitempty"` Dop int32 `protobuf:"varint,8,opt,name=dop,proto3" json:"dop,omitempty"` @@ -6409,7 +6411,7 @@ type Node struct { OnUpdateExprs []*Expr `protobuf:"bytes,55,rep,name=onUpdateExprs,proto3" json:"onUpdateExprs,omitempty"` Fuzzymessage *OriginTableMessageForFuzzy `protobuf:"bytes,56,opt,name=fuzzymessage,proto3" json:"fuzzymessage,omitempty"` IfInsertFromUnique bool `protobuf:"varint,57,opt,name=ifInsertFromUnique,proto3" json:"ifInsertFromUnique,omitempty"` - //for message + // for message SendMsgList []MsgHeader `protobuf:"bytes,58,rep,name=send_msg_list,json=sendMsgList,proto3" json:"send_msg_list"` RecvMsgList []MsgHeader `protobuf:"bytes,59,rep,name=recv_msg_list,json=recvMsgList,proto3" json:"recv_msg_list"` DedupJoinCtx *DedupJoinCtx `protobuf:"bytes,60,opt,name=dedup_join_ctx,json=dedupJoinCtx,proto3" json:"dedup_join_ctx,omitempty"` @@ -8127,7 +8129,7 @@ type Query struct { LoadTag bool `protobuf:"varint,6,opt,name=loadTag,proto3" json:"loadTag,omitempty"` // load write S3 LoadWriteS3 bool `protobuf:"varint,7,opt,name=loadWriteS3,proto3" json:"loadWriteS3,omitempty"` - //detectSqls are sqls detect fk self refer constraint + // detectSqls are sqls detect fk self refer constraint DetectSqls []string `protobuf:"bytes,8,rep,name=detectSqls,proto3" json:"detectSqls,omitempty"` BackgroundQueries []*Query `protobuf:"bytes,9,rep,name=background_queries,json=backgroundQueries,proto3" json:"background_queries,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -8232,9 +8234,10 @@ func (m *Query) GetBackgroundQueries() []*Query { } type TransationControl struct { - //TransationControl type + // TransationControl type TclType TransationControl_TclType `protobuf:"varint,1,opt,name=tcl_type,json=tclType,proto3,enum=plan.TransationControl_TclType" json:"tcl_type,omitempty"` // Types that are valid to be assigned to Action: + // // *TransationControl_Begin // *TransationControl_Commit // *TransationControl_Rollback @@ -8484,6 +8487,7 @@ func (m *TransationRollback) GetCompletionType() TransationCompletionType { type Plan struct { // Types that are valid to be assigned to Plan: + // // *Plan_Query // *Plan_Tcl // *Plan_Ddl @@ -8660,9 +8664,10 @@ func (m *Column) GetColumn() []*Expr { } type DataControl struct { - //DataDefinition type + // DataDefinition type DclType DataControl_DclType `protobuf:"varint,1,opt,name=dcl_type,json=dclType,proto3,enum=plan.DataControl_DclType" json:"dcl_type,omitempty"` // Types that are valid to be assigned to Control: + // // *DataControl_SetVariables // *DataControl_Prepare // *DataControl_Execute @@ -8796,13 +8801,14 @@ func (*DataControl) XXX_OneofWrappers() []interface{} { } type DataDefinition struct { - //DataDefinition type + // DataDefinition type DdlType DataDefinition_DdlType `protobuf:"varint,1,opt,name=ddl_type,json=ddlType,proto3,enum=plan.DataDefinition_DdlType" json:"ddl_type,omitempty"` - //other show statement we will rewrite to a select statement - //then we will get a Query - //eg: 'show databases' will rewrite to 'select md.datname as `Database` from mo_database md' + // other show statement we will rewrite to a select statement + // then we will get a Query + // eg: 'show databases' will rewrite to 'select md.datname as `Database` from mo_database md' Query *Query `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` // Types that are valid to be assigned to Definition: + // // *DataDefinition_CreateDatabase // *DataDefinition_AlterDatabase // *DataDefinition_DropDatabase @@ -10104,6 +10110,7 @@ type AlterTableAlterReIndex struct { TableName string `protobuf:"bytes,2,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` IndexName string `protobuf:"bytes,3,opt,name=index_name,json=indexName,proto3" json:"index_name,omitempty"` IndexAlgoParamList int64 `protobuf:"varint,4,opt,name=index_algo_param_list,json=indexAlgoParamList,proto3" json:"index_algo_param_list,omitempty"` + ForceSync bool `protobuf:"varint,5,opt,name=force_sync,json=forceSync,proto3" json:"force_sync,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -10170,6 +10177,13 @@ func (m *AlterTableAlterReIndex) GetIndexAlgoParamList() int64 { return 0 } +func (m *AlterTableAlterReIndex) GetForceSync() bool { + if m != nil { + return m.ForceSync + } + return false +} + type AlterTableComment struct { NewComment string `protobuf:"bytes,1,opt,name=new_comment,json=newComment,proto3" json:"new_comment,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -10691,7 +10705,7 @@ type AlterTable struct { CreateTmpTableSql string `protobuf:"bytes,7,opt,name=create_tmp_table_sql,json=createTmpTableSql,proto3" json:"create_tmp_table_sql,omitempty"` InsertTmpDataSql string `protobuf:"bytes,8,opt,name=insert_tmp_data_sql,json=insertTmpDataSql,proto3" json:"insert_tmp_data_sql,omitempty"` ChangeTblColIdMap map[uint64]*ColDef `protobuf:"bytes,9,rep,name=change_tbl_colId_map,json=changeTblColIdMap,proto3" json:"change_tbl_colId_map,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - //detect fk self refer constraint + // detect fk self refer constraint DetectSqls []string `protobuf:"bytes,10,rep,name=detectSqls,proto3" json:"detectSqls,omitempty"` // alter table may insert fk records related to this table // into mo_foreign_keys @@ -10845,6 +10859,7 @@ func (m *AlterTable) GetAlterPartition() *AlterPartitionOption { type AlterTable_Action struct { // Types that are valid to be assigned to Action: + // // *AlterTable_Action_Drop // *AlterTable_Action_AddFk // *AlterTable_Action_AddIndex @@ -11074,7 +11089,7 @@ type DropTable struct { // drop table may delete fk records related to this table // into mo_foreign_keys UpdateFkSqls []string `protobuf:"bytes,11,rep,name=updateFkSqls,proto3" json:"updateFkSqls,omitempty"` - //fk child table id that refers to me + // fk child table id that refers to me FkChildTblsReferToMe []uint64 `protobuf:"varint,12,rep,packed,name=fkChildTblsReferToMe,proto3" json:"fkChildTblsReferToMe,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -13355,806 +13370,807 @@ func init() { func init() { proto.RegisterFile("plan.proto", fileDescriptor_2d655ab2f7683c23) } var fileDescriptor_2d655ab2f7683c23 = []byte{ - // 12775 bytes of a gzipped FileDescriptorProto + // 12793 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0xbd, 0x5d, 0x6c, 0x1b, 0x59, 0x96, 0x18, 0x2c, 0x8a, 0xff, 0x87, 0x14, 0x55, 0xba, 0x96, 0x6d, 0xfa, 0xa7, 0x6d, 0xb9, 0xec, 0x76, 0xbb, 0xdd, 0xdd, 0x76, 0xb7, 0xdd, 0x3f, 0xee, 0xd9, 0x99, 0x9d, 0xa1, 0x48, 0xca, 0x62, 0x9b, 0x22, 0x35, 0x45, 0xca, 0xee, 0x9e, 0xfd, 0x16, 0x85, 0x22, 0xab, 0x28, 0x55, 0xab, 0x58, 0xc5, 0xae, 0x2a, 0x5a, 0x52, 0x03, 0x8b, 0x6f, 0xf0, 0x7d, 0xc0, 0xfe, 0x24, 0x8f, 0xc1, 0x6e, - 0xf2, 0x90, 0x05, 0x26, 0x0b, 0x04, 0x09, 0x82, 0x5d, 0x20, 0x09, 0x36, 0xd8, 0xe4, 0x39, 0x2f, - 0x9b, 0x04, 0xd9, 0x04, 0x08, 0x90, 0x20, 0x09, 0xb0, 0x09, 0x26, 0xc8, 0x63, 0x90, 0x04, 0xc9, - 0x7b, 0x82, 0x73, 0xee, 0xad, 0xe2, 0x2d, 0x92, 0xb2, 0xbb, 0x7b, 0x66, 0x81, 0xe4, 0x45, 0xaa, - 0x7b, 0x7e, 0xee, 0xff, 0x3d, 0xf7, 0x9c, 0x73, 0xcf, 0xbd, 0x04, 0x98, 0x38, 0x86, 0xfb, 0x60, - 0xe2, 0x7b, 0xa1, 0xc7, 0x32, 0xf8, 0x7d, 0xf5, 0xbd, 0x43, 0x3b, 0x3c, 0x9a, 0x0e, 0x1e, 0x0c, - 0xbd, 0xf1, 0xc3, 0x43, 0xef, 0xd0, 0x7b, 0x48, 0xc8, 0xc1, 0x74, 0x44, 0x29, 0x4a, 0xd0, 0x17, - 0x67, 0xba, 0x0a, 0x8e, 0x37, 0x3c, 0x16, 0xdf, 0xeb, 0xa1, 0x3d, 0xb6, 0x82, 0xd0, 0x18, 0x4f, - 0x38, 0x40, 0xfd, 0x93, 0x14, 0x64, 0xfa, 0x67, 0x13, 0x8b, 0x55, 0x60, 0xd5, 0x36, 0xab, 0xa9, - 0xad, 0xd4, 0xbd, 0xac, 0xb6, 0x6a, 0x9b, 0x6c, 0x0b, 0x4a, 0xae, 0x17, 0x76, 0xa6, 0x8e, 0x63, - 0x0c, 0x1c, 0xab, 0xba, 0xba, 0x95, 0xba, 0x57, 0xd0, 0x64, 0x10, 0xbb, 0x06, 0x45, 0x63, 0x1a, - 0x7a, 0xba, 0xed, 0x0e, 0xfd, 0x6a, 0x9a, 0xf0, 0x05, 0x04, 0xb4, 0xdc, 0xa1, 0xcf, 0x36, 0x21, - 0x7b, 0x62, 0x9b, 0xe1, 0x51, 0x35, 0x43, 0x39, 0xf2, 0x04, 0x42, 0x83, 0xa1, 0xe1, 0x58, 0xd5, - 0x2c, 0x87, 0x52, 0x02, 0xa1, 0x21, 0x15, 0x92, 0xdb, 0x4a, 0xdd, 0x2b, 0x6a, 0x3c, 0xc1, 0x6e, - 0x00, 0x58, 0xee, 0x74, 0xfc, 0xd2, 0x70, 0xa6, 0x56, 0x50, 0xcd, 0x13, 0x4a, 0x82, 0xa8, 0x3f, - 0x84, 0xe2, 0x38, 0x38, 0xdc, 0xb5, 0x0c, 0xd3, 0xf2, 0xd9, 0x65, 0xc8, 0x8f, 0x83, 0x43, 0x3d, - 0x34, 0x0e, 0x45, 0x13, 0x72, 0xe3, 0xe0, 0xb0, 0x6f, 0x1c, 0xb2, 0x2b, 0x50, 0x20, 0xc4, 0xd9, - 0x84, 0xb7, 0x21, 0xab, 0x21, 0x21, 0xb6, 0x58, 0xfd, 0x9d, 0x1c, 0xe4, 0xdb, 0x76, 0x68, 0xf9, - 0x86, 0xc3, 0x2e, 0x41, 0xce, 0x0e, 0xdc, 0xa9, 0xe3, 0x10, 0x7b, 0x41, 0x13, 0x29, 0x76, 0x09, - 0xb2, 0xf6, 0x93, 0x97, 0x86, 0xc3, 0x79, 0x77, 0x57, 0x34, 0x9e, 0x64, 0x55, 0xc8, 0xd9, 0x1f, - 0x7c, 0x8c, 0x88, 0xb4, 0x40, 0x88, 0x34, 0x61, 0x1e, 0x3f, 0x42, 0x4c, 0x26, 0xc6, 0x50, 0x9a, - 0x30, 0x1f, 0x7f, 0x88, 0x18, 0x6c, 0x7d, 0x9a, 0x30, 0x94, 0xc6, 0x52, 0xa6, 0x54, 0x0a, 0x76, - 0xc0, 0x1a, 0x96, 0x32, 0x8d, 0x4a, 0x99, 0xf2, 0x52, 0xf2, 0x02, 0x21, 0xd2, 0x84, 0xe1, 0xa5, - 0x14, 0x62, 0x4c, 0x5c, 0xca, 0x94, 0x97, 0x52, 0xdc, 0x4a, 0xdd, 0xcb, 0x10, 0x86, 0x97, 0xb2, - 0x09, 0x19, 0x13, 0xe1, 0xb0, 0x95, 0xba, 0x97, 0xda, 0x5d, 0xd1, 0x28, 0x85, 0xd0, 0x00, 0xa1, - 0x25, 0xec, 0x60, 0x84, 0x06, 0x02, 0x3a, 0x40, 0x68, 0x19, 0x7b, 0x03, 0xa1, 0x03, 0x01, 0x1d, - 0x21, 0x74, 0x6d, 0x2b, 0x75, 0x6f, 0x15, 0xa1, 0x98, 0x62, 0x57, 0x21, 0x6f, 0x1a, 0xa1, 0x85, - 0x88, 0x8a, 0x68, 0x72, 0x04, 0x40, 0x1c, 0xce, 0x38, 0xc4, 0xad, 0x8b, 0x46, 0x47, 0x00, 0xa6, - 0x42, 0x09, 0xc9, 0x22, 0xbc, 0x22, 0xf0, 0x32, 0x90, 0x7d, 0x04, 0x65, 0xd3, 0x1a, 0xda, 0x63, - 0xc3, 0xe1, 0x6d, 0xda, 0xd8, 0x4a, 0xdd, 0x2b, 0x3d, 0x5a, 0x7f, 0x40, 0x6b, 0x22, 0xc6, 0xec, - 0xae, 0x68, 0x09, 0x32, 0xf6, 0x04, 0xd6, 0x44, 0xfa, 0x83, 0x47, 0xd4, 0xb1, 0x8c, 0xf8, 0x94, - 0x04, 0xdf, 0x07, 0x8f, 0x9e, 0xec, 0xae, 0x68, 0x49, 0x42, 0x76, 0x07, 0xca, 0xf1, 0x12, 0x41, - 0xc6, 0x0b, 0xa2, 0x56, 0x09, 0x28, 0x36, 0xeb, 0xcb, 0xc0, 0x73, 0x91, 0x60, 0x53, 0xf4, 0x5b, - 0x04, 0x60, 0x5b, 0x00, 0xa6, 0x35, 0x32, 0xa6, 0x4e, 0x88, 0xe8, 0x8b, 0xa2, 0x03, 0x25, 0x18, - 0xbb, 0x01, 0xc5, 0xe9, 0x04, 0x5b, 0xf9, 0xdc, 0x70, 0xaa, 0x97, 0x04, 0xc1, 0x0c, 0x84, 0xb9, - 0xe3, 0x3c, 0x47, 0xec, 0x65, 0x31, 0xba, 0x11, 0x00, 0x87, 0xf7, 0xa5, 0x35, 0x44, 0x54, 0x55, - 0x14, 0x2c, 0xd2, 0xb8, 0x8a, 0xec, 0x60, 0xdb, 0x76, 0xab, 0x57, 0x68, 0x06, 0xf3, 0x04, 0xbb, - 0x0e, 0xe9, 0xc0, 0x1f, 0x56, 0xaf, 0x52, 0xfb, 0x81, 0xb7, 0xbf, 0x79, 0x3a, 0xf1, 0x35, 0x04, - 0x6f, 0xe7, 0x21, 0x4b, 0xab, 0x49, 0xbd, 0x0e, 0x85, 0x7d, 0xc3, 0x37, 0xc6, 0x9a, 0x35, 0x62, - 0x0a, 0xa4, 0x27, 0x5e, 0x20, 0xd6, 0x11, 0x7e, 0xaa, 0x6d, 0xc8, 0x3d, 0x37, 0x7c, 0xc4, 0x31, - 0xc8, 0xb8, 0xc6, 0xd8, 0x22, 0x64, 0x51, 0xa3, 0x6f, 0x5c, 0x3b, 0xc1, 0x59, 0x10, 0x5a, 0x63, - 0x21, 0x24, 0x44, 0x0a, 0xe1, 0x87, 0x8e, 0x37, 0x10, 0x6b, 0xa4, 0xa0, 0x89, 0x94, 0xfa, 0xff, - 0xa5, 0x20, 0x57, 0xf7, 0x1c, 0xcc, 0xee, 0x32, 0xe4, 0x7d, 0xcb, 0xd1, 0x67, 0xc5, 0xe5, 0x7c, - 0xcb, 0xd9, 0xf7, 0x02, 0x44, 0x0c, 0x3d, 0x8e, 0xe0, 0xab, 0x36, 0x37, 0xf4, 0x08, 0x11, 0x55, - 0x20, 0x2d, 0x55, 0xe0, 0x0a, 0x14, 0xc2, 0x81, 0xa3, 0x13, 0x3c, 0x43, 0xf0, 0x7c, 0x38, 0x70, - 0x3a, 0x88, 0xba, 0x0c, 0x79, 0x73, 0xc0, 0x31, 0x59, 0xc2, 0xe4, 0xcc, 0x01, 0x22, 0xd4, 0x4f, - 0xa1, 0xa8, 0x19, 0x27, 0xa2, 0x1a, 0x17, 0x21, 0x87, 0x19, 0x08, 0xf9, 0x97, 0xd1, 0xb2, 0xe1, - 0xc0, 0x69, 0x99, 0x08, 0xc6, 0x4a, 0xd8, 0x26, 0xd5, 0x21, 0xa3, 0x65, 0x87, 0x9e, 0xd3, 0x32, - 0xd5, 0x3e, 0x40, 0xdd, 0xf3, 0xfd, 0xef, 0xdc, 0x84, 0x4d, 0xc8, 0x9a, 0xd6, 0x24, 0x3c, 0xe2, - 0xa2, 0x43, 0xe3, 0x09, 0xf5, 0x3e, 0x14, 0x70, 0x5c, 0xda, 0x76, 0x10, 0xb2, 0x1b, 0x90, 0x71, - 0xec, 0x20, 0xac, 0xa6, 0xb6, 0xd2, 0x73, 0xa3, 0x46, 0x70, 0x75, 0x0b, 0x0a, 0x7b, 0xc6, 0xe9, - 0x73, 0x1c, 0x39, 0xcc, 0x8d, 0x86, 0x50, 0x0c, 0x89, 0x18, 0xcf, 0x32, 0x40, 0xdf, 0xf0, 0x0f, - 0xad, 0x90, 0x24, 0xdd, 0xff, 0x48, 0x41, 0xa9, 0x37, 0x1d, 0x7c, 0x35, 0xb5, 0xfc, 0x33, 0xac, - 0xf3, 0x3d, 0x48, 0x87, 0x67, 0x13, 0xe2, 0xa8, 0x3c, 0xba, 0xc4, 0xb3, 0x97, 0xf0, 0x0f, 0x90, - 0x49, 0x43, 0x12, 0x6c, 0x84, 0xeb, 0x99, 0x56, 0xd4, 0x07, 0x59, 0x2d, 0x87, 0xc9, 0x96, 0x89, - 0xdb, 0x85, 0x37, 0x11, 0xa3, 0xb0, 0xea, 0x4d, 0xd8, 0x16, 0x64, 0x87, 0x47, 0xb6, 0x63, 0xd2, - 0x00, 0x24, 0xeb, 0xcc, 0x11, 0x38, 0x4a, 0xbe, 0x77, 0xa2, 0x07, 0xf6, 0xd7, 0x91, 0xf8, 0xcf, - 0xfb, 0xde, 0x49, 0xcf, 0xfe, 0xda, 0x52, 0xfb, 0x62, 0x0f, 0x02, 0xc8, 0xf5, 0xea, 0xb5, 0x76, - 0x4d, 0x53, 0x56, 0xf0, 0xbb, 0xf9, 0x79, 0xab, 0xd7, 0xef, 0x29, 0x29, 0x56, 0x01, 0xe8, 0x74, - 0xfb, 0xba, 0x48, 0xaf, 0xb2, 0x1c, 0xac, 0xb6, 0x3a, 0x4a, 0x1a, 0x69, 0x10, 0xde, 0xea, 0x28, - 0x19, 0x96, 0x87, 0x74, 0xad, 0xf3, 0x85, 0x92, 0xa5, 0x8f, 0x76, 0x5b, 0xc9, 0xa9, 0x7f, 0xb6, - 0x0a, 0xc5, 0xee, 0xe0, 0x4b, 0x6b, 0x18, 0x62, 0x9b, 0x71, 0x96, 0x5a, 0xfe, 0x4b, 0xcb, 0xa7, - 0x66, 0xa7, 0x35, 0x91, 0xc2, 0x86, 0x98, 0x03, 0x6a, 0x5c, 0x5a, 0x5b, 0x35, 0x07, 0x44, 0x37, - 0x3c, 0xb2, 0xc6, 0x06, 0x35, 0x0e, 0xe9, 0x28, 0x85, 0xab, 0xc2, 0x1b, 0x7c, 0x49, 0xcd, 0x4b, - 0x6b, 0xf8, 0xc9, 0x6e, 0x42, 0x89, 0xe7, 0x21, 0xcf, 0x2f, 0xe0, 0xa0, 0xf9, 0xc9, 0x97, 0x93, - 0x27, 0x1f, 0x71, 0x52, 0xae, 0x1c, 0x29, 0xf6, 0x36, 0x0e, 0xea, 0x88, 0x19, 0xed, 0x0d, 0xbe, - 0xe4, 0xd8, 0x02, 0x9f, 0xd1, 0xde, 0xe0, 0x4b, 0x42, 0xbd, 0x03, 0x1b, 0xc1, 0x74, 0x10, 0x0c, - 0x7d, 0x7b, 0x12, 0xda, 0x9e, 0xcb, 0x69, 0x8a, 0x44, 0xa3, 0xc8, 0x08, 0x22, 0xbe, 0x07, 0x85, - 0xc9, 0x74, 0xa0, 0xdb, 0xee, 0xc8, 0x23, 0xb1, 0x5f, 0x7a, 0xb4, 0xc6, 0x07, 0x66, 0x7f, 0x3a, - 0x68, 0xb9, 0x23, 0x4f, 0xcb, 0x4f, 0xf8, 0x07, 0x53, 0x61, 0xcd, 0xf5, 0x42, 0x1d, 0x55, 0x05, - 0x7d, 0x6c, 0x85, 0x06, 0xed, 0x07, 0x7c, 0xc3, 0x6f, 0x7b, 0xc3, 0xe3, 0x3d, 0x2b, 0x34, 0xd4, - 0xbb, 0x90, 0x17, 0x7c, 0xb8, 0xf7, 0x87, 0x96, 0x6b, 0xb8, 0xa1, 0x1e, 0x2b, 0x0d, 0x05, 0x0e, - 0x68, 0x99, 0xea, 0x1f, 0xa7, 0x40, 0xe9, 0x49, 0x55, 0x41, 0xe6, 0xa5, 0x92, 0xe3, 0x0d, 0x00, - 0x63, 0x38, 0xf4, 0xa6, 0x3c, 0x1b, 0x3e, 0xc1, 0x8a, 0x02, 0xd2, 0x32, 0xe5, 0xfe, 0x4b, 0x27, - 0xfa, 0xef, 0x16, 0x94, 0x23, 0x3e, 0x69, 0xd1, 0x97, 0x04, 0x2c, 0xea, 0xc1, 0x60, 0x9a, 0x58, - 0xf9, 0xf9, 0x60, 0xca, 0xb9, 0x2f, 0x41, 0x8e, 0x34, 0x8c, 0x20, 0x1a, 0x15, 0x9e, 0x52, 0xff, - 0x4d, 0x0a, 0xd6, 0x5a, 0xae, 0x69, 0x9d, 0xf6, 0x86, 0x86, 0x1b, 0x75, 0x8a, 0x1d, 0xe8, 0x36, - 0xc2, 0xf4, 0x60, 0x68, 0xb8, 0x42, 0x39, 0x28, 0xd9, 0x41, 0x4c, 0x87, 0x6d, 0xe0, 0x04, 0x54, - 0xd4, 0x2a, 0xe5, 0x58, 0x24, 0x08, 0x15, 0x76, 0x17, 0xd6, 0x07, 0x96, 0xe3, 0xb9, 0x87, 0x7a, - 0xe8, 0xe9, 0x5c, 0xcb, 0xe1, 0x6d, 0x59, 0xe3, 0xe0, 0xbe, 0xd7, 0x27, 0x6d, 0x67, 0x13, 0xb2, - 0x13, 0xc3, 0x0f, 0x83, 0x6a, 0x66, 0x2b, 0x8d, 0xcb, 0x98, 0x12, 0xd8, 0xcd, 0x76, 0xa0, 0x4f, - 0x5d, 0xfb, 0xab, 0x29, 0x6f, 0x46, 0x41, 0x2b, 0xd8, 0xc1, 0x01, 0xa5, 0xd9, 0x3d, 0x50, 0x78, - 0xc9, 0x94, 0xad, 0x3c, 0xcf, 0x2a, 0x04, 0xa7, 0x8c, 0x49, 0xd8, 0xfd, 0xa5, 0x55, 0x28, 0xec, - 0x4c, 0xdd, 0x21, 0x0e, 0x06, 0xbb, 0x0d, 0x99, 0xd1, 0xd4, 0x1d, 0x52, 0x5b, 0xe2, 0xad, 0x34, - 0x5e, 0x27, 0x1a, 0x21, 0x51, 0x02, 0x19, 0xfe, 0x21, 0x4a, 0xae, 0x05, 0x09, 0x84, 0x70, 0xf5, - 0x1f, 0xa6, 0x78, 0x8e, 0x3b, 0x8e, 0x71, 0xc8, 0x0a, 0x90, 0xe9, 0x74, 0x3b, 0x4d, 0x65, 0x85, - 0x95, 0xa1, 0xd0, 0xea, 0xf4, 0x9b, 0x5a, 0xa7, 0xd6, 0x56, 0x52, 0xb4, 0x9c, 0xfb, 0xb5, 0xed, - 0x76, 0x53, 0x59, 0x45, 0xcc, 0xf3, 0x6e, 0xbb, 0xd6, 0x6f, 0xb5, 0x9b, 0x4a, 0x86, 0x63, 0xb4, - 0x56, 0xbd, 0xaf, 0x14, 0x98, 0x02, 0xe5, 0x7d, 0xad, 0xdb, 0x38, 0xa8, 0x37, 0xf5, 0xce, 0x41, - 0xbb, 0xad, 0x28, 0xec, 0x02, 0xac, 0xc7, 0x90, 0x2e, 0x07, 0x6e, 0x21, 0xcb, 0xf3, 0x9a, 0x56, - 0xd3, 0x9e, 0x2a, 0x3f, 0x62, 0x05, 0x48, 0xd7, 0x9e, 0x3e, 0x55, 0x7e, 0x8a, 0x92, 0xa1, 0xf8, - 0xa2, 0xd5, 0xd1, 0x9f, 0xd7, 0xda, 0x07, 0x4d, 0xe5, 0xa7, 0xab, 0x51, 0xba, 0xab, 0x35, 0x9a, - 0x9a, 0xf2, 0xd3, 0x0c, 0xdb, 0x80, 0xf2, 0x4f, 0xba, 0x9d, 0xe6, 0x5e, 0x6d, 0x7f, 0x9f, 0x2a, - 0xf2, 0xd3, 0x82, 0xfa, 0x5f, 0x32, 0x90, 0xc1, 0x96, 0x30, 0x75, 0x26, 0x05, 0xe3, 0x26, 0xa2, - 0x18, 0xda, 0xce, 0xfc, 0xe9, 0x9f, 0xdf, 0x5c, 0xe1, 0xf2, 0xef, 0x16, 0xa4, 0x1d, 0x3b, 0xa4, - 0x61, 0x8d, 0xd7, 0x8e, 0xd0, 0x19, 0x77, 0x57, 0x34, 0xc4, 0xb1, 0x1b, 0x90, 0xe2, 0x82, 0xb0, - 0xf4, 0xa8, 0x22, 0x16, 0x97, 0xd8, 0x49, 0x77, 0x57, 0xb4, 0xd4, 0x84, 0x5d, 0x87, 0xd4, 0x4b, - 0x21, 0x15, 0xcb, 0x1c, 0xcf, 0xf7, 0x52, 0xc4, 0xbe, 0x64, 0x5b, 0x90, 0x1e, 0x7a, 0x5c, 0x23, - 0x8c, 0xf1, 0x7c, 0x67, 0xc1, 0xfc, 0x87, 0x9e, 0xc3, 0x6e, 0x43, 0xda, 0x37, 0x4e, 0x68, 0x64, - 0xe3, 0xe1, 0x8a, 0xb7, 0x2e, 0x24, 0xf2, 0x8d, 0x13, 0xac, 0xc4, 0x88, 0xe4, 0x48, 0x5c, 0x89, - 0x68, 0xbc, 0xb1, 0x98, 0x11, 0xdb, 0x82, 0xd4, 0x09, 0x49, 0x92, 0x58, 0x09, 0x7a, 0x61, 0xbb, - 0xa6, 0x77, 0xd2, 0x9b, 0x58, 0x43, 0xa4, 0x38, 0x61, 0x6f, 0x42, 0x3a, 0x98, 0x0e, 0x48, 0x92, - 0x94, 0x1e, 0x6d, 0x2c, 0xec, 0x09, 0x58, 0x50, 0x30, 0x1d, 0xb0, 0xbb, 0x90, 0x19, 0x7a, 0xbe, - 0x2f, 0xa4, 0x89, 0x12, 0x55, 0x38, 0xda, 0x0e, 0x51, 0x29, 0x44, 0x3c, 0x16, 0x18, 0x92, 0x0c, - 0x89, 0x89, 0x66, 0xfb, 0x11, 0x16, 0x18, 0xb2, 0x3b, 0x62, 0x93, 0x2b, 0xcb, 0xb5, 0x8e, 0xb6, - 0x40, 0xcc, 0x07, 0xb1, 0x38, 0x48, 0x63, 0xe3, 0x94, 0x34, 0xce, 0x98, 0x28, 0xda, 0xfb, 0xb0, - 0x4e, 0x63, 0xe3, 0x94, 0xdd, 0x81, 0xf4, 0x4b, 0x6b, 0x48, 0xca, 0x67, 0x5c, 0x9a, 0x18, 0xa4, - 0xe7, 0xd4, 0x3c, 0x44, 0xd3, 0xbc, 0xf7, 0x1c, 0x93, 0xf4, 0xd0, 0x78, 0x2c, 0x77, 0x3c, 0xc7, - 0x7c, 0x4e, 0x63, 0x49, 0x48, 0xdc, 0xf2, 0x8d, 0xe9, 0x29, 0x4a, 0x23, 0x85, 0x6f, 0xce, 0xc6, - 0xf4, 0xb4, 0x65, 0xa2, 0xf0, 0x77, 0xcd, 0x97, 0xa4, 0x7d, 0xa6, 0x34, 0xfc, 0x44, 0xf3, 0x28, - 0xb0, 0x1c, 0x6b, 0x18, 0xda, 0x2f, 0xed, 0xf0, 0x8c, 0xf4, 0xcb, 0x94, 0x26, 0x83, 0xb6, 0x73, - 0x90, 0xb1, 0x4e, 0x27, 0xbe, 0xba, 0x0b, 0x79, 0x51, 0xca, 0x82, 0x8d, 0x75, 0x05, 0x0a, 0x76, - 0xa0, 0x0f, 0x3d, 0x37, 0x08, 0x85, 0xee, 0x94, 0xb7, 0x83, 0x3a, 0x26, 0x51, 0x5c, 0x9a, 0x46, - 0xc8, 0x37, 0xa1, 0xb2, 0x46, 0xdf, 0xea, 0x23, 0x80, 0x59, 0xb3, 0xb0, 0x4e, 0x8e, 0xe5, 0x46, - 0x6a, 0x9a, 0x63, 0xb9, 0x31, 0xcf, 0xaa, 0xc4, 0x73, 0x05, 0x8a, 0xb1, 0x66, 0xcc, 0xca, 0x90, - 0x32, 0xc4, 0xf6, 0x97, 0x32, 0xd4, 0x7b, 0xa8, 0xa8, 0x46, 0xba, 0x6f, 0x12, 0x87, 0xa9, 0x68, - 0x53, 0x4c, 0x0d, 0xd4, 0xef, 0x43, 0x59, 0xb3, 0x82, 0xa9, 0x13, 0xd6, 0x3d, 0xa7, 0x61, 0x8d, - 0xd8, 0xbb, 0x00, 0x71, 0x3a, 0x10, 0x5a, 0xca, 0x6c, 0xee, 0x36, 0xac, 0x91, 0x26, 0xe1, 0xd5, - 0xbf, 0x9d, 0x21, 0x7d, 0xaf, 0xc1, 0x15, 0x2d, 0xa1, 0x51, 0xa5, 0x24, 0x8d, 0x2a, 0xde, 0x1b, - 0x56, 0x93, 0x5a, 0xe5, 0x91, 0x6d, 0x9a, 0x96, 0x1b, 0x69, 0x8f, 0x3c, 0x85, 0x83, 0x6d, 0x38, - 0x87, 0xb4, 0xa0, 0x2a, 0x8f, 0x58, 0x54, 0xe8, 0x78, 0xe2, 0x5b, 0x41, 0xc0, 0xf5, 0x16, 0xc3, - 0x39, 0x8c, 0xd6, 0x76, 0xf6, 0x55, 0x6b, 0xfb, 0x0a, 0x14, 0x70, 0xcb, 0x23, 0xab, 0x2f, 0xc7, - 0x7b, 0x5f, 0x98, 0xb7, 0xec, 0x2d, 0xc8, 0x0b, 0x7d, 0x5d, 0x2c, 0x2a, 0x31, 0x5d, 0x1a, 0x1c, - 0xa8, 0x45, 0x58, 0x56, 0x45, 0x25, 0x6f, 0x3c, 0xb6, 0xdc, 0x30, 0xda, 0xa7, 0x45, 0x92, 0xbd, - 0x03, 0x45, 0xcf, 0xd5, 0xb9, 0x52, 0x2f, 0x56, 0x95, 0x98, 0xbe, 0x5d, 0xf7, 0x80, 0xa0, 0x5a, - 0xc1, 0x13, 0x5f, 0x58, 0x15, 0xc7, 0x3b, 0xd1, 0x87, 0x86, 0x6f, 0xd2, 0xca, 0x2a, 0x68, 0x79, - 0xc7, 0x3b, 0xa9, 0x1b, 0xbe, 0xc9, 0xf5, 0x96, 0xaf, 0xdc, 0xe9, 0x98, 0x56, 0xd3, 0x9a, 0x26, - 0x52, 0xec, 0x3a, 0x14, 0x87, 0xce, 0x34, 0x08, 0x2d, 0x7f, 0xfb, 0x8c, 0x9b, 0x69, 0xda, 0x0c, - 0x80, 0xf5, 0x9a, 0xf8, 0xf6, 0xd8, 0xf0, 0xcf, 0x68, 0xe9, 0x14, 0xb4, 0x28, 0x49, 0x1b, 0xcd, - 0xb1, 0x6d, 0x9e, 0x72, 0x5b, 0x4d, 0xe3, 0x09, 0xa4, 0x3f, 0x22, 0x4b, 0x3a, 0xa0, 0xf5, 0x51, - 0xd0, 0xa2, 0x24, 0x8d, 0x03, 0x7d, 0xd2, 0x8a, 0x28, 0x6a, 0x22, 0x95, 0x50, 0xba, 0x37, 0xce, - 0x55, 0xba, 0xd9, 0xbc, 0xde, 0xe3, 0xf9, 0xf6, 0xa1, 0x2d, 0xb4, 0x96, 0x0b, 0x5c, 0xef, 0xe1, - 0x20, 0xda, 0xa8, 0xbe, 0x82, 0xbc, 0xe8, 0x62, 0xdc, 0x81, 0x70, 0xf9, 0x24, 0xc5, 0x33, 0xdf, - 0x81, 0x10, 0xce, 0x6e, 0xc3, 0x9a, 0xc8, 0x2b, 0x08, 0x7d, 0xdb, 0x3d, 0x14, 0x93, 0xa7, 0xcc, - 0x81, 0x3d, 0x82, 0xa1, 0xa2, 0x80, 0xc3, 0xab, 0x1b, 0x03, 0xdb, 0xc1, 0x65, 0x9a, 0x16, 0x4a, - 0xcd, 0xd4, 0x71, 0x6a, 0x1c, 0xa4, 0x76, 0xa1, 0x10, 0x0d, 0xc8, 0x2f, 0xa5, 0x4c, 0xf5, 0x37, - 0x53, 0x50, 0x22, 0xf5, 0xa0, 0x4b, 0xca, 0x0f, 0x7b, 0x17, 0xd8, 0xd0, 0xb7, 0x8c, 0xd0, 0xd2, - 0xad, 0xd3, 0xd0, 0x37, 0x84, 0x12, 0xc0, 0x35, 0x09, 0x85, 0x63, 0x9a, 0x88, 0xe0, 0x7a, 0xc0, - 0x4d, 0x28, 0x4d, 0x0c, 0x3f, 0x88, 0x94, 0x4a, 0x5e, 0x00, 0x70, 0x90, 0x50, 0xe9, 0x14, 0xf7, - 0xd0, 0x37, 0xc6, 0x7a, 0xe8, 0x1d, 0x5b, 0x2e, 0x57, 0xa7, 0xb9, 0x21, 0x51, 0x21, 0x78, 0x1f, - 0xc1, 0xa4, 0x55, 0xff, 0xbb, 0x14, 0xac, 0xed, 0xf3, 0x51, 0x7f, 0x66, 0x9d, 0x35, 0xb8, 0xf5, - 0x36, 0x8c, 0x56, 0x6c, 0x46, 0xa3, 0x6f, 0x76, 0x03, 0x4a, 0x93, 0x63, 0xeb, 0x4c, 0x4f, 0x58, - 0x3a, 0x45, 0x04, 0xd5, 0x69, 0x6d, 0xbe, 0x0d, 0x39, 0x8f, 0x1a, 0x22, 0xf6, 0x38, 0xb1, 0x35, - 0x48, 0x2d, 0xd4, 0x04, 0x01, 0xaa, 0x4b, 0x71, 0x56, 0xb2, 0x5e, 0x26, 0x32, 0xa3, 0xea, 0x6f, - 0x42, 0x16, 0x51, 0x41, 0x35, 0xcb, 0xf5, 0x1c, 0x4a, 0xb0, 0xf7, 0x61, 0x6d, 0xe8, 0x8d, 0x27, - 0x7a, 0xc4, 0x2e, 0x76, 0xbb, 0xa4, 0x4c, 0x29, 0x21, 0xc9, 0x3e, 0xcf, 0x4b, 0xfd, 0xbd, 0x34, - 0x14, 0xa8, 0x0e, 0x42, 0xac, 0xd8, 0xe6, 0x69, 0x24, 0x56, 0x8a, 0x5a, 0xd6, 0x36, 0x51, 0x6a, - 0xbf, 0x46, 0x35, 0x8b, 0x55, 0xae, 0xb4, 0xac, 0x72, 0x5d, 0x82, 0x9c, 0xd0, 0xb7, 0x32, 0x5c, - 0xee, 0x4c, 0xcf, 0xd7, 0xb6, 0xb2, 0xcb, 0xb4, 0x2d, 0x1c, 0x42, 0x4e, 0x63, 0x9d, 0xe2, 0xfe, - 0xc6, 0x45, 0x0b, 0x10, 0xa8, 0x89, 0x10, 0x59, 0x68, 0xe4, 0x93, 0x42, 0xa3, 0x0a, 0xf9, 0x97, - 0x76, 0x60, 0xe3, 0x04, 0x29, 0xf0, 0x65, 0x28, 0x92, 0xd2, 0x30, 0x14, 0x5f, 0x37, 0x0c, 0x71, - 0xb3, 0x0d, 0xe7, 0x90, 0xab, 0xfd, 0x51, 0xb3, 0x6b, 0xce, 0xa1, 0xc7, 0x3e, 0x80, 0x8b, 0x33, - 0xb4, 0x68, 0x0d, 0xb9, 0xc7, 0xc8, 0x03, 0xa4, 0xb1, 0x98, 0x92, 0x5a, 0x44, 0x76, 0xd9, 0x7d, - 0xd8, 0x90, 0x58, 0x26, 0xa8, 0xde, 0x04, 0x24, 0x73, 0x8a, 0xda, 0x7a, 0x4c, 0x4e, 0x5a, 0x4f, - 0xa0, 0xfe, 0x93, 0x55, 0x58, 0xdb, 0xf1, 0x7c, 0xcb, 0x3e, 0x74, 0x67, 0xb3, 0x6e, 0x41, 0xf3, - 0x8f, 0x66, 0xe2, 0xaa, 0x34, 0x13, 0x6f, 0x42, 0x69, 0xc4, 0x19, 0xf5, 0x70, 0xc0, 0x9d, 0x06, - 0x19, 0x0d, 0x04, 0xa8, 0x3f, 0x70, 0x70, 0x35, 0x47, 0x04, 0xc4, 0x9c, 0x21, 0xe6, 0x88, 0x09, - 0xf7, 0x1a, 0xf6, 0x3d, 0x92, 0xba, 0xa6, 0xe5, 0x58, 0x21, 0x1f, 0x9e, 0xca, 0xa3, 0x37, 0xa2, - 0x9d, 0x5e, 0xaa, 0xd3, 0x03, 0xcd, 0x1a, 0xd5, 0x48, 0x3d, 0x42, 0x21, 0xdc, 0x20, 0x72, 0xc1, - 0x2b, 0x24, 0x76, 0xee, 0x1b, 0xf2, 0x72, 0xc9, 0xa1, 0xf6, 0xa1, 0x18, 0x83, 0x51, 0xd7, 0xd5, - 0x9a, 0x42, 0xbf, 0x5d, 0x61, 0x25, 0xc8, 0xd7, 0x6b, 0xbd, 0x7a, 0xad, 0xd1, 0x54, 0x52, 0x88, - 0xea, 0x35, 0xfb, 0x5c, 0xa7, 0x5d, 0x65, 0xeb, 0x50, 0xc2, 0x54, 0xa3, 0xb9, 0x53, 0x3b, 0x68, - 0xf7, 0x95, 0x34, 0x5b, 0x83, 0x62, 0xa7, 0xab, 0xd7, 0xea, 0xfd, 0x56, 0xb7, 0xa3, 0x64, 0xd4, - 0x1f, 0x41, 0xa1, 0x7e, 0x64, 0x0d, 0x8f, 0xcf, 0xeb, 0x45, 0x32, 0xba, 0xad, 0xe1, 0xb1, 0xd0, - 0x4f, 0xe7, 0x8c, 0x6e, 0x6b, 0x78, 0xac, 0x36, 0xa1, 0xb8, 0x6f, 0xf8, 0xa1, 0x4d, 0xf5, 0x7a, - 0x02, 0x6b, 0x71, 0xa2, 0x61, 0x8d, 0xa2, 0x9d, 0x9b, 0xc5, 0x5a, 0x6b, 0x8c, 0xd2, 0x92, 0x84, - 0xea, 0xbb, 0x50, 0x96, 0x01, 0xec, 0x3a, 0xa4, 0x4d, 0x6b, 0xb4, 0x44, 0x4e, 0x22, 0x58, 0x7d, - 0x0e, 0xe5, 0x7a, 0xb4, 0x13, 0x9d, 0x57, 0xf5, 0x47, 0x50, 0xa1, 0x15, 0x3f, 0x1c, 0x44, 0x4b, - 0x7e, 0x75, 0xc9, 0x92, 0x2f, 0x23, 0x4d, 0x7d, 0x20, 0xd6, 0xfc, 0x47, 0x50, 0xda, 0xf7, 0xbd, - 0x89, 0xe5, 0x87, 0x94, 0xad, 0x02, 0xe9, 0x63, 0xeb, 0x4c, 0xe4, 0x8a, 0x9f, 0x33, 0x5f, 0xc8, - 0xaa, 0xec, 0x0b, 0x79, 0x04, 0x85, 0x88, 0xed, 0x1b, 0xf3, 0xfc, 0x10, 0x45, 0x27, 0xf1, 0xd8, - 0x56, 0x80, 0x85, 0x3d, 0x00, 0x98, 0xc4, 0x00, 0xd1, 0x71, 0x91, 0xba, 0x2f, 0x32, 0xd7, 0x24, - 0x0a, 0xf5, 0x0d, 0xc8, 0x3f, 0xb7, 0xad, 0x13, 0xd1, 0xfc, 0x97, 0xb6, 0x75, 0x12, 0x35, 0x1f, - 0xbf, 0xd5, 0xbf, 0x5c, 0x84, 0x02, 0xad, 0xaf, 0xc6, 0xf9, 0xee, 0xa7, 0x6f, 0xa3, 0x15, 0x6d, - 0x89, 0xf5, 0x94, 0x59, 0xa2, 0x8b, 0xf1, 0xd5, 0xf5, 0x06, 0x80, 0xb4, 0xd6, 0xb9, 0xe4, 0x2a, - 0x86, 0xf1, 0x12, 0x47, 0x75, 0x82, 0xf6, 0xa2, 0xe0, 0x2b, 0x47, 0x58, 0x91, 0x33, 0x00, 0x7b, - 0xc0, 0x37, 0x7b, 0xb2, 0x1b, 0xb9, 0x42, 0x74, 0x21, 0x52, 0xea, 0x07, 0x8e, 0x15, 0x99, 0x1a, - 0xa4, 0x01, 0x60, 0x82, 0xe4, 0x98, 0xe5, 0x07, 0x28, 0xae, 0xc8, 0x3f, 0xad, 0x45, 0x49, 0xf6, - 0x16, 0x64, 0x50, 0xc8, 0x0b, 0xd3, 0xe0, 0x42, 0xd4, 0x83, 0xd2, 0x2e, 0xa5, 0x11, 0x01, 0xbb, - 0x07, 0x79, 0x12, 0x2d, 0x16, 0x4a, 0x1a, 0xa9, 0xb7, 0x23, 0xa1, 0xaf, 0x45, 0x68, 0xf6, 0x36, - 0x64, 0x47, 0xc7, 0xd6, 0x59, 0x50, 0x5d, 0x23, 0xba, 0x0b, 0x4b, 0xd6, 0xac, 0xc6, 0x29, 0xd8, - 0x1d, 0xa8, 0xf8, 0xd6, 0x48, 0x27, 0x87, 0x14, 0x0a, 0x99, 0xa0, 0x5a, 0x21, 0x19, 0x52, 0xf6, - 0xad, 0x51, 0x1d, 0x81, 0xfd, 0x81, 0x13, 0xb0, 0xbb, 0x90, 0xa3, 0xd5, 0x83, 0xba, 0x90, 0x54, - 0x72, 0xb4, 0x14, 0x35, 0x81, 0x65, 0x1f, 0x00, 0x08, 0x8d, 0x4b, 0x1f, 0x9c, 0x91, 0x23, 0x37, - 0x5e, 0x4c, 0xf2, 0xfc, 0x97, 0xf5, 0xb2, 0xb7, 0x20, 0x8b, 0x93, 0x24, 0xa8, 0x5e, 0xa6, 0x9c, - 0x37, 0x92, 0x33, 0x88, 0x6a, 0x4a, 0x78, 0x76, 0x0f, 0x0a, 0x38, 0x51, 0x74, 0x1c, 0x8e, 0xaa, - 0xac, 0x82, 0x8a, 0x59, 0x85, 0x3b, 0x83, 0x75, 0xd2, 0xfb, 0xca, 0x61, 0xf7, 0x21, 0x63, 0xe2, - 0x62, 0xbe, 0x42, 0x39, 0x5e, 0x92, 0xc6, 0x05, 0x85, 0x55, 0xc3, 0x1a, 0x91, 0x56, 0x4c, 0x34, - 0x6c, 0x17, 0x2a, 0x38, 0x8d, 0x1e, 0xd1, 0x66, 0x8f, 0xdd, 0x57, 0xbd, 0x4a, 0x5c, 0xb7, 0xe6, - 0xb8, 0x3a, 0x82, 0x88, 0x3a, 0xbb, 0xe9, 0x86, 0xfe, 0x99, 0xb6, 0xe6, 0xca, 0x30, 0x76, 0x15, - 0x4d, 0x97, 0xb6, 0x37, 0x3c, 0xb6, 0xcc, 0xea, 0xb5, 0xc8, 0x31, 0xc1, 0xd3, 0xec, 0x53, 0x58, - 0xa3, 0x89, 0x85, 0x49, 0x2c, 0xbc, 0x7a, 0x9d, 0x84, 0xa9, 0x3c, 0x65, 0x22, 0x94, 0x96, 0xa4, - 0x44, 0x11, 0x6f, 0x07, 0x7a, 0x68, 0x8d, 0x27, 0x9e, 0x8f, 0xca, 0xeb, 0x1b, 0x91, 0xc3, 0xa5, - 0x1f, 0x81, 0x70, 0x23, 0x8e, 0x8f, 0x9d, 0x74, 0x6f, 0x34, 0x0a, 0xac, 0xb0, 0x7a, 0x83, 0xd6, - 0x4d, 0x25, 0x3a, 0x7d, 0xea, 0x12, 0x94, 0x36, 0xc2, 0x40, 0x37, 0xcf, 0x5c, 0x63, 0x6c, 0x0f, - 0xab, 0x37, 0xb9, 0x8e, 0x6c, 0x07, 0x0d, 0x0e, 0x90, 0xd5, 0xd4, 0xad, 0x84, 0x9a, 0x7a, 0x01, - 0xb2, 0xe6, 0x00, 0x97, 0xe3, 0x2d, 0xca, 0x36, 0x63, 0x0e, 0x5a, 0x26, 0x7b, 0x0f, 0x8a, 0x93, - 0x48, 0x04, 0x56, 0x55, 0xd9, 0x18, 0x8f, 0x25, 0xa3, 0x36, 0xa3, 0x40, 0xfb, 0x70, 0xc7, 0x32, - 0xc2, 0xa9, 0x6f, 0xed, 0x38, 0xc6, 0x61, 0xf5, 0x36, 0xe5, 0x24, 0x83, 0xae, 0x3e, 0x25, 0x5d, - 0x97, 0x5a, 0xfd, 0xd1, 0x9c, 0x70, 0x49, 0x2c, 0x0d, 0x49, 0x0a, 0xed, 0xae, 0xc8, 0x32, 0x66, - 0x3b, 0x4b, 0x52, 0xf8, 0xea, 0x8f, 0x80, 0x2d, 0x8e, 0xd7, 0xeb, 0x24, 0x5d, 0x56, 0x48, 0xba, - 0xef, 0xad, 0x3e, 0x49, 0xa9, 0xcf, 0x61, 0x2d, 0xb1, 0x90, 0x97, 0x4a, 0x6c, 0xae, 0x2e, 0x19, - 0x63, 0x61, 0x5e, 0xf2, 0x84, 0xf0, 0x50, 0x05, 0xb6, 0x7b, 0x28, 0x3c, 0x5b, 0x34, 0x11, 0x7a, - 0x94, 0x56, 0xff, 0x2c, 0x0d, 0xe5, 0x5d, 0x23, 0x38, 0xda, 0x33, 0x26, 0xbd, 0xd0, 0x08, 0x03, - 0x1c, 0xde, 0x23, 0x23, 0x38, 0x1a, 0x1b, 0x13, 0xae, 0xb8, 0xa6, 0xb8, 0xd9, 0x2c, 0x60, 0xa8, - 0xb5, 0xe2, 0xc4, 0xc2, 0x64, 0xd7, 0xdd, 0x7f, 0x26, 0x6c, 0xe2, 0x38, 0x8d, 0x62, 0x25, 0x38, - 0x9a, 0x8e, 0x46, 0x71, 0x51, 0x51, 0x92, 0xdd, 0x81, 0x35, 0xf1, 0x49, 0x5a, 0xeb, 0xa9, 0x38, - 0x76, 0x4c, 0x02, 0xd9, 0x63, 0x28, 0x09, 0x40, 0x3f, 0x12, 0x82, 0x95, 0xd8, 0xd7, 0x31, 0x43, - 0x68, 0x32, 0x15, 0xfb, 0x31, 0x5c, 0x94, 0x92, 0x3b, 0x9e, 0xbf, 0x37, 0x75, 0x42, 0xbb, 0xde, - 0x11, 0x2a, 0xc2, 0xb5, 0x05, 0xf6, 0x19, 0x89, 0xb6, 0x9c, 0x33, 0x59, 0xdb, 0x3d, 0xdb, 0x25, - 0x99, 0x9a, 0xd6, 0x92, 0xc0, 0x39, 0x2a, 0xe3, 0x94, 0x44, 0x69, 0x92, 0xca, 0x38, 0xc5, 0xc5, - 0x26, 0x00, 0x7b, 0x56, 0x78, 0xe4, 0x99, 0xa4, 0x1f, 0xc6, 0x8b, 0xad, 0x27, 0xa3, 0xb4, 0x24, - 0x25, 0x76, 0x27, 0x5a, 0x42, 0x43, 0x37, 0x24, 0x2d, 0x31, 0xad, 0x45, 0x49, 0xdc, 0x66, 0x7c, - 0xc3, 0x3d, 0xb4, 0x82, 0x6a, 0x69, 0x2b, 0x7d, 0x2f, 0xa5, 0x89, 0x94, 0xfa, 0x37, 0x57, 0x21, - 0xcb, 0x47, 0xf2, 0x1a, 0x14, 0x07, 0xe4, 0x2c, 0x46, 0xcb, 0x54, 0x38, 0x80, 0x09, 0xd0, 0x99, - 0x8e, 0xb9, 0x76, 0x27, 0x7c, 0x1a, 0x29, 0x8d, 0xbe, 0x31, 0x4b, 0x6f, 0x1a, 0x62, 0x59, 0x69, - 0x82, 0x8a, 0x14, 0x56, 0xc2, 0xf7, 0x4e, 0x68, 0x36, 0x64, 0x08, 0x11, 0x25, 0xc9, 0xc7, 0x4c, - 0x3b, 0x16, 0x32, 0x65, 0x09, 0x57, 0x20, 0x40, 0xdd, 0x0d, 0xe7, 0xfd, 0x2f, 0xb9, 0x05, 0xff, - 0x0b, 0xbb, 0x01, 0xa8, 0x3b, 0x0e, 0xad, 0xae, 0x6b, 0xd5, 0x3b, 0xd4, 0xc3, 0x05, 0x4d, 0x82, - 0xe0, 0x02, 0x31, 0xbd, 0x09, 0x75, 0x6a, 0x56, 0xc3, 0x4f, 0xf6, 0x71, 0x3c, 0x3b, 0xa9, 0x8d, - 0x42, 0xd3, 0x16, 0x12, 0x5d, 0x9e, 0xc7, 0x5a, 0x82, 0x0e, 0x73, 0x42, 0x31, 0xcd, 0x35, 0x6d, - 0xfc, 0x54, 0x9b, 0x00, 0x9a, 0x77, 0x12, 0x58, 0x21, 0x39, 0x1a, 0x2f, 0x53, 0x13, 0x13, 0x47, - 0x44, 0xde, 0xc9, 0xbe, 0x17, 0xc4, 0xf6, 0xe6, 0xea, 0x72, 0x7b, 0x53, 0x7d, 0x08, 0x79, 0xdc, - 0xc3, 0x8d, 0xd0, 0x60, 0x77, 0x84, 0x6f, 0x87, 0x6b, 0x1e, 0xc2, 0xc9, 0x35, 0x2b, 0x43, 0x78, - 0x7b, 0xda, 0x51, 0xb9, 0xc4, 0x73, 0x4b, 0x32, 0xf7, 0xe2, 0xfd, 0x43, 0x64, 0x28, 0xb4, 0x82, - 0x6b, 0x50, 0xc4, 0xaa, 0x91, 0xdf, 0x5c, 0xc8, 0x85, 0x82, 0xef, 0x9d, 0xd4, 0x31, 0xad, 0xfe, - 0xfb, 0x14, 0x94, 0xba, 0xbe, 0x89, 0x1b, 0x57, 0x6f, 0x62, 0x0d, 0x5f, 0x6b, 0x1e, 0xa3, 0x0e, - 0xe1, 0x39, 0x8e, 0x41, 0x22, 0x52, 0x98, 0x5b, 0x31, 0x80, 0x7d, 0x00, 0x99, 0x11, 0x8a, 0xc2, - 0xb4, 0xac, 0x59, 0x4b, 0xd9, 0x47, 0xdf, 0x28, 0x1c, 0x35, 0x22, 0x55, 0x7f, 0x2d, 0x2e, 0x9f, - 0xfc, 0xcc, 0xb2, 0x77, 0x79, 0x85, 0xce, 0x79, 0x7a, 0x75, 0x25, 0xc5, 0x0a, 0x90, 0x69, 0x34, - 0x7b, 0x75, 0xae, 0x4f, 0xa3, 0x66, 0xdd, 0xd3, 0x77, 0x5a, 0x5a, 0xaf, 0xaf, 0x64, 0xe8, 0xe0, - 0x88, 0x00, 0xed, 0x5a, 0xaf, 0xaf, 0x14, 0x18, 0x40, 0xee, 0xa0, 0xd3, 0xfa, 0xf1, 0x41, 0x53, - 0x51, 0xd4, 0x7f, 0x95, 0x02, 0x98, 0x39, 0x41, 0xd9, 0x3b, 0x50, 0x3a, 0xa1, 0x94, 0x2e, 0x79, - 0xc7, 0xe5, 0x36, 0x02, 0x47, 0x93, 0x7e, 0xf3, 0x1e, 0x94, 0x63, 0x51, 0x8f, 0x7b, 0xff, 0xa2, - 0x9b, 0xbc, 0x14, 0xe3, 0xb7, 0xcf, 0xd8, 0xbb, 0x50, 0xf0, 0xb0, 0x1d, 0x48, 0x9a, 0x96, 0x37, - 0x7e, 0xa9, 0xf9, 0x5a, 0xde, 0xe3, 0x09, 0xd4, 0x11, 0x46, 0x7e, 0x64, 0x3e, 0xc7, 0xa4, 0x3b, - 0x08, 0xaa, 0x3b, 0xc6, 0x34, 0xb0, 0x34, 0x8e, 0x8f, 0xa5, 0x74, 0x76, 0x26, 0xa5, 0xd5, 0x9f, - 0x40, 0xa5, 0x67, 0x8c, 0x27, 0x5c, 0x96, 0x53, 0xc3, 0x18, 0x64, 0x70, 0x4e, 0x88, 0xa9, 0x47, - 0xdf, 0xb8, 0xe8, 0xf6, 0x2d, 0x7f, 0x68, 0xb9, 0xd1, 0x1a, 0x8d, 0x92, 0x28, 0x7e, 0x0f, 0x50, - 0x9a, 0x6b, 0xde, 0x49, 0x24, 0xce, 0xa3, 0xb4, 0xfa, 0x87, 0x29, 0x28, 0x49, 0xd5, 0x60, 0x0f, - 0x21, 0x43, 0xca, 0x64, 0x4a, 0x16, 0x84, 0x12, 0x01, 0xff, 0xe6, 0xea, 0x07, 0x12, 0xb2, 0xbb, - 0x90, 0x0d, 0x42, 0xc3, 0x8f, 0xfc, 0xe9, 0x8a, 0xc4, 0xb1, 0xed, 0x4d, 0x5d, 0x53, 0xe3, 0x68, - 0xa6, 0x42, 0xda, 0x72, 0x4d, 0xe1, 0x70, 0x58, 0xa4, 0x42, 0xa4, 0xba, 0x05, 0xc5, 0x38, 0x7b, - 0x9c, 0x02, 0x5a, 0xf7, 0x45, 0x4f, 0x59, 0x61, 0x45, 0xc8, 0x6a, 0xb5, 0xce, 0xd3, 0xa6, 0x92, - 0x52, 0xff, 0x38, 0x05, 0x30, 0xe3, 0x62, 0x0f, 0x12, 0xb5, 0xbd, 0x3a, 0x9f, 0xeb, 0x03, 0xfa, - 0x2b, 0x55, 0xf6, 0x3a, 0x14, 0xa7, 0x2e, 0x01, 0x2d, 0x53, 0xec, 0x44, 0x33, 0x00, 0x5a, 0x40, - 0x51, 0xf4, 0xc7, 0x9c, 0x05, 0xf4, 0xd2, 0x70, 0xd4, 0xef, 0x41, 0x31, 0xce, 0x0e, 0x8d, 0xba, - 0x9d, 0x6e, 0xbb, 0xdd, 0x7d, 0xd1, 0xea, 0x3c, 0x55, 0x56, 0x30, 0xb9, 0xaf, 0x35, 0xeb, 0xcd, - 0x06, 0x26, 0x53, 0x38, 0x67, 0xeb, 0x07, 0x9a, 0xd6, 0xec, 0xf4, 0x75, 0xad, 0xfb, 0x42, 0x59, - 0x55, 0xff, 0xff, 0x0c, 0x6c, 0x74, 0xdd, 0xc6, 0x74, 0xe2, 0xd8, 0x43, 0x23, 0xb4, 0x9e, 0x59, - 0x67, 0xf5, 0xf0, 0x14, 0x77, 0x5f, 0x23, 0x0c, 0x7d, 0xbe, 0x98, 0x8b, 0x1a, 0x4f, 0x70, 0xa7, - 0x44, 0x60, 0xf9, 0x21, 0xf9, 0x5c, 0xe4, 0x55, 0x5c, 0xe1, 0xf0, 0xba, 0xe7, 0xd0, 0x5a, 0x66, - 0x3f, 0x80, 0x8b, 0xdc, 0x91, 0xc1, 0x29, 0x51, 0x81, 0xd5, 0x69, 0x31, 0xa7, 0x17, 0xa6, 0x2e, - 0xe3, 0x84, 0xc8, 0x8a, 0x64, 0x24, 0xc2, 0x6e, 0x42, 0x69, 0xc6, 0x1e, 0x1d, 0x52, 0x41, 0x4c, - 0x48, 0x35, 0x41, 0xc3, 0x3b, 0xaa, 0xb5, 0x6e, 0x9b, 0xa7, 0xe4, 0xe2, 0xc9, 0x6a, 0x15, 0x6f, - 0xd6, 0x18, 0xdc, 0x84, 0x3f, 0x87, 0x8d, 0x04, 0x25, 0xd5, 0x22, 0x47, 0xb5, 0x78, 0x37, 0x72, - 0x90, 0xce, 0xb5, 0x5e, 0x86, 0x60, 0x75, 0xb8, 0x46, 0xba, 0xee, 0x25, 0xa1, 0x42, 0x17, 0xb1, - 0x0f, 0x5d, 0xcf, 0xb7, 0x84, 0xc0, 0x2f, 0xd8, 0x41, 0x8b, 0xd2, 0x33, 0xfb, 0x47, 0x3a, 0x54, - 0xe5, 0xfb, 0x4b, 0x74, 0x5e, 0xc8, 0xd1, 0x36, 0xdf, 0x41, 0x33, 0x5a, 0x9e, 0xd2, 0x2d, 0x93, - 0xdd, 0x16, 0xea, 0xac, 0x1e, 0x99, 0x34, 0x40, 0x26, 0x4d, 0x99, 0x80, 0xcf, 0x39, 0xec, 0x6a, - 0x07, 0x36, 0x97, 0x55, 0x72, 0x89, 0x1a, 0xb6, 0x25, 0xab, 0x61, 0x73, 0x46, 0xfb, 0x4c, 0x25, - 0xfb, 0xbb, 0x29, 0x28, 0x37, 0x2c, 0x73, 0x3a, 0xf9, 0xcc, 0xb3, 0x5d, 0x9c, 0x00, 0x1f, 0x42, - 0xd9, 0x73, 0x4c, 0x1a, 0x3d, 0x29, 0x36, 0x20, 0x71, 0x62, 0x24, 0x9c, 0xdb, 0xe0, 0x39, 0x66, - 0xdd, 0x73, 0x28, 0x92, 0xe0, 0x3d, 0xb8, 0xc0, 0x1d, 0x1a, 0xc2, 0xbf, 0x77, 0xca, 0x99, 0x57, - 0x69, 0x64, 0x14, 0x8e, 0xe2, 0xca, 0x11, 0x91, 0xff, 0x0a, 0x6c, 0x4a, 0xe4, 0x38, 0x32, 0x9c, - 0x7e, 0x71, 0x92, 0x6c, 0xc4, 0xbc, 0xd1, 0x91, 0x8d, 0xfa, 0x5b, 0xab, 0x50, 0xe4, 0xee, 0x10, - 0xac, 0xef, 0x3d, 0xc8, 0x7b, 0x83, 0x2f, 0x75, 0x3f, 0x76, 0x13, 0x2c, 0x9c, 0x34, 0xe6, 0xbc, - 0xc1, 0x97, 0x9a, 0x35, 0x62, 0xef, 0x44, 0xfb, 0xbc, 0x69, 0x8d, 0x44, 0xa7, 0x54, 0x92, 0xf6, - 0x88, 0xd8, 0xf7, 0xd1, 0x56, 0x7e, 0x0c, 0xa5, 0xd9, 0x8c, 0x0f, 0xaa, 0xf9, 0xf3, 0x7b, 0x21, - 0x5e, 0x00, 0x01, 0x32, 0x71, 0x97, 0x10, 0x67, 0x2a, 0x9c, 0xcf, 0xc4, 0xc9, 0x88, 0xe9, 0x53, - 0xa8, 0xcc, 0x64, 0x3c, 0xf1, 0x15, 0xcf, 0xe5, 0x5b, 0x8b, 0x29, 0xe9, 0xc4, 0xe3, 0xef, 0xa5, - 0xa0, 0xd8, 0xe2, 0xc5, 0x87, 0xa7, 0xec, 0x16, 0xa4, 0x5f, 0xd1, 0x0b, 0x88, 0x63, 0xf7, 0x61, - 0xc3, 0x30, 0x4d, 0xdd, 0x18, 0x8d, 0xac, 0x61, 0x68, 0x99, 0x3a, 0xaa, 0x40, 0x42, 0xe6, 0xac, - 0x1b, 0xa6, 0x59, 0x13, 0x70, 0x92, 0xdd, 0xb8, 0xe6, 0x03, 0x3d, 0x32, 0x3c, 0x67, 0x47, 0xca, - 0x05, 0xad, 0x62, 0x07, 0xc2, 0xee, 0xe4, 0xbe, 0xe4, 0x44, 0xc7, 0x66, 0x5e, 0xdd, 0xb1, 0xea, - 0xef, 0xae, 0x02, 0x68, 0xd6, 0xc4, 0x31, 0x86, 0xd6, 0xff, 0x35, 0x95, 0x46, 0xb1, 0x14, 0x0f, - 0xac, 0x6b, 0x46, 0x21, 0x18, 0xd1, 0x20, 0xba, 0x26, 0xfb, 0x11, 0xbc, 0xe1, 0x5b, 0x27, 0xbe, - 0x1d, 0x5a, 0xfa, 0xc8, 0xf7, 0xc6, 0x7a, 0x42, 0xf2, 0xe0, 0xc2, 0x2c, 0x52, 0x25, 0xae, 0x08, - 0xa2, 0x1d, 0xdf, 0x1b, 0x27, 0xa5, 0x8f, 0xfa, 0x87, 0x25, 0x28, 0xd5, 0x5c, 0xc3, 0x39, 0xfb, - 0xda, 0xa2, 0x98, 0x00, 0xf2, 0xae, 0x4e, 0xa6, 0x21, 0x6f, 0x2e, 0x3f, 0x30, 0x2b, 0x12, 0x84, - 0x1a, 0x7a, 0x13, 0x4a, 0xde, 0x34, 0x8c, 0xf1, 0xfc, 0x08, 0x0d, 0x38, 0x88, 0x08, 0x62, 0xfe, - 0xd8, 0x73, 0x1f, 0xf1, 0x93, 0xf9, 0x33, 0xe3, 0x8f, 0x55, 0xe2, 0x98, 0x9f, 0x08, 0x50, 0x1a, - 0xd9, 0x63, 0x6a, 0x70, 0x30, 0x1d, 0x5b, 0xbc, 0xd1, 0x69, 0x1e, 0x9f, 0x56, 0x17, 0x30, 0xcc, - 0x65, 0x6c, 0x8d, 0x3d, 0xff, 0x8c, 0xe7, 0x92, 0xe3, 0xb9, 0x70, 0x10, 0xe5, 0xf2, 0x2e, 0xb0, - 0x13, 0xc3, 0x0e, 0xf5, 0x64, 0x56, 0xdc, 0x0c, 0x51, 0x10, 0xd3, 0x97, 0xb3, 0xbb, 0x04, 0x39, - 0xd3, 0x0e, 0x8e, 0x5b, 0x5d, 0x61, 0x82, 0x88, 0x14, 0xb6, 0x25, 0x18, 0x1a, 0xa8, 0x01, 0x85, - 0x16, 0x57, 0x97, 0xd3, 0x5a, 0x11, 0x21, 0xdb, 0x08, 0xc0, 0x1d, 0xd4, 0xb5, 0xc2, 0x13, 0xcf, - 0x47, 0x4e, 0x6e, 0x61, 0xcc, 0x00, 0xa8, 0x69, 0x20, 0x29, 0x16, 0x44, 0xde, 0xa0, 0xb4, 0x16, - 0xa7, 0x51, 0x77, 0xe7, 0xcb, 0x97, 0xb0, 0x65, 0x5e, 0xfd, 0x19, 0x84, 0xdd, 0x81, 0x0a, 0x55, - 0x9f, 0x2c, 0x10, 0x6c, 0x03, 0x9d, 0x72, 0xa5, 0xb5, 0x32, 0x42, 0xc9, 0x99, 0x80, 0x54, 0x9f, - 0xc2, 0x95, 0x44, 0xfb, 0x74, 0xc3, 0xf7, 0x8d, 0x33, 0x7d, 0x6c, 0x7c, 0xe9, 0xf9, 0xe4, 0xf8, - 0x49, 0x6b, 0x97, 0xe4, 0x6e, 0xab, 0x21, 0x7a, 0x0f, 0xb1, 0xe7, 0xb2, 0xda, 0xae, 0xe7, 0x93, - 0x57, 0x68, 0x29, 0x2b, 0x62, 0xc9, 0x85, 0x41, 0x03, 0x4c, 0xe6, 0x50, 0xc0, 0xe3, 0x1a, 0xb5, - 0x12, 0xc1, 0xb6, 0x09, 0x84, 0x06, 0x41, 0xf0, 0x98, 0x4b, 0xd6, 0x0d, 0x11, 0x64, 0xf4, 0x98, - 0xe4, 0x2f, 0x47, 0x1c, 0x59, 0x86, 0x49, 0x27, 0x67, 0x84, 0xd8, 0xb5, 0x0c, 0x3a, 0x97, 0x0e, - 0x1e, 0xeb, 0x93, 0x69, 0xc8, 0x03, 0x12, 0xb5, 0x6c, 0xf0, 0x78, 0x7f, 0x1a, 0x0a, 0xf0, 0xa1, - 0x15, 0x52, 0x18, 0x22, 0x81, 0x9f, 0x5a, 0x21, 0x6e, 0x84, 0xc1, 0xe3, 0xc8, 0x0b, 0x7e, 0x51, - 0xf4, 0xed, 0x63, 0xe1, 0xe6, 0x56, 0x61, 0x2d, 0x46, 0xea, 0xe3, 0x29, 0x8f, 0x40, 0x4c, 0x6b, - 0xa5, 0x88, 0x60, 0x6f, 0xea, 0xe0, 0xc0, 0x0e, 0x8d, 0xe1, 0x91, 0xa5, 0xfb, 0x58, 0x95, 0xcb, - 0x7c, 0xe8, 0x08, 0xa2, 0x61, 0x6d, 0xae, 0x01, 0x4f, 0xe8, 0x47, 0x76, 0x48, 0xde, 0xa9, 0xb4, - 0x56, 0x20, 0xc0, 0xae, 0x1d, 0xa2, 0x58, 0xe0, 0x48, 0x31, 0x03, 0x29, 0x8b, 0x2b, 0x44, 0xb4, - 0x4e, 0x88, 0x3d, 0x82, 0x53, 0x46, 0xf7, 0x40, 0x49, 0xd0, 0x62, 0x7e, 0x57, 0x89, 0xb4, 0x22, - 0x91, 0x62, 0xae, 0x77, 0x81, 0x33, 0xeb, 0x38, 0xf5, 0x78, 0x9e, 0xd7, 0xb8, 0x39, 0x4c, 0xe0, - 0x86, 0x1d, 0x1c, 0x53, 0x8e, 0x77, 0xa0, 0x22, 0xd1, 0x61, 0x7e, 0xd7, 0xf9, 0xcc, 0x88, 0xc9, - 0x12, 0x75, 0xf4, 0xad, 0xb1, 0x17, 0x8a, 0x66, 0xbe, 0x21, 0xd5, 0x51, 0x23, 0x78, 0xb2, 0x8e, - 0x82, 0x16, 0xf3, 0xbc, 0x21, 0xd5, 0x91, 0x93, 0x62, 0xae, 0xb7, 0xa0, 0x8c, 0x52, 0x24, 0xb4, - 0x5c, 0xbe, 0xf8, 0x6f, 0xf2, 0x8e, 0x15, 0x30, 0x5a, 0xfd, 0xb7, 0xa0, 0xcc, 0x7b, 0x5e, 0x88, - 0xcb, 0x2d, 0x4e, 0x22, 0x60, 0x91, 0x80, 0x10, 0xbd, 0x31, 0xb6, 0x5d, 0x72, 0x41, 0xa5, 0xb5, - 0x22, 0x87, 0xec, 0xd9, 0xae, 0x8c, 0x36, 0x4e, 0xc9, 0x11, 0x35, 0x43, 0x1b, 0xa7, 0xb4, 0x24, - 0x27, 0xb6, 0xe3, 0xf0, 0x85, 0x7f, 0x5b, 0x2c, 0x49, 0x84, 0xf4, 0x84, 0x4d, 0xcd, 0xd1, 0x98, - 0xf7, 0x1d, 0x31, 0x33, 0x10, 0x80, 0x59, 0xcf, 0x90, 0xc6, 0x69, 0xf5, 0x4d, 0x19, 0x69, 0x9c, - 0x0a, 0xc1, 0x84, 0x95, 0x26, 0xde, 0xbb, 0xb1, 0x60, 0x42, 0x10, 0x72, 0xcb, 0x04, 0xc6, 0x69, - 0xf5, 0xad, 0x24, 0x81, 0x71, 0x4a, 0xb6, 0xa6, 0x65, 0x98, 0xbc, 0x66, 0xf7, 0x78, 0xf6, 0x08, - 0xa0, 0x8a, 0x6d, 0x41, 0x39, 0x78, 0xac, 0xcf, 0xf0, 0x6f, 0x73, 0xf6, 0xe0, 0xb1, 0x16, 0x51, - 0xdc, 0x81, 0x4a, 0x3c, 0xf6, 0x9c, 0xe6, 0x3e, 0x1f, 0x59, 0x53, 0x8c, 0x3d, 0x1d, 0x7a, 0xfe, - 0x34, 0x05, 0x57, 0xbb, 0x74, 0x1c, 0x4b, 0xdb, 0xc5, 0x9e, 0x15, 0x04, 0xc6, 0xa1, 0xb5, 0xe3, - 0xf9, 0x3b, 0xd3, 0xaf, 0xbf, 0x3e, 0x63, 0xf7, 0x60, 0x7d, 0xdf, 0xf0, 0x2d, 0x37, 0x8c, 0x8f, - 0xeb, 0x84, 0x6a, 0x36, 0x0f, 0x66, 0x4f, 0x40, 0xe1, 0xa0, 0x83, 0x58, 0xc9, 0x15, 0x66, 0x5e, - 0xd2, 0xbb, 0xbe, 0x40, 0xa5, 0xfe, 0x91, 0x0a, 0x99, 0x8e, 0x67, 0x5a, 0xec, 0x7d, 0x28, 0x52, - 0xf0, 0xa4, 0x64, 0x76, 0x08, 0xb7, 0x0c, 0xa2, 0xe9, 0x0f, 0xd9, 0x1b, 0x05, 0x57, 0x7c, 0x9d, - 0x1f, 0x6e, 0x79, 0x8b, 0x2c, 0x27, 0x3a, 0xab, 0xc4, 0x1d, 0xb1, 0x24, 0xbc, 0x3b, 0xe4, 0x8c, - 0xe0, 0x18, 0x94, 0xa7, 0xe4, 0xd7, 0xf6, 0x2d, 0x97, 0xf4, 0xf3, 0xac, 0x16, 0xa7, 0xc9, 0x5e, - 0xf5, 0x3d, 0xdc, 0xbd, 0xb9, 0xd4, 0xc9, 0x2e, 0xb1, 0x57, 0x39, 0x9e, 0xc4, 0xd0, 0xfb, 0x50, - 0xfc, 0xd2, 0xb3, 0x5d, 0x5e, 0xf1, 0xdc, 0x42, 0xc5, 0x51, 0x25, 0xe5, 0x15, 0xff, 0x52, 0x7c, - 0xb1, 0xdb, 0x90, 0xf7, 0x5c, 0x9e, 0x77, 0x7e, 0x21, 0xef, 0x9c, 0xe7, 0xb6, 0x79, 0x2c, 0xcf, - 0x9a, 0x1d, 0xe8, 0xbe, 0x7d, 0x78, 0x14, 0xea, 0xc8, 0x29, 0xce, 0x38, 0x4b, 0x76, 0xa0, 0x21, - 0x0c, 0xb3, 0x45, 0x33, 0x7c, 0x64, 0x3b, 0xa8, 0x24, 0x50, 0x66, 0xc5, 0x85, 0xcc, 0x80, 0xa3, - 0x29, 0xc3, 0x37, 0xa1, 0x70, 0xe8, 0x7b, 0xd3, 0x09, 0xda, 0xd5, 0xb0, 0x40, 0x99, 0x27, 0xdc, - 0xf6, 0x19, 0x6e, 0x99, 0xf4, 0x69, 0xbb, 0x87, 0x3a, 0xb9, 0x20, 0x4a, 0x5b, 0xe9, 0x7b, 0x05, - 0xad, 0x1c, 0x01, 0xc9, 0xb9, 0xf0, 0x26, 0x14, 0x8c, 0xc3, 0x43, 0x5d, 0x84, 0x24, 0x2d, 0xe4, - 0x65, 0x1c, 0x1e, 0x52, 0x91, 0x0f, 0x60, 0xed, 0xc4, 0x76, 0xf5, 0x60, 0x62, 0x0d, 0x39, 0xed, - 0xda, 0x62, 0x57, 0x9e, 0xd8, 0x2e, 0x5a, 0xde, 0x44, 0x2f, 0x9b, 0xfe, 0x95, 0xd7, 0x9a, 0xfe, - 0x5b, 0x90, 0x75, 0xec, 0xb1, 0x1d, 0x8a, 0x20, 0xa5, 0x84, 0x6d, 0x40, 0x08, 0xa6, 0x42, 0x4e, - 0xf8, 0xbc, 0x95, 0x05, 0x12, 0x81, 0x61, 0x1f, 0x40, 0xc9, 0x37, 0xdc, 0x63, 0x5d, 0x1c, 0x18, - 0x7f, 0x21, 0x9b, 0xd1, 0x9a, 0xe1, 0x1e, 0x8b, 0xf3, 0x62, 0xf0, 0xe3, 0xef, 0xa4, 0xd6, 0xb5, - 0xf1, 0x1a, 0xad, 0x4b, 0x52, 0xed, 0xd9, 0xab, 0x55, 0xfb, 0x8f, 0x48, 0x87, 0xb6, 0xdc, 0x50, - 0x8f, 0x18, 0x2e, 0x2c, 0x67, 0x28, 0x73, 0xb2, 0x2e, 0x67, 0xc3, 0x06, 0x90, 0x1b, 0x4b, 0x27, - 0x9f, 0xd7, 0x66, 0xa2, 0x01, 0xb1, 0x7f, 0x4b, 0x03, 0x7f, 0xe6, 0xeb, 0xaa, 0xc1, 0xfa, 0x2c, - 0x4e, 0x93, 0x07, 0xbc, 0x5e, 0x94, 0xfd, 0xe8, 0x89, 0xc0, 0xce, 0x48, 0x6b, 0xb7, 0x13, 0xd1, - 0x9e, 0xb7, 0x61, 0x8d, 0x47, 0x68, 0xf0, 0x7e, 0x0b, 0x68, 0x63, 0x2c, 0x6a, 0x65, 0x02, 0xf2, - 0x7e, 0x0a, 0xd8, 0x03, 0x80, 0x48, 0xe3, 0x0c, 0x4f, 0x69, 0x67, 0x8c, 0x5b, 0xc3, 0xb7, 0xcf, - 0x7a, 0x78, 0xaa, 0x15, 0xcd, 0xe8, 0x13, 0x05, 0xfe, 0xc0, 0x76, 0x4d, 0x9c, 0x7a, 0xa1, 0x71, - 0x18, 0x54, 0xab, 0xb4, 0x32, 0x4b, 0x02, 0xd6, 0x37, 0x0e, 0x03, 0xb4, 0xec, 0x0c, 0xae, 0x60, - 0xf2, 0x7a, 0x5f, 0x91, 0xdd, 0x3e, 0x92, 0xea, 0xa9, 0x95, 0x0c, 0x49, 0x0f, 0xfd, 0x04, 0x58, - 0x74, 0x24, 0x27, 0x19, 0x6a, 0x57, 0x17, 0x66, 0xe3, 0xba, 0x38, 0x93, 0x8b, 0x83, 0xcb, 0x6f, - 0x42, 0x29, 0xf0, 0xa6, 0xfe, 0xd0, 0xd2, 0x83, 0xd0, 0x9a, 0x54, 0xaf, 0x51, 0x85, 0x80, 0x83, - 0x7a, 0xa1, 0x35, 0x61, 0x9f, 0xc0, 0x5a, 0x52, 0x51, 0xbf, 0xbe, 0xe4, 0x64, 0x8b, 0xa6, 0x85, - 0x56, 0x1e, 0xca, 0xaa, 0xfb, 0x6d, 0x1e, 0x43, 0x4c, 0xbb, 0x22, 0x31, 0xf2, 0xd3, 0x9b, 0xb2, - 0xeb, 0x85, 0xf5, 0x08, 0x86, 0x1d, 0x18, 0x19, 0x70, 0xe1, 0x29, 0x6d, 0xa4, 0x71, 0x07, 0xc6, - 0x26, 0x13, 0x2a, 0xc4, 0x91, 0xf5, 0x84, 0x73, 0x81, 0x9b, 0x25, 0xc4, 0x70, 0x33, 0x31, 0x17, - 0x62, 0x7b, 0x45, 0x03, 0x7f, 0x66, 0xbb, 0x7c, 0x02, 0x15, 0xee, 0x9b, 0x8e, 0x57, 0xde, 0xd6, - 0x79, 0x2b, 0xaf, 0x4c, 0x84, 0x02, 0x82, 0xc2, 0x87, 0x33, 0xf2, 0x45, 0x78, 0x6b, 0xd1, 0x07, - 0x48, 0xe8, 0x36, 0xad, 0xc4, 0x27, 0x50, 0x99, 0xf8, 0x38, 0x64, 0x71, 0x63, 0x54, 0xb9, 0x9f, - 0xf6, 0x7d, 0x6b, 0xd6, 0x9e, 0xf2, 0x44, 0x4a, 0xb1, 0x1f, 0xc2, 0x86, 0xc4, 0x39, 0x3d, 0x26, - 0xe6, 0xdb, 0xc4, 0xbc, 0x39, 0xc7, 0x7c, 0x70, 0x8c, 0xec, 0x95, 0x49, 0x22, 0xcd, 0x6a, 0x73, - 0xce, 0x16, 0x34, 0x64, 0xee, 0x10, 0xff, 0xe5, 0x73, 0x3c, 0x28, 0x09, 0x2f, 0xcc, 0x33, 0x7e, - 0x18, 0xd4, 0x0a, 0x9a, 0xae, 0x49, 0xfb, 0x7c, 0x41, 0xe3, 0x09, 0xf6, 0x18, 0xca, 0x5c, 0xa5, - 0xa6, 0x58, 0xcd, 0xa0, 0x7a, 0x57, 0xf6, 0x36, 0x93, 0x5e, 0x4d, 0x08, 0xad, 0xe4, 0xc4, 0xdf, - 0x01, 0xfb, 0x18, 0x36, 0x78, 0xaf, 0xc9, 0x82, 0xfb, 0xad, 0xc5, 0x89, 0x48, 0x44, 0x3b, 0x33, - 0xe9, 0xad, 0xc1, 0x15, 0x7f, 0xea, 0x92, 0x9a, 0x2d, 0x38, 0x27, 0xbe, 0x37, 0xb0, 0x38, 0xff, - 0x3d, 0xe2, 0x17, 0xcd, 0xd1, 0x38, 0x19, 0xe7, 0xa5, 0x71, 0xbb, 0xe4, 0xcb, 0xa0, 0x7d, 0xe4, - 0x3b, 0x27, 0xcf, 0xc1, 0xd4, 0x76, 0x4c, 0x9e, 0xe7, 0xdb, 0xdf, 0x26, 0xcf, 0x6d, 0xe4, 0xa3, - 0x3c, 0x19, 0x64, 0xa6, 0x53, 0xdb, 0x24, 0x75, 0xa3, 0xac, 0xd1, 0x37, 0x7b, 0x13, 0x2a, 0xbe, - 0x35, 0x9c, 0xfa, 0x81, 0xfd, 0xd2, 0xd2, 0x03, 0xdb, 0x3d, 0xae, 0xbe, 0x43, 0xfd, 0xb8, 0x16, - 0x43, 0x7b, 0xb6, 0x7b, 0x8c, 0x93, 0xd7, 0x3a, 0x0d, 0x2d, 0xdf, 0xe5, 0xe1, 0xe3, 0xef, 0xca, - 0x93, 0xb7, 0x49, 0x08, 0x94, 0x3e, 0x1a, 0x58, 0xf1, 0xf7, 0xdc, 0xe4, 0x08, 0xf8, 0xe4, 0x78, - 0xf0, 0x8d, 0x26, 0x47, 0x8f, 0x26, 0xc7, 0x5d, 0x28, 0xd8, 0x6e, 0x68, 0xf9, 0x2f, 0x0d, 0xa7, - 0xfa, 0x70, 0x61, 0x06, 0xc7, 0x38, 0x76, 0x07, 0xf2, 0x81, 0x63, 0xa3, 0x14, 0xaa, 0xbe, 0xbf, - 0x40, 0x16, 0xa1, 0xd8, 0x3d, 0x28, 0xc6, 0x37, 0x9f, 0xaa, 0x1f, 0x2c, 0xd0, 0xcd, 0x90, 0xec, - 0x06, 0x64, 0x4e, 0x70, 0x42, 0x3d, 0x5a, 0x3c, 0x1d, 0x40, 0x38, 0x2a, 0x15, 0x23, 0x54, 0x2e, - 0x49, 0xa9, 0x78, 0xbc, 0xa0, 0x54, 0xec, 0xd8, 0x8e, 0xc3, 0x95, 0x8a, 0x91, 0xf8, 0xc2, 0x2d, - 0x99, 0x38, 0xb0, 0x25, 0x1f, 0x2e, 0x6e, 0xc9, 0x88, 0x7b, 0x4e, 0x77, 0xc4, 0x4a, 0x01, 0xb9, - 0xbc, 0xb9, 0xe7, 0xfe, 0x23, 0xb9, 0xaf, 0x92, 0xbe, 0x70, 0x0d, 0x82, 0x38, 0x8d, 0x9a, 0xb2, - 0x70, 0xf8, 0xdb, 0xe6, 0x69, 0xf5, 0x63, 0x7e, 0xf9, 0x80, 0x43, 0x5a, 0xe6, 0x29, 0x7b, 0x1f, - 0xd6, 0xa2, 0xe8, 0x1e, 0x2c, 0x2e, 0xa8, 0x7e, 0xb2, 0x50, 0x83, 0x24, 0x01, 0x6b, 0x40, 0x79, - 0x84, 0x4a, 0xe6, 0x98, 0xeb, 0x9c, 0xd5, 0x27, 0x54, 0x91, 0xad, 0x48, 0xe8, 0x9c, 0xa7, 0x93, - 0x6a, 0x09, 0x2e, 0xf6, 0x00, 0x98, 0x3d, 0xe2, 0xe3, 0xb9, 0xe3, 0x7b, 0x63, 0xae, 0x57, 0x56, - 0x3f, 0xa5, 0xd9, 0xb5, 0x04, 0x43, 0xe7, 0x7f, 0x96, 0x6b, 0xea, 0xe3, 0x40, 0x28, 0x2f, 0xdf, - 0xa3, 0x7a, 0x0a, 0x91, 0x1a, 0xdf, 0x90, 0x14, 0x5b, 0x5e, 0x09, 0x69, 0xf7, 0x02, 0xae, 0xcb, - 0x7c, 0x0a, 0x38, 0x5d, 0x5f, 0xce, 0x58, 0x7f, 0xe5, 0x95, 0xac, 0x48, 0x1b, 0xb1, 0x3e, 0x81, - 0x8a, 0x69, 0x99, 0xd3, 0x09, 0xe9, 0x71, 0x34, 0x45, 0xbf, 0x2f, 0x0b, 0x3f, 0xd9, 0x73, 0xa9, - 0x95, 0x4d, 0xd9, 0x8f, 0xf9, 0x09, 0xac, 0x47, 0x2e, 0xc6, 0x50, 0x78, 0x23, 0x7f, 0x20, 0x17, - 0x1b, 0x7b, 0x10, 0xb5, 0xb5, 0x69, 0xf4, 0x49, 0x45, 0x3e, 0x86, 0x35, 0xda, 0xdb, 0x03, 0xd7, - 0x98, 0x04, 0x47, 0x5e, 0x58, 0xfd, 0x55, 0x59, 0x4d, 0xe9, 0x09, 0xa8, 0x56, 0x46, 0xa2, 0x28, - 0x85, 0x5b, 0xd2, 0x6c, 0x9d, 0x0e, 0x43, 0xab, 0xfa, 0x43, 0xbe, 0x25, 0xc5, 0xc0, 0x7a, 0x68, - 0xb1, 0xc7, 0x00, 0xc6, 0x64, 0xe2, 0x9c, 0xf1, 0xa9, 0xf9, 0x23, 0x9a, 0x9a, 0x9b, 0xd2, 0xd4, - 0xac, 0x21, 0x92, 0xe6, 0x66, 0xd1, 0x88, 0x3e, 0xd9, 0x23, 0x28, 0x4f, 0xbc, 0x20, 0xd4, 0xcd, - 0xb1, 0x43, 0xed, 0xaf, 0xc9, 0x6b, 0x7b, 0xdf, 0x0b, 0xc2, 0xc6, 0xd8, 0xa1, 0x8d, 0x69, 0x12, - 0x7f, 0xb3, 0x36, 0x5c, 0x48, 0xc8, 0x6d, 0x83, 0x4e, 0xdb, 0xab, 0xdb, 0x54, 0xe2, 0x75, 0xa9, - 0x44, 0x49, 0x7e, 0x8b, 0x50, 0xb3, 0x0d, 0x6f, 0x1e, 0x44, 0x06, 0x11, 0x8d, 0x41, 0x1c, 0x6f, - 0x59, 0xe7, 0x0a, 0x0b, 0x41, 0xa3, 0x80, 0xcb, 0x27, 0xb0, 0x3e, 0xa3, 0xc2, 0x06, 0x06, 0xd5, - 0x86, 0x3c, 0x93, 0xa5, 0xa8, 0xe8, 0xb5, 0x88, 0x11, 0x61, 0x01, 0xf5, 0x9d, 0xe7, 0x38, 0xd3, - 0x89, 0x10, 0xa5, 0xd5, 0xa6, 0xe8, 0x3b, 0x02, 0x72, 0x29, 0x29, 0xd9, 0x8c, 0xd6, 0xb8, 0xba, - 0x23, 0xdb, 0x8c, 0xd6, 0x58, 0xfd, 0x67, 0x59, 0x28, 0x44, 0x56, 0x0e, 0x2b, 0x41, 0xfe, 0xa0, - 0xf3, 0xac, 0xd3, 0x7d, 0xd1, 0xe1, 0xb7, 0xbb, 0x6a, 0xbd, 0x5e, 0x53, 0xeb, 0x2b, 0x26, 0xab, - 0x00, 0xd0, 0xfd, 0x0d, 0xbd, 0x57, 0xaf, 0x75, 0xf8, 0x6d, 0x2f, 0xba, 0x35, 0xc2, 0xd3, 0xab, - 0x6c, 0x03, 0xd6, 0x76, 0x0e, 0x3a, 0x14, 0x13, 0xc7, 0x41, 0x69, 0x04, 0x35, 0x3f, 0xe7, 0x27, - 0x81, 0x1c, 0x94, 0x41, 0xd0, 0x5e, 0xad, 0xdf, 0xd4, 0x5a, 0x11, 0x28, 0x4b, 0xe1, 0x75, 0xdd, - 0x03, 0xad, 0x2e, 0x72, 0xca, 0xb1, 0x8b, 0xb0, 0x11, 0xb3, 0x45, 0x59, 0x2a, 0x79, 0xac, 0xd9, - 0xbe, 0xd6, 0xfd, 0xac, 0x59, 0xef, 0x2b, 0x40, 0xc7, 0x8a, 0x4f, 0x9f, 0x2a, 0x25, 0x56, 0x86, - 0x42, 0xa3, 0xd5, 0xeb, 0xb7, 0x3a, 0xf5, 0xbe, 0x52, 0xc6, 0x0a, 0xef, 0xb4, 0xda, 0xfd, 0xa6, - 0xa6, 0xac, 0xb1, 0x02, 0x64, 0x3e, 0xeb, 0xb6, 0x3a, 0x4a, 0x85, 0xee, 0xb1, 0xd4, 0xf6, 0xf6, - 0xdb, 0x4d, 0x65, 0x1d, 0xa1, 0xbd, 0xae, 0xd6, 0x57, 0x14, 0x84, 0xbe, 0x68, 0x75, 0x1a, 0xdd, - 0x17, 0xca, 0x06, 0x2b, 0x42, 0xf6, 0xa0, 0x83, 0xc5, 0x30, 0xb6, 0x06, 0x45, 0xfa, 0xd4, 0x6b, - 0xed, 0xb6, 0x72, 0x41, 0x3a, 0x8b, 0xdc, 0x44, 0x14, 0x9d, 0x6c, 0xf6, 0xb0, 0x0e, 0x17, 0xb1, - 0x2d, 0x71, 0x92, 0xa8, 0x2f, 0x61, 0x3e, 0x7b, 0xad, 0xce, 0x41, 0x4f, 0xb9, 0x8c, 0xc4, 0xf4, - 0x49, 0x98, 0x2a, 0xe6, 0xd3, 0xea, 0x50, 0x57, 0xde, 0xc0, 0xef, 0x46, 0xb3, 0xdd, 0xec, 0x37, - 0x95, 0x9b, 0xd8, 0x2a, 0xad, 0xb9, 0xdf, 0xae, 0xd5, 0x9b, 0xca, 0x16, 0x26, 0xda, 0xdd, 0xfa, - 0x33, 0xbd, 0xbb, 0xaf, 0xdc, 0x62, 0x9b, 0xa0, 0x74, 0x3b, 0x7a, 0xe3, 0x60, 0xbf, 0xdd, 0xaa, - 0xd7, 0xfa, 0x4d, 0xfd, 0x59, 0xf3, 0x0b, 0x45, 0xc5, 0x6e, 0xdf, 0xd7, 0x9a, 0xba, 0xc8, 0xeb, - 0x36, 0x53, 0xa0, 0xbc, 0x73, 0xf0, 0x93, 0x9f, 0x7c, 0xa1, 0x8b, 0x76, 0xbf, 0x89, 0xd5, 0x9a, - 0x51, 0xe8, 0x07, 0xcf, 0x94, 0xbb, 0x73, 0xa0, 0xde, 0x33, 0xe5, 0x2d, 0xec, 0xb7, 0x68, 0x20, - 0x94, 0x7b, 0x48, 0xa0, 0x35, 0xeb, 0x07, 0x5a, 0xaf, 0xf5, 0xbc, 0xa9, 0xd7, 0xfb, 0x4d, 0xe5, - 0x6d, 0xea, 0xa8, 0x56, 0xe7, 0x99, 0x72, 0x1f, 0x5b, 0x82, 0x5f, 0x7c, 0x78, 0xde, 0x61, 0x0c, - 0x2a, 0x33, 0x5a, 0x82, 0xbd, 0x8b, 0x24, 0xdb, 0x5a, 0xb7, 0xd6, 0xa8, 0xd7, 0x7a, 0x7d, 0xe5, - 0x3d, 0xec, 0x86, 0xde, 0x7e, 0xbb, 0xd5, 0x57, 0x1e, 0x60, 0x5b, 0x9f, 0xd6, 0xfa, 0xbb, 0x4d, - 0x4d, 0x79, 0x88, 0x23, 0xdd, 0x6f, 0xed, 0x35, 0x75, 0xd1, 0xed, 0x8f, 0xb0, 0x8c, 0x9d, 0x56, - 0xbb, 0xad, 0x3c, 0xa6, 0xe3, 0xb6, 0x9a, 0xd6, 0x6f, 0xd1, 0x58, 0x7f, 0x88, 0x19, 0xd4, 0xf6, - 0xf7, 0xdb, 0x5f, 0x28, 0x1f, 0x61, 0x03, 0xf7, 0x0e, 0xda, 0xfd, 0x96, 0x7e, 0xb0, 0xdf, 0xa8, - 0xf5, 0x9b, 0xca, 0xc7, 0x34, 0x11, 0xba, 0xbd, 0x7e, 0x63, 0xaf, 0xad, 0x7c, 0x42, 0x79, 0xd2, - 0x34, 0xac, 0xb7, 0xbb, 0x9d, 0xa6, 0xf2, 0x44, 0xfd, 0x0d, 0x28, 0x44, 0x96, 0x2f, 0x66, 0xd3, - 0xea, 0x74, 0x9a, 0x9a, 0xb2, 0x82, 0x45, 0xb5, 0x9b, 0x3b, 0x7d, 0x25, 0x45, 0x67, 0x8f, 0xad, - 0xa7, 0xbb, 0x7d, 0x65, 0x15, 0x3f, 0xbb, 0x07, 0xd8, 0x6b, 0x69, 0x6a, 0x6e, 0x73, 0xaf, 0xa5, - 0x64, 0xf0, 0xab, 0xd6, 0xe9, 0xb7, 0x94, 0x2c, 0xcd, 0x9b, 0x56, 0xe7, 0x69, 0xbb, 0xa9, 0xe4, - 0x10, 0xba, 0x57, 0xd3, 0x9e, 0x29, 0x79, 0x9e, 0x69, 0xa3, 0xf9, 0xb9, 0x52, 0x60, 0x39, 0x58, - 0x6d, 0x3f, 0x52, 0x8a, 0x08, 0x6a, 0x34, 0x1b, 0x07, 0xfb, 0x0a, 0xa8, 0xf7, 0x20, 0x5f, 0x3b, - 0x3c, 0xdc, 0xf3, 0x4c, 0x3a, 0xee, 0xdc, 0x39, 0x68, 0xb7, 0xf9, 0x3a, 0xda, 0xee, 0xf6, 0xfb, - 0xdd, 0x3d, 0x25, 0x85, 0x33, 0xb7, 0xdf, 0xdd, 0x57, 0x56, 0xd5, 0x16, 0x14, 0xa2, 0xdd, 0x54, - 0xba, 0x9b, 0x55, 0x80, 0xcc, 0xbe, 0xd6, 0x7c, 0xce, 0x0f, 0xcc, 0x3b, 0xcd, 0xcf, 0xb1, 0x9a, - 0xf8, 0x85, 0x19, 0xa5, 0xb1, 0x20, 0x7e, 0x89, 0x8a, 0x2e, 0x67, 0xb5, 0x5b, 0x9d, 0x66, 0x4d, - 0x53, 0xb2, 0xea, 0x47, 0x89, 0xb3, 0x48, 0x21, 0x78, 0xb0, 0xf8, 0x5a, 0x4b, 0x14, 0xdf, 0x7a, - 0xda, 0xe9, 0x6a, 0x4d, 0x7e, 0xdb, 0x4b, 0x74, 0xe4, 0xaa, 0xfa, 0x0e, 0x14, 0x63, 0xa1, 0x89, - 0x13, 0xab, 0xae, 0x75, 0x7b, 0x3d, 0xde, 0xef, 0x2b, 0x98, 0xa6, 0xbe, 0xe1, 0xe9, 0x94, 0xda, - 0x83, 0x8d, 0x48, 0x5e, 0x53, 0x20, 0x3c, 0x99, 0x37, 0x9b, 0x90, 0x6d, 0x5b, 0x2f, 0x2d, 0x27, - 0x8a, 0xe8, 0xa6, 0x04, 0x42, 0xbb, 0x83, 0x2f, 0x5b, 0xf1, 0x85, 0x5c, 0x4a, 0xa0, 0x82, 0xd6, - 0x91, 0xee, 0x04, 0xd3, 0x4d, 0x82, 0xdf, 0x4d, 0x41, 0x21, 0xde, 0x05, 0xee, 0xc0, 0x6a, 0xbf, - 0x27, 0xce, 0x32, 0x36, 0x1f, 0xcc, 0x9e, 0x40, 0xe8, 0x47, 0x5f, 0xda, 0x6a, 0xbf, 0xc7, 0xde, - 0x85, 0x1c, 0xbf, 0xc2, 0x28, 0x0e, 0xa1, 0x36, 0x93, 0x3b, 0x4b, 0x9f, 0x70, 0x9a, 0xa0, 0x61, - 0x1f, 0x41, 0x31, 0xae, 0xad, 0xf0, 0xca, 0x5c, 0x4e, 0x32, 0xc4, 0x68, 0x6d, 0x46, 0xa9, 0xb6, - 0xa1, 0x92, 0xcc, 0x90, 0xdd, 0x00, 0xe0, 0x59, 0x4a, 0xde, 0x28, 0x09, 0xc2, 0xae, 0x42, 0x74, - 0xb3, 0xb2, 0x41, 0x15, 0x5b, 0x8b, 0x6f, 0x5a, 0x36, 0xd4, 0xbf, 0x9e, 0x06, 0x98, 0xe9, 0x91, - 0xd8, 0x11, 0xb1, 0xaf, 0x29, 0x2b, 0x8e, 0xb1, 0xaf, 0x41, 0xd1, 0xf1, 0x0c, 0x53, 0x7e, 0x01, - 0xa1, 0x80, 0x00, 0x1a, 0x1a, 0xf9, 0x96, 0x51, 0x91, 0xc7, 0x90, 0xb0, 0x4b, 0x90, 0x1b, 0x79, - 0xfe, 0xd8, 0x08, 0x45, 0xf8, 0xbe, 0x48, 0xe1, 0x76, 0xc0, 0x8f, 0x56, 0x51, 0x9b, 0x76, 0x29, - 0x82, 0x1f, 0xc7, 0xa0, 0x2c, 0x80, 0x6d, 0x84, 0xa1, 0x71, 0x69, 0xb9, 0x43, 0xc7, 0x0b, 0x2c, - 0x13, 0xed, 0xae, 0x1c, 0xa9, 0xcc, 0x10, 0x81, 0xb6, 0xcf, 0x78, 0x6b, 0xfd, 0xb1, 0xed, 0x1a, - 0xa1, 0x38, 0x70, 0xa0, 0xd6, 0x46, 0x10, 0xac, 0xee, 0x97, 0x81, 0x27, 0x5c, 0x4f, 0xfc, 0x94, - 0xb6, 0x80, 0x00, 0xaa, 0xee, 0x1b, 0x00, 0x56, 0x30, 0x34, 0x26, 0x3c, 0xf3, 0x22, 0x65, 0x5e, - 0x14, 0x90, 0xed, 0x33, 0xd6, 0x86, 0x4a, 0x7f, 0x80, 0xdb, 0x97, 0xd7, 0x30, 0x42, 0xa3, 0xee, - 0x39, 0xc2, 0x29, 0x74, 0x67, 0x5e, 0xe1, 0x7e, 0x90, 0x24, 0xe3, 0xc7, 0xc9, 0x73, 0xbc, 0x57, - 0x6b, 0x70, 0x61, 0x09, 0xd9, 0xb7, 0x8a, 0xab, 0x73, 0xa2, 0xd1, 0xa9, 0x85, 0x21, 0xdd, 0x98, - 0x89, 0x77, 0xea, 0x54, 0x14, 0xf7, 0xcf, 0x37, 0xe9, 0x6b, 0x14, 0x39, 0x23, 0x42, 0x32, 0xc5, - 0x20, 0xc5, 0xa1, 0x96, 0x77, 0x61, 0x1d, 0x91, 0x23, 0xdb, 0x72, 0x4c, 0x41, 0xc2, 0x2f, 0x7c, - 0xac, 0x0d, 0x3d, 0x67, 0x07, 0xa1, 0x44, 0xa7, 0xfe, 0xd5, 0x2c, 0xc0, 0xcc, 0x46, 0x4b, 0x9c, - 0x68, 0xa7, 0x92, 0x27, 0xda, 0x8f, 0xe0, 0x92, 0xb8, 0x0e, 0x14, 0x1f, 0x0b, 0xdb, 0xae, 0x3e, - 0x30, 0xa2, 0xe0, 0x01, 0x26, 0xb0, 0xfc, 0x64, 0xb8, 0xe5, 0x6e, 0x1b, 0xa8, 0xf1, 0xad, 0xcb, - 0x3c, 0xe1, 0xd9, 0x24, 0x19, 0xfc, 0x20, 0xeb, 0x11, 0x33, 0xf6, 0xfe, 0xd9, 0x84, 0xbd, 0x0f, - 0x17, 0x7d, 0x6b, 0xe4, 0x5b, 0xc1, 0x91, 0x1e, 0x06, 0x72, 0x61, 0x3c, 0x46, 0x6f, 0x43, 0x20, - 0xfb, 0x41, 0x5c, 0xd6, 0xfb, 0x70, 0x51, 0x58, 0x6f, 0x73, 0xd5, 0xe3, 0xf7, 0xc6, 0x37, 0x38, - 0x52, 0xae, 0xdd, 0x1b, 0x00, 0xc2, 0x70, 0x8d, 0xde, 0x11, 0x29, 0x68, 0x45, 0x6e, 0xa4, 0x8a, - 0xdb, 0xb5, 0x64, 0x7d, 0x8a, 0xe3, 0x3e, 0x9e, 0x60, 0x2a, 0x64, 0x50, 0x9c, 0xd2, 0xd1, 0x54, - 0xe5, 0x51, 0xe5, 0x01, 0xbd, 0x93, 0x42, 0xb7, 0x9d, 0x3d, 0xd3, 0xd2, 0x08, 0xc7, 0xde, 0x83, - 0x0b, 0x72, 0xb3, 0xa3, 0xab, 0xfe, 0x25, 0xaa, 0x88, 0x32, 0x6b, 0xa8, 0xc6, 0x2f, 0xfd, 0xbf, - 0x03, 0x4c, 0xaa, 0x79, 0x44, 0x5d, 0x26, 0xea, 0xf5, 0xb8, 0xda, 0x82, 0xf8, 0x2d, 0xa0, 0x2a, - 0xf2, 0x93, 0x80, 0xb5, 0x45, 0x53, 0x0d, 0x91, 0x74, 0x24, 0xf0, 0x3e, 0x5c, 0x9c, 0xb5, 0x4e, - 0x37, 0x42, 0x3d, 0x3c, 0xb2, 0x74, 0xcb, 0x35, 0xe9, 0x0e, 0x57, 0x41, 0xdb, 0x88, 0x1b, 0x5a, - 0x0b, 0xfb, 0x47, 0x16, 0x1a, 0x5b, 0x92, 0x8b, 0x6e, 0xfd, 0xd5, 0x2e, 0xba, 0x8f, 0xa1, 0x9a, - 0x38, 0xe6, 0x96, 0xbb, 0x9b, 0xdf, 0x81, 0xdc, 0x94, 0x0f, 0xb7, 0xe3, 0x1e, 0xbf, 0x0f, 0x1b, - 0x47, 0x46, 0xa0, 0x27, 0x78, 0xc9, 0x73, 0x58, 0xd0, 0xd6, 0x8f, 0x8c, 0x60, 0x5f, 0xe2, 0x51, - 0x7f, 0x3f, 0x05, 0x95, 0xa4, 0xd5, 0xca, 0xef, 0xc0, 0x38, 0xd3, 0xb1, 0xcb, 0x23, 0x5a, 0xb2, - 0x5a, 0x94, 0xc4, 0xb5, 0x30, 0x39, 0xd6, 0x79, 0x2a, 0x5a, 0x0b, 0x93, 0xe3, 0x3a, 0xa5, 0xd9, - 0xdb, 0x90, 0x9f, 0x1c, 0x73, 0xe1, 0x70, 0xde, 0xec, 0xcb, 0x4d, 0x78, 0x28, 0xf1, 0xdb, 0x90, - 0x9f, 0x0a, 0xd2, 0xcc, 0x79, 0xa4, 0x53, 0x22, 0x55, 0xff, 0xf9, 0x2a, 0x94, 0x65, 0x7f, 0xcd, - 0x37, 0x39, 0xfd, 0xfe, 0x56, 0x51, 0x0b, 0x5b, 0x14, 0x59, 0xa8, 0x53, 0xdc, 0x32, 0xf6, 0x13, - 0x3f, 0xfa, 0x86, 0x23, 0x23, 0xa8, 0x4d, 0x43, 0xaf, 0xee, 0xf1, 0x13, 0x37, 0xcf, 0x89, 0xe2, - 0x99, 0xf9, 0xca, 0x40, 0x99, 0x20, 0x42, 0x99, 0xdf, 0x17, 0xd7, 0x25, 0xe8, 0x82, 0x14, 0x45, - 0xcc, 0x64, 0x17, 0xe6, 0x4b, 0x39, 0xba, 0x1f, 0x45, 0xc1, 0x30, 0x8f, 0x60, 0x7d, 0x16, 0x9c, - 0x1e, 0x05, 0xd9, 0xcc, 0xb3, 0xac, 0xc5, 0x91, 0xe9, 0xe2, 0x46, 0xf4, 0x9a, 0x1d, 0xe8, 0x9e, - 0x63, 0x46, 0xb7, 0x60, 0xf2, 0x91, 0x83, 0xbe, 0xeb, 0x98, 0xe2, 0x8e, 0x1c, 0xa7, 0x71, 0xad, - 0x93, 0x88, 0x26, 0x76, 0xe2, 0x77, 0xac, 0x13, 0x71, 0x1b, 0xe6, 0x5f, 0xa4, 0x60, 0x63, 0xc1, - 0xbf, 0x82, 0x92, 0x73, 0xf6, 0x3e, 0x0f, 0x7e, 0xb2, 0x5b, 0x50, 0x1e, 0x1b, 0xe1, 0xf0, 0x48, - 0x9f, 0xf8, 0xd6, 0xc8, 0x3e, 0x8d, 0x1e, 0x19, 0x22, 0xd8, 0x3e, 0x81, 0x28, 0xf0, 0x68, 0x32, - 0x21, 0xaf, 0xd2, 0xd8, 0x0e, 0x85, 0xe0, 0x03, 0x02, 0x71, 0x37, 0x5c, 0x14, 0x94, 0x98, 0x39, - 0x27, 0x28, 0xf1, 0x2a, 0x14, 0x5d, 0x2f, 0xd4, 0x3d, 0x57, 0x9f, 0x1c, 0x8b, 0x2b, 0xf4, 0x79, - 0xd7, 0x0b, 0xbb, 0xee, 0xfe, 0x31, 0xbb, 0x07, 0xca, 0x34, 0xb0, 0xf4, 0x81, 0xe3, 0x79, 0xe3, - 0xc8, 0xc8, 0xe1, 0xb2, 0xa3, 0x32, 0x0d, 0xac, 0x6d, 0x04, 0xf3, 0xfa, 0xab, 0xd7, 0x21, 0xd7, - 0x8a, 0xbd, 0x41, 0x71, 0xfc, 0x4d, 0x5a, 0xbc, 0xc7, 0xe1, 0x41, 0xb1, 0x4e, 0x6f, 0x7b, 0xec, - 0x19, 0x13, 0x76, 0x1f, 0xd2, 0x63, 0x63, 0x22, 0xe2, 0x73, 0xaa, 0xf1, 0x59, 0x11, 0xc7, 0x3e, - 0xd8, 0x33, 0x26, 0x7c, 0xbb, 0x41, 0xa2, 0xab, 0x1f, 0x43, 0x21, 0x02, 0x7c, 0xab, 0x8d, 0xe5, - 0x5f, 0xaf, 0x42, 0xb1, 0x21, 0xfb, 0x98, 0xd1, 0x30, 0x0e, 0xfd, 0xa9, 0x8b, 0x5a, 0x5a, 0xf4, - 0x4a, 0xc1, 0xd0, 0x70, 0xfb, 0x02, 0x14, 0x4d, 0xe8, 0xd5, 0x57, 0x4c, 0xe8, 0xeb, 0x00, 0x3e, - 0x39, 0x43, 0xc8, 0x1f, 0x92, 0x8e, 0x63, 0x41, 0x5b, 0x66, 0xcb, 0x3c, 0x5d, 0x1e, 0xec, 0x91, - 0xf9, 0xe6, 0xc1, 0x1e, 0xd9, 0xa5, 0xc1, 0x1e, 0x77, 0x67, 0x9b, 0x0a, 0x4e, 0x6c, 0x2c, 0xb8, - 0xc8, 0xb7, 0xb6, 0x49, 0x7c, 0x25, 0x04, 0x4b, 0xff, 0x1e, 0x54, 0xa2, 0xd6, 0x89, 0xfc, 0x20, - 0x71, 0x0b, 0x45, 0xe0, 0xb8, 0x53, 0x7a, 0x2d, 0x94, 0x93, 0xc9, 0x85, 0x5a, 0x7a, 0x4d, 0x14, - 0xcc, 0xdf, 0x48, 0x01, 0x13, 0xc6, 0xfb, 0xce, 0xd4, 0x71, 0xfa, 0xd6, 0x29, 0xc9, 0x83, 0xfb, - 0xb0, 0x21, 0x7c, 0xe6, 0x52, 0x0c, 0x99, 0x38, 0x38, 0xe4, 0x88, 0xd9, 0xc1, 0xe1, 0xb2, 0x8b, - 0x82, 0xab, 0x4b, 0x2f, 0x0a, 0x2e, 0xbf, 0x80, 0x78, 0x13, 0x4a, 0xf2, 0x35, 0x3b, 0xae, 0x84, - 0x81, 0x31, 0xbb, 0x61, 0xf7, 0x6f, 0x57, 0x01, 0x66, 0x0e, 0x86, 0x5f, 0x76, 0xa4, 0xce, 0x92, - 0x21, 0x49, 0x2f, 0x1b, 0x92, 0x7b, 0xa0, 0xc8, 0x74, 0xd2, 0x7d, 0xcf, 0xca, 0x8c, 0x30, 0x52, - 0x6e, 0xec, 0x40, 0xbe, 0x93, 0x47, 0x61, 0x79, 0x22, 0x1a, 0x41, 0xc4, 0xec, 0x91, 0xe4, 0x15, - 0x6b, 0xaf, 0x60, 0x07, 0x5c, 0x12, 0xb3, 0x4f, 0xe1, 0x4a, 0xcc, 0xa9, 0x9f, 0xd8, 0xe1, 0x91, - 0x37, 0x0d, 0xc5, 0x3a, 0x0d, 0x84, 0x6c, 0xba, 0x14, 0xe5, 0xf4, 0x82, 0xa3, 0xf9, 0x7a, 0x0d, - 0x50, 0x3d, 0x1f, 0x4d, 0x1d, 0x47, 0x0f, 0xad, 0xd3, 0x50, 0x3c, 0x7c, 0x50, 0x4d, 0xf8, 0x66, - 0xa4, 0xe1, 0xd5, 0x0a, 0x23, 0x91, 0x50, 0xff, 0x41, 0x1a, 0xb2, 0x3f, 0x9e, 0x5a, 0xfe, 0x19, - 0xfb, 0x18, 0x8a, 0x41, 0x38, 0x0e, 0xe5, 0xc3, 0xdb, 0x2b, 0x3c, 0x03, 0xc2, 0xd3, 0xd9, 0xab, - 0x35, 0xb6, 0xdc, 0x90, 0x3b, 0x2d, 0x91, 0x96, 0xb6, 0x9d, 0x4d, 0xc8, 0x06, 0xa1, 0x35, 0x09, - 0x44, 0x8c, 0x1d, 0x4f, 0xb0, 0x2d, 0xc8, 0xba, 0x9e, 0x69, 0x05, 0xc9, 0x48, 0xba, 0x0e, 0xea, - 0x19, 0x1c, 0xc1, 0x54, 0xc8, 0xc5, 0x23, 0xbe, 0x70, 0x80, 0xca, 0x31, 0x74, 0x37, 0xc2, 0x32, - 0x4c, 0xdb, 0x3d, 0x8c, 0xee, 0xcf, 0xc6, 0x69, 0xdc, 0x50, 0x49, 0xad, 0x37, 0x0e, 0xa3, 0xcb, - 0xec, 0x22, 0xc9, 0xb6, 0xa0, 0x84, 0x9f, 0x2f, 0x7c, 0x3b, 0xb4, 0x7a, 0x8f, 0x23, 0x99, 0x2e, - 0x81, 0x50, 0x29, 0x37, 0xad, 0xd0, 0x1a, 0x86, 0xbd, 0xaf, 0x44, 0x78, 0x1c, 0x45, 0x51, 0x45, - 0x10, 0xf6, 0x3d, 0x60, 0x03, 0x63, 0x78, 0x7c, 0xe8, 0x7b, 0x53, 0xd7, 0xd4, 0xbf, 0x9a, 0x5a, - 0xbe, 0x6d, 0x45, 0xe1, 0x70, 0x25, 0xa9, 0x53, 0xb4, 0x8d, 0x19, 0xd9, 0x8f, 0x39, 0x95, 0x6a, - 0xc2, 0x5a, 0xa2, 0xab, 0x16, 0xfc, 0x40, 0xbd, 0x66, 0xbb, 0x59, 0xef, 0x73, 0x03, 0x52, 0x38, - 0x1f, 0x56, 0x65, 0xe7, 0x45, 0x5a, 0xf2, 0x6a, 0x64, 0x24, 0x2b, 0x33, 0x4b, 0x3e, 0x91, 0xa6, - 0xf6, 0xb4, 0xa9, 0xe4, 0xd4, 0x3f, 0x58, 0x85, 0x8d, 0xbe, 0x6f, 0xb8, 0x81, 0xc1, 0x75, 0x0e, - 0x37, 0xf4, 0x3d, 0x87, 0x7d, 0x0f, 0x0a, 0xe1, 0xd0, 0x91, 0x87, 0xf0, 0x66, 0x24, 0x30, 0xe6, - 0x48, 0x1f, 0xf4, 0x87, 0xdc, 0xfb, 0x9c, 0x0f, 0xf9, 0x07, 0x7b, 0x0f, 0xb2, 0x03, 0xeb, 0xd0, - 0x76, 0x85, 0xcc, 0xbc, 0x38, 0xcf, 0xb8, 0x8d, 0xc8, 0xdd, 0x15, 0x8d, 0x53, 0xb1, 0xf7, 0x21, - 0x37, 0xf4, 0xc6, 0xd1, 0x16, 0x35, 0xbb, 0x87, 0x25, 0x15, 0x84, 0xd8, 0xdd, 0x15, 0x4d, 0xd0, - 0xb1, 0x8f, 0xa1, 0xe0, 0x7b, 0x8e, 0x83, 0x3d, 0x26, 0x36, 0xaf, 0xea, 0x3c, 0x8f, 0x26, 0xf0, - 0xbb, 0x2b, 0x5a, 0x4c, 0xab, 0x3e, 0x80, 0xbc, 0xa8, 0x2c, 0x76, 0xc0, 0x76, 0xf3, 0x69, 0x4b, - 0x74, 0x64, 0xbd, 0xbb, 0xb7, 0xd7, 0xea, 0xf3, 0x4b, 0xa6, 0x5a, 0xb7, 0xdd, 0xde, 0xae, 0xd5, - 0x9f, 0x29, 0xab, 0xdb, 0x05, 0xc8, 0x71, 0x3f, 0xa3, 0xfa, 0x9b, 0x29, 0x58, 0x9f, 0x6b, 0x00, - 0x7b, 0x02, 0x99, 0x31, 0xea, 0xc0, 0xbc, 0x7b, 0xee, 0x2c, 0x6d, 0xa5, 0x94, 0xe6, 0x9a, 0x31, - 0x72, 0xa8, 0x9f, 0x42, 0x25, 0x09, 0x97, 0x7c, 0x0d, 0x6b, 0x50, 0xd4, 0x9a, 0xb5, 0x86, 0xde, - 0xed, 0xa0, 0x85, 0x8f, 0x16, 0x3f, 0x25, 0x5f, 0x68, 0x2d, 0x72, 0x0f, 0xfc, 0x1a, 0x28, 0xf3, - 0x1d, 0xc3, 0x9e, 0xa2, 0x95, 0x33, 0x9e, 0x38, 0x16, 0x29, 0x93, 0xd2, 0x90, 0xdd, 0x58, 0xd2, - 0x93, 0x82, 0x8c, 0x46, 0xac, 0x32, 0x4c, 0xa4, 0xd5, 0x5f, 0x07, 0xb6, 0xd8, 0x83, 0xbf, 0xbc, - 0xec, 0xff, 0x67, 0x0a, 0x32, 0xfb, 0x8e, 0xe1, 0xb2, 0xdb, 0x90, 0xa5, 0xc7, 0x51, 0x84, 0xe4, - 0x95, 0xd7, 0x01, 0x4e, 0x0b, 0xc2, 0xb1, 0x77, 0x20, 0x1d, 0x0e, 0xa3, 0xbb, 0xad, 0x97, 0xcf, - 0x99, 0x7c, 0xbb, 0x2b, 0x1a, 0x52, 0xb1, 0x7b, 0x90, 0x36, 0xcd, 0x28, 0xa6, 0x5c, 0x78, 0x1f, - 0xd0, 0xf6, 0x6c, 0x58, 0x23, 0xdb, 0xb5, 0xc5, 0x63, 0x2e, 0x48, 0xc2, 0xde, 0x84, 0xb4, 0x39, - 0x74, 0x92, 0x17, 0x04, 0xb8, 0x95, 0x1a, 0x67, 0x68, 0x0e, 0x1d, 0xd4, 0xd5, 0x42, 0xff, 0x4c, - 0xf7, 0xa7, 0x2e, 0x05, 0xc9, 0x05, 0xc2, 0x7e, 0x2a, 0xa1, 0xfe, 0x31, 0xa5, 0x48, 0xbb, 0x40, - 0x5c, 0x92, 0x9b, 0xf8, 0xd6, 0xc4, 0xf0, 0x63, 0xcb, 0xc9, 0x0e, 0xf6, 0x39, 0x60, 0x3b, 0x07, - 0xf4, 0xe6, 0xa4, 0xfa, 0x2e, 0xbd, 0xdc, 0x81, 0x2a, 0xb8, 0x1a, 0x7d, 0x2d, 0x79, 0x9e, 0x4c, - 0x60, 0xd4, 0x3f, 0x4f, 0x43, 0x49, 0xaa, 0x0f, 0xfb, 0x10, 0x0a, 0x66, 0x72, 0x21, 0x5e, 0x59, - 0xa8, 0xf4, 0x83, 0x46, 0xb4, 0x04, 0x4d, 0x31, 0xbd, 0xe9, 0x68, 0x23, 0xd4, 0x5f, 0x1a, 0xbe, - 0xcd, 0xdf, 0x6b, 0x5a, 0x95, 0xcf, 0x18, 0x7a, 0x56, 0xf8, 0x3c, 0xc2, 0xec, 0xae, 0x68, 0xe5, - 0x40, 0x4a, 0x93, 0x9d, 0x20, 0x9a, 0x94, 0x4e, 0xbc, 0x7b, 0xc5, 0x81, 0xbb, 0x2b, 0x5a, 0x84, - 0x47, 0x52, 0xeb, 0xd4, 0x1a, 0x4e, 0xc3, 0xc8, 0x4e, 0x58, 0x8b, 0x1a, 0x44, 0x40, 0x7a, 0x7c, - 0x8f, 0x7f, 0xb2, 0x47, 0x28, 0x27, 0x0d, 0xc7, 0xf1, 0x48, 0xcd, 0xca, 0xca, 0x1e, 0xff, 0x46, - 0x0c, 0xe7, 0x8f, 0xfd, 0x45, 0x29, 0x76, 0x17, 0xb2, 0x5e, 0x78, 0x64, 0x45, 0xda, 0x77, 0xf4, - 0x06, 0x08, 0x82, 0x1a, 0xf5, 0x36, 0xce, 0x14, 0x42, 0xab, 0x3f, 0x4b, 0x41, 0x5e, 0xf4, 0x00, - 0xdb, 0x80, 0xb5, 0x5e, 0xb3, 0xaf, 0x3f, 0xaf, 0x69, 0xad, 0xda, 0x76, 0xbb, 0x29, 0xee, 0x35, - 0x3c, 0xd5, 0x6a, 0x1d, 0x21, 0x27, 0xb5, 0xe6, 0xf3, 0xee, 0xb3, 0x26, 0x77, 0xe0, 0x35, 0x9a, - 0x9d, 0x2f, 0x94, 0x34, 0x77, 0x62, 0x37, 0xf7, 0x6b, 0x1a, 0x4a, 0xc9, 0x12, 0xe4, 0x9b, 0x9f, - 0x37, 0xeb, 0x07, 0x24, 0x26, 0x2b, 0x00, 0x8d, 0x66, 0xad, 0xdd, 0xee, 0xd6, 0x51, 0x6c, 0xe6, - 0x18, 0x83, 0x4a, 0x5d, 0x6b, 0xd6, 0xfa, 0x4d, 0xbd, 0x56, 0xaf, 0x77, 0x0f, 0x3a, 0x7d, 0x25, - 0x8f, 0x25, 0xd6, 0xda, 0xfd, 0xa6, 0x16, 0x83, 0xe8, 0x5d, 0xa6, 0x86, 0xd6, 0xdd, 0x8f, 0x21, - 0xc5, 0xed, 0x22, 0xda, 0x6c, 0x34, 0x56, 0xea, 0x3f, 0xda, 0x80, 0x4a, 0x72, 0x6a, 0xb2, 0x4f, - 0xa0, 0x60, 0x9a, 0x89, 0x31, 0xbe, 0xbe, 0x6c, 0x0a, 0x3f, 0x68, 0x98, 0xd1, 0x30, 0xf3, 0x0f, - 0x76, 0x2b, 0x5a, 0x48, 0xab, 0x0b, 0x0b, 0x29, 0x5a, 0x46, 0x3f, 0x84, 0x75, 0xf1, 0x86, 0x86, - 0x69, 0x84, 0xc6, 0xc0, 0x08, 0xac, 0xe4, 0x2a, 0xa9, 0x13, 0xb2, 0x21, 0x70, 0xbb, 0x2b, 0x5a, - 0x65, 0x98, 0x80, 0xb0, 0xef, 0x43, 0xc5, 0x20, 0xb3, 0x3c, 0xe6, 0xcf, 0xc8, 0x0a, 0x64, 0x0d, - 0x71, 0x12, 0xfb, 0x9a, 0x21, 0x03, 0x70, 0x22, 0x9a, 0xbe, 0x37, 0x99, 0x31, 0x67, 0x13, 0x87, - 0x5d, 0xbe, 0x37, 0x91, 0x78, 0xcb, 0xa6, 0x94, 0x66, 0x1f, 0x43, 0x59, 0xd4, 0x7c, 0xe6, 0x9a, - 0x88, 0x97, 0x2c, 0xaf, 0x36, 0x29, 0x84, 0xbb, 0x2b, 0x5a, 0x69, 0x38, 0x4b, 0xb2, 0xc7, 0xa8, - 0x05, 0xce, 0xd4, 0xe7, 0xbc, 0x3c, 0xd7, 0xa8, 0xb6, 0x11, 0x17, 0x18, 0x71, 0x8a, 0xbd, 0x0f, - 0x40, 0xf5, 0xe4, 0x3c, 0x85, 0x44, 0x70, 0x8a, 0xef, 0x4d, 0x22, 0x96, 0xa2, 0x19, 0x25, 0xa4, - 0xea, 0x71, 0xc7, 0x52, 0x71, 0xb1, 0x7a, 0xe4, 0x5c, 0x9a, 0x55, 0x8f, 0xfb, 0xa4, 0xe2, 0xea, - 0x71, 0x36, 0x58, 0xa8, 0x5e, 0xc4, 0xc5, 0xab, 0xc7, 0x99, 0xa2, 0xea, 0x71, 0x9e, 0xd2, 0x7c, - 0xf5, 0x22, 0x16, 0xaa, 0x1e, 0xe7, 0xf8, 0xfe, 0x82, 0xde, 0x5f, 0x3e, 0x57, 0xef, 0xc7, 0x61, - 0x4b, 0x6a, 0xfe, 0xdf, 0x87, 0x4a, 0x70, 0xe4, 0x9d, 0x48, 0x02, 0x64, 0x4d, 0xe6, 0xee, 0x1d, - 0x79, 0x27, 0xb2, 0x04, 0x59, 0x0b, 0x64, 0x00, 0xd6, 0x96, 0x37, 0x91, 0x2e, 0xef, 0x57, 0xe4, - 0xda, 0x52, 0x0b, 0x9f, 0xdb, 0xd6, 0x09, 0xd6, 0xd6, 0x88, 0x12, 0xd8, 0x29, 0x33, 0x37, 0x4d, - 0x20, 0x1c, 0x2f, 0x89, 0xe0, 0x09, 0x51, 0x12, 0xc4, 0x0e, 0x9b, 0x00, 0xe7, 0xd6, 0xd4, 0x95, - 0xd9, 0x14, 0x79, 0x6e, 0x1d, 0xb8, 0x09, 0xc6, 0x32, 0x27, 0x15, 0xac, 0xb3, 0x55, 0x11, 0x58, - 0x5f, 0x4d, 0x2d, 0x77, 0x68, 0x89, 0xd0, 0xad, 0xc4, 0xaa, 0xe8, 0x09, 0xdc, 0x6c, 0x55, 0x44, - 0x90, 0x78, 0x5e, 0xc7, 0xec, 0x6c, 0x7e, 0x5e, 0x4b, 0xcc, 0x34, 0xaf, 0x63, 0xd6, 0x78, 0x41, - 0xc5, 0xbc, 0x17, 0x16, 0x16, 0x94, 0xc4, 0xcc, 0x17, 0x54, 0xcc, 0xfd, 0x18, 0xc4, 0x6c, 0xe2, - 0x9d, 0x9b, 0x08, 0xf0, 0xe2, 0xb5, 0x16, 0xbd, 0x0b, 0xc3, 0x38, 0x85, 0x73, 0xd5, 0xb7, 0xd0, - 0xce, 0x10, 0x53, 0xe1, 0xa2, 0x3c, 0x57, 0x35, 0xc2, 0xc4, 0x4b, 0xc9, 0x9f, 0x25, 0xa5, 0xc2, - 0x26, 0x76, 0xe8, 0x57, 0xcd, 0xc5, 0xc2, 0xf6, 0xed, 0xd0, 0x9f, 0x15, 0x86, 0x29, 0xf6, 0x1e, - 0xd0, 0x34, 0xe4, 0x2c, 0x96, 0x2c, 0xba, 0xb1, 0x5b, 0x04, 0x43, 0xc1, 0x14, 0xdf, 0x38, 0x59, - 0x44, 0x19, 0x43, 0x73, 0x58, 0x1d, 0xc9, 0x93, 0x85, 0x17, 0x51, 0x6f, 0xd4, 0x71, 0xb2, 0x70, - 0xa2, 0xba, 0x39, 0x64, 0xf7, 0x81, 0xb8, 0x89, 0xfe, 0x30, 0xf1, 0xc6, 0x94, 0xef, 0x4d, 0x38, - 0x75, 0x1e, 0x09, 0x90, 0x16, 0x5b, 0xe0, 0x78, 0x6e, 0xd4, 0xf0, 0xa3, 0x44, 0x0b, 0x10, 0x11, - 0x0b, 0x83, 0x61, 0x9c, 0x52, 0x7f, 0x3b, 0x07, 0x79, 0x21, 0x6b, 0xd9, 0x05, 0x58, 0x17, 0x22, - 0xbf, 0x51, 0xeb, 0xd7, 0xb6, 0x6b, 0x3d, 0x54, 0xd2, 0x18, 0x54, 0xb8, 0xcc, 0x8f, 0x61, 0x29, - 0xdc, 0x07, 0x48, 0xe8, 0xc7, 0xa0, 0x55, 0xdc, 0x07, 0x04, 0x2f, 0x7f, 0xcb, 0x2f, 0xcd, 0xd6, - 0xa1, 0xc4, 0x19, 0x39, 0x80, 0xae, 0x59, 0x12, 0x17, 0x4f, 0x67, 0x25, 0x16, 0x7e, 0x9e, 0x95, - 0x9b, 0xb1, 0x70, 0x40, 0x3e, 0x66, 0x89, 0x0e, 0xbc, 0x18, 0x54, 0xfa, 0xda, 0x41, 0xa7, 0x3e, - 0x2b, 0xa7, 0x48, 0x57, 0xe3, 0x78, 0x36, 0xcf, 0x5b, 0xcd, 0x17, 0x0a, 0x20, 0x13, 0xcf, 0x85, - 0xd2, 0x25, 0x54, 0x33, 0x29, 0x13, 0x4a, 0x96, 0xd9, 0x65, 0xb8, 0xd0, 0xdb, 0xed, 0xbe, 0xd0, - 0x39, 0x53, 0xdc, 0x84, 0x35, 0xb6, 0x09, 0x8a, 0x84, 0xe0, 0xd9, 0x57, 0xb0, 0x48, 0x82, 0x46, - 0x84, 0x3d, 0x65, 0x9d, 0x8e, 0x8c, 0x11, 0xd6, 0xe7, 0xfb, 0xae, 0x82, 0x4d, 0xe1, 0xac, 0xdd, - 0xf6, 0xc1, 0x5e, 0xa7, 0xa7, 0x6c, 0x60, 0x25, 0x08, 0xc2, 0x6b, 0xce, 0xe2, 0x6c, 0x66, 0xbb, - 0xf5, 0x05, 0xda, 0xc0, 0x11, 0xf6, 0xa2, 0xa6, 0x75, 0x5a, 0x9d, 0xa7, 0x3d, 0x65, 0x33, 0xce, - 0xb9, 0xa9, 0x69, 0x5d, 0xad, 0xa7, 0x5c, 0x8c, 0x01, 0xbd, 0x7e, 0xad, 0x7f, 0xd0, 0x53, 0x2e, - 0xc5, 0xb5, 0xdc, 0xd7, 0xba, 0xf5, 0x66, 0xaf, 0xd7, 0x6e, 0xf5, 0xfa, 0xca, 0x65, 0x76, 0x11, - 0x36, 0x66, 0x35, 0x8a, 0x88, 0xab, 0x52, 0x45, 0xb5, 0xa7, 0xcd, 0xbe, 0x72, 0x25, 0xae, 0x46, - 0xbd, 0xdb, 0x6e, 0xd7, 0xe8, 0xb0, 0xf3, 0x2a, 0x12, 0xd1, 0xa9, 0xaf, 0x68, 0xcd, 0x35, 0xac, - 0xd7, 0x41, 0x47, 0x06, 0x5d, 0x97, 0xa6, 0x46, 0xaf, 0xf9, 0xe3, 0x83, 0x66, 0xa7, 0xde, 0x54, - 0xde, 0x98, 0x4d, 0x8d, 0x18, 0x76, 0x23, 0x9e, 0x1a, 0x31, 0xe8, 0x66, 0x5c, 0x66, 0x04, 0xea, - 0x29, 0x5b, 0x98, 0x9f, 0xa8, 0x47, 0xa7, 0xd3, 0xac, 0xf7, 0xb1, 0xad, 0xb7, 0xe2, 0x5e, 0x3c, - 0xd8, 0x7f, 0xaa, 0xd5, 0x1a, 0x4d, 0x45, 0x45, 0x88, 0xd6, 0xec, 0xd4, 0xf6, 0xa2, 0xd1, 0xbe, - 0x2d, 0x8d, 0xf6, 0x7e, 0xab, 0xaf, 0x29, 0x77, 0xe2, 0xd1, 0xa5, 0xe4, 0x9b, 0xec, 0x1a, 0x5c, - 0x96, 0xe7, 0xa1, 0xfe, 0xa2, 0xd5, 0xdf, 0x15, 0x67, 0xb3, 0x77, 0xf9, 0x19, 0x23, 0x21, 0xeb, - 0x8d, 0x3a, 0x3f, 0x84, 0x26, 0x5e, 0x4c, 0xdd, 0xdb, 0x2e, 0xd3, 0x93, 0xcc, 0x42, 0x01, 0x51, - 0x3f, 0x03, 0x26, 0xbf, 0x4e, 0x2a, 0x22, 0x60, 0x19, 0x64, 0x46, 0xbe, 0x37, 0x8e, 0x9e, 0x3c, - 0xc0, 0x6f, 0xb4, 0x9c, 0x27, 0xd3, 0x01, 0x9d, 0x7d, 0xce, 0xae, 0x34, 0xcb, 0x20, 0xf5, 0x8f, - 0x52, 0x50, 0x49, 0x2a, 0x1f, 0xe4, 0x20, 0x1d, 0xe9, 0xae, 0x17, 0xf2, 0xf7, 0x9f, 0x82, 0xf8, - 0xd1, 0xd0, 0x51, 0xc7, 0x0b, 0xe9, 0x01, 0x28, 0x32, 0xe4, 0x63, 0x5d, 0x82, 0xe7, 0x1a, 0xa7, - 0x59, 0x0b, 0x2e, 0x24, 0x1e, 0x78, 0x4d, 0xbc, 0xbe, 0x55, 0x8d, 0x1f, 0x66, 0x9c, 0xab, 0xbf, - 0xc6, 0x82, 0xc5, 0x36, 0x89, 0x8b, 0xe9, 0x99, 0xd9, 0xc5, 0xf4, 0x5d, 0x58, 0x4b, 0xe8, 0x3a, - 0xe4, 0x7f, 0x19, 0x25, 0x6b, 0x5a, 0xb0, 0x47, 0xaf, 0xaf, 0xa6, 0xfa, 0x77, 0x52, 0x50, 0x96, - 0x35, 0x9f, 0xef, 0x9c, 0x13, 0x5d, 0xe2, 0x12, 0xdf, 0xba, 0x6d, 0x46, 0xef, 0x3e, 0x45, 0xa0, - 0x16, 0x3d, 0x45, 0xcf, 0x7d, 0xcd, 0x3b, 0xc7, 0xbd, 0xb8, 0x39, 0x32, 0x88, 0xdd, 0x00, 0xa0, - 0x2b, 0xad, 0x3b, 0xcf, 0x90, 0x40, 0x5c, 0x03, 0x9b, 0x41, 0xd4, 0x9b, 0x50, 0xdc, 0x39, 0x8e, - 0x22, 0x62, 0xe4, 0x57, 0xd0, 0x8a, 0xfc, 0x1e, 0xbc, 0xfa, 0x27, 0x29, 0xa8, 0xcc, 0x5e, 0x8c, - 0xa1, 0x13, 0x68, 0xfe, 0x30, 0x30, 0x9f, 0x0e, 0xab, 0xe6, 0x60, 0xf6, 0x4a, 0xfd, 0xaa, 0xfc, - 0x4a, 0xfd, 0x6d, 0x91, 0x59, 0x5a, 0x16, 0xf9, 0x71, 0x59, 0xe2, 0x96, 0xfd, 0x63, 0x28, 0xe3, - 0x7f, 0xcd, 0x1a, 0x59, 0xbe, 0x6f, 0x45, 0x6f, 0x24, 0x2f, 0x10, 0x27, 0x88, 0xc8, 0xc6, 0xb3, - 0x46, 0x42, 0xd5, 0x5c, 0xfa, 0xa8, 0x0d, 0x3d, 0xb6, 0xf4, 0xdf, 0xd2, 0x50, 0x92, 0xf4, 0xc8, - 0x6f, 0x34, 0xfd, 0xae, 0x43, 0x71, 0xf6, 0xc4, 0x8a, 0xb8, 0xda, 0x1c, 0x03, 0x12, 0x63, 0x95, - 0x9e, 0x1b, 0xab, 0x2a, 0xe4, 0x45, 0xa0, 0xad, 0x70, 0xfe, 0x46, 0xc9, 0xa4, 0x9b, 0x35, 0xfb, - 0x9a, 0xf3, 0x90, 0x0f, 0xa0, 0x2c, 0xf9, 0x48, 0x03, 0x71, 0xfd, 0x77, 0x9e, 0xbe, 0x34, 0xf3, - 0x97, 0x06, 0xec, 0x22, 0xe4, 0x46, 0xc7, 0xba, 0x39, 0xe0, 0x77, 0x3e, 0x8b, 0x5a, 0x76, 0x74, - 0xdc, 0x18, 0xd0, 0x69, 0xd1, 0x28, 0x56, 0x9d, 0xb8, 0xe7, 0xaa, 0x30, 0x8a, 0x14, 0xa4, 0x7b, - 0x90, 0x1f, 0x1d, 0xcb, 0x77, 0x37, 0x17, 0xba, 0x3c, 0x37, 0x3a, 0xa6, 0xcb, 0x9e, 0x0f, 0x61, - 0x53, 0xec, 0xdf, 0x46, 0xa0, 0xf3, 0x57, 0x24, 0xe8, 0xe9, 0x1d, 0xfe, 0x26, 0xda, 0x06, 0xc7, - 0xd5, 0x82, 0x1e, 0x61, 0x70, 0xc6, 0xa9, 0x50, 0x96, 0x26, 0x20, 0x7f, 0xa3, 0xa8, 0xa8, 0x25, - 0x60, 0xec, 0x09, 0x94, 0x47, 0xc7, 0x7c, 0x40, 0xfb, 0xde, 0x9e, 0x25, 0xae, 0x0a, 0x6c, 0xce, - 0x0f, 0x25, 0x85, 0x08, 0x24, 0x28, 0xd9, 0x25, 0xc8, 0x69, 0xc6, 0x49, 0xef, 0xc7, 0x6d, 0x52, - 0x22, 0x8b, 0x9a, 0x48, 0x7d, 0x96, 0x29, 0x54, 0x94, 0x75, 0xf5, 0x1f, 0xa7, 0xa0, 0x32, 0xb3, - 0x01, 0x70, 0x11, 0xb2, 0xfb, 0xf2, 0x8b, 0xde, 0xd5, 0x79, 0x33, 0x01, 0x49, 0x1e, 0xf4, 0xcf, - 0x26, 0xfc, 0xdd, 0xcb, 0x65, 0xef, 0x4a, 0x2d, 0x73, 0x5a, 0xa7, 0x97, 0xbe, 0x25, 0xfc, 0x14, - 0xd2, 0xfd, 0xb3, 0x09, 0xf7, 0x37, 0xe1, 0x96, 0xc8, 0x6d, 0x53, 0xbe, 0x19, 0x52, 0x0c, 0xca, - 0xb3, 0xe6, 0x17, 0xfc, 0x29, 0x86, 0x7d, 0xad, 0xb5, 0x57, 0xd3, 0xbe, 0xa0, 0xf0, 0x22, 0x52, - 0x1a, 0x76, 0xba, 0x5a, 0xb3, 0xf5, 0xb4, 0x43, 0x80, 0x0c, 0x79, 0xa3, 0x66, 0x55, 0xac, 0x99, - 0xe6, 0xce, 0xb1, 0xfc, 0x24, 0x4f, 0x2a, 0xf1, 0x24, 0x4f, 0xf2, 0xf6, 0xf6, 0xea, 0xfc, 0xed, - 0x6d, 0x16, 0xaf, 0xc2, 0x78, 0x49, 0xb3, 0xb7, 0x20, 0x33, 0x3a, 0xb6, 0xce, 0x92, 0x86, 0x5e, - 0x72, 0x01, 0x11, 0x81, 0xfa, 0xf3, 0x14, 0xb0, 0x44, 0x45, 0xb8, 0xed, 0xf1, 0x5d, 0xeb, 0xf2, - 0x09, 0x54, 0xc5, 0x23, 0x91, 0x9c, 0x4a, 0xf2, 0x92, 0x8b, 0x2e, 0xbd, 0xe8, 0xcd, 0x82, 0x41, - 0x67, 0x4f, 0x5f, 0xb1, 0x87, 0xc0, 0x5f, 0xe9, 0xa3, 0x88, 0x92, 0xcc, 0x39, 0x76, 0xa2, 0x36, - 0xa3, 0x99, 0x3d, 0xcb, 0x27, 0x3f, 0x37, 0xc8, 0x1d, 0xec, 0xeb, 0xb3, 0x51, 0xa3, 0x35, 0xaf, - 0xfe, 0x5e, 0x0a, 0x2e, 0x24, 0x27, 0xc4, 0x2f, 0xd6, 0xca, 0xe4, 0xdb, 0x8a, 0xe9, 0xf9, 0xb7, - 0x15, 0x97, 0xcd, 0xa7, 0xcc, 0xd2, 0xf9, 0xf4, 0x5b, 0x29, 0xd8, 0x94, 0x7a, 0x7f, 0x66, 0x2d, - 0xfe, 0x05, 0xd5, 0x4c, 0x7a, 0x62, 0x31, 0x93, 0x78, 0x62, 0x51, 0xfd, 0x83, 0x14, 0x5c, 0x9a, - 0xab, 0x89, 0x66, 0xfd, 0x85, 0xd6, 0x25, 0xf9, 0x14, 0x23, 0x39, 0xf9, 0x79, 0x44, 0x2c, 0xbf, - 0xf6, 0xcb, 0x92, 0x6f, 0x2b, 0xd2, 0x25, 0xfb, 0x0f, 0x61, 0x63, 0x56, 0xc7, 0xba, 0x78, 0x36, - 0xf2, 0x26, 0x94, 0x5c, 0xeb, 0x44, 0x8f, 0x1e, 0x95, 0x14, 0x31, 0x44, 0xae, 0x75, 0x22, 0x08, - 0xd4, 0x1d, 0x59, 0x60, 0xc4, 0x2f, 0xcc, 0x3b, 0x66, 0x22, 0x18, 0xc5, 0x73, 0xcc, 0x08, 0x85, - 0xb9, 0x49, 0x2d, 0xca, 0xbb, 0xd6, 0x09, 0x0d, 0xd6, 0x89, 0xc8, 0xa7, 0x66, 0x9a, 0xe2, 0x40, - 0x7e, 0xd9, 0x4b, 0x51, 0x57, 0xa0, 0x30, 0xf1, 0x13, 0x5d, 0x92, 0x9f, 0xf8, 0xbc, 0xd8, 0x3b, - 0x22, 0x42, 0xe9, 0xbc, 0xc3, 0x7b, 0x1e, 0xb3, 0x24, 0x7e, 0x81, 0x22, 0x33, 0xfb, 0x05, 0x8a, - 0x8f, 0x84, 0xac, 0x20, 0xe3, 0x88, 0x97, 0xac, 0x40, 0xda, 0x36, 0x4f, 0xa9, 0xe0, 0x35, 0x0d, - 0x3f, 0x49, 0xdd, 0xb1, 0xbe, 0x12, 0x41, 0x52, 0xf8, 0xa9, 0x6e, 0x43, 0x49, 0x4b, 0x58, 0x82, - 0x65, 0xc9, 0xa9, 0x12, 0x24, 0x1f, 0xd3, 0x99, 0x75, 0x90, 0x56, 0x9a, 0xf9, 0x54, 0x02, 0x35, - 0x10, 0xd2, 0xe1, 0xb9, 0xe1, 0x0f, 0x8f, 0x0c, 0xbf, 0x6d, 0xb9, 0x87, 0xe1, 0x11, 0x76, 0x39, - 0xf7, 0x75, 0xca, 0x5d, 0x08, 0x1c, 0x14, 0x0d, 0x3d, 0xf6, 0xa2, 0x43, 0xe4, 0xd1, 0xdb, 0xf6, - 0xae, 0x75, 0x22, 0xf8, 0xdf, 0x00, 0xc0, 0xfe, 0x17, 0x68, 0x7e, 0xc2, 0x56, 0xf4, 0x1c, 0x93, - 0xa3, 0xd5, 0x0d, 0xd1, 0x5e, 0x71, 0xc3, 0xa5, 0x61, 0x8d, 0x54, 0x47, 0x8c, 0x3c, 0x6f, 0x90, - 0xe8, 0x84, 0xef, 0x34, 0x8c, 0xec, 0x16, 0x94, 0x23, 0xb3, 0x9d, 0xde, 0x6f, 0xe2, 0xc5, 0x97, - 0x22, 0x58, 0x67, 0x3a, 0x56, 0x7f, 0x3f, 0x0d, 0xe5, 0x1a, 0x0f, 0x57, 0x99, 0x9c, 0x75, 0x27, - 0x21, 0xfb, 0x75, 0xb8, 0x18, 0x1c, 0xdb, 0x13, 0xf1, 0x18, 0x3d, 0x45, 0x89, 0x50, 0xb8, 0xb0, - 0xe8, 0xc4, 0xfb, 0x52, 0x27, 0x0a, 0x96, 0x07, 0xbd, 0x63, 0x7b, 0xc2, 0xa3, 0xd4, 0x5b, 0xe6, - 0x29, 0x85, 0x84, 0xf3, 0xa3, 0x6f, 0x16, 0x2c, 0x20, 0xe8, 0x56, 0x32, 0x66, 0x3f, 0x39, 0x16, - 0xd9, 0x8a, 0x58, 0x00, 0x04, 0xee, 0x1f, 0x73, 0x9a, 0xfb, 0xb0, 0xc1, 0x2f, 0xa6, 0x2c, 0xee, - 0x52, 0xeb, 0x1c, 0x31, 0x9b, 0xdf, 0x3d, 0xd8, 0xa0, 0xfc, 0xc4, 0x23, 0x81, 0xfa, 0xd0, 0x9b, - 0x9c, 0x89, 0x93, 0xb5, 0xb7, 0xce, 0xa9, 0x6a, 0x8b, 0x93, 0x22, 0x48, 0x3c, 0x30, 0x12, 0x24, - 0xa1, 0x57, 0x9b, 0x70, 0xf9, 0x9c, 0x36, 0xbd, 0xee, 0xf4, 0xbe, 0x20, 0x9d, 0xde, 0x5f, 0xdd, - 0x86, 0xcd, 0x65, 0xe5, 0x7d, 0x9b, 0x3c, 0xd4, 0xff, 0x5c, 0x06, 0x98, 0xcd, 0xd8, 0x84, 0xce, - 0x96, 0x9a, 0xd3, 0xd9, 0xbe, 0x55, 0xa4, 0xca, 0x87, 0x50, 0xc1, 0xae, 0xd2, 0x67, 0x1c, 0xe9, - 0xa5, 0x1c, 0x65, 0xa4, 0xea, 0xcf, 0x6e, 0x04, 0x2e, 0x9e, 0xf8, 0x67, 0x96, 0x9e, 0xf8, 0x7f, - 0x00, 0x79, 0x7e, 0x1a, 0x15, 0x88, 0x4b, 0xa8, 0x97, 0xe7, 0x57, 0xdf, 0x03, 0x11, 0xf1, 0x1e, - 0xd1, 0xb1, 0x26, 0x54, 0x50, 0x3e, 0xfa, 0x76, 0x78, 0x34, 0x96, 0xaf, 0xa4, 0xde, 0x58, 0xe4, - 0x8c, 0xc8, 0xf8, 0xd3, 0x82, 0x86, 0x9c, 0x94, 0x54, 0xbc, 0x70, 0x2c, 0x5c, 0xa4, 0xa4, 0xe2, - 0xe5, 0x65, 0x15, 0xaf, 0x3f, 0xe6, 0x8e, 0x51, 0x54, 0xf1, 0xde, 0x83, 0x0b, 0xe2, 0x16, 0x0e, - 0x32, 0x60, 0x77, 0x12, 0x3d, 0x0f, 0x4a, 0x14, 0xef, 0xee, 0xf4, 0xc7, 0x64, 0x00, 0x21, 0xf9, - 0xe7, 0xb0, 0x39, 0x3c, 0x32, 0xdc, 0x43, 0x4b, 0x0f, 0x07, 0x8e, 0x4e, 0x0f, 0x9b, 0xeb, 0x63, - 0x63, 0x22, 0x34, 0xcf, 0xb7, 0x16, 0x2a, 0x5b, 0x27, 0xe2, 0xfe, 0xc0, 0xa1, 0xa8, 0xaa, 0x38, - 0x2e, 0x64, 0x63, 0x38, 0x0f, 0x9f, 0x3b, 0x9e, 0x85, 0x85, 0xe3, 0xd9, 0x79, 0x5d, 0xb4, 0xb4, - 0x44, 0x17, 0x9d, 0x69, 0x94, 0x65, 0x59, 0xa3, 0x64, 0xef, 0x42, 0x5e, 0x5c, 0x6d, 0x14, 0xce, - 0x51, 0xb6, 0xb8, 0x3a, 0xb4, 0x88, 0x04, 0x4b, 0x8a, 0x82, 0x05, 0xe8, 0x42, 0x74, 0x85, 0x97, - 0x24, 0xc3, 0xd8, 0xb6, 0xf0, 0x0c, 0xc6, 0x11, 0x60, 0xc2, 0x11, 0x7a, 0x55, 0xca, 0x38, 0xc6, - 0x09, 0xe3, 0x75, 0x8e, 0xe3, 0xea, 0x7f, 0xcf, 0x42, 0x4e, 0x04, 0x1b, 0xdf, 0x87, 0x8c, 0xe9, - 0x7b, 0x93, 0x38, 0x7a, 0x77, 0x89, 0x6a, 0x4b, 0xbf, 0x65, 0x85, 0x5a, 0xf0, 0x03, 0xc8, 0x19, - 0xa6, 0xa9, 0x8f, 0x8e, 0x93, 0x87, 0xb6, 0x73, 0x5a, 0xe6, 0xee, 0x8a, 0x96, 0x35, 0x48, 0xdd, - 0xfc, 0x04, 0x8a, 0x48, 0x3f, 0x8b, 0xa9, 0x2c, 0x2d, 0xea, 0xce, 0x91, 0x3e, 0xb8, 0xbb, 0xa2, - 0x15, 0x8c, 0x48, 0x37, 0xfc, 0x41, 0xd2, 0xfd, 0x9d, 0x59, 0x68, 0xe0, 0x9c, 0x32, 0x33, 0xe7, - 0x08, 0xff, 0x55, 0xe0, 0xfe, 0xd0, 0x78, 0xc7, 0xce, 0xca, 0xe7, 0x83, 0x0b, 0xfb, 0xfb, 0xee, - 0x8a, 0xc6, 0xf7, 0xad, 0x68, 0xbf, 0xff, 0x28, 0x72, 0x4d, 0xc7, 0xbf, 0xf9, 0xb1, 0xa4, 0x67, - 0x50, 0x0c, 0xc6, 0xfe, 0x69, 0x92, 0x89, 0xc8, 0x66, 0x9a, 0x51, 0x68, 0x5d, 0x7e, 0x81, 0x2d, - 0xde, 0xd5, 0x89, 0x2d, 0xde, 0xe2, 0x9f, 0x40, 0x89, 0x7b, 0x2a, 0x39, 0x5f, 0x61, 0xa1, 0x6b, - 0x67, 0x9b, 0x32, 0x9d, 0x7d, 0xcd, 0xb6, 0xe8, 0x7a, 0xd4, 0x4e, 0xdf, 0x92, 0x8f, 0x17, 0xae, - 0x2f, 0xed, 0x28, 0x2d, 0x3e, 0x69, 0xe0, 0x8d, 0xd5, 0x38, 0x0f, 0x6b, 0xc3, 0xa6, 0xf0, 0xc3, - 0xf3, 0x0d, 0x38, 0xda, 0x33, 0x61, 0x61, 0xbc, 0x12, 0x3b, 0xf4, 0xee, 0x8a, 0xc6, 0x8c, 0xc5, - 0x7d, 0xbb, 0x0e, 0x1b, 0x51, 0x95, 0xf8, 0xa5, 0xd2, 0x59, 0x54, 0x90, 0xdc, 0xa4, 0xd9, 0xbe, - 0xbb, 0xbb, 0xa2, 0xad, 0x1b, 0x49, 0x10, 0x6b, 0xc1, 0x85, 0x28, 0x13, 0xf2, 0x47, 0x8b, 0x9e, - 0x29, 0x2f, 0x8c, 0xa2, 0xbc, 0x57, 0xef, 0xae, 0x68, 0x1b, 0xc6, 0x3c, 0x70, 0x76, 0x3a, 0x7f, - 0x55, 0x83, 0x4b, 0xcb, 0x45, 0x82, 0xbc, 0x2f, 0x64, 0xf8, 0xbe, 0xa0, 0x26, 0xdf, 0x90, 0x4a, - 0xbe, 0x48, 0x20, 0xed, 0x12, 0x3f, 0x82, 0xb5, 0x84, 0x4c, 0x64, 0x25, 0xc8, 0x47, 0xaf, 0x4d, - 0xd3, 0x8d, 0x80, 0x7a, 0x77, 0xff, 0x0b, 0x25, 0x85, 0xe0, 0x56, 0xa7, 0xd7, 0xaf, 0x75, 0x44, - 0xec, 0x45, 0xab, 0x23, 0x62, 0x2f, 0xd4, 0xbf, 0x96, 0x86, 0x62, 0x7c, 0x76, 0xf4, 0xdd, 0x7d, - 0x3c, 0xb1, 0xf3, 0x24, 0x2d, 0x3b, 0x4f, 0xe6, 0x0c, 0x18, 0xfe, 0x30, 0x3c, 0x7f, 0x5b, 0x6c, - 0x3d, 0x69, 0x26, 0x04, 0x8b, 0xb7, 0x92, 0xb3, 0xdf, 0xf0, 0x56, 0xb2, 0x1c, 0x07, 0x9d, 0x4b, - 0xc6, 0x41, 0xcf, 0xbd, 0x38, 0x9e, 0xa7, 0xb7, 0x80, 0xe5, 0x17, 0xc7, 0xe9, 0x67, 0x01, 0x9f, - 0xdb, 0xd6, 0x89, 0x08, 0x1c, 0x16, 0xa9, 0xe4, 0x96, 0x0a, 0xaf, 0xd9, 0x52, 0xbf, 0x89, 0x78, - 0x7e, 0x04, 0x9b, 0xa3, 0xe3, 0xf8, 0x05, 0xe2, 0x99, 0xcb, 0xa0, 0x4c, 0x55, 0x5a, 0x8a, 0x53, - 0xff, 0x4a, 0x0a, 0x60, 0x76, 0x58, 0xf2, 0x0b, 0xfb, 0x1d, 0x25, 0xd7, 0x4e, 0xfa, 0x15, 0xae, - 0x9d, 0xd7, 0xbd, 0x23, 0xf5, 0x15, 0x14, 0xe3, 0xe3, 0xb1, 0xef, 0x3e, 0x5f, 0xbe, 0x55, 0x91, - 0xbf, 0x11, 0xf9, 0x60, 0xe3, 0xf3, 0xa5, 0x5f, 0xb4, 0x2f, 0x12, 0xc5, 0xa7, 0x5f, 0x53, 0xfc, - 0x29, 0x77, 0x84, 0xc6, 0x85, 0xff, 0x92, 0x17, 0x89, 0x3c, 0x7f, 0x33, 0x89, 0xf9, 0xab, 0x4e, - 0x85, 0x37, 0xf7, 0x17, 0x2f, 0xfa, 0x5b, 0x35, 0xf8, 0xbf, 0xa6, 0x22, 0x97, 0x63, 0xfc, 0x16, - 0xf4, 0xb9, 0xca, 0xe7, 0x72, 0xaf, 0xe9, 0xb7, 0x29, 0xee, 0x95, 0x0e, 0x95, 0xcc, 0xab, 0x1c, - 0x2a, 0x6f, 0x41, 0x96, 0x6f, 0x3b, 0xd9, 0xf3, 0x9c, 0x29, 0x1c, 0xff, 0xda, 0x5f, 0x6c, 0x50, - 0x55, 0xa1, 0x6c, 0xf3, 0xf6, 0x6e, 0x46, 0xf9, 0x46, 0xbf, 0x36, 0x41, 0xd7, 0x2f, 0xfe, 0x1f, - 0x2e, 0x28, 0xbf, 0x6b, 0x97, 0xbc, 0xda, 0x55, 0xa0, 0xfe, 0xaf, 0x14, 0xac, 0x25, 0x8e, 0xbb, - 0xbf, 0x43, 0x11, 0x4b, 0xc5, 0x6d, 0xfa, 0xff, 0x20, 0x71, 0x9b, 0x88, 0x14, 0x2d, 0x24, 0x23, - 0x45, 0x51, 0xdc, 0x95, 0x13, 0xa6, 0xc4, 0x32, 0xa3, 0x23, 0xb5, 0xd4, 0xe8, 0xb8, 0x11, 0xff, - 0xce, 0x5c, 0xab, 0xc1, 0x03, 0x33, 0xd7, 0x34, 0x09, 0xc2, 0x3e, 0x85, 0x2b, 0xc2, 0x98, 0xe7, - 0xfd, 0xe3, 0x8d, 0xf4, 0xf8, 0x57, 0xe8, 0x84, 0x71, 0x7c, 0x89, 0x13, 0xf0, 0xdf, 0xdb, 0x18, - 0xd5, 0x22, 0xac, 0xda, 0x82, 0xb5, 0x44, 0x1c, 0x81, 0xf4, 0xab, 0x97, 0x29, 0xf9, 0x57, 0x2f, - 0xd9, 0x16, 0x64, 0x4f, 0x8e, 0x2c, 0xdf, 0x5a, 0xf2, 0x56, 0x2c, 0x47, 0xa8, 0xdf, 0x87, 0xb2, - 0x1c, 0xd3, 0xc4, 0xde, 0x85, 0xac, 0x1d, 0x5a, 0xe3, 0xc8, 0x4d, 0x71, 0x69, 0x31, 0xec, 0xa9, - 0x15, 0x5a, 0x63, 0x8d, 0x13, 0xa9, 0x3f, 0x4b, 0x81, 0x32, 0x8f, 0x93, 0x7e, 0x9a, 0x33, 0x75, - 0xce, 0x4f, 0x73, 0xae, 0x26, 0x2a, 0xb9, 0xec, 0xd7, 0x35, 0xe3, 0xf7, 0x2a, 0x33, 0xe7, 0xbc, - 0x57, 0xc9, 0xee, 0x42, 0xc1, 0xb7, 0xe8, 0x77, 0x0f, 0xcd, 0x25, 0xd7, 0x12, 0x62, 0x9c, 0xfa, - 0x3b, 0x29, 0xc8, 0x8b, 0x00, 0xac, 0xa5, 0x7e, 0xa3, 0xb7, 0x21, 0xcf, 0x7f, 0x03, 0x31, 0x7a, - 0x69, 0x69, 0x21, 0x9a, 0x39, 0xc2, 0xb3, 0x1b, 0x3c, 0x2c, 0x2d, 0xe9, 0x47, 0xda, 0x77, 0x0c, - 0x57, 0x23, 0xb8, 0xf8, 0x19, 0x1d, 0x63, 0x2c, 0x6e, 0x3c, 0xf3, 0xf7, 0x90, 0x80, 0x40, 0x74, - 0xb9, 0x59, 0xfd, 0x01, 0xe4, 0x45, 0x80, 0xd7, 0xd2, 0xaa, 0xbc, 0xee, 0xf7, 0xef, 0xb6, 0x00, - 0x66, 0x11, 0x5f, 0xcb, 0x72, 0x50, 0xef, 0x43, 0x21, 0x0a, 0xf2, 0xc2, 0xf9, 0x37, 0x2b, 0x5a, - 0xdc, 0x77, 0x91, 0x2b, 0xe3, 0x88, 0xf7, 0xd7, 0xdb, 0xde, 0xf0, 0x98, 0x3c, 0xbb, 0x0f, 0x81, - 0x2e, 0xff, 0xf4, 0x17, 0x1e, 0x8e, 0x4a, 0x3e, 0x9e, 0x1f, 0x13, 0xb1, 0xfb, 0x10, 0xcb, 0xcb, - 0xd7, 0x99, 0xf8, 0x6a, 0x2d, 0xba, 0x26, 0x46, 0xb3, 0xec, 0xb1, 0xf0, 0x60, 0xb6, 0xe9, 0xb1, - 0xba, 0x94, 0xfc, 0x13, 0x0a, 0x89, 0x3a, 0x69, 0x12, 0x99, 0x5a, 0x81, 0xb2, 0x1c, 0x99, 0xa2, - 0xd6, 0x60, 0x63, 0xcf, 0x0a, 0x0d, 0x94, 0x3f, 0xd1, 0x73, 0x3a, 0x7c, 0xfe, 0xe2, 0x47, 0x72, - 0xfe, 0xce, 0xd3, 0x69, 0x9c, 0x48, 0xfd, 0x59, 0x06, 0x94, 0x79, 0xdc, 0xab, 0xae, 0xcc, 0xdd, - 0x84, 0x92, 0x47, 0xf3, 0x22, 0xf1, 0x43, 0x49, 0x1c, 0x24, 0x85, 0x9d, 0x27, 0x7e, 0x2d, 0xa3, - 0x60, 0x07, 0xbb, 0xfc, 0xf7, 0x32, 0x2e, 0xf3, 0xfb, 0x51, 0x8e, 0x37, 0xa4, 0x69, 0x5d, 0xa6, - 0xeb, 0x50, 0x6d, 0x6f, 0x48, 0x37, 0xf1, 0x84, 0x97, 0x80, 0x87, 0x4b, 0x96, 0xb5, 0x82, 0x70, - 0x0d, 0xd0, 0x61, 0x93, 0x08, 0x46, 0x0f, 0x03, 0x71, 0xb7, 0xb1, 0xc0, 0x01, 0xfd, 0x20, 0x7a, - 0xe5, 0x7b, 0x28, 0x7e, 0xd5, 0x27, 0x4d, 0xaf, 0x7c, 0xd7, 0x5d, 0xba, 0x88, 0x47, 0x3f, 0x42, - 0x35, 0x14, 0x3f, 0x12, 0x26, 0xde, 0x59, 0x47, 0xd4, 0x6d, 0xfe, 0xbb, 0x47, 0xbe, 0x15, 0x04, - 0xfc, 0x49, 0xb3, 0xa2, 0x78, 0xac, 0x4e, 0x00, 0xe3, 0x27, 0x21, 0xc5, 0xaf, 0x4e, 0x21, 0x09, - 0x88, 0x87, 0xd5, 0xf8, 0x6f, 0x4e, 0x21, 0xc1, 0x15, 0x28, 0x7c, 0xed, 0xb9, 0x16, 0x79, 0x1b, - 0x4a, 0x54, 0xab, 0x3c, 0xa6, 0xf7, 0x8c, 0x89, 0xfa, 0x4f, 0x53, 0xb0, 0x39, 0xdf, 0xab, 0x34, - 0x61, 0xca, 0x50, 0xa8, 0x77, 0xdb, 0x7a, 0xa7, 0xb6, 0xd7, 0x54, 0x56, 0xd8, 0x3a, 0x94, 0xba, - 0xdb, 0x9f, 0x35, 0xeb, 0x7d, 0x0e, 0x48, 0xd1, 0x85, 0xf4, 0x9e, 0xbe, 0xdb, 0x6a, 0x34, 0x9a, - 0x1d, 0x6e, 0x12, 0x74, 0xb7, 0x3f, 0xd3, 0xdb, 0xdd, 0x3a, 0xff, 0x91, 0x9a, 0xe8, 0x20, 0xbe, - 0xa7, 0x64, 0xe8, 0x98, 0x9e, 0xa2, 0xb3, 0x31, 0x99, 0xe5, 0xc1, 0xc7, 0x2f, 0x7a, 0x7a, 0xbd, - 0xd3, 0x57, 0x72, 0x98, 0xea, 0x1c, 0xb4, 0xdb, 0x94, 0xa2, 0x28, 0xc3, 0x7a, 0x77, 0x6f, 0x5f, - 0x6b, 0xf6, 0x7a, 0x7a, 0xaf, 0xf5, 0x93, 0xa6, 0x52, 0xa0, 0x92, 0xb5, 0xd6, 0xd3, 0x56, 0x87, - 0x03, 0x8a, 0x2c, 0x0f, 0xe9, 0xbd, 0x56, 0x87, 0x5f, 0xc4, 0xdf, 0xab, 0x7d, 0xae, 0x94, 0xf0, - 0xa3, 0x77, 0xb0, 0xa7, 0x94, 0xd5, 0xff, 0x90, 0x8e, 0x14, 0x5e, 0x8a, 0xb9, 0xf9, 0x26, 0x4a, - 0xde, 0xb2, 0xb3, 0xae, 0x4d, 0xc8, 0x3a, 0x74, 0xb5, 0x58, 0xfc, 0xfe, 0x2e, 0x25, 0xbe, 0xc9, - 0x6f, 0x8a, 0xde, 0x86, 0xb5, 0xf8, 0xa0, 0x5a, 0x7a, 0x78, 0xbb, 0x1c, 0x01, 0x97, 0x9c, 0x08, - 0xe4, 0x96, 0x9c, 0x08, 0x4c, 0xec, 0x10, 0x8d, 0x59, 0x14, 0xa9, 0x7c, 0xa2, 0x14, 0x11, 0xc2, - 0x7f, 0xcd, 0xf7, 0x1a, 0x50, 0x42, 0x9f, 0xba, 0x76, 0xf4, 0x8b, 0x72, 0x05, 0x04, 0x1c, 0xb8, - 0x76, 0x38, 0x7f, 0x50, 0x5e, 0x5c, 0x38, 0x28, 0x97, 0xf7, 0x5e, 0x48, 0xee, 0xbd, 0xc9, 0x9f, - 0x5a, 0xe5, 0x3f, 0x25, 0x27, 0xfd, 0xd4, 0xea, 0xbb, 0xc0, 0x86, 0x53, 0x9f, 0x5e, 0xea, 0x92, - 0xc8, 0xca, 0x44, 0xa6, 0x08, 0x4c, 0xbc, 0xe9, 0xb1, 0xb7, 0x60, 0x7d, 0x8e, 0x9a, 0x9c, 0x47, - 0x45, 0xad, 0x92, 0x24, 0x65, 0x0f, 0xe0, 0x82, 0x98, 0xba, 0x89, 0xbe, 0x15, 0xd7, 0x16, 0x39, - 0xaa, 0x36, 0xeb, 0x61, 0xf5, 0x57, 0xa0, 0x10, 0x85, 0x57, 0xbd, 0x5a, 0x97, 0x5d, 0x32, 0xae, - 0xea, 0xdf, 0x5f, 0x85, 0x62, 0x1c, 0x6c, 0xf5, 0x8d, 0x66, 0x07, 0xfd, 0xc2, 0x40, 0x70, 0x2c, - 0x4b, 0x90, 0x02, 0x02, 0xa2, 0x91, 0x12, 0x77, 0x7e, 0xa6, 0xbe, 0x1d, 0x29, 0x64, 0x1c, 0x72, - 0xe0, 0xdb, 0xf4, 0xf0, 0x85, 0xed, 0x4a, 0x17, 0x0c, 0x8b, 0x5a, 0x01, 0x01, 0xb4, 0xba, 0xae, - 0x00, 0x7d, 0x13, 0x67, 0xf4, 0xeb, 0xb3, 0xb6, 0x7b, 0x8c, 0x7c, 0xe7, 0xfc, 0xfa, 0x2c, 0xfd, - 0x3e, 0x02, 0x8f, 0xf4, 0xe0, 0xe7, 0xdb, 0xd1, 0xaf, 0x79, 0x5d, 0x83, 0xe2, 0x34, 0xfe, 0x39, - 0x38, 0x31, 0x23, 0xa6, 0xd1, 0x8f, 0xc1, 0x25, 0x47, 0xb5, 0x38, 0x3f, 0xaa, 0xf3, 0x73, 0x1a, - 0x16, 0xe6, 0xb4, 0x1a, 0x42, 0x5e, 0x04, 0x9c, 0xbd, 0xba, 0xc3, 0x5f, 0xd9, 0x55, 0x0a, 0xa4, - 0x0d, 0x27, 0xba, 0xd5, 0x88, 0x9f, 0x73, 0x15, 0xcb, 0xcc, 0x55, 0x4c, 0xfd, 0x5b, 0xab, 0x00, - 0xb3, 0xc0, 0x35, 0xf6, 0xde, 0x5c, 0x90, 0x6c, 0x6a, 0x61, 0x57, 0x9f, 0x8b, 0x8d, 0x9d, 0x7b, - 0x09, 0x66, 0xf5, 0x1b, 0xbc, 0x04, 0xf3, 0x08, 0xd6, 0x02, 0x7f, 0xf8, 0x5a, 0xbf, 0x76, 0x29, - 0xf0, 0x87, 0xb1, 0x5b, 0xfb, 0x21, 0x60, 0x92, 0xde, 0xae, 0x9b, 0xd9, 0xa1, 0x0b, 0x4a, 0x49, - 0x31, 0xf0, 0x87, 0xdd, 0xc1, 0x97, 0x0d, 0x7e, 0xd1, 0xca, 0x0c, 0x42, 0x7d, 0x99, 0x94, 0x58, - 0x37, 0x83, 0xb0, 0x21, 0x0b, 0x8a, 0x3b, 0x50, 0x41, 0xda, 0x05, 0x61, 0x51, 0x36, 0x83, 0xd9, - 0x39, 0x86, 0xfa, 0xdb, 0xd1, 0xf1, 0xe8, 0x9c, 0xcb, 0x94, 0x7d, 0x2c, 0xec, 0x6c, 0x49, 0x47, - 0xa8, 0x2e, 0xf3, 0xb0, 0xf2, 0x77, 0x6b, 0x62, 0xd2, 0xc5, 0x1f, 0x01, 0x5b, 0xfd, 0xa6, 0x3f, - 0x02, 0xb6, 0x05, 0x30, 0x7b, 0x3d, 0x10, 0x57, 0x60, 0x7c, 0x71, 0xa4, 0xc8, 0xaf, 0x84, 0xdc, - 0xbf, 0x05, 0x65, 0xf9, 0xa7, 0x38, 0xe9, 0x42, 0x88, 0xe7, 0x5a, 0xfc, 0xc7, 0x1a, 0xda, 0x5f, - 0x7f, 0xa8, 0xa4, 0xee, 0xab, 0x50, 0x92, 0x7e, 0x2a, 0x05, 0x29, 0x76, 0x8d, 0xe0, 0x48, 0x3c, - 0xdc, 0x6f, 0xb8, 0x87, 0x96, 0x92, 0xba, 0x7f, 0x17, 0x75, 0x6a, 0xf9, 0x87, 0x4a, 0x00, 0x72, - 0x1d, 0xcf, 0x1f, 0x1b, 0x8e, 0xa0, 0xb3, 0xa6, 0x01, 0xd2, 0x3d, 0x84, 0x8b, 0x4b, 0x7f, 0x76, - 0x85, 0x6e, 0x15, 0xd9, 0xe3, 0x89, 0x63, 0xf1, 0x8b, 0x31, 0xbb, 0x67, 0x03, 0xdf, 0x36, 0x95, - 0xd4, 0xfd, 0x27, 0xd1, 0x7d, 0xfc, 0xa8, 0xec, 0x76, 0xb7, 0xd6, 0xe0, 0xdb, 0x5f, 0xfc, 0x2e, - 0x4c, 0x7f, 0x9b, 0x3f, 0xca, 0xaf, 0x35, 0x7b, 0x07, 0xed, 0xbe, 0x78, 0x83, 0xe6, 0xfe, 0x8f, - 0xa0, 0x7a, 0xde, 0x0d, 0x11, 0xac, 0x51, 0x7d, 0xb7, 0x46, 0xb7, 0x70, 0x70, 0xbb, 0xeb, 0xea, - 0x3c, 0x95, 0xe2, 0x97, 0x98, 0xda, 0x4d, 0x0a, 0xa3, 0xbc, 0xff, 0xd3, 0x94, 0xa4, 0xe4, 0x45, - 0x51, 0xfe, 0x31, 0x40, 0x74, 0x93, 0x0c, 0xd2, 0x2c, 0xc3, 0x54, 0x52, 0xec, 0x12, 0xb0, 0x04, - 0xa8, 0xed, 0x0d, 0x0d, 0x47, 0x59, 0xa5, 0x80, 0xc9, 0x08, 0x4e, 0xf7, 0xb8, 0x94, 0x34, 0x7b, - 0x03, 0xae, 0xc4, 0xb0, 0xb6, 0x77, 0xb2, 0xef, 0xdb, 0x9e, 0x6f, 0x87, 0x67, 0x1c, 0x9d, 0xb9, - 0xff, 0xff, 0x8a, 0x93, 0xcc, 0xc4, 0xdc, 0xc0, 0x02, 0x6a, 0xa6, 0x39, 0x83, 0x91, 0x38, 0x52, - 0x56, 0xd8, 0x65, 0xb8, 0x40, 0xb2, 0x78, 0x0e, 0x91, 0x62, 0xd7, 0xe0, 0x72, 0x64, 0x89, 0xce, - 0x23, 0x57, 0x11, 0xa9, 0x59, 0x14, 0x6c, 0xb7, 0x80, 0x4c, 0x6f, 0xff, 0xf0, 0x4f, 0x7f, 0x7e, - 0x23, 0xf5, 0x2f, 0x7f, 0x7e, 0x23, 0xf5, 0x1f, 0x7f, 0x7e, 0x63, 0xe5, 0x67, 0xff, 0xe9, 0x46, - 0xea, 0x27, 0xef, 0x1d, 0xda, 0xe1, 0xd1, 0x74, 0xf0, 0x60, 0xe8, 0x8d, 0x1f, 0x8e, 0x8d, 0xd0, - 0xb7, 0x4f, 0xf9, 0xa6, 0x10, 0x25, 0x5c, 0xeb, 0xe1, 0xe4, 0xf8, 0xf0, 0xe1, 0x64, 0xf0, 0x10, - 0xa7, 0xe7, 0x20, 0x37, 0xf1, 0xbd, 0xd0, 0x7b, 0xfc, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x5e, - 0x02, 0xae, 0x5d, 0x14, 0x85, 0x00, 0x00, + 0xf2, 0x90, 0x05, 0x26, 0x01, 0x82, 0x04, 0xc1, 0x2e, 0x90, 0x04, 0x1b, 0x6c, 0xf2, 0x18, 0xe4, + 0x65, 0x93, 0x20, 0x9b, 0x00, 0x01, 0x12, 0x24, 0x01, 0x36, 0xc1, 0x04, 0x79, 0x0c, 0x92, 0x20, + 0x79, 0x4f, 0x70, 0xce, 0xbd, 0x55, 0xbc, 0x45, 0x52, 0x76, 0x77, 0xcf, 0x2c, 0x90, 0xbc, 0x48, + 0x75, 0xcf, 0xcf, 0xfd, 0xbf, 0xe7, 0x9e, 0x73, 0xee, 0xb9, 0x97, 0x00, 0x13, 0xc7, 0x70, 0x1f, + 0x4c, 0x7c, 0x2f, 0xf4, 0x58, 0x06, 0xbf, 0xaf, 0xbe, 0x77, 0x68, 0x87, 0x47, 0xd3, 0xc1, 0x83, + 0xa1, 0x37, 0x7e, 0x78, 0xe8, 0x1d, 0x7a, 0x0f, 0x09, 0x39, 0x98, 0x8e, 0x28, 0x45, 0x09, 0xfa, + 0xe2, 0x4c, 0x57, 0xc1, 0xf1, 0x86, 0xc7, 0xe2, 0x7b, 0x3d, 0xb4, 0xc7, 0x56, 0x10, 0x1a, 0xe3, + 0x09, 0x07, 0xa8, 0x7f, 0x9c, 0x82, 0x4c, 0xff, 0x6c, 0x62, 0xb1, 0x0a, 0xac, 0xda, 0x66, 0x35, + 0xb5, 0x95, 0xba, 0x97, 0xd5, 0x56, 0x6d, 0x93, 0x6d, 0x41, 0xc9, 0xf5, 0xc2, 0xce, 0xd4, 0x71, + 0x8c, 0x81, 0x63, 0x55, 0x57, 0xb7, 0x52, 0xf7, 0x0a, 0x9a, 0x0c, 0x62, 0xd7, 0xa0, 0x68, 0x4c, + 0x43, 0x4f, 0xb7, 0xdd, 0xa1, 0x5f, 0x4d, 0x13, 0xbe, 0x80, 0x80, 0x96, 0x3b, 0xf4, 0xd9, 0x26, + 0x64, 0x4f, 0x6c, 0x33, 0x3c, 0xaa, 0x66, 0x28, 0x47, 0x9e, 0x40, 0x68, 0x30, 0x34, 0x1c, 0xab, + 0x9a, 0xe5, 0x50, 0x4a, 0x20, 0x34, 0xa4, 0x42, 0x72, 0x5b, 0xa9, 0x7b, 0x45, 0x8d, 0x27, 0xd8, + 0x0d, 0x00, 0xcb, 0x9d, 0x8e, 0x5f, 0x1a, 0xce, 0xd4, 0x0a, 0xaa, 0x79, 0x42, 0x49, 0x10, 0xf5, + 0x87, 0x50, 0x1c, 0x07, 0x87, 0xbb, 0x96, 0x61, 0x5a, 0x3e, 0xbb, 0x0c, 0xf9, 0x71, 0x70, 0xa8, + 0x87, 0xc6, 0xa1, 0x68, 0x42, 0x6e, 0x1c, 0x1c, 0xf6, 0x8d, 0x43, 0x76, 0x05, 0x0a, 0x84, 0x38, + 0x9b, 0xf0, 0x36, 0x64, 0x35, 0x24, 0xc4, 0x16, 0xab, 0xbf, 0x93, 0x83, 0x7c, 0xdb, 0x0e, 0x2d, + 0xdf, 0x70, 0xd8, 0x25, 0xc8, 0xd9, 0x81, 0x3b, 0x75, 0x1c, 0x62, 0x2f, 0x68, 0x22, 0xc5, 0x2e, + 0x41, 0xd6, 0x7e, 0xf2, 0xd2, 0x70, 0x38, 0xef, 0xee, 0x8a, 0xc6, 0x93, 0xac, 0x0a, 0x39, 0xfb, + 0x83, 0x8f, 0x11, 0x91, 0x16, 0x08, 0x91, 0x26, 0xcc, 0xe3, 0x47, 0x88, 0xc9, 0xc4, 0x18, 0x4a, + 0x13, 0xe6, 0xe3, 0x0f, 0x11, 0x83, 0xad, 0x4f, 0x13, 0x86, 0xd2, 0x58, 0xca, 0x94, 0x4a, 0xc1, + 0x0e, 0x58, 0xc3, 0x52, 0xa6, 0x51, 0x29, 0x53, 0x5e, 0x4a, 0x5e, 0x20, 0x44, 0x9a, 0x30, 0xbc, + 0x94, 0x42, 0x8c, 0x89, 0x4b, 0x99, 0xf2, 0x52, 0x8a, 0x5b, 0xa9, 0x7b, 0x19, 0xc2, 0xf0, 0x52, + 0x36, 0x21, 0x63, 0x22, 0x1c, 0xb6, 0x52, 0xf7, 0x52, 0xbb, 0x2b, 0x1a, 0xa5, 0x10, 0x1a, 0x20, + 0xb4, 0x84, 0x1d, 0x8c, 0xd0, 0x40, 0x40, 0x07, 0x08, 0x2d, 0x63, 0x6f, 0x20, 0x74, 0x20, 0xa0, + 0x23, 0x84, 0xae, 0x6d, 0xa5, 0xee, 0xad, 0x22, 0x14, 0x53, 0xec, 0x2a, 0xe4, 0x4d, 0x23, 0xb4, + 0x10, 0x51, 0x11, 0x4d, 0x8e, 0x00, 0x88, 0xc3, 0x19, 0x87, 0xb8, 0x75, 0xd1, 0xe8, 0x08, 0xc0, + 0x54, 0x28, 0x21, 0x59, 0x84, 0x57, 0x04, 0x5e, 0x06, 0xb2, 0x8f, 0xa0, 0x6c, 0x5a, 0x43, 0x7b, + 0x6c, 0x38, 0xbc, 0x4d, 0x1b, 0x5b, 0xa9, 0x7b, 0xa5, 0x47, 0xeb, 0x0f, 0x68, 0x4d, 0xc4, 0x98, + 0xdd, 0x15, 0x2d, 0x41, 0xc6, 0x9e, 0xc0, 0x9a, 0x48, 0x7f, 0xf0, 0x88, 0x3a, 0x96, 0x11, 0x9f, + 0x92, 0xe0, 0xfb, 0xe0, 0xd1, 0x93, 0xdd, 0x15, 0x2d, 0x49, 0xc8, 0xee, 0x40, 0x39, 0x5e, 0x22, + 0xc8, 0x78, 0x41, 0xd4, 0x2a, 0x01, 0xc5, 0x66, 0x7d, 0x19, 0x78, 0x2e, 0x12, 0x6c, 0x8a, 0x7e, + 0x8b, 0x00, 0x6c, 0x0b, 0xc0, 0xb4, 0x46, 0xc6, 0xd4, 0x09, 0x11, 0x7d, 0x51, 0x74, 0xa0, 0x04, + 0x63, 0x37, 0xa0, 0x38, 0x9d, 0x60, 0x2b, 0x9f, 0x1b, 0x4e, 0xf5, 0x92, 0x20, 0x98, 0x81, 0x30, + 0x77, 0x9c, 0xe7, 0x88, 0xbd, 0x2c, 0x46, 0x37, 0x02, 0xe0, 0xf0, 0xbe, 0xb4, 0x86, 0x88, 0xaa, + 0x8a, 0x82, 0x45, 0x1a, 0x57, 0x91, 0x1d, 0x6c, 0xdb, 0x6e, 0xf5, 0x0a, 0xcd, 0x60, 0x9e, 0x60, + 0xd7, 0x21, 0x1d, 0xf8, 0xc3, 0xea, 0x55, 0x6a, 0x3f, 0xf0, 0xf6, 0x37, 0x4f, 0x27, 0xbe, 0x86, + 0xe0, 0xed, 0x3c, 0x64, 0x69, 0x35, 0xa9, 0xd7, 0xa1, 0xb0, 0x6f, 0xf8, 0xc6, 0x58, 0xb3, 0x46, + 0x4c, 0x81, 0xf4, 0xc4, 0x0b, 0xc4, 0x3a, 0xc2, 0x4f, 0xb5, 0x0d, 0xb9, 0xe7, 0x86, 0x8f, 0x38, + 0x06, 0x19, 0xd7, 0x18, 0x5b, 0x84, 0x2c, 0x6a, 0xf4, 0x8d, 0x6b, 0x27, 0x38, 0x0b, 0x42, 0x6b, + 0x2c, 0x84, 0x84, 0x48, 0x21, 0xfc, 0xd0, 0xf1, 0x06, 0x62, 0x8d, 0x14, 0x34, 0x91, 0x52, 0xff, + 0xbf, 0x14, 0xe4, 0xea, 0x9e, 0x83, 0xd9, 0x5d, 0x86, 0xbc, 0x6f, 0x39, 0xfa, 0xac, 0xb8, 0x9c, + 0x6f, 0x39, 0xfb, 0x5e, 0x80, 0x88, 0xa1, 0xc7, 0x11, 0x7c, 0xd5, 0xe6, 0x86, 0x1e, 0x21, 0xa2, + 0x0a, 0xa4, 0xa5, 0x0a, 0x5c, 0x81, 0x42, 0x38, 0x70, 0x74, 0x82, 0x67, 0x08, 0x9e, 0x0f, 0x07, + 0x4e, 0x07, 0x51, 0x97, 0x21, 0x6f, 0x0e, 0x38, 0x26, 0x4b, 0x98, 0x9c, 0x39, 0x40, 0x84, 0xfa, + 0x29, 0x14, 0x35, 0xe3, 0x44, 0x54, 0xe3, 0x22, 0xe4, 0x30, 0x03, 0x21, 0xff, 0x32, 0x5a, 0x36, + 0x1c, 0x38, 0x2d, 0x13, 0xc1, 0x58, 0x09, 0xdb, 0xa4, 0x3a, 0x64, 0xb4, 0xec, 0xd0, 0x73, 0x5a, + 0xa6, 0xda, 0x07, 0xa8, 0x7b, 0xbe, 0xff, 0x9d, 0x9b, 0xb0, 0x09, 0x59, 0xd3, 0x9a, 0x84, 0x47, + 0x5c, 0x74, 0x68, 0x3c, 0xa1, 0xde, 0x87, 0x02, 0x8e, 0x4b, 0xdb, 0x0e, 0x42, 0x76, 0x03, 0x32, + 0x8e, 0x1d, 0x84, 0xd5, 0xd4, 0x56, 0x7a, 0x6e, 0xd4, 0x08, 0xae, 0x6e, 0x41, 0x61, 0xcf, 0x38, + 0x7d, 0x8e, 0x23, 0x87, 0xb9, 0xd1, 0x10, 0x8a, 0x21, 0x11, 0xe3, 0x59, 0x06, 0xe8, 0x1b, 0xfe, + 0xa1, 0x15, 0x92, 0xa4, 0xfb, 0x1f, 0x29, 0x28, 0xf5, 0xa6, 0x83, 0xaf, 0xa6, 0x96, 0x7f, 0x86, + 0x75, 0xbe, 0x07, 0xe9, 0xf0, 0x6c, 0x42, 0x1c, 0x95, 0x47, 0x97, 0x78, 0xf6, 0x12, 0xfe, 0x01, + 0x32, 0x69, 0x48, 0x82, 0x8d, 0x70, 0x3d, 0xd3, 0x8a, 0xfa, 0x20, 0xab, 0xe5, 0x30, 0xd9, 0x32, + 0x71, 0xbb, 0xf0, 0x26, 0x62, 0x14, 0x56, 0xbd, 0x09, 0xdb, 0x82, 0xec, 0xf0, 0xc8, 0x76, 0x4c, + 0x1a, 0x80, 0x64, 0x9d, 0x39, 0x02, 0x47, 0xc9, 0xf7, 0x4e, 0xf4, 0xc0, 0xfe, 0x3a, 0x12, 0xff, + 0x79, 0xdf, 0x3b, 0xe9, 0xd9, 0x5f, 0x5b, 0x6a, 0x5f, 0xec, 0x41, 0x00, 0xb9, 0x5e, 0xbd, 0xd6, + 0xae, 0x69, 0xca, 0x0a, 0x7e, 0x37, 0x3f, 0x6f, 0xf5, 0xfa, 0x3d, 0x25, 0xc5, 0x2a, 0x00, 0x9d, + 0x6e, 0x5f, 0x17, 0xe9, 0x55, 0x96, 0x83, 0xd5, 0x56, 0x47, 0x49, 0x23, 0x0d, 0xc2, 0x5b, 0x1d, + 0x25, 0xc3, 0xf2, 0x90, 0xae, 0x75, 0xbe, 0x50, 0xb2, 0xf4, 0xd1, 0x6e, 0x2b, 0x39, 0xf5, 0x4f, + 0x57, 0xa1, 0xd8, 0x1d, 0x7c, 0x69, 0x0d, 0x43, 0x6c, 0x33, 0xce, 0x52, 0xcb, 0x7f, 0x69, 0xf9, + 0xd4, 0xec, 0xb4, 0x26, 0x52, 0xd8, 0x10, 0x73, 0x40, 0x8d, 0x4b, 0x6b, 0xab, 0xe6, 0x80, 0xe8, + 0x86, 0x47, 0xd6, 0xd8, 0xa0, 0xc6, 0x21, 0x1d, 0xa5, 0x70, 0x55, 0x78, 0x83, 0x2f, 0xa9, 0x79, + 0x69, 0x0d, 0x3f, 0xd9, 0x4d, 0x28, 0xf1, 0x3c, 0xe4, 0xf9, 0x05, 0x1c, 0x34, 0x3f, 0xf9, 0x72, + 0xf2, 0xe4, 0x23, 0x4e, 0xca, 0x95, 0x23, 0xc5, 0xde, 0xc6, 0x41, 0x1d, 0x31, 0xa3, 0xbd, 0xc1, + 0x97, 0x1c, 0x5b, 0xe0, 0x33, 0xda, 0x1b, 0x7c, 0x49, 0xa8, 0x77, 0x60, 0x23, 0x98, 0x0e, 0x82, + 0xa1, 0x6f, 0x4f, 0x42, 0xdb, 0x73, 0x39, 0x4d, 0x91, 0x68, 0x14, 0x19, 0x41, 0xc4, 0xf7, 0xa0, + 0x30, 0x99, 0x0e, 0x74, 0xdb, 0x1d, 0x79, 0x24, 0xf6, 0x4b, 0x8f, 0xd6, 0xf8, 0xc0, 0xec, 0x4f, + 0x07, 0x2d, 0x77, 0xe4, 0x69, 0xf9, 0x09, 0xff, 0x60, 0x2a, 0xac, 0xb9, 0x5e, 0xa8, 0xa3, 0xaa, + 0xa0, 0x8f, 0xad, 0xd0, 0xa0, 0xfd, 0x80, 0x6f, 0xf8, 0x6d, 0x6f, 0x78, 0xbc, 0x67, 0x85, 0x86, + 0x7a, 0x17, 0xf2, 0x82, 0x0f, 0xf7, 0xfe, 0xd0, 0x72, 0x0d, 0x37, 0xd4, 0x63, 0xa5, 0xa1, 0xc0, + 0x01, 0x2d, 0x53, 0xfd, 0xa3, 0x14, 0x28, 0x3d, 0xa9, 0x2a, 0xc8, 0xbc, 0x54, 0x72, 0xbc, 0x01, + 0x60, 0x0c, 0x87, 0xde, 0x94, 0x67, 0xc3, 0x27, 0x58, 0x51, 0x40, 0x5a, 0xa6, 0xdc, 0x7f, 0xe9, + 0x44, 0xff, 0xdd, 0x82, 0x72, 0xc4, 0x27, 0x2d, 0xfa, 0x92, 0x80, 0x45, 0x3d, 0x18, 0x4c, 0x13, + 0x2b, 0x3f, 0x1f, 0x4c, 0x39, 0xf7, 0x25, 0xc8, 0x91, 0x86, 0x11, 0x44, 0xa3, 0xc2, 0x53, 0xea, + 0xbf, 0x49, 0xc1, 0x5a, 0xcb, 0x35, 0xad, 0xd3, 0xde, 0xd0, 0x70, 0xa3, 0x4e, 0xb1, 0x03, 0xdd, + 0x46, 0x98, 0x1e, 0x0c, 0x0d, 0x57, 0x28, 0x07, 0x25, 0x3b, 0x88, 0xe9, 0xb0, 0x0d, 0x9c, 0x80, + 0x8a, 0x5a, 0xa5, 0x1c, 0x8b, 0x04, 0xa1, 0xc2, 0xee, 0xc2, 0xfa, 0xc0, 0x72, 0x3c, 0xf7, 0x50, + 0x0f, 0x3d, 0x9d, 0x6b, 0x39, 0xbc, 0x2d, 0x6b, 0x1c, 0xdc, 0xf7, 0xfa, 0xa4, 0xed, 0x6c, 0x42, + 0x76, 0x62, 0xf8, 0x61, 0x50, 0xcd, 0x6c, 0xa5, 0x71, 0x19, 0x53, 0x02, 0xbb, 0xd9, 0x0e, 0xf4, + 0xa9, 0x6b, 0x7f, 0x35, 0xe5, 0xcd, 0x28, 0x68, 0x05, 0x3b, 0x38, 0xa0, 0x34, 0xbb, 0x07, 0x0a, + 0x2f, 0x99, 0xb2, 0x95, 0xe7, 0x59, 0x85, 0xe0, 0x94, 0x31, 0x09, 0xbb, 0xbf, 0xb0, 0x0a, 0x85, + 0x9d, 0xa9, 0x3b, 0xc4, 0xc1, 0x60, 0xb7, 0x21, 0x33, 0x9a, 0xba, 0x43, 0x6a, 0x4b, 0xbc, 0x95, + 0xc6, 0xeb, 0x44, 0x23, 0x24, 0x4a, 0x20, 0xc3, 0x3f, 0x44, 0xc9, 0xb5, 0x20, 0x81, 0x10, 0xae, + 0xfe, 0x83, 0x14, 0xcf, 0x71, 0xc7, 0x31, 0x0e, 0x59, 0x01, 0x32, 0x9d, 0x6e, 0xa7, 0xa9, 0xac, + 0xb0, 0x32, 0x14, 0x5a, 0x9d, 0x7e, 0x53, 0xeb, 0xd4, 0xda, 0x4a, 0x8a, 0x96, 0x73, 0xbf, 0xb6, + 0xdd, 0x6e, 0x2a, 0xab, 0x88, 0x79, 0xde, 0x6d, 0xd7, 0xfa, 0xad, 0x76, 0x53, 0xc9, 0x70, 0x8c, + 0xd6, 0xaa, 0xf7, 0x95, 0x02, 0x53, 0xa0, 0xbc, 0xaf, 0x75, 0x1b, 0x07, 0xf5, 0xa6, 0xde, 0x39, + 0x68, 0xb7, 0x15, 0x85, 0x5d, 0x80, 0xf5, 0x18, 0xd2, 0xe5, 0xc0, 0x2d, 0x64, 0x79, 0x5e, 0xd3, + 0x6a, 0xda, 0x53, 0xe5, 0x47, 0xac, 0x00, 0xe9, 0xda, 0xd3, 0xa7, 0xca, 0x4f, 0x51, 0x32, 0x14, + 0x5f, 0xb4, 0x3a, 0xfa, 0xf3, 0x5a, 0xfb, 0xa0, 0xa9, 0xfc, 0x74, 0x35, 0x4a, 0x77, 0xb5, 0x46, + 0x53, 0x53, 0x7e, 0x9a, 0x61, 0x1b, 0x50, 0xfe, 0x49, 0xb7, 0xd3, 0xdc, 0xab, 0xed, 0xef, 0x53, + 0x45, 0x7e, 0x5a, 0x50, 0xff, 0x4b, 0x06, 0x32, 0xd8, 0x12, 0xa6, 0xce, 0xa4, 0x60, 0xdc, 0x44, + 0x14, 0x43, 0xdb, 0x99, 0x3f, 0xf9, 0xb3, 0x9b, 0x2b, 0x5c, 0xfe, 0xdd, 0x82, 0xb4, 0x63, 0x87, + 0x34, 0xac, 0xf1, 0xda, 0x11, 0x3a, 0xe3, 0xee, 0x8a, 0x86, 0x38, 0x76, 0x03, 0x52, 0x5c, 0x10, + 0x96, 0x1e, 0x55, 0xc4, 0xe2, 0x12, 0x3b, 0xe9, 0xee, 0x8a, 0x96, 0x9a, 0xb0, 0xeb, 0x90, 0x7a, + 0x29, 0xa4, 0x62, 0x99, 0xe3, 0xf9, 0x5e, 0x8a, 0xd8, 0x97, 0x6c, 0x0b, 0xd2, 0x43, 0x8f, 0x6b, + 0x84, 0x31, 0x9e, 0xef, 0x2c, 0x98, 0xff, 0xd0, 0x73, 0xd8, 0x6d, 0x48, 0xfb, 0xc6, 0x09, 0x8d, + 0x6c, 0x3c, 0x5c, 0xf1, 0xd6, 0x85, 0x44, 0xbe, 0x71, 0x82, 0x95, 0x18, 0x91, 0x1c, 0x89, 0x2b, + 0x11, 0x8d, 0x37, 0x16, 0x33, 0x62, 0x5b, 0x90, 0x3a, 0x21, 0x49, 0x12, 0x2b, 0x41, 0x2f, 0x6c, + 0xd7, 0xf4, 0x4e, 0x7a, 0x13, 0x6b, 0x88, 0x14, 0x27, 0xec, 0x4d, 0x48, 0x07, 0xd3, 0x01, 0x49, + 0x92, 0xd2, 0xa3, 0x8d, 0x85, 0x3d, 0x01, 0x0b, 0x0a, 0xa6, 0x03, 0x76, 0x17, 0x32, 0x43, 0xcf, + 0xf7, 0x85, 0x34, 0x51, 0xa2, 0x0a, 0x47, 0xdb, 0x21, 0x2a, 0x85, 0x88, 0xc7, 0x02, 0x43, 0x92, + 0x21, 0x31, 0xd1, 0x6c, 0x3f, 0xc2, 0x02, 0x43, 0x76, 0x47, 0x6c, 0x72, 0x65, 0xb9, 0xd6, 0xd1, + 0x16, 0x88, 0xf9, 0x20, 0x16, 0x07, 0x69, 0x6c, 0x9c, 0x92, 0xc6, 0x19, 0x13, 0x45, 0x7b, 0x1f, + 0xd6, 0x69, 0x6c, 0x9c, 0xb2, 0x3b, 0x90, 0x7e, 0x69, 0x0d, 0x49, 0xf9, 0x8c, 0x4b, 0x13, 0x83, + 0xf4, 0x9c, 0x9a, 0x87, 0x68, 0x9a, 0xf7, 0x9e, 0x63, 0x92, 0x1e, 0x1a, 0x8f, 0xe5, 0x8e, 0xe7, + 0x98, 0xcf, 0x69, 0x2c, 0x09, 0x89, 0x5b, 0xbe, 0x31, 0x3d, 0x45, 0x69, 0xa4, 0xf0, 0xcd, 0xd9, + 0x98, 0x9e, 0xb6, 0x4c, 0x14, 0xfe, 0xae, 0xf9, 0x92, 0xb4, 0xcf, 0x94, 0x86, 0x9f, 0x68, 0x1e, + 0x05, 0x96, 0x63, 0x0d, 0x43, 0xfb, 0xa5, 0x1d, 0x9e, 0x91, 0x7e, 0x99, 0xd2, 0x64, 0xd0, 0x76, + 0x0e, 0x32, 0xd6, 0xe9, 0xc4, 0x57, 0x77, 0x21, 0x2f, 0x4a, 0x59, 0xb0, 0xb1, 0xae, 0x40, 0xc1, + 0x0e, 0xf4, 0xa1, 0xe7, 0x06, 0xa1, 0xd0, 0x9d, 0xf2, 0x76, 0x50, 0xc7, 0x24, 0x8a, 0x4b, 0xd3, + 0x08, 0xf9, 0x26, 0x54, 0xd6, 0xe8, 0x5b, 0x7d, 0x04, 0x30, 0x6b, 0x16, 0xd6, 0xc9, 0xb1, 0xdc, + 0x48, 0x4d, 0x73, 0x2c, 0x37, 0xe6, 0x59, 0x95, 0x78, 0xae, 0x40, 0x31, 0xd6, 0x8c, 0x59, 0x19, + 0x52, 0x86, 0xd8, 0xfe, 0x52, 0x86, 0x7a, 0x0f, 0x15, 0xd5, 0x48, 0xf7, 0x4d, 0xe2, 0x30, 0x15, + 0x6d, 0x8a, 0xa9, 0x81, 0xfa, 0x7d, 0x28, 0x6b, 0x56, 0x30, 0x75, 0xc2, 0xba, 0xe7, 0x34, 0xac, + 0x11, 0x7b, 0x17, 0x20, 0x4e, 0x07, 0x42, 0x4b, 0x99, 0xcd, 0xdd, 0x86, 0x35, 0xd2, 0x24, 0xbc, + 0xfa, 0xb7, 0x32, 0xa4, 0xef, 0x35, 0xb8, 0xa2, 0x25, 0x34, 0xaa, 0x94, 0xa4, 0x51, 0xc5, 0x7b, + 0xc3, 0x6a, 0x52, 0xab, 0x3c, 0xb2, 0x4d, 0xd3, 0x72, 0x23, 0xed, 0x91, 0xa7, 0x70, 0xb0, 0x0d, + 0xe7, 0x90, 0x16, 0x54, 0xe5, 0x11, 0x8b, 0x0a, 0x1d, 0x4f, 0x7c, 0x2b, 0x08, 0xb8, 0xde, 0x62, + 0x38, 0x87, 0xd1, 0xda, 0xce, 0xbe, 0x6a, 0x6d, 0x5f, 0x81, 0x02, 0x6e, 0x79, 0x64, 0xf5, 0xe5, + 0x78, 0xef, 0x0b, 0xf3, 0x96, 0xbd, 0x05, 0x79, 0xa1, 0xaf, 0x8b, 0x45, 0x25, 0xa6, 0x4b, 0x83, + 0x03, 0xb5, 0x08, 0xcb, 0xaa, 0xa8, 0xe4, 0x8d, 0xc7, 0x96, 0x1b, 0x46, 0xfb, 0xb4, 0x48, 0xb2, + 0x77, 0xa0, 0xe8, 0xb9, 0x3a, 0x57, 0xea, 0xc5, 0xaa, 0x12, 0xd3, 0xb7, 0xeb, 0x1e, 0x10, 0x54, + 0x2b, 0x78, 0xe2, 0x0b, 0xab, 0xe2, 0x78, 0x27, 0xfa, 0xd0, 0xf0, 0x4d, 0x5a, 0x59, 0x05, 0x2d, + 0xef, 0x78, 0x27, 0x75, 0xc3, 0x37, 0xb9, 0xde, 0xf2, 0x95, 0x3b, 0x1d, 0xd3, 0x6a, 0x5a, 0xd3, + 0x44, 0x8a, 0x5d, 0x87, 0xe2, 0xd0, 0x99, 0x06, 0xa1, 0xe5, 0x6f, 0x9f, 0x71, 0x33, 0x4d, 0x9b, + 0x01, 0xb0, 0x5e, 0x13, 0xdf, 0x1e, 0x1b, 0xfe, 0x19, 0x2d, 0x9d, 0x82, 0x16, 0x25, 0x69, 0xa3, + 0x39, 0xb6, 0xcd, 0x53, 0x6e, 0xab, 0x69, 0x3c, 0x81, 0xf4, 0x47, 0x64, 0x49, 0x07, 0xb4, 0x3e, + 0x0a, 0x5a, 0x94, 0xa4, 0x71, 0xa0, 0x4f, 0x5a, 0x11, 0x45, 0x4d, 0xa4, 0x12, 0x4a, 0xf7, 0xc6, + 0xb9, 0x4a, 0x37, 0x9b, 0xd7, 0x7b, 0x3c, 0xdf, 0x3e, 0xb4, 0x85, 0xd6, 0x72, 0x81, 0xeb, 0x3d, + 0x1c, 0x44, 0x1b, 0xd5, 0x57, 0x90, 0x17, 0x5d, 0x8c, 0x3b, 0x10, 0x2e, 0x9f, 0xa4, 0x78, 0xe6, + 0x3b, 0x10, 0xc2, 0xd9, 0x6d, 0x58, 0x13, 0x79, 0x05, 0xa1, 0x6f, 0xbb, 0x87, 0x62, 0xf2, 0x94, + 0x39, 0xb0, 0x47, 0x30, 0x54, 0x14, 0x70, 0x78, 0x75, 0x63, 0x60, 0x3b, 0xb8, 0x4c, 0xd3, 0x42, + 0xa9, 0x99, 0x3a, 0x4e, 0x8d, 0x83, 0xd4, 0x2e, 0x14, 0xa2, 0x01, 0xf9, 0xa5, 0x94, 0xa9, 0xfe, + 0x66, 0x0a, 0x4a, 0xa4, 0x1e, 0x74, 0x49, 0xf9, 0x61, 0xef, 0x02, 0x1b, 0xfa, 0x96, 0x11, 0x5a, + 0xba, 0x75, 0x1a, 0xfa, 0x86, 0x50, 0x02, 0xb8, 0x26, 0xa1, 0x70, 0x4c, 0x13, 0x11, 0x5c, 0x0f, + 0xb8, 0x09, 0xa5, 0x89, 0xe1, 0x07, 0x91, 0x52, 0xc9, 0x0b, 0x00, 0x0e, 0x12, 0x2a, 0x9d, 0xe2, + 0x1e, 0xfa, 0xc6, 0x58, 0x0f, 0xbd, 0x63, 0xcb, 0xe5, 0xea, 0x34, 0x37, 0x24, 0x2a, 0x04, 0xef, + 0x23, 0x98, 0xb4, 0xea, 0x7f, 0x97, 0x82, 0xb5, 0x7d, 0x3e, 0xea, 0xcf, 0xac, 0xb3, 0x06, 0xb7, + 0xde, 0x86, 0xd1, 0x8a, 0xcd, 0x68, 0xf4, 0xcd, 0x6e, 0x40, 0x69, 0x72, 0x6c, 0x9d, 0xe9, 0x09, + 0x4b, 0xa7, 0x88, 0xa0, 0x3a, 0xad, 0xcd, 0xb7, 0x21, 0xe7, 0x51, 0x43, 0xc4, 0x1e, 0x27, 0xb6, + 0x06, 0xa9, 0x85, 0x9a, 0x20, 0x40, 0x75, 0x29, 0xce, 0x4a, 0xd6, 0xcb, 0x44, 0x66, 0x54, 0xfd, + 0x4d, 0xc8, 0x22, 0x2a, 0xa8, 0x66, 0xb9, 0x9e, 0x43, 0x09, 0xf6, 0x3e, 0xac, 0x0d, 0xbd, 0xf1, + 0x44, 0x8f, 0xd8, 0xc5, 0x6e, 0x97, 0x94, 0x29, 0x25, 0x24, 0xd9, 0xe7, 0x79, 0xa9, 0xbf, 0x97, + 0x86, 0x02, 0xd5, 0x41, 0x88, 0x15, 0xdb, 0x3c, 0x8d, 0xc4, 0x4a, 0x51, 0xcb, 0xda, 0x26, 0x4a, + 0xed, 0xd7, 0xa8, 0x66, 0xb1, 0xca, 0x95, 0x96, 0x55, 0xae, 0x4b, 0x90, 0x13, 0xfa, 0x56, 0x86, + 0xcb, 0x9d, 0xe9, 0xf9, 0xda, 0x56, 0x76, 0x99, 0xb6, 0x85, 0x43, 0xc8, 0x69, 0xac, 0x53, 0xdc, + 0xdf, 0xb8, 0x68, 0x01, 0x02, 0x35, 0x11, 0x22, 0x0b, 0x8d, 0x7c, 0x52, 0x68, 0x54, 0x21, 0xff, + 0xd2, 0x0e, 0x6c, 0x9c, 0x20, 0x05, 0xbe, 0x0c, 0x45, 0x52, 0x1a, 0x86, 0xe2, 0xeb, 0x86, 0x21, + 0x6e, 0xb6, 0xe1, 0x1c, 0x72, 0xb5, 0x3f, 0x6a, 0x76, 0xcd, 0x39, 0xf4, 0xd8, 0x07, 0x70, 0x71, + 0x86, 0x16, 0xad, 0x21, 0xf7, 0x18, 0x79, 0x80, 0x34, 0x16, 0x53, 0x52, 0x8b, 0xc8, 0x2e, 0xbb, + 0x0f, 0x1b, 0x12, 0xcb, 0x04, 0xd5, 0x9b, 0x80, 0x64, 0x4e, 0x51, 0x5b, 0x8f, 0xc9, 0x49, 0xeb, + 0x09, 0xd4, 0x7f, 0xb2, 0x0a, 0x6b, 0x3b, 0x9e, 0x6f, 0xd9, 0x87, 0xee, 0x6c, 0xd6, 0x2d, 0x68, + 0xfe, 0xd1, 0x4c, 0x5c, 0x95, 0x66, 0xe2, 0x4d, 0x28, 0x8d, 0x38, 0xa3, 0x1e, 0x0e, 0xb8, 0xd3, + 0x20, 0xa3, 0x81, 0x00, 0xf5, 0x07, 0x0e, 0xae, 0xe6, 0x88, 0x80, 0x98, 0x33, 0xc4, 0x1c, 0x31, + 0xe1, 0x5e, 0xc3, 0xbe, 0x47, 0x52, 0xd7, 0xb4, 0x1c, 0x2b, 0xe4, 0xc3, 0x53, 0x79, 0xf4, 0x46, + 0xb4, 0xd3, 0x4b, 0x75, 0x7a, 0xa0, 0x59, 0xa3, 0x1a, 0xa9, 0x47, 0x28, 0x84, 0x1b, 0x44, 0x2e, + 0x78, 0x85, 0xc4, 0xce, 0x7d, 0x43, 0x5e, 0x2e, 0x39, 0xd4, 0x3e, 0x14, 0x63, 0x30, 0xea, 0xba, + 0x5a, 0x53, 0xe8, 0xb7, 0x2b, 0xac, 0x04, 0xf9, 0x7a, 0xad, 0x57, 0xaf, 0x35, 0x9a, 0x4a, 0x0a, + 0x51, 0xbd, 0x66, 0x9f, 0xeb, 0xb4, 0xab, 0x6c, 0x1d, 0x4a, 0x98, 0x6a, 0x34, 0x77, 0x6a, 0x07, + 0xed, 0xbe, 0x92, 0x66, 0x6b, 0x50, 0xec, 0x74, 0xf5, 0x5a, 0xbd, 0xdf, 0xea, 0x76, 0x94, 0x8c, + 0xfa, 0x23, 0x28, 0xd4, 0x8f, 0xac, 0xe1, 0xf1, 0x79, 0xbd, 0x48, 0x46, 0xb7, 0x35, 0x3c, 0x16, + 0xfa, 0xe9, 0x9c, 0xd1, 0x6d, 0x0d, 0x8f, 0xd5, 0x26, 0x14, 0xf7, 0x0d, 0x3f, 0xb4, 0xa9, 0x5e, + 0x4f, 0x60, 0x2d, 0x4e, 0x34, 0xac, 0x51, 0xb4, 0x73, 0xb3, 0x58, 0x6b, 0x8d, 0x51, 0x5a, 0x92, + 0x50, 0x7d, 0x17, 0xca, 0x32, 0x80, 0x5d, 0x87, 0xb4, 0x69, 0x8d, 0x96, 0xc8, 0x49, 0x04, 0xab, + 0xcf, 0xa1, 0x5c, 0x8f, 0x76, 0xa2, 0xf3, 0xaa, 0xfe, 0x08, 0x2a, 0xb4, 0xe2, 0x87, 0x83, 0x68, + 0xc9, 0xaf, 0x2e, 0x59, 0xf2, 0x65, 0xa4, 0xa9, 0x0f, 0xc4, 0x9a, 0xff, 0x08, 0x4a, 0xfb, 0xbe, + 0x37, 0xb1, 0xfc, 0x90, 0xb2, 0x55, 0x20, 0x7d, 0x6c, 0x9d, 0x89, 0x5c, 0xf1, 0x73, 0xe6, 0x0b, + 0x59, 0x95, 0x7d, 0x21, 0x8f, 0xa0, 0x10, 0xb1, 0x7d, 0x63, 0x9e, 0x1f, 0xa2, 0xe8, 0x24, 0x1e, + 0xdb, 0x0a, 0xb0, 0xb0, 0x07, 0x00, 0x93, 0x18, 0x20, 0x3a, 0x2e, 0x52, 0xf7, 0x45, 0xe6, 0x9a, + 0x44, 0xa1, 0xbe, 0x01, 0xf9, 0xe7, 0xb6, 0x75, 0x22, 0x9a, 0xff, 0xd2, 0xb6, 0x4e, 0xa2, 0xe6, + 0xe3, 0xb7, 0xfa, 0x17, 0x8b, 0x50, 0xa0, 0xf5, 0xd5, 0x38, 0xdf, 0xfd, 0xf4, 0x6d, 0xb4, 0xa2, + 0x2d, 0xb1, 0x9e, 0x32, 0x4b, 0x74, 0x31, 0xbe, 0xba, 0xde, 0x00, 0x90, 0xd6, 0x3a, 0x97, 0x5c, + 0xc5, 0x30, 0x5e, 0xe2, 0xa8, 0x4e, 0xd0, 0x5e, 0x14, 0x7c, 0xe5, 0x08, 0x2b, 0x72, 0x06, 0x60, + 0x0f, 0xf8, 0x66, 0x4f, 0x76, 0x23, 0x57, 0x88, 0x2e, 0x44, 0x4a, 0xfd, 0xc0, 0xb1, 0x22, 0x53, + 0x83, 0x34, 0x00, 0x4c, 0x90, 0x1c, 0xb3, 0xfc, 0x00, 0xc5, 0x15, 0xf9, 0xa7, 0xb5, 0x28, 0xc9, + 0xde, 0x82, 0x0c, 0x0a, 0x79, 0x61, 0x1a, 0x5c, 0x88, 0x7a, 0x50, 0xda, 0xa5, 0x34, 0x22, 0x60, + 0xf7, 0x20, 0x4f, 0xa2, 0xc5, 0x42, 0x49, 0x23, 0xf5, 0x76, 0x24, 0xf4, 0xb5, 0x08, 0xcd, 0xde, + 0x86, 0xec, 0xe8, 0xd8, 0x3a, 0x0b, 0xaa, 0x6b, 0x44, 0x77, 0x61, 0xc9, 0x9a, 0xd5, 0x38, 0x05, + 0xbb, 0x03, 0x15, 0xdf, 0x1a, 0xe9, 0xe4, 0x90, 0x42, 0x21, 0x13, 0x54, 0x2b, 0x24, 0x43, 0xca, + 0xbe, 0x35, 0xaa, 0x23, 0xb0, 0x3f, 0x70, 0x02, 0x76, 0x17, 0x72, 0xb4, 0x7a, 0x50, 0x17, 0x92, + 0x4a, 0x8e, 0x96, 0xa2, 0x26, 0xb0, 0xec, 0x03, 0x00, 0xa1, 0x71, 0xe9, 0x83, 0x33, 0x72, 0xe4, + 0xc6, 0x8b, 0x49, 0x9e, 0xff, 0xb2, 0x5e, 0xf6, 0x16, 0x64, 0x71, 0x92, 0x04, 0xd5, 0xcb, 0x94, + 0xf3, 0x46, 0x72, 0x06, 0x51, 0x4d, 0x09, 0xcf, 0xee, 0x41, 0x01, 0x27, 0x8a, 0x8e, 0xc3, 0x51, + 0x95, 0x55, 0x50, 0x31, 0xab, 0x70, 0x67, 0xb0, 0x4e, 0x7a, 0x5f, 0x39, 0xec, 0x3e, 0x64, 0x4c, + 0x5c, 0xcc, 0x57, 0x28, 0xc7, 0x4b, 0xd2, 0xb8, 0xa0, 0xb0, 0x6a, 0x58, 0x23, 0xd2, 0x8a, 0x89, + 0x86, 0xed, 0x42, 0x05, 0xa7, 0xd1, 0x23, 0xda, 0xec, 0xb1, 0xfb, 0xaa, 0x57, 0x89, 0xeb, 0xd6, + 0x1c, 0x57, 0x47, 0x10, 0x51, 0x67, 0x37, 0xdd, 0xd0, 0x3f, 0xd3, 0xd6, 0x5c, 0x19, 0xc6, 0xae, + 0xa2, 0xe9, 0xd2, 0xf6, 0x86, 0xc7, 0x96, 0x59, 0xbd, 0x16, 0x39, 0x26, 0x78, 0x9a, 0x7d, 0x0a, + 0x6b, 0x34, 0xb1, 0x30, 0x89, 0x85, 0x57, 0xaf, 0x93, 0x30, 0x95, 0xa7, 0x4c, 0x84, 0xd2, 0x92, + 0x94, 0x28, 0xe2, 0xed, 0x40, 0x0f, 0xad, 0xf1, 0xc4, 0xf3, 0x51, 0x79, 0x7d, 0x23, 0x72, 0xb8, + 0xf4, 0x23, 0x10, 0x6e, 0xc4, 0xf1, 0xb1, 0x93, 0xee, 0x8d, 0x46, 0x81, 0x15, 0x56, 0x6f, 0xd0, + 0xba, 0xa9, 0x44, 0xa7, 0x4f, 0x5d, 0x82, 0xd2, 0x46, 0x18, 0xe8, 0xe6, 0x99, 0x6b, 0x8c, 0xed, + 0x61, 0xf5, 0x26, 0xd7, 0x91, 0xed, 0xa0, 0xc1, 0x01, 0xb2, 0x9a, 0xba, 0x95, 0x50, 0x53, 0x2f, + 0x40, 0xd6, 0x1c, 0xe0, 0x72, 0xbc, 0x45, 0xd9, 0x66, 0xcc, 0x41, 0xcb, 0x64, 0xef, 0x41, 0x71, + 0x12, 0x89, 0xc0, 0xaa, 0x2a, 0x1b, 0xe3, 0xb1, 0x64, 0xd4, 0x66, 0x14, 0x68, 0x1f, 0xee, 0x58, + 0x46, 0x38, 0xf5, 0xad, 0x1d, 0xc7, 0x38, 0xac, 0xde, 0xa6, 0x9c, 0x64, 0xd0, 0xd5, 0xa7, 0xa4, + 0xeb, 0x52, 0xab, 0x3f, 0x9a, 0x13, 0x2e, 0x89, 0xa5, 0x21, 0x49, 0xa1, 0xdd, 0x15, 0x59, 0xc6, + 0x6c, 0x67, 0x49, 0x0a, 0x5f, 0xfd, 0x11, 0xb0, 0xc5, 0xf1, 0x7a, 0x9d, 0xa4, 0xcb, 0x0a, 0x49, + 0xf7, 0xbd, 0xd5, 0x27, 0x29, 0xf5, 0x39, 0xac, 0x25, 0x16, 0xf2, 0x52, 0x89, 0xcd, 0xd5, 0x25, + 0x63, 0x2c, 0xcc, 0x4b, 0x9e, 0x10, 0x1e, 0xaa, 0xc0, 0x76, 0x0f, 0x85, 0x67, 0x8b, 0x26, 0x42, + 0x8f, 0xd2, 0xea, 0x9f, 0xa6, 0xa1, 0xbc, 0x6b, 0x04, 0x47, 0x7b, 0xc6, 0xa4, 0x17, 0x1a, 0x61, + 0x80, 0xc3, 0x7b, 0x64, 0x04, 0x47, 0x63, 0x63, 0xc2, 0x15, 0xd7, 0x14, 0x37, 0x9b, 0x05, 0x0c, + 0xb5, 0x56, 0x9c, 0x58, 0x98, 0xec, 0xba, 0xfb, 0xcf, 0x84, 0x4d, 0x1c, 0xa7, 0x51, 0xac, 0x04, + 0x47, 0xd3, 0xd1, 0x28, 0x2e, 0x2a, 0x4a, 0xb2, 0x3b, 0xb0, 0x26, 0x3e, 0x49, 0x6b, 0x3d, 0x15, + 0xc7, 0x8e, 0x49, 0x20, 0x7b, 0x0c, 0x25, 0x01, 0xe8, 0x47, 0x42, 0xb0, 0x12, 0xfb, 0x3a, 0x66, + 0x08, 0x4d, 0xa6, 0x62, 0x3f, 0x86, 0x8b, 0x52, 0x72, 0xc7, 0xf3, 0xf7, 0xa6, 0x4e, 0x68, 0xd7, + 0x3b, 0x42, 0x45, 0xb8, 0xb6, 0xc0, 0x3e, 0x23, 0xd1, 0x96, 0x73, 0x26, 0x6b, 0xbb, 0x67, 0xbb, + 0x24, 0x53, 0xd3, 0x5a, 0x12, 0x38, 0x47, 0x65, 0x9c, 0x92, 0x28, 0x4d, 0x52, 0x19, 0xa7, 0xb8, + 0xd8, 0x04, 0x60, 0xcf, 0x0a, 0x8f, 0x3c, 0x93, 0xf4, 0xc3, 0x78, 0xb1, 0xf5, 0x64, 0x94, 0x96, + 0xa4, 0xc4, 0xee, 0x44, 0x4b, 0x68, 0xe8, 0x86, 0xa4, 0x25, 0xa6, 0xb5, 0x28, 0x89, 0xdb, 0x8c, + 0x6f, 0xb8, 0x87, 0x56, 0x50, 0x2d, 0x6d, 0xa5, 0xef, 0xa5, 0x34, 0x91, 0x52, 0xff, 0xc6, 0x2a, + 0x64, 0xf9, 0x48, 0x5e, 0x83, 0xe2, 0x80, 0x9c, 0xc5, 0x68, 0x99, 0x0a, 0x07, 0x30, 0x01, 0x3a, + 0xd3, 0x31, 0xd7, 0xee, 0x84, 0x4f, 0x23, 0xa5, 0xd1, 0x37, 0x66, 0xe9, 0x4d, 0x43, 0x2c, 0x2b, + 0x4d, 0x50, 0x91, 0xc2, 0x4a, 0xf8, 0xde, 0x09, 0xcd, 0x86, 0x0c, 0x21, 0xa2, 0x24, 0xf9, 0x98, + 0x69, 0xc7, 0x42, 0xa6, 0x2c, 0xe1, 0x0a, 0x04, 0xa8, 0xbb, 0xe1, 0xbc, 0xff, 0x25, 0xb7, 0xe0, + 0x7f, 0x61, 0x37, 0x00, 0x75, 0xc7, 0xa1, 0xd5, 0x75, 0xad, 0x7a, 0x87, 0x7a, 0xb8, 0xa0, 0x49, + 0x10, 0x5c, 0x20, 0xa6, 0x37, 0xa1, 0x4e, 0xcd, 0x6a, 0xf8, 0xc9, 0x3e, 0x8e, 0x67, 0x27, 0xb5, + 0x51, 0x68, 0xda, 0x42, 0xa2, 0xcb, 0xf3, 0x58, 0x4b, 0xd0, 0x61, 0x4e, 0x28, 0xa6, 0xb9, 0xa6, + 0x8d, 0x9f, 0x6a, 0x13, 0x40, 0xf3, 0x4e, 0x02, 0x2b, 0x24, 0x47, 0xe3, 0x65, 0x6a, 0x62, 0xe2, + 0x88, 0xc8, 0x3b, 0xd9, 0xf7, 0x82, 0xd8, 0xde, 0x5c, 0x5d, 0x6e, 0x6f, 0xaa, 0x0f, 0x21, 0x8f, + 0x7b, 0xb8, 0x11, 0x1a, 0xec, 0x8e, 0xf0, 0xed, 0x70, 0xcd, 0x43, 0x38, 0xb9, 0x66, 0x65, 0x08, + 0x6f, 0x4f, 0x3b, 0x2a, 0x97, 0x78, 0x6e, 0x49, 0xe6, 0x5e, 0xbc, 0x7f, 0x88, 0x0c, 0x85, 0x56, + 0x70, 0x0d, 0x8a, 0x58, 0x35, 0xf2, 0x9b, 0x0b, 0xb9, 0x50, 0xf0, 0xbd, 0x93, 0x3a, 0xa6, 0xd5, + 0x7f, 0x9f, 0x82, 0x52, 0xd7, 0x37, 0x71, 0xe3, 0xea, 0x4d, 0xac, 0xe1, 0x6b, 0xcd, 0x63, 0xd4, + 0x21, 0x3c, 0xc7, 0x31, 0x48, 0x44, 0x0a, 0x73, 0x2b, 0x06, 0xb0, 0x0f, 0x20, 0x33, 0x42, 0x51, + 0x98, 0x96, 0x35, 0x6b, 0x29, 0xfb, 0xe8, 0x1b, 0x85, 0xa3, 0x46, 0xa4, 0xea, 0xaf, 0xc5, 0xe5, + 0x93, 0x9f, 0x59, 0xf6, 0x2e, 0xaf, 0xd0, 0x39, 0x4f, 0xaf, 0xae, 0xa4, 0x58, 0x01, 0x32, 0x8d, + 0x66, 0xaf, 0xce, 0xf5, 0x69, 0xd4, 0xac, 0x7b, 0xfa, 0x4e, 0x4b, 0xeb, 0xf5, 0x95, 0x0c, 0x1d, + 0x1c, 0x11, 0xa0, 0x5d, 0xeb, 0xf5, 0x95, 0x02, 0x03, 0xc8, 0x1d, 0x74, 0x5a, 0x3f, 0x3e, 0x68, + 0x2a, 0x8a, 0xfa, 0xaf, 0x52, 0x00, 0x33, 0x27, 0x28, 0x7b, 0x07, 0x4a, 0x27, 0x94, 0xd2, 0x25, + 0xef, 0xb8, 0xdc, 0x46, 0xe0, 0x68, 0xd2, 0x6f, 0xde, 0x83, 0x72, 0x2c, 0xea, 0x71, 0xef, 0x5f, + 0x74, 0x93, 0x97, 0x62, 0xfc, 0xf6, 0x19, 0x7b, 0x17, 0x0a, 0x1e, 0xb6, 0x03, 0x49, 0xd3, 0xf2, + 0xc6, 0x2f, 0x35, 0x5f, 0xcb, 0x7b, 0x3c, 0x81, 0x3a, 0xc2, 0xc8, 0x8f, 0xcc, 0xe7, 0x98, 0x74, + 0x07, 0x41, 0x75, 0xc7, 0x98, 0x06, 0x96, 0xc6, 0xf1, 0xb1, 0x94, 0xce, 0xce, 0xa4, 0xb4, 0xfa, + 0x13, 0xa8, 0xf4, 0x8c, 0xf1, 0x84, 0xcb, 0x72, 0x6a, 0x18, 0x83, 0x0c, 0xce, 0x09, 0x31, 0xf5, + 0xe8, 0x1b, 0x17, 0xdd, 0xbe, 0xe5, 0x0f, 0x2d, 0x37, 0x5a, 0xa3, 0x51, 0x12, 0xc5, 0xef, 0x01, + 0x4a, 0x73, 0xcd, 0x3b, 0x89, 0xc4, 0x79, 0x94, 0x56, 0xff, 0x20, 0x05, 0x25, 0xa9, 0x1a, 0xec, + 0x21, 0x64, 0x48, 0x99, 0x4c, 0xc9, 0x82, 0x50, 0x22, 0xe0, 0xdf, 0x5c, 0xfd, 0x40, 0x42, 0x76, + 0x17, 0xb2, 0x41, 0x68, 0xf8, 0x91, 0x3f, 0x5d, 0x91, 0x38, 0xb6, 0xbd, 0xa9, 0x6b, 0x6a, 0x1c, + 0xcd, 0x54, 0x48, 0x5b, 0xae, 0x29, 0x1c, 0x0e, 0x8b, 0x54, 0x88, 0x54, 0xb7, 0xa0, 0x18, 0x67, + 0x8f, 0x53, 0x40, 0xeb, 0xbe, 0xe8, 0x29, 0x2b, 0xac, 0x08, 0x59, 0xad, 0xd6, 0x79, 0xda, 0x54, + 0x52, 0xea, 0x1f, 0xa5, 0x00, 0x66, 0x5c, 0xec, 0x41, 0xa2, 0xb6, 0x57, 0xe7, 0x73, 0x7d, 0x40, + 0x7f, 0xa5, 0xca, 0x5e, 0x87, 0xe2, 0xd4, 0x25, 0xa0, 0x65, 0x8a, 0x9d, 0x68, 0x06, 0x40, 0x0b, + 0x28, 0x8a, 0xfe, 0x98, 0xb3, 0x80, 0x5e, 0x1a, 0x8e, 0xfa, 0x3d, 0x28, 0xc6, 0xd9, 0xa1, 0x51, + 0xb7, 0xd3, 0x6d, 0xb7, 0xbb, 0x2f, 0x5a, 0x9d, 0xa7, 0xca, 0x0a, 0x26, 0xf7, 0xb5, 0x66, 0xbd, + 0xd9, 0xc0, 0x64, 0x0a, 0xe7, 0x6c, 0xfd, 0x40, 0xd3, 0x9a, 0x9d, 0xbe, 0xae, 0x75, 0x5f, 0x28, + 0xab, 0xea, 0xff, 0x9f, 0x81, 0x8d, 0xae, 0xdb, 0x98, 0x4e, 0x1c, 0x7b, 0x68, 0x84, 0xd6, 0x33, + 0xeb, 0xac, 0x1e, 0x9e, 0xe2, 0xee, 0x6b, 0x84, 0xa1, 0xcf, 0x17, 0x73, 0x51, 0xe3, 0x09, 0xee, + 0x94, 0x08, 0x2c, 0x3f, 0x24, 0x9f, 0x8b, 0xbc, 0x8a, 0x2b, 0x1c, 0x5e, 0xf7, 0x1c, 0x5a, 0xcb, + 0xec, 0x07, 0x70, 0x91, 0x3b, 0x32, 0x38, 0x25, 0x2a, 0xb0, 0x3a, 0x2d, 0xe6, 0xf4, 0xc2, 0xd4, + 0x65, 0x9c, 0x10, 0x59, 0x91, 0x8c, 0x44, 0xd8, 0x4d, 0x28, 0xcd, 0xd8, 0xa3, 0x43, 0x2a, 0x88, + 0x09, 0xa9, 0x26, 0x68, 0x78, 0x47, 0xb5, 0xd6, 0x6d, 0xf3, 0x94, 0x5c, 0x3c, 0x59, 0xad, 0xe2, + 0xcd, 0x1a, 0x83, 0x9b, 0xf0, 0xe7, 0xb0, 0x91, 0xa0, 0xa4, 0x5a, 0xe4, 0xa8, 0x16, 0xef, 0x46, + 0x0e, 0xd2, 0xb9, 0xd6, 0xcb, 0x10, 0xac, 0x0e, 0xd7, 0x48, 0xd7, 0xbd, 0x24, 0x54, 0xe8, 0x22, + 0xf6, 0xa1, 0xeb, 0xf9, 0x96, 0x10, 0xf8, 0x05, 0x3b, 0x68, 0x51, 0x7a, 0x66, 0xff, 0x48, 0x87, + 0xaa, 0x7c, 0x7f, 0x89, 0xce, 0x0b, 0x39, 0xda, 0xe6, 0x3b, 0x68, 0x46, 0xcb, 0x53, 0xba, 0x65, + 0xb2, 0xdb, 0x42, 0x9d, 0xd5, 0x23, 0x93, 0x06, 0xc8, 0xa4, 0x29, 0x13, 0xf0, 0x39, 0x87, 0x5d, + 0xed, 0xc0, 0xe6, 0xb2, 0x4a, 0x2e, 0x51, 0xc3, 0xb6, 0x64, 0x35, 0x6c, 0xce, 0x68, 0x9f, 0xa9, + 0x64, 0x7f, 0x27, 0x05, 0xe5, 0x86, 0x65, 0x4e, 0x27, 0x9f, 0x79, 0xb6, 0x8b, 0x13, 0xe0, 0x43, + 0x28, 0x7b, 0x8e, 0x49, 0xa3, 0x27, 0xc5, 0x06, 0x24, 0x4e, 0x8c, 0x84, 0x73, 0x1b, 0x3c, 0xc7, + 0xac, 0x7b, 0x0e, 0x45, 0x12, 0xbc, 0x07, 0x17, 0xb8, 0x43, 0x43, 0xf8, 0xf7, 0x4e, 0x39, 0xf3, + 0x2a, 0x8d, 0x8c, 0xc2, 0x51, 0x5c, 0x39, 0x22, 0xf2, 0x5f, 0x81, 0x4d, 0x89, 0x1c, 0x47, 0x86, + 0xd3, 0x2f, 0x4e, 0x92, 0x8d, 0x98, 0x37, 0x3a, 0xb2, 0x51, 0x7f, 0x6b, 0x15, 0x8a, 0xdc, 0x1d, + 0x82, 0xf5, 0xbd, 0x07, 0x79, 0x6f, 0xf0, 0xa5, 0xee, 0xc7, 0x6e, 0x82, 0x85, 0x93, 0xc6, 0x9c, + 0x37, 0xf8, 0x52, 0xb3, 0x46, 0xec, 0x9d, 0x68, 0x9f, 0x37, 0xad, 0x91, 0xe8, 0x94, 0x4a, 0xd2, + 0x1e, 0x11, 0xfb, 0x3e, 0xda, 0xca, 0x8f, 0xa1, 0x34, 0x9b, 0xf1, 0x41, 0x35, 0x7f, 0x7e, 0x2f, + 0xc4, 0x0b, 0x20, 0x40, 0x26, 0xee, 0x12, 0xe2, 0x4c, 0x85, 0xf3, 0x99, 0x38, 0x19, 0x31, 0x7d, + 0x0a, 0x95, 0x99, 0x8c, 0x27, 0xbe, 0xe2, 0xb9, 0x7c, 0x6b, 0x31, 0x25, 0x9d, 0x78, 0xfc, 0xdd, + 0x14, 0x14, 0x5b, 0xbc, 0xf8, 0xf0, 0x94, 0xdd, 0x82, 0xf4, 0x2b, 0x7a, 0x01, 0x71, 0xec, 0x3e, + 0x6c, 0x18, 0xa6, 0xa9, 0x1b, 0xa3, 0x91, 0x35, 0x0c, 0x2d, 0x53, 0x47, 0x15, 0x48, 0xc8, 0x9c, + 0x75, 0xc3, 0x34, 0x6b, 0x02, 0x4e, 0xb2, 0x1b, 0xd7, 0x7c, 0xa0, 0x47, 0x86, 0xe7, 0xec, 0x48, + 0xb9, 0xa0, 0x55, 0xec, 0x40, 0xd8, 0x9d, 0xdc, 0x97, 0x9c, 0xe8, 0xd8, 0xcc, 0xab, 0x3b, 0x56, + 0xfd, 0xdd, 0x55, 0x00, 0xcd, 0x9a, 0x38, 0xc6, 0xd0, 0xfa, 0xbf, 0xa6, 0xd2, 0x28, 0x96, 0xe2, + 0x81, 0x75, 0xcd, 0x28, 0x04, 0x23, 0x1a, 0x44, 0xd7, 0x64, 0x3f, 0x82, 0x37, 0x7c, 0xeb, 0xc4, + 0xb7, 0x43, 0x4b, 0x1f, 0xf9, 0xde, 0x58, 0x4f, 0x48, 0x1e, 0x5c, 0x98, 0x45, 0xaa, 0xc4, 0x15, + 0x41, 0xb4, 0xe3, 0x7b, 0xe3, 0xa4, 0xf4, 0x51, 0xff, 0xa0, 0x04, 0xa5, 0x9a, 0x6b, 0x38, 0x67, + 0x5f, 0x5b, 0x14, 0x13, 0x40, 0xde, 0xd5, 0xc9, 0x34, 0xe4, 0xcd, 0xe5, 0x07, 0x66, 0x45, 0x82, + 0x50, 0x43, 0x6f, 0x42, 0xc9, 0x9b, 0x86, 0x31, 0x9e, 0x1f, 0xa1, 0x01, 0x07, 0x11, 0x41, 0xcc, + 0x1f, 0x7b, 0xee, 0x23, 0x7e, 0x32, 0x7f, 0x66, 0xfc, 0xb1, 0x4a, 0x1c, 0xf3, 0x13, 0x01, 0x4a, + 0x23, 0x7b, 0x4c, 0x0d, 0x0e, 0xa6, 0x63, 0x8b, 0x37, 0x3a, 0xcd, 0xe3, 0xd3, 0xea, 0x02, 0x86, + 0xb9, 0x8c, 0xad, 0xb1, 0xe7, 0x9f, 0xf1, 0x5c, 0x72, 0x3c, 0x17, 0x0e, 0xa2, 0x5c, 0xde, 0x05, + 0x76, 0x62, 0xd8, 0xa1, 0x9e, 0xcc, 0x8a, 0x9b, 0x21, 0x0a, 0x62, 0xfa, 0x72, 0x76, 0x97, 0x20, + 0x67, 0xda, 0xc1, 0x71, 0xab, 0x2b, 0x4c, 0x10, 0x91, 0xc2, 0xb6, 0x04, 0x43, 0x03, 0x35, 0xa0, + 0xd0, 0xe2, 0xea, 0x72, 0x5a, 0x2b, 0x22, 0x64, 0x1b, 0x01, 0xb8, 0x83, 0xba, 0x56, 0x78, 0xe2, + 0xf9, 0xc8, 0xc9, 0x2d, 0x8c, 0x19, 0x00, 0x35, 0x0d, 0x24, 0xc5, 0x82, 0xc8, 0x1b, 0x94, 0xd6, + 0xe2, 0x34, 0xea, 0xee, 0x7c, 0xf9, 0x12, 0xb6, 0xcc, 0xab, 0x3f, 0x83, 0xb0, 0x3b, 0x50, 0xa1, + 0xea, 0x93, 0x05, 0x82, 0x6d, 0xa0, 0x53, 0xae, 0xb4, 0x56, 0x46, 0x28, 0x39, 0x13, 0x90, 0xea, + 0x53, 0xb8, 0x92, 0x68, 0x9f, 0x6e, 0xf8, 0xbe, 0x71, 0xa6, 0x8f, 0x8d, 0x2f, 0x3d, 0x9f, 0x1c, + 0x3f, 0x69, 0xed, 0x92, 0xdc, 0x6d, 0x35, 0x44, 0xef, 0x21, 0xf6, 0x5c, 0x56, 0xdb, 0xf5, 0x7c, + 0xf2, 0x0a, 0x2d, 0x65, 0x45, 0x2c, 0xb9, 0x30, 0x68, 0x80, 0xc9, 0x1c, 0x0a, 0x78, 0x5c, 0xa3, + 0x56, 0x22, 0xd8, 0x36, 0x81, 0xd0, 0x20, 0x08, 0x1e, 0x73, 0xc9, 0xba, 0x21, 0x82, 0x8c, 0x1e, + 0x93, 0xfc, 0xe5, 0x88, 0x23, 0xcb, 0x30, 0xe9, 0xe4, 0x8c, 0x10, 0xbb, 0x96, 0x41, 0xe7, 0xd2, + 0xc1, 0x63, 0x7d, 0x32, 0x0d, 0x79, 0x40, 0xa2, 0x96, 0x0d, 0x1e, 0xef, 0x4f, 0x43, 0x01, 0x3e, + 0xb4, 0x42, 0x0a, 0x43, 0x24, 0xf0, 0x53, 0x2b, 0xc4, 0x8d, 0x30, 0x78, 0x1c, 0x79, 0xc1, 0x2f, + 0x8a, 0xbe, 0x7d, 0x2c, 0xdc, 0xdc, 0x2a, 0xac, 0xc5, 0x48, 0x7d, 0x3c, 0xe5, 0x11, 0x88, 0x69, + 0xad, 0x14, 0x11, 0xec, 0x4d, 0x1d, 0x1c, 0xd8, 0xa1, 0x31, 0x3c, 0xb2, 0x74, 0x1f, 0xab, 0x72, + 0x99, 0x0f, 0x1d, 0x41, 0x34, 0xac, 0xcd, 0x35, 0xe0, 0x09, 0xfd, 0xc8, 0x0e, 0xc9, 0x3b, 0x95, + 0xd6, 0x0a, 0x04, 0xd8, 0xb5, 0x43, 0x14, 0x0b, 0x1c, 0x29, 0x66, 0x20, 0x65, 0x71, 0x85, 0x88, + 0xd6, 0x09, 0xb1, 0x47, 0x70, 0xca, 0xe8, 0x1e, 0x28, 0x09, 0x5a, 0xcc, 0xef, 0x2a, 0x91, 0x56, + 0x24, 0x52, 0xcc, 0xf5, 0x2e, 0x70, 0x66, 0x1d, 0xa7, 0x1e, 0xcf, 0xf3, 0x1a, 0x37, 0x87, 0x09, + 0xdc, 0xb0, 0x83, 0x63, 0xca, 0xf1, 0x0e, 0x54, 0x24, 0x3a, 0xcc, 0xef, 0x3a, 0x9f, 0x19, 0x31, + 0x59, 0xa2, 0x8e, 0xbe, 0x35, 0xf6, 0x42, 0xd1, 0xcc, 0x37, 0xa4, 0x3a, 0x6a, 0x04, 0x4f, 0xd6, + 0x51, 0xd0, 0x62, 0x9e, 0x37, 0xa4, 0x3a, 0x72, 0x52, 0xcc, 0xf5, 0x16, 0x94, 0x51, 0x8a, 0x84, + 0x96, 0xcb, 0x17, 0xff, 0x4d, 0xde, 0xb1, 0x02, 0x46, 0xab, 0xff, 0x16, 0x94, 0x79, 0xcf, 0x0b, + 0x71, 0xb9, 0xc5, 0x49, 0x04, 0x2c, 0x12, 0x10, 0xa2, 0x37, 0xc6, 0xb6, 0x4b, 0x2e, 0xa8, 0xb4, + 0x56, 0xe4, 0x90, 0x3d, 0xdb, 0x95, 0xd1, 0xc6, 0x29, 0x39, 0xa2, 0x66, 0x68, 0xe3, 0x94, 0x96, + 0xe4, 0xc4, 0x76, 0x1c, 0xbe, 0xf0, 0x6f, 0x8b, 0x25, 0x89, 0x90, 0x9e, 0xb0, 0xa9, 0x39, 0x1a, + 0xf3, 0xbe, 0x23, 0x66, 0x06, 0x02, 0x30, 0xeb, 0x19, 0xd2, 0x38, 0xad, 0xbe, 0x29, 0x23, 0x8d, + 0x53, 0x21, 0x98, 0xb0, 0xd2, 0xc4, 0x7b, 0x37, 0x16, 0x4c, 0x08, 0x42, 0x6e, 0x99, 0xc0, 0x38, + 0xad, 0xbe, 0x95, 0x24, 0x30, 0x4e, 0xc9, 0xd6, 0xb4, 0x0c, 0x93, 0xd7, 0xec, 0x1e, 0xcf, 0x1e, + 0x01, 0x54, 0xb1, 0x2d, 0x28, 0x07, 0x8f, 0xf5, 0x19, 0xfe, 0x6d, 0xce, 0x1e, 0x3c, 0xd6, 0x22, + 0x8a, 0x3b, 0x50, 0x89, 0xc7, 0x9e, 0xd3, 0xdc, 0xe7, 0x23, 0x6b, 0x8a, 0xb1, 0xa7, 0x43, 0xcf, + 0x9f, 0xa6, 0xe0, 0x6a, 0x97, 0x8e, 0x63, 0x69, 0xbb, 0xd8, 0xb3, 0x82, 0xc0, 0x38, 0xb4, 0x76, + 0x3c, 0x7f, 0x67, 0xfa, 0xf5, 0xd7, 0x67, 0xec, 0x1e, 0xac, 0xef, 0x1b, 0xbe, 0xe5, 0x86, 0xf1, + 0x71, 0x9d, 0x50, 0xcd, 0xe6, 0xc1, 0xec, 0x09, 0x28, 0x1c, 0x74, 0x10, 0x2b, 0xb9, 0xc2, 0xcc, + 0x4b, 0x7a, 0xd7, 0x17, 0xa8, 0xd4, 0x3f, 0x54, 0x21, 0xd3, 0xf1, 0x4c, 0x8b, 0xbd, 0x0f, 0x45, + 0x0a, 0x9e, 0x94, 0xcc, 0x0e, 0xe1, 0x96, 0x41, 0x34, 0xfd, 0x21, 0x7b, 0xa3, 0xe0, 0x8a, 0xaf, + 0xf3, 0xc3, 0x2d, 0x6f, 0x91, 0xe5, 0x44, 0x67, 0x95, 0xb8, 0x23, 0x96, 0x84, 0x77, 0x87, 0x9c, + 0x11, 0x1c, 0x83, 0xf2, 0x94, 0xfc, 0xda, 0xbe, 0xe5, 0x92, 0x7e, 0x9e, 0xd5, 0xe2, 0x34, 0xd9, + 0xab, 0xbe, 0x87, 0xbb, 0x37, 0x97, 0x3a, 0xd9, 0x25, 0xf6, 0x2a, 0xc7, 0x93, 0x18, 0x7a, 0x1f, + 0x8a, 0x5f, 0x7a, 0xb6, 0xcb, 0x2b, 0x9e, 0x5b, 0xa8, 0x38, 0xaa, 0xa4, 0xbc, 0xe2, 0x5f, 0x8a, + 0x2f, 0x76, 0x1b, 0xf2, 0x9e, 0xcb, 0xf3, 0xce, 0x2f, 0xe4, 0x9d, 0xf3, 0xdc, 0x36, 0x8f, 0xe5, + 0x59, 0xb3, 0x03, 0xdd, 0xb7, 0x0f, 0x8f, 0x42, 0x1d, 0x39, 0xc5, 0x19, 0x67, 0xc9, 0x0e, 0x34, + 0x84, 0x61, 0xb6, 0x68, 0x86, 0x8f, 0x6c, 0x07, 0x95, 0x04, 0xca, 0xac, 0xb8, 0x90, 0x19, 0x70, + 0x34, 0x65, 0xf8, 0x26, 0x14, 0x0e, 0x7d, 0x6f, 0x3a, 0x41, 0xbb, 0x1a, 0x16, 0x28, 0xf3, 0x84, + 0xdb, 0x3e, 0xc3, 0x2d, 0x93, 0x3e, 0x6d, 0xf7, 0x50, 0x27, 0x17, 0x44, 0x69, 0x2b, 0x7d, 0xaf, + 0xa0, 0x95, 0x23, 0x20, 0x39, 0x17, 0xde, 0x84, 0x82, 0x71, 0x78, 0xa8, 0x8b, 0x90, 0xa4, 0x85, + 0xbc, 0x8c, 0xc3, 0x43, 0x2a, 0xf2, 0x01, 0xac, 0x9d, 0xd8, 0xae, 0x1e, 0x4c, 0xac, 0x21, 0xa7, + 0x5d, 0x5b, 0xec, 0xca, 0x13, 0xdb, 0x45, 0xcb, 0x9b, 0xe8, 0x65, 0xd3, 0xbf, 0xf2, 0x5a, 0xd3, + 0x7f, 0x0b, 0xb2, 0x8e, 0x3d, 0xb6, 0x43, 0x11, 0xa4, 0x94, 0xb0, 0x0d, 0x08, 0xc1, 0x54, 0xc8, + 0x09, 0x9f, 0xb7, 0xb2, 0x40, 0x22, 0x30, 0xec, 0x03, 0x28, 0xf9, 0x86, 0x7b, 0xac, 0x8b, 0x03, + 0xe3, 0x2f, 0x64, 0x33, 0x5a, 0x33, 0xdc, 0x63, 0x71, 0x5e, 0x0c, 0x7e, 0xfc, 0x9d, 0xd4, 0xba, + 0x36, 0x5e, 0xa3, 0x75, 0x49, 0xaa, 0x3d, 0x7b, 0xb5, 0x6a, 0xff, 0x11, 0xe9, 0xd0, 0x96, 0x1b, + 0xea, 0x11, 0xc3, 0x85, 0xe5, 0x0c, 0x65, 0x4e, 0xd6, 0xe5, 0x6c, 0xd8, 0x00, 0x72, 0x63, 0xe9, + 0xe4, 0xf3, 0xda, 0x4c, 0x34, 0x20, 0xf6, 0x6f, 0x69, 0xe0, 0xcf, 0x7c, 0x5d, 0x35, 0x58, 0x9f, + 0xc5, 0x69, 0xf2, 0x80, 0xd7, 0x8b, 0xb2, 0x1f, 0x3d, 0x11, 0xd8, 0x19, 0x69, 0xed, 0x76, 0x22, + 0xda, 0xf3, 0x36, 0xac, 0xf1, 0x08, 0x0d, 0xde, 0x6f, 0x01, 0x6d, 0x8c, 0x45, 0xad, 0x4c, 0x40, + 0xde, 0x4f, 0x01, 0x7b, 0x00, 0x10, 0x69, 0x9c, 0xe1, 0x29, 0xed, 0x8c, 0x71, 0x6b, 0xf8, 0xf6, + 0x59, 0x0f, 0x4f, 0xb5, 0xa2, 0x19, 0x7d, 0xa2, 0xc0, 0x1f, 0xd8, 0xae, 0x89, 0x53, 0x2f, 0x34, + 0x0e, 0x83, 0x6a, 0x95, 0x56, 0x66, 0x49, 0xc0, 0xfa, 0xc6, 0x61, 0x80, 0x96, 0x9d, 0xc1, 0x15, + 0x4c, 0x5e, 0xef, 0x2b, 0xb2, 0xdb, 0x47, 0x52, 0x3d, 0xb5, 0x92, 0x21, 0xe9, 0xa1, 0x9f, 0x00, + 0x8b, 0x8e, 0xe4, 0x24, 0x43, 0xed, 0xea, 0xc2, 0x6c, 0x5c, 0x17, 0x67, 0x72, 0x71, 0x70, 0xf9, + 0x4d, 0x28, 0x05, 0xde, 0xd4, 0x1f, 0x5a, 0x7a, 0x10, 0x5a, 0x93, 0xea, 0x35, 0xaa, 0x10, 0x70, + 0x50, 0x2f, 0xb4, 0x26, 0xec, 0x13, 0x58, 0x4b, 0x2a, 0xea, 0xd7, 0x97, 0x9c, 0x6c, 0xd1, 0xb4, + 0xd0, 0xca, 0x43, 0x59, 0x75, 0xbf, 0xcd, 0x63, 0x88, 0x69, 0x57, 0x24, 0x46, 0x7e, 0x7a, 0x53, + 0x76, 0xbd, 0xb0, 0x1e, 0xc1, 0xb0, 0x03, 0x23, 0x03, 0x2e, 0x3c, 0xa5, 0x8d, 0x34, 0xee, 0xc0, + 0xd8, 0x64, 0x42, 0x85, 0x38, 0xb2, 0x9e, 0x70, 0x2e, 0x70, 0xb3, 0x84, 0x18, 0x6e, 0x26, 0xe6, + 0x42, 0x6c, 0xaf, 0x68, 0xe0, 0xcf, 0x6c, 0x97, 0x4f, 0xa0, 0xc2, 0x7d, 0xd3, 0xf1, 0xca, 0xdb, + 0x3a, 0x6f, 0xe5, 0x95, 0x89, 0x50, 0x40, 0x50, 0xf8, 0x70, 0x46, 0xbe, 0x08, 0x6f, 0x2d, 0xfa, + 0x00, 0x09, 0xdd, 0xa6, 0x95, 0xf8, 0x04, 0x2a, 0x13, 0x1f, 0x87, 0x2c, 0x6e, 0x8c, 0x2a, 0xf7, + 0xd3, 0xbe, 0x6f, 0xcd, 0xda, 0x53, 0x9e, 0x48, 0x29, 0xf6, 0x43, 0xd8, 0x90, 0x38, 0xa7, 0xc7, + 0xc4, 0x7c, 0x9b, 0x98, 0x37, 0xe7, 0x98, 0x0f, 0x8e, 0x91, 0xbd, 0x32, 0x49, 0xa4, 0x59, 0x6d, + 0xce, 0xd9, 0x82, 0x86, 0xcc, 0x1d, 0xe2, 0xbf, 0x7c, 0x8e, 0x07, 0x25, 0xe1, 0x85, 0x79, 0xc6, + 0x0f, 0x83, 0x5a, 0x41, 0xd3, 0x35, 0x69, 0x9f, 0x2f, 0x68, 0x3c, 0xc1, 0x1e, 0x43, 0x99, 0xab, + 0xd4, 0x14, 0xab, 0x19, 0x54, 0xef, 0xca, 0xde, 0x66, 0xd2, 0xab, 0x09, 0xa1, 0x95, 0x9c, 0xf8, + 0x3b, 0x60, 0x1f, 0xc3, 0x06, 0xef, 0x35, 0x59, 0x70, 0xbf, 0xb5, 0x38, 0x11, 0x89, 0x68, 0x67, + 0x26, 0xbd, 0x35, 0xb8, 0xe2, 0x4f, 0x5d, 0x52, 0xb3, 0x05, 0xe7, 0xc4, 0xf7, 0x06, 0x16, 0xe7, + 0xbf, 0x47, 0xfc, 0xa2, 0x39, 0x1a, 0x27, 0xe3, 0xbc, 0x34, 0x6e, 0x97, 0x7c, 0x19, 0xb4, 0x8f, + 0x7c, 0xe7, 0xe4, 0x39, 0x98, 0xda, 0x8e, 0xc9, 0xf3, 0x7c, 0xfb, 0xdb, 0xe4, 0xb9, 0x8d, 0x7c, + 0x94, 0x27, 0x83, 0xcc, 0x74, 0x6a, 0x9b, 0xa4, 0x6e, 0x94, 0x35, 0xfa, 0x66, 0x6f, 0x42, 0xc5, + 0xb7, 0x86, 0x53, 0x3f, 0xb0, 0x5f, 0x5a, 0x7a, 0x60, 0xbb, 0xc7, 0xd5, 0x77, 0xa8, 0x1f, 0xd7, + 0x62, 0x68, 0xcf, 0x76, 0x8f, 0x71, 0xf2, 0x5a, 0xa7, 0xa1, 0xe5, 0xbb, 0x3c, 0x7c, 0xfc, 0x5d, + 0x79, 0xf2, 0x36, 0x09, 0x81, 0xd2, 0x47, 0x03, 0x2b, 0xfe, 0x9e, 0x9b, 0x1c, 0x01, 0x9f, 0x1c, + 0x0f, 0xbe, 0xd1, 0xe4, 0xe8, 0xd1, 0xe4, 0xb8, 0x0b, 0x05, 0xdb, 0x0d, 0x2d, 0xff, 0xa5, 0xe1, + 0x54, 0x1f, 0x2e, 0xcc, 0xe0, 0x18, 0xc7, 0xee, 0x40, 0x3e, 0x70, 0x6c, 0x94, 0x42, 0xd5, 0xf7, + 0x17, 0xc8, 0x22, 0x14, 0xbb, 0x07, 0xc5, 0xf8, 0xe6, 0x53, 0xf5, 0x83, 0x05, 0xba, 0x19, 0x92, + 0xdd, 0x80, 0xcc, 0x09, 0x4e, 0xa8, 0x47, 0x8b, 0xa7, 0x03, 0x08, 0x47, 0xa5, 0x62, 0x84, 0xca, + 0x25, 0x29, 0x15, 0x8f, 0x17, 0x94, 0x8a, 0x1d, 0xdb, 0x71, 0xb8, 0x52, 0x31, 0x12, 0x5f, 0xb8, + 0x25, 0x13, 0x07, 0xb6, 0xe4, 0xc3, 0xc5, 0x2d, 0x19, 0x71, 0xcf, 0xe9, 0x8e, 0x58, 0x29, 0x20, + 0x97, 0x37, 0xf7, 0xdc, 0x7f, 0x24, 0xf7, 0x55, 0xd2, 0x17, 0xae, 0x41, 0x10, 0xa7, 0x51, 0x53, + 0x16, 0x0e, 0x7f, 0xdb, 0x3c, 0xad, 0x7e, 0xcc, 0x2f, 0x1f, 0x70, 0x48, 0xcb, 0x3c, 0x65, 0xef, + 0xc3, 0x5a, 0x14, 0xdd, 0x83, 0xc5, 0x05, 0xd5, 0x4f, 0x16, 0x6a, 0x90, 0x24, 0x60, 0x0d, 0x28, + 0x8f, 0x50, 0xc9, 0x1c, 0x73, 0x9d, 0xb3, 0xfa, 0x84, 0x2a, 0xb2, 0x15, 0x09, 0x9d, 0xf3, 0x74, + 0x52, 0x2d, 0xc1, 0xc5, 0x1e, 0x00, 0xb3, 0x47, 0x7c, 0x3c, 0x77, 0x7c, 0x6f, 0xcc, 0xf5, 0xca, + 0xea, 0xa7, 0x34, 0xbb, 0x96, 0x60, 0xe8, 0xfc, 0xcf, 0x72, 0x4d, 0x7d, 0x1c, 0x08, 0xe5, 0xe5, + 0x7b, 0x54, 0x4f, 0x21, 0x52, 0xe3, 0x1b, 0x92, 0x62, 0xcb, 0x2b, 0x21, 0xed, 0x5e, 0xc0, 0x75, + 0x99, 0x4f, 0x01, 0xa7, 0xeb, 0xcb, 0x19, 0xeb, 0xaf, 0xbc, 0x92, 0x15, 0x69, 0x23, 0xd6, 0x27, + 0x50, 0x31, 0x2d, 0x73, 0x3a, 0x21, 0x3d, 0x8e, 0xa6, 0xe8, 0xf7, 0x65, 0xe1, 0x27, 0x7b, 0x2e, + 0xb5, 0xb2, 0x29, 0xfb, 0x31, 0x3f, 0x81, 0xf5, 0xc8, 0xc5, 0x18, 0x0a, 0x6f, 0xe4, 0x0f, 0xe4, + 0x62, 0x63, 0x0f, 0xa2, 0xb6, 0x36, 0x8d, 0x3e, 0xa9, 0xc8, 0xc7, 0xb0, 0x46, 0x7b, 0x7b, 0xe0, + 0x1a, 0x93, 0xe0, 0xc8, 0x0b, 0xab, 0xbf, 0x2a, 0xab, 0x29, 0x3d, 0x01, 0xd5, 0xca, 0x48, 0x14, + 0xa5, 0x70, 0x4b, 0x9a, 0xad, 0xd3, 0x61, 0x68, 0x55, 0x7f, 0xc8, 0xb7, 0xa4, 0x18, 0x58, 0x0f, + 0x2d, 0xf6, 0x18, 0xc0, 0x98, 0x4c, 0x9c, 0x33, 0x3e, 0x35, 0x7f, 0x44, 0x53, 0x73, 0x53, 0x9a, + 0x9a, 0x35, 0x44, 0xd2, 0xdc, 0x2c, 0x1a, 0xd1, 0x27, 0x7b, 0x04, 0xe5, 0x89, 0x17, 0x84, 0xba, + 0x39, 0x76, 0xa8, 0xfd, 0x35, 0x79, 0x6d, 0xef, 0x7b, 0x41, 0xd8, 0x18, 0x3b, 0xb4, 0x31, 0x4d, + 0xe2, 0x6f, 0xd6, 0x86, 0x0b, 0x09, 0xb9, 0x6d, 0xd0, 0x69, 0x7b, 0x75, 0x9b, 0x4a, 0xbc, 0x2e, + 0x95, 0x28, 0xc9, 0x6f, 0x11, 0x6a, 0xb6, 0xe1, 0xcd, 0x83, 0xc8, 0x20, 0xa2, 0x31, 0x88, 0xe3, + 0x2d, 0xeb, 0x5c, 0x61, 0x21, 0x68, 0x14, 0x70, 0xf9, 0x04, 0xd6, 0x67, 0x54, 0xd8, 0xc0, 0xa0, + 0xda, 0x90, 0x67, 0xb2, 0x14, 0x15, 0xbd, 0x16, 0x31, 0x22, 0x2c, 0xa0, 0xbe, 0xf3, 0x1c, 0x67, + 0x3a, 0x11, 0xa2, 0xb4, 0xda, 0x14, 0x7d, 0x47, 0x40, 0x2e, 0x25, 0x25, 0x9b, 0xd1, 0x1a, 0x57, + 0x77, 0x64, 0x9b, 0xd1, 0x1a, 0xab, 0xff, 0x2c, 0x0b, 0x85, 0xc8, 0xca, 0x61, 0x25, 0xc8, 0x1f, + 0x74, 0x9e, 0x75, 0xba, 0x2f, 0x3a, 0xfc, 0x76, 0x57, 0xad, 0xd7, 0x6b, 0x6a, 0x7d, 0xc5, 0x64, + 0x15, 0x00, 0xba, 0xbf, 0xa1, 0xf7, 0xea, 0xb5, 0x0e, 0xbf, 0xed, 0x45, 0xb7, 0x46, 0x78, 0x7a, + 0x95, 0x6d, 0xc0, 0xda, 0xce, 0x41, 0x87, 0x62, 0xe2, 0x38, 0x28, 0x8d, 0xa0, 0xe6, 0xe7, 0xfc, + 0x24, 0x90, 0x83, 0x32, 0x08, 0xda, 0xab, 0xf5, 0x9b, 0x5a, 0x2b, 0x02, 0x65, 0x29, 0xbc, 0xae, + 0x7b, 0xa0, 0xd5, 0x45, 0x4e, 0x39, 0x76, 0x11, 0x36, 0x62, 0xb6, 0x28, 0x4b, 0x25, 0x8f, 0x35, + 0xdb, 0xd7, 0xba, 0x9f, 0x35, 0xeb, 0x7d, 0x05, 0xe8, 0x58, 0xf1, 0xe9, 0x53, 0xa5, 0xc4, 0xca, + 0x50, 0x68, 0xb4, 0x7a, 0xfd, 0x56, 0xa7, 0xde, 0x57, 0xca, 0x58, 0xe1, 0x9d, 0x56, 0xbb, 0xdf, + 0xd4, 0x94, 0x35, 0x56, 0x80, 0xcc, 0x67, 0xdd, 0x56, 0x47, 0xa9, 0xd0, 0x3d, 0x96, 0xda, 0xde, + 0x7e, 0xbb, 0xa9, 0xac, 0x23, 0xb4, 0xd7, 0xd5, 0xfa, 0x8a, 0x82, 0xd0, 0x17, 0xad, 0x4e, 0xa3, + 0xfb, 0x42, 0xd9, 0x60, 0x45, 0xc8, 0x1e, 0x74, 0xb0, 0x18, 0xc6, 0xd6, 0xa0, 0x48, 0x9f, 0x7a, + 0xad, 0xdd, 0x56, 0x2e, 0x48, 0x67, 0x91, 0x9b, 0x88, 0xa2, 0x93, 0xcd, 0x1e, 0xd6, 0xe1, 0x22, + 0xb6, 0x25, 0x4e, 0x12, 0xf5, 0x25, 0xcc, 0x67, 0xaf, 0xd5, 0x39, 0xe8, 0x29, 0x97, 0x91, 0x98, + 0x3e, 0x09, 0x53, 0xc5, 0x7c, 0x5a, 0x1d, 0xea, 0xca, 0x1b, 0xf8, 0xdd, 0x68, 0xb6, 0x9b, 0xfd, + 0xa6, 0x72, 0x13, 0x5b, 0xa5, 0x35, 0xf7, 0xdb, 0xb5, 0x7a, 0x53, 0xd9, 0xc2, 0x44, 0xbb, 0x5b, + 0x7f, 0xa6, 0x77, 0xf7, 0x95, 0x5b, 0x6c, 0x13, 0x94, 0x6e, 0x47, 0x6f, 0x1c, 0xec, 0xb7, 0x5b, + 0xf5, 0x5a, 0xbf, 0xa9, 0x3f, 0x6b, 0x7e, 0xa1, 0xa8, 0xd8, 0xed, 0xfb, 0x5a, 0x53, 0x17, 0x79, + 0xdd, 0x66, 0x0a, 0x94, 0x77, 0x0e, 0x7e, 0xf2, 0x93, 0x2f, 0x74, 0xd1, 0xee, 0x37, 0xb1, 0x5a, + 0x33, 0x0a, 0xfd, 0xe0, 0x99, 0x72, 0x77, 0x0e, 0xd4, 0x7b, 0xa6, 0xbc, 0x85, 0xfd, 0x16, 0x0d, + 0x84, 0x72, 0x0f, 0x09, 0xb4, 0x66, 0xfd, 0x40, 0xeb, 0xb5, 0x9e, 0x37, 0xf5, 0x7a, 0xbf, 0xa9, + 0xbc, 0x4d, 0x1d, 0xd5, 0xea, 0x3c, 0x53, 0xee, 0x63, 0x4b, 0xf0, 0x8b, 0x0f, 0xcf, 0x3b, 0x8c, + 0x41, 0x65, 0x46, 0x4b, 0xb0, 0x77, 0x91, 0x64, 0x5b, 0xeb, 0xd6, 0x1a, 0xf5, 0x5a, 0xaf, 0xaf, + 0xbc, 0x87, 0xdd, 0xd0, 0xdb, 0x6f, 0xb7, 0xfa, 0xca, 0x03, 0x6c, 0xeb, 0xd3, 0x5a, 0x7f, 0xb7, + 0xa9, 0x29, 0x0f, 0x71, 0xa4, 0xfb, 0xad, 0xbd, 0xa6, 0x2e, 0xba, 0xfd, 0x11, 0x96, 0xb1, 0xd3, + 0x6a, 0xb7, 0x95, 0xc7, 0x74, 0xdc, 0x56, 0xd3, 0xfa, 0x2d, 0x1a, 0xeb, 0x0f, 0x31, 0x83, 0xda, + 0xfe, 0x7e, 0xfb, 0x0b, 0xe5, 0x23, 0x6c, 0xe0, 0xde, 0x41, 0xbb, 0xdf, 0xd2, 0x0f, 0xf6, 0x1b, + 0xb5, 0x7e, 0x53, 0xf9, 0x98, 0x26, 0x42, 0xb7, 0xd7, 0x6f, 0xec, 0xb5, 0x95, 0x4f, 0x28, 0x4f, + 0x9a, 0x86, 0xf5, 0x76, 0xb7, 0xd3, 0x54, 0x9e, 0xa8, 0xbf, 0x01, 0x85, 0xc8, 0xf2, 0xc5, 0x6c, + 0x5a, 0x9d, 0x4e, 0x53, 0x53, 0x56, 0xb0, 0xa8, 0x76, 0x73, 0xa7, 0xaf, 0xa4, 0xe8, 0xec, 0xb1, + 0xf5, 0x74, 0xb7, 0xaf, 0xac, 0xe2, 0x67, 0xf7, 0x00, 0x7b, 0x2d, 0x4d, 0xcd, 0x6d, 0xee, 0xb5, + 0x94, 0x0c, 0x7e, 0xd5, 0x3a, 0xfd, 0x96, 0x92, 0xa5, 0x79, 0xd3, 0xea, 0x3c, 0x6d, 0x37, 0x95, + 0x1c, 0x42, 0xf7, 0x6a, 0xda, 0x33, 0x25, 0xcf, 0x33, 0x6d, 0x34, 0x3f, 0x57, 0x0a, 0x2c, 0x07, + 0xab, 0xed, 0x47, 0x4a, 0x11, 0x41, 0x8d, 0x66, 0xe3, 0x60, 0x5f, 0x01, 0xf5, 0x1e, 0xe4, 0x6b, + 0x87, 0x87, 0x7b, 0x9e, 0x49, 0xc7, 0x9d, 0x3b, 0x07, 0xed, 0x36, 0x5f, 0x47, 0xdb, 0xdd, 0x7e, + 0xbf, 0xbb, 0xa7, 0xa4, 0x70, 0xe6, 0xf6, 0xbb, 0xfb, 0xca, 0xaa, 0xda, 0x82, 0x42, 0xb4, 0x9b, + 0x4a, 0x77, 0xb3, 0x0a, 0x90, 0xd9, 0xd7, 0x9a, 0xcf, 0xf9, 0x81, 0x79, 0xa7, 0xf9, 0x39, 0x56, + 0x13, 0xbf, 0x30, 0xa3, 0x34, 0x16, 0xc4, 0x2f, 0x51, 0xd1, 0xe5, 0xac, 0x76, 0xab, 0xd3, 0xac, + 0x69, 0x4a, 0x56, 0xfd, 0x28, 0x71, 0x16, 0x29, 0x04, 0x0f, 0x16, 0x5f, 0x6b, 0x89, 0xe2, 0x5b, + 0x4f, 0x3b, 0x5d, 0xad, 0xc9, 0x6f, 0x7b, 0x89, 0x8e, 0x5c, 0x55, 0xdf, 0x81, 0x62, 0x2c, 0x34, + 0x71, 0x62, 0xd5, 0xb5, 0x6e, 0xaf, 0xc7, 0xfb, 0x7d, 0x05, 0xd3, 0xd4, 0x37, 0x3c, 0x9d, 0x52, + 0x7b, 0xb0, 0x11, 0xc9, 0x6b, 0x0a, 0x84, 0x27, 0xf3, 0x66, 0x13, 0xb2, 0x6d, 0xeb, 0xa5, 0xe5, + 0x44, 0x11, 0xdd, 0x94, 0x40, 0x68, 0x77, 0xf0, 0x65, 0x2b, 0xbe, 0x90, 0x4b, 0x09, 0x54, 0xd0, + 0x3a, 0xd2, 0x9d, 0x60, 0xba, 0x49, 0xf0, 0xbb, 0x29, 0x28, 0xc4, 0xbb, 0xc0, 0x1d, 0x58, 0xed, + 0xf7, 0xc4, 0x59, 0xc6, 0xe6, 0x83, 0xd9, 0x13, 0x08, 0xfd, 0xe8, 0x4b, 0x5b, 0xed, 0xf7, 0xd8, + 0xbb, 0x90, 0xe3, 0x57, 0x18, 0xc5, 0x21, 0xd4, 0x66, 0x72, 0x67, 0xe9, 0x13, 0x4e, 0x13, 0x34, + 0xec, 0x23, 0x28, 0xc6, 0xb5, 0x15, 0x5e, 0x99, 0xcb, 0x49, 0x86, 0x18, 0xad, 0xcd, 0x28, 0xd5, + 0x36, 0x54, 0x92, 0x19, 0xb2, 0x1b, 0x00, 0x3c, 0x4b, 0xc9, 0x1b, 0x25, 0x41, 0xd8, 0x55, 0x88, + 0x6e, 0x56, 0x36, 0xa8, 0x62, 0x6b, 0xf1, 0x4d, 0xcb, 0x86, 0xfa, 0x57, 0xd3, 0x00, 0x33, 0x3d, + 0x12, 0x3b, 0x22, 0xf6, 0x35, 0x65, 0xc5, 0x31, 0xf6, 0x35, 0x28, 0x3a, 0x9e, 0x61, 0xca, 0x2f, + 0x20, 0x14, 0x10, 0x40, 0x43, 0x23, 0xdf, 0x32, 0x2a, 0xf2, 0x18, 0x12, 0x76, 0x09, 0x72, 0x23, + 0xcf, 0x1f, 0x1b, 0xa1, 0x08, 0xdf, 0x17, 0x29, 0xdc, 0x0e, 0xf8, 0xd1, 0x2a, 0x6a, 0xd3, 0x2e, + 0x45, 0xf0, 0xe3, 0x18, 0x94, 0x05, 0xb0, 0x8d, 0x30, 0x34, 0x2e, 0x2d, 0x77, 0xe8, 0x78, 0x81, + 0x65, 0xa2, 0xdd, 0x95, 0x23, 0x95, 0x19, 0x22, 0xd0, 0xf6, 0x19, 0x6f, 0xad, 0x3f, 0xb6, 0x5d, + 0x23, 0x14, 0x07, 0x0e, 0xd4, 0xda, 0x08, 0x82, 0xd5, 0xfd, 0x32, 0xf0, 0x84, 0xeb, 0x89, 0x9f, + 0xd2, 0x16, 0x10, 0x40, 0xd5, 0x7d, 0x03, 0xc0, 0x0a, 0x86, 0xc6, 0x84, 0x67, 0x5e, 0xa4, 0xcc, + 0x8b, 0x02, 0xb2, 0x7d, 0xc6, 0xda, 0x50, 0xe9, 0x0f, 0x70, 0xfb, 0xf2, 0x1a, 0x46, 0x68, 0xd4, + 0x3d, 0x47, 0x38, 0x85, 0xee, 0xcc, 0x2b, 0xdc, 0x0f, 0x92, 0x64, 0xfc, 0x38, 0x79, 0x8e, 0xf7, + 0x6a, 0x0d, 0x2e, 0x2c, 0x21, 0xfb, 0x56, 0x71, 0x75, 0x4e, 0x34, 0x3a, 0xb5, 0x30, 0xa4, 0x1b, + 0x33, 0xf1, 0x4e, 0x9d, 0x8a, 0xe2, 0xfe, 0xf9, 0x26, 0x7d, 0x8d, 0x22, 0x67, 0x44, 0x48, 0xa6, + 0x18, 0xa4, 0x38, 0xd4, 0xf2, 0x2e, 0xac, 0x23, 0x72, 0x64, 0x5b, 0x8e, 0x29, 0x48, 0xf8, 0x85, + 0x8f, 0xb5, 0xa1, 0xe7, 0xec, 0x20, 0x94, 0xe8, 0xd4, 0xbf, 0x9c, 0x05, 0x98, 0xd9, 0x68, 0x89, + 0x13, 0xed, 0x54, 0xf2, 0x44, 0xfb, 0x11, 0x5c, 0x12, 0xd7, 0x81, 0xe2, 0x63, 0x61, 0xdb, 0xd5, + 0x07, 0x46, 0x14, 0x3c, 0xc0, 0x04, 0x96, 0x9f, 0x0c, 0xb7, 0xdc, 0x6d, 0x03, 0x35, 0xbe, 0x75, + 0x99, 0x27, 0x3c, 0x9b, 0x24, 0x83, 0x1f, 0x64, 0x3d, 0x62, 0xc6, 0xde, 0x3f, 0x9b, 0xb0, 0xf7, + 0xe1, 0xa2, 0x6f, 0x8d, 0x7c, 0x2b, 0x38, 0xd2, 0xc3, 0x40, 0x2e, 0x8c, 0xc7, 0xe8, 0x6d, 0x08, + 0x64, 0x3f, 0x88, 0xcb, 0x7a, 0x1f, 0x2e, 0x0a, 0xeb, 0x6d, 0xae, 0x7a, 0xfc, 0xde, 0xf8, 0x06, + 0x47, 0xca, 0xb5, 0x7b, 0x03, 0x40, 0x18, 0xae, 0xd1, 0x3b, 0x22, 0x05, 0xad, 0xc8, 0x8d, 0x54, + 0x71, 0xbb, 0x96, 0xac, 0x4f, 0x71, 0xdc, 0xc7, 0x13, 0x4c, 0x85, 0x0c, 0x8a, 0x53, 0x3a, 0x9a, + 0xaa, 0x3c, 0xaa, 0x3c, 0xa0, 0x77, 0x52, 0xe8, 0xb6, 0xb3, 0x67, 0x5a, 0x1a, 0xe1, 0xd8, 0x7b, + 0x70, 0x41, 0x6e, 0x76, 0x74, 0xd5, 0xbf, 0x44, 0x15, 0x51, 0x66, 0x0d, 0xd5, 0xf8, 0xa5, 0xff, + 0x77, 0x80, 0x49, 0x35, 0x8f, 0xa8, 0xcb, 0x44, 0xbd, 0x1e, 0x57, 0x5b, 0x10, 0xbf, 0x05, 0x54, + 0x45, 0x7e, 0x12, 0xb0, 0xb6, 0x68, 0xaa, 0x21, 0x92, 0x8e, 0x04, 0xde, 0x87, 0x8b, 0xb3, 0xd6, + 0xe9, 0x46, 0xa8, 0x87, 0x47, 0x96, 0x6e, 0xb9, 0x26, 0xdd, 0xe1, 0x2a, 0x68, 0x1b, 0x71, 0x43, + 0x6b, 0x61, 0xff, 0xc8, 0x42, 0x63, 0x4b, 0x72, 0xd1, 0xad, 0xbf, 0xda, 0x45, 0xf7, 0x31, 0x54, + 0x13, 0xc7, 0xdc, 0x72, 0x77, 0xf3, 0x3b, 0x90, 0x9b, 0xf2, 0xe1, 0x76, 0xdc, 0xe3, 0xf7, 0x61, + 0xe3, 0xc8, 0x08, 0xf4, 0x04, 0x2f, 0x79, 0x0e, 0x0b, 0xda, 0xfa, 0x91, 0x11, 0xec, 0x4b, 0x3c, + 0xea, 0xef, 0xa7, 0xa0, 0x92, 0xb4, 0x5a, 0xf9, 0x1d, 0x18, 0x67, 0x3a, 0x76, 0x79, 0x44, 0x4b, + 0x56, 0x8b, 0x92, 0xb8, 0x16, 0x26, 0xc7, 0x3a, 0x4f, 0x45, 0x6b, 0x61, 0x72, 0x5c, 0xa7, 0x34, + 0x7b, 0x1b, 0xf2, 0x93, 0x63, 0x2e, 0x1c, 0xce, 0x9b, 0x7d, 0xb9, 0x09, 0x0f, 0x25, 0x7e, 0x1b, + 0xf2, 0x53, 0x41, 0x9a, 0x39, 0x8f, 0x74, 0x4a, 0xa4, 0xea, 0x3f, 0x5f, 0x85, 0xb2, 0xec, 0xaf, + 0xf9, 0x26, 0xa7, 0xdf, 0xdf, 0x2a, 0x6a, 0x61, 0x8b, 0x22, 0x0b, 0x75, 0x8a, 0x5b, 0xc6, 0x7e, + 0xe2, 0x47, 0xdf, 0x70, 0x64, 0x04, 0xb5, 0x69, 0xe8, 0xd5, 0x3d, 0x7e, 0xe2, 0xe6, 0x39, 0x51, + 0x3c, 0x33, 0x5f, 0x19, 0x28, 0x13, 0x44, 0x28, 0xf3, 0xfb, 0xe2, 0xba, 0x04, 0x5d, 0x90, 0xa2, + 0x88, 0x99, 0xec, 0xc2, 0x7c, 0x29, 0x47, 0xf7, 0xa3, 0x28, 0x18, 0xe6, 0x11, 0xac, 0xcf, 0x82, + 0xd3, 0xa3, 0x20, 0x9b, 0x79, 0x96, 0xb5, 0x38, 0x32, 0x5d, 0xdc, 0x88, 0x5e, 0xb3, 0x03, 0xdd, + 0x73, 0xcc, 0xe8, 0x16, 0x4c, 0x3e, 0x72, 0xd0, 0x77, 0x1d, 0x53, 0xdc, 0x91, 0xe3, 0x34, 0xae, + 0x75, 0x12, 0xd1, 0xc4, 0x4e, 0xfc, 0x8e, 0x75, 0x22, 0x6e, 0xc3, 0xfc, 0x8b, 0x14, 0x6c, 0x2c, + 0xf8, 0x57, 0x50, 0x72, 0xce, 0xde, 0xe7, 0xc1, 0x4f, 0x76, 0x0b, 0xca, 0x63, 0x23, 0x1c, 0x1e, + 0xe9, 0x13, 0xdf, 0x1a, 0xd9, 0xa7, 0xd1, 0x23, 0x43, 0x04, 0xdb, 0x27, 0x10, 0x05, 0x1e, 0x4d, + 0x26, 0xe4, 0x55, 0x1a, 0xdb, 0xa1, 0x10, 0x7c, 0x40, 0x20, 0xee, 0x86, 0x8b, 0x82, 0x12, 0x33, + 0xe7, 0x04, 0x25, 0x5e, 0x85, 0xa2, 0xeb, 0x85, 0xba, 0xe7, 0xea, 0x93, 0x63, 0x71, 0x85, 0x3e, + 0xef, 0x7a, 0x61, 0xd7, 0xdd, 0x3f, 0x66, 0xf7, 0x40, 0x99, 0x06, 0x96, 0x3e, 0x70, 0x3c, 0x6f, + 0x1c, 0x19, 0x39, 0x5c, 0x76, 0x54, 0xa6, 0x81, 0xb5, 0x8d, 0x60, 0x5e, 0x7f, 0xf5, 0x3a, 0xe4, + 0x5a, 0xb1, 0x37, 0x28, 0x8e, 0xbf, 0x49, 0x8b, 0xf7, 0x38, 0x3c, 0x28, 0xd6, 0xe9, 0x6d, 0x8f, + 0x3d, 0x63, 0xc2, 0xee, 0x43, 0x7a, 0x6c, 0x4c, 0x44, 0x7c, 0x4e, 0x35, 0x3e, 0x2b, 0xe2, 0xd8, + 0x07, 0x7b, 0xc6, 0x84, 0x6f, 0x37, 0x48, 0x74, 0xf5, 0x63, 0x28, 0x44, 0x80, 0x6f, 0xb5, 0xb1, + 0xfc, 0xeb, 0x55, 0x28, 0x36, 0x64, 0x1f, 0x33, 0x1a, 0xc6, 0xa1, 0x3f, 0x75, 0x51, 0x4b, 0x8b, + 0x5e, 0x29, 0x18, 0x1a, 0x6e, 0x5f, 0x80, 0xa2, 0x09, 0xbd, 0xfa, 0x8a, 0x09, 0x7d, 0x1d, 0xc0, + 0x27, 0x67, 0x08, 0xf9, 0x43, 0xd2, 0x71, 0x2c, 0x68, 0xcb, 0x6c, 0x99, 0xa7, 0xcb, 0x83, 0x3d, + 0x32, 0xdf, 0x3c, 0xd8, 0x23, 0xbb, 0x34, 0xd8, 0xe3, 0xee, 0x6c, 0x53, 0xc1, 0x89, 0x8d, 0x05, + 0x17, 0xf9, 0xd6, 0x36, 0x89, 0xaf, 0x84, 0x60, 0xe9, 0xdf, 0x83, 0x4a, 0xd4, 0x3a, 0x91, 0x1f, + 0x24, 0x6e, 0xa1, 0x08, 0x1c, 0x77, 0x4a, 0xaf, 0x85, 0x72, 0x32, 0xb9, 0x50, 0x4b, 0xaf, 0x89, + 0x82, 0xf9, 0x6b, 0x29, 0x60, 0xc2, 0x78, 0xdf, 0x99, 0x3a, 0x4e, 0xdf, 0x3a, 0x25, 0x79, 0x70, + 0x1f, 0x36, 0x84, 0xcf, 0x5c, 0x8a, 0x21, 0x13, 0x07, 0x87, 0x1c, 0x31, 0x3b, 0x38, 0x5c, 0x76, + 0x51, 0x70, 0x75, 0xe9, 0x45, 0xc1, 0xe5, 0x17, 0x10, 0x6f, 0x42, 0x49, 0xbe, 0x66, 0xc7, 0x95, + 0x30, 0x30, 0x66, 0x37, 0xec, 0xfe, 0xed, 0x2a, 0xc0, 0xcc, 0xc1, 0xf0, 0xcb, 0x8e, 0xd4, 0x59, + 0x32, 0x24, 0xe9, 0x65, 0x43, 0x72, 0x0f, 0x14, 0x99, 0x4e, 0xba, 0xef, 0x59, 0x99, 0x11, 0x46, + 0xca, 0x8d, 0x1d, 0xc8, 0x77, 0xf2, 0x28, 0x2c, 0x4f, 0x44, 0x23, 0x88, 0x98, 0x3d, 0x92, 0xbc, + 0x62, 0xed, 0x15, 0xec, 0x80, 0x4b, 0x62, 0xf6, 0x29, 0x5c, 0x89, 0x39, 0xf5, 0x13, 0x3b, 0x3c, + 0xf2, 0xa6, 0xa1, 0x58, 0xa7, 0x81, 0x90, 0x4d, 0x97, 0xa2, 0x9c, 0x5e, 0x70, 0x34, 0x5f, 0xaf, + 0x01, 0xaa, 0xe7, 0xa3, 0xa9, 0xe3, 0xe8, 0xa1, 0x75, 0x1a, 0x8a, 0x87, 0x0f, 0xaa, 0x09, 0xdf, + 0x8c, 0x34, 0xbc, 0x5a, 0x61, 0x24, 0x12, 0xea, 0xdf, 0x4f, 0x43, 0xf6, 0xc7, 0x53, 0xcb, 0x3f, + 0x63, 0x1f, 0x43, 0x31, 0x08, 0xc7, 0xa1, 0x7c, 0x78, 0x7b, 0x85, 0x67, 0x40, 0x78, 0x3a, 0x7b, + 0xb5, 0xc6, 0x96, 0x1b, 0x72, 0xa7, 0x25, 0xd2, 0xd2, 0xb6, 0xb3, 0x09, 0xd9, 0x20, 0xb4, 0x26, + 0x81, 0x88, 0xb1, 0xe3, 0x09, 0xb6, 0x05, 0x59, 0xd7, 0x33, 0xad, 0x20, 0x19, 0x49, 0xd7, 0x41, + 0x3d, 0x83, 0x23, 0x98, 0x0a, 0xb9, 0x78, 0xc4, 0x17, 0x0e, 0x50, 0x39, 0x86, 0xee, 0x46, 0x58, + 0x86, 0x69, 0xbb, 0x87, 0xd1, 0xfd, 0xd9, 0x38, 0x8d, 0x1b, 0x2a, 0xa9, 0xf5, 0xc6, 0x61, 0x74, + 0x99, 0x5d, 0x24, 0xd9, 0x16, 0x94, 0xf0, 0xf3, 0x85, 0x6f, 0x87, 0x56, 0xef, 0x71, 0x24, 0xd3, + 0x25, 0x10, 0x2a, 0xe5, 0xa6, 0x15, 0x5a, 0xc3, 0xb0, 0xf7, 0x95, 0x08, 0x8f, 0xa3, 0x28, 0xaa, + 0x08, 0xc2, 0xbe, 0x07, 0x6c, 0x60, 0x0c, 0x8f, 0x0f, 0x7d, 0x6f, 0xea, 0x9a, 0xfa, 0x57, 0x53, + 0xcb, 0xb7, 0xad, 0x28, 0x1c, 0xae, 0x24, 0x75, 0x8a, 0xb6, 0x31, 0x23, 0xfb, 0x31, 0xa7, 0x52, + 0x4d, 0x58, 0x4b, 0x74, 0xd5, 0x82, 0x1f, 0xa8, 0xd7, 0x6c, 0x37, 0xeb, 0x7d, 0x6e, 0x40, 0x0a, + 0xe7, 0xc3, 0xaa, 0xec, 0xbc, 0x48, 0x4b, 0x5e, 0x8d, 0x8c, 0x64, 0x65, 0x66, 0xc9, 0x27, 0xd2, + 0xd4, 0x9e, 0x36, 0x95, 0x9c, 0xfa, 0xd7, 0x57, 0x61, 0xa3, 0xef, 0x1b, 0x6e, 0x60, 0x70, 0x9d, + 0xc3, 0x0d, 0x7d, 0xcf, 0x61, 0xdf, 0x83, 0x42, 0x38, 0x74, 0xe4, 0x21, 0xbc, 0x19, 0x09, 0x8c, + 0x39, 0xd2, 0x07, 0xfd, 0x21, 0xf7, 0x3e, 0xe7, 0x43, 0xfe, 0xc1, 0xde, 0x83, 0xec, 0xc0, 0x3a, + 0xb4, 0x5d, 0x21, 0x33, 0x2f, 0xce, 0x33, 0x6e, 0x23, 0x72, 0x77, 0x45, 0xe3, 0x54, 0xec, 0x7d, + 0xc8, 0x0d, 0xbd, 0x71, 0xb4, 0x45, 0xcd, 0xee, 0x61, 0x49, 0x05, 0x21, 0x76, 0x77, 0x45, 0x13, + 0x74, 0xec, 0x63, 0x28, 0xf8, 0x9e, 0xe3, 0x60, 0x8f, 0x89, 0xcd, 0xab, 0x3a, 0xcf, 0xa3, 0x09, + 0xfc, 0xee, 0x8a, 0x16, 0xd3, 0xaa, 0x0f, 0x20, 0x2f, 0x2a, 0x8b, 0x1d, 0xb0, 0xdd, 0x7c, 0xda, + 0x12, 0x1d, 0x59, 0xef, 0xee, 0xed, 0xb5, 0xfa, 0xfc, 0x92, 0xa9, 0xd6, 0x6d, 0xb7, 0xb7, 0x6b, + 0xf5, 0x67, 0xca, 0xea, 0x76, 0x01, 0x72, 0xdc, 0xcf, 0xa8, 0xfe, 0x66, 0x0a, 0xd6, 0xe7, 0x1a, + 0xc0, 0x9e, 0x40, 0x66, 0x8c, 0x3a, 0x30, 0xef, 0x9e, 0x3b, 0x4b, 0x5b, 0x29, 0xa5, 0xb9, 0x66, + 0x8c, 0x1c, 0xea, 0xa7, 0x50, 0x49, 0xc2, 0x25, 0x5f, 0xc3, 0x1a, 0x14, 0xb5, 0x66, 0xad, 0xa1, + 0x77, 0x3b, 0x68, 0xe1, 0xa3, 0xc5, 0x4f, 0xc9, 0x17, 0x5a, 0x8b, 0xdc, 0x03, 0xbf, 0x06, 0xca, + 0x7c, 0xc7, 0xb0, 0xa7, 0x68, 0xe5, 0x8c, 0x27, 0x8e, 0x45, 0xca, 0xa4, 0x34, 0x64, 0x37, 0x96, + 0xf4, 0xa4, 0x20, 0xa3, 0x11, 0xab, 0x0c, 0x13, 0x69, 0xf5, 0xd7, 0x81, 0x2d, 0xf6, 0xe0, 0x2f, + 0x2f, 0xfb, 0xff, 0x99, 0x82, 0xcc, 0xbe, 0x63, 0xb8, 0xec, 0x36, 0x64, 0xe9, 0x71, 0x14, 0x21, + 0x79, 0xe5, 0x75, 0x80, 0xd3, 0x82, 0x70, 0xec, 0x1d, 0x48, 0x87, 0xc3, 0xe8, 0x6e, 0xeb, 0xe5, + 0x73, 0x26, 0xdf, 0xee, 0x8a, 0x86, 0x54, 0xec, 0x1e, 0xa4, 0x4d, 0x33, 0x8a, 0x29, 0x17, 0xde, + 0x07, 0xb4, 0x3d, 0x1b, 0xd6, 0xc8, 0x76, 0x6d, 0xf1, 0x98, 0x0b, 0x92, 0xb0, 0x37, 0x21, 0x6d, + 0x0e, 0x9d, 0xe4, 0x05, 0x01, 0x6e, 0xa5, 0xc6, 0x19, 0x9a, 0x43, 0x07, 0x75, 0xb5, 0xd0, 0x3f, + 0xd3, 0xfd, 0xa9, 0x4b, 0x41, 0x72, 0x81, 0xb0, 0x9f, 0x4a, 0xa8, 0x7f, 0x4c, 0x29, 0xd2, 0x2e, + 0x10, 0x97, 0xe4, 0x26, 0xbe, 0x35, 0x31, 0xfc, 0xd8, 0x72, 0xb2, 0x83, 0x7d, 0x0e, 0xd8, 0xce, + 0x01, 0xbd, 0x39, 0xa9, 0xbe, 0x4b, 0x2f, 0x77, 0xa0, 0x0a, 0xae, 0x46, 0x5f, 0x4b, 0x9e, 0x27, + 0x13, 0x18, 0xf5, 0xcf, 0xd2, 0x50, 0x92, 0xea, 0xc3, 0x3e, 0x84, 0x82, 0x99, 0x5c, 0x88, 0x57, + 0x16, 0x2a, 0xfd, 0xa0, 0x11, 0x2d, 0x41, 0x53, 0x4c, 0x6f, 0x3a, 0xda, 0x08, 0xf5, 0x97, 0x86, + 0x6f, 0xf3, 0xf7, 0x9a, 0x56, 0xe5, 0x33, 0x86, 0x9e, 0x15, 0x3e, 0x8f, 0x30, 0xbb, 0x2b, 0x5a, + 0x39, 0x90, 0xd2, 0x64, 0x27, 0x88, 0x26, 0xa5, 0x13, 0xef, 0x5e, 0x71, 0xe0, 0xee, 0x8a, 0x16, + 0xe1, 0x91, 0xd4, 0x3a, 0xb5, 0x86, 0xd3, 0x30, 0xb2, 0x13, 0xd6, 0xa2, 0x06, 0x11, 0x90, 0x1e, + 0xdf, 0xe3, 0x9f, 0xec, 0x11, 0xca, 0x49, 0xc3, 0x71, 0x3c, 0x52, 0xb3, 0xb2, 0xb2, 0xc7, 0xbf, + 0x11, 0xc3, 0xf9, 0x63, 0x7f, 0x51, 0x8a, 0xdd, 0x85, 0xac, 0x17, 0x1e, 0x59, 0x91, 0xf6, 0x1d, + 0xbd, 0x01, 0x82, 0xa0, 0x46, 0xbd, 0x8d, 0x33, 0x85, 0xd0, 0xea, 0xcf, 0x52, 0x90, 0x17, 0x3d, + 0xc0, 0x36, 0x60, 0xad, 0xd7, 0xec, 0xeb, 0xcf, 0x6b, 0x5a, 0xab, 0xb6, 0xdd, 0x6e, 0x8a, 0x7b, + 0x0d, 0x4f, 0xb5, 0x5a, 0x47, 0xc8, 0x49, 0xad, 0xf9, 0xbc, 0xfb, 0xac, 0xc9, 0x1d, 0x78, 0x8d, + 0x66, 0xe7, 0x0b, 0x25, 0xcd, 0x9d, 0xd8, 0xcd, 0xfd, 0x9a, 0x86, 0x52, 0xb2, 0x04, 0xf9, 0xe6, + 0xe7, 0xcd, 0xfa, 0x01, 0x89, 0xc9, 0x0a, 0x40, 0xa3, 0x59, 0x6b, 0xb7, 0xbb, 0x75, 0x14, 0x9b, + 0x39, 0xc6, 0xa0, 0x52, 0xd7, 0x9a, 0xb5, 0x7e, 0x53, 0xaf, 0xd5, 0xeb, 0xdd, 0x83, 0x4e, 0x5f, + 0xc9, 0x63, 0x89, 0xb5, 0x76, 0xbf, 0xa9, 0xc5, 0x20, 0x7a, 0x97, 0xa9, 0xa1, 0x75, 0xf7, 0x63, + 0x48, 0x71, 0xbb, 0x88, 0x36, 0x1b, 0x8d, 0x95, 0xfa, 0x0f, 0x37, 0xa0, 0x92, 0x9c, 0x9a, 0xec, + 0x13, 0x28, 0x98, 0x66, 0x62, 0x8c, 0xaf, 0x2f, 0x9b, 0xc2, 0x0f, 0x1a, 0x66, 0x34, 0xcc, 0xfc, + 0x83, 0xdd, 0x8a, 0x16, 0xd2, 0xea, 0xc2, 0x42, 0x8a, 0x96, 0xd1, 0x0f, 0x61, 0x5d, 0xbc, 0xa1, + 0x61, 0x1a, 0xa1, 0x31, 0x30, 0x02, 0x2b, 0xb9, 0x4a, 0xea, 0x84, 0x6c, 0x08, 0xdc, 0xee, 0x8a, + 0x56, 0x19, 0x26, 0x20, 0xec, 0xfb, 0x50, 0x31, 0xc8, 0x2c, 0x8f, 0xf9, 0x33, 0xb2, 0x02, 0x59, + 0x43, 0x9c, 0xc4, 0xbe, 0x66, 0xc8, 0x00, 0x9c, 0x88, 0xa6, 0xef, 0x4d, 0x66, 0xcc, 0xd9, 0xc4, + 0x61, 0x97, 0xef, 0x4d, 0x24, 0xde, 0xb2, 0x29, 0xa5, 0xd9, 0xc7, 0x50, 0x16, 0x35, 0x9f, 0xb9, + 0x26, 0xe2, 0x25, 0xcb, 0xab, 0x4d, 0x0a, 0xe1, 0xee, 0x8a, 0x56, 0x1a, 0xce, 0x92, 0xec, 0x31, + 0x6a, 0x81, 0x33, 0xf5, 0x39, 0x2f, 0xcf, 0x35, 0xaa, 0x6d, 0xc4, 0x05, 0x46, 0x9c, 0x62, 0xef, + 0x03, 0x50, 0x3d, 0x39, 0x4f, 0x21, 0x11, 0x9c, 0xe2, 0x7b, 0x93, 0x88, 0xa5, 0x68, 0x46, 0x09, + 0xa9, 0x7a, 0xdc, 0xb1, 0x54, 0x5c, 0xac, 0x1e, 0x39, 0x97, 0x66, 0xd5, 0xe3, 0x3e, 0xa9, 0xb8, + 0x7a, 0x9c, 0x0d, 0x16, 0xaa, 0x17, 0x71, 0xf1, 0xea, 0x71, 0xa6, 0xa8, 0x7a, 0x9c, 0xa7, 0x34, + 0x5f, 0xbd, 0x88, 0x85, 0xaa, 0xc7, 0x39, 0xbe, 0xbf, 0xa0, 0xf7, 0x97, 0xcf, 0xd5, 0xfb, 0x71, + 0xd8, 0x92, 0x9a, 0xff, 0xf7, 0xa1, 0x12, 0x1c, 0x79, 0x27, 0x92, 0x00, 0x59, 0x93, 0xb9, 0x7b, + 0x47, 0xde, 0x89, 0x2c, 0x41, 0xd6, 0x02, 0x19, 0x80, 0xb5, 0xe5, 0x4d, 0xa4, 0xcb, 0xfb, 0x15, + 0xb9, 0xb6, 0xd4, 0xc2, 0xe7, 0xb6, 0x75, 0x82, 0xb5, 0x35, 0xa2, 0x04, 0x76, 0xca, 0xcc, 0x4d, + 0x13, 0x08, 0xc7, 0x4b, 0x22, 0x78, 0x42, 0x94, 0x04, 0xb1, 0xc3, 0x26, 0xc0, 0xb9, 0x35, 0x75, + 0x65, 0x36, 0x45, 0x9e, 0x5b, 0x07, 0x6e, 0x82, 0xb1, 0xcc, 0x49, 0x05, 0xeb, 0x6c, 0x55, 0x04, + 0xd6, 0x57, 0x53, 0xcb, 0x1d, 0x5a, 0x22, 0x74, 0x2b, 0xb1, 0x2a, 0x7a, 0x02, 0x37, 0x5b, 0x15, + 0x11, 0x24, 0x9e, 0xd7, 0x31, 0x3b, 0x9b, 0x9f, 0xd7, 0x12, 0x33, 0xcd, 0xeb, 0x98, 0x35, 0x5e, + 0x50, 0x31, 0xef, 0x85, 0x85, 0x05, 0x25, 0x31, 0xf3, 0x05, 0x15, 0x73, 0x3f, 0x06, 0x31, 0x9b, + 0x78, 0xe7, 0x26, 0x02, 0xbc, 0x78, 0xad, 0x45, 0xef, 0xc2, 0x30, 0x4e, 0xe1, 0x5c, 0xf5, 0x2d, + 0xb4, 0x33, 0xc4, 0x54, 0xb8, 0x28, 0xcf, 0x55, 0x8d, 0x30, 0xf1, 0x52, 0xf2, 0x67, 0x49, 0xa9, + 0xb0, 0x89, 0x1d, 0xfa, 0x55, 0x73, 0xb1, 0xb0, 0x7d, 0x3b, 0xf4, 0x67, 0x85, 0x61, 0x8a, 0xbd, + 0x07, 0x34, 0x0d, 0x39, 0x8b, 0x25, 0x8b, 0x6e, 0xec, 0x16, 0xc1, 0x50, 0x30, 0xc5, 0x37, 0x4e, + 0x16, 0x51, 0xc6, 0xd0, 0x1c, 0x56, 0x47, 0xf2, 0x64, 0xe1, 0x45, 0xd4, 0x1b, 0x75, 0x9c, 0x2c, + 0x9c, 0xa8, 0x6e, 0x0e, 0xd9, 0x7d, 0x20, 0x6e, 0xa2, 0x3f, 0x4c, 0xbc, 0x31, 0xe5, 0x7b, 0x13, + 0x4e, 0x9d, 0x47, 0x02, 0xa4, 0xc5, 0x16, 0x38, 0x9e, 0x1b, 0x35, 0xfc, 0x28, 0xd1, 0x02, 0x44, + 0xc4, 0xc2, 0x60, 0x18, 0xa7, 0xd4, 0xdf, 0xce, 0x41, 0x5e, 0xc8, 0x5a, 0x76, 0x01, 0xd6, 0x85, + 0xc8, 0x6f, 0xd4, 0xfa, 0xb5, 0xed, 0x5a, 0x0f, 0x95, 0x34, 0x06, 0x15, 0x2e, 0xf3, 0x63, 0x58, + 0x0a, 0xf7, 0x01, 0x12, 0xfa, 0x31, 0x68, 0x15, 0xf7, 0x01, 0xc1, 0xcb, 0xdf, 0xf2, 0x4b, 0xb3, + 0x75, 0x28, 0x71, 0x46, 0x0e, 0xa0, 0x6b, 0x96, 0xc4, 0xc5, 0xd3, 0x59, 0x89, 0x85, 0x9f, 0x67, + 0xe5, 0x66, 0x2c, 0x1c, 0x90, 0x8f, 0x59, 0xa2, 0x03, 0x2f, 0x06, 0x95, 0xbe, 0x76, 0xd0, 0xa9, + 0xcf, 0xca, 0x29, 0xd2, 0xd5, 0x38, 0x9e, 0xcd, 0xf3, 0x56, 0xf3, 0x85, 0x02, 0xc8, 0xc4, 0x73, + 0xa1, 0x74, 0x09, 0xd5, 0x4c, 0xca, 0x84, 0x92, 0x65, 0x76, 0x19, 0x2e, 0xf4, 0x76, 0xbb, 0x2f, + 0x74, 0xce, 0x14, 0x37, 0x61, 0x8d, 0x6d, 0x82, 0x22, 0x21, 0x78, 0xf6, 0x15, 0x2c, 0x92, 0xa0, + 0x11, 0x61, 0x4f, 0x59, 0xa7, 0x23, 0x63, 0x84, 0xf5, 0xf9, 0xbe, 0xab, 0x60, 0x53, 0x38, 0x6b, + 0xb7, 0x7d, 0xb0, 0xd7, 0xe9, 0x29, 0x1b, 0x58, 0x09, 0x82, 0xf0, 0x9a, 0xb3, 0x38, 0x9b, 0xd9, + 0x6e, 0x7d, 0x81, 0x36, 0x70, 0x84, 0xbd, 0xa8, 0x69, 0x9d, 0x56, 0xe7, 0x69, 0x4f, 0xd9, 0x8c, + 0x73, 0x6e, 0x6a, 0x5a, 0x57, 0xeb, 0x29, 0x17, 0x63, 0x40, 0xaf, 0x5f, 0xeb, 0x1f, 0xf4, 0x94, + 0x4b, 0x71, 0x2d, 0xf7, 0xb5, 0x6e, 0xbd, 0xd9, 0xeb, 0xb5, 0x5b, 0xbd, 0xbe, 0x72, 0x99, 0x5d, + 0x84, 0x8d, 0x59, 0x8d, 0x22, 0xe2, 0xaa, 0x54, 0x51, 0xed, 0x69, 0xb3, 0xaf, 0x5c, 0x89, 0xab, + 0x51, 0xef, 0xb6, 0xdb, 0x35, 0x3a, 0xec, 0xbc, 0x8a, 0x44, 0x74, 0xea, 0x2b, 0x5a, 0x73, 0x0d, + 0xeb, 0x75, 0xd0, 0x91, 0x41, 0xd7, 0xa5, 0xa9, 0xd1, 0x6b, 0xfe, 0xf8, 0xa0, 0xd9, 0xa9, 0x37, + 0x95, 0x37, 0x66, 0x53, 0x23, 0x86, 0xdd, 0x88, 0xa7, 0x46, 0x0c, 0xba, 0x19, 0x97, 0x19, 0x81, + 0x7a, 0xca, 0x16, 0xe6, 0x27, 0xea, 0xd1, 0xe9, 0x34, 0xeb, 0x7d, 0x6c, 0xeb, 0xad, 0xb8, 0x17, + 0x0f, 0xf6, 0x9f, 0x6a, 0xb5, 0x46, 0x53, 0x51, 0x11, 0xa2, 0x35, 0x3b, 0xb5, 0xbd, 0x68, 0xb4, + 0x6f, 0x4b, 0xa3, 0xbd, 0xdf, 0xea, 0x6b, 0xca, 0x9d, 0x78, 0x74, 0x29, 0xf9, 0x26, 0xbb, 0x06, + 0x97, 0xe5, 0x79, 0xa8, 0xbf, 0x68, 0xf5, 0x77, 0xc5, 0xd9, 0xec, 0x5d, 0x7e, 0xc6, 0x48, 0xc8, + 0x7a, 0xa3, 0xce, 0x0f, 0xa1, 0x89, 0x17, 0x53, 0xf7, 0xb6, 0xcb, 0xf4, 0x24, 0xb3, 0x50, 0x40, + 0xd4, 0xcf, 0x80, 0xc9, 0xaf, 0x93, 0x8a, 0x08, 0x58, 0x06, 0x99, 0x91, 0xef, 0x8d, 0xa3, 0x27, + 0x0f, 0xf0, 0x1b, 0x2d, 0xe7, 0xc9, 0x74, 0x40, 0x67, 0x9f, 0xb3, 0x2b, 0xcd, 0x32, 0x48, 0xfd, + 0xc3, 0x14, 0x54, 0x92, 0xca, 0x07, 0x39, 0x48, 0x47, 0xba, 0xeb, 0x85, 0xfc, 0xfd, 0xa7, 0x20, + 0x7e, 0x34, 0x74, 0xd4, 0xf1, 0x42, 0x7a, 0x00, 0x8a, 0x0c, 0xf9, 0x58, 0x97, 0xe0, 0xb9, 0xc6, + 0x69, 0xd6, 0x82, 0x0b, 0x89, 0x07, 0x5e, 0x13, 0xaf, 0x6f, 0x55, 0xe3, 0x87, 0x19, 0xe7, 0xea, + 0xaf, 0xb1, 0x60, 0xb1, 0x4d, 0xe2, 0x62, 0x7a, 0x66, 0x76, 0x31, 0x7d, 0x17, 0xd6, 0x12, 0xba, + 0x0e, 0xf9, 0x5f, 0x46, 0xc9, 0x9a, 0x16, 0xec, 0xd1, 0xeb, 0xab, 0xa9, 0xfe, 0xed, 0x14, 0x94, + 0x65, 0xcd, 0xe7, 0x3b, 0xe7, 0x44, 0x97, 0xb8, 0xc4, 0xb7, 0x6e, 0x9b, 0xd1, 0xbb, 0x4f, 0x11, + 0xa8, 0x45, 0x4f, 0xd1, 0x73, 0x5f, 0xf3, 0xce, 0x71, 0x2f, 0x6e, 0x8e, 0x0c, 0x62, 0x37, 0x00, + 0xe8, 0x4a, 0xeb, 0xce, 0x33, 0x24, 0x10, 0xd7, 0xc0, 0x66, 0x10, 0xf5, 0x26, 0x14, 0x77, 0x8e, + 0xa3, 0x88, 0x18, 0xf9, 0x15, 0xb4, 0x22, 0xbf, 0x07, 0xaf, 0xfe, 0x71, 0x0a, 0x2a, 0xb3, 0x17, + 0x63, 0xe8, 0x04, 0x9a, 0x3f, 0x0c, 0xcc, 0xa7, 0xc3, 0xaa, 0x39, 0x98, 0xbd, 0x52, 0xbf, 0x2a, + 0xbf, 0x52, 0x7f, 0x5b, 0x64, 0x96, 0x96, 0x45, 0x7e, 0x5c, 0x96, 0xb8, 0x65, 0xff, 0x18, 0xca, + 0xf8, 0x5f, 0xb3, 0x46, 0x96, 0xef, 0x5b, 0xd1, 0x1b, 0xc9, 0x0b, 0xc4, 0x09, 0x22, 0xb2, 0xf1, + 0xac, 0x91, 0x50, 0x35, 0x97, 0x3e, 0x6a, 0x43, 0x8f, 0x2d, 0xfd, 0xb7, 0x34, 0x94, 0x24, 0x3d, + 0xf2, 0x1b, 0x4d, 0xbf, 0xeb, 0x50, 0x9c, 0x3d, 0xb1, 0x22, 0xae, 0x36, 0xc7, 0x80, 0xc4, 0x58, + 0xa5, 0xe7, 0xc6, 0xaa, 0x0a, 0x79, 0x11, 0x68, 0x2b, 0x9c, 0xbf, 0x51, 0x32, 0xe9, 0x66, 0xcd, + 0xbe, 0xe6, 0x3c, 0xe4, 0x03, 0x28, 0x4b, 0x3e, 0xd2, 0x40, 0x5c, 0xff, 0x9d, 0xa7, 0x2f, 0xcd, + 0xfc, 0xa5, 0x01, 0xbb, 0x08, 0xb9, 0xd1, 0xb1, 0x6e, 0x0e, 0xf8, 0x9d, 0xcf, 0xa2, 0x96, 0x1d, + 0x1d, 0x37, 0x06, 0x74, 0x5a, 0x34, 0x8a, 0x55, 0x27, 0xee, 0xb9, 0x2a, 0x8c, 0x22, 0x05, 0xe9, + 0x1e, 0xe4, 0x47, 0xc7, 0xf2, 0xdd, 0xcd, 0x85, 0x2e, 0xcf, 0x8d, 0x8e, 0xe9, 0xb2, 0xe7, 0x43, + 0xd8, 0x14, 0xfb, 0xb7, 0x11, 0xe8, 0xfc, 0x15, 0x09, 0x7a, 0x7a, 0x87, 0xbf, 0x89, 0xb6, 0xc1, + 0x71, 0xb5, 0xa0, 0x47, 0x18, 0x9c, 0x71, 0x2a, 0x94, 0xa5, 0x09, 0xc8, 0xdf, 0x28, 0x2a, 0x6a, + 0x09, 0x18, 0x7b, 0x02, 0xe5, 0xd1, 0x31, 0x1f, 0xd0, 0xbe, 0xb7, 0x67, 0x89, 0xab, 0x02, 0x9b, + 0xf3, 0x43, 0x49, 0x21, 0x02, 0x09, 0x4a, 0x76, 0x09, 0x72, 0x9a, 0x71, 0xd2, 0xfb, 0x71, 0x9b, + 0x94, 0xc8, 0xa2, 0x26, 0x52, 0x9f, 0x65, 0x0a, 0x15, 0x65, 0x5d, 0xfd, 0xc7, 0x29, 0xa8, 0xcc, + 0x6c, 0x00, 0x5c, 0x84, 0xec, 0xbe, 0xfc, 0xa2, 0x77, 0x75, 0xde, 0x4c, 0x40, 0x92, 0x07, 0xfd, + 0xb3, 0x09, 0x7f, 0xf7, 0x72, 0xd9, 0xbb, 0x52, 0xcb, 0x9c, 0xd6, 0xe9, 0xa5, 0x6f, 0x09, 0x3f, + 0x85, 0x74, 0xff, 0x6c, 0xc2, 0xfd, 0x4d, 0xb8, 0x25, 0x72, 0xdb, 0x94, 0x6f, 0x86, 0x14, 0x83, + 0xf2, 0xac, 0xf9, 0x05, 0x7f, 0x8a, 0x61, 0x5f, 0x6b, 0xed, 0xd5, 0xb4, 0x2f, 0x28, 0xbc, 0x88, + 0x94, 0x86, 0x9d, 0xae, 0xd6, 0x6c, 0x3d, 0xed, 0x10, 0x20, 0x43, 0xde, 0xa8, 0x59, 0x15, 0x6b, + 0xa6, 0xb9, 0x73, 0x2c, 0x3f, 0xc9, 0x93, 0x4a, 0x3c, 0xc9, 0x93, 0xbc, 0xbd, 0xbd, 0x3a, 0x7f, + 0x7b, 0x9b, 0xc5, 0xab, 0x30, 0x5e, 0xd2, 0xec, 0x2d, 0xc8, 0x8c, 0x8e, 0xad, 0xb3, 0xa4, 0xa1, + 0x97, 0x5c, 0x40, 0x44, 0xa0, 0xfe, 0x3c, 0x05, 0x2c, 0x51, 0x11, 0x6e, 0x7b, 0x7c, 0xd7, 0xba, + 0x7c, 0x02, 0x55, 0xf1, 0x48, 0x24, 0xa7, 0x92, 0xbc, 0xe4, 0xa2, 0x4b, 0x2f, 0x7a, 0xb3, 0x60, + 0xd0, 0xd9, 0xd3, 0x57, 0xec, 0x21, 0xf0, 0x57, 0xfa, 0x28, 0xa2, 0x24, 0x73, 0x8e, 0x9d, 0xa8, + 0xcd, 0x68, 0x66, 0xcf, 0xf2, 0xc9, 0xcf, 0x0d, 0x72, 0x07, 0xfb, 0xfa, 0x6c, 0xd4, 0x68, 0xcd, + 0xab, 0xbf, 0x97, 0x82, 0x0b, 0xc9, 0x09, 0xf1, 0x8b, 0xb5, 0x32, 0xf9, 0xb6, 0x62, 0x7a, 0xfe, + 0x6d, 0xc5, 0x65, 0xf3, 0x29, 0xb3, 0x74, 0x3e, 0xfd, 0x56, 0x0a, 0x36, 0xa5, 0xde, 0x9f, 0x59, + 0x8b, 0x7f, 0x4e, 0x35, 0x93, 0x9e, 0x58, 0xcc, 0x24, 0x9e, 0x58, 0x54, 0xff, 0x51, 0x0a, 0x2e, + 0xcd, 0xd5, 0x44, 0xb3, 0xfe, 0x5c, 0xeb, 0x92, 0x7c, 0x8a, 0x91, 0x9c, 0xfc, 0x3c, 0x22, 0x96, + 0x5f, 0xfb, 0x65, 0xc9, 0xb7, 0x15, 0xe9, 0xf8, 0xf1, 0x0d, 0xf1, 0xaa, 0x8d, 0x1e, 0x9c, 0xb9, + 0x43, 0x31, 0xd8, 0x45, 0x82, 0xf4, 0xce, 0xdc, 0xa1, 0xfa, 0x21, 0x6c, 0xcc, 0x9a, 0x50, 0x17, + 0xaf, 0x4a, 0xde, 0x84, 0x92, 0x6b, 0x9d, 0xe8, 0xd1, 0x9b, 0x93, 0x22, 0xc4, 0xc8, 0xb5, 0x4e, + 0x04, 0x81, 0xba, 0x23, 0xcb, 0x93, 0xf8, 0x01, 0x7a, 0xc7, 0x4c, 0xc4, 0xaa, 0x78, 0x8e, 0x19, + 0xa1, 0x30, 0x37, 0xa9, 0xc1, 0x79, 0xd7, 0x3a, 0xa1, 0xb1, 0x3c, 0x11, 0xf9, 0xd4, 0x4c, 0x53, + 0x9c, 0xd7, 0x2f, 0x7b, 0x48, 0xea, 0x0a, 0x14, 0x26, 0x7e, 0xa2, 0xc7, 0xf2, 0x13, 0x9f, 0x17, + 0x7b, 0x47, 0x04, 0x30, 0x9d, 0x77, 0xb6, 0xcf, 0x43, 0x9a, 0xc4, 0x0f, 0x54, 0x64, 0x66, 0x3f, + 0x50, 0xf1, 0x91, 0x10, 0x25, 0x64, 0x3b, 0xf1, 0x92, 0x15, 0x48, 0xdb, 0xe6, 0x29, 0x15, 0xbc, + 0xa6, 0xe1, 0x27, 0x69, 0x43, 0xd6, 0x57, 0x22, 0x86, 0x0a, 0x3f, 0xd5, 0x6d, 0x28, 0x69, 0x09, + 0x43, 0xb1, 0x2c, 0xf9, 0x5c, 0x82, 0xe4, 0x5b, 0x3b, 0xb3, 0x0e, 0xd2, 0x4a, 0x33, 0x97, 0x4b, + 0xa0, 0x06, 0x42, 0x78, 0x3c, 0x37, 0xfc, 0xe1, 0x91, 0xe1, 0xb7, 0x2d, 0xf7, 0x30, 0x3c, 0xc2, + 0x2e, 0xe7, 0xae, 0x50, 0xb9, 0x0b, 0x81, 0x83, 0xa2, 0x99, 0x81, 0xbd, 0xe8, 0x10, 0x79, 0xf4, + 0xf4, 0xbd, 0x6b, 0x9d, 0x08, 0xfe, 0x37, 0x00, 0xb0, 0xff, 0x05, 0x9a, 0x1f, 0xc0, 0x15, 0x3d, + 0xc7, 0xe4, 0x68, 0x75, 0x43, 0xb4, 0x57, 0x5c, 0x80, 0x69, 0x58, 0x23, 0xd5, 0x11, 0x23, 0xcf, + 0x1b, 0x24, 0x3a, 0xe1, 0x3b, 0x0d, 0x23, 0xbb, 0x05, 0xe5, 0xc8, 0xaa, 0xa7, 0xe7, 0x9d, 0x78, + 0xf1, 0xa5, 0x08, 0xd6, 0x99, 0x8e, 0xd5, 0xdf, 0x4f, 0x43, 0xb9, 0xc6, 0xa3, 0x59, 0x26, 0x67, + 0xdd, 0x49, 0xc8, 0x7e, 0x1d, 0x2e, 0x06, 0xc7, 0xf6, 0x44, 0xbc, 0x55, 0x4f, 0x41, 0x24, 0x14, + 0x4d, 0x2c, 0x3a, 0xf1, 0xbe, 0xd4, 0x89, 0x82, 0xe5, 0x41, 0xef, 0xd8, 0x9e, 0xf0, 0x20, 0xf6, + 0x96, 0x79, 0x4a, 0x11, 0xe3, 0xfc, 0x64, 0x9c, 0x05, 0x0b, 0x08, 0xba, 0xb4, 0x8c, 0xd9, 0x4f, + 0x8e, 0x45, 0xb6, 0x22, 0x54, 0x00, 0x81, 0xfb, 0xc7, 0x9c, 0xe6, 0x3e, 0x6c, 0xf0, 0x7b, 0x2b, + 0x8b, 0x9b, 0xd8, 0x3a, 0x47, 0xcc, 0xe6, 0x77, 0x0f, 0x36, 0x28, 0x3f, 0xf1, 0x86, 0xa0, 0x3e, + 0xf4, 0x26, 0x67, 0xe2, 0xe0, 0xed, 0xad, 0x73, 0xaa, 0xda, 0xe2, 0xa4, 0x08, 0x12, 0xef, 0x8f, + 0x04, 0x49, 0xe8, 0xd5, 0x26, 0x5c, 0x3e, 0xa7, 0x4d, 0xaf, 0x3b, 0xdc, 0x2f, 0x48, 0x87, 0xfb, + 0x57, 0xb7, 0x61, 0x73, 0x59, 0x79, 0xdf, 0x26, 0x0f, 0xf5, 0x3f, 0x97, 0x01, 0x66, 0x33, 0x36, + 0xa1, 0xd2, 0xa5, 0xe6, 0x54, 0xba, 0x6f, 0x15, 0xc8, 0xf2, 0x21, 0x54, 0xb0, 0xab, 0xf4, 0x19, + 0x47, 0x7a, 0x29, 0x47, 0x19, 0xa9, 0xfa, 0xb3, 0x0b, 0x83, 0x8b, 0x01, 0x01, 0x99, 0xa5, 0x01, + 0x01, 0x1f, 0x40, 0x9e, 0x1f, 0x56, 0x05, 0xe2, 0x8e, 0xea, 0xe5, 0xf9, 0xd5, 0xf7, 0x40, 0x04, + 0xc4, 0x47, 0x74, 0xac, 0x09, 0x15, 0x14, 0x9f, 0xbe, 0x1d, 0x1e, 0x8d, 0xe5, 0x1b, 0xab, 0x37, + 0x16, 0x39, 0x23, 0x32, 0xfe, 0xf2, 0xa0, 0x21, 0x27, 0x25, 0x0d, 0x30, 0x1c, 0x0b, 0x0f, 0x2a, + 0x69, 0x80, 0x79, 0x59, 0x03, 0xec, 0x8f, 0xb9, 0xdf, 0x14, 0x35, 0xc0, 0xf7, 0xe0, 0x82, 0xb8, + 0xa4, 0x83, 0x0c, 0xd8, 0x9d, 0x44, 0xcf, 0x63, 0x16, 0xc5, 0xb3, 0x3c, 0xfd, 0x31, 0xd9, 0x47, + 0x48, 0xfe, 0x39, 0x6c, 0x0e, 0x8f, 0x0c, 0xf7, 0xd0, 0xd2, 0xc3, 0x81, 0xa3, 0xd3, 0xbb, 0xe7, + 0xfa, 0xd8, 0x98, 0x08, 0xc5, 0xf4, 0xad, 0x85, 0xca, 0xd6, 0x89, 0xb8, 0x3f, 0x70, 0x28, 0xe8, + 0x2a, 0x0e, 0x1b, 0xd9, 0x18, 0xce, 0xc3, 0xe7, 0x4e, 0x6f, 0x61, 0xe1, 0xf4, 0x76, 0x5e, 0x55, + 0x2d, 0x2d, 0x51, 0x55, 0x67, 0x0a, 0x67, 0x59, 0x56, 0x38, 0xd9, 0xbb, 0x90, 0x17, 0x37, 0x1f, + 0x85, 0xef, 0x94, 0x2d, 0xae, 0x0e, 0x2d, 0x22, 0xc1, 0x92, 0xa2, 0x58, 0x02, 0xba, 0x2f, 0x5d, + 0xe1, 0x25, 0xc9, 0x30, 0xb6, 0x2d, 0x1c, 0x87, 0x71, 0x80, 0x98, 0xf0, 0x93, 0x5e, 0x95, 0x32, + 0x8e, 0x71, 0xc2, 0xb6, 0x9d, 0xe3, 0xb8, 0xfa, 0xdf, 0xb3, 0x90, 0x13, 0xb1, 0xc8, 0xf7, 0x21, + 0x63, 0xfa, 0xde, 0x24, 0x0e, 0xee, 0x5d, 0xa2, 0xf9, 0xd2, 0x4f, 0x5d, 0xa1, 0x92, 0xfc, 0x00, + 0x72, 0x86, 0x69, 0xea, 0xa3, 0xe3, 0xe4, 0x99, 0xee, 0x9c, 0x12, 0xba, 0xbb, 0xa2, 0x65, 0x0d, + 0xd2, 0x46, 0x3f, 0x81, 0x22, 0xd2, 0xcf, 0x42, 0x2e, 0x4b, 0x8b, 0xaa, 0x75, 0xa4, 0x2e, 0xee, + 0xae, 0x68, 0x05, 0x23, 0x52, 0x1d, 0x7f, 0x90, 0xf4, 0x8e, 0x67, 0x16, 0x1a, 0x38, 0xa7, 0xeb, + 0xcc, 0xf9, 0xc9, 0x7f, 0x15, 0xb8, 0xbb, 0x34, 0xde, 0xb1, 0xb3, 0xf2, 0xf1, 0xe1, 0xc2, 0xfe, + 0xbe, 0xbb, 0xa2, 0xf1, 0x7d, 0x2b, 0xda, 0xef, 0x3f, 0x8a, 0x3c, 0xd7, 0xf1, 0x4f, 0x82, 0x2c, + 0xe9, 0x19, 0x14, 0x83, 0xb1, 0xfb, 0x9a, 0x64, 0x22, 0xb2, 0x99, 0x66, 0x14, 0x79, 0x97, 0x5f, + 0x60, 0x8b, 0x77, 0x75, 0x62, 0x8b, 0xb7, 0xf8, 0x27, 0x50, 0xe2, 0x8e, 0x4c, 0xce, 0x57, 0x58, + 0xe8, 0xda, 0xd9, 0xa6, 0x4c, 0x47, 0x63, 0xb3, 0x2d, 0xba, 0x1e, 0xb5, 0xd3, 0xb7, 0xe4, 0xd3, + 0x87, 0xeb, 0x4b, 0x3b, 0x4a, 0x8b, 0x0f, 0x22, 0x78, 0x63, 0x35, 0xce, 0xc3, 0xda, 0xb0, 0x29, + 0xdc, 0xf4, 0x7c, 0x03, 0x8e, 0xf6, 0x4c, 0x58, 0x18, 0xaf, 0xc4, 0x0e, 0xbd, 0xbb, 0xa2, 0x31, + 0x63, 0x71, 0xdf, 0xae, 0xc3, 0x46, 0x54, 0x25, 0x7e, 0xe7, 0x74, 0x16, 0x34, 0x24, 0x37, 0x69, + 0xb6, 0xef, 0xee, 0xae, 0x68, 0xeb, 0x46, 0x12, 0xc4, 0x5a, 0x70, 0x21, 0xca, 0x84, 0xdc, 0xd5, + 0xa2, 0x67, 0xca, 0x0b, 0xa3, 0x28, 0xef, 0xd5, 0xbb, 0x2b, 0xda, 0x86, 0x31, 0x0f, 0x9c, 0x1d, + 0xde, 0x5f, 0xd5, 0xe0, 0xd2, 0x72, 0x91, 0x20, 0xef, 0x0b, 0x19, 0xbe, 0x2f, 0xa8, 0xc9, 0x27, + 0xa6, 0x92, 0x0f, 0x16, 0x48, 0xbb, 0xc4, 0x8f, 0x60, 0x2d, 0x21, 0x13, 0x59, 0x09, 0xf2, 0xd1, + 0x63, 0xd4, 0x74, 0x61, 0xa0, 0xde, 0xdd, 0xff, 0x42, 0x49, 0x21, 0xb8, 0xd5, 0xe9, 0xf5, 0x6b, + 0x1d, 0x11, 0x9a, 0xd1, 0xea, 0x88, 0xd0, 0x0c, 0xf5, 0xaf, 0xa4, 0xa1, 0x18, 0x1f, 0x2d, 0x7d, + 0x77, 0x17, 0x50, 0xec, 0x5b, 0x49, 0xcb, 0xbe, 0x95, 0x39, 0xfb, 0x86, 0xbf, 0x1b, 0xcf, 0x9f, + 0x1e, 0x5b, 0x4f, 0x5a, 0x11, 0xc1, 0xe2, 0xa5, 0xe5, 0xec, 0x37, 0xbc, 0xb4, 0x2c, 0x87, 0x49, + 0xe7, 0x92, 0x61, 0xd2, 0x73, 0x0f, 0x92, 0xe7, 0xe9, 0xa9, 0x60, 0xf9, 0x41, 0x72, 0xfa, 0xd5, + 0xc0, 0xe7, 0xb6, 0x75, 0x22, 0xe2, 0x8a, 0x45, 0x2a, 0xb9, 0xa5, 0xc2, 0x6b, 0xb6, 0xd4, 0x6f, + 0x22, 0x9e, 0x1f, 0xc1, 0xe6, 0xe8, 0x38, 0x7e, 0xa0, 0x78, 0xe6, 0x51, 0x28, 0x53, 0x95, 0x96, + 0xe2, 0xd4, 0xbf, 0x94, 0x02, 0x98, 0x9d, 0xa5, 0xfc, 0xc2, 0x6e, 0x49, 0xc9, 0xf3, 0x93, 0x7e, + 0x85, 0xe7, 0xe7, 0x75, 0xcf, 0x4c, 0x7d, 0x05, 0xc5, 0xf8, 0xf4, 0xec, 0xbb, 0xcf, 0x97, 0x6f, + 0x55, 0xe4, 0x6f, 0x44, 0x2e, 0xda, 0xf8, 0xf8, 0xe9, 0x17, 0xed, 0x8b, 0x44, 0xf1, 0xe9, 0xd7, + 0x14, 0x7f, 0xca, 0xfd, 0xa4, 0x71, 0xe1, 0xbf, 0xe4, 0x45, 0x22, 0xcf, 0xdf, 0x4c, 0x62, 0xfe, + 0xaa, 0x53, 0xe1, 0xec, 0xfd, 0xc5, 0x8b, 0xfe, 0x56, 0x0d, 0xfe, 0xaf, 0xa9, 0xc8, 0x23, 0x19, + 0x3f, 0x15, 0x7d, 0xae, 0xf2, 0xb9, 0xdc, 0xa9, 0xfa, 0x6d, 0x8a, 0x7b, 0xa5, 0xbf, 0x25, 0xf3, + 0x2a, 0x7f, 0xcb, 0x5b, 0x90, 0xe5, 0xdb, 0x4e, 0xf6, 0x3c, 0x5f, 0x0b, 0xc7, 0xbf, 0xf6, 0x07, + 0x1d, 0x54, 0x55, 0x28, 0xdb, 0xbc, 0xbd, 0x9b, 0x51, 0xbe, 0xd1, 0x8f, 0x51, 0xd0, 0xed, 0x8c, + 0xff, 0x87, 0x0b, 0xca, 0xef, 0xda, 0x25, 0xaf, 0xf6, 0x24, 0xa8, 0xff, 0x2b, 0x05, 0x6b, 0x89, + 0xd3, 0xf0, 0xef, 0x50, 0xc4, 0x52, 0x71, 0x9b, 0xfe, 0x3f, 0x48, 0xdc, 0x26, 0x02, 0x49, 0x0b, + 0xc9, 0x40, 0x52, 0x14, 0x77, 0xe5, 0x84, 0x29, 0xb1, 0xcc, 0xe8, 0x48, 0x2d, 0x35, 0x3a, 0x6e, + 0xc4, 0x3f, 0x43, 0xd7, 0x6a, 0xf0, 0xb8, 0xcd, 0x35, 0x4d, 0x82, 0xb0, 0x4f, 0xe1, 0x8a, 0x30, + 0xe6, 0x79, 0xff, 0x78, 0x23, 0x3d, 0xfe, 0x91, 0x3a, 0x61, 0x1c, 0x5f, 0xe2, 0x04, 0xfc, 0xe7, + 0x38, 0x46, 0xb5, 0x08, 0xab, 0xb6, 0x60, 0x2d, 0x11, 0x66, 0x20, 0xfd, 0x28, 0x66, 0x4a, 0xfe, + 0x51, 0x4c, 0xb6, 0x05, 0xd9, 0x93, 0x23, 0xcb, 0xb7, 0x96, 0x3c, 0x25, 0xcb, 0x11, 0xea, 0xf7, + 0xa1, 0x2c, 0x87, 0x3c, 0xb1, 0x77, 0x21, 0x6b, 0x87, 0xd6, 0x38, 0x72, 0x53, 0x5c, 0x5a, 0x8c, + 0x8a, 0x6a, 0x85, 0xd6, 0x58, 0xe3, 0x44, 0xea, 0xcf, 0x52, 0xa0, 0xcc, 0xe3, 0xa4, 0x5f, 0xee, + 0x4c, 0x9d, 0xf3, 0xcb, 0x9d, 0xab, 0x89, 0x4a, 0x2e, 0xfb, 0xf1, 0xcd, 0xf8, 0x39, 0xcb, 0xcc, + 0x39, 0xcf, 0x59, 0xb2, 0xbb, 0x50, 0xf0, 0x2d, 0xfa, 0x59, 0x44, 0x73, 0xc9, 0xad, 0x85, 0x18, + 0xa7, 0xfe, 0x4e, 0x0a, 0xf2, 0x22, 0x3e, 0x6b, 0xa9, 0xdf, 0xe8, 0x6d, 0xc8, 0xf3, 0x9f, 0x48, + 0x8c, 0x1e, 0x62, 0x5a, 0x08, 0x76, 0x8e, 0xf0, 0xec, 0x06, 0x8f, 0x5a, 0x4b, 0xfa, 0x91, 0xf6, + 0x1d, 0xc3, 0xd5, 0x08, 0x2e, 0x7e, 0x65, 0xc7, 0x18, 0x8b, 0x0b, 0xd1, 0xfc, 0xb9, 0x24, 0x20, + 0x10, 0xdd, 0x7d, 0x56, 0x7f, 0x00, 0x79, 0x11, 0xff, 0xb5, 0xb4, 0x2a, 0xaf, 0xfb, 0x79, 0xbc, + 0x2d, 0x80, 0x59, 0x40, 0xd8, 0xb2, 0x1c, 0xd4, 0xfb, 0x50, 0x88, 0x62, 0xc0, 0x70, 0xfe, 0xcd, + 0x8a, 0x16, 0xd7, 0x61, 0xe4, 0xca, 0x38, 0xe2, 0x79, 0xf6, 0xb6, 0x37, 0x3c, 0x26, 0xc7, 0xef, + 0x43, 0xa0, 0xbb, 0x41, 0xfd, 0x85, 0x77, 0xa5, 0x92, 0x6f, 0xeb, 0xc7, 0x44, 0xec, 0x3e, 0xc4, + 0xf2, 0xf2, 0x75, 0x26, 0xbe, 0x5a, 0x8b, 0x6e, 0x91, 0xd1, 0x2c, 0x7b, 0x2c, 0x1c, 0x9c, 0x6d, + 0x7a, 0xcb, 0x2e, 0x25, 0xff, 0xc2, 0x42, 0xa2, 0x4e, 0x9a, 0x44, 0xa6, 0x56, 0xa0, 0x2c, 0x07, + 0xae, 0xa8, 0x35, 0xd8, 0xd8, 0xb3, 0x42, 0x03, 0xe5, 0x4f, 0xf4, 0xda, 0x0e, 0x9f, 0xbf, 0xf8, + 0x91, 0x9c, 0xbf, 0xf3, 0x74, 0x1a, 0x27, 0x52, 0x7f, 0x96, 0x01, 0x65, 0x1e, 0xf7, 0xaa, 0x1b, + 0x75, 0x37, 0xa1, 0xe4, 0xd1, 0xbc, 0x48, 0xfc, 0x8e, 0x12, 0x07, 0x49, 0x51, 0xe9, 0x89, 0x1f, + 0xd3, 0x28, 0xd8, 0xc1, 0x2e, 0xff, 0x39, 0x8d, 0xcb, 0xfc, 0xfa, 0x94, 0xe3, 0x0d, 0x69, 0x5a, + 0x97, 0xe9, 0xb6, 0x54, 0xdb, 0x1b, 0xd2, 0x45, 0x3d, 0xe1, 0x25, 0xe0, 0xd1, 0x94, 0x65, 0xad, + 0x20, 0x5c, 0x03, 0x74, 0x16, 0x25, 0x62, 0xd5, 0xc3, 0x40, 0x5c, 0x7d, 0x2c, 0x70, 0x40, 0x3f, + 0x88, 0x1e, 0x01, 0x1f, 0x8a, 0x1f, 0xfd, 0x49, 0xd3, 0x23, 0xe0, 0x75, 0x97, 0xee, 0xe9, 0xd1, + 0x6f, 0x54, 0x0d, 0xc5, 0x6f, 0x88, 0x89, 0x67, 0xd8, 0x11, 0x75, 0x9b, 0xff, 0x2c, 0x92, 0x6f, + 0x05, 0x01, 0x7f, 0xf1, 0xac, 0x28, 0xde, 0xb2, 0x13, 0xc0, 0xf8, 0xc5, 0x48, 0xf1, 0xa3, 0x54, + 0x48, 0x02, 0xe2, 0xdd, 0x35, 0xfe, 0x93, 0x54, 0x48, 0x70, 0x05, 0x0a, 0x5f, 0x7b, 0xae, 0x45, + 0xde, 0x86, 0x12, 0xd5, 0x2a, 0x8f, 0xe9, 0x3d, 0x63, 0xa2, 0xfe, 0xd3, 0x14, 0x6c, 0xce, 0xf7, + 0x2a, 0x4d, 0x98, 0x32, 0x14, 0xea, 0xdd, 0xb6, 0xde, 0xa9, 0xed, 0x35, 0x95, 0x15, 0xb6, 0x0e, + 0xa5, 0xee, 0xf6, 0x67, 0xcd, 0x7a, 0x9f, 0x03, 0x52, 0x74, 0x5f, 0xbd, 0xa7, 0xef, 0xb6, 0x1a, + 0x8d, 0x66, 0x87, 0x9b, 0x04, 0xdd, 0xed, 0xcf, 0xf4, 0x76, 0xb7, 0xce, 0x7f, 0xc3, 0x26, 0x3a, + 0xa7, 0xef, 0x29, 0x19, 0x3a, 0xc5, 0xa7, 0xe0, 0x6d, 0x4c, 0x66, 0x79, 0x6c, 0xf2, 0x8b, 0x9e, + 0x5e, 0xef, 0xf4, 0x95, 0x1c, 0xa6, 0x3a, 0x07, 0xed, 0x36, 0xa5, 0x28, 0x08, 0xb1, 0xde, 0xdd, + 0xdb, 0xd7, 0x9a, 0xbd, 0x9e, 0xde, 0x6b, 0xfd, 0xa4, 0xa9, 0x14, 0xa8, 0x64, 0xad, 0xf5, 0xb4, + 0xd5, 0xe1, 0x80, 0x22, 0xcb, 0x43, 0x7a, 0xaf, 0xd5, 0xe1, 0xf7, 0xf4, 0xf7, 0x6a, 0x9f, 0x2b, + 0x25, 0xfc, 0xe8, 0x1d, 0xec, 0x29, 0x65, 0xf5, 0x3f, 0xa4, 0x23, 0x85, 0x97, 0x42, 0x72, 0xbe, + 0x89, 0x92, 0xb7, 0xec, 0x28, 0x6c, 0x13, 0xb2, 0x0e, 0xdd, 0x3c, 0x16, 0x3f, 0xcf, 0x4b, 0x89, + 0x6f, 0xf2, 0x93, 0xa3, 0xb7, 0x61, 0x2d, 0x3e, 0xc7, 0x96, 0xde, 0xe5, 0x2e, 0x47, 0xc0, 0x25, + 0x07, 0x06, 0xb9, 0x25, 0x07, 0x06, 0x13, 0x3b, 0x44, 0x63, 0x16, 0x45, 0x2a, 0x9f, 0x28, 0x45, + 0x84, 0xf0, 0x1f, 0xfb, 0xbd, 0x06, 0x94, 0xd0, 0xa7, 0xae, 0x1d, 0xfd, 0xe0, 0x5c, 0x01, 0x01, + 0x07, 0xae, 0x1d, 0xce, 0x9f, 0xa3, 0x17, 0x17, 0xce, 0xd1, 0xe5, 0xbd, 0x17, 0x92, 0x7b, 0x6f, + 0xf2, 0x97, 0x58, 0xf9, 0x2f, 0xcd, 0x49, 0xbf, 0xc4, 0xfa, 0x2e, 0xb0, 0xe1, 0xd4, 0xa7, 0x87, + 0xbc, 0x24, 0xb2, 0x32, 0x91, 0x29, 0x02, 0x13, 0x6f, 0x7a, 0xec, 0x2d, 0x58, 0x9f, 0xa3, 0x26, + 0xe7, 0x51, 0x51, 0xab, 0x24, 0x49, 0xd9, 0x03, 0xb8, 0x20, 0xa6, 0x6e, 0xa2, 0x6f, 0xc5, 0xad, + 0x46, 0x8e, 0xaa, 0xcd, 0x7a, 0x58, 0xfd, 0x15, 0x28, 0x44, 0xd1, 0x57, 0xaf, 0xd6, 0x65, 0x97, + 0x8c, 0xab, 0xfa, 0xf7, 0x56, 0xa1, 0x18, 0xc7, 0x62, 0x7d, 0xa3, 0xd9, 0x41, 0x3f, 0x40, 0x10, + 0x1c, 0xcb, 0x12, 0xa4, 0x80, 0x80, 0x68, 0xa4, 0xc4, 0x95, 0xa0, 0xa9, 0x6f, 0x47, 0x0a, 0x19, + 0x87, 0x1c, 0xf8, 0x36, 0xbd, 0x8b, 0x61, 0xbb, 0xd2, 0xfd, 0xc3, 0xa2, 0x56, 0x40, 0x00, 0xad, + 0xae, 0x2b, 0x40, 0xdf, 0xc4, 0x19, 0xfd, 0x38, 0xad, 0xed, 0x1e, 0x23, 0xdf, 0x39, 0x3f, 0x4e, + 0x4b, 0x3f, 0x9f, 0xc0, 0x03, 0x41, 0xf8, 0xf1, 0x77, 0xf4, 0x63, 0x5f, 0xd7, 0xa0, 0x38, 0x8d, + 0x7f, 0x2d, 0x4e, 0xcc, 0x88, 0x69, 0xf4, 0x5b, 0x71, 0xc9, 0x51, 0x2d, 0xce, 0x8f, 0xea, 0xfc, + 0x9c, 0x86, 0x85, 0x39, 0xad, 0x86, 0x90, 0x17, 0xf1, 0x68, 0xaf, 0xee, 0xf0, 0x57, 0x76, 0x95, + 0x02, 0x69, 0xc3, 0x89, 0x2e, 0x3d, 0xe2, 0xe7, 0x5c, 0xc5, 0x32, 0x73, 0x15, 0x53, 0xff, 0xe6, + 0x2a, 0xc0, 0x2c, 0xae, 0x8d, 0xbd, 0x37, 0x17, 0x43, 0x9b, 0x5a, 0xd8, 0xd5, 0xe7, 0x42, 0x67, + 0xe7, 0x1e, 0x8a, 0x59, 0xfd, 0x06, 0x0f, 0xc5, 0x3c, 0x82, 0xb5, 0xc0, 0x1f, 0xbe, 0xd6, 0xaf, + 0x5d, 0x0a, 0xfc, 0x61, 0xec, 0xd6, 0x7e, 0x08, 0x98, 0xa4, 0xa7, 0xed, 0x66, 0x76, 0xe8, 0x82, + 0x52, 0x52, 0x0c, 0xfc, 0x61, 0x77, 0xf0, 0x65, 0x83, 0xdf, 0xc3, 0x32, 0x83, 0x50, 0x5f, 0x26, + 0x25, 0xd6, 0xcd, 0x20, 0x6c, 0xc8, 0x82, 0xe2, 0x0e, 0x54, 0x90, 0x76, 0x41, 0x58, 0x94, 0xcd, + 0x60, 0x76, 0x8e, 0xa1, 0xfe, 0x76, 0x74, 0x7a, 0x3a, 0xe7, 0x32, 0x65, 0x1f, 0x0b, 0x3b, 0x5b, + 0xd2, 0x11, 0xaa, 0xcb, 0x3c, 0xac, 0xfc, 0x59, 0x9b, 0x98, 0x74, 0xf1, 0x37, 0xc2, 0x56, 0xbf, + 0xe9, 0x6f, 0x84, 0x6d, 0x01, 0xcc, 0x1e, 0x17, 0xc4, 0x15, 0x18, 0xdf, 0x2b, 0x29, 0xf2, 0x1b, + 0x23, 0xf7, 0x6f, 0x41, 0x59, 0xfe, 0xa5, 0x4e, 0xba, 0x2f, 0xe2, 0xb9, 0x16, 0xff, 0x2d, 0x87, + 0xf6, 0xd7, 0x1f, 0x2a, 0xa9, 0xfb, 0x2a, 0x94, 0xa4, 0x5f, 0x52, 0x41, 0x8a, 0x5d, 0x23, 0x38, + 0x12, 0xef, 0xfa, 0x1b, 0xee, 0xa1, 0xa5, 0xa4, 0xee, 0xdf, 0x45, 0x9d, 0x5a, 0xfe, 0x1d, 0x13, + 0x80, 0x5c, 0xc7, 0xf3, 0xc7, 0x86, 0x23, 0xe8, 0xac, 0x69, 0x80, 0x74, 0x0f, 0xe1, 0xe2, 0xd2, + 0x5f, 0x65, 0xa1, 0x4b, 0x47, 0xf6, 0x78, 0xe2, 0x58, 0xfc, 0xde, 0xcc, 0xee, 0xd9, 0xc0, 0xb7, + 0x4d, 0x25, 0x75, 0xff, 0x49, 0x74, 0x5d, 0x3f, 0x2a, 0xbb, 0xdd, 0xad, 0x35, 0xf8, 0xf6, 0x17, + 0x3f, 0x1b, 0xd3, 0xdf, 0xe6, 0x6f, 0xf6, 0x6b, 0xcd, 0xde, 0x41, 0xbb, 0x2f, 0x9e, 0xa8, 0xb9, + 0xff, 0x23, 0xa8, 0x9e, 0x77, 0x81, 0x04, 0x6b, 0x54, 0xdf, 0xad, 0xd1, 0x25, 0x1d, 0xdc, 0xee, + 0xba, 0x3a, 0x4f, 0xa5, 0xf8, 0x1d, 0xa7, 0x76, 0x93, 0xa2, 0x2c, 0xef, 0xff, 0x34, 0x25, 0x29, + 0x79, 0xd1, 0x25, 0x80, 0x18, 0x20, 0xba, 0x49, 0x06, 0x69, 0x96, 0x61, 0x2a, 0x29, 0x76, 0x09, + 0x58, 0x02, 0xd4, 0xf6, 0x86, 0x86, 0xa3, 0xac, 0x52, 0x3c, 0x65, 0x04, 0xa7, 0x6b, 0x5e, 0x4a, + 0x9a, 0xbd, 0x01, 0x57, 0x62, 0x58, 0xdb, 0x3b, 0xd9, 0xf7, 0x6d, 0xcf, 0xb7, 0xc3, 0x33, 0x8e, + 0xce, 0xdc, 0xff, 0x7f, 0xc5, 0x49, 0x66, 0x62, 0x6e, 0x60, 0x01, 0x35, 0xd3, 0x9c, 0xc1, 0x48, + 0x1c, 0x29, 0x2b, 0xec, 0x32, 0x5c, 0x20, 0x59, 0x3c, 0x87, 0x48, 0xb1, 0x6b, 0x70, 0x39, 0xb2, + 0x44, 0xe7, 0x91, 0xab, 0x88, 0xd4, 0x2c, 0x8a, 0xc5, 0x5b, 0x40, 0xa6, 0xb7, 0x7f, 0xf8, 0x27, + 0x3f, 0xbf, 0x91, 0xfa, 0x97, 0x3f, 0xbf, 0x91, 0xfa, 0x8f, 0x3f, 0xbf, 0xb1, 0xf2, 0xb3, 0xff, + 0x74, 0x23, 0xf5, 0x93, 0xf7, 0x0e, 0xed, 0xf0, 0x68, 0x3a, 0x78, 0x30, 0xf4, 0xc6, 0x0f, 0xc7, + 0x46, 0xe8, 0xdb, 0xa7, 0x7c, 0x53, 0x88, 0x12, 0xae, 0xf5, 0x70, 0x72, 0x7c, 0xf8, 0x70, 0x32, + 0x78, 0x88, 0xd3, 0x73, 0x90, 0x9b, 0xf8, 0x5e, 0xe8, 0x3d, 0xfe, 0xdf, 0x01, 0x00, 0x00, 0xff, + 0xff, 0x6f, 0xe1, 0x1f, 0x5c, 0x33, 0x85, 0x00, 0x00, } func (m *Type) Marshal() (dAtA []byte, err error) { @@ -22850,6 +22866,16 @@ func (m *AlterTableAlterReIndex) MarshalToSizedBuffer(dAtA []byte) (int, error) i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.ForceSync { + i-- + if m.ForceSync { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } if m.IndexAlgoParamList != 0 { i = encodeVarintPlan(dAtA, i, uint64(m.IndexAlgoParamList)) i-- @@ -29583,6 +29609,9 @@ func (m *AlterTableAlterReIndex) ProtoSize() (n int) { if m.IndexAlgoParamList != 0 { n += 1 + sovPlan(uint64(m.IndexAlgoParamList)) } + if m.ForceSync { + n += 2 + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -52581,6 +52610,26 @@ func (m *AlterTableAlterReIndex) Unmarshal(dAtA []byte) error { break } } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ForceSync", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ForceSync = bool(v != 0) default: iNdEx = preIndex skippy, err := skipPlan(dAtA[iNdEx:]) diff --git a/pkg/pb/task/task.pb.go b/pkg/pb/task/task.pb.go index ce35f403e1529..bed5e819f23f2 100644 --- a/pkg/pb/task/task.pb.go +++ b/pkg/pb/task/task.pb.go @@ -115,30 +115,34 @@ const ( TaskCode_MOTableStats TaskCode = 8 // ISCP task TaskCode_ISCPExecutor TaskCode = 9 + // Index Update task + TaskCode_IndexUpdateTaskExecutor TaskCode = 10 ) var TaskCode_name = map[int32]string{ - 0: "TestOnly", - 1: "SystemInit", - 2: "MetricLogMerge", - 3: "MetricStorageUsage", - 4: "ConnectorKafkaSink", - 5: "MergeObject", - 7: "InitCdc", - 8: "MOTableStats", - 9: "ISCPExecutor", + 0: "TestOnly", + 1: "SystemInit", + 2: "MetricLogMerge", + 3: "MetricStorageUsage", + 4: "ConnectorKafkaSink", + 5: "MergeObject", + 7: "InitCdc", + 8: "MOTableStats", + 9: "ISCPExecutor", + 10: "IndexUpdateTaskExecutor", } var TaskCode_value = map[string]int32{ - "TestOnly": 0, - "SystemInit": 1, - "MetricLogMerge": 2, - "MetricStorageUsage": 3, - "ConnectorKafkaSink": 4, - "MergeObject": 5, - "InitCdc": 7, - "MOTableStats": 8, - "ISCPExecutor": 9, + "TestOnly": 0, + "SystemInit": 1, + "MetricLogMerge": 2, + "MetricStorageUsage": 3, + "ConnectorKafkaSink": 4, + "MergeObject": 5, + "InitCdc": 7, + "MOTableStats": 8, + "ISCPExecutor": 9, + "IndexUpdateTaskExecutor": 10, } func (x TaskCode) String() string { @@ -1309,96 +1313,96 @@ func init() { func init() { proto.RegisterFile("task.proto", fileDescriptor_ce5d8dd45b4a91ff) } var fileDescriptor_ce5d8dd45b4a91ff = []byte{ - // 1410 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4b, 0x6f, 0x1b, 0x47, - 0x12, 0xe6, 0x90, 0x43, 0x72, 0x58, 0x24, 0xe5, 0xde, 0xb6, 0x21, 0x0c, 0x08, 0xaf, 0x4c, 0x70, - 0xbd, 0xb0, 0x56, 0x80, 0xa9, 0x8d, 0xe2, 0x04, 0xb1, 0x81, 0x04, 0x96, 0x48, 0x05, 0x96, 0x6d, - 0x59, 0x42, 0x4b, 0xba, 0xe4, 0xd6, 0x1c, 0xb6, 0x69, 0x46, 0x64, 0x0f, 0xdd, 0xd3, 0xe3, 0x88, - 0x7f, 0x41, 0xa7, 0x1c, 0x02, 0xe4, 0x24, 0x20, 0xf7, 0x00, 0x39, 0xe5, 0x9e, 0xab, 0x8f, 0xfe, - 0x05, 0x79, 0x38, 0xf9, 0x09, 0xb9, 0x06, 0x08, 0xfa, 0x31, 0x0f, 0xd2, 0x49, 0x10, 0x21, 0xbe, - 0x4d, 0x7d, 0x55, 0xd5, 0x5d, 0xf5, 0xd5, 0x83, 0x4d, 0x00, 0x49, 0xa3, 0xd3, 0xee, 0x4c, 0x84, - 0x32, 0xc4, 0xae, 0xfa, 0x6e, 0xdd, 0x1e, 0x8d, 0xe5, 0xb3, 0x78, 0xd0, 0x0d, 0xc2, 0xe9, 0xe6, - 0x28, 0x1c, 0x85, 0x9b, 0x5a, 0x39, 0x88, 0x9f, 0x6a, 0x49, 0x0b, 0xfa, 0xcb, 0x38, 0xb5, 0x6e, - 0x8c, 0xc2, 0x70, 0x34, 0x61, 0x99, 0x95, 0x1c, 0x4f, 0x59, 0x24, 0xe9, 0x74, 0x66, 0x0d, 0x56, - 0xa6, 0x4c, 0xd2, 0x21, 0x95, 0xd4, 0xc8, 0x9d, 0x2f, 0x1d, 0x68, 0x1c, 0xd3, 0xe8, 0x74, 0xdf, - 0xc2, 0x78, 0x05, 0x8a, 0x7b, 0x7d, 0xdf, 0x69, 0x3b, 0xeb, 0x35, 0x52, 0xdc, 0xeb, 0xe3, 0x0d, - 0xf0, 0x76, 0xcf, 0x58, 0x10, 0xcb, 0x50, 0xf8, 0xc5, 0xb6, 0xb3, 0xbe, 0xb2, 0xb5, 0xd2, 0xd5, - 0x51, 0x2a, 0xaf, 0x5e, 0x38, 0x64, 0x24, 0xd5, 0x63, 0x1f, 0xaa, 0xbd, 0x90, 0x4b, 0x76, 0x26, - 0xfd, 0x52, 0xdb, 0x59, 0x6f, 0x90, 0x44, 0xc4, 0xef, 0x40, 0xf5, 0x60, 0x26, 0xc7, 0x21, 0x8f, - 0x7c, 0xb7, 0xed, 0xac, 0xd7, 0xb7, 0xfe, 0x95, 0x1d, 0x62, 0x15, 0x3b, 0xee, 0xcb, 0xef, 0x6f, - 0x14, 0x48, 0x62, 0xd7, 0xf9, 0xae, 0x08, 0xf5, 0x9c, 0x1a, 0xdf, 0x84, 0xe6, 0x3e, 0x3d, 0x23, - 0x4c, 0x8a, 0xf9, 0xb1, 0x4a, 0x4a, 0xc7, 0xd8, 0x24, 0x8b, 0xa0, 0xb2, 0xd2, 0xd2, 0x1e, 0x97, - 0x4c, 0xbc, 0xa0, 0x13, 0x1d, 0x73, 0x89, 0x2c, 0x82, 0xca, 0xaa, 0xcf, 0x26, 0x74, 0xde, 0x8f, - 0x05, 0x55, 0xa7, 0xeb, 0x70, 0x4b, 0x64, 0x11, 0xc4, 0x6d, 0xa8, 0xf7, 0x42, 0x1e, 0xc4, 0x42, - 0x30, 0x1e, 0xcc, 0x75, 0xe0, 0x4d, 0x92, 0x87, 0xf0, 0x7b, 0x50, 0x79, 0x4c, 0x07, 0x6c, 0x12, - 0xf9, 0xe5, 0x76, 0x69, 0xbd, 0xbe, 0xf5, 0xef, 0x37, 0xb2, 0xea, 0x1a, 0xfd, 0x2e, 0x97, 0x62, - 0x4e, 0xac, 0xb1, 0xe2, 0x94, 0xb0, 0x28, 0x8c, 0x45, 0xc0, 0xfc, 0x8a, 0xa6, 0xc3, 0x72, 0x9a, - 0xa0, 0x24, 0xd5, 0xb7, 0xee, 0x42, 0x3d, 0x77, 0x04, 0x46, 0x50, 0x3a, 0x65, 0x73, 0x5b, 0x1f, - 0xf5, 0x89, 0xaf, 0x41, 0xf9, 0x05, 0x9d, 0xc4, 0x4c, 0x67, 0x5a, 0x23, 0x46, 0xb8, 0x57, 0xfc, - 0xc0, 0xe9, 0xdc, 0xc9, 0xae, 0x51, 0x7e, 0xbd, 0xc3, 0x13, 0xed, 0xe7, 0x12, 0xf5, 0x89, 0x57, - 0xa1, 0xb2, 0xcf, 0xa6, 0xa1, 0x98, 0x6b, 0x47, 0x97, 0x58, 0xa9, 0xf3, 0x08, 0x9a, 0xa6, 0xa0, - 0x8c, 0xb0, 0x28, 0x9e, 0x48, 0x7c, 0x13, 0x5c, 0x55, 0x67, 0xed, 0xbb, 0xb2, 0x85, 0xd2, 0x48, - 0xe3, 0x89, 0xd4, 0xf5, 0xd7, 0x5a, 0x15, 0xc6, 0xae, 0x10, 0xb6, 0x49, 0x6a, 0xc4, 0x08, 0x9d, - 0x5f, 0x8b, 0x50, 0xdb, 0x8e, 0xe6, 0x3c, 0x50, 0x94, 0xe4, 0x7a, 0xcb, 0xd5, 0xbd, 0x75, 0x07, - 0xbc, 0xa4, 0xef, 0xb4, 0x5b, 0x7d, 0x0b, 0x67, 0x04, 0x26, 0x1a, 0xdb, 0x17, 0xa9, 0x25, 0xee, - 0x40, 0xe3, 0x90, 0x0a, 0xc6, 0xa5, 0xb2, 0xda, 0xeb, 0xeb, 0xda, 0xd5, 0xc8, 0x02, 0x86, 0xd7, - 0xa1, 0x72, 0x24, 0xa9, 0x8c, 0x4d, 0xbb, 0xa5, 0x51, 0x2b, 0xad, 0xc1, 0x89, 0xd5, 0xe3, 0x35, - 0x00, 0x85, 0x92, 0x98, 0x73, 0x26, 0xfc, 0xb2, 0x3e, 0x2b, 0x87, 0xe8, 0xbc, 0x66, 0x61, 0xf0, - 0x4c, 0x17, 0xaa, 0x49, 0x8c, 0xa0, 0x1a, 0xe8, 0x31, 0x8d, 0xe4, 0x03, 0x46, 0x85, 0x1c, 0x30, - 0x2a, 0xfd, 0xaa, 0x69, 0xa0, 0x05, 0x10, 0xb7, 0xc0, 0xeb, 0x09, 0x46, 0x25, 0xdb, 0x96, 0xbe, - 0xa7, 0x0d, 0x52, 0xd9, 0x34, 0xd7, 0x74, 0x36, 0x61, 0x92, 0x0d, 0xb7, 0xa5, 0x5f, 0xd3, 0xea, - 0x3c, 0x84, 0xef, 0x2e, 0x15, 0xc2, 0x07, 0x4d, 0xd1, 0x55, 0x93, 0xca, 0x82, 0x8a, 0x2c, 0x5a, - 0x76, 0x7e, 0x71, 0xd4, 0xcd, 0x21, 0x7f, 0x8b, 0xac, 0xb7, 0xcc, 0x89, 0xbb, 0x67, 0x33, 0x61, - 0x19, 0x4f, 0x65, 0xa5, 0x7b, 0xc2, 0xce, 0xa4, 0x9a, 0x40, 0xcd, 0x77, 0x89, 0xa4, 0xb2, 0xaa, - 0xd6, 0xb1, 0x18, 0x8f, 0x46, 0x4c, 0x98, 0xa9, 0x2d, 0xeb, 0x38, 0x16, 0xb0, 0x05, 0x9e, 0x2a, - 0x4b, 0x3c, 0xb5, 0xc0, 0x3b, 0x99, 0x0d, 0x8d, 0xce, 0x90, 0x9c, 0xca, 0x9d, 0xaf, 0x1d, 0x40, - 0xbd, 0x90, 0x73, 0x16, 0xc8, 0x50, 0xf4, 0x99, 0xa4, 0xe3, 0x49, 0x84, 0xaf, 0x43, 0xed, 0x98, - 0x0e, 0x26, 0xec, 0x09, 0x9d, 0x32, 0x3b, 0x27, 0x19, 0x80, 0x3f, 0xcc, 0x16, 0x51, 0x51, 0x8f, - 0xec, 0x7f, 0x4c, 0xee, 0xcb, 0xc7, 0x74, 0xad, 0x95, 0x19, 0xdc, 0xc4, 0xa7, 0x75, 0x0f, 0x1a, - 0x79, 0xc5, 0xa5, 0xc6, 0xf1, 0x36, 0x54, 0xb7, 0x83, 0x20, 0x8c, 0xb9, 0xd4, 0x25, 0x19, 0xa6, - 0x25, 0x19, 0x62, 0x0c, 0xae, 0x0e, 0xd7, 0xf8, 0xe8, 0xef, 0xce, 0x73, 0x40, 0x86, 0x84, 0xde, - 0x30, 0x48, 0x72, 0x5b, 0x85, 0x8a, 0x6e, 0xf0, 0xa1, 0xbd, 0xd1, 0x4a, 0x8a, 0x24, 0xf5, 0x95, - 0x3b, 0x23, 0x95, 0xf1, 0xff, 0xc0, 0xb3, 0xd7, 0x46, 0x7e, 0x49, 0xa7, 0xdc, 0x34, 0x29, 0x5b, - 0x94, 0xa4, 0xea, 0x0e, 0x06, 0x44, 0x98, 0x64, 0x5c, 0x25, 0x68, 0xaf, 0xec, 0x6c, 0x43, 0x7d, - 0xef, 0xa8, 0x77, 0xf8, 0x0f, 0x22, 0x50, 0x9b, 0xbc, 0x9a, 0xf8, 0xb7, 0xa1, 0xde, 0x67, 0x51, - 0x20, 0xc6, 0x9a, 0x45, 0x7b, 0x48, 0x1e, 0x52, 0xf5, 0xb3, 0x01, 0xed, 0xf5, 0xf5, 0x51, 0x4d, - 0x92, 0x01, 0xea, 0x27, 0xc6, 0x0a, 0xb6, 0x0b, 0x53, 0x4e, 0x55, 0xa3, 0x44, 0x4c, 0x70, 0x6a, - 0x9b, 0xb0, 0x46, 0x52, 0x39, 0x5b, 0x4e, 0xe5, 0xdc, 0x72, 0xc2, 0xef, 0x43, 0x2d, 0x2d, 0xbb, - 0x1d, 0xae, 0xd5, 0x3f, 0xee, 0x86, 0x07, 0x05, 0x92, 0x99, 0x6a, 0xbf, 0xa4, 0x32, 0x7e, 0x63, - 0xc1, 0x6f, 0xa9, 0x60, 0xda, 0x2f, 0xc1, 0xf0, 0x2d, 0x70, 0x15, 0x95, 0x7e, 0x33, 0xff, 0x0b, - 0x98, 0x23, 0xf7, 0x41, 0x81, 0x68, 0x83, 0x9d, 0x5a, 0xca, 0xd7, 0x43, 0xd7, 0xab, 0xa3, 0x46, - 0xe7, 0x37, 0x17, 0xa0, 0x4f, 0xd9, 0xf4, 0xad, 0x4e, 0xf4, 0x02, 0xd1, 0xa5, 0xbf, 0x20, 0xda, - 0x5d, 0x24, 0x7a, 0xc3, 0x94, 0xfa, 0x78, 0x3e, 0x63, 0x9a, 0xcf, 0x85, 0x17, 0x81, 0x42, 0x49, - 0xaa, 0x5f, 0xda, 0xae, 0x95, 0x37, 0xb6, 0xeb, 0xff, 0x8d, 0xde, 0xee, 0xea, 0xea, 0x9f, 0xec, - 0xea, 0x9c, 0x0d, 0x7e, 0xb8, 0xbc, 0x79, 0x3d, 0x9d, 0x70, 0xab, 0x6b, 0x5e, 0x3e, 0xdd, 0xe4, - 0xe5, 0xd3, 0x3d, 0x4e, 0x5e, 0x3e, 0x3b, 0x9e, 0x4a, 0xfc, 0xf3, 0x1f, 0x6e, 0x38, 0xcb, 0xfb, - 0xf9, 0x56, 0xca, 0xb3, 0xde, 0xbf, 0xe9, 0x64, 0x58, 0x90, 0xa4, 0x5d, 0x7b, 0x3f, 0xb7, 0xa0, - 0xe0, 0x12, 0xf7, 0x65, 0x6b, 0xec, 0x7e, 0x6e, 0x8d, 0xd5, 0x2f, 0x73, 0x42, 0xe2, 0x85, 0xef, - 0x41, 0x79, 0x97, 0xab, 0x9f, 0x8a, 0xc6, 0x25, 0xdc, 0x8d, 0x0b, 0xfe, 0x08, 0xaa, 0x2a, 0x73, - 0x12, 0x73, 0xdb, 0x7c, 0x7f, 0xcf, 0x3b, 0x71, 0xda, 0xf8, 0xc6, 0xc9, 0xd7, 0x09, 0xd7, 0xa1, - 0x6a, 0x12, 0x1b, 0xa2, 0x82, 0x12, 0x54, 0x31, 0xc7, 0x7c, 0x84, 0x1c, 0xdc, 0x54, 0x23, 0x65, - 0x7f, 0xc2, 0x50, 0x11, 0x03, 0x54, 0x0e, 0x69, 0x1c, 0xb1, 0x21, 0x2a, 0xe1, 0x9a, 0x9d, 0x41, - 0xe4, 0xe2, 0x06, 0x78, 0x3d, 0xca, 0x03, 0x36, 0x61, 0x43, 0x54, 0xc6, 0x57, 0xe1, 0x8a, 0xfa, - 0xd9, 0x9a, 0x32, 0xc2, 0x9e, 0xc7, 0x2c, 0x52, 0x9e, 0x15, 0x8c, 0x61, 0x45, 0x7b, 0x66, 0x58, - 0x55, 0x19, 0x1a, 0xb7, 0x0c, 0xf4, 0xf0, 0x35, 0xb5, 0xb3, 0x22, 0x49, 0x85, 0xcc, 0xd0, 0xda, - 0xc6, 0xb7, 0x8e, 0x69, 0x52, 0xfd, 0x34, 0x69, 0x80, 0x77, 0xcc, 0x22, 0x79, 0xc0, 0x27, 0x73, - 0x54, 0xc0, 0x2b, 0x00, 0x47, 0xf3, 0x48, 0xb2, 0xe9, 0x1e, 0x1f, 0x4b, 0xe4, 0xa8, 0x9b, 0xf6, - 0x99, 0x14, 0xe3, 0xe0, 0x71, 0x38, 0xda, 0x67, 0x62, 0xc4, 0x50, 0x11, 0xaf, 0x02, 0x36, 0xd8, - 0x91, 0x0c, 0x05, 0x1d, 0xb1, 0x93, 0x88, 0x8e, 0x18, 0x2a, 0x29, 0x3c, 0x5d, 0x03, 0x8f, 0xe8, - 0xd3, 0x53, 0x7a, 0x34, 0xe6, 0xa7, 0xc8, 0xc5, 0x57, 0xa0, 0xae, 0x5d, 0x0f, 0x06, 0x9f, 0xb2, - 0x40, 0xa2, 0xb2, 0x22, 0x45, 0x1d, 0xdf, 0x1b, 0x06, 0xa8, 0x8a, 0x11, 0x34, 0xf6, 0x0f, 0xf4, - 0x4f, 0x90, 0xe2, 0x2f, 0x42, 0x9e, 0x42, 0xd4, 0xa0, 0x27, 0x0f, 0x67, 0x54, 0xeb, 0xb8, 0x5e, - 0x05, 0x55, 0x36, 0xfe, 0x0b, 0x90, 0x3d, 0xac, 0xd4, 0x21, 0x47, 0x71, 0x10, 0xb0, 0x28, 0x42, - 0x05, 0x45, 0xe5, 0xc7, 0x74, 0xac, 0x18, 0x73, 0x36, 0xbe, 0x70, 0xb2, 0x11, 0xc4, 0xd7, 0xa1, - 0x7a, 0xc2, 0x4f, 0x79, 0xf8, 0x19, 0x47, 0x85, 0xd6, 0x95, 0xf3, 0x8b, 0x76, 0x5d, 0xc1, 0x16, - 0xc2, 0x5b, 0x80, 0xd3, 0x40, 0xd3, 0xd0, 0x91, 0xd3, 0x6a, 0x9d, 0x5f, 0xb4, 0x57, 0x95, 0xe1, - 0x9b, 0x5a, 0xb5, 0x18, 0xd2, 0xa5, 0x85, 0x4a, 0xad, 0xe6, 0xf9, 0x45, 0x3b, 0xb7, 0xc5, 0xb0, - 0xd9, 0x62, 0xc8, 0x6d, 0x79, 0xe7, 0x17, 0x6d, 0xfd, 0xdd, 0x71, 0xbd, 0x22, 0x2a, 0xee, 0xf4, - 0x5e, 0xfd, 0xb4, 0xe6, 0xbc, 0x7c, 0xbd, 0xe6, 0xbc, 0x7a, 0xbd, 0xe6, 0xfc, 0xf8, 0x7a, 0xad, - 0xf0, 0xd5, 0xcf, 0x6b, 0xce, 0x27, 0xf9, 0x7f, 0x30, 0x53, 0x2a, 0xc5, 0xf8, 0x2c, 0x14, 0xe3, - 0xd1, 0x98, 0x27, 0x02, 0x67, 0x9b, 0xb3, 0xd3, 0xd1, 0xe6, 0x6c, 0xb0, 0xa9, 0x66, 0x6f, 0x50, - 0xd1, 0x1d, 0xf9, 0xee, 0xef, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb5, 0xcf, 0xc0, 0x3b, 0x0b, 0x0d, - 0x00, 0x00, + // 1422 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xdd, 0x6e, 0x1b, 0xc5, + 0x17, 0xf7, 0xda, 0x6b, 0x7b, 0x7d, 0x6c, 0xa7, 0xf3, 0x9f, 0x56, 0xf9, 0xaf, 0x4c, 0x49, 0x2d, + 0x53, 0xd4, 0x10, 0xa9, 0x0e, 0x84, 0x82, 0x68, 0x25, 0x50, 0x13, 0x3b, 0xa8, 0x6e, 0x9b, 0x26, + 0x9a, 0x24, 0x37, 0xdc, 0x8d, 0xd7, 0x53, 0x77, 0x89, 0x3d, 0xeb, 0xee, 0xce, 0x96, 0xf8, 0x15, + 0x72, 0xc5, 0x05, 0x12, 0x57, 0x91, 0xb8, 0x47, 0xe2, 0x15, 0xb8, 0xed, 0x65, 0x79, 0x01, 0x3e, + 0x0a, 0x8f, 0xc0, 0x2d, 0x12, 0x9a, 0x8f, 0xfd, 0xb0, 0x0b, 0x88, 0x88, 0xde, 0xcd, 0xf9, 0x9d, + 0x73, 0x66, 0xe6, 0xfc, 0xce, 0xc7, 0xce, 0x02, 0x08, 0x1a, 0x9d, 0x74, 0x67, 0x61, 0x20, 0x02, + 0x6c, 0xcb, 0x75, 0xeb, 0xe6, 0xd8, 0x17, 0x4f, 0xe2, 0x61, 0xd7, 0x0b, 0xa6, 0x9b, 0xe3, 0x60, + 0x1c, 0x6c, 0x2a, 0xe5, 0x30, 0x7e, 0xac, 0x24, 0x25, 0xa8, 0x95, 0x76, 0x6a, 0x5d, 0x1b, 0x07, + 0xc1, 0x78, 0xc2, 0x32, 0x2b, 0xe1, 0x4f, 0x59, 0x24, 0xe8, 0x74, 0x66, 0x0c, 0x56, 0xa6, 0x4c, + 0xd0, 0x11, 0x15, 0x54, 0xcb, 0x9d, 0xaf, 0x2d, 0x68, 0x1c, 0xd1, 0xe8, 0x64, 0xcf, 0xc0, 0x78, + 0x05, 0x8a, 0x83, 0xbe, 0x6b, 0xb5, 0xad, 0xf5, 0x1a, 0x29, 0x0e, 0xfa, 0x78, 0x03, 0x9c, 0xdd, + 0x53, 0xe6, 0xc5, 0x22, 0x08, 0xdd, 0x62, 0xdb, 0x5a, 0x5f, 0xd9, 0x5a, 0xe9, 0xaa, 0x5b, 0x4a, + 0xaf, 0x5e, 0x30, 0x62, 0x24, 0xd5, 0x63, 0x17, 0xaa, 0xbd, 0x80, 0x0b, 0x76, 0x2a, 0xdc, 0x52, + 0xdb, 0x5a, 0x6f, 0x90, 0x44, 0xc4, 0xef, 0x41, 0x75, 0x7f, 0x26, 0xfc, 0x80, 0x47, 0xae, 0xdd, + 0xb6, 0xd6, 0xeb, 0x5b, 0xff, 0xcb, 0x36, 0x31, 0x8a, 0x1d, 0xfb, 0xf9, 0x8f, 0xd7, 0x0a, 0x24, + 0xb1, 0xeb, 0x7c, 0x5f, 0x84, 0x7a, 0x4e, 0x8d, 0xaf, 0x43, 0x73, 0x8f, 0x9e, 0x12, 0x26, 0xc2, + 0xf9, 0x91, 0x0c, 0x4a, 0xdd, 0xb1, 0x49, 0x16, 0x41, 0x69, 0xa5, 0xa4, 0x01, 0x17, 0x2c, 0x7c, + 0x46, 0x27, 0xea, 0xce, 0x25, 0xb2, 0x08, 0x4a, 0xab, 0x3e, 0x9b, 0xd0, 0x79, 0x3f, 0x0e, 0xa9, + 0xdc, 0x5d, 0x5d, 0xb7, 0x44, 0x16, 0x41, 0xdc, 0x86, 0x7a, 0x2f, 0xe0, 0x5e, 0x1c, 0x86, 0x8c, + 0x7b, 0x73, 0x75, 0xf1, 0x26, 0xc9, 0x43, 0xf8, 0x03, 0xa8, 0x3c, 0xa4, 0x43, 0x36, 0x89, 0xdc, + 0x72, 0xbb, 0xb4, 0x5e, 0xdf, 0x7a, 0xf3, 0x95, 0xa8, 0xba, 0x5a, 0xbf, 0xcb, 0x45, 0x38, 0x27, + 0xc6, 0x58, 0x72, 0x4a, 0x58, 0x14, 0xc4, 0xa1, 0xc7, 0xdc, 0x8a, 0xa2, 0xc3, 0x70, 0x9a, 0xa0, + 0x24, 0xd5, 0xb7, 0x6e, 0x43, 0x3d, 0xb7, 0x05, 0x46, 0x50, 0x3a, 0x61, 0x73, 0x93, 0x1f, 0xb9, + 0xc4, 0x57, 0xa0, 0xfc, 0x8c, 0x4e, 0x62, 0xa6, 0x22, 0xad, 0x11, 0x2d, 0xdc, 0x29, 0x7e, 0x64, + 0x75, 0x6e, 0x65, 0xc7, 0x48, 0xbf, 0xde, 0xc1, 0xb1, 0xf2, 0xb3, 0x89, 0x5c, 0xe2, 0x55, 0xa8, + 0xec, 0xb1, 0x69, 0x10, 0xce, 0x95, 0xa3, 0x4d, 0x8c, 0xd4, 0x79, 0x00, 0x4d, 0x9d, 0x50, 0x46, + 0x58, 0x14, 0x4f, 0x04, 0xbe, 0x0e, 0xb6, 0xcc, 0xb3, 0xf2, 0x5d, 0xd9, 0x42, 0xe9, 0x4d, 0xe3, + 0x89, 0x50, 0xf9, 0x57, 0x5a, 0x79, 0x8d, 0xdd, 0x30, 0x34, 0x45, 0x52, 0x23, 0x5a, 0xe8, 0xfc, + 0x5e, 0x84, 0xda, 0x76, 0x34, 0xe7, 0x9e, 0xa4, 0x24, 0x57, 0x5b, 0xb6, 0xaa, 0xad, 0x5b, 0xe0, + 0x24, 0x75, 0xa7, 0xdc, 0xea, 0x5b, 0x38, 0x23, 0x30, 0xd1, 0x98, 0xba, 0x48, 0x2d, 0x71, 0x07, + 0x1a, 0x07, 0x34, 0x64, 0x5c, 0x48, 0xab, 0x41, 0x5f, 0xe5, 0xae, 0x46, 0x16, 0x30, 0xbc, 0x0e, + 0x95, 0x43, 0x41, 0x45, 0xac, 0xcb, 0x2d, 0xbd, 0xb5, 0xd4, 0x6a, 0x9c, 0x18, 0x3d, 0x5e, 0x03, + 0x90, 0x28, 0x89, 0x39, 0x67, 0xa1, 0x5b, 0x56, 0x7b, 0xe5, 0x10, 0x15, 0xd7, 0x2c, 0xf0, 0x9e, + 0xa8, 0x44, 0x35, 0x89, 0x16, 0x64, 0x01, 0x3d, 0xa4, 0x91, 0xb8, 0xc7, 0x68, 0x28, 0x86, 0x8c, + 0x0a, 0xb7, 0xaa, 0x0b, 0x68, 0x01, 0xc4, 0x2d, 0x70, 0x7a, 0x21, 0xa3, 0x82, 0x6d, 0x0b, 0xd7, + 0x51, 0x06, 0xa9, 0xac, 0x8b, 0x6b, 0x3a, 0x9b, 0x30, 0xc1, 0x46, 0xdb, 0xc2, 0xad, 0x29, 0x75, + 0x1e, 0xc2, 0xb7, 0x97, 0x12, 0xe1, 0x82, 0xa2, 0xe8, 0xb2, 0x0e, 0x65, 0x41, 0x45, 0x16, 0x2d, + 0x3b, 0xbf, 0x59, 0xf2, 0xe4, 0x80, 0xbf, 0x46, 0xd6, 0x5b, 0x7a, 0xc7, 0xdd, 0xd3, 0x59, 0x68, + 0x18, 0x4f, 0x65, 0xa9, 0x7b, 0xc4, 0x4e, 0x85, 0xec, 0x40, 0xc5, 0x77, 0x89, 0xa4, 0xb2, 0xcc, + 0xd6, 0x51, 0xe8, 0x8f, 0xc7, 0x2c, 0xd4, 0x5d, 0x5b, 0x56, 0xf7, 0x58, 0xc0, 0x16, 0x78, 0xaa, + 0x2c, 0xf1, 0xd4, 0x02, 0xe7, 0x78, 0x36, 0xd2, 0x3a, 0x4d, 0x72, 0x2a, 0x77, 0xbe, 0xb5, 0x00, + 0xf5, 0x02, 0xce, 0x99, 0x27, 0x82, 0xb0, 0xcf, 0x04, 0xf5, 0x27, 0x11, 0xbe, 0x0a, 0xb5, 0x23, + 0x3a, 0x9c, 0xb0, 0x47, 0x74, 0xca, 0x4c, 0x9f, 0x64, 0x00, 0xfe, 0x38, 0x1b, 0x44, 0x45, 0xd5, + 0xb2, 0x6f, 0xe9, 0xd8, 0x97, 0xb7, 0xe9, 0x1a, 0x2b, 0xdd, 0xb8, 0x89, 0x4f, 0xeb, 0x0e, 0x34, + 0xf2, 0x8a, 0x0b, 0xb5, 0xe3, 0x4d, 0xa8, 0x6e, 0x7b, 0x5e, 0x10, 0x73, 0xa1, 0x52, 0x32, 0x4a, + 0x53, 0x32, 0xc2, 0x18, 0x6c, 0x75, 0x5d, 0xed, 0xa3, 0xd6, 0x9d, 0xa7, 0x80, 0x34, 0x09, 0xbd, + 0x91, 0x97, 0xc4, 0xb6, 0x0a, 0x15, 0x55, 0xe0, 0x23, 0x73, 0xa2, 0x91, 0x24, 0x49, 0x72, 0x95, + 0xdb, 0x23, 0x95, 0xf1, 0x3b, 0xe0, 0x98, 0x63, 0x23, 0xb7, 0xa4, 0x42, 0x6e, 0xea, 0x90, 0x0d, + 0x4a, 0x52, 0x75, 0x07, 0x03, 0x22, 0x4c, 0x30, 0x2e, 0x03, 0x34, 0x47, 0x76, 0xb6, 0xa1, 0x3e, + 0x38, 0xec, 0x1d, 0xfc, 0x87, 0x1b, 0xc8, 0x49, 0x5e, 0x4d, 0xfc, 0xdb, 0x50, 0xef, 0xb3, 0xc8, + 0x0b, 0x7d, 0xc5, 0xa2, 0xd9, 0x24, 0x0f, 0xc9, 0xfc, 0x99, 0x0b, 0x0d, 0xfa, 0x6a, 0xab, 0x26, + 0xc9, 0x00, 0xf9, 0x89, 0x31, 0x82, 0xa9, 0xc2, 0x94, 0x53, 0x59, 0x28, 0x11, 0x0b, 0x39, 0x35, + 0x45, 0x58, 0x23, 0xa9, 0x9c, 0x0d, 0xa7, 0x72, 0x6e, 0x38, 0xe1, 0x0f, 0xa1, 0x96, 0xa6, 0xdd, + 0x34, 0xd7, 0xea, 0x5f, 0x57, 0xc3, 0xbd, 0x02, 0xc9, 0x4c, 0x95, 0x5f, 0x92, 0x19, 0xb7, 0xb1, + 0xe0, 0xb7, 0x94, 0x30, 0xe5, 0x97, 0x60, 0xf8, 0x06, 0xd8, 0x92, 0x4a, 0xb7, 0x99, 0xff, 0x02, + 0xe6, 0xc8, 0xbd, 0x57, 0x20, 0xca, 0x60, 0xa7, 0x96, 0xf2, 0x75, 0xdf, 0x76, 0xea, 0xa8, 0xd1, + 0xf9, 0xc3, 0x06, 0xe8, 0x53, 0x36, 0x7d, 0xad, 0x1d, 0xbd, 0x40, 0x74, 0xe9, 0x1f, 0x88, 0xb6, + 0x17, 0x89, 0xde, 0xd0, 0xa9, 0x3e, 0x9a, 0xcf, 0x98, 0xe2, 0x73, 0xe1, 0x45, 0x20, 0x51, 0x92, + 0xea, 0x97, 0xa6, 0x6b, 0xe5, 0x95, 0xe9, 0xfa, 0xae, 0xd6, 0x9b, 0x59, 0x5d, 0xfd, 0x9b, 0x59, + 0x9d, 0xb3, 0xc1, 0xf7, 0x97, 0x27, 0xaf, 0xa3, 0x02, 0x6e, 0x75, 0xf5, 0xcb, 0xa7, 0x9b, 0xbc, + 0x7c, 0xba, 0x47, 0xc9, 0xcb, 0x67, 0xc7, 0x91, 0x81, 0x7f, 0xf9, 0xd3, 0x35, 0x6b, 0x79, 0x3e, + 0xdf, 0x48, 0x79, 0x56, 0xf3, 0x37, 0xed, 0x0c, 0x03, 0x92, 0xb4, 0x6a, 0xef, 0xe6, 0x06, 0x14, + 0x5c, 0xe0, 0xbc, 0x6c, 0x8c, 0xdd, 0xcd, 0x8d, 0xb1, 0xfa, 0x45, 0x76, 0x48, 0xbc, 0xf0, 0x1d, + 0x28, 0xef, 0x72, 0xf9, 0xa9, 0x68, 0x5c, 0xc0, 0x5d, 0xbb, 0xe0, 0x4f, 0xa0, 0x2a, 0x23, 0x27, + 0x31, 0x37, 0xc5, 0xf7, 0xef, 0xbc, 0x13, 0xa7, 0x8d, 0xef, 0xac, 0x7c, 0x9e, 0x70, 0x1d, 0xaa, + 0x3a, 0xb0, 0x11, 0x2a, 0x48, 0x41, 0x26, 0xd3, 0xe7, 0x63, 0x64, 0xe1, 0xa6, 0x6c, 0x29, 0xf3, + 0x09, 0x43, 0x45, 0x0c, 0x50, 0x39, 0xa0, 0x71, 0xc4, 0x46, 0xa8, 0x84, 0x6b, 0xa6, 0x07, 0x91, + 0x8d, 0x1b, 0xe0, 0xf4, 0x28, 0xf7, 0xd8, 0x84, 0x8d, 0x50, 0x19, 0x5f, 0x86, 0x4b, 0xf2, 0xb3, + 0x35, 0x65, 0x84, 0x3d, 0x8d, 0x59, 0x24, 0x3d, 0x2b, 0x18, 0xc3, 0x8a, 0xf2, 0xcc, 0xb0, 0xaa, + 0x34, 0xd4, 0x6e, 0x19, 0xe8, 0xe0, 0x2b, 0x72, 0x66, 0x45, 0x82, 0x86, 0x22, 0x43, 0x6b, 0x1b, + 0x3f, 0x58, 0xba, 0x48, 0xd5, 0xd3, 0xa4, 0x01, 0xce, 0x11, 0x8b, 0xc4, 0x3e, 0x9f, 0xcc, 0x51, + 0x01, 0xaf, 0x00, 0x1c, 0xce, 0x23, 0xc1, 0xa6, 0x03, 0xee, 0x0b, 0x64, 0xc9, 0x93, 0xf6, 0x98, + 0x08, 0x7d, 0xef, 0x61, 0x30, 0xde, 0x63, 0xe1, 0x98, 0xa1, 0x22, 0x5e, 0x05, 0xac, 0xb1, 0x43, + 0x11, 0x84, 0x74, 0xcc, 0x8e, 0x23, 0x3a, 0x66, 0xa8, 0x24, 0xf1, 0x74, 0x0c, 0x3c, 0xa0, 0x8f, + 0x4f, 0xe8, 0xa1, 0xcf, 0x4f, 0x90, 0x8d, 0x2f, 0x41, 0x5d, 0xb9, 0xee, 0x0f, 0x3f, 0x67, 0x9e, + 0x40, 0x65, 0x49, 0x8a, 0xdc, 0xbe, 0x37, 0xf2, 0x50, 0x15, 0x23, 0x68, 0xec, 0xed, 0xab, 0x4f, + 0x90, 0xe4, 0x2f, 0x42, 0x8e, 0x44, 0x64, 0xa3, 0x27, 0x0f, 0x67, 0x54, 0xc3, 0x6f, 0xc0, 0xff, + 0x07, 0x7c, 0xc4, 0x4e, 0x75, 0xba, 0xe5, 0xd5, 0x53, 0x25, 0x74, 0x6c, 0xa7, 0x82, 0x2a, 0x1b, + 0x6f, 0x03, 0x64, 0xaf, 0x2e, 0x79, 0xc2, 0x61, 0xec, 0x79, 0x2c, 0x8a, 0x50, 0x41, 0xf2, 0xfc, + 0x29, 0xf5, 0x25, 0x9d, 0xd6, 0xc6, 0x57, 0x56, 0xd6, 0x9f, 0xf8, 0x2a, 0x54, 0x8f, 0xf9, 0x09, + 0x0f, 0xbe, 0xe0, 0xa8, 0xd0, 0xba, 0x74, 0x76, 0xde, 0xae, 0x4b, 0xd8, 0x40, 0x78, 0x0b, 0x70, + 0x1a, 0x45, 0x1a, 0x17, 0xb2, 0x5a, 0xad, 0xb3, 0xf3, 0xf6, 0xaa, 0x34, 0x7c, 0x55, 0x2b, 0xa7, + 0x46, 0x3a, 0xd1, 0x50, 0xa9, 0xd5, 0x3c, 0x3b, 0x6f, 0xe7, 0x46, 0x1c, 0xd6, 0x23, 0x0e, 0xd9, + 0x2d, 0xe7, 0xec, 0xbc, 0xad, 0xd6, 0x1d, 0xdb, 0x29, 0xa2, 0xe2, 0x4e, 0xef, 0xc5, 0x2f, 0x6b, + 0xd6, 0xf3, 0x97, 0x6b, 0xd6, 0x8b, 0x97, 0x6b, 0xd6, 0xcf, 0x2f, 0xd7, 0x0a, 0xdf, 0xfc, 0xba, + 0x66, 0x7d, 0x96, 0xff, 0xbd, 0x99, 0x52, 0x11, 0xfa, 0xa7, 0x41, 0xe8, 0x8f, 0x7d, 0x9e, 0x08, + 0x9c, 0x6d, 0xce, 0x4e, 0xc6, 0x9b, 0xb3, 0xe1, 0xa6, 0x6c, 0xcc, 0x61, 0x45, 0x95, 0xeb, 0xfb, + 0x7f, 0x06, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x65, 0x2e, 0xae, 0x28, 0x0d, 0x00, 0x00, } func (m *TaskMetadata) Marshal() (dAtA []byte, err error) { diff --git a/pkg/predefine/predefine.go b/pkg/predefine/predefine.go index 1b8cae46c0e2e..8c13c0db4fb6c 100644 --- a/pkg/predefine/predefine.go +++ b/pkg/predefine/predefine.go @@ -25,6 +25,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/pb/task" "github.com/matrixorigin/matrixone/pkg/util/export" "github.com/matrixorigin/matrixone/pkg/util/metric/mometric" + "github.com/matrixorigin/matrixone/pkg/vectorindex/idxcron" "github.com/robfig/cron/v3" ) @@ -63,7 +64,7 @@ func GenInitCronTaskSQL(codes ...int32) (string, error) { }, nil } - cronTasks := make([]*task.CronTask, 0, 3) + cronTasks := make([]*task.CronTask, 0, 4) task1, err := createCronTask(export.MergeTaskMetadata(task.TaskCode_MetricLogMerge), export.MergeTaskCronExprEvery05Min) if err != nil { return "", err @@ -87,9 +88,14 @@ func GenInitCronTaskSQL(codes ...int32) (string, error) { if err != nil { return "", err } - cronTasks = append(cronTasks, task4) + task5, err := createCronTask(idxcron.IndexUpdateTaskMetadata(task.TaskCode_IndexUpdateTaskExecutor), idxcron.IndexUpdateTaskCronExpr) + if err != nil { + return "", err + } + cronTasks = append(cronTasks, task5) + sql := fmt.Sprintf(`insert into %s.sys_cron_task ( task_metadata_id, task_metadata_executor, diff --git a/pkg/sql/compile/alter.go b/pkg/sql/compile/alter.go index e4234a5fdf434..b04fedd0f0f7f 100644 --- a/pkg/sql/compile/alter.go +++ b/pkg/sql/compile/alter.go @@ -34,6 +34,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/sql/parsers/tree" plan2 "github.com/matrixorigin/matrixone/pkg/sql/plan" "github.com/matrixorigin/matrixone/pkg/util/executor" + "github.com/matrixorigin/matrixone/pkg/vectorindex/idxcron" "github.com/matrixorigin/matrixone/pkg/vm/engine" "go.uber.org/zap" ) @@ -169,6 +170,12 @@ func (s *Scope) AlterTableCopy(c *Compile) error { return err } + // Idxcron: remove index update tasks with temp table id + err = DropAllIndexUpdateTasks(c, newTmpTableDef, dbName, qry.CopyTableDef.Name) + if err != nil { + return err + } + // 6. copy the original table data to the temporary replica table err = c.runSqlWithOptions(qry.InsertTmpDataSql, opt) if err != nil { @@ -267,22 +274,50 @@ func (s *Scope) AlterTableCopy(c *Compile) error { continue } - valid, err := checkValidIndexCdc(newTableDef, indexDef.IndexName) - if err != nil { - return err + { + // ISCP + valid, err := checkValidIndexCdc(newTableDef, indexDef.IndexName) + if err != nil { + return err + } + + if valid { + // index table may not be fully sync'd with source table via ISCP during alter table + // clone index table (with ISCP) may not be a complete clone + // so register ISCP job with startFromNow = false + sinker_type := getSinkerTypeFromAlgo(indexDef.IndexAlgo) + err = CreateIndexCdcTask(c, dbName, newTableDef.Name, indexDef.IndexName, sinker_type, false, "") + if err != nil { + return err + } + + logutil.Infof("ISCP register unaffected index db=%s, table=%s, index=%s", dbName, newTableDef.Name, indexDef.IndexName) + } } - if valid { - // index table may not be fully sync'd with source table via ISCP during alter table - // clone index table (with ISCP) may not be a complete clone - // so register ISCP job with startFromNow = false - sinker_type := getSinkerTypeFromAlgo(indexDef.IndexAlgo) - err = CreateIndexCdcTask(c, dbName, newTableDef.Name, indexDef.IndexName, sinker_type, false, "") + { + // idxcron + metadata, _, err := getIvfflatMetadata(c) if err != nil { return err } - logutil.Infof("ISCP register unaffected index db=%s, table=%s, index=%s", dbName, newTableDef.Name, indexDef.IndexName) + if catalog.IsIvfIndexAlgo(indexDef.IndexAlgo) { + + err = idxcron.RegisterUpdate(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + id, + dbName, + newTableDef.Name, + indexDef.IndexName, + idxcron.Action_Ivfflat_Reindex, + string(metadata)) + + if err != nil { + return err + } + } } unaffectedIndexProcessed[indexDef.IndexName] = true @@ -326,7 +361,7 @@ func (s *Scope) AlterTableCopy(c *Compile) error { case catalog.MoIndexIvfFlatAlgo.ToString(): err = s.handleVectorIvfFlatIndex( c, id, extra, dbSource, multiTableIndex.IndexDefs, - qry.Database, newTableDef, nil, + qry.Database, newTableDef, nil, false, ) case catalog.MoIndexHnswAlgo.ToString(): err = s.handleVectorHnswIndex( diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 3bf5af2d6338d..8923efadcd735 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -58,6 +58,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/util/executor" "github.com/matrixorigin/matrixone/pkg/util/trace" "github.com/matrixorigin/matrixone/pkg/vectorindex/cache" + "github.com/matrixorigin/matrixone/pkg/vectorindex/idxcron" "github.com/matrixorigin/matrixone/pkg/vm/engine" "github.com/matrixorigin/matrixone/pkg/vm/process" "go.uber.org/zap" @@ -247,6 +248,12 @@ func (s *Scope) DropDatabase(c *Compile) error { return err } + // 6.unregister index update + err = idxcron.UnregisterUpdateByDbName(c.proc.Ctx, c.proc.GetService(), c.proc.GetTxnOperator(), dbName) + if err != nil { + return err + } + return err } @@ -604,6 +611,17 @@ func (s *Scope) AlterTableInplace(c *Compile) error { return err } + // unregister index update + err = idxcron.UnregisterUpdate(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + oTableDef.TblId, + constraintName, + idxcron.Action_Wildcard) + if err != nil { + return err + } + // Avoid modifying slice directly during iteration oTableDef.Indexes = notDroppedIndex extra.IndexTables = newIndexes @@ -675,7 +693,7 @@ func (s *Scope) AlterTableInplace(c *Compile) error { for _, multiTableIndex := range multiTableIndexes { switch multiTableIndex.IndexAlgo { // no need for catalog.ToLower() here case catalog.MoIndexIvfFlatAlgo.ToString(): - err = s.handleVectorIvfFlatIndex(c, tblId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, oTableDef, indexInfo) + err = s.handleVectorIvfFlatIndex(c, tblId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, oTableDef, indexInfo, false) case catalog.MoIndexHnswAlgo.ToString(): err = s.handleVectorHnswIndex(c, tblId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, oTableDef, indexInfo) } @@ -743,23 +761,24 @@ func (s *Scope) AlterTableInplace(c *Compile) error { // 2.a update AlgoParams for the index to be re-indexed // NOTE: this will throw error if the algo type is not supported for reindex. // So Step 4. will not be executed if error is thrown here. - newAlgoParamsMap[catalog.IndexAlgoParamLists] = fmt.Sprintf("%d", tableAlterIndex.IndexAlgoParamList) - - // 2.b generate new AlgoParams string - newAlgoParams, err := catalog.IndexParamsMapToJsonString(newAlgoParamsMap) - if err != nil { - return err - } + if tableAlterIndex.IndexAlgoParamList > 0 { + newAlgoParamsMap[catalog.IndexAlgoParamLists] = fmt.Sprintf("%d", tableAlterIndex.IndexAlgoParamList) + // 2.b generate new AlgoParams string + newAlgoParams, err := catalog.IndexParamsMapToJsonString(newAlgoParamsMap) + if err != nil { + return err + } - // 3.a Update IndexDef and TableDef - alterIndex.IndexAlgoParams = newAlgoParams - oTableDef.Indexes[i].IndexAlgoParams = newAlgoParams + // 3.a Update IndexDef and TableDef + alterIndex.IndexAlgoParams = newAlgoParams + oTableDef.Indexes[i].IndexAlgoParams = newAlgoParams - // 3.b Update mo_catalog.mo_indexes - updateSql := fmt.Sprintf(updateMoIndexesAlgoParams, newAlgoParams, oTableDef.TblId, alterIndex.IndexName) - err = c.runSql(updateSql) - if err != nil { - return err + // 3.b Update mo_catalog.mo_indexes + updateSql := fmt.Sprintf(updateMoIndexesAlgoParams, newAlgoParams, oTableDef.TblId, alterIndex.IndexName) + err = c.runSql(updateSql) + if err != nil { + return err + } } case catalog.MoIndexHnswAlgo.ToString(): // PASS @@ -782,7 +801,7 @@ func (s *Scope) AlterTableInplace(c *Compile) error { for _, multiTableIndex := range multiTableIndexes { switch multiTableIndex.IndexAlgo { case catalog.MoIndexIvfFlatAlgo.ToString(): - err = s.handleVectorIvfFlatIndex(c, tblId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, oTableDef, nil) + err = s.handleVectorIvfFlatIndex(c, tblId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, oTableDef, nil, tableAlterIndex.ForceSync) case catalog.MoIndexHnswAlgo.ToString(): // TODO: we should call refresh Hnsw Index function instead of CreateHnswIndex function err = s.handleVectorHnswIndex(c, tblId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, oTableDef, nil) @@ -909,6 +928,7 @@ func (s *Scope) AlterTableInplace(c *Compile) error { if req.Kind == api.AlterKind_RenameTable { op, ok := req.Operation.(*api.AlterTableReq_RenameTable) if ok { + // iscp err = iscp.RenameSrcTable(c.proc.Ctx, c.proc.GetService(), c.proc.GetTxnOperator(), @@ -919,6 +939,18 @@ func (s *Scope) AlterTableInplace(c *Compile) error { if err != nil { return err } + + // idxcron + err = idxcron.RenameSrcTable(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + req.DbId, + req.TableId, + op.RenameTable.OldName, + op.RenameTable.NewName) + if err != nil { + return err + } } } } @@ -1513,6 +1545,12 @@ func (s *Scope) CreateTable(c *Compile) error { if err != nil { return err } + + // register index update for IVFFLAT + err = CreateAllIndexUpdateTasks(c, idxdef.Indexes, dbName, tblName, newRelation.GetTableID(c.proc.Ctx)) + if err != nil { + return err + } } } @@ -1942,7 +1980,7 @@ func (s *Scope) doCreateIndex( for _, multiTableIndex := range multiTableIndexes { switch multiTableIndex.IndexAlgo { case catalog.MoIndexIvfFlatAlgo.ToString(): - err = s.handleVectorIvfFlatIndex(c, tableId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, originalTableDef, indexInfo) + err = s.handleVectorIvfFlatIndex(c, tableId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, originalTableDef, indexInfo, false) case catalog.MoIndexHnswAlgo.ToString(): err = s.handleVectorHnswIndex(c, tableId, extra, dbSource, multiTableIndex.IndexDefs, qry.Database, originalTableDef, indexInfo) } @@ -2061,6 +2099,7 @@ func (s *Scope) handleVectorIvfFlatIndex( qryDatabase string, originalTableDef *plan.TableDef, indexInfo *plan.CreateTable, + forceSync bool, ) error { // 1. static check if len(indexDefs) != 3 { @@ -2102,12 +2141,13 @@ func (s *Scope) handleVectorIvfFlatIndex( // 4.b populate centroids table err = s.handleIvfIndexCentroidsTable(c, indexDefs[catalog.SystemSI_IVFFLAT_TblType_Centroids], qryDatabase, originalTableDef, totalCnt, - indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexTableName) + indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexTableName, + forceSync) if err != nil { return err } - if !async { + if !async || forceSync { // 4.c populate entries table err = s.handleIvfIndexEntriesTable(c, indexDefs[catalog.SystemSI_IVFFLAT_TblType_Entries], qryDatabase, originalTableDef, indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexTableName, @@ -2127,24 +2167,12 @@ func (s *Scope) handleVectorIvfFlatIndex( return err } - /* - // create ISCP job when Async is true - if async { - // unregister ISCP job so that it can restart index update from ts=0 - err = DropIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexName) - if err != nil { - return err - } + // 4.e register auto index update (reindex) + err = s.handleIvfIndexRegisterUpdate(c, indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata], qryDatabase, originalTableDef) + if err != nil { + return err + } - logutil.Infof("Ivfflat index Async is true") - sinker_type := getSinkerTypeFromAlgo(catalog.MoIndexIvfFlatAlgo.ToString()) - err = CreateIndexCdcTask(c, qryDatabase, originalTableDef.Name, - indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexName, sinker_type, false) - if err != nil { - return err - } - } - */ return nil } @@ -2207,7 +2235,18 @@ func (s *Scope) DropIndex(c *Compile) error { return err } - //4. delete index object from mo_catalog.mo_indexes + // 4. unregister index update + err = idxcron.UnregisterUpdate(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + oldTableDef.TblId, + qry.IndexName, + idxcron.Action_Wildcard) + if err != nil { + return err + } + + //5. delete index object from mo_catalog.mo_indexes deleteSql := fmt.Sprintf(deleteMoIndexesWithTableIdAndIndexNameFormat, r.GetTableID(c.proc.Ctx), qry.IndexName) err = c.runSql(deleteSql) if err != nil { @@ -2737,6 +2776,12 @@ func (s *Scope) DropTable(c *Compile) error { return err } + // unregister index update by Table Id + err = DropAllIndexUpdateTasks(c, rel.GetTableDef(c.proc.Ctx), qry.Database, qry.Table) + if err != nil { + return err + } + // delete all index objects record of the table in mo_catalog.mo_indexes if !qry.IsView && qry.Database != catalog.MO_CATALOG && qry.Table != catalog.MO_INDEXES { if qry.GetTableDef().Pkey != nil || len(qry.GetTableDef().Indexes) > 0 { diff --git a/pkg/sql/compile/ddl_index_algo.go b/pkg/sql/compile/ddl_index_algo.go index df0cd811696f7..7f9cae3efba2a 100644 --- a/pkg/sql/compile/ddl_index_algo.go +++ b/pkg/sql/compile/ddl_index_algo.go @@ -30,6 +30,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/util/executor" "github.com/matrixorigin/matrixone/pkg/vectorindex" "github.com/matrixorigin/matrixone/pkg/vectorindex/cache" + "github.com/matrixorigin/matrixone/pkg/vectorindex/idxcron" "github.com/matrixorigin/matrixone/pkg/vm/engine" ) @@ -232,7 +233,7 @@ func (s *Scope) handleIvfIndexMetaTable(c *Compile, indexDef *plan.IndexDef, qry } func (s *Scope) handleIvfIndexCentroidsTable(c *Compile, indexDef *plan.IndexDef, - qryDatabase string, originalTableDef *plan.TableDef, totalCnt int64, metadataTableName string) error { + qryDatabase string, originalTableDef *plan.TableDef, totalCnt int64, metadataTableName string, forceSync bool) error { var cfg vectorindex.IndexTableConfig src_alias := "src" @@ -292,7 +293,7 @@ func (s *Scope) handleIvfIndexCentroidsTable(c *Compile, indexDef *plan.IndexDef if err != nil { return err } - cfg.KmeansTrainPercent = val.(int64) + cfg.KmeansTrainPercent = val.(float64) val, err = c.proc.GetResolveVariableFunc()("kmeans_max_iteration", true, false) if err != nil { @@ -323,18 +324,54 @@ func (s *Scope) handleIvfIndexCentroidsTable(c *Compile, indexDef *plan.IndexDef } if async { - // create ISCP job when Async is true - // unregister ISCP job so that it can restart index update from ts=0 - err = DropIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, indexDef.IndexName) - if err != nil { - return err - } + if forceSync { + // background reindex must use force_sync = true so build index to run in single transaction - logutil.Infof("Ivfflat index Async is true") - sinker_type := getSinkerTypeFromAlgo(catalog.MoIndexIvfFlatAlgo.ToString()) - err = CreateIndexCdcTask(c, qryDatabase, originalTableDef.Name, indexDef.IndexName, sinker_type, false, sql) - if err != nil { - return err + // build centroid in synchronous mode + err = s.logTimestamp(c, qryDatabase, metadataTableName, "clustering_start") + if err != nil { + return err + } + + err = c.runSql(sql) + if err != nil { + return err + } + + err = s.logTimestamp(c, qryDatabase, metadataTableName, "clustering_end") + if err != nil { + return err + } + + // if forceSync == true, start index update from ts = transaction start time + err = DropIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, indexDef.IndexName) + if err != nil { + return err + } + + logutil.Infof("Ivfflat index Async = true, forceSync = true") + sinker_type := getSinkerTypeFromAlgo(catalog.MoIndexIvfFlatAlgo.ToString()) + err = CreateIndexCdcTask(c, qryDatabase, originalTableDef.Name, indexDef.IndexName, sinker_type, true, "") + if err != nil { + return err + } + + } else { + // if forceSync == false, start index update from ts = 0 + + // create ISCP job when Async is true + // unregister ISCP job so that it can restart index update from ts=0 + err = DropIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, indexDef.IndexName) + if err != nil { + return err + } + + logutil.Infof("Ivfflat index Async is true") + sinker_type := getSinkerTypeFromAlgo(catalog.MoIndexIvfFlatAlgo.ToString()) + err = CreateIndexCdcTask(c, qryDatabase, originalTableDef.Name, indexDef.IndexName, sinker_type, false, sql) + if err != nil { + return err + } } } else { @@ -452,6 +489,30 @@ func (s *Scope) handleIvfIndexEntriesTable(c *Compile, indexDef *plan.IndexDef, return nil } +func (s *Scope) handleIvfIndexRegisterUpdate(c *Compile, indexDef *plan.IndexDef, qryDatabase string, originalTableDef *plan.TableDef) error { + + metadata, frontend, err := getIvfflatMetadata(c) + if err != nil { + return err + } + + if !frontend { + // this function call is from background so ignore it + logutil.Infof("Background invoke reindex and ignore register index update function call") + return nil + } + + return idxcron.RegisterUpdate(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + originalTableDef.TblId, + qryDatabase, + originalTableDef.Name, + indexDef.IndexName, + idxcron.Action_Ivfflat_Reindex, + string(metadata)) +} + func (s *Scope) logTimestamp(c *Compile, qryDatabase, metadataTableName, metrics string) error { return c.runSql(fmt.Sprintf("INSERT INTO `%s`.`%s` (%s, %s) "+ " VALUES ('%s', NOW()) "+ diff --git a/pkg/sql/compile/iscp_util.go b/pkg/sql/compile/iscp_util.go index 8a4b4d4287185..6f307376bb865 100644 --- a/pkg/sql/compile/iscp_util.go +++ b/pkg/sql/compile/iscp_util.go @@ -22,6 +22,8 @@ import ( "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/txn/client" + "github.com/matrixorigin/matrixone/pkg/vectorindex/idxcron" + "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" ) var ( @@ -207,3 +209,167 @@ func CreateAllIndexCdcTasks(c *Compile, indexes []*plan.IndexDef, dbname string, } return nil } + +func getIvfflatMetadata(c *Compile) (metadata []byte, frontend bool, err error) { + var val any + + // only frontend has ivf_threads_search variable declared + _, err = c.proc.GetResolveVariableFunc()("ivf_threads_search", true, false) + if err == nil { + frontend = true + } + + // When Clone, variables are nil. Set variable to default value + val, err = c.proc.GetResolveVariableFunc()("ivf_threads_build", true, false) + if err != nil { + return + } + threadsBuild := int64(0) + if val != nil { + threadsBuild = val.(int64) + } + + val, err = c.proc.GetResolveVariableFunc()("kmeans_train_percent", true, false) + if err != nil { + return + } + kmeansTrainPercent := float64(10) + if val != nil { + kmeansTrainPercent = val.(float64) + } + + val, err = c.proc.GetResolveVariableFunc()("kmeans_max_iteration", true, false) + if err != nil { + return + } + kmeansMaxIteration := int64(20) + if val != nil { + kmeansMaxIteration = val.(int64) + } + + val, err = c.proc.GetResolveVariableFunc()("lower_case_table_names", true, false) + if err != nil { + return + } + lowerCaseTableNames := int64(1) + if val != nil { + lowerCaseTableNames = val.(int64) + } + + val, err = c.proc.GetResolveVariableFunc()("experimental_ivf_index", true, false) + if err != nil { + return + } + experimentalIvfIndex := int8(1) + if val != nil { + experimentalIvfIndex = val.(int8) + } + + w := sqlexec.NewMetadataWriter() + w.AddInt("ivf_threads_build", threadsBuild) + w.AddFloat("kmeans_train_percent", kmeansTrainPercent) + w.AddInt("kmeans_max_iteration", kmeansMaxIteration) + w.AddInt("lower_case_table_names", lowerCaseTableNames) + w.AddInt8("experimental_ivf_index", experimentalIvfIndex) + + metadata, err = w.Marshal() + if err != nil { + return + } + + return +} + +func checkValidIndexUpdateByIndexdef(idx *plan.IndexDef) (bool, error) { + if idx.TableExist && catalog.IsIvfIndexAlgo(idx.IndexAlgo) { + return true, nil + } + return false, nil +} + +// idxcron function +func CreateAllIndexUpdateTasks(c *Compile, indexes []*plan.IndexDef, dbname string, tablename string, tableid uint64) (err error) { + var ( + ivf_metadata []byte + ) + + if c.proc.GetResolveVariableFunc() == nil { + return + } + + idxmap := make(map[string]bool) + for _, idx := range indexes { + _, ok := idxmap[idx.IndexName] + if ok { + continue + } + + valid := false + valid, err = checkValidIndexUpdateByIndexdef(idx) + if err != nil { + return + } + if valid { + idxmap[idx.IndexName] = true + + if len(idx.IndexName) == 0 { + // skip empty index name because alter reindex sql don't support empty index name + continue + } + + if ivf_metadata == nil { + ivf_metadata, _, err = getIvfflatMetadata(c) + if err != nil { + return + } + } + + err = idxcron.RegisterUpdate(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + tableid, + dbname, + tablename, + idx.IndexName, + idxcron.Action_Ivfflat_Reindex, + string(ivf_metadata)) + if err != nil { + return + } + } + } + return +} + +// drop all cdc tasks according to tableDef +func DropAllIndexUpdateTasks(c *Compile, tabledef *plan.TableDef, dbname string, tablename string) (err error) { + idxmap := make(map[string]bool) + for _, idx := range tabledef.Indexes { + + _, ok := idxmap[idx.IndexName] + if ok { + continue + } + + valid := false + valid, err = checkValidIndexUpdateByIndexdef(idx) + if err != nil { + return + } + if valid { + idxmap[idx.IndexName] = true + //hasindex = true + + err = idxcron.UnregisterUpdate(c.proc.Ctx, + c.proc.GetService(), + c.proc.GetTxnOperator(), + tabledef.TblId, + idx.IndexName, + idxcron.Action_Ivfflat_Reindex) + if err != nil { + return + } + } + } + return +} diff --git a/pkg/sql/parsers/dialect/mysql/keywords.go b/pkg/sql/parsers/dialect/mysql/keywords.go index c9432f82cd38a..0337f0ae0ab05 100644 --- a/pkg/sql/parsers/dialect/mysql/keywords.go +++ b/pkg/sql/parsers/dialect/mysql/keywords.go @@ -199,6 +199,7 @@ func init() { "for": FOR, "of": OF, "force": FORCE, + "force_sync": FORCE_SYNC, "foreign": FOREIGN, "format": FORMAT, "from": FROM, diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql.go b/pkg/sql/parsers/dialect/mysql/mysql_sql.go index 37d02f69374c1..077e10bdbd4f0 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.go @@ -382,302 +382,303 @@ const EF_SEARCH = 57705 const EF_CONSTRUCTION = 57706 const M = 57707 const ASYNC = 57708 -const EXPIRE = 57709 -const ACCOUNT = 57710 -const ACCOUNTS = 57711 -const UNLOCK = 57712 -const DAY = 57713 -const NEVER = 57714 -const PUMP = 57715 -const MYSQL_COMPATIBILITY_MODE = 57716 -const UNIQUE_CHECK_ON_AUTOINCR = 57717 -const MODIFY = 57718 -const CHANGE = 57719 -const SECOND = 57720 -const ASCII = 57721 -const COALESCE = 57722 -const COLLATION = 57723 -const HOUR = 57724 -const MICROSECOND = 57725 -const MINUTE = 57726 -const MONTH = 57727 -const QUARTER = 57728 -const REPEAT = 57729 -const REVERSE = 57730 -const ROW_COUNT = 57731 -const WEEK = 57732 -const REVOKE = 57733 -const FUNCTION = 57734 -const PRIVILEGES = 57735 -const TABLESPACE = 57736 -const EXECUTE = 57737 -const SUPER = 57738 -const GRANT = 57739 -const OPTION = 57740 -const REFERENCES = 57741 -const REPLICATION = 57742 -const SLAVE = 57743 -const CLIENT = 57744 -const USAGE = 57745 -const RELOAD = 57746 -const FILE = 57747 -const TEMPORARY = 57748 -const ROUTINE = 57749 -const EVENT = 57750 -const SHUTDOWN = 57751 -const NULLX = 57752 -const AUTO_INCREMENT = 57753 -const APPROXNUM = 57754 -const ENGINES = 57755 -const LOW_CARDINALITY = 57756 -const AUTOEXTEND_SIZE = 57757 -const ADMIN_NAME = 57758 -const RANDOM = 57759 -const SUSPEND = 57760 -const ATTRIBUTE = 57761 -const HISTORY = 57762 -const REUSE = 57763 -const CURRENT = 57764 -const OPTIONAL = 57765 -const FAILED_LOGIN_ATTEMPTS = 57766 -const PASSWORD_LOCK_TIME = 57767 -const UNBOUNDED = 57768 -const SECONDARY = 57769 -const RESTRICTED = 57770 -const USER = 57771 -const IDENTIFIED = 57772 -const CIPHER = 57773 -const ISSUER = 57774 -const X509 = 57775 -const SUBJECT = 57776 -const SAN = 57777 -const REQUIRE = 57778 -const SSL = 57779 -const NONE = 57780 -const PASSWORD = 57781 -const SHARED = 57782 -const EXCLUSIVE = 57783 -const MAX_QUERIES_PER_HOUR = 57784 -const MAX_UPDATES_PER_HOUR = 57785 -const MAX_CONNECTIONS_PER_HOUR = 57786 -const MAX_USER_CONNECTIONS = 57787 -const FORMAT = 57788 -const VERBOSE = 57789 -const CONNECTION = 57790 -const TRIGGERS = 57791 -const PROFILES = 57792 -const LOAD = 57793 -const INLINE = 57794 -const INFILE = 57795 -const TERMINATED = 57796 -const OPTIONALLY = 57797 -const ENCLOSED = 57798 -const ESCAPED = 57799 -const STARTING = 57800 -const LINES = 57801 -const ROWS = 57802 -const IMPORT = 57803 -const DISCARD = 57804 -const JSONTYPE = 57805 -const MODUMP = 57806 -const OVER = 57807 -const PRECEDING = 57808 -const FOLLOWING = 57809 -const GROUPS = 57810 -const DATABASES = 57811 -const TABLES = 57812 -const SEQUENCES = 57813 -const EXTENDED = 57814 -const FULL = 57815 -const PROCESSLIST = 57816 -const FIELDS = 57817 -const COLUMNS = 57818 -const OPEN = 57819 -const ERRORS = 57820 -const WARNINGS = 57821 -const INDEXES = 57822 -const SCHEMAS = 57823 -const NODE = 57824 -const LOCKS = 57825 -const ROLES = 57826 -const TABLE_NUMBER = 57827 -const COLUMN_NUMBER = 57828 -const TABLE_VALUES = 57829 -const TABLE_SIZE = 57830 -const NAMES = 57831 -const GLOBAL = 57832 -const PERSIST = 57833 -const SESSION = 57834 -const ISOLATION = 57835 -const LEVEL = 57836 -const READ = 57837 -const WRITE = 57838 -const ONLY = 57839 -const REPEATABLE = 57840 -const COMMITTED = 57841 -const UNCOMMITTED = 57842 -const SERIALIZABLE = 57843 -const LOCAL = 57844 -const EVENTS = 57845 -const PLUGINS = 57846 -const CURRENT_TIMESTAMP = 57847 -const DATABASE = 57848 -const CURRENT_TIME = 57849 -const LOCALTIME = 57850 -const LOCALTIMESTAMP = 57851 -const UTC_DATE = 57852 -const UTC_TIME = 57853 -const UTC_TIMESTAMP = 57854 -const REPLACE = 57855 -const CONVERT = 57856 -const SEPARATOR = 57857 -const TIMESTAMPDIFF = 57858 -const TIMESTAMPADD = 57859 -const CURRENT_DATE = 57860 -const CURRENT_USER = 57861 -const CURRENT_ROLE = 57862 -const SECOND_MICROSECOND = 57863 -const MINUTE_MICROSECOND = 57864 -const MINUTE_SECOND = 57865 -const HOUR_MICROSECOND = 57866 -const HOUR_SECOND = 57867 -const HOUR_MINUTE = 57868 -const DAY_MICROSECOND = 57869 -const DAY_SECOND = 57870 -const DAY_MINUTE = 57871 -const DAY_HOUR = 57872 -const YEAR_MONTH = 57873 -const SQL_TSI_HOUR = 57874 -const SQL_TSI_DAY = 57875 -const SQL_TSI_WEEK = 57876 -const SQL_TSI_MONTH = 57877 -const SQL_TSI_QUARTER = 57878 -const SQL_TSI_YEAR = 57879 -const SQL_TSI_SECOND = 57880 -const SQL_TSI_MINUTE = 57881 -const RECURSIVE = 57882 -const CONFIG = 57883 -const DRAINER = 57884 -const SOURCE = 57885 -const STREAM = 57886 -const HEADERS = 57887 -const CONNECTOR = 57888 -const CONNECTORS = 57889 -const DAEMON = 57890 -const PAUSE = 57891 -const CANCEL = 57892 -const TASK = 57893 -const RESUME = 57894 -const MATCH = 57895 -const AGAINST = 57896 -const BOOLEAN = 57897 -const LANGUAGE = 57898 -const QUERY = 57899 -const EXPANSION = 57900 -const WITHOUT = 57901 -const VALIDATION = 57902 -const UPGRADE = 57903 -const RETRY = 57904 -const ADDDATE = 57905 -const BIT_AND = 57906 -const BIT_OR = 57907 -const BIT_XOR = 57908 -const CAST = 57909 -const COUNT = 57910 -const APPROX_COUNT = 57911 -const APPROX_COUNT_DISTINCT = 57912 -const SERIAL_EXTRACT = 57913 -const APPROX_PERCENTILE = 57914 -const CURDATE = 57915 -const CURTIME = 57916 -const DATE_ADD = 57917 -const DATE_SUB = 57918 -const EXTRACT = 57919 -const GROUP_CONCAT = 57920 -const MAX = 57921 -const MID = 57922 -const MIN = 57923 -const NOW = 57924 -const POSITION = 57925 -const SESSION_USER = 57926 -const STD = 57927 -const STDDEV = 57928 -const MEDIAN = 57929 -const CLUSTER_CENTERS = 57930 -const KMEANS = 57931 -const STDDEV_POP = 57932 -const STDDEV_SAMP = 57933 -const SUBDATE = 57934 -const SUBSTR = 57935 -const SUBSTRING = 57936 -const SUM = 57937 -const SYSDATE = 57938 -const SYSTEM_USER = 57939 -const TRANSLATE = 57940 -const TRIM = 57941 -const VARIANCE = 57942 -const VAR_POP = 57943 -const VAR_SAMP = 57944 -const AVG = 57945 -const RANK = 57946 -const ROW_NUMBER = 57947 -const DENSE_RANK = 57948 -const BIT_CAST = 57949 -const BITMAP_BIT_POSITION = 57950 -const BITMAP_BUCKET_NUMBER = 57951 -const BITMAP_COUNT = 57952 -const BITMAP_CONSTRUCT_AGG = 57953 -const BITMAP_OR_AGG = 57954 -const NEXTVAL = 57955 -const SETVAL = 57956 -const CURRVAL = 57957 -const LASTVAL = 57958 -const ARROW = 57959 -const ROW = 57960 -const OUTFILE = 57961 -const HEADER = 57962 -const MAX_FILE_SIZE = 57963 -const FORCE_QUOTE = 57964 -const PARALLEL = 57965 -const STRICT = 57966 -const UNUSED = 57967 -const BINDINGS = 57968 -const DO = 57969 -const DECLARE = 57970 -const LOOP = 57971 -const WHILE = 57972 -const LEAVE = 57973 -const ITERATE = 57974 -const UNTIL = 57975 -const CALL = 57976 -const PREV = 57977 -const SLIDING = 57978 -const FILL = 57979 -const SPBEGIN = 57980 -const BACKEND = 57981 -const SERVERS = 57982 -const HANDLER = 57983 -const PERCENT = 57984 -const SAMPLE = 57985 -const MO_TS = 57986 -const PITR = 57987 -const RECOVERY_WINDOW = 57988 -const INTERNAL = 57989 -const CDC = 57990 -const GROUPING = 57991 -const SETS = 57992 -const CUBE = 57993 -const ROLLUP = 57994 -const LOGSERVICE = 57995 -const REPLICAS = 57996 -const STORES = 57997 -const SETTINGS = 57998 -const KILL = 57999 -const BACKUP = 58000 -const FILESYSTEM = 58001 -const PARALLELISM = 58002 -const RESTORE = 58003 -const QUERY_RESULT = 58004 +const FORCE_SYNC = 57709 +const EXPIRE = 57710 +const ACCOUNT = 57711 +const ACCOUNTS = 57712 +const UNLOCK = 57713 +const DAY = 57714 +const NEVER = 57715 +const PUMP = 57716 +const MYSQL_COMPATIBILITY_MODE = 57717 +const UNIQUE_CHECK_ON_AUTOINCR = 57718 +const MODIFY = 57719 +const CHANGE = 57720 +const SECOND = 57721 +const ASCII = 57722 +const COALESCE = 57723 +const COLLATION = 57724 +const HOUR = 57725 +const MICROSECOND = 57726 +const MINUTE = 57727 +const MONTH = 57728 +const QUARTER = 57729 +const REPEAT = 57730 +const REVERSE = 57731 +const ROW_COUNT = 57732 +const WEEK = 57733 +const REVOKE = 57734 +const FUNCTION = 57735 +const PRIVILEGES = 57736 +const TABLESPACE = 57737 +const EXECUTE = 57738 +const SUPER = 57739 +const GRANT = 57740 +const OPTION = 57741 +const REFERENCES = 57742 +const REPLICATION = 57743 +const SLAVE = 57744 +const CLIENT = 57745 +const USAGE = 57746 +const RELOAD = 57747 +const FILE = 57748 +const TEMPORARY = 57749 +const ROUTINE = 57750 +const EVENT = 57751 +const SHUTDOWN = 57752 +const NULLX = 57753 +const AUTO_INCREMENT = 57754 +const APPROXNUM = 57755 +const ENGINES = 57756 +const LOW_CARDINALITY = 57757 +const AUTOEXTEND_SIZE = 57758 +const ADMIN_NAME = 57759 +const RANDOM = 57760 +const SUSPEND = 57761 +const ATTRIBUTE = 57762 +const HISTORY = 57763 +const REUSE = 57764 +const CURRENT = 57765 +const OPTIONAL = 57766 +const FAILED_LOGIN_ATTEMPTS = 57767 +const PASSWORD_LOCK_TIME = 57768 +const UNBOUNDED = 57769 +const SECONDARY = 57770 +const RESTRICTED = 57771 +const USER = 57772 +const IDENTIFIED = 57773 +const CIPHER = 57774 +const ISSUER = 57775 +const X509 = 57776 +const SUBJECT = 57777 +const SAN = 57778 +const REQUIRE = 57779 +const SSL = 57780 +const NONE = 57781 +const PASSWORD = 57782 +const SHARED = 57783 +const EXCLUSIVE = 57784 +const MAX_QUERIES_PER_HOUR = 57785 +const MAX_UPDATES_PER_HOUR = 57786 +const MAX_CONNECTIONS_PER_HOUR = 57787 +const MAX_USER_CONNECTIONS = 57788 +const FORMAT = 57789 +const VERBOSE = 57790 +const CONNECTION = 57791 +const TRIGGERS = 57792 +const PROFILES = 57793 +const LOAD = 57794 +const INLINE = 57795 +const INFILE = 57796 +const TERMINATED = 57797 +const OPTIONALLY = 57798 +const ENCLOSED = 57799 +const ESCAPED = 57800 +const STARTING = 57801 +const LINES = 57802 +const ROWS = 57803 +const IMPORT = 57804 +const DISCARD = 57805 +const JSONTYPE = 57806 +const MODUMP = 57807 +const OVER = 57808 +const PRECEDING = 57809 +const FOLLOWING = 57810 +const GROUPS = 57811 +const DATABASES = 57812 +const TABLES = 57813 +const SEQUENCES = 57814 +const EXTENDED = 57815 +const FULL = 57816 +const PROCESSLIST = 57817 +const FIELDS = 57818 +const COLUMNS = 57819 +const OPEN = 57820 +const ERRORS = 57821 +const WARNINGS = 57822 +const INDEXES = 57823 +const SCHEMAS = 57824 +const NODE = 57825 +const LOCKS = 57826 +const ROLES = 57827 +const TABLE_NUMBER = 57828 +const COLUMN_NUMBER = 57829 +const TABLE_VALUES = 57830 +const TABLE_SIZE = 57831 +const NAMES = 57832 +const GLOBAL = 57833 +const PERSIST = 57834 +const SESSION = 57835 +const ISOLATION = 57836 +const LEVEL = 57837 +const READ = 57838 +const WRITE = 57839 +const ONLY = 57840 +const REPEATABLE = 57841 +const COMMITTED = 57842 +const UNCOMMITTED = 57843 +const SERIALIZABLE = 57844 +const LOCAL = 57845 +const EVENTS = 57846 +const PLUGINS = 57847 +const CURRENT_TIMESTAMP = 57848 +const DATABASE = 57849 +const CURRENT_TIME = 57850 +const LOCALTIME = 57851 +const LOCALTIMESTAMP = 57852 +const UTC_DATE = 57853 +const UTC_TIME = 57854 +const UTC_TIMESTAMP = 57855 +const REPLACE = 57856 +const CONVERT = 57857 +const SEPARATOR = 57858 +const TIMESTAMPDIFF = 57859 +const TIMESTAMPADD = 57860 +const CURRENT_DATE = 57861 +const CURRENT_USER = 57862 +const CURRENT_ROLE = 57863 +const SECOND_MICROSECOND = 57864 +const MINUTE_MICROSECOND = 57865 +const MINUTE_SECOND = 57866 +const HOUR_MICROSECOND = 57867 +const HOUR_SECOND = 57868 +const HOUR_MINUTE = 57869 +const DAY_MICROSECOND = 57870 +const DAY_SECOND = 57871 +const DAY_MINUTE = 57872 +const DAY_HOUR = 57873 +const YEAR_MONTH = 57874 +const SQL_TSI_HOUR = 57875 +const SQL_TSI_DAY = 57876 +const SQL_TSI_WEEK = 57877 +const SQL_TSI_MONTH = 57878 +const SQL_TSI_QUARTER = 57879 +const SQL_TSI_YEAR = 57880 +const SQL_TSI_SECOND = 57881 +const SQL_TSI_MINUTE = 57882 +const RECURSIVE = 57883 +const CONFIG = 57884 +const DRAINER = 57885 +const SOURCE = 57886 +const STREAM = 57887 +const HEADERS = 57888 +const CONNECTOR = 57889 +const CONNECTORS = 57890 +const DAEMON = 57891 +const PAUSE = 57892 +const CANCEL = 57893 +const TASK = 57894 +const RESUME = 57895 +const MATCH = 57896 +const AGAINST = 57897 +const BOOLEAN = 57898 +const LANGUAGE = 57899 +const QUERY = 57900 +const EXPANSION = 57901 +const WITHOUT = 57902 +const VALIDATION = 57903 +const UPGRADE = 57904 +const RETRY = 57905 +const ADDDATE = 57906 +const BIT_AND = 57907 +const BIT_OR = 57908 +const BIT_XOR = 57909 +const CAST = 57910 +const COUNT = 57911 +const APPROX_COUNT = 57912 +const APPROX_COUNT_DISTINCT = 57913 +const SERIAL_EXTRACT = 57914 +const APPROX_PERCENTILE = 57915 +const CURDATE = 57916 +const CURTIME = 57917 +const DATE_ADD = 57918 +const DATE_SUB = 57919 +const EXTRACT = 57920 +const GROUP_CONCAT = 57921 +const MAX = 57922 +const MID = 57923 +const MIN = 57924 +const NOW = 57925 +const POSITION = 57926 +const SESSION_USER = 57927 +const STD = 57928 +const STDDEV = 57929 +const MEDIAN = 57930 +const CLUSTER_CENTERS = 57931 +const KMEANS = 57932 +const STDDEV_POP = 57933 +const STDDEV_SAMP = 57934 +const SUBDATE = 57935 +const SUBSTR = 57936 +const SUBSTRING = 57937 +const SUM = 57938 +const SYSDATE = 57939 +const SYSTEM_USER = 57940 +const TRANSLATE = 57941 +const TRIM = 57942 +const VARIANCE = 57943 +const VAR_POP = 57944 +const VAR_SAMP = 57945 +const AVG = 57946 +const RANK = 57947 +const ROW_NUMBER = 57948 +const DENSE_RANK = 57949 +const BIT_CAST = 57950 +const BITMAP_BIT_POSITION = 57951 +const BITMAP_BUCKET_NUMBER = 57952 +const BITMAP_COUNT = 57953 +const BITMAP_CONSTRUCT_AGG = 57954 +const BITMAP_OR_AGG = 57955 +const NEXTVAL = 57956 +const SETVAL = 57957 +const CURRVAL = 57958 +const LASTVAL = 57959 +const ARROW = 57960 +const ROW = 57961 +const OUTFILE = 57962 +const HEADER = 57963 +const MAX_FILE_SIZE = 57964 +const FORCE_QUOTE = 57965 +const PARALLEL = 57966 +const STRICT = 57967 +const UNUSED = 57968 +const BINDINGS = 57969 +const DO = 57970 +const DECLARE = 57971 +const LOOP = 57972 +const WHILE = 57973 +const LEAVE = 57974 +const ITERATE = 57975 +const UNTIL = 57976 +const CALL = 57977 +const PREV = 57978 +const SLIDING = 57979 +const FILL = 57980 +const SPBEGIN = 57981 +const BACKEND = 57982 +const SERVERS = 57983 +const HANDLER = 57984 +const PERCENT = 57985 +const SAMPLE = 57986 +const MO_TS = 57987 +const PITR = 57988 +const RECOVERY_WINDOW = 57989 +const INTERNAL = 57990 +const CDC = 57991 +const GROUPING = 57992 +const SETS = 57993 +const CUBE = 57994 +const ROLLUP = 57995 +const LOGSERVICE = 57996 +const REPLICAS = 57997 +const STORES = 57998 +const SETTINGS = 57999 +const KILL = 58000 +const BACKUP = 58001 +const FILESYSTEM = 58002 +const PARALLELISM = 58003 +const RESTORE = 58004 +const QUERY_RESULT = 58005 var yyToknames = [...]string{ "$end", @@ -1063,6 +1064,7 @@ var yyToknames = [...]string{ "EF_CONSTRUCTION", "M", "ASYNC", + "FORCE_SYNC", "EXPIRE", "ACCOUNT", "ACCOUNTS", @@ -1372,7 +1374,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line mysql_sql.y:13266 +//line mysql_sql.y:13277 //line yacctab:1 var yyExca = [...]int{ @@ -1384,326 +1386,318 @@ var yyExca = [...]int{ 24, 823, -2, 816, -1, 169, - 256, 1282, + 256, 1283, 258, 1155, - -2, 1210, + -2, 1211, -1, 196, 46, 646, 258, 646, 285, 653, 286, 653, - 497, 646, + 498, 646, -2, 681, -1, 236, - 683, 2069, + 684, 2070, -2, 545, -1, 559, - 683, 2193, + 684, 2194, -2, 422, -1, 616, - 683, 2251, + 684, 2252, -2, 420, -1, 617, - 683, 2252, + 684, 2253, -2, 421, -1, 618, - 683, 2253, + 684, 2254, -2, 423, -1, 759, 337, 189, - 469, 189, 470, 189, - -2, 1965, + 471, 189, + -2, 1966, -1, 826, - 88, 1743, - -2, 2129, + 88, 1744, + -2, 2130, -1, 827, - 88, 1762, - -2, 2100, - -1, 831, 88, 1763, - -2, 2128, + -2, 2101, + -1, 831, + 88, 1764, + -2, 2129, -1, 866, - 88, 1669, - -2, 2331, - -1, 867, 88, 1670, - -2, 2330, - -1, 868, + -2, 2332, + -1, 867, 88, 1671, - -2, 2320, + -2, 2331, + -1, 868, + 88, 1672, + -2, 2321, -1, 869, - 88, 2292, - -2, 2313, - -1, 870, 88, 2293, -2, 2314, - -1, 871, + -1, 870, 88, 2294, - -2, 2322, - -1, 872, + -2, 2315, + -1, 871, 88, 2295, - -2, 2302, - -1, 873, + -2, 2323, + -1, 872, 88, 2296, - -2, 2311, - -1, 874, + -2, 2303, + -1, 873, 88, 2297, - -2, 2323, - -1, 875, + -2, 2312, + -1, 874, 88, 2298, -2, 2324, - -1, 876, + -1, 875, 88, 2299, - -2, 2329, - -1, 877, + -2, 2325, + -1, 876, 88, 2300, - -2, 2334, - -1, 878, + -2, 2330, + -1, 877, 88, 2301, -2, 2335, + -1, 878, + 88, 2302, + -2, 2336, -1, 879, - 88, 1739, - -2, 2167, - -1, 880, 88, 1740, - -2, 1945, - -1, 881, + -2, 2168, + -1, 880, 88, 1741, - -2, 2176, - -1, 882, + -2, 1946, + -1, 881, 88, 1742, - -2, 1958, + -2, 2177, + -1, 882, + 88, 1743, + -2, 1959, -1, 884, - 88, 1745, - -2, 1967, + 88, 1746, + -2, 1968, -1, 886, - 88, 1747, - -2, 2200, + 88, 1748, + -2, 2201, -1, 888, - 88, 1750, - -2, 1988, + 88, 1751, + -2, 1989, -1, 890, - 88, 1752, - -2, 2212, - -1, 891, 88, 1753, - -2, 2211, - -1, 892, + -2, 2213, + -1, 891, 88, 1754, - -2, 2035, - -1, 893, + -2, 2212, + -1, 892, 88, 1755, - -2, 2124, + -2, 2036, + -1, 893, + 88, 1756, + -2, 2125, -1, 896, - 88, 1758, - -2, 2223, + 88, 1759, + -2, 2224, -1, 898, - 88, 1760, - -2, 2226, - -1, 899, 88, 1761, - -2, 2228, + -2, 2227, + -1, 899, + 88, 1762, + -2, 2229, -1, 900, - 88, 1764, - -2, 2235, - -1, 901, 88, 1765, - -2, 2109, - -1, 902, + -2, 2236, + -1, 901, 88, 1766, - -2, 2154, - -1, 903, + -2, 2110, + -1, 902, 88, 1767, - -2, 2119, - -1, 904, + -2, 2155, + -1, 903, 88, 1768, - -2, 2144, + -2, 2120, + -1, 904, + 88, 1769, + -2, 2145, -1, 915, - 88, 1647, - -2, 2325, - -1, 916, 88, 1648, -2, 2326, - -1, 917, + -1, 916, 88, 1649, -2, 2327, + -1, 917, + 88, 1650, + -2, 2328, -1, 1023, - 492, 681, 493, 681, + 494, 681, -2, 647, -1, 1074, - 130, 1945, - 141, 1945, - 171, 1945, - -2, 1916, + 130, 1946, + 141, 1946, + 171, 1946, + -2, 1917, -1, 1195, 24, 852, -2, 799, -1, 1307, 11, 823, 24, 823, - -2, 1523, + -2, 1524, -1, 1392, 24, 852, -2, 799, -1, 1762, - 88, 1815, - -2, 2126, - -1, 1763, 88, 1816, -2, 2127, + -1, 1763, + 88, 1817, + -2, 2128, -1, 2402, 89, 1025, -2, 1031, -1, 2418, - 113, 1202, - 158, 1202, - 205, 1202, - 208, 1202, - 298, 1202, - -2, 1195, + 113, 1203, + 158, 1203, + 205, 1203, + 208, 1203, + 298, 1203, + -2, 1196, -1, 2585, 11, 823, 24, 823, -2, 966, -1, 2619, - 89, 1902, - 172, 1902, - -2, 2111, + 89, 1903, + 172, 1903, + -2, 2112, -1, 2620, - 89, 1902, - 172, 1902, - -2, 2110, + 89, 1903, + 172, 1903, + -2, 2111, -1, 2621, - 89, 1878, - 172, 1878, - -2, 2097, - -1, 2622, 89, 1879, 172, 1879, - -2, 2102, - -1, 2623, + -2, 2098, + -1, 2622, 89, 1880, 172, 1880, - -2, 2023, - -1, 2624, + -2, 2103, + -1, 2623, 89, 1881, 172, 1881, - -2, 2016, - -1, 2625, + -2, 2024, + -1, 2624, 89, 1882, 172, 1882, - -2, 1933, - -1, 2626, + -2, 2017, + -1, 2625, 89, 1883, 172, 1883, - -2, 2099, - -1, 2627, + -2, 1934, + -1, 2626, 89, 1884, 172, 1884, - -2, 2021, - -1, 2628, + -2, 2100, + -1, 2627, 89, 1885, 172, 1885, - -2, 2015, - -1, 2629, + -2, 2022, + -1, 2628, 89, 1886, 172, 1886, - -2, 2003, - -1, 2630, - 89, 1902, - 172, 1902, + -2, 2016, + -1, 2629, + 89, 1887, + 172, 1887, -2, 2004, - -1, 2631, - 89, 1902, - 172, 1902, + -1, 2630, + 89, 1903, + 172, 1903, -2, 2005, + -1, 2631, + 89, 1903, + 172, 1903, + -2, 2006, -1, 2633, - 89, 1891, - 172, 1891, - -2, 2144, + 89, 1892, + 172, 1892, + -2, 2145, -1, 2634, - 89, 1868, - 172, 1868, - -2, 2129, + 89, 1869, + 172, 1869, + -2, 2130, -1, 2635, - 89, 1900, - 172, 1900, - -2, 2100, + 89, 1901, + 172, 1901, + -2, 2101, -1, 2636, - 89, 1900, - 172, 1900, - -2, 2128, + 89, 1901, + 172, 1901, + -2, 2129, -1, 2637, - 89, 1900, - 172, 1900, - -2, 1968, + 89, 1901, + 172, 1901, + -2, 1969, -1, 2638, - 89, 1898, - 172, 1898, - -2, 2119, + 89, 1899, + 172, 1899, + -2, 2120, -1, 2639, - 89, 1895, - 172, 1895, - -2, 1993, + 89, 1896, + 172, 1896, + -2, 1994, -1, 2640, - 88, 1849, - 89, 1849, - 161, 1849, - 162, 1849, - 164, 1849, - 172, 1849, - -2, 1932, - -1, 2641, 88, 1850, 89, 1850, 161, 1850, 162, 1850, 164, 1850, 172, 1850, - -2, 1934, - -1, 2642, + -2, 1933, + -1, 2641, 88, 1851, 89, 1851, 161, 1851, 162, 1851, 164, 1851, 172, 1851, - -2, 2172, + -2, 1935, + -1, 2642, + 88, 1852, + 89, 1852, + 161, 1852, + 162, 1852, + 164, 1852, + 172, 1852, + -2, 2173, -1, 2643, - 88, 1853, - 89, 1853, - 161, 1853, - 162, 1853, - 164, 1853, - 172, 1853, - -2, 2101, + 88, 1854, + 89, 1854, + 161, 1854, + 162, 1854, + 164, 1854, + 172, 1854, + -2, 2102, -1, 2644, - 88, 1855, - 89, 1855, - 161, 1855, - 162, 1855, - 164, 1855, - 172, 1855, - -2, 2079, + 88, 1856, + 89, 1856, + 161, 1856, + 162, 1856, + 164, 1856, + 172, 1856, + -2, 2080, -1, 2645, - 88, 1857, - 89, 1857, - 161, 1857, - 162, 1857, - 164, 1857, - 172, 1857, - -2, 2022, + 88, 1858, + 89, 1858, + 161, 1858, + 162, 1858, + 164, 1858, + 172, 1858, + -2, 2023, -1, 2646, - 88, 1859, - 89, 1859, - 161, 1859, - 162, 1859, - 164, 1859, - 172, 1859, - -2, 1999, - -1, 2647, 88, 1860, 89, 1860, 161, 1860, @@ -1711,802 +1705,772 @@ var yyExca = [...]int{ 164, 1860, 172, 1860, -2, 2000, + -1, 2647, + 88, 1861, + 89, 1861, + 161, 1861, + 162, 1861, + 164, 1861, + 172, 1861, + -2, 2001, -1, 2648, - 88, 1862, - 89, 1862, - 161, 1862, - 162, 1862, - 164, 1862, - 172, 1862, - -2, 1931, + 88, 1863, + 89, 1863, + 161, 1863, + 162, 1863, + 164, 1863, + 172, 1863, + -2, 1932, -1, 2649, - 89, 1905, - 161, 1905, - 162, 1905, - 164, 1905, - 172, 1905, - -2, 1973, + 89, 1906, + 161, 1906, + 162, 1906, + 164, 1906, + 172, 1906, + -2, 1974, -1, 2650, - 89, 1905, - 161, 1905, - 162, 1905, - 164, 1905, - 172, 1905, - -2, 1989, + 89, 1906, + 161, 1906, + 162, 1906, + 164, 1906, + 172, 1906, + -2, 1990, -1, 2651, - 89, 1908, - 161, 1908, - 162, 1908, - 164, 1908, - 172, 1908, - -2, 1969, + 89, 1909, + 161, 1909, + 162, 1909, + 164, 1909, + 172, 1909, + -2, 1970, -1, 2652, - 89, 1908, - 161, 1908, - 162, 1908, - 164, 1908, - 172, 1908, - -2, 2038, + 89, 1909, + 161, 1909, + 162, 1909, + 164, 1909, + 172, 1909, + -2, 2039, -1, 2653, - 89, 1905, - 161, 1905, - 162, 1905, - 164, 1905, - 172, 1905, - -2, 2061, + 89, 1906, + 161, 1906, + 162, 1906, + 164, 1906, + 172, 1906, + -2, 2062, -1, 2883, - 113, 1202, - 158, 1202, - 205, 1202, - 208, 1202, - 298, 1202, - -2, 1196, + 113, 1203, + 158, 1203, + 205, 1203, + 208, 1203, + 298, 1203, + -2, 1197, -1, 2903, 86, 743, 172, 743, - -2, 1397, + -2, 1398, -1, 3343, - 208, 1202, - 322, 1486, - -2, 1458, + 208, 1203, + 322, 1487, + -2, 1459, -1, 3543, - 113, 1202, - 158, 1202, - 205, 1202, - 208, 1202, - -2, 1338, + 113, 1203, + 158, 1203, + 205, 1203, + 208, 1203, + -2, 1339, -1, 3546, - 113, 1202, - 158, 1202, - 205, 1202, - 208, 1202, - -2, 1338, + 113, 1203, + 158, 1203, + 205, 1203, + 208, 1203, + -2, 1339, -1, 3558, 86, 743, 172, 743, - -2, 1397, + -2, 1398, -1, 3580, - 208, 1202, - 322, 1486, - -2, 1459, + 208, 1203, + 322, 1487, + -2, 1460, -1, 3743, - 113, 1202, - 158, 1202, - 205, 1202, - 208, 1202, - -2, 1339, + 113, 1203, + 158, 1203, + 205, 1203, + 208, 1203, + -2, 1340, -1, 3770, - 89, 1300, - 172, 1300, - -2, 1202, - -1, 3918, - 89, 1300, - 172, 1300, - -2, 1202, - -1, 4091, - 89, 1304, - 172, 1304, - -2, 1202, - -1, 4146, + 89, 1301, + 172, 1301, + -2, 1203, + -1, 3930, + 89, 1301, + 172, 1301, + -2, 1203, + -1, 4104, 89, 1305, 172, 1305, - -2, 1202, + -2, 1203, + -1, 4151, + 89, 1306, + 172, 1306, + -2, 1203, } const yyPrivate = 57344 -const yyLast = 57328 +const yyLast = 57516 var yyAct = [...]int{ - 793, 769, 4199, 795, 4168, 2935, 225, 4191, 1662, 4095, - 3565, 2041, 1742, 3664, 4101, 3363, 3987, 4102, 4094, 3918, - 2152, 3329, 4010, 3798, 778, 4045, 3965, 3439, 3594, 3896, - 2929, 771, 3863, 3956, 1574, 3440, 1343, 3917, 3988, 3731, - 1073, 3832, 2840, 823, 2932, 1196, 1506, 658, 3887, 3524, - 3668, 1806, 3966, 3968, 3659, 1512, 1986, 3529, 1793, 2471, - 3745, 3581, 1738, 3750, 677, 1190, 683, 683, 3338, 3740, - 2906, 1745, 683, 701, 710, 3281, 3713, 710, 3296, 3257, - 3437, 3047, 3547, 3048, 3284, 3489, 3516, 3024, 2958, 3046, - 2139, 210, 3358, 3549, 3347, 3340, 2845, 3043, 2177, 3483, - 69, 2101, 1789, 2579, 2251, 2615, 3116, 2154, 3076, 1811, - 3402, 2871, 3034, 2001, 1790, 2474, 1567, 3346, 2447, 2209, - 3264, 2709, 3258, 3306, 2430, 3262, 1186, 3260, 718, 3259, - 142, 2884, 2370, 1651, 3221, 2369, 3090, 36, 766, 2218, - 761, 2235, 2217, 2687, 2669, 2132, 2285, 1647, 2182, 1905, - 1652, 2210, 2136, 3255, 1655, 954, 2246, 2105, 2860, 2855, - 2580, 2960, 2563, 2558, 2940, 1471, 2247, 2472, 37, 2031, - 221, 8, 994, 220, 7, 6, 2418, 1962, 2429, 2613, - 722, 1807, 2898, 2281, 1736, 2248, 2102, 1684, 1134, 770, - 1614, 1741, 676, 1583, 1552, 1067, 1546, 2409, 2467, 760, - 1800, 658, 2372, 2779, 779, 1776, 2412, 1727, 1212, 2216, - 27, 2213, 1666, 2198, 1621, 1066, 2587, 1735, 23, 1551, - 715, 1958, 993, 1961, 919, 225, 2000, 225, 1414, 1125, - 1126, 24, 1481, 1605, 692, 25, 683, 1032, 1663, 211, - 725, 707, 657, 17, 724, 1548, 1507, 1105, 10, 1419, - 1640, 1515, 970, 1491, 207, 1018, 768, 2559, 1495, 1812, - 1390, 203, 709, 991, 16, 1344, 976, 721, 2255, 921, - 922, 2589, 3975, 984, 3884, 985, 1274, 1275, 1276, 1273, - 2815, 2815, 2815, 706, 14, 1516, 1477, 1122, 3561, 3448, - 1002, 15, 3313, 3231, 1438, 1274, 1275, 1276, 1273, 3230, - 3133, 3132, 1191, 33, 2265, 1082, 1274, 1275, 1276, 1273, - 1928, 695, 3702, 1808, 965, 1415, 1121, 679, 1123, 3532, - 1192, 3432, 2732, 2672, 2675, 2673, 1416, 1918, 979, 2670, - 975, 688, 1624, 1117, 1118, 1079, 1628, 702, 209, 713, - 678, 2368, 1081, 2778, 1550, 1409, 1474, 1475, 1476, 1052, - 3943, 942, 1383, 1118, 1191, 940, 2153, 704, 3228, 2382, - 2375, 1925, 998, 999, 705, 1418, 1118, 3216, 3214, 1677, - 3211, 3213, 4180, 1042, 1529, 1912, 703, 1405, 3657, 762, - 8, 1626, 3112, 7, 684, 1116, 2807, 2805, 3110, 1274, - 1275, 1276, 1273, 2187, 3951, 3839, 957, 3833, 1274, 1275, - 1276, 1273, 3660, 3438, 2232, 3970, 1338, 767, 2212, 920, - 2916, 3190, 2204, 2512, 4205, 3964, 931, 3494, 4177, 3847, - 3962, 3871, 3507, 2759, 3845, 2389, 4021, 1591, 1424, 1100, - 2809, 3492, 1420, 1423, 1422, 942, 940, 1083, 3188, 1446, - 720, 1463, 2263, 1936, 171, 208, 65, 199, 170, 1934, - 910, 941, 909, 911, 912, 939, 913, 914, 1832, 3041, - 2413, 2607, 938, 1444, 2839, 1044, 1271, 2835, 1043, 981, - 2608, 974, 1846, 1077, 1078, 3083, 1525, 762, 3873, 1526, - 978, 977, 3084, 3085, 1251, 1728, 1994, 1252, 1732, 2116, - 2117, 171, 208, 65, 199, 170, 2594, 1430, 1553, 2593, - 1555, 966, 2595, 1940, 1941, 1047, 1045, 1028, 1046, 2115, - 3333, 1101, 1731, 1675, 2688, 1254, 1003, 1503, 204, 2149, - 1041, 973, 865, 3331, 1708, 932, 171, 208, 65, 199, - 170, 2857, 1511, 1674, 1513, 1514, 1510, 1513, 1514, 2837, - 983, 2858, 2832, 1005, 2015, 972, 1744, 4105, 4106, 971, - 3215, 1269, 3212, 1076, 1075, 959, 3973, 4059, 1264, 3972, - 4058, 2504, 3971, 4057, 3973, 204, 171, 208, 65, 199, - 170, 3685, 964, 171, 208, 65, 199, 170, 1528, 4129, - 3972, 3971, 4066, 2357, 1095, 1090, 1085, 1089, 1093, 1445, - 2856, 3954, 1207, 2836, 4172, 4173, 2833, 3441, 3117, 962, - 204, 4047, 171, 208, 65, 199, 170, 1053, 3957, 3958, - 3959, 3960, 1098, 1249, 1733, 1992, 1088, 4047, 4050, 1027, - 1025, 3836, 3441, 1627, 1625, 3118, 2713, 3119, 1201, 2267, - 2979, 3984, 1693, 3455, 1049, 1215, 1218, 982, 1730, 1204, - 204, 2133, 1828, 2123, 2553, 2127, 1024, 204, 2810, 1825, - 3517, 2259, 3522, 1827, 1824, 1826, 1830, 1831, 997, 1723, - 963, 1829, 3723, 1748, 3154, 1244, 3277, 1096, 1246, 1004, - 1037, 2546, 3875, 3876, 1250, 2863, 204, 169, 197, 206, - 198, 683, 683, 2408, 982, 2842, 3606, 1099, 3275, 4068, - 1033, 3035, 683, 1200, 1256, 1051, 1247, 1257, 3562, 935, - 196, 756, 1267, 1268, 758, 3152, 1219, 1266, 2723, 757, - 1937, 2264, 710, 710, 1086, 683, 1935, 4104, 195, 2510, - 1239, 3658, 3880, 3111, 3684, 1259, 1034, 1038, 1210, 1501, - 3029, 2838, 3686, 3271, 2834, 2548, 1539, 980, 1097, 3720, - 1447, 3272, 3273, 1527, 2549, 2550, 1021, 3694, 1019, 1023, - 1041, 1253, 1729, 1993, 1020, 1017, 1016, 3274, 1022, 1007, - 1008, 1006, 1009, 1010, 1011, 1012, 2610, 1039, 2817, 1040, - 3282, 1128, 1050, 2556, 936, 1087, 2808, 969, 1315, 1261, - 1035, 1036, 3974, 1408, 3883, 1262, 1263, 2147, 2148, 675, - 3458, 3158, 2814, 3621, 1240, 1747, 1746, 3361, 1192, 3362, - 1082, 3335, 1192, 1835, 1836, 1837, 1838, 1839, 1840, 1833, - 1834, 1193, 1192, 3359, 3360, 3493, 4138, 3294, 1031, 3307, - 1242, 4003, 3998, 1255, 1030, 1200, 3496, 2899, 937, 3618, - 1079, 2420, 1245, 1248, 2490, 3236, 943, 1081, 1026, 712, - 2470, 2493, 3134, 711, 3908, 4074, 3039, 1217, 1216, 2270, - 2272, 2273, 1094, 3900, 3611, 1241, 1347, 2415, 3222, 3269, - 2254, 3131, 1260, 3989, 1192, 707, 707, 707, 3699, 3700, - 3701, 4005, 2290, 1082, 1118, 3566, 958, 1118, 1118, 956, - 4011, 1118, 3330, 763, 1258, 1118, 1118, 2930, 2931, 1091, - 2934, 2266, 1092, 1754, 1757, 1758, 171, 208, 2492, 3283, - 1231, 1426, 2934, 1079, 1755, 3573, 1490, 706, 706, 706, - 1081, 1048, 2477, 3869, 1513, 1514, 1029, 2671, 3846, 1220, - 2399, 3365, 1000, 1001, 3708, 995, 1629, 1513, 1514, 4073, - 996, 3827, 1243, 3500, 3874, 1411, 1413, 3245, 1417, 2544, - 1428, 1209, 3622, 3983, 3789, 708, 141, 4211, 2522, 2521, - 1195, 3671, 1434, 920, 2869, 2491, 1437, 1228, 1194, 1078, - 1443, 702, 702, 702, 1388, 1421, 934, 1393, 1502, 3503, - 204, 1222, 1416, 2806, 1224, 1225, 1206, 1416, 3495, 3283, - 708, 704, 704, 704, 3008, 1316, 2552, 1230, 705, 705, - 705, 1102, 1676, 994, 1084, 1429, 1718, 205, 1188, 1719, - 703, 703, 703, 2134, 3155, 3278, 1199, 66, 1203, 1205, - 1208, 1309, 3877, 2610, 3855, 3909, 3856, 2862, 2477, 2480, - 708, 3855, 4067, 3856, 3901, 3784, 1563, 708, 1562, 3036, - 1311, 1312, 1313, 1314, 984, 4194, 985, 3502, 1229, 3850, - 1488, 2980, 66, 2981, 2982, 1487, 2259, 4012, 683, 1486, - 3778, 1541, 3336, 2542, 2543, 683, 708, 3888, 3724, 658, - 658, 2476, 3922, 2124, 1509, 2126, 2478, 1505, 1504, 658, - 658, 2866, 2867, 1578, 1578, 3339, 683, 3550, 3270, 1724, - 3858, 1042, 66, 1187, 3210, 4093, 2865, 3858, 2513, 66, - 2875, 2879, 2880, 2881, 2876, 2878, 2877, 710, 1606, 677, - 4070, 1359, 1360, 2470, 1617, 2487, 1119, 1120, 1580, 3655, - 3857, 1124, 1439, 1306, 1305, 720, 2271, 3857, 66, 225, - 2479, 3078, 3080, 1585, 3364, 4044, 3291, 3444, 658, 1549, - 1425, 1236, 3490, 1215, 1218, 1576, 1576, 3355, 1348, 3799, - 3800, 3801, 3805, 3803, 3804, 3806, 3802, 2719, 3359, 3360, - 171, 208, 2599, 2508, 1921, 2420, 2419, 2373, 3095, 3096, - 1756, 2256, 2481, 2122, 1540, 2099, 1436, 2476, 2470, 2475, - 1455, 2473, 2478, 1044, 2891, 3393, 1043, 1394, 3510, 2480, - 1659, 3157, 1392, 2465, 1461, 1664, 4195, 1572, 1573, 1460, - 1459, 1458, 1673, 1054, 4075, 4076, 3356, 714, 988, 989, - 990, 2268, 2269, 3921, 1219, 3484, 3791, 2977, 4071, 4072, - 2703, 4079, 4078, 4077, 4080, 986, 948, 1468, 2400, 1235, - 2394, 2393, 1706, 2829, 2889, 1703, 2479, 1709, 1449, 2282, - 2392, 1433, 1427, 1483, 1448, 1943, 1578, 1944, 1578, 1200, - 1683, 1700, 1701, 2999, 3000, 1473, 955, 3009, 3011, 3012, - 3013, 3010, 1440, 1441, 1557, 1559, 1470, 1450, 1451, 1452, - 1453, 1454, 2391, 1456, 1570, 1571, 3292, 1635, 1926, 1462, - 1497, 1498, 3785, 3786, 2892, 4092, 1517, 952, 1042, 1520, - 1431, 1432, 950, 949, 1942, 1480, 944, 1082, 1530, 1531, - 1042, 1607, 2534, 1489, 1082, 1492, 1496, 1496, 1496, 945, - 1499, 983, 1561, 3079, 1649, 1650, 1920, 1578, 1518, 1519, - 3751, 1521, 1522, 3780, 1523, 1672, 4207, 3779, 4192, 4193, - 1492, 1492, 2481, 1630, 1200, 1810, 1654, 2486, 3312, 1658, - 2577, 2484, 1657, 1586, 1592, 2507, 948, 1841, 1842, 1859, - 1845, 3826, 1705, 1598, 688, 1217, 1216, 4201, 1860, 3851, - 2848, 1704, 1618, 3967, 1482, 1668, 3851, 951, 1619, 1604, - 3852, 1867, 1680, 1869, 4189, 1870, 1871, 1872, 1482, 1794, - 1044, 3445, 2411, 1043, 4213, 707, 2253, 4054, 707, 707, - 2998, 4148, 1044, 2849, 2850, 1043, 1638, 1272, 1641, 1642, - 3399, 1922, 1717, 1274, 1275, 1276, 1273, 947, 4116, 2261, - 1643, 1644, 950, 949, 1740, 2610, 4113, 1200, 1197, 3395, - 2324, 3357, 1236, 2323, 2905, 1055, 1721, 706, 1759, 1929, - 706, 706, 1930, 1691, 1932, 2904, 1694, 1737, 683, 683, - 4202, 2690, 4107, 4089, 1716, 1903, 1945, 1947, 1197, 1948, - 1844, 1950, 1951, 1686, 3513, 677, 1606, 4149, 3457, 3186, - 4038, 1959, 1578, 1964, 1965, 1715, 1967, 1541, 683, 1711, - 2450, 2253, 2449, 683, 4149, 4037, 1578, 1714, 2578, 2362, - 994, 702, 1710, 1987, 702, 702, 2718, 1739, 1858, 1734, - 2894, 4117, 1906, 4031, 3369, 4006, 1578, 3367, 1713, 4114, - 1725, 704, 1541, 3251, 704, 704, 1272, 701, 705, 1272, - 2410, 705, 705, 3994, 1778, 2253, 2578, 3220, 1712, 3218, - 703, 2578, 3098, 703, 703, 2300, 4090, 2014, 1692, 2811, - 3399, 1695, 1696, 2708, 2695, 3941, 2021, 2021, 1233, 1541, - 2299, 1541, 1541, 1272, 1236, 683, 683, 3940, 2088, 1959, - 2092, 2176, 3935, 1578, 2096, 2097, 2252, 2114, 1272, 2112, - 3934, 658, 1743, 1274, 1275, 1276, 1273, 2463, 1785, 1786, - 1274, 1275, 1276, 1273, 3933, 658, 2300, 1578, 2261, 1272, - 1968, 3932, 1849, 1850, 1851, 2367, 2018, 1234, 2905, 3912, - 1909, 924, 925, 926, 927, 1865, 3995, 2361, 1866, 1274, - 1275, 1276, 1273, 2360, 683, 1959, 1578, 2043, 2159, 1389, - 683, 683, 683, 718, 718, 2332, 1880, 1881, 3942, 2448, - 2169, 2170, 2171, 2172, 1904, 1234, 2298, 2178, 2331, 2718, - 2434, 1873, 1874, 2243, 225, 2300, 1902, 225, 225, 2090, - 225, 2145, 2150, 2300, 3911, 1966, 2098, 1953, 1469, 1919, - 1910, 1923, 2024, 1963, 1726, 3185, 1927, 2300, 1277, 1797, - 924, 925, 926, 927, 2300, 1564, 1308, 1979, 1274, 1275, - 1276, 1273, 2261, 2252, 1589, 1318, 4220, 4203, 3561, 3102, - 1859, 1859, 2220, 2907, 2119, 2820, 2121, 1995, 2721, 1954, - 2720, 3886, 1859, 1859, 3627, 3575, 3539, 2140, 2141, 2237, - 2712, 1327, 1984, 3521, 2174, 1764, 1765, 1766, 1767, 1768, - 1769, 1770, 1771, 1772, 1773, 1774, 1775, 2161, 2162, 2163, - 1988, 1787, 1788, 1983, 2296, 2186, 2195, 2261, 2189, 2190, - 1914, 2192, 3476, 1987, 2457, 2142, 2143, 1578, 2250, 2319, - 2231, 2003, 2006, 2135, 2095, 1989, 1990, 2477, 2480, 2222, - 1997, 1955, 1956, 1957, 2128, 929, 2113, 2002, 2013, 2004, - 2005, 2016, 2017, 1970, 1971, 1972, 1973, 2025, 2026, 2007, - 2089, 1868, 2304, 2011, 2300, 2100, 2094, 2610, 3576, 3540, - 1082, 2012, 1492, 1082, 1998, 1999, 2118, 2158, 2120, 2244, - 2129, 3472, 1082, 2020, 2022, 3377, 1496, 1737, 3073, 2797, - 2785, 2008, 2009, 2777, 2734, 2716, 2704, 1236, 1496, 2227, - 1079, 2697, 2242, 2181, 3816, 3477, 2692, 1081, 2167, 2215, - 1924, 2019, 1079, 2157, 929, 3625, 2156, 2684, 2682, 1081, - 2680, 2215, 2023, 2164, 2165, 1113, 1114, 1115, 2678, 1688, - 2433, 2363, 2339, 2338, 1324, 2183, 1875, 1876, 1877, 1878, - 1221, 1668, 1882, 1883, 1884, 1885, 1887, 1888, 1889, 1890, - 1891, 1892, 1893, 1894, 1895, 1896, 1897, 2322, 2313, 1112, - 2200, 2312, 1109, 2311, 3473, 1184, 707, 2301, 3378, 2260, - 1289, 2578, 2434, 1272, 2233, 946, 1272, 1272, 2434, 2693, - 1082, 2481, 1179, 1697, 2698, 2221, 2476, 2470, 2475, 2693, - 2473, 2478, 2230, 2228, 1634, 1633, 2287, 2286, 1987, 3999, - 2685, 2683, 3902, 2679, 1306, 1305, 2144, 2241, 706, 3308, - 1079, 2679, 2239, 2434, 2362, 1272, 1272, 1081, 1524, 3317, - 3752, 2374, 3149, 2376, 3675, 2378, 2379, 1493, 1848, 1847, - 1478, 1848, 1847, 2245, 1479, 683, 1541, 683, 1541, 2288, - 1272, 1272, 2302, 4000, 1272, 2479, 1272, 2395, 2258, 1568, - 2300, 4214, 2261, 761, 2355, 3553, 683, 683, 683, 4176, - 1569, 2505, 702, 3551, 3753, 2274, 1698, 3976, 2755, 2756, - 2283, 683, 683, 683, 683, 2749, 1292, 1293, 1294, 1295, - 1296, 1289, 704, 3885, 2431, 1778, 2276, 1616, 3843, 705, - 3309, 3782, 3903, 2435, 2436, 2437, 3781, 2440, 1541, 3554, - 2292, 703, 1178, 1174, 1175, 1176, 1177, 3552, 2754, 2240, - 2753, 2752, 2750, 2670, 3767, 1566, 3794, 3727, 2275, 3531, - 3400, 1478, 3391, 3103, 1541, 1479, 3430, 3383, 3379, 953, - 1106, 1107, 1108, 1111, 3310, 1110, 3904, 3286, 2277, 2278, - 2741, 2499, 1886, 796, 806, 1879, 3032, 3031, 1494, 2386, - 3674, 2388, 2873, 797, 2816, 798, 802, 805, 801, 799, - 800, 1288, 1287, 1297, 1298, 1290, 1291, 1292, 1293, 1294, - 1295, 1296, 1289, 2731, 2696, 1784, 1274, 1275, 1276, 1273, - 2751, 2601, 2454, 2664, 2506, 2380, 2456, 3433, 2458, 2225, - 2326, 1781, 1783, 1780, 2224, 1782, 2223, 1465, 2364, 683, - 2021, 1464, 2356, 2358, 2359, 1202, 2184, 3238, 2582, 2582, - 2112, 2582, 1801, 1949, 2333, 2334, 4056, 2336, 803, 1565, - 1274, 1275, 1276, 1273, 2343, 1801, 2377, 2293, 1273, 3431, - 2381, 658, 658, 1274, 1275, 1276, 1273, 2459, 1622, 1200, - 2184, 1276, 1273, 3793, 2674, 1578, 683, 808, 143, 804, - 2710, 2711, 2401, 143, 3120, 2969, 1749, 1750, 1751, 1752, - 1753, 683, 2469, 2967, 2468, 2946, 2944, 1200, 2654, 677, - 1347, 1274, 1275, 1276, 1273, 1617, 3773, 2112, 3721, 1622, - 2660, 4186, 2662, 3728, 3729, 225, 1274, 1275, 1276, 1273, - 4185, 2279, 2280, 2656, 2462, 2743, 4210, 3178, 2799, 1798, - 2800, 1863, 1326, 1802, 1803, 1804, 1805, 2605, 4184, 3519, - 1082, 2586, 2584, 1843, 2588, 1325, 1864, 689, 2450, 3020, - 143, 1853, 4182, 4181, 2441, 2700, 1274, 1275, 1276, 1273, - 2590, 2442, 2443, 2315, 2482, 2483, 3018, 2488, 3722, 4120, - 1079, 2445, 2446, 2714, 4088, 4087, 2250, 1081, 3016, 1274, - 1275, 1276, 1273, 1578, 4001, 1578, 2768, 1578, 2666, 2444, - 3177, 4209, 1200, 2841, 2452, 3937, 3925, 2453, 2612, 3520, - 2733, 2307, 2596, 3915, 2597, 1907, 2665, 2455, 2659, 3019, - 3905, 2617, 1274, 1275, 1276, 1273, 3916, 1274, 1275, 1276, - 1273, 1623, 2551, 2602, 2603, 2557, 3017, 3834, 2451, 3525, - 1578, 1200, 3755, 2314, 1496, 2762, 3754, 3698, 3015, 2591, - 3567, 1274, 1275, 1276, 1273, 3005, 3555, 2724, 2872, 3518, - 2769, 1274, 1275, 1276, 1273, 1578, 1557, 1559, 3276, 3164, - 1274, 1275, 1276, 1273, 2757, 3145, 3115, 3114, 2609, 2606, - 1288, 1287, 1297, 1298, 1290, 1291, 1292, 1293, 1294, 1295, - 1296, 1289, 1080, 1274, 1275, 1276, 1273, 143, 3003, 2770, - 3002, 2655, 1576, 3001, 2993, 2658, 1991, 4098, 1274, 1275, - 1276, 1273, 143, 2987, 143, 3004, 2818, 2986, 2985, 2774, - 2775, 2822, 3530, 2824, 2984, 2812, 2686, 1576, 3690, 2598, - 683, 683, 2010, 2366, 1274, 1275, 1276, 1273, 2744, 2203, - 2746, 2202, 2730, 3263, 1200, 2201, 2657, 1274, 1275, 1276, - 1273, 1578, 3678, 2725, 1541, 1274, 1275, 1276, 1273, 2706, - 1541, 2092, 2197, 2739, 2760, 2196, 2151, 4206, 1933, 2903, - 1931, 2717, 1689, 2715, 1407, 2909, 3677, 2722, 2910, 1274, - 1275, 1276, 1273, 3676, 1737, 1182, 756, 3878, 3879, 758, - 4204, 1907, 1348, 2803, 757, 3665, 1907, 1907, 2921, 4174, - 4137, 2735, 2736, 1274, 1275, 1276, 1273, 4136, 1200, 4133, - 1274, 1275, 1276, 1273, 2297, 4063, 2943, 4062, 3864, 2885, - 2618, 4042, 2758, 1200, 1200, 1200, 2021, 2748, 3986, 1200, - 3732, 2953, 2954, 2955, 2956, 1200, 2963, 3980, 2964, 2965, - 3961, 2966, 3615, 2968, 1181, 3952, 2185, 3463, 3929, 2188, - 2887, 3924, 2191, 3923, 2963, 2193, 3181, 3882, 2617, 3868, - 3866, 1560, 3835, 1082, 2043, 2922, 2582, 2870, 3775, 1274, - 1275, 1276, 1273, 2886, 1274, 1275, 1276, 1273, 3736, 2738, - 3021, 3725, 2900, 1274, 1275, 1276, 1273, 3710, 3709, 658, - 3705, 3703, 1274, 1275, 1276, 1273, 3697, 2092, 3693, 3692, - 3689, 1200, 2112, 2112, 2112, 2112, 2112, 2112, 3688, 3663, - 2852, 2236, 2854, 3661, 3634, 2728, 2924, 3631, 1200, 2112, - 3629, 3025, 2582, 2851, 3515, 3497, 3485, 3026, 2868, 2941, - 2937, 2890, 3469, 2941, 3467, 3461, 3411, 4212, 3081, 2893, - 1578, 3389, 1963, 8, 3388, 2948, 7, 2902, 2908, 3386, + 793, 769, 4198, 795, 4173, 2935, 225, 4190, 2041, 4108, + 3664, 3565, 1662, 1742, 4114, 3363, 4107, 4115, 3621, 3930, + 2152, 4029, 3329, 778, 3984, 4070, 771, 3439, 2929, 3798, + 3594, 3908, 3875, 3975, 1343, 3440, 1506, 3929, 1574, 4007, + 1806, 3731, 2840, 1738, 3844, 823, 1073, 658, 2932, 3899, + 3524, 1196, 3668, 3985, 3987, 1512, 1986, 3529, 1793, 3659, + 3338, 2471, 1190, 3750, 677, 2906, 683, 683, 3740, 3281, + 3581, 1745, 683, 701, 710, 3296, 3713, 710, 3437, 3257, + 3047, 3745, 3547, 210, 3489, 3048, 3046, 2136, 3284, 767, + 2139, 3024, 3516, 2958, 3358, 3347, 3549, 2845, 3340, 3483, + 69, 2101, 2177, 2579, 3043, 2209, 2251, 1811, 3116, 1789, + 2615, 722, 1808, 3076, 2474, 3402, 2154, 2001, 2871, 3264, + 3260, 2709, 2447, 3262, 37, 3258, 2430, 3346, 718, 3259, + 3034, 3306, 1477, 1186, 1567, 2370, 2369, 3255, 3221, 1651, + 761, 766, 2235, 3090, 2884, 2687, 2285, 2217, 2182, 142, + 36, 2218, 2247, 1663, 1905, 954, 2210, 2132, 2246, 2669, + 1655, 2580, 2105, 1640, 2563, 1471, 2860, 2558, 2855, 1647, + 2102, 2940, 994, 2472, 2960, 1067, 6, 1790, 2031, 1652, + 2898, 2418, 1134, 1962, 1736, 2613, 1807, 221, 8, 770, + 2248, 2281, 2429, 1583, 1614, 1684, 676, 707, 1552, 2409, + 1546, 658, 2467, 2779, 1800, 2372, 1727, 768, 1495, 760, + 220, 7, 1212, 2412, 2216, 779, 27, 2213, 1776, 1666, + 2198, 1621, 657, 715, 1481, 225, 23, 225, 2000, 1125, + 1126, 1066, 2587, 1958, 1735, 1961, 683, 2559, 1605, 919, + 1414, 1551, 1491, 1032, 692, 1812, 1548, 24, 724, 1741, + 1507, 25, 993, 211, 1105, 17, 10, 725, 970, 709, + 203, 207, 1419, 2255, 1018, 1390, 976, 16, 991, 721, + 1516, 3994, 1344, 921, 922, 1274, 1275, 1276, 1273, 1274, + 1275, 1276, 1273, 3896, 2815, 2815, 2815, 2589, 14, 706, + 1438, 1122, 3561, 3448, 762, 1515, 1274, 1275, 1276, 1273, + 3313, 984, 3231, 985, 3230, 1082, 3133, 3132, 1121, 2265, + 1123, 3702, 1928, 695, 1415, 1191, 3532, 1192, 3432, 2732, + 2675, 2673, 2672, 15, 2670, 1416, 1918, 1100, 1624, 1628, + 688, 1117, 1118, 679, 209, 2778, 713, 678, 2368, 1550, + 702, 1409, 965, 3962, 1052, 33, 1474, 1475, 1476, 2153, + 1383, 942, 1118, 940, 1079, 1081, 979, 3228, 975, 1118, + 2382, 704, 2375, 1925, 1418, 3216, 3214, 1677, 3211, 3213, + 1191, 4185, 1529, 2807, 2805, 171, 208, 65, 199, 170, + 1912, 1405, 1626, 3657, 3112, 3110, 1116, 1274, 1275, 1276, + 1273, 2187, 762, 3970, 3851, 200, 705, 8, 3845, 3660, + 684, 3438, 191, 2232, 3989, 1338, 201, 2212, 920, 1101, + 1274, 1275, 1276, 1273, 2916, 3190, 3494, 2809, 703, 2204, + 7, 2512, 4204, 3983, 957, 141, 931, 4182, 3859, 3981, + 3492, 3883, 3507, 2759, 2389, 4040, 1591, 1424, 3857, 1423, + 127, 1422, 1420, 942, 940, 1083, 1446, 720, 3188, 204, + 2263, 941, 910, 939, 909, 911, 912, 1463, 913, 914, + 3041, 2413, 1525, 2839, 1994, 1526, 2835, 1936, 1934, 2594, + 1444, 2607, 2593, 1244, 1271, 2595, 1246, 1077, 1078, 3084, + 3085, 2608, 1095, 1090, 1085, 1089, 1093, 938, 3885, 2149, + 2116, 2117, 171, 208, 65, 199, 170, 981, 1430, 974, + 1047, 1045, 3083, 1046, 1247, 1940, 1941, 2115, 978, 977, + 1098, 1675, 2857, 1553, 1088, 1555, 1503, 1513, 1514, 3333, + 2688, 1041, 2858, 2015, 171, 208, 65, 199, 170, 966, + 1728, 1674, 1264, 1732, 1744, 932, 150, 151, 2837, 152, + 153, 2832, 3685, 3331, 154, 4118, 4119, 155, 3215, 973, + 3212, 1269, 1076, 1075, 3992, 4084, 1251, 1731, 3992, 1252, + 2357, 2504, 3991, 4083, 1528, 1096, 204, 3991, 983, 3990, + 1511, 2856, 4142, 972, 1510, 1513, 1514, 971, 171, 208, + 65, 199, 170, 959, 4091, 1099, 3973, 1254, 3990, 4082, + 1693, 3441, 3117, 2836, 1992, 4072, 2833, 1445, 204, 4072, + 964, 2713, 1053, 1240, 4177, 4178, 4075, 3848, 169, 197, + 206, 198, 125, 1086, 3441, 2267, 171, 208, 65, 199, + 170, 3118, 1201, 3119, 1627, 1625, 1215, 1218, 962, 1242, + 1049, 196, 190, 189, 4003, 2810, 2133, 1097, 71, 1748, + 3455, 1245, 1248, 3522, 1207, 171, 208, 65, 199, 170, + 2979, 2123, 204, 3517, 3275, 2863, 149, 1723, 2127, 3723, + 1733, 2259, 3277, 3154, 1241, 2553, 982, 3976, 3977, 3978, + 3979, 2546, 2408, 982, 1087, 2842, 171, 208, 65, 199, + 170, 683, 683, 3606, 1730, 3035, 1249, 1267, 1268, 963, + 204, 1051, 683, 1200, 1846, 4093, 3684, 1219, 3562, 192, + 193, 194, 3152, 1266, 3686, 2723, 3658, 3272, 3273, 195, + 2510, 1204, 710, 710, 756, 683, 4117, 758, 1239, 204, + 2264, 3111, 757, 3274, 935, 2549, 2550, 3029, 1501, 1210, + 1527, 2838, 1993, 2548, 2834, 1937, 1935, 3892, 3271, 3887, + 3888, 1243, 3720, 2610, 1539, 3694, 3282, 1250, 1447, 202, + 204, 1094, 2817, 2556, 865, 1261, 1708, 675, 2147, 2148, + 1262, 1263, 719, 3361, 2808, 3362, 980, 3335, 1050, 3294, + 137, 3618, 1747, 1746, 195, 3953, 138, 4022, 1315, 3920, + 1408, 3307, 3993, 3359, 3360, 4017, 943, 2899, 1091, 1256, + 3236, 1092, 1257, 3496, 3895, 3458, 3158, 2814, 1729, 936, + 1082, 712, 3867, 1192, 3868, 1199, 969, 2420, 1754, 1757, + 1758, 1192, 171, 208, 3039, 3493, 2415, 3912, 1193, 1755, + 1259, 707, 707, 707, 1253, 1200, 1192, 3699, 3700, 3701, + 139, 1231, 1426, 3819, 1128, 2270, 2272, 2273, 2490, 1217, + 1216, 711, 3134, 64, 2470, 2493, 3131, 3611, 3222, 1079, + 1081, 1347, 4008, 4024, 937, 3566, 2254, 4030, 2930, 2931, + 3330, 2934, 141, 2290, 3269, 2934, 3573, 2399, 3870, 1490, + 3622, 1428, 1118, 1082, 1118, 1118, 3283, 1118, 2477, 3365, + 3881, 1192, 1118, 763, 3708, 1118, 204, 3500, 4002, 984, + 1102, 985, 66, 1084, 3245, 3789, 2544, 2266, 3869, 3503, + 4210, 2522, 2492, 2521, 3671, 958, 4193, 1048, 956, 169, + 197, 206, 198, 706, 706, 706, 2671, 3818, 1488, 1255, + 1222, 2869, 1079, 1081, 1513, 1514, 1309, 1220, 147, 205, + 3839, 148, 196, 3858, 1563, 1411, 1413, 1348, 1417, 1629, + 62, 2542, 2543, 1209, 3008, 3886, 3784, 708, 1513, 1514, + 3921, 3778, 1434, 920, 1562, 1195, 1437, 3283, 1260, 2491, + 1443, 2806, 1194, 1078, 702, 702, 702, 3502, 1502, 2610, + 1388, 1224, 1225, 1393, 1228, 1416, 1421, 1416, 3495, 708, + 1258, 1311, 1312, 1313, 1314, 704, 704, 704, 3913, 1230, + 1229, 1676, 934, 994, 1505, 1504, 1316, 1429, 2862, 2134, + 1487, 1486, 3278, 4031, 3155, 4106, 140, 46, 2552, 66, + 1203, 1205, 1208, 63, 1188, 3900, 3339, 5, 3336, 1187, + 705, 705, 705, 3934, 3036, 4092, 3210, 2476, 3867, 1206, + 3868, 2513, 2478, 708, 3550, 2470, 144, 145, 2487, 3655, + 146, 66, 703, 703, 703, 3444, 3862, 1439, 683, 1215, + 1218, 1541, 2866, 2867, 1509, 683, 3724, 4194, 720, 658, + 658, 1425, 2980, 4069, 2981, 2982, 1549, 2865, 2259, 658, + 658, 708, 2124, 1578, 1578, 1756, 683, 3490, 1724, 2126, + 3889, 3355, 3364, 2719, 3270, 2599, 2479, 2508, 3815, 1448, + 3359, 3360, 3078, 3080, 3870, 66, 2373, 710, 1606, 677, + 708, 1455, 2271, 1236, 1617, 2256, 1119, 1120, 1359, 1360, + 2122, 1124, 1580, 2099, 3095, 3096, 1576, 1576, 1436, 225, + 1219, 1306, 1305, 1921, 3869, 2480, 3393, 3157, 658, 1585, + 1461, 1480, 2419, 66, 1460, 1459, 1458, 1054, 3863, 1489, + 714, 3510, 3986, 988, 989, 990, 1499, 2875, 2879, 2880, + 2881, 2876, 2878, 2877, 1518, 1519, 983, 1521, 1522, 3356, + 1523, 3791, 66, 1427, 3933, 2400, 2268, 2269, 1540, 3799, + 3800, 3801, 3805, 3803, 3804, 3806, 3802, 1042, 2977, 3484, + 1659, 2703, 3820, 3821, 1394, 1664, 1468, 1392, 2829, 4191, + 4192, 1235, 1673, 3785, 3786, 4105, 3816, 3817, 986, 3824, + 3823, 3822, 3825, 3826, 2392, 1572, 1573, 3009, 3011, 3012, + 3013, 3010, 2394, 2393, 3780, 1433, 2999, 3000, 3779, 1943, + 1497, 1498, 1706, 1431, 1432, 1483, 1944, 1709, 1449, 1718, + 205, 948, 1719, 955, 1557, 1559, 1578, 2282, 1578, 1200, + 2391, 1042, 171, 208, 1570, 1571, 1683, 2420, 1440, 1441, + 1926, 2477, 2480, 1450, 1451, 1452, 1453, 1454, 1473, 1456, + 2486, 1470, 1217, 1216, 2484, 1462, 2891, 1942, 2481, 1044, + 944, 2534, 1043, 1635, 3079, 1920, 945, 1530, 1531, 3751, + 1492, 1496, 1496, 1496, 4219, 1517, 2507, 1082, 1520, 3445, + 4206, 4212, 947, 4079, 1082, 1607, 2848, 950, 949, 1638, + 1197, 1641, 1642, 1630, 3838, 1492, 1492, 1578, 4200, 4188, + 2253, 1668, 1482, 1643, 1644, 1482, 2889, 1042, 1680, 1561, + 2324, 1725, 1672, 2323, 1200, 1810, 1649, 1650, 3312, 2849, + 2850, 707, 4153, 1044, 707, 707, 1043, 4129, 1657, 1859, + 1586, 1841, 1842, 688, 1845, 1233, 2577, 1592, 1717, 1598, + 1794, 1743, 1860, 2998, 1272, 1654, 1604, 3399, 1658, 1618, + 1922, 4126, 3291, 2610, 3863, 1867, 2892, 1869, 3864, 1870, + 1871, 1872, 1619, 2261, 3357, 2904, 4202, 1764, 1765, 1766, + 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 4120, + 1740, 4201, 4154, 1787, 1788, 2481, 3395, 2411, 1055, 1236, + 2476, 2470, 2475, 2253, 2473, 2478, 1272, 1200, 1234, 1044, + 4102, 2450, 1043, 2449, 2905, 4154, 1721, 2253, 4063, 1929, + 4130, 1759, 1930, 706, 1932, 1903, 706, 706, 683, 683, + 4062, 1691, 1234, 1703, 1694, 4050, 1945, 1947, 1844, 1948, + 1716, 1950, 1951, 1868, 4127, 677, 1606, 1686, 1197, 1700, + 1701, 1959, 1578, 1964, 1965, 2690, 1967, 1541, 683, 2479, + 3513, 1272, 1272, 683, 2578, 3457, 1578, 3399, 1236, 2362, + 994, 1715, 2300, 1987, 702, 1711, 2718, 702, 702, 1714, + 1710, 4025, 1906, 1734, 2578, 1737, 1578, 1849, 1850, 1851, + 1858, 1713, 1541, 4103, 1739, 704, 2176, 701, 704, 704, + 1865, 1272, 3292, 1866, 1274, 1275, 1276, 1273, 3369, 1785, + 1786, 3561, 1712, 1272, 4013, 1778, 3960, 2014, 2300, 1914, + 1692, 1880, 1881, 1695, 1696, 2410, 2021, 2021, 2905, 1541, + 705, 1541, 1541, 705, 705, 683, 683, 1726, 2088, 1959, + 2092, 1902, 3959, 1578, 2096, 2097, 3367, 2755, 2756, 2112, + 1705, 658, 703, 3947, 2749, 703, 703, 3946, 3102, 1704, + 2448, 2718, 3945, 3251, 2261, 658, 1966, 1578, 924, 925, + 926, 927, 2894, 3220, 1968, 2252, 2018, 1274, 1275, 1276, + 1273, 1178, 1174, 1175, 1176, 1177, 3944, 2754, 1909, 2753, + 2752, 2750, 3218, 3924, 683, 1959, 1578, 4014, 2159, 3961, + 683, 683, 683, 718, 718, 3923, 2578, 1873, 1874, 1389, + 2169, 2170, 2171, 2172, 3098, 2811, 2708, 2178, 2043, 2695, + 1998, 1999, 2150, 2252, 225, 2434, 2090, 225, 225, 1904, + 225, 2114, 2463, 3186, 2367, 2361, 2300, 2008, 2009, 2360, + 2300, 1953, 2332, 2331, 1910, 2300, 2024, 2299, 1277, 2174, + 2243, 1919, 2145, 1923, 2098, 1469, 1308, 2019, 1927, 2751, + 2142, 2143, 1797, 1564, 948, 1318, 2907, 2820, 3521, 2300, + 1859, 1859, 2220, 3898, 2721, 2128, 2261, 1274, 1275, 1276, + 1273, 2720, 1859, 1859, 1954, 3627, 1989, 1990, 2261, 2237, + 1236, 1327, 2119, 3575, 2121, 2712, 2457, 1274, 1275, 1276, + 1273, 1963, 1988, 2319, 2304, 2140, 2141, 2186, 2158, 2007, + 2189, 2190, 3539, 2192, 1983, 1979, 2161, 2162, 2163, 2135, + 2231, 2012, 1984, 1987, 2006, 952, 2113, 1578, 2250, 1997, + 950, 949, 929, 2298, 3476, 1995, 2222, 1955, 1956, 1957, + 2013, 2003, 3472, 2016, 2017, 1274, 1275, 1276, 1273, 1970, + 1971, 1972, 1973, 3185, 3377, 3073, 2300, 1492, 2797, 2025, + 2026, 2785, 2242, 2020, 2022, 2181, 2167, 3317, 2610, 1924, + 1082, 1496, 2089, 1082, 1688, 2195, 3576, 2777, 2094, 2244, + 1324, 2100, 1082, 1496, 1221, 2227, 924, 925, 926, 927, + 1184, 2002, 2095, 2004, 2005, 3540, 2129, 1668, 2118, 1179, + 2120, 2296, 1113, 1114, 1115, 951, 2734, 2011, 1534, 1535, + 2716, 1537, 1538, 2704, 1542, 1543, 1544, 3477, 2023, 1079, + 1081, 2215, 707, 2697, 2692, 3473, 2164, 2165, 2156, 2684, + 2157, 1079, 1081, 2215, 2682, 2680, 1112, 3378, 2578, 1109, + 3828, 2434, 2183, 3625, 1272, 1737, 2287, 2286, 1593, 1594, + 1595, 1596, 1597, 2144, 1599, 1600, 1601, 1602, 1603, 1289, + 1272, 2678, 1609, 1610, 1611, 1612, 2433, 2200, 2363, 1589, + 1634, 1633, 946, 2279, 2280, 4018, 2339, 2338, 2322, 2313, + 1082, 2312, 2233, 2311, 2477, 2480, 2301, 2260, 3149, 1272, + 1306, 1305, 2221, 2434, 1697, 4213, 2693, 2230, 1987, 2228, + 1292, 1293, 1294, 1295, 1296, 1289, 2698, 2693, 1848, 1847, + 3914, 2241, 2685, 4181, 706, 2505, 1568, 2683, 2679, 4019, + 2239, 2374, 3308, 2376, 3752, 2378, 2379, 1569, 2670, 1079, + 1081, 3553, 2245, 2275, 3430, 683, 1541, 683, 1541, 2288, + 1848, 1847, 1478, 1524, 2679, 3995, 1479, 2395, 2302, 2434, + 929, 2362, 1566, 761, 2355, 2258, 683, 683, 683, 1272, + 1272, 1272, 1272, 3675, 1272, 702, 1272, 1493, 3753, 2300, + 2261, 683, 683, 683, 683, 3554, 2274, 1698, 2283, 3551, + 1274, 1275, 1276, 1273, 2431, 3897, 704, 1616, 3855, 2277, + 2278, 3433, 3782, 2435, 2436, 2437, 1778, 2440, 1541, 2276, + 3915, 3781, 3767, 3309, 2292, 2741, 3727, 1106, 1107, 1108, + 1111, 2240, 1110, 1290, 1291, 1292, 1293, 1294, 1295, 1296, + 1289, 705, 1886, 3552, 1541, 3531, 953, 3400, 2481, 2333, + 2334, 3391, 2336, 2476, 2470, 2475, 3383, 2473, 2478, 2343, + 3379, 2499, 3286, 703, 3916, 3032, 1478, 3310, 3031, 2465, + 1479, 2873, 2816, 2386, 1879, 2388, 1565, 2731, 1875, 1876, + 1877, 1878, 2696, 2601, 1882, 1883, 1884, 1885, 1887, 1888, + 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 2454, + 2380, 2225, 2224, 2456, 2223, 2458, 1465, 1464, 1494, 3674, + 2506, 1202, 2479, 2664, 1274, 1275, 1276, 1273, 2184, 683, + 2021, 3238, 2356, 2358, 2359, 2674, 2364, 1801, 2582, 2582, + 2112, 2582, 3103, 1288, 1287, 1297, 1298, 1290, 1291, 1292, + 1293, 1294, 1295, 1296, 1289, 1801, 1622, 2293, 2184, 2377, + 1949, 658, 658, 2381, 1784, 1274, 1275, 1276, 1273, 1200, + 4081, 2459, 2326, 1622, 2451, 1578, 683, 1276, 1273, 1273, + 1781, 1783, 1780, 3794, 1782, 2469, 1749, 1750, 1751, 1752, + 1753, 683, 2401, 3793, 2468, 1347, 3120, 1200, 2654, 677, + 1274, 1275, 1276, 1273, 2969, 1617, 2967, 2112, 2946, 3431, + 2660, 2944, 2662, 3773, 4209, 225, 3728, 3729, 2605, 1274, + 1275, 1276, 1273, 2656, 2462, 1326, 4133, 2450, 2743, 1798, + 2799, 3721, 2800, 1802, 1803, 1804, 1805, 2596, 1325, 2597, + 1082, 2586, 2584, 1843, 2588, 1274, 1275, 1276, 1273, 4101, + 4100, 1853, 4056, 2442, 2443, 2700, 2441, 2455, 2602, 2603, + 1863, 4055, 2315, 2445, 2446, 3519, 3020, 3018, 2482, 2483, + 4054, 2488, 4052, 2714, 3525, 1864, 2250, 4051, 2590, 4208, + 3016, 1348, 3005, 1578, 2872, 1578, 3530, 1578, 4020, 1079, + 1081, 3722, 1200, 1274, 1275, 1276, 1273, 2841, 2665, 3937, + 2733, 3927, 2666, 3917, 3846, 1907, 3755, 2612, 2659, 2618, + 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1278, 3754, 1496, + 1274, 1275, 1276, 1273, 2551, 3520, 3019, 3017, 2724, 2557, + 1578, 1200, 2314, 2444, 3178, 2762, 1557, 1559, 2452, 3698, + 3015, 2453, 3004, 2591, 1274, 1275, 1276, 1273, 3567, 3555, + 2769, 3518, 3276, 1623, 3145, 1578, 3115, 3114, 3003, 1274, + 1275, 1276, 1273, 3002, 3001, 796, 806, 2993, 2757, 2606, + 2987, 2986, 2985, 1576, 2617, 797, 2609, 798, 802, 805, + 801, 799, 800, 2984, 2812, 2686, 1832, 2598, 2366, 2203, + 2202, 2160, 2201, 2770, 2197, 2655, 1991, 3177, 1576, 2658, + 2710, 2711, 4111, 2196, 2728, 2151, 2818, 1933, 1931, 1689, + 1407, 2822, 3263, 2824, 1182, 2774, 2775, 3890, 3891, 4205, + 683, 683, 2010, 4203, 1274, 1275, 1276, 1273, 2657, 1274, + 1275, 1276, 1273, 2730, 1200, 2744, 3665, 2746, 4179, 756, + 803, 1578, 758, 4146, 1541, 2725, 2771, 757, 4088, 4087, + 1541, 2092, 3876, 4067, 2760, 4005, 2739, 2706, 3732, 2903, + 2768, 3999, 3690, 2715, 3980, 2909, 2717, 2722, 2910, 3164, + 3971, 804, 3952, 1181, 3678, 3951, 1274, 1275, 1276, 1273, + 3677, 1907, 3941, 2803, 3936, 1560, 1907, 1907, 2921, 1274, + 1275, 1276, 1273, 3935, 3894, 3880, 3878, 3847, 1200, 2735, + 2736, 1274, 1275, 1276, 1273, 3775, 2943, 1274, 1275, 1276, + 1273, 2748, 3736, 1200, 1200, 1200, 2021, 2758, 3725, 1200, + 2738, 2953, 2954, 2955, 2956, 1200, 2963, 3710, 2964, 2965, + 2885, 2966, 1737, 2968, 3709, 3676, 2185, 2887, 3705, 2188, + 4211, 3703, 2191, 3697, 2963, 2193, 2618, 1274, 1275, 1276, + 1273, 3693, 2922, 1082, 3692, 3689, 2582, 1274, 1275, 1276, + 1273, 2870, 1274, 1275, 1276, 1273, 3688, 2886, 3663, 3661, + 3021, 1828, 3634, 3631, 3629, 2043, 3025, 2890, 1825, 658, + 3515, 2911, 1827, 1824, 1826, 1830, 1831, 2092, 3497, 3485, + 1829, 1200, 2112, 2112, 2112, 2112, 2112, 2112, 3469, 3467, + 2852, 2236, 2854, 3461, 2912, 3411, 2297, 3389, 1200, 2112, + 2938, 2617, 2582, 2295, 3388, 2918, 2919, 3026, 2941, 2851, + 3386, 3385, 2941, 2937, 2868, 2938, 2949, 2950, 3380, 3375, + 1578, 2952, 3081, 3374, 2893, 2900, 3287, 2959, 2948, 2908, 2511, 683, 683, 2514, 2515, 2516, 2517, 2518, 2519, 2520, - 2911, 3385, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, - 2531, 2532, 2533, 2926, 2535, 2536, 2537, 2538, 2539, 2939, - 2540, 3180, 2945, 2923, 3380, 3375, 4162, 3374, 3287, 2951, - 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1289, 3249, 3069, - 3248, 3239, 3179, 3232, 3227, 3225, 3037, 225, 1274, 1275, - 1276, 1273, 225, 2796, 2371, 2983, 3159, 2913, 4018, 3156, - 3135, 2289, 2780, 2781, 2917, 2294, 2995, 3113, 2786, 1274, - 1275, 1276, 1273, 2303, 1859, 3088, 1859, 2795, 3014, 3130, - 1274, 1275, 1276, 1273, 3006, 3027, 2996, 2920, 2994, 2990, - 3033, 2989, 2988, 3144, 2830, 2821, 2813, 2618, 2707, 1578, - 865, 864, 3151, 2396, 1274, 1275, 1276, 1273, 2912, 2384, - 2310, 2295, 2383, 3099, 2771, 2206, 3070, 3066, 2317, 2918, - 2919, 2199, 3072, 3082, 3030, 3071, 1917, 3089, 3050, 3051, - 3052, 3053, 3054, 3055, 1916, 1690, 3086, 1355, 3104, 1351, - 1350, 2335, 2794, 3108, 1185, 933, 2340, 2341, 2342, 2942, - 4014, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, - 2354, 2938, 1906, 3860, 1649, 1650, 3859, 3129, 3848, 1274, - 1275, 1276, 1273, 1082, 3844, 3691, 2938, 2949, 2950, 3672, - 2110, 1654, 2952, 3644, 1658, 1082, 3546, 1657, 2959, 1274, - 1275, 1276, 1273, 3106, 3127, 3545, 3105, 3543, 3226, 3512, - 3481, 3229, 3479, 3478, 3475, 3138, 683, 1541, 2793, 3474, - 3153, 3468, 3466, 3126, 3240, 3241, 3242, 3244, 3128, 3246, - 3247, 3123, 3121, 3139, 143, 143, 143, 1080, 1200, 3446, - 3141, 3140, 3436, 3435, 1200, 1274, 1275, 1276, 1273, 3422, - 3266, 3125, 3421, 3318, 3253, 3250, 682, 682, 3160, 3217, - 3280, 1642, 690, 3137, 3049, 683, 3161, 3183, 3174, 3166, - 3165, 1643, 1644, 3176, 3163, 3147, 3169, 3097, 3171, 3297, - 1200, 3049, 2681, 683, 2677, 683, 1200, 1200, 2676, 3764, - 3148, 3170, 3172, 3173, 2344, 2112, 2431, 2337, 3316, 1287, + 8, 2902, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, + 2531, 2532, 2533, 3249, 2535, 2536, 2537, 2538, 2539, 2924, + 2540, 2923, 2926, 7, 3248, 2939, 3239, 3232, 3227, 2945, + 3225, 2371, 3159, 2951, 1274, 1275, 1276, 1273, 3069, 3156, + 1963, 1274, 1275, 1276, 1273, 3135, 3113, 225, 3088, 2913, + 3014, 3006, 225, 3049, 2780, 2781, 2917, 2996, 3082, 2994, + 2786, 2289, 2990, 2989, 3037, 2294, 2988, 2995, 2983, 2830, + 3049, 2821, 2813, 2303, 1859, 2707, 1859, 2396, 3615, 3130, + 865, 864, 1835, 1836, 1837, 1838, 1839, 1840, 1833, 1834, + 2384, 2383, 2206, 3144, 3027, 2199, 1917, 1916, 3033, 1578, + 1690, 1355, 3151, 1351, 3030, 1274, 1275, 1276, 1273, 1350, + 2310, 1185, 3050, 3051, 3052, 3053, 3054, 3055, 2317, 3066, + 933, 3070, 4167, 3072, 4037, 3071, 208, 4033, 199, 170, + 3104, 2920, 3872, 3871, 3860, 3108, 3856, 3691, 3086, 3089, + 3672, 2335, 3463, 3644, 2307, 2942, 2340, 2341, 2342, 3546, + 3545, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, + 2354, 3543, 1906, 3512, 1642, 171, 208, 3129, 3481, 1274, + 1275, 1276, 1273, 1082, 1643, 1644, 3099, 3479, 3478, 3475, + 3127, 3474, 171, 208, 3468, 1082, 1649, 1650, 3466, 3446, + 3436, 3138, 3435, 1657, 3422, 2110, 3105, 3125, 3226, 204, + 2936, 3229, 1670, 3421, 3318, 3253, 683, 1541, 3106, 3137, + 1654, 3148, 3153, 1658, 3240, 3241, 3242, 3244, 3181, 3246, + 3247, 3250, 3217, 3128, 3183, 3126, 3123, 3121, 1200, 3174, + 3139, 3141, 1667, 3140, 1200, 3166, 3165, 3163, 3097, 204, + 3266, 1274, 1275, 1276, 1273, 1274, 1275, 1276, 1273, 3160, + 3280, 3147, 2681, 2677, 2676, 683, 1669, 4159, 2344, 3161, + 2337, 682, 682, 3176, 2330, 2329, 2328, 690, 3180, 3297, + 1200, 2327, 3169, 683, 3171, 683, 1200, 1200, 3179, 2325, + 2321, 2320, 3172, 3173, 2318, 2112, 2431, 2796, 3316, 2309, + 2306, 171, 208, 3167, 3168, 1274, 1275, 1276, 1273, 3219, + 2305, 2205, 1900, 3170, 1899, 1274, 1275, 1276, 1273, 2499, + 1898, 1682, 3290, 1862, 1274, 1275, 1276, 1273, 171, 208, + 1861, 3345, 1852, 3348, 3234, 3348, 3348, 1590, 208, 3293, + 1200, 3224, 1588, 3223, 2795, 4166, 4132, 4061, 1345, 4032, + 3252, 1679, 3966, 3963, 3943, 2885, 2938, 2794, 3370, 3938, + 2859, 3841, 3366, 3840, 3810, 3792, 1578, 1578, 3788, 3766, + 3323, 1274, 1275, 1276, 1273, 1681, 3332, 3334, 3136, 3749, + 1082, 3268, 1082, 3645, 1274, 1275, 1276, 1273, 1082, 3642, + 3613, 3612, 2938, 1907, 3609, 1907, 3314, 3608, 2938, 2938, + 3574, 3571, 204, 3569, 3371, 3372, 3300, 3533, 3175, 1576, + 1576, 204, 3305, 683, 1907, 1907, 1082, 3299, 3289, 3266, + 4049, 3928, 3315, 3303, 3304, 3311, 3344, 3320, 3321, 1079, + 1081, 1637, 1541, 1648, 1639, 2092, 2092, 3353, 2469, 2793, + 3328, 690, 1653, 3326, 1656, 3327, 1645, 2468, 1616, 1472, + 171, 208, 2938, 3060, 3022, 808, 143, 2947, 2975, 2976, + 2896, 143, 3349, 3350, 2895, 3354, 1274, 1275, 1276, 1273, + 2888, 3368, 2853, 2991, 2992, 1288, 1287, 1297, 1298, 1290, + 1291, 1292, 1293, 1294, 1295, 1296, 1289, 171, 208, 1200, + 2798, 2691, 2600, 2762, 2541, 2432, 2403, 2699, 3028, 2702, + 3124, 3434, 3191, 3192, 2402, 2365, 3343, 1779, 3193, 3194, + 3195, 3196, 204, 3197, 3198, 3199, 3200, 3201, 3202, 3203, + 3204, 3205, 3206, 3207, 204, 689, 2166, 3319, 143, 3376, + 1913, 1722, 1671, 3324, 3325, 2792, 1646, 141, 3382, 3396, + 3397, 3381, 1406, 3068, 2791, 1391, 1387, 3390, 683, 3394, + 1386, 1385, 4047, 3764, 3387, 3384, 1384, 1383, 3407, 1382, + 3408, 204, 1274, 1275, 1276, 1273, 2790, 2742, 1381, 1380, + 2745, 1274, 1275, 1276, 1273, 1379, 1378, 1377, 1376, 3415, + 1375, 2763, 2764, 3418, 3419, 3420, 1374, 1373, 1372, 2766, + 2767, 1371, 1370, 1274, 1275, 1276, 1273, 1369, 1368, 3424, + 1367, 2618, 1366, 1365, 1364, 2772, 2773, 1288, 1287, 1297, + 1298, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1289, 3487, + 3447, 1363, 1362, 2178, 2789, 1361, 1358, 3351, 2788, 1357, + 1356, 1354, 3449, 3498, 3762, 1749, 1907, 1353, 3504, 3450, + 2787, 1352, 1349, 1342, 1341, 3454, 1339, 1338, 3453, 1337, + 3470, 1274, 1275, 1276, 1273, 1274, 1275, 1276, 1273, 3505, + 1080, 1336, 3398, 1335, 3459, 143, 2617, 1274, 1275, 1276, + 1273, 1334, 1333, 683, 2092, 1332, 3499, 1331, 3501, 2784, + 143, 1330, 143, 1329, 3414, 3538, 1328, 3491, 1288, 1287, 1297, 1298, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1289, - 1307, 3219, 2330, 171, 208, 2329, 3290, 2328, 2327, 2499, + 1323, 1322, 2582, 2112, 3558, 1321, 1274, 1275, 1276, 1273, + 1320, 1319, 1238, 3486, 1183, 3403, 3404, 4157, 3482, 4045, + 2783, 4043, 2914, 2915, 3610, 3488, 2782, 2439, 2417, 1226, + 3577, 4116, 3406, 1200, 2874, 2611, 2208, 1237, 3063, 3508, + 3058, 3413, 3345, 3064, 3412, 1082, 1200, 1274, 1275, 1276, + 1273, 3057, 1082, 1274, 1275, 1276, 1273, 3061, 1200, 3409, + 3624, 3647, 3062, 3065, 1578, 2572, 2573, 3067, 3537, 3511, + 2776, 3648, 3560, 3056, 126, 4080, 3514, 3544, 3528, 3982, + 3771, 2705, 68, 67, 683, 2694, 2092, 1466, 3285, 3526, + 1200, 1981, 1982, 2509, 3341, 3607, 3342, 1274, 1275, 1276, + 1273, 3143, 3626, 3620, 3557, 3556, 3425, 1576, 1976, 1977, + 1978, 3568, 2689, 3570, 3564, 3600, 3451, 3452, 2080, 2765, + 3509, 3646, 225, 1297, 1298, 1290, 1291, 1292, 1293, 1294, + 1295, 1296, 1289, 3635, 1631, 1200, 2729, 3614, 2710, 2711, + 3638, 3619, 3649, 3616, 685, 3578, 1274, 1275, 1276, 1273, + 2761, 3623, 686, 687, 1685, 2390, 1665, 2397, 3617, 2971, + 3628, 2740, 3632, 2168, 1907, 3630, 2972, 2973, 2974, 3633, + 2959, 1232, 3637, 3261, 3254, 3639, 2925, 1274, 1275, 1276, + 1273, 3640, 1796, 683, 2897, 2461, 682, 1189, 1274, 1275, + 1276, 1273, 2427, 3670, 3707, 1985, 1952, 1198, 1848, 1847, + 3636, 4170, 3049, 3940, 1200, 3656, 1402, 1403, 3373, 1274, + 1275, 1276, 1273, 1400, 1401, 3666, 1398, 1399, 2554, 3667, + 1227, 1396, 1397, 2547, 1200, 1578, 1578, 2093, 1533, 3559, + 1532, 3297, 1265, 3704, 2226, 3706, 3417, 3091, 2398, 2238, + 1485, 3563, 3744, 1484, 3107, 3744, 3109, 3049, 1457, 1508, + 4139, 4137, 4094, 4077, 4076, 4074, 4009, 3967, 3738, 3739, + 1200, 3760, 1200, 3734, 3733, 1907, 3695, 3719, 1576, 1794, + 1907, 2727, 3651, 3763, 3836, 3765, 3718, 3835, 3761, 1578, + 2726, 3717, 2236, 3716, 3735, 3715, 3726, 3662, 3471, 3443, + 3442, 3428, 2494, 2464, 1687, 3427, 3101, 683, 1482, 1200, + 1200, 4161, 4160, 1200, 1200, 3748, 3737, 3747, 3146, 2826, + 2825, 2222, 2819, 2308, 3560, 3687, 2938, 3162, 3759, 1223, + 4160, 3812, 1794, 4161, 3790, 3423, 4143, 3769, 3714, 3548, + 3322, 3807, 3607, 1987, 1082, 2421, 3833, 3776, 1661, 3796, + 3797, 3772, 3182, 3808, 3809, 1197, 212, 3, 3842, 3843, + 1500, 76, 3600, 2, 3768, 4183, 4184, 1, 3741, 2804, + 1911, 1578, 1404, 928, 3774, 3830, 924, 925, 926, 927, + 923, 1197, 1743, 1554, 1743, 2592, 2146, 1582, 3712, 1915, + 930, 3829, 3074, 3075, 3416, 3873, 3077, 2831, 2257, 3831, + 3038, 2545, 2407, 3279, 1467, 987, 1854, 3866, 3813, 3854, + 1702, 1214, 1699, 1213, 1576, 1211, 3758, 1799, 810, 2211, + 3023, 2997, 3832, 4169, 3877, 3853, 3879, 3849, 4197, 4131, + 4172, 1720, 794, 4068, 3972, 4135, 3974, 3861, 3865, 1287, 1297, 1298, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1289, - 3234, 3345, 2325, 3348, 2885, 3348, 3348, 2321, 3224, 3223, - 1200, 2792, 3293, 1288, 1287, 1297, 1298, 1290, 1291, 1292, - 1293, 1294, 1295, 1296, 1289, 2320, 2791, 2318, 3370, 2309, - 2859, 2306, 3366, 3268, 2305, 2205, 1578, 1578, 1274, 1275, - 1276, 1273, 1900, 3323, 1899, 1898, 3332, 3334, 1862, 2790, - 1082, 1861, 1082, 1274, 1275, 1276, 1273, 204, 1082, 1852, - 3167, 3168, 1590, 1907, 1588, 1907, 3314, 2936, 4161, 208, - 3371, 3372, 4119, 4036, 1345, 3289, 1274, 1275, 1276, 1273, - 1079, 4013, 3947, 683, 1907, 1907, 1082, 1081, 3311, 3266, - 3315, 4030, 3944, 3320, 3321, 3344, 690, 3931, 1576, 1576, - 3926, 3829, 1541, 3299, 3353, 2092, 2092, 3327, 3828, 3303, - 3304, 3810, 3792, 3343, 3788, 2469, 3766, 2468, 1616, 2789, - 3300, 3749, 3349, 3350, 3645, 3642, 3305, 3613, 2975, 2976, - 1395, 3612, 3354, 1280, 1281, 1282, 1283, 1284, 1285, 1286, - 1278, 3368, 204, 2991, 2992, 2788, 1274, 1275, 1276, 1273, - 3609, 3608, 3574, 3571, 3328, 2787, 3569, 3533, 3175, 1200, - 1637, 1648, 1639, 2762, 171, 208, 1653, 2699, 3028, 2702, - 1656, 3434, 1274, 1275, 1276, 1273, 1645, 1472, 3060, 3022, - 3191, 3192, 1274, 1275, 1276, 1273, 3193, 3194, 3195, 3196, - 3376, 3197, 3198, 3199, 3200, 3201, 3202, 3203, 3204, 3205, - 3206, 3207, 3396, 3397, 2784, 3319, 3387, 3384, 2947, 3382, - 3390, 3324, 3325, 3381, 3136, 3394, 2896, 2895, 683, 2783, - 2888, 3252, 2853, 3407, 2798, 3408, 208, 2938, 199, 170, - 2691, 1274, 1275, 1276, 1273, 2600, 2541, 2742, 204, 2432, - 2745, 2403, 2402, 2365, 3415, 1779, 1274, 1275, 1276, 1273, - 2782, 2763, 2764, 204, 3418, 3419, 3420, 2166, 1913, 2766, - 2767, 1722, 1671, 2938, 3424, 171, 208, 3326, 2776, 2938, - 2938, 1646, 1406, 2617, 1391, 2772, 2773, 1274, 1275, 1276, - 1273, 4028, 2765, 171, 208, 1670, 1587, 719, 1387, 3487, - 689, 2761, 1386, 2178, 1385, 1274, 1275, 1276, 1273, 204, - 1384, 3351, 1383, 3498, 3447, 1749, 1907, 3450, 3504, 1274, - 1275, 1276, 1273, 3454, 3470, 1667, 3449, 1382, 1274, 1275, - 1276, 1273, 2740, 2938, 1381, 1380, 143, 3459, 1379, 3505, - 171, 208, 1378, 3124, 1377, 3413, 1796, 1376, 1375, 1669, - 3398, 1374, 1373, 683, 2092, 1372, 3499, 1371, 3501, 1274, - 1275, 1276, 1273, 1370, 1369, 3538, 1368, 204, 1367, 1366, - 3491, 1365, 3414, 1274, 1275, 1276, 1273, 1364, 1363, 171, - 208, 1362, 2582, 2112, 3558, 1361, 1358, 1357, 1356, 1354, - 141, 1353, 1352, 3486, 1349, 1342, 1341, 3453, 1339, 1682, - 3482, 3488, 2914, 2915, 143, 1338, 1337, 1336, 1335, 1334, - 3577, 143, 1333, 1200, 204, 1332, 1331, 1330, 3508, 1329, - 1328, 1323, 3345, 1322, 143, 1082, 1200, 143, 143, 1679, - 1321, 1320, 1082, 1319, 1238, 1183, 4026, 3509, 1200, 4024, - 3624, 143, 3403, 3404, 1578, 3610, 2439, 2417, 1226, 3537, - 3068, 3528, 4154, 1681, 4152, 4103, 3406, 3560, 3544, 2874, - 3526, 2611, 2208, 1237, 683, 3058, 2092, 3063, 3412, 3409, - 1200, 3067, 3064, 3607, 3600, 3061, 3057, 3647, 3626, 3056, - 3062, 4055, 2618, 3771, 3557, 3556, 3065, 3648, 2572, 2573, - 126, 3564, 3963, 3511, 68, 67, 2705, 2694, 1466, 3143, - 3514, 3285, 225, 1981, 1982, 2509, 1576, 1976, 1977, 1978, - 2689, 3341, 3635, 3342, 3638, 1200, 3614, 3451, 3452, 3619, - 3616, 3620, 3425, 2080, 1631, 2729, 3623, 3649, 2567, 2571, - 2572, 2573, 2568, 2576, 2569, 2574, 3628, 3646, 2570, 3630, - 2575, 2971, 2710, 2711, 1907, 3633, 1685, 2390, 2972, 2973, - 2974, 682, 1189, 3639, 1665, 3637, 2397, 2168, 1232, 3261, - 685, 3640, 1198, 683, 686, 687, 3254, 3670, 2925, 2897, - 2461, 3636, 2427, 1985, 3707, 1952, 1848, 1847, 1402, 1403, - 1400, 1401, 1398, 1399, 1200, 1227, 1396, 1397, 4165, 3928, - 3373, 2554, 2547, 3656, 2093, 1533, 3666, 1532, 1265, 2226, - 3417, 3667, 3091, 2398, 1200, 1578, 1578, 3632, 2238, 1485, - 1484, 3297, 1457, 3704, 1508, 3706, 4126, 3559, 3719, 4124, - 4081, 2727, 4052, 4051, 3107, 3744, 3109, 3718, 3744, 3563, - 2726, 4049, 3990, 3948, 3824, 3823, 3761, 3662, 3471, 3734, - 1200, 3760, 1200, 3738, 3739, 1907, 3443, 3695, 3442, 3428, - 1907, 2494, 3763, 2464, 3765, 3733, 1687, 3427, 3101, 1578, - 1482, 3717, 2236, 3716, 3735, 3715, 3146, 1576, 1794, 4156, - 4155, 4155, 3726, 2826, 2825, 2819, 2308, 683, 1223, 1200, - 1200, 4156, 3790, 1200, 1200, 3423, 3748, 3747, 4130, 3737, - 3714, 3548, 3322, 2421, 2222, 3712, 1661, 3162, 3759, 3560, - 1197, 3812, 212, 3, 1500, 3807, 76, 2, 4178, 4179, - 3607, 3600, 3772, 1987, 1082, 3769, 3821, 3776, 1, 2804, - 1911, 1794, 3182, 1404, 928, 923, 3578, 1554, 3830, 3831, - 3796, 3797, 2592, 2146, 3808, 3809, 1582, 3651, 1915, 3617, - 930, 1578, 924, 925, 926, 927, 3074, 1197, 3075, 3416, - 3077, 2959, 2831, 2257, 3038, 3818, 2545, 2407, 3279, 1467, - 987, 3817, 1854, 1702, 1214, 3861, 2111, 1699, 1213, 3819, - 1211, 1799, 810, 2211, 3023, 3842, 2997, 3820, 3854, 4164, - 3687, 4198, 3741, 3049, 4118, 4167, 1720, 794, 4043, 3953, - 4122, 3955, 3837, 3840, 3865, 3841, 3867, 2262, 1270, 3122, - 1014, 852, 821, 1576, 1340, 1678, 3849, 3853, 3189, 3568, - 3187, 3570, 820, 3523, 2864, 3825, 3094, 3899, 1015, 2194, - 3897, 3870, 3950, 3838, 1632, 3891, 1636, 2460, 3049, 3907, - 4009, 3770, 3337, 2933, 1660, 4004, 3572, 1200, 3683, 3681, - 3682, 143, 726, 2125, 143, 143, 3881, 143, 656, 3914, - 1064, 3811, 3920, 2207, 727, 2438, 3892, 4069, 3670, 3756, - 3757, 3930, 967, 3506, 2416, 968, 960, 3894, 3893, 2883, - 2882, 3758, 3906, 1760, 1279, 1777, 3910, 3208, 3209, 1317, - 3679, 1200, 3680, 765, 2291, 2861, 1578, 1080, 3595, 3087, - 143, 75, 74, 73, 72, 233, 812, 2938, 232, 1080, - 3862, 3352, 3730, 4039, 3927, 4169, 3762, 791, 790, 789, - 788, 787, 786, 1082, 2565, 143, 2566, 2564, 1536, 2562, - 3938, 2561, 3534, 3535, 3536, 1547, 2107, 2106, 3100, 3541, - 3542, 3426, 3936, 2173, 2175, 3295, 2560, 2962, 2957, 2032, - 2030, 1545, 3982, 2489, 2496, 3969, 1584, 2029, 1576, 3949, - 4100, 3460, 3673, 1743, 4019, 1743, 4020, 3977, 3787, 3978, - 1288, 1287, 1297, 1298, 1290, 1291, 1292, 1293, 1294, 1295, - 1296, 1289, 3991, 2567, 2571, 2572, 2573, 2568, 2576, 2569, - 2574, 3889, 3979, 2570, 3007, 2575, 3669, 1975, 2485, 2049, - 2978, 2046, 2045, 2970, 3985, 3783, 3777, 1307, 2077, 3895, - 4008, 3743, 1200, 3993, 3579, 3580, 3586, 2426, 1133, 1129, - 1578, 1131, 1132, 4033, 1130, 2747, 3392, 2466, 4040, 4023, - 4025, 4027, 4029, 4002, 3256, 2847, 4007, 2846, 2844, 2843, - 1442, 3981, 4041, 4065, 4016, 3711, 2616, 2614, 1180, 3405, - 3401, 1412, 1410, 2219, 4032, 3410, 3184, 3059, 2234, 3142, - 2108, 2104, 3768, 4022, 2103, 1104, 1103, 1613, 3235, 4048, - 4046, 3237, 3774, 1578, 45, 4060, 3897, 3040, 2555, 3872, - 1980, 4064, 1576, 961, 2414, 110, 41, 123, 4061, 109, - 187, 60, 4091, 1274, 1275, 1276, 1273, 186, 4099, 59, - 121, 4082, 184, 58, 104, 4084, 3813, 4083, 4085, 4086, - 1288, 1287, 1297, 1298, 1290, 1291, 1292, 1293, 1294, 1295, - 1296, 1289, 103, 120, 182, 4115, 57, 217, 4108, 216, - 4109, 219, 4110, 218, 4111, 1576, 215, 2667, 2668, 214, - 4112, 2737, 3462, 4125, 1620, 4127, 4128, 3945, 3946, 3464, - 3465, 213, 4123, 4121, 4053, 3746, 4035, 918, 44, 43, - 1743, 3969, 1200, 4131, 4132, 1288, 1287, 1297, 1298, 1290, - 1291, 1292, 1293, 1294, 1295, 1296, 1289, 188, 42, 111, - 61, 1832, 3480, 3920, 4144, 40, 39, 38, 34, 13, - 12, 4146, 4147, 4145, 4150, 35, 22, 4153, 4163, 4151, - 4171, 21, 1707, 4170, 20, 4157, 4158, 4159, 4160, 26, - 32, 31, 136, 135, 30, 134, 133, 132, 131, 4183, - 4175, 130, 129, 128, 1200, 29, 19, 3584, 52, 51, - 50, 49, 48, 47, 9, 4188, 4187, 124, 4008, 4190, - 119, 117, 28, 118, 4196, 115, 116, 4200, 114, 113, - 4197, 1288, 1287, 1297, 1298, 1290, 1291, 1292, 1293, 1294, - 1295, 1296, 1289, 3814, 112, 107, 105, 3815, 3596, 87, - 86, 85, 100, 99, 4208, 98, 97, 96, 95, 93, - 94, 3587, 1013, 4171, 4216, 84, 4170, 4215, 83, 82, - 81, 80, 3582, 102, 108, 4200, 4217, 3604, 3605, 106, - 1300, 4221, 1304, 3583, 91, 101, 92, 90, 1938, 1939, - 89, 88, 79, 78, 77, 168, 167, 166, 1301, 1303, - 1299, 165, 1302, 1288, 1287, 1297, 1298, 1290, 1291, 1292, - 1293, 1294, 1295, 1296, 1289, 164, 162, 2585, 1969, 163, - 161, 3588, 160, 1974, 159, 158, 157, 156, 1907, 53, - 54, 55, 56, 1534, 1535, 178, 1537, 1538, 177, 1542, - 1543, 1544, 179, 181, 1907, 1828, 183, 3641, 180, 185, - 3643, 175, 1825, 173, 176, 174, 1827, 1824, 1826, 1830, - 1831, 172, 70, 11, 1829, 122, 18, 4, 0, 1832, - 0, 3650, 0, 1593, 1594, 1595, 1596, 1597, 0, 1599, - 1600, 1601, 1602, 1603, 2111, 0, 0, 1609, 1610, 1611, - 1612, 0, 143, 0, 0, 2027, 2028, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, - 208, 65, 199, 170, 0, 0, 0, 2284, 0, 0, - 0, 0, 0, 0, 0, 0, 3603, 0, 2475, 200, - 0, 0, 0, 0, 0, 0, 191, 0, 3939, 0, - 201, 1288, 1287, 1297, 1298, 1290, 1291, 1292, 1293, 1294, - 1295, 1296, 1289, 3592, 2155, 4142, 0, 0, 0, 141, - 2155, 2155, 2155, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 127, 3589, 3593, 3591, 3590, 0, - 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1813, 1814, 1815, 1816, 1817, - 1818, 1819, 1820, 1821, 1822, 1823, 1835, 1836, 1837, 1838, - 1839, 1840, 1833, 1834, 3992, 0, 0, 1743, 0, 3996, - 3997, 738, 737, 744, 734, 0, 3598, 3599, 0, 0, - 0, 0, 0, 0, 741, 742, 0, 743, 747, 0, + 3909, 3882, 3903, 3852, 2262, 1270, 3122, 1014, 3184, 852, + 821, 1340, 143, 143, 143, 1080, 1678, 1200, 3189, 3187, + 820, 3523, 2864, 3837, 3094, 3911, 1015, 3893, 2194, 3932, + 3926, 3756, 3757, 2567, 2571, 2572, 2573, 2568, 2576, 2569, + 2574, 3969, 3904, 2570, 3670, 2575, 3850, 1632, 3906, 1636, + 3905, 2460, 3679, 3919, 3680, 4028, 3770, 3337, 3918, 2933, + 3922, 1200, 1288, 1287, 1297, 1298, 1290, 1291, 1292, 1293, + 1294, 1295, 1296, 1289, 1660, 4023, 3572, 3683, 1578, 3681, + 3682, 3352, 726, 2125, 656, 1064, 3939, 3811, 1307, 2207, + 727, 2438, 3814, 1082, 3942, 967, 3506, 2416, 968, 960, + 2883, 3948, 3534, 3535, 3536, 2882, 1760, 1279, 1777, 3541, + 3542, 3208, 3209, 1536, 1317, 765, 3957, 3901, 2291, 2861, + 1547, 1576, 3595, 3087, 75, 74, 73, 72, 233, 1743, + 812, 232, 3874, 3730, 4001, 4064, 3988, 4174, 791, 790, + 789, 1584, 788, 787, 3968, 786, 2565, 2566, 2564, 3996, + 2562, 3997, 2561, 1300, 2107, 1304, 2106, 3100, 3426, 2173, + 2175, 4010, 3295, 2962, 2957, 2032, 2030, 4006, 1545, 2489, + 2496, 1301, 1303, 1299, 3998, 1302, 1288, 1287, 1297, 1298, + 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1289, 4004, 4027, + 2029, 4113, 3460, 3673, 1200, 4038, 4012, 4039, 3787, 3007, + 3669, 1975, 2485, 2049, 4053, 4021, 2978, 2046, 2045, 1578, + 2970, 3783, 4058, 4042, 4044, 4046, 4048, 4065, 4026, 3777, + 2077, 3907, 3743, 3579, 4035, 3580, 3586, 2426, 4066, 1133, + 1129, 1131, 1132, 1130, 4041, 2747, 3392, 2466, 1395, 3256, + 2847, 2846, 2844, 2843, 3964, 3965, 1442, 4057, 4000, 4090, + 3711, 2616, 1576, 2614, 1180, 3405, 3401, 1412, 4073, 4071, + 1410, 2219, 1578, 3410, 4085, 3909, 3059, 2234, 3142, 2108, + 4089, 2104, 2103, 1104, 1103, 1613, 3235, 4086, 3237, 45, + 3040, 4104, 2555, 3884, 1980, 961, 2414, 4112, 4095, 110, + 41, 123, 4098, 4099, 109, 3584, 4097, 187, 60, 186, + 4096, 59, 121, 184, 58, 1576, 104, 103, 120, 182, + 57, 217, 3462, 216, 219, 218, 215, 2667, 2668, 3464, + 3465, 214, 1620, 4121, 4128, 4122, 213, 4123, 4078, 4124, + 3746, 4125, 4060, 918, 44, 4138, 3596, 4140, 4141, 43, + 188, 42, 111, 61, 40, 1200, 39, 4136, 4134, 3587, + 38, 34, 3480, 13, 12, 3988, 4144, 35, 22, 4145, + 3582, 21, 1707, 3932, 20, 3604, 3605, 26, 4149, 32, + 31, 3583, 136, 4152, 4151, 4150, 135, 4155, 30, 134, + 4158, 4168, 4156, 4176, 133, 132, 4175, 131, 130, 129, + 4162, 4163, 4164, 4165, 1587, 128, 29, 19, 689, 1200, + 4180, 52, 51, 50, 49, 48, 47, 9, 124, 3588, + 4027, 4187, 4186, 119, 4189, 117, 28, 118, 115, 4195, + 116, 1832, 4199, 114, 113, 112, 107, 105, 87, 4196, + 86, 85, 100, 99, 143, 98, 97, 3827, 96, 95, + 93, 94, 1013, 4207, 84, 83, 82, 2737, 2560, 81, + 80, 102, 4176, 4215, 108, 4175, 4214, 4147, 106, 91, + 101, 92, 90, 89, 4199, 4216, 88, 79, 78, 77, + 4220, 1288, 1287, 1297, 1298, 1290, 1291, 1292, 1293, 1294, + 1295, 1296, 1289, 168, 167, 2567, 2571, 2572, 2573, 2568, + 2576, 2569, 2574, 1938, 1939, 2570, 166, 2575, 165, 164, + 162, 163, 143, 161, 160, 159, 158, 157, 156, 143, + 53, 1743, 54, 55, 3603, 56, 2475, 178, 1907, 2284, + 177, 179, 143, 1969, 181, 143, 143, 183, 1974, 180, + 185, 175, 173, 176, 1907, 174, 172, 3641, 70, 143, + 3643, 3592, 11, 1288, 1287, 1297, 1298, 1290, 1291, 1292, + 1293, 1294, 1295, 1296, 1289, 122, 18, 4, 0, 0, + 0, 3650, 0, 3589, 3593, 3591, 3590, 0, 0, 0, + 0, 0, 171, 208, 65, 199, 170, 1288, 1287, 1297, + 1298, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1289, 0, + 0, 0, 200, 0, 0, 0, 0, 0, 0, 191, + 2027, 2028, 0, 201, 0, 0, 1828, 0, 0, 0, + 0, 0, 0, 1825, 3598, 3599, 0, 1827, 1824, 1826, + 1830, 1831, 141, 0, 0, 1829, 0, 3949, 3950, 0, + 0, 0, 0, 0, 3954, 3955, 3956, 127, 0, 0, + 3958, 0, 0, 0, 0, 0, 204, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2155, + 0, 0, 0, 0, 0, 2155, 2155, 2155, 3606, 0, + 0, 738, 737, 744, 734, 0, 0, 0, 0, 0, + 3585, 0, 0, 3597, 741, 742, 0, 743, 747, 0, 0, 728, 0, 0, 0, 0, 0, 0, 0, 0, - 4017, 752, 0, 1828, 0, 0, 0, 0, 0, 0, - 1825, 0, 0, 0, 1827, 1824, 1826, 1830, 1831, 0, - 150, 151, 1829, 152, 153, 0, 0, 0, 154, 3606, - 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3585, 0, 0, 3597, 0, 0, 756, 0, 0, - 758, 0, 0, 0, 0, 757, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 752, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4011, 0, 0, 0, + 0, 4015, 4016, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 150, 151, 0, 152, 153, 0, 0, + 0, 154, 0, 0, 155, 0, 0, 756, 0, 0, + 758, 0, 4036, 0, 0, 757, 1813, 1814, 1815, 1816, + 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1835, 1836, 1837, + 1838, 1839, 1840, 1833, 1834, 0, 0, 0, 0, 0, + 0, 0, 1002, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 169, 197, 206, 198, 125, + 0, 0, 0, 0, 3602, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 196, 190, + 189, 0, 0, 0, 0, 71, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 149, 998, 999, 0, 0, 0, 0, + 0, 0, 0, 0, 2111, 1042, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3601, + 0, 0, 0, 0, 0, 0, 192, 193, 194, 0, + 0, 0, 0, 729, 731, 730, 0, 0, 0, 0, + 0, 0, 0, 0, 736, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 740, 0, 0, 0, + 0, 0, 0, 755, 0, 0, 0, 0, 0, 143, + 733, 0, 143, 143, 723, 143, 202, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1044, 0, 0, + 1043, 0, 0, 0, 0, 0, 0, 137, 0, 0, + 0, 195, 0, 138, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1080, 0, 0, 143, 0, + 0, 0, 0, 0, 0, 0, 0, 1080, 0, 1028, + 2385, 0, 2387, 0, 1327, 0, 0, 0, 1003, 0, + 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, + 0, 2404, 2405, 2406, 0, 0, 0, 139, 0, 0, + 0, 0, 0, 0, 0, 1005, 2422, 2423, 2424, 2425, + 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 735, + 739, 745, 4034, 746, 748, 0, 0, 749, 750, 751, + 0, 0, 753, 754, 0, 0, 0, 0, 0, 66, + 0, 0, 0, 2078, 0, 1307, 0, 0, 2039, 0, + 0, 2086, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1027, 1025, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 147, 205, 0, 148, 0, + 0, 2080, 2048, 0, 0, 0, 0, 62, 0, 1024, + 0, 2081, 2082, 0, 0, 0, 0, 0, 0, 0, + 0, 997, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1004, 1037, 1547, 0, 4109, 2047, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1033, 0, 2055, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 140, 46, 0, 0, 0, 0, 0, + 63, 1584, 0, 0, 0, 0, 0, 0, 0, 1034, + 1038, 0, 0, 0, 0, 0, 2155, 0, 0, 0, + 0, 0, 0, 144, 145, 732, 0, 146, 0, 1021, + 4109, 1019, 1023, 1041, 0, 0, 0, 1020, 1017, 1016, + 0, 1022, 1007, 1008, 1006, 1009, 1010, 1011, 1012, 0, + 1039, 0, 1040, 2071, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1035, 1036, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4109, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2078, 0, 0, 0, 0, + 2039, 1031, 0, 2086, 0, 0, 0, 1030, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1026, 0, 0, 0, 2038, 2040, 2037, 0, 0, + 2034, 0, 0, 2080, 2048, 2059, 0, 4218, 0, 0, + 0, 0, 0, 2081, 2082, 0, 2065, 0, 0, 0, + 0, 0, 0, 0, 2050, 0, 2033, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2053, 2087, 0, 2047, + 2054, 2056, 2058, 0, 2060, 2061, 2062, 2066, 2067, 2068, + 2070, 2073, 2074, 2075, 0, 0, 0, 2055, 0, 0, + 0, 2063, 2072, 2064, 0, 0, 0, 0, 0, 1029, + 0, 0, 0, 2042, 0, 1000, 1001, 0, 995, 0, + 0, 0, 0, 996, 0, 2585, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2079, 0, + 0, 0, 0, 0, 0, 2827, 2828, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2071, 0, 0, 0, 0, + 0, 2035, 2036, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2111, 0, 2901, 0, 0, 0, 0, 2076, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 143, 0, 169, 197, 206, 198, 125, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2052, 0, 0, 0, + 2051, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2069, 0, 0, 2038, 2928, 2037, + 0, 0, 2927, 2057, 0, 0, 0, 2059, 0, 0, + 0, 0, 0, 0, 0, 0, 2084, 2083, 2065, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2053, 2087, + 0, 0, 2054, 2056, 2058, 0, 2060, 2061, 2062, 2066, + 2067, 2068, 2070, 2073, 2074, 2075, 0, 0, 0, 0, + 0, 0, 0, 2063, 2072, 2064, 0, 0, 0, 2044, + 0, 0, 0, 0, 0, 2042, 1152, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2079, 0, 0, 0, 2085, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3092, 3093, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2035, 2036, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2076, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2052, 0, + 0, 0, 2051, 0, 0, 0, 0, 0, 143, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, + 0, 0, 0, 1791, 1792, 0, 2069, 0, 1170, 1171, + 1137, 0, 0, 0, 1152, 2057, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2084, 2083, + 0, 1160, 1164, 1166, 1168, 1173, 0, 1178, 1174, 1175, + 1176, 1177, 0, 1155, 1156, 1157, 1158, 1135, 1136, 1161, + 0, 1138, 0, 1140, 1141, 1142, 1143, 1139, 1144, 1145, + 1146, 1147, 1148, 1151, 1153, 1149, 1150, 1159, 0, 0, + 0, 0, 0, 0, 0, 1163, 1165, 1167, 1169, 1172, + 0, 2044, 738, 737, 744, 734, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 741, 742, 0, 743, 747, + 0, 0, 728, 0, 0, 0, 0, 0, 0, 0, + 1152, 0, 752, 0, 0, 1154, 0, 0, 0, 0, + 738, 737, 744, 734, 0, 0, 2085, 2111, 2111, 2111, + 2111, 2111, 2111, 741, 742, 0, 743, 747, 0, 0, + 728, 3233, 0, 0, 2111, 0, 1170, 1171, 1137, 0, + 752, 0, 1127, 1274, 1275, 1276, 1273, 0, 756, 0, + 0, 758, 0, 0, 0, 0, 757, 0, 0, 1160, + 1164, 1166, 1168, 1173, 0, 1178, 1174, 1175, 1176, 1177, + 0, 1155, 1156, 1157, 1158, 1135, 1136, 1161, 0, 1138, + 3288, 1140, 1141, 1142, 1143, 1139, 1144, 1145, 1146, 1147, + 1148, 1151, 1153, 1149, 1150, 1159, 0, 0, 3301, 0, + 3302, 0, 0, 1163, 1165, 1167, 1169, 1172, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 143, 0, 0, 0, 0, 143, 0, 0, + 0, 1832, 1170, 1171, 1137, 0, 0, 0, 0, 0, + 0, 0, 0, 1154, 0, 0, 0, 0, 143, 0, + 0, 0, 0, 0, 0, 1160, 1164, 1166, 1168, 1173, + 143, 1178, 1174, 1175, 1176, 1177, 0, 1155, 1156, 1157, + 1158, 1135, 1136, 1161, 0, 1138, 0, 1140, 1141, 1142, + 1143, 1139, 1144, 1145, 1146, 1147, 1148, 1151, 1153, 1149, + 1150, 1159, 0, 0, 0, 0, 0, 0, 0, 1163, + 1165, 1167, 1169, 1172, 729, 731, 730, 0, 0, 0, + 0, 0, 0, 0, 0, 736, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 740, 2155, 0, + 0, 0, 0, 0, 755, 0, 0, 0, 0, 1154, + 0, 733, 729, 731, 730, 0, 0, 0, 0, 0, + 0, 0, 0, 736, 2078, 0, 0, 0, 0, 0, + 0, 0, 171, 208, 0, 740, 0, 0, 0, 0, + 0, 0, 755, 0, 0, 0, 0, 0, 0, 733, + 0, 0, 0, 0, 0, 0, 3742, 0, 0, 0, + 0, 0, 2080, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1162, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1828, 0, 0, 0, + 0, 0, 0, 1825, 0, 0, 0, 1827, 1824, 1826, + 1830, 1831, 0, 0, 0, 1829, 204, 0, 0, 0, + 0, 0, 0, 0, 0, 1080, 2055, 143, 0, 0, + 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, + 2111, 0, 0, 3456, 0, 0, 0, 0, 0, 0, + 735, 739, 745, 0, 746, 748, 0, 0, 749, 750, + 751, 143, 0, 753, 754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 196, 190, 189, 0, 0, - 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 735, 739, + 745, 0, 746, 748, 0, 0, 749, 750, 751, 0, + 0, 753, 754, 0, 2071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 149, 0, 4134, 4135, 0, 0, 0, 0, 0, 4139, - 4140, 4141, 0, 1813, 1814, 1815, 1816, 1817, 1818, 1819, - 1820, 1821, 1822, 1823, 1835, 1836, 1837, 1838, 1839, 1840, - 1833, 1834, 0, 0, 0, 3602, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 194, 0, 0, 0, 0, + 0, 0, 0, 1162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 729, 731, 730, 0, 0, 0, 0, - 0, 0, 0, 0, 736, 0, 0, 0, 0, 2111, - 2111, 2111, 2111, 2111, 2111, 0, 740, 0, 0, 0, - 0, 0, 202, 755, 0, 0, 2111, 0, 0, 0, - 733, 0, 0, 0, 723, 2385, 0, 2387, 0, 0, - 3601, 0, 1327, 137, 0, 0, 0, 195, 0, 138, - 0, 0, 0, 0, 0, 0, 2404, 2405, 2406, 171, - 208, 65, 199, 170, 0, 0, 0, 0, 0, 0, - 0, 2422, 2423, 2424, 2425, 0, 0, 0, 0, 200, - 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, - 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 139, 0, 0, 0, 0, 0, 141, - 4015, 0, 0, 0, 143, 0, 64, 0, 0, 143, - 0, 0, 0, 0, 127, 0, 2160, 0, 0, 0, - 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, - 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 143, 0, 0, 0, 0, 0, 735, 739, - 745, 0, 746, 748, 0, 66, 749, 750, 751, 0, - 0, 753, 754, 0, 0, 0, 0, 0, 2078, 0, - 0, 0, 0, 2039, 0, 0, 2086, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4096, 0, 1547, - 0, 147, 205, 0, 148, 0, 0, 0, 0, 0, - 0, 0, 0, 62, 0, 0, 2080, 2048, 0, 0, - 150, 151, 0, 152, 153, 0, 2081, 2082, 154, 0, - 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1584, 0, 0, 0, - 0, 0, 2047, 0, 0, 0, 0, 0, 0, 0, - 0, 2155, 0, 0, 0, 0, 0, 0, 0, 0, - 2055, 0, 0, 0, 0, 0, 0, 4096, 0, 140, - 46, 0, 0, 0, 0, 0, 63, 0, 0, 0, - 5, 0, 169, 197, 206, 198, 125, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, - 145, 0, 0, 146, 0, 196, 190, 189, 0, 0, - 0, 0, 71, 0, 732, 0, 0, 0, 0, 0, - 0, 0, 0, 4096, 0, 0, 0, 1080, 0, 143, - 149, 0, 0, 0, 0, 143, 0, 0, 2071, 0, - 0, 0, 2111, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1813, 1814, 1815, 1816, + 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1835, 1836, 1837, + 1838, 1839, 1840, 1833, 1834, 0, 0, 0, 2155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 194, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4219, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2038, 2040, 2037, 0, 0, 2034, 0, 0, 0, 0, - 2059, 0, 202, 0, 0, 0, 0, 0, 0, 0, - 0, 2065, 0, 0, 0, 0, 0, 0, 0, 2050, - 0, 2033, 0, 137, 0, 0, 0, 195, 0, 138, - 0, 2053, 2087, 0, 0, 2054, 2056, 2058, 0, 2060, - 2061, 2062, 2066, 2067, 2068, 2070, 2073, 2074, 2075, 0, - 0, 0, 0, 0, 0, 0, 2063, 2072, 2064, 2078, - 2827, 2828, 0, 0, 2039, 0, 0, 2086, 2042, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 2080, 2048, 2901, - 0, 0, 0, 2079, 0, 0, 0, 2081, 2082, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2047, 0, 2035, 2036, 0, 0, 0, - 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, - 0, 2055, 0, 2076, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2052, 0, 0, 0, 2051, 0, 0, 0, 0, 0, - 0, 147, 205, 0, 148, 0, 0, 0, 0, 0, - 0, 0, 0, 62, 0, 0, 0, 0, 2069, 0, - 0, 0, 0, 0, 0, 0, 0, 2057, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2084, 2083, 0, 0, 0, 0, 0, 0, 0, 2071, - 0, 0, 0, 0, 0, 0, 0, 0, 1152, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, - 46, 0, 0, 0, 0, 0, 63, 0, 0, 0, - 0, 0, 143, 2044, 0, 0, 0, 0, 0, 143, - 0, 3092, 3093, 0, 0, 0, 0, 0, 0, 144, - 145, 0, 0, 146, 0, 0, 0, 0, 0, 0, - 0, 2038, 2928, 2037, 0, 0, 2927, 0, 0, 0, - 0, 2059, 0, 0, 0, 0, 0, 0, 2085, 0, - 0, 0, 2065, 0, 0, 0, 0, 0, 0, 0, - 2111, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2053, 2087, 0, 0, 2054, 2056, 2058, 0, - 2060, 2061, 2062, 2066, 2067, 2068, 2070, 2073, 2074, 2075, - 0, 0, 0, 0, 0, 1791, 1792, 2063, 2072, 2064, - 1170, 1171, 1137, 0, 0, 0, 0, 0, 0, 2042, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1160, 1164, 1166, 1168, 1173, 0, 1178, - 1174, 1175, 1176, 1177, 0, 1155, 1156, 1157, 1158, 1135, - 1136, 1161, 0, 1138, 2079, 1140, 1141, 1142, 1143, 1139, - 1144, 1145, 1146, 1147, 1148, 1151, 1153, 1149, 1150, 1159, - 0, 0, 0, 0, 0, 1152, 0, 1163, 1165, 1167, - 1169, 1172, 0, 0, 0, 0, 2035, 2036, 0, 143, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2076, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1154, 0, 0, - 0, 2052, 0, 0, 0, 2051, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3233, 0, 0, 738, - 737, 744, 734, 0, 0, 0, 0, 0, 0, 2069, - 0, 0, 741, 742, 0, 743, 747, 0, 2057, 728, - 0, 0, 0, 0, 0, 0, 0, 1152, 0, 752, - 0, 2084, 2083, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3288, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 143, 0, 3301, 0, 3302, 0, 1170, 1171, 1137, - 0, 0, 0, 1127, 0, 756, 0, 0, 758, 0, - 0, 0, 0, 757, 2044, 0, 0, 0, 0, 0, - 1160, 1164, 1166, 1168, 1173, 0, 1178, 1174, 1175, 1176, - 1177, 0, 1155, 1156, 1157, 1158, 1135, 1136, 1161, 0, - 1138, 0, 1140, 1141, 1142, 1143, 1139, 1144, 1145, 1146, - 1147, 1148, 1151, 1153, 1149, 1150, 1159, 0, 0, 2085, - 0, 0, 0, 0, 1163, 1165, 1167, 1169, 1172, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1170, - 1171, 1137, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1154, 0, 0, 0, 0, 0, - 0, 0, 1160, 1164, 1166, 1168, 1173, 0, 1178, 1174, - 1175, 1176, 1177, 2155, 1155, 1156, 1157, 1158, 1135, 1136, - 1161, 0, 1138, 0, 1140, 1141, 1142, 1143, 1139, 1144, - 1145, 1146, 1147, 1148, 1151, 1153, 1149, 1150, 1159, 0, - 0, 0, 0, 0, 0, 0, 1163, 1165, 1167, 1169, - 1172, 729, 731, 730, 0, 0, 0, 0, 0, 0, - 0, 0, 736, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 740, 0, 0, 0, 0, 0, - 143, 755, 0, 0, 0, 0, 1154, 0, 733, 0, - 0, 0, 0, 0, 0, 0, 1162, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3456, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 735, 739, 745, 0, - 746, 748, 0, 0, 749, 750, 751, 0, 0, 753, - 754, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 828, 0, 0, 0, 0, - 0, 0, 0, 2155, 412, 0, 0, 543, 576, 565, - 648, 531, 0, 0, 0, 0, 0, 0, 780, 0, - 0, 0, 347, 1162, 0, 380, 580, 562, 572, 563, - 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, - 524, 555, 556, 819, 579, 530, 445, 396, 0, 596, - 0, 0, 889, 897, 0, 0, 0, 0, 0, 0, - 0, 0, 885, 0, 0, 0, 0, 772, 0, 0, - 809, 865, 864, 796, 806, 0, 0, 316, 231, 525, - 644, 527, 526, 797, 0, 798, 802, 805, 801, 799, - 800, 0, 880, 0, 0, 0, 0, 0, 0, 764, - 776, 0, 781, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 732, 0, 2155, 1162, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 773, 774, 0, 0, - 0, 0, 829, 0, 775, 0, 0, 0, 0, 0, - 446, 474, 0, 486, 0, 370, 371, 824, 803, 807, - 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, - 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, - 447, 393, 305, 0, 431, 345, 361, 342, 409, 804, - 827, 831, 341, 903, 825, 479, 308, 0, 478, 408, - 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, - 351, 904, 375, 376, 365, 421, 384, 422, 366, 398, - 397, 399, 0, 3696, 0, 0, 0, 507, 508, 0, + 0, 0, 0, 0, 0, 0, 2059, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2065, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 637, 822, 0, 641, 0, 481, 0, - 0, 887, 0, 0, 0, 451, 0, 0, 377, 0, - 0, 0, 826, 0, 434, 414, 900, 0, 0, 432, - 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, - 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, - 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, - 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, - 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, - 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, - 509, 0, 425, 310, 309, 0, 0, 3795, 339, 323, - 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, - 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, - 368, 604, 1856, 1855, 1857, 493, 378, 379, 0, 350, - 349, 391, 303, 356, 295, 296, 666, 884, 410, 606, - 639, 640, 532, 0, 899, 879, 881, 882, 886, 890, - 891, 892, 893, 894, 896, 898, 902, 665, 0, 586, - 600, 669, 599, 662, 416, 0, 438, 597, 545, 0, - 590, 564, 0, 591, 560, 595, 0, 534, 0, 503, - 506, 535, 619, 620, 621, 300, 505, 623, 624, 625, - 626, 627, 628, 629, 622, 901, 567, 544, 570, 485, - 547, 546, 0, 0, 581, 830, 582, 583, 400, 401, - 402, 403, 888, 607, 321, 504, 427, 0, 568, 0, - 0, 0, 0, 0, 0, 0, 0, 573, 574, 571, - 674, 0, 630, 631, 0, 0, 498, 499, 355, 362, - 517, 364, 320, 415, 357, 483, 372, 0, 510, 575, - 511, 633, 636, 634, 635, 407, 367, 369, 442, 373, - 383, 430, 482, 413, 435, 318, 473, 444, 388, 561, - 588, 910, 883, 909, 911, 912, 908, 913, 914, 895, - 785, 0, 837, 838, 906, 905, 907, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 615, 614, - 613, 612, 611, 610, 609, 608, 0, 0, 558, 459, - 334, 289, 330, 331, 338, 663, 659, 464, 664, 792, - 297, 538, 381, 426, 354, 602, 603, 0, 654, 872, - 845, 846, 847, 782, 848, 842, 843, 783, 844, 873, - 835, 869, 870, 811, 839, 849, 868, 850, 871, 874, - 875, 915, 916, 856, 840, 260, 917, 853, 876, 867, - 866, 851, 836, 877, 878, 818, 813, 854, 855, 841, - 860, 861, 862, 784, 832, 833, 834, 857, 858, 814, - 815, 816, 817, 0, 0, 0, 489, 490, 491, 513, - 0, 475, 537, 661, 0, 0, 0, 0, 0, 0, - 0, 587, 598, 632, 0, 642, 643, 645, 647, 863, - 649, 449, 450, 655, 0, 859, 652, 653, 650, 385, - 436, 455, 443, 828, 667, 528, 529, 668, 638, 0, - 777, 0, 412, 0, 0, 543, 576, 565, 648, 531, - 0, 0, 0, 0, 0, 0, 780, 0, 0, 0, - 347, 1908, 0, 380, 580, 562, 572, 563, 548, 549, + 0, 0, 0, 0, 0, 0, 732, 2053, 2087, 1162, + 0, 2054, 2056, 2058, 0, 2060, 2061, 2062, 2066, 2067, + 2068, 2070, 2073, 2074, 2075, 0, 0, 0, 0, 0, + 0, 0, 2063, 2072, 2064, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 732, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2155, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2079, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2076, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2052, 0, 0, + 0, 2051, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3696, 0, + 0, 0, 0, 0, 0, 2069, 0, 0, 0, 0, + 143, 0, 0, 0, 2057, 0, 0, 143, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 828, 0, 0, 0, 0, 0, 0, + 0, 0, 412, 0, 0, 543, 576, 565, 648, 531, + 0, 0, 0, 0, 0, 0, 780, 0, 2111, 0, + 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, 556, 819, 579, 530, 445, 396, 0, 596, 0, 0, 889, 897, 0, 0, 0, 0, 0, 0, 0, 0, - 885, 0, 2137, 0, 0, 772, 0, 0, 809, 865, + 885, 0, 3795, 0, 0, 772, 0, 0, 809, 865, 864, 796, 806, 0, 0, 316, 231, 525, 644, 527, 526, 797, 0, 798, 802, 805, 801, 799, 800, 0, 880, 0, 0, 0, 0, 0, 0, 764, 776, 0, 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 774, 0, 0, 0, 0, - 829, 0, 775, 0, 0, 0, 0, 0, 446, 474, - 0, 486, 0, 370, 371, 2138, 803, 807, 0, 0, + 829, 0, 775, 0, 0, 0, 0, 143, 446, 474, + 0, 486, 0, 370, 371, 824, 803, 807, 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, 804, 827, 831, @@ -2516,7 +2480,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, 822, 0, 641, 0, 481, 0, 0, 887, - 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, + 0, 0, 0, 451, 0, 0, 377, 0, 0, 143, 826, 0, 434, 414, 900, 0, 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, @@ -2527,8 +2491,74 @@ var yyAct = [...]int{ 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, - 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, - 303, 356, 295, 296, 666, 884, 410, 606, 639, 640, + 1856, 1855, 1857, 493, 378, 379, 0, 350, 349, 391, + 303, 0, 356, 295, 296, 666, 884, 410, 606, 639, + 640, 532, 0, 899, 879, 881, 882, 886, 890, 891, + 892, 893, 894, 896, 898, 902, 665, 0, 586, 600, + 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, + 564, 0, 591, 560, 595, 0, 534, 0, 503, 506, + 535, 619, 620, 621, 300, 505, 623, 624, 625, 626, + 627, 628, 629, 622, 901, 567, 544, 570, 485, 547, + 546, 0, 0, 581, 830, 582, 583, 400, 401, 402, + 403, 888, 607, 321, 504, 427, 0, 568, 143, 0, + 0, 0, 0, 0, 0, 0, 573, 574, 571, 674, + 0, 630, 631, 0, 0, 498, 499, 355, 362, 517, + 364, 320, 415, 357, 483, 372, 0, 510, 575, 511, + 633, 636, 634, 635, 407, 367, 369, 442, 373, 383, + 430, 482, 413, 435, 318, 473, 444, 388, 561, 588, + 910, 883, 909, 911, 912, 908, 913, 914, 895, 785, + 0, 837, 838, 906, 905, 907, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 615, 614, 613, + 612, 611, 610, 609, 608, 0, 0, 558, 459, 334, + 289, 330, 331, 338, 663, 659, 464, 664, 792, 297, + 538, 381, 426, 354, 602, 603, 0, 654, 872, 845, + 846, 847, 782, 848, 842, 843, 783, 844, 873, 835, + 869, 870, 811, 839, 849, 868, 850, 871, 874, 875, + 915, 916, 856, 840, 260, 917, 853, 876, 867, 866, + 851, 836, 877, 878, 818, 813, 854, 855, 841, 860, + 861, 862, 784, 832, 833, 834, 857, 858, 814, 815, + 816, 817, 0, 0, 0, 489, 490, 491, 513, 0, + 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, + 587, 598, 632, 0, 642, 643, 645, 647, 863, 649, + 449, 450, 655, 0, 859, 652, 653, 650, 385, 436, + 455, 443, 828, 667, 528, 529, 668, 638, 0, 777, + 0, 412, 0, 0, 543, 576, 565, 648, 531, 0, + 0, 0, 0, 0, 0, 780, 0, 0, 0, 347, + 1908, 0, 380, 580, 562, 572, 563, 548, 549, 550, + 557, 359, 551, 552, 553, 523, 554, 524, 555, 556, + 819, 579, 530, 445, 396, 0, 596, 0, 0, 889, + 897, 0, 0, 0, 0, 0, 0, 0, 0, 885, + 0, 2137, 0, 0, 772, 0, 0, 809, 865, 864, + 796, 806, 0, 0, 316, 231, 525, 644, 527, 526, + 797, 0, 798, 802, 805, 801, 799, 800, 0, 880, + 0, 0, 0, 0, 0, 0, 764, 776, 0, 781, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 773, 774, 0, 0, 0, 0, 829, + 0, 775, 0, 0, 0, 0, 0, 446, 474, 0, + 486, 0, 370, 371, 2138, 803, 807, 0, 0, 0, + 0, 304, 452, 471, 317, 440, 484, 322, 448, 463, + 312, 411, 437, 0, 0, 306, 469, 447, 393, 305, + 0, 431, 345, 361, 342, 409, 804, 827, 831, 341, + 903, 825, 479, 308, 0, 478, 408, 465, 470, 394, + 387, 0, 307, 467, 392, 386, 374, 351, 904, 375, + 376, 365, 421, 384, 422, 366, 398, 397, 399, 0, + 0, 0, 0, 0, 507, 508, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 637, 822, 0, 641, 0, 481, 0, 0, 887, 0, + 0, 0, 451, 0, 0, 377, 0, 0, 0, 826, + 0, 434, 414, 900, 0, 0, 432, 382, 466, 423, + 472, 453, 480, 428, 424, 298, 454, 344, 395, 313, + 315, 660, 346, 348, 352, 353, 404, 405, 418, 439, + 456, 457, 458, 343, 327, 433, 328, 363, 329, 299, + 335, 333, 336, 441, 337, 301, 419, 462, 0, 358, + 429, 390, 302, 389, 420, 461, 460, 314, 488, 494, + 495, 584, 0, 500, 671, 672, 673, 509, 0, 425, + 310, 309, 0, 0, 0, 339, 323, 325, 326, 324, + 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, + 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, + 0, 0, 493, 378, 379, 0, 350, 349, 391, 303, + 0, 356, 295, 296, 666, 884, 410, 606, 639, 640, 532, 0, 899, 879, 881, 882, 886, 890, 891, 892, 893, 894, 896, 898, 902, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, 564, @@ -2594,7 +2624,73 @@ var yyAct = [...]int{ 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 884, 410, 606, 639, 640, 532, + 0, 899, 879, 881, 882, 886, 890, 891, 892, 893, + 894, 896, 898, 902, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 901, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 830, 582, 583, 400, 401, 402, 403, 888, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 910, 883, + 909, 911, 912, 908, 913, 914, 895, 785, 0, 837, + 838, 906, 905, 907, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 792, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 872, 845, 846, 847, + 782, 848, 842, 843, 783, 844, 873, 835, 869, 870, + 811, 839, 849, 868, 850, 871, 874, 875, 915, 916, + 856, 840, 260, 917, 853, 876, 867, 866, 851, 836, + 877, 878, 818, 813, 854, 855, 841, 860, 861, 862, + 784, 832, 833, 834, 857, 858, 814, 815, 816, 817, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 863, 649, 449, 450, + 655, 0, 859, 652, 653, 650, 385, 436, 455, 443, + 828, 667, 528, 529, 668, 638, 0, 777, 0, 412, + 0, 0, 543, 576, 565, 648, 531, 0, 0, 0, + 0, 0, 0, 780, 0, 0, 0, 347, 4217, 0, + 380, 580, 562, 572, 563, 548, 549, 550, 557, 359, + 551, 552, 553, 523, 554, 524, 555, 556, 819, 579, + 530, 445, 396, 0, 596, 0, 0, 889, 897, 0, + 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, + 0, 0, 772, 0, 0, 809, 865, 864, 796, 806, + 0, 0, 316, 231, 525, 644, 527, 526, 797, 0, + 798, 802, 805, 801, 799, 800, 0, 880, 0, 0, + 0, 0, 0, 0, 764, 776, 0, 781, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 773, 774, 0, 0, 0, 0, 829, 0, 775, + 0, 0, 0, 0, 0, 446, 474, 0, 486, 0, + 370, 371, 824, 803, 807, 0, 0, 0, 0, 304, + 452, 471, 317, 440, 484, 322, 448, 463, 312, 411, + 437, 0, 0, 306, 469, 447, 393, 305, 0, 431, + 345, 361, 342, 409, 804, 827, 831, 341, 903, 825, + 479, 308, 0, 478, 408, 465, 470, 394, 387, 0, + 307, 467, 392, 386, 374, 351, 904, 375, 376, 365, + 421, 384, 422, 366, 398, 397, 399, 0, 0, 0, + 0, 0, 507, 508, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 637, 822, + 0, 641, 0, 481, 0, 0, 887, 0, 0, 0, + 451, 0, 0, 377, 0, 0, 0, 826, 0, 434, + 414, 900, 0, 0, 432, 382, 466, 423, 472, 453, + 480, 428, 424, 298, 454, 344, 395, 313, 315, 660, + 346, 348, 352, 353, 404, 405, 418, 439, 456, 457, + 458, 343, 327, 433, 328, 363, 329, 299, 335, 333, + 336, 441, 337, 301, 419, 462, 0, 358, 429, 390, + 302, 389, 420, 461, 460, 314, 488, 494, 495, 584, + 0, 500, 671, 672, 673, 509, 0, 425, 310, 309, + 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, + 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, + 502, 593, 536, 540, 541, 368, 604, 0, 0, 0, + 493, 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, 884, 410, 606, 639, 640, 532, 0, 899, 879, 881, 882, 886, 890, 891, 892, 893, 894, 896, 898, 902, 665, 0, 586, 600, 669, 599, 662, @@ -2626,7 +2722,7 @@ var yyAct = [...]int{ 0, 859, 652, 653, 650, 385, 436, 455, 443, 828, 667, 528, 529, 668, 638, 0, 777, 0, 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, - 0, 0, 780, 0, 0, 0, 347, 4218, 0, 380, + 0, 0, 780, 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, 556, 819, 579, 530, 445, 396, 0, 596, 0, 0, 889, 897, 0, 0, @@ -2650,7 +2746,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 637, 822, 0, 641, 0, 481, 0, 0, 887, 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, 826, 0, 434, 414, - 900, 0, 0, 432, 382, 466, 423, 472, 453, 480, + 900, 4110, 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, @@ -2660,16 +2756,82 @@ var yyAct = [...]int{ 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, - 378, 379, 0, 350, 349, 391, 303, 356, 295, 296, - 666, 884, 410, 606, 639, 640, 532, 0, 899, 879, - 881, 882, 886, 890, 891, 892, 893, 894, 896, 898, - 902, 665, 0, 586, 600, 669, 599, 662, 416, 0, - 438, 597, 545, 0, 590, 564, 0, 591, 560, 595, - 0, 534, 0, 503, 506, 535, 619, 620, 621, 300, - 505, 623, 624, 625, 626, 627, 628, 629, 622, 901, - 567, 544, 570, 485, 547, 546, 0, 0, 581, 830, - 582, 583, 400, 401, 402, 403, 888, 607, 321, 504, - 427, 0, 568, 0, 0, 0, 0, 0, 0, 0, + 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, + 296, 666, 884, 410, 606, 639, 640, 532, 0, 899, + 879, 881, 882, 886, 890, 891, 892, 893, 894, 896, + 898, 902, 665, 0, 586, 600, 669, 599, 662, 416, + 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, + 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, + 300, 505, 623, 624, 625, 626, 627, 628, 629, 622, + 901, 567, 544, 570, 485, 547, 546, 0, 0, 581, + 830, 582, 583, 400, 401, 402, 403, 888, 607, 321, + 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, + 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, + 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, + 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, + 407, 367, 369, 442, 373, 383, 430, 482, 413, 435, + 318, 473, 444, 388, 561, 588, 910, 883, 909, 911, + 912, 908, 913, 914, 895, 785, 0, 837, 838, 906, + 905, 907, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, + 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, + 663, 659, 464, 664, 792, 297, 538, 381, 426, 354, + 602, 603, 0, 654, 872, 845, 846, 847, 782, 848, + 842, 843, 783, 844, 873, 835, 869, 870, 811, 839, + 849, 868, 850, 871, 874, 875, 915, 916, 856, 840, + 260, 917, 853, 876, 867, 866, 851, 836, 877, 878, + 818, 813, 854, 855, 841, 860, 861, 862, 784, 832, + 833, 834, 857, 858, 814, 815, 816, 817, 0, 0, + 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, + 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, + 642, 643, 645, 647, 863, 649, 449, 450, 655, 0, + 859, 652, 653, 650, 385, 436, 455, 443, 828, 667, + 528, 529, 668, 638, 0, 777, 0, 412, 0, 0, + 543, 576, 565, 648, 531, 0, 0, 0, 0, 0, + 0, 780, 0, 0, 0, 347, 1908, 0, 380, 580, + 562, 572, 563, 548, 549, 550, 557, 359, 551, 552, + 553, 523, 554, 524, 555, 556, 819, 579, 530, 445, + 396, 0, 596, 0, 0, 889, 897, 0, 0, 0, + 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, + 772, 0, 0, 809, 865, 864, 796, 806, 0, 0, + 316, 231, 525, 644, 527, 526, 797, 0, 798, 802, + 805, 801, 799, 800, 0, 880, 0, 0, 0, 0, + 0, 0, 764, 776, 0, 781, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, + 774, 0, 0, 0, 0, 829, 0, 775, 0, 0, + 0, 0, 0, 446, 474, 0, 486, 0, 370, 371, + 824, 803, 807, 0, 0, 0, 0, 304, 452, 471, + 317, 440, 484, 322, 448, 463, 312, 411, 437, 0, + 0, 306, 469, 447, 393, 305, 0, 431, 345, 361, + 342, 409, 804, 827, 831, 341, 903, 825, 479, 308, + 0, 478, 408, 465, 470, 394, 387, 0, 307, 467, + 392, 386, 374, 351, 904, 375, 376, 365, 421, 384, + 422, 366, 398, 397, 399, 0, 0, 0, 0, 0, + 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 637, 822, 0, 641, + 0, 481, 0, 0, 887, 0, 0, 0, 451, 0, + 0, 377, 0, 0, 0, 826, 0, 434, 414, 900, + 0, 0, 432, 382, 466, 423, 472, 453, 480, 428, + 424, 298, 454, 344, 395, 313, 315, 660, 346, 348, + 352, 353, 404, 405, 418, 439, 456, 457, 458, 343, + 327, 433, 328, 363, 329, 299, 335, 333, 336, 441, + 337, 301, 419, 462, 0, 358, 429, 390, 302, 389, + 420, 461, 460, 314, 488, 494, 495, 584, 0, 500, + 671, 672, 673, 509, 0, 425, 310, 309, 0, 0, + 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, + 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, + 536, 540, 541, 368, 604, 0, 0, 0, 493, 378, + 379, 0, 350, 349, 391, 303, 0, 356, 295, 296, + 666, 884, 410, 606, 639, 640, 532, 0, 899, 879, + 881, 882, 886, 890, 891, 892, 893, 894, 896, 898, + 902, 665, 0, 586, 600, 669, 599, 662, 416, 0, + 438, 597, 545, 0, 590, 564, 0, 591, 560, 595, + 0, 534, 0, 503, 506, 535, 619, 620, 621, 300, + 505, 623, 624, 625, 626, 627, 628, 629, 622, 901, + 567, 544, 570, 485, 547, 546, 0, 0, 581, 830, + 582, 583, 400, 401, 402, 403, 888, 607, 321, 504, + 427, 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, 407, @@ -2703,7 +2865,7 @@ var yyAct = [...]int{ 0, 764, 776, 0, 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 774, - 0, 0, 0, 0, 829, 0, 775, 0, 0, 0, + 1615, 0, 0, 0, 829, 0, 775, 0, 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, 371, 824, 803, 807, 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, @@ -2715,7 +2877,7 @@ var yyAct = [...]int{ 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, 822, 0, 641, 0, 481, 0, 0, 887, 0, 0, 0, 451, 0, 0, - 377, 0, 0, 0, 826, 0, 434, 414, 900, 4097, + 377, 0, 0, 0, 826, 0, 434, 414, 900, 0, 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, @@ -2726,139 +2888,74 @@ var yyAct = [...]int{ 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, - 0, 350, 349, 391, 303, 356, 295, 296, 666, 884, - 410, 606, 639, 640, 532, 0, 899, 879, 881, 882, - 886, 890, 891, 892, 893, 894, 896, 898, 902, 665, - 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, - 545, 0, 590, 564, 0, 591, 560, 595, 0, 534, - 0, 503, 506, 535, 619, 620, 621, 300, 505, 623, - 624, 625, 626, 627, 628, 629, 622, 901, 567, 544, - 570, 485, 547, 546, 0, 0, 581, 830, 582, 583, - 400, 401, 402, 403, 888, 607, 321, 504, 427, 0, - 568, 0, 0, 0, 0, 0, 0, 0, 0, 573, - 574, 571, 674, 0, 630, 631, 0, 0, 498, 499, - 355, 362, 517, 364, 320, 415, 357, 483, 372, 0, - 510, 575, 511, 633, 636, 634, 635, 407, 367, 369, - 442, 373, 383, 430, 482, 413, 435, 318, 473, 444, - 388, 561, 588, 910, 883, 909, 911, 912, 908, 913, - 914, 895, 785, 0, 837, 838, 906, 905, 907, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 615, 614, 613, 612, 611, 610, 609, 608, 0, 0, - 558, 459, 334, 289, 330, 331, 338, 663, 659, 464, - 664, 792, 297, 538, 381, 426, 354, 602, 603, 0, - 654, 872, 845, 846, 847, 782, 848, 842, 843, 783, - 844, 873, 835, 869, 870, 811, 839, 849, 868, 850, - 871, 874, 875, 915, 916, 856, 840, 260, 917, 853, - 876, 867, 866, 851, 836, 877, 878, 818, 813, 854, - 855, 841, 860, 861, 862, 784, 832, 833, 834, 857, - 858, 814, 815, 816, 817, 0, 0, 0, 489, 490, - 491, 513, 0, 475, 537, 661, 0, 0, 0, 0, - 0, 0, 0, 587, 598, 632, 0, 642, 643, 645, - 647, 863, 649, 449, 450, 655, 0, 859, 652, 653, - 650, 385, 436, 455, 443, 828, 667, 528, 529, 668, - 638, 0, 777, 0, 412, 0, 0, 543, 576, 565, - 648, 531, 0, 0, 0, 0, 0, 0, 780, 0, - 0, 0, 347, 1908, 0, 380, 580, 562, 572, 563, - 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, - 524, 555, 556, 819, 579, 530, 445, 396, 0, 596, - 0, 0, 889, 897, 0, 0, 0, 0, 0, 0, - 0, 0, 885, 0, 0, 0, 0, 772, 0, 0, - 809, 865, 864, 796, 806, 0, 0, 316, 231, 525, - 644, 527, 526, 797, 0, 798, 802, 805, 801, 799, - 800, 0, 880, 0, 0, 0, 0, 0, 0, 764, - 776, 0, 781, 0, 0, 0, 0, 0, 0, 0, + 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, + 884, 410, 606, 639, 640, 532, 0, 899, 879, 881, + 882, 886, 890, 891, 892, 893, 894, 896, 898, 902, + 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, + 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, + 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, + 623, 624, 625, 626, 627, 628, 629, 622, 901, 567, + 544, 570, 485, 547, 546, 0, 0, 581, 830, 582, + 583, 400, 401, 402, 403, 888, 607, 321, 504, 427, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, + 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, + 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, + 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, + 444, 388, 561, 588, 910, 883, 909, 911, 912, 908, + 913, 914, 895, 785, 0, 837, 838, 906, 905, 907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 773, 774, 0, 0, - 0, 0, 829, 0, 775, 0, 0, 0, 0, 0, - 446, 474, 0, 486, 0, 370, 371, 824, 803, 807, - 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, - 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, - 447, 393, 305, 0, 431, 345, 361, 342, 409, 804, - 827, 831, 341, 903, 825, 479, 308, 0, 478, 408, - 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, - 351, 904, 375, 376, 365, 421, 384, 422, 366, 398, - 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, + 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, + 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, + 464, 664, 792, 297, 538, 381, 426, 354, 602, 603, + 0, 654, 872, 845, 846, 847, 782, 848, 842, 843, + 783, 844, 873, 835, 869, 870, 811, 839, 849, 868, + 850, 871, 874, 875, 915, 916, 856, 840, 260, 917, + 853, 876, 867, 866, 851, 836, 877, 878, 818, 813, + 854, 855, 841, 860, 861, 862, 784, 832, 833, 834, + 857, 858, 814, 815, 816, 817, 0, 0, 0, 489, + 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, + 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, + 645, 647, 863, 649, 449, 450, 655, 0, 859, 652, + 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, + 668, 638, 828, 777, 0, 2316, 0, 0, 0, 0, + 0, 412, 0, 0, 543, 576, 565, 648, 531, 0, + 0, 0, 0, 0, 0, 780, 0, 0, 0, 347, + 0, 0, 380, 580, 562, 572, 563, 548, 549, 550, + 557, 359, 551, 552, 553, 523, 554, 524, 555, 556, + 819, 579, 530, 445, 396, 0, 596, 0, 0, 889, + 897, 0, 0, 0, 0, 0, 0, 0, 0, 885, + 0, 0, 0, 0, 772, 0, 0, 809, 865, 864, + 796, 806, 0, 0, 316, 231, 525, 644, 527, 526, + 797, 0, 798, 802, 805, 801, 799, 800, 0, 880, + 0, 0, 0, 0, 0, 0, 764, 776, 0, 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 637, 822, 0, 641, 0, 481, 0, - 0, 887, 0, 0, 0, 451, 0, 0, 377, 0, - 0, 0, 826, 0, 434, 414, 900, 0, 0, 432, - 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, - 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, - 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, - 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, - 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, - 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, - 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, - 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, - 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, - 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, - 349, 391, 303, 356, 295, 296, 666, 884, 410, 606, - 639, 640, 532, 0, 899, 879, 881, 882, 886, 890, - 891, 892, 893, 894, 896, 898, 902, 665, 0, 586, - 600, 669, 599, 662, 416, 0, 438, 597, 545, 0, - 590, 564, 0, 591, 560, 595, 0, 534, 0, 503, - 506, 535, 619, 620, 621, 300, 505, 623, 624, 625, - 626, 627, 628, 629, 622, 901, 567, 544, 570, 485, - 547, 546, 0, 0, 581, 830, 582, 583, 400, 401, - 402, 403, 888, 607, 321, 504, 427, 0, 568, 0, - 0, 0, 0, 0, 0, 0, 0, 573, 574, 571, - 674, 0, 630, 631, 0, 0, 498, 499, 355, 362, - 517, 364, 320, 415, 357, 483, 372, 0, 510, 575, - 511, 633, 636, 634, 635, 407, 367, 369, 442, 373, - 383, 430, 482, 413, 435, 318, 473, 444, 388, 561, - 588, 910, 883, 909, 911, 912, 908, 913, 914, 895, - 785, 0, 837, 838, 906, 905, 907, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 615, 614, - 613, 612, 611, 610, 609, 608, 0, 0, 558, 459, - 334, 289, 330, 331, 338, 663, 659, 464, 664, 792, - 297, 538, 381, 426, 354, 602, 603, 0, 654, 872, - 845, 846, 847, 782, 848, 842, 843, 783, 844, 873, - 835, 869, 870, 811, 839, 849, 868, 850, 871, 874, - 875, 915, 916, 856, 840, 260, 917, 853, 876, 867, - 866, 851, 836, 877, 878, 818, 813, 854, 855, 841, - 860, 861, 862, 784, 832, 833, 834, 857, 858, 814, - 815, 816, 817, 0, 0, 0, 489, 490, 491, 513, - 0, 475, 537, 661, 0, 0, 0, 0, 0, 0, - 0, 587, 598, 632, 0, 642, 643, 645, 647, 863, - 649, 449, 450, 655, 0, 859, 652, 653, 650, 385, - 436, 455, 443, 828, 667, 528, 529, 668, 638, 0, - 777, 0, 412, 0, 0, 543, 576, 565, 648, 531, - 0, 0, 0, 0, 0, 0, 780, 0, 0, 0, - 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, - 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, - 556, 819, 579, 530, 445, 396, 0, 596, 0, 0, - 889, 897, 0, 0, 0, 0, 0, 0, 0, 0, - 885, 0, 0, 0, 0, 772, 0, 0, 809, 865, - 864, 796, 806, 0, 0, 316, 231, 525, 644, 527, - 526, 797, 0, 798, 802, 805, 801, 799, 800, 0, - 880, 0, 0, 0, 0, 0, 0, 764, 776, 0, - 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 773, 774, 1615, 0, 0, 0, - 829, 0, 775, 0, 0, 0, 0, 0, 446, 474, - 0, 486, 0, 370, 371, 824, 803, 807, 0, 0, - 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, - 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, - 305, 0, 431, 345, 361, 342, 409, 804, 827, 831, - 341, 903, 825, 479, 308, 0, 478, 408, 465, 470, - 394, 387, 0, 307, 467, 392, 386, 374, 351, 904, - 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, - 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, + 0, 0, 0, 773, 774, 0, 0, 0, 0, 829, + 0, 775, 0, 0, 0, 0, 0, 446, 474, 0, + 486, 0, 370, 371, 824, 803, 807, 0, 0, 0, + 0, 304, 452, 471, 317, 440, 484, 322, 448, 463, + 312, 411, 437, 0, 0, 306, 469, 447, 393, 305, + 0, 431, 345, 361, 342, 409, 804, 827, 831, 341, + 903, 825, 479, 308, 0, 478, 408, 465, 470, 394, + 387, 0, 307, 467, 392, 386, 374, 351, 904, 375, + 376, 365, 421, 384, 422, 366, 398, 397, 399, 0, + 0, 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 637, 822, 0, 641, 0, 481, 0, 0, 887, - 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, - 826, 0, 434, 414, 900, 0, 0, 432, 382, 466, - 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, - 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, - 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, - 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, - 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, - 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, - 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, - 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, - 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, - 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, - 303, 356, 295, 296, 666, 884, 410, 606, 639, 640, + 637, 822, 0, 641, 0, 481, 0, 0, 887, 0, + 0, 0, 451, 0, 0, 377, 0, 0, 0, 826, + 0, 434, 414, 900, 0, 0, 432, 382, 466, 423, + 472, 453, 480, 428, 424, 298, 454, 344, 395, 313, + 315, 660, 346, 348, 352, 353, 404, 405, 418, 439, + 456, 457, 458, 343, 327, 433, 328, 363, 329, 299, + 335, 333, 336, 441, 337, 301, 419, 462, 0, 358, + 429, 390, 302, 389, 420, 461, 460, 314, 488, 494, + 495, 584, 0, 500, 671, 672, 673, 509, 0, 425, + 310, 309, 0, 0, 0, 339, 323, 325, 326, 324, + 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, + 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, + 0, 0, 493, 378, 379, 0, 350, 349, 391, 303, + 0, 356, 295, 296, 666, 884, 410, 606, 639, 640, 532, 0, 899, 879, 881, 882, 886, 890, 891, 892, 893, 894, 896, 898, 902, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, 564, @@ -2887,218 +2984,20 @@ var yyAct = [...]int{ 537, 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, 863, 649, 449, 450, 655, 0, 859, 652, 653, 650, 385, 436, 455, - 443, 0, 667, 528, 529, 668, 638, 828, 777, 0, - 2316, 0, 0, 0, 0, 0, 412, 0, 0, 543, - 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, - 780, 0, 0, 0, 347, 0, 0, 380, 580, 562, - 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, - 523, 554, 524, 555, 556, 819, 579, 530, 445, 396, - 0, 596, 0, 0, 889, 897, 0, 0, 0, 0, - 0, 0, 0, 0, 885, 0, 0, 0, 0, 772, - 0, 0, 809, 865, 864, 796, 806, 0, 0, 316, - 231, 525, 644, 527, 526, 797, 0, 798, 802, 805, - 801, 799, 800, 0, 880, 0, 0, 0, 0, 0, - 0, 764, 776, 0, 781, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 773, 774, - 0, 0, 0, 0, 829, 0, 775, 0, 0, 0, - 0, 0, 446, 474, 0, 486, 0, 370, 371, 824, - 803, 807, 0, 0, 0, 0, 304, 452, 471, 317, - 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, - 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, - 409, 804, 827, 831, 341, 903, 825, 479, 308, 0, - 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, - 386, 374, 351, 904, 375, 376, 365, 421, 384, 422, - 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, - 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 637, 822, 0, 641, 0, - 481, 0, 0, 887, 0, 0, 0, 451, 0, 0, - 377, 0, 0, 0, 826, 0, 434, 414, 900, 0, - 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, - 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, - 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, - 433, 328, 363, 329, 299, 335, 333, 336, 441, 337, - 301, 419, 462, 0, 358, 429, 390, 302, 389, 420, - 461, 460, 314, 488, 494, 495, 584, 0, 500, 671, - 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, - 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, - 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, - 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, - 0, 350, 349, 391, 303, 356, 295, 296, 666, 884, - 410, 606, 639, 640, 532, 0, 899, 879, 881, 882, - 886, 890, 891, 892, 893, 894, 896, 898, 902, 665, - 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, - 545, 0, 590, 564, 0, 591, 560, 595, 0, 534, - 0, 503, 506, 535, 619, 620, 621, 300, 505, 623, - 624, 625, 626, 627, 628, 629, 622, 901, 567, 544, - 570, 485, 547, 546, 0, 0, 581, 830, 582, 583, - 400, 401, 402, 403, 888, 607, 321, 504, 427, 0, - 568, 0, 0, 0, 0, 0, 0, 0, 0, 573, - 574, 571, 674, 0, 630, 631, 0, 0, 498, 499, - 355, 362, 517, 364, 320, 415, 357, 483, 372, 0, - 510, 575, 511, 633, 636, 634, 635, 407, 367, 369, - 442, 373, 383, 430, 482, 413, 435, 318, 473, 444, - 388, 561, 588, 910, 883, 909, 911, 912, 908, 913, - 914, 895, 785, 0, 837, 838, 906, 905, 907, 0, + 443, 828, 667, 528, 529, 668, 638, 0, 777, 0, + 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, + 0, 0, 0, 0, 780, 0, 0, 0, 347, 0, + 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, + 359, 551, 552, 553, 523, 554, 524, 555, 556, 819, + 579, 530, 445, 396, 0, 596, 0, 0, 889, 897, + 0, 0, 0, 0, 0, 0, 0, 0, 885, 0, + 0, 0, 0, 772, 0, 0, 809, 865, 864, 796, + 806, 0, 0, 316, 231, 525, 644, 527, 526, 797, + 0, 798, 802, 805, 801, 799, 800, 0, 880, 0, + 0, 0, 0, 0, 0, 764, 776, 0, 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 615, 614, 613, 612, 611, 610, 609, 608, 0, 0, - 558, 459, 334, 289, 330, 331, 338, 663, 659, 464, - 664, 792, 297, 538, 381, 426, 354, 602, 603, 0, - 654, 872, 845, 846, 847, 782, 848, 842, 843, 783, - 844, 873, 835, 869, 870, 811, 839, 849, 868, 850, - 871, 874, 875, 915, 916, 856, 840, 260, 917, 853, - 876, 867, 866, 851, 836, 877, 878, 818, 813, 854, - 855, 841, 860, 861, 862, 784, 832, 833, 834, 857, - 858, 814, 815, 816, 817, 0, 0, 0, 489, 490, - 491, 513, 0, 475, 537, 661, 0, 0, 0, 0, - 0, 0, 0, 587, 598, 632, 0, 642, 643, 645, - 647, 863, 649, 449, 450, 655, 0, 859, 652, 653, - 650, 385, 436, 455, 443, 828, 667, 528, 529, 668, - 638, 0, 777, 0, 412, 0, 0, 543, 576, 565, - 648, 531, 0, 0, 0, 0, 0, 0, 780, 0, - 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, - 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, - 524, 555, 556, 819, 579, 530, 445, 396, 0, 596, - 0, 0, 889, 897, 0, 0, 0, 0, 0, 0, - 0, 0, 885, 0, 0, 0, 0, 772, 0, 0, - 809, 865, 864, 796, 806, 0, 0, 316, 231, 525, - 644, 527, 526, 797, 0, 798, 802, 805, 801, 799, - 800, 0, 880, 0, 0, 0, 0, 0, 0, 764, - 776, 0, 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 773, 774, 1901, 0, - 0, 0, 829, 0, 775, 0, 0, 0, 0, 0, - 446, 474, 0, 486, 0, 370, 371, 824, 803, 807, - 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, - 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, - 447, 393, 305, 0, 431, 345, 361, 342, 409, 804, - 827, 831, 341, 903, 825, 479, 308, 0, 478, 408, - 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, - 351, 904, 375, 376, 365, 421, 384, 422, 366, 398, - 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 637, 822, 0, 641, 0, 481, 0, - 0, 887, 0, 0, 0, 451, 0, 0, 377, 0, - 0, 0, 826, 0, 434, 414, 900, 0, 0, 432, - 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, - 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, - 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, - 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, - 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, - 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, - 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, - 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, - 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, - 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, - 349, 391, 303, 356, 295, 296, 666, 884, 410, 606, - 639, 640, 532, 0, 899, 879, 881, 882, 886, 890, - 891, 892, 893, 894, 896, 898, 902, 665, 0, 586, - 600, 669, 599, 662, 416, 0, 438, 597, 545, 0, - 590, 564, 0, 591, 560, 595, 0, 534, 0, 503, - 506, 535, 619, 620, 621, 300, 505, 623, 624, 625, - 626, 627, 628, 629, 622, 901, 567, 544, 570, 485, - 547, 546, 0, 0, 581, 830, 582, 583, 400, 401, - 402, 403, 888, 607, 321, 504, 427, 0, 568, 0, - 0, 0, 0, 0, 0, 0, 0, 573, 574, 571, - 674, 0, 630, 631, 0, 0, 498, 499, 355, 362, - 517, 364, 320, 415, 357, 483, 372, 0, 510, 575, - 511, 633, 636, 634, 635, 407, 367, 369, 442, 373, - 383, 430, 482, 413, 435, 318, 473, 444, 388, 561, - 588, 910, 883, 909, 911, 912, 908, 913, 914, 895, - 785, 0, 837, 838, 906, 905, 907, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 615, 614, - 613, 612, 611, 610, 609, 608, 0, 0, 558, 459, - 334, 289, 330, 331, 338, 663, 659, 464, 664, 792, - 297, 538, 381, 426, 354, 602, 603, 0, 654, 872, - 845, 846, 847, 782, 848, 842, 843, 783, 844, 873, - 835, 869, 870, 811, 839, 849, 868, 850, 871, 874, - 875, 915, 916, 856, 840, 260, 917, 853, 876, 867, - 866, 851, 836, 877, 878, 818, 813, 854, 855, 841, - 860, 861, 862, 784, 832, 833, 834, 857, 858, 814, - 815, 816, 817, 0, 0, 0, 489, 490, 491, 513, - 0, 475, 537, 661, 0, 0, 0, 0, 0, 0, - 0, 587, 598, 632, 0, 642, 643, 645, 647, 863, - 649, 449, 450, 655, 0, 859, 652, 653, 650, 385, - 436, 455, 443, 828, 667, 528, 529, 668, 638, 0, - 777, 0, 412, 0, 0, 543, 576, 565, 648, 531, - 0, 0, 0, 0, 0, 0, 780, 0, 0, 0, - 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, - 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, - 556, 819, 579, 530, 445, 396, 0, 596, 0, 0, - 889, 897, 0, 0, 0, 0, 0, 0, 0, 0, - 885, 0, 0, 0, 0, 772, 0, 0, 809, 865, - 864, 796, 806, 0, 0, 316, 231, 525, 644, 527, - 526, 797, 0, 798, 802, 805, 801, 799, 800, 0, - 880, 0, 0, 0, 0, 0, 0, 764, 776, 0, - 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 773, 774, 0, 0, 0, 0, - 829, 0, 775, 0, 0, 0, 0, 0, 446, 474, - 0, 486, 0, 370, 371, 824, 803, 807, 0, 0, - 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, - 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, - 305, 0, 431, 345, 361, 342, 409, 804, 827, 831, - 341, 903, 825, 479, 308, 0, 478, 408, 465, 470, - 394, 387, 0, 307, 467, 392, 386, 374, 351, 904, - 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, - 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 637, 822, 0, 641, 0, 481, 0, 0, 887, - 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, - 826, 0, 434, 414, 900, 0, 0, 432, 382, 466, - 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, - 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, - 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, - 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, - 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, - 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, - 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, - 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, - 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, - 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, - 303, 356, 295, 296, 666, 884, 410, 606, 639, 640, - 532, 0, 899, 879, 881, 882, 886, 890, 891, 892, - 893, 894, 896, 898, 902, 665, 0, 586, 600, 669, - 599, 662, 416, 0, 438, 597, 545, 0, 590, 564, - 0, 591, 560, 595, 0, 534, 0, 503, 506, 535, - 619, 620, 621, 300, 505, 623, 624, 625, 626, 627, - 628, 629, 622, 901, 567, 544, 570, 485, 547, 546, - 0, 0, 581, 830, 582, 583, 400, 401, 402, 403, - 888, 607, 321, 504, 427, 0, 568, 0, 0, 0, - 0, 0, 0, 0, 0, 573, 574, 571, 674, 0, - 630, 631, 0, 0, 498, 499, 355, 362, 517, 364, - 320, 415, 357, 483, 372, 0, 510, 575, 511, 633, - 636, 634, 635, 407, 367, 369, 442, 373, 383, 430, - 482, 413, 435, 318, 473, 444, 388, 561, 588, 910, - 883, 909, 911, 912, 908, 913, 914, 895, 785, 0, - 837, 838, 906, 905, 907, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 615, 614, 613, 612, - 611, 610, 609, 608, 0, 0, 558, 459, 334, 289, - 330, 331, 338, 663, 659, 464, 664, 792, 297, 538, - 381, 426, 354, 602, 603, 0, 654, 872, 845, 846, - 847, 782, 848, 842, 843, 783, 844, 873, 835, 869, - 870, 811, 839, 849, 868, 850, 871, 874, 875, 915, - 916, 856, 840, 260, 917, 853, 876, 867, 866, 851, - 836, 877, 878, 818, 813, 854, 855, 841, 860, 861, - 862, 784, 832, 833, 834, 857, 858, 814, 815, 816, - 817, 0, 0, 0, 489, 490, 491, 513, 0, 475, - 537, 661, 0, 0, 0, 0, 0, 0, 0, 587, - 598, 632, 0, 642, 643, 645, 647, 863, 649, 449, - 450, 655, 0, 859, 652, 653, 650, 385, 436, 455, - 443, 828, 667, 528, 529, 668, 638, 0, 777, 0, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 780, 0, 0, 0, 347, 0, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 819, - 579, 530, 445, 396, 0, 596, 0, 0, 889, 897, - 0, 0, 0, 0, 0, 0, 0, 0, 885, 0, - 0, 0, 0, 772, 0, 0, 809, 865, 864, 796, - 806, 0, 0, 316, 231, 525, 644, 527, 526, 797, - 0, 798, 802, 805, 801, 799, 800, 0, 880, 0, - 0, 0, 0, 0, 0, 764, 776, 0, 781, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 773, 774, 0, 0, 0, 0, 829, 0, + 0, 0, 773, 774, 1901, 0, 0, 0, 829, 0, 775, 0, 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, 371, 824, 803, 807, 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, @@ -3121,7 +3020,73 @@ var yyAct = [...]int{ 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 884, 410, 606, 639, 640, 532, + 0, 899, 879, 881, 882, 886, 890, 891, 892, 893, + 894, 896, 898, 902, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 901, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 830, 582, 583, 400, 401, 402, 403, 888, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 910, 883, + 909, 911, 912, 908, 913, 914, 895, 785, 0, 837, + 838, 906, 905, 907, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 792, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 872, 845, 846, 847, + 782, 848, 842, 843, 783, 844, 873, 835, 869, 870, + 811, 839, 849, 868, 850, 871, 874, 875, 915, 916, + 856, 840, 260, 917, 853, 876, 867, 866, 851, 836, + 877, 878, 818, 813, 854, 855, 841, 860, 861, 862, + 784, 832, 833, 834, 857, 858, 814, 815, 816, 817, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 863, 649, 449, 450, + 655, 0, 859, 652, 653, 650, 385, 436, 455, 443, + 828, 667, 528, 529, 668, 638, 0, 777, 0, 412, + 0, 0, 543, 576, 565, 648, 531, 0, 0, 0, + 0, 0, 0, 780, 0, 0, 0, 347, 0, 0, + 380, 580, 562, 572, 563, 548, 549, 550, 557, 359, + 551, 552, 553, 523, 554, 524, 555, 556, 819, 579, + 530, 445, 396, 0, 596, 0, 0, 889, 897, 0, + 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, + 0, 0, 772, 0, 0, 809, 865, 864, 796, 806, + 0, 0, 316, 231, 525, 644, 527, 526, 797, 0, + 798, 802, 805, 801, 799, 800, 0, 880, 0, 0, + 0, 0, 0, 0, 764, 776, 0, 781, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 773, 774, 0, 0, 0, 0, 829, 0, 775, + 0, 0, 0, 0, 0, 446, 474, 0, 486, 0, + 370, 371, 824, 803, 807, 0, 0, 0, 0, 304, + 452, 471, 317, 440, 484, 322, 448, 463, 312, 411, + 437, 0, 0, 306, 469, 447, 393, 305, 0, 431, + 345, 361, 342, 409, 804, 827, 831, 341, 903, 825, + 479, 308, 0, 478, 408, 465, 470, 394, 387, 0, + 307, 467, 392, 386, 374, 351, 904, 375, 376, 365, + 421, 384, 422, 366, 398, 397, 399, 0, 0, 0, + 0, 0, 507, 508, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 637, 822, + 0, 641, 0, 481, 0, 0, 887, 0, 0, 0, + 451, 0, 0, 377, 0, 0, 0, 826, 0, 434, + 414, 900, 0, 0, 432, 382, 466, 423, 472, 453, + 480, 428, 424, 298, 454, 344, 395, 313, 315, 660, + 346, 348, 352, 353, 404, 405, 418, 439, 456, 457, + 458, 343, 327, 433, 328, 363, 329, 299, 335, 333, + 336, 441, 337, 301, 419, 462, 0, 358, 429, 390, + 302, 389, 420, 461, 460, 314, 488, 494, 495, 584, + 0, 500, 671, 672, 673, 509, 0, 425, 310, 309, + 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, + 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, + 502, 593, 536, 540, 541, 368, 604, 0, 0, 0, + 493, 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, 884, 410, 606, 639, 640, 532, 0, 899, 879, 881, 882, 886, 890, 891, 892, 893, 894, 896, 898, 902, 665, 0, 586, 600, 669, 599, 662, @@ -3150,7 +3115,7 @@ var yyAct = [...]int{ 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, 863, 649, 449, 450, 655, - 0, 3652, 652, 3653, 3654, 385, 436, 455, 443, 828, + 0, 859, 652, 653, 650, 385, 436, 455, 443, 828, 667, 528, 529, 668, 638, 0, 777, 0, 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, 780, 0, 0, 0, 347, 0, 0, 380, @@ -3159,7 +3124,7 @@ var yyAct = [...]int{ 445, 396, 0, 596, 0, 0, 889, 897, 0, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 772, 0, 0, 809, 865, 864, 796, 806, 0, - 0, 316, 231, 525, 644, 527, 526, 2801, 0, 2802, + 0, 316, 231, 525, 644, 527, 526, 797, 0, 798, 802, 805, 801, 799, 800, 0, 880, 0, 0, 0, 0, 0, 0, 764, 776, 0, 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3187,7 +3152,73 @@ var yyAct = [...]int{ 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, - 378, 379, 0, 350, 349, 391, 303, 356, 295, 296, + 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, + 296, 666, 884, 410, 606, 639, 640, 532, 0, 899, + 879, 881, 882, 886, 890, 891, 892, 893, 894, 896, + 898, 902, 665, 0, 586, 600, 669, 599, 662, 416, + 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, + 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, + 300, 505, 623, 624, 625, 626, 627, 628, 629, 622, + 901, 567, 544, 570, 485, 547, 546, 0, 0, 581, + 830, 582, 583, 400, 401, 402, 403, 888, 607, 321, + 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, + 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, + 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, + 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, + 407, 367, 369, 442, 373, 383, 430, 482, 413, 435, + 318, 473, 444, 388, 561, 588, 910, 883, 909, 911, + 912, 908, 913, 914, 895, 785, 0, 837, 838, 906, + 905, 907, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, + 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, + 663, 659, 464, 664, 792, 297, 538, 381, 426, 354, + 602, 603, 0, 654, 872, 845, 846, 847, 782, 848, + 842, 843, 783, 844, 873, 835, 869, 870, 811, 839, + 849, 868, 850, 871, 874, 875, 915, 916, 856, 840, + 260, 917, 853, 876, 867, 866, 851, 836, 877, 878, + 818, 813, 854, 855, 841, 860, 861, 862, 784, 832, + 833, 834, 857, 858, 814, 815, 816, 817, 0, 0, + 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, + 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, + 642, 643, 645, 647, 863, 649, 449, 450, 655, 0, + 3652, 652, 3653, 3654, 385, 436, 455, 443, 828, 667, + 528, 529, 668, 638, 0, 777, 0, 412, 0, 0, + 543, 576, 565, 648, 531, 0, 0, 0, 0, 0, + 0, 780, 0, 0, 0, 347, 0, 0, 380, 580, + 562, 572, 563, 548, 549, 550, 557, 359, 551, 552, + 553, 523, 554, 524, 555, 556, 819, 579, 530, 445, + 396, 0, 596, 0, 0, 889, 897, 0, 0, 0, + 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, + 772, 0, 0, 809, 865, 864, 796, 806, 0, 0, + 316, 231, 525, 644, 527, 526, 2801, 0, 2802, 802, + 805, 801, 799, 800, 0, 880, 0, 0, 0, 0, + 0, 0, 764, 776, 0, 781, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, + 774, 0, 0, 0, 0, 829, 0, 775, 0, 0, + 0, 0, 0, 446, 474, 0, 486, 0, 370, 371, + 824, 803, 807, 0, 0, 0, 0, 304, 452, 471, + 317, 440, 484, 322, 448, 463, 312, 411, 437, 0, + 0, 306, 469, 447, 393, 305, 0, 431, 345, 361, + 342, 409, 804, 827, 831, 341, 903, 825, 479, 308, + 0, 478, 408, 465, 470, 394, 387, 0, 307, 467, + 392, 386, 374, 351, 904, 375, 376, 365, 421, 384, + 422, 366, 398, 397, 399, 0, 0, 0, 0, 0, + 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 637, 822, 0, 641, + 0, 481, 0, 0, 887, 0, 0, 0, 451, 0, + 0, 377, 0, 0, 0, 826, 0, 434, 414, 900, + 0, 0, 432, 382, 466, 423, 472, 453, 480, 428, + 424, 298, 454, 344, 395, 313, 315, 660, 346, 348, + 352, 353, 404, 405, 418, 439, 456, 457, 458, 343, + 327, 433, 328, 363, 329, 299, 335, 333, 336, 441, + 337, 301, 419, 462, 0, 358, 429, 390, 302, 389, + 420, 461, 460, 314, 488, 494, 495, 584, 0, 500, + 671, 672, 673, 509, 0, 425, 310, 309, 0, 0, + 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, + 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, + 536, 540, 541, 368, 604, 0, 0, 0, 493, 378, + 379, 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, 884, 410, 606, 639, 640, 532, 0, 899, 879, 881, 882, 886, 890, 891, 892, 893, 894, 896, 898, 902, 665, 0, 586, 600, 669, 599, 662, 416, 0, @@ -3253,7 +3284,73 @@ var yyAct = [...]int{ 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, - 0, 350, 349, 391, 303, 356, 295, 296, 666, 884, + 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, + 884, 410, 606, 639, 640, 532, 0, 899, 879, 881, + 882, 886, 890, 891, 892, 893, 894, 896, 898, 902, + 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, + 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, + 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, + 623, 624, 625, 626, 627, 628, 629, 622, 901, 567, + 544, 570, 485, 547, 546, 0, 0, 581, 830, 582, + 583, 400, 401, 402, 403, 888, 607, 321, 504, 427, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, + 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, + 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, + 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, + 444, 388, 561, 588, 910, 883, 909, 911, 912, 908, + 913, 914, 895, 785, 0, 837, 838, 906, 905, 907, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, + 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, + 464, 664, 792, 297, 538, 381, 426, 354, 602, 603, + 0, 654, 872, 845, 846, 847, 782, 848, 842, 843, + 783, 844, 873, 835, 869, 870, 811, 839, 849, 868, + 850, 871, 874, 875, 915, 916, 856, 840, 260, 917, + 853, 876, 867, 866, 851, 836, 877, 878, 818, 813, + 854, 855, 841, 860, 861, 862, 784, 832, 833, 834, + 857, 858, 814, 815, 816, 817, 0, 0, 0, 489, + 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, + 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, + 645, 647, 863, 649, 449, 450, 655, 0, 859, 652, + 653, 650, 385, 436, 455, 443, 828, 667, 528, 529, + 668, 638, 0, 777, 0, 412, 0, 0, 543, 576, + 565, 648, 531, 0, 0, 0, 0, 0, 0, 780, + 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, + 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, + 554, 524, 555, 556, 819, 579, 530, 445, 396, 0, + 596, 0, 0, 889, 897, 0, 0, 0, 0, 0, + 0, 0, 0, 885, 0, 0, 0, 0, 772, 0, + 0, 809, 865, 864, 796, 806, 0, 0, 316, 231, + 525, 644, 527, 526, 797, 0, 798, 802, 805, 801, + 799, 800, 0, 880, 0, 0, 0, 0, 0, 0, + 0, 776, 0, 781, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 773, 774, 0, + 0, 0, 0, 829, 0, 775, 0, 0, 0, 0, + 0, 446, 474, 0, 486, 0, 370, 371, 824, 803, + 807, 0, 0, 0, 0, 304, 452, 471, 317, 440, + 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, + 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, + 804, 827, 831, 341, 903, 825, 479, 308, 0, 478, + 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, + 374, 351, 904, 375, 376, 365, 421, 384, 422, 366, + 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 637, 822, 0, 641, 0, 481, + 0, 0, 887, 0, 0, 0, 451, 0, 0, 377, + 0, 0, 0, 826, 0, 434, 414, 900, 0, 0, + 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, + 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, + 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, + 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, + 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, + 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, + 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, + 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, + 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, + 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, + 350, 349, 391, 303, 0, 356, 295, 296, 666, 884, 410, 606, 639, 640, 532, 0, 899, 879, 881, 882, 886, 890, 891, 892, 893, 894, 896, 898, 902, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, @@ -3289,10 +3386,10 @@ var yyAct = [...]int{ 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, 556, 819, 579, 530, 445, 396, 0, 596, 0, 0, 889, 897, 0, 0, 0, 0, 0, 0, - 0, 0, 885, 0, 0, 0, 0, 772, 0, 0, + 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 809, 865, 864, 796, 806, 0, 0, 316, 231, 525, 644, 527, 526, 797, 0, 798, 802, 805, 801, 799, - 800, 0, 880, 0, 0, 0, 0, 0, 0, 0, + 800, 0, 880, 0, 0, 0, 0, 0, 0, 764, 776, 0, 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 774, 0, 0, @@ -3319,113 +3416,114 @@ var yyAct = [...]int{ 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, - 349, 391, 303, 356, 295, 296, 666, 884, 410, 606, - 639, 640, 532, 0, 899, 879, 881, 882, 886, 890, - 891, 892, 893, 894, 896, 898, 902, 665, 0, 586, - 600, 669, 599, 662, 416, 0, 438, 597, 545, 0, + 349, 391, 303, 0, 356, 295, 296, 666, 884, 410, + 606, 639, 640, 532, 0, 899, 879, 881, 882, 886, + 890, 891, 892, 893, 894, 896, 898, 902, 665, 0, + 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, + 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, + 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, + 625, 626, 627, 628, 629, 622, 901, 567, 544, 570, + 485, 547, 546, 0, 0, 581, 830, 582, 583, 400, + 401, 402, 403, 888, 607, 321, 504, 427, 0, 568, + 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, + 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, + 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, + 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, + 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, + 561, 588, 910, 883, 909, 911, 912, 908, 913, 914, + 895, 785, 0, 837, 838, 906, 905, 907, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, + 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, + 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, + 792, 297, 538, 381, 426, 354, 602, 603, 0, 654, + 872, 845, 846, 847, 782, 848, 842, 843, 783, 844, + 873, 835, 869, 870, 811, 839, 849, 868, 850, 871, + 874, 875, 915, 916, 856, 840, 260, 917, 853, 876, + 867, 866, 851, 836, 877, 878, 818, 813, 854, 855, + 841, 860, 861, 862, 784, 832, 833, 834, 857, 858, + 814, 815, 816, 817, 0, 0, 0, 489, 490, 491, + 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, + 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, + 863, 649, 449, 450, 655, 0, 859, 652, 653, 650, + 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, + 0, 777, 171, 208, 65, 199, 170, 0, 0, 0, + 0, 0, 0, 412, 0, 0, 543, 576, 565, 648, + 531, 0, 200, 0, 0, 0, 0, 0, 0, 191, + 0, 347, 0, 201, 380, 580, 562, 572, 563, 548, + 549, 550, 557, 359, 551, 552, 553, 523, 554, 524, + 555, 556, 141, 579, 530, 445, 396, 0, 596, 0, + 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, + 0, 0, 0, 0, 0, 0, 204, 0, 0, 230, + 0, 0, 0, 0, 0, 0, 316, 231, 525, 644, + 527, 526, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 222, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, + 474, 0, 486, 0, 370, 371, 0, 0, 0, 0, + 0, 0, 0, 304, 452, 471, 317, 440, 484, 322, + 448, 463, 312, 411, 437, 0, 0, 306, 469, 447, + 393, 305, 0, 431, 345, 361, 342, 409, 0, 468, + 496, 341, 487, 0, 479, 308, 0, 478, 408, 465, + 470, 394, 387, 0, 307, 467, 392, 386, 374, 351, + 512, 375, 376, 365, 421, 384, 422, 366, 398, 397, + 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, + 0, 0, 0, 0, 0, 169, 197, 206, 198, 125, + 0, 0, 637, 0, 0, 641, 0, 481, 0, 0, + 223, 0, 0, 0, 451, 0, 0, 377, 196, 190, + 189, 497, 0, 434, 414, 235, 0, 0, 432, 382, + 466, 423, 472, 453, 480, 428, 424, 298, 454, 344, + 395, 313, 315, 243, 346, 348, 352, 353, 404, 405, + 418, 439, 456, 457, 458, 343, 327, 433, 328, 363, + 329, 299, 335, 333, 336, 441, 337, 301, 419, 462, + 0, 358, 429, 390, 302, 389, 420, 461, 460, 314, + 488, 494, 495, 584, 0, 500, 616, 617, 618, 509, + 0, 425, 310, 309, 0, 0, 0, 339, 323, 325, + 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, + 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, + 604, 0, 0, 0, 493, 378, 379, 0, 350, 349, + 391, 303, 0, 356, 295, 296, 476, 340, 410, 606, + 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, + 577, 406, 492, 226, 589, 592, 522, 236, 0, 586, + 600, 559, 599, 237, 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, 625, - 626, 627, 628, 629, 622, 901, 567, 544, 570, 485, - 547, 546, 0, 0, 581, 830, 582, 583, 400, 401, - 402, 403, 888, 607, 321, 504, 427, 0, 568, 0, + 626, 627, 628, 629, 622, 477, 567, 544, 570, 485, + 547, 546, 0, 0, 581, 501, 582, 583, 400, 401, + 402, 403, 360, 607, 321, 504, 427, 139, 568, 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, 571, - 674, 0, 630, 631, 0, 0, 498, 499, 355, 362, + 234, 0, 630, 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, 561, - 588, 910, 883, 909, 911, 912, 908, 913, 914, 895, - 785, 0, 837, 838, 906, 905, 907, 0, 0, 0, + 588, 0, 0, 0, 0, 0, 0, 0, 0, 66, + 0, 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, 459, - 334, 289, 330, 331, 338, 663, 659, 464, 664, 792, - 297, 538, 381, 426, 354, 602, 603, 0, 654, 872, - 845, 846, 847, 782, 848, 842, 843, 783, 844, 873, - 835, 869, 870, 811, 839, 849, 868, 850, 871, 874, - 875, 915, 916, 856, 840, 260, 917, 853, 876, 867, - 866, 851, 836, 877, 878, 818, 813, 854, 855, 841, - 860, 861, 862, 784, 832, 833, 834, 857, 858, 814, - 815, 816, 817, 0, 0, 0, 489, 490, 491, 513, - 0, 475, 537, 661, 0, 0, 0, 0, 0, 0, - 0, 587, 598, 632, 0, 642, 643, 645, 647, 863, - 649, 449, 450, 655, 0, 859, 652, 653, 650, 385, - 436, 455, 443, 828, 667, 528, 529, 668, 638, 0, - 777, 0, 412, 0, 0, 543, 576, 565, 648, 531, - 0, 0, 0, 0, 0, 0, 780, 0, 0, 0, - 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, - 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, - 556, 819, 579, 530, 445, 396, 0, 596, 0, 0, - 889, 897, 0, 0, 0, 0, 0, 0, 0, 0, - 885, 0, 0, 0, 0, 0, 0, 0, 809, 865, - 864, 796, 806, 0, 0, 316, 231, 525, 644, 527, - 526, 797, 0, 798, 802, 805, 801, 799, 800, 0, - 880, 0, 0, 0, 0, 0, 0, 764, 776, 0, - 781, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 334, 289, 330, 331, 338, 241, 311, 464, 242, 0, + 297, 538, 381, 426, 354, 602, 603, 62, 654, 244, + 245, 246, 247, 248, 249, 250, 251, 290, 252, 253, + 254, 255, 256, 257, 258, 261, 262, 263, 264, 265, + 266, 267, 268, 605, 259, 260, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 0, 0, 0, 291, 292, 293, 294, 0, 0, 285, + 286, 287, 288, 0, 0, 0, 489, 490, 491, 513, + 0, 475, 537, 238, 46, 224, 227, 229, 228, 0, + 63, 587, 598, 632, 5, 642, 643, 645, 647, 646, + 649, 449, 450, 655, 0, 651, 652, 653, 650, 385, + 436, 455, 443, 144, 239, 528, 529, 240, 638, 171, + 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, + 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, + 359, 551, 552, 553, 523, 554, 524, 555, 556, 141, + 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 773, 774, 0, 0, 0, 0, - 829, 0, 775, 0, 0, 0, 0, 0, 446, 474, - 0, 486, 0, 370, 371, 824, 803, 807, 0, 0, - 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, - 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, - 305, 0, 431, 345, 361, 342, 409, 804, 827, 831, - 341, 903, 825, 479, 308, 0, 478, 408, 465, 470, - 394, 387, 0, 307, 467, 392, 386, 374, 351, 904, - 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, - 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 637, 822, 0, 641, 0, 481, 0, 0, 887, - 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, - 826, 0, 434, 414, 900, 0, 0, 432, 382, 466, - 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, - 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, - 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, - 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, - 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, - 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, - 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, - 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, - 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, - 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, - 303, 356, 295, 296, 666, 884, 410, 606, 639, 640, - 532, 0, 899, 879, 881, 882, 886, 890, 891, 892, - 893, 894, 896, 898, 902, 665, 0, 586, 600, 669, - 599, 662, 416, 0, 438, 597, 545, 0, 590, 564, - 0, 591, 560, 595, 0, 534, 0, 503, 506, 535, - 619, 620, 621, 300, 505, 623, 624, 625, 626, 627, - 628, 629, 622, 901, 567, 544, 570, 485, 547, 546, - 0, 0, 581, 830, 582, 583, 400, 401, 402, 403, - 888, 607, 321, 504, 427, 0, 568, 0, 0, 0, - 0, 0, 0, 0, 0, 573, 574, 571, 674, 0, - 630, 631, 0, 0, 498, 499, 355, 362, 517, 364, - 320, 415, 357, 483, 372, 0, 510, 575, 511, 633, - 636, 634, 635, 407, 367, 369, 442, 373, 383, 430, - 482, 413, 435, 318, 473, 444, 388, 561, 588, 910, - 883, 909, 911, 912, 908, 913, 914, 895, 785, 0, - 837, 838, 906, 905, 907, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 615, 614, 613, 612, - 611, 610, 609, 608, 0, 0, 558, 459, 334, 289, - 330, 331, 338, 663, 659, 464, 664, 792, 297, 538, - 381, 426, 354, 602, 603, 0, 654, 872, 845, 846, - 847, 782, 848, 842, 843, 783, 844, 873, 835, 869, - 870, 811, 839, 849, 868, 850, 871, 874, 875, 915, - 916, 856, 840, 260, 917, 853, 876, 867, 866, 851, - 836, 877, 878, 818, 813, 854, 855, 841, 860, 861, - 862, 784, 832, 833, 834, 857, 858, 814, 815, 816, - 817, 0, 0, 0, 489, 490, 491, 513, 0, 475, - 537, 661, 0, 0, 0, 0, 0, 0, 0, 587, - 598, 632, 0, 642, 643, 645, 647, 863, 649, 449, - 450, 655, 0, 859, 652, 653, 650, 385, 436, 455, - 443, 0, 667, 528, 529, 668, 638, 0, 777, 171, - 208, 65, 199, 170, 0, 0, 0, 0, 0, 0, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 200, - 0, 0, 0, 0, 0, 0, 191, 0, 347, 0, - 201, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 141, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, - 0, 0, 0, 204, 0, 0, 230, 0, 0, 0, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 222, 0, + 0, 0, 0, 204, 0, 0, 230, 0, 0, 0, + 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 319, 2477, + 2480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3438,87 +3536,284 @@ var yyAct = [...]int{ 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 169, 197, 206, 198, 125, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 223, 0, 0, - 0, 451, 0, 0, 377, 196, 190, 189, 497, 0, - 434, 414, 235, 0, 0, 432, 382, 466, 423, 472, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, + 0, 0, 641, 2481, 481, 0, 0, 0, 2476, 0, + 2475, 451, 2473, 2478, 377, 0, 0, 0, 497, 0, + 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 243, 346, 348, 352, 353, 404, 405, 418, 439, 456, + 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, + 333, 336, 441, 337, 301, 419, 462, 2479, 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 616, 617, 618, 509, 0, 425, 310, + 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 476, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 226, - 589, 592, 522, 236, 0, 586, 600, 559, 599, 237, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 139, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 234, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 66, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 241, 311, 464, 242, 0, 297, 538, 381, 426, - 354, 602, 603, 62, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 238, - 46, 224, 227, 229, 228, 0, 63, 587, 598, 632, - 5, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 144, - 239, 528, 529, 240, 638, 171, 208, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 412, 0, 0, 543, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, + 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, + 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 477, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 0, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 244, 245, 246, 247, + 248, 249, 250, 251, 290, 252, 253, 254, 255, 256, + 257, 258, 261, 262, 263, 264, 265, 266, 267, 268, + 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, + 291, 292, 293, 294, 0, 0, 285, 286, 287, 288, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, + 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, + 0, 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, - 523, 554, 524, 555, 556, 141, 579, 530, 445, 396, + 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, - 0, 0, 230, 0, 0, 0, 0, 0, 0, 316, - 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 319, 2477, 2480, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1346, + 0, 0, 230, 0, 0, 796, 806, 0, 0, 316, + 231, 525, 644, 527, 526, 797, 0, 798, 802, 805, + 801, 799, 800, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, - 0, 0, 0, 0, 0, 0, 304, 452, 471, 317, + 803, 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, - 409, 0, 468, 496, 341, 487, 0, 479, 308, 0, + 409, 804, 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 637, 0, 0, 641, 2481, - 481, 0, 0, 0, 2476, 0, 2475, 451, 2473, 2478, + 0, 0, 0, 0, 0, 637, 0, 0, 641, 0, + 481, 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, 441, 337, - 301, 419, 462, 2479, 358, 429, 390, 302, 389, 420, + 301, 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, - 0, 350, 349, 391, 303, 356, 295, 296, 666, 340, + 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, + 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, + 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, + 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, + 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, + 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, + 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, + 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, + 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, + 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, + 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, + 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, + 444, 388, 561, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, + 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, + 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, + 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, + 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, + 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, + 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, + 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, + 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, + 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, + 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, + 668, 638, 171, 208, 65, 199, 170, 0, 0, 0, + 0, 0, 0, 412, 693, 0, 543, 576, 565, 648, + 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 347, 0, 0, 380, 580, 562, 572, 563, 548, + 549, 550, 557, 359, 551, 552, 553, 523, 554, 524, + 555, 556, 0, 579, 530, 445, 396, 0, 596, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 700, 0, + 0, 0, 0, 0, 0, 0, 699, 0, 0, 230, + 0, 0, 0, 0, 0, 0, 316, 231, 525, 644, + 527, 526, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, + 474, 0, 486, 0, 370, 371, 0, 0, 0, 0, + 0, 0, 0, 304, 452, 471, 317, 440, 484, 322, + 448, 463, 312, 411, 437, 0, 0, 306, 469, 447, + 393, 305, 0, 431, 345, 361, 342, 409, 0, 468, + 496, 341, 487, 0, 479, 308, 0, 478, 408, 465, + 470, 394, 387, 0, 307, 467, 392, 386, 374, 351, + 512, 375, 376, 365, 421, 384, 422, 366, 398, 397, + 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 697, + 698, 0, 637, 0, 0, 641, 0, 481, 0, 0, + 0, 0, 0, 0, 451, 0, 0, 377, 0, 0, + 0, 497, 0, 434, 414, 670, 0, 0, 432, 382, + 466, 423, 472, 453, 480, 428, 424, 298, 454, 344, + 395, 313, 315, 660, 346, 348, 352, 353, 404, 405, + 418, 439, 456, 457, 458, 343, 327, 433, 328, 363, + 329, 299, 335, 333, 336, 441, 337, 301, 419, 462, + 0, 358, 429, 390, 302, 389, 420, 461, 460, 314, + 488, 494, 495, 584, 0, 500, 671, 672, 673, 509, + 0, 425, 310, 309, 0, 0, 0, 339, 323, 325, + 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, + 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, + 604, 0, 0, 0, 493, 378, 379, 0, 350, 349, + 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, + 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, + 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, + 600, 669, 599, 662, 416, 0, 438, 597, 545, 0, + 590, 564, 0, 591, 560, 595, 0, 534, 0, 503, + 506, 535, 619, 620, 621, 300, 505, 623, 624, 625, + 626, 627, 628, 629, 622, 477, 567, 544, 570, 485, + 547, 546, 0, 0, 581, 501, 582, 583, 400, 401, + 402, 403, 694, 696, 321, 504, 427, 708, 568, 0, + 0, 0, 0, 0, 0, 0, 0, 573, 574, 571, + 674, 0, 630, 631, 0, 0, 498, 499, 355, 362, + 517, 364, 320, 415, 357, 483, 372, 0, 510, 575, + 511, 633, 636, 634, 635, 407, 367, 369, 442, 373, + 383, 430, 482, 413, 435, 318, 473, 444, 388, 561, + 588, 0, 0, 0, 0, 0, 0, 0, 0, 66, + 0, 0, 283, 284, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 615, 614, + 613, 612, 611, 610, 609, 608, 0, 0, 558, 459, + 334, 289, 330, 331, 338, 663, 659, 464, 664, 0, + 297, 538, 381, 426, 354, 602, 603, 0, 654, 244, + 245, 246, 247, 248, 249, 250, 251, 290, 252, 253, + 254, 255, 256, 257, 258, 261, 262, 263, 264, 265, + 266, 267, 268, 605, 259, 260, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 0, 0, 0, 291, 292, 293, 294, 0, 0, 285, + 286, 287, 288, 0, 0, 0, 489, 490, 491, 513, + 0, 475, 537, 661, 0, 0, 0, 0, 0, 0, + 0, 587, 598, 632, 0, 642, 643, 645, 647, 646, + 649, 449, 450, 655, 0, 651, 652, 653, 650, 385, + 436, 455, 443, 0, 667, 528, 529, 668, 638, 412, + 0, 0, 543, 576, 565, 648, 531, 0, 1152, 0, + 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, + 380, 580, 562, 572, 563, 548, 549, 550, 557, 359, + 551, 552, 553, 523, 554, 524, 555, 556, 0, 579, + 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, + 0, 0, 316, 231, 525, 644, 527, 526, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 319, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 446, 474, 0, 486, 0, + 2646, 2647, 1137, 0, 0, 0, 0, 0, 0, 304, + 452, 471, 317, 440, 484, 322, 448, 463, 312, 411, + 437, 0, 0, 2640, 2643, 2644, 2645, 2648, 0, 2653, + 2649, 2650, 2651, 2652, 0, 2635, 2636, 2637, 2638, 1135, + 2619, 2641, 0, 2620, 408, 2621, 2622, 2623, 2624, 1139, + 2625, 2626, 2627, 2628, 2629, 2632, 2633, 2630, 2631, 2639, + 421, 384, 422, 366, 398, 397, 399, 1163, 1165, 1167, + 1169, 1172, 507, 508, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 637, 0, + 0, 641, 0, 481, 0, 0, 0, 0, 0, 0, + 451, 0, 0, 377, 0, 0, 0, 2634, 0, 434, + 414, 670, 0, 0, 432, 382, 466, 423, 472, 453, + 480, 428, 424, 298, 454, 344, 395, 313, 315, 660, + 346, 348, 352, 353, 404, 405, 418, 439, 456, 457, + 458, 343, 327, 433, 328, 363, 329, 299, 335, 333, + 336, 441, 337, 301, 419, 462, 0, 358, 429, 390, + 302, 389, 420, 461, 460, 314, 488, 494, 495, 584, + 0, 500, 671, 672, 673, 509, 0, 425, 310, 309, + 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, + 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, + 502, 593, 536, 540, 541, 368, 604, 0, 0, 0, + 493, 378, 379, 0, 350, 349, 391, 303, 0, 356, + 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, + 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, + 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, + 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, + 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, + 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, + 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, + 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, + 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, + 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, + 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, + 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, + 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, + 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, + 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, + 338, 663, 659, 464, 664, 0, 297, 2642, 381, 426, + 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, + 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, + 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, + 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, + 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, + 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, + 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, + 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, + 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, + 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, + 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, + 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, + 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, + 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, + 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 319, 2477, 2480, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, + 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, + 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, + 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, + 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, + 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, + 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, + 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 637, 0, 0, 641, 2481, 481, + 0, 0, 0, 2476, 0, 2475, 451, 2473, 2478, 377, + 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, + 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, + 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, + 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, + 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, + 419, 462, 2479, 358, 429, 390, 302, 389, 420, 461, + 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, + 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, + 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, + 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, + 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, + 350, 349, 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, @@ -3554,26 +3849,26 @@ var yyAct = [...]int{ 557, 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1346, 0, 0, 230, 0, 0, - 796, 806, 0, 0, 316, 231, 525, 644, 527, 526, - 797, 0, 798, 802, 805, 801, 799, 800, 0, 319, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, + 0, 0, 0, 0, 316, 231, 525, 644, 527, 526, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, + 0, 2498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, 0, - 486, 0, 370, 371, 0, 803, 0, 0, 0, 0, + 486, 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, 305, - 0, 431, 345, 361, 342, 409, 804, 468, 496, 341, + 0, 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 637, 0, 0, 641, 0, 481, 0, 0, 0, 0, - 0, 0, 451, 0, 0, 377, 0, 0, 0, 497, - 0, 434, 414, 670, 0, 0, 432, 382, 466, 423, + 637, 0, 0, 641, 2497, 481, 0, 0, 0, 2503, + 2500, 2502, 451, 0, 2501, 377, 0, 0, 0, 497, + 0, 434, 414, 670, 0, 2495, 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, 299, @@ -3584,270 +3879,7 @@ var yyAct = [...]int{ 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, 303, - 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, - 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, - 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, - 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, - 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, - 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, - 629, 622, 477, 567, 544, 570, 485, 547, 546, 0, - 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, - 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, - 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, - 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, - 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, - 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, - 413, 435, 318, 473, 444, 388, 561, 588, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, - 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, - 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, - 331, 338, 663, 659, 464, 664, 0, 297, 538, 381, - 426, 354, 602, 603, 0, 654, 244, 245, 246, 247, - 248, 249, 250, 251, 290, 252, 253, 254, 255, 256, - 257, 258, 261, 262, 263, 264, 265, 266, 267, 268, - 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, - 291, 292, 293, 294, 0, 0, 285, 286, 287, 288, - 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, - 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, - 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, - 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, - 0, 667, 528, 529, 668, 638, 171, 208, 65, 199, - 170, 0, 0, 0, 0, 0, 0, 412, 693, 0, - 543, 576, 565, 648, 531, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 347, 0, 0, 380, 580, - 562, 572, 563, 548, 549, 550, 557, 359, 551, 552, - 553, 523, 554, 524, 555, 556, 0, 579, 530, 445, - 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 700, 0, 0, 0, 0, 0, 0, 0, - 699, 0, 0, 230, 0, 0, 0, 0, 0, 0, - 316, 231, 525, 644, 527, 526, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 319, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 446, 474, 0, 486, 0, 370, 371, - 0, 0, 0, 0, 0, 0, 0, 304, 452, 471, - 317, 440, 484, 322, 448, 463, 312, 411, 437, 0, - 0, 306, 469, 447, 393, 305, 0, 431, 345, 361, - 342, 409, 0, 468, 496, 341, 487, 0, 479, 308, - 0, 478, 408, 465, 470, 394, 387, 0, 307, 467, - 392, 386, 374, 351, 512, 375, 376, 365, 421, 384, - 422, 366, 398, 397, 399, 0, 0, 0, 0, 0, - 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 697, 698, 0, 637, 0, 0, 641, - 0, 481, 0, 0, 0, 0, 0, 0, 451, 0, - 0, 377, 0, 0, 0, 497, 0, 434, 414, 670, - 0, 0, 432, 382, 466, 423, 472, 453, 480, 428, - 424, 298, 454, 344, 395, 313, 315, 660, 346, 348, - 352, 353, 404, 405, 418, 439, 456, 457, 458, 343, - 327, 433, 328, 363, 329, 299, 335, 333, 336, 441, - 337, 301, 419, 462, 0, 358, 429, 390, 302, 389, - 420, 461, 460, 314, 488, 494, 495, 584, 0, 500, - 671, 672, 673, 509, 0, 425, 310, 309, 0, 0, - 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, - 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, - 536, 540, 541, 368, 604, 0, 0, 0, 493, 378, - 379, 0, 350, 349, 391, 303, 356, 295, 296, 666, - 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, - 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, - 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, - 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, - 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, - 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, - 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, - 583, 400, 401, 402, 403, 694, 696, 321, 504, 427, - 708, 568, 0, 0, 0, 0, 0, 0, 0, 0, - 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, - 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, - 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, - 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, - 444, 388, 561, 588, 0, 0, 0, 0, 0, 0, - 0, 0, 66, 0, 0, 283, 284, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, - 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, - 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, - 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, - 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, - 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, - 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, - 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, - 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, - 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, - 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, - 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, - 0, 1152, 0, 0, 0, 0, 0, 0, 0, 0, - 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, - 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, - 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, - 0, 0, 0, 0, 0, 316, 231, 525, 644, 527, - 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, - 0, 486, 0, 2646, 2647, 1137, 0, 0, 0, 0, - 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, - 463, 312, 411, 437, 0, 0, 2640, 2643, 2644, 2645, - 2648, 0, 2653, 2649, 2650, 2651, 2652, 0, 2635, 2636, - 2637, 2638, 1135, 2619, 2641, 0, 2620, 408, 2621, 2622, - 2623, 2624, 1139, 2625, 2626, 2627, 2628, 2629, 2632, 2633, - 2630, 2631, 2639, 421, 384, 422, 366, 398, 397, 399, - 1163, 1165, 1167, 1169, 1172, 507, 508, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 637, 0, 0, 641, 0, 481, 0, 0, 0, - 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, - 2634, 0, 434, 414, 670, 0, 0, 432, 382, 466, - 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, - 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, - 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, - 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, - 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, - 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, - 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, - 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, - 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, - 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, - 303, 356, 295, 296, 666, 340, 410, 606, 639, 640, - 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, - 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, - 599, 662, 416, 0, 438, 597, 545, 0, 590, 564, - 0, 591, 560, 595, 0, 534, 0, 503, 506, 535, - 619, 620, 621, 300, 505, 623, 624, 625, 626, 627, - 628, 629, 622, 477, 567, 544, 570, 485, 547, 546, - 0, 0, 581, 501, 582, 583, 400, 401, 402, 403, - 360, 607, 321, 504, 427, 0, 568, 0, 0, 0, - 0, 0, 0, 0, 0, 573, 574, 571, 674, 0, - 630, 631, 0, 0, 498, 499, 355, 362, 517, 364, - 320, 415, 357, 483, 372, 0, 510, 575, 511, 633, - 636, 634, 635, 407, 367, 369, 442, 373, 383, 430, - 482, 413, 435, 318, 473, 444, 388, 561, 588, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 615, 614, 613, 612, - 611, 610, 609, 608, 0, 0, 558, 459, 334, 289, - 330, 331, 338, 663, 659, 464, 664, 0, 297, 2642, - 381, 426, 354, 602, 603, 0, 654, 244, 245, 246, - 247, 248, 249, 250, 251, 290, 252, 253, 254, 255, - 256, 257, 258, 261, 262, 263, 264, 265, 266, 267, - 268, 605, 259, 260, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 0, 0, - 0, 291, 292, 293, 294, 0, 0, 285, 286, 287, - 288, 0, 0, 0, 489, 490, 491, 513, 0, 475, - 537, 661, 0, 0, 0, 0, 0, 0, 0, 587, - 598, 632, 0, 642, 643, 645, 647, 646, 649, 449, - 450, 655, 0, 651, 652, 653, 650, 385, 436, 455, - 443, 0, 667, 528, 529, 668, 638, 412, 0, 0, - 543, 576, 565, 648, 531, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 347, 0, 0, 380, 580, - 562, 572, 563, 548, 549, 550, 557, 359, 551, 552, - 553, 523, 554, 524, 555, 556, 0, 579, 530, 445, - 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, - 316, 231, 525, 644, 527, 526, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 319, 2477, 2480, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 446, 474, 0, 486, 0, 370, 371, - 0, 0, 0, 0, 0, 0, 0, 304, 452, 471, - 317, 440, 484, 322, 448, 463, 312, 411, 437, 0, - 0, 306, 469, 447, 393, 305, 0, 431, 345, 361, - 342, 409, 0, 468, 496, 341, 487, 0, 479, 308, - 0, 478, 408, 465, 470, 394, 387, 0, 307, 467, - 392, 386, 374, 351, 512, 375, 376, 365, 421, 384, - 422, 366, 398, 397, 399, 0, 0, 0, 0, 0, - 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 637, 0, 0, 641, - 2481, 481, 0, 0, 0, 2476, 0, 2475, 451, 2473, - 2478, 377, 0, 0, 0, 497, 0, 434, 414, 670, - 0, 0, 432, 382, 466, 423, 472, 453, 480, 428, - 424, 298, 454, 344, 395, 313, 315, 660, 346, 348, - 352, 353, 404, 405, 418, 439, 456, 457, 458, 343, - 327, 433, 328, 363, 329, 299, 335, 333, 336, 441, - 337, 301, 419, 462, 2479, 358, 429, 390, 302, 389, - 420, 461, 460, 314, 488, 494, 495, 584, 0, 500, - 671, 672, 673, 509, 0, 425, 310, 309, 0, 0, - 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, - 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, - 536, 540, 541, 368, 604, 0, 0, 0, 493, 378, - 379, 0, 350, 349, 391, 303, 356, 295, 296, 666, - 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, - 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, - 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, - 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, - 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, - 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, - 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, - 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, - 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, - 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, - 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, - 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, - 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, - 444, 388, 561, 588, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, - 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, - 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, - 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, - 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, - 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, - 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, - 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, - 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, - 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, - 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, - 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, - 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, - 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, - 0, 0, 0, 0, 0, 316, 231, 525, 644, 527, - 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 319, 0, 2498, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, - 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, - 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, - 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, - 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, - 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, - 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, - 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, - 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 637, 0, 0, 641, 2497, 481, 0, 0, 0, - 2503, 2500, 2502, 451, 0, 2501, 377, 0, 0, 0, - 497, 0, 434, 414, 670, 0, 2495, 432, 382, 466, - 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, - 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, - 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, - 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, - 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, - 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, - 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, - 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, - 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, - 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, - 303, 356, 295, 296, 666, 340, 410, 606, 639, 640, + 0, 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, 564, @@ -3912,154 +3944,22 @@ var yyAct = [...]int{ 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, 378, - 379, 0, 350, 349, 391, 303, 356, 295, 296, 666, - 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, - 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, - 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, - 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, - 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, - 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, - 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, - 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, - 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, - 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, - 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, - 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, - 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, - 444, 388, 561, 588, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, - 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, - 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, - 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, - 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, - 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, - 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, - 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, - 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, - 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, - 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, - 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, - 0, 0, 0, 0, 0, 2179, 0, 0, 0, 0, - 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, - 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, - 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, - 0, 2180, 0, 0, 0, 316, 231, 525, 644, 527, - 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 319, 0, 0, 1274, 1275, 1276, 1273, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, - 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, - 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, - 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, - 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, - 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, - 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, - 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, - 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 637, 0, 0, 641, 0, 481, 0, 0, 0, - 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, - 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, - 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, - 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, - 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, - 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, - 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, - 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, - 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, - 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, - 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, - 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, - 303, 356, 295, 296, 666, 340, 410, 606, 639, 640, - 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, - 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, - 599, 662, 416, 0, 438, 597, 545, 0, 590, 564, - 0, 591, 560, 595, 0, 534, 0, 503, 506, 535, - 619, 620, 621, 300, 505, 623, 624, 625, 626, 627, - 628, 629, 622, 477, 567, 544, 570, 485, 547, 546, - 0, 0, 581, 501, 582, 583, 400, 401, 402, 403, - 360, 607, 321, 504, 427, 0, 568, 0, 0, 0, - 0, 0, 0, 0, 0, 573, 574, 571, 674, 0, - 630, 631, 0, 0, 498, 499, 355, 362, 517, 364, - 320, 415, 357, 483, 372, 0, 510, 575, 511, 633, - 636, 634, 635, 407, 367, 369, 442, 373, 383, 430, - 482, 413, 435, 318, 473, 444, 388, 561, 588, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 615, 614, 613, 612, - 611, 610, 609, 608, 0, 0, 558, 459, 334, 289, - 330, 331, 338, 663, 659, 464, 664, 0, 297, 538, - 381, 426, 354, 602, 603, 0, 654, 244, 245, 246, - 247, 248, 249, 250, 251, 290, 252, 253, 254, 255, - 256, 257, 258, 261, 262, 263, 264, 265, 266, 267, - 268, 605, 259, 260, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 0, 0, - 0, 291, 292, 293, 294, 0, 0, 285, 286, 287, - 288, 0, 0, 0, 489, 490, 491, 513, 0, 475, - 537, 661, 0, 0, 0, 0, 0, 0, 0, 587, - 598, 632, 0, 642, 643, 645, 647, 646, 649, 449, - 450, 655, 0, 651, 652, 653, 650, 385, 436, 455, - 443, 0, 667, 528, 529, 668, 638, 171, 208, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 412, 0, - 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 347, 0, 0, 380, - 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, - 552, 553, 523, 554, 524, 555, 556, 141, 579, 530, - 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 204, 2229, 0, 230, 0, 0, 0, 0, 0, - 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, - 371, 0, 0, 0, 0, 0, 0, 0, 304, 452, - 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, - 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, - 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, - 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, - 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, - 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, - 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, - 641, 0, 481, 0, 0, 0, 0, 0, 0, 451, - 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, - 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, - 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, - 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, - 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, - 441, 337, 301, 419, 462, 0, 358, 429, 390, 302, - 389, 420, 461, 460, 314, 488, 494, 495, 584, 0, - 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, - 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, - 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, - 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, - 378, 379, 0, 350, 349, 391, 303, 356, 295, 296, - 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, - 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, - 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, - 438, 597, 545, 0, 590, 564, 0, 591, 560, 595, - 0, 534, 0, 503, 506, 535, 619, 620, 621, 300, - 505, 623, 624, 625, 626, 627, 628, 629, 622, 477, - 567, 544, 570, 485, 547, 546, 0, 0, 581, 501, - 582, 583, 400, 401, 402, 403, 360, 607, 321, 504, - 427, 0, 568, 0, 0, 0, 0, 0, 0, 0, - 0, 573, 574, 571, 674, 0, 630, 631, 0, 0, - 498, 499, 355, 362, 517, 364, 320, 415, 357, 483, - 372, 0, 510, 575, 511, 633, 636, 634, 635, 407, - 367, 369, 442, 373, 383, 430, 482, 413, 435, 318, - 473, 444, 388, 561, 588, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 283, 284, 0, 0, + 379, 0, 350, 349, 391, 303, 0, 356, 295, 296, + 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, + 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, + 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, + 438, 597, 545, 0, 590, 564, 0, 591, 560, 595, + 0, 534, 0, 503, 506, 535, 619, 620, 621, 300, + 505, 623, 624, 625, 626, 627, 628, 629, 622, 477, + 567, 544, 570, 485, 547, 546, 0, 0, 581, 501, + 582, 583, 400, 401, 402, 403, 360, 607, 321, 504, + 427, 0, 568, 0, 0, 0, 0, 0, 0, 0, + 0, 573, 574, 571, 674, 0, 630, 631, 0, 0, + 498, 499, 355, 362, 517, 364, 320, 415, 357, 483, + 372, 0, 510, 575, 511, 633, 636, 634, 635, 407, + 367, 369, 442, 373, 383, 430, 482, 413, 435, 318, + 473, 444, 388, 561, 588, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, 663, @@ -4074,44 +3974,43 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, 667, 528, - 529, 668, 638, 171, 208, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 412, 0, 0, 543, 576, 565, - 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, - 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, - 524, 555, 556, 141, 579, 530, 445, 396, 0, 596, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 204, 2214, 0, - 230, 0, 0, 0, 0, 0, 0, 316, 231, 525, - 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, - 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, - 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, - 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, - 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, - 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, - 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, - 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 637, 0, 0, 641, 0, 481, 0, - 0, 0, 0, 0, 0, 451, 0, 0, 377, 0, - 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, - 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, - 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, - 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, - 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, - 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, - 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, - 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, - 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, - 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, - 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, - 349, 391, 303, 356, 295, 296, 666, 340, 410, 606, + 529, 668, 638, 412, 0, 0, 543, 576, 565, 648, + 531, 0, 0, 0, 0, 0, 2179, 0, 0, 0, + 0, 347, 0, 0, 380, 580, 562, 572, 563, 548, + 549, 550, 557, 359, 551, 552, 553, 523, 554, 524, + 555, 556, 0, 579, 530, 445, 396, 0, 596, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, + 0, 0, 2180, 0, 0, 0, 316, 231, 525, 644, + 527, 526, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 319, 0, 0, 1274, 1275, 1276, 1273, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, + 474, 0, 486, 0, 370, 371, 0, 0, 0, 0, + 0, 0, 0, 304, 452, 471, 317, 440, 484, 322, + 448, 463, 312, 411, 437, 0, 0, 306, 469, 447, + 393, 305, 0, 431, 345, 361, 342, 409, 0, 468, + 496, 341, 487, 0, 479, 308, 0, 478, 408, 465, + 470, 394, 387, 0, 307, 467, 392, 386, 374, 351, + 512, 375, 376, 365, 421, 384, 422, 366, 398, 397, + 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 637, 0, 0, 641, 0, 481, 0, 0, + 0, 0, 0, 0, 451, 0, 0, 377, 0, 0, + 0, 497, 0, 434, 414, 670, 0, 0, 432, 382, + 466, 423, 472, 453, 480, 428, 424, 298, 454, 344, + 395, 313, 315, 660, 346, 348, 352, 353, 404, 405, + 418, 439, 456, 457, 458, 343, 327, 433, 328, 363, + 329, 299, 335, 333, 336, 441, 337, 301, 419, 462, + 0, 358, 429, 390, 302, 389, 420, 461, 460, 314, + 488, 494, 495, 584, 0, 500, 671, 672, 673, 509, + 0, 425, 310, 309, 0, 0, 0, 339, 323, 325, + 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, + 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, + 604, 0, 0, 0, 493, 378, 379, 0, 350, 349, + 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, 0, @@ -4140,148 +4039,17 @@ var yyAct = [...]int{ 0, 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, 385, - 436, 455, 443, 0, 667, 528, 529, 668, 638, 412, - 0, 0, 543, 576, 565, 648, 531, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 347, 1063, 0, - 380, 580, 562, 572, 563, 548, 549, 550, 557, 359, - 551, 552, 553, 523, 554, 524, 555, 556, 0, 579, - 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 230, 1070, 1071, 0, 0, - 0, 0, 316, 231, 525, 644, 527, 526, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1074, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 446, 474, 0, 486, 0, - 370, 371, 0, 0, 0, 0, 0, 0, 0, 304, - 452, 1057, 317, 440, 484, 322, 448, 463, 312, 411, - 437, 0, 0, 306, 469, 447, 393, 305, 0, 431, - 345, 361, 342, 409, 0, 468, 496, 341, 487, 1044, - 479, 308, 1043, 478, 408, 465, 470, 394, 387, 0, - 307, 467, 392, 386, 374, 351, 512, 375, 376, 365, - 421, 384, 422, 366, 398, 397, 399, 0, 0, 0, - 0, 0, 507, 508, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 637, 0, - 0, 641, 0, 481, 0, 0, 0, 0, 0, 0, - 451, 0, 0, 377, 0, 0, 0, 497, 0, 434, - 414, 670, 0, 0, 432, 382, 466, 423, 472, 453, - 480, 1061, 424, 298, 454, 344, 395, 313, 315, 660, - 346, 348, 352, 353, 404, 405, 418, 439, 456, 457, - 458, 343, 327, 433, 328, 363, 329, 299, 335, 333, - 336, 441, 337, 301, 419, 462, 0, 358, 429, 390, - 302, 389, 420, 461, 460, 314, 488, 494, 495, 584, - 0, 500, 671, 672, 673, 509, 0, 425, 310, 309, - 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, - 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, - 502, 593, 536, 540, 541, 368, 604, 0, 0, 0, - 493, 378, 379, 0, 350, 349, 391, 303, 356, 295, - 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, - 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, - 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, - 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, - 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, - 300, 505, 623, 624, 625, 626, 627, 628, 1062, 622, - 477, 567, 544, 570, 485, 547, 546, 0, 0, 581, - 1065, 582, 583, 400, 401, 402, 403, 360, 607, 1060, - 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, - 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, - 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, - 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, - 1072, 1058, 1068, 1059, 373, 383, 430, 482, 413, 435, - 318, 473, 444, 1069, 561, 588, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 283, 284, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, - 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, - 663, 659, 464, 664, 0, 297, 538, 381, 426, 354, - 602, 603, 0, 654, 244, 245, 246, 247, 248, 249, - 250, 251, 290, 252, 253, 254, 255, 256, 257, 258, - 261, 262, 263, 264, 265, 266, 267, 268, 605, 259, - 260, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 0, 0, 0, 291, 292, - 293, 294, 0, 0, 285, 286, 287, 288, 0, 0, - 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, - 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, - 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, - 651, 652, 653, 650, 1056, 436, 455, 443, 0, 667, - 528, 529, 668, 638, 171, 208, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 141, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2109, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, + 436, 455, 443, 0, 667, 528, 529, 668, 638, 171, + 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, + 359, 551, 552, 553, 523, 554, 524, 555, 556, 141, 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 1070, 1071, 0, + 0, 0, 0, 204, 2229, 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1074, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4291,7 +4059,7 @@ var yyAct = [...]int{ 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 1044, 479, 308, 1043, 478, 408, 465, 470, 394, 387, + 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, @@ -4308,1812 +4076,177 @@ var yyAct = [...]int{ 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 1072, 2130, 1068, 2131, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 1069, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 3042, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3045, - 0, 0, 0, 3044, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 1581, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 1579, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 1577, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 1575, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 1579, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 1577, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4166, 0, 230, 865, 0, 0, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 1579, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 1577, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 1579, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 1795, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 2581, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 2583, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 2179, 0, 0, 0, 0, 347, 0, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 2180, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 3265, 3267, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 2604, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 1579, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 681, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 680, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 865, 0, 0, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4143, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 3898, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 4034, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1809, 0, 0, 230, 0, 0, 0, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3913, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 3822, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 3298, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3317, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2109, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 3527, 0, 0, 0, 0, 0, 0, 0, 347, 0, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3429, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3150, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 1579, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 2583, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 2961, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, + 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, + 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 477, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 0, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 244, 245, 246, 247, + 248, 249, 250, 251, 290, 252, 253, 254, 255, 256, + 257, 258, 261, 262, 263, 264, 265, 266, 267, 268, + 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, + 291, 292, 293, 294, 0, 0, 285, 286, 287, 288, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, + 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, + 0, 667, 528, 529, 668, 638, 171, 208, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 412, 0, 0, + 543, 576, 565, 648, 531, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 347, 0, 0, 380, 580, + 562, 572, 563, 548, 549, 550, 557, 359, 551, 552, + 553, 523, 554, 524, 555, 556, 141, 579, 530, 445, + 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, + 204, 2214, 0, 230, 0, 0, 0, 0, 0, 0, + 316, 231, 525, 644, 527, 526, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, + 0, 0, 0, 446, 474, 0, 486, 0, 370, 371, + 0, 0, 0, 0, 0, 0, 0, 304, 452, 471, + 317, 440, 484, 322, 448, 463, 312, 411, 437, 0, + 0, 306, 469, 447, 393, 305, 0, 431, 345, 361, + 342, 409, 0, 468, 496, 341, 487, 0, 479, 308, + 0, 478, 408, 465, 470, 394, 387, 0, 307, 467, + 392, 386, 374, 351, 512, 375, 376, 365, 421, 384, + 422, 366, 398, 397, 399, 0, 0, 0, 0, 0, + 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 637, 0, 0, 641, + 0, 481, 0, 0, 0, 0, 0, 0, 451, 0, + 0, 377, 0, 0, 0, 497, 0, 434, 414, 670, + 0, 0, 432, 382, 466, 423, 472, 453, 480, 428, + 424, 298, 454, 344, 395, 313, 315, 660, 346, 348, + 352, 353, 404, 405, 418, 439, 456, 457, 458, 343, + 327, 433, 328, 363, 329, 299, 335, 333, 336, 441, + 337, 301, 419, 462, 0, 358, 429, 390, 302, 389, + 420, 461, 460, 314, 488, 494, 495, 584, 0, 500, + 671, 672, 673, 509, 0, 425, 310, 309, 0, 0, + 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, + 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, + 536, 540, 541, 368, 604, 0, 0, 0, 493, 378, + 379, 0, 350, 349, 391, 303, 0, 356, 295, 296, + 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, + 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, + 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, + 438, 597, 545, 0, 590, 564, 0, 591, 560, 595, + 0, 534, 0, 503, 506, 535, 619, 620, 621, 300, + 505, 623, 624, 625, 626, 627, 628, 629, 622, 477, + 567, 544, 570, 485, 547, 546, 0, 0, 581, 501, + 582, 583, 400, 401, 402, 403, 360, 607, 321, 504, + 427, 0, 568, 0, 0, 0, 0, 0, 0, 0, + 0, 573, 574, 571, 674, 0, 630, 631, 0, 0, + 498, 499, 355, 362, 517, 364, 320, 415, 357, 483, + 372, 0, 510, 575, 511, 633, 636, 634, 635, 407, + 367, 369, 442, 373, 383, 430, 482, 413, 435, 318, + 473, 444, 388, 561, 588, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, - 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, - 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, - 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, - 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, - 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, - 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, - 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, - 571, 674, 0, 630, 631, 0, 0, 498, 499, 355, - 362, 517, 364, 320, 415, 357, 483, 372, 0, 510, - 575, 511, 633, 636, 634, 635, 407, 367, 369, 442, - 373, 383, 430, 482, 413, 435, 318, 473, 444, 388, - 561, 588, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, - 614, 613, 612, 611, 610, 609, 608, 0, 0, 558, - 459, 334, 289, 330, 331, 338, 663, 659, 464, 664, - 0, 297, 538, 381, 426, 354, 602, 603, 0, 654, - 244, 245, 246, 247, 248, 249, 250, 251, 290, 252, - 253, 254, 255, 256, 257, 258, 261, 262, 263, 264, - 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, - 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, - 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, - 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, + 0, 0, 615, 614, 613, 612, 611, 610, 609, 608, + 0, 0, 558, 459, 334, 289, 330, 331, 338, 663, + 659, 464, 664, 0, 297, 538, 381, 426, 354, 602, + 603, 0, 654, 244, 245, 246, 247, 248, 249, 250, + 251, 290, 252, 253, 254, 255, 256, 257, 258, 261, + 262, 263, 264, 265, 266, 267, 268, 605, 259, 260, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 0, 0, 0, 291, 292, 293, + 294, 0, 0, 285, 286, 287, 288, 0, 0, 0, + 489, 490, 491, 513, 0, 475, 537, 661, 0, 0, + 0, 0, 0, 0, 0, 587, 598, 632, 0, 642, + 643, 645, 647, 646, 649, 449, 450, 655, 0, 651, + 652, 653, 650, 385, 436, 455, 443, 0, 667, 528, + 529, 668, 638, 412, 0, 0, 543, 576, 565, 648, + 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 347, 1063, 0, 380, 580, 562, 572, 563, 548, + 549, 550, 557, 359, 551, 552, 553, 523, 554, 524, + 555, 556, 0, 579, 530, 445, 396, 0, 596, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, + 1070, 1071, 0, 0, 0, 0, 316, 231, 525, 644, + 527, 526, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1074, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, + 474, 0, 486, 0, 370, 371, 0, 0, 0, 0, + 0, 0, 0, 304, 452, 1057, 317, 440, 484, 322, + 448, 463, 312, 411, 437, 0, 0, 306, 469, 447, + 393, 305, 0, 431, 345, 361, 342, 409, 0, 468, + 496, 341, 487, 1044, 479, 308, 1043, 478, 408, 465, + 470, 394, 387, 0, 307, 467, 392, 386, 374, 351, + 512, 375, 376, 365, 421, 384, 422, 366, 398, 397, + 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 637, 0, 0, 641, 0, 481, 0, 0, + 0, 0, 0, 0, 451, 0, 0, 377, 0, 0, + 0, 497, 0, 434, 414, 670, 0, 0, 432, 382, + 466, 423, 472, 453, 480, 1061, 424, 298, 454, 344, + 395, 313, 315, 660, 346, 348, 352, 353, 404, 405, + 418, 439, 456, 457, 458, 343, 327, 433, 328, 363, + 329, 299, 335, 333, 336, 441, 337, 301, 419, 462, + 0, 358, 429, 390, 302, 389, 420, 461, 460, 314, + 488, 494, 495, 584, 0, 500, 671, 672, 673, 509, + 0, 425, 310, 309, 0, 0, 0, 339, 323, 325, + 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, + 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, + 604, 0, 0, 0, 493, 378, 379, 0, 350, 349, + 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, + 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, + 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, + 600, 669, 599, 662, 416, 0, 438, 597, 545, 0, + 590, 564, 0, 591, 560, 595, 0, 534, 0, 503, + 506, 535, 619, 620, 621, 300, 505, 623, 624, 625, + 626, 627, 628, 1062, 622, 477, 567, 544, 570, 485, + 547, 546, 0, 0, 581, 1065, 582, 583, 400, 401, + 402, 403, 360, 607, 1060, 504, 427, 0, 568, 0, + 0, 0, 0, 0, 0, 0, 0, 573, 574, 571, + 674, 0, 630, 631, 0, 0, 498, 499, 355, 362, + 517, 364, 320, 415, 357, 483, 372, 0, 510, 575, + 511, 633, 636, 634, 635, 1072, 1058, 1068, 1059, 373, + 383, 430, 482, 413, 435, 318, 473, 444, 1069, 561, + 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 283, 284, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 615, 614, + 613, 612, 611, 610, 609, 608, 0, 0, 558, 459, + 334, 289, 330, 331, 338, 663, 659, 464, 664, 0, + 297, 538, 381, 426, 354, 602, 603, 0, 654, 244, + 245, 246, 247, 248, 249, 250, 251, 290, 252, 253, + 254, 255, 256, 257, 258, 261, 262, 263, 264, 265, + 266, 267, 268, 605, 259, 260, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 0, 0, 0, 291, 292, 293, 294, 0, 0, 285, + 286, 287, 288, 0, 0, 0, 489, 490, 491, 513, + 0, 475, 537, 661, 0, 0, 0, 0, 0, 0, + 0, 587, 598, 632, 0, 642, 643, 645, 647, 646, + 649, 449, 450, 655, 0, 651, 652, 653, 650, 1056, + 436, 455, 443, 0, 667, 528, 529, 668, 638, 171, + 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, + 359, 551, 552, 553, 523, 554, 524, 555, 556, 141, 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 2823, + 0, 0, 0, 2109, 0, 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6142,73 +4275,270 @@ var yyAct = [...]int{ 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, + 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, + 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 477, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 0, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 244, 245, 246, 247, + 248, 249, 250, 251, 290, 252, 253, 254, 255, 256, + 257, 258, 261, 262, 263, 264, 265, 266, 267, 268, + 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, + 291, 292, 293, 294, 0, 0, 285, 286, 287, 288, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, + 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, + 0, 667, 528, 529, 668, 638, 412, 0, 0, 543, + 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 347, 0, 0, 380, 580, 562, + 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, + 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, + 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 1070, 1071, 0, 0, 0, 0, 316, + 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, + 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, + 0, 0, 0, 0, 0, 0, 304, 452, 471, 317, + 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, + 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, + 409, 0, 468, 496, 341, 487, 1044, 479, 308, 1043, + 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, + 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, + 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, + 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 637, 0, 0, 641, 0, + 481, 0, 0, 0, 0, 0, 0, 451, 0, 0, + 377, 0, 0, 0, 497, 0, 434, 414, 670, 0, + 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, + 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, + 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, + 433, 328, 363, 329, 299, 335, 333, 336, 441, 337, + 301, 419, 462, 0, 358, 429, 390, 302, 389, 420, + 461, 460, 314, 488, 494, 495, 584, 0, 500, 671, + 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, + 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, + 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, + 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, + 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, + 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, + 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, + 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, + 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, + 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, + 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, + 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, + 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, + 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, + 0, 510, 575, 511, 633, 636, 634, 635, 1072, 2130, + 1068, 2131, 373, 383, 430, 482, 413, 435, 318, 473, + 444, 1069, 561, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, + 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, + 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, + 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, + 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, + 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, + 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, + 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, + 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, + 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, + 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, + 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, + 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, + 0, 0, 3042, 0, 0, 0, 0, 0, 0, 0, + 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, + 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, + 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, + 0, 0, 0, 0, 0, 316, 231, 525, 644, 527, + 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, + 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, + 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, + 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, + 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, + 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, + 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, + 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, + 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3045, 0, 0, 0, + 3044, 637, 0, 0, 641, 0, 481, 0, 0, 0, + 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, + 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, + 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, + 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, + 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, + 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, + 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, + 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, + 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, + 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, + 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, + 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, + 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, + 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, + 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, + 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, + 564, 0, 591, 560, 595, 0, 534, 0, 503, 506, + 535, 619, 620, 621, 300, 505, 623, 624, 625, 626, + 627, 628, 629, 622, 477, 567, 544, 570, 485, 547, + 546, 0, 0, 581, 501, 582, 583, 400, 401, 402, + 403, 360, 607, 321, 504, 427, 0, 568, 0, 0, + 0, 0, 0, 0, 0, 0, 573, 574, 571, 674, + 0, 630, 631, 0, 0, 498, 499, 355, 362, 517, + 364, 320, 415, 357, 483, 372, 0, 510, 575, 511, + 633, 636, 634, 635, 407, 367, 369, 442, 373, 383, + 430, 482, 413, 435, 318, 473, 444, 388, 561, 588, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 615, 614, 613, + 612, 611, 610, 609, 608, 0, 0, 558, 459, 334, + 289, 330, 331, 338, 663, 659, 464, 664, 0, 297, + 538, 381, 426, 354, 602, 603, 0, 654, 244, 245, + 246, 247, 248, 249, 250, 251, 290, 252, 253, 254, + 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, + 267, 268, 605, 259, 260, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 0, + 0, 0, 291, 292, 293, 294, 0, 0, 285, 286, + 287, 288, 0, 0, 0, 489, 490, 491, 513, 0, + 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, + 587, 598, 632, 0, 642, 643, 645, 647, 646, 649, + 449, 450, 655, 0, 651, 652, 653, 650, 385, 436, + 455, 443, 0, 667, 528, 529, 668, 638, 412, 0, + 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 347, 1581, 0, 380, + 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, + 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, + 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 230, 0, 0, 1579, 0, 0, + 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, + 371, 1577, 0, 0, 0, 0, 0, 0, 304, 452, + 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, + 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, + 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, + 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, + 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, + 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, + 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, + 641, 0, 481, 0, 0, 0, 0, 0, 0, 451, + 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, + 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, + 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, + 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, + 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, + 441, 337, 301, 419, 462, 0, 358, 429, 390, 302, + 389, 420, 461, 460, 314, 488, 494, 495, 584, 0, + 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, + 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, + 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, + 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, + 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, + 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, + 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, + 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, + 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, + 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, + 300, 505, 623, 624, 625, 626, 627, 628, 629, 622, + 477, 567, 544, 570, 485, 547, 546, 0, 0, 581, + 501, 582, 583, 400, 401, 402, 403, 360, 607, 321, + 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, + 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, + 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, + 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, + 407, 367, 369, 442, 373, 383, 430, 482, 413, 435, + 318, 473, 444, 388, 561, 588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 283, 284, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, + 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, + 663, 659, 464, 664, 0, 297, 538, 381, 426, 354, + 602, 603, 0, 654, 244, 245, 246, 247, 248, 249, + 250, 251, 290, 252, 253, 254, 255, 256, 257, 258, + 261, 262, 263, 264, 265, 266, 267, 268, 605, 259, + 260, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 0, 0, 0, 291, 292, + 293, 294, 0, 0, 285, 286, 287, 288, 0, 0, + 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, + 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, + 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, + 651, 652, 653, 650, 385, 436, 455, 443, 0, 667, + 528, 529, 668, 638, 412, 0, 0, 543, 576, 565, + 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 1575, 0, 380, 580, 562, 572, 563, + 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, + 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 0, 0, 1579, 0, 0, 0, 316, 231, 525, + 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 474, 0, 486, 0, 370, 371, 1577, 0, 0, + 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, + 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, + 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, + 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, + 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, + 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, + 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 637, 0, 0, 641, 0, 481, 0, + 0, 0, 0, 0, 0, 451, 0, 0, 377, 0, + 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, + 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, + 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, + 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, + 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, + 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, + 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, + 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, + 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, + 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, + 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, + 349, 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, @@ -6244,7 +4574,7 @@ var yyAct = [...]int{ 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 2701, + 0, 0, 0, 0, 4171, 0, 230, 865, 0, 0, 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6273,73 +4603,270 @@ var yyAct = [...]int{ 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, + 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, + 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 477, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 0, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 244, 245, 246, 247, + 248, 249, 250, 251, 290, 252, 253, 254, 255, 256, + 257, 258, 261, 262, 263, 264, 265, 266, 267, 268, + 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, + 291, 292, 293, 294, 0, 0, 285, 286, 287, 288, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, + 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, + 0, 667, 528, 529, 668, 638, 412, 0, 0, 543, + 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 347, 0, 0, 380, 580, 562, + 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, + 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, + 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 0, 0, 1579, 0, 0, 0, 316, + 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, + 0, 0, 446, 474, 0, 486, 0, 370, 371, 1577, + 0, 0, 0, 0, 0, 0, 304, 452, 471, 317, + 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, + 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, + 409, 0, 468, 496, 341, 487, 0, 479, 308, 0, + 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, + 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, + 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, + 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 637, 0, 0, 641, 0, + 481, 0, 0, 0, 0, 0, 0, 451, 0, 0, + 377, 0, 0, 0, 497, 0, 434, 414, 670, 0, + 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, + 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, + 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, + 433, 328, 363, 329, 299, 335, 333, 336, 441, 337, + 301, 419, 462, 0, 358, 429, 390, 302, 389, 420, + 461, 460, 314, 488, 494, 495, 584, 0, 500, 671, + 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, + 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, + 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, + 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, + 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, + 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, + 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, + 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, + 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, + 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, + 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, + 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, + 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, + 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, + 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, + 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, + 444, 388, 561, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, + 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, + 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, + 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, + 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, + 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, + 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, + 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, + 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, + 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, + 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, + 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, + 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, + 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, + 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, + 0, 1579, 0, 0, 0, 316, 231, 525, 644, 527, + 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, + 0, 486, 0, 370, 371, 1795, 0, 0, 0, 0, + 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, + 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, + 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, + 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, + 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, + 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, + 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 637, 0, 0, 641, 0, 481, 0, 0, 0, + 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, + 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, + 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, + 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, + 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, + 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, + 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, + 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, + 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, + 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, + 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, + 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, + 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, + 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, + 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, + 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, + 564, 0, 591, 560, 595, 0, 534, 0, 503, 506, + 535, 619, 620, 621, 300, 505, 623, 624, 625, 626, + 627, 628, 629, 622, 477, 567, 544, 570, 485, 547, + 546, 0, 0, 581, 501, 582, 583, 400, 401, 402, + 403, 360, 607, 321, 504, 427, 0, 568, 0, 0, + 0, 0, 0, 0, 0, 0, 573, 574, 571, 674, + 0, 630, 631, 0, 0, 498, 499, 355, 362, 517, + 364, 320, 415, 357, 483, 372, 0, 510, 575, 511, + 633, 636, 634, 635, 407, 367, 369, 442, 373, 383, + 430, 482, 413, 435, 318, 473, 444, 388, 561, 588, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 615, 614, 613, + 612, 611, 610, 609, 608, 0, 0, 558, 459, 334, + 289, 330, 331, 338, 663, 659, 464, 664, 0, 297, + 538, 381, 426, 354, 602, 603, 0, 654, 244, 245, + 246, 247, 248, 249, 250, 251, 290, 252, 253, 254, + 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, + 267, 268, 605, 259, 260, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 0, + 0, 0, 291, 292, 293, 294, 0, 0, 285, 286, + 287, 288, 0, 0, 0, 489, 490, 491, 513, 0, + 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, + 587, 598, 632, 0, 642, 643, 645, 647, 646, 649, + 449, 450, 655, 0, 651, 652, 653, 650, 385, 436, + 455, 443, 0, 667, 528, 529, 668, 638, 412, 0, + 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, + 0, 2581, 0, 0, 0, 0, 347, 0, 0, 380, + 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, + 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, + 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 230, 0, 0, 2583, 0, 0, + 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 304, 452, + 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, + 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, + 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, + 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, + 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, + 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, + 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, + 641, 0, 481, 0, 0, 0, 0, 0, 0, 451, + 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, + 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, + 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, + 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, + 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, + 441, 337, 301, 419, 462, 0, 358, 429, 390, 302, + 389, 420, 461, 460, 314, 488, 494, 495, 584, 0, + 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, + 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, + 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, + 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, + 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, + 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, + 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, + 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, + 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, + 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, + 300, 505, 623, 624, 625, 626, 627, 628, 629, 622, + 477, 567, 544, 570, 485, 547, 546, 0, 0, 581, + 501, 582, 583, 400, 401, 402, 403, 360, 607, 321, + 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, + 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, + 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, + 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, + 407, 367, 369, 442, 373, 383, 430, 482, 413, 435, + 318, 473, 444, 388, 561, 588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 283, 284, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, + 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, + 663, 659, 464, 664, 0, 297, 538, 381, 426, 354, + 602, 603, 0, 654, 244, 245, 246, 247, 248, 249, + 250, 251, 290, 252, 253, 254, 255, 256, 257, 258, + 261, 262, 263, 264, 265, 266, 267, 268, 605, 259, + 260, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 0, 0, 0, 291, 292, + 293, 294, 0, 0, 285, 286, 287, 288, 0, 0, + 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, + 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, + 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, + 651, 652, 653, 650, 385, 436, 455, 443, 0, 667, + 528, 529, 668, 638, 412, 0, 0, 543, 576, 565, + 648, 531, 0, 0, 0, 0, 0, 2179, 0, 0, + 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, + 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, + 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 0, 0, 2180, 0, 0, 0, 316, 231, 525, + 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, + 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, + 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, + 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, + 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, + 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, + 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, + 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 637, 0, 0, 641, 0, 481, 0, + 0, 0, 0, 0, 0, 451, 0, 0, 377, 0, + 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, + 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, + 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, + 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, + 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, + 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, + 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, + 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, + 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, + 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, + 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, + 349, 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, @@ -6375,8 +4902,8 @@ var yyAct = [...]int{ 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 2661, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, + 0, 0, 0, 0, 0, 0, 230, 0, 0, 3265, + 3267, 0, 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6404,73 +4931,270 @@ var yyAct = [...]int{ 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, + 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, + 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 477, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 0, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 244, 245, 246, 247, + 248, 249, 250, 251, 290, 252, 253, 254, 255, 256, + 257, 258, 261, 262, 263, 264, 265, 266, 267, 268, + 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, + 291, 292, 293, 294, 0, 0, 285, 286, 287, 288, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, + 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, + 0, 667, 528, 529, 668, 638, 412, 0, 0, 543, + 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 347, 2604, 0, 380, 580, 562, + 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, + 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, + 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 2428, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 0, 0, 1579, 0, 0, 0, 316, + 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, + 0, 0, 0, 0, 0, 0, 304, 452, 471, 317, + 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, + 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, + 409, 0, 468, 496, 341, 487, 0, 479, 308, 0, + 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, + 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, + 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, + 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 637, 0, 0, 641, 0, + 481, 0, 0, 0, 0, 0, 0, 451, 0, 0, + 377, 0, 0, 0, 497, 0, 434, 414, 670, 0, + 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, + 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, + 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, + 433, 328, 363, 329, 299, 335, 333, 336, 441, 337, + 301, 419, 462, 0, 358, 429, 390, 302, 389, 420, + 461, 460, 314, 488, 494, 495, 584, 0, 500, 671, + 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, + 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, + 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, + 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, + 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, + 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, + 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, + 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, + 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, + 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, + 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, + 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, + 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, + 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, + 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, + 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, + 444, 388, 561, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, + 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, + 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, + 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, + 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, + 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, + 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, + 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, + 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, + 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, + 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, + 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, + 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 681, + 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, + 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, + 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, + 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, + 0, 0, 0, 0, 0, 316, 231, 525, 644, 527, + 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, + 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, + 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, + 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, + 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, + 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, + 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, + 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, + 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 637, 0, 0, 641, 0, 481, 0, 680, 0, + 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, + 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, + 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, + 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, + 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, + 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, + 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, + 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, + 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, + 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, + 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, + 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, + 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, + 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, + 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, + 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, + 564, 0, 591, 560, 595, 0, 534, 0, 503, 506, + 535, 619, 620, 621, 300, 505, 623, 624, 625, 626, + 627, 628, 629, 622, 477, 567, 544, 570, 485, 547, + 546, 0, 0, 581, 501, 582, 583, 400, 401, 402, + 403, 360, 607, 321, 504, 427, 0, 568, 0, 0, + 0, 0, 0, 0, 0, 0, 573, 574, 571, 674, + 0, 630, 631, 0, 0, 498, 499, 355, 362, 517, + 364, 320, 415, 357, 483, 372, 0, 510, 575, 511, + 633, 636, 634, 635, 407, 367, 369, 442, 373, 383, + 430, 482, 413, 435, 318, 473, 444, 388, 561, 588, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 615, 614, 613, + 612, 611, 610, 609, 608, 0, 0, 558, 459, 334, + 289, 330, 331, 338, 663, 659, 464, 664, 0, 297, + 538, 381, 426, 354, 602, 603, 0, 654, 244, 245, + 246, 247, 248, 249, 250, 251, 290, 252, 253, 254, + 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, + 267, 268, 605, 259, 260, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 0, + 0, 0, 291, 292, 293, 294, 0, 0, 285, 286, + 287, 288, 0, 0, 0, 489, 490, 491, 513, 0, + 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, + 587, 598, 632, 0, 642, 643, 645, 647, 646, 649, + 449, 450, 655, 0, 651, 652, 653, 650, 385, 436, + 455, 443, 0, 667, 528, 529, 668, 638, 412, 0, + 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 347, 0, 0, 380, + 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, + 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, + 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 230, 865, 0, 0, 0, 0, + 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 304, 452, + 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, + 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, + 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, + 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, + 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, + 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, + 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, + 641, 0, 481, 0, 0, 0, 0, 0, 0, 451, + 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, + 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, + 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, + 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, + 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, + 441, 337, 301, 419, 462, 0, 358, 429, 390, 302, + 389, 420, 461, 460, 314, 488, 494, 495, 584, 0, + 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, + 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, + 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, + 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, + 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, + 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, + 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, + 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, + 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, + 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, + 300, 505, 623, 624, 625, 626, 627, 628, 629, 622, + 477, 567, 544, 570, 485, 547, 546, 0, 0, 581, + 501, 582, 583, 400, 401, 402, 403, 360, 607, 321, + 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, + 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, + 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, + 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, + 407, 367, 369, 442, 373, 383, 430, 482, 413, 435, + 318, 473, 444, 388, 561, 588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 283, 284, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, + 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, + 663, 659, 464, 664, 0, 297, 538, 381, 426, 354, + 602, 603, 0, 654, 244, 245, 246, 247, 248, 249, + 250, 251, 290, 252, 253, 254, 255, 256, 257, 258, + 261, 262, 263, 264, 265, 266, 267, 268, 605, 259, + 260, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 0, 0, 0, 291, 292, + 293, 294, 0, 0, 285, 286, 287, 288, 0, 0, + 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, + 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, + 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, + 651, 652, 653, 650, 385, 436, 455, 443, 0, 667, + 528, 529, 668, 638, 412, 0, 0, 543, 576, 565, + 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, + 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, + 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4148, 0, 0, + 230, 0, 0, 0, 0, 0, 0, 316, 231, 525, + 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, + 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, + 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, + 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, + 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, + 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, + 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, + 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 637, 0, 0, 641, 0, 481, 0, + 0, 0, 0, 0, 0, 451, 0, 0, 377, 0, + 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, + 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, + 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, + 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, + 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, + 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, + 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, + 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, + 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, + 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, + 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, + 349, 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, @@ -6506,8 +5230,8 @@ var yyAct = [...]int{ 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, - 1960, 0, 0, 316, 231, 525, 644, 527, 526, 0, + 0, 0, 0, 0, 0, 0, 230, 0, 0, 3910, + 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6535,73 +5259,270 @@ var yyAct = [...]int{ 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, + 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, + 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 477, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 0, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 244, 245, 246, 247, + 248, 249, 250, 251, 290, 252, 253, 254, 255, 256, + 257, 258, 261, 262, 263, 264, 265, 266, 267, 268, + 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, + 291, 292, 293, 294, 0, 0, 285, 286, 287, 288, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, + 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, + 0, 667, 528, 529, 668, 638, 412, 0, 0, 543, + 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 347, 0, 0, 380, 580, 562, + 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, + 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, + 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 2091, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 0, 0, 0, 0, 0, 0, 316, + 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, + 0, 0, 0, 0, 0, 0, 304, 452, 471, 317, + 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, + 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, + 409, 0, 468, 496, 341, 487, 0, 479, 308, 0, + 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, + 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, + 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, + 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 637, 0, 0, 641, 0, + 481, 0, 0, 0, 4059, 0, 0, 451, 0, 0, + 377, 0, 0, 0, 497, 0, 434, 414, 670, 0, + 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, + 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, + 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, + 433, 328, 363, 329, 299, 335, 333, 336, 441, 337, + 301, 419, 462, 0, 358, 429, 390, 302, 389, 420, + 461, 460, 314, 488, 494, 495, 584, 0, 500, 671, + 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, + 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, + 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, + 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, + 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, + 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, + 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, + 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, + 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, + 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, + 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, + 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, + 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, + 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, + 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, + 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, + 444, 388, 561, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, + 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, + 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, + 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, + 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, + 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, + 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, + 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, + 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, + 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, + 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, + 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, + 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, + 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, + 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, + 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1809, 0, 0, 230, 0, + 0, 0, 0, 0, 0, 316, 231, 525, 644, 527, + 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, + 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, + 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, + 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, + 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, + 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, + 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, + 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, + 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 637, 0, 0, 641, 0, 481, 0, 0, 0, + 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, + 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, + 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, + 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, + 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, + 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, + 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, + 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, + 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, + 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, + 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, + 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, + 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, + 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, + 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, + 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, + 564, 0, 591, 560, 595, 0, 534, 0, 503, 506, + 535, 619, 620, 621, 300, 505, 623, 624, 625, 626, + 627, 628, 629, 622, 477, 567, 544, 570, 485, 547, + 546, 0, 0, 581, 501, 582, 583, 400, 401, 402, + 403, 360, 607, 321, 504, 427, 0, 568, 0, 0, + 0, 0, 0, 0, 0, 0, 573, 574, 571, 674, + 0, 630, 631, 0, 0, 498, 499, 355, 362, 517, + 364, 320, 415, 357, 483, 372, 0, 510, 575, 511, + 633, 636, 634, 635, 407, 367, 369, 442, 373, 383, + 430, 482, 413, 435, 318, 473, 444, 388, 561, 588, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 615, 614, 613, + 612, 611, 610, 609, 608, 0, 0, 558, 459, 334, + 289, 330, 331, 338, 663, 659, 464, 664, 0, 297, + 538, 381, 426, 354, 602, 603, 0, 654, 244, 245, + 246, 247, 248, 249, 250, 251, 290, 252, 253, 254, + 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, + 267, 268, 605, 259, 260, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 0, + 0, 0, 291, 292, 293, 294, 0, 0, 285, 286, + 287, 288, 0, 0, 0, 489, 490, 491, 513, 0, + 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, + 587, 598, 632, 0, 642, 643, 645, 647, 646, 649, + 449, 450, 655, 0, 651, 652, 653, 650, 385, 436, + 455, 443, 0, 667, 528, 529, 668, 638, 412, 0, + 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 347, 0, 0, 380, + 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, + 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, + 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3925, 0, 230, 0, 0, 0, 0, 0, + 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 304, 452, + 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, + 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, + 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, + 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, + 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, + 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, + 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, + 641, 0, 481, 0, 0, 0, 0, 0, 0, 451, + 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, + 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, + 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, + 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, + 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, + 441, 337, 301, 419, 462, 0, 358, 429, 390, 302, + 389, 420, 461, 460, 314, 488, 494, 495, 584, 0, + 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, + 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, + 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, + 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, + 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, + 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, + 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, + 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, + 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, + 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, + 300, 505, 623, 624, 625, 626, 627, 628, 629, 622, + 477, 567, 544, 570, 485, 547, 546, 0, 0, 581, + 501, 582, 583, 400, 401, 402, 403, 360, 607, 321, + 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, + 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, + 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, + 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, + 407, 367, 369, 442, 373, 383, 430, 482, 413, 435, + 318, 473, 444, 388, 561, 588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 283, 284, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, + 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, + 663, 659, 464, 664, 0, 297, 538, 381, 426, 354, + 602, 603, 0, 654, 244, 245, 246, 247, 248, 249, + 250, 251, 290, 252, 253, 254, 255, 256, 257, 258, + 261, 262, 263, 264, 265, 266, 267, 268, 605, 259, + 260, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 0, 0, 0, 291, 292, + 293, 294, 0, 0, 285, 286, 287, 288, 0, 0, + 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, + 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, + 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, + 651, 652, 653, 650, 385, 436, 455, 443, 0, 667, + 528, 529, 668, 638, 412, 0, 0, 543, 576, 565, + 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, + 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, + 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 0, 0, 0, 0, 0, 0, 316, 231, 525, + 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, + 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, + 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, + 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, + 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, + 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, + 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, + 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 637, 0, 0, 641, 0, 481, 0, + 0, 0, 3834, 0, 0, 451, 0, 0, 377, 0, + 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, + 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, + 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, + 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, + 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, + 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, + 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, + 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, + 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, + 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, + 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, + 349, 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, @@ -6637,7 +5558,7 @@ var yyAct = [...]int{ 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 1579, + 0, 0, 0, 0, 0, 0, 230, 0, 0, 3298, 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6657,7 +5578,7 @@ var yyAct = [...]int{ 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 1996, 424, 298, 454, 344, 395, 313, 315, + 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, @@ -6666,73 +5587,270 @@ var yyAct = [...]int{ 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, + 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, + 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 477, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 0, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 244, 245, 246, 247, + 248, 249, 250, 251, 290, 252, 253, 254, 255, 256, + 257, 258, 261, 262, 263, 264, 265, 266, 267, 268, + 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, + 291, 292, 293, 294, 0, 0, 285, 286, 287, 288, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, + 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, + 0, 667, 528, 529, 668, 638, 412, 0, 0, 543, + 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 347, 0, 0, 380, 580, 562, + 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, + 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, + 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 0, 0, 0, 0, 0, 0, 316, + 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3317, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, + 0, 0, 0, 0, 0, 0, 304, 452, 471, 317, + 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, + 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, + 409, 0, 468, 496, 341, 487, 0, 479, 308, 0, + 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, + 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, + 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, + 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 637, 0, 0, 641, 0, + 481, 0, 0, 0, 0, 0, 0, 451, 0, 0, + 377, 0, 0, 0, 497, 0, 434, 414, 670, 0, + 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, + 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, + 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, + 433, 328, 363, 329, 299, 335, 333, 336, 441, 337, + 301, 419, 462, 0, 358, 429, 390, 302, 389, 420, + 461, 460, 314, 488, 494, 495, 584, 0, 500, 671, + 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, + 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, + 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, + 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, + 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, + 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, + 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, + 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, + 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, + 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, + 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, + 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, + 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, + 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, + 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, + 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, + 444, 388, 561, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, + 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, + 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, + 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, + 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, + 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, + 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, + 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, + 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, + 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, + 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, + 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, + 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, + 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2109, 0, 0, 230, 0, + 0, 0, 0, 0, 0, 316, 231, 525, 644, 527, + 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 1608, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, + 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, + 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, + 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, + 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, + 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, + 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, + 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, + 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 637, 0, 0, 641, 0, 481, 0, 0, 0, + 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, + 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, + 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, + 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, + 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, + 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, + 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, + 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, + 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, + 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, + 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, + 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, + 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, + 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, + 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, + 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, + 564, 0, 591, 560, 595, 0, 534, 0, 503, 506, + 535, 619, 620, 621, 300, 505, 623, 624, 625, 626, + 627, 628, 629, 622, 477, 567, 544, 570, 485, 547, + 546, 0, 0, 581, 501, 582, 583, 400, 401, 402, + 403, 360, 607, 321, 504, 427, 0, 568, 0, 0, + 0, 0, 0, 0, 0, 0, 573, 574, 571, 674, + 0, 630, 631, 0, 0, 498, 499, 355, 362, 517, + 364, 320, 415, 357, 483, 372, 0, 510, 575, 511, + 633, 636, 634, 635, 407, 367, 369, 442, 373, 383, + 430, 482, 413, 435, 318, 473, 444, 388, 561, 588, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 615, 614, 613, + 612, 611, 610, 609, 608, 0, 0, 558, 459, 334, + 289, 330, 331, 338, 663, 659, 464, 664, 0, 297, + 538, 381, 426, 354, 602, 603, 0, 654, 244, 245, + 246, 247, 248, 249, 250, 251, 290, 252, 253, 254, + 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, + 267, 268, 605, 259, 260, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 0, + 0, 0, 291, 292, 293, 294, 0, 0, 285, 286, + 287, 288, 0, 0, 0, 489, 490, 491, 513, 0, + 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, + 587, 598, 632, 0, 642, 643, 645, 647, 646, 649, + 449, 450, 655, 0, 651, 652, 653, 650, 385, 436, + 455, 443, 0, 667, 528, 529, 668, 638, 412, 0, + 0, 543, 576, 565, 648, 531, 0, 0, 3527, 0, + 0, 0, 0, 0, 0, 0, 347, 0, 0, 380, + 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, + 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, + 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, + 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 304, 452, + 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, + 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, + 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, + 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, + 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, + 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, + 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, + 641, 0, 481, 0, 0, 0, 0, 0, 0, 451, + 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, + 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, + 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, + 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, + 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, + 441, 337, 301, 419, 462, 0, 358, 429, 390, 302, + 389, 420, 461, 460, 314, 488, 494, 495, 584, 0, + 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, + 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, + 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, + 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, + 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, + 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, + 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, + 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, + 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, + 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, + 300, 505, 623, 624, 625, 626, 627, 628, 629, 622, + 477, 567, 544, 570, 485, 547, 546, 0, 0, 581, + 501, 582, 583, 400, 401, 402, 403, 360, 607, 321, + 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, + 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, + 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, + 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, + 407, 367, 369, 442, 373, 383, 430, 482, 413, 435, + 318, 473, 444, 388, 561, 588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 283, 284, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, + 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, + 663, 659, 464, 664, 0, 297, 538, 381, 426, 354, + 602, 603, 0, 654, 244, 245, 246, 247, 248, 249, + 250, 251, 290, 252, 253, 254, 255, 256, 257, 258, + 261, 262, 263, 264, 265, 266, 267, 268, 605, 259, + 260, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 0, 0, 0, 291, 292, + 293, 294, 0, 0, 285, 286, 287, 288, 0, 0, + 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, + 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, + 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, + 651, 652, 653, 650, 385, 436, 455, 443, 0, 667, + 528, 529, 668, 638, 412, 0, 0, 543, 576, 565, + 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, + 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, + 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 0, 0, 0, 0, 0, 0, 316, 231, 525, + 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3429, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, + 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, + 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, + 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, + 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, + 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, + 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, + 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 637, 0, 0, 641, 0, 481, 0, + 0, 0, 0, 0, 0, 451, 0, 0, 377, 0, + 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, + 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, + 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, + 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, + 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, + 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, + 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, + 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, + 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, + 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, + 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, + 349, 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, @@ -6763,7 +5881,7 @@ var yyAct = [...]int{ 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 681, 347, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, @@ -6774,7 +5892,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, @@ -6797,73 +5915,270 @@ var yyAct = [...]int{ 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, + 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, + 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 477, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 0, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 244, 245, 246, 247, + 248, 249, 250, 251, 290, 252, 253, 254, 255, 256, + 257, 258, 261, 262, 263, 264, 265, 266, 267, 268, + 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, + 291, 292, 293, 294, 0, 0, 285, 286, 287, 288, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, + 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, + 0, 667, 528, 529, 668, 638, 412, 0, 0, 543, + 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 347, 0, 0, 380, 580, 562, + 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, + 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, + 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 0, 0, 1579, 0, 0, 0, 316, + 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, + 0, 0, 0, 0, 0, 0, 304, 452, 471, 317, + 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, + 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, + 409, 0, 468, 496, 341, 487, 0, 479, 308, 0, + 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, + 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, + 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, + 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 637, 0, 0, 641, 0, + 481, 0, 0, 0, 0, 0, 0, 451, 0, 0, + 377, 0, 0, 0, 497, 0, 434, 414, 670, 0, + 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, + 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, + 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, + 433, 328, 363, 329, 299, 335, 333, 336, 441, 337, + 301, 419, 462, 0, 358, 429, 390, 302, 389, 420, + 461, 460, 314, 488, 494, 495, 584, 0, 500, 671, + 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, + 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, + 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, + 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, + 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, + 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, + 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, + 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, + 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, + 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, + 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, + 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, + 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, + 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, + 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, + 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, + 444, 388, 561, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, + 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, + 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, + 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, + 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, + 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, + 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, + 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, + 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, + 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, + 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, + 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, + 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, + 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, + 0, 2583, 0, 0, 0, 316, 231, 525, 644, 527, + 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 691, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, + 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, + 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, + 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, + 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, + 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, + 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, + 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, + 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 637, 0, 0, 641, 0, 481, 0, 0, 0, + 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, + 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, + 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, + 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, + 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, + 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, + 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, + 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, + 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, + 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, + 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, + 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, + 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, + 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, + 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, + 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, + 564, 0, 591, 560, 595, 0, 534, 0, 503, 506, + 535, 619, 620, 621, 300, 505, 623, 624, 625, 626, + 627, 628, 629, 622, 477, 567, 544, 570, 485, 547, + 546, 0, 0, 581, 501, 582, 583, 400, 401, 402, + 403, 360, 607, 321, 504, 427, 0, 568, 0, 0, + 0, 0, 0, 0, 0, 0, 573, 574, 571, 674, + 0, 630, 631, 0, 0, 498, 499, 355, 362, 517, + 364, 320, 415, 357, 483, 372, 0, 510, 575, 511, + 633, 636, 634, 635, 407, 367, 369, 442, 373, 383, + 430, 482, 413, 435, 318, 473, 444, 388, 561, 588, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 615, 614, 613, + 612, 611, 610, 609, 608, 0, 0, 558, 459, 334, + 289, 330, 331, 338, 663, 659, 464, 664, 0, 297, + 538, 381, 426, 354, 602, 603, 0, 654, 244, 245, + 246, 247, 248, 249, 250, 251, 290, 252, 253, 254, + 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, + 267, 268, 605, 259, 260, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 0, + 0, 0, 291, 292, 293, 294, 0, 0, 285, 286, + 287, 288, 0, 0, 0, 489, 490, 491, 513, 0, + 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, + 587, 598, 632, 0, 642, 643, 645, 647, 646, 649, + 449, 450, 655, 0, 651, 652, 653, 650, 385, 436, + 455, 443, 0, 667, 528, 529, 668, 638, 412, 0, + 0, 543, 576, 565, 648, 531, 0, 0, 2961, 0, + 0, 0, 0, 0, 0, 0, 347, 0, 0, 380, + 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, + 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, + 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, + 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 304, 452, + 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, + 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, + 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, + 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, + 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, + 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, + 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, + 641, 0, 481, 0, 0, 0, 0, 0, 0, 451, + 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, + 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, + 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, + 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, + 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, + 441, 337, 301, 419, 462, 0, 358, 429, 390, 302, + 389, 420, 461, 460, 314, 488, 494, 495, 584, 0, + 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, + 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, + 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, + 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, + 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, + 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, + 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, + 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, + 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, + 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, + 300, 505, 623, 624, 625, 626, 627, 628, 629, 622, + 477, 567, 544, 570, 485, 547, 546, 0, 0, 581, + 501, 582, 583, 400, 401, 402, 403, 360, 607, 321, + 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, + 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, + 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, + 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, + 407, 367, 369, 442, 373, 383, 430, 482, 413, 435, + 318, 473, 444, 388, 561, 588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 283, 284, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, + 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, + 663, 659, 464, 664, 0, 297, 538, 381, 426, 354, + 602, 603, 0, 654, 244, 245, 246, 247, 248, 249, + 250, 251, 290, 252, 253, 254, 255, 256, 257, 258, + 261, 262, 263, 264, 265, 266, 267, 268, 605, 259, + 260, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 0, 0, 0, 291, 292, + 293, 294, 0, 0, 285, 286, 287, 288, 0, 0, + 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, + 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, + 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, + 651, 652, 653, 650, 385, 436, 455, 443, 0, 667, + 528, 529, 668, 638, 412, 0, 0, 543, 576, 565, + 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, + 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, + 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 0, 0, 2823, 0, 0, 0, 316, 231, 525, + 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, + 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, + 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, + 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, + 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, + 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, + 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, + 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 637, 0, 0, 641, 0, 481, 0, + 0, 0, 0, 0, 0, 451, 0, 0, 377, 0, + 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, + 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, + 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, + 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, + 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, + 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, + 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, + 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, + 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, + 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, + 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, + 349, 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, @@ -6905,7 +6220,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, @@ -6928,73 +6243,270 @@ var yyAct = [...]int{ 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, + 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, + 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 477, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 0, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 244, 245, 246, 247, + 248, 249, 250, 251, 290, 252, 253, 254, 255, 256, + 257, 258, 261, 262, 263, 264, 265, 266, 267, 268, + 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, + 291, 292, 293, 294, 0, 0, 285, 286, 287, 288, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, + 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, + 0, 667, 528, 529, 668, 638, 412, 0, 0, 543, + 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 347, 0, 0, 380, 580, 562, + 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, + 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, + 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 992, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 0, 0, 2701, 0, 0, 0, 316, + 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, + 0, 0, 0, 0, 0, 0, 304, 452, 471, 317, + 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, + 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, + 409, 0, 468, 496, 341, 487, 0, 479, 308, 0, + 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, + 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, + 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, + 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 637, 0, 0, 641, 0, + 481, 0, 0, 0, 0, 0, 0, 451, 0, 0, + 377, 0, 0, 0, 497, 0, 434, 414, 670, 0, + 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, + 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, + 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, + 433, 328, 363, 329, 299, 335, 333, 336, 441, 337, + 301, 419, 462, 0, 358, 429, 390, 302, 389, 420, + 461, 460, 314, 488, 494, 495, 584, 0, 500, 671, + 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, + 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, + 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, + 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, + 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, + 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, + 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, + 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, + 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, + 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, + 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, + 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, + 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, + 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, + 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, + 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, + 444, 388, 561, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, + 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, + 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, + 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, + 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, + 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, + 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, + 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, + 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, + 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, + 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, + 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, + 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, + 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, + 0, 0, 0, 0, 0, 316, 231, 525, 644, 527, + 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2663, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, + 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, + 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, + 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, + 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, + 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, + 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, + 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, + 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 637, 0, 0, 641, 0, 481, 0, 0, 0, + 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, + 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, + 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, + 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, + 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, + 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, + 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, + 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, + 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, + 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, + 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, + 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, + 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, + 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, + 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, + 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, + 564, 0, 591, 560, 595, 0, 534, 0, 503, 506, + 535, 619, 620, 621, 300, 505, 623, 624, 625, 626, + 627, 628, 629, 622, 477, 567, 544, 570, 485, 547, + 546, 0, 0, 581, 501, 582, 583, 400, 401, 402, + 403, 360, 607, 321, 504, 427, 0, 568, 0, 0, + 0, 0, 0, 0, 0, 0, 573, 574, 571, 674, + 0, 630, 631, 0, 0, 498, 499, 355, 362, 517, + 364, 320, 415, 357, 483, 372, 0, 510, 575, 511, + 633, 636, 634, 635, 407, 367, 369, 442, 373, 383, + 430, 482, 413, 435, 318, 473, 444, 388, 561, 588, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 615, 614, 613, + 612, 611, 610, 609, 608, 0, 0, 558, 459, 334, + 289, 330, 331, 338, 663, 659, 464, 664, 0, 297, + 538, 381, 426, 354, 602, 603, 0, 654, 244, 245, + 246, 247, 248, 249, 250, 251, 290, 252, 253, 254, + 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, + 267, 268, 605, 259, 260, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 0, + 0, 0, 291, 292, 293, 294, 0, 0, 285, 286, + 287, 288, 0, 0, 0, 489, 490, 491, 513, 0, + 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, + 587, 598, 632, 0, 642, 643, 645, 647, 646, 649, + 449, 450, 655, 0, 651, 652, 653, 650, 385, 436, + 455, 443, 0, 667, 528, 529, 668, 638, 412, 0, + 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 347, 0, 0, 380, + 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, + 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, + 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 230, 0, 0, 2661, 0, 0, + 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 304, 452, + 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, + 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, + 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, + 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, + 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, + 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, + 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, + 641, 0, 481, 0, 0, 0, 0, 0, 0, 451, + 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, + 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, + 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, + 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, + 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, + 441, 337, 301, 419, 462, 0, 358, 429, 390, 302, + 389, 420, 461, 460, 314, 488, 494, 495, 584, 0, + 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, + 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, + 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, + 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, + 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, + 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, + 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, + 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, + 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, + 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, + 300, 505, 623, 624, 625, 626, 627, 628, 629, 622, + 477, 567, 544, 570, 485, 547, 546, 0, 0, 581, + 501, 582, 583, 400, 401, 402, 403, 360, 607, 321, + 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, + 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, + 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, + 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, + 407, 367, 369, 442, 373, 383, 430, 482, 413, 435, + 318, 473, 444, 388, 561, 588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 283, 284, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, + 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, + 663, 659, 464, 664, 0, 297, 538, 381, 426, 354, + 602, 603, 0, 654, 244, 245, 246, 247, 248, 249, + 250, 251, 290, 252, 253, 254, 255, 256, 257, 258, + 261, 262, 263, 264, 265, 266, 267, 268, 605, 259, + 260, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 0, 0, 0, 291, 292, + 293, 294, 0, 0, 285, 286, 287, 288, 0, 0, + 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, + 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, + 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, + 651, 652, 653, 650, 385, 436, 455, 443, 2428, 667, + 528, 529, 668, 638, 412, 0, 0, 543, 576, 565, + 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, + 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, + 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 0, 0, 0, 0, 0, 0, 316, 231, 525, + 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, + 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, + 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, + 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, + 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, + 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, + 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, + 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 637, 0, 0, 641, 0, 481, 0, + 0, 0, 0, 0, 0, 451, 0, 0, 377, 0, + 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, + 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, + 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, + 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, + 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, + 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, + 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, + 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, + 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, + 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, + 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, + 349, 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, @@ -7031,7 +6543,7 @@ var yyAct = [...]int{ 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, + 1960, 0, 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7053,79 +6565,276 @@ var yyAct = [...]int{ 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 3243, + 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, + 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, + 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 477, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 0, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 244, 245, 246, 247, + 248, 249, 250, 251, 290, 252, 253, 254, 255, 256, + 257, 258, 261, 262, 263, 264, 265, 266, 267, 268, + 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, + 291, 292, 293, 294, 0, 0, 285, 286, 287, 288, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, + 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, + 0, 667, 528, 529, 668, 638, 412, 0, 0, 543, + 576, 565, 648, 531, 0, 2091, 0, 0, 0, 0, + 0, 0, 0, 0, 347, 0, 0, 380, 580, 562, + 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, + 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, + 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 0, 0, 0, 0, 0, 0, 316, + 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, + 0, 0, 0, 0, 0, 0, 304, 452, 471, 317, + 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, + 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, + 409, 0, 468, 496, 341, 487, 0, 479, 308, 0, + 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, + 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, + 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, + 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 637, 0, 0, 641, 0, + 481, 0, 0, 0, 0, 0, 0, 451, 0, 0, + 377, 0, 0, 0, 497, 0, 434, 414, 670, 0, + 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, + 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, + 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, + 433, 328, 363, 329, 299, 335, 333, 336, 441, 337, + 301, 419, 462, 0, 358, 429, 390, 302, 389, 420, + 461, 460, 314, 488, 494, 495, 584, 0, 500, 671, + 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, + 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, + 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, + 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, + 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, + 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, + 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, + 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, + 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, + 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, + 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, + 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, + 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, + 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, + 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, + 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, + 444, 388, 561, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, + 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, + 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, + 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, + 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, + 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, + 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, + 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, + 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, + 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, + 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, + 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, + 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, + 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, + 0, 1579, 0, 0, 0, 316, 231, 525, 644, 527, + 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 1946, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, + 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, + 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, + 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, + 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, + 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, + 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, + 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, + 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 637, 0, 0, 641, 0, 481, 0, 0, 0, + 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, + 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, + 423, 472, 453, 480, 1996, 424, 298, 454, 344, 395, + 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, + 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, + 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, + 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, + 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, + 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, + 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, + 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, + 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, + 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, + 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, + 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, + 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, + 564, 0, 591, 560, 595, 0, 534, 0, 503, 506, + 535, 619, 620, 621, 300, 505, 623, 624, 625, 626, + 627, 628, 629, 622, 477, 567, 544, 570, 485, 547, + 546, 0, 0, 581, 501, 582, 583, 400, 401, 402, + 403, 360, 607, 321, 504, 427, 0, 568, 0, 0, + 0, 0, 0, 0, 0, 0, 573, 574, 571, 674, + 0, 630, 631, 0, 0, 498, 499, 355, 362, 517, + 364, 320, 415, 357, 483, 372, 0, 510, 575, 511, + 633, 636, 634, 635, 407, 367, 369, 442, 373, 383, + 430, 482, 413, 435, 318, 473, 444, 388, 561, 588, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 615, 614, 613, + 612, 611, 610, 609, 608, 0, 0, 558, 459, 334, + 289, 330, 331, 338, 663, 659, 464, 664, 0, 297, + 538, 381, 426, 354, 602, 603, 0, 654, 244, 245, + 246, 247, 248, 249, 250, 251, 290, 252, 253, 254, + 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, + 267, 268, 605, 259, 260, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 0, + 0, 0, 291, 292, 293, 294, 0, 0, 285, 286, + 287, 288, 0, 0, 0, 489, 490, 491, 513, 0, + 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, + 587, 598, 632, 0, 642, 643, 645, 647, 646, 649, + 449, 450, 655, 0, 651, 652, 653, 650, 385, 436, + 455, 443, 0, 667, 528, 529, 668, 638, 412, 0, + 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 347, 0, 0, 380, + 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, + 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, + 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, + 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 304, 452, + 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, + 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, + 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, + 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, + 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, + 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, + 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, + 641, 0, 481, 0, 0, 1608, 0, 0, 0, 451, + 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, + 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, + 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, + 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, + 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, + 441, 337, 301, 419, 462, 0, 358, 429, 390, 302, + 389, 420, 461, 460, 314, 488, 494, 495, 584, 0, + 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, + 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, + 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, + 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, + 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, + 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, + 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, + 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, + 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, + 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, + 300, 505, 623, 624, 625, 626, 627, 628, 629, 622, + 477, 567, 544, 570, 485, 547, 546, 0, 0, 581, + 501, 582, 583, 400, 401, 402, 403, 360, 607, 321, + 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, + 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, + 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, + 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, + 407, 367, 369, 442, 373, 383, 430, 482, 413, 435, + 318, 473, 444, 388, 561, 588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 283, 284, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, + 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, + 663, 659, 464, 664, 0, 297, 538, 381, 426, 354, + 602, 603, 0, 654, 244, 245, 246, 247, 248, 249, + 250, 251, 290, 252, 253, 254, 255, 256, 257, 258, + 261, 262, 263, 264, 265, 266, 267, 268, 605, 259, + 260, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 0, 0, 0, 291, 292, + 293, 294, 0, 0, 285, 286, 287, 288, 0, 0, + 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, + 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, + 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, + 651, 652, 653, 650, 385, 436, 455, 443, 0, 667, + 528, 529, 668, 638, 412, 0, 0, 543, 576, 565, + 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 681, 347, 0, 0, 380, 580, 562, 572, 563, + 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, + 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 0, 0, 0, 0, 0, 0, 316, 231, 525, + 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, + 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, + 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, + 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, + 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, + 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, + 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, + 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 637, 0, 0, 641, 0, 481, 0, + 0, 0, 0, 0, 0, 451, 0, 0, 377, 0, + 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, + 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, + 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, + 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, + 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, + 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, + 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, + 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, + 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, + 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, + 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, + 349, 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, @@ -7170,7 +6879,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 1558, 317, 440, 484, 322, 448, 463, 312, + 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, @@ -7178,7 +6887,7 @@ var yyAct = [...]int{ 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, + 0, 691, 641, 0, 481, 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, 313, 315, @@ -7190,73 +6899,270 @@ var yyAct = [...]int{ 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, + 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, + 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 477, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 0, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 244, 245, 246, 247, + 248, 249, 250, 251, 290, 252, 253, 254, 255, 256, + 257, 258, 261, 262, 263, 264, 265, 266, 267, 268, + 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, + 291, 292, 293, 294, 0, 0, 285, 286, 287, 288, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, + 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, + 0, 667, 528, 529, 668, 638, 412, 0, 0, 543, + 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 347, 0, 0, 380, 580, 562, + 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, + 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, + 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 0, 0, 0, 0, 0, 0, 316, + 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, + 0, 0, 0, 0, 0, 0, 304, 452, 471, 317, + 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, + 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, + 409, 0, 468, 496, 341, 487, 0, 479, 308, 0, + 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, + 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, + 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, + 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 637, 0, 0, 641, 0, + 481, 0, 0, 0, 0, 0, 0, 451, 0, 0, + 377, 0, 0, 0, 497, 0, 434, 414, 670, 0, + 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, + 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, + 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, + 433, 328, 363, 329, 299, 335, 333, 336, 441, 337, + 301, 419, 462, 0, 358, 429, 390, 302, 389, 420, + 461, 460, 314, 488, 494, 495, 584, 0, 500, 671, + 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, + 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, + 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, + 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, + 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, + 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, + 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, + 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, + 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, + 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, + 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, + 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, + 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, + 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, + 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, + 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, + 444, 388, 561, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 615, 614, 613, 612, 611, 610, 609, 608, 992, + 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, + 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, + 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, + 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, + 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, + 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, + 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, + 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, + 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, + 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, + 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, + 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, + 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, + 0, 0, 0, 0, 0, 316, 231, 525, 644, 527, + 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, + 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, + 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, + 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, + 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, + 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, + 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, + 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, + 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 637, 0, 0, 641, 0, 481, 0, 0, 0, + 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, + 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, + 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, + 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, + 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, + 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, + 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, + 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, + 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, + 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, + 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, + 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, + 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, + 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, + 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, + 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, + 564, 0, 591, 560, 595, 0, 534, 0, 503, 506, + 535, 619, 620, 621, 300, 505, 623, 624, 625, 626, + 627, 628, 629, 622, 477, 567, 544, 570, 485, 547, + 546, 0, 0, 581, 501, 582, 583, 400, 401, 402, + 403, 360, 607, 321, 504, 427, 0, 568, 0, 0, + 0, 0, 0, 0, 0, 0, 573, 574, 571, 674, + 0, 630, 631, 0, 0, 498, 499, 355, 362, 517, + 364, 320, 415, 357, 483, 372, 0, 510, 575, 511, + 633, 636, 634, 635, 407, 367, 369, 442, 373, 383, + 430, 482, 413, 435, 318, 473, 444, 388, 561, 588, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 615, 614, 613, + 612, 611, 610, 609, 608, 0, 0, 558, 459, 334, + 289, 330, 331, 338, 663, 659, 464, 664, 0, 297, + 538, 381, 426, 354, 602, 603, 0, 654, 244, 245, + 246, 247, 248, 249, 250, 251, 290, 252, 253, 254, + 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, + 267, 268, 605, 259, 260, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 0, + 0, 0, 291, 292, 293, 294, 0, 0, 285, 286, + 287, 288, 0, 0, 0, 489, 490, 491, 513, 0, + 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, + 587, 598, 632, 0, 642, 643, 645, 647, 646, 649, + 449, 450, 655, 0, 651, 652, 653, 650, 385, 436, + 455, 443, 0, 667, 528, 529, 668, 638, 412, 0, + 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 347, 0, 0, 380, + 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, + 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, + 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, + 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 304, 452, + 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, + 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, + 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, + 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, + 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, + 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, + 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, + 641, 0, 481, 0, 0, 0, 0, 0, 0, 451, + 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, + 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, + 428, 424, 298, 454, 344, 395, 313, 315, 660, 346, + 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, + 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, + 441, 337, 301, 419, 462, 0, 358, 3243, 390, 302, + 389, 420, 461, 460, 314, 488, 494, 495, 584, 0, + 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, + 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, + 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, + 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, + 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, + 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, + 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, + 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, + 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, + 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, + 300, 505, 623, 624, 625, 626, 627, 628, 629, 622, + 477, 567, 544, 570, 485, 547, 546, 0, 0, 581, + 501, 582, 583, 400, 401, 402, 403, 360, 607, 321, + 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, + 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, + 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, + 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, + 407, 367, 369, 442, 373, 383, 430, 482, 413, 435, + 318, 473, 444, 388, 561, 588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 283, 284, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, + 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, + 663, 659, 464, 664, 0, 297, 538, 381, 426, 354, + 602, 603, 0, 654, 244, 245, 246, 247, 248, 249, + 250, 251, 290, 252, 253, 254, 255, 256, 257, 258, + 261, 262, 263, 264, 265, 266, 267, 268, 605, 259, + 260, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 0, 0, 0, 291, 292, + 293, 294, 0, 0, 285, 286, 287, 288, 0, 0, + 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, + 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, + 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, + 651, 652, 653, 650, 385, 436, 455, 443, 0, 667, + 528, 529, 668, 638, 412, 0, 0, 543, 576, 565, + 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, + 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, + 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 0, 0, 0, 0, 0, 0, 316, 231, 525, + 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 1556, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 660, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, + 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, + 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, + 322, 448, 1946, 312, 411, 437, 0, 0, 306, 469, + 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, + 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, + 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, + 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, + 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 637, 0, 0, 641, 0, 481, 0, + 0, 0, 0, 0, 0, 451, 0, 0, 377, 0, + 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, + 382, 466, 423, 472, 453, 480, 428, 424, 298, 454, + 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, + 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, + 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, + 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, + 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, + 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, + 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, + 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, + 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, + 349, 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, @@ -7301,7 +7207,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 1435, 312, + 304, 452, 1558, 317, 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, @@ -7321,79 +7227,276 @@ var yyAct = [...]int{ 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 629, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 284, + 0, 493, 378, 379, 0, 350, 349, 391, 303, 0, + 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, + 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, + 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, + 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, + 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, + 620, 621, 300, 505, 623, 624, 625, 626, 627, 628, + 629, 622, 477, 567, 544, 570, 485, 547, 546, 0, + 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, + 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 574, 571, 674, 0, 630, + 631, 0, 0, 498, 499, 355, 362, 517, 364, 320, + 415, 357, 483, 372, 0, 510, 575, 511, 633, 636, + 634, 635, 407, 367, 369, 442, 373, 383, 430, 482, + 413, 435, 318, 473, 444, 388, 561, 588, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 615, 614, 613, 612, 611, + 610, 609, 608, 0, 0, 558, 459, 334, 289, 330, + 331, 338, 663, 659, 464, 664, 0, 297, 538, 381, + 426, 354, 602, 603, 0, 654, 244, 245, 246, 247, + 248, 249, 250, 251, 290, 252, 253, 254, 255, 256, + 257, 258, 261, 262, 263, 264, 265, 266, 267, 268, + 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, + 291, 292, 293, 294, 0, 0, 285, 286, 287, 288, + 0, 0, 0, 489, 490, 491, 513, 0, 475, 537, + 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, + 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, + 655, 0, 651, 652, 653, 650, 385, 436, 455, 443, + 0, 667, 528, 529, 668, 638, 412, 0, 0, 543, + 576, 565, 648, 531, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 347, 0, 0, 380, 580, 562, + 572, 563, 548, 549, 550, 557, 359, 551, 552, 553, + 523, 554, 524, 555, 556, 0, 579, 530, 445, 396, + 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 0, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 412, 0, 0, 543, 576, - 565, 648, 531, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 380, 580, 562, 572, - 563, 548, 549, 550, 557, 359, 551, 552, 553, 523, - 554, 524, 555, 556, 0, 579, 530, 445, 396, 0, - 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 230, 0, 0, 0, 0, 0, 0, 316, + 231, 525, 644, 527, 526, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 446, 474, 0, 486, 0, 370, 371, 0, + 0, 0, 0, 0, 0, 0, 304, 452, 1556, 317, + 440, 484, 322, 448, 463, 312, 411, 437, 0, 0, + 306, 469, 447, 393, 305, 0, 431, 345, 361, 342, + 409, 0, 468, 496, 341, 487, 0, 479, 308, 0, + 478, 408, 465, 470, 394, 387, 0, 307, 467, 392, + 386, 374, 351, 512, 375, 376, 365, 421, 384, 422, + 366, 398, 397, 399, 0, 0, 0, 0, 0, 507, + 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 637, 0, 0, 641, 0, + 481, 0, 0, 0, 0, 0, 0, 451, 0, 0, + 377, 0, 0, 0, 497, 0, 434, 414, 670, 0, + 0, 432, 382, 466, 423, 472, 453, 480, 428, 424, + 298, 454, 344, 395, 313, 315, 660, 346, 348, 352, + 353, 404, 405, 418, 439, 456, 457, 458, 343, 327, + 433, 328, 363, 329, 299, 335, 333, 336, 441, 337, + 301, 419, 462, 0, 358, 429, 390, 302, 389, 420, + 461, 460, 314, 488, 494, 495, 584, 0, 500, 671, + 672, 673, 509, 0, 425, 310, 309, 0, 0, 0, + 339, 323, 325, 326, 324, 417, 514, 515, 516, 518, + 519, 520, 521, 585, 601, 569, 539, 502, 593, 536, + 540, 541, 368, 604, 0, 0, 0, 493, 378, 379, + 0, 350, 349, 391, 303, 0, 356, 295, 296, 666, + 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, + 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, + 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, + 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, + 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, + 623, 624, 625, 626, 627, 628, 629, 622, 477, 567, + 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, + 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, + 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, + 573, 574, 571, 674, 0, 630, 631, 0, 0, 498, + 499, 355, 362, 517, 364, 320, 415, 357, 483, 372, + 0, 510, 575, 511, 633, 636, 634, 635, 407, 367, + 369, 442, 373, 383, 430, 482, 413, 435, 318, 473, + 444, 388, 561, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 283, 284, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 615, 614, 613, 612, 611, 610, 609, 608, 0, + 0, 558, 459, 334, 289, 330, 331, 338, 663, 659, + 464, 664, 0, 297, 538, 381, 426, 354, 602, 603, + 0, 654, 244, 245, 246, 247, 248, 249, 250, 251, + 290, 252, 253, 254, 255, 256, 257, 258, 261, 262, + 263, 264, 265, 266, 267, 268, 605, 259, 260, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, + 0, 0, 285, 286, 287, 288, 0, 0, 0, 489, + 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, + 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, + 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, + 653, 650, 385, 436, 455, 443, 0, 667, 528, 529, + 668, 638, 412, 0, 0, 543, 576, 565, 648, 531, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 347, 0, 0, 380, 580, 562, 572, 563, 548, 549, + 550, 557, 359, 551, 552, 553, 523, 554, 524, 555, + 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, + 0, 0, 0, 0, 0, 316, 231, 525, 644, 527, + 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 474, + 0, 486, 0, 370, 371, 0, 0, 0, 0, 0, + 0, 0, 304, 452, 471, 317, 440, 484, 322, 448, + 1435, 312, 411, 437, 0, 0, 306, 469, 447, 393, + 305, 0, 431, 345, 361, 342, 409, 0, 468, 496, + 341, 487, 0, 479, 308, 0, 478, 408, 465, 470, + 394, 387, 0, 307, 467, 392, 386, 374, 351, 512, + 375, 376, 365, 421, 384, 422, 366, 398, 397, 399, + 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 637, 0, 0, 641, 0, 481, 0, 0, 0, + 0, 0, 0, 451, 0, 0, 377, 0, 0, 0, + 497, 0, 434, 414, 670, 0, 0, 432, 382, 466, + 423, 472, 453, 480, 428, 424, 298, 454, 344, 395, + 313, 315, 660, 346, 348, 352, 353, 404, 405, 418, + 439, 456, 457, 458, 343, 327, 433, 328, 363, 329, + 299, 335, 333, 336, 441, 337, 301, 419, 462, 0, + 358, 429, 390, 302, 389, 420, 461, 460, 314, 488, + 494, 495, 584, 0, 500, 671, 672, 673, 509, 0, + 425, 310, 309, 0, 0, 0, 339, 323, 325, 326, + 324, 417, 514, 515, 516, 518, 519, 520, 521, 585, + 601, 569, 539, 502, 593, 536, 540, 541, 368, 604, + 0, 0, 0, 493, 378, 379, 0, 350, 349, 391, + 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, + 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, + 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, + 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, + 564, 0, 591, 560, 595, 0, 534, 0, 503, 506, + 535, 619, 620, 621, 300, 505, 623, 624, 625, 626, + 627, 628, 629, 622, 477, 567, 544, 570, 485, 547, + 546, 0, 0, 581, 501, 582, 583, 400, 401, 402, + 403, 360, 607, 321, 504, 427, 0, 568, 0, 0, + 0, 0, 0, 0, 0, 0, 573, 574, 571, 674, + 0, 630, 631, 0, 0, 498, 499, 355, 362, 517, + 364, 320, 415, 357, 483, 372, 0, 510, 575, 511, + 633, 636, 634, 635, 407, 367, 369, 442, 373, 383, + 430, 482, 413, 435, 318, 473, 444, 388, 561, 588, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 615, 614, 613, + 612, 611, 610, 609, 608, 0, 0, 558, 459, 334, + 289, 330, 331, 338, 663, 659, 464, 664, 0, 297, + 538, 381, 426, 354, 602, 603, 0, 654, 244, 245, + 246, 247, 248, 249, 250, 251, 290, 252, 253, 254, + 255, 256, 257, 258, 261, 262, 263, 264, 265, 266, + 267, 268, 605, 259, 260, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 0, + 0, 0, 291, 292, 293, 294, 0, 0, 285, 286, + 287, 288, 0, 0, 0, 489, 490, 491, 513, 0, + 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, + 587, 598, 632, 0, 642, 643, 645, 647, 646, 649, + 449, 450, 655, 0, 651, 652, 653, 650, 385, 436, + 455, 443, 0, 667, 528, 529, 668, 638, 412, 0, + 0, 543, 576, 565, 648, 531, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 347, 0, 0, 380, + 580, 562, 572, 563, 548, 549, 550, 557, 359, 551, + 552, 553, 523, 554, 524, 555, 556, 0, 579, 530, + 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, + 0, 316, 231, 525, 644, 527, 526, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 474, 0, 486, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 304, 452, + 471, 317, 440, 484, 322, 448, 463, 312, 411, 437, + 0, 0, 306, 469, 447, 393, 305, 0, 431, 345, + 361, 342, 409, 0, 468, 496, 341, 487, 0, 479, + 308, 0, 478, 408, 465, 470, 394, 387, 0, 307, + 467, 392, 386, 374, 351, 512, 375, 376, 365, 421, + 384, 422, 366, 398, 397, 399, 0, 0, 0, 0, + 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, + 641, 0, 481, 0, 0, 0, 0, 0, 0, 451, + 0, 0, 377, 0, 0, 0, 497, 0, 434, 414, + 670, 0, 0, 432, 382, 466, 423, 472, 453, 480, + 428, 424, 298, 454, 344, 395, 313, 315, 759, 346, + 348, 352, 353, 404, 405, 418, 439, 456, 457, 458, + 343, 327, 433, 328, 363, 329, 299, 335, 333, 336, + 441, 337, 301, 419, 462, 0, 358, 429, 390, 302, + 389, 420, 461, 460, 314, 488, 494, 495, 584, 0, + 500, 671, 672, 673, 509, 0, 425, 310, 309, 0, + 0, 0, 339, 323, 325, 326, 324, 417, 514, 515, + 516, 518, 519, 520, 521, 585, 601, 569, 539, 502, + 593, 536, 540, 541, 368, 604, 0, 0, 0, 493, + 378, 379, 0, 350, 349, 391, 303, 0, 356, 295, + 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, + 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, + 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, + 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, + 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, + 300, 505, 623, 624, 625, 626, 627, 628, 629, 622, + 477, 567, 544, 570, 485, 547, 546, 0, 0, 581, + 501, 582, 583, 400, 401, 402, 403, 360, 607, 321, + 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, + 0, 0, 573, 574, 571, 674, 0, 630, 631, 0, + 0, 498, 499, 355, 362, 517, 364, 320, 415, 357, + 483, 372, 0, 510, 575, 511, 633, 636, 634, 635, + 407, 367, 369, 442, 373, 383, 430, 482, 413, 435, + 318, 473, 444, 388, 561, 588, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 283, 284, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 615, 614, 613, 612, 611, 610, 609, + 608, 0, 0, 558, 459, 334, 289, 330, 331, 338, + 663, 659, 464, 664, 0, 297, 538, 381, 426, 354, + 602, 603, 0, 654, 244, 245, 246, 247, 248, 249, + 250, 251, 290, 252, 253, 254, 255, 256, 257, 258, + 261, 262, 263, 264, 265, 266, 267, 268, 605, 259, + 260, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 0, 0, 0, 291, 292, + 293, 294, 0, 0, 285, 286, 287, 288, 0, 0, + 0, 489, 490, 491, 513, 0, 475, 537, 661, 0, + 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, + 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, + 651, 652, 653, 650, 385, 436, 455, 443, 0, 667, + 528, 529, 668, 638, 412, 0, 0, 543, 576, 565, + 648, 531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 0, 0, 380, 580, 562, 572, 563, + 548, 549, 550, 557, 359, 551, 552, 553, 523, 554, + 524, 555, 556, 0, 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 230, 0, 0, 0, 0, 0, 0, 316, 231, - 525, 644, 527, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 0, 0, 0, 0, 0, 0, 316, 231, 525, + 644, 527, 526, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 474, 0, 486, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 304, 452, 471, 317, 440, - 484, 322, 448, 463, 312, 411, 437, 0, 0, 306, - 469, 447, 393, 305, 0, 431, 345, 361, 342, 409, - 0, 468, 496, 341, 487, 0, 479, 308, 0, 478, - 408, 465, 470, 394, 387, 0, 307, 467, 392, 386, - 374, 351, 512, 375, 376, 365, 421, 384, 422, 366, - 398, 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 637, 0, 0, 641, 0, 481, - 0, 0, 0, 0, 0, 0, 451, 0, 0, 377, - 0, 0, 0, 497, 0, 434, 414, 670, 0, 0, - 432, 382, 466, 423, 472, 453, 480, 428, 424, 298, - 454, 344, 395, 313, 315, 759, 346, 348, 352, 353, - 404, 405, 418, 439, 456, 457, 458, 343, 327, 433, - 328, 363, 329, 299, 335, 333, 336, 441, 337, 301, - 419, 462, 0, 358, 429, 390, 302, 389, 420, 461, - 460, 314, 488, 494, 495, 584, 0, 500, 671, 672, - 673, 509, 0, 425, 310, 309, 0, 0, 0, 339, - 323, 325, 326, 324, 417, 514, 515, 516, 518, 519, - 520, 521, 585, 601, 569, 539, 502, 593, 536, 540, - 541, 368, 604, 0, 0, 0, 493, 378, 379, 0, - 350, 349, 391, 303, 356, 295, 296, 666, 340, 410, + 446, 474, 0, 486, 0, 370, 371, 0, 0, 0, + 0, 0, 0, 0, 304, 452, 471, 317, 440, 484, + 322, 448, 463, 312, 411, 437, 0, 0, 306, 469, + 447, 393, 305, 0, 431, 345, 361, 342, 409, 0, + 468, 496, 341, 487, 0, 479, 308, 0, 478, 408, + 465, 470, 394, 387, 0, 307, 467, 392, 386, 374, + 351, 512, 375, 376, 365, 421, 384, 422, 366, 398, + 397, 399, 0, 0, 0, 0, 0, 507, 508, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 637, 0, 0, 641, 0, 481, 0, + 0, 0, 0, 0, 0, 451, 0, 0, 377, 0, + 0, 0, 497, 0, 434, 414, 670, 0, 0, 432, + 382, 466, 423, 472, 453, 480, 716, 424, 298, 454, + 344, 395, 313, 315, 660, 346, 348, 352, 353, 404, + 405, 418, 439, 456, 457, 458, 343, 327, 433, 328, + 363, 329, 299, 335, 333, 336, 441, 337, 301, 419, + 462, 0, 358, 429, 390, 302, 389, 420, 461, 460, + 314, 488, 494, 495, 584, 0, 500, 671, 672, 673, + 509, 0, 425, 310, 309, 0, 0, 0, 339, 323, + 325, 326, 324, 417, 514, 515, 516, 518, 519, 520, + 521, 585, 601, 569, 539, 502, 593, 536, 540, 541, + 368, 604, 0, 0, 0, 493, 378, 379, 0, 350, + 349, 391, 303, 0, 356, 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, 621, 300, 505, 623, 624, - 625, 626, 627, 628, 629, 622, 477, 567, 544, 570, + 625, 626, 627, 628, 717, 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, 0, 0, 0, 573, 574, @@ -7412,180 +7515,98 @@ var yyAct = [...]int{ 265, 266, 267, 268, 605, 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, 292, 293, 294, 0, 0, - 285, 286, 287, 288, 0, 0, 0, 489, 490, 491, + 285, 286, 287, 288, 0, 0, 2078, 489, 490, 491, 513, 0, 475, 537, 661, 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, 0, 651, 652, 653, 650, - 385, 436, 455, 443, 0, 667, 528, 529, 668, 638, - 412, 0, 0, 543, 576, 565, 648, 531, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, - 0, 380, 580, 562, 572, 563, 548, 549, 550, 557, - 359, 551, 552, 553, 523, 554, 524, 555, 556, 0, - 579, 530, 445, 396, 0, 596, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, - 0, 0, 0, 316, 231, 525, 644, 527, 526, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 474, 0, 486, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 304, 452, 471, 317, 440, 484, 322, 448, 463, 312, - 411, 437, 0, 0, 306, 469, 447, 393, 305, 0, - 431, 345, 361, 342, 409, 0, 468, 496, 341, 487, - 0, 479, 308, 0, 478, 408, 465, 470, 394, 387, - 0, 307, 467, 392, 386, 374, 351, 512, 375, 376, - 365, 421, 384, 422, 366, 398, 397, 399, 0, 0, - 0, 0, 0, 507, 508, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, - 0, 0, 641, 0, 481, 0, 0, 0, 0, 0, - 0, 451, 0, 0, 377, 0, 0, 0, 497, 0, - 434, 414, 670, 0, 0, 432, 382, 466, 423, 472, - 453, 480, 716, 424, 298, 454, 344, 395, 313, 315, - 660, 346, 348, 352, 353, 404, 405, 418, 439, 456, - 457, 458, 343, 327, 433, 328, 363, 329, 299, 335, - 333, 336, 441, 337, 301, 419, 462, 0, 358, 429, - 390, 302, 389, 420, 461, 460, 314, 488, 494, 495, - 584, 0, 500, 671, 672, 673, 509, 0, 425, 310, - 309, 0, 0, 0, 339, 323, 325, 326, 324, 417, - 514, 515, 516, 518, 519, 520, 521, 585, 601, 569, - 539, 502, 593, 536, 540, 541, 368, 604, 0, 0, - 0, 493, 378, 379, 0, 350, 349, 391, 303, 356, - 295, 296, 666, 340, 410, 606, 639, 640, 532, 0, - 594, 533, 542, 332, 566, 578, 577, 406, 492, 0, - 589, 592, 522, 665, 0, 586, 600, 669, 599, 662, - 416, 0, 438, 597, 545, 0, 590, 564, 0, 591, - 560, 595, 0, 534, 0, 503, 506, 535, 619, 620, - 621, 300, 505, 623, 624, 625, 626, 627, 628, 717, - 622, 477, 567, 544, 570, 485, 547, 546, 0, 0, - 581, 501, 582, 583, 400, 401, 402, 403, 360, 607, - 321, 504, 427, 0, 568, 0, 0, 0, 0, 0, - 0, 0, 0, 573, 574, 571, 674, 0, 630, 631, - 0, 0, 498, 499, 355, 362, 517, 364, 320, 415, - 357, 483, 372, 0, 510, 575, 511, 633, 636, 634, - 635, 407, 367, 369, 442, 373, 383, 430, 482, 413, - 435, 318, 473, 444, 388, 561, 588, 0, 0, 0, - 0, 0, 738, 737, 744, 734, 0, 0, 283, 284, - 0, 0, 0, 0, 0, 741, 742, 0, 743, 747, - 0, 0, 728, 0, 615, 614, 613, 612, 611, 610, - 609, 608, 752, 0, 558, 459, 334, 289, 330, 331, - 338, 663, 659, 464, 664, 0, 297, 538, 381, 426, - 354, 602, 603, 0, 654, 244, 245, 246, 247, 248, - 249, 250, 251, 290, 252, 253, 254, 255, 256, 257, - 258, 261, 262, 263, 264, 265, 266, 267, 268, 605, - 259, 260, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 0, 0, 0, 291, - 292, 293, 294, 0, 0, 285, 286, 287, 288, 0, - 0, 0, 489, 490, 491, 513, 0, 475, 537, 661, - 0, 0, 0, 0, 0, 0, 0, 587, 598, 632, - 0, 642, 643, 645, 647, 646, 649, 449, 450, 655, - 0, 651, 652, 653, 650, 385, 436, 455, 443, 0, - 667, 528, 529, 668, 638, 0, 0, 0, 2078, 0, - 0, 0, 0, 0, 0, 0, 171, 208, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3742, 0, 0, 0, 0, 0, 2080, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2078, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 729, 731, 730, 0, 0, 0, - 204, 0, 0, 0, 0, 736, 0, 2080, 0, 0, - 2055, 0, 0, 0, 0, 0, 0, 740, 2078, 0, - 0, 0, 0, 0, 755, 0, 0, 0, 0, 0, - 0, 733, 0, 0, 0, 0, 0, 0, 0, 0, + 385, 436, 455, 443, 2080, 667, 528, 529, 668, 638, + 0, 0, 0, 0, 0, 2078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3919, 0, 0, 0, 0, 2080, 0, 0, 0, - 0, 2055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2071, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3931, 0, + 0, 0, 0, 2080, 0, 0, 0, 0, 2055, 0, + 0, 0, 0, 0, 0, 2078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2078, 2071, + 0, 0, 0, 2080, 0, 0, 0, 2055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 735, - 739, 745, 0, 746, 748, 0, 0, 749, 750, 751, - 2059, 0, 753, 754, 0, 0, 2080, 0, 0, 0, - 0, 2065, 0, 0, 3890, 0, 0, 0, 2071, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2053, 2087, 0, 0, 2054, 2056, 2058, 0, 2060, - 2061, 2062, 2066, 2067, 2068, 2070, 2073, 2074, 2075, 0, - 0, 2059, 0, 0, 0, 0, 2063, 2072, 2064, 0, - 2055, 0, 2065, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2053, 2087, 0, 0, 2054, 2056, 2058, 0, - 2060, 2061, 2062, 2066, 2067, 2068, 2070, 2073, 2074, 2075, - 2059, 0, 0, 2079, 0, 0, 0, 2063, 2072, 2064, - 0, 2065, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2053, 2087, 0, 0, 2054, 2056, 2058, 2071, 2060, - 2061, 2062, 2066, 2067, 2068, 2070, 2073, 2074, 2075, 0, - 0, 0, 0, 2076, 2079, 732, 2063, 2072, 2064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2052, 0, 0, 0, 2051, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2069, 0, - 0, 0, 0, 2079, 2076, 0, 0, 2057, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2059, 2052, 0, 0, 0, 2051, 0, 0, 0, 0, - 0, 2065, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2069, - 0, 2053, 2087, 2076, 0, 2054, 2056, 2058, 2057, 2060, - 2061, 2062, 2066, 2067, 2068, 2070, 2073, 2074, 2075, 0, - 2052, 0, 0, 0, 2051, 0, 2063, 2072, 2064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2069, 0, - 0, 0, 0, 0, 0, 0, 0, 2057, 0, 0, + 0, 3902, 0, 0, 0, 2071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2059, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2065, + 0, 0, 0, 0, 0, 2071, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2053, + 2087, 0, 0, 2054, 2056, 2058, 0, 2060, 2061, 2062, + 2066, 2067, 2068, 2070, 2073, 2074, 2075, 2059, 0, 0, + 0, 0, 0, 0, 2063, 2072, 2064, 0, 2065, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2053, 2087, + 0, 0, 2054, 2056, 2058, 0, 2060, 2061, 2062, 2066, + 2067, 2068, 2070, 2073, 2074, 2075, 0, 2059, 0, 0, + 0, 2079, 0, 2063, 2072, 2064, 0, 0, 2065, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2053, 2087, + 0, 0, 2054, 2056, 2058, 0, 2060, 2061, 2062, 2066, + 2067, 2068, 2070, 2073, 2074, 2075, 0, 0, 0, 0, + 2079, 0, 2076, 2063, 2072, 2064, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2052, + 0, 0, 0, 2051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2076, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2069, 0, 0, + 2079, 2076, 0, 0, 0, 0, 2057, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2052, 0, + 0, 0, 2051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2052, 0, 0, 0, 2051, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2069, 0, 0, 0, + 0, 2076, 0, 0, 0, 2057, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2052, 0, + 0, 0, 2051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2069, 0, - 0, 0, 0, 0, 0, 0, 0, 2057, + 0, 0, 0, 0, 0, 0, 2069, 0, 0, 0, + 0, 0, 0, 0, 0, 2057, } var yyPact = [...]int{ - 4335, -1000, -1000, -1000, -342, 15955, -1000, -1000, -1000, -1000, + 361, -1000, -1000, -1000, -347, 16248, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 51380, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 51727, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 404, 51380, -339, 31730, 49415, -1000, -1000, 3151, - -1000, 50070, 17942, 51380, 505, 501, 51380, -1000, -1000, -1000, + -1000, -1000, 371, 51727, -343, 32047, 49759, -1000, -1000, 2731, + -1000, 50415, 18238, 51727, 503, 463, 51727, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 941, -1000, 55965, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 853, 4446, 55310, - 11997, -226, -1000, 1644, -49, 2671, 443, -210, -214, 491, - 1106, 1122, 1217, 1097, 51380, 1063, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 214, - 954, 50725, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 884, -1000, 56319, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 796, 4406, 55663, + 12284, -228, -1000, 1562, -40, 2646, 468, -213, -215, 441, + 1090, 1099, 1112, 1545, 51727, 1050, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 242, + 899, 51071, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 260, 249, 937, 954, - 23204, 67, 66, 1644, 3256, -128, 329, -1000, 1790, 4745, - 206, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 11997, 11997, 15955, -396, 15955, 11997, 51380, 51380, - -1000, -1000, -1000, -1000, -339, 50070, 853, 4446, 11997, 2671, - 443, -210, -214, 491, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 4502, 244, 881, 899, + 23508, 65, 64, 1562, 3083, -121, 227, -1000, 1767, 4308, + 204, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 12284, 12284, 16248, -393, 16248, 12284, 51727, 51727, + -1000, -1000, -1000, -1000, -343, 50415, 796, 4406, 12284, 2646, + 468, -213, -215, 441, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -128, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -121, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -7601,7 +7622,7 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 66, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 64, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -7619,434 +7640,434 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 5531, -1000, 1711, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 5480, -1000, 1628, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 2410, 3277, 1694, 2670, 804, - 49415, 51380, -1000, 131, 804, -1000, -1000, -1000, 1644, 3666, - -1000, 51380, 51380, 163, 1975, -1000, 559, 512, 477, 882, - 306, 1669, -1000, -1000, -1000, -1000, -1000, -1000, 676, 3589, - -1000, 51380, 51380, 3292, 51380, -1000, 2355, 751, -1000, 5614, - 3449, 1443, 959, 3308, -1000, -1000, 3276, -1000, 310, 409, - 228, 438, 394, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 299, -1000, 3498, -1000, -1000, 292, -1000, -1000, 284, -1000, - -1000, -1000, 64, -1000, -1000, -1000, -1000, -1000, -1000, -53, - -1000, -1000, 1215, 2205, 11997, 2943, -1000, 4100, 1746, -1000, - -1000, -1000, 7385, 14629, 14629, 14629, 14629, 51380, -1000, -1000, - 3105, 11997, 3275, 3273, 3272, 3265, -1000, -1000, -1000, -1000, - -1000, -1000, 3263, 1663, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 2108, -1000, -1000, -1000, 15287, -1000, 3262, - 3261, 3259, 3258, 3257, 3254, 3251, 3250, 3249, 3248, 3247, - 3240, 3238, 3237, 2926, 17276, 3236, 2666, 2665, 3234, 3233, - 3231, 2663, 3230, 3229, 3228, 2926, 2926, 3227, 3223, 3220, - 3219, 3213, 3211, 3210, 3208, 3206, 3205, 3199, 3197, 3194, - 3193, 3190, 3189, 3186, 3184, 3180, 3177, 3176, 3169, 3154, - 3152, 3146, 3144, 3140, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 2349, 3236, 1619, 2637, 740, + 49759, 51727, -1000, 144, 740, -1000, -1000, -1000, 1562, 3670, + -1000, 51727, 51727, 156, 1961, -1000, 631, 564, 478, 798, + 296, 1613, -1000, -1000, -1000, -1000, -1000, -1000, 625, 3610, + -1000, 51727, 51727, 3253, 51727, -1000, 2318, 703, -1000, 5567, + 3442, 1260, 931, 3262, -1000, -1000, 3234, -1000, 307, 217, + 300, 533, 369, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 273, -1000, 3512, -1000, -1000, 287, -1000, -1000, 268, -1000, + -1000, -1000, 63, -1000, -1000, -1000, -1000, -1000, -1000, -46, + -1000, -1000, 1182, 2099, 12284, 2150, -1000, 3783, 1732, -1000, + -1000, -1000, 7665, 14920, 14920, 14920, 14920, 51727, -1000, -1000, + 3034, 12284, 3233, 3232, 3227, 3223, -1000, -1000, -1000, -1000, + -1000, -1000, 3222, 1609, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 2101, -1000, -1000, -1000, 15579, -1000, 3208, + 3205, 3203, 3199, 3197, 3194, 3193, 3185, 3183, 3171, 3169, + 3168, 3166, 3165, 2870, 17571, 3164, 2635, 2629, 3163, 3159, + 3153, 2627, 3152, 3151, 3148, 2870, 2870, 3147, 3144, 3143, + 3126, 3125, 3124, 3122, 3120, 3119, 3114, 3113, 3110, 3109, + 3108, 3102, 3100, 3099, 3098, 3097, 3091, 3090, 3081, 3079, + 3078, 3073, 3072, 3068, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1427, -1000, - 3126, 3619, 2994, -1000, 3481, 3477, 3475, 3473, -276, 3124, - 2330, -1000, -1000, 107, 51380, 51380, 296, 51380, -297, 397, - -134, -135, -140, 883, -1000, 483, -1000, -1000, 1096, -1000, - 1045, 54655, 906, -1000, -1000, 51380, 850, 850, 850, 51380, - 180, 975, 850, 850, 850, 850, 850, 912, 850, 3516, - 935, 934, 933, 928, 850, -89, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1971, 1967, 3366, 1029, -1000, -1000, -1000, - -1000, 1466, 51380, -1000, 3029, 397, -325, 1792, 1792, 3570, - 3570, 3514, 3513, 764, 760, 755, 1792, 581, -1000, 1908, - 1908, 1908, 1908, 1792, 471, 782, 3520, 3520, 45, 1908, - 30, 1792, 1792, 30, 1792, 1792, -1000, 1883, 220, -283, - -1000, -1000, -1000, -1000, 1908, 1908, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 3493, 3491, 853, 853, 51380, 853, 178, - 51380, 853, 853, 853, 51380, 868, -329, -12, 54000, 53345, - 2430, 2355, 741, 739, 1483, 1989, -1000, 1819, 51380, 51380, - 1819, 1819, 26490, 25835, -1000, 51380, -1000, 3619, 2994, 2915, - 1575, 2913, 2994, -141, 397, 853, 853, 853, 853, 853, - 261, 853, 853, 853, 853, 853, 51380, 51380, 48760, 853, - 853, 853, 853, 10017, 1790, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 15955, 2055, - 2166, 205, -23, -314, 282, -1000, -1000, 51380, 3410, 1733, - -1000, -1000, -1000, 3012, -1000, 3014, 3014, 3014, 3014, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3014, - 3014, 3028, 3123, -1000, -1000, 3013, 3013, 3013, 3012, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1437, -1000, + 3067, 3644, 2933, -1000, 3496, 3491, 3488, 3481, -273, 3064, + 2276, -1000, -1000, 103, 51727, 51727, 295, 51727, -299, 407, + -128, -130, -132, 814, -1000, 484, -1000, -1000, 1039, -1000, + 1029, 55007, 858, -1000, -1000, 51727, 785, 785, 785, 51727, + 187, 830, 785, 785, 785, 785, 785, 843, 785, 3532, + 880, 879, 878, 874, 785, -74, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 1957, 1956, 3335, 998, -1000, -1000, -1000, + -1000, 1483, 51727, -1000, 2971, 407, -326, 1804, 1804, 3588, + 3588, 3527, 3524, 716, 715, 633, 1804, 544, -1000, 1948, + 1948, 1948, 1948, 1804, 470, 709, 3535, 3535, 82, 1948, + 30, 1804, 1804, 30, 1804, 1804, -1000, 1908, 206, -286, + -1000, -1000, -1000, -1000, 1948, 1948, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 3506, 3504, 796, 796, 51727, 796, 185, + 51727, 796, 796, 796, 51727, 805, -335, 2, 54351, 53695, + 2364, 2318, 667, 647, 1491, 1926, -1000, 1786, 51727, 51727, + 1786, 1786, 26799, 26143, -1000, 51727, -1000, 3644, 2933, 2863, + 1780, 2858, 2933, -133, 407, 796, 796, 796, 796, 796, + 249, 796, 796, 796, 796, 796, 51727, 51727, 49103, 796, + 796, 796, 796, 10301, 1767, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 16248, 2019, + 2198, 201, -23, -322, 294, -1000, -1000, 51727, 3400, 1709, + -1000, -1000, -1000, 2953, -1000, 2956, 2956, 2956, 2956, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2956, + 2956, 2968, 3058, -1000, -1000, 2955, 2955, 2955, 2953, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 3018, 3018, 3022, 3022, 3018, 51380, - 3612, -1000, -1000, 11997, 51380, 3442, 3191, 3114, 804, -1000, - -1000, 51380, 331, 3295, 3619, 3434, 3520, 3563, -1000, -1000, - 1658, 2328, 2661, -1000, 306, -1000, 552, 306, -1000, 588, - 588, 1794, -1000, 1131, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 51380, -53, 430, -1000, -1000, 2628, 3113, -1000, 624, - 1405, 1625, -1000, 229, 56477, 40900, 2355, 40900, 51380, -1000, - -1000, -1000, -1000, -1000, -1000, 59, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 2964, 2964, 2966, 2966, 2964, 51727, + 3634, -1000, -1000, 12284, 51727, 3424, 2788, 3054, 740, -1000, + -1000, 51727, 329, 2897, 3644, 3422, 3535, 3581, -1000, -1000, + 1603, 2275, 2626, -1000, 296, -1000, 510, 296, -1000, 602, + 602, 1805, -1000, 1339, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 51727, -46, 662, -1000, -1000, 2608, 3053, -1000, 622, + 1236, 1518, -1000, 274, 5605, 41231, 2318, 41231, 51727, -1000, + -1000, -1000, -1000, -1000, -1000, 46, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 326, -1000, 11997, 11997, 11997, 11997, 11997, -1000, 784, 13971, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 14629, 14629, 14629, - 14629, 14629, 14629, 14629, 14629, 14629, 14629, 14629, 14629, 3097, - 1953, 14629, 14629, 14629, 14629, 5334, 28455, 1575, 3187, 1477, - 318, 1746, 1746, 1746, 1746, 11997, -1000, 1988, 2205, 11997, - 11997, 11997, 11997, 35005, 51380, -1000, -1000, 3897, 11997, 11997, - 4105, 11997, 3471, 11997, 11997, 11997, 2910, 6059, 51380, 11997, - -1000, 2902, 2899, -1000, -1000, 2112, 11997, -1000, -1000, 11997, - -1000, -1000, 11997, 14629, 11997, -1000, 11997, 11997, 11997, -1000, - -1000, 254, 254, 3471, 3471, 3471, 1896, 11997, 11997, 3471, - 3471, 3471, 1893, 3471, 3471, 3471, 3471, 3471, 3471, 3471, - 3471, 3471, 3471, 3471, 2896, 2895, 2893, 11339, 3520, -226, - -1000, 9359, 3434, 3520, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -279, 3110, 51380, 2660, 2652, -354, - -355, 1135, -355, 1639, -1000, -301, 1086, 291, 51380, -1000, - -1000, 51380, 2326, 51380, 2324, 193, 187, 51380, 51380, -10, - 1103, 1050, 1053, -1000, -1000, 51380, 52690, -1000, 51380, 1993, - 51380, 51380, 3467, -1000, 51380, 51380, 850, 850, 850, -1000, - 46795, 40900, 51380, 51380, 2355, 51380, 51380, 51380, 850, 850, - 850, 850, 51380, -1000, 3381, 40900, 3374, 868, -1000, 51380, - 1466, 3465, 51380, -1000, -1000, -1000, -1000, 3570, 14629, 14629, - -1000, -1000, 11997, -1000, 230, 48105, 1908, 1792, 1792, -1000, - -1000, 51380, -1000, -1000, -1000, 1908, 51380, 1908, 1908, 3570, - 1908, -1000, -1000, -1000, 1792, 1792, -1000, -1000, 11997, -1000, - -1000, 1908, 1908, -1000, -1000, 3570, 51380, 57, 3570, 3570, - 42, -1000, -1000, -1000, 1792, 51380, 51380, 850, 51380, -1000, - 51380, 51380, -1000, -1000, 51380, 51380, 4872, 51380, 46795, 47450, - 3490, -1000, 40900, 51380, 51380, 1464, -1000, 905, 38280, -1000, - 51380, 1375, -1000, -2, -1000, -24, -12, 1819, -12, 1819, - 903, -1000, 608, 610, 24525, 547, 40900, 6717, -1000, -1000, - 1819, 1819, 6717, 6717, 1748, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1459, -1000, 275, 3520, -1000, -1000, -1000, -1000, - -1000, 2322, -308, 51380, 46795, 40900, 2355, 51380, 853, 51380, - 51380, 51380, 51380, 51380, -1000, 3109, 1637, -1000, 3448, 51380, - 51380, 51380, 51380, 1522, -1000, -1000, 21217, 1632, -1000, -1000, - 2014, -1000, 11997, 15955, -253, 11997, 15955, 15955, 11997, 15955, - -1000, 11997, 1552, -1000, -1000, -1000, -1000, 2321, -1000, 2318, - -1000, -1000, -1000, -1000, -1000, 2647, 2647, -1000, 2301, -1000, - -1000, -1000, -1000, 2297, -1000, -1000, 2295, -1000, -1000, -1000, - -1000, -167, 2886, 1215, -1000, 2641, 3307, -227, -1000, 22549, - 51380, 51380, 3191, -361, 1966, 1964, 1959, 3502, -1000, -227, - -1000, 21883, 51380, 3520, -1000, -232, 3434, 11997, 51380, -1000, - 3512, -1000, -1000, 306, -1000, -1000, -1000, 588, 384, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1631, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -129, -130, - 1451, -1000, 51380, -1000, -1000, 229, 40900, 43520, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1491, -1000, -1000, 176, -1000, - 901, 204, 1780, -1000, -1000, 181, 210, 166, 963, 2205, - -1000, 2023, 2023, 2009, -1000, 740, -1000, -1000, -1000, -1000, - 3105, -1000, -1000, -1000, 2785, 2765, -1000, 1827, 1827, 1716, - 1716, 1716, 1716, 1716, 2503, 2503, -1000, -1000, -1000, 7385, - 3097, 14629, 14629, 14629, 14629, 955, 955, 4028, 4238, -1000, - -1000, 1730, 1730, -1000, -1000, -1000, -1000, 11997, 190, 2001, - -1000, 11997, 2693, 1542, 2436, 1444, 1778, -1000, 3012, 11997, - 1591, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 302, -1000, 12284, 12284, 12284, 12284, 12284, -1000, 699, 14261, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 14920, 14920, 14920, + 14920, 14920, 14920, 14920, 14920, 14920, 14920, 14920, 14920, 3029, + 2012, 14920, 14920, 14920, 14920, 5342, 28767, 1780, 3403, 1490, + 317, 1732, 1732, 1732, 1732, 12284, -1000, 1983, 2099, 12284, + 12284, 12284, 12284, 35327, 51727, -1000, -1000, 5537, 12284, 12284, + 3967, 12284, 3473, 12284, 12284, 12284, 2853, 6337, 51727, 12284, + -1000, 2851, 2844, -1000, -1000, 2141, 12284, -1000, -1000, 12284, + -1000, -1000, 12284, 14920, 12284, -1000, 12284, 12284, 12284, -1000, + -1000, 2152, 2152, 3473, 3473, 3473, 1905, 12284, 12284, 3473, + 3473, 3473, 1873, 3473, 3473, 3473, 3473, 3473, 3473, 3473, + 3473, 3473, 3473, 3473, 2841, 2835, 2833, 11625, 3535, -228, + -1000, 9642, 3422, 3535, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -275, 3052, 51727, 2623, 2622, -356, + -357, 1104, -357, 1598, -1000, -300, 1068, 293, 51727, -1000, + -1000, 51727, 2274, 51727, 2273, 212, 211, 51727, 51727, -9, + 1086, 1034, 1042, -1000, -1000, 51727, 53039, -1000, 51727, 2010, + 51727, 51727, 3468, -1000, 51727, 51727, 785, 785, 785, -1000, + 47135, 41231, 51727, 51727, 2318, 51727, 51727, 51727, 785, 785, + 785, 785, 51727, -1000, 3362, 41231, 3342, 805, -1000, 51727, + 1483, 3467, 51727, -1000, -1000, -1000, -1000, 3588, 14920, 14920, + -1000, -1000, 12284, -1000, 208, 48447, 1948, 1804, 1804, -1000, + -1000, 51727, -1000, -1000, -1000, 1948, 51727, 1948, 1948, 3588, + 1948, -1000, -1000, -1000, 1804, 1804, -1000, -1000, 12284, -1000, + -1000, 1948, 1948, -1000, -1000, 3588, 51727, 35, 3588, 3588, + 24, -1000, -1000, -1000, 1804, 51727, 51727, 785, 51727, -1000, + 51727, 51727, -1000, -1000, 51727, 51727, 4837, 51727, 47135, 47791, + 3503, -1000, 41231, 51727, 51727, 1482, -1000, 853, 38607, -1000, + 51727, 1459, -1000, -5, -1000, -24, 2, 1786, 2, 1786, + 850, -1000, 616, 623, 24831, 542, 41231, 6996, -1000, -1000, + 1786, 1786, 6996, 6996, 1695, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1480, -1000, 245, 3535, -1000, -1000, -1000, -1000, + -1000, 2271, -316, 51727, 47135, 41231, 2318, 51727, 796, 51727, + 51727, 51727, 51727, 51727, -1000, 3048, 1595, -1000, 3434, 51727, + 51727, 51727, 51727, 1477, -1000, -1000, 21518, 1594, -1000, -1000, + 2002, -1000, 12284, 16248, -256, 12284, 16248, 16248, 12284, 16248, + -1000, 12284, 1611, -1000, -1000, -1000, -1000, 2269, -1000, 2260, + -1000, -1000, -1000, -1000, -1000, 2621, 2621, -1000, 2258, -1000, + -1000, -1000, -1000, 2256, -1000, -1000, 2255, -1000, -1000, -1000, + -1000, -161, 2832, 1182, -1000, 2618, 3261, -229, -1000, 22852, + 51727, 51727, 2788, -365, 1954, 1952, 1951, 3517, -1000, -229, + -1000, 22185, 51727, 3535, -1000, -234, 3422, 12284, 51727, -1000, + 3523, -1000, -1000, 296, -1000, -1000, -1000, 602, 375, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1591, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -122, -123, + 1478, -1000, 51727, -1000, -1000, 274, 41231, 43855, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1403, -1000, -1000, 171, -1000, + 845, 213, 1798, -1000, -1000, 189, 215, 151, 928, 2099, + -1000, 2029, 2029, 2030, -1000, 726, -1000, -1000, -1000, -1000, + 3034, -1000, -1000, -1000, 3288, 3595, -1000, 1751, 1751, 1705, + 1705, 1705, 1705, 1705, 1866, 1866, -1000, -1000, -1000, 7665, + 3029, 14920, 14920, 14920, 14920, 963, 963, 4184, 4150, -1000, + -1000, 1680, 1680, -1000, -1000, -1000, -1000, 12284, 180, 2001, + -1000, 12284, 2545, 1629, 2538, 1561, 1797, -1000, 2953, 12284, + 1533, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 2885, 2882, 2252, 3587, 2880, 11997, -1000, -1000, 1774, - 1772, 1769, -1000, 2214, 10681, -1000, -1000, -1000, 2878, 1558, - 2876, -1000, -1000, -1000, 2858, 1768, 1324, 2853, 1918, 2839, - 2838, 2836, 2833, 1446, 1433, 11997, 11997, 11997, 11997, 2818, - 1744, 1743, 11997, 11997, 11997, 11997, 2815, 11997, 11997, 11997, - 11997, 11997, 11997, 11997, 11997, 11997, 11997, 51380, 101, 101, - 101, 1421, 1415, -1000, -1000, 1742, -1000, 2205, -1000, -1000, - 3434, -1000, 3095, 2289, 1403, -1000, -1000, -336, 2580, 897, - 51380, -302, 51380, 897, 51380, 51380, 1955, 897, -303, 2638, - -1000, -1000, 2635, -1000, 51380, 51380, 51380, 51380, -146, 3435, - -1000, -1000, 1080, 1044, 1035, -1000, 51380, -1000, 2629, 3447, - 3507, 894, 51380, 3094, 3093, 51380, 51380, 51380, 250, -1000, - -1000, 1328, -1000, 204, -63, 520, 1240, 3291, 812, 3609, - 51380, 51380, 51380, 51380, 3464, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 46140, -1000, 3091, 1741, -1000, -1000, 1746, - 1746, 2205, 51380, 51380, 51380, 3290, 51380, 51380, 3570, 3570, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1908, 3570, 3570, - 1437, 1792, 1908, -1000, -1000, 1908, -361, -1000, 1908, -1000, - -361, 1553, -361, 51380, -1000, -1000, -1000, 3462, 3029, 1385, - -1000, -1000, -1000, 3560, 904, 839, 839, 1067, 576, 3558, - 19907, -1000, 1831, 1177, 893, 3389, 308, -1000, 1831, -164, - 809, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 653, 652, - 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, - 1831, 1115, 1831, 1831, 1831, 1831, 1831, -1000, 1831, 3088, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 762, 615, 238, - 3488, 344, -1000, 353, 1328, 599, 3487, 388, 51380, 51380, - 3832, 1296, -1000, -1000, -1000, -1000, -1000, 29110, 29110, 23870, - 29110, -1000, 183, 1819, -12, -16, -1000, -1000, 1375, 6717, - 1375, 6717, 2285, -1000, -1000, 892, -1000, -1000, 1240, -1000, - 51380, 51380, -1000, -1000, 3087, 1951, -1000, -1000, 17276, -1000, - 6717, 6717, -1000, -1000, 31075, 51380, -1000, -58, -1000, -43, - 3434, -1000, -1000, -1000, 1233, -1000, -1000, 1374, 1240, 3306, - 51380, 1233, 1233, 1233, -1000, -1000, 18597, 51380, 51380, -1000, - -1000, -1000, -308, 3570, 10017, -1000, 38280, -1000, -1000, 45485, - -1000, 44830, 1956, -1000, 15955, 2133, 201, -1000, 273, -327, - 198, 2017, 197, 2205, -1000, -1000, 2809, 2805, 1739, -1000, - 1731, 2803, 1729, 1728, 2282, -1000, 22, -1000, 3397, 1259, - -1000, 3082, -1000, 1717, 3363, -1000, 1352, -1000, 1944, 1712, - -1000, -1000, -1000, 11997, 44175, 11997, 1008, 1259, 1707, 3362, - 1352, 3434, 2624, -1000, 1351, -1000, 2110, 1519, 161, -1000, - -1000, -1000, 51380, 2628, 1706, 43520, 1304, -1000, 887, 1509, - 1507, -1000, 40900, 294, 40900, -1000, 40900, -1000, -1000, 3537, - -1000, 51380, 3413, -1000, -1000, -1000, 2580, 1943, -359, 51380, - -1000, -1000, -1000, -1000, -1000, 1705, -1000, 955, 955, 4028, - 3942, -1000, 14629, -1000, 14629, -1000, -1000, -1000, -1000, 3173, - -1000, 1913, -1000, 11997, 2070, 5334, 11997, 5334, 1807, 27800, - 35005, -148, 3432, 3142, 51380, -1000, -1000, 11997, 11997, -1000, - 3133, -1000, -1000, -1000, -1000, 11997, 11997, 2237, -1000, 51380, - -1000, -1000, -1000, -1000, 27800, -1000, 14629, -1000, -1000, -1000, - -1000, 11997, 11997, 1397, 1397, 3119, 1704, 101, 101, 101, - 3101, 3070, 3055, 1701, 101, 3006, 2996, 2970, 2900, 2877, - 2862, 2739, 2673, 2608, 2584, 1700, -1000, 3076, -1000, -1000, - 2094, 13313, 9359, -1000, -1000, 321, 1347, 2281, 2622, 110, - -1000, 1924, -1000, 383, -1000, 51380, 3586, -1000, 1504, 2621, - 42865, -1000, 51380, -1000, -1000, 3585, 3584, -1000, -1000, 51380, - 51380, -1000, -1000, -1000, 1037, -1000, 2620, -1000, 211, 208, - 2159, 263, 1210, 18597, 3029, 3074, 3029, 96, 1831, 630, - 40900, 667, -1000, 51380, 2217, 1922, 3304, 725, 3409, 51380, - 51380, 3072, 1136, 3069, 3068, 3461, 472, 5623, 51380, 1406, - -1000, 1502, 4745, -1000, 51380, -1000, -1000, 51380, -1000, 2355, - -1000, 1792, -1000, -1000, 3570, -1000, -1000, -1000, 11997, 11997, - -211, 3570, 1792, 1792, -1000, 1908, -1000, 51380, -1000, -361, - 472, 5623, 3460, 5183, 563, 2919, -1000, 51380, -1000, -1000, - -1000, 798, -1000, 1064, 850, 51380, 2051, 1064, 2050, 3060, - -1000, -1000, 51380, 51380, 51380, 51380, -1000, -1000, 51380, -1000, - 51380, 51380, 51380, 51380, 51380, 42210, -1000, 51380, 51380, -1000, - 51380, 2048, 51380, 2040, 3427, -1000, 1831, 1831, 999, -1000, - -1000, 586, -1000, 42210, 2280, 2274, 2273, 2269, 2618, 2617, - 2615, 1831, 1831, 2260, 2614, 41555, 2612, 1195, 2259, 2256, - 2254, 2271, 2610, 940, -1000, 2604, 2204, 2192, 2175, 51380, - 3031, 2487, -1000, -1000, 2159, 96, 1831, 339, 51380, 1917, - 1916, 630, 593, 593, 509, -64, 25180, -1000, -1000, -1000, - 51380, 38280, 38280, 38280, 38280, 38280, 38280, -1000, 3338, 3324, - 3030, -1000, 3334, 3326, 3345, 3330, 3298, 51380, 38280, 3029, - -1000, 41555, -1000, -1000, -1000, 1575, 1699, 3387, 1042, 11997, - 6717, -1000, -1000, -37, -34, -1000, -1000, -1000, -1000, 40900, - 2601, 547, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3506, - 51380, 51380, 841, 2798, 1340, -1000, -1000, -1000, 5623, 3014, - 3014, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 3014, 3014, 3028, -1000, -1000, 3013, 3013, 3013, 3012, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3018, - 3018, 3022, 3022, 3018, -1000, -1000, -1000, 3567, -1000, 1339, - -1000, -1000, 1498, -1000, 1900, -346, 15955, 1980, 1885, -1000, - 11997, 15955, 11997, -258, 319, -265, -1000, -1000, -1000, 2593, - -1000, -1000, -1000, 2233, -1000, 2232, -1000, 122, 154, 2039, - -227, 9359, 3209, 51380, -227, 51380, 9359, -1000, 51380, 179, - -381, -382, 160, 2586, 3090, -227, 3506, 22, 11997, 3382, - -1000, -1000, 51380, 2231, -1000, -1000, -1000, 3577, 40900, 2355, - 1773, 40245, -1000, 290, -1000, 1447, 570, 2585, -1000, 925, - 109, 2582, 2580, -1000, -1000, -1000, -1000, 14629, 1746, -1000, - -1000, -1000, 2205, 11997, 2795, 2291, 2791, 2790, -1000, 3014, - 3014, -1000, 3012, 3013, 3012, 1730, 1730, 2789, -1000, 3010, - -1000, 3432, -1000, 2171, 2573, -1000, 2552, 2427, 11997, -1000, - 2788, 3887, 1473, 1277, -94, -195, 101, 101, -1000, -1000, - -1000, -1000, 101, 101, 101, 101, -1000, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 805, -107, - -288, -109, -292, -1000, 2780, 1337, -1000, -1000, -1000, -1000, - -1000, 4105, 1335, 526, 526, 2580, 2571, 51380, 2570, -304, - 51380, -1000, -383, -389, 2569, 51380, 51380, 481, 1983, -1000, - 2567, -1000, -1000, 51380, 51380, 51380, 52035, 613, 51380, 51380, - 2566, -1000, 2564, 2776, 1321, -1000, -1000, 51380, -1000, -1000, - -1000, 2775, 3458, 19252, 3451, 2305, -1000, -1000, -1000, 30420, - 593, -1000, -1000, -1000, 689, 304, 2224, 562, -1000, 51380, - 514, 3376, 1907, 2554, 51380, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 3409, -1000, 968, -361, 459, 36970, 16621, - -1000, 2909, 51380, -1000, 51380, 19252, 19252, 2909, 462, 1886, - -1000, 804, 1242, 121, 38280, 51380, -1000, 37625, 2774, -1000, - -1000, 1240, 3570, -1000, 2195, 2195, 3608, -361, 3570, 3570, - 1792, -1000, -1000, 462, -1000, 2909, -1000, 1623, 20562, 554, - 435, 422, -1000, 686, -1000, -1000, 796, 3393, 5623, -1000, - 51380, -1000, 51380, -1000, 51380, 51380, 850, 11997, 3393, 51380, - 877, -1000, 1162, 450, 428, 801, 801, 1315, -1000, 3432, - -1000, -1000, 1312, -1000, -1000, -1000, -1000, 51380, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 27800, 27800, 3486, -1000, -1000, + -1000, 2831, 2821, 2745, 3604, 2820, 12284, -1000, -1000, 1794, + 1792, 1790, -1000, 2213, 10966, -1000, -1000, -1000, 2815, 1532, + 2812, -1000, -1000, -1000, 2811, 1789, 1234, 2810, 1970, 2802, + 2797, 2796, 2795, 1471, 1470, 12284, 12284, 12284, 12284, 2791, + 1788, 1787, 12284, 12284, 12284, 12284, 2789, 12284, 12284, 12284, + 12284, 12284, 12284, 12284, 12284, 12284, 12284, 51727, 77, 77, + 77, 1467, 1463, -1000, -1000, 1779, -1000, 2099, -1000, -1000, + 3422, -1000, 3027, 2254, 1462, -1000, -1000, -340, 2557, 836, + 51727, -301, 51727, 836, 51727, 51727, 1950, 836, -303, 2617, + -1000, -1000, 2616, -1000, 51727, 51727, 51727, 51727, -138, 3423, + -1000, -1000, 1058, 1018, 1027, -1000, 51727, -1000, 2603, 3428, + 3522, 841, 51727, 3026, 3018, 51727, 51727, 51727, 238, -1000, + -1000, 1353, -1000, 213, -63, 479, 1227, 3252, 788, 3631, + 51727, 51727, 51727, 51727, 3464, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 46479, -1000, 3017, 1777, -1000, -1000, 1732, + 1732, 2099, 51727, 51727, 51727, 3251, 51727, 51727, 3588, 3588, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1948, 3588, 3588, + 1388, 1804, 1948, -1000, -1000, 1948, -365, -1000, 1948, -1000, + -365, 1525, -365, 51727, -1000, -1000, -1000, 3457, 2971, 1460, + -1000, -1000, -1000, 3580, 1770, 771, 771, 1000, 580, 3579, + 20206, -1000, 1785, 1128, 827, 3357, 298, -1000, 1785, -157, + 752, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 607, 605, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1094, 1785, 1785, 1785, 1785, 1785, -1000, 1785, 3016, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 650, 572, 237, + 3499, 341, -1000, 333, 1353, 620, 3494, 367, 51727, 51727, + 4164, 1312, -1000, -1000, -1000, -1000, -1000, 29423, 29423, 24175, + 29423, -1000, 199, 1786, 2, -44, -1000, -1000, 1459, 6996, + 1459, 6996, 2253, -1000, -1000, 825, -1000, -1000, 1227, -1000, + 51727, 51727, -1000, -1000, 3014, 1933, -1000, -1000, 17571, -1000, + 6996, 6996, -1000, -1000, 31391, 51727, -1000, -49, -1000, -33, + 3422, -1000, -1000, -1000, 1191, -1000, -1000, 1451, 1227, 3260, + 51727, 1191, 1191, 1191, -1000, -1000, 18894, 51727, 51727, -1000, + -1000, -1000, -316, 3588, 10301, -1000, 38607, -1000, -1000, 45823, + -1000, 45167, 1966, -1000, 16248, 2147, 196, -1000, 271, -329, + 194, 1978, 193, 2099, -1000, -1000, 2785, 2784, 1772, -1000, + 1746, 2783, 1745, 1740, 2251, -1000, 27, -1000, 3379, 1283, + -1000, 3013, -1000, 1735, 3331, -1000, 1447, -1000, 1932, 1734, + -1000, -1000, -1000, 12284, 44511, 12284, 979, 1283, 1724, 3327, + 1447, 3422, 2601, -1000, 1444, -1000, 2330, 1524, 135, -1000, + -1000, -1000, 51727, 2608, 1721, 43855, 1304, -1000, 823, 1510, + 1503, -1000, 41231, 290, 41231, -1000, 41231, -1000, -1000, 3567, + -1000, 51727, 3404, -1000, -1000, -1000, 2557, 1927, -363, 51727, + -1000, -1000, -1000, -1000, -1000, 1717, -1000, 963, 963, 4184, + 4078, -1000, 14920, -1000, 14920, -1000, -1000, -1000, -1000, 3382, + -1000, 1878, -1000, 12284, 2073, 5342, 12284, 5342, 1386, 28111, + 35327, -139, 3408, 3371, 51727, -1000, -1000, 12284, 12284, -1000, + 3340, -1000, -1000, -1000, -1000, 12284, 12284, 2411, -1000, 51727, + -1000, -1000, -1000, -1000, 28111, -1000, 14920, -1000, -1000, -1000, + -1000, 12284, 12284, 1289, 1289, 3291, 1688, 77, 77, 77, + 3247, 3241, 3200, 1672, 77, 3161, 3149, 3145, 3087, 3065, + 3056, 2960, 2878, 2865, 2818, 1669, -1000, 3012, -1000, -1000, + 2096, 13602, 9642, -1000, -1000, 308, 1443, 2250, 2598, 114, + -1000, 1922, -1000, 366, -1000, 51727, 3603, -1000, 1496, 2597, + 43199, -1000, 51727, -1000, -1000, 3601, 3600, -1000, -1000, 51727, + 51727, -1000, -1000, -1000, 1002, -1000, 2595, -1000, 210, 207, + 2163, 252, 1156, 18894, 2971, 2994, 2971, 76, 1785, 610, + 41231, 634, -1000, 51727, 2153, 1921, 3259, 782, 3384, 51727, + 51727, 2992, 1228, 2986, 2982, 3456, 432, 5576, 51727, 1356, + -1000, 1495, 4308, -1000, 51727, -1000, -1000, 51727, -1000, 2318, + -1000, 1804, -1000, -1000, 3588, -1000, -1000, -1000, 12284, 12284, + -208, 3588, 1804, 1804, -1000, 1948, -1000, 51727, -1000, -365, + 432, 5576, 3448, 5049, 534, 2732, -1000, 51727, -1000, -1000, + -1000, 764, -1000, 1010, 785, 51727, 2066, 1010, 2063, 2979, + -1000, -1000, 51727, 51727, 51727, 51727, -1000, -1000, 51727, -1000, + 51727, 51727, 51727, 51727, 51727, 42543, -1000, 51727, 51727, -1000, + 51727, 2061, 51727, 2059, 3425, -1000, 1785, 1785, 970, -1000, + -1000, 606, -1000, 42543, 2249, 2238, 2237, 2236, 2592, 2589, + 2588, 1785, 1785, 2233, 2585, 41887, 2583, 1168, 2230, 2229, + 2224, 2208, 2577, 900, -1000, 2576, 2206, 2193, 2192, 51727, + 2976, 2452, -1000, -1000, 2163, 76, 1785, 335, 51727, 1918, + 1915, 610, 587, 587, 477, -64, 25487, -1000, -1000, -1000, + 51727, 38607, 38607, 38607, 38607, 38607, 38607, -1000, 3312, 3279, + 2975, -1000, 3296, 3277, 3302, 3306, 3071, 51727, 38607, 2971, + -1000, 41887, -1000, -1000, -1000, 1780, 1666, 3712, 1013, 12284, + 6996, -1000, -1000, -11, -38, -1000, -1000, -1000, -1000, 41231, + 2574, 542, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3521, + 51727, 51727, 797, 2769, 1442, -1000, -1000, -1000, 5576, 2956, + 2956, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 2956, 2956, 2968, -1000, -1000, 2955, 2955, 2955, 2953, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2964, + 2964, 2966, 2966, 2964, -1000, -1000, -1000, 3585, -1000, 1434, + -1000, -1000, 1387, -1000, 1989, -349, 16248, 1972, 1800, -1000, + 12284, 16248, 12284, -262, 316, -264, -1000, -1000, -1000, 2572, + -1000, -1000, -1000, 2223, -1000, 2222, -1000, 115, 149, 2051, + -229, 9642, 3046, 51727, -229, 51727, 9642, -1000, 51727, 163, + -376, -377, 159, 2571, 2924, -229, 3521, 27, 12284, 3364, + -1000, -1000, 51727, 2220, -1000, -1000, -1000, 3599, 41231, 2318, + 1739, 40575, -1000, 286, -1000, 1389, 569, 2565, -1000, 871, + 113, 2558, 2557, -1000, -1000, -1000, -1000, 14920, 1732, -1000, + -1000, -1000, 2099, 12284, 2768, 2401, 2767, 2766, -1000, 2956, + 2956, -1000, 2953, 2955, 2953, 1680, 1680, 2760, -1000, 2930, + -1000, 3408, -1000, 2278, 2809, -1000, 2799, 2749, 12284, -1000, + 2755, 3669, 1581, 1461, -85, -192, 77, 77, -1000, -1000, + -1000, -1000, 77, 77, 77, 77, -1000, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 747, -110, + -291, -112, -295, -1000, 2753, 1420, -1000, -1000, -1000, -1000, + -1000, 3967, 1401, 516, 516, 2557, 2556, 51727, 2554, -306, + 51727, -1000, -379, -381, 2553, 51727, 51727, 436, 1977, -1000, + 2552, -1000, -1000, 51727, 51727, 51727, 52383, 570, 51727, 51727, + 2550, -1000, 2539, 2752, 1391, -1000, -1000, 51727, -1000, -1000, + -1000, 2736, 3446, 19550, 3445, 2284, -1000, -1000, -1000, 30735, + 587, -1000, -1000, -1000, 694, 269, 2218, 558, -1000, 51727, + 490, 3343, 1912, 2512, 51727, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 3384, -1000, 1204, -365, 411, 37295, 16915, + -1000, 2771, 51727, -1000, 51727, 19550, 19550, 2771, 424, 1899, + -1000, 740, 1242, 129, 38607, 51727, -1000, 37951, 2735, -1000, + -1000, 1227, 3588, -1000, 2174, 2174, 3626, -365, 3588, 3588, + 1804, -1000, -1000, 424, -1000, 2771, -1000, 1137, 20862, 532, + 455, 431, -1000, 652, -1000, -1000, 737, 3356, 5576, -1000, + 51727, -1000, 51727, -1000, 51727, 51727, 785, 12284, 3356, 51727, + 821, -1000, 1125, 420, 394, 759, 759, 1374, -1000, 3408, + -1000, -1000, 1336, -1000, -1000, -1000, -1000, 51727, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 28111, 28111, 3484, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 2553, 2551, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 2509, 2505, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 51380, 1696, -1000, 1898, 2550, 2305, 30420, 1897, - 1819, 2527, 2515, 593, -1000, 2510, 2507, -1000, 2217, 1892, - 919, 51380, -1000, 1237, 51380, 51380, -1000, 1348, -1000, 1890, - 3287, 3301, 3287, -1000, 3287, -1000, -1000, -1000, -1000, 3328, - 2502, -1000, 3327, -1000, 3204, -1000, -1000, -1000, -1000, 1348, - -1000, -1000, -1000, -1000, -1000, 1042, -1000, 3504, 1064, 1064, - 1064, 2773, -1000, -1000, -1000, -1000, 1304, 2770, -1000, -1000, - -1000, 3598, -1000, -1000, -1000, -1000, -1000, -1000, 18597, 3408, - 3565, 3556, 39590, -1000, -346, 1899, -1000, 2004, 194, 1960, - 51380, -1000, -1000, -1000, 2764, 2763, -234, 151, 3555, 3553, - 1110, -1000, 2760, 1297, -227, -1000, -1000, 1259, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -393, -227, -1000, 1259, -1000, - 122, -1000, -1000, 3399, -1000, -1000, 2355, -1000, 1362, -1000, - -1000, -1000, -1000, -1000, -1000, 177, -1000, 51380, -1000, 1276, - 108, -1000, 2205, -1000, 5334, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 2501, -1000, -1000, 11997, -1000, - -1000, -1000, 2418, -1000, -1000, 11997, 11997, 2743, 2500, 2742, - 2498, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3619, -1000, - 3545, 1692, 2740, 2735, 1633, 2734, 2733, -1000, 11997, 2731, - 4105, 1003, 2492, 1003, -1000, -1000, -1000, -1000, 51380, -1000, - -1000, -1000, 29765, 872, -361, -1000, 393, -1000, 476, 2491, - -1000, -1000, 51380, 2159, 609, 2159, 713, 51380, -308, -1000, - -151, 1210, 5623, 924, 2909, 2730, 1272, -1000, -1000, -1000, - -1000, 2909, -1000, 2490, 203, -1000, -1000, -1000, -1000, 2215, - -1000, -1000, 2165, 1523, 213, -1000, -1000, -1000, -1000, -1000, - -1000, 2201, 51380, 38935, 2284, 1889, -362, -1000, 3009, -1000, - 1831, 1831, 1831, 872, 51380, 1597, -1000, 1831, 1831, 2728, - -1000, -1000, 872, 2726, 2717, 3607, 799, 1859, 1851, -1000, - 2212, 29110, 38280, 37625, 1334, -1000, 1497, -1000, -1000, -1000, - -1000, -1000, 283, -1000, -1000, -1000, 3570, 799, -1000, 546, - 2206, 14629, 3008, 14629, 3005, 579, 3004, 1596, -1000, 51380, - -1000, -1000, 51380, 4103, 3003, -1000, 3002, 3289, 522, 2983, - 2979, 51380, 2413, -1000, 3393, 51380, 785, 3407, -1000, -1000, - -1000, 416, -1000, -1000, -1000, 619, -1000, 51380, -1000, 51380, - -1000, 1657, -1000, 27800, -1000, -1000, 1595, -1000, 2487, 2486, - -1000, -1000, 203, 2483, 6717, -1000, -1000, -1000, -1000, -1000, - 3376, 2480, 2201, 51380, -1000, 51380, 1237, 1237, 3619, 51380, - 9359, -1000, -1000, 11997, 2977, -1000, 11997, -1000, -1000, -1000, - 2714, -1000, -1000, -1000, -1000, -1000, 2976, 3396, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1949, -1000, 11997, 12655, -1000, - 847, 15955, -269, 317, -1000, -1000, -1000, -236, 2479, -1000, - -1000, 3544, 2475, 2361, 51380, -1000, -1000, 1259, -1000, 1259, - -234, -1000, -1000, 1240, -1000, -1000, 1165, 656, -1000, 2710, - 1910, -1000, 2354, -1000, 2347, 2323, 101, -1000, 101, -1000, - 247, 11997, -1000, 2474, -1000, -1000, -1000, 2466, -1000, -1000, - 2299, -1000, 2706, -1000, 2465, -1000, -1000, 2464, -1000, -1000, - 362, 872, 51380, 2462, 2203, -1000, 517, -369, -1000, 2457, - 2159, 2456, 2159, 51380, 600, -1000, 2454, 2453, -1000, -1000, - 5623, 3606, 3607, 19252, 3606, -1000, -1000, 3534, 351, -1000, - -1000, 2134, 618, -1000, -1000, 2447, 594, -1000, 1237, -1000, - 1887, 2073, 2396, 35005, 27800, 28455, 2444, -1000, -1000, -1000, - 36970, 1949, 1949, 56642, -1000, 326, 56862, -1000, 2973, 1134, - 1816, -1000, 2202, -1000, 2198, -1000, 3570, 1334, 117, -1000, - -1000, 1770, 11997, -1000, 1134, 2919, 3543, -1000, 3747, 51380, - 2810, 51380, 2968, 1884, 14629, -1000, 796, 3349, -1000, -1000, - 4103, -1000, -1000, 2067, 14629, -1000, -1000, 2434, 28455, 1006, - 1866, 1861, 981, 2966, -1000, 622, 3595, -1000, -1000, -1000, - 998, 2964, -1000, 2028, 1901, -1000, 51380, -1000, 35005, 35005, - 774, 774, 35005, 35005, 2963, 801, -1000, -1000, 14629, -1000, - -1000, 1831, -1000, -1000, -1000, 1831, 1646, -1000, -1000, -1000, - -1000, -1000, -1000, 2284, -1000, -1000, 1233, -1000, 3520, -1000, - -1000, 2205, 51380, 2205, -1000, 36315, -1000, 3542, 3541, -1000, - 2205, 1327, 264, 2960, 2953, -1000, -346, 51380, 51380, -242, - 2193, -1000, 2428, 148, -1000, -1000, 1218, -236, -245, 42, - 27800, 1858, -1000, 2705, 346, -155, -1000, -1000, -1000, -1000, - -1000, 2699, -1000, 917, -1000, -1000, -1000, 1215, 2697, 2694, - -1000, -1000, -1000, -1000, 51380, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 2384, -308, 2426, -308, 2425, 589, 2159, -1000, - -1000, -152, -1000, -1000, 415, -1000, -1000, -1000, 578, 2353, - -1000, -1000, 334, -1000, -1000, -1000, 2201, 2423, -1000, -1000, - 102, -1000, 1853, 1592, -1000, -1000, -1000, -1000, -1000, -1000, - 778, -1000, 2909, 56742, -1000, 1177, -1000, 1165, 778, 33695, - 668, 1888, -1000, 2176, -1000, -1000, 3619, -1000, 1215, 659, - -1000, 575, -1000, 1545, -1000, 1490, 35660, 2169, 2197, -1000, - 56693, 922, -1000, -1000, 4028, -1000, -1000, -1000, -1000, -1000, - -1000, 2419, 2417, -1000, -1000, -1000, -1000, -1000, 2162, 2952, - -72, 3485, 2414, -1000, -1000, 2949, 1482, 1475, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1461, 1453, - 35005, -1000, -1000, 4028, 2161, 27800, 1831, -1000, -1000, 1448, - 1436, -1000, -1000, -1000, -1000, -1000, -319, 2944, 11997, 11997, - -1000, -1000, -1000, 2934, -1000, -1000, 3540, -242, -247, 2411, - 115, 137, -1000, 2406, -1000, -153, 3354, -160, -1000, -1000, - 910, -230, 98, 97, 81, -1000, -1000, -1000, 11997, -1000, - -1000, -1000, 100, -1000, 1837, -1000, -308, -1000, -308, 2159, - 2403, 51380, 621, -1000, -1000, -1000, -1000, 175, -1000, -1000, - -1000, -1000, -1000, -1000, 2396, 2394, -1000, 532, 3539, -1000, - 56862, -1000, 1831, -1000, 532, 1414, -1000, 1831, 1831, -1000, - 466, -1000, 1795, -1000, 2150, -1000, 3520, -1000, 465, -1000, - 541, -1000, -1000, -1000, 1396, -1000, -1000, -1000, 56693, 551, - -1000, 765, 2933, -1000, -1000, 2681, 11997, 2926, 1831, 2589, - -144, 35005, 3283, 3280, 3135, 2945, 1394, -1000, -1000, 27800, - -1000, -1000, 34350, -1000, 2925, 1376, 1361, 51380, 2361, -1000, - -1000, 2387, -1000, 864, 126, 137, -1000, 3538, 145, 3530, - 3529, 1205, 3343, -1000, -1000, 1997, -1000, 79, 76, 73, - -1000, -1000, -1000, -1000, -308, 2384, 2383, -1000, -1000, 2381, - -308, 544, -1000, 274, -1000, -1000, -1000, 831, -1000, 3527, - 563, -1000, 27800, -1000, -1000, 33695, 1949, 1949, -1000, -1000, - 2141, -1000, -1000, -1000, -1000, 2140, -1000, -1000, -1000, 1344, - -1000, 51380, 997, 8701, -1000, 2278, -1000, 51380, -1000, 3300, - -1000, 227, 1343, 831, 774, 831, 774, 831, 774, 831, - 774, 270, -1000, -1000, -1000, 1317, 11997, -1000, -1000, 1309, - -1000, -1000, -1000, 2924, 2135, 151, 142, 3526, -1000, 2361, - 3523, 2361, 2361, -1000, 99, 3604, 910, -1000, -1000, -1000, - -1000, -1000, -1000, -308, -1000, 2375, -1000, -1000, -1000, -1000, - 1831, 1831, 2373, 2366, 454, -1000, -1000, 1831, 1831, 1831, - -1000, 33040, 554, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 551, 56862, -1000, 8701, 1292, -1000, 2205, -1000, 801, -1000, - -1000, 3299, 3297, 3582, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2920, 2557, -1000, 51380, 3484, 27145, - 118, -1000, -1000, -1000, 2365, -1000, 2361, -1000, -1000, 1829, - -156, -1000, -1000, -286, 2119, 2118, -1000, -1000, 51380, 2104, - 2086, 2077, -1000, 51380, 546, -1000, 56862, 1275, -1000, 8701, - -1000, -1000, 3594, -1000, 3583, 1001, 1001, 831, 831, 831, - 831, 11997, -1000, -1000, -1000, 51380, -1000, 1258, -1000, -1000, - -1000, 1496, -1000, -1000, -1000, -1000, 2356, -161, -1000, -1000, - 2333, -1000, -1000, -1000, -1000, -1000, -1000, 1227, 2919, -1000, - -1000, -1000, -1000, -1000, 2152, 628, -1000, 2508, 1202, -1000, - 1821, -1000, 32385, 51380, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 51380, 8043, -1000, 1495, -1000, -1000, 2205, - 51380, -1000, + -1000, -1000, 51727, 1665, -1000, 1910, 2504, 2284, 30735, 1906, + 1786, 2497, 2496, 587, -1000, 2490, 2483, -1000, 2153, 1901, + 870, 51727, -1000, 1224, 51727, 51727, -1000, 1295, -1000, 1897, + 3240, 3257, 3240, -1000, 3240, -1000, -1000, -1000, -1000, 3298, + 2481, -1000, 3283, -1000, 3280, -1000, -1000, -1000, -1000, 1295, + -1000, -1000, -1000, -1000, -1000, 1013, -1000, 3520, 1010, 1010, + 1010, 2734, -1000, -1000, -1000, -1000, 1304, 2725, -1000, -1000, + -1000, 3618, -1000, -1000, -1000, -1000, -1000, -1000, 18894, 3372, + 3583, 3578, 39919, -1000, -349, 1807, -1000, 2054, 191, 1864, + 51727, -1000, -1000, -1000, 2723, 2721, -237, 142, 3577, 3576, + 1028, -1000, 2720, 1297, -229, -1000, -1000, 1283, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -390, -229, -1000, 1283, -1000, + 115, -1000, -1000, 3378, -1000, -1000, 2318, -1000, 1296, -1000, + -1000, -1000, -1000, -1000, -1000, 183, -1000, 51727, -1000, 1293, + 112, -1000, 2099, -1000, 5342, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 2479, -1000, -1000, 12284, -1000, + -1000, -1000, 2673, -1000, -1000, 12284, 12284, 2719, 2475, 2715, + 2474, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3644, -1000, + 3575, 1653, 2712, 2710, 1645, 2709, 2708, -1000, 12284, 2699, + 3967, 977, 2465, 977, -1000, -1000, -1000, -1000, 51727, -1000, + -1000, -1000, 30079, 817, -365, -1000, 392, -1000, 443, 2464, + -1000, -1000, 51727, 2163, 563, 2163, 643, 51727, -316, -1000, + -142, 1156, 5576, 887, 2771, 2694, 1288, -1000, -1000, -1000, + -1000, 2771, -1000, 2456, 205, -1000, -1000, -1000, -1000, 2217, + -1000, -1000, 2191, 1498, 203, -1000, -1000, -1000, -1000, -1000, + -1000, 2146, 51727, 39263, 2158, 1895, -366, -1000, 2929, -1000, + 1785, 1785, 1785, 817, 51727, 1623, -1000, 1785, 1785, 2692, + -1000, -1000, 817, 2681, 2680, 3625, 756, 1875, 1827, -1000, + 2215, 29423, 38607, 37951, 1292, -1000, 1340, -1000, -1000, -1000, + -1000, -1000, 282, -1000, -1000, -1000, 3588, 756, -1000, 526, + 2214, 14920, 2925, 14920, 2923, 540, 2922, 1604, -1000, 51727, + -1000, -1000, 51727, 4001, 2919, -1000, 2916, 3248, 515, 2913, + 2912, 51727, 2609, -1000, 3356, 51727, 727, 3369, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 547, -1000, 51727, -1000, 51727, + -1000, 1685, -1000, 28111, -1000, -1000, 1596, -1000, 2452, 2450, + -1000, -1000, 205, 2449, 6996, -1000, -1000, -1000, -1000, -1000, + 3343, 2448, 2146, 51727, -1000, 51727, 1224, 1224, 3644, 51727, + 9642, -1000, -1000, 12284, 2911, -1000, 12284, -1000, -1000, -1000, + 2674, -1000, -1000, -1000, -1000, -1000, 2905, 3360, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 2241, -1000, 12284, 12943, -1000, + 777, 16248, -265, 301, -1000, -1000, -1000, -240, 2445, -1000, + -1000, 3574, 2444, 2312, 51727, -1000, -1000, 1283, -1000, 1283, + -237, -1000, -1000, 1227, -1000, -1000, 1064, 609, -1000, 2671, + 1949, -1000, 2416, -1000, 2361, 2355, 77, -1000, 77, -1000, + 218, 12284, -1000, 2442, -1000, -1000, -1000, 2431, -1000, -1000, + 2343, -1000, 2668, -1000, 2430, -1000, -1000, 2427, -1000, -1000, + 359, 817, 51727, 2419, 2205, -1000, 476, -371, -1000, 2417, + 2163, 2414, 2163, 51727, 560, -1000, 2410, 2403, -1000, -1000, + 5576, 3624, 3625, 19550, 3624, -1000, -1000, 3563, 353, -1000, + -1000, 2157, 615, -1000, -1000, 2394, 571, -1000, 1224, -1000, + 1876, 2076, 2334, 35327, 28111, 28767, 2388, -1000, -1000, -1000, + 37295, 2241, 2241, 5858, -1000, 302, 57049, -1000, 2901, 1103, + 1820, -1000, 2184, -1000, 2172, -1000, 3588, 1292, 121, -1000, + -1000, 1618, 12284, -1000, 1103, 2732, 3565, -1000, 3155, 51727, + 3074, 51727, 2891, 1872, 14920, -1000, 737, 3326, -1000, -1000, + 4001, -1000, -1000, 2074, 14920, -1000, -1000, 2381, 28767, 907, + 1871, 1862, 902, 2890, -1000, 573, 3617, -1000, -1000, -1000, + 953, 2887, -1000, 2048, 2038, -1000, 51727, -1000, 35327, 35327, + 804, 804, 35327, 35327, 2886, 759, -1000, -1000, 14920, -1000, + -1000, 819, -1000, -1000, -1000, 1785, 1682, -1000, -1000, -1000, + -1000, -1000, -1000, 2158, -1000, -1000, 1191, -1000, 3535, -1000, + -1000, 2099, 51727, 2099, -1000, 36639, -1000, 3564, 3561, -1000, + 2099, 1290, 262, 2885, 2883, -1000, -349, 51727, 51727, -242, + 2170, -1000, 2373, 133, -1000, -1000, 1185, -240, -247, 24, + 28111, 1858, -1000, 2667, 360, -147, -1000, -1000, -1000, -1000, + -1000, 2665, -1000, 924, -1000, -1000, -1000, 1182, 2664, 2663, + -1000, -1000, -1000, -1000, 51727, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 2328, -316, 2372, -316, 2371, 556, 2163, -1000, + -1000, -143, -1000, -1000, 425, -1000, -1000, -1000, 645, 2293, + -1000, -1000, 348, -1000, -1000, -1000, 2146, 2370, -1000, -1000, + 111, -1000, 1855, 1584, -1000, -1000, -1000, -1000, -1000, -1000, + 736, -1000, 2771, 56999, -1000, 1128, -1000, 1064, 736, 34015, + 632, 1896, -1000, 2169, -1000, -1000, 3644, -1000, 1182, 594, + -1000, 538, -1000, 1516, -1000, 1504, 35983, 2167, 2942, -1000, + 56950, 883, -1000, -1000, 4184, -1000, -1000, -1000, -1000, -1000, + -1000, 2369, 2360, -1000, -1000, -1000, -1000, -1000, 2165, 2881, + -71, 3479, 2358, -1000, -1000, 2876, 1497, 1473, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1468, 1464, + 35327, -1000, -1000, 4184, -1000, 1785, 1785, 2351, 2348, 413, + -1000, -1000, 1785, 1785, 1785, -1000, -1000, 28111, 1785, -1000, + -1000, 1453, 1427, -1000, -1000, -1000, -1000, -1000, -327, 2875, + 12284, 12284, -1000, -1000, -1000, 2874, -1000, -1000, 3544, -242, + -249, 2346, 109, 195, -1000, 2340, -1000, -145, 3321, -153, + -1000, -1000, 698, -232, 85, 83, 74, -1000, -1000, -1000, + 12284, -1000, -1000, -1000, 99, -1000, 1815, -1000, -316, -1000, + -316, 2163, 2337, 51727, 566, -1000, -1000, -1000, -1000, 177, + -1000, -1000, -1000, -1000, -1000, -1000, 2334, 2331, -1000, 521, + 3543, -1000, 57049, -1000, 1785, -1000, 521, 1425, -1000, 1785, + 1785, -1000, 429, -1000, 1771, -1000, 2154, -1000, 3535, -1000, + 421, -1000, 523, -1000, -1000, -1000, 1392, -1000, -1000, -1000, + 56950, 528, -1000, 721, 2871, -1000, -1000, 2658, 12284, 2870, + 1785, 2655, -136, 35327, 3245, 3243, 3076, 2944, 1346, 2143, + 2138, -1000, -1000, 51727, 2136, 2127, 2118, -1000, 28111, -1000, + -1000, 34671, -1000, 2869, 1341, 1329, 51727, 2312, -1000, -1000, + 2329, -1000, 802, 119, 195, -1000, 3542, 132, 3541, 3540, + 1121, 3317, -1000, -1000, 2021, -1000, 104, 78, 70, -1000, + -1000, -1000, -1000, -316, 2328, 2325, -1000, -1000, 2324, -316, + 546, -1000, 279, -1000, -1000, -1000, 819, -1000, 3539, 534, + -1000, 28111, -1000, -1000, 34015, 2241, 2241, -1000, -1000, 2116, + -1000, -1000, -1000, -1000, 2115, -1000, -1000, -1000, 1321, -1000, + 51727, 917, 8983, -1000, 2283, -1000, 51727, -1000, 3256, -1000, + 225, 1300, 819, 804, 819, 804, 819, 804, 819, 804, + 266, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1272, 12284, -1000, -1000, 1248, -1000, -1000, -1000, 2868, 2092, + 142, 123, 3538, -1000, 2312, 3537, 2312, 2312, -1000, 91, + 3622, 698, -1000, -1000, -1000, -1000, -1000, -1000, -316, -1000, + 2319, -1000, -1000, -1000, 33359, 532, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 528, 57049, -1000, 8983, 1243, -1000, 2099, + -1000, 759, -1000, -1000, 3242, 2792, 3594, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2867, 2653, -1000, + 51727, 3477, 27455, 127, -1000, -1000, -1000, 2314, -1000, 2312, + -1000, -1000, 1783, -148, -1000, -1000, -288, -1000, 51727, 526, + -1000, 57049, 1220, -1000, 8983, -1000, -1000, 3616, -1000, 3612, + 872, 872, 819, 819, 819, 819, 12284, -1000, -1000, -1000, + 51727, -1000, 1219, -1000, -1000, -1000, 1205, -1000, -1000, -1000, + -1000, 2299, -154, -1000, -1000, 2295, 1201, 2732, -1000, -1000, + -1000, -1000, -1000, 2140, 581, -1000, 2421, 1119, -1000, 1765, + -1000, 32703, 51727, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 51727, 8324, -1000, 1113, -1000, -1000, 2099, 51727, + -1000, } var yyPgo = [...]int{ - 0, 175, 3632, 239, 173, 4307, 91, 248, 284, 264, - 243, 235, 4306, 4305, 4303, 3425, 3424, 4302, 4301, 4295, - 4294, 4293, 4291, 4289, 4288, 4286, 4283, 4282, 4278, 4275, - 4272, 4271, 4270, 4269, 4267, 4266, 4265, 4264, 4262, 4260, - 4259, 4256, 4255, 4241, 4237, 4236, 4235, 231, 4234, 4233, - 4232, 4231, 4230, 4227, 4226, 4225, 4224, 4219, 4214, 4213, - 4211, 4210, 4209, 4208, 4205, 4202, 4200, 4199, 4198, 4197, - 4196, 4195, 4193, 4192, 4191, 4190, 4189, 4186, 4185, 4184, - 4169, 4168, 4166, 4165, 4163, 210, 4162, 3420, 4161, 4160, - 4157, 4154, 4153, 4152, 4151, 4150, 4149, 4148, 4146, 311, - 4145, 4143, 4142, 4141, 4138, 4137, 4136, 4135, 4134, 4133, - 4132, 4131, 4130, 303, 4129, 4124, 4122, 4121, 218, 4116, - 291, 4115, 170, 137, 4110, 4109, 4108, 4107, 4106, 4105, - 4100, 4099, 4098, 4097, 4079, 4078, 4077, 4076, 224, 187, - 71, 4075, 50, 4074, 228, 202, 4071, 214, 4064, 148, - 4059, 144, 4058, 4057, 4056, 4053, 4051, 4049, 4047, 4046, - 4044, 4043, 4042, 4024, 4023, 4022, 4020, 4019, 4017, 4011, - 4010, 4009, 4007, 4006, 4005, 4004, 49, 4003, 266, 4000, - 76, 3999, 176, 3998, 75, 3997, 3994, 85, 3991, 3988, - 168, 130, 261, 2147, 254, 3987, 190, 3986, 3985, 247, - 178, 3984, 3981, 317, 3980, 186, 216, 157, 101, 121, - 3979, 141, 3978, 260, 45, 46, 246, 118, 139, 3977, - 3975, 56, 165, 126, 3973, 211, 97, 3972, 3971, 110, - 3970, 3969, 136, 3968, 233, 179, 3967, 105, 3966, 3965, - 3963, 20, 3961, 3960, 199, 192, 3959, 3958, 96, 3957, - 3955, 65, 153, 3954, 79, 129, 167, 127, 3947, 2800, - 124, 107, 3946, 122, 102, 3945, 114, 3944, 3942, 3941, - 3939, 188, 3938, 3937, 146, 61, 3936, 3935, 3934, 69, - 3931, 82, 3929, 34, 3928, 58, 3926, 3925, 3923, 3922, - 3921, 3920, 3919, 3918, 3917, 3916, 3914, 3888, 54, 3886, - 3884, 3882, 3881, 7, 14, 17, 3880, 28, 3877, 169, - 3874, 3873, 163, 3871, 196, 3870, 3869, 95, 88, 3868, - 92, 161, 3867, 11, 29, 78, 3865, 3864, 3863, 232, - 3861, 3858, 3857, 270, 3856, 3851, 3849, 162, 3847, 3846, - 3844, 472, 3842, 3841, 3840, 3839, 3838, 3837, 313, 3835, - 1, 213, 41, 3833, 132, 135, 3832, 39, 32, 3830, - 40, 113, 226, 134, 99, 3828, 3826, 3825, 561, 198, - 103, 62, 0, 98, 220, 160, 3824, 3823, 3822, 262, - 3821, 234, 258, 257, 286, 255, 251, 3819, 3818, 59, - 3815, 158, 31, 53, 138, 407, 24, 256, 3814, 883, - 9, 183, 3813, 205, 3809, 8, 18, 238, 151, 3808, - 3807, 36, 265, 3805, 3804, 3803, 131, 3800, 3799, 294, - 60, 3796, 3795, 3794, 3793, 3792, 51, 3791, 181, 16, - 3787, 180, 3785, 240, 3784, 191, 166, 184, 177, 156, - 217, 223, 83, 81, 3783, 1875, 145, 104, 15, 3781, - 215, 3780, 195, 116, 3778, 152, 3773, 244, 267, 207, - 3772, 185, 12, 48, 38, 30, 44, 10, 343, 203, - 3770, 3769, 26, 52, 3768, 55, 3766, 21, 3765, 3764, - 42, 3763, 68, 5, 3762, 3761, 19, 22, 3760, 37, - 204, 182, 123, 93, 63, 3759, 3757, 133, 250, 3756, - 147, 150, 154, 3754, 80, 3753, 3752, 3749, 3748, 3227, - 252, 3747, 3746, 3745, 3744, 3743, 3742, 3740, 3738, 212, - 3735, 119, 43, 3734, 3732, 3731, 3730, 90, 149, 3729, - 3728, 3727, 3723, 33, 143, 3721, 13, 3720, 27, 25, - 35, 3719, 106, 3718, 3, 189, 3717, 3716, 4, 3715, - 3714, 2, 3711, 3709, 117, 3707, 94, 23, 164, 115, - 3706, 3704, 87, 209, 142, 3703, 3702, 109, 259, 200, - 3701, 100, 222, 263, 3700, 208, 3698, 3697, 3694, 3693, - 3692, 1215, 3690, 3689, 245, 70, 89, 3688, 221, 120, - 3687, 3686, 86, 159, 125, 112, 57, 84, 3684, 111, - 206, 3683, 197, 3682, 249, 3680, 3679, 108, 3678, 3676, - 3670, 3668, 193, 3666, 3663, 194, 219, 3662, 3657, 269, - 3655, 3654, 3653, 3650, 3649, 3648, 3639, 3638, 3637, 3636, - 253, 285, 3634, + 0, 176, 3656, 253, 210, 4307, 83, 256, 288, 267, + 255, 251, 4306, 4305, 4292, 3393, 3392, 4288, 4286, 4285, + 4283, 4282, 4281, 4280, 4279, 4277, 4274, 4271, 4270, 4267, + 4265, 4263, 4262, 4260, 4258, 4257, 4256, 4255, 4254, 4253, + 4251, 4250, 4249, 4248, 4246, 4234, 4233, 247, 4219, 4218, + 4217, 4216, 4213, 4212, 4211, 4210, 4209, 4208, 4204, 4201, + 4200, 4199, 4196, 4195, 4194, 4192, 4191, 4190, 4189, 4188, + 4186, 4185, 4183, 4182, 4181, 4180, 4178, 4177, 4176, 4175, + 4174, 4173, 4170, 4168, 4167, 216, 4166, 3384, 4165, 4163, + 4158, 4157, 4156, 4155, 4154, 4153, 4152, 4151, 4147, 313, + 4146, 4145, 4139, 4138, 4137, 4135, 4134, 4129, 4128, 4126, + 4122, 4120, 4119, 345, 4117, 4114, 4112, 4111, 226, 4108, + 323, 4107, 187, 150, 4104, 4103, 4101, 4100, 4096, 4094, + 4093, 4092, 4091, 4090, 4089, 4084, 4083, 4082, 239, 195, + 71, 4080, 52, 4078, 240, 205, 4076, 221, 4072, 148, + 4071, 159, 4068, 4067, 4066, 4065, 4064, 4063, 4061, 4060, + 4059, 4058, 4057, 4056, 4054, 4053, 4052, 4051, 4049, 4048, + 4047, 4044, 4041, 4040, 4039, 4036, 50, 4035, 266, 4034, + 76, 4033, 181, 4032, 69, 4030, 4029, 84, 4028, 4026, + 124, 149, 260, 3065, 261, 4025, 194, 4024, 4023, 254, + 192, 4022, 4021, 333, 4019, 170, 232, 162, 101, 121, + 4018, 142, 4017, 265, 51, 36, 250, 122, 151, 4016, + 4013, 56, 165, 133, 4011, 217, 104, 4010, 4007, 115, + 4006, 4005, 143, 4004, 238, 185, 4003, 110, 4001, 4000, + 3999, 20, 3998, 3996, 209, 196, 3993, 3992, 97, 3991, + 3990, 62, 137, 3989, 79, 129, 173, 120, 3987, 2815, + 126, 116, 3986, 125, 109, 3985, 177, 3983, 3982, 3981, + 3980, 182, 3979, 3977, 146, 70, 3976, 3975, 3973, 68, + 3972, 82, 3971, 38, 3970, 58, 3969, 3961, 3960, 3958, + 3957, 3956, 3953, 3952, 3951, 3950, 3949, 3948, 59, 3947, + 3945, 3943, 3942, 7, 14, 17, 3941, 30, 3940, 178, + 3920, 3919, 167, 3918, 200, 3916, 3915, 98, 93, 3914, + 94, 174, 3913, 8, 31, 75, 3912, 3910, 3909, 224, + 3908, 3907, 3906, 274, 3904, 3902, 3900, 164, 3898, 3897, + 3896, 694, 3895, 3893, 3892, 3890, 3889, 3888, 112, 3887, + 1, 220, 44, 3885, 135, 136, 3883, 41, 32, 3882, + 46, 117, 228, 138, 99, 3881, 3880, 3878, 561, 202, + 103, 43, 0, 102, 223, 161, 3877, 3876, 3875, 259, + 3874, 244, 208, 237, 132, 264, 295, 3873, 3872, 61, + 3869, 166, 26, 54, 141, 89, 23, 207, 3868, 883, + 9, 191, 3865, 218, 3864, 12, 16, 153, 156, 3862, + 3861, 34, 272, 3858, 3857, 3856, 144, 3855, 3850, 290, + 81, 3849, 3848, 3847, 3846, 3845, 40, 3844, 186, 18, + 3842, 111, 3841, 257, 3840, 249, 152, 184, 183, 158, + 234, 235, 85, 80, 3839, 1872, 157, 106, 15, 3837, + 231, 3835, 175, 134, 3834, 87, 3833, 248, 269, 206, + 3832, 190, 13, 49, 39, 28, 48, 11, 335, 203, + 3830, 3829, 24, 53, 3827, 55, 3826, 22, 3825, 3824, + 42, 3809, 60, 5, 3807, 3806, 19, 21, 3805, 37, + 215, 180, 131, 96, 63, 3803, 3801, 139, 163, 3799, + 169, 179, 160, 3797, 78, 3796, 3791, 3778, 3776, 762, + 258, 3775, 3774, 3773, 3772, 3771, 3770, 3769, 3768, 219, + 3766, 105, 45, 3761, 3760, 3759, 3757, 90, 154, 3756, + 3755, 3754, 3753, 33, 145, 3736, 10, 3735, 27, 25, + 35, 3734, 108, 3733, 3, 189, 3732, 3731, 4, 3730, + 3729, 2, 3728, 3723, 127, 3722, 95, 29, 171, 114, + 3721, 3720, 91, 214, 147, 3719, 3718, 107, 245, 204, + 3717, 100, 252, 268, 3715, 212, 3713, 3712, 3711, 3710, + 3706, 1198, 3705, 3704, 246, 65, 86, 3703, 233, 119, + 3702, 3701, 92, 168, 123, 130, 57, 88, 3700, 118, + 213, 3698, 199, 3697, 262, 3696, 3694, 113, 3693, 3692, + 3690, 3689, 193, 3687, 3686, 198, 241, 3685, 3683, 273, + 3680, 3673, 3672, 3670, 3669, 3667, 3666, 3665, 3663, 3661, + 242, 270, 3660, } -//line mysql_sql.y:13266 +//line mysql_sql.y:13277 type yySymType struct { union interface{} id int @@ -9218,82 +9239,82 @@ var yyR1 = [...]int{ 435, 601, 601, 600, 600, 600, 371, 371, 32, 431, 431, 433, 434, 434, 434, 425, 425, 425, 425, 36, 429, 429, 430, 430, 430, 430, 430, 430, 430, 430, - 430, 430, 430, 426, 426, 428, 428, 423, 423, 423, - 423, 423, 423, 423, 423, 35, 35, 182, 182, 422, - 422, 419, 419, 241, 241, 417, 417, 418, 418, 416, - 416, 416, 420, 420, 43, 78, 44, 45, 46, 42, - 421, 421, 186, 186, 186, 186, 186, 186, 189, 189, - 189, 189, 189, 188, 188, 188, 188, 187, 187, 34, + 430, 430, 430, 430, 426, 426, 428, 428, 423, 423, + 423, 423, 423, 423, 423, 423, 35, 35, 182, 182, + 422, 422, 419, 419, 241, 241, 417, 417, 418, 418, + 416, 416, 416, 420, 420, 43, 78, 44, 45, 46, + 42, 421, 421, 186, 186, 186, 186, 186, 186, 189, + 189, 189, 189, 189, 188, 188, 188, 188, 187, 187, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 141, 140, 140, 140, 140, 140, 143, 143, 355, 355, - 354, 354, 142, 295, 295, 41, 273, 273, 496, 496, - 491, 491, 491, 491, 491, 511, 511, 511, 492, 492, - 492, 493, 493, 493, 495, 495, 495, 494, 494, 494, - 494, 494, 510, 510, 512, 512, 512, 463, 463, 464, - 464, 464, 467, 467, 483, 483, 484, 484, 482, 482, - 489, 489, 488, 488, 487, 487, 486, 486, 485, 485, - 485, 485, 478, 478, 477, 477, 465, 465, 465, 465, - 465, 466, 466, 466, 476, 476, 481, 481, 326, 326, - 325, 325, 281, 281, 282, 282, 324, 324, 279, 279, - 280, 280, 280, 323, 323, 323, 323, 323, 323, 323, + 34, 141, 140, 140, 140, 140, 140, 143, 143, 355, + 355, 354, 354, 142, 295, 295, 41, 273, 273, 496, + 496, 491, 491, 491, 491, 491, 511, 511, 511, 492, + 492, 492, 493, 493, 493, 495, 495, 495, 494, 494, + 494, 494, 494, 510, 510, 512, 512, 512, 463, 463, + 464, 464, 464, 467, 467, 483, 483, 484, 484, 482, + 482, 489, 489, 488, 488, 487, 487, 486, 486, 485, + 485, 485, 485, 478, 478, 477, 477, 465, 465, 465, + 465, 465, 466, 466, 466, 476, 476, 481, 481, 326, + 326, 325, 325, 281, 281, 282, 282, 324, 324, 279, + 279, 280, 280, 280, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 561, 561, - 562, 284, 284, 296, 296, 296, 296, 296, 296, 283, - 283, 285, 285, 261, 261, 259, 259, 251, 251, 251, - 251, 251, 251, 252, 252, 253, 253, 254, 254, 254, - 258, 258, 257, 257, 257, 257, 255, 255, 256, 256, - 256, 256, 256, 256, 449, 449, 558, 558, 559, 559, - 554, 554, 554, 557, 557, 557, 557, 557, 557, 557, - 557, 560, 560, 560, 556, 556, 263, 349, 349, 349, - 372, 372, 372, 372, 374, 348, 348, 348, 278, 278, - 277, 277, 275, 275, 275, 275, 275, 275, 275, 275, + 323, 323, 323, 323, 323, 323, 323, 323, 323, 561, + 561, 562, 284, 284, 296, 296, 296, 296, 296, 296, + 283, 283, 285, 285, 261, 261, 259, 259, 251, 251, + 251, 251, 251, 251, 252, 252, 253, 253, 254, 254, + 254, 258, 258, 257, 257, 257, 257, 255, 255, 256, + 256, 256, 256, 256, 256, 449, 449, 558, 558, 559, + 559, 554, 554, 554, 557, 557, 557, 557, 557, 557, + 557, 557, 560, 560, 560, 556, 556, 263, 349, 349, + 349, 372, 372, 372, 372, 374, 348, 348, 348, 278, + 278, 277, 277, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, - 275, 275, 275, 275, 448, 448, 388, 388, 389, 389, - 307, 306, 306, 306, 306, 306, 304, 305, 303, 303, - 303, 303, 303, 300, 300, 299, 299, 299, 301, 301, - 301, 301, 301, 427, 427, 297, 297, 287, 287, 287, - 286, 286, 286, 490, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 397, 397, 397, + 275, 275, 275, 275, 275, 448, 448, 388, 388, 389, + 389, 307, 306, 306, 306, 306, 306, 304, 305, 303, + 303, 303, 303, 303, 300, 300, 299, 299, 299, 301, + 301, 301, 301, 301, 427, 427, 297, 297, 287, 287, + 287, 286, 286, 286, 490, 395, 395, 395, 395, 395, + 395, 395, 395, 395, 395, 395, 395, 395, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, - 397, 397, 397, 397, 397, 302, 346, 346, 346, 347, - 347, 347, 347, 347, 347, 347, 347, 398, 398, 404, - 404, 570, 570, 569, 264, 264, 264, 265, 265, 265, - 265, 265, 265, 265, 265, 265, 274, 274, 274, 472, - 472, 472, 472, 473, 473, 473, 473, 474, 474, 474, - 470, 470, 471, 471, 409, 410, 410, 517, 517, 518, - 518, 468, 468, 469, 345, 345, 345, 345, 345, 345, + 397, 397, 397, 397, 397, 397, 302, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 398, 398, + 404, 404, 570, 570, 569, 264, 264, 264, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 274, 274, 274, + 472, 472, 472, 472, 473, 473, 473, 473, 474, 474, + 474, 470, 470, 471, 471, 409, 410, 410, 517, 517, + 518, 518, 468, 468, 469, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 525, 525, 525, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 580, 580, 580, 566, - 566, 566, 567, 567, 567, 567, 567, 567, 567, 567, - 567, 567, 567, 567, 568, 568, 568, 568, 568, 568, + 345, 345, 345, 345, 345, 345, 345, 345, 525, 525, + 525, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 580, 580, 580, + 566, 566, 566, 567, 567, 567, 567, 567, 567, 567, + 567, 567, 567, 567, 567, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, - 568, 344, 344, 344, 344, 343, 343, 343, 343, 343, + 568, 568, 344, 344, 344, 344, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 411, 411, 412, 412, 522, 522, 522, - 522, 522, 522, 523, 523, 524, 524, 524, 524, 516, + 343, 343, 343, 343, 411, 411, 412, 412, 522, 522, + 522, 522, 522, 522, 523, 523, 524, 524, 524, 524, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 396, - 341, 341, 341, 413, 405, 405, 406, 406, 407, 407, - 399, 399, 399, 399, 399, 399, 400, 400, 402, 402, - 402, 402, 402, 402, 402, 402, 402, 402, 402, 394, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 396, 341, 341, 341, 413, 405, 405, 406, 406, 407, + 407, 399, 399, 399, 399, 399, 399, 400, 400, 402, + 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, - 401, 401, 403, 403, 415, 415, 415, 414, 414, 414, - 414, 414, 414, 414, 276, 276, 276, 276, 393, 393, - 393, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 266, 266, 266, 266, 270, 270, 272, + 394, 401, 401, 403, 403, 415, 415, 415, 414, 414, + 414, 414, 414, 414, 414, 276, 276, 276, 276, 393, + 393, 393, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 266, 266, 266, 266, 270, 270, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 271, 271, 271, 271, 271, 269, 269, - 269, 269, 269, 267, 267, 267, 267, 267, 267, 267, + 272, 272, 272, 272, 271, 271, 271, 271, 271, 269, + 269, 269, 269, 269, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 121, 122, 122, 268, 351, 351, 497, 497, - 500, 500, 498, 498, 499, 501, 501, 501, 502, 502, - 502, 503, 503, 503, 507, 507, 360, 360, 360, 368, - 368, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 267, 267, 267, 121, 122, 122, 268, 351, 351, 497, + 497, 500, 500, 498, 498, 499, 501, 501, 501, 502, + 502, 502, 503, 503, 503, 507, 507, 360, 360, 360, + 368, 368, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, @@ -9330,13 +9351,13 @@ var yyR1 = [...]int{ 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 365, 365, 365, 365, 365, 365, 365, 365, + 367, 367, 367, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 366, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, - 365, 365, 365, + 365, 365, 365, 365, } var yyR2 = [...]int{ @@ -9392,7 +9413,7 @@ var yyR2 = [...]int{ 1, 3, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 2, 1, 3, 2, 1, 2, - 2, 1, 2, 3, 2, 2, 3, 6, 3, 3, + 2, 1, 2, 3, 2, 2, 3, 4, 3, 3, 3, 1, 1, 7, 7, 7, 8, 8, 0, 4, 7, 6, 6, 0, 3, 0, 2, 0, 1, 1, 1, 1, 4, 2, 2, 3, 3, 4, 5, 3, @@ -9457,82 +9478,82 @@ var yyR2 = [...]int{ 2, 0, 1, 3, 4, 3, 1, 1, 4, 1, 3, 1, 1, 1, 1, 0, 1, 1, 1, 11, 0, 2, 3, 3, 2, 2, 3, 1, 1, 3, - 3, 3, 1, 1, 3, 3, 4, 0, 2, 2, - 2, 2, 2, 2, 2, 6, 8, 0, 4, 1, - 1, 0, 3, 0, 1, 0, 1, 1, 2, 4, - 4, 4, 0, 1, 8, 2, 4, 4, 4, 9, - 0, 2, 8, 9, 5, 5, 7, 7, 0, 3, - 3, 3, 2, 0, 3, 3, 3, 0, 3, 11, - 9, 11, 8, 6, 9, 7, 10, 7, 6, 8, - 2, 2, 9, 4, 5, 3, 0, 4, 1, 3, - 0, 3, 6, 0, 2, 10, 0, 2, 0, 2, - 0, 3, 2, 4, 3, 0, 2, 1, 0, 2, - 3, 0, 2, 3, 0, 2, 1, 0, 3, 2, - 4, 3, 0, 1, 0, 1, 1, 0, 6, 0, - 3, 5, 0, 4, 0, 3, 1, 3, 4, 5, - 0, 3, 1, 3, 2, 3, 1, 2, 0, 4, - 6, 5, 0, 2, 0, 2, 4, 5, 4, 5, - 1, 5, 6, 5, 0, 3, 0, 1, 1, 3, - 3, 3, 0, 4, 1, 3, 3, 3, 0, 1, - 1, 3, 2, 3, 3, 3, 4, 4, 3, 3, - 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, - 3, 3, 3, 3, 3, 1, 5, 4, 1, 3, - 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 2, 4, 0, 5, 5, - 5, 5, 6, 0, 1, 1, 3, 1, 1, 1, - 1, 1, 7, 9, 7, 9, 2, 1, 7, 9, - 7, 9, 8, 5, 0, 1, 0, 1, 1, 1, - 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 1, 3, 1, 3, 5, - 1, 1, 1, 1, 1, 1, 3, 5, 0, 1, - 1, 2, 1, 2, 2, 1, 1, 2, 2, 2, - 3, 3, 2, 2, 1, 5, 6, 4, 1, 1, - 1, 5, 4, 1, 1, 2, 0, 1, 1, 2, - 5, 0, 1, 1, 2, 2, 3, 3, 1, 1, - 2, 2, 2, 0, 1, 2, 2, 2, 0, 4, - 7, 3, 3, 0, 3, 0, 3, 1, 1, 1, - 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, - 3, 5, 2, 2, 2, 2, 4, 1, 1, 2, - 5, 6, 8, 6, 3, 6, 6, 1, 1, 1, - 1, 1, 1, 3, 9, 1, 4, 4, 4, 7, - 9, 7, 7, 7, 9, 7, 7, 0, 2, 0, - 1, 1, 2, 4, 1, 2, 2, 1, 2, 2, - 1, 2, 2, 2, 2, 2, 0, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, - 2, 5, 0, 1, 3, 0, 1, 0, 2, 0, - 2, 0, 1, 6, 8, 8, 6, 6, 5, 5, - 5, 6, 6, 6, 6, 5, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 1, 1, 1, - 4, 4, 6, 8, 6, 4, 5, 4, 4, 4, - 3, 4, 6, 6, 7, 4, 1, 1, 1, 1, + 3, 3, 1, 1, 1, 3, 3, 4, 0, 2, + 2, 2, 2, 2, 2, 2, 6, 8, 0, 4, + 1, 1, 0, 3, 0, 1, 0, 1, 1, 2, + 4, 4, 4, 0, 1, 8, 2, 4, 4, 4, + 9, 0, 2, 8, 9, 5, 5, 7, 7, 0, + 3, 3, 3, 2, 0, 3, 3, 3, 0, 3, + 11, 9, 11, 8, 6, 9, 7, 10, 7, 6, + 8, 2, 2, 9, 4, 5, 3, 0, 4, 1, + 3, 0, 3, 6, 0, 2, 10, 0, 2, 0, + 2, 0, 3, 2, 4, 3, 0, 2, 1, 0, + 2, 3, 0, 2, 3, 0, 2, 1, 0, 3, + 2, 4, 3, 0, 1, 0, 1, 1, 0, 6, + 0, 3, 5, 0, 4, 0, 3, 1, 3, 4, + 5, 0, 3, 1, 3, 2, 3, 1, 2, 0, + 4, 6, 5, 0, 2, 0, 2, 4, 5, 4, + 5, 1, 5, 6, 5, 0, 3, 0, 1, 1, + 3, 3, 3, 0, 4, 1, 3, 3, 3, 0, + 1, 1, 3, 2, 3, 3, 3, 4, 4, 3, + 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, + 3, 3, 3, 3, 3, 3, 1, 5, 4, 1, + 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 2, 4, 0, 5, + 5, 5, 5, 6, 0, 1, 1, 3, 1, 1, + 1, 1, 1, 7, 9, 7, 9, 2, 1, 7, + 9, 7, 9, 8, 5, 0, 1, 0, 1, 1, + 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 1, 3, 1, 3, + 5, 1, 1, 1, 1, 1, 1, 3, 5, 0, + 1, 1, 2, 1, 2, 2, 1, 1, 2, 2, + 2, 3, 3, 2, 2, 1, 5, 6, 4, 1, + 1, 1, 5, 4, 1, 1, 2, 0, 1, 1, + 2, 5, 0, 1, 1, 2, 2, 3, 3, 1, + 1, 2, 2, 2, 0, 1, 2, 2, 2, 0, + 4, 7, 3, 3, 0, 3, 0, 3, 1, 1, + 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, + 1, 3, 5, 2, 2, 2, 2, 4, 1, 1, + 2, 5, 6, 8, 6, 3, 6, 6, 1, 1, + 1, 1, 1, 1, 3, 9, 1, 4, 4, 4, + 7, 9, 7, 7, 7, 9, 7, 7, 0, 2, + 0, 1, 1, 2, 4, 1, 2, 2, 1, 2, + 2, 1, 2, 2, 2, 2, 2, 0, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, + 1, 2, 5, 0, 1, 3, 0, 1, 0, 2, + 0, 2, 0, 1, 6, 8, 8, 6, 6, 5, + 5, 5, 6, 6, 6, 6, 5, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, + 1, 4, 4, 6, 8, 6, 4, 5, 4, 4, + 4, 3, 4, 6, 6, 7, 4, 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, 2, 2, 8, 8, 4, 2, 3, 2, 4, - 2, 2, 4, 6, 2, 2, 4, 6, 4, 2, - 4, 4, 4, 0, 1, 2, 3, 1, 1, 1, - 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 8, 8, 4, 2, 3, 2, + 4, 2, 2, 4, 6, 2, 2, 4, 6, 4, + 2, 4, 4, 4, 0, 1, 2, 3, 1, 1, + 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 0, 1, 1, 3, 0, 1, 1, 3, 1, 3, - 3, 3, 3, 3, 2, 1, 1, 1, 3, 4, - 3, 4, 3, 4, 3, 4, 3, 4, 1, 3, - 4, 4, 5, 4, 5, 3, 4, 5, 6, 1, - 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, - 1, 1, 2, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 4, - 4, 1, 2, 3, 5, 1, 1, 3, 0, 1, - 0, 3, 0, 3, 3, 0, 3, 5, 0, 3, - 5, 0, 1, 1, 0, 1, 1, 2, 2, 0, + 3, 0, 1, 1, 3, 0, 1, 1, 3, 1, + 3, 3, 3, 3, 3, 2, 1, 1, 1, 3, + 4, 3, 4, 3, 4, 3, 4, 3, 4, 1, + 3, 4, 4, 5, 4, 5, 3, 4, 5, 6, + 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 2, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 4, 4, 1, 2, 3, 5, 1, 1, 3, 0, + 1, 0, 3, 0, 3, 3, 0, 3, 5, 0, + 3, 5, 0, 1, 1, 0, 1, 1, 2, 2, + 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, 1, @@ -9575,138 +9596,138 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, + 1, 1, 1, 1, } var yyChk = [...]int{ - -1000, -625, -628, -2, -5, 655, -1, -4, -122, -91, + -1000, -625, -628, -2, -5, 656, -1, -4, -122, -91, -7, -14, -124, -125, -8, -120, -9, -10, -12, -98, -115, -117, -119, -118, -47, -11, -114, -85, -86, -100, -108, -111, -112, -113, -126, -121, -123, -190, -127, -128, - -129, -173, -132, -134, -135, -186, 645, -92, -93, -94, + -129, -173, -132, -134, -135, -186, 646, -92, -93, -94, -95, -96, -97, -33, -32, -31, -30, -159, -164, -167, - -169, -130, 578, 651, 481, 16, 530, -15, -16, -571, + -169, -130, 579, 652, 482, 16, 531, -15, -16, -571, -17, 277, -376, -377, -378, -380, -629, -48, -49, -50, -60, -61, -62, -63, -64, -74, -75, -76, -51, -52, -53, -56, -54, -67, -66, -68, -69, -70, -71, -72, -73, -55, -59, -162, -163, -77, -57, -78, -58, -171, -174, -131, -79, -80, -81, -83, -82, -88, -84, -89, -161, -166, -13, -172, -90, 251, -87, 79, -101, -102, - -103, -104, -105, -106, -107, -109, -110, 408, 414, 468, - 644, 64, -191, -193, 674, 675, 678, 566, 569, 295, + -103, -104, -105, -106, -107, -109, -110, 409, 415, 469, + 645, 64, -191, -193, 675, 676, 679, 567, 570, 295, 175, 176, 178, 179, 183, 186, -34, -35, -36, -37, -38, -39, -41, -40, -42, -43, -44, -45, -46, 247, 18, 14, -18, -21, -19, -22, -20, -28, -29, -27, -24, -26, -160, -25, -165, -23, -168, -170, -133, 272, - 271, 41, 338, 339, 340, 412, 270, 248, 250, 17, - 34, 45, 387, -192, 88, 567, 249, -194, 15, 680, + 271, 41, 338, 339, 340, 413, 270, 248, 250, 17, + 34, 45, 388, -192, 88, 568, 249, -194, 15, 681, -6, -3, -2, -146, -150, -154, -157, -158, -155, -156, - -4, -122, 123, 262, 646, -372, 404, 647, 649, 648, - 91, 99, -365, -367, 481, 277, 408, 414, 644, 675, - 678, 566, 569, 295, 580, 581, 582, 583, 584, 585, - 586, 587, 589, 590, 591, 592, 593, 594, 595, 605, - 606, 596, 597, 598, 599, 600, 601, 602, 603, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, - 618, 619, 620, 533, 534, 630, 631, 632, 633, 562, - 588, 624, 625, 626, 627, 385, 386, 571, 289, 313, - 436, 319, 326, 383, 175, 193, 189, 216, 207, 345, - 344, 567, 184, 293, 331, 294, 98, 178, 516, 113, - 493, 465, 181, 350, 353, 351, 352, 308, 310, 312, - 563, 564, 398, 315, 561, 314, 316, 318, 565, 349, - 388, 203, 198, 307, 291, 196, 296, 43, 297, 381, - 380, 221, 298, 299, 575, 489, 384, 495, 323, 55, - 463, 197, 490, 311, 492, 225, 229, 507, 371, 508, - 166, 167, 497, 510, 220, 223, 224, 269, 377, 378, - 46, 573, 281, 511, 227, 670, 219, 214, 519, 327, + -4, -122, 123, 262, 647, -372, 405, 648, 650, 649, + 91, 99, -365, -367, 482, 277, 409, 415, 645, 676, + 679, 567, 570, 295, 581, 582, 583, 584, 585, 586, + 587, 588, 590, 591, 592, 593, 594, 595, 596, 606, + 607, 597, 598, 599, 600, 601, 602, 603, 604, 608, + 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, + 619, 620, 621, 534, 535, 631, 632, 633, 634, 563, + 589, 625, 626, 627, 628, 386, 387, 572, 289, 313, + 437, 319, 326, 383, 175, 193, 189, 216, 207, 345, + 344, 568, 184, 293, 331, 294, 98, 178, 517, 113, + 494, 466, 181, 350, 353, 351, 352, 308, 310, 312, + 564, 565, 399, 315, 562, 314, 316, 318, 566, 349, + 389, 203, 198, 307, 291, 196, 296, 43, 297, 381, + 380, 221, 298, 299, 576, 490, 385, 496, 323, 55, + 464, 197, 491, 311, 493, 225, 229, 508, 371, 509, + 166, 167, 498, 511, 220, 223, 224, 269, 377, 378, + 46, 574, 281, 512, 227, 671, 219, 214, 520, 327, 325, 382, 218, 192, 213, 292, 68, 231, 230, 232, - 459, 460, 461, 462, 300, 301, 402, 506, 210, 199, - 389, 185, 25, 514, 276, 494, 415, 354, 302, 320, - 328, 226, 228, 283, 288, 343, 574, 467, 287, 324, - 512, 195, 280, 309, 275, 515, 671, 186, 417, 303, - 179, 317, 509, 673, 518, 67, 161, 191, 182, 662, - 663, 266, 176, 285, 290, 672, 304, 305, 306, 560, - 330, 329, 321, 183, 568, 211, 282, 217, 201, 190, - 212, 177, 284, 517, 162, 642, 387, 446, 209, 206, - 286, 259, 513, 496, 180, 450, 164, 204, 332, 637, - 638, 639, 403, 376, 333, 334, 202, 273, 487, 488, - 337, 456, 366, 430, 466, 437, 431, 238, 239, 341, - 499, 501, 222, 640, 355, 356, 357, 491, 358, 359, - 360, 361, 407, 59, 61, 100, 103, 102, 676, 677, - 66, 32, 393, 396, 428, 432, 368, 643, 572, 365, - 369, 370, 397, 28, 448, 419, 452, 451, 51, 52, - 53, 56, 57, 58, 60, 62, 63, 54, 559, 412, - 425, 520, 48, 50, 422, 30, 399, 447, 469, 364, - 449, 480, 49, 478, 479, 500, 29, 401, 400, 65, - 47, 455, 457, 458, 335, 362, 410, 652, 521, 405, - 421, 424, 406, 367, 395, 426, 70, 418, 653, 413, - 411, 363, 576, 577, 372, 604, 390, 464, 556, 555, - 554, 553, 552, 551, 550, 549, 338, 339, 340, 433, - 434, 435, 445, 438, 439, 440, 441, 442, 443, 444, - 483, 484, 654, 502, 504, 505, 503, 254, 679, 391, - 392, 257, 656, 657, 101, 658, 660, 659, 31, 661, - 669, 666, 667, 668, 579, 664, -454, -452, -372, 567, - 295, 644, 414, 566, 569, 408, 387, 675, 678, 412, - 277, 338, 339, 340, 481, 385, -245, -372, 679, -203, + 460, 461, 462, 463, 300, 301, 403, 507, 210, 199, + 390, 185, 25, 515, 276, 495, 416, 354, 302, 320, + 328, 226, 228, 283, 288, 343, 575, 468, 287, 324, + 513, 195, 280, 309, 275, 516, 672, 186, 418, 303, + 179, 317, 510, 674, 519, 67, 161, 191, 182, 663, + 664, 266, 176, 285, 290, 673, 304, 305, 306, 561, + 330, 329, 321, 183, 569, 211, 282, 217, 201, 190, + 212, 177, 284, 518, 162, 643, 388, 447, 209, 206, + 286, 259, 514, 497, 180, 451, 164, 204, 332, 638, + 639, 640, 404, 376, 333, 334, 202, 273, 488, 489, + 337, 457, 366, 431, 467, 438, 432, 238, 239, 341, + 500, 502, 222, 641, 355, 356, 357, 492, 358, 359, + 360, 361, 408, 59, 61, 100, 103, 102, 677, 678, + 66, 32, 394, 397, 429, 433, 368, 644, 573, 365, + 369, 370, 398, 28, 449, 420, 453, 452, 51, 52, + 53, 56, 57, 58, 60, 62, 63, 54, 560, 413, + 426, 521, 48, 50, 423, 30, 400, 448, 470, 364, + 450, 481, 49, 479, 480, 501, 29, 402, 401, 65, + 47, 456, 458, 459, 335, 362, 411, 653, 522, 406, + 422, 425, 407, 367, 396, 427, 70, 419, 654, 414, + 412, 363, 577, 578, 372, 605, 391, 465, 557, 556, + 555, 554, 553, 552, 551, 550, 338, 339, 340, 434, + 435, 436, 446, 439, 440, 441, 442, 443, 444, 445, + 484, 485, 655, 503, 505, 506, 504, 254, 680, 392, + 393, 257, 657, 658, 101, 659, 661, 660, 31, 662, + 670, 667, 668, 669, 580, 665, -454, -452, -372, 568, + 295, 645, 415, 567, 570, 409, 388, 676, 679, 413, + 277, 338, 339, 340, 482, 386, -245, -372, 680, -203, 261, 42, -259, -372, -203, -87, -16, -15, -192, -193, - -259, 256, -381, 26, 463, -99, 464, 251, 252, 88, - 80, -372, -9, -113, -8, -120, -85, -190, 468, -379, - -372, 338, 338, -379, 256, -374, 287, 444, -372, -509, + -259, 256, -381, 26, 464, -99, 465, 251, 252, 88, + 80, -372, -9, -113, -8, -120, -85, -190, 469, -379, + -372, 338, 338, -379, 256, -374, 287, 445, -372, -509, 262, -458, -431, 288, -457, -433, -460, -434, 35, 247, - 249, 248, 578, 284, 18, 412, 258, 16, 15, 413, - 270, 28, 29, 31, 17, 414, 416, 32, 417, 420, - 421, 422, 45, 425, 426, 277, 91, 99, 94, 295, + 249, 248, 579, 284, 18, 413, 258, 16, 15, 414, + 270, 28, 29, 31, 17, 415, 417, 32, 418, 421, + 422, 423, 45, 426, 427, 277, 91, 99, 94, 295, -244, -372, -407, -399, 120, -402, -394, -395, -397, -350, - -545, -392, 88, 147, 148, 155, 121, 681, -396, -490, - 39, 123, 584, 588, 624, 531, -342, -343, -344, -345, - -346, -347, 570, -372, -546, -544, 94, 104, 106, 110, + -545, -392, 88, 147, 148, 155, 121, 682, -396, -490, + 39, 123, 585, 589, 625, 532, -342, -343, -344, -345, + -346, -347, 571, -372, -546, -544, 94, 104, 106, 110, 111, 109, 107, 169, 200, 108, 95, 170, -193, 91, - -566, 594, -366, 617, 630, 631, 632, 633, 616, 64, + -566, 595, -366, 618, 631, 632, 633, 634, 617, 64, -516, -524, 255, -522, 168, 205, 273, 201, 16, 153, - 456, 202, 625, 626, 627, 591, 613, 533, 534, 595, - 605, 620, 586, 587, 589, 581, 582, 583, 585, 596, - 598, 612, -525, 608, 618, 619, 604, 628, 629, 666, - 621, 622, 623, 660, 93, 92, 611, 610, 597, 592, - 593, 599, 580, 590, 600, 601, 609, 614, 615, 396, - 113, 397, 398, 523, 388, 83, 399, 262, 463, 73, - 400, 401, 402, 403, 404, 530, 405, 74, 406, 395, - 277, 446, 407, 204, 222, 536, 535, 537, 527, 524, - 522, 525, 526, 528, 529, 602, 603, 607, -136, -138, - 635, -619, -333, -620, 6, 7, 8, 9, -621, 170, - -610, 465, 574, 94, 523, 256, 331, 385, 19, 665, - 565, 665, 565, 345, 180, 177, -445, 180, 119, 186, - 185, 260, 180, -445, -372, 183, 665, 182, 662, 341, - -421, -177, 385, 446, 358, 100, 287, -425, -422, 563, + 457, 202, 626, 627, 628, 592, 614, 534, 535, 596, + 606, 621, 587, 588, 590, 582, 583, 584, 586, 597, + 599, 613, -525, 609, 619, 620, 605, 629, 630, 667, + 622, 623, 624, 661, 93, 92, 612, 611, 598, 593, + 594, 600, 581, 591, 601, 602, 610, 615, 616, 397, + 113, 398, 399, 524, 389, 83, 400, 262, 464, 73, + 401, 402, 403, 404, 405, 531, 406, 74, 407, 396, + 277, 447, 408, 204, 222, 537, 536, 538, 528, 525, + 523, 526, 527, 529, 530, 603, 604, 608, -136, -138, + 636, -619, -333, -620, 6, 7, 8, 9, -621, 170, + -610, 466, 575, 94, 524, 256, 331, 386, 19, 666, + 566, 666, 566, 345, 180, 177, -445, 180, 119, 186, + 185, 260, 180, -445, -372, 183, 666, 182, 663, 341, + -421, -177, 386, 447, 358, 100, 287, -425, -422, 564, -510, 335, 331, 307, 257, 116, -178, 267, 266, 114, - 523, 255, 423, 326, 59, 61, -581, -582, 244, 245, - 246, -573, 557, -572, -372, 665, 670, 398, 102, 103, - 662, 663, 30, 256, 409, 283, 501, 499, 500, 502, - 503, 504, 505, -65, -526, -508, 496, 495, -385, 488, - 494, 486, 498, 489, 386, 360, 578, 359, 247, 656, - 564, 558, -360, 430, 466, 520, 521, 410, 467, 507, - 509, 490, 113, 208, 205, 257, 259, 256, 662, 385, - 523, 446, 100, 358, 256, -581, 670, 177, 507, 509, - 465, 287, 444, 44, -451, 456, -450, -452, 508, 519, - 92, 93, 506, -360, 113, 487, 487, -619, -333, -191, - -193, -123, -571, 565, 665, 257, 385, 446, 287, 258, - 256, 560, 563, 259, 523, 255, 338, 409, 283, 358, - 100, 182, 662, -197, -198, -199, 240, 241, 242, 72, - 245, 243, 69, 35, 36, 37, -1, 127, 680, -399, - -399, -6, 683, -6, -399, -372, -372, 172, -266, -270, + 524, 255, 424, 326, 59, 61, -581, -582, 244, 245, + 246, -573, 558, -572, -372, 666, 671, 399, 102, 103, + 663, 664, 30, 256, 410, 283, 502, 500, 501, 503, + 504, 505, 506, -65, -526, -508, 497, 496, -385, 489, + 495, 487, 499, 490, 387, 360, 579, 359, 247, 657, + 565, 559, -360, 431, 467, 521, 522, 411, 468, 508, + 510, 491, 113, 208, 205, 257, 259, 256, 663, 386, + 524, 447, 100, 358, 256, -581, 671, 177, 508, 510, + 466, 287, 445, 44, -451, 457, -450, -452, 509, 520, + 92, 93, 507, -360, 113, 488, 488, -619, -333, -191, + -193, -123, -571, 566, 666, 257, 386, 447, 287, 258, + 256, 561, 564, 259, 524, 255, 338, 410, 283, 358, + 100, 182, 663, -197, -198, -199, 240, 241, 242, 72, + 245, 243, 69, 35, 36, 37, -1, 127, 681, -399, + -399, -6, 684, -6, -399, -372, -372, 172, -266, -270, -267, -269, -268, -272, -271, 205, 206, 168, 209, 215, 211, 212, 213, 214, 216, 217, 218, 219, 220, 223, 224, 221, 34, 222, 273, 201, 202, 203, 204, 225, - 189, 207, 572, 233, 190, 234, 191, 235, 192, 236, + 189, 207, 573, 233, 190, 234, 191, 235, 192, 236, 166, 167, 237, 193, 196, 197, 198, 199, 195, 171, -233, 94, 35, 88, 171, 94, -223, 279, -203, -259, - -251, 171, 681, -223, -619, -213, -214, 11, -259, -348, - -372, 465, 130, -99, 80, -99, 464, 80, -99, 464, - 251, -574, -575, -576, -578, 251, 464, 463, 252, 322, + -251, 171, 682, -223, -619, -213, -214, 11, -259, -348, + -372, 466, 130, -99, 80, -99, 465, 80, -99, 465, + 251, -574, -575, -576, -578, 251, 465, 464, 252, 322, -118, 171, 295, 19, -379, -379, 86, -259, -433, 287, - -458, -431, 39, 85, 172, 260, 172, 85, 88, 410, - 385, 446, 411, 523, 256, 423, 259, 287, 424, 385, - 446, 256, 259, 523, 287, 385, 256, 259, 446, 287, - 424, 385, 486, 487, 259, 30, 415, 418, 419, 487, - -530, 519, 172, 119, 116, 117, 118, -399, 137, -414, + -458, -431, 39, 85, 172, 260, 172, 85, 88, 411, + 386, 447, 412, 524, 256, 424, 259, 287, 425, 386, + 447, 256, 259, 524, 287, 386, 256, 259, 447, 287, + 425, 386, 487, 488, 259, 30, 416, 419, 420, 488, + -530, 520, 172, 119, 116, 117, 118, -399, 137, -414, 130, 131, 132, 133, 134, 135, 136, 144, 143, 154, 147, 148, 149, 150, 151, 152, 153, 145, 146, 140, 120, 138, 142, 139, 122, 159, 158, -193, -399, -407, @@ -9719,108 +9740,108 @@ var yyChk = [...]int{ 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, -214, 172, -213, 88, -213, -214, -194, -193, 35, 36, 35, 36, - 35, 36, 35, 36, -622, 653, 88, 104, 676, 238, - -227, -372, -228, -372, -144, 19, 681, -372, 662, -604, - 35, 568, 568, 568, 568, 247, 18, 349, 57, 512, + 35, 36, 35, 36, -622, 654, 88, 104, 677, 238, + -227, -372, -228, -372, -144, 19, 682, -372, 663, -604, + 35, 569, 569, 569, 569, 247, 18, 349, 57, 513, 14, 184, 185, 186, -372, 183, 260, -372, -419, 262, - -419, -419, -243, -372, 283, 409, 259, 560, 259, -178, + -419, -419, -243, -372, 283, 410, 259, 561, 259, -178, -419, -419, -419, -419, -419, 258, -419, 26, 256, 256, - 256, 256, -419, 530, 130, 130, 62, -583, 188, 172, - -573, -222, 88, -604, 671, 672, 673, -384, 138, 142, + 256, 256, -419, 531, 130, 130, 62, -583, 188, 172, + -573, -222, 88, -604, 672, 673, 674, -384, 138, 142, -384, -329, 20, -329, 26, 26, 285, 285, 285, -384, 325, -630, -631, 19, 140, -382, -631, -382, -382, -384, - -632, 258, 497, 46, 286, 285, -215, -216, 24, -215, - 491, 487, -475, 492, 493, -386, -631, -385, -384, -384, - -385, -384, -384, -384, 35, 256, 259, 523, 358, 657, - -630, -630, 34, 34, -509, -509, -259, -509, -509, 558, + -632, 258, 498, 46, 286, 285, -215, -216, 24, -215, + 492, 488, -475, 493, 494, -386, -631, -385, -384, -384, + -385, -384, -384, -384, 35, 256, 259, 524, 358, 658, + -630, -630, 34, 34, -509, -509, -259, -509, -509, 559, -361, -372, -509, -509, -509, -313, -314, -259, -584, 261, - 673, -616, -615, 510, -618, 512, 177, -452, 177, -452, + 674, -616, -615, 511, -618, 513, 177, -452, 177, -452, 91, -433, 287, 287, 172, 130, 26, -453, 130, 141, -452, -452, -453, -453, -283, 44, -371, 168, -372, 94, -283, 44, -613, -612, -259, -214, -194, -193, 89, 89, - 89, 568, -604, -509, -509, -509, -509, -509, -510, -509, + 89, 569, -604, -509, -509, -509, -509, -509, -510, -509, -509, -509, -509, -509, -379, -234, -372, -245, 262, -509, -509, -509, -509, -195, -196, 149, -399, -372, -199, -3, - -148, -147, 124, 125, 127, 647, 404, 646, 650, 644, + -148, -147, 124, 125, 127, 648, 405, 647, 651, 645, -452, 44, -503, 162, 161, -497, -499, 88, -498, 88, -498, -498, -498, -498, -498, 88, 88, -500, 88, -500, -500, -497, -501, 88, -501, -502, 88, -502, -501, -372, -479, 14, -405, -407, -372, 42, -519, 64, -190, 88, - 34, 88, -223, -372, 202, 182, 661, 38, -520, 64, + 34, 88, -223, -372, 202, 182, 662, 38, -520, 64, -190, 88, 34, -214, -139, 42, -216, 23, 171, 104, 94, -118, -99, 80, -118, -99, -99, 89, 172, -577, 110, 111, -579, 94, 220, 211, -372, -116, 94, -544, - -7, -11, -8, -9, -10, -47, -85, -190, 566, 569, - -547, -545, 88, 35, 455, 85, 19, -459, 256, 523, - 409, 283, 259, 385, -457, -440, -437, -435, -371, -433, - -436, -435, -462, -348, 487, -140, 470, 469, 337, -399, + -7, -11, -8, -9, -10, -47, -85, -190, 567, 570, + -547, -545, 88, 35, 456, 85, 19, -459, 256, 524, + 410, 283, 259, 386, -457, -440, -437, -435, -371, -433, + -436, -435, -462, -348, 488, -140, 471, 470, 337, -399, -399, -399, -399, -399, 109, 120, 376, 110, 111, -394, -415, 35, 333, 334, -395, -395, -395, -395, -395, -395, -395, -395, -395, -395, -395, -395, -403, -413, -490, 88, 140, 138, 142, 139, 122, -397, -397, -395, -395, -264, -266, 161, 162, -285, -371, 168, 89, 172, -399, -570, -569, 124, -399, -399, -399, -399, -426, -428, -348, 88, - -372, -567, -568, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 400, 395, 401, 399, 388, 407, - 402, 403, 204, 555, 556, 549, 550, 551, 552, 553, - 554, -405, -405, -399, -567, -405, -341, 36, 35, -407, + -372, -567, -568, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 401, 396, 402, 400, 389, 408, + 403, 404, 204, 556, 557, 550, 551, 552, 553, 554, + 555, -405, -405, -399, -567, -405, -341, 36, 35, -407, -407, -407, 89, -399, -580, 374, 373, 375, -218, -372, -405, 89, 89, 89, 104, -407, -407, -405, -395, -405, -405, -405, -405, -568, -568, -341, -341, -341, -341, 149, -407, -407, -341, -341, -341, -341, 149, -341, -341, -341, -341, -341, -341, -341, -341, -341, -341, -341, 89, 89, 89, 149, -407, -215, -138, -528, -527, -399, 44, -139, - -216, -623, 654, 88, -348, -611, 94, 94, 681, -144, - 171, 19, 256, -144, 171, 662, 182, -144, 19, -372, - -372, 104, -372, 104, 256, 523, 256, 523, -259, -259, - 513, 514, 181, 185, 184, -372, 183, -372, -372, 120, + -216, -623, 655, 88, -348, -611, 94, 94, 682, -144, + 171, 19, 256, -144, 171, 663, 182, -144, 19, -372, + -372, 104, -372, 104, 256, 524, 256, 524, -259, -259, + 514, 515, 181, 185, 184, -372, 183, -372, -372, 120, -372, -372, 38, -245, -234, -419, -419, -419, -588, -372, 95, -441, -438, -435, -372, -372, -431, -372, -361, -259, -419, -419, -419, -419, -259, -294, 56, 57, 58, -435, -179, 59, 60, -584, -572, 38, -221, -372, -329, -397, - -397, -399, 385, 523, 256, -435, 287, -630, -384, -384, + -397, -399, 386, 524, 256, -435, 287, -630, -384, -384, -362, -361, -386, -381, -386, -386, -329, -382, -384, -384, - -399, -386, -382, -329, -372, 487, -329, -329, -475, -384, + -399, -386, -382, -329, -372, 488, -329, -329, -475, -384, -383, -372, -383, -419, -361, -362, -362, -259, -259, -308, - -315, -309, -316, 279, 253, 393, 394, 250, 248, 11, - 249, -323, 326, -420, 531, -289, -290, 80, 45, -292, - 277, 432, 428, 289, 293, 98, 294, 465, 295, 258, - 297, 298, 299, 314, 316, 269, 300, 301, 302, 456, - 303, 176, 315, 304, 305, 306, 411, -284, 6, 361, - 44, 54, 55, 479, 478, 576, 14, 290, -372, -588, + -315, -309, -316, 279, 253, 394, 395, 250, 248, 11, + 249, -323, 326, -420, 532, -289, -290, 80, 45, -292, + 277, 433, 429, 289, 293, 98, 294, 466, 295, 258, + 297, 298, 299, 314, 316, 269, 300, 301, 302, 457, + 303, 176, 315, 304, 305, 306, 412, -284, 6, 361, + 44, 54, 55, 480, 479, 577, 14, 290, -372, -588, -586, 34, -372, 34, -441, -435, -372, -372, 172, 260, -206, -208, -205, -201, -202, -207, -332, -334, -204, 88, - -259, -193, -372, -452, 172, 511, 513, 514, -616, -453, - -616, -453, 260, 35, 455, -456, 455, 35, -431, -450, - 507, 509, -446, 94, 456, -436, -455, 85, 168, -527, - -453, -453, -455, -455, 158, 172, -614, 512, 513, 244, - -215, 104, -241, 664, -261, -259, -588, -440, -431, -372, + -259, -193, -372, -452, 172, 512, 514, 515, -616, -453, + -616, -453, 260, 35, 456, -456, 456, 35, -431, -450, + 508, 510, -446, 94, 457, -436, -455, 85, 168, -527, + -453, -453, -455, -455, 158, 172, -614, 513, 514, 244, + -215, 104, -241, 665, -261, -259, -588, -440, -431, -372, -509, -261, -261, -261, -374, -374, 88, 171, 39, -372, -372, -372, -372, -328, 172, -327, 19, -373, -372, 38, - 94, 171, -149, -147, 126, -399, -6, 646, -399, -6, + 94, 171, -149, -147, 126, -399, -6, 647, -399, -6, -6, -399, -6, -399, -507, 164, 104, 104, -351, 94, - -351, 104, 104, 104, 579, 89, 94, -444, 85, -521, - -408, -565, 635, -225, 89, -218, -563, -564, -218, -224, + -351, 104, 104, 104, 580, 89, 94, -444, 85, -521, + -408, -565, 636, -225, 89, -218, -563, -564, -218, -224, -372, -519, -251, 130, 130, 130, 27, -521, -225, 89, - -563, -215, 636, -139, -212, -211, -399, -372, 26, -118, + -563, -215, 637, -139, -212, -211, -399, -372, 26, -118, -99, -575, 171, 172, -221, -459, -439, -436, -461, 149, - -372, -447, 172, 14, 684, 92, 260, -601, -600, 447, - 89, 172, -531, 261, 530, 94, 681, 463, 238, 239, + -372, -447, 172, 14, 685, 92, 260, -601, -600, 448, + 89, 172, -531, 261, 531, 94, 682, 464, 238, 239, 109, 376, 110, 111, -490, -407, -403, -397, -397, -395, -395, -401, 274, -401, 119, -274, 167, 166, -274, -399, - 682, -398, -569, 126, -399, 38, 172, 38, 172, 86, + 683, -398, -569, 126, -399, 38, 172, 38, 172, 86, 172, 89, -497, -399, 171, 89, 89, 19, 19, 89, -399, 89, 89, 89, 89, 19, 19, -399, 89, 171, 89, 89, 89, 89, 86, 89, 172, 89, 89, 89, 89, 172, 172, -407, -407, -399, -407, 89, 89, 89, -399, -399, -399, -407, 89, -399, -399, -399, -399, -399, - -399, -399, -399, -399, -399, -221, -469, 482, -469, -469, - 172, 172, 172, 89, -139, 88, 104, 172, 677, -355, - -354, 94, -145, 260, -372, 662, -372, -145, -372, -372, - 130, -145, 662, 94, 94, -259, -361, -259, -361, 571, + -399, -399, -399, -399, -399, -221, -469, 483, -469, -469, + 172, 172, 172, 89, -139, 88, 104, 172, 678, -355, + -354, 94, -145, 260, -372, 663, -372, -145, -372, -372, + 130, -145, 663, 94, 94, -259, -361, -259, -361, 572, 42, 182, 186, 186, 185, -372, 94, 39, 26, 26, - 324, -244, 88, 88, -259, -259, -259, -590, 433, -602, - 172, 44, -600, 523, -175, 337, -423, 86, -182, 344, + 324, -244, 88, 88, -259, -259, -259, -590, 434, -602, + 172, 44, -600, 524, -175, 337, -423, 86, -182, 344, 19, 14, -259, -259, -259, -259, -273, 38, 19, -200, -260, -372, 88, 89, 172, -372, -372, -372, -432, 86, -372, -362, -329, -329, -386, -329, -329, -217, 172, 25, @@ -9830,84 +9851,84 @@ var yyChk = [...]int{ 115, 258, -369, -369, 264, -293, 260, 38, -369, -311, 258, 379, 322, 265, 23, 279, -310, 258, 115, -372, 264, 268, 265, 263, -368, 130, -360, 158, 260, 46, - 411, -368, 577, 279, -368, -368, -368, -368, -368, -368, + 412, -368, 578, 279, -368, -368, -368, -368, -368, -368, -368, 296, 296, -368, -368, -368, -368, -368, -368, -368, -368, -368, -368, -368, 177, -368, -368, -368, -368, -368, - -368, 88, 291, 292, 324, -591, 433, 34, 391, 391, - 392, -602, 387, 45, 34, -183, 385, -314, -312, -383, + -368, 88, 291, 292, 324, -591, 434, 34, 392, 392, + 393, -602, 388, 45, 34, -183, 386, -314, -312, -383, 34, -335, -336, -337, -338, -340, -339, 71, 75, 77, 81, 72, 73, 74, 78, 83, 76, 34, 172, -370, -375, 38, -372, 94, -370, -193, -208, -206, -370, 88, - -453, -615, -617, 515, 512, 518, -455, -455, 104, 260, - 88, 130, -455, -455, 44, -371, -612, 519, 513, -139, + -453, -615, -617, 516, 513, 519, -455, -455, 104, 260, + 88, 130, -455, -455, 44, -371, -612, 520, 514, -139, 172, 85, -261, -235, -236, -237, -238, -266, -348, 206, 209, 211, 212, 213, 214, 216, 217, 218, 219, 220, 223, 224, 221, 222, 273, 201, 202, 203, 204, 225, - 189, 207, 572, 190, 191, 192, 166, 167, 193, 196, + 189, 207, 573, 190, 191, 192, 166, 167, 193, 196, 197, 198, 199, 195, -372, -245, -241, -329, -196, -208, -372, 94, -372, 149, 127, -6, 125, -153, -152, -151, - 128, 644, 650, 127, 127, 127, 89, 89, 89, 172, - 89, 89, 89, 172, 89, 172, 104, -534, 492, 43, + 128, 645, 651, 127, 127, 127, 89, 89, 89, 172, + 89, 89, 89, 172, 89, 172, 104, -534, 493, 43, 172, 88, 89, 172, 64, 172, 130, 89, 172, -399, -372, 94, -399, 202, 89, 64, -139, 94, 172, -209, - 40, 41, 171, 465, -372, -545, 89, -461, 172, 260, - 171, 171, -437, 414, -371, -439, 23, 14, -348, 42, - -355, 130, 681, -372, 89, -401, -401, 119, -397, -394, + 40, 41, 171, 466, -372, -545, 89, -461, 172, 260, + 171, 171, -437, 415, -371, -439, 23, 14, -348, 42, + -355, 130, 682, -372, 89, -401, -401, 119, -397, -394, 89, 127, -399, 125, -264, -399, -264, -265, -271, 168, - 205, 273, 204, 203, 201, 161, 162, -283, -428, 571, + 205, 273, 204, 203, 201, 161, 162, -283, -428, 572, -209, 89, -372, -399, -399, 89, -399, -399, 19, -372, -283, -395, -399, -399, -214, -214, 89, 89, -468, -469, -468, -468, 89, 89, 89, 89, -468, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 88, 104, - 106, 104, 106, -527, -624, 66, 652, 65, 455, 109, - 327, 172, 104, 94, 682, 172, 130, 385, -372, 19, + 106, 104, 106, -527, -624, 66, 653, 65, 456, 109, + 327, 172, 104, 94, 683, 172, 130, 386, -372, 19, 171, 94, -372, 94, -372, 19, 19, -259, -259, 186, - 94, -603, 331, 385, 523, 256, 385, 331, 523, 256, - -480, 104, 422, -246, -247, -248, -249, -250, 140, 173, - 174, -235, -222, 88, -222, -593, 494, 435, 445, -368, - -391, -390, 387, 45, -514, 456, 441, 442, -438, 287, + 94, -603, 331, 386, 524, 256, 386, 331, 524, 256, + -480, 104, 423, -246, -247, -248, -249, -250, 140, 173, + 174, -235, -222, 88, -222, -593, 495, 436, 446, -368, + -391, -390, 388, 45, -514, 457, 442, 443, -438, 287, -361, -599, 101, 130, 85, 365, 369, 371, 370, 366, 367, 368, -417, -418, -416, -420, -361, -586, 88, 88, -190, 38, 138, -182, 344, 88, 88, 38, -491, 355, -266, -259, -200, -372, 19, 172, -585, 171, -1, -372, - -372, -431, -384, -329, -399, -399, 621, -329, -384, -384, + -372, -431, -384, -329, -399, -399, 622, -329, -384, -384, -386, -372, -251, -491, -266, 38, -309, 253, 249, -465, 324, 325, -466, -481, 327, -483, 88, -263, -348, -256, -558, -559, -419, -372, 115, -558, 115, 88, -263, -348, -348, -312, -348, -372, -372, -372, -372, -319, -318, -348, -321, 35, -322, -372, -372, -372, -372, 115, -372, 115, -288, 44, 51, 52, 53, -368, -368, 208, -291, 44, - 455, 457, 458, -321, 104, 104, 104, 104, 94, 94, + 456, 458, 459, -321, 104, 104, 104, 104, 94, 94, 94, -368, -368, 104, 94, -375, 94, -560, 185, 48, 49, 104, 104, 104, 104, 44, 94, -296, 44, 307, 311, 308, 309, 310, 94, 104, 44, 104, 44, 104, - 44, -372, 88, -561, -562, 94, -480, -593, -368, 391, - -452, 130, 130, -391, -595, 98, 436, -595, -598, 337, - -185, 523, 35, -226, 253, 249, -586, -443, -442, -348, + 44, -372, 88, -561, -562, 94, -480, -593, -368, 392, + -452, 130, 130, -391, -595, 98, 437, -595, -598, 337, + -185, 524, 35, -226, 253, 249, -586, -443, -442, -348, -205, -205, -205, -205, -205, -205, 71, 82, 71, -219, 88, 71, 76, 71, 76, 71, -337, 71, 82, -443, -207, -222, -375, 89, -609, -608, -607, -605, 79, 261, - 80, -405, -455, 512, 516, 517, -439, -387, 94, -446, + 80, -405, -455, 513, 517, 518, -439, -387, 94, -446, -232, 26, -259, -259, -512, 317, 318, 89, 172, -266, -331, 21, 171, 123, -6, -149, -151, -399, -6, -399, - 646, 404, 647, 94, 104, 104, -542, 476, 471, 473, + 647, 405, 648, 94, 104, 104, -542, 477, 472, 474, 115, -408, -529, -528, 64, -190, -218, -521, -564, -527, - -372, 682, 682, 682, 682, 94, 64, -190, -521, -232, + -372, 683, 683, 683, 683, 94, 64, -190, -521, -232, -534, -211, -210, 47, -372, 104, 19, -436, -431, 149, - 149, -372, 415, -447, 94, 434, 94, 256, 682, 94, + 149, -372, 416, -447, 94, 435, 94, 256, 683, 94, -355, -394, -399, 89, 38, 89, 89, -498, -498, -497, -500, -497, -274, -274, 89, 88, -209, 89, 26, 89, - 89, 89, -399, 89, 89, 172, 172, -517, 532, -518, - 606, -468, -468, -468, -468, -468, -468, -468, -468, -468, + 89, 89, -399, 89, 89, 172, 172, -517, 533, -518, + 607, -468, -468, -468, -468, -468, -468, -468, -468, -468, -468, -468, -468, -468, -468, -468, -468, -468, -410, -409, - 279, 477, 659, 659, 477, 659, 659, 89, 172, -567, - 172, -363, 332, -363, -354, 94, -372, 94, 662, -372, - 682, 682, 94, -259, -361, -189, 354, -188, 124, 94, + 279, 478, 660, 660, 478, 660, 660, 89, 172, -567, + 172, -363, 332, -363, -354, 94, -372, 94, 663, -372, + 683, 683, 94, -259, -361, -189, 354, -188, 124, 94, -372, -372, -372, 324, -372, 324, -372, -372, 94, 94, 89, 172, -348, 89, 38, -252, -253, -254, -263, -255, -257, 38, -594, 98, -589, 94, -372, 95, -595, 170, - 389, 44, 437, 438, 453, 384, 104, 104, 443, -587, - -372, -184, 256, 385, -597, 55, 130, 94, -259, -416, + 390, 44, 438, 439, 454, 385, 104, 104, 444, -587, + -372, -184, 256, 386, -597, 55, 130, 94, -259, -416, -360, 158, 298, -251, 358, -326, -325, -372, 94, -252, -190, -259, -259, -252, -252, -190, -492, 357, 23, 104, 148, -223, 86, 171, -208, -260, -372, 149, 89, -329, @@ -9922,36 +9943,36 @@ var yyChk = [...]int{ 130, -230, -229, 85, 86, -231, 85, -229, -229, 71, -220, 94, 71, 71, -329, -607, -606, 26, -559, -559, -559, 89, 89, 17, -237, 44, -330, 22, 23, 149, - 127, 125, 127, 127, -372, 89, 89, -504, 637, -538, - -540, 471, 23, 23, 17, 261, 89, -521, 682, -521, - -542, 48, 49, -431, -447, 456, -259, 172, 682, -264, + 127, 125, 127, 127, -372, 89, 89, -504, 638, -538, + -540, 472, 23, 23, 17, 261, 89, -521, 683, -521, + -542, 48, 49, -431, -447, 457, -259, 172, 683, -264, -302, 94, -399, 89, -399, -399, 89, 94, 89, 94, -214, 23, 89, 172, 89, 89, 89, 172, 89, 89, -399, 89, -567, -364, 202, 94, -364, -372, -373, -187, - 260, -251, 38, 422, 24, 585, 350, 94, -372, -480, - 324, -480, 324, 256, -372, -241, -424, 573, -248, -266, - 254, -190, 89, 172, -190, 94, -592, 447, 104, 44, - 104, 170, 439, -515, -176, 98, -261, 35, -226, -596, - 98, 130, 681, 88, -368, -368, -368, -187, -372, 89, + 260, -251, 38, 423, 24, 586, 350, 94, -372, -480, + 324, -480, 324, 256, -372, -241, -424, 574, -248, -266, + 254, -190, 89, 172, -190, 94, -592, 448, 104, 44, + 104, 170, 440, -515, -176, 98, -261, 35, -226, -596, + 98, 130, 682, 88, -368, -368, -368, -187, -372, 89, 172, -368, -368, 89, -187, 89, 89, -281, 14, -493, 278, 104, 148, 104, 148, 104, -370, -208, -372, -329, - -585, 171, 415, -329, -493, -467, 329, 104, -395, 88, + -585, 171, 416, -329, -493, -467, 329, 104, -395, 88, -395, 88, -476, 326, 88, 89, 172, -372, -348, -278, - -277, -275, 109, 120, 44, 428, -276, 98, 158, 312, - 315, 314, 290, 313, -307, -388, 85, 431, 363, 364, - -420, 637, 562, 263, 114, 115, 416, -389, 88, 88, + -277, -275, 109, 120, 44, 429, -276, 98, 158, 312, + 315, 314, 290, 313, -307, -388, 85, 432, 363, 364, + -420, 638, 563, 263, 114, 115, 417, -389, 88, 88, 86, 332, 88, 88, -556, 89, -317, -348, 44, -320, - 44, 377, 323, -318, -372, 158, -283, 89, -562, 94, + 44, -429, 323, -318, -372, 158, -283, 89, -562, 94, -592, 94, -455, -597, 94, -176, -261, -586, -214, -442, -527, -399, 88, -399, 89, 88, 71, 11, 21, -392, - -399, -407, 666, 668, 669, 262, -6, 647, 404, -298, - 638, 94, 23, 94, -536, 94, -443, -504, -142, -295, + -399, -407, 667, 669, 670, 262, -6, 648, 405, -298, + 639, 94, 23, 94, -536, 94, -443, -504, -142, -295, -360, 295, 89, -301, 140, 14, 89, 89, 89, -468, - -468, -471, -470, -474, 477, 324, 485, -407, 94, 94, - 89, 89, 94, 94, 385, -187, -259, 94, 104, 351, - 352, 353, 681, 94, -480, 94, -480, -372, 324, 94, + -468, -471, -470, -474, 478, 324, 486, -407, 94, 94, + 89, 89, 94, 94, 386, -187, -259, 94, 104, 351, + 352, 353, 682, 94, -480, 94, -480, -372, 324, 94, 94, -239, -266, -180, 14, -281, -254, -180, 23, 14, - 388, 44, 104, 44, 440, 94, -184, 130, 110, 111, + 389, 44, 104, 44, 441, 94, -184, 130, 110, 111, -356, -357, 94, -426, -283, -285, 94, -325, -392, -392, -279, -190, 38, -280, -323, -420, -141, -140, -279, 88, -494, 176, 104, 148, 104, 104, -329, -329, -407, -494, @@ -9960,48 +9981,48 @@ var yyChk = [...]int{ 307, 130, 130, -287, 44, 291, 292, -297, 88, 322, 17, 208, 88, 115, 115, -259, -426, -426, -557, 365, 366, 367, 372, 369, 370, 368, 371, -557, -426, -426, - 88, -449, -448, -395, -368, -368, 158, -596, -215, -221, - -555, -372, 263, 23, 23, -513, 14, 667, 88, 88, - -372, -372, -352, 639, 104, 94, 473, -298, -505, 640, - -532, -475, -283, 130, 89, 78, 572, 574, 89, -473, - 122, 439, 443, -393, -396, 104, 106, 200, 170, 89, - 89, -372, -359, -358, 94, -241, 94, -241, 94, 324, - -480, 573, -181, 63, 519, 94, 95, 434, 94, 95, - 388, -176, 94, 682, 172, 130, 89, -463, 279, -190, - 172, -323, -360, -142, -463, -282, -324, -372, 94, -511, - 185, 356, 14, 104, 148, 104, -214, -495, 185, 356, - -466, 89, 89, 89, -462, 104, 89, -489, -486, 88, - -323, 281, 140, 94, 94, 104, 88, -522, 34, 94, - -427, 88, 89, 89, 89, 89, -426, 104, -283, -368, - 89, 89, 172, 669, 88, -407, -407, 88, 23, -352, - -506, 641, 94, -541, 476, -535, -533, 471, 472, 473, - 474, 94, 573, 68, 575, -472, -473, 443, -393, -396, - 635, 483, 483, 483, 682, 172, 130, -241, -241, -480, - 94, -242, -372, 322, 456, -357, 94, -429, -464, 331, - 23, -323, -368, -464, 89, 172, -368, -368, 356, 104, - 148, 104, -215, 356, -478, 330, 89, -489, -323, -488, - -487, 329, 282, 88, 89, -399, -411, -368, 89, -300, - -299, 570, -426, -429, 86, -429, 86, -429, 86, -429, - 86, 89, -283, -372, 263, -137, 88, 89, 89, -353, - -372, -536, 94, -543, 261, -539, -540, 475, -533, 23, - 473, 23, 23, -143, 172, 68, 119, 484, 484, 484, - -241, -358, 94, 94, -241, -240, 38, 478, 415, -430, - 269, 377, 378, 98, 14, 363, 364, 382, 381, 380, - 383, 23, -465, -283, -324, -392, -392, 104, 104, 89, - 172, -372, 278, 88, -406, -400, -399, 278, 89, -372, - -306, -304, -305, 85, 490, 320, 321, 89, -557, -557, - -557, -557, -307, 89, 172, -405, 89, 172, -550, 88, - 104, -538, -537, -539, 23, -536, 23, -536, -536, 480, - 14, -472, -241, 94, -368, -368, 94, 94, 362, -368, - -368, -368, -348, 88, -477, -487, -486, -406, 89, 172, - -448, -305, 85, -304, 85, 18, 17, -429, -429, -429, - -429, 88, 89, -372, -553, 34, 89, -549, -548, -349, - -544, -372, 476, 477, 94, -536, 130, 574, -627, -626, - 658, 104, 104, -372, 104, 104, 104, -462, -467, 89, - -400, -303, 317, 318, 34, 185, -303, -405, -552, -551, - -350, 89, 172, 171, 94, 575, 94, 89, -483, 109, - 44, 319, 89, 172, 130, -548, -372, -551, 44, -399, - 171, -372, + 88, -449, -448, -395, -430, 269, 377, 378, 98, 14, + 363, 364, 382, 381, 380, 383, 384, -368, 158, -596, + -215, -221, -555, -372, 263, 23, 23, -513, 14, 668, + 88, 88, -372, -372, -352, 640, 104, 94, 474, -298, + -505, 641, -532, -475, -283, 130, 89, 78, 573, 575, + 89, -473, 122, 440, 444, -393, -396, 104, 106, 200, + 170, 89, 89, -372, -359, -358, 94, -241, 94, -241, + 94, 324, -480, 574, -181, 63, 520, 94, 95, 435, + 94, 95, 389, -176, 94, 683, 172, 130, 89, -463, + 279, -190, 172, -323, -360, -142, -463, -282, -324, -372, + 94, -511, 185, 356, 14, 104, 148, 104, -214, -495, + 185, 356, -466, 89, 89, 89, -462, 104, 89, -489, + -486, 88, -323, 281, 140, 94, 94, 104, 88, -522, + 34, 94, -427, 88, 89, 89, 89, 89, -426, -368, + -368, 94, 94, 362, -368, -368, -368, -283, -368, 89, + 89, 172, 670, 88, -407, -407, 88, 23, -352, -506, + 642, 94, -541, 477, -535, -533, 472, 473, 474, 475, + 94, 574, 68, 576, -472, -473, 444, -393, -396, 636, + 484, 484, 484, 683, 172, 130, -241, -241, -480, 94, + -242, -372, 322, 457, -357, 94, -429, -464, 331, 23, + -323, -368, -464, 89, 172, -368, -368, 356, 104, 148, + 104, -215, 356, -478, 330, 89, -489, -323, -488, -487, + 329, 282, 88, 89, -399, -411, -368, 89, -300, -299, + 571, -426, -429, 86, -429, 86, -429, 86, -429, 86, + 89, 104, 104, -372, 104, 104, 104, -283, -372, 263, + -137, 88, 89, 89, -353, -372, -536, 94, -543, 261, + -539, -540, 476, -533, 23, 474, 23, 23, -143, 172, + 68, 119, 485, 485, 485, -241, -358, 94, 94, -241, + -240, 38, 479, 416, 23, -465, -283, -324, -392, -392, + 104, 104, 89, 172, -372, 278, 88, -406, -400, -399, + 278, 89, -372, -306, -304, -305, 85, 491, 320, 321, + 89, -557, -557, -557, -557, -307, 89, 172, -405, 89, + 172, -550, 88, 104, -538, -537, -539, 23, -536, 23, + -536, -536, 481, 14, -472, -241, 94, -348, 88, -477, + -487, -486, -406, 89, 172, -448, -305, 85, -304, 85, + 18, 17, -429, -429, -429, -429, 88, 89, -372, -553, + 34, 89, -549, -548, -349, -544, -372, 477, 478, 94, + -536, 130, 575, -627, -626, 659, -462, -467, 89, -400, + -303, 317, 318, 34, 185, -303, -405, -552, -551, -350, + 89, 172, 171, 94, 576, 94, 89, -483, 109, 44, + 319, 89, 172, 130, -548, -372, -551, 44, -399, 171, + -372, } var yyDef = [...]int{ @@ -10028,406 +10049,406 @@ var yyDef = [...]int{ 0, 0, 0, 823, 0, 0, 0, 868, 886, 23, 0, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 0, 19, 0, 19, 0, 0, 0, - 1450, 1451, 1452, 1453, 2265, 2235, -2, 1998, 1972, 2160, - 2161, 2056, 2068, 1965, 2302, 2303, 2304, 2305, 2306, 2307, - 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, - 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, - 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, - 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, - 2348, 2349, 2350, 2351, 2352, 1921, 1922, 1923, 1924, 1925, - 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, - 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, - 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, - 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1966, - 1967, 1968, 1969, 1970, 1971, 1973, 1974, 1975, 1976, 1977, - 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, - 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, - 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, - 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, - 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, - 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, - 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2057, 2058, 2059, - 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2070, 2071, - 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, - 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, - 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, - 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, - 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, - 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, - 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, - 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, - 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2162, 2163, - 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, - 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, - 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, -2, - 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, - 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, - 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, - 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, - 2234, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, - 2245, 2246, 2247, 2248, 2249, 2250, -2, -2, -2, 2254, - 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, - 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, - 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, - 2286, 2287, 2288, 2289, 2290, 2291, 0, 322, 320, 1937, - 1965, 1972, 1998, 2056, 2068, 2069, 2108, 2160, 2161, 2193, - 2235, 2251, 2252, 2253, 2265, 0, 0, 1023, 0, 793, - 0, 0, 798, 1397, 793, 359, 734, 735, 823, 851, - 694, 0, 397, 0, 1988, 401, 2242, 0, 0, 0, + 1451, 1452, 1453, 1454, 2266, 2236, -2, 1999, 1973, 2161, + 2162, 2057, 2069, 1966, 2303, 2304, 2305, 2306, 2307, 2308, + 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, + 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, + 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, + 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, + 2349, 2350, 2351, 2352, 2353, 1922, 1923, 1924, 1925, 1926, + 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, + 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, + 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, + 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1967, + 1968, 1969, 1970, 1971, 1972, 1974, 1975, 1976, 1977, 1978, + 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, + 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, + 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, + 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, + 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, + 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2058, 2059, 2060, + 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2071, 2072, + 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 2081, 2082, + 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, + 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, + 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, + 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, + 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, + 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, + 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, + 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2163, 2164, + 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, + 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, + 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, -2, + 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, + 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, + 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, + 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, + 2235, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, + 2246, 2247, 2248, 2249, 2250, 2251, -2, -2, -2, 2255, + 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, + 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, + 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, + 2287, 2288, 2289, 2290, 2291, 2292, 0, 322, 320, 1938, + 1966, 1973, 1999, 2057, 2069, 2070, 2109, 2161, 2162, 2194, + 2236, 2252, 2253, 2254, 2266, 0, 0, 1023, 0, 793, + 0, 0, 798, 1398, 793, 359, 734, 735, 823, 851, + 694, 0, 397, 0, 1989, 401, 2243, 0, 0, 0, 0, 691, 391, 392, 393, 394, 395, 396, 0, 0, - 996, 0, 0, 387, 0, 353, 2058, 2264, 1454, 0, + 996, 0, 0, 387, 0, 353, 2059, 2265, 1455, 0, 0, 0, 0, 0, 209, 1149, 211, 1151, 215, 223, 0, 0, 0, 228, 229, 232, 233, 234, 235, 236, 0, 240, 0, 242, 245, 0, 247, 248, 0, 251, 252, 253, 0, 263, 264, 265, 1152, 1153, 1154, -2, - 138, 1021, 1892, 1778, 0, 1785, 1798, 1809, 1536, 1537, - 1538, 1539, 0, 0, 0, 0, 0, 0, 1547, 1548, - 0, 1579, 2306, 2348, 2349, 0, 1557, 1558, 1559, 1560, - 1561, 1562, 0, 149, 161, 162, 1831, 1832, 1833, 1834, - 1835, 1836, 1837, 0, 1839, 1840, 1841, 1749, 1523, 1450, - 0, 2315, 0, 2337, 2343, 2344, 2345, 2346, 2336, 0, - 0, 1733, 0, 1723, 0, 0, -2, -2, 0, 0, - 2133, -2, 2350, 2351, 2352, 2312, 2333, 2341, 2342, 2316, - 2317, 2340, 2308, 2309, 2310, 2303, 2304, 2305, 2307, 2319, - 2321, 2332, 0, 2328, 2338, 2339, 2240, 0, 0, 2287, - 0, 0, 0, 2282, 163, 164, -2, -2, -2, -2, + 138, 1021, 1893, 1779, 0, 1786, 1799, 1810, 1537, 1538, + 1539, 1540, 0, 0, 0, 0, 0, 0, 1548, 1549, + 0, 1580, 2307, 2349, 2350, 0, 1558, 1559, 1560, 1561, + 1562, 1563, 0, 149, 161, 162, 1832, 1833, 1834, 1835, + 1836, 1837, 1838, 0, 1840, 1841, 1842, 1750, 1524, 1451, + 0, 2316, 0, 2338, 2344, 2345, 2346, 2347, 2337, 0, + 0, 1734, 0, 1724, 0, 0, -2, -2, 0, 0, + 2134, -2, 2351, 2352, 2353, 2313, 2334, 2342, 2343, 2317, + 2318, 2341, 2309, 2310, 2311, 2304, 2305, 2306, 2308, 2320, + 2322, 2333, 0, 2329, 2339, 2340, 2241, 0, 0, 2288, + 0, 0, 0, 2283, 163, 164, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, 1744, -2, 1746, -2, 1748, -2, 1751, - -2, -2, -2, -2, 1756, 1757, -2, 1759, -2, -2, - -2, -2, -2, -2, -2, 1735, 1736, 1737, 1738, 1727, - 1728, 1729, 1730, 1731, 1732, -2, -2, -2, 851, 944, + -2, -2, -2, 1745, -2, 1747, -2, 1749, -2, 1752, + -2, -2, -2, -2, 1757, 1758, -2, 1760, -2, -2, + -2, -2, -2, -2, -2, 1736, 1737, 1738, 1739, 1728, + 1729, 1730, 1731, 1732, 1733, -2, -2, -2, 851, 944, 0, 851, 0, 824, 873, 876, 879, 882, 827, 0, 0, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, 349, 337, 339, 0, 343, - 0, 0, 339, 336, 330, 0, 1191, 1191, 1191, 0, - 0, 0, 1191, 1191, 1191, 1191, 1191, 0, 1191, 0, - 0, 0, 0, 0, 1191, 0, 1058, 1156, 1157, 1158, - 1189, 1190, 1283, 0, 0, 0, 750, 746, 747, 748, + 0, 0, 339, 336, 330, 0, 1192, 1192, 1192, 0, + 0, 0, 1192, 1192, 1192, 1192, 1192, 0, 1192, 0, + 0, 0, 0, 0, 1192, 0, 1058, 1156, 1157, 1158, + 1190, 1191, 1284, 0, 0, 0, 750, 746, 747, 748, 749, 837, 0, 839, 842, 0, 0, 671, 671, 911, 911, 0, 617, 0, 0, 0, 671, 0, 631, 623, 0, 0, 0, 671, 0, 0, 844, 844, 0, 674, 681, 671, 671, -2, 671, 671, 668, 671, 0, 0, - 1205, 637, 638, 639, 623, 623, 642, 643, 644, 654, - 655, 682, 1916, 0, 0, 545, 545, 0, 545, 545, - 0, 545, 545, 545, 0, 752, 2014, 2103, 1995, 2074, - 1947, 2058, 2264, 0, 295, 2133, 300, 0, 1997, 2017, - 0, 0, 2036, 0, -2, 0, 375, 851, 0, 0, + 1206, 637, 638, 639, 623, 623, 642, 643, 644, 654, + 655, 682, 1917, 0, 0, 545, 545, 0, 545, 545, + 0, 545, 545, 545, 0, 752, 2015, 2104, 1996, 2075, + 1948, 2059, 2265, 0, 295, 2134, 300, 0, 1998, 2018, + 0, 0, 2037, 0, -2, 0, 375, 851, 0, 0, 823, 0, 0, 0, 0, 545, 545, 545, 545, 545, - 1282, 545, 545, 545, 545, 545, 0, 0, 0, 545, + 1283, 545, 545, 545, 545, 545, 0, 0, 0, 545, 545, 545, 545, 0, 887, 888, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 5, 6, 19, 0, - 0, 0, 0, 0, 0, 117, 116, 0, 1893, 1911, - 1844, 1845, 1846, 1898, 1848, 1902, 1902, 1902, 1902, 1877, - 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1902, - 1902, 0, 0, 1891, 1868, 1900, 1900, 1900, 1898, 1895, - 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, - 1859, 1860, 1861, 1862, 1905, 1905, 1908, 1908, 1905, 0, - 439, 437, 438, 1774, 0, 0, 0, 0, 793, 797, - 1395, 0, 0, 0, 851, -2, 0, 0, 695, 398, - 1455, 0, 0, 402, 0, 403, 0, 0, 405, 0, + 0, 0, 0, 0, 0, 117, 116, 0, 1894, 1912, + 1845, 1846, 1847, 1899, 1849, 1903, 1903, 1903, 1903, 1878, + 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1903, + 1903, 0, 0, 1892, 1869, 1901, 1901, 1901, 1899, 1896, + 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, + 1860, 1861, 1862, 1863, 1906, 1906, 1909, 1909, 1906, 0, + 439, 437, 438, 1775, 0, 0, 0, 0, 793, 797, + 1396, 0, 0, 0, 851, -2, 0, 0, 695, 398, + 1456, 0, 0, 402, 0, 403, 0, 0, 405, 0, 0, 0, 427, 0, 430, 413, 414, 415, 416, 417, 409, 0, 189, 0, 389, 390, 0, 0, 355, 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, 220, 216, 224, 227, 237, 244, 0, 256, 258, 261, 217, 225, 230, 231, 238, 259, 218, 221, 222, 226, 260, 262, 219, 239, 243, 257, 241, 246, 249, 250, 255, - 0, 190, 0, 0, 0, 0, 0, 1784, 0, 0, - 1817, 1818, 1819, 1820, 1821, 1822, 1823, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -2, 1778, 0, - 0, 1542, 1543, 1544, 1545, 0, 1549, 0, 1580, 0, - 0, 0, 0, 0, 0, 1838, 1842, 0, 1774, 1774, - 0, 1774, 1770, 0, 0, 0, 0, 0, 0, 1774, - 1706, 0, 0, 1708, 1724, 0, 0, 1710, 1711, 0, - 1714, 1715, 1774, 0, 1774, 1719, 1774, 1774, 1774, 1701, - 1702, 0, 0, 1770, 1770, 1770, 1770, 0, 0, 1770, - 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1770, - 1770, 1770, 1770, 1770, 0, 0, 0, 0, 844, 0, + 0, 190, 0, 0, 0, 0, 0, 1785, 0, 0, + 1818, 1819, 1820, 1821, 1822, 1823, 1824, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -2, 1779, 0, + 0, 1543, 1544, 1545, 1546, 0, 1550, 0, 1581, 0, + 0, 0, 0, 0, 0, 1839, 1843, 0, 1775, 1775, + 0, 1775, 1771, 0, 0, 0, 0, 0, 0, 1775, + 1707, 0, 0, 1709, 1725, 0, 0, 1711, 1712, 0, + 1715, 1716, 1775, 0, 1775, 1720, 1775, 1775, 1775, 1702, + 1703, 0, 0, 1771, 1771, 1771, 1771, 0, 0, 1771, + 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, + 1771, 1771, 1771, 1771, 0, 0, 0, 0, 844, 0, 852, 0, -2, 0, 870, 872, 874, 875, 877, 878, 880, 881, 883, 884, 829, 0, 0, 113, 0, 0, 0, 96, 0, 0, 94, 0, 0, 0, 0, 72, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 341, 0, 346, 332, 2095, 0, 331, 0, 0, - 0, 0, 0, 1020, 0, 0, 1191, 1191, 1191, 1059, - 0, 0, 0, 0, 0, 0, 0, 0, 1191, 1191, - 1191, 1191, 0, 1211, 0, 0, 0, 752, 751, 0, + 0, 341, 0, 346, 332, 2096, 0, 331, 0, 0, + 0, 0, 0, 1020, 0, 0, 1192, 1192, 1192, 1059, + 0, 0, 0, 0, 0, 0, 0, 0, 1192, 1192, + 1192, 1192, 0, 1212, 0, 0, 0, 752, 751, 0, 838, 0, 0, 71, 606, 607, 608, 911, 0, 0, 610, 611, 0, 612, 0, 0, 623, 671, 671, 629, 630, 625, 624, 677, 678, 674, 0, 674, 674, 911, 0, 648, 649, 650, 671, 671, 656, 845, 0, 657, 658, 674, 0, 679, 680, 911, 0, 0, 911, 911, - 0, 666, 667, 669, 671, 0, 0, 1191, 0, 687, - 625, 625, 1917, 1918, 0, 0, 1202, 0, 0, 0, + 0, 666, 667, 669, 671, 0, 0, 1192, 0, 687, + 625, 625, 1918, 1919, 0, 0, 1203, 0, 0, 0, 0, 690, 0, 0, 0, 455, 456, 0, 0, 753, - 0, 274, 278, 0, 281, 0, 2103, 0, 2103, 0, + 0, 274, 278, 0, 281, 0, 2104, 0, 2104, 0, 0, 288, 0, 0, 0, 0, 0, 0, 318, 319, - 0, 0, 0, 0, 309, 312, 1389, 1390, 1146, 1147, + 0, 0, 0, 0, 309, 312, 1390, 1391, 1146, 1147, 313, 314, 367, 368, 0, 844, 869, 871, 865, 866, - 867, 0, 1193, 0, 0, 0, 0, 0, 545, 0, + 867, 0, 1194, 0, 0, 0, 0, 0, 545, 0, 0, 0, 0, 0, 728, 0, 1038, 730, 0, 0, 0, 0, 0, 919, 913, 915, 991, 149, 889, 8, 134, 131, 0, 19, 0, 0, 19, 19, 0, 19, - 323, 0, 1914, 1912, 1913, 1847, 1899, 0, 1873, 0, - 1874, 1875, 1876, 1887, 1888, 0, 0, 1869, 0, 1870, - 1871, 1872, 1863, 0, 1864, 1865, 0, 1866, 1867, 321, - 436, 0, 0, 1775, 1024, 0, 771, 785, 766, 0, - 774, 0, 0, 1397, 0, 0, 0, 0, 754, 785, + 323, 0, 1915, 1913, 1914, 1848, 1900, 0, 1874, 0, + 1875, 1876, 1877, 1888, 1889, 0, 0, 1870, 0, 1871, + 1872, 1873, 1864, 0, 1865, 1866, 0, 1867, 1868, 321, + 436, 0, 0, 1776, 1024, 0, 771, 785, 766, 0, + 774, 0, 0, 1398, 0, 0, 0, 0, 754, 785, 756, 0, 774, 844, 821, 0, 799, 0, 0, 399, 0, 410, 404, 0, 411, 406, 407, 0, 0, 429, 431, 432, 433, 434, 418, 419, 692, 384, 385, 386, 376, 377, 378, 379, 380, 381, 382, 383, 0, 0, 388, 159, 0, 356, 357, 0, 0, 0, 203, 204, 205, 206, 207, 208, 210, 194, 717, 719, 1138, 1150, - 0, 1141, 0, 213, 254, 186, 0, 0, 0, 1779, - 1780, 1781, 1782, 1783, 1788, 0, 1790, 1792, 1794, 1796, - 0, 1814, -2, -2, 1524, 1525, 1526, 1527, 1528, 1529, - 1530, 1531, 1532, 1533, 1534, 1535, 1799, 1812, 1813, 0, - 0, 0, 0, 0, 0, 1810, 1810, 1805, 0, 1554, - 1584, 1596, 1596, 1563, 1391, 1392, 1540, 0, 0, 1577, - 1581, 0, 0, 0, 0, 0, 0, 1173, 1898, 0, - 150, 1769, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, - 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, - 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, - 1700, 0, 0, 1778, 0, 0, 0, 1771, 1772, 0, - 0, 0, 1660, 0, 0, 1666, 1667, 1668, 0, 780, - 0, 1734, 1707, 1725, 0, 0, 0, 0, 0, 0, + 0, 1141, 0, 213, 254, 186, 0, 0, 0, 1780, + 1781, 1782, 1783, 1784, 1789, 0, 1791, 1793, 1795, 1797, + 0, 1815, -2, -2, 1525, 1526, 1527, 1528, 1529, 1530, + 1531, 1532, 1533, 1534, 1535, 1536, 1800, 1813, 1814, 0, + 0, 0, 0, 0, 0, 1811, 1811, 1806, 0, 1555, + 1585, 1597, 1597, 1564, 1392, 1393, 1541, 0, 0, 1578, + 1582, 0, 0, 0, 0, 0, 0, 1174, 1899, 0, + 150, 1770, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, + 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, + 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, + 1701, 0, 0, 1779, 0, 0, 0, 1772, 1773, 0, + 0, 0, 1661, 0, 0, 1667, 1668, 1669, 0, 780, + 0, 1735, 1708, 1726, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 943, 945, 0, 789, 791, 792, 818, - 799, 825, 0, 0, 0, 109, 114, 0, 1250, 102, + 799, 825, 0, 0, 0, 109, 114, 0, 1251, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, - 75, 1206, 76, 1208, 0, 0, 0, 0, 0, 0, - 350, 351, 0, 0, 345, 333, 2095, 335, 0, 0, + 75, 1207, 76, 1209, 0, 0, 0, 0, 0, 0, + 350, 351, 0, 0, 345, 333, 2096, 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1074, - 1075, 543, 1132, 0, 0, 0, 1148, 1177, 1187, 0, - 0, 0, 0, 0, 1256, 1060, 1065, 1066, 1067, 1061, + 1075, 543, 1132, 0, 0, 0, 1148, 1178, 1188, 0, + 0, 0, 0, 0, 1257, 1060, 1065, 1066, 1067, 1061, 1062, 1068, 1069, 0, 840, 0, 0, 960, 609, 672, - 673, 912, 613, 0, 0, 620, 2058, 625, 911, 911, + 673, 912, 613, 0, 0, 620, 2059, 625, 911, 911, 632, 626, 633, 676, 634, 635, 636, 674, 911, 911, - 849, 671, 674, 659, 675, 674, 1397, 663, 0, 670, - 1397, 688, 1397, 0, 686, 640, 641, 1258, 842, 453, + 849, 671, 674, 659, 675, 674, 1398, 663, 0, 670, + 1398, 688, 1398, 0, 686, 640, 641, 1259, 842, 453, 454, 459, 461, 0, 510, 510, 510, 493, 510, 0, - 0, 481, 1919, 0, 0, 0, 0, 490, 1919, 0, - 0, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 0, 0, - 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, 1919, - 1919, 0, 1919, 1919, 1919, 1919, 1919, 1375, 1919, 0, - 1203, 500, 501, 502, 503, 508, 509, 0, 0, 538, + 0, 481, 1920, 0, 0, 0, 0, 490, 1920, 0, + 0, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 0, 0, + 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, + 1920, 0, 1920, 1920, 1920, 1920, 1920, 1376, 1920, 0, + 1204, 500, 501, 502, 503, 508, 509, 0, 0, 538, 0, 0, 1073, 0, 543, 0, 0, 1115, 0, 0, 924, 0, 925, 926, 927, 922, 962, 986, 986, 0, - 986, 966, 1397, 0, 0, 0, 286, 287, 275, 0, + 986, 966, 1398, 0, 0, 0, 286, 287, 275, 0, 276, 0, 0, 289, 290, 0, 292, 293, 294, 301, - 1995, 2074, 296, 298, 0, 0, 302, 315, 316, 317, + 1996, 2075, 296, 298, 0, 0, 302, 315, 316, 317, 0, 0, 307, 308, 0, 0, 370, 371, 373, 0, - 799, 1207, 73, 1194, 714, 1393, 715, 716, 720, 0, + 799, 1208, 73, 1195, 714, 1394, 715, 716, 720, 0, 0, 723, 724, 725, 726, 727, 1040, 0, 0, 1124, - 1125, 1126, 1193, 911, 0, 920, 0, 916, 992, 0, + 1125, 1126, 1194, 911, 0, 920, 0, 916, 992, 0, 994, 0, 0, 132, 19, 0, 125, 122, 0, 0, - 0, 0, 0, 1894, 1843, 1915, 0, 0, 0, 1896, + 0, 0, 0, 1895, 1844, 1916, 0, 0, 0, 1897, 0, 0, 0, 0, 0, 115, 801, 761, 0, 765, 782, 0, 786, 0, 0, 778, 770, 775, 0, 0, - 795, 762, 1396, 0, 0, 0, 0, 755, 0, 0, - 760, 799, 0, 822, 853, 854, 857, 1456, 0, 412, + 795, 762, 1397, 0, 0, 0, 0, 755, 0, 0, + 760, 799, 0, 822, 853, 854, 857, 1457, 0, 412, 408, 428, 0, 0, 0, 0, 197, 1135, 0, 198, 202, 192, 0, 0, 0, 1140, 0, 1137, 1142, 0, - 212, 0, 0, 187, 188, 1241, 1250, 0, 0, 0, - 1789, 1791, 1793, 1795, 1797, 0, 1800, 1810, 1810, 1806, - 0, 1801, 0, 1803, 0, 1585, 1597, 1598, 1586, 1779, - 1546, 0, 1582, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 857, 0, 0, 1650, 1651, 0, 0, 1655, - 0, 1657, 1658, 1659, 1661, 0, 0, 0, 1665, 0, - 1705, 1726, 1709, 1712, 0, 1716, 0, 1718, 1720, 1721, - 1722, 0, 0, 851, 851, 0, 0, 1621, 1621, 1621, - 0, 0, 0, 0, 1621, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1566, 0, 1567, 1568, + 212, 0, 0, 187, 188, 1242, 1251, 0, 0, 0, + 1790, 1792, 1794, 1796, 1798, 0, 1801, 1811, 1811, 1807, + 0, 1802, 0, 1804, 0, 1586, 1598, 1599, 1587, 1780, + 1547, 0, 1583, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 857, 0, 0, 1651, 1652, 0, 0, 1656, + 0, 1658, 1659, 1660, 1662, 0, 0, 0, 1666, 0, + 1706, 1727, 1710, 1713, 0, 1717, 0, 1719, 1721, 1722, + 1723, 0, 0, 851, 851, 0, 0, 1622, 1622, 1622, + 0, 0, 0, 0, 1622, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1567, 0, 1568, 1569, 0, 0, 0, 946, 819, 0, 0, 0, 0, 0, - 1248, 0, 92, 0, 97, 0, 0, 93, 98, 0, - 0, 95, 0, 104, 77, 0, 0, 1214, 1215, 0, - 0, 352, 340, 342, 0, 334, 0, 1192, 0, 0, - 0, 0, -2, 1040, 842, 0, 842, 1085, 1919, 547, + 1249, 0, 92, 0, 97, 0, 0, 93, 98, 0, + 0, 95, 0, 104, 77, 0, 0, 1215, 1216, 0, + 0, 352, 340, 342, 0, 334, 0, 1193, 0, 0, + 0, 0, -2, 1040, 842, 0, 842, 1085, 1920, 547, 0, 0, 1134, 0, 1104, 0, 0, 0, -2, 0, - 0, 0, 1187, 0, 0, 0, 1260, 0, 0, 0, + 0, 0, 1188, 0, 0, 0, 1261, 0, 0, 0, 739, 743, 23, 843, 0, 616, 614, 0, 618, 0, 619, 671, 627, 628, 911, 651, 652, 846, 0, 0, - 0, 911, 671, 671, 662, 674, 683, 0, 684, 1397, - 1260, 0, 0, 1202, 1326, 1294, 471, 0, 1410, 1411, - 511, 0, 1417, 1426, 1191, 1488, 0, 1426, 0, 0, - 1428, 1429, 0, 0, 0, 0, 494, 495, 0, 480, + 0, 911, 671, 671, 662, 674, 683, 0, 684, 1398, + 1261, 0, 0, 1203, 1327, 1295, 471, 0, 1411, 1412, + 511, 0, 1418, 1427, 1192, 1489, 0, 1427, 0, 0, + 1429, 1430, 0, 0, 0, 0, 494, 495, 0, 480, 0, 0, 0, 0, 0, 0, 479, 0, 0, 521, - 0, 0, 0, 0, 0, 1920, 1919, 1919, 0, 488, + 0, 0, 0, 0, 0, 1921, 1920, 1920, 0, 488, 489, 0, 492, 0, 0, 0, 0, 0, 0, 0, - 0, 1919, 1919, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1366, 0, 0, 0, 0, 0, - 0, 0, 1381, 1382, 0, 1085, 1919, 0, 0, 0, + 0, 1920, 1920, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1367, 0, 0, 0, 0, 0, + 0, 0, 1382, 1383, 0, 1085, 1920, 0, 0, 0, 0, 547, 1129, 1129, 1102, 1120, 0, 457, 458, 518, 0, 0, 0, 0, 0, 0, 0, 952, 0, 0, 0, 951, 0, 0, 0, 0, 0, 0, 0, 842, - 987, 0, 989, 990, 964, -2, 0, 924, 969, 1774, + 987, 0, 989, 990, 964, -2, 0, 924, 969, 1775, 0, 279, 280, 0, 0, 285, 303, 305, 277, 0, 0, 0, 304, 306, 310, 311, 369, 372, 374, 863, - 0, 0, 1284, 0, 1041, 1042, 1044, 1045, 0, -2, + 0, 0, 1285, 0, 1041, 1042, 1044, 1045, 0, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, 1979, -2, -2, -2, -2, -2, -2, -2, + -2, -2, 1980, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, 1039, 731, 1127, 902, 914, 921, 993, 995, 150, 917, 0, 135, 19, 134, 126, 127, - 0, 19, 0, 0, 0, 0, 1904, 1903, 1889, 0, - 1890, 1901, 1906, 0, 1909, 0, 440, 805, 0, 0, + 0, 19, 0, 0, 0, 0, 1905, 1904, 1890, 0, + 1891, 1902, 1907, 0, 1910, 0, 440, 805, 0, 0, 785, 787, 0, 0, 785, 0, 0, 794, 0, 0, 0, 0, 0, 0, 0, 785, 863, 801, 0, 860, 858, 859, 0, 0, 693, 160, 435, 0, 0, 0, 0, 0, 718, 0, 1139, 194, 0, 0, 214, 0, - 0, 0, 1250, 1245, 1773, 1802, 1804, 0, 1811, 1807, - 1541, 1550, 1578, 0, 0, 0, 0, 0, 1587, 1902, - 1902, 1590, 1898, 1900, 1898, 1596, 1596, 0, 1174, 0, - 1175, 857, 151, 0, 0, 1656, 0, 0, 0, 781, - 0, 0, 0, 0, 1617, 1619, 1621, 1621, 1628, 1622, - 1629, 1630, 1621, 1621, 1621, 1621, 1635, 1621, 1621, 1621, - 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1615, 0, - 0, 1832, 1833, 790, 0, 0, 832, 833, 834, 835, - 836, 0, 0, 62, 62, 1250, 0, 0, 0, 0, - 0, 108, 0, 0, 0, 0, 0, 1218, 1223, 344, + 0, 0, 1251, 1246, 1774, 1803, 1805, 0, 1812, 1808, + 1542, 1551, 1579, 0, 0, 0, 0, 0, 1588, 1903, + 1903, 1591, 1899, 1901, 1899, 1597, 1597, 0, 1175, 0, + 1176, 857, 151, 0, 0, 1657, 0, 0, 0, 781, + 0, 0, 0, 0, 1618, 1620, 1622, 1622, 1629, 1623, + 1630, 1631, 1622, 1622, 1622, 1622, 1636, 1622, 1622, 1622, + 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1616, 0, + 0, 1833, 1834, 790, 0, 0, 832, 833, 834, 835, + 836, 0, 0, 62, 62, 1251, 0, 0, 0, 0, + 0, 108, 0, 0, 0, 0, 0, 1219, 1224, 344, 0, 78, 79, 81, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 1026, 1027, 1029, 0, 1032, 1033, - 1034, 0, 0, 1403, 0, 1089, 1086, 1087, 1088, 0, + 1034, 0, 0, 1404, 0, 1089, 1086, 1087, 1088, 0, 1129, 548, 549, 550, 551, 0, 0, 0, 1133, 0, - 0, 1097, 0, 0, 0, 1178, 1179, 1180, 1181, 1182, - 1183, 1184, 1185, -2, 1197, 0, 1397, 0, 0, 1403, - 1233, 0, 0, 1238, 0, 1403, 1403, 0, 1268, 0, - 1257, 793, 0, -2, 0, 0, 741, 0, 0, 961, - 615, 621, 911, 645, 849, 849, 0, 1397, 911, 911, - 671, 689, 685, 1268, 1259, 0, 460, 510, 0, 1314, - 0, 0, 1320, 0, 1327, 464, 0, 512, 0, 1416, - 1444, 1427, 1444, 1489, 1444, 1444, 1191, 0, 512, 0, + 0, 1097, 0, 0, 0, 1179, 1180, 1181, 1182, 1183, + 1184, 1185, 1186, -2, 1198, 0, 1398, 0, 0, 1404, + 1234, 0, 0, 1239, 0, 1404, 1404, 0, 1269, 0, + 1258, 793, 0, -2, 0, 0, 741, 0, 0, 961, + 615, 621, 911, 645, 849, 849, 0, 1398, 911, 911, + 671, 689, 685, 1269, 1260, 0, 460, 510, 0, 1315, + 0, 0, 1321, 0, 1328, 464, 0, 512, 0, 1417, + 1445, 1428, 1445, 1490, 1445, 1445, 1192, 0, 512, 0, 0, 482, 0, 0, 0, 0, 0, 478, 515, 857, 465, 467, 468, 469, 519, 520, 522, 0, 524, 525, 484, 496, 497, 498, 499, 0, 0, 0, 491, 504, - 505, 506, 507, 466, 1343, 1344, 1345, 1348, 1349, 1350, - 1351, 0, 0, 1354, 1355, 1356, 1357, 1358, 1441, 1442, - 1443, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1383, 1384, - 1385, 1386, 1387, 1388, 1367, 1368, 1369, 1370, 1371, 1372, - 1373, 1374, 0, 0, 1378, 0, 0, 1089, 0, 0, + 505, 506, 507, 466, 1344, 1345, 1346, 1349, 1350, 1351, + 1352, 0, 0, 1355, 1356, 1357, 1358, 1359, 1442, 1443, + 1444, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1384, 1385, + 1386, 1387, 1388, 1389, 1368, 1369, 1370, 1371, 1372, 1373, + 1374, 1375, 0, 0, 1379, 0, 0, 1089, 0, 0, 0, 0, 0, 1129, 541, 0, 0, 542, 1104, 0, 1122, 0, 1116, 1117, 0, 0, 763, 911, 362, 0, 956, 947, 0, 931, 0, 933, 953, 934, 954, 0, 0, 938, 0, 940, 0, 936, 937, 942, 935, 911, 923, 963, 988, 965, 968, 970, 971, 977, 0, 0, 0, 0, 273, 282, 283, 284, 291, 0, 567, 297, - 817, 0, 1394, 721, 722, 1285, 1286, 729, 0, 1046, + 817, 0, 1395, 721, 722, 1286, 1287, 729, 0, 1046, 900, 0, 0, 130, 133, 0, 128, 0, 0, 0, - 0, 120, 118, 1897, 0, 0, 807, 174, 0, 0, + 0, 120, 118, 1898, 0, 0, 807, 174, 0, 0, 0, 783, 0, 788, 785, 769, 779, 768, 776, 777, - 796, 1398, 1399, 1400, 1401, 0, 785, 759, 758, 820, - 805, 855, 856, 0, 1457, 400, 0, 1136, 194, 199, - 200, 201, 195, 193, 1143, 0, 1145, 0, 1243, 0, - 0, 1808, 1583, 1551, 0, 1553, 1555, 1588, 1589, 1591, - 1592, 1593, 1594, 1595, 1556, 0, 1176, 1652, 0, 1654, - 1662, 1663, 0, 1713, 1717, 0, 0, 0, 0, 0, - 0, 1626, 1627, 1631, 1632, 1633, 1634, 1636, 1637, 1638, - 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 851, 1616, + 796, 1399, 1400, 1401, 1402, 0, 785, 759, 758, 820, + 805, 855, 856, 0, 1458, 400, 0, 1136, 194, 199, + 200, 201, 195, 193, 1143, 0, 1145, 0, 1244, 0, + 0, 1809, 1584, 1552, 0, 1554, 1556, 1589, 1590, 1592, + 1593, 1594, 1595, 1596, 1557, 0, 1177, 1653, 0, 1655, + 1663, 1664, 0, 1714, 1718, 0, 0, 0, 0, 0, + 0, 1627, 1628, 1632, 1633, 1634, 1635, 1637, 1638, 1639, + 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 851, 1617, 0, 0, 0, 0, 0, 0, 0, 830, 0, 0, - 0, 64, 0, 64, 1249, 1251, 103, 105, 0, 99, - 100, 101, 991, 1227, 1397, 1216, 0, 1217, 0, 0, - 80, 82, 0, 2059, 0, 0, 0, 0, 1193, 1019, - 1035, 1031, 0, 0, 0, 0, 1404, 1405, 1407, 1408, - 1409, 0, 1057, 0, 0, 1077, 1078, 1079, 1091, 0, + 0, 64, 0, 64, 1250, 1252, 103, 105, 0, 99, + 100, 101, 991, 1228, 1398, 1217, 0, 1218, 0, 0, + 80, 82, 0, 2060, 0, 0, 0, 0, 1194, 1019, + 1035, 1031, 0, 0, 0, 0, 1405, 1406, 1408, 1409, + 1410, 0, 1057, 0, 0, 1077, 1078, 1079, 1091, 0, 553, 554, 0, 0, 0, 566, 562, 563, 564, 544, - 1128, 1111, 0, 0, 1100, 0, 0, 1110, 0, 1198, - 1919, 1919, 1919, 1227, 0, 0, 1328, 1919, 1919, 0, - 1235, 1237, 1227, 0, 0, 1332, 1271, 0, 0, 1262, + 1128, 1111, 0, 0, 1100, 0, 0, 1110, 0, 1199, + 1920, 1920, 1920, 1228, 0, 0, 1329, 1920, 1920, 0, + 1236, 1238, 1228, 0, 0, 1333, 1272, 0, 0, 1263, 0, 986, 0, 0, 911, 740, 743, 744, 841, 622, - 847, 848, 0, 660, 664, 661, 911, 1271, 452, 1292, - 0, 0, 0, 0, 0, 1324, 0, 0, 1296, 0, - 483, 513, 0, -2, 0, 1445, 0, 1430, 1445, 0, - 0, 1444, 0, 472, 512, 0, 0, 0, 526, 531, - 532, 0, 528, 529, 1484, 0, 530, 0, 517, 0, - 523, 1346, 1347, 0, 1352, 1353, 0, 1377, 0, 0, + 847, 848, 0, 660, 664, 661, 911, 1272, 452, 1293, + 0, 0, 0, 0, 0, 1325, 0, 0, 1297, 0, + 483, 513, 0, -2, 0, 1446, 0, 1431, 1446, 0, + 0, 1445, 0, 472, 512, 0, 0, 0, 526, 531, + 532, 1160, 528, 529, 1485, 0, 530, 0, 517, 0, + 523, 1347, 1348, 0, 1353, 1354, 0, 1378, 0, 0, 463, 533, 0, 0, 0, 534, 535, 540, 1130, 1131, 1097, 0, 1111, 0, 1121, 0, 1118, 1119, 851, 0, 0, 928, 957, 0, 0, 929, 0, 930, 932, 955, 0, 949, 939, 941, 361, 972, 0, 0, 974, 975, 976, 967, 299, 864, 1043, 0, 885, 0, 0, 918, - 0, 19, 0, 0, 123, 1907, 1910, 809, 0, 806, - 175, 0, 0, 0, 0, 773, 784, 767, 1402, 757, - 807, 861, 862, 196, 191, 1144, 1253, 0, 1244, 0, - 1508, 1565, 0, 1664, 0, 0, 1621, 1618, 1621, 1620, - 1612, 0, 1569, 0, 1571, 1572, 1573, 0, 1575, 1576, - 0, 828, 0, 60, 0, 63, 61, 0, 107, 1212, - 0, 1227, 0, 0, 0, 1222, 0, 0, 83, 0, + 0, 19, 0, 0, 123, 1908, 1911, 809, 0, 806, + 175, 0, 0, 0, 0, 773, 784, 767, 1403, 757, + 807, 861, 862, 196, 191, 1144, 1254, 0, 1245, 0, + 1509, 1566, 0, 1665, 0, 0, 1622, 1619, 1622, 1621, + 1613, 0, 1570, 0, 1572, 1573, 1574, 0, 1576, 1577, + 0, 828, 0, 60, 0, 63, 61, 0, 107, 1213, + 0, 1228, 0, 0, 0, 1223, 0, 0, 83, 0, 0, 0, 0, 0, 0, 89, 0, 0, 1028, 1030, - 0, 1063, 1332, 0, 1063, 1090, 1076, 0, 0, 555, + 0, 1063, 1333, 0, 1063, 1090, 1076, 0, 0, 555, 556, 0, 559, 565, 1092, 0, 0, 1094, 1095, 1096, - 0, 0, 1108, 0, 0, 0, 0, 1186, 1188, 1204, - 0, 0, 0, -2, 1239, 0, -2, 1232, 0, 1277, - 0, 1269, 0, 1261, 0, 1264, 911, 911, -2, 737, - 742, 0, 0, 665, 1277, 1294, 0, 1315, 0, 0, - 0, 0, 0, 0, 0, 1295, 0, 1308, 514, 1446, - -2, 1460, 1462, 0, 1203, 1465, 1466, 0, 0, 0, - 0, 0, 0, 1515, 1474, 0, 0, 1478, 1479, 1480, - 0, 0, 1483, 0, 1826, 1827, 0, 1487, 0, 0, - 0, 0, 0, 0, 0, 1424, 473, 474, 0, 476, - 477, 1919, 1485, 516, 470, 1919, 486, 1376, 1379, 1380, + 0, 0, 1108, 0, 0, 0, 0, 1187, 1189, 1205, + 0, 0, 0, -2, 1240, 0, -2, 1233, 0, 1278, + 0, 1270, 0, 1262, 0, 1265, 911, 911, -2, 737, + 742, 0, 0, 665, 1278, 1295, 0, 1316, 0, 0, + 0, 0, 0, 0, 0, 1296, 0, 1309, 514, 1447, + -2, 1461, 1463, 0, 1204, 1466, 1467, 0, 0, 0, + 0, 0, 0, 1516, 1475, 0, 0, 1479, 1480, 1481, + 0, 0, 1484, 0, 1827, 1828, 0, 1488, 0, 0, + 0, 0, 0, 0, 0, 1425, 473, 474, 0, 476, + 477, 527, 1486, 516, 470, 1920, 486, 1377, 1380, 1381, 539, 536, 537, 1100, 1103, 1114, 1123, 764, 844, 363, 364, 958, 0, 948, 950, 981, 978, 0, 0, 1047, - 901, 909, 2287, 2289, 2286, 124, 129, 0, 0, 811, + 901, 909, 2288, 2290, 2287, 124, 129, 0, 0, 811, 0, 808, 0, 802, 804, 185, 772, 809, 145, 177, - 0, 0, 1552, 0, 0, 0, 1653, 1703, 1704, 1624, - 1625, 0, 1613, 0, 1607, 1608, 1609, 1614, 0, 0, - 831, 826, 65, 106, 0, 1213, 1219, 1220, 1221, 1224, - 1225, 1226, 69, 1193, 0, 1193, 0, 0, 0, 1022, - 1036, 0, 1049, 1056, 1070, 1209, 1406, 1055, 0, 0, + 0, 0, 1553, 0, 0, 0, 1654, 1704, 1705, 1625, + 1626, 0, 1614, 0, 1608, 1609, 1610, 1615, 0, 0, + 831, 826, 65, 106, 0, 1214, 1220, 1221, 1222, 1225, + 1226, 1227, 69, 1194, 0, 1194, 0, 0, 0, 1022, + 1036, 0, 1049, 1056, 1070, 1210, 1407, 1055, 0, 0, 552, 557, 0, 560, 561, 1112, 1111, 0, 1098, 1099, - 0, 1106, 0, 0, 1199, 1200, 1201, 1329, 1330, 1331, - 1287, 1234, 0, -2, 1340, 0, 1230, 1253, 1287, 0, - 1265, 0, 1272, 0, 1270, 1263, 851, 738, 850, 1274, - 462, 1326, 1316, 0, 1318, 0, 0, 0, 0, 1297, - -2, 0, 1461, 1463, 1464, 1467, 1468, 1469, 1520, 1521, - 1522, 0, 0, 1472, 1517, 1518, 1519, 1473, 0, 0, - 0, 0, 0, 1824, 1825, 1513, 0, 0, 1431, 1433, - 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1432, 0, 0, - 0, 1423, 1425, 475, 0, 0, 1919, 1113, 360, 0, - 0, 982, 984, 979, 980, 903, 0, 0, 0, 0, - 119, 121, 136, 0, 810, 176, 0, 811, 147, 0, - 168, 0, 1254, 0, 1564, 0, 0, 0, 1623, 1610, - 0, 0, 0, 0, 0, 1828, 1829, 1830, 0, 1570, - 1574, 1228, 0, 67, 0, 84, 1193, 85, 1193, 0, - 0, 0, 0, 1071, 1072, 1080, 1081, 0, 1083, 1084, - 558, 1093, 1101, 1105, 1108, 0, 1160, 1289, 0, 1236, - 1202, 1342, 1919, 1240, 1289, 0, 1334, 1919, 1919, 1255, - 0, 1267, 0, 1279, 0, 1273, 844, 451, 0, 1276, - 1312, 1317, 1319, 1321, 0, 1325, 1323, 1298, -2, 0, - 1306, 0, 0, 1470, 1471, 0, 0, 1723, 1919, 0, - 1503, 0, 1160, 1160, 1160, 1160, 0, 527, 485, 0, - 959, 973, 0, 910, 0, 0, 0, 0, 0, 800, - 137, 0, 146, 165, 0, 178, 179, 0, 0, 0, - 0, 1246, 0, 1511, 1512, 0, 1599, 0, 0, 0, - 1603, 1604, 1605, 1606, 1193, 69, 0, 86, 87, 0, - 1193, 0, 1048, 0, 1082, 1107, 1109, 1159, 1229, 0, - 1326, 1341, 0, 1231, 1333, 0, 0, 0, 1266, 1278, - 0, 1281, 736, 1275, 1293, 0, 1322, 1299, 1307, 0, - 1302, 0, 0, 0, 1516, 0, 1477, 0, 1482, 1491, - 1504, 0, 0, 1412, 0, 1414, 0, 1418, 0, 1420, - 0, 0, 487, 983, 985, 0, 1774, 905, 906, 0, - 813, 803, 148, 152, 0, 174, 171, 0, 180, 0, - 0, 0, 0, 1242, 0, 1509, 0, 1600, 1601, 1602, - 66, 68, 70, 1193, 88, 0, 1050, 1051, 1064, 1161, - 1919, 1919, 0, 0, 0, 1167, 1168, 1919, 1919, 1919, - 1172, 0, 1314, 1346, 1335, 1336, 1337, 1280, 1313, 1301, - 0, -2, 1309, 0, 0, 1776, 1786, 1787, 1475, 1481, - 1490, 1492, 1493, 0, 1505, 1506, 1507, 1514, 1160, 1160, - 1160, 1160, 1422, 904, 0, 0, 812, 0, 139, 0, - 0, 169, 170, 172, 0, 181, 0, 183, 184, 0, - 0, 1611, 90, 1052, 0, 0, 1164, 1165, 0, 0, - 0, 0, 1290, 0, 1292, 1303, -2, 0, 1311, 0, - 1476, 1494, 0, 1495, 0, 0, 0, 1413, 1415, 1419, - 1421, 1774, 907, 814, 1252, 0, 153, 0, 155, 157, - 158, 1447, 166, 167, 173, 182, 0, 0, 1037, 1053, - 0, 1162, 1163, 1166, 1169, 1170, 1171, 0, 1294, 1310, - 1777, 1496, 1498, 1499, 0, 0, 1497, 0, 140, 141, - 0, 154, 0, 0, 1247, 1510, 1054, 1291, 1288, 1500, - 1502, 1501, 908, 0, 0, 156, 1448, 142, 143, 144, - 0, 1449, + 0, 1106, 0, 0, 1200, 1201, 1202, 1330, 1331, 1332, + 1288, 1235, 0, -2, 1341, 0, 1231, 1254, 1288, 0, + 1266, 0, 1273, 0, 1271, 1264, 851, 738, 850, 1275, + 462, 1327, 1317, 0, 1319, 0, 0, 0, 0, 1298, + -2, 0, 1462, 1464, 1465, 1468, 1469, 1470, 1521, 1522, + 1523, 0, 0, 1473, 1518, 1519, 1520, 1474, 0, 0, + 0, 0, 0, 1825, 1826, 1514, 0, 0, 1432, 1434, + 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1433, 0, 0, + 0, 1424, 1426, 475, 1161, 1920, 1920, 0, 0, 0, + 1167, 1168, 1920, 1920, 1920, 1172, 1173, 0, 1920, 1113, + 360, 0, 0, 982, 984, 979, 980, 903, 0, 0, + 0, 0, 119, 121, 136, 0, 810, 176, 0, 811, + 147, 0, 168, 0, 1255, 0, 1565, 0, 0, 0, + 1624, 1611, 0, 0, 0, 0, 0, 1829, 1830, 1831, + 0, 1571, 1575, 1229, 0, 67, 0, 84, 1194, 85, + 1194, 0, 0, 0, 0, 1071, 1072, 1080, 1081, 0, + 1083, 1084, 558, 1093, 1101, 1105, 1108, 0, 1160, 1290, + 0, 1237, 1203, 1343, 1920, 1241, 1290, 0, 1335, 1920, + 1920, 1256, 0, 1268, 0, 1280, 0, 1274, 844, 451, + 0, 1277, 1313, 1318, 1320, 1322, 0, 1326, 1324, 1299, + -2, 0, 1307, 0, 0, 1471, 1472, 0, 0, 1724, + 1920, 0, 1504, 0, 1160, 1160, 1160, 1160, 0, 0, + 0, 1164, 1165, 0, 0, 0, 0, 485, 0, 959, + 973, 0, 910, 0, 0, 0, 0, 0, 800, 137, + 0, 146, 165, 0, 178, 179, 0, 0, 0, 0, + 1247, 0, 1512, 1513, 0, 1600, 0, 0, 0, 1604, + 1605, 1606, 1607, 1194, 69, 0, 86, 87, 0, 1194, + 0, 1048, 0, 1082, 1107, 1109, 1159, 1230, 0, 1327, + 1342, 0, 1232, 1334, 0, 0, 0, 1267, 1279, 0, + 1282, 736, 1276, 1294, 0, 1323, 1300, 1308, 0, 1303, + 0, 0, 0, 1517, 0, 1478, 0, 1483, 1492, 1505, + 0, 0, 1413, 0, 1415, 0, 1419, 0, 1421, 0, + 0, 1162, 1163, 1166, 1169, 1170, 1171, 487, 983, 985, + 0, 1775, 905, 906, 0, 813, 803, 148, 152, 0, + 174, 171, 0, 180, 0, 0, 0, 0, 1243, 0, + 1510, 0, 1601, 1602, 1603, 66, 68, 70, 1194, 88, + 0, 1050, 1051, 1064, 0, 1315, 1347, 1336, 1337, 1338, + 1281, 1314, 1302, 0, -2, 1310, 0, 0, 1777, 1787, + 1788, 1476, 1482, 1491, 1493, 1494, 0, 1506, 1507, 1508, + 1515, 1160, 1160, 1160, 1160, 1423, 904, 0, 0, 812, + 0, 139, 0, 0, 169, 170, 172, 0, 181, 0, + 183, 184, 0, 0, 1612, 90, 1052, 1291, 0, 1293, + 1304, -2, 0, 1312, 0, 1477, 1495, 0, 1496, 0, + 0, 0, 1414, 1416, 1420, 1422, 1775, 907, 814, 1253, + 0, 153, 0, 155, 157, 158, 1448, 166, 167, 173, + 182, 0, 0, 1037, 1053, 0, 0, 1295, 1311, 1778, + 1497, 1499, 1500, 0, 0, 1498, 0, 140, 141, 0, + 154, 0, 0, 1248, 1511, 1054, 1292, 1289, 1501, 1503, + 1502, 908, 0, 0, 156, 1449, 142, 143, 144, 0, + 1450, } var yyTok1 = [...]int{ @@ -10436,14 +10457,14 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 121, 3, 3, 3, 152, 144, 3, 88, 89, 149, 147, 172, 148, 171, 150, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 683, 680, - 131, 130, 132, 3, 684, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 684, 681, + 131, 130, 132, 3, 685, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 154, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 681, 143, 682, 155, + 3, 3, 3, 682, 143, 683, 155, } var yyTok2 = [...]int{ @@ -10557,7 +10578,7 @@ var yyTok3 = [...]int{ 57990, 665, 57991, 666, 57992, 667, 57993, 668, 57994, 669, 57995, 670, 57996, 671, 57997, 672, 57998, 673, 57999, 674, 58000, 675, 58001, 676, 58002, 677, 58003, 678, 58004, 679, - 0, + 58005, 680, 0, } var yyErrorMessages = [...]struct { @@ -15023,35 +15044,39 @@ yydefault: } yyVAL.union = yyLOCAL case 527: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AlterTableOption //line mysql_sql.y:3861 { - val := int64(yyDollar[6].item.(int64)) - if val <= 0 { - yylex.Error("LISTS should be greater than 0") - return 1 + var io *tree.IndexOption = nil + if yyDollar[4].indexOptionUnion() == nil { + io = tree.NewIndexOption() + io.IType = tree.INDEX_TYPE_IVFFLAT + } else { + io = yyDollar[4].indexOptionUnion() + io.IType = tree.INDEX_TYPE_IVFFLAT } - var keyType = tree.INDEX_TYPE_IVFFLAT - var algoParamList = val var name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) - yyLOCAL = tree.NewAlterOptionAlterReIndex(name, keyType, algoParamList) + yyLOCAL = tree.NewAlterOptionAlterReIndex(name, io) } yyVAL.union = yyLOCAL case 528: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3873 +//line mysql_sql.y:3874 { - var keyType = tree.INDEX_TYPE_HNSW + + var io *tree.IndexOption = nil + io = tree.NewIndexOption() + io.IType = tree.INDEX_TYPE_HNSW var name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) - yyLOCAL = tree.NewAlterOptionAlterReIndex(name, keyType, 0) + yyLOCAL = tree.NewAlterOptionAlterReIndex(name, io) } yyVAL.union = yyLOCAL case 529: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3879 +//line mysql_sql.y:3883 { var checkType = yyDollar[1].str var enforce = yyDollar[3].boolValUnion() @@ -15061,7 +15086,7 @@ yydefault: case 530: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AlterTableOption -//line mysql_sql.y:3885 +//line mysql_sql.y:3889 { var checkType = yyDollar[1].str var enforce = yyDollar[3].boolValUnion() @@ -15071,7 +15096,7 @@ yydefault: case 531: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.VisibleType -//line mysql_sql.y:3893 +//line mysql_sql.y:3897 { yyLOCAL = tree.VISIBLE_TYPE_VISIBLE } @@ -15079,7 +15104,7 @@ yydefault: case 532: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.VisibleType -//line mysql_sql.y:3897 +//line mysql_sql.y:3901 { yyLOCAL = tree.VISIBLE_TYPE_INVISIBLE } @@ -15087,7 +15112,7 @@ yydefault: case 533: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3903 +//line mysql_sql.y:3907 { var ifExists = yyDollar[3].boolValUnion() var name = yyDollar[4].exprUnion() @@ -15107,7 +15132,7 @@ yydefault: case 534: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3921 +//line mysql_sql.y:3925 { var accountName = "" var dbName = yyDollar[3].str @@ -15126,7 +15151,7 @@ yydefault: case 535: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3936 +//line mysql_sql.y:3940 { var accountName = "" var dbName = yyDollar[3].str @@ -15145,7 +15170,7 @@ yydefault: case 536: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3951 +//line mysql_sql.y:3955 { var accountName = yyDollar[4].str var dbName = "" @@ -15164,7 +15189,7 @@ yydefault: case 537: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3966 +//line mysql_sql.y:3970 { assignments := []*tree.VarAssignmentExpr{ { @@ -15180,7 +15205,7 @@ yydefault: case 538: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AlterAccountAuthOption -//line mysql_sql.y:3979 +//line mysql_sql.y:3983 { yyLOCAL = tree.AlterAccountAuthOption{ Exist: false, @@ -15190,7 +15215,7 @@ yydefault: case 539: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AlterAccountAuthOption -//line mysql_sql.y:3985 +//line mysql_sql.y:3989 { yyLOCAL = tree.AlterAccountAuthOption{ Exist: true, @@ -15203,7 +15228,7 @@ yydefault: case 540: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:3996 +//line mysql_sql.y:4000 { // Create temporary variables with meaningful names ifExists := yyDollar[3].boolValUnion() @@ -15219,7 +15244,7 @@ yydefault: case 541: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4008 +//line mysql_sql.y:4012 { ifExists := yyDollar[3].boolValUnion() var Username = yyDollar[4].usernameRecordUnion().Username @@ -15234,7 +15259,7 @@ yydefault: case 542: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4019 +//line mysql_sql.y:4023 { ifExists := yyDollar[3].boolValUnion() var Username = yyDollar[4].usernameRecordUnion().Username @@ -15249,7 +15274,7 @@ yydefault: case 543: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Role -//line mysql_sql.y:4031 +//line mysql_sql.y:4035 { yyLOCAL = nil } @@ -15257,7 +15282,7 @@ yydefault: case 544: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Role -//line mysql_sql.y:4035 +//line mysql_sql.y:4039 { var UserName = yyDollar[3].str yyLOCAL = tree.NewRole( @@ -15268,7 +15293,7 @@ yydefault: case 545: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4043 +//line mysql_sql.y:4047 { yyLOCAL = false } @@ -15276,7 +15301,7 @@ yydefault: case 546: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4047 +//line mysql_sql.y:4051 { yyLOCAL = true } @@ -15284,7 +15309,7 @@ yydefault: case 547: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4052 +//line mysql_sql.y:4056 { yyLOCAL = nil } @@ -15292,7 +15317,7 @@ yydefault: case 548: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4056 +//line mysql_sql.y:4060 { yyLOCAL = yyDollar[1].userMiscOptionUnion() } @@ -15300,7 +15325,7 @@ yydefault: case 549: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4072 +//line mysql_sql.y:4076 { yyLOCAL = tree.NewUserMiscOptionAccountUnlock() } @@ -15308,7 +15333,7 @@ yydefault: case 550: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4076 +//line mysql_sql.y:4080 { yyLOCAL = tree.NewUserMiscOptionAccountLock() } @@ -15316,7 +15341,7 @@ yydefault: case 551: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4080 +//line mysql_sql.y:4084 { yyLOCAL = tree.NewUserMiscOptionPasswordExpireNone() } @@ -15324,7 +15349,7 @@ yydefault: case 552: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4084 +//line mysql_sql.y:4088 { var Value = yyDollar[3].item.(int64) yyLOCAL = tree.NewUserMiscOptionPasswordExpireInterval( @@ -15335,7 +15360,7 @@ yydefault: case 553: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4091 +//line mysql_sql.y:4095 { yyLOCAL = tree.NewUserMiscOptionPasswordExpireNever() } @@ -15343,7 +15368,7 @@ yydefault: case 554: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4095 +//line mysql_sql.y:4099 { yyLOCAL = tree.NewUserMiscOptionPasswordExpireDefault() } @@ -15351,7 +15376,7 @@ yydefault: case 555: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4099 +//line mysql_sql.y:4103 { yyLOCAL = tree.NewUserMiscOptionPasswordHistoryDefault() } @@ -15359,7 +15384,7 @@ yydefault: case 556: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4103 +//line mysql_sql.y:4107 { var Value = yyDollar[3].item.(int64) yyLOCAL = tree.NewUserMiscOptionPasswordHistoryCount( @@ -15370,7 +15395,7 @@ yydefault: case 557: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4110 +//line mysql_sql.y:4114 { yyLOCAL = tree.NewUserMiscOptionPasswordReuseIntervalDefault() } @@ -15378,7 +15403,7 @@ yydefault: case 558: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4114 +//line mysql_sql.y:4118 { var Value = yyDollar[4].item.(int64) yyLOCAL = tree.NewUserMiscOptionPasswordReuseIntervalCount( @@ -15389,7 +15414,7 @@ yydefault: case 559: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4121 +//line mysql_sql.y:4125 { yyLOCAL = tree.NewUserMiscOptionPasswordRequireCurrentNone() } @@ -15397,7 +15422,7 @@ yydefault: case 560: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4125 +//line mysql_sql.y:4129 { yyLOCAL = tree.NewUserMiscOptionPasswordRequireCurrentDefault() } @@ -15405,7 +15430,7 @@ yydefault: case 561: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4129 +//line mysql_sql.y:4133 { yyLOCAL = tree.NewUserMiscOptionPasswordRequireCurrentOptional() } @@ -15413,7 +15438,7 @@ yydefault: case 562: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4133 +//line mysql_sql.y:4137 { var Value = yyDollar[2].item.(int64) yyLOCAL = tree.NewUserMiscOptionFailedLoginAttempts( @@ -15424,7 +15449,7 @@ yydefault: case 563: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4140 +//line mysql_sql.y:4144 { var Value = yyDollar[2].item.(int64) yyLOCAL = tree.NewUserMiscOptionPasswordLockTimeCount( @@ -15435,27 +15460,27 @@ yydefault: case 564: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.UserMiscOption -//line mysql_sql.y:4147 +//line mysql_sql.y:4151 { yyLOCAL = tree.NewUserMiscOptionPasswordLockTimeUnbounded() } yyVAL.union = yyLOCAL case 565: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:4153 +//line mysql_sql.y:4157 { yyVAL.item = nil } case 566: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4158 +//line mysql_sql.y:4162 { yyVAL.item = nil } case 606: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4207 +//line mysql_sql.y:4211 { yyLOCAL = &tree.ShowLogserviceReplicas{} } @@ -15463,7 +15488,7 @@ yydefault: case 607: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4213 +//line mysql_sql.y:4217 { yyLOCAL = &tree.ShowLogserviceStores{} } @@ -15471,7 +15496,7 @@ yydefault: case 608: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4219 +//line mysql_sql.y:4223 { yyLOCAL = &tree.ShowLogserviceSettings{} } @@ -15479,7 +15504,7 @@ yydefault: case 609: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4225 +//line mysql_sql.y:4229 { yyLOCAL = &tree.ShowCollation{ Like: yyDollar[3].comparisionExprUnion(), @@ -15490,7 +15515,7 @@ yydefault: case 610: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4234 +//line mysql_sql.y:4238 { yyLOCAL = &tree.ShowStages{ Like: yyDollar[3].comparisionExprUnion(), @@ -15500,7 +15525,7 @@ yydefault: case 611: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4242 +//line mysql_sql.y:4246 { yyLOCAL = &tree.ShowSnapShots{ Where: yyDollar[3].whereUnion(), @@ -15510,7 +15535,7 @@ yydefault: case 612: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4250 +//line mysql_sql.y:4254 { yyLOCAL = &tree.ShowPitr{ Where: yyDollar[3].whereUnion(), @@ -15520,7 +15545,7 @@ yydefault: case 613: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4258 +//line mysql_sql.y:4262 { yyLOCAL = &tree.ShowRecoveryWindow{ Level: tree.RECOVERYWINDOWLEVELACCOUNT, @@ -15530,7 +15555,7 @@ yydefault: case 614: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4264 +//line mysql_sql.y:4268 { yyLOCAL = &tree.ShowRecoveryWindow{ Level: tree.RECOVERYWINDOWLEVELDATABASE, @@ -15541,7 +15566,7 @@ yydefault: case 615: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4271 +//line mysql_sql.y:4275 { yyLOCAL = &tree.ShowRecoveryWindow{ Level: tree.RECOVERYWINDOWLEVELTABLE, @@ -15553,7 +15578,7 @@ yydefault: case 616: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4279 +//line mysql_sql.y:4283 { yyLOCAL = &tree.ShowRecoveryWindow{ Level: tree.RECOVERYWINDOWLEVELACCOUNT, @@ -15564,7 +15589,7 @@ yydefault: case 617: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4288 +//line mysql_sql.y:4292 { yyLOCAL = &tree.ShowGrants{ShowGrantType: tree.GrantForUser} } @@ -15572,7 +15597,7 @@ yydefault: case 618: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4292 +//line mysql_sql.y:4296 { yyLOCAL = &tree.ShowGrants{Username: yyDollar[4].usernameRecordUnion().Username, Hostname: yyDollar[4].usernameRecordUnion().Hostname, Roles: yyDollar[5].rolesUnion(), ShowGrantType: tree.GrantForUser} } @@ -15580,7 +15605,7 @@ yydefault: case 619: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4296 +//line mysql_sql.y:4300 { s := &tree.ShowGrants{} roles := []*tree.Role{ @@ -15594,7 +15619,7 @@ yydefault: case 620: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:4307 +//line mysql_sql.y:4311 { yyLOCAL = nil } @@ -15602,7 +15627,7 @@ yydefault: case 621: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:4311 +//line mysql_sql.y:4315 { yyLOCAL = yyDollar[2].rolesUnion() } @@ -15610,25 +15635,25 @@ yydefault: case 622: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4317 +//line mysql_sql.y:4321 { yyLOCAL = &tree.ShowTableStatus{DbName: yyDollar[5].str, Like: yyDollar[6].comparisionExprUnion(), Where: yyDollar[7].whereUnion()} } yyVAL.union = yyLOCAL case 623: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4322 +//line mysql_sql.y:4326 { } case 625: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4326 +//line mysql_sql.y:4330 { } case 627: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4331 +//line mysql_sql.y:4335 { yyLOCAL = &tree.ShowFunctionOrProcedureStatus{ Like: yyDollar[4].comparisionExprUnion(), @@ -15640,7 +15665,7 @@ yydefault: case 628: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4341 +//line mysql_sql.y:4345 { yyLOCAL = &tree.ShowFunctionOrProcedureStatus{ Like: yyDollar[4].comparisionExprUnion(), @@ -15652,7 +15677,7 @@ yydefault: case 629: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4351 +//line mysql_sql.y:4355 { yyLOCAL = &tree.ShowRolesStmt{ Like: yyDollar[3].comparisionExprUnion(), @@ -15662,7 +15687,7 @@ yydefault: case 630: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4359 +//line mysql_sql.y:4363 { yyLOCAL = &tree.ShowNodeList{} } @@ -15670,7 +15695,7 @@ yydefault: case 631: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4365 +//line mysql_sql.y:4369 { yyLOCAL = &tree.ShowLocks{} } @@ -15678,7 +15703,7 @@ yydefault: case 632: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4371 +//line mysql_sql.y:4375 { yyLOCAL = &tree.ShowTableNumber{DbName: yyDollar[4].str} } @@ -15686,7 +15711,7 @@ yydefault: case 633: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4377 +//line mysql_sql.y:4381 { yyLOCAL = &tree.ShowColumnNumber{Table: yyDollar[3].unresolvedObjectNameUnion(), DbName: yyDollar[4].str} } @@ -15694,7 +15719,7 @@ yydefault: case 634: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4383 +//line mysql_sql.y:4387 { yyLOCAL = &tree.ShowTableValues{Table: yyDollar[3].unresolvedObjectNameUnion(), DbName: yyDollar[4].str} } @@ -15702,7 +15727,7 @@ yydefault: case 635: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4389 +//line mysql_sql.y:4393 { yyLOCAL = &tree.ShowTableSize{Table: yyDollar[3].unresolvedObjectNameUnion(), DbName: yyDollar[4].str} } @@ -15710,7 +15735,7 @@ yydefault: case 636: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4395 +//line mysql_sql.y:4399 { s := yyDollar[2].statementUnion().(*tree.ShowTarget) s.Like = yyDollar[3].comparisionExprUnion() @@ -15721,7 +15746,7 @@ yydefault: case 637: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4404 +//line mysql_sql.y:4408 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowConfig} } @@ -15729,7 +15754,7 @@ yydefault: case 638: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4408 +//line mysql_sql.y:4412 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowCharset} } @@ -15737,7 +15762,7 @@ yydefault: case 639: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4412 +//line mysql_sql.y:4416 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowEngines} } @@ -15745,7 +15770,7 @@ yydefault: case 640: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4416 +//line mysql_sql.y:4420 { yyLOCAL = &tree.ShowTarget{DbName: yyDollar[3].str, Type: tree.ShowTriggers} } @@ -15753,7 +15778,7 @@ yydefault: case 641: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4420 +//line mysql_sql.y:4424 { yyLOCAL = &tree.ShowTarget{DbName: yyDollar[3].str, Type: tree.ShowEvents} } @@ -15761,7 +15786,7 @@ yydefault: case 642: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4424 +//line mysql_sql.y:4428 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowPlugins} } @@ -15769,7 +15794,7 @@ yydefault: case 643: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4428 +//line mysql_sql.y:4432 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowPrivileges} } @@ -15777,7 +15802,7 @@ yydefault: case 644: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4432 +//line mysql_sql.y:4436 { yyLOCAL = &tree.ShowTarget{Type: tree.ShowProfiles} } @@ -15785,7 +15810,7 @@ yydefault: case 645: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4438 +//line mysql_sql.y:4442 { yyLOCAL = &tree.ShowIndex{ TableName: yyDollar[4].unresolvedObjectNameUnion(), @@ -15796,18 +15821,18 @@ yydefault: yyVAL.union = yyLOCAL case 646: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4447 +//line mysql_sql.y:4451 { } case 647: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:4449 +//line mysql_sql.y:4453 { } case 651: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4458 +//line mysql_sql.y:4462 { yyLOCAL = &tree.ShowVariables{ Global: yyDollar[2].boolValUnion(), @@ -15819,7 +15844,7 @@ yydefault: case 652: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4468 +//line mysql_sql.y:4472 { yyLOCAL = &tree.ShowStatus{ Global: yyDollar[2].boolValUnion(), @@ -15831,7 +15856,7 @@ yydefault: case 653: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4477 +//line mysql_sql.y:4481 { yyLOCAL = false } @@ -15839,7 +15864,7 @@ yydefault: case 654: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4481 +//line mysql_sql.y:4485 { yyLOCAL = true } @@ -15847,7 +15872,7 @@ yydefault: case 655: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4485 +//line mysql_sql.y:4489 { yyLOCAL = false } @@ -15855,7 +15880,7 @@ yydefault: case 656: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4491 +//line mysql_sql.y:4495 { yyLOCAL = &tree.ShowWarnings{} } @@ -15863,7 +15888,7 @@ yydefault: case 657: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4497 +//line mysql_sql.y:4501 { yyLOCAL = &tree.ShowErrors{} } @@ -15871,7 +15896,7 @@ yydefault: case 658: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4503 +//line mysql_sql.y:4507 { yyLOCAL = &tree.ShowProcessList{Full: yyDollar[2].fullOptUnion()} } @@ -15879,7 +15904,7 @@ yydefault: case 659: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4509 +//line mysql_sql.y:4513 { yyLOCAL = &tree.ShowSequences{ DBName: yyDollar[3].str, @@ -15890,7 +15915,7 @@ yydefault: case 660: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4518 +//line mysql_sql.y:4522 { yyLOCAL = &tree.ShowTables{ Open: false, @@ -15905,7 +15930,7 @@ yydefault: case 661: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4529 +//line mysql_sql.y:4533 { yyLOCAL = &tree.ShowTables{ Open: true, @@ -15919,7 +15944,7 @@ yydefault: case 662: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4541 +//line mysql_sql.y:4545 { yyLOCAL = &tree.ShowDatabases{ Like: yyDollar[3].comparisionExprUnion(), @@ -15931,7 +15956,7 @@ yydefault: case 663: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4549 +//line mysql_sql.y:4553 { yyLOCAL = &tree.ShowDatabases{Like: yyDollar[3].comparisionExprUnion(), Where: yyDollar[4].whereUnion()} } @@ -15939,7 +15964,7 @@ yydefault: case 664: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4555 +//line mysql_sql.y:4559 { yyLOCAL = &tree.ShowColumns{ Ext: false, @@ -15955,7 +15980,7 @@ yydefault: case 665: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4567 +//line mysql_sql.y:4571 { yyLOCAL = &tree.ShowColumns{ Ext: true, @@ -15971,7 +15996,7 @@ yydefault: case 666: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4581 +//line mysql_sql.y:4585 { yyLOCAL = &tree.ShowAccounts{Like: yyDollar[3].comparisionExprUnion()} } @@ -15979,7 +16004,7 @@ yydefault: case 667: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4587 +//line mysql_sql.y:4591 { yyLOCAL = &tree.ShowPublications{Like: yyDollar[3].comparisionExprUnion()} } @@ -15987,7 +16012,7 @@ yydefault: case 668: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4593 +//line mysql_sql.y:4597 { yyLOCAL = &tree.ShowAccountUpgrade{} } @@ -15995,7 +16020,7 @@ yydefault: case 669: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4599 +//line mysql_sql.y:4603 { yyLOCAL = &tree.ShowSubscriptions{Like: yyDollar[3].comparisionExprUnion()} } @@ -16003,7 +16028,7 @@ yydefault: case 670: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4603 +//line mysql_sql.y:4607 { yyLOCAL = &tree.ShowSubscriptions{All: true, Like: yyDollar[4].comparisionExprUnion()} } @@ -16011,7 +16036,7 @@ yydefault: case 671: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ComparisonExpr -//line mysql_sql.y:4608 +//line mysql_sql.y:4612 { yyLOCAL = nil } @@ -16019,7 +16044,7 @@ yydefault: case 672: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ComparisonExpr -//line mysql_sql.y:4612 +//line mysql_sql.y:4616 { yyLOCAL = tree.NewComparisonExpr(tree.LIKE, nil, yyDollar[2].exprUnion()) } @@ -16027,27 +16052,27 @@ yydefault: case 673: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ComparisonExpr -//line mysql_sql.y:4616 +//line mysql_sql.y:4620 { yyLOCAL = tree.NewComparisonExpr(tree.ILIKE, nil, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL case 674: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4621 +//line mysql_sql.y:4625 { yyVAL.str = "" } case 675: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:4625 +//line mysql_sql.y:4629 { yyVAL.str = yyDollar[2].cstrUnion().Compare() } case 676: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4631 +//line mysql_sql.y:4635 { yyLOCAL = yyDollar[2].unresolvedObjectNameUnion() } @@ -16055,7 +16080,7 @@ yydefault: case 681: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4644 +//line mysql_sql.y:4648 { yyLOCAL = false } @@ -16063,7 +16088,7 @@ yydefault: case 682: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4648 +//line mysql_sql.y:4652 { yyLOCAL = true } @@ -16071,7 +16096,7 @@ yydefault: case 683: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4654 +//line mysql_sql.y:4658 { yyLOCAL = &tree.ShowCreateTable{ Name: yyDollar[4].unresolvedObjectNameUnion(), @@ -16082,7 +16107,7 @@ yydefault: case 684: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4662 +//line mysql_sql.y:4666 { yyLOCAL = &tree.ShowCreateView{ Name: yyDollar[4].unresolvedObjectNameUnion(), @@ -16093,7 +16118,7 @@ yydefault: case 685: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4669 +//line mysql_sql.y:4673 { yyLOCAL = &tree.ShowCreateDatabase{ IfNotExists: yyDollar[4].ifNotExistsUnion(), @@ -16105,7 +16130,7 @@ yydefault: case 686: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4677 +//line mysql_sql.y:4681 { yyLOCAL = &tree.ShowCreatePublications{Name: yyDollar[4].str} } @@ -16113,7 +16138,7 @@ yydefault: case 687: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4683 +//line mysql_sql.y:4687 { yyLOCAL = &tree.ShowBackendServers{} } @@ -16121,7 +16146,7 @@ yydefault: case 688: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4689 +//line mysql_sql.y:4693 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedObjectName(tblName) @@ -16130,7 +16155,7 @@ yydefault: case 689: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4694 +//line mysql_sql.y:4698 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -16139,14 +16164,14 @@ yydefault: yyVAL.union = yyLOCAL case 690: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:4702 +//line mysql_sql.y:4706 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) } case 691: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4708 +//line mysql_sql.y:4712 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedObjectName(tblName) @@ -16155,7 +16180,7 @@ yydefault: case 692: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4713 +//line mysql_sql.y:4717 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -16165,7 +16190,7 @@ yydefault: case 693: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedObjectName -//line mysql_sql.y:4719 +//line mysql_sql.y:4723 { yyLOCAL = tree.NewUnresolvedObjectName(yyDollar[1].cstrUnion().Compare(), yyDollar[3].cstrUnion().Compare(), yyDollar[5].cstrUnion().Compare()) } @@ -16173,7 +16198,7 @@ yydefault: case 694: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4725 +//line mysql_sql.y:4729 { yyLOCAL = tree.NewTruncateTable(yyDollar[2].tableNameUnion()) } @@ -16181,7 +16206,7 @@ yydefault: case 695: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4729 +//line mysql_sql.y:4733 { yyLOCAL = tree.NewTruncateTable(yyDollar[3].tableNameUnion()) } @@ -16189,7 +16214,7 @@ yydefault: case 714: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4757 +//line mysql_sql.y:4761 { var ifExists = yyDollar[3].boolValUnion() var name = yyDollar[4].tableNamesUnion() @@ -16199,7 +16224,7 @@ yydefault: case 715: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4765 +//line mysql_sql.y:4769 { var ifExists = yyDollar[3].boolValUnion() var name = yyDollar[4].exprUnion() @@ -16209,7 +16234,7 @@ yydefault: case 716: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4773 +//line mysql_sql.y:4777 { var ifExists = yyDollar[3].boolValUnion() var users = yyDollar[4].usersUnion() @@ -16219,7 +16244,7 @@ yydefault: case 717: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:4781 +//line mysql_sql.y:4785 { yyLOCAL = []*tree.User{yyDollar[1].userUnion()} } @@ -16227,7 +16252,7 @@ yydefault: case 718: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:4785 +//line mysql_sql.y:4789 { yyLOCAL = append(yyDollar[1].usersUnion(), yyDollar[3].userUnion()) } @@ -16235,7 +16260,7 @@ yydefault: case 719: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.User -//line mysql_sql.y:4791 +//line mysql_sql.y:4795 { var Username = yyDollar[1].usernameRecordUnion().Username var Hostname = yyDollar[1].usernameRecordUnion().Hostname @@ -16250,7 +16275,7 @@ yydefault: case 720: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4804 +//line mysql_sql.y:4808 { var ifExists = yyDollar[3].boolValUnion() var roles = yyDollar[4].rolesUnion() @@ -16260,7 +16285,7 @@ yydefault: case 721: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4812 +//line mysql_sql.y:4816 { var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) var tableName = yyDollar[6].tableNameUnion() @@ -16271,7 +16296,7 @@ yydefault: case 722: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4821 +//line mysql_sql.y:4825 { var ifExists = yyDollar[4].boolValUnion() var names = yyDollar[5].tableNamesUnion() @@ -16281,7 +16306,7 @@ yydefault: case 723: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4827 +//line mysql_sql.y:4831 { var ifExists = yyDollar[3].boolValUnion() var names = yyDollar[4].tableNamesUnion() @@ -16291,7 +16316,7 @@ yydefault: case 724: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4835 +//line mysql_sql.y:4839 { var ifExists = yyDollar[3].boolValUnion() var names = yyDollar[4].tableNamesUnion() @@ -16301,7 +16326,7 @@ yydefault: case 725: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4843 +//line mysql_sql.y:4847 { var ifExists = yyDollar[3].boolValUnion() var names = yyDollar[4].tableNamesUnion() @@ -16311,7 +16336,7 @@ yydefault: case 726: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4851 +//line mysql_sql.y:4855 { var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) var ifExists = yyDollar[3].boolValUnion() @@ -16321,7 +16346,7 @@ yydefault: case 727: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4857 +//line mysql_sql.y:4861 { var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) var ifExists = yyDollar[3].boolValUnion() @@ -16331,7 +16356,7 @@ yydefault: case 728: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4865 +//line mysql_sql.y:4869 { yyLOCAL = tree.NewDeallocate(tree.Identifier(yyDollar[3].str), true) } @@ -16339,7 +16364,7 @@ yydefault: case 729: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4871 +//line mysql_sql.y:4875 { var name = yyDollar[3].functionNameUnion() var args = yyDollar[5].funcArgsUnion() @@ -16349,7 +16374,7 @@ yydefault: case 730: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4879 +//line mysql_sql.y:4883 { var name = yyDollar[3].procNameUnion() var ifExists = false @@ -16359,7 +16384,7 @@ yydefault: case 731: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4885 +//line mysql_sql.y:4889 { var name = yyDollar[5].procNameUnion() var ifExists = true @@ -16369,7 +16394,7 @@ yydefault: case 734: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4895 +//line mysql_sql.y:4899 { yyDollar[2].statementUnion().(*tree.Delete).With = yyDollar[1].withClauseUnion() yyLOCAL = yyDollar[2].statementUnion() @@ -16378,7 +16403,7 @@ yydefault: case 735: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4900 +//line mysql_sql.y:4904 { yyDollar[2].statementUnion().(*tree.Delete).With = yyDollar[1].withClauseUnion() yyLOCAL = yyDollar[2].statementUnion() @@ -16387,7 +16412,7 @@ yydefault: case 736: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4907 +//line mysql_sql.y:4911 { // Single-Table Syntax t := &tree.AliasedTableExpr{ @@ -16407,7 +16432,7 @@ yydefault: case 737: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4923 +//line mysql_sql.y:4927 { // Multiple-Table Syntax yyLOCAL = &tree.Delete{ @@ -16420,7 +16445,7 @@ yydefault: case 738: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4934 +//line mysql_sql.y:4938 { // Multiple-Table Syntax yyLOCAL = &tree.Delete{ @@ -16433,7 +16458,7 @@ yydefault: case 739: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExprs -//line mysql_sql.y:4945 +//line mysql_sql.y:4949 { yyLOCAL = tree.TableExprs{yyDollar[1].tableNameUnion()} } @@ -16441,7 +16466,7 @@ yydefault: case 740: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExprs -//line mysql_sql.y:4949 +//line mysql_sql.y:4953 { yyLOCAL = append(yyDollar[1].tableExprsUnion(), yyDollar[3].tableNameUnion()) } @@ -16449,7 +16474,7 @@ yydefault: case 741: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:4955 +//line mysql_sql.y:4959 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{ExplicitSchema: false} @@ -16459,7 +16484,7 @@ yydefault: case 742: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:4961 +//line mysql_sql.y:4965 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -16469,33 +16494,33 @@ yydefault: yyVAL.union = yyLOCAL case 743: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4970 +//line mysql_sql.y:4974 { } case 744: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:4972 +//line mysql_sql.y:4976 { } case 745: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4975 +//line mysql_sql.y:4979 { } case 750: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4984 +//line mysql_sql.y:4988 { } case 752: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4988 +//line mysql_sql.y:4992 { } case 754: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4993 +//line mysql_sql.y:4997 { rep := yyDollar[4].replaceUnion() rep.Table = yyDollar[2].tableExprUnion() @@ -16506,7 +16531,7 @@ yydefault: case 755: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5002 +//line mysql_sql.y:5006 { vc := tree.NewValuesClause(yyDollar[2].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -16517,7 +16542,7 @@ yydefault: case 756: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5009 +//line mysql_sql.y:5013 { yyLOCAL = &tree.Replace{ Rows: yyDollar[1].selectUnion(), @@ -16527,7 +16552,7 @@ yydefault: case 757: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5015 +//line mysql_sql.y:5019 { vc := tree.NewValuesClause(yyDollar[5].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -16539,7 +16564,7 @@ yydefault: case 758: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5023 +//line mysql_sql.y:5027 { vc := tree.NewValuesClause(yyDollar[4].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -16550,7 +16575,7 @@ yydefault: case 759: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5030 +//line mysql_sql.y:5034 { yyLOCAL = &tree.Replace{ Columns: yyDollar[2].identifierListUnion(), @@ -16561,7 +16586,7 @@ yydefault: case 760: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:5037 +//line mysql_sql.y:5041 { if yyDollar[2].assignmentsUnion() == nil { yylex.Error("the set list of replace can not be empty") @@ -16583,7 +16608,7 @@ yydefault: case 761: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5057 +//line mysql_sql.y:5061 { ins := yyDollar[4].insertUnion() ins.Table = yyDollar[2].tableExprUnion() @@ -16595,7 +16620,7 @@ yydefault: case 762: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5065 +//line mysql_sql.y:5069 { ins := yyDollar[5].insertUnion() ins.Table = yyDollar[3].tableExprUnion() @@ -16607,7 +16632,7 @@ yydefault: case 763: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5075 +//line mysql_sql.y:5079 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].str)} } @@ -16615,7 +16640,7 @@ yydefault: case 764: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5079 +//line mysql_sql.y:5083 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].str)) } @@ -16623,7 +16648,7 @@ yydefault: case 765: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5085 +//line mysql_sql.y:5089 { vc := tree.NewValuesClause(yyDollar[2].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -16634,7 +16659,7 @@ yydefault: case 766: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5092 +//line mysql_sql.y:5096 { yyLOCAL = &tree.Insert{ Rows: yyDollar[1].selectUnion(), @@ -16644,7 +16669,7 @@ yydefault: case 767: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5098 +//line mysql_sql.y:5102 { vc := tree.NewValuesClause(yyDollar[5].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -16656,7 +16681,7 @@ yydefault: case 768: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5106 +//line mysql_sql.y:5110 { vc := tree.NewValuesClause(yyDollar[4].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -16667,7 +16692,7 @@ yydefault: case 769: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5113 +//line mysql_sql.y:5117 { yyLOCAL = &tree.Insert{ Columns: yyDollar[2].identifierListUnion(), @@ -16678,7 +16703,7 @@ yydefault: case 770: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5120 +//line mysql_sql.y:5124 { if yyDollar[2].assignmentsUnion() == nil { yylex.Error("the set list of insert can not be empty") @@ -16700,7 +16725,7 @@ yydefault: case 771: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5139 +//line mysql_sql.y:5143 { yyLOCAL = []*tree.UpdateExpr{} } @@ -16708,7 +16733,7 @@ yydefault: case 772: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5143 +//line mysql_sql.y:5147 { yyLOCAL = yyDollar[5].updateExprsUnion() } @@ -16716,7 +16741,7 @@ yydefault: case 773: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5147 +//line mysql_sql.y:5151 { yyLOCAL = []*tree.UpdateExpr{nil} } @@ -16724,7 +16749,7 @@ yydefault: case 774: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5152 +//line mysql_sql.y:5156 { yyLOCAL = nil } @@ -16732,7 +16757,7 @@ yydefault: case 775: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5156 +//line mysql_sql.y:5160 { yyLOCAL = []*tree.Assignment{yyDollar[1].assignmentUnion()} } @@ -16740,7 +16765,7 @@ yydefault: case 776: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5160 +//line mysql_sql.y:5164 { yyLOCAL = append(yyDollar[1].assignmentsUnion(), yyDollar[3].assignmentUnion()) } @@ -16748,7 +16773,7 @@ yydefault: case 777: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Assignment -//line mysql_sql.y:5166 +//line mysql_sql.y:5170 { yyLOCAL = &tree.Assignment{ Column: tree.Identifier(yyDollar[1].str), @@ -16759,7 +16784,7 @@ yydefault: case 778: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5175 +//line mysql_sql.y:5179 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].str)} } @@ -16767,27 +16792,27 @@ yydefault: case 779: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5179 +//line mysql_sql.y:5183 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].str)) } yyVAL.union = yyLOCAL case 780: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:5185 +//line mysql_sql.y:5189 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) } case 781: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:5189 +//line mysql_sql.y:5193 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) } case 782: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5195 +//line mysql_sql.y:5199 { yyLOCAL = []tree.Exprs{yyDollar[1].exprsUnion()} } @@ -16795,7 +16820,7 @@ yydefault: case 783: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5199 +//line mysql_sql.y:5203 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[3].exprsUnion()) } @@ -16803,20 +16828,20 @@ yydefault: case 784: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5205 +//line mysql_sql.y:5209 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL case 785: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:5210 +//line mysql_sql.y:5214 { } case 787: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5214 +//line mysql_sql.y:5218 { yyLOCAL = nil } @@ -16824,7 +16849,7 @@ yydefault: case 789: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5221 +//line mysql_sql.y:5225 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } @@ -16832,7 +16857,7 @@ yydefault: case 790: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5225 +//line mysql_sql.y:5229 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } @@ -16840,7 +16865,7 @@ yydefault: case 792: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5232 +//line mysql_sql.y:5236 { yyLOCAL = &tree.DefaultVal{} } @@ -16848,7 +16873,7 @@ yydefault: case 793: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5237 +//line mysql_sql.y:5241 { yyLOCAL = nil } @@ -16856,7 +16881,7 @@ yydefault: case 794: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5241 +//line mysql_sql.y:5245 { yyLOCAL = yyDollar[3].identifierListUnion() } @@ -16864,7 +16889,7 @@ yydefault: case 795: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5247 +//line mysql_sql.y:5251 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].cstrUnion().Compare())} } @@ -16872,7 +16897,7 @@ yydefault: case 796: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5251 +//line mysql_sql.y:5255 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].cstrUnion().Compare())) } @@ -16880,7 +16905,7 @@ yydefault: case 797: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5257 +//line mysql_sql.y:5261 { yyLOCAL = yyDollar[2].tableNameUnion() } @@ -16888,7 +16913,7 @@ yydefault: case 798: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5261 +//line mysql_sql.y:5265 { yyLOCAL = yyDollar[1].tableNameUnion() } @@ -16896,7 +16921,7 @@ yydefault: case 799: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ExportParam -//line mysql_sql.y:5266 +//line mysql_sql.y:5270 { yyLOCAL = nil } @@ -16904,7 +16929,7 @@ yydefault: case 800: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.ExportParam -//line mysql_sql.y:5270 +//line mysql_sql.y:5274 { yyLOCAL = &tree.ExportParam{ Outfile: true, @@ -16920,7 +16945,7 @@ yydefault: case 801: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5283 +//line mysql_sql.y:5287 { yyLOCAL = &tree.Fields{ Terminated: &tree.Terminated{ @@ -16935,7 +16960,7 @@ yydefault: case 802: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5294 +//line mysql_sql.y:5298 { yyLOCAL = &tree.Fields{ Terminated: &tree.Terminated{ @@ -16950,7 +16975,7 @@ yydefault: case 803: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5305 +//line mysql_sql.y:5309 { str := yyDollar[7].str if str != "\\" && len(str) > 1 { @@ -16976,7 +17001,7 @@ yydefault: case 804: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5327 +//line mysql_sql.y:5331 { str := yyDollar[4].str if str != "\\" && len(str) > 1 { @@ -17002,7 +17027,7 @@ yydefault: case 805: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Lines -//line mysql_sql.y:5350 +//line mysql_sql.y:5354 { yyLOCAL = &tree.Lines{ TerminatedBy: &tree.Terminated{ @@ -17014,7 +17039,7 @@ yydefault: case 806: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Lines -//line mysql_sql.y:5358 +//line mysql_sql.y:5362 { yyLOCAL = &tree.Lines{ TerminatedBy: &tree.Terminated{ @@ -17026,7 +17051,7 @@ yydefault: case 807: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5367 +//line mysql_sql.y:5371 { yyLOCAL = true } @@ -17034,7 +17059,7 @@ yydefault: case 808: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5371 +//line mysql_sql.y:5375 { str := strings.ToLower(yyDollar[2].str) if str == "true" { @@ -17050,7 +17075,7 @@ yydefault: case 809: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:5384 +//line mysql_sql.y:5388 { yyLOCAL = 0 } @@ -17058,7 +17083,7 @@ yydefault: case 810: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:5388 +//line mysql_sql.y:5392 { yyLOCAL = yyDollar[2].item.(int64) } @@ -17066,7 +17091,7 @@ yydefault: case 811: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5393 +//line mysql_sql.y:5397 { yyLOCAL = []string{} } @@ -17074,7 +17099,7 @@ yydefault: case 812: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5397 +//line mysql_sql.y:5401 { yyLOCAL = yyDollar[3].strsUnion() } @@ -17082,7 +17107,7 @@ yydefault: case 813: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5403 +//line mysql_sql.y:5407 { yyLOCAL = make([]string, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].cstrUnion().Compare()) @@ -17091,7 +17116,7 @@ yydefault: case 814: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5408 +//line mysql_sql.y:5412 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].cstrUnion().Compare()) } @@ -17099,7 +17124,7 @@ yydefault: case 816: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5415 +//line mysql_sql.y:5419 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion()} } @@ -17107,7 +17132,7 @@ yydefault: case 817: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5421 +//line mysql_sql.y:5425 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), Ep: yyDollar[5].exportParmUnion(), SelectLockInfo: yyDollar[6].selectLockInfoUnion()} } @@ -17115,7 +17140,7 @@ yydefault: case 818: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5425 +//line mysql_sql.y:5429 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Ep: yyDollar[4].exportParmUnion()} } @@ -17123,7 +17148,7 @@ yydefault: case 819: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5429 +//line mysql_sql.y:5433 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), Ep: yyDollar[5].exportParmUnion()} } @@ -17131,7 +17156,7 @@ yydefault: case 820: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5433 +//line mysql_sql.y:5437 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), TimeWindow: yyDollar[3].timeWindowUnion(), OrderBy: yyDollar[4].orderByUnion(), Limit: yyDollar[5].limitUnion(), Ep: yyDollar[6].exportParmUnion(), SelectLockInfo: yyDollar[7].selectLockInfoUnion(), With: yyDollar[1].withClauseUnion()} } @@ -17139,7 +17164,7 @@ yydefault: case 821: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5437 +//line mysql_sql.y:5441 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), OrderBy: yyDollar[3].orderByUnion(), Ep: yyDollar[4].exportParmUnion(), With: yyDollar[1].withClauseUnion()} } @@ -17147,7 +17172,7 @@ yydefault: case 822: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5441 +//line mysql_sql.y:5445 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), Ep: yyDollar[5].exportParmUnion(), With: yyDollar[1].withClauseUnion()} } @@ -17155,7 +17180,7 @@ yydefault: case 823: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5446 +//line mysql_sql.y:5450 { yyLOCAL = nil } @@ -17163,7 +17188,7 @@ yydefault: case 824: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5450 +//line mysql_sql.y:5454 { yyLOCAL = yyDollar[1].timeWindowUnion() } @@ -17171,7 +17196,7 @@ yydefault: case 825: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5456 +//line mysql_sql.y:5460 { yyLOCAL = &tree.TimeWindow{ Interval: yyDollar[1].timeIntervalUnion(), @@ -17183,7 +17208,7 @@ yydefault: case 826: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.Interval -//line mysql_sql.y:5466 +//line mysql_sql.y:5470 { str := fmt.Sprintf("%v", yyDollar[5].item) v, errStr := util.GetInt64(yyDollar[5].item) @@ -17201,7 +17226,7 @@ yydefault: case 827: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Sliding -//line mysql_sql.y:5481 +//line mysql_sql.y:5485 { yyLOCAL = nil } @@ -17209,7 +17234,7 @@ yydefault: case 828: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Sliding -//line mysql_sql.y:5485 +//line mysql_sql.y:5489 { str := fmt.Sprintf("%v", yyDollar[3].item) v, errStr := util.GetInt64(yyDollar[3].item) @@ -17226,7 +17251,7 @@ yydefault: case 829: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5499 +//line mysql_sql.y:5503 { yyLOCAL = nil } @@ -17234,7 +17259,7 @@ yydefault: case 830: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5503 +//line mysql_sql.y:5507 { yyLOCAL = &tree.Fill{ Mode: yyDollar[3].fillModeUnion(), @@ -17244,7 +17269,7 @@ yydefault: case 831: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5509 +//line mysql_sql.y:5513 { yyLOCAL = &tree.Fill{ Mode: tree.FillValue, @@ -17255,7 +17280,7 @@ yydefault: case 832: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5518 +//line mysql_sql.y:5522 { yyLOCAL = tree.FillPrev } @@ -17263,7 +17288,7 @@ yydefault: case 833: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5522 +//line mysql_sql.y:5526 { yyLOCAL = tree.FillNext } @@ -17271,7 +17296,7 @@ yydefault: case 834: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5526 +//line mysql_sql.y:5530 { yyLOCAL = tree.FillNone } @@ -17279,7 +17304,7 @@ yydefault: case 835: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5530 +//line mysql_sql.y:5534 { yyLOCAL = tree.FillNull } @@ -17287,7 +17312,7 @@ yydefault: case 836: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5534 +//line mysql_sql.y:5538 { yyLOCAL = tree.FillLinear } @@ -17295,7 +17320,7 @@ yydefault: case 837: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.With -//line mysql_sql.y:5540 +//line mysql_sql.y:5544 { yyLOCAL = &tree.With{ IsRecursive: false, @@ -17306,7 +17331,7 @@ yydefault: case 838: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.With -//line mysql_sql.y:5547 +//line mysql_sql.y:5551 { yyLOCAL = &tree.With{ IsRecursive: true, @@ -17317,7 +17342,7 @@ yydefault: case 839: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.CTE -//line mysql_sql.y:5556 +//line mysql_sql.y:5560 { yyLOCAL = []*tree.CTE{yyDollar[1].cteUnion()} } @@ -17325,7 +17350,7 @@ yydefault: case 840: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.CTE -//line mysql_sql.y:5560 +//line mysql_sql.y:5564 { yyLOCAL = append(yyDollar[1].cteListUnion(), yyDollar[3].cteUnion()) } @@ -17333,7 +17358,7 @@ yydefault: case 841: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.CTE -//line mysql_sql.y:5566 +//line mysql_sql.y:5570 { yyLOCAL = &tree.CTE{ Name: &tree.AliasClause{Alias: tree.Identifier(yyDollar[1].cstrUnion().Compare()), Cols: yyDollar[2].identifierListUnion()}, @@ -17344,7 +17369,7 @@ yydefault: case 842: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5574 +//line mysql_sql.y:5578 { yyLOCAL = nil } @@ -17352,7 +17377,7 @@ yydefault: case 843: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5578 +//line mysql_sql.y:5582 { yyLOCAL = yyDollar[2].identifierListUnion() } @@ -17360,7 +17385,7 @@ yydefault: case 844: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5583 +//line mysql_sql.y:5587 { yyLOCAL = nil } @@ -17368,7 +17393,7 @@ yydefault: case 845: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5587 +//line mysql_sql.y:5591 { yyLOCAL = yyDollar[1].limitUnion() } @@ -17376,7 +17401,7 @@ yydefault: case 846: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5593 +//line mysql_sql.y:5597 { l := &tree.Limit{Count: yyDollar[2].exprUnion()} if yyDollar[3].limitUnion() != nil { @@ -17389,7 +17414,7 @@ yydefault: case 847: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5602 +//line mysql_sql.y:5606 { l := &tree.Limit{Offset: yyDollar[2].exprUnion(), Count: yyDollar[4].exprUnion()} if yyDollar[5].limitUnion() != nil { @@ -17402,7 +17427,7 @@ yydefault: case 848: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5611 +//line mysql_sql.y:5615 { l := &tree.Limit{Offset: yyDollar[4].exprUnion(), Count: yyDollar[2].exprUnion()} if yyDollar[5].limitUnion() != nil { @@ -17415,7 +17440,7 @@ yydefault: case 849: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5621 +//line mysql_sql.y:5625 { yyLOCAL = nil } @@ -17423,7 +17448,7 @@ yydefault: case 850: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5625 +//line mysql_sql.y:5629 { // Parse option strings to extract key=value pairs into a map optionMap := make(map[string]string) @@ -17462,7 +17487,7 @@ yydefault: case 851: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5661 +//line mysql_sql.y:5665 { yyLOCAL = nil } @@ -17470,7 +17495,7 @@ yydefault: case 852: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5665 +//line mysql_sql.y:5669 { yyLOCAL = yyDollar[1].orderByUnion() } @@ -17478,7 +17503,7 @@ yydefault: case 853: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5671 +//line mysql_sql.y:5675 { yyLOCAL = yyDollar[3].orderByUnion() } @@ -17486,7 +17511,7 @@ yydefault: case 854: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5677 +//line mysql_sql.y:5681 { yyLOCAL = tree.OrderBy{yyDollar[1].orderUnion()} } @@ -17494,7 +17519,7 @@ yydefault: case 855: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5681 +//line mysql_sql.y:5685 { yyLOCAL = append(yyDollar[1].orderByUnion(), yyDollar[3].orderUnion()) } @@ -17502,7 +17527,7 @@ yydefault: case 856: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Order -//line mysql_sql.y:5687 +//line mysql_sql.y:5691 { yyLOCAL = &tree.Order{Expr: yyDollar[1].exprUnion(), Direction: yyDollar[2].directionUnion(), NullsPosition: yyDollar[3].nullsPositionUnion()} } @@ -17510,7 +17535,7 @@ yydefault: case 857: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5692 +//line mysql_sql.y:5696 { yyLOCAL = tree.DefaultDirection } @@ -17518,7 +17543,7 @@ yydefault: case 858: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5696 +//line mysql_sql.y:5700 { yyLOCAL = tree.Ascending } @@ -17526,7 +17551,7 @@ yydefault: case 859: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5700 +//line mysql_sql.y:5704 { yyLOCAL = tree.Descending } @@ -17534,7 +17559,7 @@ yydefault: case 860: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5705 +//line mysql_sql.y:5709 { yyLOCAL = tree.DefaultNullsPosition } @@ -17542,7 +17567,7 @@ yydefault: case 861: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5709 +//line mysql_sql.y:5713 { yyLOCAL = tree.NullsFirst } @@ -17550,7 +17575,7 @@ yydefault: case 862: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5713 +//line mysql_sql.y:5717 { yyLOCAL = tree.NullsLast } @@ -17558,7 +17583,7 @@ yydefault: case 863: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.SelectLockInfo -//line mysql_sql.y:5718 +//line mysql_sql.y:5722 { yyLOCAL = nil } @@ -17566,7 +17591,7 @@ yydefault: case 864: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.SelectLockInfo -//line mysql_sql.y:5722 +//line mysql_sql.y:5726 { yyLOCAL = &tree.SelectLockInfo{ LockType: tree.SelectLockForUpdate, @@ -17576,7 +17601,7 @@ yydefault: case 865: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5730 +//line mysql_sql.y:5734 { yyLOCAL = &tree.ParenSelect{Select: yyDollar[2].selectUnion()} } @@ -17584,7 +17609,7 @@ yydefault: case 866: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5734 +//line mysql_sql.y:5738 { yyLOCAL = &tree.ParenSelect{Select: &tree.Select{Select: yyDollar[2].selectStatementUnion()}} } @@ -17592,7 +17617,7 @@ yydefault: case 867: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5738 +//line mysql_sql.y:5742 { valuesStmt := yyDollar[2].statementUnion().(*tree.ValuesStatement) yyLOCAL = &tree.ParenSelect{Select: &tree.Select{ @@ -17608,7 +17633,7 @@ yydefault: case 868: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5752 +//line mysql_sql.y:5756 { yyLOCAL = yyDollar[1].selectStatementUnion() } @@ -17616,7 +17641,7 @@ yydefault: case 869: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5756 +//line mysql_sql.y:5760 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17630,7 +17655,7 @@ yydefault: case 870: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5766 +//line mysql_sql.y:5770 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17644,7 +17669,7 @@ yydefault: case 871: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5776 +//line mysql_sql.y:5780 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17658,7 +17683,7 @@ yydefault: case 872: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5786 +//line mysql_sql.y:5790 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17672,7 +17697,7 @@ yydefault: case 873: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5798 +//line mysql_sql.y:5802 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -17684,7 +17709,7 @@ yydefault: case 874: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5806 +//line mysql_sql.y:5810 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -17696,7 +17721,7 @@ yydefault: case 875: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5814 +//line mysql_sql.y:5818 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -17708,7 +17733,7 @@ yydefault: case 876: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5823 +//line mysql_sql.y:5827 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -17720,7 +17745,7 @@ yydefault: case 877: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5831 +//line mysql_sql.y:5835 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -17732,7 +17757,7 @@ yydefault: case 878: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5839 +//line mysql_sql.y:5843 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -17744,7 +17769,7 @@ yydefault: case 879: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5847 +//line mysql_sql.y:5851 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -17756,7 +17781,7 @@ yydefault: case 880: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5855 +//line mysql_sql.y:5859 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -17768,7 +17793,7 @@ yydefault: case 881: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5863 +//line mysql_sql.y:5867 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -17780,7 +17805,7 @@ yydefault: case 882: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5871 +//line mysql_sql.y:5875 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -17792,7 +17817,7 @@ yydefault: case 883: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5879 +//line mysql_sql.y:5883 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -17804,7 +17829,7 @@ yydefault: case 884: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5887 +//line mysql_sql.y:5891 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -17816,7 +17841,7 @@ yydefault: case 885: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5897 +//line mysql_sql.y:5901 { yyLOCAL = &tree.SelectClause{ Distinct: tree.QuerySpecOptionDistinct&yyDollar[2].selectOptionsUnion() != 0, @@ -17832,7 +17857,7 @@ yydefault: case 886: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5911 +//line mysql_sql.y:5915 { yyLOCAL = tree.QuerySpecOptionNone } @@ -17840,7 +17865,7 @@ yydefault: case 887: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5915 +//line mysql_sql.y:5919 { yyLOCAL = yyDollar[1].selectOptionsUnion() } @@ -17848,7 +17873,7 @@ yydefault: case 888: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5921 +//line mysql_sql.y:5925 { yyLOCAL = yyDollar[1].selectOptionUnion() } @@ -17856,7 +17881,7 @@ yydefault: case 889: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5925 +//line mysql_sql.y:5929 { yyLOCAL = yyDollar[1].selectOptionsUnion() | yyDollar[2].selectOptionUnion() } @@ -17864,7 +17889,7 @@ yydefault: case 890: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5931 +//line mysql_sql.y:5935 { yyLOCAL = tree.QuerySpecOptionSqlSmallResult } @@ -17872,7 +17897,7 @@ yydefault: case 891: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5935 +//line mysql_sql.y:5939 { yyLOCAL = tree.QuerySpecOptionSqlBigResult } @@ -17880,7 +17905,7 @@ yydefault: case 892: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5939 +//line mysql_sql.y:5943 { yyLOCAL = tree.QuerySpecOptionSqlBufferResult } @@ -17888,7 +17913,7 @@ yydefault: case 893: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5943 +//line mysql_sql.y:5947 { yyLOCAL = tree.QuerySpecOptionStraightJoin } @@ -17896,7 +17921,7 @@ yydefault: case 894: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5947 +//line mysql_sql.y:5951 { yyLOCAL = tree.QuerySpecOptionHighPriority } @@ -17904,7 +17929,7 @@ yydefault: case 895: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5951 +//line mysql_sql.y:5955 { yyLOCAL = tree.QuerySpecOptionSqlCalcFoundRows } @@ -17912,7 +17937,7 @@ yydefault: case 896: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5955 +//line mysql_sql.y:5959 { yyLOCAL = tree.QuerySpecOptionSqlNoCache } @@ -17920,7 +17945,7 @@ yydefault: case 897: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5959 +//line mysql_sql.y:5963 { yyLOCAL = tree.QuerySpecOptionAll } @@ -17928,7 +17953,7 @@ yydefault: case 898: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5963 +//line mysql_sql.y:5967 { yyLOCAL = tree.QuerySpecOptionDistinct } @@ -17936,7 +17961,7 @@ yydefault: case 899: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5967 +//line mysql_sql.y:5971 { yyLOCAL = tree.QuerySpecOptionDistinctRow } @@ -17944,7 +17969,7 @@ yydefault: case 900: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:5989 +//line mysql_sql.y:5993 { yyLOCAL = nil } @@ -17952,7 +17977,7 @@ yydefault: case 901: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:5993 +//line mysql_sql.y:5997 { yyLOCAL = &tree.Where{Type: tree.AstHaving, Expr: yyDollar[2].exprUnion()} } @@ -17960,7 +17985,7 @@ yydefault: case 902: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:5998 +//line mysql_sql.y:6002 { yyLOCAL = nil } @@ -17968,7 +17993,7 @@ yydefault: case 903: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:6002 +//line mysql_sql.y:6006 { exprsList := []tree.Exprs{yyDollar[3].exprsUnion()} yyLOCAL = &tree.GroupByClause{ @@ -17982,7 +18007,7 @@ yydefault: case 904: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:6012 +//line mysql_sql.y:6016 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: yyDollar[6].rowsExprsUnion(), @@ -17995,7 +18020,7 @@ yydefault: case 905: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:6021 +//line mysql_sql.y:6025 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: []tree.Exprs{yyDollar[5].exprsUnion()}, @@ -18008,7 +18033,7 @@ yydefault: case 906: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:6030 +//line mysql_sql.y:6034 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: []tree.Exprs{yyDollar[5].exprsUnion()}, @@ -18021,7 +18046,7 @@ yydefault: case 907: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6041 +//line mysql_sql.y:6045 { yyLOCAL = []tree.Exprs{yyDollar[2].exprsUnion()} } @@ -18029,7 +18054,7 @@ yydefault: case 908: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6045 +//line mysql_sql.y:6049 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[4].exprsUnion()) } @@ -18037,7 +18062,7 @@ yydefault: case 909: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6051 +//line mysql_sql.y:6055 { yyLOCAL = false } @@ -18045,7 +18070,7 @@ yydefault: case 910: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6055 +//line mysql_sql.y:6059 { yyLOCAL = true } @@ -18053,7 +18078,7 @@ yydefault: case 911: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:6060 +//line mysql_sql.y:6064 { yyLOCAL = nil } @@ -18061,7 +18086,7 @@ yydefault: case 912: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:6064 +//line mysql_sql.y:6068 { yyLOCAL = &tree.Where{Type: tree.AstWhere, Expr: yyDollar[2].exprUnion()} } @@ -18069,7 +18094,7 @@ yydefault: case 913: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectExprs -//line mysql_sql.y:6070 +//line mysql_sql.y:6074 { yyLOCAL = tree.SelectExprs{yyDollar[1].selectExprUnion()} } @@ -18077,7 +18102,7 @@ yydefault: case 914: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectExprs -//line mysql_sql.y:6074 +//line mysql_sql.y:6078 { yyLOCAL = append(yyDollar[1].selectExprsUnion(), yyDollar[3].selectExprUnion()) } @@ -18085,7 +18110,7 @@ yydefault: case 915: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:6080 +//line mysql_sql.y:6084 { yyLOCAL = tree.SelectExpr{Expr: tree.StarExpr()} } @@ -18093,7 +18118,7 @@ yydefault: case 916: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:6084 +//line mysql_sql.y:6088 { yyLOCAL = tree.SelectExpr{Expr: yyDollar[1].exprUnion(), As: yyDollar[2].cstrUnion()} } @@ -18101,7 +18126,7 @@ yydefault: case 917: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:6088 +//line mysql_sql.y:6092 { yyLOCAL = tree.SelectExpr{Expr: tree.NewUnresolvedNameWithStar(yyDollar[1].cstrUnion())} } @@ -18109,7 +18134,7 @@ yydefault: case 918: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:6092 +//line mysql_sql.y:6096 { yyLOCAL = tree.SelectExpr{Expr: tree.NewUnresolvedNameWithStar(yyDollar[1].cstrUnion(), yyDollar[3].cstrUnion())} } @@ -18117,7 +18142,7 @@ yydefault: case 919: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:6097 +//line mysql_sql.y:6101 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} tn := tree.NewTableName(tree.Identifier(""), prefix, nil) @@ -18129,7 +18154,7 @@ yydefault: case 920: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:6105 +//line mysql_sql.y:6109 { yyLOCAL = yyDollar[1].fromUnion() } @@ -18137,7 +18162,7 @@ yydefault: case 921: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:6111 +//line mysql_sql.y:6115 { yyLOCAL = &tree.From{ Tables: tree.TableExprs{yyDollar[2].tableExprUnion()}, @@ -18147,7 +18172,7 @@ yydefault: case 922: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6119 +//line mysql_sql.y:6123 { if t, ok := yyDollar[1].tableExprUnion().(*tree.JoinTableExpr); ok { yyLOCAL = t @@ -18161,7 +18186,7 @@ yydefault: case 923: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6129 +//line mysql_sql.y:6133 { yyLOCAL = &tree.JoinTableExpr{Left: yyDollar[1].tableExprUnion(), Right: yyDollar[3].tableExprUnion(), JoinType: tree.JOIN_TYPE_CROSS} } @@ -18169,7 +18194,7 @@ yydefault: case 926: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6139 +//line mysql_sql.y:6143 { yyLOCAL = yyDollar[1].joinTableExprUnion() } @@ -18177,7 +18202,7 @@ yydefault: case 927: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6143 +//line mysql_sql.y:6147 { yyLOCAL = yyDollar[1].applyTableExprUnion() } @@ -18185,7 +18210,7 @@ yydefault: case 928: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6149 +//line mysql_sql.y:6153 { if strings.Contains(yyDollar[2].str, ":") { ss := strings.SplitN(yyDollar[2].str, ":", 2) @@ -18209,7 +18234,7 @@ yydefault: case 929: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6169 +//line mysql_sql.y:6173 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18222,7 +18247,7 @@ yydefault: case 930: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6178 +//line mysql_sql.y:6182 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18235,7 +18260,7 @@ yydefault: case 931: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6187 +//line mysql_sql.y:6191 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18247,7 +18272,7 @@ yydefault: case 932: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6195 +//line mysql_sql.y:6199 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18260,7 +18285,7 @@ yydefault: case 933: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ApplyTableExpr -//line mysql_sql.y:6206 +//line mysql_sql.y:6210 { yyLOCAL = &tree.ApplyTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -18271,25 +18296,25 @@ yydefault: yyVAL.union = yyLOCAL case 934: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6216 +//line mysql_sql.y:6220 { yyVAL.str = tree.APPLY_TYPE_CROSS } case 935: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6220 +//line mysql_sql.y:6224 { yyVAL.str = tree.APPLY_TYPE_OUTER } case 936: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6226 +//line mysql_sql.y:6230 { yyVAL.str = tree.JOIN_TYPE_NATURAL } case 937: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6230 +//line mysql_sql.y:6234 { if yyDollar[2].str == tree.JOIN_TYPE_LEFT { yyVAL.str = tree.JOIN_TYPE_NATURAL_LEFT @@ -18299,38 +18324,38 @@ yydefault: } case 938: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6240 +//line mysql_sql.y:6244 { yyVAL.str = tree.JOIN_TYPE_LEFT } case 939: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6244 +//line mysql_sql.y:6248 { yyVAL.str = tree.JOIN_TYPE_LEFT } case 940: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6248 +//line mysql_sql.y:6252 { yyVAL.str = tree.JOIN_TYPE_RIGHT } case 941: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6252 +//line mysql_sql.y:6256 { yyVAL.str = tree.JOIN_TYPE_RIGHT } case 942: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6258 +//line mysql_sql.y:6262 { yyVAL.str = tree.JOIN_TYPE_DEDUP } case 943: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6264 +//line mysql_sql.y:6268 { yyLOCAL = &tree.ValuesStatement{ Rows: yyDollar[2].rowsExprsUnion(), @@ -18342,7 +18367,7 @@ yydefault: case 944: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6274 +//line mysql_sql.y:6278 { yyLOCAL = []tree.Exprs{yyDollar[1].exprsUnion()} } @@ -18350,7 +18375,7 @@ yydefault: case 945: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6278 +//line mysql_sql.y:6282 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[3].exprsUnion()) } @@ -18358,7 +18383,7 @@ yydefault: case 946: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:6284 +//line mysql_sql.y:6288 { yyLOCAL = yyDollar[3].exprsUnion() } @@ -18366,7 +18391,7 @@ yydefault: case 947: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6290 +//line mysql_sql.y:6294 { yyLOCAL = nil } @@ -18374,57 +18399,57 @@ yydefault: case 948: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6294 +//line mysql_sql.y:6298 { yyLOCAL = &tree.OnJoinCond{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL case 949: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6300 +//line mysql_sql.y:6304 { yyVAL.str = yyDollar[1].str } case 950: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6306 +//line mysql_sql.y:6310 { yyVAL.str = yyDollar[2].str } case 951: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6312 +//line mysql_sql.y:6316 { yyVAL.str = tree.JOIN_TYPE_STRAIGHT } case 952: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6318 +//line mysql_sql.y:6322 { yyVAL.str = tree.JOIN_TYPE_INNER } case 953: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6322 +//line mysql_sql.y:6326 { yyVAL.str = tree.JOIN_TYPE_INNER } case 954: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6326 +//line mysql_sql.y:6330 { yyVAL.str = tree.JOIN_TYPE_CROSS } case 955: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6330 +//line mysql_sql.y:6334 { yyVAL.str = tree.JOIN_TYPE_CENTROIDX + ":" + yyDollar[2].str } case 956: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6336 +//line mysql_sql.y:6340 { yyLOCAL = nil } @@ -18432,7 +18457,7 @@ yydefault: case 957: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6340 +//line mysql_sql.y:6344 { yyLOCAL = yyDollar[1].joinCondUnion() } @@ -18440,7 +18465,7 @@ yydefault: case 958: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6346 +//line mysql_sql.y:6350 { yyLOCAL = &tree.OnJoinCond{Expr: yyDollar[2].exprUnion()} } @@ -18448,7 +18473,7 @@ yydefault: case 959: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6350 +//line mysql_sql.y:6354 { yyLOCAL = &tree.UsingJoinCond{Cols: yyDollar[3].identifierListUnion()} } @@ -18456,7 +18481,7 @@ yydefault: case 960: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:6356 +//line mysql_sql.y:6360 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].cstrUnion().Compare())} } @@ -18464,7 +18489,7 @@ yydefault: case 961: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:6360 +//line mysql_sql.y:6364 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].cstrUnion().Compare())) } @@ -18472,7 +18497,7 @@ yydefault: case 962: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6366 +//line mysql_sql.y:6370 { yyLOCAL = yyDollar[1].aliasedTableExprUnion() } @@ -18480,7 +18505,7 @@ yydefault: case 963: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6370 +//line mysql_sql.y:6374 { yyLOCAL = &tree.AliasedTableExpr{ Expr: yyDollar[1].parenTableExprUnion(), @@ -18494,7 +18519,7 @@ yydefault: case 964: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6380 +//line mysql_sql.y:6384 { if yyDollar[2].str != "" { yyLOCAL = &tree.AliasedTableExpr{ @@ -18511,7 +18536,7 @@ yydefault: case 965: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6393 +//line mysql_sql.y:6397 { yyLOCAL = yyDollar[2].tableExprUnion() } @@ -18519,7 +18544,7 @@ yydefault: case 966: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ParenTableExpr -//line mysql_sql.y:6399 +//line mysql_sql.y:6403 { yyLOCAL = &tree.ParenTableExpr{Expr: yyDollar[1].selectStatementUnion().(*tree.ParenSelect).Select} } @@ -18527,7 +18552,7 @@ yydefault: case 967: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6405 +//line mysql_sql.y:6409 { name := tree.NewUnresolvedName(yyDollar[1].cstrUnion()) yyLOCAL = &tree.TableFunction{ @@ -18543,7 +18568,7 @@ yydefault: case 968: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AliasedTableExpr -//line mysql_sql.y:6419 +//line mysql_sql.y:6423 { yyLOCAL = &tree.AliasedTableExpr{ Expr: yyDollar[1].tableNameUnion(), @@ -18557,7 +18582,7 @@ yydefault: case 969: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6430 +//line mysql_sql.y:6434 { yyLOCAL = nil } @@ -18565,7 +18590,7 @@ yydefault: case 971: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6437 +//line mysql_sql.y:6441 { yyLOCAL = []*tree.IndexHint{yyDollar[1].indexHintUnion()} } @@ -18573,7 +18598,7 @@ yydefault: case 972: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6441 +//line mysql_sql.y:6445 { yyLOCAL = append(yyDollar[1].indexHintListUnion(), yyDollar[2].indexHintUnion()) } @@ -18581,7 +18606,7 @@ yydefault: case 973: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.IndexHint -//line mysql_sql.y:6447 +//line mysql_sql.y:6451 { yyLOCAL = &tree.IndexHint{ IndexNames: yyDollar[4].strsUnion(), @@ -18593,7 +18618,7 @@ yydefault: case 974: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6457 +//line mysql_sql.y:6461 { yyLOCAL = tree.HintUse } @@ -18601,7 +18626,7 @@ yydefault: case 975: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6461 +//line mysql_sql.y:6465 { yyLOCAL = tree.HintIgnore } @@ -18609,7 +18634,7 @@ yydefault: case 976: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6465 +//line mysql_sql.y:6469 { yyLOCAL = tree.HintForce } @@ -18617,7 +18642,7 @@ yydefault: case 977: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6470 +//line mysql_sql.y:6474 { yyLOCAL = tree.HintForScan } @@ -18625,7 +18650,7 @@ yydefault: case 978: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6474 +//line mysql_sql.y:6478 { yyLOCAL = tree.HintForJoin } @@ -18633,7 +18658,7 @@ yydefault: case 979: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6478 +//line mysql_sql.y:6482 { yyLOCAL = tree.HintForOrderBy } @@ -18641,7 +18666,7 @@ yydefault: case 980: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6482 +//line mysql_sql.y:6486 { yyLOCAL = tree.HintForGroupBy } @@ -18649,7 +18674,7 @@ yydefault: case 981: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6487 +//line mysql_sql.y:6491 { yyLOCAL = nil } @@ -18657,7 +18682,7 @@ yydefault: case 982: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6491 +//line mysql_sql.y:6495 { yyLOCAL = []string{yyDollar[1].cstrUnion().Compare()} } @@ -18665,7 +18690,7 @@ yydefault: case 983: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6495 +//line mysql_sql.y:6499 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].cstrUnion().Compare()) } @@ -18673,7 +18698,7 @@ yydefault: case 984: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6499 +//line mysql_sql.y:6503 { yyLOCAL = []string{yyDollar[1].str} } @@ -18681,45 +18706,45 @@ yydefault: case 985: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6503 +//line mysql_sql.y:6507 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].str) } yyVAL.union = yyLOCAL case 986: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6508 +//line mysql_sql.y:6512 { yyVAL.str = "" } case 987: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6512 +//line mysql_sql.y:6516 { yyVAL.str = yyDollar[1].str } case 988: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6516 +//line mysql_sql.y:6520 { yyVAL.str = yyDollar[2].str } case 989: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6522 +//line mysql_sql.y:6526 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) } case 990: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6526 +//line mysql_sql.y:6530 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].str) } case 991: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6531 +//line mysql_sql.y:6535 { yyLOCAL = tree.NewCStr("", 1) } @@ -18727,7 +18752,7 @@ yydefault: case 992: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6535 +//line mysql_sql.y:6539 { yyLOCAL = yyDollar[1].cstrUnion() } @@ -18735,7 +18760,7 @@ yydefault: case 993: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6539 +//line mysql_sql.y:6543 { yyLOCAL = yyDollar[2].cstrUnion() } @@ -18743,7 +18768,7 @@ yydefault: case 994: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6543 +//line mysql_sql.y:6547 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } @@ -18751,21 +18776,21 @@ yydefault: case 995: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6547 +//line mysql_sql.y:6551 { yyLOCAL = tree.NewCStr(yyDollar[2].str, 1) } yyVAL.union = yyLOCAL case 996: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6553 +//line mysql_sql.y:6557 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } case 1019: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6595 +//line mysql_sql.y:6599 { var Language = yyDollar[3].str var Name = tree.Identifier(yyDollar[5].str) @@ -18779,20 +18804,20 @@ yydefault: yyVAL.union = yyLOCAL case 1020: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6608 +//line mysql_sql.y:6612 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } case 1021: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6614 +//line mysql_sql.y:6618 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } case 1022: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6620 +//line mysql_sql.y:6624 { yyLOCAL = tree.NewCreateProcedure( yyDollar[2].sourceOptionalUnion(), yyDollar[4].procNameUnion(), yyDollar[6].procArgsUnion(), yyDollar[8].str, yyDollar[9].str, @@ -18802,7 +18827,7 @@ yydefault: case 1023: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ProcedureName -//line mysql_sql.y:6628 +//line mysql_sql.y:6632 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewProcedureName(tree.Identifier(yyDollar[1].cstrUnion().Compare()), prefix) @@ -18811,7 +18836,7 @@ yydefault: case 1024: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ProcedureName -//line mysql_sql.y:6633 +//line mysql_sql.y:6637 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{SchemaName: tree.Identifier(dbName), ExplicitSchema: true} @@ -18821,7 +18846,7 @@ yydefault: case 1025: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6640 +//line mysql_sql.y:6644 { yyLOCAL = tree.ProcedureArgs(nil) } @@ -18829,7 +18854,7 @@ yydefault: case 1027: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6647 +//line mysql_sql.y:6651 { yyLOCAL = tree.ProcedureArgs{yyDollar[1].procArgUnion()} } @@ -18837,7 +18862,7 @@ yydefault: case 1028: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6651 +//line mysql_sql.y:6655 { yyLOCAL = append(yyDollar[1].procArgsUnion(), yyDollar[3].procArgUnion()) } @@ -18845,7 +18870,7 @@ yydefault: case 1029: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ProcedureArg -//line mysql_sql.y:6657 +//line mysql_sql.y:6661 { yyLOCAL = tree.ProcedureArg(yyDollar[1].procArgDeclUnion()) } @@ -18853,7 +18878,7 @@ yydefault: case 1030: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ProcedureArgDecl -//line mysql_sql.y:6663 +//line mysql_sql.y:6667 { yyLOCAL = tree.NewProcedureArgDecl(yyDollar[1].procArgTypeUnion(), yyDollar[2].unresolvedNameUnion(), yyDollar[3].columnTypeUnion()) } @@ -18861,7 +18886,7 @@ yydefault: case 1031: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6668 +//line mysql_sql.y:6672 { yyLOCAL = tree.TYPE_IN } @@ -18869,7 +18894,7 @@ yydefault: case 1032: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6672 +//line mysql_sql.y:6676 { yyLOCAL = tree.TYPE_IN } @@ -18877,7 +18902,7 @@ yydefault: case 1033: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6676 +//line mysql_sql.y:6680 { yyLOCAL = tree.TYPE_OUT } @@ -18885,27 +18910,27 @@ yydefault: case 1034: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6680 +//line mysql_sql.y:6684 { yyLOCAL = tree.TYPE_INOUT } yyVAL.union = yyLOCAL case 1035: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6685 +//line mysql_sql.y:6689 { yyVAL.str = "sql" } case 1036: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6689 +//line mysql_sql.y:6693 { yyVAL.str = yyDollar[2].str } case 1037: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6695 +//line mysql_sql.y:6699 { if yyDollar[13].str == "" { yylex.Error("no function body error") @@ -18940,7 +18965,7 @@ yydefault: case 1038: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FunctionName -//line mysql_sql.y:6728 +//line mysql_sql.y:6732 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewFuncName(tree.Identifier(yyDollar[1].cstrUnion().Compare()), prefix) @@ -18949,7 +18974,7 @@ yydefault: case 1039: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FunctionName -//line mysql_sql.y:6733 +//line mysql_sql.y:6737 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{SchemaName: tree.Identifier(dbName), ExplicitSchema: true} @@ -18959,7 +18984,7 @@ yydefault: case 1040: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6740 +//line mysql_sql.y:6744 { yyLOCAL = tree.FunctionArgs(nil) } @@ -18967,7 +18992,7 @@ yydefault: case 1042: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6747 +//line mysql_sql.y:6751 { yyLOCAL = tree.FunctionArgs{yyDollar[1].funcArgUnion()} } @@ -18975,7 +19000,7 @@ yydefault: case 1043: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6751 +//line mysql_sql.y:6755 { yyLOCAL = append(yyDollar[1].funcArgsUnion(), yyDollar[3].funcArgUnion()) } @@ -18983,7 +19008,7 @@ yydefault: case 1044: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FunctionArg -//line mysql_sql.y:6757 +//line mysql_sql.y:6761 { yyLOCAL = tree.FunctionArg(yyDollar[1].funcArgDeclUnion()) } @@ -18991,7 +19016,7 @@ yydefault: case 1045: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6763 +//line mysql_sql.y:6767 { yyLOCAL = tree.NewFunctionArgDecl(nil, yyDollar[1].columnTypeUnion(), nil) } @@ -18999,7 +19024,7 @@ yydefault: case 1046: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6767 +//line mysql_sql.y:6771 { yyLOCAL = tree.NewFunctionArgDecl(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), nil) } @@ -19007,21 +19032,21 @@ yydefault: case 1047: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6771 +//line mysql_sql.y:6775 { yyLOCAL = tree.NewFunctionArgDecl(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL case 1048: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6777 +//line mysql_sql.y:6781 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } case 1049: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReturnType -//line mysql_sql.y:6783 +//line mysql_sql.y:6787 { yyLOCAL = tree.NewReturnType(yyDollar[1].columnTypeUnion()) } @@ -19029,7 +19054,7 @@ yydefault: case 1050: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6789 +//line mysql_sql.y:6793 { yyLOCAL = false } @@ -19037,27 +19062,27 @@ yydefault: case 1051: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6793 +//line mysql_sql.y:6797 { yyLOCAL = true } yyVAL.union = yyLOCAL case 1052: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6798 +//line mysql_sql.y:6802 { yyVAL.str = "" } case 1054: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6805 +//line mysql_sql.y:6809 { yyVAL.str = yyDollar[2].str } case 1055: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6811 +//line mysql_sql.y:6815 { var Replace bool var Name = yyDollar[5].tableNameUnion() @@ -19076,7 +19101,7 @@ yydefault: case 1056: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6826 +//line mysql_sql.y:6830 { var Replace = yyDollar[2].sourceOptionalUnion() var Name = yyDollar[5].tableNameUnion() @@ -19095,7 +19120,7 @@ yydefault: case 1057: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6843 +//line mysql_sql.y:6847 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = yyDollar[4].exprUnion() @@ -19113,62 +19138,62 @@ yydefault: yyVAL.union = yyLOCAL case 1058: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6860 +//line mysql_sql.y:6864 { yyVAL.str = yyDollar[1].str } case 1059: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6864 +//line mysql_sql.y:6868 { yyVAL.str = yyVAL.str + yyDollar[2].str } case 1060: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6870 +//line mysql_sql.y:6874 { yyVAL.str = "ALGORITHM = " + yyDollar[3].str } case 1061: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6874 +//line mysql_sql.y:6878 { yyVAL.str = "DEFINER = " } case 1062: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6878 +//line mysql_sql.y:6882 { yyVAL.str = "SQL SECURITY " + yyDollar[3].str } case 1063: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6883 +//line mysql_sql.y:6887 { yyVAL.str = "" } case 1064: yyDollar = yyS[yypt-4 : yypt+1] -//line mysql_sql.y:6887 +//line mysql_sql.y:6891 { yyVAL.str = "WITH " + yyDollar[2].str + " CHECK OPTION" } case 1070: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6901 +//line mysql_sql.y:6905 { yyVAL.str = "" } case 1073: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6909 +//line mysql_sql.y:6913 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } case 1074: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6915 +//line mysql_sql.y:6919 { var str = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) @@ -19177,7 +19202,7 @@ yydefault: case 1075: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6920 +//line mysql_sql.y:6924 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } @@ -19185,7 +19210,7 @@ yydefault: case 1076: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AccountAuthOption -//line mysql_sql.y:6926 +//line mysql_sql.y:6930 { var Equal = yyDollar[2].str var AdminName = yyDollar[3].exprUnion() @@ -19200,7 +19225,7 @@ yydefault: case 1077: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6939 +//line mysql_sql.y:6943 { var str = yyDollar[1].str yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) @@ -19209,7 +19234,7 @@ yydefault: case 1078: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6944 +//line mysql_sql.y:6948 { var str = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) @@ -19218,7 +19243,7 @@ yydefault: case 1079: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6949 +//line mysql_sql.y:6953 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } @@ -19226,7 +19251,7 @@ yydefault: case 1080: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6955 +//line mysql_sql.y:6959 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByPassword, @@ -19237,7 +19262,7 @@ yydefault: case 1081: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6962 +//line mysql_sql.y:6966 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByPassword, @@ -19248,7 +19273,7 @@ yydefault: case 1082: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6969 +//line mysql_sql.y:6973 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByRandomPassword, @@ -19259,7 +19284,7 @@ yydefault: case 1083: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6976 +//line mysql_sql.y:6980 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedWithSSL, @@ -19270,7 +19295,7 @@ yydefault: case 1084: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6983 +//line mysql_sql.y:6987 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedWithSSL, @@ -19281,7 +19306,7 @@ yydefault: case 1085: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:6991 +//line mysql_sql.y:6995 { as := tree.NewAccountStatus() as.Exist = false @@ -19291,7 +19316,7 @@ yydefault: case 1086: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:6997 +//line mysql_sql.y:7001 { as := tree.NewAccountStatus() as.Exist = true @@ -19302,7 +19327,7 @@ yydefault: case 1087: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:7004 +//line mysql_sql.y:7008 { as := tree.NewAccountStatus() as.Exist = true @@ -19313,7 +19338,7 @@ yydefault: case 1088: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:7011 +//line mysql_sql.y:7015 { as := tree.NewAccountStatus() as.Exist = true @@ -19324,7 +19349,7 @@ yydefault: case 1089: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountComment -//line mysql_sql.y:7019 +//line mysql_sql.y:7023 { ac := tree.NewAccountComment() ac.Exist = false @@ -19334,7 +19359,7 @@ yydefault: case 1090: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountComment -//line mysql_sql.y:7025 +//line mysql_sql.y:7029 { ac := tree.NewAccountComment() ac.Exist = true @@ -19345,7 +19370,7 @@ yydefault: case 1091: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7034 +//line mysql_sql.y:7038 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Users = yyDollar[4].usersUnion() @@ -19364,7 +19389,7 @@ yydefault: case 1092: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7051 +//line mysql_sql.y:7055 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19384,7 +19409,7 @@ yydefault: case 1093: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7067 +//line mysql_sql.y:7071 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19405,7 +19430,7 @@ yydefault: case 1094: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7086 +//line mysql_sql.y:7090 { yyLOCAL = &tree.AccountsSetOption{ All: true, @@ -19415,7 +19440,7 @@ yydefault: case 1095: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7092 +//line mysql_sql.y:7096 { yyLOCAL = &tree.AccountsSetOption{ SetAccounts: yyDollar[2].identifierListUnion(), @@ -19425,7 +19450,7 @@ yydefault: case 1096: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7100 +//line mysql_sql.y:7104 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19446,7 +19471,7 @@ yydefault: case 1097: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:7118 +//line mysql_sql.y:7122 { yyLOCAL = tree.StageStatus{ Exist: false, @@ -19456,7 +19481,7 @@ yydefault: case 1098: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:7124 +//line mysql_sql.y:7128 { yyLOCAL = tree.StageStatus{ Exist: true, @@ -19467,7 +19492,7 @@ yydefault: case 1099: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:7131 +//line mysql_sql.y:7135 { yyLOCAL = tree.StageStatus{ Exist: true, @@ -19478,7 +19503,7 @@ yydefault: case 1100: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageComment -//line mysql_sql.y:7139 +//line mysql_sql.y:7143 { yyLOCAL = tree.StageComment{ Exist: false, @@ -19488,7 +19513,7 @@ yydefault: case 1101: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageComment -//line mysql_sql.y:7145 +//line mysql_sql.y:7149 { yyLOCAL = tree.StageComment{ Exist: true, @@ -19499,7 +19524,7 @@ yydefault: case 1102: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageUrl -//line mysql_sql.y:7153 +//line mysql_sql.y:7157 { yyLOCAL = tree.StageUrl{ Exist: false, @@ -19509,7 +19534,7 @@ yydefault: case 1103: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageUrl -//line mysql_sql.y:7159 +//line mysql_sql.y:7163 { yyLOCAL = tree.StageUrl{ Exist: true, @@ -19520,7 +19545,7 @@ yydefault: case 1104: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageCredentials -//line mysql_sql.y:7167 +//line mysql_sql.y:7171 { yyLOCAL = tree.StageCredentials{ Exist: false, @@ -19530,7 +19555,7 @@ yydefault: case 1105: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.StageCredentials -//line mysql_sql.y:7173 +//line mysql_sql.y:7177 { yyLOCAL = tree.StageCredentials{ Exist: true, @@ -19541,7 +19566,7 @@ yydefault: case 1106: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7182 +//line mysql_sql.y:7186 { yyLOCAL = yyDollar[1].strsUnion() } @@ -19549,7 +19574,7 @@ yydefault: case 1107: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7186 +//line mysql_sql.y:7190 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].strsUnion()...) } @@ -19557,7 +19582,7 @@ yydefault: case 1108: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7191 +//line mysql_sql.y:7195 { yyLOCAL = []string{} } @@ -19565,7 +19590,7 @@ yydefault: case 1109: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7195 +//line mysql_sql.y:7199 { yyLOCAL = append(yyLOCAL, yyDollar[1].str) yyLOCAL = append(yyLOCAL, yyDollar[3].str) @@ -19573,26 +19598,26 @@ yydefault: yyVAL.union = yyLOCAL case 1110: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:7202 +//line mysql_sql.y:7206 { yyVAL.str = yyDollar[3].str } case 1111: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:7207 +//line mysql_sql.y:7211 { yyVAL.str = "" } case 1112: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:7211 +//line mysql_sql.y:7215 { yyVAL.str = yyDollar[2].str } case 1113: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7217 +//line mysql_sql.y:7221 { var ifNotExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19606,7 +19631,7 @@ yydefault: case 1114: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7229 +//line mysql_sql.y:7233 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19620,7 +19645,7 @@ yydefault: case 1115: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7240 +//line mysql_sql.y:7244 { yyLOCAL = nil } @@ -19628,7 +19653,7 @@ yydefault: case 1116: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7244 +//line mysql_sql.y:7248 { yyLOCAL = &tree.AccountsSetOption{ All: true, @@ -19638,7 +19663,7 @@ yydefault: case 1117: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7250 +//line mysql_sql.y:7254 { yyLOCAL = &tree.AccountsSetOption{ SetAccounts: yyDollar[2].identifierListUnion(), @@ -19648,7 +19673,7 @@ yydefault: case 1118: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7256 +//line mysql_sql.y:7260 { yyLOCAL = &tree.AccountsSetOption{ AddAccounts: yyDollar[3].identifierListUnion(), @@ -19658,7 +19683,7 @@ yydefault: case 1119: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7262 +//line mysql_sql.y:7266 { yyLOCAL = &tree.AccountsSetOption{ DropAccounts: yyDollar[3].identifierListUnion(), @@ -19667,20 +19692,20 @@ yydefault: yyVAL.union = yyLOCAL case 1120: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:7269 +//line mysql_sql.y:7273 { yyVAL.str = "" } case 1121: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:7273 +//line mysql_sql.y:7277 { yyVAL.str = yyDollar[2].str } case 1122: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:7278 +//line mysql_sql.y:7282 { yyLOCAL = nil } @@ -19688,7 +19713,7 @@ yydefault: case 1123: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:7282 +//line mysql_sql.y:7286 { yyLOCAL = yyDollar[2].tableNamesUnion() } @@ -19696,7 +19721,7 @@ yydefault: case 1124: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7288 +//line mysql_sql.y:7292 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19706,7 +19731,7 @@ yydefault: case 1125: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7296 +//line mysql_sql.y:7300 { var ifNotExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19716,7 +19741,7 @@ yydefault: case 1126: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7304 +//line mysql_sql.y:7308 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19726,7 +19751,7 @@ yydefault: case 1127: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7312 +//line mysql_sql.y:7316 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19740,14 +19765,14 @@ yydefault: yyVAL.union = yyLOCAL case 1128: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:7325 +//line mysql_sql.y:7329 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } case 1129: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7330 +//line mysql_sql.y:7334 { var Exist = false var IsComment bool @@ -19763,7 +19788,7 @@ yydefault: case 1130: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7342 +//line mysql_sql.y:7346 { var Exist = true var IsComment = true @@ -19778,7 +19803,7 @@ yydefault: case 1131: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7353 +//line mysql_sql.y:7357 { var Exist = true var IsComment = false @@ -19793,7 +19818,7 @@ yydefault: case 1132: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7461 +//line mysql_sql.y:7465 { yyLOCAL = []*tree.User{yyDollar[1].userUnion()} } @@ -19801,7 +19826,7 @@ yydefault: case 1133: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7465 +//line mysql_sql.y:7469 { yyLOCAL = append(yyDollar[1].usersUnion(), yyDollar[3].userUnion()) } @@ -19809,7 +19834,7 @@ yydefault: case 1134: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.User -//line mysql_sql.y:7471 +//line mysql_sql.y:7475 { var Username = yyDollar[1].usernameRecordUnion().Username var Hostname = yyDollar[1].usernameRecordUnion().Hostname @@ -19824,7 +19849,7 @@ yydefault: case 1135: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7484 +//line mysql_sql.y:7488 { yyLOCAL = []*tree.User{yyDollar[1].userUnion()} } @@ -19832,7 +19857,7 @@ yydefault: case 1136: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7488 +//line mysql_sql.y:7492 { yyLOCAL = append(yyDollar[1].usersUnion(), yyDollar[3].userUnion()) } @@ -19840,7 +19865,7 @@ yydefault: case 1137: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.User -//line mysql_sql.y:7494 +//line mysql_sql.y:7498 { var Username = yyDollar[1].usernameRecordUnion().Username var Hostname = yyDollar[1].usernameRecordUnion().Hostname @@ -19855,7 +19880,7 @@ yydefault: case 1138: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7507 +//line mysql_sql.y:7511 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: "%"} } @@ -19863,7 +19888,7 @@ yydefault: case 1139: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7511 +//line mysql_sql.y:7515 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: yyDollar[3].str} } @@ -19871,7 +19896,7 @@ yydefault: case 1140: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7515 +//line mysql_sql.y:7519 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: yyDollar[2].str} } @@ -19879,7 +19904,7 @@ yydefault: case 1141: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7520 +//line mysql_sql.y:7524 { yyLOCAL = nil } @@ -19887,7 +19912,7 @@ yydefault: case 1142: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7524 +//line mysql_sql.y:7528 { yyLOCAL = yyDollar[1].userIdentifiedUnion() } @@ -19895,7 +19920,7 @@ yydefault: case 1143: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7530 +//line mysql_sql.y:7534 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedByPassword, @@ -19906,7 +19931,7 @@ yydefault: case 1144: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7537 +//line mysql_sql.y:7541 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedByRandomPassword, @@ -19916,7 +19941,7 @@ yydefault: case 1145: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7543 +//line mysql_sql.y:7547 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedWithSSL, @@ -19926,14 +19951,14 @@ yydefault: yyVAL.union = yyLOCAL case 1146: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:7552 +//line mysql_sql.y:7556 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } case 1148: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7559 +//line mysql_sql.y:7563 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Roles = yyDollar[4].rolesUnion() @@ -19946,7 +19971,7 @@ yydefault: case 1149: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:7570 +//line mysql_sql.y:7574 { yyLOCAL = []*tree.Role{yyDollar[1].roleUnion()} } @@ -19954,7 +19979,7 @@ yydefault: case 1150: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:7574 +//line mysql_sql.y:7578 { yyLOCAL = append(yyDollar[1].rolesUnion(), yyDollar[3].roleUnion()) } @@ -19962,7 +19987,7 @@ yydefault: case 1151: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Role -//line mysql_sql.y:7580 +//line mysql_sql.y:7584 { var UserName = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewRole( @@ -19973,7 +19998,7 @@ yydefault: case 1152: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7589 +//line mysql_sql.y:7593 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } @@ -19981,7 +20006,7 @@ yydefault: case 1153: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7593 +//line mysql_sql.y:7597 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } @@ -19989,7 +20014,7 @@ yydefault: case 1154: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7597 +//line mysql_sql.y:7601 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } @@ -19997,7 +20022,7 @@ yydefault: case 1155: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7602 +//line mysql_sql.y:7606 { yyLOCAL = tree.INDEX_CATEGORY_NONE } @@ -20005,7 +20030,7 @@ yydefault: case 1156: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7606 +//line mysql_sql.y:7610 { yyLOCAL = tree.INDEX_CATEGORY_FULLTEXT } @@ -20013,7 +20038,7 @@ yydefault: case 1157: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7610 +//line mysql_sql.y:7614 { yyLOCAL = tree.INDEX_CATEGORY_SPATIAL } @@ -20021,7 +20046,7 @@ yydefault: case 1158: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7614 +//line mysql_sql.y:7618 { yyLOCAL = tree.INDEX_CATEGORY_UNIQUE } @@ -20029,7 +20054,7 @@ yydefault: case 1159: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7620 +//line mysql_sql.y:7624 { var io *tree.IndexOption = nil if yyDollar[11].indexOptionUnion() == nil && yyDollar[5].indexTypeUnion() != tree.INDEX_TYPE_INVALID { @@ -20063,7 +20088,7 @@ yydefault: case 1160: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7651 +//line mysql_sql.y:7655 { yyLOCAL = nil } @@ -20071,7 +20096,7 @@ yydefault: case 1161: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7655 +//line mysql_sql.y:7659 { // Merge the options if yyDollar[1].indexOptionUnion() == nil { @@ -20099,6 +20124,8 @@ yydefault: opt1.HnswEfSearch = opt2.HnswEfSearch } else if opt2.Async { opt1.Async = opt2.Async + } else if opt2.ForceSync { + opt1.ForceSync = opt2.ForceSync } yyLOCAL = opt1 } @@ -20107,7 +20134,7 @@ yydefault: case 1162: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7689 +//line mysql_sql.y:7695 { io := tree.NewIndexOption() io.KeyBlockSize = uint64(yyDollar[3].item.(int64)) @@ -20117,7 +20144,7 @@ yydefault: case 1163: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7695 +//line mysql_sql.y:7701 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -20133,7 +20160,7 @@ yydefault: case 1164: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7707 +//line mysql_sql.y:7713 { io := tree.NewIndexOption() io.AlgoParamVectorOpType = yyDollar[2].str @@ -20143,7 +20170,7 @@ yydefault: case 1165: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7713 +//line mysql_sql.y:7719 { io := tree.NewIndexOption() io.Comment = yyDollar[2].str @@ -20153,7 +20180,7 @@ yydefault: case 1166: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7719 +//line mysql_sql.y:7725 { io := tree.NewIndexOption() io.ParserName = yyDollar[3].cstrUnion().Compare() @@ -20163,7 +20190,7 @@ yydefault: case 1167: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7725 +//line mysql_sql.y:7731 { io := tree.NewIndexOption() io.Visible = tree.VISIBLE_TYPE_VISIBLE @@ -20173,7 +20200,7 @@ yydefault: case 1168: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7731 +//line mysql_sql.y:7737 { io := tree.NewIndexOption() io.Visible = tree.VISIBLE_TYPE_INVISIBLE @@ -20183,7 +20210,7 @@ yydefault: case 1169: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7737 +//line mysql_sql.y:7743 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -20198,7 +20225,7 @@ yydefault: case 1170: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7748 +//line mysql_sql.y:7754 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -20213,7 +20240,7 @@ yydefault: case 1171: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7759 +//line mysql_sql.y:7765 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -20228,7 +20255,7 @@ yydefault: case 1172: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7770 +//line mysql_sql.y:7776 { io := tree.NewIndexOption() io.Async = true @@ -20236,25 +20263,35 @@ yydefault: } yyVAL.union = yyLOCAL case 1173: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL *tree.IndexOption +//line mysql_sql.y:7782 + { + io := tree.NewIndexOption() + io.ForceSync = true + yyLOCAL = io + } + yyVAL.union = yyLOCAL + case 1174: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:7779 +//line mysql_sql.y:7790 { yyLOCAL = []*tree.KeyPart{yyDollar[1].keyPartUnion()} } yyVAL.union = yyLOCAL - case 1174: + case 1175: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:7783 +//line mysql_sql.y:7794 { yyLOCAL = append(yyDollar[1].keyPartsUnion(), yyDollar[3].keyPartUnion()) } yyVAL.union = yyLOCAL - case 1175: + case 1176: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.KeyPart -//line mysql_sql.y:7789 +//line mysql_sql.y:7800 { // Order is parsed but just ignored as MySQL dtree. var ColName = yyDollar[1].unresolvedNameUnion() @@ -20269,10 +20306,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1176: + case 1177: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.KeyPart -//line mysql_sql.y:7803 +//line mysql_sql.y:7814 { var ColName *tree.UnresolvedName var Length int @@ -20286,74 +20323,74 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1177: + case 1178: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7817 +//line mysql_sql.y:7828 { yyLOCAL = tree.INDEX_TYPE_INVALID } yyVAL.union = yyLOCAL - case 1178: + case 1179: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7821 +//line mysql_sql.y:7832 { yyLOCAL = tree.INDEX_TYPE_BTREE } yyVAL.union = yyLOCAL - case 1179: + case 1180: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7825 +//line mysql_sql.y:7836 { yyLOCAL = tree.INDEX_TYPE_IVFFLAT } yyVAL.union = yyLOCAL - case 1180: + case 1181: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7829 +//line mysql_sql.y:7840 { yyLOCAL = tree.INDEX_TYPE_HNSW } yyVAL.union = yyLOCAL - case 1181: + case 1182: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7833 +//line mysql_sql.y:7844 { yyLOCAL = tree.INDEX_TYPE_MASTER } yyVAL.union = yyLOCAL - case 1182: + case 1183: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7837 +//line mysql_sql.y:7848 { yyLOCAL = tree.INDEX_TYPE_HASH } yyVAL.union = yyLOCAL - case 1183: + case 1184: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7841 +//line mysql_sql.y:7852 { yyLOCAL = tree.INDEX_TYPE_RTREE } yyVAL.union = yyLOCAL - case 1184: + case 1185: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7845 +//line mysql_sql.y:7856 { yyLOCAL = tree.INDEX_TYPE_BSI } yyVAL.union = yyLOCAL - case 1185: + case 1186: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7851 +//line mysql_sql.y:7862 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].str) @@ -20367,10 +20404,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1186: + case 1187: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7865 +//line mysql_sql.y:7876 { var t = tree.NewCloneDatabase() t.DstDatabase = tree.Identifier(yyDollar[4].str) @@ -20380,92 +20417,92 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1187: + case 1188: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.SubscriptionOption -//line mysql_sql.y:7875 +//line mysql_sql.y:7886 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1188: + case 1189: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.SubscriptionOption -//line mysql_sql.y:7879 +//line mysql_sql.y:7890 { var From = tree.Identifier(yyDollar[2].str) var Publication = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewSubscriptionOption(From, Publication) } yyVAL.union = yyLOCAL - case 1191: + case 1192: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7890 +//line mysql_sql.y:7901 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1192: + case 1193: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7894 +//line mysql_sql.y:7905 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1193: + case 1194: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7899 +//line mysql_sql.y:7910 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1194: + case 1195: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7903 +//line mysql_sql.y:7914 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1195: + case 1196: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7908 +//line mysql_sql.y:7919 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1196: + case 1197: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7912 +//line mysql_sql.y:7923 { yyLOCAL = yyDollar[1].createOptionsUnion() } yyVAL.union = yyLOCAL - case 1197: + case 1198: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7918 +//line mysql_sql.y:7929 { yyLOCAL = []tree.CreateOption{yyDollar[1].createOptionUnion()} } yyVAL.union = yyLOCAL - case 1198: + case 1199: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7922 +//line mysql_sql.y:7933 { yyLOCAL = append(yyDollar[1].createOptionsUnion(), yyDollar[2].createOptionUnion()) } yyVAL.union = yyLOCAL - case 1199: + case 1200: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7928 +//line mysql_sql.y:7939 { var IsDefault = yyDollar[1].defaultOptionalUnion() var Charset = yyDollar[4].str @@ -20475,10 +20512,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1200: + case 1201: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7937 +//line mysql_sql.y:7948 { var IsDefault = yyDollar[1].defaultOptionalUnion() var Collate = yyDollar[4].str @@ -20488,35 +20525,35 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1201: + case 1202: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7946 +//line mysql_sql.y:7957 { var Encrypt = yyDollar[4].str yyLOCAL = tree.NewCreateOptionEncryption(Encrypt) } yyVAL.union = yyLOCAL - case 1202: + case 1203: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7952 +//line mysql_sql.y:7963 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1203: + case 1204: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7956 +//line mysql_sql.y:7967 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1204: + case 1205: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7962 +//line mysql_sql.y:7973 { var TableName = yyDollar[4].tableNameUnion() var Options = yyDollar[7].connectorOptionsUnion() @@ -20526,18 +20563,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1205: + case 1206: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7973 +//line mysql_sql.y:7984 { yyLOCAL = &tree.ShowConnectors{} } yyVAL.union = yyLOCAL - case 1206: + case 1207: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7979 +//line mysql_sql.y:7990 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20554,10 +20591,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1207: + case 1208: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7997 +//line mysql_sql.y:8008 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20574,10 +20611,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1208: + case 1209: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8015 +//line mysql_sql.y:8026 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20594,10 +20631,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1209: + case 1210: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8033 +//line mysql_sql.y:8044 { var Replace = yyDollar[2].sourceOptionalUnion() var IfNotExists = yyDollar[4].ifNotExistsUnion() @@ -20613,26 +20650,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1210: + case 1211: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8049 +//line mysql_sql.y:8060 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1211: + case 1212: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8053 +//line mysql_sql.y:8064 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1212: + case 1213: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8059 +//line mysql_sql.y:8070 { t := tree.NewDataBranchCreateTable() t.CreateTable.Table = *yyDollar[5].tableNameUnion() @@ -20643,10 +20680,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1213: + case 1214: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8069 +//line mysql_sql.y:8080 { t := tree.NewDataBranchCreateDatabase() t.DstDatabase = tree.Identifier(yyDollar[4].str) @@ -20656,30 +20693,30 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1214: + case 1215: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8078 +//line mysql_sql.y:8089 { t := tree.NewDataBranchDeleteTable() t.TableName = *yyDollar[5].tableNameUnion() yyLOCAL = t } yyVAL.union = yyLOCAL - case 1215: + case 1216: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8084 +//line mysql_sql.y:8095 { t := tree.NewDataBranchDeleteDatabase() t.DatabaseName = tree.Identifier(yyDollar[5].str) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1216: + case 1217: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8090 +//line mysql_sql.y:8101 { t := tree.NewDataBranchDiff() t.TargetTable = *yyDollar[4].tableNameUnion() @@ -20688,10 +20725,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1217: + case 1218: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8098 +//line mysql_sql.y:8109 { t := tree.NewDataBranchMerge() t.SrcTable = *yyDollar[4].tableNameUnion() @@ -20700,38 +20737,38 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1218: + case 1219: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8107 +//line mysql_sql.y:8118 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1219: + case 1220: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8111 +//line mysql_sql.y:8122 { yyLOCAL = &tree.DiffOutputOpt{ As: *yyDollar[3].tableNameUnion(), } } yyVAL.union = yyLOCAL - case 1220: + case 1221: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8117 +//line mysql_sql.y:8128 { yyLOCAL = &tree.DiffOutputOpt{ DirPath: yyDollar[3].str, } } yyVAL.union = yyLOCAL - case 1221: + case 1222: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8123 +//line mysql_sql.y:8134 { x := yyDollar[3].item.(int64) yyLOCAL = &tree.DiffOutputOpt{ @@ -20739,76 +20776,76 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1222: + case 1223: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.DiffOutputOpt -//line mysql_sql.y:8130 +//line mysql_sql.y:8141 { yyLOCAL = &tree.DiffOutputOpt{ Count: true, } } yyVAL.union = yyLOCAL - case 1223: + case 1224: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ConflictOpt -//line mysql_sql.y:8138 +//line mysql_sql.y:8149 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1224: + case 1225: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConflictOpt -//line mysql_sql.y:8142 +//line mysql_sql.y:8153 { yyLOCAL = &tree.ConflictOpt{ Opt: tree.CONFLICT_FAIL, } } yyVAL.union = yyLOCAL - case 1225: + case 1226: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConflictOpt -//line mysql_sql.y:8148 +//line mysql_sql.y:8159 { yyLOCAL = &tree.ConflictOpt{ Opt: tree.CONFLICT_SKIP, } } yyVAL.union = yyLOCAL - case 1226: + case 1227: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConflictOpt -//line mysql_sql.y:8154 +//line mysql_sql.y:8165 { yyLOCAL = &tree.ConflictOpt{ Opt: tree.CONFLICT_ACCEPT, } } yyVAL.union = yyLOCAL - case 1227: + case 1228: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ToAccountOpt -//line mysql_sql.y:8162 +//line mysql_sql.y:8173 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1228: + case 1229: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ToAccountOpt -//line mysql_sql.y:8166 +//line mysql_sql.y:8177 { yyLOCAL = &tree.ToAccountOpt{ AccountName: tree.Identifier(yyDollar[3].cstrUnion().Compare()), } } yyVAL.union = yyLOCAL - case 1229: + case 1230: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8174 +//line mysql_sql.y:8185 { t := tree.NewCreateTable() t.Temporary = yyDollar[2].boolValUnion() @@ -20821,10 +20858,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1230: + case 1231: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8186 +//line mysql_sql.y:8197 { t := tree.NewCreateTable() t.IfNotExists = yyDollar[4].ifNotExistsUnion() @@ -20834,10 +20871,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1231: + case 1232: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8195 +//line mysql_sql.y:8206 { t := tree.NewCreateTable() t.IsClusterTable = true @@ -20850,10 +20887,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1232: + case 1233: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8207 +//line mysql_sql.y:8218 { t := tree.NewCreateTable() t.IsDynamicTable = true @@ -20864,10 +20901,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1233: + case 1234: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8217 +//line mysql_sql.y:8228 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20878,10 +20915,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1234: + case 1235: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8227 +//line mysql_sql.y:8238 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20893,10 +20930,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1235: + case 1236: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8238 +//line mysql_sql.y:8249 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20907,10 +20944,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1236: + case 1237: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8248 +//line mysql_sql.y:8259 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20922,10 +20959,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1237: + case 1238: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8259 +//line mysql_sql.y:8270 { t := tree.NewCreateTable() t.IsAsLike = true @@ -20934,10 +20971,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1238: + case 1239: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8267 +//line mysql_sql.y:8278 { t := tree.NewCreateTable() t.Temporary = yyDollar[2].boolValUnion() @@ -20947,10 +20984,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1239: + case 1240: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8276 +//line mysql_sql.y:8287 { t := tree.NewCloneTable() t.CreateTable.Table = *yyDollar[5].tableNameUnion() @@ -20961,19 +20998,19 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1240: + case 1241: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8288 +//line mysql_sql.y:8299 { yyLOCAL = yyDollar[1].loadParamUnion() yyLOCAL.Tail = yyDollar[2].tailParamUnion() } yyVAL.union = yyLOCAL - case 1241: + case 1242: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8295 +//line mysql_sql.y:8306 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20984,10 +21021,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1242: + case 1243: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8305 +//line mysql_sql.y:8316 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -21001,10 +21038,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1243: + case 1244: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8318 +//line mysql_sql.y:8329 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -21013,10 +21050,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1244: + case 1245: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8326 +//line mysql_sql.y:8337 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -21026,10 +21063,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1245: + case 1246: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8335 +//line mysql_sql.y:8346 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -21038,55 +21075,55 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1246: + case 1247: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:8344 +//line mysql_sql.y:8355 { yyVAL.str = "" } - case 1247: + case 1248: yyDollar = yyS[yypt-4 : yypt+1] -//line mysql_sql.y:8348 +//line mysql_sql.y:8359 { yyVAL.str = yyDollar[4].str } - case 1248: + case 1249: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8354 +//line mysql_sql.y:8365 { yyLOCAL = yyDollar[1].strsUnion() } yyVAL.union = yyLOCAL - case 1249: + case 1250: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8358 +//line mysql_sql.y:8369 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].strsUnion()...) } yyVAL.union = yyLOCAL - case 1250: + case 1251: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8363 +//line mysql_sql.y:8374 { yyLOCAL = []string{} } yyVAL.union = yyLOCAL - case 1251: + case 1252: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8367 +//line mysql_sql.y:8378 { yyLOCAL = append(yyLOCAL, yyDollar[1].str) yyLOCAL = append(yyLOCAL, yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1252: + case 1253: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.TailParameter -//line mysql_sql.y:8374 +//line mysql_sql.y:8385 { yyLOCAL = &tree.TailParameter{ Charset: yyDollar[1].str, @@ -21098,22 +21135,22 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1253: + case 1254: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:8386 +//line mysql_sql.y:8397 { yyVAL.str = "" } - case 1254: + case 1255: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:8390 +//line mysql_sql.y:8401 { yyVAL.str = yyDollar[2].str } - case 1255: + case 1256: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8396 +//line mysql_sql.y:8407 { var Name = yyDollar[4].tableNameUnion() var Type = yyDollar[5].columnTypeUnion() @@ -21135,10 +21172,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1256: + case 1257: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:8417 +//line mysql_sql.y:8428 { locale := "" fstr := "bigint" @@ -21153,44 +21190,44 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1257: + case 1258: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:8431 +//line mysql_sql.y:8442 { yyLOCAL = yyDollar[2].columnTypeUnion() } yyVAL.union = yyLOCAL - case 1258: + case 1259: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.TypeOption -//line mysql_sql.y:8435 +//line mysql_sql.y:8446 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1259: + case 1260: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TypeOption -//line mysql_sql.y:8439 +//line mysql_sql.y:8450 { yyLOCAL = &tree.TypeOption{ Type: yyDollar[2].columnTypeUnion(), } } yyVAL.union = yyLOCAL - case 1260: + case 1261: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8445 +//line mysql_sql.y:8456 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1261: + case 1262: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8449 +//line mysql_sql.y:8460 { yyLOCAL = &tree.IncrementByOption{ Minus: false, @@ -21198,10 +21235,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1262: + case 1263: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8456 +//line mysql_sql.y:8467 { yyLOCAL = &tree.IncrementByOption{ Minus: false, @@ -21209,10 +21246,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1263: + case 1264: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8463 +//line mysql_sql.y:8474 { yyLOCAL = &tree.IncrementByOption{ Minus: true, @@ -21220,10 +21257,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1264: + case 1265: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8470 +//line mysql_sql.y:8481 { yyLOCAL = &tree.IncrementByOption{ Minus: true, @@ -21231,42 +21268,42 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1265: + case 1266: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8477 +//line mysql_sql.y:8488 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1266: + case 1267: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8481 +//line mysql_sql.y:8492 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1267: + case 1268: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8485 +//line mysql_sql.y:8496 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1268: + case 1269: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8489 +//line mysql_sql.y:8500 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1269: + case 1270: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8493 +//line mysql_sql.y:8504 { yyLOCAL = &tree.MinValueOption{ Minus: false, @@ -21274,10 +21311,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1270: + case 1271: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8500 +//line mysql_sql.y:8511 { yyLOCAL = &tree.MinValueOption{ Minus: true, @@ -21285,18 +21322,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1271: + case 1272: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8507 +//line mysql_sql.y:8518 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1272: + case 1273: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8511 +//line mysql_sql.y:8522 { yyLOCAL = &tree.MaxValueOption{ Minus: false, @@ -21304,10 +21341,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1273: + case 1274: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8518 +//line mysql_sql.y:8529 { yyLOCAL = &tree.MaxValueOption{ Minus: true, @@ -21315,46 +21352,46 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1274: + case 1275: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8525 +//line mysql_sql.y:8536 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1275: + case 1276: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8529 +//line mysql_sql.y:8540 { yyLOCAL = &tree.CycleOption{ Cycle: false, } } yyVAL.union = yyLOCAL - case 1276: + case 1277: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8535 +//line mysql_sql.y:8546 { yyLOCAL = &tree.CycleOption{ Cycle: true, } } yyVAL.union = yyLOCAL - case 1277: + case 1278: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8541 +//line mysql_sql.y:8552 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1278: + case 1279: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8545 +//line mysql_sql.y:8556 { yyLOCAL = &tree.StartWithOption{ Minus: false, @@ -21362,10 +21399,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1279: + case 1280: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8552 +//line mysql_sql.y:8563 { yyLOCAL = &tree.StartWithOption{ Minus: false, @@ -21373,10 +21410,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1280: + case 1281: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8559 +//line mysql_sql.y:8570 { yyLOCAL = &tree.StartWithOption{ Minus: true, @@ -21384,10 +21421,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1281: + case 1282: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8566 +//line mysql_sql.y:8577 { yyLOCAL = &tree.StartWithOption{ Minus: true, @@ -21395,58 +21432,58 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1282: + case 1283: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8573 +//line mysql_sql.y:8584 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1283: + case 1284: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8577 +//line mysql_sql.y:8588 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1284: + case 1285: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8582 +//line mysql_sql.y:8593 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1285: + case 1286: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8586 +//line mysql_sql.y:8597 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1286: + case 1287: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8590 +//line mysql_sql.y:8601 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1287: + case 1288: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.PartitionOption -//line mysql_sql.y:8595 +//line mysql_sql.y:8606 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1288: + case 1289: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.PartitionOption -//line mysql_sql.y:8599 +//line mysql_sql.y:8610 { yyDollar[3].partitionByUnion().Num = uint64(yyDollar[4].int64ValUnion()) var PartBy = yyDollar[3].partitionByUnion() @@ -21459,18 +21496,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1289: + case 1290: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8612 +//line mysql_sql.y:8623 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1290: + case 1291: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8616 +//line mysql_sql.y:8627 { var ColumnList = []*tree.UnresolvedName{yyDollar[3].unresolvedNameUnion()} yyLOCAL = tree.NewClusterByOption( @@ -21479,10 +21516,10 @@ yydefault: } yyVAL.union = yyLOCAL - case 1291: + case 1292: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8624 +//line mysql_sql.y:8635 { var ColumnList = yyDollar[4].unresolveNamesUnion() yyLOCAL = tree.NewClusterByOption( @@ -21490,18 +21527,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1292: + case 1293: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8632 +//line mysql_sql.y:8643 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1293: + case 1294: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8636 +//line mysql_sql.y:8647 { var IsSubPartition = true var PType = yyDollar[3].partitionByUnion().PType @@ -21515,42 +21552,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1294: + case 1295: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8650 +//line mysql_sql.y:8661 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1295: + case 1296: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8654 +//line mysql_sql.y:8665 { yyLOCAL = yyDollar[2].partitionsUnion() } yyVAL.union = yyLOCAL - case 1296: + case 1297: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8660 +//line mysql_sql.y:8671 { yyLOCAL = []*tree.Partition{yyDollar[1].partitionUnion()} } yyVAL.union = yyLOCAL - case 1297: + case 1298: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8664 +//line mysql_sql.y:8675 { yyLOCAL = append(yyDollar[1].partitionsUnion(), yyDollar[3].partitionUnion()) } yyVAL.union = yyLOCAL - case 1298: + case 1299: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Partition -//line mysql_sql.y:8670 +//line mysql_sql.y:8681 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Values = yyDollar[3].valuesUnion() @@ -21564,10 +21601,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1299: + case 1300: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Partition -//line mysql_sql.y:8683 +//line mysql_sql.y:8694 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Values = yyDollar[3].valuesUnion() @@ -21581,42 +21618,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1300: + case 1301: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8697 +//line mysql_sql.y:8708 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1301: + case 1302: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8701 +//line mysql_sql.y:8712 { yyLOCAL = yyDollar[2].subPartitionsUnion() } yyVAL.union = yyLOCAL - case 1302: + case 1303: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8707 +//line mysql_sql.y:8718 { yyLOCAL = []*tree.SubPartition{yyDollar[1].subPartitionUnion()} } yyVAL.union = yyLOCAL - case 1303: + case 1304: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8711 +//line mysql_sql.y:8722 { yyLOCAL = append(yyDollar[1].subPartitionsUnion(), yyDollar[3].subPartitionUnion()) } yyVAL.union = yyLOCAL - case 1304: + case 1305: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.SubPartition -//line mysql_sql.y:8717 +//line mysql_sql.y:8728 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Options []tree.TableOption @@ -21626,10 +21663,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1305: + case 1306: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.SubPartition -//line mysql_sql.y:8726 +//line mysql_sql.y:8737 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Options = yyDollar[3].tableOptionsUnion() @@ -21639,53 +21676,53 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1306: + case 1307: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8737 +//line mysql_sql.y:8748 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1307: + case 1308: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8741 +//line mysql_sql.y:8752 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[2].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1308: + case 1309: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8746 +//line mysql_sql.y:8757 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1309: + case 1310: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8750 +//line mysql_sql.y:8761 { expr := tree.NewMaxValue() var valueList = tree.Exprs{expr} yyLOCAL = tree.NewValuesLessThan(valueList) } yyVAL.union = yyLOCAL - case 1310: + case 1311: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8756 +//line mysql_sql.y:8767 { var valueList = yyDollar[5].exprsUnion() yyLOCAL = tree.NewValuesLessThan(valueList) } yyVAL.union = yyLOCAL - case 1311: + case 1312: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8761 +//line mysql_sql.y:8772 { var valueList = yyDollar[4].exprsUnion() yyLOCAL = tree.NewValuesIn( @@ -21693,18 +21730,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1312: + case 1313: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8769 +//line mysql_sql.y:8780 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1313: + case 1314: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8773 +//line mysql_sql.y:8784 { res := yyDollar[2].item.(int64) if res == 0 { @@ -21714,18 +21751,18 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 1314: + case 1315: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8783 +//line mysql_sql.y:8794 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1315: + case 1316: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8787 +//line mysql_sql.y:8798 { res := yyDollar[2].item.(int64) if res == 0 { @@ -21735,10 +21772,10 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 1316: + case 1317: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8798 +//line mysql_sql.y:8809 { rangeTyp := tree.NewRangeType() rangeTyp.Expr = yyDollar[3].exprUnion() @@ -21747,10 +21784,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1317: + case 1318: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8806 +//line mysql_sql.y:8817 { rangeTyp := tree.NewRangeType() rangeTyp.ColumnList = yyDollar[4].unresolveNamesUnion() @@ -21759,10 +21796,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1318: + case 1319: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8814 +//line mysql_sql.y:8825 { listTyp := tree.NewListType() listTyp.Expr = yyDollar[3].exprUnion() @@ -21771,10 +21808,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1319: + case 1320: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8822 +//line mysql_sql.y:8833 { listTyp := tree.NewListType() listTyp.ColumnList = yyDollar[4].unresolveNamesUnion() @@ -21783,10 +21820,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1321: + case 1322: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8833 +//line mysql_sql.y:8844 { keyTyp := tree.NewKeyType() keyTyp.Linear = yyDollar[1].boolValUnion() @@ -21796,10 +21833,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1322: + case 1323: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8842 +//line mysql_sql.y:8853 { keyTyp := tree.NewKeyType() keyTyp.Linear = yyDollar[1].boolValUnion() @@ -21810,10 +21847,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1323: + case 1324: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8852 +//line mysql_sql.y:8863 { Linear := yyDollar[1].boolValUnion() Expr := yyDollar[4].exprUnion() @@ -21823,58 +21860,58 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1324: + case 1325: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8862 +//line mysql_sql.y:8873 { yyLOCAL = 2 } yyVAL.union = yyLOCAL - case 1325: + case 1326: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8866 +//line mysql_sql.y:8877 { yyLOCAL = yyDollar[3].item.(int64) } yyVAL.union = yyLOCAL - case 1326: + case 1327: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8871 +//line mysql_sql.y:8882 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1327: + case 1328: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8875 +//line mysql_sql.y:8886 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1328: + case 1329: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.ConnectorOption -//line mysql_sql.y:8881 +//line mysql_sql.y:8892 { yyLOCAL = []*tree.ConnectorOption{yyDollar[1].connectorOptionUnion()} } yyVAL.union = yyLOCAL - case 1329: + case 1330: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.ConnectorOption -//line mysql_sql.y:8885 +//line mysql_sql.y:8896 { yyLOCAL = append(yyDollar[1].connectorOptionsUnion(), yyDollar[3].connectorOptionUnion()) } yyVAL.union = yyLOCAL - case 1330: + case 1331: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConnectorOption -//line mysql_sql.y:8891 +//line mysql_sql.y:8902 { var Key = tree.Identifier(yyDollar[1].cstrUnion().Compare()) var Val = yyDollar[3].exprUnion() @@ -21884,10 +21921,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1331: + case 1332: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConnectorOption -//line mysql_sql.y:8900 +//line mysql_sql.y:8911 { var Key = tree.Identifier(yyDollar[1].str) var Val = yyDollar[3].exprUnion() @@ -21897,42 +21934,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1332: + case 1333: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8910 +//line mysql_sql.y:8921 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1333: + case 1334: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8914 +//line mysql_sql.y:8925 { yyLOCAL = yyDollar[3].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 1334: + case 1335: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8920 +//line mysql_sql.y:8931 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1335: + case 1336: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8924 +//line mysql_sql.y:8935 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[3].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1336: + case 1337: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8930 +//line mysql_sql.y:8941 { var Key = tree.Identifier(yyDollar[1].cstrUnion().Compare()) var Val = yyDollar[3].exprUnion() @@ -21942,10 +21979,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1337: + case 1338: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8939 +//line mysql_sql.y:8950 { var Key = tree.Identifier(yyDollar[1].str) var Val = yyDollar[3].exprUnion() @@ -21955,364 +21992,364 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1338: + case 1339: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8949 +//line mysql_sql.y:8960 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1339: + case 1340: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8953 +//line mysql_sql.y:8964 { yyLOCAL = yyDollar[1].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 1340: + case 1341: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8959 +//line mysql_sql.y:8970 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1341: + case 1342: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8963 +//line mysql_sql.y:8974 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[3].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1342: + case 1343: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8967 +//line mysql_sql.y:8978 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[2].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1343: + case 1344: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8973 +//line mysql_sql.y:8984 { yyLOCAL = tree.NewTableOptionAUTOEXTEND_SIZE(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1344: + case 1345: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8977 +//line mysql_sql.y:8988 { yyLOCAL = tree.NewTableOptionAutoIncrement(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1345: + case 1346: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8981 +//line mysql_sql.y:8992 { yyLOCAL = tree.NewTableOptionAvgRowLength(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1346: + case 1347: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8985 +//line mysql_sql.y:8996 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1347: + case 1348: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8989 +//line mysql_sql.y:9000 { yyLOCAL = tree.NewTableOptionCollate(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1348: + case 1349: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8993 +//line mysql_sql.y:9004 { yyLOCAL = tree.NewTableOptionChecksum(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1349: + case 1350: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8997 +//line mysql_sql.y:9008 { str := util.DealCommentString(yyDollar[3].str) yyLOCAL = tree.NewTableOptionComment(str) } yyVAL.union = yyLOCAL - case 1350: + case 1351: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9002 +//line mysql_sql.y:9013 { yyLOCAL = tree.NewTableOptionCompression(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1351: + case 1352: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9006 +//line mysql_sql.y:9017 { yyLOCAL = tree.NewTableOptionConnection(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1352: + case 1353: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9010 +//line mysql_sql.y:9021 { yyLOCAL = tree.NewTableOptionDataDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1353: + case 1354: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9014 +//line mysql_sql.y:9025 { yyLOCAL = tree.NewTableOptionIndexDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1354: + case 1355: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9018 +//line mysql_sql.y:9029 { yyLOCAL = tree.NewTableOptionDelayKeyWrite(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1355: + case 1356: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9022 +//line mysql_sql.y:9033 { yyLOCAL = tree.NewTableOptionEncryption(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1356: + case 1357: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9026 +//line mysql_sql.y:9037 { yyLOCAL = tree.NewTableOptionEngine(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1357: + case 1358: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9030 +//line mysql_sql.y:9041 { yyLOCAL = tree.NewTableOptionEngineAttr(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1358: + case 1359: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9034 +//line mysql_sql.y:9045 { yyLOCAL = tree.NewTableOptionInsertMethod(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1359: + case 1360: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9038 +//line mysql_sql.y:9049 { yyLOCAL = tree.NewTableOptionKeyBlockSize(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1360: + case 1361: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9042 +//line mysql_sql.y:9053 { yyLOCAL = tree.NewTableOptionMaxRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1361: + case 1362: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9046 +//line mysql_sql.y:9057 { yyLOCAL = tree.NewTableOptionMinRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1362: + case 1363: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9050 +//line mysql_sql.y:9061 { t := tree.NewTableOptionPackKeys() t.Value = yyDollar[3].item.(int64) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1363: + case 1364: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9056 +//line mysql_sql.y:9067 { t := tree.NewTableOptionPackKeys() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1364: + case 1365: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9062 +//line mysql_sql.y:9073 { yyLOCAL = tree.NewTableOptionPassword(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1365: + case 1366: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9066 +//line mysql_sql.y:9077 { yyLOCAL = tree.NewTableOptionRowFormat(yyDollar[3].rowFormatTypeUnion()) } yyVAL.union = yyLOCAL - case 1366: + case 1367: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9070 +//line mysql_sql.y:9081 { yyLOCAL = tree.NewTTableOptionStartTrans(true) } yyVAL.union = yyLOCAL - case 1367: + case 1368: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9074 +//line mysql_sql.y:9085 { yyLOCAL = tree.NewTTableOptionSecondaryEngineAttr(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1368: + case 1369: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9078 +//line mysql_sql.y:9089 { t := tree.NewTableOptionStatsAutoRecalc() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1369: + case 1370: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9084 +//line mysql_sql.y:9095 { t := tree.NewTableOptionStatsAutoRecalc() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1370: + case 1371: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9090 +//line mysql_sql.y:9101 { t := tree.NewTableOptionStatsPersistent() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1371: + case 1372: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9096 +//line mysql_sql.y:9107 { t := tree.NewTableOptionStatsPersistent() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1372: + case 1373: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9102 +//line mysql_sql.y:9113 { t := tree.NewTableOptionStatsSamplePages() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1373: + case 1374: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9108 +//line mysql_sql.y:9119 { t := tree.NewTableOptionStatsSamplePages() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1374: + case 1375: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9114 +//line mysql_sql.y:9125 { yyLOCAL = tree.NewTableOptionTablespace(yyDollar[3].cstrUnion().Compare(), "") } yyVAL.union = yyLOCAL - case 1375: + case 1376: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9118 +//line mysql_sql.y:9129 { yyLOCAL = tree.NewTableOptionTablespace("", yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1376: + case 1377: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9122 +//line mysql_sql.y:9133 { yyLOCAL = tree.NewTableOptionUnion(yyDollar[4].tableNamesUnion()) } yyVAL.union = yyLOCAL - case 1377: + case 1378: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:9126 +//line mysql_sql.y:9137 { var Preperties = yyDollar[3].propertiesUnion() yyLOCAL = tree.NewTableOptionProperties(Preperties) } yyVAL.union = yyLOCAL - case 1378: + case 1379: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:9133 +//line mysql_sql.y:9144 { yyLOCAL = []tree.Property{yyDollar[1].propertyUnion()} } yyVAL.union = yyLOCAL - case 1379: + case 1380: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:9137 +//line mysql_sql.y:9148 { yyLOCAL = append(yyDollar[1].propertiesUnion(), yyDollar[3].propertyUnion()) } yyVAL.union = yyLOCAL - case 1380: + case 1381: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Property -//line mysql_sql.y:9143 +//line mysql_sql.y:9154 { var Key = yyDollar[1].str var Value = yyDollar[3].str @@ -22322,96 +22359,96 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1381: + case 1382: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:9154 +//line mysql_sql.y:9165 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 1382: + case 1383: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:9158 +//line mysql_sql.y:9169 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 1383: + case 1384: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9164 +//line mysql_sql.y:9175 { yyLOCAL = tree.ROW_FORMAT_DEFAULT } yyVAL.union = yyLOCAL - case 1384: + case 1385: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9168 +//line mysql_sql.y:9179 { yyLOCAL = tree.ROW_FORMAT_DYNAMIC } yyVAL.union = yyLOCAL - case 1385: + case 1386: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9172 +//line mysql_sql.y:9183 { yyLOCAL = tree.ROW_FORMAT_FIXED } yyVAL.union = yyLOCAL - case 1386: + case 1387: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9176 +//line mysql_sql.y:9187 { yyLOCAL = tree.ROW_FORMAT_COMPRESSED } yyVAL.union = yyLOCAL - case 1387: + case 1388: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9180 +//line mysql_sql.y:9191 { yyLOCAL = tree.ROW_FORMAT_REDUNDANT } yyVAL.union = yyLOCAL - case 1388: + case 1389: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:9184 +//line mysql_sql.y:9195 { yyLOCAL = tree.ROW_FORMAT_COMPACT } yyVAL.union = yyLOCAL - case 1393: + case 1394: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:9198 +//line mysql_sql.y:9209 { yyLOCAL = tree.TableNames{yyDollar[1].tableNameUnion()} } yyVAL.union = yyLOCAL - case 1394: + case 1395: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:9202 +//line mysql_sql.y:9213 { yyLOCAL = append(yyDollar[1].tableNamesUnion(), yyDollar[3].tableNameUnion()) } yyVAL.union = yyLOCAL - case 1395: + case 1396: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:9211 +//line mysql_sql.y:9222 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, yyDollar[2].atTimeStampUnion()) } yyVAL.union = yyLOCAL - case 1396: + case 1397: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:9217 +//line mysql_sql.y:9228 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -22419,18 +22456,18 @@ yydefault: yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, yyDollar[4].atTimeStampUnion()) } yyVAL.union = yyLOCAL - case 1397: + case 1398: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9225 +//line mysql_sql.y:9236 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1398: + case 1399: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9229 +//line mysql_sql.y:9240 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATTIMESTAMPTIME, @@ -22438,10 +22475,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1399: + case 1400: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9236 +//line mysql_sql.y:9247 { var str = yyDollar[4].cstrUnion().Compare() yyLOCAL = &tree.AtTimeStamp{ @@ -22451,10 +22488,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1400: + case 1401: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9245 +//line mysql_sql.y:9256 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATTIMESTAMPSNAPSHOT, @@ -22463,10 +22500,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1401: + case 1402: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9253 +//line mysql_sql.y:9264 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATMOTIMESTAMP, @@ -22474,10 +22511,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1402: + case 1403: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9260 +//line mysql_sql.y:9271 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ASOFTIMESTAMP, @@ -22485,74 +22522,74 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1403: + case 1404: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9268 +//line mysql_sql.y:9279 { yyLOCAL = tree.TableDefs(nil) } yyVAL.union = yyLOCAL - case 1405: + case 1406: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9275 +//line mysql_sql.y:9286 { yyLOCAL = tree.TableDefs{yyDollar[1].tableDefUnion()} } yyVAL.union = yyLOCAL - case 1406: + case 1407: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9279 +//line mysql_sql.y:9290 { yyLOCAL = append(yyDollar[1].tableDefsUnion(), yyDollar[3].tableDefUnion()) } yyVAL.union = yyLOCAL - case 1407: + case 1408: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9285 +//line mysql_sql.y:9296 { yyLOCAL = tree.TableDef(yyDollar[1].columnTableDefUnion()) } yyVAL.union = yyLOCAL - case 1408: + case 1409: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9289 +//line mysql_sql.y:9300 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1409: + case 1410: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9293 +//line mysql_sql.y:9304 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1410: + case 1411: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9299 +//line mysql_sql.y:9310 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1411: + case 1412: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9303 +//line mysql_sql.y:9314 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1412: + case 1413: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9309 +//line mysql_sql.y:9320 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].str @@ -22566,10 +22603,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1413: + case 1414: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9322 +//line mysql_sql.y:9333 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].str @@ -22583,10 +22620,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1414: + case 1415: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9335 +//line mysql_sql.y:9346 { keyTyp := tree.INDEX_TYPE_INVALID if yyDollar[3].strsUnion()[1] != "" { @@ -22628,10 +22665,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1415: + case 1416: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9376 +//line mysql_sql.y:9387 { keyTyp := tree.INDEX_TYPE_INVALID if yyDollar[3].strsUnion()[1] != "" { @@ -22672,10 +22709,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1416: + case 1417: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9418 +//line mysql_sql.y:9429 { if yyDollar[1].str != "" { switch v := yyDollar[2].tableDefUnion().(type) { @@ -22690,18 +22727,18 @@ yydefault: yyLOCAL = yyDollar[2].tableDefUnion() } yyVAL.union = yyLOCAL - case 1417: + case 1418: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9432 +//line mysql_sql.y:9443 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1418: + case 1419: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9438 +//line mysql_sql.y:9449 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22715,10 +22752,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1419: + case 1420: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9451 +//line mysql_sql.y:9462 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22732,10 +22769,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1420: + case 1421: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9464 +//line mysql_sql.y:9475 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22749,10 +22786,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1421: + case 1422: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9477 +//line mysql_sql.y:9488 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22766,10 +22803,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1422: + case 1423: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9490 +//line mysql_sql.y:9501 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var KeyParts = yyDollar[6].keyPartsUnion() @@ -22785,10 +22822,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1423: + case 1424: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9505 +//line mysql_sql.y:9516 { var Expr = yyDollar[3].exprUnion() var Enforced = yyDollar[5].boolValUnion() @@ -22798,327 +22835,327 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1424: + case 1425: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9515 +//line mysql_sql.y:9526 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1426: + case 1427: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9521 +//line mysql_sql.y:9532 { yyVAL.str = "" } - case 1427: + case 1428: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9525 +//line mysql_sql.y:9536 { yyVAL.str = yyDollar[1].str } - case 1430: + case 1431: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9535 +//line mysql_sql.y:9546 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = "" } yyVAL.union = yyLOCAL - case 1431: + case 1432: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9541 +//line mysql_sql.y:9552 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 1432: + case 1433: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9547 +//line mysql_sql.y:9558 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].cstrUnion().Compare() yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 1444: + case 1445: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9569 +//line mysql_sql.y:9580 { yyVAL.str = "" } - case 1445: + case 1446: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9573 +//line mysql_sql.y:9584 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1446: + case 1447: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ColumnTableDef -//line mysql_sql.y:9579 +//line mysql_sql.y:9590 { yyLOCAL = tree.NewColumnTableDef(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), yyDollar[3].columnAttributesUnion()) } yyVAL.union = yyLOCAL - case 1447: + case 1448: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9585 +//line mysql_sql.y:9596 { yyLOCAL = tree.NewUnresolvedName(yyDollar[1].cstrUnion()) } yyVAL.union = yyLOCAL - case 1448: + case 1449: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9589 +//line mysql_sql.y:9600 { tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(tblNameCStr, yyDollar[3].cstrUnion()) } yyVAL.union = yyLOCAL - case 1449: + case 1450: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9594 +//line mysql_sql.y:9605 { dbNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(dbNameCStr, tblNameCStr, yyDollar[5].cstrUnion()) } yyVAL.union = yyLOCAL - case 1450: + case 1451: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9602 +//line mysql_sql.y:9613 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1451: + case 1452: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9606 +//line mysql_sql.y:9617 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1452: + case 1453: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9610 +//line mysql_sql.y:9621 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1453: + case 1454: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9614 +//line mysql_sql.y:9625 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1454: + case 1455: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9620 +//line mysql_sql.y:9631 { yyLOCAL = yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) } yyVAL.union = yyLOCAL - case 1455: + case 1456: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9626 +//line mysql_sql.y:9637 { yyLOCAL = tree.NewUnresolvedName(yyDollar[1].cstrUnion()) } yyVAL.union = yyLOCAL - case 1456: + case 1457: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9630 +//line mysql_sql.y:9641 { tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(tblNameCStr, yyDollar[3].cstrUnion()) } yyVAL.union = yyLOCAL - case 1457: + case 1458: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9635 +//line mysql_sql.y:9646 { dbNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(dbNameCStr, tblNameCStr, yyDollar[5].cstrUnion()) } yyVAL.union = yyLOCAL - case 1458: + case 1459: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9642 +//line mysql_sql.y:9653 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1459: + case 1460: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9646 +//line mysql_sql.y:9657 { yyLOCAL = yyDollar[1].columnAttributesUnion() } yyVAL.union = yyLOCAL - case 1460: + case 1461: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9652 +//line mysql_sql.y:9663 { yyLOCAL = []tree.ColumnAttribute{yyDollar[1].columnAttributeUnion()} } yyVAL.union = yyLOCAL - case 1461: + case 1462: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9656 +//line mysql_sql.y:9667 { yyLOCAL = append(yyDollar[1].columnAttributesUnion(), yyDollar[2].columnAttributeUnion()) } yyVAL.union = yyLOCAL - case 1462: + case 1463: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9662 +//line mysql_sql.y:9673 { yyLOCAL = tree.NewAttributeNull(true) } yyVAL.union = yyLOCAL - case 1463: + case 1464: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9666 +//line mysql_sql.y:9677 { yyLOCAL = tree.NewAttributeNull(false) } yyVAL.union = yyLOCAL - case 1464: + case 1465: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9670 +//line mysql_sql.y:9681 { yyLOCAL = tree.NewAttributeDefault(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1465: + case 1466: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9674 +//line mysql_sql.y:9685 { yyLOCAL = tree.NewAttributeAutoIncrement() } yyVAL.union = yyLOCAL - case 1466: + case 1467: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9678 +//line mysql_sql.y:9689 { yyLOCAL = yyDollar[1].columnAttributeUnion() } yyVAL.union = yyLOCAL - case 1467: + case 1468: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9682 +//line mysql_sql.y:9693 { str := util.DealCommentString(yyDollar[2].str) yyLOCAL = tree.NewAttributeComment(tree.NewNumVal(str, str, false, tree.P_char)) } yyVAL.union = yyLOCAL - case 1468: + case 1469: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9687 +//line mysql_sql.y:9698 { yyLOCAL = tree.NewAttributeCollate(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1469: + case 1470: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9691 +//line mysql_sql.y:9702 { yyLOCAL = tree.NewAttributeColumnFormat(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1470: + case 1471: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9695 +//line mysql_sql.y:9706 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1471: + case 1472: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9699 +//line mysql_sql.y:9710 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1472: + case 1473: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9703 +//line mysql_sql.y:9714 { yyLOCAL = tree.NewAttributeStorage(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1473: + case 1474: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9707 +//line mysql_sql.y:9718 { yyLOCAL = tree.NewAttributeAutoRandom(int(yyDollar[2].int64ValUnion())) } yyVAL.union = yyLOCAL - case 1474: + case 1475: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9711 +//line mysql_sql.y:9722 { yyLOCAL = yyDollar[1].attributeReferenceUnion() } yyVAL.union = yyLOCAL - case 1475: + case 1476: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9715 +//line mysql_sql.y:9726 { yyLOCAL = tree.NewAttributeCheckConstraint(yyDollar[4].exprUnion(), false, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1476: + case 1477: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9719 +//line mysql_sql.y:9730 { yyLOCAL = tree.NewAttributeCheckConstraint(yyDollar[4].exprUnion(), yyDollar[6].boolValUnion(), yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1477: + case 1478: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9723 +//line mysql_sql.y:9734 { name := tree.NewUnresolvedColName(yyDollar[3].str) var es tree.Exprs = nil @@ -23133,98 +23170,98 @@ yydefault: yyLOCAL = tree.NewAttributeOnUpdate(expr) } yyVAL.union = yyLOCAL - case 1478: + case 1479: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9737 +//line mysql_sql.y:9748 { yyLOCAL = tree.NewAttributeLowCardinality() } yyVAL.union = yyLOCAL - case 1479: + case 1480: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9741 +//line mysql_sql.y:9752 { yyLOCAL = tree.NewAttributeVisable(true) } yyVAL.union = yyLOCAL - case 1480: + case 1481: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9745 +//line mysql_sql.y:9756 { yyLOCAL = tree.NewAttributeVisable(false) } yyVAL.union = yyLOCAL - case 1481: + case 1482: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9749 +//line mysql_sql.y:9760 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1482: + case 1483: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9753 +//line mysql_sql.y:9764 { yyLOCAL = tree.NewAttributeHeader(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1483: + case 1484: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9757 +//line mysql_sql.y:9768 { yyLOCAL = tree.NewAttributeHeaders() } yyVAL.union = yyLOCAL - case 1484: + case 1485: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9763 +//line mysql_sql.y:9774 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1485: + case 1486: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9767 +//line mysql_sql.y:9778 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1486: + case 1487: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9772 +//line mysql_sql.y:9783 { yyVAL.str = "" } - case 1487: + case 1488: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9776 +//line mysql_sql.y:9787 { yyVAL.str = yyDollar[1].str } - case 1488: + case 1489: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9782 +//line mysql_sql.y:9793 { yyVAL.str = "" } - case 1489: + case 1490: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:9786 +//line mysql_sql.y:9797 { yyVAL.str = yyDollar[2].cstrUnion().Compare() } - case 1490: + case 1491: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AttributeReference -//line mysql_sql.y:9792 +//line mysql_sql.y:9803 { var TableName = yyDollar[2].tableNameUnion() var KeyParts = yyDollar[3].keyPartsUnion() @@ -23240,10 +23277,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1491: + case 1492: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9809 +//line mysql_sql.y:9820 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -23251,10 +23288,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1492: + case 1493: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9816 +//line mysql_sql.y:9827 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -23262,10 +23299,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1493: + case 1494: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9823 +//line mysql_sql.y:9834 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -23273,10 +23310,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1494: + case 1495: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9830 +//line mysql_sql.y:9841 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -23284,10 +23321,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1495: + case 1496: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9837 +//line mysql_sql.y:9848 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[2].referenceOptionTypeUnion(), @@ -23295,354 +23332,354 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1496: + case 1497: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9846 +//line mysql_sql.y:9857 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 1497: + case 1498: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9852 +//line mysql_sql.y:9863 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 1498: + case 1499: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9858 +//line mysql_sql.y:9869 { yyLOCAL = tree.REFERENCE_OPTION_RESTRICT } yyVAL.union = yyLOCAL - case 1499: + case 1500: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9862 +//line mysql_sql.y:9873 { yyLOCAL = tree.REFERENCE_OPTION_CASCADE } yyVAL.union = yyLOCAL - case 1500: + case 1501: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9866 +//line mysql_sql.y:9877 { yyLOCAL = tree.REFERENCE_OPTION_SET_NULL } yyVAL.union = yyLOCAL - case 1501: + case 1502: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9870 +//line mysql_sql.y:9881 { yyLOCAL = tree.REFERENCE_OPTION_NO_ACTION } yyVAL.union = yyLOCAL - case 1502: + case 1503: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9874 +//line mysql_sql.y:9885 { yyLOCAL = tree.REFERENCE_OPTION_SET_DEFAULT } yyVAL.union = yyLOCAL - case 1503: + case 1504: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9879 +//line mysql_sql.y:9890 { yyLOCAL = tree.MATCH_INVALID } yyVAL.union = yyLOCAL - case 1505: + case 1506: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9886 +//line mysql_sql.y:9897 { yyLOCAL = tree.MATCH_FULL } yyVAL.union = yyLOCAL - case 1506: + case 1507: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9890 +//line mysql_sql.y:9901 { yyLOCAL = tree.MATCH_PARTIAL } yyVAL.union = yyLOCAL - case 1507: + case 1508: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9894 +//line mysql_sql.y:9905 { yyLOCAL = tree.MATCH_SIMPLE } yyVAL.union = yyLOCAL - case 1508: + case 1509: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9899 +//line mysql_sql.y:9910 { yyLOCAL = tree.FULLTEXT_DEFAULT } yyVAL.union = yyLOCAL - case 1509: + case 1510: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9903 +//line mysql_sql.y:9914 { yyLOCAL = tree.FULLTEXT_NL } yyVAL.union = yyLOCAL - case 1510: + case 1511: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9907 +//line mysql_sql.y:9918 { yyLOCAL = tree.FULLTEXT_NL_QUERY_EXPANSION } yyVAL.union = yyLOCAL - case 1511: + case 1512: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9911 +//line mysql_sql.y:9922 { yyLOCAL = tree.FULLTEXT_BOOLEAN } yyVAL.union = yyLOCAL - case 1512: + case 1513: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9915 +//line mysql_sql.y:9926 { yyLOCAL = tree.FULLTEXT_QUERY_EXPANSION } yyVAL.union = yyLOCAL - case 1513: + case 1514: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:9920 +//line mysql_sql.y:9931 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1514: + case 1515: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:9924 +//line mysql_sql.y:9935 { yyLOCAL = yyDollar[2].keyPartsUnion() } yyVAL.union = yyLOCAL - case 1515: + case 1516: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9929 +//line mysql_sql.y:9940 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 1516: + case 1517: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9933 +//line mysql_sql.y:9944 { yyLOCAL = yyDollar[2].item.(int64) } yyVAL.union = yyLOCAL - case 1523: + case 1524: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Subquery -//line mysql_sql.y:9949 +//line mysql_sql.y:9960 { yyLOCAL = &tree.Subquery{Select: yyDollar[1].selectStatementUnion(), Exists: false} } yyVAL.union = yyLOCAL - case 1524: + case 1525: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9955 +//line mysql_sql.y:9966 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_AND, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1525: + case 1526: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9959 +//line mysql_sql.y:9970 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_OR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1526: + case 1527: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9963 +//line mysql_sql.y:9974 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_XOR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1527: + case 1528: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9967 +//line mysql_sql.y:9978 { yyLOCAL = tree.NewBinaryExpr(tree.PLUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1528: + case 1529: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9971 +//line mysql_sql.y:9982 { yyLOCAL = tree.NewBinaryExpr(tree.MINUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1529: + case 1530: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9975 +//line mysql_sql.y:9986 { yyLOCAL = tree.NewBinaryExpr(tree.MULTI, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1530: + case 1531: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9979 +//line mysql_sql.y:9990 { yyLOCAL = tree.NewBinaryExpr(tree.DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1531: + case 1532: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9983 +//line mysql_sql.y:9994 { yyLOCAL = tree.NewBinaryExpr(tree.INTEGER_DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1532: + case 1533: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9987 +//line mysql_sql.y:9998 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1533: + case 1534: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9991 +//line mysql_sql.y:10002 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1534: + case 1535: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9995 +//line mysql_sql.y:10006 { yyLOCAL = tree.NewBinaryExpr(tree.LEFT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1535: + case 1536: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9999 +//line mysql_sql.y:10010 { yyLOCAL = tree.NewBinaryExpr(tree.RIGHT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1536: + case 1537: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10003 +//line mysql_sql.y:10014 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1537: + case 1538: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10009 +//line mysql_sql.y:10020 { yyLOCAL = yyDollar[1].unresolvedNameUnion() } yyVAL.union = yyLOCAL - case 1538: + case 1539: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10013 +//line mysql_sql.y:10024 { yyLOCAL = yyDollar[1].varExprUnion() } yyVAL.union = yyLOCAL - case 1539: + case 1540: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10017 +//line mysql_sql.y:10028 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1540: + case 1541: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10021 +//line mysql_sql.y:10032 { yyLOCAL = tree.NewParentExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1541: + case 1542: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10025 +//line mysql_sql.y:10036 { yyLOCAL = tree.NewTuple(append(yyDollar[2].exprsUnion(), yyDollar[4].exprUnion())) } yyVAL.union = yyLOCAL - case 1542: + case 1543: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10029 +//line mysql_sql.y:10040 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_PLUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1543: + case 1544: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10033 +//line mysql_sql.y:10044 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MINUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1544: + case 1545: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10037 +//line mysql_sql.y:10048 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_TILDE, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1545: + case 1546: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10041 +//line mysql_sql.y:10052 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MARK, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1546: + case 1547: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10045 +//line mysql_sql.y:10056 { hint := strings.ToLower(yyDollar[2].cstrUnion().Compare()) switch hint { @@ -23685,35 +23722,35 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1547: + case 1548: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10087 +//line mysql_sql.y:10098 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1548: + case 1549: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10091 +//line mysql_sql.y:10102 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1549: + case 1550: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10095 +//line mysql_sql.y:10106 { yyDollar[2].subqueryUnion().Exists = true yyLOCAL = yyDollar[2].subqueryUnion() } yyVAL.union = yyLOCAL - case 1550: + case 1551: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10100 +//line mysql_sql.y:10111 { yyLOCAL = &tree.CaseExpr{ Expr: yyDollar[2].exprUnion(), @@ -23722,50 +23759,50 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1551: + case 1552: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10108 +//line mysql_sql.y:10119 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1552: + case 1553: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10112 +//line mysql_sql.y:10123 { yyLOCAL = tree.NewSerialExtractExpr(yyDollar[3].exprUnion(), yyDollar[5].exprUnion(), yyDollar[7].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1553: + case 1554: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10116 +//line mysql_sql.y:10127 { yyLOCAL = tree.NewBitCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1554: + case 1555: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10120 +//line mysql_sql.y:10131 { yyLOCAL = tree.NewCastExpr(yyDollar[1].exprUnion(), yyDollar[3].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1555: + case 1556: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10124 +//line mysql_sql.y:10135 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1556: + case 1557: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10128 +//line mysql_sql.y:10139 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal(yyDollar[5].str, yyDollar[5].str, false, tree.P_char) @@ -23776,66 +23813,66 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1557: + case 1558: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10138 +//line mysql_sql.y:10149 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1558: + case 1559: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10142 +//line mysql_sql.y:10153 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1559: + case 1560: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10146 +//line mysql_sql.y:10157 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1560: + case 1561: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10150 +//line mysql_sql.y:10161 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1561: + case 1562: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10154 +//line mysql_sql.y:10165 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1562: + case 1563: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10158 +//line mysql_sql.y:10169 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1563: + case 1564: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10162 +//line mysql_sql.y:10173 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1564: + case 1565: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10166 +//line mysql_sql.y:10177 { val, err := tree.NewFullTextMatchFuncExpression(yyDollar[3].keyPartsUnion(), yyDollar[7].str, yyDollar[8].fullTextSearchTypeUnion()) if err != nil { @@ -23845,16 +23882,16 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1565: + case 1566: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10177 +//line mysql_sql.y:10188 { yyVAL.str = yyDollar[1].str } - case 1566: + case 1567: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10183 +//line mysql_sql.y:10194 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23864,10 +23901,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1567: + case 1568: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10192 +//line mysql_sql.y:10203 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23877,10 +23914,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1568: + case 1569: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10201 +//line mysql_sql.y:10212 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23890,10 +23927,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1569: + case 1570: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10212 +//line mysql_sql.y:10223 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, true, nil, "block") @@ -23904,10 +23941,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1570: + case 1571: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10222 +//line mysql_sql.y:10233 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, true, nil, yyDollar[8].str) @@ -23918,10 +23955,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1571: + case 1572: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10232 +//line mysql_sql.y:10243 { val, err := tree.NewSamplePercentFuncExpression1(yyDollar[5].item.(int64), true, nil) if err != nil { @@ -23931,10 +23968,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1572: + case 1573: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10241 +//line mysql_sql.y:10252 { val, err := tree.NewSamplePercentFuncExpression2(yyDollar[5].item.(float64), true, nil) if err != nil { @@ -23944,10 +23981,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1573: + case 1574: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10251 +//line mysql_sql.y:10262 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, false, yyDollar[3].exprsUnion(), "block") @@ -23958,10 +23995,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1574: + case 1575: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10261 +//line mysql_sql.y:10272 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, false, yyDollar[3].exprsUnion(), yyDollar[8].str) @@ -23972,10 +24009,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1575: + case 1576: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10271 +//line mysql_sql.y:10282 { val, err := tree.NewSamplePercentFuncExpression1(yyDollar[5].item.(int64), false, yyDollar[3].exprsUnion()) if err != nil { @@ -23985,10 +24022,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1576: + case 1577: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10280 +//line mysql_sql.y:10291 { val, err := tree.NewSamplePercentFuncExpression2(yyDollar[5].item.(float64), false, yyDollar[3].exprsUnion()) if err != nil { @@ -23998,58 +24035,58 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1577: + case 1578: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10290 +//line mysql_sql.y:10301 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1578: + case 1579: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10294 +//line mysql_sql.y:10305 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1579: + case 1580: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10299 +//line mysql_sql.y:10310 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1580: + case 1581: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10303 +//line mysql_sql.y:10314 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1581: + case 1582: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:10309 +//line mysql_sql.y:10320 { yyLOCAL = []*tree.When{yyDollar[1].whenClauseUnion()} } yyVAL.union = yyLOCAL - case 1582: + case 1583: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:10313 +//line mysql_sql.y:10324 { yyLOCAL = append(yyDollar[1].whenClauseListUnion(), yyDollar[2].whenClauseUnion()) } yyVAL.union = yyLOCAL - case 1583: + case 1584: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.When -//line mysql_sql.y:10319 +//line mysql_sql.y:10330 { yyLOCAL = &tree.When{ Cond: yyDollar[2].exprUnion(), @@ -24057,9 +24094,9 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1584: + case 1585: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10328 +//line mysql_sql.y:10339 { t := yyVAL.columnTypeUnion() str := strings.ToLower(t.InternalType.FamilyString) @@ -24072,10 +24109,10 @@ yydefault: } } } - case 1585: + case 1586: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10340 +//line mysql_sql.y:10351 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -24093,10 +24130,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1586: + case 1587: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10357 +//line mysql_sql.y:10368 { locale := "" yyLOCAL = &tree.T{ @@ -24111,10 +24148,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1588: + case 1589: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10374 +//line mysql_sql.y:10385 { locale := "" yyLOCAL = &tree.T{ @@ -24128,10 +24165,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1589: + case 1590: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10387 +//line mysql_sql.y:10398 { locale := "" yyLOCAL = &tree.T{ @@ -24145,10 +24182,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1590: + case 1591: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10400 +//line mysql_sql.y:10411 { locale := "" yyLOCAL = &tree.T{ @@ -24161,10 +24198,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1591: + case 1592: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10412 +//line mysql_sql.y:10423 { locale := "" yyLOCAL = &tree.T{ @@ -24179,10 +24216,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1592: + case 1593: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10426 +//line mysql_sql.y:10437 { locale := "" yyLOCAL = &tree.T{ @@ -24198,10 +24235,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1593: + case 1594: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10441 +//line mysql_sql.y:10452 { locale := "" yyLOCAL = &tree.T{ @@ -24217,10 +24254,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1594: + case 1595: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10456 +//line mysql_sql.y:10467 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -24238,10 +24275,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1595: + case 1596: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10473 +//line mysql_sql.y:10484 { locale := "" yyLOCAL = &tree.T{ @@ -24256,95 +24293,95 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1596: + case 1597: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10489 +//line mysql_sql.y:10500 { } - case 1600: + case 1601: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10496 +//line mysql_sql.y:10507 { yyLOCAL = &tree.FrameBound{Type: tree.Following, UnBounded: true} } yyVAL.union = yyLOCAL - case 1601: + case 1602: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10500 +//line mysql_sql.y:10511 { yyLOCAL = &tree.FrameBound{Type: tree.Following, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1602: + case 1603: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10504 +//line mysql_sql.y:10515 { yyLOCAL = &tree.FrameBound{Type: tree.Following, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1603: + case 1604: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10510 +//line mysql_sql.y:10521 { yyLOCAL = &tree.FrameBound{Type: tree.CurrentRow} } yyVAL.union = yyLOCAL - case 1604: + case 1605: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10514 +//line mysql_sql.y:10525 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, UnBounded: true} } yyVAL.union = yyLOCAL - case 1605: + case 1606: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10518 +//line mysql_sql.y:10529 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1606: + case 1607: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10522 +//line mysql_sql.y:10533 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1607: + case 1608: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10528 +//line mysql_sql.y:10539 { yyLOCAL = tree.Rows } yyVAL.union = yyLOCAL - case 1608: + case 1609: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10532 +//line mysql_sql.y:10543 { yyLOCAL = tree.Range } yyVAL.union = yyLOCAL - case 1609: + case 1610: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10536 +//line mysql_sql.y:10547 { yyLOCAL = tree.Groups } yyVAL.union = yyLOCAL - case 1610: + case 1611: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10542 +//line mysql_sql.y:10553 { yyLOCAL = &tree.FrameClause{ Type: yyDollar[1].frameTypeUnion(), @@ -24353,10 +24390,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1611: + case 1612: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10550 +//line mysql_sql.y:10561 { yyLOCAL = &tree.FrameClause{ Type: yyDollar[1].frameTypeUnion(), @@ -24366,82 +24403,82 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1612: + case 1613: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10560 +//line mysql_sql.y:10571 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1613: + case 1614: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10564 +//line mysql_sql.y:10575 { yyLOCAL = yyDollar[1].frameClauseUnion() } yyVAL.union = yyLOCAL - case 1614: + case 1615: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10570 +//line mysql_sql.y:10581 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1615: + case 1616: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10575 +//line mysql_sql.y:10586 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1616: + case 1617: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10579 +//line mysql_sql.y:10590 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1617: + case 1618: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10584 +//line mysql_sql.y:10595 { yyVAL.str = "," } - case 1618: + case 1619: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:10588 +//line mysql_sql.y:10599 { yyVAL.str = yyDollar[2].str } - case 1619: + case 1620: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10593 +//line mysql_sql.y:10604 { yyVAL.str = "1,vector_l2_ops,random,false" } - case 1620: + case 1621: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:10597 +//line mysql_sql.y:10608 { yyVAL.str = yyDollar[2].str } - case 1621: + case 1622: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.WindowSpec -//line mysql_sql.y:10602 +//line mysql_sql.y:10613 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1623: + case 1624: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.WindowSpec -//line mysql_sql.y:10609 +//line mysql_sql.y:10620 { hasFrame := true var f *tree.FrameClause @@ -24466,10 +24503,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1624: + case 1625: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10635 +//line mysql_sql.y:10646 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24482,10 +24519,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1625: + case 1626: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10647 +//line mysql_sql.y:10658 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24498,10 +24535,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1626: + case 1627: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10659 +//line mysql_sql.y:10670 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24513,10 +24550,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1627: + case 1628: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10670 +//line mysql_sql.y:10681 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24528,10 +24565,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1628: + case 1629: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10681 +//line mysql_sql.y:10692 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal("*", "*", false, tree.P_char) @@ -24543,10 +24580,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1629: + case 1630: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10692 +//line mysql_sql.y:10703 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24557,10 +24594,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1630: + case 1631: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10702 +//line mysql_sql.y:10713 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24571,21 +24608,6 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1631: - yyDollar = yyS[yypt-6 : yypt+1] - var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10712 - { - name := tree.NewUnresolvedColName(yyDollar[1].str) - yyLOCAL = &tree.FuncExpr{ - Func: tree.FuncName2ResolvableFunctionReference(name), - FuncName: tree.NewCStr(yyDollar[1].str, 1), - Exprs: tree.Exprs{yyDollar[4].exprUnion()}, - Type: yyDollar[3].funcTypeUnion(), - WindowSpec: yyDollar[6].windowSpecUnion(), - } - } - yyVAL.union = yyLOCAL case 1632: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr @@ -24625,39 +24647,39 @@ yydefault: yyLOCAL = &tree.FuncExpr{ Func: tree.FuncName2ResolvableFunctionReference(name), FuncName: tree.NewCStr(yyDollar[1].str, 1), - Exprs: yyDollar[4].exprsUnion(), + Exprs: tree.Exprs{yyDollar[4].exprUnion()}, Type: yyDollar[3].funcTypeUnion(), WindowSpec: yyDollar[6].windowSpecUnion(), } } yyVAL.union = yyLOCAL case 1635: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr //line mysql_sql.y:10756 { name := tree.NewUnresolvedColName(yyDollar[1].str) - es := tree.NewNumVal("*", "*", false, tree.P_char) yyLOCAL = &tree.FuncExpr{ Func: tree.FuncName2ResolvableFunctionReference(name), FuncName: tree.NewCStr(yyDollar[1].str, 1), - Exprs: tree.Exprs{es}, - WindowSpec: yyDollar[5].windowSpecUnion(), + Exprs: yyDollar[4].exprsUnion(), + Type: yyDollar[3].funcTypeUnion(), + WindowSpec: yyDollar[6].windowSpecUnion(), } } yyVAL.union = yyLOCAL case 1636: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr //line mysql_sql.y:10767 { name := tree.NewUnresolvedColName(yyDollar[1].str) + es := tree.NewNumVal("*", "*", false, tree.P_char) yyLOCAL = &tree.FuncExpr{ Func: tree.FuncName2ResolvableFunctionReference(name), FuncName: tree.NewCStr(yyDollar[1].str, 1), - Exprs: tree.Exprs{yyDollar[4].exprUnion()}, - Type: yyDollar[3].funcTypeUnion(), - WindowSpec: yyDollar[6].windowSpecUnion(), + Exprs: tree.Exprs{es}, + WindowSpec: yyDollar[5].windowSpecUnion(), } } yyVAL.union = yyLOCAL @@ -24800,6 +24822,21 @@ yydefault: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr //line mysql_sql.y:10877 + { + name := tree.NewUnresolvedColName(yyDollar[1].str) + yyLOCAL = &tree.FuncExpr{ + Func: tree.FuncName2ResolvableFunctionReference(name), + FuncName: tree.NewCStr(yyDollar[1].str, 1), + Exprs: tree.Exprs{yyDollar[4].exprUnion()}, + Type: yyDollar[3].funcTypeUnion(), + WindowSpec: yyDollar[6].windowSpecUnion(), + } + } + yyVAL.union = yyLOCAL + case 1647: + yyDollar = yyS[yypt-6 : yypt+1] + var yyLOCAL *tree.FuncExpr +//line mysql_sql.y:10888 { name := tree.NewUnresolvedColName(yyDollar[1].str) var columnList tree.Exprs @@ -24817,10 +24854,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1650: + case 1651: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10901 +//line mysql_sql.y:10912 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24830,10 +24867,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1651: + case 1652: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10910 +//line mysql_sql.y:10921 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24843,10 +24880,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1652: + case 1653: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10919 +//line mysql_sql.y:10930 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24856,10 +24893,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1653: + case 1654: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10928 +//line mysql_sql.y:10939 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24869,10 +24906,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1654: + case 1655: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10937 +//line mysql_sql.y:10948 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -24884,10 +24921,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1655: + case 1656: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10948 +//line mysql_sql.y:10959 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24897,10 +24934,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1656: + case 1657: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10957 +//line mysql_sql.y:10968 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24911,10 +24948,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1657: + case 1658: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10967 +//line mysql_sql.y:10978 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24924,10 +24961,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1658: + case 1659: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10976 +//line mysql_sql.y:10987 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24937,10 +24974,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1659: + case 1660: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10985 +//line mysql_sql.y:10996 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24950,10 +24987,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1660: + case 1661: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10994 +//line mysql_sql.y:11005 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24963,10 +25000,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1661: + case 1662: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11003 +//line mysql_sql.y:11014 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(0), "0", false, tree.P_int64) @@ -24979,10 +25016,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1662: + case 1663: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11015 +//line mysql_sql.y:11026 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(1), "1", false, tree.P_int64) @@ -24994,10 +25031,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1663: + case 1664: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11026 +//line mysql_sql.y:11037 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(2), "2", false, tree.P_int64) @@ -25011,10 +25048,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1664: + case 1665: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11039 +//line mysql_sql.y:11050 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(3), "3", false, tree.P_int64) @@ -25027,10 +25064,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1665: + case 1666: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11051 +//line mysql_sql.y:11062 { column := tree.NewUnresolvedColName(yyDollar[3].str) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -25041,16 +25078,16 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1672: + case 1673: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:11073 +//line mysql_sql.y:11084 { yyVAL.str = yyDollar[1].str } - case 1701: + case 1702: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11109 +//line mysql_sql.y:11120 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -25064,10 +25101,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1702: + case 1703: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11122 +//line mysql_sql.y:11133 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -25081,10 +25118,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1703: + case 1704: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11135 +//line mysql_sql.y:11146 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -25096,10 +25133,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1704: + case 1705: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11146 +//line mysql_sql.y:11157 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -25111,10 +25148,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1705: + case 1706: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11158 +//line mysql_sql.y:11169 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25124,10 +25161,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1706: + case 1707: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11167 +//line mysql_sql.y:11178 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25136,10 +25173,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1707: + case 1708: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11175 +//line mysql_sql.y:11186 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25148,10 +25185,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1708: + case 1709: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11183 +//line mysql_sql.y:11194 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -25165,10 +25202,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1709: + case 1710: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11196 +//line mysql_sql.y:11207 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25178,10 +25215,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1710: + case 1711: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11205 +//line mysql_sql.y:11216 { name := tree.NewUnresolvedColName(yyDollar[1].str) exprs := make([]tree.Expr, 1) @@ -25193,10 +25230,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1711: + case 1712: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11216 +//line mysql_sql.y:11227 { name := tree.NewUnresolvedColName(yyDollar[1].str) exprs := make([]tree.Expr, 1) @@ -25208,10 +25245,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1712: + case 1713: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11227 +//line mysql_sql.y:11238 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25221,10 +25258,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1713: + case 1714: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11236 +//line mysql_sql.y:11247 { cn := tree.NewNumVal(yyDollar[5].str, yyDollar[5].str, false, tree.P_char) es := yyDollar[3].exprsUnion() @@ -25237,10 +25274,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1714: + case 1715: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11248 +//line mysql_sql.y:11259 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -25251,10 +25288,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1715: + case 1716: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11258 +//line mysql_sql.y:11269 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -25265,10 +25302,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1716: + case 1717: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11268 +//line mysql_sql.y:11279 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25278,10 +25315,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1717: + case 1718: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11277 +//line mysql_sql.y:11288 { es := tree.Exprs{yyDollar[3].exprUnion()} es = append(es, yyDollar[5].exprUnion()) @@ -25293,10 +25330,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1718: + case 1719: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11288 +//line mysql_sql.y:11299 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25306,10 +25343,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1719: + case 1720: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11297 +//line mysql_sql.y:11308 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -25320,10 +25357,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1720: + case 1721: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11307 +//line mysql_sql.y:11318 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25333,10 +25370,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1721: + case 1722: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11316 +//line mysql_sql.y:11327 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25346,10 +25383,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1722: + case 1723: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11325 +//line mysql_sql.y:11336 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -25359,34 +25396,34 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1723: + case 1724: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11335 +//line mysql_sql.y:11346 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1724: + case 1725: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11339 +//line mysql_sql.y:11350 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1725: + case 1726: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11345 +//line mysql_sql.y:11356 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1726: + case 1727: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11349 +//line mysql_sql.y:11360 { ival, errStr := util.GetInt64(yyDollar[2].item) if errStr != "" { @@ -25397,20 +25434,20 @@ yydefault: yyLOCAL = tree.NewNumVal(ival, str, false, tree.P_int64) } yyVAL.union = yyLOCAL - case 1733: + case 1734: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:11368 +//line mysql_sql.y:11379 { } - case 1734: + case 1735: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:11370 +//line mysql_sql.y:11381 { } - case 1769: + case 1770: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11412 +//line mysql_sql.y:11423 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -25422,106 +25459,106 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1770: + case 1771: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11424 +//line mysql_sql.y:11435 { yyLOCAL = tree.FUNC_TYPE_DEFAULT } yyVAL.union = yyLOCAL - case 1771: + case 1772: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11428 +//line mysql_sql.y:11439 { yyLOCAL = tree.FUNC_TYPE_DISTINCT } yyVAL.union = yyLOCAL - case 1772: + case 1773: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11432 +//line mysql_sql.y:11443 { yyLOCAL = tree.FUNC_TYPE_ALL } yyVAL.union = yyLOCAL - case 1773: + case 1774: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Tuple -//line mysql_sql.y:11438 +//line mysql_sql.y:11449 { yyLOCAL = tree.NewTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 1774: + case 1775: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11443 +//line mysql_sql.y:11454 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1775: + case 1776: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11447 +//line mysql_sql.y:11458 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1776: + case 1777: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11453 +//line mysql_sql.y:11464 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1777: + case 1778: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11457 +//line mysql_sql.y:11468 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1778: + case 1779: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11463 +//line mysql_sql.y:11474 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1779: + case 1780: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11467 +//line mysql_sql.y:11478 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1780: + case 1781: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11474 +//line mysql_sql.y:11485 { yyLOCAL = tree.NewAndExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1781: + case 1782: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11478 +//line mysql_sql.y:11489 { yyLOCAL = tree.NewOrExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1782: + case 1783: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11482 +//line mysql_sql.y:11493 { name := tree.NewUnresolvedColName("concat") yyLOCAL = &tree.FuncExpr{ @@ -25531,355 +25568,355 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1783: + case 1784: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11491 +//line mysql_sql.y:11502 { yyLOCAL = tree.NewXorExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1784: + case 1785: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11495 +//line mysql_sql.y:11506 { yyLOCAL = tree.NewNotExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1785: + case 1786: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11499 +//line mysql_sql.y:11510 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1786: + case 1787: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11504 +//line mysql_sql.y:11515 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1787: + case 1788: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11508 +//line mysql_sql.y:11519 { yyLOCAL = tree.NewMaxValue() } yyVAL.union = yyLOCAL - case 1788: + case 1789: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11514 +//line mysql_sql.y:11525 { yyLOCAL = tree.NewIsNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1789: + case 1790: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11518 +//line mysql_sql.y:11529 { yyLOCAL = tree.NewIsNotNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1790: + case 1791: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11522 +//line mysql_sql.y:11533 { yyLOCAL = tree.NewIsUnknownExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1791: + case 1792: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11526 +//line mysql_sql.y:11537 { yyLOCAL = tree.NewIsNotUnknownExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1792: + case 1793: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11530 +//line mysql_sql.y:11541 { yyLOCAL = tree.NewIsTrueExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1793: + case 1794: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11534 +//line mysql_sql.y:11545 { yyLOCAL = tree.NewIsNotTrueExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1794: + case 1795: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11538 +//line mysql_sql.y:11549 { yyLOCAL = tree.NewIsFalseExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1795: + case 1796: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11542 +//line mysql_sql.y:11553 { yyLOCAL = tree.NewIsNotFalseExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1796: + case 1797: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11546 +//line mysql_sql.y:11557 { yyLOCAL = tree.NewComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1797: + case 1798: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11550 +//line mysql_sql.y:11561 { yyLOCAL = tree.NewSubqueryComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[3].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[4].subqueryUnion()) yyLOCAL = tree.NewSubqueryComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[3].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[4].subqueryUnion()) } yyVAL.union = yyLOCAL - case 1799: + case 1800: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11558 +//line mysql_sql.y:11569 { yyLOCAL = tree.NewComparisonExpr(tree.IN, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1800: + case 1801: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11562 +//line mysql_sql.y:11573 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_IN, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1801: + case 1802: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11566 +//line mysql_sql.y:11577 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.LIKE, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1802: + case 1803: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11570 +//line mysql_sql.y:11581 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.NOT_LIKE, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1803: + case 1804: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11574 +//line mysql_sql.y:11585 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.ILIKE, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1804: + case 1805: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11578 +//line mysql_sql.y:11589 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.NOT_ILIKE, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1805: + case 1806: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11582 +//line mysql_sql.y:11593 { yyLOCAL = tree.NewComparisonExpr(tree.REG_MATCH, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1806: + case 1807: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11586 +//line mysql_sql.y:11597 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_REG_MATCH, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1807: + case 1808: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11590 +//line mysql_sql.y:11601 { yyLOCAL = tree.NewRangeCond(false, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1808: + case 1809: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11594 +//line mysql_sql.y:11605 { yyLOCAL = tree.NewRangeCond(true, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[6].exprUnion()) } yyVAL.union = yyLOCAL - case 1810: + case 1811: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11600 +//line mysql_sql.y:11611 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1811: + case 1812: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11604 +//line mysql_sql.y:11615 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1812: + case 1813: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11610 +//line mysql_sql.y:11621 { yyLOCAL = yyDollar[1].tupleUnion() } yyVAL.union = yyLOCAL - case 1813: + case 1814: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11614 +//line mysql_sql.y:11625 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1814: + case 1815: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11621 +//line mysql_sql.y:11632 { yyLOCAL = tree.ALL } yyVAL.union = yyLOCAL - case 1815: + case 1816: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11625 +//line mysql_sql.y:11636 { yyLOCAL = tree.ANY } yyVAL.union = yyLOCAL - case 1816: + case 1817: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11629 +//line mysql_sql.y:11640 { yyLOCAL = tree.SOME } yyVAL.union = yyLOCAL - case 1817: + case 1818: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11635 +//line mysql_sql.y:11646 { yyLOCAL = tree.EQUAL } yyVAL.union = yyLOCAL - case 1818: + case 1819: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11639 +//line mysql_sql.y:11650 { yyLOCAL = tree.LESS_THAN } yyVAL.union = yyLOCAL - case 1819: + case 1820: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11643 +//line mysql_sql.y:11654 { yyLOCAL = tree.GREAT_THAN } yyVAL.union = yyLOCAL - case 1820: + case 1821: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11647 +//line mysql_sql.y:11658 { yyLOCAL = tree.LESS_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1821: + case 1822: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11651 +//line mysql_sql.y:11662 { yyLOCAL = tree.GREAT_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1822: + case 1823: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11655 +//line mysql_sql.y:11666 { yyLOCAL = tree.NOT_EQUAL } yyVAL.union = yyLOCAL - case 1823: + case 1824: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11659 +//line mysql_sql.y:11670 { yyLOCAL = tree.NULL_SAFE_EQUAL } yyVAL.union = yyLOCAL - case 1824: + case 1825: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11665 +//line mysql_sql.y:11676 { yyLOCAL = tree.NewAttributePrimaryKey() } yyVAL.union = yyLOCAL - case 1825: + case 1826: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11669 +//line mysql_sql.y:11680 { yyLOCAL = tree.NewAttributeUniqueKey() } yyVAL.union = yyLOCAL - case 1826: + case 1827: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11673 +//line mysql_sql.y:11684 { yyLOCAL = tree.NewAttributeUnique() } yyVAL.union = yyLOCAL - case 1827: + case 1828: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11677 +//line mysql_sql.y:11688 { yyLOCAL = tree.NewAttributeKey() } yyVAL.union = yyLOCAL - case 1828: + case 1829: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11683 +//line mysql_sql.y:11694 { str := fmt.Sprintf("%v", yyDollar[1].item) switch v := yyDollar[1].item.(type) { @@ -25893,35 +25930,35 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1829: + case 1830: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11696 +//line mysql_sql.y:11707 { fval := yyDollar[1].item.(float64) yyLOCAL = tree.NewNumVal(fval, yylex.(*Lexer).scanner.LastToken, false, tree.P_float64) } yyVAL.union = yyLOCAL - case 1830: + case 1831: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11701 +//line mysql_sql.y:11712 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_decimal) } yyVAL.union = yyLOCAL - case 1831: + case 1832: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11707 +//line mysql_sql.y:11718 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1832: + case 1833: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11711 +//line mysql_sql.y:11722 { str := fmt.Sprintf("%v", yyDollar[1].item) switch v := yyDollar[1].item.(type) { @@ -25935,51 +25972,51 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1833: + case 1834: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11724 +//line mysql_sql.y:11735 { fval := yyDollar[1].item.(float64) yyLOCAL = tree.NewNumVal(fval, yylex.(*Lexer).scanner.LastToken, false, tree.P_float64) } yyVAL.union = yyLOCAL - case 1834: + case 1835: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11729 +//line mysql_sql.y:11740 { yyLOCAL = tree.NewNumVal(true, "true", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1835: + case 1836: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11733 +//line mysql_sql.y:11744 { yyLOCAL = tree.NewNumVal(false, "false", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1836: + case 1837: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11737 +//line mysql_sql.y:11748 { yyLOCAL = tree.NewNumVal("null", "null", false, tree.P_null) } yyVAL.union = yyLOCAL - case 1837: + case 1838: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11741 +//line mysql_sql.y:11752 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_hexnum) } yyVAL.union = yyLOCAL - case 1838: + case 1839: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11745 +//line mysql_sql.y:11756 { if strings.HasPrefix(yyDollar[2].str, "0x") { yyDollar[2].str = yyDollar[2].str[2:] @@ -25987,69 +26024,69 @@ yydefault: yyLOCAL = tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_bit) } yyVAL.union = yyLOCAL - case 1839: + case 1840: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11752 +//line mysql_sql.y:11763 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_decimal) } yyVAL.union = yyLOCAL - case 1840: + case 1841: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11756 +//line mysql_sql.y:11767 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_bit) } yyVAL.union = yyLOCAL - case 1841: + case 1842: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11760 +//line mysql_sql.y:11771 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1842: + case 1843: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11764 +//line mysql_sql.y:11775 { yyLOCAL = tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_ScoreBinary) } yyVAL.union = yyLOCAL - case 1843: + case 1844: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11770 +//line mysql_sql.y:11781 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.Unsigned = yyDollar[2].unsignedOptUnion() yyLOCAL.InternalType.Zerofill = yyDollar[3].zeroFillOptUnion() } yyVAL.union = yyLOCAL - case 1847: + case 1848: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11781 +//line mysql_sql.y:11792 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.DisplayWith = yyDollar[2].lengthOptUnion() } yyVAL.union = yyLOCAL - case 1848: + case 1849: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11786 +//line mysql_sql.y:11797 { yyLOCAL = yyDollar[1].columnTypeUnion() } yyVAL.union = yyLOCAL - case 1849: + case 1850: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11792 +//line mysql_sql.y:11803 { locale := "" yyLOCAL = &tree.T{ @@ -26062,10 +26099,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1850: + case 1851: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11804 +//line mysql_sql.y:11815 { locale := "" yyLOCAL = &tree.T{ @@ -26078,10 +26115,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1851: + case 1852: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11816 +//line mysql_sql.y:11827 { locale := "" yyLOCAL = &tree.T{ @@ -26094,10 +26131,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1852: + case 1853: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11828 +//line mysql_sql.y:11839 { locale := "" yyLOCAL = &tree.T{ @@ -26111,10 +26148,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1853: + case 1854: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11841 +//line mysql_sql.y:11852 { locale := "" yyLOCAL = &tree.T{ @@ -26128,10 +26165,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1854: + case 1855: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11854 +//line mysql_sql.y:11865 { locale := "" yyLOCAL = &tree.T{ @@ -26145,10 +26182,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1855: + case 1856: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11867 +//line mysql_sql.y:11878 { locale := "" yyLOCAL = &tree.T{ @@ -26162,10 +26199,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1856: + case 1857: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11880 +//line mysql_sql.y:11891 { locale := "" yyLOCAL = &tree.T{ @@ -26179,10 +26216,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1857: + case 1858: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11893 +//line mysql_sql.y:11904 { locale := "" yyLOCAL = &tree.T{ @@ -26196,10 +26233,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1858: + case 1859: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11906 +//line mysql_sql.y:11917 { locale := "" yyLOCAL = &tree.T{ @@ -26213,10 +26250,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1859: + case 1860: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11919 +//line mysql_sql.y:11930 { locale := "" yyLOCAL = &tree.T{ @@ -26230,10 +26267,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1860: + case 1861: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11932 +//line mysql_sql.y:11943 { locale := "" yyLOCAL = &tree.T{ @@ -26247,10 +26284,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1861: + case 1862: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11945 +//line mysql_sql.y:11956 { locale := "" yyLOCAL = &tree.T{ @@ -26264,10 +26301,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1862: + case 1863: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11958 +//line mysql_sql.y:11969 { locale := "" yyLOCAL = &tree.T{ @@ -26281,10 +26318,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1863: + case 1864: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11973 +//line mysql_sql.y:11984 { locale := "" if yyDollar[2].lengthScaleOptUnion().DisplayWith > 255 { @@ -26312,10 +26349,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1864: + case 1865: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12000 +//line mysql_sql.y:12011 { locale := "" if yyDollar[2].lengthScaleOptUnion().DisplayWith > 255 { @@ -26357,10 +26394,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1865: + case 1866: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12042 +//line mysql_sql.y:12053 { locale := "" if yyDollar[2].lengthScaleOptUnion().Scale != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Scale > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -26397,10 +26434,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1866: + case 1867: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12078 +//line mysql_sql.y:12089 { locale := "" if yyDollar[2].lengthScaleOptUnion().Scale != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Scale > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -26437,10 +26474,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1867: + case 1868: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12114 +//line mysql_sql.y:12125 { locale := "" yyLOCAL = &tree.T{ @@ -26456,10 +26493,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1868: + case 1869: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12131 +//line mysql_sql.y:12142 { locale := "" yyLOCAL = &tree.T{ @@ -26472,10 +26509,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1869: + case 1870: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12143 +//line mysql_sql.y:12154 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -26496,10 +26533,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1870: + case 1871: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12163 +//line mysql_sql.y:12174 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -26520,10 +26557,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1871: + case 1872: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12183 +//line mysql_sql.y:12194 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -26544,10 +26581,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1872: + case 1873: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12203 +//line mysql_sql.y:12214 { locale := "" yyLOCAL = &tree.T{ @@ -26562,10 +26599,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1873: + case 1874: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12219 +//line mysql_sql.y:12230 { locale := "" yyLOCAL = &tree.T{ @@ -26579,10 +26616,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1874: + case 1875: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12232 +//line mysql_sql.y:12243 { locale := "" yyLOCAL = &tree.T{ @@ -26596,10 +26633,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1875: + case 1876: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12245 +//line mysql_sql.y:12256 { locale := "" yyLOCAL = &tree.T{ @@ -26613,10 +26650,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1876: + case 1877: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12258 +//line mysql_sql.y:12269 { locale := "" yyLOCAL = &tree.T{ @@ -26630,10 +26667,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1877: + case 1878: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12271 +//line mysql_sql.y:12282 { locale := "" yyLOCAL = &tree.T{ @@ -26646,10 +26683,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1878: + case 1879: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12283 +//line mysql_sql.y:12294 { locale := "" yyLOCAL = &tree.T{ @@ -26662,10 +26699,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1879: + case 1880: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12295 +//line mysql_sql.y:12306 { locale := "" yyLOCAL = &tree.T{ @@ -26678,10 +26715,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1880: + case 1881: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12307 +//line mysql_sql.y:12318 { locale := "" yyLOCAL = &tree.T{ @@ -26694,10 +26731,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1881: + case 1882: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12319 +//line mysql_sql.y:12330 { locale := "" yyLOCAL = &tree.T{ @@ -26710,10 +26747,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1882: + case 1883: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12331 +//line mysql_sql.y:12342 { locale := "" yyLOCAL = &tree.T{ @@ -26726,10 +26763,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1883: + case 1884: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12343 +//line mysql_sql.y:12354 { locale := "" yyLOCAL = &tree.T{ @@ -26742,10 +26779,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1884: + case 1885: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12355 +//line mysql_sql.y:12366 { locale := "" yyLOCAL = &tree.T{ @@ -26758,10 +26795,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1885: + case 1886: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12367 +//line mysql_sql.y:12378 { locale := "" yyLOCAL = &tree.T{ @@ -26774,10 +26811,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1886: + case 1887: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12379 +//line mysql_sql.y:12390 { locale := "" yyLOCAL = &tree.T{ @@ -26790,10 +26827,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1887: + case 1888: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12391 +//line mysql_sql.y:12402 { locale := "" yyLOCAL = &tree.T{ @@ -26807,10 +26844,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1888: + case 1889: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12404 +//line mysql_sql.y:12415 { locale := "" yyLOCAL = &tree.T{ @@ -26824,10 +26861,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1889: + case 1890: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12417 +//line mysql_sql.y:12428 { locale := "" yyLOCAL = &tree.T{ @@ -26841,10 +26878,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1890: + case 1891: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12430 +//line mysql_sql.y:12441 { locale := "" yyLOCAL = &tree.T{ @@ -26858,10 +26895,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1891: + case 1892: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12443 +//line mysql_sql.y:12454 { locale := "" yyLOCAL = &tree.T{ @@ -26875,20 +26912,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1892: + case 1893: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12458 +//line mysql_sql.y:12469 { yyLOCAL = &tree.Do{ Exprs: yyDollar[2].exprsUnion(), } } yyVAL.union = yyLOCAL - case 1893: + case 1894: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12466 +//line mysql_sql.y:12477 { yyLOCAL = &tree.Declare{ Variables: yyDollar[2].strsUnion(), @@ -26897,10 +26934,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1894: + case 1895: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12475 +//line mysql_sql.y:12486 { yyLOCAL = &tree.Declare{ Variables: yyDollar[2].strsUnion(), @@ -26909,10 +26946,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1895: + case 1896: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12485 +//line mysql_sql.y:12496 { locale := "" yyLOCAL = &tree.T{ @@ -26925,75 +26962,75 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1896: + case 1897: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:12508 +//line mysql_sql.y:12519 { yyLOCAL = make([]string, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1897: + case 1898: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:12513 +//line mysql_sql.y:12524 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1898: + case 1899: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12519 +//line mysql_sql.y:12530 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1900: + case 1901: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12526 +//line mysql_sql.y:12537 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1901: + case 1902: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12530 +//line mysql_sql.y:12541 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1902: + case 1903: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12535 +//line mysql_sql.y:12546 { yyLOCAL = int32(-1) } yyVAL.union = yyLOCAL - case 1903: + case 1904: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12539 +//line mysql_sql.y:12550 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1904: + case 1905: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12545 +//line mysql_sql.y:12556 { yyLOCAL = tree.GetDisplayWith(int32(yyDollar[2].item.(int64))) } yyVAL.union = yyLOCAL - case 1905: + case 1906: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12551 +//line mysql_sql.y:12562 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.NotDefineDisplayWidth, @@ -27001,10 +27038,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1906: + case 1907: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12558 +//line mysql_sql.y:12569 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -27012,10 +27049,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1907: + case 1908: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12565 +//line mysql_sql.y:12576 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -27023,10 +27060,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1908: + case 1909: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12574 +//line mysql_sql.y:12585 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: 38, // this is the default precision for decimal @@ -27034,10 +27071,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1909: + case 1910: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12581 +//line mysql_sql.y:12592 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -27045,10 +27082,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1910: + case 1911: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12588 +//line mysql_sql.y:12599 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -27056,52 +27093,52 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1911: + case 1912: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12597 +//line mysql_sql.y:12608 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1912: + case 1913: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12601 +//line mysql_sql.y:12612 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1913: + case 1914: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12605 +//line mysql_sql.y:12616 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1914: + case 1915: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:12611 +//line mysql_sql.y:12622 { } - case 1915: + case 1916: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12613 +//line mysql_sql.y:12624 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1919: + case 1920: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:12623 +//line mysql_sql.y:12634 { yyVAL.str = "" } - case 1920: + case 1921: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:12627 +//line mysql_sql.y:12638 { yyVAL.str = string(yyDollar[1].str) } diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql.y b/pkg/sql/parsers/dialect/mysql/mysql_sql.y index 76afb98bc5ea9..aff671ca0e545 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.y +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.y @@ -375,7 +375,7 @@ import ( // Secondary Index %token PARSER VISIBLE INVISIBLE BTREE HASH RTREE BSI IVFFLAT MASTER HNSW -%token ZONEMAP LEADING BOTH TRAILING UNKNOWN LISTS OP_TYPE REINDEX EF_SEARCH EF_CONSTRUCTION M ASYNC +%token ZONEMAP LEADING BOTH TRAILING UNKNOWN LISTS OP_TYPE REINDEX EF_SEARCH EF_CONSTRUCTION M ASYNC FORCE_SYNC // Alter %token EXPIRE ACCOUNT ACCOUNTS UNLOCK DAY NEVER PUMP MYSQL_COMPATIBILITY_MODE UNIQUE_CHECK_ON_AUTOINCR @@ -3857,23 +3857,27 @@ alter_table_alter: var visibility = $3 $$ = tree.NewAlterOptionAlterIndex(indexName, visibility) } -| REINDEX ident IVFFLAT LISTS equal_opt INTEGRAL +| REINDEX ident IVFFLAT index_option_list { - val := int64($6.(int64)) - if val <= 0 { - yylex.Error("LISTS should be greater than 0") - return 1 - } - var keyType = tree.INDEX_TYPE_IVFFLAT - var algoParamList = val + var io *tree.IndexOption = nil + if $4 == nil { + io = tree.NewIndexOption() + io.IType = tree.INDEX_TYPE_IVFFLAT + } else { + io = $4 + io.IType = tree.INDEX_TYPE_IVFFLAT + } var name = tree.Identifier($2.Compare()) - $$ = tree.NewAlterOptionAlterReIndex(name, keyType, algoParamList) + $$ = tree.NewAlterOptionAlterReIndex(name, io) } | REINDEX ident HNSW { - var keyType = tree.INDEX_TYPE_HNSW + + var io *tree.IndexOption = nil + io = tree.NewIndexOption() + io.IType = tree.INDEX_TYPE_HNSW var name = tree.Identifier($2.Compare()) - $$ = tree.NewAlterOptionAlterReIndex(name, keyType, 0) + $$ = tree.NewAlterOptionAlterReIndex(name, io) } | CHECK ident enforce { @@ -7679,7 +7683,9 @@ index_option_list: opt1.HnswEfSearch = opt2.HnswEfSearch } else if opt2.Async { opt1.Async = opt2.Async - } + } else if opt2.ForceSync { + opt1.ForceSync = opt2.ForceSync + } $$ = opt1 } } @@ -7772,7 +7778,12 @@ index_option: io.Async = true $$ = io } - +| FORCE_SYNC + { + io := tree.NewIndexOption() + io.ForceSync = true + $$ = io + } index_column_list: index_column diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go index a69e947ad7578..82b5b1507290b 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go @@ -179,8 +179,11 @@ var ( input: "select cluster_centers(a kmeans '5,vector_cosine_ops,random,true') from t1;", output: "select cluster_centers(a, 5,vector_cosine_ops,random,true) from t1", }, { - input: "alter table t1 alter reindex idx1 IVFFLAT lists = 5", - output: "alter table t1 alter reindex idx1 ivfflat lists = 5", + input: "alter table t1 alter reindex idx1 IVFFLAT lists = 5 force_sync", + output: "alter table t1 alter reindex idx1 ivfflat lists = 5 force_sync", + }, { + input: "alter table t1 alter reindex idx1 IVFFLAT force_sync", + output: "alter table t1 alter reindex idx1 ivfflat force_sync", }, { input: "create connector for s with (\"type\"='kafka', \"topic\"= 'user', \"partition\" = '1', \"value\"= 'json', \"bootstrap.servers\" = '127.0.0.1:62610');", output: "create connector for s with (type = kafka, topic = user, partition = 1, value = json, bootstrap.servers = 127.0.0.1:62610)", diff --git a/pkg/sql/parsers/tree/alter.go b/pkg/sql/parsers/tree/alter.go index c54bab6b1baad..ba77faf32130a 100644 --- a/pkg/sql/parsers/tree/alter.go +++ b/pkg/sql/parsers/tree/alter.go @@ -739,13 +739,15 @@ type AlterOptionAlterReIndex struct { Name Identifier KeyType IndexType AlgoParamList int64 + ForceSync bool } -func NewAlterOptionAlterReIndex(name Identifier, keyType IndexType, algoParamList int64) *AlterOptionAlterReIndex { +func NewAlterOptionAlterReIndex(name Identifier, option *IndexOption) *AlterOptionAlterReIndex { a := reuse.Alloc[AlterOptionAlterReIndex](nil) a.Name = name - a.KeyType = keyType - a.AlgoParamList = algoParamList + a.KeyType = option.IType + a.AlgoParamList = option.AlgoParamList + a.ForceSync = option.ForceSync return a } @@ -761,6 +763,10 @@ func (node *AlterOptionAlterReIndex) Format(ctx *FmtCtx) { if node.AlgoParamList != 0 { ctx.WriteString(fmt.Sprintf(" lists = %d", node.AlgoParamList)) } + if node.ForceSync { + ctx.WriteString(" ") + ctx.WriteString("force_sync") + } } func (node AlterOptionAlterReIndex) TypeName() string { return "tree.AlterOptionAlterReIndex" } diff --git a/pkg/sql/parsers/tree/create.go b/pkg/sql/parsers/tree/create.go index a36ce08fd750d..4ad6b050d8c96 100644 --- a/pkg/sql/parsers/tree/create.go +++ b/pkg/sql/parsers/tree/create.go @@ -2070,6 +2070,7 @@ type IndexOption struct { HnswEfConstruction int64 HnswEfSearch int64 Async bool + ForceSync bool } // Must follow the following sequence when test @@ -2127,6 +2128,9 @@ func (node *IndexOption) Format(ctx *FmtCtx) { if node.Async { ctx.WriteString("ASYNC ") } + if node.ForceSync { + ctx.WriteString("FORCE_SYNC ") + } } func (node IndexOption) TypeName() string { return "tree.IndexOption" } diff --git a/pkg/sql/plan/build_ddl.go b/pkg/sql/plan/build_ddl.go index 4ce680a077678..187d33b878d5e 100644 --- a/pkg/sql/plan/build_ddl.go +++ b/pkg/sql/plan/build_ddl.go @@ -3999,13 +3999,14 @@ func buildAlterTableInplace(stmt *tree.AlterTable, ctx CompilerContext) (*Plan, switch opt.KeyType { case tree.INDEX_TYPE_IVFFLAT: - if opt.AlgoParamList <= 0 { + if opt.AlgoParamList < 0 { return nil, moerr.NewInternalErrorf( ctx.GetContext(), - "lists should be > 0.", + "lists should be >= 0. lists = 0 will keep the original configuration.", ) } alterTableReIndex.IndexAlgoParamList = opt.AlgoParamList + alterTableReIndex.ForceSync = opt.ForceSync case tree.INDEX_TYPE_HNSW: // PASS: keep options on change for incremental update default: diff --git a/pkg/testutil/testengine/testdata.go b/pkg/testutil/testengine/testdata.go index d48fb9f289bb6..06a6f2157b9e0 100644 --- a/pkg/testutil/testengine/testdata.go +++ b/pkg/testutil/testengine/testdata.go @@ -812,3 +812,29 @@ func CreateCompressFileTable(db engine.Database) { } } } + +func CreateIvfSrcTable(db engine.Database) { + ctx := context.TODO() + { + var attrs []engine.TableDef + + { + attrs = append(attrs, &engine.AttributeDef{ + Attr: engine.Attribute{ + Alg: compress.Lz4, + Name: "a", + Type: types.T_int64.ToType(), + Primary: true, + }}) + attrs = append(attrs, &engine.AttributeDef{ + Attr: engine.Attribute{ + Alg: compress.Lz4, + Name: "b", + Type: types.T_array_float32.ToType(), + }}) + } + if err := db.Create(ctx, "ivfsrc", attrs); err != nil { + logutil.Fatal(err.Error()) + } + } +} diff --git a/pkg/testutil/testengine/testengine.go b/pkg/testutil/testengine/testengine.go index c9102649b031e..21778baa95f76 100644 --- a/pkg/testutil/testengine/testengine.go +++ b/pkg/testutil/testengine/testengine.go @@ -111,6 +111,7 @@ func New( CreateCustomer(db) CreateLineorder(db) CreateCompressFileTable(db) + CreateIvfSrcTable(db) if err = txnOp.Commit(ctx); err != nil { panic(err) diff --git a/pkg/vectorindex/idxcron/cmd.go b/pkg/vectorindex/idxcron/cmd.go new file mode 100644 index 0000000000000..5a9843aca83f4 --- /dev/null +++ b/pkg/vectorindex/idxcron/cmd.go @@ -0,0 +1,215 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package idxcron + +import ( + "context" + "fmt" + "os" + "time" + + "github.com/bytedance/sonic" + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/defines" + "github.com/matrixorigin/matrixone/pkg/txn/client" + "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" +) + +// always replace with the new data +func RegisterUpdate(ctx context.Context, + cnUUID string, + txn client.TxnOperator, + tableId uint64, + dbname string, + tablename string, + indexname string, + action string, + metadata string, +) (err error) { + + var tenantId uint32 + if tenantId, err = defines.GetAccountId(ctx); err != nil { + return + } + + duration := 5 * time.Minute + newctx := context.WithValue(ctx, defines.TenantIDKey{}, catalog.System_Account) + newctx, cancel := context.WithTimeout(newctx, duration) + defer cancel() + sqlctx := sqlexec.NewSqlContext(newctx, cnUUID, txn, catalog.System_Account, nil) + sqlproc := sqlexec.NewSqlProcessWithContext(sqlctx) + + status := IndexUpdateStatus{Status: Status_Ok, Msg: "index update registered", Time: time.Now()} + bytes, err := sonic.Marshal(&status) + if err != nil { + return + } + + sql := fmt.Sprintf("REPLACE INTO mo_catalog.mo_index_update VALUES (%d, %d, '%s', '%s', '%s', '%s', '%s', '%s', now(), now())", + tenantId, + tableId, + dbname, + tablename, + indexname, + action, + metadata, + string(bytes)) + + res, err := runCmdSql(sqlproc, sql) + if err != nil { + return + } + defer res.Close() + + return +} + +// if action == "*", remove all actions +func UnregisterUpdate(ctx context.Context, + cnUUID string, + txn client.TxnOperator, + tableId uint64, + indexname string, + action string, +) (err error) { + + var tenantId uint32 + if tenantId, err = defines.GetAccountId(ctx); err != nil { + return + } + + duration := 5 * time.Minute + newctx := context.WithValue(ctx, defines.TenantIDKey{}, catalog.System_Account) + newctx, cancel := context.WithTimeout(newctx, duration) + defer cancel() + sqlctx := sqlexec.NewSqlContext(newctx, cnUUID, txn, catalog.System_Account, nil) + sqlproc := sqlexec.NewSqlProcessWithContext(sqlctx) + + var sql string + if action == Action_Wildcard { + sql = fmt.Sprintf("DELETE FROM mo_catalog.mo_index_update WHERE account_id = %d AND table_id = %d AND index_name = '%s'", + tenantId, tableId, indexname) + } else { + sql = fmt.Sprintf("DELETE FROM mo_catalog.mo_index_update WHERE account_id = %d AND table_id = %d AND index_name = '%s' AND action = '%s'", + tenantId, tableId, indexname, action) + } + + os.Stderr.WriteString(sql) + os.Stderr.WriteString("\n") + + res, err := runCmdSql(sqlproc, sql) + if err != nil { + return + } + defer res.Close() + + return +} + +func UnregisterUpdateByDbName(ctx context.Context, + cnUUID string, + txn client.TxnOperator, + dbName string) (err error) { + + var tenantId uint32 + if tenantId, err = defines.GetAccountId(ctx); err != nil { + return + } + + duration := 5 * time.Minute + newctx := context.WithValue(ctx, defines.TenantIDKey{}, catalog.System_Account) + newctx, cancel := context.WithTimeout(newctx, duration) + defer cancel() + sqlctx := sqlexec.NewSqlContext(newctx, cnUUID, txn, catalog.System_Account, nil) + sqlproc := sqlexec.NewSqlProcessWithContext(sqlctx) + + // check compatibility. skip it if mo_index_update table not found + sql := fmt.Sprintf("SELECT COUNT(*) FROM mo_catalog.mo_tables WHERE account_id = 0 AND relname = '%s' AND reldatabase = '%s'", + catalog.MO_INDEX_UPDATE, + catalog.MO_CATALOG) + res, err := runCmdSql(sqlproc, sql) + if err != nil { + return + } + if len(res.Batches) == 0 { + return + } + res.Close() + + sql = fmt.Sprintf("DELETE FROM mo_catalog.mo_index_update WHERE account_id = %d AND db_name = '%s'", tenantId, dbName) + res, err = runCmdSql(sqlproc, sql) + if err != nil { + return + } + res.Close() + + return +} + +func UnregisterUpdateByTableId(ctx context.Context, + cnUUID string, + txn client.TxnOperator, + tableId uint64) (err error) { + + var tenantId uint32 + if tenantId, err = defines.GetAccountId(ctx); err != nil { + return + } + + duration := 5 * time.Minute + newctx := context.WithValue(ctx, defines.TenantIDKey{}, catalog.System_Account) + newctx, cancel := context.WithTimeout(newctx, duration) + defer cancel() + sqlctx := sqlexec.NewSqlContext(newctx, cnUUID, txn, catalog.System_Account, nil) + sqlproc := sqlexec.NewSqlProcessWithContext(sqlctx) + + sql := fmt.Sprintf("DELETE FROM mo_catalog.mo_index_update WHERE account_id = %d AND table_id = %d", tenantId, tableId) + res, err := runCmdSql(sqlproc, sql) + if err != nil { + return + } + defer res.Close() + + return +} + +func RenameSrcTable(ctx context.Context, + cnUUID string, + txn client.TxnOperator, + dbId, tableId uint64, + oldTableName, newTablename string) (err error) { + + var tenantId uint32 + if tenantId, err = defines.GetAccountId(ctx); err != nil { + return + } + + duration := 5 * time.Minute + newctx := context.WithValue(ctx, defines.TenantIDKey{}, catalog.System_Account) + newctx, cancel := context.WithTimeout(newctx, duration) + defer cancel() + sqlctx := sqlexec.NewSqlContext(newctx, cnUUID, txn, catalog.System_Account, nil) + sqlproc := sqlexec.NewSqlProcessWithContext(sqlctx) + + sql := fmt.Sprintf("UPDATE mo_catalog.mo_index_update SET table_name = '%s' WHERE account_id = %d AND table_id = %d AND table_name = '%s'", + newTablename, tenantId, tableId, oldTableName) + res, err := runCmdSql(sqlproc, sql) + if err != nil { + return + } + defer res.Close() + + return +} diff --git a/pkg/vectorindex/idxcron/executor.go b/pkg/vectorindex/idxcron/executor.go new file mode 100644 index 0000000000000..7d4a9d9772c57 --- /dev/null +++ b/pkg/vectorindex/idxcron/executor.go @@ -0,0 +1,538 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package idxcron + +import ( + "context" + "fmt" + "strings" + "sync/atomic" + "time" + + "github.com/bytedance/sonic" + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/common/mpool" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/container/vector" + "github.com/matrixorigin/matrixone/pkg/defines" + "github.com/matrixorigin/matrixone/pkg/logutil" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/pb/task" + "github.com/matrixorigin/matrixone/pkg/txn/client" + "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" + "github.com/matrixorigin/matrixone/pkg/vm/engine" +) + +/* ++----------------+---------------------+------+------+---------+-------+---------+ +| Field | Type | Null | Key | Default | Extra | Comment | ++----------------+---------------------+------+------+---------+-------+---------+ +| account_id | INT UNSIGNED(32) | NO | PRI | NULL | | | +| table_id | BIGINT UNSIGNED(64) | NO | PRI | NULL | | | +| db_name | VARCHAR(65535) | NO | PRI | NULL | | | +| table_name | VARCHAR(65535) | NO | PRI | NULL | | | +| index_name | VARCHAR(65535) | NO | PRI | NULL | | | +| action | VARCHAR(65535) | NO | PRI | NULL | | | +| metadata | JSON(0) | NO | | NULL | | | +| status | JSON(0) | NO | | NULL | | | +| create_at | TIMESTAMP(0) | NO | | NULL | | | +| last_update_at | TIMESTAMP(0) | YES | | NULL | | | ++----------------+---------------------+------+------+---------+-------+---------+ +*/ +const ( + Action_Ivfflat_Reindex = "ivfflat_reindex" + Action_Wildcard = "*" + + Status_Error = "error" + Status_Ok = "ok" + Status_Skipped = "skipped" + + OneWeek = 24 * 7 * time.Hour + KmeansTrainPercentParam = "kmeans_train_percent" + KmeansMaxIterationParam = "kmeans_max_iteration" +) + +var ( + runSaveStatusSql = sqlexec.RunSql + runGetTasksSql = sqlexec.RunSql + runReindexSql = sqlexec.RunSql + runGetCountSql = sqlexec.RunSql + runTxnWithSqlContext = sqlexec.RunTxnWithSqlContext + runCmdSql = sqlexec.RunSql + + // createdAt Delay update duration + createdAtDelay = 2 * 24 * time.Hour + + getTableDef = getTableDefFunc + getTasks = getTasksFunc +) + +var running atomic.Bool + +type IndexUpdateTaskInfo struct { + DbName string + TableName string + IndexName string + Action string + AccountId uint32 + TableId uint64 + Metadata *sqlexec.Metadata + Status []byte + CreatedAt types.Timestamp + LastUpdateAt *types.Timestamp +} + +type IndexUpdateStatus struct { + Status string `json:"status"` + Msg string `json:"msg,omitempty"` + Time time.Time `json:"time,omitempty"` +} + +// The optimal number of LISTS is estimated the the formula below: +// For datasets with less than one million rows, use lists = rows / 1000. +// For datasets with more than one million rows, use lists = sqrt(rows). +// +// Faiss guidelines suggest using between 30 * nlist and 256 * nlist vectors for training, ideally from a representative sample of your data. +// +// Case 1: ivf_train_percent * dsize < 30 * nlist, always re-index +// Case 2: 30 * nlist < ivf_train_percent * dsize < 256 * nlist, re-index every week +// Case 3: dsize > 256 * nlist, re-index every 1 week and ivf_train_percent = (256 * nlist) / dsize +func (t *IndexUpdateTaskInfo) checkIndexUpdatable(ctx context.Context, dsize uint64, nlist int64) (ok bool, reason string, err error) { + + now := time.Now() + createdAt := time.Unix(t.CreatedAt.Unix(), 0) + ts := createdAt.Add(createdAtDelay) + if ts.After(now) { + // skip update when createdAt + delay is after current time + reason = fmt.Sprintf("current time < 2 days after createdAt (%v < %v)", createdAt.Format("2006-01-02 15:04:05"), ts.Format("2006-01-02 15:04:05")) + return + } + + // If data size is smaller than nlist, skip the reindex + if dsize < uint64(nlist) { + reason = fmt.Sprintf("source data size < Nlist (%d < %d)", dsize, nlist) + return + } + + lower := float64(30 * nlist) + upper := float64(256 * nlist) + + if t.Metadata == nil { + ok = true + return + } + + v, err := t.Metadata.ResolveVariableFunc(KmeansTrainPercentParam, false, true) + if err != nil { + return + } + ivf_train_percent := v.(float64) + + nsample := float64(dsize) * (ivf_train_percent / 100) + + if nsample < lower { + ok = true + return + } else if nsample < upper { + // reindex every week + if t.LastUpdateAt == nil { + ok = true + return + } + + ts = time.Unix(t.LastUpdateAt.Unix(), 0) + ts = ts.Add(OneWeek) + if ts.After(now) { + reason = fmt.Sprintf("training sample size in between lower and upper limit (%f < %f < %f) AND current time < 1 week after lastUpdatedAt (%v < %v)", + lower, nsample, upper, now.Format("2006-01-02 15:04:05"), ts.Format("2006-01-02 15:04:05")) + return + } else { + // update + ok = true + return + } + + } else { + // reindex every week + if t.LastUpdateAt != nil { + ts = time.Unix(t.LastUpdateAt.Unix(), 0) + ts = ts.Add(2 * OneWeek) + if ts.After(now) { + reason = fmt.Sprintf("training sample size > upper limit ( %f > %f) AND current time < 2 week after lastUpdatedAt (%v < %v)", + nsample, upper, now.Format("2006-01-02 15:04:05"), ts.Format("2006-01-02 15:04:05")) + return + } + } + + // reindex every week and limit nsample to upper bound + ratio := (upper / float64(dsize)) * 100 + err = t.Metadata.Modify(KmeansTrainPercentParam, ratio) + if err != nil { + return + } + + ok = true + return + } +} + +func (t *IndexUpdateTaskInfo) saveStatus(sqlproc *sqlexec.SqlProcess, updated bool, reason string, err error) error { + + statussqlfmt := "UPDATE mo_catalog.mo_index_update SET status = '%s' WHERE table_id = %d AND account_id = %d AND action = '%s'" + updatesqlfmt := "UPDATE mo_catalog.mo_index_update SET last_update_at = now(), status = '%s' WHERE table_id = %d AND account_id = %d AND action = '%s'" + + // skip update status if index is NOT updated + status := IndexUpdateStatus{Time: time.Now()} + var sqlfmt string + + if err != nil { + // save error status column to mo_index_update + status.Status = Status_Error + status.Msg = err.Error() + sqlfmt = statussqlfmt + } else if !updated { + status.Status = Status_Skipped + status.Msg = reason + sqlfmt = statussqlfmt + } else { + status.Status = Status_Ok + status.Msg = "reindex success" + sqlfmt = updatesqlfmt + } + + bytes, err := sonic.Marshal(&status) + if err != nil { + return err + } + + // update status + sql := fmt.Sprintf(sqlfmt, + string(bytes), t.TableId, t.AccountId, t.Action) + res, err2 := runSaveStatusSql(sqlproc, sql) + if err2 != nil { + return err2 + } + res.Close() + + return nil +} + +type IndexUpdateTaskExecutor struct { + ctx context.Context + cancelFunc context.CancelFunc + cnUUID string + txnEngine engine.Engine + cnTxnClient client.TxnClient + mp *mpool.MPool +} + +func IndexUpdateTaskExecutorFactory( + cnUUID string, + txnEngine engine.Engine, + cnTxnClient client.TxnClient, + mp *mpool.MPool, +) func(ctx context.Context, task task.Task) (err error) { + return func(ctx context.Context, task task.Task) (err error) { + + if !running.CompareAndSwap(false, true) { + return nil + } + + defer func() { + running.Store(false) + }() + + ctx = context.WithValue(ctx, defines.TenantIDKey{}, catalog.System_Account) + exec, err := NewIndexUpdateTaskExecutor( + ctx, + cnUUID, + txnEngine, + cnTxnClient, + mp, + ) + if err != nil { + return + } + + err = exec.run(ctx) + return + } +} + +func NewIndexUpdateTaskExecutor( + ctx context.Context, + cnUUID string, + txnEngine engine.Engine, + cnTxnClient client.TxnClient, + mp *mpool.MPool) (*IndexUpdateTaskExecutor, error) { + + exec := &IndexUpdateTaskExecutor{ + cnUUID: cnUUID, + txnEngine: txnEngine, + cnTxnClient: cnTxnClient, + mp: mp, + } + exec.ctx, exec.cancelFunc = context.WithCancel(ctx) + return exec, nil +} + +func getTasksFunc( + ctx context.Context, + txnEngine engine.Engine, + cnTxnClient client.TxnClient, + cnUUID string) ([]*IndexUpdateTaskInfo, error) { + + tasks := make([]*IndexUpdateTaskInfo, 0, 16) + + err := runTxnWithSqlContext(ctx, txnEngine, cnTxnClient, cnUUID, + catalog.System_Account, 5*time.Minute, nil, nil, + func(sqlproc *sqlexec.SqlProcess, data any) error { + + sql := "SELECT db_name, table_name, index_name, action, account_id, table_id, metadata, last_update_at, create_at from mo_catalog.mo_index_update" + res, err := runGetTasksSql(sqlproc, sql) + if err != nil { + return err + } + defer res.Close() + + for _, bat := range res.Batches { + dbvec := bat.Vecs[0] + tblvec := bat.Vecs[1] + idxvec := bat.Vecs[2] + actionvec := bat.Vecs[3] + accountvec := bat.Vecs[4] + tblidvec := bat.Vecs[5] + metavec := bat.Vecs[6] + lastupdatevec := bat.Vecs[7] + createdAtVec := bat.Vecs[8] + + for i := 0; i < bat.RowCount(); i++ { + dbname := dbvec.GetStringAt(i) + tblname := tblvec.GetStringAt(i) + idxname := idxvec.GetStringAt(i) + action := actionvec.GetStringAt(i) + accountId := vector.GetFixedAtWithTypeCheck[uint32](accountvec, i) + tableId := vector.GetFixedAtWithTypeCheck[uint64](tblidvec, i) + createdAt := vector.GetFixedAtWithTypeCheck[types.Timestamp](createdAtVec, i) + + metadata := (*sqlexec.Metadata)(nil) + lastupdate := (*types.Timestamp)(nil) + + if !metavec.IsNull(uint64(i)) { + bytes := metavec.CloneBytesAt(i) + metadata, err = sqlexec.NewMetadata(bytes) + if err != nil { + return err + } + } + + if !lastupdatevec.IsNull(uint64(i)) { + ts := vector.GetFixedAtWithTypeCheck[types.Timestamp](lastupdatevec, i) + lastupdate = &ts + } + + tasks = append(tasks, &IndexUpdateTaskInfo{DbName: dbname, + TableName: tblname, + IndexName: idxname, + Action: action, + AccountId: accountId, + TableId: tableId, + Metadata: metadata, + LastUpdateAt: lastupdate, + CreatedAt: createdAt}) + + } + } + + return nil + }) + + return tasks, err +} + +func getTableDefFunc(sqlproc *sqlexec.SqlProcess, txnEngine engine.Engine, dbname string, tablename string) (tableDef *plan.TableDef, err error) { + + sqlCtx := sqlproc.SqlCtx + txnOp := sqlCtx.Txn() + + // get indexdef + db, err := txnEngine.Database(sqlproc.GetContext(), dbname, txnOp) + if err != nil { + return + } + + rel, err := db.Relation(sqlproc.GetContext(), tablename, nil) + if err != nil { + return + } + + tableDef = rel.CopyTableDef(sqlproc.GetContext()) + return +} + +// return status as SQL to update mo_index_update +func runIvfflatReindex(ctx context.Context, + txnEngine engine.Engine, + txnClient client.TxnClient, + cnUUID string, + task *IndexUpdateTaskInfo) (updated bool, reason string, err error) { + + if len(task.IndexName) == 0 { + err = moerr.NewInternalErrorNoCtx("table index name is empty string. skip reindex.") + return + } + + resolveVariableFunc := (func(string, bool, bool) (any, error))(nil) + if task.Metadata != nil { + resolveVariableFunc = task.Metadata.ResolveVariableFunc + } + + err = runTxnWithSqlContext(ctx, txnEngine, txnClient, cnUUID, + task.AccountId, 24*time.Hour, resolveVariableFunc, nil, + func(sqlproc *sqlexec.SqlProcess, data any) (err2 error) { + + tableDef, err2 := getTableDef(sqlproc, txnEngine, task.DbName, task.TableName) + if err2 != nil { + return + } + + if tableDef.TblId != task.TableId { + return moerr.NewInternalErrorNoCtx("table id mimstach") + } + + // get number of list from indexDef + lists := int64(0) + for _, idx := range tableDef.Indexes { + if idx.IndexName == task.IndexName { + listsAst, err2 := sonic.Get([]byte(idx.IndexAlgoParams), catalog.IndexAlgoParamLists) + if err2 != nil { + return err2 + } + lists, err2 = listsAst.Int64() + if err2 != nil { + return err2 + } + break + } + } + + if lists == 0 { + return moerr.NewInternalErrorNoCtx("IVFFLAT index parameter LISTS not found") + } + + // get number of rows from source table + cntsql := fmt.Sprintf("SELECT COUNT(*) FROM `%s`.`%s`", task.DbName, task.TableName) + res, err2 := runGetCountSql(sqlproc, cntsql) + if err2 != nil { + return + } + defer res.Close() + + dsize := uint64(0) + if len(res.Batches) > 0 { + bat := res.Batches[0] + if bat.RowCount() > 0 { + cntvec := bat.Vecs[0] + dsize = vector.GetFixedAtWithTypeCheck[uint64](cntvec, 0) + } + } + + ok := false + ok, reason, err2 = task.checkIndexUpdatable(ctx, dsize, lists) + if err2 != nil { + return + } + if !ok { + // skip the update + return + } + + // run alter table alter reindex in force synchronous mode to make sure to build index in single transaction + sql := fmt.Sprintf("ALTER TABLE `%s`.`%s` ALTER REINDEX `%s` IVFFLAT FORCE_SYNC", task.DbName, task.TableName, task.IndexName) + res, err2 = runReindexSql(sqlproc, sql) + if err2 != nil { + return + } + res.Close() + + // mark reindex is performed + updated = true + return + }) + + return +} + +func (e *IndexUpdateTaskExecutor) run(ctx context.Context) (err error) { + + logutil.Infof("IndexUpdateTaskExecutor START") + + defer func() { + logutil.Infof("IndexUpdateTaskExecutor END") + }() + + tasks, err := getTasks(ctx, e.txnEngine, e.cnTxnClient, e.cnUUID) + if err != nil { + return err + } + + // do the maintenance such as ivfflat re-index, fulltext batch_delete + for _, t := range tasks { + var ( + err2 error + updated bool + reason string + ) + + select { + case <-ctx.Done(): + return moerr.NewInternalError(ctx, "context cancelled") + default: + } + + switch t.Action { + case Action_Ivfflat_Reindex: + updated, reason, err2 = runIvfflatReindex(ctx, e.txnEngine, e.cnTxnClient, e.cnUUID, t) + default: + err2 = moerr.NewInternalErrorNoCtx(fmt.Sprintf("invalid index update action %v", t)) + } + + runTxnWithSqlContext(ctx, e.txnEngine, e.cnTxnClient, e.cnUUID, + catalog.System_Account, 5*time.Minute, nil, nil, + func(sqlproc *sqlexec.SqlProcess, data any) error { + + return t.saveStatus(sqlproc, updated, reason, err2) + }) + } + + return nil +} + +var IndexUpdateTaskCronExpr = "0 55 23 * * *" // 23:55:00 everyday + +// var IndexUpdateTaskCronExpr = "0 */5 * * * *" // every 5 minutes +// var IndexUpdateTaskCronExpr = "*/15 * * * * *" // every 15 seconds + +const ParamSeparator = " " + +func IndexUpdateTaskMetadata(id task.TaskCode, args ...string) task.TaskMetadata { + return task.TaskMetadata{ + ID: "IndexUpdateTask", + Executor: id, + Context: []byte(strings.Join(args, ParamSeparator)), + Options: task.TaskOptions{Concurrency: 1}, + } +} diff --git a/pkg/vectorindex/idxcron/executor_test.go b/pkg/vectorindex/idxcron/executor_test.go new file mode 100644 index 0000000000000..809c39b7060d9 --- /dev/null +++ b/pkg/vectorindex/idxcron/executor_test.go @@ -0,0 +1,672 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package idxcron + +import ( + "context" + "fmt" + "os" + "testing" + "time" + + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/common/mpool" + "github.com/matrixorigin/matrixone/pkg/container/batch" + "github.com/matrixorigin/matrixone/pkg/container/bytejson" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/container/vector" + "github.com/matrixorigin/matrixone/pkg/defines" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/testutil/testengine" + "github.com/matrixorigin/matrixone/pkg/txn/client" + "github.com/matrixorigin/matrixone/pkg/util/executor" + "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" + "github.com/matrixorigin/matrixone/pkg/vm/engine" + "github.com/prashantv/gostub" + "github.com/stretchr/testify/require" +) + +type TestTask struct { + jstr string + dsize uint64 + nlists int64 + ts types.Timestamp + createdAt types.Timestamp + expected bool +} + +func getTestCases(t *testing.T) []TestTask { + + tasks := []TestTask{ + { + // data size < nlist + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":1}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(100), + nlists: int64(1000), + ts: types.UnixToTimestamp(0), + createdAt: types.UnixToTimestamp(time.Now().Unix()), + expected: false, + }, + + { + // just CreatedAt and skip update + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":1}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(1000000), + nlists: int64(1000), + ts: types.UnixToTimestamp(0), + createdAt: types.UnixToTimestamp(time.Now().Unix()), + expected: false, + }, + + { + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":1}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(1000000), + nlists: int64(1000), + ts: types.UnixToTimestamp(0), + createdAt: types.UnixToTimestamp(time.Now().Add(-4 * OneWeek).Unix()), + expected: true, + }, + + { + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(1000000), + nlists: int64(1000), + ts: types.UnixToTimestamp(0), + expected: true, + }, + + { + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(1000000), + nlists: int64(1000), + createdAt: types.UnixToTimestamp(time.Now().Add(-4 * OneWeek).Unix()), + ts: func() types.Timestamp { + now := time.Now() + unixts := now.Add(-2 * OneWeek).Unix() + return types.UnixToTimestamp(unixts) + }(), + expected: true, + }, + + { + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(1000000), + nlists: int64(1000), + createdAt: types.UnixToTimestamp(time.Now().Add(-4 * OneWeek).Unix()), + ts: func() types.Timestamp { + now := time.Now() + unixts := now.Add(-time.Hour).Unix() + return types.UnixToTimestamp(unixts) + }(), + expected: false, + }, + + { + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(10000000), + nlists: int64(1000), + createdAt: types.UnixToTimestamp(time.Now().Add(-4 * OneWeek).Unix()), + ts: func() types.Timestamp { + now := time.Now() + unixts := now.Add(-1 * time.Hour).Unix() + return types.UnixToTimestamp(unixts) + }(), + expected: false, + }, + + { + jstr: `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":8} + }}`, + dsize: uint64(10000000), + nlists: int64(1000), + createdAt: types.UnixToTimestamp(time.Now().Add(-4 * OneWeek).Unix()), + ts: func() types.Timestamp { + now := time.Now() + unixts := now.Add(-2 * OneWeek).Unix() + return types.UnixToTimestamp(unixts) + }(), + expected: true, + }, + { + jstr: "", + dsize: uint64(10000000), + nlists: int64(1000), + createdAt: types.UnixToTimestamp(time.Now().Add(-4 * OneWeek).Unix()), + ts: func() types.Timestamp { + now := time.Now() + unixts := now.Add(-2 * OneWeek).Unix() + return types.UnixToTimestamp(unixts) + }(), + expected: true, + }, + } + + return tasks +} + +func TestCheckIndexUpdatable(t *testing.T) { + + var err error + tasks := getTestCases(t) + for _, ta := range tasks { + + m := (*sqlexec.Metadata)(nil) + if len(ta.jstr) > 0 { + m, err = sqlexec.NewMetadataFromJson(ta.jstr) + require.Nil(t, err) + } + + info := IndexUpdateTaskInfo{ + DbName: "db", + TableName: "table", + IndexName: "index", + Action: Action_Ivfflat_Reindex, + AccountId: uint32(0), + TableId: uint64(100), + Metadata: m, + LastUpdateAt: &ta.ts, + CreatedAt: ta.createdAt, + } + + ok, _, err := info.checkIndexUpdatable(context.Background(), ta.dsize, ta.nlists) + require.NoError(t, err) + require.Equal(t, ta.expected, ok) + + } + +} + +/* +// return status as SQL to update mo_index_update +func runIvfflatReindex(ctx context.Context, + txnEngine engine.Engine, + txnClient client.TxnClient, + cnUUID string, + task IndexUpdateTaskInfo) (updated bool, err error) { + +*/ + +func newTestIvfTableDef(pkName string, pkType types.T, vecColName string, vecType types.T, vecWidth int32) *plan.TableDef { + return &plan.TableDef{ + Name: "test_orig_tbl", + TblId: 1, + Name2ColIndex: map[string]int32{ + pkName: 0, + vecColName: 1, + "dummy": 2, // Add another col to make sure pk/vec col indices are used + }, + Cols: []*plan.ColDef{ + {Name: pkName, Typ: plan.Type{Id: int32(pkType)}}, + {Name: vecColName, Typ: plan.Type{Id: int32(vecType), Width: vecWidth}}, + {Name: "dummy", Typ: plan.Type{Id: int32(types.T_int32)}}, + }, + Pkey: &plan.PrimaryKeyDef{ + Names: []string{pkName}, + PkeyColName: pkName, + }, + Indexes: []*plan.IndexDef{ + { + IndexName: "ivf_idx", + TableExist: true, + IndexAlgo: catalog.MoIndexIvfFlatAlgo.ToString(), + IndexAlgoTableType: catalog.SystemSI_IVFFLAT_TblType_Metadata, + IndexTableName: "meta_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"lists":"1000","op_type":"vector_l2_ops"}`, + }, + { + IndexName: "ivf_idx", + TableExist: true, + IndexAlgo: catalog.MoIndexIvfFlatAlgo.ToString(), + IndexAlgoTableType: catalog.SystemSI_IVFFLAT_TblType_Centroids, + IndexTableName: "centriods", + Parts: []string{vecColName}, + IndexAlgoParams: `{"lists":"1000","op_type":"vector_l2_ops"}`, + }, + { + IndexName: "ivf_idx", + TableExist: true, + IndexAlgo: catalog.MoIndexIvfFlatAlgo.ToString(), + IndexAlgoTableType: catalog.SystemSI_IVFFLAT_TblType_Entries, + IndexTableName: "entries", + Parts: []string{vecColName}, + IndexAlgoParams: `{"lists":"1000","op_type":"vector_l2_ops"}`, + }, + }, + } +} + +func TestGetTableDef(t *testing.T) { + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, catalog.System_Account) + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + catalog.SetupDefines("") + cnEngine, cnClient, _ := testengine.New(ctx) + cnUUID := "a-b-c-d" + dbname := "test" + tablename := "ivfsrc" + + txnOp, err := sqlexec.GetTxn(ctx, cnEngine, cnClient, "idxcron") + require.NoError(t, err) + + sqlproc := sqlexec.NewSqlProcessWithContext(sqlexec.NewSqlContext(ctx, cnUUID, txnOp, catalog.System_Account, nil)) + + tabledef, err := getTableDef(sqlproc, cnEngine, dbname, tablename) + require.NoError(t, err) + + fmt.Printf("tableDef %v\n", tabledef) +} + +func TestIvfflatReindex(t *testing.T) { + + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, catalog.System_Account) + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + mp := mpool.MustNewZero() + + catalog.SetupDefines("") + cnEngine, cnClient, _ := testengine.New(ctx) + cnUUID := "a-b-c-d" + tableid := uint64(1) + dbname := "test" + tablename := "test_orig_tbl" + indexname := "ivf_idx" + + stub1 := gostub.Stub(&getTableDef, func(sqlproc *sqlexec.SqlProcess, txnEngine engine.Engine, dbname string, tablename string) (tableDef *plan.TableDef, err error) { + return newTestIvfTableDef("a", types.T_int64, "b", types.T_array_float32, 3), nil + }) + defer stub1.Reset() + + tasks := getTestCases(t) + for _, ta := range tasks { + + func() { + var err error + + m := (*sqlexec.Metadata)(nil) + if len(ta.jstr) > 0 { + m, err = sqlexec.NewMetadataFromJson(ta.jstr) + require.Nil(t, err) + } + + info := IndexUpdateTaskInfo{ + DbName: dbname, + TableName: tablename, + IndexName: indexname, + Action: Action_Ivfflat_Reindex, + AccountId: catalog.System_Account, + TableId: tableid, + Metadata: m, + LastUpdateAt: &ta.ts, + CreatedAt: ta.createdAt, + } + + stub2 := gostub.Stub(&runGetCountSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + bat := batch.NewWithSize(1) + bat.Vecs[0] = vector.NewVec(types.New(types.T_uint64, 8, 0)) + vector.AppendFixed[uint64](bat.Vecs[0], ta.dsize, false, mp) + bat.SetRowCount(1) + return executor.Result{Mp: mp, Batches: []*batch.Batch{bat}}, nil + + }) + defer stub2.Reset() + + stub3 := gostub.Stub(&runReindexSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + return executor.Result{}, nil + }) + defer stub3.Reset() + + updated, reason, err := runIvfflatReindex(ctx, cnEngine, cnClient, cnUUID, &info) + fmt.Printf("updated = %v, reason = %s\n", updated, reason) + require.NoError(t, err) + require.Equal(t, ta.expected, updated) + + }() + } +} + +func TestExecutorRunFakeTasks(t *testing.T) { + + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, catalog.System_Account) + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + mp := mpool.MustNewZero() + + catalog.SetupDefines("") + cnEngine, cnClient, _ := testengine.New(ctx) + cnUUID := "a-b-c-d" + tableid := uint64(1) + dbname := "test" + tablename := "test_orig_tbl" + indexname := "ivf_idx" + + // getTableDef + stub1 := gostub.Stub(&getTableDef, func(sqlproc *sqlexec.SqlProcess, txnEngine engine.Engine, dbname string, tablename string) (tableDef *plan.TableDef, err error) { + return newTestIvfTableDef("a", types.T_int64, "b", types.T_array_float32, 3), nil + }) + defer stub1.Reset() + + // runGetCountSql + stub2 := gostub.Stub(&runGetCountSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + bat := batch.NewWithSize(1) + bat.Vecs[0] = vector.NewVec(types.New(types.T_uint64, 8, 0)) + vector.AppendFixed[uint64](bat.Vecs[0], uint64(1000000), false, mp) + bat.SetRowCount(1) + return executor.Result{Mp: mp, Batches: []*batch.Batch{bat}}, nil + + }) + defer stub2.Reset() + + // runReindxSql + stub3 := gostub.Stub(&runReindexSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + return executor.Result{}, nil + }) + defer stub3.Reset() + + //getTasks + stub4 := gostub.Stub(&getTasks, func(ctx context.Context, txnEngine engine.Engine, cnTxnClient client.TxnClient, cnUUID string) ([]*IndexUpdateTaskInfo, error) { + tasks := getTestCases(t) + + ret := make([]*IndexUpdateTaskInfo, 0, len(tasks)) + for _, ta := range tasks { + var err error + m := (*sqlexec.Metadata)(nil) + if len(ta.jstr) > 0 { + m, err = sqlexec.NewMetadataFromJson(ta.jstr) + require.Nil(t, err) + } + + info := IndexUpdateTaskInfo{ + DbName: dbname, + TableName: tablename, + IndexName: indexname, + Action: Action_Ivfflat_Reindex, + AccountId: catalog.System_Account, + TableId: tableid, + Metadata: m, + LastUpdateAt: &ta.ts, + CreatedAt: ta.createdAt, + } + + ret = append(ret, &info) + } + + return ret, nil + }) + defer stub4.Reset() + + // runSavestatusSql + stub5 := gostub.Stub(&runSaveStatusSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + fmt.Println(sql) + return executor.Result{}, nil + }) + defer stub5.Reset() + + exec, err := NewIndexUpdateTaskExecutor(ctx, cnUUID, cnEngine, cnClient, mp) + require.NoError(t, err) + + err = exec.run(ctx) + require.NoError(t, err) +} + +func TestExecutorRunFull(t *testing.T) { + + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, catalog.System_Account) + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + mp := mpool.MustNewZero() + + catalog.SetupDefines("") + cnEngine, cnClient, _ := testengine.New(ctx) + cnUUID := "a-b-c-d" + tableid := uint64(1) + dbname := "test" + tablename := "test_orig_tbl" + indexname := "ivf_idx" + + // getTableDef + stub1 := gostub.Stub(&getTableDef, func(sqlproc *sqlexec.SqlProcess, txnEngine engine.Engine, dbname string, tablename string) (tableDef *plan.TableDef, err error) { + return newTestIvfTableDef("a", types.T_int64, "b", types.T_array_float32, 3), nil + }) + defer stub1.Reset() + + // runGetCountSql + stub2 := gostub.Stub(&runGetCountSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + bat := batch.NewWithSize(1) + bat.Vecs[0] = vector.NewVec(types.New(types.T_uint64, 8, 0)) + vector.AppendFixed[uint64](bat.Vecs[0], uint64(1000000), false, mp) + bat.SetRowCount(1) + return executor.Result{Mp: mp, Batches: []*batch.Batch{bat}}, nil + + }) + defer stub2.Reset() + + // runReindxSql + stub3 := gostub.Stub(&runReindexSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + return executor.Result{}, nil + }) + defer stub3.Reset() + + // runReindxSql + stub4 := gostub.Stub(&runGetTasksSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + + writer := sqlexec.NewMetadataWriter() + writer.AddFloat("kmeans_train_percent", 10) + writer.AddInt("kmeans_max_iteration", 20) + writer.AddInt("ivf_threads_build", 8) + writer.AddInt8("experimental_ivf_index", 1) + + js, err := writer.Marshal() + require.NoError(t, err) + + os.Stderr.WriteString(fmt.Sprintf("js %v\n", string(js))) + + bj, err := bytejson.ParseFromString(string(js)) + require.NoError(t, err) + + os.Stderr.WriteString(fmt.Sprintf("bj %v\n", bj.String())) + + bat := batch.NewWithSize(9) + bat.Vecs[0] = vector.NewVec(types.New(types.T_varchar, 64, 0)) // db + bat.Vecs[1] = vector.NewVec(types.New(types.T_varchar, 64, 0)) // table + bat.Vecs[2] = vector.NewVec(types.New(types.T_varchar, 64, 0)) // idxname + bat.Vecs[3] = vector.NewVec(types.New(types.T_varchar, 64, 0)) // action + bat.Vecs[4] = vector.NewVec(types.New(types.T_uint32, 4, 0)) // acountid + bat.Vecs[5] = vector.NewVec(types.New(types.T_uint64, 8, 0)) // table id + bat.Vecs[6] = vector.NewVec(types.New(types.T_json, 1024, 0)) // metadata JSON + bat.Vecs[7] = vector.NewVec(types.New(types.T_timestamp, 8, 0)) // last_update_at timestamp + bat.Vecs[8] = vector.NewVec(types.New(types.T_timestamp, 8, 0)) // create_at timestamp + + vector.AppendBytes(bat.Vecs[0], []byte(dbname), false, mp) + vector.AppendBytes(bat.Vecs[1], []byte(tablename), false, mp) + vector.AppendBytes(bat.Vecs[2], []byte(indexname), false, mp) + vector.AppendBytes(bat.Vecs[3], []byte(Action_Ivfflat_Reindex), false, mp) + vector.AppendFixed[uint32](bat.Vecs[4], catalog.System_Account, false, mp) + vector.AppendFixed[uint64](bat.Vecs[5], tableid, false, mp) + err = vector.AppendByteJson(bat.Vecs[6], bj, false, mp) + require.NoError(t, err) + + now := time.Now() + created_at := now.Add(-4 * OneWeek) + last_update_at := now.Add(-2 * OneWeek) + + vector.AppendFixed[types.Timestamp](bat.Vecs[7], types.UnixToTimestamp(last_update_at.Unix()), false, mp) + vector.AppendFixed[types.Timestamp](bat.Vecs[8], types.UnixToTimestamp(created_at.Unix()), false, mp) + + bat.SetRowCount(1) + return executor.Result{Mp: mp, Batches: []*batch.Batch{bat}}, nil + }) + defer stub4.Reset() + + // runSavestatusSql + stub5 := gostub.Stub(&runSaveStatusSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + fmt.Println(sql) + return executor.Result{}, nil + }) + defer stub5.Reset() + + exec, err := NewIndexUpdateTaskExecutor(ctx, cnUUID, cnEngine, cnClient, mp) + require.NoError(t, err) + + err = exec.run(ctx) + require.NoError(t, err) +} + +func TestIndexUpdateTaskInfoSaveStatusError(t *testing.T) { + + tableid := uint64(1) + dbname := "test" + tablename := "test_orig_tbl" + indexname := "ivf_idx" + + info := &IndexUpdateTaskInfo{ + DbName: dbname, + TableName: tablename, + IndexName: indexname, + Action: Action_Ivfflat_Reindex, + AccountId: catalog.System_Account, + TableId: tableid, + Metadata: nil, + LastUpdateAt: nil, + } + + { + // runSavestatusSql + stub5 := gostub.Stub(&runSaveStatusSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + fmt.Println(sql) + return executor.Result{}, nil + }) + defer stub5.Reset() + + err := info.saveStatus(nil, true, "reason", moerr.NewInternalErrorNoCtx("fake error")) + require.NoError(t, err) + + } + + { + // runSavestatusSql + stub5 := gostub.Stub(&runSaveStatusSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + fmt.Println(sql) + return executor.Result{}, moerr.NewInternalErrorNoCtx("fake sql error") + }) + defer stub5.Reset() + + err := info.saveStatus(nil, true, "reason", nil) + require.Error(t, err) + + } + +} + +func TestCmdNoDefine(t *testing.T) { + //ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, catalog.System_Account) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + //catalog.SetupDefines("") + //cnEngine, cnClient, _ := testengine.New(ctx) + cnUUID := "a-b-c-d" + + { + err := RenameSrcTable(ctx, cnUUID, nil, 0, 0, "old", "new") + require.Error(t, err) + } + + { + err := UnregisterUpdateByTableId(ctx, cnUUID, nil, 0) + require.Error(t, err) + } + { + err := UnregisterUpdateByDbName(ctx, cnUUID, nil, "") + require.Error(t, err) + } + { + err := UnregisterUpdate(ctx, cnUUID, nil, 0, "idx", "action") + require.Error(t, err) + } + { + err := RegisterUpdate(ctx, cnUUID, nil, 0, "db", "tbl", "idx", "action", "meta") + require.Error(t, err) + } + +} + +func TestCmdSqlError(t *testing.T) { + ctx := context.WithValue(context.Background(), defines.TenantIDKey{}, catalog.System_Account) + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + // runCmdSql + stub1 := gostub.Stub(&runCmdSql, func(sqlproc *sqlexec.SqlProcess, sql string) (executor.Result, error) { + fmt.Println(sql) + return executor.Result{}, moerr.NewInternalErrorNoCtx("fake sql error") + }) + defer stub1.Reset() + + //catalog.SetupDefines("") + //cnEngine, cnClient, _ := testengine.New(ctx) + cnUUID := "a-b-c-d" + + { + err := RenameSrcTable(ctx, cnUUID, nil, 0, 0, "old", "new") + require.Error(t, err) + } + + { + err := UnregisterUpdateByTableId(ctx, cnUUID, nil, 0) + require.Error(t, err) + } + { + err := UnregisterUpdateByDbName(ctx, cnUUID, nil, "") + require.Error(t, err) + } + { + err := UnregisterUpdate(ctx, cnUUID, nil, 0, "idx", "action") + require.Error(t, err) + } + { + err := RegisterUpdate(ctx, cnUUID, nil, 0, "db", "tbl", "idx", "action", "meta") + require.Error(t, err) + } + +} diff --git a/pkg/vectorindex/sqlexec/metadata.go b/pkg/vectorindex/sqlexec/metadata.go new file mode 100644 index 0000000000000..8ceb5147820f9 --- /dev/null +++ b/pkg/vectorindex/sqlexec/metadata.go @@ -0,0 +1,195 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package sqlexec + +import ( + "fmt" + + "github.com/bytedance/sonic" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/container/bytejson" +) + +// Metadata is used to replace ResolveVariableFunc for background job. +// 1. In the frontend, copy all the configurations required with MetadataWriter +// 2. Generate the JSON with MetadataWriter.Marshal() and save it into the database with JSON type +// 3. Use []byte from JSON column to construct ByteJson in Metadata +// 4. set ResolveVaribaleFunc() with Metadata.ResolveVariableFunc() when execute SQL + +const ( + Type_I8 = "I8" + Type_I64 = "I" + Type_F64 = "F" + Type_String = "S" +) + +type Metadata struct { + bj bytejson.ByteJson + typepath bytejson.Path + valpath bytejson.Path +} + +func NewMetadata(data []byte) (*Metadata, error) { + if data == nil { + return nil, moerr.NewInternalErrorNoCtx("metadata is null") + } + + var bj bytejson.ByteJson + bj.Unmarshal(data) + + typepath, _ := bytejson.ParseJsonPath("$.t") + valpath, _ := bytejson.ParseJsonPath("$.v") + + return &Metadata{bj: bj, typepath: typepath, valpath: valpath}, nil +} + +func NewMetadataFromJson(js string) (*Metadata, error) { + if len(js) == 0 { + return nil, moerr.NewInternalErrorNoCtx("metadata is null") + } + + bj, err := bytejson.ParseFromString(js) + if err != nil { + return nil, err + } + + typepath, _ := bytejson.ParseJsonPath("$.t") + valpath, _ := bytejson.ParseJsonPath("$.v") + + return &Metadata{bj: bj, typepath: typepath, valpath: valpath}, nil +} + +func (m *Metadata) GetString() string { + return m.bj.String() +} + +func (m *Metadata) ResolveVariableFunc(varName string, isSystemVar, isGlobalVar bool) (any, error) { + + if m.bj.IsNull() { + return nil, nil + } + + bj := m.bj + + path, err := bytejson.ParseJsonPath("$.cfg." + varName) + if err != nil { + return nil, err + } + + out := bj.QuerySimple([]*bytejson.Path{&path}) + if out.IsNull() { + return nil, moerr.NewInternalErrorNoCtx(fmt.Sprintf("key %s not found", varName)) + } + + typebj := out.QuerySimple([]*bytejson.Path{&m.typepath}) + if typebj.IsNull() { + return nil, moerr.NewInternalErrorNoCtx("type is null") + } + + valbj := out.QuerySimple([]*bytejson.Path{&m.valpath}) + if valbj.IsNull() { + return nil, moerr.NewInternalErrorNoCtx("value is null") + } + + switch string(typebj.GetString()) { + case Type_I8: + return int8(valbj.GetInt64()), nil + case Type_I64: + return valbj.GetInt64(), nil + case Type_F64: + return valbj.GetFloat64(), nil + case Type_String: + return string(valbj.GetString()), nil + } + return nil, moerr.NewInternalErrorNoCtx("invalid configuration type") +} + +func (m *Metadata) Modify(varName string, v any) error { + + if m.bj.IsNull() { + return moerr.NewInternalErrorNoCtx("bytejson is null") + } + + bj := m.bj + + path, err := bytejson.ParseJsonPath(fmt.Sprintf("$.cfg.%s", varName)) + if err != nil { + return err + } + + var cfgvalue string + switch v.(type) { + case float32, float64: + cfgvalue = fmt.Sprintf(`{"t":"%s", "v":%f}`, Type_F64, v) + case int8: + cfgvalue = fmt.Sprintf(`{"t":"%s", "v":%d}`, Type_I8, v) + case int, int32, int64: + cfgvalue = fmt.Sprintf(`{"t":"%s", "v":%d}`, Type_I64, v) + case string: + cfgvalue = fmt.Sprintf(`{"t":"%s", "v":"%s"}`, Type_String, v) + default: + return moerr.NewInternalErrorNoCtx("invalid value type") + } + + val, err := bytejson.ParseFromString(cfgvalue) + if err != nil { + return err + } + + bj, err = bj.Modify([]*bytejson.Path{&path}, []bytejson.ByteJson{val}, bytejson.JsonModifySet) + if err != nil { + return err + } + + //fmt.Println(cfgvalue) + //fmt.Println(bj.String()) + + m.bj = bj + + return nil +} + +type ConfigValue struct { + T string `json:"t"` + V any `json:"v"` +} + +type MetadataWriter struct { + Cfg map[string]ConfigValue `json:"cfg"` +} + +func NewMetadataWriter() *MetadataWriter { + return &MetadataWriter{Cfg: make(map[string]ConfigValue)} +} + +func (w *MetadataWriter) AddInt(key string, value int64) { + w.Cfg[key] = ConfigValue{T: Type_I64, V: value} +} + +func (w *MetadataWriter) AddInt8(key string, value int8) { + w.Cfg[key] = ConfigValue{T: Type_I8, V: value} +} + +func (w *MetadataWriter) AddString(key string, value string) { + w.Cfg[key] = ConfigValue{T: Type_String, V: value} +} + +func (w *MetadataWriter) AddFloat(key string, value float64) { + w.Cfg[key] = ConfigValue{T: Type_F64, V: value} +} + +func (w *MetadataWriter) Marshal() ([]byte, error) { + return sonic.Marshal(w) +} diff --git a/pkg/vectorindex/sqlexec/metadata_test.go b/pkg/vectorindex/sqlexec/metadata_test.go new file mode 100644 index 0000000000000..1eb4d0dda90d5 --- /dev/null +++ b/pkg/vectorindex/sqlexec/metadata_test.go @@ -0,0 +1,240 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package sqlexec + +import ( + "fmt" + "testing" + + "github.com/matrixorigin/matrixone/pkg/container/bytejson" + "github.com/stretchr/testify/require" +) + +func TestResolveVariableFunc(t *testing.T) { + jstr := `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}, + "kmeans_max_iteration":{"t":"I", "v":4}, + "ivf_threads_build":{"t":"I", "v":23}, + "action":{"t":"S", "v":"action string"}, + "float":{"t":"F", "v":23.3} + }, "action": "xxx"}` + + m, err := NewMetadataFromJson(jstr) + require.Nil(t, err) + + f := m.ResolveVariableFunc + + v1, err := f("kmeans_train_percent", false, false) + require.Nil(t, err) + require.Equal(t, v1, any(float64(10))) + + v2, err := f("kmeans_max_iteration", false, false) + require.Nil(t, err) + require.Equal(t, v2, any(int64(4))) + + v3, err := f("ivf_threads_build", false, false) + require.Nil(t, err) + require.Equal(t, v3, any(int64(23))) + + v4, err := f("float", false, false) + require.Nil(t, err) + require.Equal(t, v4, any(float64(23.3))) + + v5, err := f("action", false, false) + require.Nil(t, err) + require.Equal(t, v5, any("action string")) +} + +func TestMetadataWriter(t *testing.T) { + + writer := NewMetadataWriter() + writer.AddFloat("kmeans_train_percent", 10) + writer.AddInt("kmeans_max_iteration", 20) + writer.AddString("string_param", "hello") + writer.AddFloat("float_param", 44.56) + + js, err := writer.Marshal() + require.Nil(t, err) + + fmt.Println(string(js)) + + bj, err := bytejson.ParseFromString(string(js)) + require.Nil(t, err) + + bytes, err := bj.Marshal() + require.Nil(t, err) + + m, err := NewMetadata(bytes) + require.Nil(t, err) + + f := m.ResolveVariableFunc + + v1, err := f("kmeans_train_percent", false, false) + require.Nil(t, err) + require.Equal(t, v1, any(float64(10))) + + v2, err := f("kmeans_max_iteration", false, false) + require.Nil(t, err) + require.Equal(t, v2, any(int64(20))) + + v4, err := f("float_param", false, false) + require.Nil(t, err) + require.Equal(t, v4, any(float64(44.56))) + + v5, err := f("string_param", false, false) + require.Nil(t, err) + require.Equal(t, v5, any("hello")) + + err = m.Modify("kmeans_train_percent", 0.2) + require.Nil(t, err) + + v6, err := f("kmeans_train_percent", false, false) + require.Nil(t, err) + require.Equal(t, any(float64(0.2)), v6) + + err = m.Modify("string_param", "world") + require.Nil(t, err) + + v7, err := f("string_param", false, false) + require.Nil(t, err) + require.Equal(t, any("world"), v7) + + err = m.Modify("kmeans_max_iteration", 33) + require.Nil(t, err) + + v8, err := f("kmeans_max_iteration", false, false) + require.Nil(t, err) + require.Equal(t, any(int64(33)), v8) + +} + +func TestMetadataError(t *testing.T) { + + _, err := NewMetadata(nil) + require.NotNil(t, err) + +} +func TestMetadataFromJsonError(t *testing.T) { + _, err := NewMetadataFromJson("") + require.NotNil(t, err) + + _, err = NewMetadataFromJson("{\"a:3}") + require.NotNil(t, err) + + //require.Equal(t, false, json.Valid([]byte("{\"a:3}"))) +} + +func TestMetadataResolveError(t *testing.T) { + + { + // key not found + var bj bytejson.ByteJson + bytes, err := bj.Marshal() + require.Nil(t, err) + + m, err := NewMetadata(bytes) + require.Nil(t, err) + + _, err = m.ResolveVariableFunc("a", false, false) + require.NotNil(t, err) + fmt.Println(err) + } + + { + // invalid json path + var bj bytejson.ByteJson + bytes, err := bj.Marshal() + require.Nil(t, err) + + m, err := NewMetadata(bytes) + require.Nil(t, err) + + _, err = m.ResolveVariableFunc("[", false, false) + require.NotNil(t, err) + fmt.Println(err) + } + + { + // type is nill + //jstr := `{"cfg":{"kmeans_train_percent":{"t":"F", "v":10}}}` + jstr := `{"cfg":{"kmeans_train_percent":{"v":10}}}` + + m, err := NewMetadataFromJson(jstr) + require.Nil(t, err) + + _, err = m.ResolveVariableFunc("kmeans_train_percent", false, false) + require.NotNil(t, err) + fmt.Println(err) + + } + + { + // value is nill + jstr := `{"cfg":{"kmeans_train_percent":{"t":"F"}}}` + + m, err := NewMetadataFromJson(jstr) + require.Nil(t, err) + + _, err = m.ResolveVariableFunc("kmeans_train_percent", false, false) + require.NotNil(t, err) + fmt.Println(err) + + } + + { + // invalid type + jstr := `{"cfg":{"kmeans_train_percent":{"t":"Y", "v": 9}}}` + + m, err := NewMetadataFromJson(jstr) + require.Nil(t, err) + + _, err = m.ResolveVariableFunc("kmeans_train_percent", false, false) + require.NotNil(t, err) + fmt.Println(err) + + } + +} + +func TestMetadataModifyError(t *testing.T) { + + { + // key not found + var bj bytejson.ByteJson + bytes, err := bj.Marshal() + require.Nil(t, err) + + m, err := NewMetadata(bytes) + require.Nil(t, err) + + err = m.Modify("[", "v") + require.NotNil(t, err) + fmt.Println(err) + } + + { + // invalid value type + var bj bytejson.ByteJson + bytes, err := bj.Marshal() + require.Nil(t, err) + + m, err := NewMetadata(bytes) + require.Nil(t, err) + + err = m.Modify("a", bj) + require.NotNil(t, err) + fmt.Println(err) + } + +} diff --git a/pkg/vectorindex/sqlexec/sqlexec.go b/pkg/vectorindex/sqlexec/sqlexec.go index cb87ff1acc5cd..cd5ceff829176 100644 --- a/pkg/vectorindex/sqlexec/sqlexec.go +++ b/pkg/vectorindex/sqlexec/sqlexec.go @@ -280,7 +280,7 @@ func RunTxn(sqlproc *SqlProcess, execFunc func(executor.TxnExecutor) error) erro } } -func getTxn( +func GetTxn( ctx context.Context, cnEngine engine.Engine, cnTxnClient client.TxnClient, @@ -318,7 +318,7 @@ func RunTxnWithSqlContext(ctx context.Context, newctx, cancel := context.WithTimeout(newctx, duration) defer cancel() - txnOp, err := getTxn(newctx, cnEngine, cnTxnClient, "runTxnWithSqlContext") + txnOp, err := GetTxn(newctx, cnEngine, cnTxnClient, "runTxnWithSqlContext") if err != nil { return err } diff --git a/pkg/vectorindex/types.go b/pkg/vectorindex/types.go index cffacdc960194..b0d863ecf35c8 100644 --- a/pkg/vectorindex/types.go +++ b/pkg/vectorindex/types.go @@ -60,13 +60,13 @@ type IndexTableConfig struct { IndexCapacity int64 `json:"index_capacity"` // IVF related - EntriesTable string `json:"entries"` - DataSize int64 `json:"datasize"` - Nprobe uint `json:"nprobe"` - PKeyType int32 `json:"pktype"` - KeyPartType int32 `json:"parttype"` - KmeansTrainPercent int64 `json:"kmeans_train_percent"` - KmeansMaxIteration int64 `json:"kmeans_max_iteration"` + EntriesTable string `json:"entries"` + DataSize int64 `json:"datasize"` + Nprobe uint `json:"nprobe"` + PKeyType int32 `json:"pktype"` + KeyPartType int32 `json:"parttype"` + KmeansTrainPercent float64 `json:"kmeans_train_percent"` + KmeansMaxIteration int64 `json:"kmeans_max_iteration"` } // HNSW specified parameters diff --git a/proto/plan.proto b/proto/plan.proto index 20cf44ce4d290..c11eb6521acc0 100644 --- a/proto/plan.proto +++ b/proto/plan.proto @@ -1360,6 +1360,7 @@ message AlterTableAlterReIndex { string table_name = 2; string index_name = 3; int64 index_algo_param_list = 4; + bool force_sync = 5; } message AlterTableComment { diff --git a/proto/task.proto b/proto/task.proto index f63bed7a3c40a..fc8fa9e564ad6 100644 --- a/proto/task.proto +++ b/proto/task.proto @@ -76,6 +76,8 @@ option (gogoproto.protosizer_all) = true; MOTableStats = 8; // ISCP task ISCPExecutor = 9; + // Index Update task + IndexUpdateTaskExecutor = 10; } // TaskMetadata is a task metadata abstraction that can be scheduled for execution at any CN node. @@ -241,4 +243,4 @@ message Details { [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; google.protobuf.Timestamp LastRun = 13 [ (gogoproto.nullable) = false, (gogoproto.stdtime) = true ]; - } \ No newline at end of file + } diff --git a/test/distributed/cases/disttae/mo_table_stats/mo_table_stats3.result b/test/distributed/cases/disttae/mo_table_stats/mo_table_stats3.result index 883cb95921ad5..d646951d9f6bc 100644 --- a/test/distributed/cases/disttae/mo_table_stats/mo_table_stats3.result +++ b/test/distributed/cases/disttae/mo_table_stats/mo_table_stats3.result @@ -1,46 +1,47 @@ use mo_catalog; show table status; Name Engine Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment Role_id Role_name -mo_database Tae Dynamic 8 0 2158 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_tables Tae Dynamic 129 0 52461 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_columns Tae Dynamic 1384 0 71602 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_account Tae Dynamic 1 0 1399 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_branch_metadata Tae Dynamic 266 0 6557 0 0 NULL 0 2025-10-18 16:55:23 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_cache null null null null null null null null null 2025-09-01 10:22:32 null null null null null VIEW 0 moadmin -mo_cdc_task Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_cdc_watermark Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_configurations null null null null null null null null null 2025-09-01 10:22:32 null null null null null VIEW 0 moadmin -mo_data_key Tae Dynamic 1 0 1218 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_foreign_keys Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_indexes Tae Dynamic 116 0 6496 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_iscp_log Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_locks null null null null null null null null null 2025-09-01 10:22:32 null null null null null VIEW 0 moadmin -mo_merge_settings Tae Dynamic 1 0 1504 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_mysql_compatibility_mode Tae Dynamic 4 0 1451 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_partition_metadata Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_partition_tables Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_pitr Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_pubs Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_role Tae Dynamic 2 0 1086 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_role_grant Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_role_privs Tae Dynamic 35 0 2713 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_sessions null null null null null null null null null 2025-09-01 10:22:32 null null null null null VIEW 0 moadmin -mo_shards Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_shards_metadata Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_snapshots Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_stages Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_stored_procedure Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_subs Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_table_partitions Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_table_stats_alpha Tae Dynamic 103 0 9921 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_transactions null null null null null null null null null 2025-09-01 10:22:32 null null null null null VIEW 0 moadmin -mo_upgrade Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_upgrade_tenant Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_user Tae Dynamic 2 0 2159 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_user_defined_function Tae Dynamic 0 0 0 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_user_grant Tae Dynamic 4 0 1038 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin -mo_variables null null null null null null null null null 2025-09-01 10:22:32 null null null null null VIEW 0 moadmin -mo_version Tae Dynamic 1 0 1073 0 0 NULL 0 2025-09-01 10:22:32 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_database Tae Dynamic 8 0 2325 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_tables Tae Dynamic 133 0 60309 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_columns Tae Dynamic 1409 0 78035 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_account Tae Dynamic 1 0 1398 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_branch_metadata Tae Dynamic 102 0 3845 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_cache null null null null null null null null null 2025-11-21 09:44:39 null null null null null VIEW 0 moadmin +mo_cdc_task Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_cdc_watermark Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_configurations null null null null null null null null null 2025-11-21 09:44:39 null null null null null VIEW 0 moadmin +mo_data_key Tae Dynamic 1 0 1218 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_foreign_keys Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_indexes Tae Dynamic 127 0 9306 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_iscp_log Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_locks null null null null null null null null null 2025-11-21 09:44:39 null null null null null VIEW 0 moadmin +mo_merge_settings Tae Dynamic 1 0 1504 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_mysql_compatibility_mode Tae Dynamic 4 0 1818 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_partition_metadata Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_partition_tables Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_pitr Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_pubs Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_role Tae Dynamic 2 0 1083 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_role_grant Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_role_privs Tae Dynamic 35 0 2715 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_sessions null null null null null null null null null 2025-11-21 09:44:39 null null null null null VIEW 0 moadmin +mo_shards Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_shards_metadata Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_snapshots Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_stages Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_stored_procedure Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_subs Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_table_partitions Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_table_stats_alpha Tae Dynamic 93 0 9994 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_transactions null null null null null null null null null 2025-11-21 09:44:39 null null null null null VIEW 0 moadmin +mo_upgrade Tae Dynamic 1 0 1578 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_upgrade_tenant Tae Dynamic 1 0 1134 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_user Tae Dynamic 2 0 2152 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_user_defined_function Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_user_grant Tae Dynamic 4 0 1039 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_variables null null null null null null null null null 2025-11-21 09:44:39 null null null null null VIEW 0 moadmin +mo_version Tae Dynamic 2 0 2133 0 0 NULL 0 2025-11-21 09:44:39 NULL NULL utf8mb4_bin NULL 0 moadmin +mo_index_update Tae Dynamic 0 0 0 0 0 NULL 0 2025-11-24 12:43:01 NULL NULL utf8mb4_bin NULL 0 moadmin drop database if exists testdb; create database testdb; use testdb; @@ -48,7 +49,7 @@ create table t1 (a int); insert into t1 select * from generate_series(1, 100*1000)g; show table status; Name Engine Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment Role_id Role_name -t1 Tae Dynamic 100000 0 804690 0 0 NULL 0 2025-09-02 15:36:09 NULL NULL utf8mb4_bin NULL 0 moadmin +t1 Tae Dynamic 100000 0 804690 0 0 NULL 0 2025-11-24 13:57:41 NULL NULL utf8mb4_bin NULL 0 moadmin drop database testdb; select mo_ctl("cn", "MoTableStats", "recomputing:acc.0"); mo_ctl(cn, MoTableStats, recomputing:acc.0) diff --git a/test/distributed/cases/dml/select/sp_table.result b/test/distributed/cases/dml/select/sp_table.result index 2956077a4bb28..e1bdf77de8e02 100644 --- a/test/distributed/cases/dml/select/sp_table.result +++ b/test/distributed/cases/dml/select/sp_table.result @@ -5,7 +5,6 @@ select relname,relkind from mo_catalog.mo_tables where reldatabase = 'mo_catalog relname relkind mo_account r mo_branch_metadata r -mo_iscp_log r mo_cache v mo_cdc_task r mo_cdc_watermark r @@ -15,12 +14,15 @@ mo_data_key r mo_database r mo_foreign_keys r mo_increment_columns +mo_index_update r mo_indexes r +mo_iscp_log r mo_locks v mo_merge_settings r mo_mysql_compatibility_mode r mo_partition_metadata r mo_partition_tables r +mo_pitr r mo_pubs r mo_role r mo_role_grant r @@ -43,4 +45,3 @@ mo_user_defined_function r mo_user_grant r mo_variables v mo_version r -mo_pitr r diff --git a/test/distributed/cases/dml/show/database_statistics.result b/test/distributed/cases/dml/show/database_statistics.result index c37390903158a..12df7cbc2ae73 100644 --- a/test/distributed/cases/dml/show/database_statistics.result +++ b/test/distributed/cases/dml/show/database_statistics.result @@ -9,7 +9,7 @@ Number of tables in mysql 6 show table_number from mo_catalog; Number of tables in mo_catalog -40 +41 show table_number from system; Number of tables in system 6 diff --git a/test/distributed/cases/dml/show/show.result b/test/distributed/cases/dml/show/show.result index 8d0627cfafc2a..3f574afd79ec7 100644 --- a/test/distributed/cases/dml/show/show.result +++ b/test/distributed/cases/dml/show/show.result @@ -225,8 +225,7 @@ use mo_catalog; show tables; Tables_in_mo_catalog mo_account -mo_branch_metadata mo_branch_metadata -mo_iscp_log +mo_branch_metadata mo_cache mo_cdc_task mo_cdc_watermark @@ -235,7 +234,9 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes +mo_iscp_log mo_locks mo_merge_settings mo_mysql_compatibility_mode @@ -266,7 +267,7 @@ mo_variables mo_version show table_number from mo_catalog; Number of tables in mo_catalog -39 +41 show column_number from mo_database; Number of columns in mo_database 9 diff --git a/test/distributed/cases/metadata/information_schema.result b/test/distributed/cases/metadata/information_schema.result index 1f45d52e436ed..89652e2cf9b0c 100644 --- a/test/distributed/cases/metadata/information_schema.result +++ b/test/distributed/cases/metadata/information_schema.result @@ -32,6 +32,7 @@ def mo_catalog mo_columns BASE TABLE Tae def mo_catalog mo_data_key BASE TABLE Tae def mo_catalog mo_database BASE TABLE Tae def mo_catalog mo_foreign_keys BASE TABLE Tae +def mo_catalog mo_index_update BASE TABLE Tae def mo_catalog mo_indexes BASE TABLE Tae def mo_catalog mo_iscp_log BASE TABLE Tae def mo_catalog mo_merge_settings BASE TABLE Tae diff --git a/test/distributed/cases/snapshot/clone/clone_sys_db_table_to_new_db_table.result b/test/distributed/cases/snapshot/clone/clone_sys_db_table_to_new_db_table.result index 34893bfb1e38f..7708be303bf11 100644 --- a/test/distributed/cases/snapshot/clone/clone_sys_db_table_to_new_db_table.result +++ b/test/distributed/cases/snapshot/clone/clone_sys_db_table_to_new_db_table.result @@ -138,6 +138,7 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes mo_iscp_log mo_locks @@ -188,6 +189,7 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes mo_iscp_log mo_locks diff --git a/test/distributed/cases/snapshot/cluster/restore_cluster_table.result b/test/distributed/cases/snapshot/cluster/restore_cluster_table.result index 714d91f9fa9c5..e61656f248a35 100644 --- a/test/distributed/cases/snapshot/cluster/restore_cluster_table.result +++ b/test/distributed/cases/snapshot/cluster/restore_cluster_table.result @@ -10,7 +10,6 @@ drop database if exists db01; create database db01; use db01; drop table if exists index03; - create table index03 ( emp_no int not null, birth_date date not null, @@ -25,12 +24,10 @@ partition p02 values less than (200001), partition p03 values less than (300001), partition p04 values less than (400001) ); - insert into index03 values (9001,'1980-12-17', 'SMITH', 'CLERK', 'F', '2008-12-17'), (9002,'1981-02-20', 'ALLEN', 'SALESMAN', 'F', '2008-02-20'), (9003,'1991-02-20', 'Bob', 'TEACHER', 'M', '2008-02-20'), (9004,'1999-02-20', 'MARY', 'PROGRAMMER', 'M', '2008-02-20'); - select * from index03; emp_no birth_date first_name last_name gender hire_date 9001 1980-12-17 SMITH CLERK F 2008-12-17 @@ -225,8 +222,8 @@ id val 3 c select * from mo_catalog.mo_stored_procedure; proc_id name creator args lang body db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci -2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop database if exists udf_db2; create database udf_db2; use udf_db2; @@ -235,15 +232,15 @@ language sql as '$1 + $2'; select * from mo_catalog.mo_user_defined_function; function_id name owner args rettype body language db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop stage if exists my_ext_stage; create stage my_ext_stage URL='s3://load/files/'; drop stage if exists my_ext_stage1; create stage my_ext_stage1 URL='s3://load/files/' CREDENTIALS={'AWS_KEY_ID'='1a2b3c' ,'AWS_SECRET_KEY'='4x5y6z'}; select * from mo_catalog.mo_stages; stage_id stage_name url stage_credentials stage_status created_time comment -1 my_ext_stage s3://load/files/ in_use 2025-07-19 05:48:46 -2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-07-19 05:48:46 +1 my_ext_stage s3://load/files/ in_use 2025-11-24 15:27:40 +2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-11-24 15:27:40 drop database if exists test01; drop database if exists test02; drop database if exists test03; @@ -379,7 +376,7 @@ drop snapshot if exists cluster_level_snapshot; create snapshot cluster_level_snapshot for cluster; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -cluster_level_snapshot 2025-07-19 05:48:46.551465 cluster +cluster_level_snapshot 2025-11-24 15:27:40.568684999 cluster use db02; alter table departments add column newcolumn int after department_id; show create table departments; @@ -410,7 +407,6 @@ show tables; Tables_in_mo_catalog mo_account mo_branch_metadata -mo_iscp_log mo_cache mo_cdc_task mo_cdc_watermark @@ -419,7 +415,9 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes +mo_iscp_log mo_locks mo_merge_settings mo_mysql_compatibility_mode @@ -461,14 +459,14 @@ drop function udf_db2.`addAB`(x int, y int); drop stage if exists my_ext_stage; select * from mo_catalog.mo_stages; stage_id stage_name url stage_credentials stage_status created_time comment -2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-07-19 05:48:46 +2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-11-24 15:27:40 use udf_db2; create function `add`(x int, y int) returns int language sql as '$1 + $2'; select * from mo_catalog.mo_user_defined_function; function_id name owner args rettype body language db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -2 add 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-07-19 05:48:47 2025-07-19 05:48:47 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 add 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop database test01; use test02; select * from v01; @@ -521,7 +519,6 @@ show tables; Tables_in_mo_catalog mo_account mo_branch_metadata -mo_iscp_log mo_cache mo_cdc_task mo_cdc_watermark @@ -530,7 +527,9 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes +mo_iscp_log mo_locks mo_merge_settings mo_mysql_compatibility_mode @@ -568,15 +567,15 @@ select * from repub01.pri01; Unknown database repub01 select * from mo_catalog.mo_stored_procedure; proc_id name creator args lang body db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci -2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci select * from mo_catalog.mo_stages; stage_id stage_name url stage_credentials stage_status created_time comment -1 my_ext_stage s3://load/files/ in_use 2025-07-19 05:48:46 -2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-07-19 05:48:46 +1 my_ext_stage s3://load/files/ in_use 2025-11-24 15:27:40 +2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-11-24 15:27:40 select * from mo_catalog.mo_user_defined_function; function_id name owner args rettype body language db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci select * from test01.sales; id sale_date amount 1 2018-12-25 100.00 @@ -611,8 +610,8 @@ drop database test; drop database repub02; select * from mo_catalog.mo_stored_procedure; proc_id name creator args lang body db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci -2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:48:46 2025-07-19 05:48:46 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:27:40 2025-11-24 15:27:40 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop database if exists udf_db2; drop function `addab`(x int, y int); function addab doesn't exist @@ -642,7 +641,7 @@ drop snapshot if exists cluster_level_snapshot; create snapshot cluster_level_snapshot for cluster; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -cluster_level_snapshot 2025-07-19 05:48:50.059533 cluster +cluster_level_snapshot 2025-11-24 15:27:42.746783999 cluster use mo_catalog; drop table if exists t2; create cluster table t2(a int); @@ -667,7 +666,7 @@ drop snapshot if exists cluster_level_snapshot; create snapshot cluster_level_snapshot for cluster; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -cluster_level_snapshot 2025-07-19 05:48:50.230761 cluster +cluster_level_snapshot 2025-11-24 15:27:42.914881999 cluster use mo_catalog; drop table if exists t2; create cluster table t2(a int); @@ -692,7 +691,7 @@ drop snapshot if exists account_level_snapshot; create snapshot account_level_snapshot for account; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -account_level_snapshot 2025-07-19 05:48:50.418719 account sys +account_level_snapshot 2025-11-24 15:27:43.112728999 account sys use mo_catalog; drop table if exists t2; create cluster table t2(a int); diff --git a/test/distributed/cases/snapshot/cluster_level_snapshot_restore_cluster.result b/test/distributed/cases/snapshot/cluster_level_snapshot_restore_cluster.result index 75f8abfe70964..1b4344ac3abea 100644 --- a/test/distributed/cases/snapshot/cluster_level_snapshot_restore_cluster.result +++ b/test/distributed/cases/snapshot/cluster_level_snapshot_restore_cluster.result @@ -10,7 +10,6 @@ drop database if exists db01; create database db01; use db01; drop table if exists index03; - create table index03 ( emp_no int not null, birth_date date not null, @@ -25,12 +24,10 @@ partition p02 values less than (200001), partition p03 values less than (300001), partition p04 values less than (400001) ); - insert into index03 values (9001,'1980-12-17', 'SMITH', 'CLERK', 'F', '2008-12-17'), (9002,'1981-02-20', 'ALLEN', 'SALESMAN', 'F', '2008-02-20'), (9003,'1991-02-20', 'Bob', 'TEACHER', 'M', '2008-02-20'), (9004,'1999-02-20', 'MARY', 'PROGRAMMER', 'M', '2008-02-20'); - select * from index03; emp_no birth_date first_name last_name gender hire_date 9001 1980-12-17 SMITH CLERK F 2008-12-17 @@ -201,7 +198,7 @@ drop publication if exists pub02; create publication pub02 database repub02 account acc02 comment 'publish before creating snapshot'; show publications; publication database tables sub_account subscribed_accounts create_time update_time comments -pub02 repub02 * acc02 2025-07-18 22:49:30 null publish before creating snapshot +pub02 repub02 * acc02 2025-11-24 15:26:50 null publish before creating snapshot select * from mo_catalog.mo_pubs; SQL parser error: table "mo_pubs" does not exist drop database if exists procedure_test; @@ -232,8 +229,8 @@ id val 3 c select * from mo_catalog.mo_stored_procedure; proc_id name creator args lang body db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci -2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop database if exists sub01; create database sub01 from acc01 publication pub02; show databases; @@ -270,15 +267,15 @@ language sql as '$1 + $2'; select * from mo_catalog.mo_user_defined_function; function_id name owner args rettype body language db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop stage if exists my_ext_stage; create stage my_ext_stage URL='s3://load/files/'; drop stage if exists my_ext_stage1; create stage my_ext_stage1 URL='s3://load/files/' CREDENTIALS={'AWS_KEY_ID'='1a2b3c' ,'AWS_SECRET_KEY'='4x5y6z'}; select * from mo_catalog.mo_stages; stage_id stage_name url stage_credentials stage_status created_time comment -1 my_ext_stage s3://load/files/ in_use 2025-07-19 05:49:30 -2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-07-19 05:49:30 +1 my_ext_stage s3://load/files/ in_use 2025-11-24 15:26:50 +2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-11-24 15:26:50 drop database if exists test01; drop database if exists test02; drop database if exists test03; @@ -414,7 +411,7 @@ drop snapshot if exists cluster_level_snapshot; create snapshot cluster_level_snapshot for cluster; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -cluster_level_snapshot 2025-07-19 05:49:30.64199 cluster +cluster_level_snapshot 2025-11-24 15:26:50.660701999 cluster use db02; alter table departments add column newcolumn int after department_id; show create table departments; @@ -445,7 +442,6 @@ show tables; Tables_in_mo_catalog mo_account mo_branch_metadata -mo_iscp_log mo_cache mo_cdc_task mo_cdc_watermark @@ -454,7 +450,9 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes +mo_iscp_log mo_locks mo_merge_settings mo_mysql_compatibility_mode @@ -497,14 +495,14 @@ drop function udf_db2.`addAB`(x int, y int); drop stage if exists my_ext_stage; select * from mo_catalog.mo_stages; stage_id stage_name url stage_credentials stage_status created_time comment -2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-07-19 05:49:30 +2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-11-24 15:26:50 use udf_db2; create function `add`(x int, y int) returns int language sql as '$1 + $2'; select * from mo_catalog.mo_user_defined_function; function_id name owner args rettype body language db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -2 add 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 add 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci drop database test01; use test02; select * from v01; @@ -562,7 +560,6 @@ show tables; Tables_in_mo_catalog mo_account mo_branch_metadata -mo_iscp_log mo_cache mo_cdc_task mo_cdc_watermark @@ -571,7 +568,9 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes +mo_iscp_log mo_locks mo_merge_settings mo_mysql_compatibility_mode @@ -617,15 +616,15 @@ deptno dname loc 40 OPERATIONS BOSTON select * from mo_catalog.mo_stored_procedure; proc_id name creator args lang body db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci -2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 test_if_hit_elseif_first_elseif null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +2 test_if_hit_if null [] sql begin DECLARE v1 INT; SET v1 = 5; IF v1 > 5 THEN select * from tbh1; ELSEIF v1 = 5 THEN select * from tbh2; ELSEIF v1 = 4 THEN select * from tbh2 limit 1; ELSE select * from tbh3; END IF; end procedure_test test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 PROCEDURE DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci select * from mo_catalog.mo_stages; stage_id stage_name url stage_credentials stage_status created_time comment -1 my_ext_stage s3://load/files/ in_use 2025-07-19 05:49:30 -2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-07-19 05:49:30 +1 my_ext_stage s3://load/files/ in_use 2025-11-24 15:26:50 +2 my_ext_stage1 s3://load/files/ AWS_KEY_ID=1a2b3c,AWS_SECRET_KEY=4x5y6z in_use 2025-11-24 15:26:50 select * from mo_catalog.mo_user_defined_function; function_id name owner args rettype body language db definer modified_time created_time type security_type comment character_set_client collation_connection database_collation -1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-07-19 05:49:30 2025-07-19 05:49:30 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +1 addab 2 [{"name": "x", "type": "int"}, {"name": "y", "type": "int"}] int $1 + $2 sql udf_db2 test_account 2025-11-24 15:26:50 2025-11-24 15:26:50 FUNCTION DEFINER utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci use test02; select * from v01; id sale_date amount diff --git a/test/distributed/cases/snapshot/snapshotRead.result b/test/distributed/cases/snapshot/snapshotRead.result index 7a3bb527bcce5..676c4aaadb1ee 100644 --- a/test/distributed/cases/snapshot/snapshotRead.result +++ b/test/distributed/cases/snapshot/snapshotRead.result @@ -50,7 +50,7 @@ count(*) 10 show snapshots where SNAPSHOT_NAME = 'sp01'; snapshot_name timestamp snapshot_level account_name database_name table_name -sp01 2025-07-19 05:51:16.160408 account sys +sp01 2025-11-24 14:02:05.608340999 account sys insert into snapshot01 values(11, 100.00, 8899001122, 101.24, 156.79); select count(*) from snapshot01; count(*) @@ -181,7 +181,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = 'sp01'} where datname = 'test'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312804 test def create database test 0 1 2025-07-18 22:51:16 0 +318358 test def create database test 0 1 2025-11-24 14:02:05 0 select attname from mo_catalog.mo_columns{snapshot = 'sp01'} where att_database = 'test'; attname col1 @@ -242,15 +242,15 @@ drop snapshot if exists sp03; create snapshot sp03 for account; show snapshots where account_name = 'sys'; snapshot_name timestamp snapshot_level account_name database_name table_name -sp03 2025-07-19 05:51:16.356894 account sys +sp03 2025-11-24 14:02:05.800221999 account sys insert into snapshot03 values(3,'sfhuwe',1,1); insert into snapshot03 values(4,'37829901k3d',2,2); drop snapshot if exists sp04; create snapshot sp04 for account; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -sp04 2025-07-19 05:51:16.421313 account sys -sp03 2025-07-19 05:51:16.356894 account sys +sp04 2025-11-24 14:02:05.820413999 account sys +sp03 2025-11-24 14:02:05.800221999 account sys select * from snapshot03; col1 col2 col3 col4 1 sfhuwe 1 1 @@ -296,9 +296,9 @@ drop snapshot if exists sp05; create snapshot sp05 for account; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -sp05 2025-07-19 05:51:16.566748 account sys -sp04 2025-07-19 05:51:16.421313 account sys -sp03 2025-07-19 05:51:16.356894 account sys +sp05 2025-11-24 14:02:05.888280999 account sys +sp04 2025-11-24 14:02:05.820413999 account sys +sp03 2025-11-24 14:02:05.800221999 account sys select count(*) from snapshot03 {snapshot = 'sp05'}; count(*) 5 @@ -314,7 +314,7 @@ count(*) 3 select * from mo_catalog.mo_database{snapshot = 'sp04'} where datname = 'test'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312804 test def create database test 0 1 2025-07-18 22:51:16 0 +318358 test def create database test 0 1 2025-11-24 14:02:05 0 select attname from mo_catalog.mo_columns{snapshot = 'sp05'} where att_database = 'test'; attname __mo_index_idx_col @@ -354,7 +354,7 @@ drop snapshot if exists snap01; create snapshot snap01 for account acc01; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -snap01 2025-07-19 05:51:17.187591 account acc01 +snap01 2025-11-24 14:02:06.130265999 account acc01 use test01; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME @@ -365,7 +365,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = 'snap01'} where datname = 'test01'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312891 test01 def create database test01 2 2 2025-07-18 22:51:17 293 +318446 test01 def create database test01 2 2 2025-11-24 14:02:06 20030 select attname from mo_catalog.mo_columns{snapshot = 'snap01'} where att_database = 'test01'; attname col1 @@ -379,7 +379,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = 'snap01'} where datname = 'test01'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312891 test01 def create database test01 2 2 2025-07-18 22:51:17 293 +318446 test01 def create database test01 2 2 2025-11-24 14:02:06 20030 select attname from mo_catalog.mo_columns{snapshot = 'snap01'} where att_database = 'test01'; attname col1 @@ -406,10 +406,10 @@ drop snapshot if exists snap02; create snapshot snap02 for account acc02; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -snap02 2025-07-19 05:51:17.61779 account acc02 +snap02 2025-11-24 14:02:06.510352999 account acc02 show snapshots where account_name = 'acc02'; snapshot_name timestamp snapshot_level account_name database_name table_name -snap02 2025-07-19 05:51:17.61779 account acc02 +snap02 2025-11-24 14:02:06.510352999 account acc02 select count(*) from acc02_test01 {snapshot = 'snap02'}; count(*) 3 @@ -453,7 +453,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = 'snap02'} where datname = 'test02'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312969 test02 def create database test02 2 2 2025-07-18 22:51:17 294 +318525 test02 def create database test02 2 2 2025-11-24 14:02:06 20031 select attname from mo_catalog.mo_columns{snapshot = 'snap02'} where att_database = 'test02'; attname col1 @@ -573,7 +573,7 @@ count(*) 2 select * from mo_catalog.mo_database{snapshot = 'sp04'} where datname = 'test03'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312973 test03 def create database test03 0 1 2025-07-18 22:51:17 0 +318529 test03 def create database test03 0 1 2025-11-24 14:02:06 0 select attname from mo_catalog.mo_columns{snapshot = 'sp04'} where att_database = 'test03'; attname employeeNumber @@ -607,10 +607,10 @@ drop snapshot if exists sp06; create snapshot sp06 for account; select count(*) from mo_catalog.mo_tables{snapshot = sp06} where reldatabase = 'mo_catalog'; count(*) -55 +56 select * from mo_catalog.mo_database{snapshot = sp06} where datname = 'mo_catalog'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -1 mo_catalog mo_catalog 0 0 2025-07-18 22:30:42 0 +1 mo_catalog mo_catalog 0 0 2025-11-21 09:44:39 0 drop table cluster01; drop snapshot sp06; drop database if exists test03; @@ -653,7 +653,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = 'sp06'} where datname = 'test03'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -312978 test03 def create database test03 0 1 2025-07-18 22:51:18 0 +318534 test03 def create database test03 0 1 2025-11-24 14:02:06 0 select attname from mo_catalog.mo_columns{snapshot = 'sp06'} where att_database = 'test03'; attname col1 @@ -674,21 +674,16 @@ drop publication publication01; drop snapshot sp06; drop table pub01; drop table if exists pt_table; - create table pt_table(col1 tinyint,col2 smallint,col3 int,clo4 bigint,col5 tinyint unsigned,col6 smallint unsigned,col7 int unsigned,col8 bigint unsigned,col9 float,col10 double,col11 varchar(255),col12 Date,col13 DateTime,col14 timestamp,col15 bool,col16 decimal(5,2),col17 text,col18 varchar(255),col19 varchar(255),col20 text)partition by key(col13)partitions 10; - load data infile '$resources/external_table_file/pt_table_data.csv' into table pt_table fields terminated by ','; - select count(*) from pt_table; count(*) 11 drop snapshot if exists sp07; - create snapshot sp07 for account; - show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -sp07 2025-07-17 19:14:27.430645 account sys +sp07 2025-11-24 14:02:07.320326999 account sys select count(*) from pt_table{snapshot = 'sp07'}; count(*) 11 @@ -700,7 +695,7 @@ count(*) 11 select * from mo_catalog.mo_database{snapshot = 'sp07'} where datname = 'test03'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -313119 test03 def create database test03 0 1 2025-07-17 12:14:27 0 +318534 test03 def create database test03 0 1 2025-11-24 14:02:06 0 select attname from mo_catalog.mo_columns{snapshot = 'sp07'} where att_database = 'test03'; attname col1 @@ -946,9 +941,7 @@ col20 __mo_fake_pk_col __mo_rowid drop snapshot sp07; - drop table pt_table; - drop database test03; drop database if exists test04; create database test04; @@ -1021,7 +1014,7 @@ count(*) drop account test_tenant_1; select * from mo_catalog.mo_database{snapshot = 'sp08'} where datname = 'test04'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -313058 test04 def create database test04 0 1 2025-07-18 22:51:18 0 +318626 test04 def create database test04 0 1 2025-11-24 14:02:07 0 select attname from mo_catalog.mo_columns{snapshot = 'sp08'} where att_database = 'test04'; attname col1 @@ -1040,7 +1033,7 @@ count(*) 3 select * from mo_catalog.mo_database{snapshot = 'sp08'} where datname = 'test04'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -313058 test04 def create database test04 0 1 2025-07-18 22:51:18 0 +318626 test04 def create database test04 0 1 2025-11-24 14:02:07 0 select attname from mo_catalog.mo_columns{snapshot = 'sp08'} where att_database = 'test04'; attname col1 @@ -1083,7 +1076,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = `binary`} where datname = 'test05'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -313141 test05 def create database test05 0 1 2025-07-18 22:51:19 0 +318710 test05 def create database test05 0 1 2025-11-24 14:02:07 0 select attname from mo_catalog.mo_columns{snapshot = `binary`} where att_database = 'test05'; attname a @@ -1106,7 +1099,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = consistent} where datname = 'test05'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -313141 test05 def create database test05 0 1 2025-07-18 22:51:19 0 +318710 test05 def create database test05 0 1 2025-11-24 14:02:07 0 select attname from mo_catalog.mo_columns{snapshot = consistent} where att_database = 'test05'; attname dvalue @@ -1131,8 +1124,8 @@ drop snapshot if exists sp09; create snapshot sp09 for account; show snapshots; SNAPSHOT_NAME TIMESTAMP SNAPSHOT_LEVEL ACCOUNT_NAME DATABASE_NAME TABLE_NAME -sp09 2025-07-19 05:51:19.253073 account sys -sp08 2025-07-19 05:51:18.718836 account sys +sp09 2025-11-24 14:02:07.946299999 account sys +sp08 2025-11-24 14:02:07.592319999 account sys select count(*) from tran01{snapshot = 'sp09'}; count(*) 3 @@ -1141,7 +1134,7 @@ count(*) 1 select * from mo_catalog.mo_database{snapshot = 'sp09'} where datname = 'test06'; dat_id datname dat_catalog_name dat_createsql owner creator created_time account_id dat_type -313144 test06 def create database test06 0 1 2025-07-18 22:51:19 0 +318713 test06 def create database test06 0 1 2025-11-24 14:02:07 0 select attname from mo_catalog.mo_columns{snapshot = 'sp09'} where att_database = 'test06'; attname col1 diff --git a/test/distributed/cases/table/system_table_cases.result b/test/distributed/cases/table/system_table_cases.result index 7c46cb80a2991..940c4f31f917f 100644 --- a/test/distributed/cases/table/system_table_cases.result +++ b/test/distributed/cases/table/system_table_cases.result @@ -158,7 +158,7 @@ COUNT(null) 0 SELECT COUNT(*) FROM table_constraints; COUNT(*) -121 +125 USE mo_catalog; SHOW CREATE TABLE mo_columns; Table Create Table diff --git a/test/distributed/cases/tenant/privilege/create_user_default_role.result b/test/distributed/cases/tenant/privilege/create_user_default_role.result index 2c6fc25cf19ca..e8dec220bd77d 100644 --- a/test/distributed/cases/tenant/privilege/create_user_default_role.result +++ b/test/distributed/cases/tenant/privilege/create_user_default_role.result @@ -23,7 +23,6 @@ show tables; Tables_in_mo_catalog mo_account mo_branch_metadata -mo_iscp_log mo_cache mo_cdc_task mo_cdc_watermark @@ -32,7 +31,9 @@ mo_configurations mo_data_key mo_database mo_foreign_keys +mo_index_update mo_indexes +mo_iscp_log mo_locks mo_merge_settings mo_mysql_compatibility_mode diff --git a/test/distributed/cases/tenant/tenant.result b/test/distributed/cases/tenant/tenant.result index ca15c8b8aac45..61dfa47c500ba 100644 --- a/test/distributed/cases/tenant/tenant.result +++ b/test/distributed/cases/tenant/tenant.result @@ -8,8 +8,8 @@ create account tenant_test admin_name = 'root' open comment 'tenant_test'; SQL parser error: You have an error in your SQL syntax; check the manual that corresponds to your MatrixOne server version for the right syntax to use. syntax error at line 1 column 51 near " open comment 'tenant_test';"; show accounts; account_name admin_name created_time status suspended_time db_count tbl_count size snapshot_size comments -tenant_test root 2024-10-22 07:04:34 open null 5 66 0.0 0.0 tenant_test -sys root 2024-10-22 06:50:47 open null 8 107 78.267639 0.0 system account +tenant_test root 2025-11-24 14:03:04 open null 5 66 0.0 0.0 tenant_test +sys root 2025-11-21 09:44:39 open null 8 114 348.925694 0.0 system account drop account if exists tenant_test; select account_id,relname,relkind from mo_catalog.mo_tables where reldatabase = 'mo_catalog' and relname not like '__mo_index%' and relname != '__mo_account_lock' order by relname; account_id relname relkind @@ -23,7 +23,8 @@ account_id relname relkind 0 mo_data_key r 0 mo_database r 0 mo_foreign_keys r -0 mo_increment_columns +0 mo_increment_columns +0 mo_index_update r 0 mo_indexes r 0 mo_iscp_log r 0 mo_locks v diff --git a/test/distributed/cases/vector/vector_index.result b/test/distributed/cases/vector/vector_index.result index f9abf16a9c969..6499336df8eaf 100644 --- a/test/distributed/cases/vector/vector_index.result +++ b/test/distributed/cases/vector/vector_index.result @@ -114,11 +114,11 @@ no such table vector_index.vector_index_07 alter table vector_index_06 alter rindex idx01 ivfflat lists=3; SQL parser error: You have an error in your SQL syntax; check the manual that corresponds to your MatrixOne server version for the right syntax to use. syntax error at line 1 column 46 near " idx01 ivfflat lists=3;"; alter table vector_index_06 alter reindex idx01 ivfflat; -SQL parser error: You have an error in your SQL syntax; check the manual that corresponds to your MatrixOne server version for the right syntax to use. syntax error at line 1 column 56 near ";"; alter table vector_index_06 alter reindex idx01 lists=3; SQL parser error: You have an error in your SQL syntax; check the manual that corresponds to your MatrixOne server version for the right syntax to use. syntax error at line 1 column 53 near " lists=3;"; alter table vector_index_06 alter reindex idx01 flat lists=3; SQL parser error: You have an error in your SQL syntax; check the manual that corresponds to your MatrixOne server version for the right syntax to use. syntax error at line 1 column 52 near " flat lists=3;"; +alter table vector_index_06 alter reindex idx01 ivfflat force_sync; create table vector_index_07(a int primary key, b vecf32(128),c int,key c_k(c)); insert into vector_index_07 values(9774 ,"[1, 0, 1, 6, 6, 17, 47, 39, 2, 0, 1, 25, 27, 10, 56, 130, 18, 5, 2, 6, 15, 2, 19, 130, 42, 28, 1, 1, 2, 1, 0, 5, 0, 2, 4, 4, 31, 34, 44, 35, 9, 3, 8, 11, 33, 12, 61, 130, 130, 17, 0, 1, 6, 2, 9, 130, 111, 36, 0, 0, 11, 9, 1, 12, 2, 100, 130, 28, 7, 2, 6, 7, 9, 27, 130, 83, 5, 0, 1, 18, 130, 130, 84, 9, 0, 0, 2, 24, 111, 24, 0, 1, 37, 24, 2, 10, 12, 62, 33, 3, 0, 0, 0, 1, 3, 16, 106, 28, 0, 0, 0, 0, 17, 46, 85, 10, 0, 0, 1, 4, 11, 4, 2, 2, 9, 14, 8, 8]",3),(9775,"[0, 1, 1, 3, 0, 3, 46, 20, 1, 4, 17, 9, 1, 17, 108, 15, 0, 3, 37, 17, 6, 15, 116, 16, 6, 1, 4, 7, 7, 7, 9, 6, 0, 8, 10, 4, 26, 129, 27, 9, 0, 0, 5, 2, 11, 129, 129, 12, 103, 4, 0, 0, 2, 31, 129, 129, 94, 4, 0, 0, 0, 3, 13, 42, 0, 15, 38, 2, 70, 129, 1, 0, 5, 10, 40, 12, 74, 129, 6, 1, 129, 39, 6, 1, 2, 22, 9, 33, 122, 13, 0, 0, 0, 0, 5, 23, 4, 11, 9, 12, 45, 38, 1, 0, 0, 4, 36, 38, 57, 32, 0, 0, 82, 22, 9, 5, 13, 11, 3, 94, 35, 3, 0, 0, 0, 1, 16, 97]",5),(9776,"[10, 3, 8, 5, 48, 26, 5, 16, 17, 0, 0, 2, 132, 53, 1, 16, 112, 6, 0, 0, 7, 2, 1, 48, 48, 15, 18, 31, 3, 0, 0, 9, 6, 10, 19, 27, 50, 46, 17, 9, 18, 1, 4, 48, 132, 23, 3, 5, 132, 9, 4, 3, 11, 0, 2, 46, 84, 12, 10, 10, 1, 0, 12, 76, 26, 22, 16, 26, 35, 15, 3, 16, 15, 1, 51, 132, 125, 8, 1, 2, 132, 51, 67, 91, 8, 0, 0, 30, 126, 39, 32, 38, 4, 0, 1, 12, 24, 2, 2, 2, 4, 7, 2, 19, 93, 19, 70, 92, 2, 3, 1, 21, 36, 58, 132, 94, 0, 0, 0, 0, 21, 25, 57, 48, 1, 0, 0, 1]",3); insert into vector_index_07 values(9777, " [16, 15, 0, 0, 5, 46, 5, 5, 4, 0, 0, 0, 28, 118, 12, 5, 75, 44, 5, 0, 6, 32, 6, 49, 41, 74, 9, 1, 0, 0, 0, 9, 1, 9, 16, 41, 71, 80, 3, 0, 0, 4, 3, 5, 51, 106, 11, 3, 112, 28, 13, 1, 4, 8, 3, 104, 118, 14, 1, 1, 0, 0, 0, 88, 3, 27, 46, 118, 108, 49, 2, 0, 1, 46, 118, 118, 27, 12, 0, 0, 33, 118, 118, 8, 0, 0, 0, 4, 118, 95, 40, 0, 0, 0, 1, 11, 27, 38, 12, 12, 18, 29, 3, 2, 13, 30, 94, 78, 30, 19, 9, 3, 31, 45, 70, 42, 15, 1, 3, 12, 14, 22, 16, 2, 3, 17, 24, 13]",4),(9778,"[41, 0, 0, 7, 1, 1, 20, 67, 9, 0, 0, 0, 0, 31, 120, 61, 25, 0, 0, 0, 0, 10, 120, 90, 32, 0, 0, 1, 13, 11, 22, 50, 4, 0, 2, 93, 40, 15, 37, 18, 12, 2, 2, 19, 8, 44, 120, 25, 120, 5, 0, 0, 0, 2, 48, 97, 102, 14, 3, 3, 11, 9, 34, 41, 0, 0, 4, 120, 56, 3, 4, 5, 6, 15, 37, 116, 28, 0, 0, 3, 120, 120, 24, 6, 2, 0, 1, 28, 53, 90, 51, 11, 11, 2, 12, 14, 8, 6, 4, 30, 9, 1, 4, 22, 25, 79, 120, 66, 5, 0, 0, 6, 42, 120, 91, 43, 15, 2, 4, 39, 12, 9, 9, 12, 15, 5, 24, 36]",4); diff --git a/test/distributed/cases/vector/vector_index.sql b/test/distributed/cases/vector/vector_index.sql index 8ebb6ad978b46..a0f968d4f25aa 100644 --- a/test/distributed/cases/vector/vector_index.sql +++ b/test/distributed/cases/vector/vector_index.sql @@ -80,6 +80,7 @@ alter table vector_index_06 alter rindex idx01 ivfflat lists=3; alter table vector_index_06 alter reindex idx01 ivfflat; alter table vector_index_06 alter reindex idx01 lists=3; alter table vector_index_06 alter reindex idx01 flat lists=3; +alter table vector_index_06 alter reindex idx01 ivfflat force_sync; -- L2_DISTANCE() create table vector_index_07(a int primary key, b vecf32(128),c int,key c_k(c));