diff --git a/pkg/common/moerr/error.go b/pkg/common/moerr/error.go index 9605b9bad4be3d2a853a415bf6a4bbe78aee4dfa..343e5b12bb96c464e59252192071b921c83b364c 100644 --- a/pkg/common/moerr/error.go +++ b/pkg/common/moerr/error.go @@ -66,6 +66,23 @@ const ( // Group 6: sql error, can usually correspond one-to-one to MysqlError, val in [6000, 6999] ErrNoDatabaseSelected = 6000 + iota ErrBadTable + ErrFieldNotFoundPart + ErrPartitionSubpartition + ErrWrongExprInPartitionFunc + ErrFieldTypeNotAllowedAsPartitionField + ErrSameNamePartition + ErrSameNamePartitionField + ErrTooManyPartitions + ErrPartitionMaxvalue + ErrPartitionConstDomain + ErrValuesIsNotIntType + ErrRangeNotIncreasing + ErrPartitionsMustBeDefined + ErrPartitionColumnList + ErrWrongTypeColumnValue + ErrUniqueKeyNeedAllFieldsInPf + ErrMultipleDefConstInListPart + ErrPartitionWrongNoPart // Group 10: txn // ErrTxnAborted read and write a transaction that has been rolled back. @@ -124,8 +141,25 @@ var errorMsgRefer = map[int32]moErrorMsgItem{ ErrNoAvailableBackend: {25004, 0, "no available backend"}, // Group 1: sql error - ErrNoDatabaseSelected: {26000, 1046, "No database selected"}, - ErrBadTable: {26001, 1051, "Unknown table '%-.129s.%-.129s'"}, + ErrNoDatabaseSelected: {26000, 1046, "No database selected"}, + ErrBadTable: {26001, 1051, "Unknown table '%-.129s.%-.129s'"}, + ErrFieldNotFoundPart: {26002, 1500, "Field in list of fields for partition function not found in table"}, + ErrPartitionSubpartition: {26003, 1482, "It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning"}, + ErrWrongExprInPartitionFunc: {26004, 1486, "Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed"}, + ErrFieldTypeNotAllowedAsPartitionField: {26005, 1659, "Field '%-.192s' is of a not allowed type for this type of partitioning"}, + ErrSameNamePartition: {26006, 1517, "Duplicate partition name %-.192s"}, + ErrSameNamePartitionField: {26007, 1652, "Duplicate partition field name '%-.192s'"}, + ErrTooManyPartitions: {26008, 1499, "Too many partitions (including subpartitions) were defined"}, + ErrPartitionMaxvalue: {26009, 1481, "MAXVALUE can only be used in last partition definition"}, + ErrPartitionConstDomain: {26010, 1563, "Partition constant is out of partition function domain"}, + ErrValuesIsNotIntType: {26011, 1697, "VALUES value for partition '%-.64s' must have type INT"}, + ErrRangeNotIncreasing: {26012, 1493, "VALUES LESS THAN value must be strictly increasing for each partition"}, + ErrPartitionsMustBeDefined: {26013, 1492, "For %-.64s partitions each partition must be defined"}, + ErrPartitionColumnList: {26014, 1653, "Inconsistency in usage of column lists for partitioning"}, + ErrWrongTypeColumnValue: {26015, 1654, "Partition column values of incorrect type"}, + ErrUniqueKeyNeedAllFieldsInPf: {26016, 1503, "A %-.192s must include all columns in the table's partitioning function"}, + ErrMultipleDefConstInListPart: {26017, 1495, "Multiple definition of same constant in list partitioning"}, + ErrPartitionWrongNoPart: {26018, 1064, "Wrong number of partitions defined, mismatch with previous setting"}, // Group 10: txn ErrTxnClosed: {30000, 0, "the transaction has been committed or aborted"}, diff --git a/pkg/container/types/types.go b/pkg/container/types/types.go index 1312a41891dd1c73fa03e18aa9b1739b7f6c49ac..858ebc82d0395696a64d64fafeb22344a9ad891f 100644 --- a/pkg/container/types/types.go +++ b/pkg/container/types/types.go @@ -496,3 +496,58 @@ func (t T) FixedLength() int { } panic(moerr.NewInternalError("Unknow type %s", t)) } + +// isUnsignedInt: return true if the types.T is UnSigned integer type +func isUnsignedInt(t T) bool { + if t == T_uint8 || t == T_uint16 || t == T_uint32 || t == T_uint64 { + return true + } + return false +} + +// isSignedInt: return true if the types.T is Signed integer type +func isSignedInt(t T) bool { + if t == T_int8 || t == T_int16 || t == T_int32 || t == T_int64 { + return true + } + return false +} + +// if expr type is integer return true,else return false +func IsInteger(t T) bool { + if isUnsignedInt(t) || isSignedInt(t) { + return true + } + return false +} + +// IsFloat: return true if the types.T is floating Point Types +func IsFloat(t T) bool { + if t == T_float32 || t == T_float64 { + return true + } + return false +} + +// isString: return true if the types.T is string type +func IsString(t T) bool { + if t == T_char || t == T_varchar || t == T_blob { + return true + } + return false +} + +func IsDateRelate(t T) bool { + if t == T_date || t == T_datetime || t == T_timestamp { + return true + } + return false +} + +// IsDecimal: return true if the types.T is decimal64 or decimal128 +func IsDecimal(t T) bool { + if t == T_decimal64 || t == T_decimal128 { + return true + } + return false +} diff --git a/pkg/pb/plan/plan.pb.go b/pkg/pb/plan/plan.pb.go index 3e8e4bc7d09bc5526b373087e2e074eabad80994..483ff2f16d7ab562772752e91b2cd08ec4c34acf 100644 --- a/pkg/pb/plan/plan.pb.go +++ b/pkg/pb/plan/plan.pb.go @@ -50,6 +50,49 @@ func (CompressType) EnumDescriptor() ([]byte, []int) { return fileDescriptor_2d655ab2f7683c23, []int{0} } +type PartitionType int32 + +const ( + PartitionType_KEY PartitionType = 0 + PartitionType_LINEAR_KEY PartitionType = 1 + PartitionType_HASH PartitionType = 2 + PartitionType_LINEAR_HASH PartitionType = 3 + PartitionType_RANGE PartitionType = 4 + PartitionType_RANGE_COLUMNS PartitionType = 5 + PartitionType_LIST PartitionType = 6 + PartitionType_LIST_COLUMNS PartitionType = 7 +) + +var PartitionType_name = map[int32]string{ + 0: "KEY", + 1: "LINEAR_KEY", + 2: "HASH", + 3: "LINEAR_HASH", + 4: "RANGE", + 5: "RANGE_COLUMNS", + 6: "LIST", + 7: "LIST_COLUMNS", +} + +var PartitionType_value = map[string]int32{ + "KEY": 0, + "LINEAR_KEY": 1, + "HASH": 2, + "LINEAR_HASH": 3, + "RANGE": 4, + "RANGE_COLUMNS": 5, + "LIST": 6, + "LIST_COLUMNS": 7, +} + +func (x PartitionType) String() string { + return proto.EnumName(PartitionType_name, int32(x)) +} + +func (PartitionType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_2d655ab2f7683c23, []int{1} +} + type TransationCompletionType int32 const ( @@ -75,7 +118,7 @@ func (x TransationCompletionType) String() string { } func (TransationCompletionType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{1} + return fileDescriptor_2d655ab2f7683c23, []int{2} } type SubqueryRef_Type int32 @@ -115,7 +158,7 @@ func (x SubqueryRef_Type) String() string { } func (SubqueryRef_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{8, 0} + return fileDescriptor_2d655ab2f7683c23, []int{9, 0} } // Function flags @@ -171,7 +214,7 @@ func (x Function_FuncFlag) String() string { } func (Function_FuncFlag) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{10, 0} + return fileDescriptor_2d655ab2f7683c23, []int{11, 0} } type IndexDef_IndexType int32 @@ -199,7 +242,7 @@ func (x IndexDef_IndexType) String() string { } func (IndexDef_IndexType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{16, 0} + return fileDescriptor_2d655ab2f7683c23, []int{17, 0} } type OrderBySpec_OrderByFlag int32 @@ -236,7 +279,7 @@ func (x OrderBySpec_OrderByFlag) String() string { } func (OrderBySpec_OrderByFlag) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{25, 0} + return fileDescriptor_2d655ab2f7683c23, []int{28, 0} } type Node_NodeType int32 @@ -363,7 +406,7 @@ func (x Node_NodeType) String() string { } func (Node_NodeType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{29, 0} + return fileDescriptor_2d655ab2f7683c23, []int{32, 0} } type Node_JoinFlag int32 @@ -409,7 +452,7 @@ func (x Node_JoinFlag) String() string { } func (Node_JoinFlag) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{29, 1} + return fileDescriptor_2d655ab2f7683c23, []int{32, 1} } type Node_AggMode int32 @@ -437,7 +480,7 @@ func (x Node_AggMode) String() string { } func (Node_AggMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{29, 2} + return fileDescriptor_2d655ab2f7683c23, []int{32, 2} } type Query_StatementType int32 @@ -474,7 +517,7 @@ func (x Query_StatementType) String() string { } func (Query_StatementType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{31, 0} + return fileDescriptor_2d655ab2f7683c23, []int{34, 0} } type TransationControl_TclType int32 @@ -502,7 +545,7 @@ func (x TransationControl_TclType) String() string { } func (TransationControl_TclType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{32, 0} + return fileDescriptor_2d655ab2f7683c23, []int{35, 0} } type TransationBegin_TransationMode int32 @@ -530,7 +573,7 @@ func (x TransationBegin_TransationMode) String() string { } func (TransationBegin_TransationMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{33, 0} + return fileDescriptor_2d655ab2f7683c23, []int{36, 0} } type DataControl_DclType int32 @@ -570,7 +613,7 @@ func (x DataControl_DclType) String() string { } func (DataControl_DclType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{39, 0} + return fileDescriptor_2d655ab2f7683c23, []int{42, 0} } type DataDefinition_DdlType int32 @@ -652,7 +695,7 @@ func (x DataDefinition_DdlType) String() string { } func (DataDefinition_DdlType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{40, 0} + return fileDescriptor_2d655ab2f7683c23, []int{43, 0} } type Type struct { @@ -747,7 +790,6 @@ func (m *Type) GetScale() int32 { type Const struct { Isnull bool `protobuf:"varint,1,opt,name=isnull,proto3" json:"isnull,omitempty"` // Types that are valid to be assigned to Value: - // // *Const_Ival // *Const_Dval // *Const_Sval @@ -1272,6 +1314,53 @@ func (m *ExprList) GetList() []*Expr { return nil } +type MaxValue struct { + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *MaxValue) Reset() { *m = MaxValue{} } +func (m *MaxValue) String() string { return proto.CompactTextString(m) } +func (*MaxValue) ProtoMessage() {} +func (*MaxValue) Descriptor() ([]byte, []int) { + return fileDescriptor_2d655ab2f7683c23, []int{7} +} +func (m *MaxValue) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MaxValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MaxValue.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MaxValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_MaxValue.Merge(m, src) +} +func (m *MaxValue) XXX_Size() int { + return m.ProtoSize() +} +func (m *MaxValue) XXX_DiscardUnknown() { + xxx_messageInfo_MaxValue.DiscardUnknown(m) +} + +var xxx_messageInfo_MaxValue proto.InternalMessageInfo + +func (m *MaxValue) GetValue() string { + if m != nil { + return m.Value + } + return "" +} + // TargetType used in cast function as target type type TargetType struct { Typ *Type `protobuf:"bytes,1,opt,name=typ,proto3" json:"typ,omitempty"` @@ -1284,7 +1373,7 @@ func (m *TargetType) Reset() { *m = TargetType{} } func (m *TargetType) String() string { return proto.CompactTextString(m) } func (*TargetType) ProtoMessage() {} func (*TargetType) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{7} + return fileDescriptor_2d655ab2f7683c23, []int{8} } func (m *TargetType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1336,7 +1425,7 @@ func (m *SubqueryRef) Reset() { *m = SubqueryRef{} } func (m *SubqueryRef) String() string { return proto.CompactTextString(m) } func (*SubqueryRef) ProtoMessage() {} func (*SubqueryRef) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{8} + return fileDescriptor_2d655ab2f7683c23, []int{9} } func (m *SubqueryRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1419,7 +1508,7 @@ func (m *ObjectRef) Reset() { *m = ObjectRef{} } func (m *ObjectRef) String() string { return proto.CompactTextString(m) } func (*ObjectRef) ProtoMessage() {} func (*ObjectRef) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{9} + return fileDescriptor_2d655ab2f7683c23, []int{10} } func (m *ObjectRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1516,7 +1605,7 @@ func (m *Function) Reset() { *m = Function{} } func (m *Function) String() string { return proto.CompactTextString(m) } func (*Function) ProtoMessage() {} func (*Function) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{10} + return fileDescriptor_2d655ab2f7683c23, []int{11} } func (m *Function) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1562,7 +1651,6 @@ func (m *Function) GetArgs() []*Expr { type Expr struct { Typ *Type `protobuf:"bytes,1,opt,name=typ,proto3" json:"typ,omitempty"` // Types that are valid to be assigned to Expr: - // // *Expr_C // *Expr_P // *Expr_V @@ -1572,6 +1660,7 @@ type Expr struct { // *Expr_Corr // *Expr_T // *Expr_List + // *Expr_Max Expr isExpr_Expr `protobuf_oneof:"expr"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -1582,7 +1671,7 @@ func (m *Expr) Reset() { *m = Expr{} } func (m *Expr) String() string { return proto.CompactTextString(m) } func (*Expr) ProtoMessage() {} func (*Expr) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{11} + return fileDescriptor_2d655ab2f7683c23, []int{12} } func (m *Expr) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1644,6 +1733,9 @@ type Expr_T struct { type Expr_List struct { List *ExprList `protobuf:"bytes,10,opt,name=list,proto3,oneof" json:"list,omitempty"` } +type Expr_Max struct { + Max *MaxValue `protobuf:"bytes,11,opt,name=max,proto3,oneof" json:"max,omitempty"` +} func (*Expr_C) isExpr_Expr() {} func (*Expr_P) isExpr_Expr() {} @@ -1654,6 +1746,7 @@ func (*Expr_Sub) isExpr_Expr() {} func (*Expr_Corr) isExpr_Expr() {} func (*Expr_T) isExpr_Expr() {} func (*Expr_List) isExpr_Expr() {} +func (*Expr_Max) isExpr_Expr() {} func (m *Expr) GetExpr() isExpr_Expr { if m != nil { @@ -1732,6 +1825,13 @@ func (m *Expr) GetList() *ExprList { return nil } +func (m *Expr) GetMax() *MaxValue { + if x, ok := m.GetExpr().(*Expr_Max); ok { + return x.Max + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*Expr) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -1744,6 +1844,7 @@ func (*Expr) XXX_OneofWrappers() []interface{} { (*Expr_Corr)(nil), (*Expr_T)(nil), (*Expr_List)(nil), + (*Expr_Max)(nil), } } @@ -1758,7 +1859,7 @@ func (m *Decimal64) Reset() { *m = Decimal64{} } func (m *Decimal64) String() string { return proto.CompactTextString(m) } func (*Decimal64) ProtoMessage() {} func (*Decimal64) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{12} + return fileDescriptor_2d655ab2f7683c23, []int{13} } func (m *Decimal64) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1806,7 +1907,7 @@ func (m *Decimal128) Reset() { *m = Decimal128{} } func (m *Decimal128) String() string { return proto.CompactTextString(m) } func (*Decimal128) ProtoMessage() {} func (*Decimal128) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{13} + return fileDescriptor_2d655ab2f7683c23, []int{14} } func (m *Decimal128) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1866,7 +1967,7 @@ func (m *ColDef) Reset() { *m = ColDef{} } func (m *ColDef) String() string { return proto.CompactTextString(m) } func (*ColDef) ProtoMessage() {} func (*ColDef) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{14} + return fileDescriptor_2d655ab2f7683c23, []int{15} } func (m *ColDef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1957,7 +2058,7 @@ func (m *Default) Reset() { *m = Default{} } func (m *Default) String() string { return proto.CompactTextString(m) } func (*Default) ProtoMessage() {} func (*Default) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{15} + return fileDescriptor_2d655ab2f7683c23, []int{16} } func (m *Default) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2020,7 +2121,7 @@ func (m *IndexDef) Reset() { *m = IndexDef{} } func (m *IndexDef) String() string { return proto.CompactTextString(m) } func (*IndexDef) ProtoMessage() {} func (*IndexDef) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{16} + return fileDescriptor_2d655ab2f7683c23, []int{17} } func (m *IndexDef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2081,7 +2182,7 @@ func (m *PrimaryKeyDef) Reset() { *m = PrimaryKeyDef{} } func (m *PrimaryKeyDef) String() string { return proto.CompactTextString(m) } func (*PrimaryKeyDef) ProtoMessage() {} func (*PrimaryKeyDef) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{17} + return fileDescriptor_2d655ab2f7683c23, []int{18} } func (m *PrimaryKeyDef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2129,7 +2230,7 @@ func (m *Property) Reset() { *m = Property{} } func (m *Property) String() string { return proto.CompactTextString(m) } func (*Property) ProtoMessage() {} func (*Property) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{18} + return fileDescriptor_2d655ab2f7683c23, []int{19} } func (m *Property) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2183,7 +2284,7 @@ func (m *PropertiesDef) Reset() { *m = PropertiesDef{} } func (m *PropertiesDef) String() string { return proto.CompactTextString(m) } func (*PropertiesDef) ProtoMessage() {} func (*PropertiesDef) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{19} + return fileDescriptor_2d655ab2f7683c23, []int{20} } func (m *PropertiesDef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2219,6 +2320,204 @@ func (m *PropertiesDef) GetProperties() []*Property { return nil } +type PartitionInfo struct { + Type PartitionType `protobuf:"varint,1,opt,name=type,proto3,enum=plan.PartitionType" json:"type,omitempty"` + Expr *Expr `protobuf:"bytes,2,opt,name=Expr,proto3" json:"Expr,omitempty"` + PartitionExpression string `protobuf:"bytes,3,opt,name=partitionExpression,proto3" json:"partitionExpression,omitempty"` + Columns []*Expr `protobuf:"bytes,4,rep,name=Columns,proto3" json:"Columns,omitempty"` + PartitionColumns []string `protobuf:"bytes,5,rep,name=partitionColumns,proto3" json:"partitionColumns,omitempty"` + PartitionNum uint64 `protobuf:"varint,6,opt,name=partitionNum,proto3" json:"partitionNum,omitempty"` + Partitions []*PartitionItem `protobuf:"bytes,7,rep,name=partitions,proto3" json:"partitions,omitempty"` + Algorithm int64 `protobuf:"varint,8,opt,name=algorithm,proto3" json:"algorithm,omitempty"` + IsSubPartition bool `protobuf:"varint,9,opt,name=isSubPartition,proto3" json:"isSubPartition,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PartitionInfo) Reset() { *m = PartitionInfo{} } +func (m *PartitionInfo) String() string { return proto.CompactTextString(m) } +func (*PartitionInfo) ProtoMessage() {} +func (*PartitionInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_2d655ab2f7683c23, []int{21} +} +func (m *PartitionInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PartitionInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PartitionInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PartitionInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_PartitionInfo.Merge(m, src) +} +func (m *PartitionInfo) XXX_Size() int { + return m.ProtoSize() +} +func (m *PartitionInfo) XXX_DiscardUnknown() { + xxx_messageInfo_PartitionInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_PartitionInfo proto.InternalMessageInfo + +func (m *PartitionInfo) GetType() PartitionType { + if m != nil { + return m.Type + } + return PartitionType_KEY +} + +func (m *PartitionInfo) GetExpr() *Expr { + if m != nil { + return m.Expr + } + return nil +} + +func (m *PartitionInfo) GetPartitionExpression() string { + if m != nil { + return m.PartitionExpression + } + return "" +} + +func (m *PartitionInfo) GetColumns() []*Expr { + if m != nil { + return m.Columns + } + return nil +} + +func (m *PartitionInfo) GetPartitionColumns() []string { + if m != nil { + return m.PartitionColumns + } + return nil +} + +func (m *PartitionInfo) GetPartitionNum() uint64 { + if m != nil { + return m.PartitionNum + } + return 0 +} + +func (m *PartitionInfo) GetPartitions() []*PartitionItem { + if m != nil { + return m.Partitions + } + return nil +} + +func (m *PartitionInfo) GetAlgorithm() int64 { + if m != nil { + return m.Algorithm + } + return 0 +} + +func (m *PartitionInfo) GetIsSubPartition() bool { + if m != nil { + return m.IsSubPartition + } + return false +} + +type PartitionItem struct { + PartitionName string `protobuf:"bytes,1,opt,name=partitionName,proto3" json:"partitionName,omitempty"` + OrdinalPosition uint32 `protobuf:"varint,2,opt,name=ordinalPosition,proto3" json:"ordinalPosition,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Comment string `protobuf:"bytes,4,opt,name=comment,proto3" json:"comment,omitempty"` + LessThan []*Expr `protobuf:"bytes,5,rep,name=lessThan,proto3" json:"lessThan,omitempty"` + InValues []*Expr `protobuf:"bytes,6,rep,name=inValues,proto3" json:"inValues,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PartitionItem) Reset() { *m = PartitionItem{} } +func (m *PartitionItem) String() string { return proto.CompactTextString(m) } +func (*PartitionItem) ProtoMessage() {} +func (*PartitionItem) Descriptor() ([]byte, []int) { + return fileDescriptor_2d655ab2f7683c23, []int{22} +} +func (m *PartitionItem) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PartitionItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PartitionItem.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PartitionItem) XXX_Merge(src proto.Message) { + xxx_messageInfo_PartitionItem.Merge(m, src) +} +func (m *PartitionItem) XXX_Size() int { + return m.ProtoSize() +} +func (m *PartitionItem) XXX_DiscardUnknown() { + xxx_messageInfo_PartitionItem.DiscardUnknown(m) +} + +var xxx_messageInfo_PartitionItem proto.InternalMessageInfo + +func (m *PartitionItem) GetPartitionName() string { + if m != nil { + return m.PartitionName + } + return "" +} + +func (m *PartitionItem) GetOrdinalPosition() uint32 { + if m != nil { + return m.OrdinalPosition + } + return 0 +} + +func (m *PartitionItem) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *PartitionItem) GetComment() string { + if m != nil { + return m.Comment + } + return "" +} + +func (m *PartitionItem) GetLessThan() []*Expr { + if m != nil { + return m.LessThan + } + return nil +} + +func (m *PartitionItem) GetInValues() []*Expr { + if m != nil { + return m.InValues + } + return nil +} + type ViewDef struct { View string `protobuf:"bytes,1,opt,name=view,proto3" json:"view,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -2230,7 +2529,7 @@ func (m *ViewDef) Reset() { *m = ViewDef{} } func (m *ViewDef) String() string { return proto.CompactTextString(m) } func (*ViewDef) ProtoMessage() {} func (*ViewDef) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{20} + return fileDescriptor_2d655ab2f7683c23, []int{23} } func (m *ViewDef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2282,7 +2581,7 @@ func (m *TableDef) Reset() { *m = TableDef{} } func (m *TableDef) String() string { return proto.CompactTextString(m) } func (*TableDef) ProtoMessage() {} func (*TableDef) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{21} + return fileDescriptor_2d655ab2f7683c23, []int{24} } func (m *TableDef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2355,11 +2654,11 @@ func (m *TableDef) GetName2ColIndex() map[string]int32 { type TableDef_DefType struct { // Types that are valid to be assigned to Def: - // // *TableDef_DefType_Pk // *TableDef_DefType_Idx // *TableDef_DefType_Properties // *TableDef_DefType_View + // *TableDef_DefType_Partition Def isTableDef_DefType_Def `protobuf_oneof:"def"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -2370,7 +2669,7 @@ func (m *TableDef_DefType) Reset() { *m = TableDef_DefType{} } func (m *TableDef_DefType) String() string { return proto.CompactTextString(m) } func (*TableDef_DefType) ProtoMessage() {} func (*TableDef_DefType) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{21, 0} + return fileDescriptor_2d655ab2f7683c23, []int{24, 0} } func (m *TableDef_DefType) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2417,11 +2716,15 @@ type TableDef_DefType_Properties struct { type TableDef_DefType_View struct { View *ViewDef `protobuf:"bytes,4,opt,name=view,proto3,oneof" json:"view,omitempty"` } +type TableDef_DefType_Partition struct { + Partition *PartitionInfo `protobuf:"bytes,5,opt,name=partition,proto3,oneof" json:"partition,omitempty"` +} func (*TableDef_DefType_Pk) isTableDef_DefType_Def() {} func (*TableDef_DefType_Idx) isTableDef_DefType_Def() {} func (*TableDef_DefType_Properties) isTableDef_DefType_Def() {} func (*TableDef_DefType_View) isTableDef_DefType_Def() {} +func (*TableDef_DefType_Partition) isTableDef_DefType_Def() {} func (m *TableDef_DefType) GetDef() isTableDef_DefType_Def { if m != nil { @@ -2458,6 +2761,13 @@ func (m *TableDef_DefType) GetView() *ViewDef { return nil } +func (m *TableDef_DefType) GetPartition() *PartitionInfo { + if x, ok := m.GetDef().(*TableDef_DefType_Partition); ok { + return x.Partition + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*TableDef_DefType) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -2465,6 +2775,7 @@ func (*TableDef_DefType) XXX_OneofWrappers() []interface{} { (*TableDef_DefType_Idx)(nil), (*TableDef_DefType_Properties)(nil), (*TableDef_DefType_View)(nil), + (*TableDef_DefType_Partition)(nil), } } @@ -2483,7 +2794,7 @@ func (m *Cost) Reset() { *m = Cost{} } func (m *Cost) String() string { return proto.CompactTextString(m) } func (*Cost) ProtoMessage() {} func (*Cost) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{22} + return fileDescriptor_2d655ab2f7683c23, []int{25} } func (m *Cost) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2565,7 +2876,7 @@ func (m *ColData) Reset() { *m = ColData{} } func (m *ColData) String() string { return proto.CompactTextString(m) } func (*ColData) ProtoMessage() {} func (*ColData) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{23} + return fileDescriptor_2d655ab2f7683c23, []int{26} } func (m *ColData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2662,7 +2973,7 @@ func (m *RowsetData) Reset() { *m = RowsetData{} } func (m *RowsetData) String() string { return proto.CompactTextString(m) } func (*RowsetData) ProtoMessage() {} func (*RowsetData) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{24} + return fileDescriptor_2d655ab2f7683c23, []int{27} } func (m *RowsetData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2718,7 +3029,7 @@ func (m *OrderBySpec) Reset() { *m = OrderBySpec{} } func (m *OrderBySpec) String() string { return proto.CompactTextString(m) } func (*OrderBySpec) ProtoMessage() {} func (*OrderBySpec) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{25} + return fileDescriptor_2d655ab2f7683c23, []int{28} } func (m *OrderBySpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2782,7 +3093,7 @@ func (m *WindowSpec) Reset() { *m = WindowSpec{} } func (m *WindowSpec) String() string { return proto.CompactTextString(m) } func (*WindowSpec) ProtoMessage() {} func (*WindowSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{26} + return fileDescriptor_2d655ab2f7683c23, []int{29} } func (m *WindowSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2858,7 +3169,7 @@ func (m *UpdateCtx) Reset() { *m = UpdateCtx{} } func (m *UpdateCtx) String() string { return proto.CompactTextString(m) } func (*UpdateCtx) ProtoMessage() {} func (*UpdateCtx) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{27} + return fileDescriptor_2d655ab2f7683c23, []int{30} } func (m *UpdateCtx) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2966,7 +3277,7 @@ func (m *AnalyzeInfo) Reset() { *m = AnalyzeInfo{} } func (m *AnalyzeInfo) String() string { return proto.CompactTextString(m) } func (*AnalyzeInfo) ProtoMessage() {} func (*AnalyzeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{28} + return fileDescriptor_2d655ab2f7683c23, []int{31} } func (m *AnalyzeInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3070,7 +3381,7 @@ func (m *Node) Reset() { *m = Node{} } func (m *Node) String() string { return proto.CompactTextString(m) } func (*Node) ProtoMessage() {} func (*Node) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{29} + return fileDescriptor_2d655ab2f7683c23, []int{32} } func (m *Node) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3275,7 +3586,7 @@ func (m *DeleteTableCtx) Reset() { *m = DeleteTableCtx{} } func (m *DeleteTableCtx) String() string { return proto.CompactTextString(m) } func (*DeleteTableCtx) ProtoMessage() {} func (*DeleteTableCtx) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{30} + return fileDescriptor_2d655ab2f7683c23, []int{33} } func (m *DeleteTableCtx) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3360,7 +3671,7 @@ func (m *Query) Reset() { *m = Query{} } func (m *Query) String() string { return proto.CompactTextString(m) } func (*Query) ProtoMessage() {} func (*Query) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{31} + return fileDescriptor_2d655ab2f7683c23, []int{34} } func (m *Query) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3425,10 +3736,9 @@ func (m *Query) GetHeadings() []string { } 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 @@ -3442,7 +3752,7 @@ func (m *TransationControl) Reset() { *m = TransationControl{} } func (m *TransationControl) String() string { return proto.CompactTextString(m) } func (*TransationControl) ProtoMessage() {} func (*TransationControl) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{32} + return fileDescriptor_2d655ab2f7683c23, []int{35} } func (m *TransationControl) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3546,7 +3856,7 @@ func (m *TransationBegin) Reset() { *m = TransationBegin{} } func (m *TransationBegin) String() string { return proto.CompactTextString(m) } func (*TransationBegin) ProtoMessage() {} func (*TransationBegin) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{33} + return fileDescriptor_2d655ab2f7683c23, []int{36} } func (m *TransationBegin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3593,7 +3903,7 @@ func (m *TransationCommit) Reset() { *m = TransationCommit{} } func (m *TransationCommit) String() string { return proto.CompactTextString(m) } func (*TransationCommit) ProtoMessage() {} func (*TransationCommit) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{34} + return fileDescriptor_2d655ab2f7683c23, []int{37} } func (m *TransationCommit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3640,7 +3950,7 @@ func (m *TransationRollback) Reset() { *m = TransationRollback{} } func (m *TransationRollback) String() string { return proto.CompactTextString(m) } func (*TransationRollback) ProtoMessage() {} func (*TransationRollback) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{35} + return fileDescriptor_2d655ab2f7683c23, []int{38} } func (m *TransationRollback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3678,7 +3988,6 @@ func (m *TransationRollback) GetCompletionType() TransationCompletionType { type Plan struct { // Types that are valid to be assigned to Plan: - // // *Plan_Query // *Plan_Tcl // *Plan_Ddl @@ -3694,7 +4003,7 @@ func (m *Plan) Reset() { *m = Plan{} } func (m *Plan) String() string { return proto.CompactTextString(m) } func (*Plan) ProtoMessage() {} func (*Plan) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{36} + return fileDescriptor_2d655ab2f7683c23, []int{39} } func (m *Plan) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3820,7 +4129,7 @@ func (m *InsertValues) Reset() { *m = InsertValues{} } func (m *InsertValues) String() string { return proto.CompactTextString(m) } func (*InsertValues) ProtoMessage() {} func (*InsertValues) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{37} + return fileDescriptor_2d655ab2f7683c23, []int{40} } func (m *InsertValues) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3902,7 +4211,7 @@ func (m *Column) Reset() { *m = Column{} } func (m *Column) String() string { return proto.CompactTextString(m) } func (*Column) ProtoMessage() {} func (*Column) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{38} + return fileDescriptor_2d655ab2f7683c23, []int{41} } func (m *Column) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3939,10 +4248,9 @@ 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 @@ -3957,7 +4265,7 @@ func (m *DataControl) Reset() { *m = DataControl{} } func (m *DataControl) String() string { return proto.CompactTextString(m) } func (*DataControl) ProtoMessage() {} func (*DataControl) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{39} + return fileDescriptor_2d655ab2f7683c23, []int{42} } func (m *DataControl) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4063,14 +4371,13 @@ 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 @@ -4092,7 +4399,7 @@ func (m *DataDefinition) Reset() { *m = DataDefinition{} } func (m *DataDefinition) String() string { return proto.CompactTextString(m) } func (*DataDefinition) ProtoMessage() {} func (*DataDefinition) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{40} + return fileDescriptor_2d655ab2f7683c23, []int{43} } func (m *DataDefinition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4300,7 +4607,7 @@ func (m *CreateDatabase) Reset() { *m = CreateDatabase{} } func (m *CreateDatabase) String() string { return proto.CompactTextString(m) } func (*CreateDatabase) ProtoMessage() {} func (*CreateDatabase) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{41} + return fileDescriptor_2d655ab2f7683c23, []int{44} } func (m *CreateDatabase) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4355,7 +4662,7 @@ func (m *AlterDatabase) Reset() { *m = AlterDatabase{} } func (m *AlterDatabase) String() string { return proto.CompactTextString(m) } func (*AlterDatabase) ProtoMessage() {} func (*AlterDatabase) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{42} + return fileDescriptor_2d655ab2f7683c23, []int{45} } func (m *AlterDatabase) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4410,7 +4717,7 @@ func (m *DropDatabase) Reset() { *m = DropDatabase{} } func (m *DropDatabase) String() string { return proto.CompactTextString(m) } func (*DropDatabase) ProtoMessage() {} func (*DropDatabase) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{43} + return fileDescriptor_2d655ab2f7683c23, []int{46} } func (m *DropDatabase) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4467,7 +4774,7 @@ func (m *CreateTable) Reset() { *m = CreateTable{} } func (m *CreateTable) String() string { return proto.CompactTextString(m) } func (*CreateTable) ProtoMessage() {} func (*CreateTable) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{44} + return fileDescriptor_2d655ab2f7683c23, []int{47} } func (m *CreateTable) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4536,7 +4843,7 @@ func (m *AlterTable) Reset() { *m = AlterTable{} } func (m *AlterTable) String() string { return proto.CompactTextString(m) } func (*AlterTable) ProtoMessage() {} func (*AlterTable) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{45} + return fileDescriptor_2d655ab2f7683c23, []int{48} } func (m *AlterTable) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4592,7 +4899,7 @@ func (m *DropTable) Reset() { *m = DropTable{} } func (m *DropTable) String() string { return proto.CompactTextString(m) } func (*DropTable) ProtoMessage() {} func (*DropTable) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{46} + return fileDescriptor_2d655ab2f7683c23, []int{49} } func (m *DropTable) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4654,7 +4961,7 @@ func (m *CreateIndex) Reset() { *m = CreateIndex{} } func (m *CreateIndex) String() string { return proto.CompactTextString(m) } func (*CreateIndex) ProtoMessage() {} func (*CreateIndex) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{47} + return fileDescriptor_2d655ab2f7683c23, []int{50} } func (m *CreateIndex) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4708,7 +5015,7 @@ func (m *AlterIndex) Reset() { *m = AlterIndex{} } func (m *AlterIndex) String() string { return proto.CompactTextString(m) } func (*AlterIndex) ProtoMessage() {} func (*AlterIndex) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{48} + return fileDescriptor_2d655ab2f7683c23, []int{51} } func (m *AlterIndex) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4756,7 +5063,7 @@ func (m *DropIndex) Reset() { *m = DropIndex{} } func (m *DropIndex) String() string { return proto.CompactTextString(m) } func (*DropIndex) ProtoMessage() {} func (*DropIndex) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{49} + return fileDescriptor_2d655ab2f7683c23, []int{52} } func (m *DropIndex) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4810,7 +5117,7 @@ func (m *TruncateTable) Reset() { *m = TruncateTable{} } func (m *TruncateTable) String() string { return proto.CompactTextString(m) } func (*TruncateTable) ProtoMessage() {} func (*TruncateTable) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{50} + return fileDescriptor_2d655ab2f7683c23, []int{53} } func (m *TruncateTable) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4858,7 +5165,7 @@ func (m *ShowVariables) Reset() { *m = ShowVariables{} } func (m *ShowVariables) String() string { return proto.CompactTextString(m) } func (*ShowVariables) ProtoMessage() {} func (*ShowVariables) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{51} + return fileDescriptor_2d655ab2f7683c23, []int{54} } func (m *ShowVariables) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4912,7 +5219,7 @@ func (m *SetVariables) Reset() { *m = SetVariables{} } func (m *SetVariables) String() string { return proto.CompactTextString(m) } func (*SetVariables) ProtoMessage() {} func (*SetVariables) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{52} + return fileDescriptor_2d655ab2f7683c23, []int{55} } func (m *SetVariables) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4963,7 +5270,7 @@ func (m *SetVariablesItem) Reset() { *m = SetVariablesItem{} } func (m *SetVariablesItem) String() string { return proto.CompactTextString(m) } func (*SetVariablesItem) ProtoMessage() {} func (*SetVariablesItem) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{53} + return fileDescriptor_2d655ab2f7683c23, []int{56} } func (m *SetVariablesItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5041,7 +5348,7 @@ func (m *Prepare) Reset() { *m = Prepare{} } func (m *Prepare) String() string { return proto.CompactTextString(m) } func (*Prepare) ProtoMessage() {} func (*Prepare) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{54} + return fileDescriptor_2d655ab2f7683c23, []int{57} } func (m *Prepare) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5110,7 +5417,7 @@ func (m *Execute) Reset() { *m = Execute{} } func (m *Execute) String() string { return proto.CompactTextString(m) } func (*Execute) ProtoMessage() {} func (*Execute) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{55} + return fileDescriptor_2d655ab2f7683c23, []int{58} } func (m *Execute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5164,7 +5471,7 @@ func (m *Deallocate) Reset() { *m = Deallocate{} } func (m *Deallocate) String() string { return proto.CompactTextString(m) } func (*Deallocate) ProtoMessage() {} func (*Deallocate) Descriptor() ([]byte, []int) { - return fileDescriptor_2d655ab2f7683c23, []int{56} + return fileDescriptor_2d655ab2f7683c23, []int{59} } func (m *Deallocate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5202,6 +5509,7 @@ func (m *Deallocate) GetName() string { func init() { proto.RegisterEnum("plan.CompressType", CompressType_name, CompressType_value) + proto.RegisterEnum("plan.PartitionType", PartitionType_name, PartitionType_value) proto.RegisterEnum("plan.TransationCompletionType", TransationCompletionType_name, TransationCompletionType_value) proto.RegisterEnum("plan.SubqueryRef_Type", SubqueryRef_Type_name, SubqueryRef_Type_value) proto.RegisterEnum("plan.Function_FuncFlag", Function_FuncFlag_name, Function_FuncFlag_value) @@ -5222,6 +5530,7 @@ func init() { proto.RegisterType((*ColRef)(nil), "plan.ColRef") proto.RegisterType((*CorrColRef)(nil), "plan.CorrColRef") proto.RegisterType((*ExprList)(nil), "plan.ExprList") + proto.RegisterType((*MaxValue)(nil), "plan.MaxValue") proto.RegisterType((*TargetType)(nil), "plan.TargetType") proto.RegisterType((*SubqueryRef)(nil), "plan.SubqueryRef") proto.RegisterType((*ObjectRef)(nil), "plan.ObjectRef") @@ -5235,6 +5544,8 @@ func init() { proto.RegisterType((*PrimaryKeyDef)(nil), "plan.PrimaryKeyDef") proto.RegisterType((*Property)(nil), "plan.Property") proto.RegisterType((*PropertiesDef)(nil), "plan.PropertiesDef") + proto.RegisterType((*PartitionInfo)(nil), "plan.PartitionInfo") + proto.RegisterType((*PartitionItem)(nil), "plan.PartitionItem") proto.RegisterType((*ViewDef)(nil), "plan.ViewDef") proto.RegisterType((*TableDef)(nil), "plan.TableDef") proto.RegisterMapType((map[string]int32)(nil), "plan.TableDef.Name2colIndexEntry") @@ -5279,293 +5590,312 @@ func init() { func init() { proto.RegisterFile("plan.proto", fileDescriptor_2d655ab2f7683c23) } var fileDescriptor_2d655ab2f7683c23 = []byte{ - // 4563 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x3a, 0x3d, 0x90, 0xdb, 0x56, - 0x7a, 0x04, 0x7f, 0xc1, 0x8f, 0xe4, 0x0a, 0x7a, 0x92, 0x25, 0x4a, 0x27, 0xcb, 0x2b, 0xc8, 0xd2, - 0xad, 0x65, 0x5b, 0xb6, 0x57, 0xb2, 0x4e, 0xbe, 0x71, 0xce, 0xe6, 0x72, 0xa1, 0x25, 0x2d, 0x8a, - 0xdc, 0x7b, 0xc4, 0x4a, 0xb6, 0x6f, 0x32, 0x1c, 0x90, 0x00, 0x29, 0x48, 0x20, 0x40, 0x03, 0xa0, - 0x76, 0xd7, 0xd5, 0x35, 0xc9, 0x4c, 0xaa, 0x5c, 0x91, 0x99, 0xa4, 0xbc, 0x49, 0x71, 0x7d, 0xaa, - 0xd4, 0x69, 0x32, 0x29, 0x33, 0x93, 0x49, 0x91, 0x49, 0x73, 0x71, 0xca, 0x14, 0x29, 0xd2, 0xa6, - 0xc8, 0x7c, 0xdf, 0x7b, 0x00, 0xc1, 0xdd, 0x95, 0xed, 0xf1, 0xa4, 0xe1, 0xbc, 0xef, 0x17, 0xdf, - 0x7b, 0xef, 0xfb, 0x05, 0x01, 0xb0, 0xf0, 0x2c, 0xff, 0xee, 0x22, 0x0c, 0xe2, 0x80, 0x15, 0x71, - 0x7d, 0xf5, 0xfd, 0x99, 0x1b, 0x3f, 0x5f, 0x8e, 0xef, 0x4e, 0x82, 0xf9, 0x07, 0xb3, 0x60, 0x16, - 0x7c, 0x40, 0xc4, 0xf1, 0x72, 0x4a, 0x10, 0x01, 0xb4, 0x12, 0x42, 0xfa, 0xef, 0x14, 0x28, 0x9a, - 0xc7, 0x0b, 0x87, 0x6d, 0x40, 0xde, 0xb5, 0x9b, 0xca, 0xa6, 0xb2, 0x55, 0xe2, 0x79, 0xd7, 0x66, - 0x57, 0x41, 0xf5, 0x97, 0x9e, 0x67, 0x8d, 0x3d, 0xa7, 0x99, 0xdf, 0x54, 0xb6, 0x54, 0x9e, 0xc2, - 0xec, 0x22, 0x94, 0x0e, 0x5d, 0x3b, 0x7e, 0xde, 0x2c, 0x10, 0xbb, 0x00, 0xd8, 0x35, 0xa8, 0x2e, - 0x42, 0x67, 0xe2, 0x46, 0x6e, 0xe0, 0x37, 0x8b, 0x44, 0x59, 0x21, 0x18, 0x83, 0x62, 0xe4, 0x7e, - 0xeb, 0x34, 0x4b, 0x44, 0xa0, 0x35, 0xea, 0x89, 0x26, 0x96, 0xe7, 0x34, 0xcb, 0x42, 0x0f, 0x01, - 0xfa, 0x3f, 0x14, 0xa0, 0xd4, 0x0e, 0xfc, 0x28, 0x66, 0x97, 0xa0, 0xec, 0x46, 0xf8, 0x54, 0xb2, - 0x4b, 0xe5, 0x12, 0x62, 0x17, 0xa1, 0xe8, 0xbe, 0xb2, 0x3c, 0xb2, 0xab, 0xd0, 0xc9, 0x71, 0x82, - 0x10, 0x6b, 0x23, 0x16, 0x8d, 0x52, 0x10, 0x6b, 0x4b, 0x6c, 0x84, 0x58, 0x34, 0xa8, 0x8a, 0xd8, - 0x48, 0x62, 0xc7, 0x88, 0x45, 0x6b, 0x54, 0xc4, 0x8e, 0x25, 0x76, 0x89, 0x58, 0x34, 0xa7, 0x88, - 0xd8, 0xa5, 0xc4, 0x4e, 0x11, 0x5b, 0xd9, 0x54, 0xb6, 0xf2, 0x88, 0x45, 0x88, 0x5d, 0x85, 0x8a, - 0x6d, 0xc5, 0x0e, 0x12, 0x54, 0xb4, 0xbe, 0x93, 0xe3, 0x09, 0x82, 0xe9, 0x50, 0xc3, 0x65, 0xec, - 0xce, 0x89, 0x5e, 0x95, 0x66, 0x66, 0x91, 0xec, 0x63, 0xa8, 0xdb, 0xce, 0xc4, 0x9d, 0x5b, 0xde, - 0x83, 0xfb, 0xc8, 0x04, 0x9b, 0xca, 0x56, 0x6d, 0xfb, 0xdc, 0x5d, 0xba, 0xd0, 0x94, 0xd2, 0xc9, - 0xf1, 0x35, 0x36, 0xf6, 0x10, 0x1a, 0x12, 0xfe, 0x68, 0xfb, 0x21, 0xca, 0xd5, 0x48, 0x4e, 0x5b, - 0x93, 0xfb, 0x68, 0xfb, 0x61, 0x27, 0xc7, 0xd7, 0x19, 0xd9, 0xdb, 0x50, 0xc7, 0x67, 0x47, 0xb1, - 0x35, 0x5f, 0xa0, 0x60, 0x5d, 0x5a, 0xb5, 0x86, 0xc5, 0x6d, 0xbd, 0x88, 0x02, 0x1f, 0x19, 0x1a, - 0xf2, 0xc4, 0x12, 0x04, 0xdb, 0x04, 0xb0, 0x9d, 0xa9, 0xb5, 0xf4, 0x62, 0x24, 0x6f, 0xc8, 0xa3, - 0xcb, 0xe0, 0x76, 0x2a, 0x50, 0x7a, 0x65, 0x79, 0x4b, 0x47, 0xbf, 0x06, 0xea, 0xbe, 0x15, 0x5a, - 0x73, 0xee, 0x4c, 0x99, 0x06, 0x85, 0x45, 0x10, 0x49, 0xd7, 0xc2, 0xa5, 0xde, 0x83, 0xf2, 0x53, - 0x2b, 0x44, 0x1a, 0x83, 0xa2, 0x6f, 0xcd, 0x1d, 0x22, 0x56, 0x39, 0xad, 0xf1, 0xd6, 0xa3, 0xe3, - 0x28, 0x76, 0xe6, 0xd2, 0xef, 0x24, 0x84, 0xf8, 0x99, 0x17, 0x8c, 0xe5, 0x0d, 0xab, 0x5c, 0x42, - 0x7a, 0x1f, 0xca, 0xed, 0xc0, 0x43, 0x6d, 0x97, 0xa1, 0x12, 0x3a, 0xde, 0x68, 0xf5, 0xb4, 0x72, - 0xe8, 0x78, 0xfb, 0x41, 0x84, 0x84, 0x49, 0x20, 0x08, 0x79, 0x41, 0x98, 0x04, 0x44, 0x48, 0x9e, - 0x5f, 0x58, 0x3d, 0x5f, 0x37, 0x01, 0xda, 0x41, 0x18, 0xfe, 0x64, 0x9d, 0x17, 0xa1, 0x64, 0x3b, - 0x8b, 0x55, 0x74, 0x10, 0xa0, 0xdf, 0x01, 0xd5, 0x38, 0x5a, 0x84, 0x3d, 0x37, 0x8a, 0xd9, 0x75, - 0x28, 0x7a, 0x6e, 0x14, 0x37, 0x95, 0xcd, 0xc2, 0x56, 0x6d, 0x1b, 0xc4, 0xdd, 0x21, 0x95, 0x13, - 0x5e, 0xbf, 0x03, 0x60, 0x5a, 0xe1, 0xcc, 0x89, 0x29, 0x32, 0xaf, 0x41, 0x21, 0x3e, 0x5e, 0xd0, - 0xd3, 0x53, 0x66, 0x24, 0x70, 0x44, 0xeb, 0xff, 0xa3, 0x40, 0x6d, 0xb8, 0x1c, 0x7f, 0xb3, 0x74, - 0xc2, 0x63, 0xb4, 0x77, 0x6b, 0xc5, 0xbd, 0xb1, 0x7d, 0x49, 0x70, 0x67, 0xe8, 0x2b, 0x49, 0xdc, - 0x80, 0x1f, 0xd8, 0xce, 0xc8, 0xb5, 0x93, 0x0d, 0x20, 0xd8, 0xb5, 0x31, 0x15, 0x04, 0x0b, 0x79, - 0x24, 0xf9, 0x60, 0xc1, 0x36, 0xa1, 0x34, 0x79, 0xee, 0x7a, 0x36, 0xc5, 0xd0, 0xba, 0xbd, 0x82, - 0xc0, 0xae, 0x80, 0x1a, 0x06, 0x87, 0xa3, 0x4c, 0x80, 0x57, 0xc2, 0xe0, 0x70, 0xe8, 0x7e, 0x8b, - 0xa7, 0x29, 0xf2, 0x0b, 0x40, 0x79, 0xd8, 0x6e, 0xf5, 0x5a, 0x5c, 0xcb, 0xe1, 0xda, 0xf8, 0xb2, - 0x3b, 0x34, 0x87, 0x9a, 0xc2, 0x36, 0x00, 0xfa, 0x03, 0x73, 0x24, 0xe1, 0x3c, 0x2b, 0x43, 0xbe, - 0xdb, 0xd7, 0x0a, 0xc8, 0x83, 0xf8, 0x6e, 0x5f, 0x2b, 0xb2, 0x0a, 0x14, 0x5a, 0xfd, 0xaf, 0xb4, - 0x12, 0x2d, 0x7a, 0x3d, 0xad, 0xac, 0xff, 0x8b, 0x02, 0xd5, 0xc1, 0xf8, 0x85, 0x33, 0x89, 0x71, - 0xcf, 0xe8, 0x31, 0x4e, 0xf8, 0xca, 0x09, 0x69, 0xdb, 0x05, 0x2e, 0x21, 0xdc, 0x88, 0x3d, 0x16, - 0x59, 0x82, 0xe7, 0xed, 0x31, 0xf1, 0x4d, 0x9e, 0x3b, 0x73, 0x8b, 0x36, 0x87, 0x7c, 0x04, 0xa1, - 0x87, 0x06, 0xe3, 0x17, 0xb4, 0xbd, 0x02, 0xc7, 0x25, 0x7b, 0x0b, 0x6a, 0x42, 0xc7, 0x88, 0xdc, - 0xa3, 0x44, 0x67, 0x01, 0x02, 0xd5, 0x47, 0x27, 0xbd, 0x0c, 0x15, 0x7b, 0x2c, 0x88, 0x65, 0x22, - 0x96, 0xed, 0x31, 0x11, 0x50, 0x92, 0xb4, 0x0a, 0x62, 0x45, 0x4a, 0x12, 0x8a, 0x18, 0xae, 0x80, - 0x1a, 0x8c, 0x5f, 0x08, 0xaa, 0x4a, 0xd4, 0x4a, 0x30, 0x7e, 0x81, 0x24, 0xfd, 0x3f, 0x14, 0x50, - 0x1f, 0x2d, 0xfd, 0x49, 0x8c, 0x09, 0xf3, 0x26, 0x14, 0xa7, 0x4b, 0x7f, 0x22, 0xef, 0x5d, 0x26, - 0x86, 0x74, 0xcf, 0x9c, 0x88, 0xe8, 0x49, 0x56, 0x38, 0x43, 0x0f, 0x3c, 0xe5, 0x49, 0x88, 0xd7, - 0xff, 0x52, 0x6a, 0x7c, 0xe4, 0x59, 0x33, 0xa6, 0x42, 0xb1, 0x3f, 0xe8, 0x1b, 0x5a, 0x8e, 0xd5, - 0x41, 0xed, 0xf6, 0x4d, 0x83, 0xf7, 0x5b, 0x3d, 0x4d, 0xa1, 0xab, 0x31, 0x5b, 0x3b, 0x3d, 0x43, - 0xcb, 0x23, 0xe5, 0xe9, 0xa0, 0xd7, 0x32, 0xbb, 0x3d, 0x43, 0x2b, 0x0a, 0x0a, 0xef, 0xb6, 0x4d, - 0x4d, 0x65, 0x1a, 0xd4, 0xf7, 0xf9, 0x60, 0xf7, 0xa0, 0x6d, 0x8c, 0xfa, 0x07, 0xbd, 0x9e, 0xa6, - 0xb1, 0x0b, 0x70, 0x2e, 0xc5, 0x0c, 0x04, 0x72, 0x13, 0x45, 0x9e, 0xb6, 0x78, 0x8b, 0xef, 0x69, - 0x9f, 0x33, 0x15, 0x0a, 0xad, 0xbd, 0x3d, 0xed, 0xb7, 0x0a, 0xae, 0x9e, 0x75, 0xfb, 0xda, 0x6f, - 0xf3, 0xfa, 0x1f, 0xf3, 0x50, 0x44, 0x03, 0xbf, 0xdf, 0xad, 0xd9, 0xcf, 0x40, 0x99, 0xd0, 0xcd, - 0xd5, 0xb6, 0x6b, 0x82, 0x46, 0x25, 0xa1, 0x93, 0xe3, 0x0a, 0xee, 0x5a, 0x11, 0xfe, 0x59, 0xdb, - 0xde, 0x10, 0xc4, 0x24, 0xd9, 0x20, 0x7d, 0xc1, 0xae, 0x81, 0xf2, 0x4a, 0x3a, 0x6b, 0x5d, 0xd0, - 0x45, 0xba, 0x41, 0xea, 0x2b, 0xb6, 0x09, 0x85, 0x49, 0x20, 0x52, 0x7f, 0x4a, 0x17, 0xc1, 0xde, - 0xc9, 0x71, 0x24, 0xa1, 0xfe, 0x29, 0x5d, 0x6b, 0xaa, 0x3f, 0xb9, 0x15, 0xd4, 0x30, 0x65, 0xb7, - 0xa0, 0x10, 0x2d, 0xc7, 0x74, 0xb7, 0xb5, 0xed, 0xf3, 0xa7, 0x62, 0x0c, 0xd5, 0x44, 0xcb, 0x31, - 0xbb, 0x0d, 0xc5, 0x49, 0x10, 0x86, 0x74, 0xcb, 0x69, 0x8a, 0x5e, 0xa5, 0x16, 0x2c, 0x25, 0x48, - 0x67, 0x9b, 0xa0, 0xc4, 0x54, 0x24, 0x52, 0xa6, 0x55, 0xf4, 0xe3, 0x03, 0x63, 0xf6, 0xb6, 0x4c, - 0x18, 0x90, 0xb5, 0x29, 0x49, 0x27, 0xa8, 0x07, 0xa9, 0x3b, 0x65, 0x28, 0x3a, 0x47, 0x8b, 0x50, - 0xbf, 0x02, 0xd5, 0xb4, 0x66, 0xb0, 0x3a, 0x28, 0x96, 0x0c, 0x0b, 0xc5, 0xd2, 0xb7, 0x30, 0x85, - 0x27, 0x55, 0x61, 0x9d, 0x86, 0x50, 0x12, 0x2c, 0xca, 0x18, 0x23, 0x0c, 0xd3, 0xea, 0xee, 0x6b, - 0x92, 0xf4, 0xdb, 0x50, 0xb0, 0xbc, 0x19, 0xb1, 0x6f, 0x6c, 0xb3, 0x64, 0x6b, 0xf3, 0x45, 0xe8, - 0x44, 0x91, 0xb8, 0x45, 0xcb, 0x9b, 0x25, 0x77, 0x5c, 0x38, 0xfb, 0x8e, 0x7f, 0x0e, 0x15, 0x59, - 0x3b, 0xe4, 0x65, 0x35, 0x04, 0xc7, 0xae, 0x40, 0xf2, 0x84, 0xca, 0x9a, 0x50, 0x59, 0x84, 0xee, - 0xdc, 0x0a, 0x8f, 0x45, 0xc1, 0xe6, 0x09, 0x88, 0xb9, 0x76, 0xf1, 0xd2, 0xb5, 0x8f, 0x92, 0x0e, - 0x82, 0x00, 0xe4, 0x9f, 0x04, 0xf3, 0xb9, 0xe3, 0xc7, 0x32, 0xfe, 0x12, 0x50, 0xff, 0x06, 0x2a, - 0x52, 0x3b, 0xbb, 0x01, 0x75, 0x6c, 0x26, 0x46, 0xd6, 0xd8, 0xf5, 0xdc, 0xf8, 0x58, 0xb6, 0x18, - 0x35, 0xc4, 0xb5, 0x04, 0x0a, 0xa3, 0x0b, 0x0f, 0x54, 0xfa, 0xe1, 0x5a, 0x74, 0x21, 0x9e, 0xdd, - 0x84, 0x46, 0x10, 0xba, 0x33, 0xd7, 0x1f, 0x45, 0x71, 0xe8, 0xfa, 0x33, 0x99, 0x33, 0xeb, 0x02, - 0x39, 0x24, 0x9c, 0xfe, 0xd7, 0x0a, 0xa8, 0x5d, 0xdf, 0x76, 0x8e, 0xf0, 0x28, 0xef, 0x64, 0xb3, - 0x73, 0x53, 0x28, 0x4c, 0x88, 0x62, 0xb1, 0x3a, 0x9e, 0xe4, 0xd8, 0xf3, 0x99, 0x63, 0xff, 0x19, - 0x54, 0xb1, 0xe8, 0xe0, 0x3a, 0x6a, 0x16, 0x36, 0x0b, 0x5b, 0x55, 0xae, 0x4e, 0x02, 0x0f, 0xb3, - 0x47, 0xa4, 0xdf, 0x85, 0x6a, 0xaa, 0x82, 0xd5, 0xa0, 0xd2, 0xed, 0x3f, 0x6d, 0x75, 0x7b, 0xbb, - 0x5a, 0x0e, 0x81, 0xaf, 0x07, 0x7d, 0xe3, 0x49, 0x6b, 0x5f, 0x53, 0x30, 0x89, 0xee, 0x0c, 0xbb, - 0x5a, 0x5e, 0xbf, 0x05, 0x8d, 0x7d, 0x71, 0x8e, 0x8f, 0x9d, 0x63, 0xb4, 0xee, 0x22, 0x94, 0x84, - 0x66, 0x85, 0x34, 0x0b, 0x40, 0xdf, 0x06, 0x75, 0x3f, 0x0c, 0x16, 0x4e, 0x18, 0x1f, 0x63, 0xa6, - 0x7c, 0xe9, 0x1c, 0x4b, 0x4f, 0xc0, 0x25, 0xca, 0x50, 0xc9, 0x97, 0x66, 0xca, 0xfa, 0xff, 0x19, - 0xaa, 0x26, 0x19, 0xd7, 0x89, 0x50, 0xf5, 0x5d, 0x80, 0x45, 0x8a, 0x90, 0x85, 0x2f, 0x89, 0x5d, - 0xa9, 0x9c, 0x67, 0x38, 0xf4, 0x37, 0xa1, 0xf2, 0xd4, 0x75, 0x0e, 0xa5, 0xfb, 0xbd, 0x72, 0x9d, - 0xc3, 0xc4, 0xfd, 0x70, 0xad, 0xff, 0x77, 0x01, 0x54, 0x13, 0x7b, 0xd1, 0xd7, 0xf9, 0xe7, 0x26, - 0xc6, 0x9e, 0x97, 0x24, 0xc6, 0x55, 0x94, 0xef, 0x62, 0xea, 0x44, 0x0a, 0xbb, 0x03, 0x45, 0xdb, - 0x99, 0x8a, 0x53, 0xac, 0x25, 0x95, 0x32, 0xd1, 0x89, 0x3e, 0x48, 0x37, 0x41, 0x3c, 0xec, 0x4d, - 0x80, 0x18, 0x29, 0xa3, 0xf8, 0x78, 0xe1, 0x88, 0x56, 0x92, 0x57, 0x09, 0x23, 0x2b, 0x74, 0x75, - 0x12, 0x3a, 0x56, 0xec, 0x44, 0xdf, 0x78, 0xb2, 0x56, 0xac, 0x10, 0xac, 0x03, 0x1b, 0x68, 0xd2, - 0x36, 0x5e, 0x9c, 0x8b, 0xf7, 0xd3, 0x2c, 0xd3, 0x23, 0x6f, 0x9c, 0x78, 0x64, 0x5f, 0x32, 0xd1, - 0x1d, 0x1a, 0x7e, 0x1c, 0x1e, 0xf3, 0x86, 0x9f, 0xc5, 0x5d, 0xfd, 0x7b, 0x85, 0xdc, 0x97, 0x9e, - 0x79, 0x0b, 0xf2, 0x8b, 0x97, 0x32, 0x7b, 0x5e, 0x48, 0x0e, 0x32, 0x73, 0x99, 0x9d, 0x1c, 0xcf, - 0x2f, 0x5e, 0x32, 0x1d, 0x0a, 0x18, 0x1e, 0xf9, 0x6c, 0xe2, 0x48, 0x1c, 0x0e, 0xf3, 0x14, 0x86, - 0xcb, 0xc7, 0x6b, 0x77, 0x53, 0x58, 0x57, 0x99, 0xb9, 0x44, 0x6c, 0xf6, 0x56, 0x8c, 0x58, 0xa0, - 0xe8, 0x5e, 0xd6, 0x62, 0x57, 0x5e, 0x1a, 0xe6, 0x24, 0x24, 0xee, 0x94, 0xa0, 0x60, 0x3b, 0xd3, - 0xab, 0x9f, 0x03, 0x3b, 0xbd, 0xbd, 0x1f, 0xf2, 0xa6, 0x92, 0xf4, 0xa6, 0x5f, 0xe6, 0x1f, 0x2a, - 0x7a, 0x08, 0xc5, 0x76, 0x10, 0xc5, 0x78, 0xd9, 0x13, 0x2b, 0x14, 0x93, 0x8a, 0xc2, 0x69, 0x8d, - 0xf1, 0x1e, 0x06, 0x87, 0xd4, 0x7d, 0xe4, 0x09, 0x9d, 0x80, 0xf8, 0x04, 0xdf, 0x7e, 0x25, 0x46, - 0x02, 0x8e, 0x4b, 0x9a, 0x39, 0x62, 0x2b, 0x14, 0x29, 0x47, 0xe1, 0x02, 0x40, 0x6c, 0x1c, 0xc4, - 0x72, 0x20, 0x50, 0xb8, 0x00, 0xf4, 0xbf, 0x53, 0xa0, 0x82, 0x3e, 0x63, 0xc5, 0x16, 0x46, 0x1e, - 0xb6, 0x38, 0x93, 0x60, 0xe9, 0xc7, 0xb2, 0x13, 0xc4, 0x9e, 0xa7, 0x8d, 0x30, 0xfa, 0x07, 0xe5, - 0x12, 0x41, 0x15, 0xb6, 0x57, 0x11, 0x23, 0xc8, 0x18, 0x57, 0x4b, 0xcf, 0x13, 0xbe, 0xa6, 0x72, - 0x01, 0xa0, 0x6d, 0xee, 0xbd, 0xed, 0x66, 0x71, 0xb3, 0x80, 0x7d, 0xb1, 0x7b, 0x6f, 0x9b, 0x30, - 0x0f, 0xee, 0x37, 0x4b, 0x9b, 0x05, 0xec, 0x43, 0xdc, 0x07, 0xf7, 0x11, 0x33, 0xbd, 0xb7, 0x4d, - 0x0e, 0x93, 0xe7, 0xb8, 0x24, 0xcc, 0x83, 0xfb, 0xcd, 0xca, 0x66, 0x01, 0x77, 0x34, 0x15, 0x19, - 0x3e, 0x6a, 0xaa, 0x14, 0xb1, 0x4a, 0xa4, 0x3f, 0x03, 0xe0, 0xc1, 0x61, 0xe4, 0xc4, 0x64, 0xf5, - 0xed, 0xb4, 0xe3, 0x51, 0xb2, 0x1e, 0x90, 0xf8, 0x5c, 0xda, 0x01, 0xdd, 0x58, 0x0b, 0x97, 0xc6, - 0x2a, 0x5c, 0xac, 0xd8, 0x12, 0xf1, 0xa2, 0xff, 0xbb, 0x02, 0xb5, 0x41, 0x68, 0x3b, 0xe1, 0xce, - 0xf1, 0x70, 0xe1, 0x4c, 0xd2, 0xe4, 0xa8, 0xbc, 0x26, 0x39, 0x5e, 0xa3, 0x54, 0xe5, 0x59, 0x58, - 0x36, 0x65, 0x72, 0x58, 0x21, 0xd8, 0x47, 0x50, 0x9c, 0x7a, 0x96, 0xc8, 0x98, 0x1b, 0xdb, 0x6f, - 0xca, 0xee, 0x66, 0xa5, 0x3e, 0x59, 0x63, 0xe3, 0xc2, 0x89, 0x55, 0xff, 0x4d, 0xfa, 0x7c, 0xea, - 0x66, 0xb0, 0x17, 0x1c, 0xb6, 0xb5, 0x1c, 0xb6, 0x35, 0xbb, 0xc6, 0xb0, 0xad, 0x29, 0xec, 0x1c, - 0xd4, 0xb0, 0x0b, 0x19, 0x8e, 0x1e, 0x75, 0xf9, 0xd0, 0xd4, 0xf2, 0xd4, 0x5c, 0x12, 0xa2, 0xd7, - 0x1a, 0x9a, 0xa2, 0x9f, 0x39, 0xe8, 0x77, 0x7f, 0x7d, 0x60, 0x68, 0xea, 0x5a, 0x0f, 0xa4, 0x61, - 0xa3, 0x04, 0xcf, 0x5c, 0xdf, 0x0e, 0x0e, 0x69, 0x73, 0xef, 0x43, 0x7d, 0x61, 0x85, 0xb1, 0x8b, - 0xb6, 0x8e, 0xc6, 0xc7, 0x67, 0x74, 0xea, 0xb5, 0x94, 0xbe, 0x73, 0xcc, 0xde, 0x03, 0x35, 0x40, - 0xd3, 0x90, 0x55, 0x1c, 0xe1, 0xf9, 0x53, 0x3b, 0xe2, 0x95, 0x40, 0x00, 0xe8, 0xc2, 0x9e, 0x63, - 0xd9, 0x72, 0x3e, 0xa0, 0x35, 0x5e, 0x2b, 0x1e, 0x87, 0x18, 0x9b, 0x71, 0xa9, 0xff, 0x21, 0x0f, - 0xd5, 0x83, 0x05, 0x8e, 0x8c, 0xed, 0xf8, 0x28, 0xdb, 0x6f, 0x2a, 0x6b, 0xfd, 0xe6, 0x15, 0x50, - 0xe3, 0xb1, 0xa8, 0x08, 0xf2, 0x94, 0x2b, 0xf1, 0xd8, 0x4b, 0x7a, 0xd4, 0x45, 0xe8, 0x8e, 0x30, - 0xc4, 0x44, 0x61, 0x2a, 0x2f, 0x42, 0xf7, 0xb1, 0x83, 0x75, 0xad, 0x26, 0x09, 0x23, 0x4c, 0x0e, - 0xe9, 0xac, 0x8e, 0xc4, 0xae, 0x7d, 0x84, 0x3a, 0x9f, 0xbb, 0xb6, 0x43, 0x92, 0x22, 0x9d, 0x55, - 0x10, 0x46, 0xd1, 0x4d, 0xa8, 0x27, 0xa4, 0xd1, 0xaa, 0xee, 0x82, 0x24, 0xa3, 0xf0, 0xfb, 0x50, - 0x5b, 0x92, 0xd9, 0x23, 0xf2, 0xa8, 0xca, 0x19, 0x09, 0x18, 0x04, 0x43, 0x1b, 0xd3, 0xf0, 0x5b, - 0x50, 0x0b, 0xe2, 0xe7, 0x4e, 0x38, 0xb2, 0xe2, 0x38, 0x4c, 0xfc, 0x18, 0x08, 0xd5, 0x42, 0x0c, - 0x31, 0xd0, 0xd9, 0x0a, 0x86, 0xaa, 0x64, 0x40, 0x14, 0x31, 0x60, 0xa7, 0x52, 0x6b, 0xf9, 0x96, - 0x77, 0xfc, 0xad, 0xd3, 0xf5, 0xa7, 0x01, 0x06, 0xa3, 0xeb, 0x2f, 0x96, 0xf1, 0x08, 0x93, 0x80, - 0x6c, 0x6f, 0xaa, 0x84, 0xc1, 0xc0, 0x20, 0x7d, 0xcb, 0x38, 0xa5, 0x8b, 0x86, 0x07, 0x04, 0x8a, - 0x18, 0x52, 0x79, 0x4a, 0x28, 0x85, 0x8c, 0x3c, 0x0e, 0x34, 0x19, 0x79, 0xa2, 0x17, 0xb3, 0xf2, - 0xc4, 0x70, 0x13, 0x1a, 0x38, 0x52, 0x8f, 0x26, 0x81, 0x1f, 0x2d, 0xe7, 0x8e, 0x4d, 0x47, 0x58, - 0x10, 0x73, 0x76, 0x5b, 0xe2, 0x50, 0xcb, 0xdc, 0x99, 0x07, 0xe1, 0xb1, 0xd0, 0x52, 0x16, 0x5a, - 0x04, 0x8a, 0xe6, 0xa6, 0x7f, 0xac, 0x43, 0xb1, 0x1f, 0xd8, 0x0e, 0xfb, 0x10, 0xaa, 0x34, 0xa6, - 0x51, 0xe9, 0x11, 0x8d, 0x83, 0x4c, 0xce, 0x48, 0xa6, 0x1f, 0xaa, 0x54, 0xaa, 0x2f, 0x57, 0xaf, - 0x1f, 0xec, 0xae, 0x63, 0x94, 0x47, 0xf1, 0x7a, 0x3f, 0x86, 0x59, 0x95, 0x13, 0x9e, 0xbc, 0x3e, - 0x0c, 0x70, 0xc2, 0x18, 0x51, 0xbb, 0x59, 0x3c, 0xc3, 0xeb, 0x05, 0x9d, 0xc6, 0xd8, 0xab, 0xa0, - 0xd2, 0xf8, 0x17, 0x3a, 0x3e, 0xe5, 0xac, 0x12, 0x4f, 0x61, 0xb4, 0xfa, 0x45, 0xe0, 0xfa, 0xc2, - 0xea, 0xf2, 0x29, 0xab, 0xbf, 0x08, 0x5c, 0x9f, 0x42, 0x5b, 0x45, 0x2e, 0xb2, 0xfa, 0x26, 0x54, - 0x02, 0x5f, 0x3c, 0xb7, 0x72, 0xea, 0xb9, 0xe5, 0xc0, 0xa7, 0x47, 0xbe, 0x0b, 0xb5, 0xa9, 0xeb, - 0xc5, 0x4e, 0x28, 0x18, 0xd5, 0x53, 0x8c, 0x20, 0xc8, 0xc4, 0x7c, 0x0b, 0xd4, 0x59, 0x18, 0x2c, - 0x17, 0x18, 0x95, 0xd5, 0x53, 0x9c, 0x15, 0xa2, 0xed, 0x1c, 0xe3, 0xae, 0x69, 0xe9, 0xfa, 0xb3, - 0x51, 0xe4, 0x60, 0x93, 0x7d, 0x6a, 0xd7, 0x09, 0x7d, 0xe8, 0x90, 0x56, 0x6b, 0x36, 0x13, 0xcf, - 0xaf, 0x9d, 0xd6, 0x6a, 0xcd, 0x66, 0xf4, 0xf0, 0x6c, 0x4a, 0xa8, 0xff, 0x60, 0x4a, 0xf8, 0x70, - 0x15, 0x34, 0xf1, 0x51, 0xd4, 0x6c, 0x90, 0x80, 0x9c, 0xf9, 0xd2, 0x24, 0x90, 0xc6, 0x4d, 0x7c, - 0x14, 0xb1, 0x77, 0x41, 0x3d, 0xc4, 0xc6, 0x73, 0xe1, 0x4c, 0xe8, 0x55, 0x4c, 0x3a, 0x3b, 0xac, - 0xb2, 0x18, 0xaf, 0x1c, 0xba, 0x3e, 0xa5, 0xb3, 0x4d, 0x28, 0x79, 0xee, 0xdc, 0x8d, 0x9b, 0xe7, - 0x4e, 0x4f, 0xf0, 0x44, 0x60, 0x3a, 0x94, 0x83, 0xe9, 0x14, 0xb7, 0xaf, 0x9d, 0x62, 0x91, 0x14, - 0xf6, 0x2e, 0x88, 0x9e, 0x67, 0x64, 0x3b, 0xd3, 0xe6, 0xf9, 0x33, 0xeb, 0x89, 0x1a, 0x27, 0x4d, - 0xd9, 0x16, 0xe0, 0x58, 0x3b, 0x0a, 0x9d, 0x69, 0x93, 0x9d, 0x3d, 0xc1, 0x96, 0x83, 0xf1, 0x0b, - 0x9c, 0xde, 0x3f, 0x82, 0x5a, 0x48, 0x15, 0x6b, 0x64, 0x5b, 0xb1, 0xd5, 0xbc, 0x90, 0xdd, 0xcc, - 0xaa, 0x94, 0x71, 0x08, 0x57, 0x65, 0xed, 0x26, 0x34, 0x9c, 0xa3, 0x38, 0xb4, 0x46, 0xc1, 0x02, - 0x33, 0x70, 0xd4, 0xbc, 0x28, 0x1a, 0x6f, 0x42, 0x0e, 0x04, 0x8e, 0xfd, 0x0a, 0xce, 0xd9, 0x8e, - 0xe7, 0xc4, 0x0e, 0x59, 0x17, 0xb5, 0xe3, 0xa3, 0xe6, 0x1b, 0x74, 0xae, 0x17, 0x93, 0x31, 0x23, - 0x25, 0xe2, 0xe1, 0x9e, 0x64, 0xc6, 0x01, 0x61, 0xec, 0xfa, 0x36, 0xba, 0x45, 0x6c, 0xcd, 0xa2, - 0xe6, 0x25, 0x72, 0xf1, 0x9a, 0xc4, 0x99, 0xd6, 0x2c, 0x62, 0xf7, 0xa1, 0x6e, 0x89, 0xcc, 0x33, - 0x72, 0xfd, 0x69, 0xd0, 0xbc, 0x9c, 0x9d, 0x08, 0x33, 0x39, 0x89, 0xd7, 0xac, 0x15, 0xa0, 0xff, - 0x6b, 0x01, 0xd4, 0x24, 0x6c, 0xb1, 0x35, 0x3f, 0xe8, 0x3f, 0xee, 0x0f, 0x9e, 0xf5, 0xb5, 0x1c, - 0xd6, 0xab, 0xa7, 0xad, 0xde, 0x81, 0x31, 0x1a, 0xb6, 0x5b, 0x7d, 0xf1, 0x72, 0x84, 0x06, 0x73, - 0x01, 0xe7, 0xd9, 0x79, 0x68, 0x3c, 0x3a, 0xe8, 0xb7, 0xcd, 0xee, 0xa0, 0x2f, 0x50, 0x05, 0x44, - 0x19, 0x5f, 0x8a, 0x32, 0x26, 0x50, 0x45, 0x44, 0x3d, 0x69, 0x99, 0x06, 0xef, 0x26, 0xa8, 0x12, - 0x3e, 0x65, 0x9f, 0x0f, 0xbe, 0x30, 0xda, 0xa6, 0x06, 0xec, 0x0d, 0x38, 0x9f, 0x8a, 0x24, 0xea, - 0xb4, 0x1a, 0x16, 0xc4, 0x44, 0x4c, 0xbb, 0x88, 0x4a, 0xb8, 0xd1, 0x3e, 0xe0, 0xc3, 0xee, 0x53, - 0x63, 0xd4, 0x36, 0x0d, 0xed, 0x0d, 0x2c, 0xb4, 0xc3, 0x6e, 0xff, 0xb1, 0x76, 0x89, 0x35, 0xa0, - 0x8a, 0x2b, 0xa1, 0xfd, 0x32, 0x95, 0xe2, 0xbd, 0x3d, 0xed, 0x3a, 0xaa, 0xd8, 0xed, 0x0e, 0xcd, - 0x6e, 0xbf, 0x6d, 0x6a, 0x6f, 0x61, 0xb5, 0x7d, 0xd4, 0xed, 0x99, 0x06, 0xd7, 0x36, 0x51, 0xf6, - 0x8b, 0x41, 0xb7, 0xaf, 0xdd, 0xa0, 0x77, 0x0a, 0xad, 0x27, 0xfb, 0x3d, 0x43, 0xd3, 0x49, 0xe3, - 0x80, 0x9b, 0xda, 0x4d, 0x56, 0x85, 0xd2, 0x41, 0x1f, 0xed, 0x78, 0x1b, 0x95, 0xd3, 0x72, 0xd4, - 0xea, 0xf5, 0xb4, 0x5b, 0x99, 0x9a, 0x7d, 0x1b, 0xd7, 0xcf, 0xba, 0xfd, 0xdd, 0xc1, 0x33, 0xed, - 0xe7, 0xc8, 0xb6, 0xc3, 0x07, 0xad, 0xdd, 0x36, 0x96, 0xf6, 0x2d, 0x54, 0x30, 0xdc, 0xef, 0x75, - 0x4d, 0xed, 0x1d, 0xe4, 0xda, 0x6b, 0x99, 0x1d, 0x83, 0x6b, 0x77, 0x70, 0xdd, 0x1a, 0x0e, 0x0d, - 0x6e, 0x6a, 0xdb, 0xb8, 0xee, 0xf6, 0x69, 0x7d, 0x8f, 0xb4, 0xee, 0xef, 0xb6, 0x4c, 0x43, 0xbb, - 0x8f, 0xeb, 0x5d, 0xa3, 0x67, 0x98, 0x86, 0xf6, 0x31, 0x6a, 0xa5, 0xae, 0x60, 0x88, 0x47, 0xf5, - 0x00, 0x4f, 0x21, 0x05, 0xc9, 0x9e, 0x5f, 0xe0, 0x83, 0x9e, 0x74, 0xfb, 0x07, 0x43, 0xed, 0x21, - 0x32, 0xd3, 0x92, 0x28, 0x9f, 0xe8, 0x2f, 0x40, 0x4d, 0xf2, 0x1a, 0x72, 0x75, 0xfb, 0x7d, 0x83, - 0x8b, 0xfe, 0xa4, 0x67, 0x3c, 0x32, 0x35, 0x05, 0x91, 0xbc, 0xbb, 0xd7, 0xc1, 0xce, 0xa4, 0x0a, - 0xa5, 0xc1, 0x01, 0x1e, 0x4d, 0x81, 0x0e, 0xc1, 0x78, 0xd2, 0xd5, 0x8a, 0xb8, 0x6a, 0xf5, 0xcd, - 0xae, 0x56, 0xa2, 0x43, 0xea, 0xf6, 0xf7, 0x7a, 0x86, 0x56, 0x46, 0xec, 0x93, 0x16, 0x7f, 0xac, - 0x55, 0x50, 0xa8, 0xb5, 0xbf, 0xdf, 0xfb, 0x4a, 0x53, 0xf5, 0x2d, 0xa8, 0xb4, 0x66, 0xb3, 0x27, - 0x58, 0x20, 0x54, 0x28, 0x3e, 0x3a, 0xe8, 0xf5, 0xc4, 0x7b, 0xb5, 0x9d, 0x81, 0x69, 0x0e, 0x9e, - 0x88, 0x29, 0xcf, 0x1c, 0xec, 0x6b, 0x79, 0xfd, 0x0f, 0x0a, 0x6c, 0xac, 0xbb, 0x3a, 0xbb, 0x04, - 0xb2, 0x7b, 0x38, 0xd1, 0x4b, 0x34, 0x21, 0xe9, 0x1d, 0x4e, 0xb6, 0x12, 0x3a, 0xd4, 0x97, 0x91, - 0x23, 0xd4, 0x3c, 0x4e, 0xfb, 0x89, 0x35, 0x1c, 0xdb, 0x84, 0xda, 0xc4, 0xf2, 0xcd, 0x70, 0xe9, - 0x4f, 0xac, 0x58, 0x14, 0x46, 0x95, 0x67, 0x51, 0xd8, 0x12, 0xba, 0x51, 0x47, 0xb4, 0x0a, 0x72, - 0x92, 0x5f, 0x21, 0xf4, 0xdf, 0xe5, 0xa1, 0xf4, 0xeb, 0xa5, 0x13, 0x1e, 0xb3, 0x07, 0x50, 0x8d, - 0xe2, 0x79, 0x9c, 0x2d, 0x79, 0x57, 0x44, 0x4c, 0x11, 0xfd, 0xee, 0x30, 0xb6, 0x62, 0x07, 0xe7, - 0x79, 0x51, 0xf8, 0x90, 0x97, 0x62, 0x89, 0x7a, 0x7b, 0x67, 0x21, 0xda, 0xd8, 0x12, 0x17, 0x00, - 0x26, 0x3f, 0xac, 0x7f, 0xc9, 0xa4, 0x07, 0xab, 0x32, 0xc4, 0x05, 0x01, 0x93, 0xdf, 0xc2, 0x0a, - 0xad, 0x79, 0x74, 0x46, 0xc5, 0x93, 0x14, 0x2c, 0x76, 0xcf, 0x1d, 0x0b, 0x23, 0x3f, 0xa2, 0x62, - 0x57, 0xe5, 0x29, 0xac, 0x3f, 0x83, 0xc6, 0x9a, 0x49, 0xeb, 0x41, 0x8d, 0x77, 0x69, 0xf4, 0xd0, - 0x9f, 0x94, 0x8c, 0x0b, 0xe6, 0x33, 0x6e, 0x57, 0xc8, 0xb8, 0x63, 0x91, 0x1c, 0xcc, 0xe0, 0x7b, - 0x86, 0x56, 0xd2, 0xff, 0x36, 0x0f, 0xe7, 0xcd, 0xd0, 0xf2, 0x23, 0x6a, 0x9a, 0xdb, 0x81, 0x1f, - 0x87, 0x81, 0xc7, 0x7e, 0x09, 0x6a, 0x3c, 0xf1, 0xb2, 0xa7, 0xf3, 0x96, 0x4c, 0xc3, 0x27, 0x59, - 0xef, 0x9a, 0x13, 0x8f, 0xce, 0xa8, 0x12, 0x8b, 0x05, 0x7b, 0x1f, 0x4a, 0x63, 0x67, 0xe6, 0xfa, - 0x72, 0x22, 0x7c, 0xe3, 0xa4, 0xe0, 0x0e, 0x12, 0x3b, 0x39, 0x2e, 0xb8, 0xd8, 0x87, 0x50, 0x9e, - 0x04, 0x73, 0xac, 0x1c, 0xa2, 0x67, 0xb8, 0x74, 0xfa, 0x41, 0x48, 0xed, 0xe4, 0xb8, 0xe4, 0x63, - 0x0f, 0x40, 0x0d, 0x03, 0xcf, 0x1b, 0x5b, 0x93, 0x97, 0x72, 0x32, 0x6c, 0x9e, 0x94, 0xe1, 0x92, - 0xde, 0xc9, 0xf1, 0x94, 0x57, 0xbf, 0x0b, 0x15, 0x69, 0x2c, 0x1e, 0xc0, 0x8e, 0xb1, 0xd7, 0x95, - 0x67, 0xd7, 0x1e, 0x3c, 0x79, 0xd2, 0xc5, 0xb3, 0xab, 0x83, 0xca, 0x07, 0xbd, 0xde, 0x4e, 0xab, - 0xfd, 0x58, 0xcb, 0xef, 0xa8, 0x50, 0xb6, 0xe8, 0x95, 0x9c, 0xfe, 0xe7, 0x0a, 0x9c, 0x3b, 0xb1, - 0x01, 0xf6, 0x10, 0x8a, 0xf3, 0xc0, 0x4e, 0x8e, 0xe7, 0xed, 0x33, 0x77, 0x99, 0x81, 0x31, 0x8e, - 0x38, 0x49, 0xe8, 0x9f, 0xc0, 0xc6, 0x3a, 0x3e, 0xf3, 0xda, 0xb4, 0x01, 0x55, 0x6e, 0xb4, 0x76, - 0x47, 0x83, 0x7e, 0xef, 0x2b, 0x91, 0x9d, 0x09, 0x7c, 0xc6, 0xbb, 0xa6, 0xa1, 0xe5, 0xf5, 0xdf, - 0x80, 0x76, 0xf2, 0x60, 0xd8, 0x1e, 0x9c, 0x9b, 0x04, 0xf3, 0x85, 0xe7, 0xd0, 0x24, 0x91, 0xb9, - 0xb2, 0xeb, 0x67, 0x9c, 0xa4, 0x64, 0xa3, 0x1b, 0xdb, 0x98, 0xac, 0xc1, 0xfa, 0x9f, 0x02, 0x3b, - 0x7d, 0x82, 0xff, 0x7f, 0xea, 0xff, 0x4d, 0x81, 0xe2, 0xbe, 0x67, 0xf9, 0xec, 0x26, 0x94, 0xe8, - 0x3d, 0xa6, 0x9c, 0xeb, 0x6a, 0x99, 0xb8, 0x43, 0xb7, 0x20, 0x1a, 0x7b, 0x17, 0x0a, 0xf1, 0xc4, - 0x93, 0x3e, 0x74, 0xf9, 0x35, 0xce, 0xd7, 0xc9, 0x71, 0xe4, 0x62, 0x5b, 0x50, 0xb0, 0x6d, 0x4f, - 0x3a, 0x50, 0x52, 0x7b, 0xad, 0xd8, 0xda, 0x75, 0xa6, 0xae, 0xef, 0xca, 0xb7, 0xaa, 0xc8, 0xc2, - 0x6e, 0x41, 0xc1, 0x9e, 0x78, 0xd2, 0x6d, 0xce, 0xaf, 0x38, 0x33, 0x0a, 0xed, 0x89, 0xc7, 0x6e, - 0x43, 0xc1, 0xf5, 0x23, 0xf9, 0x02, 0x97, 0x25, 0xef, 0x34, 0x22, 0x27, 0x8c, 0x9f, 0x5a, 0xde, - 0xd2, 0x89, 0xe8, 0xbd, 0x86, 0x1f, 0xed, 0x94, 0x81, 0xfe, 0x12, 0xd5, 0xff, 0x4b, 0x81, 0x7a, - 0x96, 0xfe, 0x93, 0x86, 0xa9, 0x8f, 0xb0, 0xe5, 0x58, 0x78, 0xee, 0xc4, 0x8d, 0xc5, 0x60, 0x53, - 0x38, 0x63, 0xb0, 0xa9, 0x27, 0x2c, 0x34, 0xda, 0xbc, 0x0b, 0x62, 0x8e, 0x11, 0xfc, 0xc5, 0x33, - 0xf8, 0xab, 0x44, 0x4f, 0xe7, 0xa0, 0xcc, 0x98, 0x53, 0x3a, 0x39, 0xe6, 0xb0, 0xdb, 0xf4, 0x7f, - 0xd3, 0x72, 0xee, 0x47, 0xf2, 0xfd, 0x91, 0x54, 0x25, 0x90, 0x3c, 0x21, 0xea, 0xef, 0x61, 0xc8, - 0xe2, 0x12, 0xd3, 0x9a, 0x58, 0x9d, 0x31, 0xbe, 0x4a, 0x8a, 0xfe, 0xbf, 0x79, 0xa8, 0x65, 0x8e, - 0x98, 0xdd, 0x07, 0xd5, 0x5e, 0xcf, 0x2d, 0x57, 0x4e, 0xdd, 0xc3, 0xdd, 0xdd, 0x24, 0xab, 0xd8, - 0x32, 0x62, 0x3f, 0x81, 0x06, 0xf6, 0x6f, 0xaf, 0xac, 0xd0, 0xa5, 0xf6, 0x49, 0x7a, 0x86, 0xbc, - 0x9b, 0xa1, 0x13, 0x3f, 0x4d, 0x28, 0x9d, 0x1c, 0xaf, 0x47, 0x19, 0x98, 0xbd, 0x83, 0x43, 0xaa, - 0xb3, 0xb0, 0x42, 0x47, 0x7a, 0x48, 0x23, 0x79, 0xf3, 0x44, 0xc8, 0x4e, 0x8e, 0x27, 0x74, 0x64, - 0x75, 0x8e, 0x9c, 0xc9, 0x52, 0x16, 0x97, 0x94, 0xd5, 0x10, 0x48, 0x64, 0x95, 0x74, 0xb6, 0x0d, - 0x60, 0x3b, 0x96, 0xe7, 0x05, 0x54, 0x8a, 0x4a, 0xd9, 0x96, 0x72, 0x37, 0xc5, 0x8b, 0x3f, 0x2f, - 0x13, 0x48, 0x9f, 0x41, 0x45, 0x6e, 0x0c, 0xcb, 0xfe, 0xd0, 0x30, 0x47, 0x4f, 0x5b, 0xbc, 0x8b, - 0xed, 0xd7, 0x50, 0xcb, 0x61, 0x52, 0xda, 0xe3, 0xad, 0xbe, 0x4c, 0xe2, 0xdc, 0x78, 0x3a, 0x78, - 0x6c, 0x68, 0x79, 0xf1, 0xf2, 0xa1, 0xff, 0x95, 0x56, 0x10, 0x2d, 0x96, 0xb1, 0xdf, 0xe2, 0x98, - 0xc3, 0x6b, 0x50, 0x31, 0xbe, 0x34, 0xda, 0x07, 0xa6, 0xa1, 0x95, 0x30, 0x4f, 0xec, 0x1a, 0xad, - 0x5e, 0x6f, 0xd0, 0xc6, 0x04, 0x5f, 0xde, 0xa9, 0xe2, 0x4d, 0xd2, 0x49, 0xea, 0x7f, 0x56, 0x85, - 0x8d, 0xf5, 0x58, 0x60, 0xbf, 0x00, 0xd5, 0xb6, 0xd7, 0x6e, 0xe0, 0xda, 0x59, 0x31, 0x73, 0x77, - 0xd7, 0x4e, 0x2e, 0x41, 0x2c, 0xd8, 0x8d, 0x24, 0x72, 0xf3, 0xa7, 0x22, 0x37, 0x89, 0xdb, 0xcf, - 0xe0, 0x9c, 0x78, 0x2f, 0x49, 0xad, 0xf6, 0xd8, 0x8a, 0x9c, 0xf5, 0xb0, 0x6c, 0x13, 0x71, 0x57, - 0xd2, 0x3a, 0x39, 0xbe, 0x31, 0x59, 0xc3, 0xb0, 0x4f, 0x61, 0xc3, 0xa2, 0xf1, 0x2b, 0x95, 0x2f, - 0x66, 0x5f, 0x17, 0xb6, 0x90, 0x96, 0x11, 0x6f, 0x58, 0x59, 0x04, 0xba, 0x89, 0x1d, 0x06, 0x8b, - 0x95, 0xf0, 0x5a, 0x08, 0xef, 0x86, 0xc1, 0x22, 0x23, 0x5b, 0xb7, 0x33, 0x30, 0x7b, 0x00, 0x75, - 0x69, 0x39, 0x4d, 0x18, 0xf2, 0xdf, 0x99, 0xf3, 0x59, 0xb3, 0xa9, 0xbd, 0xe9, 0xe4, 0x78, 0x6d, - 0xb2, 0x02, 0xd9, 0x3d, 0xa8, 0x09, 0x83, 0x85, 0x58, 0x25, 0xeb, 0x09, 0x64, 0x6d, 0x22, 0x05, - 0x56, 0x0a, 0xb1, 0x0f, 0x01, 0xc8, 0x4e, 0x21, 0xa3, 0x66, 0xc7, 0x17, 0x34, 0x32, 0x11, 0xa9, - 0xda, 0x09, 0x90, 0x31, 0x4f, 0xbc, 0xe1, 0xad, 0x9e, 0x36, 0x8f, 0xde, 0x7b, 0xae, 0xcc, 0x23, - 0x70, 0x65, 0x9e, 0x10, 0x83, 0x53, 0xe6, 0x25, 0x52, 0xc2, 0x3c, 0x21, 0x94, 0x98, 0x27, 0x64, - 0x6a, 0x27, 0xcd, 0x4b, 0x44, 0xc8, 0x3c, 0x21, 0xf1, 0x29, 0x6c, 0xc4, 0xb2, 0x09, 0x93, 0x9b, - 0xaa, 0x67, 0xaf, 0x2d, 0x69, 0xd0, 0x92, 0x8d, 0x35, 0xe2, 0x2c, 0x02, 0xa5, 0xa3, 0xe7, 0xc1, - 0x61, 0x26, 0xbc, 0x1b, 0x59, 0xe9, 0xe1, 0xf3, 0xe0, 0x30, 0x1b, 0xdf, 0x8d, 0x28, 0x8b, 0xd0, - 0xff, 0xaa, 0x00, 0x15, 0xe9, 0xab, 0xec, 0x02, 0x9c, 0x6b, 0x73, 0xa3, 0x65, 0x1a, 0xa3, 0xdd, - 0x96, 0xd9, 0xda, 0x69, 0x0d, 0xb1, 0xaa, 0x32, 0xd8, 0x68, 0xe1, 0x94, 0xb0, 0xc2, 0x29, 0x18, - 0x80, 0xbb, 0x7c, 0xb0, 0xbf, 0x42, 0xe5, 0x99, 0x06, 0x75, 0x29, 0x2b, 0xfe, 0xab, 0x2c, 0xb0, - 0x73, 0x50, 0x13, 0x82, 0x02, 0x51, 0xa4, 0x40, 0x43, 0x29, 0x01, 0x97, 0x32, 0x22, 0xdd, 0xfe, - 0xae, 0xf1, 0xa5, 0x56, 0x5e, 0x89, 0x08, 0x44, 0x25, 0x15, 0x11, 0xb0, 0x8a, 0xc6, 0x98, 0xfc, - 0xa0, 0xdf, 0x5e, 0x3d, 0xa7, 0xca, 0x2e, 0xc3, 0x85, 0x61, 0x67, 0xf0, 0x6c, 0x24, 0x74, 0xa5, - 0x26, 0x01, 0xbb, 0x08, 0x5a, 0x86, 0x20, 0xd8, 0x6b, 0xa8, 0x82, 0xb0, 0x09, 0xe3, 0x50, 0xab, - 0xe3, 0x73, 0x09, 0x67, 0x8a, 0x74, 0xd2, 0x40, 0xd3, 0x84, 0xe8, 0xa0, 0x77, 0xf0, 0xa4, 0x3f, - 0xd4, 0x36, 0xd0, 0x12, 0xc2, 0x08, 0x4b, 0xce, 0xa5, 0x6a, 0x56, 0x49, 0x48, 0xa3, 0xbc, 0x84, - 0xb8, 0x67, 0x2d, 0xde, 0xef, 0xf6, 0xf7, 0x86, 0xda, 0xf9, 0x54, 0xb3, 0xc1, 0xf9, 0x80, 0x0f, - 0x35, 0x96, 0x22, 0x86, 0x66, 0xcb, 0x3c, 0x18, 0x6a, 0x17, 0x52, 0x2b, 0xf7, 0xf9, 0xa0, 0x6d, - 0x0c, 0x87, 0xbd, 0xee, 0xd0, 0xd4, 0x2e, 0xee, 0xd4, 0xe9, 0x63, 0x0e, 0x99, 0x4c, 0xf4, 0x7d, - 0xd8, 0x58, 0x8f, 0x7d, 0xa6, 0x43, 0xc3, 0x9d, 0x8e, 0xfc, 0x20, 0x1e, 0x39, 0x47, 0x6e, 0x14, - 0x47, 0xc9, 0xff, 0x63, 0xee, 0xb4, 0x1f, 0xc4, 0x06, 0xa1, 0xb0, 0x27, 0x4e, 0x43, 0x59, 0x94, - 0xcb, 0x14, 0xd6, 0x3b, 0xd0, 0x58, 0xcb, 0x06, 0xec, 0x67, 0x50, 0x75, 0xa7, 0xeb, 0xca, 0x54, - 0x77, 0xfa, 0x23, 0x34, 0xed, 0x41, 0x3d, 0x9b, 0x1a, 0x7e, 0xba, 0xa2, 0xbf, 0x51, 0xa0, 0x96, - 0x49, 0x15, 0x3f, 0x6a, 0x8b, 0xd7, 0xa0, 0x1a, 0x3b, 0xf3, 0x45, 0x10, 0x5a, 0x32, 0xb1, 0xaa, - 0x7c, 0x85, 0x58, 0x7b, 0x5a, 0x61, 0xfd, 0x69, 0xeb, 0x6f, 0x4b, 0x8a, 0xdf, 0xff, 0xb6, 0x44, - 0x1f, 0x00, 0xac, 0xb2, 0x11, 0xfd, 0x1b, 0x41, 0x51, 0x2a, 0xba, 0x13, 0x01, 0xac, 0x2b, 0xcc, - 0xff, 0x80, 0xc2, 0xaf, 0xa1, 0x9a, 0xa6, 0xaa, 0x9f, 0x7c, 0x62, 0x2b, 0x43, 0x0a, 0x19, 0x43, - 0xf4, 0xbd, 0xe4, 0x18, 0x45, 0x72, 0xf9, 0x31, 0xc7, 0x78, 0x11, 0x4a, 0x22, 0x5b, 0xc9, 0x7f, - 0x09, 0x09, 0xd0, 0x75, 0xb9, 0x6b, 0xa1, 0x27, 0xe5, 0x51, 0xb2, 0x3c, 0xbf, 0x12, 0x1b, 0x11, - 0x2c, 0xdf, 0xbb, 0x91, 0xb3, 0x9f, 0x71, 0x0b, 0x1a, 0x6b, 0xe9, 0xed, 0xec, 0xc3, 0xd5, 0xbb, - 0xd0, 0x58, 0xcb, 0x63, 0x99, 0xaf, 0x8d, 0x94, 0xec, 0xd7, 0x46, 0x38, 0x4d, 0x1e, 0x3e, 0x77, - 0x42, 0xe7, 0x8c, 0x4f, 0x2e, 0x04, 0x41, 0xff, 0x14, 0xea, 0xd9, 0x8e, 0x87, 0xbd, 0x07, 0x25, - 0x37, 0x76, 0xe6, 0xc9, 0xbf, 0x9e, 0x97, 0x4e, 0x37, 0x45, 0xdd, 0xd8, 0x99, 0x73, 0xc1, 0xa4, - 0xff, 0x5e, 0x01, 0xed, 0x24, 0x2d, 0xf3, 0x49, 0x94, 0xf2, 0x9a, 0x4f, 0xa2, 0xf2, 0x6b, 0x46, - 0x9e, 0xf1, 0x59, 0x13, 0x1a, 0x2e, 0xfe, 0x5a, 0x3b, 0xe3, 0x2b, 0x1e, 0x22, 0xb0, 0xdb, 0xa0, - 0x86, 0x0e, 0x7d, 0xe3, 0x62, 0xcb, 0xca, 0x9c, 0x65, 0x4a, 0x69, 0xfa, 0x5f, 0x28, 0x50, 0x91, - 0xed, 0xd9, 0x99, 0xff, 0xbd, 0xbe, 0x03, 0x15, 0xf1, 0xb7, 0x52, 0xf2, 0x7f, 0xd2, 0xa9, 0x57, - 0x7f, 0x09, 0x9d, 0x5d, 0x17, 0x2d, 0xfa, 0xfa, 0x1b, 0x69, 0x9c, 0x43, 0x38, 0xe1, 0xb1, 0x2b, - 0xa6, 0xf9, 0x9b, 0xda, 0xa1, 0x48, 0xfe, 0x57, 0x06, 0x84, 0xc2, 0x82, 0x12, 0xe9, 0x7f, 0x02, - 0x15, 0xd9, 0xfe, 0x9d, 0x69, 0xca, 0x0f, 0x7d, 0x1f, 0xb3, 0x09, 0xb0, 0xea, 0x07, 0xcf, 0xd2, - 0x70, 0xe7, 0x06, 0xd4, 0xb3, 0xdf, 0x35, 0xd0, 0x34, 0x18, 0xf8, 0x8e, 0x96, 0x63, 0x15, 0x28, - 0xf4, 0xbe, 0xbd, 0xaf, 0x29, 0x77, 0x3e, 0x87, 0xe6, 0xeb, 0xe6, 0x2c, 0x6c, 0x1b, 0xdb, 0x9d, - 0x16, 0xcd, 0xb2, 0x75, 0x50, 0xfb, 0x83, 0x91, 0x80, 0x14, 0xec, 0x10, 0xb9, 0xd1, 0x33, 0xa8, - 0xb6, 0xed, 0x7c, 0xf6, 0x4f, 0xdf, 0x5d, 0x57, 0xfe, 0xf9, 0xbb, 0xeb, 0xca, 0x1f, 0xbf, 0xbb, - 0x9e, 0xfb, 0xfd, 0x7f, 0x5e, 0x57, 0xbe, 0xce, 0x7e, 0xc6, 0x39, 0xb7, 0xe2, 0xd0, 0x3d, 0x12, - 0x1f, 0x15, 0x24, 0x80, 0xef, 0x7c, 0xb0, 0x78, 0x39, 0xfb, 0x60, 0x31, 0xfe, 0x00, 0xb7, 0x34, - 0x2e, 0xd3, 0xd7, 0x9c, 0xf7, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x15, 0x3d, 0xb5, 0xb4, 0x10, - 0x2a, 0x00, 0x00, + // 4870 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x7a, 0xcd, 0x8f, 0x1b, 0xc9, + 0x75, 0x38, 0x9b, 0x9f, 0xcd, 0x47, 0x72, 0xa6, 0x55, 0xd2, 0x4a, 0x94, 0xac, 0xd5, 0x8e, 0x5a, + 0x1f, 0x1e, 0x6b, 0xbd, 0xda, 0xdd, 0x91, 0x2c, 0xcb, 0x86, 0x7f, 0xb6, 0x39, 0x9c, 0xd6, 0x90, + 0x2b, 0x0e, 0x39, 0x2e, 0x72, 0xa4, 0xdd, 0x35, 0x7e, 0x20, 0x9a, 0xec, 0x26, 0xa7, 0xa5, 0x66, + 0x37, 0xb7, 0xbb, 0xa9, 0x99, 0x59, 0x20, 0x80, 0x0f, 0x49, 0x80, 0x9c, 0xe2, 0x43, 0x80, 0xe4, + 0x68, 0x04, 0x81, 0xef, 0xf9, 0x13, 0x72, 0x09, 0x72, 0x0c, 0x10, 0xe4, 0x10, 0xe4, 0x92, 0x6c, + 0x8e, 0xce, 0x2d, 0xc7, 0xe4, 0x10, 0xbc, 0x57, 0xd5, 0xcd, 0xe6, 0x70, 0xb4, 0xbb, 0x58, 0xe4, + 0x42, 0xd4, 0xfb, 0xa8, 0x57, 0xaf, 0xaa, 0xde, 0x67, 0x35, 0x01, 0xe6, 0xae, 0xe9, 0x3d, 0x9c, + 0x07, 0x7e, 0xe4, 0xb3, 0x3c, 0x8e, 0x6f, 0x7c, 0x30, 0x75, 0xa2, 0xe3, 0xc5, 0xe8, 0xe1, 0xd8, + 0x9f, 0x7d, 0x38, 0xf5, 0xa7, 0xfe, 0x87, 0x44, 0x1c, 0x2d, 0x26, 0x04, 0x11, 0x40, 0x23, 0x31, + 0x49, 0xff, 0xad, 0x02, 0xf9, 0xc1, 0xd9, 0xdc, 0x66, 0x1b, 0x90, 0x75, 0xac, 0xba, 0xb2, 0xa5, + 0x6c, 0x17, 0x78, 0xd6, 0xb1, 0xd8, 0x0d, 0x50, 0xbd, 0x85, 0xeb, 0x9a, 0x23, 0xd7, 0xae, 0x67, + 0xb7, 0x94, 0x6d, 0x95, 0x27, 0x30, 0xbb, 0x02, 0x85, 0x13, 0xc7, 0x8a, 0x8e, 0xeb, 0x39, 0x62, + 0x17, 0x00, 0xbb, 0x09, 0xe5, 0x79, 0x60, 0x8f, 0x9d, 0xd0, 0xf1, 0xbd, 0x7a, 0x9e, 0x28, 0x4b, + 0x04, 0x63, 0x90, 0x0f, 0x9d, 0x2f, 0xed, 0x7a, 0x81, 0x08, 0x34, 0x46, 0x39, 0xe1, 0xd8, 0x74, + 0xed, 0x7a, 0x51, 0xc8, 0x21, 0x40, 0xff, 0xbb, 0x1c, 0x14, 0x9a, 0xbe, 0x17, 0x46, 0xec, 0x2a, + 0x14, 0x9d, 0x10, 0x57, 0x25, 0xbd, 0x54, 0x2e, 0x21, 0x76, 0x05, 0xf2, 0xce, 0x1b, 0xd3, 0x25, + 0xbd, 0x72, 0xad, 0x0c, 0x27, 0x08, 0xb1, 0x16, 0x62, 0x51, 0x29, 0x05, 0xb1, 0x96, 0xc4, 0x86, + 0x88, 0x45, 0x85, 0xca, 0x88, 0x0d, 0x25, 0x76, 0x84, 0x58, 0xd4, 0x46, 0x45, 0xec, 0x48, 0x62, + 0x17, 0x88, 0x45, 0x75, 0xf2, 0x88, 0x5d, 0x48, 0xec, 0x04, 0xb1, 0xa5, 0x2d, 0x65, 0x3b, 0x8b, + 0x58, 0x84, 0xd8, 0x0d, 0x28, 0x59, 0x66, 0x64, 0x23, 0x41, 0x45, 0xed, 0x5b, 0x19, 0x1e, 0x23, + 0x98, 0x0e, 0x15, 0x1c, 0x46, 0xce, 0x8c, 0xe8, 0x65, 0xa9, 0x66, 0x1a, 0xc9, 0x7e, 0x04, 0x55, + 0xcb, 0x1e, 0x3b, 0x33, 0xd3, 0x7d, 0xf2, 0x18, 0x99, 0x60, 0x4b, 0xd9, 0xae, 0xec, 0x6c, 0x3e, + 0xa4, 0x0b, 0x4d, 0x28, 0xad, 0x0c, 0x5f, 0x61, 0x63, 0x4f, 0xa1, 0x26, 0xe1, 0x8f, 0x77, 0x9e, + 0xe2, 0xbc, 0x0a, 0xcd, 0xd3, 0x56, 0xe6, 0x7d, 0xbc, 0xf3, 0xb4, 0x95, 0xe1, 0xab, 0x8c, 0xec, + 0x2e, 0x54, 0x71, 0xed, 0x30, 0x32, 0x67, 0x73, 0x9c, 0x58, 0x95, 0x5a, 0xad, 0x60, 0x71, 0x5b, + 0xaf, 0x42, 0xdf, 0x43, 0x86, 0x9a, 0x3c, 0xb1, 0x18, 0xc1, 0xb6, 0x00, 0x2c, 0x7b, 0x62, 0x2e, + 0xdc, 0x08, 0xc9, 0x1b, 0xf2, 0xe8, 0x52, 0xb8, 0xdd, 0x12, 0x14, 0xde, 0x98, 0xee, 0xc2, 0xd6, + 0x6f, 0x82, 0x7a, 0x68, 0x06, 0xe6, 0x8c, 0xdb, 0x13, 0xa6, 0x41, 0x6e, 0xee, 0x87, 0xd2, 0xb4, + 0x70, 0xa8, 0x77, 0xa0, 0xf8, 0xc2, 0x0c, 0x90, 0xc6, 0x20, 0xef, 0x99, 0x33, 0x9b, 0x88, 0x65, + 0x4e, 0x63, 0xbc, 0xf5, 0xf0, 0x2c, 0x8c, 0xec, 0x99, 0xb4, 0x3b, 0x09, 0x21, 0x7e, 0xea, 0xfa, + 0x23, 0x79, 0xc3, 0x2a, 0x97, 0x90, 0xde, 0x85, 0x62, 0xd3, 0x77, 0x51, 0xda, 0x35, 0x28, 0x05, + 0xb6, 0x3b, 0x5c, 0xae, 0x56, 0x0c, 0x6c, 0xf7, 0xd0, 0x0f, 0x91, 0x30, 0xf6, 0x05, 0x21, 0x2b, + 0x08, 0x63, 0x9f, 0x08, 0xf1, 0xfa, 0xb9, 0xe5, 0xfa, 0xfa, 0x00, 0xa0, 0xe9, 0x07, 0xc1, 0x77, + 0x96, 0x79, 0x05, 0x0a, 0x96, 0x3d, 0x5f, 0x7a, 0x07, 0x01, 0xfa, 0x03, 0x50, 0x8d, 0xd3, 0x79, + 0xd0, 0x71, 0xc2, 0x88, 0xdd, 0x82, 0xbc, 0xeb, 0x84, 0x51, 0x5d, 0xd9, 0xca, 0x6d, 0x57, 0x76, + 0x40, 0xdc, 0x1d, 0x52, 0x39, 0xe1, 0xf5, 0x2d, 0x50, 0x0f, 0xcc, 0xd3, 0x17, 0x78, 0x92, 0x28, + 0x8d, 0x8e, 0x54, 0x1e, 0x91, 0x3c, 0xdf, 0x07, 0x00, 0x03, 0x33, 0x98, 0xda, 0x11, 0xf9, 0xee, + 0x4d, 0xc8, 0x45, 0x67, 0x73, 0xe2, 0x48, 0xc4, 0x21, 0x81, 0x23, 0x5a, 0xff, 0x2f, 0x05, 0x2a, + 0xfd, 0xc5, 0xe8, 0x8b, 0x85, 0x1d, 0x9c, 0xe1, 0x8e, 0xb6, 0x97, 0xdc, 0x1b, 0x3b, 0x57, 0x05, + 0x77, 0x8a, 0xbe, 0x9c, 0x89, 0x5b, 0xf4, 0x7c, 0xcb, 0x1e, 0x3a, 0x56, 0xbc, 0x45, 0x04, 0xdb, + 0x16, 0x06, 0x0b, 0x7f, 0x2e, 0x0f, 0x2d, 0xeb, 0xcf, 0xd9, 0x16, 0x14, 0xc6, 0xc7, 0x8e, 0x6b, + 0x91, 0x97, 0xad, 0xee, 0x48, 0x10, 0xd8, 0x75, 0x50, 0x03, 0xff, 0x64, 0x98, 0x0a, 0x01, 0xa5, + 0xc0, 0x3f, 0xe9, 0x3b, 0x5f, 0xe2, 0x79, 0x8b, 0x08, 0x04, 0x50, 0xec, 0x37, 0x1b, 0x9d, 0x06, + 0xd7, 0x32, 0x38, 0x36, 0x3e, 0x6d, 0xf7, 0x07, 0x7d, 0x4d, 0x61, 0x1b, 0x00, 0xdd, 0xde, 0x60, + 0x28, 0xe1, 0x2c, 0x2b, 0x42, 0xb6, 0xdd, 0xd5, 0x72, 0xc8, 0x83, 0xf8, 0x76, 0x57, 0xcb, 0xb3, + 0x12, 0xe4, 0x1a, 0xdd, 0xcf, 0xb4, 0x02, 0x0d, 0x3a, 0x1d, 0xad, 0xa8, 0xff, 0x93, 0x02, 0xe5, + 0xde, 0xe8, 0x95, 0x3d, 0x8e, 0x70, 0xcf, 0x68, 0x53, 0x76, 0xf0, 0xc6, 0x0e, 0x68, 0xdb, 0x39, + 0x2e, 0x21, 0xdc, 0x88, 0x35, 0x12, 0x71, 0x84, 0x67, 0xad, 0x11, 0xf1, 0x8d, 0x8f, 0xed, 0x99, + 0x49, 0x9b, 0x43, 0x3e, 0x82, 0xd0, 0x86, 0xfd, 0xd1, 0x2b, 0xda, 0x5e, 0x8e, 0xe3, 0x90, 0xbd, + 0x07, 0x15, 0x21, 0x63, 0x48, 0x06, 0x54, 0xa0, 0xb3, 0x00, 0x81, 0xea, 0xa2, 0x19, 0x5f, 0x83, + 0x92, 0x35, 0x12, 0xc4, 0x22, 0x11, 0x8b, 0xd6, 0x88, 0x08, 0x38, 0x93, 0xa4, 0x0a, 0x62, 0x49, + 0xce, 0x24, 0x14, 0x31, 0x5c, 0x07, 0xd5, 0x1f, 0xbd, 0x12, 0x54, 0x95, 0xa8, 0x25, 0x7f, 0xf4, + 0x0a, 0x49, 0xfa, 0xbf, 0x2b, 0xa0, 0x3e, 0x5b, 0x78, 0xe3, 0x08, 0x43, 0xea, 0x1d, 0xc8, 0x4f, + 0x16, 0xde, 0x58, 0xde, 0xbb, 0x0c, 0x1d, 0xc9, 0x9e, 0x39, 0x11, 0xd1, 0xd6, 0xcc, 0x60, 0x8a, + 0x36, 0xba, 0x66, 0x6b, 0x88, 0xd7, 0xff, 0x5c, 0x4a, 0x7c, 0xe6, 0x9a, 0x53, 0xa6, 0x42, 0xbe, + 0xdb, 0xeb, 0x1a, 0x5a, 0x86, 0x55, 0x41, 0x6d, 0x77, 0x07, 0x06, 0xef, 0x36, 0x3a, 0x9a, 0x42, + 0x57, 0x33, 0x68, 0xec, 0x76, 0x0c, 0x2d, 0x8b, 0x94, 0x17, 0xbd, 0x4e, 0x63, 0xd0, 0xee, 0x18, + 0x5a, 0x5e, 0x50, 0x78, 0xbb, 0x39, 0xd0, 0x54, 0xa6, 0x41, 0xf5, 0x90, 0xf7, 0xf6, 0x8e, 0x9a, + 0xc6, 0xb0, 0x7b, 0xd4, 0xe9, 0x68, 0x1a, 0xbb, 0x0c, 0x9b, 0x09, 0xa6, 0x27, 0x90, 0x5b, 0x38, + 0xe5, 0x45, 0x83, 0x37, 0xf8, 0xbe, 0xf6, 0x4b, 0xa6, 0x42, 0xae, 0xb1, 0xbf, 0xaf, 0xfd, 0x46, + 0xc1, 0xd1, 0xcb, 0x76, 0x57, 0xfb, 0x4d, 0x56, 0xff, 0xe3, 0x1c, 0xe4, 0x51, 0xc1, 0xaf, 0x37, + 0x6b, 0xf6, 0x3d, 0x50, 0xc6, 0x74, 0x73, 0x95, 0x9d, 0x8a, 0xa0, 0x51, 0xd2, 0x68, 0x65, 0xb8, + 0x82, 0xbb, 0x56, 0x84, 0x7d, 0x56, 0x76, 0x36, 0x04, 0x31, 0x0e, 0x47, 0x48, 0x9f, 0xb3, 0x9b, + 0xa0, 0xbc, 0x91, 0xc6, 0x5a, 0x15, 0x74, 0x11, 0x90, 0x90, 0xfa, 0x86, 0x6d, 0x41, 0x6e, 0xec, + 0x8b, 0xe4, 0x90, 0xd0, 0x45, 0x38, 0x68, 0x65, 0x38, 0x92, 0x50, 0xfe, 0x84, 0xae, 0x35, 0x91, + 0x1f, 0xdf, 0x0a, 0x4a, 0x98, 0xb0, 0x7b, 0x90, 0x0b, 0x17, 0x23, 0xba, 0xdb, 0xca, 0xce, 0xa5, + 0x35, 0x1f, 0x43, 0x31, 0xe1, 0x62, 0xc4, 0xee, 0x43, 0x7e, 0xec, 0x07, 0x01, 0xdd, 0x72, 0x12, + 0xc4, 0x97, 0xc1, 0x07, 0x93, 0x0d, 0xd2, 0xd9, 0x16, 0x28, 0x11, 0xa5, 0x91, 0x84, 0x69, 0xe9, + 0xfd, 0xb8, 0x60, 0xc4, 0xee, 0xca, 0x90, 0x02, 0x69, 0x9d, 0xe2, 0x80, 0x83, 0x72, 0x90, 0xca, + 0x74, 0xc8, 0xcd, 0xcc, 0x53, 0x99, 0x33, 0x24, 0x53, 0x1c, 0x69, 0x50, 0xa7, 0x99, 0x79, 0xba, + 0x5b, 0x84, 0xbc, 0x7d, 0x3a, 0x0f, 0xf4, 0xeb, 0x50, 0x4e, 0x32, 0x0f, 0xab, 0x82, 0x62, 0x4a, + 0xd7, 0x51, 0x4c, 0x7d, 0x1b, 0x13, 0x41, 0x9c, 0x5b, 0x56, 0x69, 0x08, 0xc5, 0x0e, 0xa5, 0x8c, + 0xd0, 0x0b, 0x31, 0x38, 0xef, 0xbd, 0x25, 0xd4, 0xdf, 0x85, 0x9c, 0xe9, 0x4e, 0x89, 0x7d, 0x63, + 0x87, 0xc5, 0xdb, 0x9f, 0xcd, 0x03, 0x3b, 0x0c, 0xc5, 0x4d, 0x9b, 0xee, 0x34, 0xb6, 0x83, 0xdc, + 0xc5, 0x76, 0xf0, 0x7d, 0x28, 0xc9, 0x0c, 0x24, 0x2f, 0xb4, 0x26, 0x38, 0xf6, 0x04, 0x92, 0xc7, + 0x54, 0x56, 0x87, 0xd2, 0x3c, 0x70, 0x66, 0x66, 0x70, 0x26, 0xd2, 0x3e, 0x8f, 0x41, 0x8c, 0xb1, + 0xf3, 0xd7, 0x8e, 0x75, 0x1a, 0xd7, 0x21, 0x04, 0x20, 0xff, 0xd8, 0x9f, 0xcd, 0x6c, 0x2f, 0x92, + 0x3e, 0x1a, 0x83, 0xfa, 0x17, 0x50, 0x92, 0xd2, 0xd9, 0x6d, 0xa8, 0x62, 0x49, 0x32, 0x34, 0x47, + 0x8e, 0xeb, 0x44, 0x67, 0xb2, 0x50, 0xa9, 0x20, 0xae, 0x21, 0x50, 0xe8, 0x81, 0x78, 0xa0, 0xd2, + 0x56, 0x57, 0x3c, 0x10, 0xf1, 0xec, 0x0e, 0xd4, 0xfc, 0xc0, 0x99, 0x3a, 0xde, 0x30, 0x8c, 0x02, + 0xc7, 0x9b, 0xca, 0xb8, 0x5a, 0x15, 0xc8, 0x3e, 0xe1, 0xf4, 0xbf, 0x54, 0x40, 0x6d, 0x7b, 0x96, + 0x7d, 0x8a, 0x47, 0xf9, 0x20, 0x1d, 0xc1, 0xeb, 0x42, 0x60, 0x4c, 0x14, 0x83, 0xe5, 0xf1, 0xc4, + 0xc7, 0x9e, 0x4d, 0x1d, 0xfb, 0xf7, 0xa0, 0x8c, 0xa9, 0x0b, 0xc7, 0x61, 0x3d, 0xb7, 0x95, 0xdb, + 0x2e, 0x73, 0x75, 0xec, 0xbb, 0x18, 0x61, 0x42, 0xfd, 0x21, 0x94, 0x13, 0x11, 0xac, 0x02, 0xa5, + 0x76, 0xf7, 0x45, 0xa3, 0xdd, 0xd9, 0xd3, 0x32, 0x08, 0x7c, 0xde, 0xeb, 0x1a, 0x07, 0x8d, 0x43, + 0x4d, 0xc1, 0x40, 0xbb, 0xdb, 0x6f, 0x6b, 0x59, 0xfd, 0x1e, 0xd4, 0x0e, 0xc5, 0x39, 0x3e, 0xb7, + 0xcf, 0x50, 0xbb, 0x2b, 0x50, 0x10, 0x92, 0x15, 0x92, 0x2c, 0x00, 0x7d, 0x07, 0xd4, 0xc3, 0xc0, + 0x9f, 0xdb, 0x41, 0x74, 0x86, 0xd1, 0xf4, 0xb5, 0x7d, 0x26, 0x2d, 0x01, 0x87, 0xcb, 0x2c, 0x97, + 0x4d, 0x67, 0xb9, 0x5f, 0xa0, 0x68, 0x9a, 0xe3, 0xd8, 0x21, 0x8a, 0x7e, 0x08, 0x30, 0x4f, 0x10, + 0x32, 0x7d, 0xc6, 0xfe, 0x2d, 0x85, 0xf3, 0x14, 0x87, 0xfe, 0xdf, 0x59, 0xa8, 0x1d, 0x9a, 0x41, + 0xe4, 0xa0, 0x67, 0xb6, 0xbd, 0x89, 0xcf, 0xbe, 0x0f, 0xf9, 0xe8, 0x6c, 0x6e, 0xcb, 0xb3, 0xbb, + 0x9c, 0xc4, 0x06, 0xc1, 0x42, 0xc7, 0x46, 0x0c, 0x78, 0x6b, 0xc6, 0x5b, 0x6e, 0x8d, 0x82, 0xd3, + 0x47, 0x70, 0x79, 0x1e, 0x4f, 0x43, 0x84, 0x1d, 0x52, 0xdd, 0x2b, 0xee, 0xee, 0x22, 0x12, 0xbb, + 0x0b, 0xa5, 0xa6, 0xef, 0x2e, 0x66, 0x5e, 0x58, 0xcf, 0xaf, 0x05, 0xe3, 0x98, 0xc4, 0x1e, 0x80, + 0x96, 0x4c, 0x8e, 0xd9, 0x0b, 0x74, 0x90, 0x6b, 0x78, 0xa6, 0x43, 0x35, 0xc1, 0x75, 0x17, 0x33, + 0x51, 0xb7, 0xf2, 0x15, 0x1c, 0x7b, 0x04, 0x90, 0xc0, 0x61, 0xbd, 0x44, 0x0b, 0x9f, 0xdf, 0x76, + 0x3b, 0xb2, 0x67, 0x3c, 0xc5, 0x86, 0xa5, 0xbc, 0xe9, 0x4e, 0xfd, 0xc0, 0x89, 0x8e, 0x67, 0x14, + 0x9c, 0x72, 0x7c, 0x89, 0x60, 0xf7, 0x61, 0xc3, 0x09, 0xfb, 0x8b, 0x51, 0x32, 0x9f, 0x42, 0x93, + 0xca, 0xcf, 0x61, 0xf5, 0x3f, 0x28, 0xe9, 0xd3, 0xc7, 0x12, 0xee, 0x2e, 0xd4, 0x96, 0xca, 0x2d, + 0x83, 0xc1, 0x2a, 0x92, 0x6d, 0xc3, 0xa6, 0x1f, 0x58, 0x8e, 0x67, 0x62, 0x39, 0x25, 0x16, 0xc0, + 0x5b, 0xa8, 0xf1, 0xf3, 0x68, 0xb6, 0x05, 0x15, 0xcb, 0x0e, 0xc7, 0x81, 0x33, 0x8f, 0x96, 0x87, + 0x9f, 0x46, 0xa5, 0x9d, 0x38, 0xbf, 0xe2, 0xc4, 0xec, 0x3e, 0xa8, 0x2e, 0x86, 0x99, 0x63, 0xd3, + 0xa3, 0x03, 0x5e, 0xbd, 0x8f, 0x84, 0x86, 0x7c, 0x8e, 0x47, 0x11, 0x32, 0xac, 0x17, 0xd7, 0xf9, + 0x62, 0x9a, 0xfe, 0x2e, 0x94, 0x5e, 0x38, 0xf6, 0x89, 0x0c, 0x75, 0x6f, 0x1c, 0xfb, 0x24, 0x0e, + 0x75, 0x38, 0xd6, 0xff, 0x26, 0x0f, 0xea, 0x00, 0xbb, 0xa7, 0xb7, 0xc5, 0xc2, 0x2d, 0xcc, 0x05, + 0x6e, 0x9c, 0xa8, 0x97, 0x59, 0x67, 0x0f, 0x53, 0x39, 0x52, 0xd8, 0x03, 0xc8, 0x5b, 0xf6, 0x44, + 0x78, 0x6c, 0x25, 0xae, 0xdc, 0x62, 0x99, 0x18, 0xef, 0x84, 0xf9, 0x22, 0x0f, 0x7b, 0x17, 0x20, + 0x42, 0xca, 0x90, 0xac, 0x5d, 0x6c, 0xbd, 0x4c, 0x18, 0x59, 0x31, 0x96, 0xc7, 0x81, 0x6d, 0x46, + 0x76, 0xf8, 0x85, 0x2b, 0x6b, 0x97, 0x25, 0x82, 0xb5, 0x60, 0x03, 0x55, 0xda, 0xc1, 0x20, 0xe1, + 0x60, 0x2c, 0x90, 0x1b, 0xbf, 0x7d, 0x6e, 0xc9, 0xae, 0x64, 0xa2, 0x78, 0x61, 0x78, 0x51, 0x70, + 0xc6, 0x6b, 0x5e, 0x1a, 0x77, 0xe3, 0x3f, 0x15, 0x0a, 0x95, 0xb4, 0xe6, 0x3d, 0xc8, 0xce, 0x5f, + 0xcb, 0x6c, 0x1e, 0x5b, 0x60, 0x3a, 0x70, 0xb4, 0x32, 0x3c, 0x3b, 0x7f, 0x8d, 0x39, 0x0a, 0x43, + 0x71, 0x36, 0x9d, 0xa3, 0xe2, 0xe0, 0x86, 0x39, 0x0a, 0x43, 0xf3, 0x8f, 0x56, 0xe2, 0x40, 0x6e, + 0x55, 0x64, 0x2a, 0x60, 0x60, 0x7b, 0xb2, 0x64, 0xc4, 0x82, 0x89, 0xee, 0x65, 0x25, 0x4f, 0xc8, + 0x4b, 0xc3, 0x1c, 0x89, 0x44, 0xf6, 0x08, 0xca, 0x89, 0x39, 0xca, 0x12, 0x60, 0xcd, 0x5f, 0xbc, + 0x89, 0xdf, 0xca, 0xf0, 0x25, 0xdf, 0x6e, 0x01, 0x72, 0x96, 0x3d, 0xb9, 0xf1, 0x4b, 0x60, 0xeb, + 0x67, 0xf2, 0x4d, 0xe1, 0xae, 0x20, 0xc3, 0xdd, 0x4f, 0xb3, 0x4f, 0x15, 0x3d, 0x80, 0x7c, 0xd3, + 0x0f, 0x23, 0xb4, 0x90, 0xb1, 0x19, 0x88, 0x86, 0x5c, 0xe1, 0x34, 0x46, 0x5b, 0x0e, 0xfc, 0x13, + 0x2a, 0xa1, 0xb3, 0x84, 0x8e, 0x41, 0x5c, 0xc1, 0xb3, 0xde, 0x88, 0xce, 0x97, 0xe3, 0x90, 0x5a, + 0xeb, 0xc8, 0x0c, 0x84, 0xd5, 0x2b, 0x5c, 0x00, 0x88, 0x8d, 0xfc, 0x48, 0xf6, 0xbd, 0x0a, 0x17, + 0x80, 0xfe, 0xb7, 0x0a, 0x45, 0xa6, 0x3d, 0x33, 0x32, 0x31, 0x35, 0x60, 0x9d, 0x3e, 0xf6, 0x17, + 0x5e, 0x24, 0x1b, 0x1e, 0x2c, 0xdc, 0x9b, 0x08, 0xa3, 0x51, 0x51, 0xb2, 0x13, 0x54, 0xa1, 0x7b, + 0x19, 0x31, 0x82, 0x8c, 0x81, 0x7f, 0xe1, 0xba, 0xc2, 0x40, 0x55, 0x2e, 0x00, 0xd4, 0xcd, 0x79, + 0xb4, 0x43, 0x21, 0xaf, 0xc0, 0x71, 0x48, 0x98, 0x27, 0x8f, 0xc9, 0xe9, 0x72, 0x1c, 0x87, 0x88, + 0x99, 0x3c, 0xda, 0x21, 0x2b, 0xcb, 0x72, 0x1c, 0x12, 0xe6, 0xc9, 0x63, 0x8a, 0x57, 0x0a, 0xc7, + 0x21, 0x16, 0x16, 0x61, 0x5d, 0xa5, 0x48, 0xa8, 0x84, 0xfa, 0x4b, 0x00, 0xee, 0x9f, 0x84, 0x76, + 0x44, 0x5a, 0xdf, 0x4f, 0xca, 0x76, 0x25, 0x6d, 0x36, 0xb1, 0xa1, 0x26, 0x65, 0xfc, 0xed, 0x15, + 0x1f, 0xab, 0x2d, 0x7d, 0xcc, 0x8c, 0x4c, 0xe1, 0x64, 0xfa, 0xbf, 0x2a, 0x50, 0xe9, 0x05, 0x96, + 0x1d, 0xec, 0x9e, 0xf5, 0xe7, 0xf6, 0x38, 0xc9, 0xde, 0xca, 0x5b, 0xb2, 0xf7, 0x4d, 0xca, 0xa5, + 0xae, 0x99, 0x84, 0x29, 0xf4, 0xa4, 0x18, 0xc1, 0x3e, 0x86, 0xfc, 0xc4, 0x35, 0x45, 0x4a, 0xdf, + 0xd8, 0x79, 0x57, 0x96, 0xe8, 0x4b, 0xf1, 0xf1, 0x18, 0xab, 0x6f, 0x4e, 0xac, 0xfa, 0xaf, 0x93, + 0xf5, 0xa9, 0x24, 0xc7, 0x86, 0xa6, 0xdf, 0xd4, 0x32, 0x58, 0x9b, 0xef, 0x19, 0xfd, 0xa6, 0xa6, + 0xb0, 0x4d, 0xa8, 0x60, 0x29, 0xdd, 0x1f, 0x3e, 0x6b, 0xf3, 0xfe, 0x40, 0xcb, 0x52, 0x87, 0x44, + 0x88, 0x4e, 0xa3, 0x3f, 0x10, 0x45, 0xf9, 0x51, 0xb7, 0xfd, 0xab, 0x23, 0x43, 0x53, 0x57, 0x0a, + 0x79, 0x0d, 0xab, 0x7d, 0x78, 0xe9, 0x78, 0x96, 0x7f, 0x42, 0x9b, 0xfb, 0x20, 0x95, 0x40, 0x86, + 0xa3, 0xb3, 0x0b, 0x1a, 0xd2, 0xca, 0xd2, 0xc6, 0xcf, 0xd8, 0x0f, 0x41, 0xf5, 0x51, 0x35, 0x64, + 0x15, 0x47, 0x78, 0x69, 0x6d, 0x47, 0xbc, 0xe4, 0x0b, 0x00, 0x4d, 0xd8, 0xb5, 0x4d, 0x4b, 0xb6, + 0xc1, 0x34, 0xc6, 0x6b, 0xc5, 0xe3, 0x10, 0xaf, 0x43, 0x38, 0xd4, 0x7f, 0x9f, 0x85, 0xf2, 0xd1, + 0xdc, 0x32, 0x23, 0xbb, 0x19, 0x9d, 0xa6, 0x9b, 0x26, 0x65, 0xa5, 0x69, 0xba, 0x0e, 0x6a, 0x34, + 0x12, 0x25, 0x8b, 0x3c, 0xe5, 0x52, 0x34, 0x72, 0xe3, 0x46, 0x6b, 0x1e, 0x38, 0x43, 0x74, 0x31, + 0x91, 0x00, 0x8a, 0xf3, 0xc0, 0x79, 0x6e, 0x63, 0xe1, 0x55, 0x91, 0x84, 0x21, 0x46, 0x94, 0xe4, + 0x49, 0x0a, 0x89, 0x6d, 0xeb, 0x14, 0x65, 0x1e, 0x3b, 0x96, 0x4d, 0x33, 0x45, 0x0c, 0x2c, 0x21, + 0x8c, 0x53, 0xb7, 0xa0, 0x1a, 0x93, 0x86, 0xcb, 0xc2, 0x10, 0x24, 0x19, 0x27, 0x7f, 0x00, 0x95, + 0x05, 0xa9, 0x3d, 0x24, 0x8b, 0x2a, 0x5d, 0x10, 0xb5, 0x41, 0x30, 0x34, 0x31, 0x76, 0xbf, 0x07, + 0x15, 0x3f, 0x3a, 0xb6, 0x83, 0xa1, 0x19, 0x45, 0x41, 0x6c, 0xc7, 0x40, 0xa8, 0x06, 0x62, 0x88, + 0x81, 0xce, 0x56, 0x30, 0x94, 0x25, 0x03, 0xa2, 0x88, 0x01, 0x4b, 0xe9, 0x4a, 0xc3, 0x33, 0xdd, + 0xb3, 0x2f, 0x6d, 0xaa, 0x64, 0xde, 0x05, 0x70, 0xbc, 0xf9, 0x22, 0x1a, 0x62, 0x10, 0x90, 0xf5, + 0x77, 0x99, 0x30, 0xe8, 0x18, 0x24, 0x6f, 0x11, 0x25, 0x74, 0x51, 0x91, 0x83, 0x40, 0x11, 0x43, + 0x32, 0x9f, 0x02, 0x4a, 0x2e, 0x35, 0x1f, 0xbb, 0xf2, 0xd4, 0x7c, 0xa2, 0xe7, 0xd3, 0xf3, 0x89, + 0xe1, 0x0e, 0xd4, 0x22, 0x67, 0x86, 0xdb, 0xf7, 0xc2, 0xc5, 0xcc, 0xb6, 0xe8, 0x08, 0x73, 0xe2, + 0x39, 0xa9, 0x29, 0x71, 0x28, 0x65, 0x66, 0xcf, 0xfc, 0xe0, 0x4c, 0x48, 0x29, 0x0a, 0x29, 0x02, + 0x45, 0xcd, 0xff, 0xdf, 0x57, 0x21, 0xdf, 0xf5, 0x2d, 0x9b, 0x7d, 0x04, 0x65, 0x7a, 0x6b, 0x58, + 0xaf, 0xce, 0x90, 0x4c, 0x3f, 0x94, 0xde, 0x54, 0x4f, 0x8e, 0xde, 0xfe, 0x3a, 0x71, 0x0b, 0xbd, + 0x3c, 0x8c, 0x56, 0x1b, 0x06, 0x8c, 0xaa, 0x9c, 0xf0, 0x64, 0xf5, 0x81, 0x8f, 0x6d, 0xf2, 0x90, + 0x7a, 0xa6, 0xfc, 0x05, 0x56, 0x2f, 0xe8, 0xf4, 0x5a, 0x73, 0x03, 0x54, 0x7a, 0xc3, 0x08, 0x6c, + 0x51, 0x28, 0x14, 0x78, 0x02, 0xa3, 0xd6, 0xaf, 0x7c, 0xc7, 0x13, 0x5a, 0x17, 0xd7, 0xb4, 0xfe, + 0xc4, 0x77, 0x3c, 0x72, 0x6d, 0x15, 0xb9, 0x48, 0xeb, 0x3b, 0x50, 0xf2, 0x3d, 0xb1, 0x6e, 0x69, + 0x6d, 0xdd, 0xa2, 0xef, 0xd1, 0x92, 0xef, 0x43, 0x65, 0xe2, 0xb8, 0x91, 0x1d, 0x08, 0x46, 0x75, + 0x8d, 0x11, 0x04, 0x99, 0x98, 0xef, 0x81, 0x3a, 0x0d, 0xfc, 0xc5, 0x1c, 0xbd, 0xb2, 0xbc, 0x5e, + 0x58, 0x12, 0x6d, 0xf7, 0x0c, 0x77, 0x4d, 0x43, 0xc7, 0x9b, 0x0e, 0x43, 0x1b, 0x3b, 0xc5, 0xb5, + 0x5d, 0xc7, 0xf4, 0xbe, 0x4d, 0x52, 0xcd, 0xe9, 0x54, 0xac, 0x5f, 0x59, 0x97, 0x6a, 0x4e, 0xa7, + 0xb4, 0x78, 0x3a, 0x24, 0x54, 0xbf, 0x31, 0x24, 0x7c, 0xb4, 0x74, 0x9a, 0xe8, 0x34, 0xac, 0xd7, + 0x68, 0x82, 0x7c, 0xb8, 0x48, 0x82, 0x40, 0xe2, 0x37, 0xd1, 0x69, 0xc8, 0xde, 0x07, 0xf5, 0x04, + 0x3b, 0xa3, 0xb9, 0x3d, 0xa6, 0x17, 0xc7, 0xa4, 0x01, 0x5e, 0x46, 0x31, 0x5e, 0x3a, 0x71, 0x3c, + 0x0a, 0x67, 0x5b, 0x50, 0x70, 0x9d, 0x99, 0x13, 0xd5, 0x37, 0xd7, 0x9f, 0xa1, 0x88, 0xc0, 0x74, + 0x28, 0xfa, 0x93, 0x09, 0x6e, 0x5f, 0x5b, 0x63, 0x91, 0x14, 0xf6, 0x3e, 0x88, 0x42, 0x69, 0x68, + 0xd9, 0x93, 0xfa, 0xa5, 0x0b, 0xf3, 0x89, 0x1a, 0xc5, 0x95, 0xdc, 0x36, 0x94, 0xfc, 0xd1, 0xab, + 0x61, 0x60, 0x4f, 0xea, 0xec, 0xe2, 0x67, 0x98, 0xa2, 0x3f, 0x7a, 0xc5, 0xed, 0x09, 0xfb, 0x18, + 0x2a, 0x01, 0x65, 0xac, 0xa1, 0x65, 0x46, 0x66, 0xfd, 0x72, 0x7a, 0x33, 0xcb, 0x54, 0xc6, 0x21, + 0x58, 0xa6, 0xb5, 0x3b, 0x50, 0xb3, 0x4f, 0xa3, 0xc0, 0x1c, 0xfa, 0x73, 0x51, 0xbe, 0x5f, 0x11, + 0x9d, 0x21, 0x21, 0x7b, 0x02, 0xc7, 0x7e, 0x0e, 0x9b, 0x96, 0xed, 0xda, 0x91, 0x4d, 0xda, 0x85, + 0xcd, 0xe8, 0xb4, 0xfe, 0x0e, 0x9d, 0xeb, 0x95, 0xb8, 0x0f, 0x4e, 0x88, 0x78, 0xb8, 0xe7, 0x99, + 0xb1, 0x83, 0x1d, 0x39, 0x9e, 0x85, 0x66, 0x11, 0x99, 0xd3, 0xb0, 0x7e, 0x95, 0x4c, 0xbc, 0x22, + 0x71, 0x03, 0x73, 0x1a, 0xb2, 0xc7, 0x50, 0x35, 0x45, 0xe4, 0x19, 0x3a, 0xde, 0xc4, 0xaf, 0x5f, + 0x4b, 0x3f, 0x6b, 0xa4, 0x62, 0x12, 0xaf, 0x98, 0x4b, 0x40, 0xff, 0xe7, 0x1c, 0xa8, 0xb1, 0xdb, + 0x62, 0xef, 0x78, 0xd4, 0x7d, 0xde, 0xed, 0xbd, 0xec, 0x6a, 0x19, 0xcc, 0x57, 0x2f, 0x1a, 0x9d, + 0x23, 0x63, 0xd8, 0x6f, 0x36, 0xba, 0xe2, 0x85, 0x8f, 0x5e, 0x97, 0x04, 0x9c, 0x65, 0x97, 0xa0, + 0xf6, 0xec, 0xa8, 0xdb, 0x1c, 0xb4, 0x7b, 0x5d, 0x81, 0xca, 0x21, 0xca, 0xf8, 0x54, 0xa4, 0x31, + 0x81, 0xca, 0x23, 0xea, 0xa0, 0x31, 0x30, 0x78, 0x3b, 0x46, 0x15, 0x70, 0x95, 0x43, 0xde, 0xfb, + 0xc4, 0x68, 0x0e, 0x34, 0x60, 0xef, 0xc0, 0xa5, 0x64, 0x4a, 0x2c, 0x4e, 0xab, 0x60, 0x42, 0x8c, + 0xa7, 0x69, 0x57, 0x50, 0x08, 0x37, 0x9a, 0x47, 0xbc, 0xdf, 0x7e, 0x61, 0x0c, 0x9b, 0x03, 0x43, + 0x7b, 0x07, 0x13, 0x6d, 0xbf, 0xdd, 0x7d, 0xae, 0x5d, 0x65, 0x35, 0x28, 0xe3, 0x48, 0x48, 0xbf, + 0x46, 0xa9, 0x78, 0x7f, 0x5f, 0xbb, 0x85, 0x22, 0xf6, 0xda, 0xfd, 0x41, 0xbb, 0xdb, 0x1c, 0x68, + 0xef, 0x61, 0xb6, 0x7d, 0xd6, 0xee, 0x0c, 0x0c, 0xae, 0x6d, 0xe1, 0xdc, 0x4f, 0x7a, 0xed, 0xae, + 0x76, 0x9b, 0x1e, 0xc6, 0x1a, 0x07, 0x87, 0x1d, 0x43, 0xd3, 0x49, 0x62, 0x8f, 0x0f, 0xb4, 0x3b, + 0xac, 0x0c, 0x85, 0xa3, 0x2e, 0xea, 0x71, 0x17, 0x85, 0xd3, 0x70, 0xd8, 0xe8, 0x74, 0xb4, 0x7b, + 0xa9, 0x9c, 0x7d, 0x1f, 0xc7, 0x2f, 0xdb, 0xdd, 0xbd, 0xde, 0x4b, 0xed, 0xfb, 0xc8, 0xb6, 0xcb, + 0x7b, 0x8d, 0xbd, 0x26, 0xa6, 0xf6, 0x6d, 0x14, 0xd0, 0x3f, 0xec, 0xb4, 0x07, 0xda, 0x0f, 0x90, + 0x6b, 0xbf, 0x31, 0x68, 0x19, 0x5c, 0x7b, 0x80, 0xe3, 0x46, 0xbf, 0x6f, 0xf0, 0x81, 0xb6, 0x83, + 0xe3, 0x76, 0x97, 0xc6, 0x8f, 0x48, 0xea, 0xe1, 0x5e, 0x63, 0x60, 0x68, 0x8f, 0x71, 0xbc, 0x67, + 0x74, 0x8c, 0x81, 0xa1, 0xfd, 0x08, 0xa5, 0x52, 0x55, 0xd0, 0xc7, 0xa3, 0x7a, 0x82, 0xa7, 0x90, + 0x80, 0xa4, 0xcf, 0x8f, 0x71, 0xa1, 0x83, 0x76, 0xf7, 0xa8, 0xaf, 0x3d, 0x45, 0x66, 0x1a, 0x12, + 0xe5, 0x27, 0xfa, 0x2b, 0x50, 0xe3, 0xb8, 0x86, 0x5c, 0xed, 0x6e, 0xd7, 0xe0, 0xa2, 0x3e, 0xe9, + 0x18, 0xcf, 0x06, 0x9a, 0x82, 0x48, 0xde, 0xde, 0x6f, 0x61, 0x65, 0x52, 0x86, 0x42, 0xef, 0x08, + 0x8f, 0x26, 0x47, 0x87, 0x60, 0x1c, 0xb4, 0xb5, 0x3c, 0x8e, 0x1a, 0xdd, 0x41, 0x5b, 0x2b, 0xd0, + 0x21, 0xb5, 0xbb, 0xfb, 0x1d, 0x43, 0x2b, 0x22, 0xf6, 0xa0, 0xc1, 0x9f, 0x6b, 0x25, 0x9c, 0xd4, + 0x38, 0x3c, 0xec, 0x7c, 0xa6, 0xa9, 0xfa, 0x36, 0x94, 0x1a, 0xd3, 0xe9, 0x01, 0x26, 0x08, 0x15, + 0xf2, 0xcf, 0x8e, 0x3a, 0x1d, 0xf1, 0x38, 0xbc, 0xdb, 0x1b, 0x0c, 0x7a, 0x07, 0xe2, 0x19, 0x62, + 0xd0, 0x3b, 0xd4, 0xb2, 0xfa, 0xef, 0x15, 0xd8, 0x58, 0x35, 0x75, 0x76, 0x15, 0x64, 0xf5, 0x70, + 0xae, 0x96, 0xa8, 0x43, 0x5c, 0x3b, 0x9c, 0x2f, 0x25, 0x74, 0xa8, 0x2e, 0x42, 0x5b, 0x88, 0x79, + 0x9e, 0xd4, 0x13, 0x2b, 0x38, 0xec, 0x39, 0xc7, 0xa6, 0x37, 0x08, 0x16, 0xde, 0xd8, 0x8c, 0x44, + 0x62, 0x54, 0x79, 0x1a, 0x85, 0x25, 0xa1, 0x13, 0xb6, 0x44, 0xa9, 0x20, 0x9f, 0x9a, 0x96, 0x08, + 0xfd, 0xb7, 0x59, 0x28, 0xfc, 0x6a, 0x61, 0x07, 0x67, 0xec, 0x09, 0x94, 0xc3, 0x68, 0x16, 0xa5, + 0x53, 0xde, 0x75, 0xe1, 0x53, 0x44, 0x7f, 0xd8, 0x8f, 0xcc, 0xc8, 0xc6, 0x5e, 0x55, 0x24, 0x3e, + 0xe4, 0x25, 0x5f, 0xa2, 0xda, 0xde, 0x9e, 0x8b, 0x32, 0xb6, 0xc0, 0x05, 0x80, 0xc1, 0x0f, 0xf3, + 0x5f, 0xdc, 0x1e, 0xc2, 0x32, 0x0d, 0x71, 0x41, 0xc0, 0xe0, 0x37, 0x37, 0x03, 0x73, 0x76, 0xd1, + 0xfb, 0x83, 0xa4, 0x60, 0xb2, 0x3b, 0xb6, 0x4d, 0xf4, 0xfc, 0xf8, 0xd9, 0x21, 0x81, 0xf5, 0x97, + 0x50, 0x5b, 0x51, 0x69, 0xd5, 0xa9, 0xf1, 0x2e, 0x8d, 0x0e, 0xda, 0x93, 0x92, 0x32, 0xc1, 0x6c, + 0xca, 0xec, 0x72, 0x29, 0x73, 0xcc, 0x93, 0x81, 0x19, 0x7c, 0xdf, 0xd0, 0x0a, 0xfa, 0x5f, 0x67, + 0xe1, 0xd2, 0x20, 0x30, 0xbd, 0xd0, 0x14, 0xaf, 0x1b, 0x5e, 0x14, 0xf8, 0x2e, 0xfb, 0x29, 0xa8, + 0xd1, 0xd8, 0x4d, 0x9f, 0xce, 0x7b, 0x32, 0x0c, 0x9f, 0x67, 0x7d, 0x38, 0x18, 0xbb, 0x74, 0x46, + 0xa5, 0x48, 0x0c, 0xd8, 0x07, 0x50, 0x18, 0xd9, 0x53, 0xc7, 0x93, 0x6d, 0xe4, 0x3b, 0xe7, 0x27, + 0xee, 0x22, 0xb1, 0x95, 0xe1, 0x82, 0x8b, 0x7d, 0x04, 0xc5, 0xb1, 0x3f, 0xc3, 0xcc, 0x21, 0x6a, + 0x86, 0xab, 0xeb, 0x0b, 0x21, 0xb5, 0x95, 0xe1, 0x92, 0x8f, 0x3d, 0x01, 0x35, 0xf0, 0x5d, 0x77, + 0x64, 0x8e, 0x5f, 0xcb, 0x76, 0xb2, 0x7e, 0x7e, 0x0e, 0x97, 0xf4, 0x56, 0x86, 0x27, 0xbc, 0xfa, + 0x43, 0x28, 0x49, 0x65, 0xf1, 0x00, 0x76, 0x8d, 0xfd, 0xb6, 0x3c, 0xbb, 0x66, 0xef, 0xe0, 0xa0, + 0x8d, 0x67, 0x57, 0x05, 0x95, 0xf7, 0x3a, 0x9d, 0xdd, 0x46, 0xf3, 0xb9, 0x96, 0xdd, 0x55, 0xa1, + 0x68, 0xd2, 0xbb, 0xb2, 0xfe, 0xa7, 0x0a, 0x6c, 0x9e, 0xdb, 0x00, 0x7b, 0x0a, 0xf9, 0x99, 0x6f, + 0xc5, 0xc7, 0x73, 0xf7, 0xc2, 0x5d, 0xa6, 0x60, 0xf4, 0x23, 0x4e, 0x33, 0xf4, 0x9f, 0xc0, 0xc6, + 0x2a, 0x3e, 0xf5, 0xf6, 0x5f, 0x83, 0x32, 0x37, 0x1a, 0x7b, 0xc3, 0x5e, 0xb7, 0xf3, 0x99, 0x88, + 0xce, 0x04, 0xbe, 0xe4, 0xed, 0x81, 0xa1, 0x65, 0xf5, 0x5f, 0x83, 0x76, 0xfe, 0x60, 0xd8, 0x3e, + 0x6c, 0x8e, 0xfd, 0xd9, 0xdc, 0xb5, 0xa9, 0x93, 0x48, 0x5d, 0xd9, 0xad, 0x0b, 0x4e, 0x52, 0xb2, + 0xd1, 0x8d, 0x6d, 0x8c, 0x57, 0x60, 0xfd, 0xff, 0x03, 0x5b, 0x3f, 0xc1, 0xff, 0x3b, 0xf1, 0xff, + 0xa2, 0x40, 0xfe, 0xd0, 0x35, 0x3d, 0x76, 0x07, 0x0a, 0xf4, 0x18, 0x2f, 0xfb, 0xba, 0x4a, 0xca, + 0xef, 0xd0, 0x2c, 0x88, 0xc6, 0xde, 0x87, 0x5c, 0x34, 0x76, 0xa5, 0x0d, 0x5d, 0x7b, 0x8b, 0xf1, + 0xb5, 0x32, 0x1c, 0xb9, 0xd8, 0x36, 0xe4, 0x2c, 0xcb, 0x95, 0x06, 0x14, 0xe7, 0x5e, 0x33, 0x32, + 0xf7, 0xec, 0x89, 0xe3, 0x39, 0xf2, 0xd3, 0x00, 0xb2, 0xb0, 0x7b, 0x90, 0xb3, 0xc6, 0xae, 0x34, + 0x9b, 0x4b, 0x4b, 0xce, 0x94, 0x40, 0x6b, 0xec, 0xb2, 0xfb, 0x90, 0x73, 0xe8, 0xf1, 0x0f, 0xd9, + 0x58, 0xfc, 0x10, 0x12, 0xda, 0x41, 0x24, 0x5e, 0x9c, 0xe8, 0x31, 0xc4, 0x0b, 0x77, 0x8b, 0x40, + 0x5f, 0xfe, 0xf5, 0x3f, 0x28, 0x50, 0x4d, 0xd3, 0xbf, 0x53, 0x33, 0xf5, 0x31, 0x96, 0x1c, 0x73, + 0xd7, 0x19, 0x3b, 0x91, 0x68, 0x6c, 0x72, 0x17, 0x34, 0x36, 0xd5, 0x98, 0x85, 0x5a, 0x9b, 0xf7, + 0x41, 0xf4, 0x31, 0x82, 0x3f, 0x7f, 0x01, 0x7f, 0x99, 0xe8, 0x49, 0x1f, 0x94, 0x6a, 0x73, 0x0a, + 0xe7, 0xdb, 0x1c, 0x76, 0x9f, 0x3e, 0xab, 0xd2, 0xb3, 0x67, 0x31, 0x2d, 0x4a, 0x20, 0x79, 0x4c, + 0xd4, 0x7f, 0x88, 0x2e, 0x8b, 0x43, 0x0c, 0x6b, 0x62, 0x74, 0x41, 0xfb, 0x2a, 0x29, 0xfa, 0xff, + 0x64, 0xa1, 0x92, 0x3a, 0x62, 0xf6, 0x18, 0x54, 0x6b, 0x35, 0xb6, 0x5c, 0x5f, 0xbb, 0x87, 0x87, + 0x7b, 0x71, 0x54, 0xb1, 0xa4, 0xc7, 0xfe, 0x04, 0x6a, 0x58, 0xbf, 0xbd, 0x31, 0x03, 0x87, 0xca, + 0x27, 0x69, 0x19, 0xf2, 0x6e, 0xfa, 0x76, 0xf4, 0x22, 0xa6, 0xb4, 0x32, 0xbc, 0x1a, 0xa6, 0x60, + 0xf6, 0x03, 0x6c, 0x52, 0xed, 0xb9, 0x19, 0xd8, 0xd2, 0x42, 0x6a, 0xf1, 0x73, 0x15, 0x21, 0x5b, + 0x19, 0x1e, 0xd3, 0x91, 0xd5, 0x3e, 0xb5, 0xc7, 0x0b, 0x99, 0x5c, 0x12, 0x56, 0x43, 0x20, 0x91, + 0x55, 0xd2, 0xd9, 0x0e, 0x80, 0x65, 0x9b, 0xae, 0xeb, 0x53, 0x2a, 0x2a, 0xa4, 0x4b, 0xca, 0xbd, + 0x04, 0x2f, 0xbe, 0xd1, 0xc7, 0x90, 0x3e, 0x85, 0x92, 0xdc, 0x18, 0xa6, 0xfd, 0xbe, 0x31, 0x18, + 0xbe, 0x68, 0xf0, 0x36, 0x96, 0x5f, 0x7d, 0x2d, 0x83, 0x41, 0x69, 0x9f, 0x37, 0xba, 0x32, 0x88, + 0x73, 0xe3, 0x45, 0xef, 0xb9, 0xa1, 0x65, 0xc5, 0xe3, 0x43, 0xf7, 0x33, 0x2d, 0x27, 0x4a, 0x2c, + 0xe3, 0xb0, 0xc1, 0x31, 0x86, 0x57, 0xa0, 0x64, 0x7c, 0x6a, 0x34, 0x8f, 0x06, 0x86, 0x56, 0xc0, + 0x38, 0xb1, 0x67, 0x34, 0x3a, 0x9d, 0x5e, 0x13, 0x03, 0x7c, 0x71, 0xb7, 0x8c, 0x37, 0x49, 0x27, + 0xa9, 0xff, 0x49, 0x19, 0x36, 0x56, 0x7d, 0x81, 0xfd, 0x18, 0x54, 0xcb, 0x5a, 0xb9, 0x81, 0x9b, + 0x17, 0xf9, 0xcc, 0xc3, 0x3d, 0x2b, 0xbe, 0x04, 0x31, 0x60, 0xb7, 0x63, 0xcf, 0xcd, 0xae, 0x79, + 0x6e, 0xec, 0xb7, 0xbf, 0x80, 0x4d, 0xf1, 0x98, 0x49, 0xa5, 0xf6, 0xc8, 0x0c, 0xed, 0x55, 0xb7, + 0x6c, 0x12, 0x71, 0x4f, 0xd2, 0x5a, 0x19, 0xbe, 0x31, 0x5e, 0xc1, 0xb0, 0x9f, 0xc1, 0x86, 0x49, + 0xed, 0x57, 0x32, 0x3f, 0x9f, 0x7e, 0x08, 0x6c, 0x20, 0x2d, 0x35, 0xbd, 0x66, 0xa6, 0x11, 0x68, + 0x26, 0x56, 0xe0, 0xcf, 0x97, 0x93, 0x57, 0x5c, 0x78, 0x2f, 0xf0, 0xe7, 0xa9, 0xb9, 0x55, 0x2b, + 0x05, 0xb3, 0x27, 0x50, 0x95, 0x9a, 0x53, 0x87, 0x21, 0x3f, 0x31, 0x5e, 0x4a, 0xab, 0x4d, 0xe5, + 0x4d, 0x2b, 0xc3, 0x2b, 0xe3, 0x25, 0xc8, 0x1e, 0x41, 0x45, 0x28, 0x2c, 0xa6, 0x95, 0xd2, 0x96, + 0x40, 0xda, 0xc6, 0xb3, 0xc0, 0x4c, 0x20, 0xf6, 0x11, 0x00, 0xe9, 0x29, 0xe6, 0xa8, 0xe9, 0xf6, + 0x05, 0x95, 0x8c, 0xa7, 0x94, 0xad, 0x18, 0x48, 0xa9, 0x27, 0x9e, 0x85, 0xcb, 0xeb, 0xea, 0xd1, + 0xbb, 0xe7, 0x52, 0x3d, 0x02, 0x97, 0xea, 0x89, 0x69, 0xb0, 0xa6, 0x5e, 0x3c, 0x4b, 0xa8, 0x27, + 0x26, 0xc5, 0xea, 0x89, 0x39, 0x95, 0xf3, 0xea, 0xc5, 0x53, 0x48, 0x3d, 0x31, 0xe3, 0x67, 0xb0, + 0x11, 0xc9, 0x22, 0x4c, 0x6e, 0xaa, 0x9a, 0xbe, 0xb6, 0xb8, 0x40, 0x8b, 0x37, 0x56, 0x8b, 0xd2, + 0x08, 0x9c, 0x1d, 0x1e, 0xfb, 0x27, 0x29, 0xf7, 0xae, 0xa5, 0x67, 0xf7, 0x8f, 0xfd, 0x93, 0xb4, + 0x7f, 0xd7, 0xc2, 0x34, 0x42, 0xff, 0x8b, 0x1c, 0x94, 0xa4, 0xad, 0xb2, 0xcb, 0xb0, 0xd9, 0xe4, + 0x46, 0x63, 0x60, 0x0c, 0xf7, 0x1a, 0x83, 0xc6, 0x6e, 0xa3, 0x8f, 0x59, 0x95, 0xc1, 0x46, 0x03, + 0xbb, 0x84, 0x25, 0x4e, 0x41, 0x07, 0xdc, 0xe3, 0xbd, 0xc3, 0x25, 0x2a, 0xcb, 0x34, 0xa8, 0xca, + 0xb9, 0xe2, 0x83, 0x7b, 0x8e, 0x6d, 0x42, 0x45, 0x4c, 0x14, 0x88, 0x3c, 0x39, 0x1a, 0xce, 0x12, + 0x70, 0x21, 0x35, 0xa5, 0xdd, 0xdd, 0x33, 0x3e, 0xd5, 0x8a, 0xcb, 0x29, 0x02, 0x51, 0x4a, 0xa6, + 0x08, 0x58, 0x45, 0x65, 0x06, 0xfc, 0xa8, 0xdb, 0x5c, 0xae, 0x53, 0x66, 0xd7, 0xe0, 0x72, 0xbf, + 0xd5, 0x7b, 0x39, 0x14, 0xb2, 0x12, 0x95, 0x80, 0x5d, 0x01, 0x2d, 0x45, 0x10, 0xec, 0x15, 0x14, + 0x41, 0xd8, 0x98, 0xb1, 0xaf, 0x55, 0x71, 0x5d, 0xc2, 0x0d, 0x44, 0x38, 0xa9, 0xa1, 0x6a, 0x62, + 0x6a, 0xaf, 0x73, 0x74, 0xd0, 0xed, 0x6b, 0x1b, 0xa8, 0x09, 0x61, 0x84, 0x26, 0x9b, 0x89, 0x98, + 0x65, 0x10, 0xd2, 0x28, 0x2e, 0x21, 0xee, 0x65, 0x83, 0x77, 0xdb, 0xdd, 0xfd, 0xbe, 0x76, 0x29, + 0x91, 0x6c, 0x70, 0xde, 0xe3, 0x7d, 0x8d, 0x25, 0x88, 0xfe, 0xa0, 0x31, 0x38, 0xea, 0x6b, 0x97, + 0x13, 0x2d, 0x0f, 0x79, 0xaf, 0x69, 0xf4, 0xfb, 0x9d, 0x76, 0x7f, 0xa0, 0x5d, 0xd9, 0xad, 0xd2, + 0x7f, 0x96, 0x64, 0x30, 0xd1, 0x0f, 0x61, 0x63, 0xd5, 0xf7, 0x99, 0x0e, 0x35, 0x67, 0x32, 0xf4, + 0xfc, 0x68, 0x68, 0x9f, 0x3a, 0x61, 0x14, 0xc6, 0x1f, 0x70, 0x9d, 0x49, 0xd7, 0x8f, 0x0c, 0x42, + 0x61, 0x4d, 0x9c, 0xb8, 0xb2, 0x48, 0x97, 0x09, 0xac, 0xb7, 0xa0, 0xb6, 0x12, 0x0d, 0xd8, 0xf7, + 0xa0, 0xec, 0x4c, 0x56, 0x85, 0xa9, 0xce, 0xe4, 0x5b, 0x48, 0xda, 0x87, 0x6a, 0x3a, 0x34, 0x7c, + 0x77, 0x41, 0x7f, 0xa5, 0x40, 0x25, 0x15, 0x2a, 0xbe, 0xd5, 0x16, 0x6f, 0x42, 0x39, 0xb2, 0x67, + 0x73, 0x3f, 0x30, 0x65, 0x60, 0x55, 0xf9, 0x12, 0xb1, 0xb2, 0x5a, 0x6e, 0x75, 0xb5, 0xd5, 0xd7, + 0x92, 0xfc, 0xd7, 0xbf, 0x96, 0xe8, 0x3d, 0x80, 0x65, 0x34, 0xa2, 0xaf, 0x11, 0xe4, 0xa5, 0xf2, + 0xaf, 0x4d, 0x04, 0xac, 0x0a, 0xcc, 0x7e, 0x83, 0xc0, 0xcf, 0xa1, 0x9c, 0x84, 0xaa, 0xef, 0x7c, + 0x62, 0x4b, 0x45, 0x72, 0x29, 0x45, 0xf4, 0xfd, 0xf8, 0x18, 0x45, 0x70, 0xf9, 0x36, 0xc7, 0x78, + 0x05, 0x0a, 0x22, 0x5a, 0xc9, 0xcf, 0xd8, 0x04, 0xe8, 0xba, 0xdc, 0xb5, 0x90, 0x93, 0xf0, 0x28, + 0x69, 0x9e, 0x9f, 0x8b, 0x8d, 0x08, 0x96, 0xaf, 0xdd, 0xc8, 0xc5, 0x6b, 0xdc, 0x83, 0xda, 0x4a, + 0x78, 0xbb, 0xf8, 0x70, 0xf5, 0x36, 0xd4, 0x56, 0xe2, 0x58, 0xea, 0x4f, 0x75, 0x4a, 0xfa, 0x4f, + 0x75, 0xd8, 0x4d, 0x9e, 0x1c, 0xdb, 0x81, 0x7d, 0xc1, 0xff, 0x86, 0x04, 0x41, 0xff, 0x19, 0x54, + 0xd3, 0x15, 0x0f, 0xfb, 0x21, 0x14, 0x9c, 0xc8, 0x9e, 0xc5, 0x9f, 0xe5, 0xaf, 0xae, 0x17, 0x45, + 0xf4, 0x99, 0x59, 0x30, 0xe9, 0xbf, 0x53, 0x40, 0x3b, 0x4f, 0x4b, 0xfd, 0xf3, 0x4f, 0x79, 0xcb, + 0x3f, 0xff, 0xb2, 0x2b, 0x4a, 0x5e, 0xf0, 0xef, 0x3d, 0x54, 0x5c, 0x7c, 0x5a, 0xbb, 0xe0, 0xaf, + 0x68, 0x44, 0x60, 0xf7, 0x41, 0x0d, 0x6c, 0xfa, 0xa3, 0x96, 0x25, 0x33, 0xf3, 0xca, 0x07, 0xdd, + 0x98, 0xa6, 0xff, 0x99, 0x02, 0x25, 0x59, 0x9e, 0x5d, 0xf8, 0xc1, 0xf6, 0x07, 0x50, 0x12, 0x9f, + 0x95, 0xe2, 0xef, 0x49, 0x6b, 0x4f, 0x7f, 0x31, 0x9d, 0xdd, 0x12, 0x25, 0xfa, 0xea, 0x8b, 0x34, + 0xf6, 0x21, 0x9c, 0xf0, 0x58, 0x15, 0x53, 0xff, 0x4d, 0xe5, 0x50, 0x28, 0xbf, 0x95, 0x01, 0xa1, + 0x30, 0xa1, 0x84, 0xfa, 0xff, 0x83, 0x92, 0x2c, 0xff, 0x2e, 0x54, 0xe5, 0x9b, 0xfe, 0xe4, 0xb5, + 0x05, 0xb0, 0xac, 0x07, 0x2f, 0x92, 0xf0, 0xe0, 0x36, 0x54, 0xd3, 0x7f, 0xbc, 0xa1, 0x6e, 0xd0, + 0xf7, 0x6c, 0x2d, 0xc3, 0x4a, 0x90, 0xeb, 0x7c, 0xf9, 0x58, 0x53, 0x1e, 0xfc, 0x51, 0xea, 0x6b, + 0x3e, 0xf1, 0x94, 0x20, 0xf7, 0xdc, 0xf8, 0x4c, 0xbc, 0xe7, 0x75, 0xda, 0x5d, 0xa3, 0xc1, 0x87, + 0x08, 0x2b, 0x38, 0xb9, 0xd5, 0xe8, 0xb7, 0xb4, 0x2c, 0x46, 0x69, 0x49, 0x21, 0x44, 0x8e, 0xde, + 0x86, 0x1a, 0xdd, 0x7d, 0x43, 0xbc, 0xdf, 0xd1, 0x30, 0x49, 0x0e, 0x05, 0x7a, 0x43, 0xc2, 0xb8, + 0x5d, 0xc4, 0xc4, 0x81, 0xa3, 0x84, 0x56, 0x7a, 0xf0, 0x4b, 0xa8, 0xbf, 0xad, 0xcd, 0x43, 0xa9, + 0xcd, 0x56, 0x83, 0x5a, 0xe9, 0x2a, 0xa8, 0xdd, 0xde, 0x50, 0x40, 0x0a, 0x16, 0xa8, 0xdc, 0xe8, + 0x18, 0x94, 0x5a, 0x77, 0x7f, 0xf1, 0x0f, 0x5f, 0xdd, 0x52, 0xfe, 0xf1, 0xab, 0x5b, 0xca, 0xbf, + 0x7d, 0x75, 0x2b, 0xf3, 0xbb, 0xff, 0xb8, 0xa5, 0x7c, 0x9e, 0xfe, 0xb3, 0xf4, 0xcc, 0x8c, 0x02, + 0xe7, 0x54, 0xfc, 0xe9, 0x26, 0x06, 0x3c, 0xfb, 0xc3, 0xf9, 0xeb, 0xe9, 0x87, 0xf3, 0xd1, 0x87, + 0x78, 0xa2, 0xa3, 0x22, 0xfd, 0x67, 0xfa, 0xd1, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x98, 0xf8, + 0x20, 0x41, 0x76, 0x2d, 0x00, 0x00, } func (m *Type) Marshal() (dAtA []byte, err error) { @@ -6079,6 +6409,40 @@ func (m *ExprList) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MaxValue) Marshal() (dAtA []byte, err error) { + size := m.ProtoSize() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MaxValue) MarshalTo(dAtA []byte) (int, error) { + size := m.ProtoSize() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MaxValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.Value) > 0 { + i -= len(m.Value) + copy(dAtA[i:], m.Value) + i = encodeVarintPlan(dAtA, i, uint64(len(m.Value))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *TargetType) Marshal() (dAtA []byte, err error) { size := m.ProtoSize() dAtA = make([]byte, size) @@ -6544,6 +6908,27 @@ func (m *Expr_List) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } +func (m *Expr_Max) MarshalTo(dAtA []byte) (int, error) { + size := m.ProtoSize() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Expr_Max) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.Max != nil { + { + size, err := m.Max.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPlan(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + } + return len(dAtA) - i, nil +} func (m *Decimal64) Marshal() (dAtA []byte, err error) { size := m.ProtoSize() dAtA = make([]byte, size) @@ -6920,6 +7305,195 @@ func (m *PropertiesDef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *PartitionInfo) Marshal() (dAtA []byte, err error) { + size := m.ProtoSize() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PartitionInfo) MarshalTo(dAtA []byte) (int, error) { + size := m.ProtoSize() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PartitionInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.IsSubPartition { + i-- + if m.IsSubPartition { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x48 + } + if m.Algorithm != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.Algorithm)) + i-- + dAtA[i] = 0x40 + } + if len(m.Partitions) > 0 { + for iNdEx := len(m.Partitions) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Partitions[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPlan(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if m.PartitionNum != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.PartitionNum)) + i-- + dAtA[i] = 0x30 + } + if len(m.PartitionColumns) > 0 { + for iNdEx := len(m.PartitionColumns) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.PartitionColumns[iNdEx]) + copy(dAtA[i:], m.PartitionColumns[iNdEx]) + i = encodeVarintPlan(dAtA, i, uint64(len(m.PartitionColumns[iNdEx]))) + i-- + dAtA[i] = 0x2a + } + } + if len(m.Columns) > 0 { + for iNdEx := len(m.Columns) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Columns[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPlan(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.PartitionExpression) > 0 { + i -= len(m.PartitionExpression) + copy(dAtA[i:], m.PartitionExpression) + i = encodeVarintPlan(dAtA, i, uint64(len(m.PartitionExpression))) + i-- + dAtA[i] = 0x1a + } + if m.Expr != nil { + { + size, err := m.Expr.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPlan(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Type != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.Type)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *PartitionItem) Marshal() (dAtA []byte, err error) { + size := m.ProtoSize() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PartitionItem) MarshalTo(dAtA []byte) (int, error) { + size := m.ProtoSize() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PartitionItem) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.InValues) > 0 { + for iNdEx := len(m.InValues) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.InValues[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPlan(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.LessThan) > 0 { + for iNdEx := len(m.LessThan) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.LessThan[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPlan(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.Comment) > 0 { + i -= len(m.Comment) + copy(dAtA[i:], m.Comment) + i = encodeVarintPlan(dAtA, i, uint64(len(m.Comment))) + i-- + dAtA[i] = 0x22 + } + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintPlan(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x1a + } + if m.OrdinalPosition != 0 { + i = encodeVarintPlan(dAtA, i, uint64(m.OrdinalPosition)) + i-- + dAtA[i] = 0x10 + } + if len(m.PartitionName) > 0 { + i -= len(m.PartitionName) + copy(dAtA[i:], m.PartitionName) + i = encodeVarintPlan(dAtA, i, uint64(len(m.PartitionName))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *ViewDef) Marshal() (dAtA []byte, err error) { size := m.ProtoSize() dAtA = make([]byte, size) @@ -7167,6 +7741,27 @@ func (m *TableDef_DefType_View) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } +func (m *TableDef_DefType_Partition) MarshalTo(dAtA []byte) (int, error) { + size := m.ProtoSize() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TableDef_DefType_Partition) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.Partition != nil { + { + size, err := m.Partition.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPlan(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + return len(dAtA) - i, nil +} func (m *Cost) Marshal() (dAtA []byte, err error) { size := m.ProtoSize() dAtA = make([]byte, size) @@ -7259,9 +7854,9 @@ func (m *ColData) MarshalToSizedBuffer(dAtA []byte) (int, error) { } if len(m.F64) > 0 { for iNdEx := len(m.F64) - 1; iNdEx >= 0; iNdEx-- { - f23 := math.Float64bits(float64(m.F64[iNdEx])) + f26 := math.Float64bits(float64(m.F64[iNdEx])) i -= 8 - encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(f23)) + encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(f26)) } i = encodeVarintPlan(dAtA, i, uint64(len(m.F64)*8)) i-- @@ -7269,49 +7864,49 @@ func (m *ColData) MarshalToSizedBuffer(dAtA []byte) (int, error) { } if len(m.F32) > 0 { for iNdEx := len(m.F32) - 1; iNdEx >= 0; iNdEx-- { - f24 := math.Float32bits(float32(m.F32[iNdEx])) + f27 := math.Float32bits(float32(m.F32[iNdEx])) i -= 4 - encoding_binary.LittleEndian.PutUint32(dAtA[i:], uint32(f24)) + encoding_binary.LittleEndian.PutUint32(dAtA[i:], uint32(f27)) } i = encodeVarintPlan(dAtA, i, uint64(len(m.F32)*4)) i-- dAtA[i] = 0x32 } if len(m.I64) > 0 { - dAtA26 := make([]byte, len(m.I64)*10) - var j25 int + dAtA29 := make([]byte, len(m.I64)*10) + var j28 int for _, num1 := range m.I64 { num := uint64(num1) for num >= 1<<7 { - dAtA26[j25] = uint8(uint64(num)&0x7f | 0x80) + dAtA29[j28] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j25++ + j28++ } - dAtA26[j25] = uint8(num) - j25++ + dAtA29[j28] = uint8(num) + j28++ } - i -= j25 - copy(dAtA[i:], dAtA26[:j25]) - i = encodeVarintPlan(dAtA, i, uint64(j25)) + i -= j28 + copy(dAtA[i:], dAtA29[:j28]) + i = encodeVarintPlan(dAtA, i, uint64(j28)) i-- dAtA[i] = 0x2a } if len(m.I32) > 0 { - dAtA28 := make([]byte, len(m.I32)*10) - var j27 int + dAtA31 := make([]byte, len(m.I32)*10) + var j30 int for _, num1 := range m.I32 { num := uint64(num1) for num >= 1<<7 { - dAtA28[j27] = uint8(uint64(num)&0x7f | 0x80) + dAtA31[j30] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j27++ + j30++ } - dAtA28[j27] = uint8(num) - j27++ + dAtA31[j30] = uint8(num) + j30++ } - i -= j27 - copy(dAtA[i:], dAtA28[:j27]) - i = encodeVarintPlan(dAtA, i, uint64(j27)) + i -= j30 + copy(dAtA[i:], dAtA31[:j30]) + i = encodeVarintPlan(dAtA, i, uint64(j30)) i-- dAtA[i] = 0x22 } @@ -7703,21 +8298,21 @@ func (m *Node) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xba } if len(m.BindingTags) > 0 { - dAtA33 := make([]byte, len(m.BindingTags)*10) - var j32 int + dAtA36 := make([]byte, len(m.BindingTags)*10) + var j35 int for _, num1 := range m.BindingTags { num := uint64(num1) for num >= 1<<7 { - dAtA33[j32] = uint8(uint64(num)&0x7f | 0x80) + dAtA36[j35] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j32++ + j35++ } - dAtA33[j32] = uint8(num) - j32++ + dAtA36[j35] = uint8(num) + j35++ } - i -= j32 - copy(dAtA[i:], dAtA33[:j32]) - i = encodeVarintPlan(dAtA, i, uint64(j32)) + i -= j35 + copy(dAtA[i:], dAtA36[:j35]) + i = encodeVarintPlan(dAtA, i, uint64(j35)) i-- dAtA[i] = 0x1 i-- @@ -7932,21 +8527,21 @@ func (m *Node) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x30 } if len(m.Children) > 0 { - dAtA41 := make([]byte, len(m.Children)*10) - var j40 int + dAtA44 := make([]byte, len(m.Children)*10) + var j43 int for _, num1 := range m.Children { num := uint64(num1) for num >= 1<<7 { - dAtA41[j40] = uint8(uint64(num)&0x7f | 0x80) + dAtA44[j43] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j40++ + j43++ } - dAtA41[j40] = uint8(num) - j40++ + dAtA44[j43] = uint8(num) + j43++ } - i -= j40 - copy(dAtA[i:], dAtA41[:j40]) - i = encodeVarintPlan(dAtA, i, uint64(j40)) + i -= j43 + copy(dAtA[i:], dAtA44[:j43]) + i = encodeVarintPlan(dAtA, i, uint64(j43)) i-- dAtA[i] = 0x2a } @@ -8119,21 +8714,21 @@ func (m *Query) MarshalToSizedBuffer(dAtA []byte) (int, error) { } } if len(m.Steps) > 0 { - dAtA44 := make([]byte, len(m.Steps)*10) - var j43 int + dAtA47 := make([]byte, len(m.Steps)*10) + var j46 int for _, num1 := range m.Steps { num := uint64(num1) for num >= 1<<7 { - dAtA44[j43] = uint8(uint64(num)&0x7f | 0x80) + dAtA47[j46] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j43++ + j46++ } - dAtA44[j43] = uint8(num) - j43++ + dAtA47[j46] = uint8(num) + j46++ } - i -= j43 - copy(dAtA[i:], dAtA44[:j43]) - i = encodeVarintPlan(dAtA, i, uint64(j43)) + i -= j46 + copy(dAtA[i:], dAtA47[:j46]) + i = encodeVarintPlan(dAtA, i, uint64(j46)) i-- dAtA[i] = 0x12 } @@ -9674,21 +10269,21 @@ func (m *Prepare) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if len(m.ParamTypes) > 0 { - dAtA74 := make([]byte, len(m.ParamTypes)*10) - var j73 int + dAtA77 := make([]byte, len(m.ParamTypes)*10) + var j76 int for _, num1 := range m.ParamTypes { num := uint64(num1) for num >= 1<<7 { - dAtA74[j73] = uint8(uint64(num)&0x7f | 0x80) + dAtA77[j76] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j73++ + j76++ } - dAtA74[j73] = uint8(num) - j73++ + dAtA77[j76] = uint8(num) + j76++ } - i -= j73 - copy(dAtA[i:], dAtA74[:j73]) - i = encodeVarintPlan(dAtA, i, uint64(j73)) + i -= j76 + copy(dAtA[i:], dAtA77[:j76]) + i = encodeVarintPlan(dAtA, i, uint64(j76)) i-- dAtA[i] = 0x22 } @@ -10092,6 +10687,22 @@ func (m *ExprList) ProtoSize() (n int) { return n } +func (m *MaxValue) ProtoSize() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Value) + if l > 0 { + n += 1 + l + sovPlan(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *TargetType) ProtoSize() (n int) { if m == nil { return 0 @@ -10326,6 +10937,18 @@ func (m *Expr_List) ProtoSize() (n int) { } return n } +func (m *Expr_Max) ProtoSize() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Max != nil { + l = m.Max.ProtoSize() + n += 1 + l + sovPlan(uint64(l)) + } + return n +} func (m *Decimal64) ProtoSize() (n int) { if m == nil { return 0 @@ -10500,6 +11123,95 @@ func (m *PropertiesDef) ProtoSize() (n int) { return n } +func (m *PartitionInfo) ProtoSize() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Type != 0 { + n += 1 + sovPlan(uint64(m.Type)) + } + if m.Expr != nil { + l = m.Expr.ProtoSize() + n += 1 + l + sovPlan(uint64(l)) + } + l = len(m.PartitionExpression) + if l > 0 { + n += 1 + l + sovPlan(uint64(l)) + } + if len(m.Columns) > 0 { + for _, e := range m.Columns { + l = e.ProtoSize() + n += 1 + l + sovPlan(uint64(l)) + } + } + if len(m.PartitionColumns) > 0 { + for _, s := range m.PartitionColumns { + l = len(s) + n += 1 + l + sovPlan(uint64(l)) + } + } + if m.PartitionNum != 0 { + n += 1 + sovPlan(uint64(m.PartitionNum)) + } + if len(m.Partitions) > 0 { + for _, e := range m.Partitions { + l = e.ProtoSize() + n += 1 + l + sovPlan(uint64(l)) + } + } + if m.Algorithm != 0 { + n += 1 + sovPlan(uint64(m.Algorithm)) + } + if m.IsSubPartition { + n += 2 + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *PartitionItem) ProtoSize() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.PartitionName) + if l > 0 { + n += 1 + l + sovPlan(uint64(l)) + } + if m.OrdinalPosition != 0 { + n += 1 + sovPlan(uint64(m.OrdinalPosition)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovPlan(uint64(l)) + } + l = len(m.Comment) + if l > 0 { + n += 1 + l + sovPlan(uint64(l)) + } + if len(m.LessThan) > 0 { + for _, e := range m.LessThan { + l = e.ProtoSize() + n += 1 + l + sovPlan(uint64(l)) + } + } + if len(m.InValues) > 0 { + for _, e := range m.InValues { + l = e.ProtoSize() + n += 1 + l + sovPlan(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *ViewDef) ProtoSize() (n int) { if m == nil { return 0 @@ -10623,6 +11335,18 @@ func (m *TableDef_DefType_View) ProtoSize() (n int) { } return n } +func (m *TableDef_DefType_Partition) ProtoSize() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Partition != nil { + l = m.Partition.ProtoSize() + n += 1 + l + sovPlan(uint64(l)) + } + return n +} func (m *Cost) ProtoSize() (n int) { if m == nil { return 0 @@ -12889,6 +13613,89 @@ func (m *ExprList) Unmarshal(dAtA []byte) error { } return nil } +func (m *MaxValue) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MaxValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MaxValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPlan(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPlan + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *TargetType) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -13908,6 +14715,41 @@ func (m *Expr) Unmarshal(dAtA []byte) error { } m.Expr = &Expr_List{v} iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Max", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &MaxValue{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Expr = &Expr_Max{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipPlan(dAtA[iNdEx:]) @@ -14890,7 +15732,7 @@ func (m *PropertiesDef) Unmarshal(dAtA []byte) error { } return nil } -func (m *ViewDef) Unmarshal(dAtA []byte) error { +func (m *PartitionInfo) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -14913,17 +15755,36 @@ func (m *ViewDef) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ViewDef: wiretype end group for non-group") + return fmt.Errorf("proto: PartitionInfo: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ViewDef: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PartitionInfo: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + m.Type = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Type |= PartitionType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field View", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Expr", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowPlan @@ -14933,31 +15794,542 @@ func (m *ViewDef) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthPlan } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthPlan } if postIndex > l { return io.ErrUnexpectedEOF } - m.View = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipPlan(dAtA[iNdEx:]) - if err != nil { + if m.Expr == nil { + m.Expr = &Expr{} + } + if err := m.Expr.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - if (skippy < 0) || (iNdEx+skippy) < 0 { + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PartitionExpression", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PartitionExpression = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Columns", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Columns = append(m.Columns, &Expr{}) + if err := m.Columns[len(m.Columns)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PartitionColumns", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PartitionColumns = append(m.PartitionColumns, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PartitionNum", wireType) + } + m.PartitionNum = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PartitionNum |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Partitions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Partitions = append(m.Partitions, &PartitionItem{}) + if err := m.Partitions[len(m.Partitions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Algorithm", wireType) + } + m.Algorithm = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Algorithm |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsSubPartition", 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.IsSubPartition = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipPlan(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPlan + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PartitionItem) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PartitionItem: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PartitionItem: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PartitionName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PartitionName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OrdinalPosition", wireType) + } + m.OrdinalPosition = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OrdinalPosition |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Comment", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Comment = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LessThan", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LessThan = append(m.LessThan, &Expr{}) + if err := m.LessThan[len(m.LessThan)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InValues", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InValues = append(m.InValues, &Expr{}) + if err := m.InValues[len(m.InValues)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPlan(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPlan + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ViewDef) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ViewDef: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ViewDef: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field View", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.View = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPlan(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthPlan } if (iNdEx + skippy) > l { @@ -15470,6 +16842,41 @@ func (m *TableDef_DefType) Unmarshal(dAtA []byte) error { } m.Def = &TableDef_DefType_View{v} iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Partition", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlan + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPlan + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPlan + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &PartitionInfo{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Def = &TableDef_DefType_Partition{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipPlan(dAtA[iNdEx:]) diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql.go b/pkg/sql/parsers/dialect/mysql/mysql_sql.go index 3f96d851f665c50574c917a9a53566b1069457be..aeb0c208de8726c83876ca6d49986ac9e814e3e4 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.go @@ -974,7 +974,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line mysql_sql.y:7200 +//line mysql_sql.y:7213 //line yacctab:1 var yyExca = [...]int{ @@ -995,149 +995,149 @@ var yyExca = [...]int{ 21, 432, -2, 395, -1, 441, - 94, 1308, - 105, 1308, - 124, 1308, - -2, 1120, + 94, 1311, + 105, 1311, + 124, 1311, + -2, 1123, -1, 471, 21, 432, -2, 395, - -1, 631, + -1, 632, + 58, 1462, + -2, 1469, + -1, 640, + 58, 1463, + -2, 1477, + -1, 642, 58, 1459, - -2, 1466, - -1, 639, + -2, 1479, + -1, 643, 58, 1460, - -2, 1474, - -1, 641, - 58, 1456, - -2, 1476, - -1, 642, - 58, 1457, - -2, 1477, - -1, 647, - 58, 1458, - -2, 1483, + -2, 1480, -1, 648, 58, 1461, - -2, 1484, + -2, 1486, -1, 649, - 58, 1462, - -2, 1485, + 58, 1464, + -2, 1487, -1, 650, - 58, 883, - -2, 1486, + 58, 1465, + -2, 1488, -1, 651, - 58, 884, - -2, 1487, - -1, 652, 58, 885, - -2, 1488, - -1, 654, - 58, 1463, + -2, 1489, + -1, 652, + 58, 886, -2, 1490, - -1, 655, - 58, 903, + -1, 653, + 58, 887, -2, 1491, + -1, 655, + 58, 1466, + -2, 1493, -1, 656, - 58, 902, - -2, 1492, - -1, 659, - 58, 1464, + 58, 905, + -2, 1494, + -1, 657, + 58, 904, -2, 1495, -1, 660, - 58, 1465, - -2, 1496, - -1, 666, - 58, 965, - -2, 1308, + 58, 1467, + -2, 1498, + -1, 661, + 58, 1468, + -2, 1499, -1, 667, - 58, 974, - -2, 1333, + 58, 967, + -2, 1311, -1, 668, - 58, 978, - -2, 1372, + 58, 976, + -2, 1336, -1, 669, - 58, 989, - -2, 1432, + 58, 980, + -2, 1375, -1, 670, 58, 991, - -2, 1442, + -2, 1435, -1, 671, - 58, 979, - -2, 1447, + 58, 993, + -2, 1445, -1, 672, - 58, 987, - -2, 1451, + 58, 981, + -2, 1450, -1, 673, - 58, 968, - -2, 1452, - -1, 831, + 58, 989, + -2, 1454, + -1, 674, + 58, 970, + -2, 1455, + -1, 832, 1, 612, 60, 612, 481, 612, -2, 619, - -1, 971, + -1, 972, 21, 431, - -2, 811, - -1, 1018, - 124, 1130, - -2, 1128, - -1, 1020, - 124, 530, - -2, 1125, + -2, 813, + -1, 1019, + 124, 1133, + -2, 1131, -1, 1021, + 124, 530, + -2, 1128, + -1, 1022, 124, 531, - -2, 1126, - -1, 1231, + -2, 1129, + -1, 1232, 1, 613, 60, 613, 481, 613, -2, 619, - -1, 1319, - 58, 1032, - -2, 1449, -1, 1320, - 58, 1033, - -2, 1450, - -1, 1488, + 58, 1035, + -2, 1452, + -1, 1321, + 58, 1036, + -2, 1453, + -1, 1489, 56, 352, 59, 352, - -2, 717, - -1, 1808, + -2, 719, + -1, 1809, 79, 619, 120, 619, 156, 619, 159, 619, - -2, 665, - -1, 1810, - 260, 778, - -2, 759, - -1, 1840, + -2, 667, + -1, 1811, + 260, 780, + -2, 761, + -1, 1841, 56, 352, 59, 352, - -2, 718, - -1, 1917, + -2, 720, + -1, 1918, 79, 619, 120, 619, 156, 619, 159, 619, - -2, 666, - -1, 1945, - 260, 778, - -2, 760, - -1, 2342, + -2, 668, + -1, 1946, + 260, 780, + -2, 762, + -1, 2343, 59, 640, 60, 640, -2, 619, - -1, 2346, + -1, 2347, 59, 640, 60, 640, -2, 619, - -1, 2358, + -1, 2361, 59, 644, 60, 644, -2, 619, - -1, 2361, + -1, 2366, 59, 645, 60, 645, -2, 619, @@ -1145,403 +1145,589 @@ var yyExca = [...]int{ const yyPrivate = 57344 -const yyLast = 21365 +const yyLast = 21367 var yyAct = [...]int{ - 814, 1322, 2348, 2346, 2345, 2353, 2323, 806, 2192, 676, - 1982, 2312, 2272, 1279, 1957, 695, 2256, 2164, 2230, 2168, - 2145, 2257, 1905, 1913, 1215, 1980, 901, 599, 102, 1981, - 1802, 2152, 2005, 319, 325, 608, 325, 1323, 1275, 1903, - 367, 1861, 802, 366, 674, 1965, 1833, 1631, 866, 105, - 1464, 1946, 329, 1994, 836, 1491, 439, 809, 1964, 1627, - 549, 323, 22, 1854, 1872, 1864, 630, 538, 1503, 886, - 860, 395, 1274, 707, 63, 1876, 101, 1636, 1632, 1814, - 1704, 1194, 1189, 1000, 1694, 1712, 1566, 675, 1683, 1646, - 1238, 466, 1015, 440, 1642, 335, 1018, 1625, 1190, 551, - 1001, 102, 1010, 1406, 311, 1392, 63, 1009, 1529, 1310, - 685, 879, 863, 1261, 62, 1502, 861, 1466, 322, 15, - 845, 1237, 3, 1461, 1921, 1232, 320, 6, 321, 5, - 1191, 800, 816, 1321, 442, 824, 677, 444, 1324, 1336, - 623, 847, 397, 846, 447, 30, 312, 907, 1201, 468, - 883, 904, 1224, 792, 1221, 481, 805, 1277, 938, 820, - 22, 431, 315, 799, 1301, 853, 823, 394, 446, 1907, - 575, 520, 63, 337, 12, 7, 338, 30, 2237, 1208, - 4, 98, 1198, 2012, 1909, 1801, 811, 1003, 2209, 838, - 1973, 622, 324, 577, 591, 500, 97, 97, 609, 93, - 536, 2219, 1439, 97, 519, 27, 87, 69, 96, 445, - 1447, 1195, 1206, 2244, 568, 392, 569, 15, 2242, 97, + 815, 1323, 2349, 2355, 2347, 2346, 2324, 807, 2193, 677, + 1983, 2313, 2273, 1280, 1958, 696, 2257, 2165, 2231, 2169, + 2146, 2258, 1906, 1914, 1216, 1981, 902, 599, 102, 1982, + 1803, 2153, 2006, 319, 325, 608, 325, 1324, 1276, 1904, + 367, 1862, 803, 366, 675, 1966, 1834, 1632, 867, 105, + 1465, 1947, 329, 1995, 837, 1492, 439, 810, 1965, 1628, + 549, 323, 22, 1855, 1873, 1865, 631, 538, 1504, 887, + 861, 395, 1275, 708, 63, 1877, 101, 1637, 1633, 1815, + 1705, 1195, 1190, 1001, 1695, 1713, 1567, 676, 1684, 1647, + 1239, 466, 1016, 440, 1643, 335, 1019, 1626, 1191, 551, + 1002, 102, 1011, 1407, 311, 1393, 63, 1010, 1530, 1311, + 686, 880, 864, 1262, 62, 1503, 862, 1467, 322, 15, + 846, 1238, 3, 1462, 1922, 1233, 320, 6, 321, 5, + 1192, 801, 817, 1322, 442, 825, 678, 444, 1325, 1337, + 623, 848, 397, 312, 447, 30, 481, 908, 905, 468, + 884, 1202, 1225, 793, 1222, 939, 520, 1278, 821, 800, + 22, 431, 315, 824, 806, 1302, 854, 847, 446, 394, + 575, 12, 63, 337, 7, 2238, 338, 30, 1209, 1199, + 4, 1908, 98, 2013, 1910, 1802, 812, 1004, 96, 839, + 1974, 622, 324, 577, 1448, 2210, 97, 97, 500, 93, + 609, 1440, 1196, 519, 1207, 2220, 591, 536, 392, 445, + 568, 2245, 569, 869, 870, 2243, 1464, 15, 562, 563, 97, 465, 27, 87, 69, 6, 97, 5, 327, 97, - 310, 27, 87, 69, 97, 92, 27, 87, 69, 432, - 578, 757, 81, 30, 94, 94, 402, 1592, 868, 869, - 793, 94, 797, 1463, 754, 562, 563, 1453, 777, 416, - 452, 451, 453, 51, 2260, 2261, 849, 94, 94, 332, - 808, 517, 513, 2098, 756, 560, 796, 94, 559, 562, - 563, 2234, 94, 2003, 2006, 2007, 2008, 2009, 1803, 2101, - 450, 1619, 1620, 2015, 1621, 810, 1462, 1434, 484, 475, - 2167, 1797, 880, 1822, 1202, 417, 508, 1829, 1657, 1978, - 1655, 583, 1647, 474, 2073, 1613, 1222, 1991, 1860, 1859, - 584, 504, 334, 473, 1962, 515, 516, 325, 1611, 102, - 514, 1444, 876, 788, 509, 88, 89, 455, 90, 91, - 503, 2076, 2218, 1975, 1534, 1314, 1315, 363, 2246, 2270, - 364, 470, 472, 448, 444, 471, 326, 1652, 1653, 418, - 2067, 795, 2339, 2354, 1651, 2279, 2190, 2191, 363, 2194, - 2194, 364, 1654, 2241, 1469, 368, 2286, 491, 2216, 2166, - 2259, 484, 2061, 2333, 68, 2052, 95, 2030, 2029, 365, - 63, 63, 446, 2200, 395, 2248, 2249, 1313, 1314, 1315, - 1475, 68, 86, 95, 85, 49, 587, 449, 1311, 558, - 557, 2221, 2222, 570, 1207, 1567, 511, 506, 2355, 2349, - 493, 85, 80, 79, 2324, 561, 2018, 467, 495, 507, - 510, 537, 539, 445, 440, 440, 440, 333, 2096, 603, - 603, 576, 525, 512, 540, 541, 500, 543, 1440, 794, - 542, 505, 1649, 1288, 2315, 1199, 325, 626, 626, 454, - 818, 30, 30, 486, 485, 546, 1616, 605, 544, 443, - 759, 328, 2153, 2154, 2155, 2157, 2156, 1640, 1522, 477, - 478, 601, 601, 1856, 1855, 82, 83, 1284, 775, 1477, - 1478, 1479, 1480, 2056, 625, 625, 581, 553, 1286, 1285, - 603, 871, 603, 474, 565, 566, 760, 492, 389, 390, - 391, 579, 580, 807, 872, 1283, 408, 611, 59, 489, - 870, 311, 84, 586, 60, 420, 421, 2321, 755, 2276, - 1843, 562, 563, 408, 1668, 1622, 562, 563, 1531, 1492, - 63, 603, 554, 1442, 831, 1441, 486, 485, 395, 2247, - 784, 837, 1433, 63, 2165, 102, 827, 1483, 1533, 1428, - 1253, 813, 63, 2316, 817, 1213, 522, 2220, 2130, 854, - 854, 1196, 1185, 61, 2024, 603, 102, 524, 1196, 1648, - 479, 1658, 1828, 2074, 1614, 1637, 1640, 1196, 499, 440, - 852, 603, 881, 410, 1906, 1641, 409, 1209, 2054, 919, - 804, 1197, 2053, 842, 819, 1974, 763, 783, 895, 548, - 410, 1312, 832, 409, 1979, 780, 603, 779, 900, 102, - 102, 70, 70, 1650, 30, 1448, 916, 786, 70, 887, - 1468, 597, 598, 30, 905, 887, 887, 826, 856, 585, - 840, 607, 766, 761, 70, 70, 903, 310, 621, 752, - 564, 70, 610, 567, 70, 494, 801, 843, 844, 70, - 875, 789, 487, 782, 781, 920, 469, 902, 902, 778, - 906, 762, 798, 594, 595, 596, 1484, 803, 894, 1472, - 1473, 973, 956, 877, 2313, 2314, 443, 573, 574, 882, - 2057, 2058, 1610, 1471, 812, 1672, 423, 825, 1608, 384, - 592, 770, 771, 552, 1641, 848, 2310, 1326, 1325, 1634, - 1193, 593, 899, 1635, 1638, 834, 833, 972, 614, 615, - 616, 617, 618, 619, 620, 980, 458, 463, 464, 555, - 2299, 825, 1465, 857, 2204, 855, 2104, 1681, 590, 1617, - 859, 858, 1609, 841, 982, 425, 424, 1399, 892, 893, - 878, 1430, 1290, 971, 476, 850, 851, 1007, 1007, 1012, - 1192, 1397, 1398, 1396, 1772, 1639, 422, 1407, 974, 975, - 976, 977, 801, 1407, 897, 1572, 1554, 1020, 387, 898, - 896, 2131, 2133, 2134, 2135, 2132, 1761, 774, 837, 889, - 890, 891, 603, 1331, 445, 773, 1459, 978, 957, 958, - 959, 960, 961, 962, 963, 956, 822, 996, 2047, 589, - 1216, 1217, 912, 1021, 1898, 2063, 386, 946, 556, 102, - 102, 1553, 913, 914, 915, 912, 383, 382, 915, 912, - 446, 1774, 2062, 102, 1239, 959, 960, 961, 962, 963, - 956, 63, 1187, 913, 914, 915, 912, 377, 1818, 319, - 1813, 1897, 2332, 913, 914, 915, 912, 1255, 426, 1006, - 905, 913, 914, 915, 912, 2344, 419, 1218, 1220, 2329, - 2296, 445, 990, 913, 914, 915, 912, 1243, 2141, 2139, - 2137, 1235, 2280, 1334, 2127, 460, 461, 462, 1976, 2178, - 1826, 380, 2331, 1335, 2175, 603, 906, 2174, 2147, 2125, - 999, 923, 924, 925, 926, 927, 928, 929, 921, 626, - 375, 102, 30, 2140, 2138, 2136, 1280, 1212, 1306, 2126, - 1308, 1019, 2124, 1977, 1184, 1827, 2123, 887, 887, 887, - 1183, 2120, 1013, 1575, 1014, 2114, 1574, 1295, 1332, 1333, - 2111, 1282, 381, 2110, 1188, 1247, 625, 2269, 2013, 1999, - 1302, 1303, 1304, 1305, 1211, 1998, 1233, 1997, 1577, 913, - 914, 915, 912, 1993, 376, 2252, 1992, 1825, 1249, 1287, - 1251, 1656, 1329, 996, 1227, 1604, 764, 913, 914, 915, - 912, 1300, 1281, 1643, 2146, 1371, 828, 829, 830, 1316, - 1914, 2235, 2198, 1416, 1252, 1250, 848, 2197, 1248, 1380, + 310, 27, 87, 69, 97, 92, 27, 87, 69, 1454, + 578, 758, 81, 30, 94, 94, 97, 416, 27, 87, + 69, 97, 432, 513, 755, 794, 850, 798, 809, 1463, + 452, 451, 453, 51, 2261, 2262, 517, 2235, 94, 2004, + 1620, 402, 2099, 1621, 757, 1622, 2102, 94, 811, 1593, + 2016, 797, 94, 560, 778, 1804, 559, 562, 563, 1435, + 450, 475, 881, 2168, 94, 2007, 2008, 2009, 2010, 94, + 484, 1798, 789, 508, 1823, 1203, 417, 1658, 1979, 1656, + 1830, 583, 1648, 474, 2074, 1614, 1223, 1992, 1612, 334, + 584, 504, 877, 473, 1861, 1860, 1963, 325, 514, 102, + 1445, 509, 2077, 332, 503, 88, 89, 455, 90, 91, + 515, 516, 1976, 2271, 2247, 326, 2219, 363, 2068, 2340, + 364, 470, 472, 448, 444, 471, 1653, 1654, 363, 2356, + 418, 364, 2280, 2242, 1652, 2195, 796, 1314, 1315, 1316, + 2287, 1655, 2217, 365, 368, 1470, 2334, 491, 1312, 2167, + 2260, 484, 2053, 1535, 1315, 1316, 2191, 2192, 2062, 2195, + 63, 63, 446, 2031, 395, 2154, 2155, 2156, 2158, 2157, + 2030, 68, 86, 95, 2201, 49, 1208, 449, 1476, 570, + 68, 587, 95, 2057, 506, 2222, 2223, 2249, 2250, 558, + 557, 85, 80, 79, 512, 561, 507, 510, 495, 511, + 85, 493, 2357, 445, 440, 440, 440, 2325, 537, 603, + 603, 2351, 525, 2019, 540, 541, 467, 543, 505, 1568, + 539, 333, 1650, 2363, 795, 2097, 325, 626, 626, 454, + 576, 30, 30, 1441, 819, 486, 485, 605, 443, 1289, + 760, 1478, 1479, 1480, 1481, 1200, 542, 2316, 1617, 477, + 478, 601, 601, 500, 544, 82, 83, 328, 776, 389, + 390, 391, 1857, 1856, 625, 625, 546, 553, 1287, 1286, + 603, 1523, 603, 474, 565, 566, 761, 492, 2131, 1285, + 581, 872, 873, 808, 579, 580, 1284, 611, 59, 489, + 871, 311, 84, 586, 60, 421, 420, 2322, 756, 562, + 563, 2277, 1844, 562, 563, 1641, 458, 463, 464, 1669, + 63, 603, 1623, 423, 832, 2248, 486, 485, 395, 1532, + 785, 838, 1493, 63, 2166, 102, 828, 524, 1443, 2350, + 1442, 814, 63, 1434, 818, 1429, 554, 1254, 522, 855, + 855, 2221, 1214, 61, 1197, 603, 102, 1197, 1197, 1649, + 1659, 1313, 882, 2075, 1615, 479, 2317, 1186, 920, 440, + 853, 603, 425, 424, 764, 2055, 1210, 1534, 1198, 2054, + 805, 607, 548, 843, 820, 1975, 1907, 784, 896, 1449, + 2058, 2059, 833, 1980, 2362, 781, 603, 780, 901, 102, + 102, 70, 70, 1651, 30, 499, 917, 787, 762, 888, + 790, 1469, 610, 30, 906, 888, 888, 827, 857, 585, + 841, 487, 767, 597, 598, 70, 904, 310, 621, 753, + 876, 70, 494, 1642, 70, 469, 1829, 844, 845, 70, + 783, 895, 957, 782, 802, 921, 1673, 903, 903, 779, + 907, 70, 799, 763, 1609, 564, 70, 804, 567, 813, + 1473, 1474, 974, 878, 1611, 443, 594, 595, 596, 883, + 1327, 1326, 1194, 592, 1472, 460, 461, 462, 552, 2311, + 384, 2300, 555, 1466, 593, 826, 590, 2314, 2315, 2205, + 2105, 413, 900, 771, 772, 1682, 834, 835, 973, 1618, + 408, 2132, 2134, 2135, 2136, 2133, 981, 1638, 1641, 849, + 1431, 1773, 858, 408, 1610, 1408, 856, 1291, 859, 826, + 476, 860, 1193, 842, 1460, 983, 916, 913, 893, 894, + 879, 573, 574, 408, 972, 851, 852, 422, 1008, 1008, + 1013, 1484, 1408, 823, 1573, 897, 387, 913, 2048, 975, + 976, 977, 978, 898, 2025, 899, 1332, 589, 1021, 2064, + 802, 2063, 614, 615, 616, 617, 618, 619, 620, 838, + 1400, 556, 1819, 603, 1814, 445, 2345, 410, 979, 775, + 409, 890, 891, 892, 1398, 1399, 1397, 774, 997, 2330, + 410, 1644, 2142, 409, 1022, 947, 2297, 386, 2140, 2333, + 102, 102, 2281, 914, 915, 916, 913, 383, 382, 2138, + 410, 446, 1775, 409, 102, 1240, 960, 961, 962, 963, + 964, 957, 63, 1188, 1899, 2179, 1642, 2141, 377, 426, + 319, 1635, 2254, 2139, 419, 1636, 1639, 1555, 1256, 2332, + 1007, 906, 2361, 2128, 2137, 407, 2176, 2175, 1219, 1221, + 991, 2148, 445, 411, 914, 915, 916, 913, 1244, 1977, + 1485, 1898, 1236, 958, 959, 960, 961, 962, 963, 964, + 957, 2270, 380, 2126, 2125, 2124, 603, 907, 2127, 1827, + 2121, 1000, 1554, 914, 915, 916, 913, 1640, 2115, 2112, + 626, 375, 102, 30, 1978, 2111, 1185, 1281, 1014, 1307, + 1015, 1309, 1020, 1335, 914, 915, 916, 913, 888, 888, + 888, 1184, 1576, 1336, 1828, 1575, 2014, 2000, 1296, 1333, + 1334, 1999, 1283, 381, 1998, 1189, 1248, 625, 1994, 1993, + 1826, 1303, 1304, 1305, 1306, 1657, 1605, 1234, 914, 915, + 916, 913, 765, 2253, 2147, 376, 829, 830, 831, 1250, + 1288, 1252, 1915, 1330, 997, 1217, 1218, 2236, 1228, 2199, + 2338, 363, 1301, 1282, 364, 2198, 1372, 2186, 2174, 2129, + 1317, 2122, 2118, 1251, 1417, 1253, 1249, 2117, 2116, 2076, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, - 1391, 1257, 1256, 2330, 1401, 1402, 385, 2185, 2358, 1408, - 1777, 1411, 2173, 2128, 1727, 913, 914, 915, 912, 2121, - 2117, 2116, 1244, 1245, 1246, 2115, 2075, 2049, 1541, 1418, - 1291, 1292, 1293, 2014, 2010, 1751, 1748, 1749, 1750, 1299, - 1995, 1782, 2307, 1781, 1780, 1778, 1400, 2337, 1912, 955, - 954, 964, 965, 957, 958, 959, 960, 961, 962, 963, - 956, 1327, 1328, 363, 1330, 1910, 364, 1394, 1836, 1824, - 1366, 1367, 1368, 1369, 1370, 1823, 1820, 1376, 1377, 1378, - 1379, 913, 914, 915, 912, 1799, 1790, 1298, 955, 954, - 964, 965, 957, 958, 959, 960, 961, 962, 963, 956, - 2253, 1645, 1615, 1779, 1525, 1660, 1451, 1410, 1412, 1413, - 1715, 1421, 1409, 913, 914, 915, 912, 1417, 1210, 1419, - 723, 722, 913, 914, 915, 912, 1420, 1734, 1738, 1740, - 1742, 1744, 1745, 1747, 992, 1751, 1748, 1749, 1750, 953, - 2171, 1729, 1730, 1731, 1732, 1713, 1714, 1735, 952, 1716, - 765, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, - 1726, 1733, 913, 914, 915, 912, 821, 1537, 2363, 1737, - 1739, 1741, 1743, 1746, 1581, 2094, 1435, 1537, 1580, 1422, - 370, 371, 372, 373, 2357, 2356, 603, 2225, 603, 2224, - 603, 1204, 2340, 369, 2205, 474, 413, 913, 914, 915, - 912, 2072, 2089, 1728, 1456, 1449, 964, 965, 957, 958, - 959, 960, 961, 962, 963, 956, 603, 2336, 2335, 1783, - 1784, 1204, 2327, 913, 914, 915, 912, 1488, 1204, 2326, - 1445, 2085, 2000, 1494, 613, 2275, 2274, 2084, 408, 1454, - 1455, 1901, 817, 1884, 1499, 1899, 2078, 2267, 839, 474, - 102, 102, 102, 102, 913, 914, 915, 912, 1896, 1504, - 1883, 474, 102, 1519, 1888, 913, 914, 915, 912, 1458, - 1853, 1504, 1446, 2078, 2262, 1486, 1837, 2305, 1808, 603, - 1482, 1792, 913, 914, 915, 912, 1693, 102, 102, 1297, - 2250, 1271, 22, 954, 964, 965, 957, 958, 959, 960, - 961, 962, 963, 956, 63, 1520, 2239, 2238, 1673, 1438, - 2078, 2214, 1584, 1436, 1582, 410, 1280, 1443, 409, 1705, - 1706, 839, 1542, 955, 954, 964, 965, 957, 958, 959, - 960, 961, 962, 963, 956, 1527, 1528, 1457, 1579, 1496, - 1578, 1497, 801, 2078, 2213, 1576, 1233, 1481, 1487, 15, - 407, 1474, 1538, 1493, 1546, 1539, 1540, 6, 411, 5, - 1882, 1523, 1543, 1498, 1680, 1501, 1505, 1506, 1507, 1508, - 1500, 1536, 825, 1516, 1518, 30, 1517, 2078, 2212, 2078, - 2211, 1521, 913, 914, 915, 912, 1415, 1561, 2203, 2202, - 1789, 1414, 1526, 612, 1548, 1549, 1550, 1551, 1552, 790, - 1556, 2093, 2092, 498, 1557, 1558, 1559, 1560, 2091, 2090, - 2298, 1532, 913, 914, 915, 912, 1771, 1007, 1535, 1596, - 1007, 1765, 1736, 1599, 2087, 2088, 1537, 1495, 2087, 2086, - 603, 1439, 1569, 1564, 1565, 1573, 1423, 1602, 913, 914, - 915, 912, 1226, 913, 914, 915, 912, 1764, 1585, 1242, - 2083, 474, 887, 2078, 2077, 2359, 1900, 1667, 887, 971, - 1490, 1630, 1537, 1766, 1537, 1752, 1225, 102, 1809, 913, - 914, 915, 912, 1603, 1793, 1563, 474, 1593, 1537, 1545, - 102, 1239, 1586, 1671, 1591, 1489, 1630, 1537, 1544, 63, - 1598, 1271, 1562, 1242, 1437, 1432, 1431, 1394, 910, 1571, - 445, 1595, 955, 954, 964, 965, 957, 958, 959, 960, - 961, 962, 963, 956, 1588, 1661, 1600, 1270, 1612, 1594, - 1601, 1587, 1697, 1662, 1663, 1664, 1607, 1597, 1606, 1490, - 404, 1768, 406, 416, 1426, 1425, 791, 403, 401, 400, - 412, 405, 908, 414, 415, 1242, 1241, 1204, 1203, 500, - 1669, 1271, 955, 954, 964, 965, 957, 958, 959, 960, - 961, 962, 963, 956, 1429, 1699, 603, 1404, 1666, 1297, - 1692, 1670, 603, 1665, 497, 1753, 768, 767, 498, 1583, - 500, 1678, 1759, 1760, 1195, 1677, 1688, 1763, 1676, 396, - 1214, 97, 1186, 1785, 87, 69, 603, 1762, 547, 1787, - 1773, 97, 588, 2309, 2303, 1786, 2287, 102, 601, 913, - 914, 915, 912, 1697, 601, 102, 2284, 2282, 1788, 913, - 914, 915, 912, 2177, 1812, 1770, 955, 954, 964, 965, - 957, 958, 959, 960, 961, 962, 963, 956, 2162, 94, - 1767, 2150, 2148, 2143, 2105, 1769, 1863, 2070, 2069, 94, - 1776, 2068, 2065, 603, 603, 1798, 2060, 2045, 102, 1840, - 550, 1758, 1791, 1807, 1873, 2066, 1794, 1757, 1865, 1877, - 1880, 474, 1870, 1869, 1949, 1806, 1674, 1675, 1795, 1796, - 1832, 1504, 1679, 913, 914, 915, 912, 63, 1852, 913, - 914, 915, 912, 1849, 1816, 601, 1834, 1691, 1831, 1819, - 1811, 1810, 1395, 1815, 94, 1815, 1280, 1817, 1952, 887, - 1845, 1756, 1848, 444, 1947, 1850, 1485, 1842, 1460, 1960, - 1961, 1424, 1289, 1851, 1240, 1948, 998, 997, 1839, 1838, - 1755, 995, 994, 913, 914, 915, 912, 993, 991, 1846, - 939, 1847, 350, 988, 349, 353, 345, 1867, 1868, 987, - 1568, 985, 913, 914, 915, 912, 984, 983, 341, 1953, - 1857, 1871, 981, 951, 1875, 950, 949, 948, 360, 947, - 1866, 955, 954, 964, 965, 957, 958, 959, 960, 961, - 962, 963, 956, 945, 944, 943, 1874, 942, 941, 1885, - 2343, 940, 937, 936, 363, 935, 934, 364, 933, 932, - 474, 1918, 1887, 931, 1966, 1968, 1754, 1966, 1966, 1889, - 1630, 930, 1891, 787, 1893, 1878, 758, 1881, 502, 1684, - 1685, 887, 474, 1229, 490, 1886, 2292, 2290, 913, 914, - 915, 912, 2258, 1687, 1890, 1476, 1892, 1894, 1895, 1702, - 837, 1296, 501, 1959, 1690, 1633, 1513, 1972, 1963, 1841, - 1967, 1514, 1511, 1902, 1689, 1701, 1844, 1512, 1915, 1943, - 1510, 913, 914, 915, 912, 1969, 1970, 1509, 1427, 1234, - 1955, 1988, 1515, 1450, 1267, 1268, 1971, 913, 914, 915, - 912, 1216, 1217, 1624, 2227, 1985, 1842, 521, 50, 29, - 28, 1223, 1954, 1956, 1989, 955, 954, 964, 965, 957, - 958, 959, 960, 961, 962, 963, 956, 496, 2016, 1623, - 2020, 1700, 1273, 835, 1996, 1403, 1326, 1325, 572, 307, - 308, 309, 571, 343, 342, 346, 2001, 533, 534, 531, - 532, 348, 1182, 913, 914, 915, 912, 913, 914, 915, - 912, 529, 530, 352, 603, 1263, 1266, 1267, 1268, 1264, - 523, 1265, 1269, 102, 2304, 1962, 2182, 344, 527, 528, - 2021, 2022, 1968, 2025, 2026, 2027, 2028, 1950, 2023, 2031, + 1391, 1392, 1258, 1257, 2050, 1402, 1403, 385, 2015, 2011, + 1409, 849, 1412, 1996, 1913, 1728, 914, 915, 916, 913, + 1911, 1837, 1825, 1245, 1246, 1247, 1778, 1824, 1821, 1800, + 1419, 1292, 1293, 1294, 1791, 404, 1646, 406, 416, 1616, + 1300, 1526, 403, 401, 400, 412, 405, 1401, 414, 415, + 1950, 1752, 1749, 1750, 1751, 2226, 1452, 1783, 1422, 1782, + 1781, 1779, 1328, 1329, 1211, 1331, 724, 723, 1395, 993, + 954, 1367, 1368, 1369, 1370, 1371, 953, 766, 1377, 1378, + 1379, 1380, 2172, 1661, 1953, 822, 1538, 2369, 1299, 2225, + 1948, 2206, 2095, 2090, 396, 1961, 1962, 1538, 2368, 2073, + 2086, 1949, 2085, 1213, 914, 915, 916, 913, 1411, 1413, + 1414, 1716, 1902, 1410, 914, 915, 916, 913, 1418, 1780, + 1420, 914, 915, 916, 913, 1762, 1900, 1421, 1735, 1739, + 1741, 1743, 1745, 1746, 1748, 1954, 1752, 1749, 1750, 1751, + 1212, 2299, 1730, 1731, 1732, 1733, 1714, 1715, 1736, 1897, + 1717, 1889, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, + 1726, 1727, 1734, 914, 915, 916, 913, 2360, 2359, 1854, + 1738, 1740, 1742, 1744, 1747, 2001, 1838, 1436, 1205, 2341, + 1423, 1809, 914, 915, 916, 913, 1793, 603, 1694, 603, + 1674, 603, 914, 915, 916, 913, 474, 914, 915, 916, + 913, 1885, 2337, 2336, 1729, 1457, 1450, 965, 966, 958, + 959, 960, 961, 962, 963, 964, 957, 603, 1585, 1960, + 1583, 1634, 1580, 914, 915, 916, 913, 1579, 1489, 1205, + 2328, 1446, 1577, 1884, 1495, 1784, 1785, 1205, 2327, 840, + 1455, 1456, 1547, 818, 1582, 1500, 1956, 1538, 1581, 840, + 474, 102, 102, 102, 102, 914, 915, 916, 913, 1578, + 1505, 1883, 474, 102, 1520, 2276, 2275, 1544, 1955, 1957, + 1459, 1537, 1505, 1447, 2079, 2268, 1487, 2079, 2263, 1542, + 603, 1483, 1272, 914, 915, 916, 913, 1522, 102, 102, + 1298, 2251, 1681, 22, 955, 965, 966, 958, 959, 960, + 961, 962, 963, 964, 957, 63, 1521, 2240, 2239, 1416, + 1439, 2079, 2215, 1415, 1437, 2079, 2214, 1281, 1444, 1668, + 1706, 1707, 1491, 1543, 2079, 2213, 914, 915, 916, 913, + 612, 1963, 914, 915, 916, 913, 1528, 1529, 1458, 1227, + 1497, 1538, 1498, 1951, 2079, 2212, 1271, 1234, 1482, 1488, + 15, 802, 1475, 1539, 1494, 791, 1540, 1541, 6, 498, + 5, 1790, 1524, 1226, 1499, 1440, 1502, 1506, 1507, 1508, + 1509, 1501, 2204, 2203, 1517, 1519, 30, 1518, 2094, 2093, + 1272, 826, 1424, 914, 915, 916, 913, 1810, 1562, 2092, + 2091, 1772, 1794, 1527, 1587, 1549, 1550, 1551, 1552, 1553, + 1272, 1557, 2088, 2089, 1490, 1558, 1559, 1560, 1561, 2088, + 2087, 500, 1533, 914, 915, 916, 913, 911, 1008, 1536, + 1597, 1008, 1430, 1737, 1600, 1243, 2084, 1405, 1496, 2079, + 2078, 603, 1298, 1570, 1565, 1566, 1574, 1196, 1603, 924, + 925, 926, 927, 928, 929, 930, 922, 1766, 1491, 1586, + 1538, 1767, 474, 888, 1538, 1753, 2358, 2331, 1215, 888, + 972, 909, 1631, 1538, 1546, 1538, 1545, 1187, 102, 914, + 915, 916, 913, 547, 1604, 588, 1564, 474, 1594, 1243, + 1438, 102, 1240, 2310, 1672, 1592, 2304, 1631, 497, 2308, + 63, 1599, 498, 1563, 1433, 1432, 1427, 1426, 1395, 97, + 1572, 445, 1596, 956, 955, 965, 966, 958, 959, 960, + 961, 962, 963, 964, 957, 1589, 1662, 1601, 2288, 1613, + 1595, 1602, 1588, 1698, 1663, 1664, 1665, 1608, 1598, 1607, + 1243, 1242, 968, 2285, 971, 956, 955, 965, 966, 958, + 959, 960, 961, 962, 963, 964, 957, 94, 969, 970, + 967, 1670, 956, 955, 965, 966, 958, 959, 960, 961, + 962, 963, 964, 957, 1205, 1204, 1700, 603, 1765, 1667, + 2283, 1693, 1671, 603, 1666, 2178, 1754, 769, 768, 2067, + 1764, 2306, 1679, 1760, 1761, 2163, 1678, 1689, 1763, 1677, + 914, 915, 916, 913, 1786, 792, 1230, 603, 1759, 2151, + 1788, 1774, 914, 915, 916, 913, 1787, 2149, 102, 601, + 914, 915, 916, 913, 1698, 601, 102, 2144, 2106, 1789, + 914, 915, 916, 913, 1864, 1813, 1771, 956, 955, 965, + 966, 958, 959, 960, 961, 962, 963, 964, 957, 500, + 2071, 1768, 2070, 2069, 2066, 2061, 1770, 2046, 550, 1874, + 1866, 1777, 1878, 1881, 603, 603, 1799, 1871, 1870, 102, + 1841, 1850, 1758, 1792, 1808, 1832, 490, 1795, 1757, 1820, + 1396, 97, 474, 94, 87, 69, 1807, 1675, 1676, 1796, + 1797, 1833, 1505, 1680, 914, 915, 916, 913, 63, 1853, + 914, 915, 916, 913, 1486, 1817, 601, 1835, 1692, 1461, + 1425, 1812, 1811, 1290, 1816, 1241, 1816, 1281, 1818, 1756, + 888, 1846, 999, 1849, 444, 998, 1851, 996, 1843, 94, + 995, 994, 992, 940, 1852, 989, 1901, 988, 1755, 1840, + 1839, 914, 915, 916, 913, 986, 985, 984, 982, 952, + 1847, 951, 1848, 350, 950, 349, 353, 345, 1868, 1869, + 914, 915, 916, 913, 949, 948, 946, 945, 944, 341, + 943, 1858, 1872, 942, 941, 1876, 938, 937, 936, 360, + 935, 1867, 956, 955, 965, 966, 958, 959, 960, 961, + 962, 963, 964, 957, 934, 933, 932, 1875, 931, 788, + 1886, 2293, 759, 502, 2291, 363, 1685, 1686, 364, 2259, + 1688, 474, 1919, 1888, 1477, 1967, 1969, 1703, 1967, 1967, + 1890, 1631, 1297, 1892, 501, 1894, 1879, 1691, 1882, 1514, + 1702, 1690, 888, 474, 1515, 2344, 1887, 1511, 1512, 914, + 915, 916, 913, 1513, 1510, 1891, 1428, 1893, 1895, 1896, + 1701, 838, 914, 915, 916, 913, 1404, 1235, 1973, 1964, + 1842, 1968, 1451, 1516, 1903, 1268, 1269, 1845, 521, 1916, + 1944, 1625, 914, 915, 916, 913, 1970, 1971, 914, 915, + 916, 913, 1989, 1217, 1218, 1769, 1224, 1972, 50, 370, + 371, 372, 373, 496, 2017, 1624, 1986, 1843, 1274, 836, + 29, 2228, 369, 1327, 1326, 1990, 956, 955, 965, 966, + 958, 959, 960, 961, 962, 963, 964, 957, 28, 307, + 572, 2021, 533, 534, 1259, 1997, 1264, 1267, 1268, 1269, + 1265, 308, 1266, 1270, 343, 342, 346, 2002, 531, 532, + 529, 530, 348, 613, 1264, 1267, 1268, 1269, 1265, 309, + 1266, 1270, 527, 528, 352, 603, 571, 370, 371, 372, + 373, 1183, 523, 2305, 102, 2183, 2181, 2109, 344, 2107, + 369, 2022, 2023, 1969, 2026, 2027, 2028, 2029, 2104, 2024, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, - 2042, 2043, 2044, 1963, 2048, 2180, 1834, 2046, 2108, 2106, - 2050, 370, 371, 372, 373, 2103, 2102, 839, 2100, 1911, - 1805, 2064, 1258, 1804, 369, 1695, 1696, 2071, 526, 369, - 1530, 2080, 2109, 1605, 2079, 2081, 1547, 2082, 1986, 1987, - 444, 488, 1263, 1266, 1267, 1268, 1264, 2099, 1265, 1269, - 2294, 2293, 2293, 2294, 2142, 873, 1272, 398, 35, 1, - 1200, 1821, 1659, 1644, 347, 351, 354, 545, 355, 356, - 388, 1372, 357, 358, 359, 535, 474, 361, 362, 474, - 474, 474, 2122, 772, 2112, 2113, 457, 483, 2107, 474, - 2118, 2119, 769, 1280, 482, 480, 1405, 1337, 708, 1002, - 63, 2151, 1008, 2144, 2159, 2160, 2161, 2226, 2271, 2158, - 2176, 2229, 785, 694, 2170, 2095, 2187, 1618, 2169, 2002, - 2097, 2004, 1452, 603, 603, 1904, 1205, 518, 2172, 1589, - 1590, 720, 711, 986, 2181, 713, 2183, 2184, 2179, 753, - 2188, 459, 710, 1830, 1470, 374, 456, 399, 1990, 1800, - 2195, 2196, 1858, 1879, 102, 1862, 2352, 2342, 2322, 2302, - 2193, 474, 2338, 2240, 2285, 601, 601, 2278, 2189, 2017, - 339, 874, 582, 474, 429, 2163, 340, 2217, 2149, 378, - 2201, 1228, 379, 1231, 1230, 1317, 2210, 922, 2233, 1393, - 989, 979, 628, 1570, 684, 678, 2206, 1467, 2215, 1958, - 1524, 34, 902, 2232, 33, 32, 2223, 911, 1016, 709, - 104, 1254, 1017, 2186, 2011, 2231, 2236, 693, 692, 691, - 690, 689, 1262, 2243, 2245, 1260, 1259, 865, 864, 909, - 2255, 2254, 2207, 2208, 2251, 967, 1908, 970, 2059, 2129, - 2055, 2263, 2264, 2265, 2266, 2051, 2199, 2273, 1917, 1916, - 2277, 968, 969, 966, 1944, 955, 954, 964, 965, 957, - 958, 959, 960, 961, 962, 963, 956, 1945, 1951, 1711, - 1707, 1709, 1710, 1708, 1775, 1703, 1628, 1629, 1626, 2268, - 1686, 2288, 1682, 1004, 2291, 1011, 2233, 2301, 2289, 815, - 99, 862, 2295, 474, 2297, 474, 1984, 2281, 11, 2283, - 2306, 2232, 2308, 807, 2300, 807, 10, 776, 9, 14, - 21, 20, 19, 58, 57, 56, 2317, 55, 2273, 18, - 474, 2318, 8, 2325, 54, 53, 52, 2328, 17, 16, - 807, 47, 2334, 48, 45, 44, 43, 42, 41, 40, - 39, 46, 2311, 38, 37, 36, 67, 2320, 66, 65, - 64, 23, 24, 2341, 25, 26, 77, 76, 78, 2351, - 74, 2350, 72, 75, 73, 71, 31, 13, 2, 0, - 0, 2362, 2361, 2360, 2351, 1128, 1170, 0, 0, 1116, - 0, 1078, 1130, 1052, 1067, 1138, 1068, 1069, 1103, 1031, - 1087, 229, 1065, 0, 1119, 1023, 1055, 1056, 1025, 1062, - 1026, 1053, 1080, 174, 1051, 1090, 199, 1136, 0, 0, - 258, 213, 0, 0, 1083, 1121, 1085, 1108, 1077, 1104, - 1039, 1097, 1131, 1066, 1101, 1132, 0, 0, 0, 0, - 0, 828, 829, 830, 0, 0, 0, 0, 156, 0, - 0, 0, 0, 0, 1100, 1125, 1064, 0, 159, 1129, - 1084, 1102, 0, 0, 1024, 1098, 0, 1029, 1032, 1137, - 1123, 1059, 1060, 0, 0, 0, 0, 0, 0, 0, - 1081, 1086, 1105, 1074, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1057, 0, 1094, 0, 0, 0, 1034, - 1030, 0, 1079, 0, 148, 263, 277, 157, 254, 290, - 162, 261, 153, 228, 250, 0, 1169, 150, 275, 260, - 210, 193, 194, 149, 0, 245, 172, 185, 169, 226, - 0, 1127, 302, 168, 293, 1033, 285, 152, 1164, 284, - 225, 272, 276, 211, 205, 151, 274, 209, 204, 197, - 176, 189, 237, 203, 238, 190, 215, 214, 216, 1148, - 1149, 1150, 1151, 1152, 1160, 1161, 0, 1165, 1166, 1167, - 1038, 0, 1058, 1106, 0, 1022, 1114, 1122, 1076, 287, - 1124, 1073, 1072, 1155, 0, 1154, 262, 1156, 1157, 198, - 1120, 1054, 1063, 303, 1061, 248, 231, 1126, 1093, 1168, - 246, 201, 273, 239, 278, 264, 286, 242, 240, 144, - 265, 171, 212, 154, 155, 167, 173, 175, 177, 178, - 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, - 164, 187, 165, 145, 255, 166, 146, 235, 271, 1153, - 183, 243, 208, 147, 207, 236, 270, 269, 294, 300, - 301, 305, 0, 306, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1162, 0, 1163, 299, 181, - 142, 282, 0, 227, 1117, 1027, 1037, 1035, 1070, 1095, - 1096, 223, 298, 1110, 1113, 1111, 1139, 251, 0, 0, - 0, 0, 0, 192, 233, 0, 252, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1028, 0, 259, - 280, 292, 1171, 1172, 1173, 1174, 0, 1175, 1176, 1177, - 1178, 1179, 1180, 1181, 283, 1071, 1045, 1082, 291, 1048, - 1046, 1109, 1047, 1099, 1141, 217, 218, 219, 220, 184, - 0, 161, 1091, 1075, 1142, 1143, 1144, 1145, 1146, 1147, - 1050, 304, 180, 186, 0, 188, 160, 232, 182, 289, - 195, 1115, 224, 191, 256, 196, 202, 244, 288, 230, - 249, 158, 279, 257, 206, 1044, 1049, 1043, 1088, 1089, - 1133, 1134, 1135, 1107, 1036, 1118, 1040, 1042, 1041, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1112, 0, - 1092, 143, 0, 200, 1140, 241, 179, 716, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, - 0, 0, 0, 0, 0, 686, 0, 0, 0, 174, - 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, - 0, 0, 731, 737, 1158, 1159, 295, 296, 297, 281, - 0, 0, 0, 679, 0, 0, 0, 629, 723, 722, - 696, 705, 0, 0, 156, 697, 0, 704, 698, 702, - 701, 699, 700, 0, 666, 0, 0, 0, 0, 0, - 0, 627, 683, 0, 687, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 680, 681, 0, 0, 0, - 0, 717, 0, 682, 0, 0, 719, 0, 706, 0, - 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, - 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, - 0, 245, 172, 185, 169, 226, 703, 715, 672, 168, - 670, 714, 285, 152, 0, 284, 225, 272, 276, 211, - 205, 151, 274, 209, 204, 197, 176, 189, 237, 203, - 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, + 2042, 2043, 2044, 2045, 1964, 2049, 2103, 1835, 2047, 2101, + 1912, 2051, 1806, 1805, 1697, 526, 369, 1696, 1531, 840, + 2295, 2294, 2065, 1606, 1548, 488, 2294, 2295, 2072, 874, + 1273, 398, 2081, 2110, 35, 2080, 2082, 1, 2083, 1987, + 1988, 444, 1201, 1822, 1660, 1645, 545, 388, 2100, 1373, + 535, 773, 457, 483, 770, 2143, 482, 480, 1406, 1338, + 709, 1003, 1009, 2145, 2227, 347, 351, 354, 2272, 355, + 356, 2177, 2230, 357, 358, 359, 786, 474, 361, 362, + 474, 474, 474, 2123, 695, 2113, 2114, 2096, 1619, 2108, + 474, 2119, 2120, 2003, 1281, 2098, 2005, 1453, 1905, 1206, + 518, 63, 2152, 1590, 1591, 2160, 2161, 2162, 721, 712, + 2159, 987, 714, 754, 459, 2171, 711, 2188, 1831, 2170, + 1471, 374, 456, 399, 603, 603, 1991, 1801, 1859, 2173, + 1880, 1863, 2354, 2343, 2323, 2182, 2303, 2184, 2185, 2180, + 2194, 2189, 2339, 2241, 2286, 2279, 2190, 2018, 339, 875, + 582, 2196, 2197, 429, 2164, 102, 340, 2218, 2150, 378, + 1229, 379, 474, 1232, 1231, 1318, 601, 601, 923, 1394, + 990, 980, 629, 1571, 474, 685, 679, 1468, 1959, 1525, + 34, 2202, 33, 32, 912, 1017, 710, 2211, 104, 2234, + 1255, 1018, 2187, 2012, 2232, 694, 693, 2207, 692, 2216, + 691, 690, 1263, 903, 2233, 1584, 1261, 2224, 1260, 866, + 865, 910, 2256, 2255, 2208, 2209, 1909, 2237, 2060, 2130, + 2056, 2052, 2200, 1918, 2244, 2246, 1917, 1945, 1946, 1952, + 1712, 1708, 1710, 1711, 1709, 2252, 1776, 1704, 1629, 1630, + 1627, 1687, 2264, 2265, 2266, 2267, 1569, 1683, 2274, 1005, + 1012, 2278, 956, 955, 965, 966, 958, 959, 960, 961, + 962, 963, 964, 957, 816, 99, 863, 956, 955, 965, + 966, 958, 959, 960, 961, 962, 963, 964, 957, 1985, + 2269, 11, 2289, 10, 777, 2292, 9, 2234, 2302, 2290, + 14, 21, 20, 2296, 474, 2298, 474, 19, 2282, 58, + 2284, 2307, 2233, 2309, 808, 2301, 808, 57, 56, 55, + 18, 8, 54, 53, 52, 17, 16, 2318, 47, 2274, + 48, 474, 2319, 45, 2326, 44, 43, 42, 2329, 41, + 40, 808, 39, 2335, 46, 38, 37, 36, 67, 66, + 65, 64, 23, 2312, 24, 25, 26, 77, 2321, 76, + 78, 74, 72, 75, 2342, 73, 71, 31, 13, 2, + 2353, 0, 0, 2352, 0, 0, 0, 0, 0, 0, + 2364, 0, 0, 0, 2365, 2367, 2366, 1129, 1171, 2353, + 0, 1117, 0, 1079, 1131, 1053, 1068, 1139, 1069, 1070, + 1104, 1032, 1088, 229, 1066, 0, 1120, 1024, 1056, 1057, + 1026, 1063, 1027, 1054, 1081, 174, 1052, 1091, 199, 1137, + 0, 0, 258, 213, 0, 0, 1084, 1122, 1086, 1109, + 1078, 1105, 1040, 1098, 1132, 1067, 1102, 1133, 0, 0, + 0, 0, 0, 829, 830, 831, 0, 0, 0, 0, + 156, 0, 0, 0, 0, 0, 1101, 1126, 1065, 0, + 159, 1130, 1085, 1103, 0, 0, 1025, 1099, 0, 1030, + 1033, 1138, 1124, 1060, 1061, 0, 0, 0, 0, 0, + 0, 0, 1082, 1087, 1106, 1075, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1058, 0, 1095, 0, 0, + 0, 1035, 1031, 0, 1080, 0, 148, 263, 277, 157, + 254, 290, 162, 261, 153, 228, 250, 0, 1170, 150, + 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, + 169, 226, 0, 1128, 302, 168, 293, 1034, 285, 152, + 1165, 284, 225, 272, 276, 211, 205, 151, 274, 209, + 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, + 216, 1149, 1150, 1151, 1152, 1153, 1161, 1162, 0, 1166, + 1167, 1168, 1039, 0, 1059, 1107, 0, 1023, 1115, 1123, + 1077, 287, 1125, 1074, 1073, 1156, 0, 1155, 262, 1157, + 1158, 198, 1121, 1055, 1064, 303, 1062, 248, 231, 1127, + 1094, 1169, 246, 201, 273, 239, 278, 264, 286, 242, + 240, 144, 265, 171, 212, 154, 155, 167, 173, 175, + 177, 178, 221, 222, 234, 253, 266, 267, 268, 170, + 163, 247, 164, 187, 165, 145, 255, 166, 146, 235, + 271, 1154, 183, 243, 208, 147, 207, 236, 270, 269, + 294, 300, 301, 305, 0, 306, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1163, 0, 1164, + 299, 181, 142, 282, 0, 227, 1118, 1028, 1038, 1036, + 1071, 1096, 1097, 223, 298, 1111, 1114, 1112, 1140, 251, + 0, 0, 0, 0, 0, 192, 233, 0, 252, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1029, + 0, 259, 280, 292, 1172, 1173, 1174, 1175, 0, 1176, + 1177, 1178, 1179, 1180, 1181, 1182, 283, 1072, 1046, 1083, + 291, 1049, 1047, 1110, 1048, 1100, 1142, 217, 218, 219, + 220, 184, 0, 161, 1092, 1076, 1143, 1144, 1145, 1146, + 1147, 1148, 1051, 304, 180, 186, 0, 188, 160, 232, + 182, 289, 195, 1116, 224, 191, 256, 196, 202, 244, + 288, 230, 249, 158, 279, 257, 206, 1045, 1050, 1044, + 1089, 1090, 1134, 1135, 1136, 1108, 1037, 1119, 1041, 1043, + 1042, 956, 955, 965, 966, 958, 959, 960, 961, 962, + 963, 964, 957, 0, 0, 0, 0, 0, 0, 0, + 1113, 0, 1093, 143, 0, 200, 1141, 241, 179, 717, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 0, 0, 0, 0, 0, 0, 0, 687, 0, 0, + 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, + 0, 0, 0, 0, 732, 738, 1159, 1160, 295, 296, + 297, 281, 0, 0, 0, 680, 0, 0, 0, 630, + 724, 723, 697, 706, 0, 0, 156, 698, 0, 705, + 699, 703, 702, 700, 701, 0, 667, 0, 0, 0, + 0, 0, 0, 627, 684, 0, 688, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 681, 682, 0, + 0, 0, 0, 718, 0, 683, 0, 0, 720, 0, + 707, 0, 148, 263, 277, 157, 254, 290, 162, 261, + 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, + 194, 149, 0, 245, 172, 185, 169, 226, 704, 716, + 673, 168, 671, 715, 285, 152, 0, 284, 225, 272, + 276, 211, 205, 151, 274, 209, 204, 197, 176, 189, + 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 712, 0, 0, 287, 0, 0, 730, 0, - 0, 0, 262, 0, 0, 198, 0, 0, 0, 673, - 0, 248, 231, 740, 0, 0, 246, 201, 273, 239, - 278, 264, 286, 242, 240, 144, 265, 171, 212, 154, - 155, 167, 173, 175, 177, 178, 221, 222, 234, 253, - 266, 267, 268, 170, 163, 247, 164, 187, 165, 145, - 255, 166, 146, 235, 271, 0, 183, 243, 208, 147, - 207, 236, 270, 269, 294, 300, 301, 305, 0, 306, + 0, 0, 0, 0, 713, 0, 0, 287, 0, 0, + 731, 0, 0, 0, 262, 0, 0, 198, 0, 0, + 0, 674, 0, 248, 231, 741, 628, 0, 246, 201, + 273, 239, 278, 264, 286, 242, 240, 144, 265, 171, + 212, 154, 155, 167, 173, 175, 177, 178, 221, 222, + 234, 253, 266, 267, 268, 170, 163, 247, 164, 187, + 165, 145, 255, 166, 146, 235, 271, 0, 183, 243, + 208, 147, 207, 236, 270, 269, 294, 300, 301, 305, + 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1375, 1374, 1376, 299, 181, 142, 282, + 729, 227, 740, 725, 726, 727, 730, 733, 734, 669, + 672, 735, 737, 739, 742, 251, 0, 0, 0, 0, + 0, 192, 233, 0, 252, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 259, 280, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1374, 1373, 1375, 299, 181, 142, 282, 728, 227, - 739, 724, 725, 726, 729, 732, 733, 668, 671, 734, - 736, 738, 741, 251, 0, 0, 0, 0, 0, 192, - 233, 0, 252, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 259, 280, 292, 0, 0, + 0, 0, 670, 0, 0, 0, 291, 0, 0, 0, + 0, 0, 719, 217, 218, 219, 220, 668, 0, 161, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, + 180, 186, 0, 188, 160, 232, 182, 289, 195, 0, + 224, 191, 256, 196, 202, 244, 288, 230, 249, 158, + 279, 257, 206, 748, 728, 747, 749, 750, 746, 751, + 752, 736, 689, 0, 744, 743, 745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 669, 0, 0, 0, 291, 0, 0, 0, 0, 0, - 718, 217, 218, 219, 220, 667, 0, 161, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 304, 180, 186, - 0, 188, 160, 232, 182, 289, 195, 0, 224, 191, - 256, 196, 202, 244, 288, 230, 249, 158, 279, 257, - 206, 747, 727, 746, 748, 749, 745, 750, 751, 735, - 688, 0, 743, 742, 744, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, + 0, 200, 0, 241, 179, 632, 633, 634, 635, 636, + 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, + 121, 647, 648, 649, 650, 651, 652, 653, 654, 655, + 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, + 666, 722, 0, 0, 295, 296, 297, 281, 97, 0, + 717, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 0, 0, 0, 0, 0, 0, 0, 687, 0, + 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, + 213, 0, 0, 0, 0, 732, 738, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 680, 0, 0, 0, + 630, 724, 723, 697, 706, 0, 0, 156, 698, 0, + 705, 699, 703, 702, 700, 701, 0, 667, 0, 0, + 0, 0, 0, 0, 627, 684, 0, 688, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 681, 682, + 0, 0, 0, 0, 718, 0, 683, 0, 0, 720, + 0, 707, 0, 148, 263, 277, 157, 254, 290, 162, + 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, + 193, 194, 149, 0, 245, 172, 185, 169, 226, 704, + 716, 673, 168, 671, 715, 285, 152, 0, 284, 225, + 272, 276, 211, 205, 151, 274, 209, 204, 197, 176, + 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 143, 0, 200, - 0, 241, 179, 631, 632, 633, 634, 635, 636, 637, - 638, 639, 640, 641, 642, 643, 644, 645, 121, 646, - 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 721, - 0, 0, 295, 296, 297, 281, 97, 0, 716, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 229, 0, - 0, 0, 0, 0, 0, 0, 686, 0, 0, 0, + 0, 0, 0, 0, 0, 713, 0, 0, 287, 0, + 0, 731, 0, 0, 0, 262, 0, 0, 198, 0, + 0, 0, 674, 0, 248, 231, 741, 628, 0, 246, + 201, 273, 239, 278, 264, 286, 242, 240, 144, 265, + 171, 212, 154, 155, 167, 173, 175, 177, 178, 221, + 222, 234, 253, 266, 267, 268, 170, 163, 247, 164, + 187, 165, 145, 255, 166, 146, 235, 271, 0, 183, + 243, 208, 147, 207, 236, 270, 269, 294, 300, 301, + 305, 0, 306, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 299, 181, 142, + 282, 729, 227, 740, 725, 726, 727, 730, 733, 734, + 669, 672, 735, 737, 739, 742, 251, 0, 0, 0, + 0, 0, 192, 233, 0, 252, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 259, 280, + 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 670, 0, 0, 0, 291, 0, 0, + 0, 0, 0, 719, 217, 218, 219, 220, 668, 0, + 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 304, 180, 186, 0, 188, 160, 232, 182, 289, 195, + 0, 224, 191, 256, 196, 202, 244, 288, 230, 249, + 158, 279, 257, 206, 748, 728, 747, 749, 750, 746, + 751, 752, 736, 689, 0, 744, 743, 745, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 143, 0, 200, 70, 241, 179, 632, 633, 634, 635, + 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, + 646, 121, 647, 648, 649, 650, 651, 652, 653, 654, + 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, + 665, 666, 722, 717, 0, 295, 296, 297, 281, 0, + 0, 0, 0, 229, 0, 0, 0, 0, 0, 0, + 0, 687, 0, 0, 0, 174, 889, 0, 199, 0, + 0, 0, 258, 213, 0, 0, 0, 0, 732, 738, + 0, 0, 0, 0, 0, 0, 885, 0, 0, 680, + 0, 0, 0, 630, 724, 723, 697, 706, 0, 0, + 156, 698, 0, 705, 699, 703, 702, 700, 701, 0, + 667, 0, 0, 0, 0, 0, 0, 627, 684, 0, + 688, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 681, 682, 0, 0, 0, 0, 718, 0, 683, + 0, 0, 886, 0, 707, 0, 148, 263, 277, 157, + 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, + 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, + 169, 226, 704, 716, 673, 168, 671, 715, 285, 152, + 0, 284, 225, 272, 276, 211, 205, 151, 274, 209, + 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, + 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 713, 0, + 0, 287, 0, 0, 731, 0, 0, 0, 262, 0, + 0, 198, 0, 0, 0, 674, 0, 248, 231, 741, + 628, 0, 246, 201, 273, 239, 278, 264, 286, 242, + 240, 144, 265, 171, 212, 154, 155, 167, 173, 175, + 177, 178, 221, 222, 234, 253, 266, 267, 268, 170, + 163, 247, 164, 187, 165, 145, 255, 166, 146, 235, + 271, 0, 183, 243, 208, 147, 207, 236, 270, 269, + 294, 300, 301, 305, 0, 306, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 299, 181, 142, 282, 729, 227, 740, 725, 726, 727, + 730, 733, 734, 669, 672, 735, 737, 739, 742, 251, + 0, 0, 0, 0, 0, 192, 233, 0, 252, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 259, 280, 292, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 670, 0, 0, 0, + 291, 0, 0, 0, 0, 0, 719, 217, 218, 219, + 220, 668, 0, 161, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 304, 180, 186, 0, 188, 160, 232, + 182, 289, 195, 0, 224, 191, 256, 196, 202, 244, + 288, 230, 249, 158, 279, 257, 206, 748, 728, 747, + 749, 750, 746, 751, 752, 736, 689, 0, 744, 743, + 745, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 143, 0, 200, 0, 241, 179, 632, + 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, + 643, 644, 645, 646, 121, 647, 648, 649, 650, 651, + 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, + 662, 663, 664, 665, 666, 722, 717, 0, 295, 296, + 297, 281, 0, 0, 0, 0, 229, 0, 0, 0, + 0, 0, 0, 0, 687, 0, 0, 0, 174, 2320, + 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, + 0, 732, 738, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 680, 0, 0, 0, 630, 724, 723, 697, + 706, 0, 0, 156, 698, 0, 705, 699, 703, 702, + 700, 701, 0, 667, 0, 0, 0, 0, 0, 0, + 627, 684, 0, 688, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 681, 682, 0, 0, 0, 0, + 718, 0, 683, 0, 0, 720, 0, 707, 0, 148, + 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, + 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, + 245, 172, 185, 169, 226, 704, 716, 673, 168, 671, + 715, 285, 152, 0, 284, 225, 272, 276, 211, 205, + 151, 274, 209, 204, 197, 176, 189, 237, 203, 238, + 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 713, 0, 0, 287, 0, 0, 731, 0, 0, + 0, 262, 0, 0, 198, 0, 0, 0, 674, 0, + 248, 231, 741, 628, 0, 246, 201, 273, 239, 278, + 264, 286, 242, 240, 144, 265, 171, 212, 154, 155, + 167, 173, 175, 177, 178, 221, 222, 234, 253, 266, + 267, 268, 170, 163, 247, 164, 187, 165, 145, 255, + 166, 146, 235, 271, 0, 183, 243, 208, 147, 207, + 236, 270, 269, 294, 300, 301, 305, 0, 306, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 299, 181, 142, 282, 729, 227, 740, + 725, 726, 727, 730, 733, 734, 669, 672, 735, 737, + 739, 742, 251, 0, 0, 0, 0, 0, 192, 233, + 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 259, 280, 292, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 670, + 0, 0, 0, 291, 0, 0, 0, 0, 0, 719, + 217, 218, 219, 220, 668, 0, 161, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 304, 180, 186, 0, + 188, 160, 232, 182, 289, 195, 0, 224, 191, 256, + 196, 202, 244, 288, 230, 249, 158, 279, 257, 206, + 748, 728, 747, 749, 750, 746, 751, 752, 736, 689, + 0, 744, 743, 745, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 143, 0, 200, 0, + 241, 179, 632, 633, 634, 635, 636, 637, 638, 639, + 640, 641, 642, 643, 644, 645, 646, 121, 647, 648, + 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, + 659, 660, 661, 662, 663, 664, 665, 666, 722, 717, + 0, 295, 296, 297, 281, 0, 0, 0, 0, 229, + 0, 0, 0, 0, 0, 0, 0, 687, 0, 0, + 0, 174, 889, 0, 199, 0, 0, 0, 258, 213, + 0, 0, 0, 0, 732, 738, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 680, 0, 0, 0, 630, + 724, 723, 697, 706, 0, 0, 156, 698, 0, 705, + 699, 703, 702, 700, 701, 0, 667, 0, 0, 0, + 0, 0, 0, 627, 684, 0, 688, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 681, 682, 0, + 0, 0, 0, 718, 0, 683, 0, 0, 720, 0, + 707, 0, 148, 263, 277, 157, 254, 290, 162, 261, + 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, + 194, 149, 0, 245, 172, 185, 169, 226, 704, 716, + 673, 168, 671, 715, 285, 152, 0, 284, 225, 272, + 276, 211, 205, 151, 274, 209, 204, 197, 176, 189, + 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 713, 0, 0, 287, 0, 0, + 731, 0, 0, 0, 262, 0, 0, 198, 0, 0, + 0, 674, 0, 248, 231, 741, 628, 0, 246, 201, + 273, 239, 278, 264, 286, 242, 240, 144, 265, 171, + 212, 154, 155, 167, 173, 175, 177, 178, 221, 222, + 234, 253, 266, 267, 268, 170, 163, 247, 164, 187, + 165, 145, 255, 166, 146, 235, 271, 0, 183, 243, + 208, 147, 207, 236, 270, 269, 294, 300, 301, 305, + 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 299, 181, 142, 282, + 729, 227, 740, 725, 726, 727, 730, 733, 734, 669, + 672, 735, 737, 739, 742, 251, 0, 0, 0, 0, + 0, 192, 233, 0, 252, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 259, 280, 292, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 670, 0, 0, 0, 291, 0, 0, 0, + 0, 0, 719, 217, 218, 219, 220, 668, 0, 161, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, + 180, 186, 0, 188, 160, 232, 182, 289, 195, 0, + 224, 191, 256, 196, 202, 244, 288, 230, 249, 158, + 279, 257, 206, 748, 728, 747, 749, 750, 746, 751, + 752, 736, 689, 0, 744, 743, 745, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, + 0, 200, 0, 241, 179, 632, 633, 634, 635, 636, + 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, + 121, 647, 648, 649, 650, 651, 652, 653, 654, 655, + 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, + 666, 722, 0, 0, 295, 296, 297, 281, 717, 0, + 0, 1556, 0, 0, 0, 0, 0, 0, 229, 0, + 0, 0, 0, 0, 0, 0, 687, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, - 0, 0, 0, 731, 737, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 679, 0, 0, 0, 629, 723, - 722, 696, 705, 0, 0, 156, 697, 0, 704, 698, - 702, 701, 699, 700, 0, 666, 0, 0, 0, 0, - 0, 0, 627, 683, 0, 687, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 680, 681, 0, 0, - 0, 0, 717, 0, 682, 0, 0, 719, 0, 706, + 0, 0, 0, 732, 738, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 680, 0, 0, 0, 630, 724, + 723, 697, 706, 0, 0, 156, 698, 0, 705, 699, + 703, 702, 700, 701, 0, 667, 0, 0, 0, 0, + 0, 0, 627, 684, 0, 688, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 681, 682, 0, 0, + 0, 0, 718, 0, 683, 0, 0, 720, 0, 707, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, - 149, 0, 245, 172, 185, 169, 226, 703, 715, 672, - 168, 670, 714, 285, 152, 0, 284, 225, 272, 276, + 149, 0, 245, 172, 185, 169, 226, 704, 716, 673, + 168, 671, 715, 285, 152, 0, 284, 225, 272, 276, 211, 205, 151, 274, 209, 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 712, 0, 0, 287, 0, 0, 730, + 0, 0, 0, 713, 0, 0, 287, 0, 0, 731, 0, 0, 0, 262, 0, 0, 198, 0, 0, 0, - 673, 0, 248, 231, 740, 0, 0, 246, 201, 273, + 674, 0, 248, 231, 741, 628, 0, 246, 201, 273, 239, 278, 264, 286, 242, 240, 144, 265, 171, 212, 154, 155, 167, 173, 175, 177, 178, 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, 164, 187, 165, 145, 255, 166, 146, 235, 271, 0, 183, 243, 208, 147, 207, 236, 270, 269, 294, 300, 301, 305, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 299, 181, 142, 282, 728, - 227, 739, 724, 725, 726, 729, 732, 733, 668, 671, - 734, 736, 738, 741, 251, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 299, 181, 142, 282, 729, + 227, 740, 725, 726, 727, 730, 733, 734, 669, 672, + 735, 737, 739, 742, 251, 0, 0, 0, 0, 0, 192, 233, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 280, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 669, 0, 0, 0, 291, 0, 0, 0, 0, - 0, 718, 217, 218, 219, 220, 667, 0, 161, 0, + 0, 670, 0, 0, 0, 291, 0, 0, 0, 0, + 0, 719, 217, 218, 219, 220, 668, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 180, 186, 0, 188, 160, 232, 182, 289, 195, 0, 224, 191, 256, 196, 202, 244, 288, 230, 249, 158, 279, - 257, 206, 747, 727, 746, 748, 749, 745, 750, 751, - 735, 688, 0, 743, 742, 744, 0, 0, 0, 0, + 257, 206, 748, 728, 747, 749, 750, 746, 751, 752, + 736, 689, 0, 744, 743, 745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, - 200, 70, 241, 179, 631, 632, 633, 634, 635, 636, - 637, 638, 639, 640, 641, 642, 643, 644, 645, 121, - 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, - 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 721, 716, 0, 295, 296, 297, 281, 0, 0, 0, - 0, 229, 0, 0, 0, 0, 0, 0, 0, 686, - 0, 0, 0, 174, 888, 0, 199, 0, 0, 0, - 258, 213, 0, 0, 0, 0, 731, 737, 0, 0, - 0, 0, 0, 0, 884, 0, 0, 679, 0, 0, - 0, 629, 723, 722, 696, 705, 0, 0, 156, 697, - 0, 704, 698, 702, 701, 699, 700, 0, 666, 0, - 0, 0, 0, 0, 0, 627, 683, 0, 687, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 680, - 681, 0, 0, 0, 0, 717, 0, 682, 0, 0, - 885, 0, 706, 0, 148, 263, 277, 157, 254, 290, + 200, 0, 241, 179, 632, 633, 634, 635, 636, 637, + 638, 639, 640, 641, 642, 643, 644, 645, 646, 121, + 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, + 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, + 722, 717, 0, 295, 296, 297, 281, 0, 0, 0, + 0, 229, 0, 0, 0, 0, 0, 0, 0, 687, + 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, + 258, 213, 0, 0, 0, 0, 732, 738, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 680, 0, 0, + 0, 630, 724, 723, 697, 706, 0, 0, 156, 698, + 0, 705, 699, 703, 702, 700, 701, 0, 667, 0, + 0, 0, 0, 0, 0, 627, 684, 0, 688, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 681, + 682, 624, 0, 0, 0, 718, 0, 683, 0, 0, + 720, 0, 707, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, 226, - 703, 715, 672, 168, 670, 714, 285, 152, 0, 284, + 704, 716, 673, 168, 671, 715, 285, 152, 0, 284, 225, 272, 276, 211, 205, 151, 274, 209, 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 712, 0, 0, 287, - 0, 0, 730, 0, 0, 0, 262, 0, 0, 198, - 0, 0, 0, 673, 0, 248, 231, 740, 0, 0, + 0, 0, 0, 0, 0, 0, 713, 0, 0, 287, + 0, 0, 731, 0, 0, 0, 262, 0, 0, 198, + 0, 0, 0, 674, 0, 248, 231, 741, 628, 0, 246, 201, 273, 239, 278, 264, 286, 242, 240, 144, 265, 171, 212, 154, 155, 167, 173, 175, 177, 178, 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, @@ -1549,496 +1735,265 @@ var yyAct = [...]int{ 183, 243, 208, 147, 207, 236, 270, 269, 294, 300, 301, 305, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 181, - 142, 282, 728, 227, 739, 724, 725, 726, 729, 732, - 733, 668, 671, 734, 736, 738, 741, 251, 0, 0, + 142, 282, 729, 227, 740, 725, 726, 727, 730, 733, + 734, 669, 672, 735, 737, 739, 742, 251, 0, 0, 0, 0, 0, 192, 233, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 280, 292, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 669, 0, 0, 0, 291, 0, - 0, 0, 0, 0, 718, 217, 218, 219, 220, 667, + 0, 0, 0, 0, 670, 0, 0, 0, 291, 0, + 0, 0, 0, 0, 719, 217, 218, 219, 220, 668, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 180, 186, 0, 188, 160, 232, 182, 289, 195, 0, 224, 191, 256, 196, 202, 244, 288, 230, - 249, 158, 279, 257, 206, 747, 727, 746, 748, 749, - 745, 750, 751, 735, 688, 0, 743, 742, 744, 0, + 249, 158, 279, 257, 206, 748, 728, 747, 749, 750, + 746, 751, 752, 736, 689, 0, 744, 743, 745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 143, 0, 200, 0, 241, 179, 631, 632, 633, - 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, - 644, 645, 121, 646, 647, 648, 649, 650, 651, 652, - 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, - 663, 664, 665, 721, 716, 0, 295, 296, 297, 281, + 0, 143, 0, 200, 0, 241, 179, 632, 633, 634, + 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, + 645, 646, 121, 647, 648, 649, 650, 651, 652, 653, + 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, + 664, 665, 666, 722, 717, 0, 295, 296, 297, 281, 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, - 0, 0, 686, 0, 0, 0, 174, 2319, 0, 199, - 0, 0, 0, 258, 213, 0, 0, 0, 0, 731, - 737, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 679, 0, 0, 0, 629, 723, 722, 696, 705, 0, - 0, 156, 697, 0, 704, 698, 702, 701, 699, 700, - 0, 666, 0, 0, 0, 0, 0, 0, 627, 683, - 0, 687, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 680, 681, 0, 0, 0, 0, 717, 0, - 682, 0, 0, 719, 0, 706, 0, 148, 263, 277, + 0, 0, 687, 0, 0, 0, 174, 0, 0, 199, + 0, 0, 0, 258, 213, 0, 0, 0, 0, 732, + 738, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 680, 0, 0, 0, 630, 724, 723, 697, 706, 0, + 0, 156, 698, 0, 705, 699, 703, 702, 700, 701, + 0, 667, 0, 0, 0, 0, 0, 0, 627, 684, + 0, 688, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 681, 682, 0, 0, 0, 0, 718, 0, + 683, 0, 0, 720, 0, 707, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, - 185, 169, 226, 703, 715, 672, 168, 670, 714, 285, + 185, 169, 226, 704, 716, 673, 168, 671, 715, 285, 152, 0, 284, 225, 272, 276, 211, 205, 151, 274, 209, 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 712, - 0, 0, 287, 0, 0, 730, 0, 0, 0, 262, - 0, 0, 198, 0, 0, 0, 673, 0, 248, 231, - 740, 0, 0, 246, 201, 273, 239, 278, 264, 286, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 713, + 0, 0, 287, 0, 0, 731, 0, 0, 0, 262, + 0, 0, 198, 0, 0, 0, 674, 0, 248, 231, + 741, 628, 0, 246, 201, 273, 239, 278, 264, 286, 242, 240, 144, 265, 171, 212, 154, 155, 167, 173, 175, 177, 178, 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, 164, 187, 165, 145, 255, 166, 146, 235, 271, 0, 183, 243, 208, 147, 207, 236, 270, 269, 294, 300, 301, 305, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 181, 142, 282, 728, 227, 739, 724, 725, - 726, 729, 732, 733, 668, 671, 734, 736, 738, 741, + 0, 299, 181, 142, 282, 729, 227, 740, 725, 726, + 727, 730, 733, 734, 669, 672, 735, 737, 739, 742, 251, 0, 0, 0, 0, 0, 192, 233, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 280, 292, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 669, 0, 0, - 0, 291, 0, 0, 0, 0, 0, 718, 217, 218, - 219, 220, 667, 0, 161, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 670, 0, 0, + 0, 291, 0, 0, 0, 0, 0, 719, 217, 218, + 219, 220, 668, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 180, 186, 0, 188, 160, 232, 182, 289, 195, 0, 224, 191, 256, 196, 202, - 244, 288, 230, 249, 158, 279, 257, 206, 747, 727, - 746, 748, 749, 745, 750, 751, 735, 688, 0, 743, - 742, 744, 0, 0, 0, 0, 0, 0, 0, 0, + 244, 288, 230, 249, 158, 279, 257, 206, 748, 728, + 747, 749, 750, 746, 751, 752, 736, 689, 0, 744, + 743, 745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 200, 0, 241, 179, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 121, 646, 647, 648, 649, - 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, - 660, 661, 662, 663, 664, 665, 721, 716, 0, 295, + 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, + 642, 643, 644, 645, 646, 121, 647, 648, 649, 650, + 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, + 661, 662, 663, 664, 665, 666, 722, 717, 0, 295, 296, 297, 281, 0, 0, 0, 0, 229, 0, 0, - 0, 0, 0, 0, 0, 686, 0, 0, 0, 174, - 888, 0, 199, 0, 0, 0, 258, 213, 0, 0, - 0, 0, 731, 737, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 679, 0, 0, 0, 629, 723, 722, - 696, 705, 0, 0, 156, 697, 0, 704, 698, 702, - 701, 699, 700, 0, 666, 0, 0, 0, 0, 0, - 0, 627, 683, 0, 687, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 680, 681, 0, 0, 0, - 0, 717, 0, 682, 0, 0, 719, 0, 706, 0, + 0, 1319, 0, 0, 0, 687, 0, 0, 0, 174, + 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, + 0, 0, 732, 738, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 680, 0, 0, 0, 630, 724, 723, + 697, 706, 0, 0, 156, 698, 0, 705, 699, 703, + 702, 700, 701, 0, 667, 0, 0, 0, 0, 0, + 0, 0, 684, 0, 688, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 681, 682, 0, 0, 0, + 0, 718, 0, 683, 0, 0, 720, 0, 707, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, - 0, 245, 172, 185, 169, 226, 703, 715, 672, 168, - 670, 714, 285, 152, 0, 284, 225, 272, 276, 211, + 0, 245, 172, 185, 169, 226, 704, 716, 673, 168, + 671, 715, 285, 152, 0, 284, 225, 272, 276, 211, 205, 151, 274, 209, 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 712, 0, 0, 287, 0, 0, 730, 0, - 0, 0, 262, 0, 0, 198, 0, 0, 0, 673, - 0, 248, 231, 740, 0, 0, 246, 201, 273, 239, + 0, 0, 713, 0, 0, 287, 0, 0, 731, 0, + 0, 0, 262, 0, 0, 198, 0, 0, 0, 674, + 0, 248, 231, 741, 0, 0, 246, 201, 273, 239, 278, 264, 286, 242, 240, 144, 265, 171, 212, 154, 155, 167, 173, 175, 177, 178, 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, 164, 187, 165, 145, 255, 166, 146, 235, 271, 0, 183, 243, 208, 147, - 207, 236, 270, 269, 294, 300, 301, 305, 0, 306, + 207, 236, 270, 269, 294, 1320, 1321, 305, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 299, 181, 142, 282, 728, 227, - 739, 724, 725, 726, 729, 732, 733, 668, 671, 734, - 736, 738, 741, 251, 0, 0, 0, 0, 0, 192, + 0, 0, 0, 0, 299, 181, 142, 282, 729, 227, + 740, 725, 726, 727, 730, 733, 734, 669, 672, 735, + 737, 739, 742, 251, 0, 0, 0, 0, 0, 192, 233, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 280, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 669, 0, 0, 0, 291, 0, 0, 0, 0, 0, - 718, 217, 218, 219, 220, 667, 0, 161, 0, 0, + 670, 0, 0, 0, 291, 0, 0, 0, 0, 0, + 719, 217, 218, 219, 220, 668, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 180, 186, 0, 188, 160, 232, 182, 289, 195, 0, 224, 191, 256, 196, 202, 244, 288, 230, 249, 158, 279, 257, - 206, 747, 727, 746, 748, 749, 745, 750, 751, 735, - 688, 0, 743, 742, 744, 0, 0, 0, 0, 0, + 206, 748, 728, 747, 749, 750, 746, 751, 752, 736, + 689, 0, 744, 743, 745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 200, - 0, 241, 179, 631, 632, 633, 634, 635, 636, 637, - 638, 639, 640, 641, 642, 643, 644, 645, 121, 646, - 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 663, 664, 665, 721, - 0, 0, 295, 296, 297, 281, 716, 0, 0, 1555, - 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, - 0, 0, 0, 0, 686, 0, 0, 0, 174, 0, - 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, - 0, 731, 737, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 679, 0, 0, 0, 629, 723, 722, 696, - 705, 0, 0, 156, 697, 0, 704, 698, 702, 701, - 699, 700, 0, 666, 0, 0, 0, 0, 0, 0, - 627, 683, 0, 687, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 680, 681, 0, 0, 0, 0, - 717, 0, 682, 0, 0, 719, 0, 706, 0, 148, - 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, - 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, - 245, 172, 185, 169, 226, 703, 715, 672, 168, 670, - 714, 285, 152, 0, 284, 225, 272, 276, 211, 205, - 151, 274, 209, 204, 197, 176, 189, 237, 203, 238, - 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, + 0, 241, 179, 632, 633, 634, 635, 636, 637, 638, + 639, 640, 641, 642, 643, 644, 645, 646, 121, 647, + 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, + 658, 659, 660, 661, 662, 663, 664, 665, 666, 722, + 717, 0, 295, 296, 297, 281, 0, 0, 0, 0, + 229, 0, 0, 0, 0, 0, 0, 0, 687, 0, + 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, + 213, 0, 0, 0, 0, 732, 738, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 712, 0, 0, 287, 0, 0, 730, 0, 0, - 0, 262, 0, 0, 198, 0, 0, 0, 673, 0, - 248, 231, 740, 0, 0, 246, 201, 273, 239, 278, - 264, 286, 242, 240, 144, 265, 171, 212, 154, 155, - 167, 173, 175, 177, 178, 221, 222, 234, 253, 266, - 267, 268, 170, 163, 247, 164, 187, 165, 145, 255, - 166, 146, 235, 271, 0, 183, 243, 208, 147, 207, - 236, 270, 269, 294, 300, 301, 305, 0, 306, 0, + 630, 724, 723, 697, 706, 0, 0, 156, 698, 0, + 705, 699, 703, 702, 700, 701, 0, 667, 0, 0, + 0, 0, 0, 0, 627, 684, 0, 688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 181, 142, 282, 728, 227, 739, - 724, 725, 726, 729, 732, 733, 668, 671, 734, 736, - 738, 741, 251, 0, 0, 0, 0, 0, 192, 233, - 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 259, 280, 292, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 669, - 0, 0, 0, 291, 0, 0, 0, 0, 0, 718, - 217, 218, 219, 220, 667, 0, 161, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 304, 180, 186, 0, - 188, 160, 232, 182, 289, 195, 0, 224, 191, 256, - 196, 202, 244, 288, 230, 249, 158, 279, 257, 206, - 747, 727, 746, 748, 749, 745, 750, 751, 735, 688, - 0, 743, 742, 744, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 143, 0, 200, 0, - 241, 179, 631, 632, 633, 634, 635, 636, 637, 638, - 639, 640, 641, 642, 643, 644, 645, 121, 646, 647, - 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, - 658, 659, 660, 661, 662, 663, 664, 665, 721, 716, - 0, 295, 296, 297, 281, 0, 0, 0, 0, 229, - 0, 0, 0, 0, 0, 0, 0, 686, 0, 0, - 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, - 0, 0, 0, 0, 731, 737, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 679, 0, 0, 0, 629, - 723, 722, 696, 705, 0, 0, 156, 697, 0, 704, - 698, 702, 701, 699, 700, 0, 666, 0, 0, 0, - 0, 0, 0, 627, 683, 0, 687, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 680, 681, 624, - 0, 0, 0, 717, 0, 682, 0, 0, 719, 0, - 706, 0, 148, 263, 277, 157, 254, 290, 162, 261, - 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, - 194, 149, 0, 245, 172, 185, 169, 226, 703, 715, - 672, 168, 670, 714, 285, 152, 0, 284, 225, 272, - 276, 211, 205, 151, 274, 209, 204, 197, 176, 189, - 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 681, 682, + 0, 0, 0, 0, 718, 0, 683, 0, 0, 720, + 0, 707, 0, 148, 263, 277, 157, 254, 290, 162, + 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, + 193, 194, 149, 0, 245, 172, 185, 169, 226, 704, + 716, 673, 168, 671, 715, 285, 152, 0, 284, 225, + 272, 276, 211, 205, 151, 274, 209, 204, 197, 176, + 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 712, 0, 0, 287, 0, 0, - 730, 0, 0, 0, 262, 0, 0, 198, 0, 0, - 0, 673, 0, 248, 231, 740, 0, 0, 246, 201, - 273, 239, 278, 264, 286, 242, 240, 144, 265, 171, - 212, 154, 155, 167, 173, 175, 177, 178, 221, 222, - 234, 253, 266, 267, 268, 170, 163, 247, 164, 187, - 165, 145, 255, 166, 146, 235, 271, 0, 183, 243, - 208, 147, 207, 236, 270, 269, 294, 300, 301, 305, - 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 299, 181, 142, 282, - 728, 227, 739, 724, 725, 726, 729, 732, 733, 668, - 671, 734, 736, 738, 741, 251, 0, 0, 0, 0, - 0, 192, 233, 0, 252, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 259, 280, 292, + 0, 0, 0, 0, 0, 713, 0, 0, 287, 0, + 0, 731, 0, 0, 0, 262, 0, 0, 198, 0, + 0, 0, 674, 0, 248, 231, 741, 628, 0, 246, + 201, 273, 239, 278, 264, 286, 242, 240, 144, 265, + 171, 212, 154, 155, 167, 173, 175, 177, 178, 221, + 222, 234, 253, 266, 267, 268, 170, 163, 247, 164, + 187, 165, 145, 255, 166, 146, 235, 271, 0, 183, + 243, 208, 147, 207, 236, 270, 269, 294, 300, 301, + 305, 0, 306, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 299, 181, 142, + 282, 729, 227, 740, 725, 726, 727, 730, 733, 734, + 669, 672, 735, 737, 739, 742, 251, 0, 0, 0, + 0, 0, 192, 233, 0, 252, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 259, 280, + 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 670, 0, 0, 0, 291, 0, 0, + 0, 0, 0, 719, 217, 218, 219, 220, 668, 0, + 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 304, 180, 186, 0, 188, 160, 232, 182, 289, 195, + 0, 224, 191, 256, 196, 202, 244, 288, 230, 249, + 158, 279, 257, 206, 748, 728, 747, 749, 750, 746, + 751, 752, 736, 689, 0, 744, 743, 745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 669, 0, 0, 0, 291, 0, 0, 0, - 0, 0, 718, 217, 218, 219, 220, 667, 0, 161, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, - 180, 186, 0, 188, 160, 232, 182, 289, 195, 0, - 224, 191, 256, 196, 202, 244, 288, 230, 249, 158, - 279, 257, 206, 747, 727, 746, 748, 749, 745, 750, - 751, 735, 688, 0, 743, 742, 744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, - 0, 200, 0, 241, 179, 631, 632, 633, 634, 635, + 143, 0, 200, 0, 241, 179, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, - 121, 646, 647, 648, 649, 650, 651, 652, 653, 654, + 646, 121, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, - 665, 721, 716, 0, 295, 296, 297, 281, 0, 0, - 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, - 686, 0, 0, 0, 174, 0, 0, 199, 0, 0, - 0, 258, 213, 0, 0, 0, 0, 731, 737, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 679, 0, - 0, 0, 629, 723, 722, 696, 705, 0, 0, 156, - 697, 0, 704, 698, 702, 701, 699, 700, 0, 666, - 0, 0, 0, 0, 0, 0, 627, 683, 0, 687, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 680, 681, 0, 0, 0, 0, 717, 0, 682, 0, - 0, 719, 0, 706, 0, 148, 263, 277, 157, 254, - 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, - 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, - 226, 703, 715, 672, 168, 670, 714, 285, 152, 0, - 284, 225, 272, 276, 211, 205, 151, 274, 209, 204, - 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, + 665, 666, 722, 717, 0, 295, 296, 297, 281, 0, + 0, 0, 0, 229, 0, 0, 0, 0, 0, 0, + 0, 687, 0, 0, 0, 174, 0, 0, 199, 0, + 0, 0, 258, 213, 0, 0, 0, 0, 732, 738, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 680, + 0, 0, 0, 630, 724, 723, 697, 706, 0, 0, + 156, 698, 0, 705, 699, 703, 702, 700, 701, 0, + 667, 0, 0, 0, 0, 0, 0, 0, 684, 0, + 688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 712, 0, 0, - 287, 0, 0, 730, 0, 0, 0, 262, 0, 0, - 198, 0, 0, 0, 673, 0, 248, 231, 740, 0, - 0, 246, 201, 273, 239, 278, 264, 286, 242, 240, - 144, 265, 171, 212, 154, 155, 167, 173, 175, 177, - 178, 221, 222, 234, 253, 266, 267, 268, 170, 163, - 247, 164, 187, 165, 145, 255, 166, 146, 235, 271, - 0, 183, 243, 208, 147, 207, 236, 270, 269, 294, - 300, 301, 305, 0, 306, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, - 181, 142, 282, 728, 227, 739, 724, 725, 726, 729, - 732, 733, 668, 671, 734, 736, 738, 741, 251, 0, - 0, 0, 0, 0, 192, 233, 0, 252, 0, 0, + 0, 681, 682, 0, 0, 0, 0, 718, 0, 683, + 0, 0, 720, 0, 707, 0, 148, 263, 277, 157, + 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, + 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, + 169, 226, 704, 716, 673, 168, 671, 715, 285, 152, + 0, 284, 225, 272, 276, 211, 205, 151, 274, 209, + 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, + 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 713, 0, + 0, 287, 0, 0, 731, 0, 0, 0, 262, 0, + 0, 198, 0, 0, 0, 674, 0, 248, 231, 741, + 0, 0, 246, 201, 273, 239, 278, 264, 286, 242, + 240, 144, 265, 171, 212, 154, 155, 167, 173, 175, + 177, 178, 221, 222, 234, 253, 266, 267, 268, 170, + 163, 247, 164, 187, 165, 145, 255, 166, 146, 235, + 271, 0, 183, 243, 208, 147, 207, 236, 270, 269, + 294, 300, 301, 305, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 259, 280, 292, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 669, 0, 0, 0, 291, - 0, 0, 0, 0, 0, 718, 217, 218, 219, 220, - 667, 0, 161, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 304, 180, 186, 0, 188, 160, 232, 182, - 289, 195, 0, 224, 191, 256, 196, 202, 244, 288, - 230, 249, 158, 279, 257, 206, 747, 727, 746, 748, - 749, 745, 750, 751, 735, 688, 0, 743, 742, 744, + 299, 181, 142, 282, 729, 227, 740, 725, 726, 727, + 730, 733, 734, 669, 672, 735, 737, 739, 742, 251, + 0, 0, 0, 0, 0, 192, 233, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 259, 280, 292, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 670, 0, 0, 0, + 291, 0, 0, 0, 0, 0, 719, 217, 218, 219, + 220, 668, 0, 161, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 304, 180, 186, 0, 188, 160, 232, + 182, 289, 195, 0, 224, 191, 256, 196, 202, 244, + 288, 230, 249, 158, 279, 257, 206, 748, 728, 747, + 749, 750, 746, 751, 752, 736, 689, 0, 744, 743, + 745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 143, 0, 200, 0, 241, 179, 631, 632, + 0, 0, 0, 143, 0, 200, 0, 241, 179, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 121, 646, 647, 648, 649, 650, 651, + 643, 644, 645, 646, 121, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, - 662, 663, 664, 665, 721, 716, 0, 295, 296, 297, - 281, 0, 0, 0, 0, 229, 0, 0, 0, 1318, - 0, 0, 0, 686, 0, 0, 0, 174, 0, 0, - 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, - 731, 737, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 679, 0, 0, 0, 629, 723, 722, 696, 705, - 0, 0, 156, 697, 0, 704, 698, 702, 701, 699, - 700, 0, 666, 0, 0, 0, 0, 0, 0, 0, - 683, 0, 687, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 680, 681, 0, 0, 0, 0, 717, - 0, 682, 0, 0, 719, 0, 706, 0, 148, 263, - 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, - 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, - 172, 185, 169, 226, 703, 715, 672, 168, 670, 714, - 285, 152, 0, 284, 225, 272, 276, 211, 205, 151, - 274, 209, 204, 197, 176, 189, 237, 203, 238, 190, - 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 712, 0, 0, 287, 0, 0, 730, 0, 0, 0, - 262, 0, 0, 198, 0, 0, 0, 673, 0, 248, - 231, 740, 0, 0, 246, 201, 273, 239, 278, 264, - 286, 242, 240, 144, 265, 171, 212, 154, 155, 167, - 173, 175, 177, 178, 221, 222, 234, 253, 266, 267, - 268, 170, 163, 247, 164, 187, 165, 145, 255, 166, - 146, 235, 271, 0, 183, 243, 208, 147, 207, 236, - 270, 269, 294, 1319, 1320, 305, 0, 306, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 299, 181, 142, 282, 728, 227, 739, 724, - 725, 726, 729, 732, 733, 668, 671, 734, 736, 738, - 741, 251, 0, 0, 0, 0, 0, 192, 233, 0, - 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 259, 280, 292, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 669, 0, - 0, 0, 291, 0, 0, 0, 0, 0, 718, 217, - 218, 219, 220, 667, 0, 161, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 304, 180, 186, 0, 188, - 160, 232, 182, 289, 195, 0, 224, 191, 256, 196, - 202, 244, 288, 230, 249, 158, 279, 257, 206, 747, - 727, 746, 748, 749, 745, 750, 751, 735, 688, 0, - 743, 742, 744, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 143, 0, 200, 0, 241, - 179, 631, 632, 633, 634, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 644, 645, 121, 646, 647, 648, - 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, - 659, 660, 661, 662, 663, 664, 665, 721, 716, 0, - 295, 296, 297, 281, 0, 0, 0, 0, 229, 0, - 0, 0, 0, 0, 0, 0, 686, 0, 0, 0, - 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, - 0, 0, 0, 731, 737, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 679, 0, 0, 0, 629, 723, - 722, 696, 705, 0, 0, 156, 697, 0, 704, 698, - 702, 701, 699, 700, 0, 666, 0, 0, 0, 0, - 0, 0, 0, 683, 0, 687, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 680, 681, 0, 0, - 0, 0, 717, 0, 682, 0, 0, 719, 0, 706, - 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, - 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, - 149, 0, 245, 172, 185, 169, 226, 703, 715, 672, - 168, 670, 714, 285, 152, 0, 284, 225, 272, 276, - 211, 205, 151, 274, 209, 204, 197, 176, 189, 237, - 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 712, 0, 0, 287, 0, 0, 730, - 0, 0, 0, 262, 0, 0, 198, 0, 0, 0, - 673, 0, 248, 231, 740, 0, 0, 246, 201, 273, - 239, 278, 264, 286, 242, 240, 144, 265, 171, 212, - 154, 155, 167, 173, 175, 177, 178, 221, 222, 234, - 253, 266, 267, 268, 170, 163, 247, 164, 187, 165, - 145, 255, 166, 146, 235, 271, 0, 183, 243, 208, - 147, 207, 236, 270, 269, 294, 300, 301, 305, 0, - 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 299, 181, 142, 282, 728, - 227, 739, 724, 725, 726, 729, 732, 733, 668, 671, - 734, 736, 738, 741, 251, 0, 0, 0, 0, 0, - 192, 233, 0, 252, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 259, 280, 292, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 669, 0, 0, 0, 291, 0, 0, 0, 0, - 0, 718, 217, 218, 219, 220, 667, 0, 161, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 304, 180, - 186, 0, 188, 160, 232, 182, 289, 195, 0, 224, - 191, 256, 196, 202, 244, 288, 230, 249, 158, 279, - 257, 206, 747, 727, 746, 748, 749, 745, 750, 751, - 735, 688, 0, 743, 742, 744, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, - 200, 0, 241, 179, 631, 632, 633, 634, 635, 636, - 637, 638, 639, 640, 641, 642, 643, 644, 645, 121, - 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, - 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 721, 716, 0, 295, 296, 297, 281, 0, 0, 0, - 0, 229, 0, 0, 0, 0, 0, 0, 0, 686, - 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, - 258, 213, 0, 0, 0, 0, 731, 737, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 629, 723, 722, 696, 705, 0, 0, 156, 697, - 0, 704, 698, 702, 701, 699, 700, 0, 666, 0, - 0, 0, 0, 0, 0, 627, 683, 0, 687, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 680, - 681, 0, 0, 0, 0, 717, 0, 682, 0, 0, - 719, 0, 706, 0, 148, 263, 277, 157, 254, 290, - 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, - 210, 193, 194, 149, 0, 245, 172, 185, 169, 226, - 703, 715, 672, 168, 670, 714, 285, 152, 0, 284, - 225, 272, 276, 211, 205, 151, 274, 209, 204, 197, - 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 712, 0, 0, 287, - 0, 0, 730, 0, 0, 0, 262, 0, 0, 198, - 0, 0, 0, 673, 0, 248, 231, 740, 0, 0, - 246, 201, 273, 239, 278, 264, 286, 242, 240, 144, - 265, 171, 212, 154, 155, 167, 173, 175, 177, 178, - 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, - 164, 187, 165, 145, 255, 166, 146, 235, 271, 0, - 183, 243, 208, 147, 207, 236, 270, 269, 294, 300, - 301, 305, 0, 306, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 299, 181, - 142, 282, 728, 227, 739, 724, 725, 726, 729, 732, - 733, 668, 671, 734, 736, 738, 741, 251, 0, 0, - 0, 0, 0, 192, 233, 0, 252, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, - 280, 292, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 669, 0, 0, 0, 291, 0, - 0, 0, 0, 0, 718, 217, 218, 219, 220, 667, - 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 304, 180, 186, 0, 188, 160, 232, 182, 289, - 195, 0, 224, 191, 256, 196, 202, 244, 288, 230, - 249, 158, 279, 257, 206, 747, 727, 746, 748, 749, - 745, 750, 751, 735, 688, 0, 743, 742, 744, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 143, 0, 200, 0, 241, 179, 631, 632, 633, - 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, - 644, 645, 121, 646, 647, 648, 649, 650, 651, 652, - 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, - 663, 664, 665, 721, 0, 0, 295, 296, 297, 281, - 97, 0, 27, 87, 69, 0, 0, 0, 0, 0, - 0, 0, 229, 313, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, - 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 318, 0, - 0, 0, 103, 0, 0, 0, 0, 0, 0, 156, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 350, 0, 349, 353, 345, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 341, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 360, 0, 0, 0, 0, 148, 263, 277, 157, 254, - 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, - 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, - 226, 0, 0, 302, 168, 293, 0, 285, 152, 0, - 284, 225, 272, 276, 211, 205, 151, 274, 209, 204, - 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, - 287, 0, 0, 0, 0, 0, 0, 262, 0, 0, - 198, 0, 0, 0, 303, 0, 248, 231, 0, 0, - 0, 246, 201, 273, 239, 278, 264, 286, 242, 240, - 144, 265, 171, 212, 154, 155, 167, 173, 175, 177, - 178, 221, 222, 234, 253, 266, 267, 268, 170, 163, - 247, 164, 187, 165, 145, 255, 166, 146, 235, 271, - 0, 183, 243, 208, 147, 207, 236, 270, 269, 294, - 300, 301, 305, 0, 306, 343, 342, 346, 0, 1357, - 0, 0, 0, 348, 0, 0, 0, 0, 0, 299, - 181, 142, 282, 0, 227, 352, 0, 0, 0, 0, - 0, 0, 223, 298, 0, 0, 0, 0, 251, 344, - 0, 0, 0, 0, 192, 233, 0, 252, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 259, 280, 292, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 283, 0, 0, 0, 291, - 0, 0, 0, 0, 0, 0, 217, 218, 219, 220, - 314, 316, 161, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 304, 180, 186, 0, 188, 160, 232, 182, - 289, 195, 0, 224, 191, 256, 196, 202, 244, 288, - 230, 249, 158, 279, 257, 206, 347, 351, 354, 0, - 355, 356, 0, 0, 357, 358, 359, 0, 0, 361, - 362, 0, 0, 0, 0, 0, 0, 1353, 0, 1350, - 0, 0, 0, 1352, 1349, 1351, 1355, 1356, 0, 0, - 0, 1354, 143, 0, 200, 70, 241, 179, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 229, 0, 0, 295, 296, 297, - 281, 0, 0, 0, 0, 0, 174, 0, 0, 199, + 662, 663, 664, 665, 666, 722, 0, 0, 295, 296, + 297, 281, 97, 0, 27, 87, 69, 0, 0, 0, + 0, 0, 0, 0, 229, 313, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, + 318, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 159, 1637, 1640, 1338, 1339, 1340, 1341, 1342, 1343, - 1344, 1345, 1346, 1347, 1348, 1360, 1361, 1362, 1363, 1364, - 1365, 1358, 1359, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 148, 263, 277, + 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 350, 0, 349, 353, + 345, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 341, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 360, 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, 226, 0, 0, 302, 168, 293, 0, 285, 152, 0, 284, 225, 272, 276, 211, 205, 151, 274, 209, 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1641, 287, 0, 0, 0, 1634, 0, 1633, 262, - 1635, 1638, 198, 0, 0, 0, 303, 0, 248, 231, + 0, 0, 0, 0, 0, 0, 0, 317, 0, 0, + 0, 0, 287, 0, 0, 0, 0, 0, 0, 262, + 0, 0, 198, 0, 0, 0, 303, 0, 248, 231, 0, 0, 0, 246, 201, 273, 239, 278, 264, 286, 242, 240, 144, 265, 171, 212, 154, 155, 167, 173, 175, 177, 178, 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, 164, 187, 165, 145, 255, 166, 146, - 235, 271, 1639, 183, 243, 208, 147, 207, 236, 270, - 269, 294, 300, 301, 305, 0, 306, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 181, 142, 282, 0, 227, 0, 0, 0, + 235, 271, 0, 183, 243, 208, 147, 207, 236, 270, + 269, 294, 300, 301, 305, 0, 306, 343, 342, 346, + 0, 1358, 0, 0, 0, 348, 0, 0, 0, 0, + 0, 299, 181, 142, 282, 0, 227, 352, 0, 0, 0, 0, 0, 0, 223, 298, 0, 0, 0, 0, - 251, 0, 0, 0, 0, 0, 192, 233, 0, 252, + 251, 344, 0, 0, 0, 0, 192, 233, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 280, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, 0, 0, 0, 291, 0, 0, 0, 0, 0, 0, 217, 218, - 219, 220, 184, 0, 161, 0, 0, 0, 0, 0, + 219, 220, 314, 316, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 180, 186, 0, 188, 160, 232, 182, 289, 195, 0, 224, 191, 256, 196, 202, - 244, 288, 230, 249, 158, 279, 257, 206, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 143, 0, 200, 0, 241, 179, + 244, 288, 230, 249, 158, 279, 257, 206, 347, 351, + 354, 0, 355, 356, 0, 0, 357, 358, 359, 0, + 0, 361, 362, 0, 0, 0, 0, 0, 0, 1354, + 0, 1351, 0, 0, 0, 1353, 1350, 1352, 1356, 1357, + 0, 0, 0, 1355, 143, 0, 200, 70, 241, 179, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 229, 0, 0, 295, - 296, 297, 281, 917, 0, 0, 0, 0, 174, 0, + 296, 297, 281, 0, 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 103, 0, 0, 918, + 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 159, 0, 0, 913, 914, 915, 912, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 159, 1638, 1641, 1339, 1340, 1341, 1342, + 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1361, 1362, 1363, + 1364, 1365, 1366, 1359, 1360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, @@ -2048,13 +2003,13 @@ var yyAct = [...]int{ 151, 274, 209, 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 287, 0, 0, 0, 0, 0, - 0, 262, 0, 0, 198, 0, 0, 0, 303, 0, + 0, 0, 0, 1642, 287, 0, 0, 0, 1635, 0, + 1634, 262, 1636, 1639, 198, 0, 0, 0, 303, 0, 248, 231, 0, 0, 0, 246, 201, 273, 239, 278, 264, 286, 242, 240, 144, 265, 171, 212, 154, 155, 167, 173, 175, 177, 178, 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, 164, 187, 165, 145, 255, - 166, 146, 235, 271, 0, 183, 243, 208, 147, 207, + 166, 146, 235, 271, 1640, 183, 243, 208, 147, 207, 236, 270, 269, 294, 300, 301, 305, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 181, 142, 282, 0, 227, 0, @@ -2076,27 +2031,27 @@ var yyAct = [...]int{ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 229, 0, - 0, 295, 296, 297, 281, 0, 0, 0, 0, 0, - 174, 428, 0, 199, 0, 0, 0, 258, 213, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 103, 436, - 437, 0, 0, 0, 0, 156, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 441, 0, 0, 0, 0, + 0, 295, 296, 297, 281, 918, 0, 0, 0, 0, + 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, + 0, 919, 0, 0, 0, 156, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 159, 0, 0, 914, 915, + 916, 913, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, 226, 0, 0, 302, - 168, 293, 410, 285, 152, 409, 284, 225, 272, 276, + 168, 293, 0, 285, 152, 0, 284, 225, 272, 276, 211, 205, 151, 274, 209, 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, 0, 0, 0, 0, 0, 262, 0, 0, 198, 0, 0, 0, 303, 0, 248, 231, 0, 0, 0, 246, 201, 273, - 239, 278, 264, 286, 427, 240, 144, 265, 171, 212, + 239, 278, 264, 286, 242, 240, 144, 265, 171, 212, 154, 155, 167, 173, 175, 177, 178, 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, 164, 187, 165, 145, 255, 166, 146, 235, 271, 0, 183, 243, 208, @@ -2109,11 +2064,11 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 259, 280, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, 0, 0, 0, 291, 0, 0, 0, 0, - 0, 430, 217, 218, 219, 220, 184, 0, 161, 0, + 0, 0, 217, 218, 219, 220, 184, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 180, - 186, 0, 188, 160, 232, 182, 289, 195, 0, 438, - 433, 434, 196, 202, 244, 288, 230, 249, 158, 279, - 257, 435, 0, 0, 0, 0, 0, 0, 0, 0, + 186, 0, 188, 160, 232, 182, 289, 195, 0, 224, + 191, 256, 196, 202, 244, 288, 230, 249, 158, 279, + 257, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, @@ -2121,67 +2076,67 @@ var yyAct = [...]int{ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 97, 0, 0, 295, 296, 297, 281, 0, 0, 0, - 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, - 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, - 1005, 0, 103, 0, 0, 0, 0, 0, 0, 156, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 0, 0, 295, 296, 297, 281, 0, 0, 0, + 0, 0, 174, 428, 0, 199, 0, 0, 0, 258, + 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 436, 437, 0, 0, 0, 0, 156, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 148, 263, 277, 157, 254, - 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, - 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, - 226, 0, 0, 302, 168, 293, 0, 285, 152, 0, - 284, 225, 272, 276, 211, 205, 151, 274, 209, 204, - 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 287, 0, 0, 0, 0, 0, 0, 262, 0, 0, - 198, 0, 0, 0, 303, 0, 248, 231, 0, 0, - 0, 246, 201, 273, 239, 278, 264, 286, 242, 240, - 144, 265, 171, 212, 154, 155, 167, 173, 175, 177, - 178, 221, 222, 234, 253, 266, 267, 268, 170, 163, - 247, 164, 187, 165, 145, 255, 166, 146, 235, 271, - 0, 183, 243, 208, 147, 207, 236, 270, 269, 294, - 300, 301, 305, 0, 306, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, - 181, 142, 282, 0, 227, 0, 0, 0, 0, 0, - 0, 0, 223, 298, 0, 0, 0, 0, 251, 0, - 0, 0, 0, 0, 192, 233, 0, 252, 0, 0, + 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, + 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, + 193, 194, 149, 0, 245, 172, 185, 169, 226, 0, + 0, 302, 168, 293, 410, 285, 152, 409, 284, 225, + 272, 276, 211, 205, 151, 274, 209, 204, 197, 176, + 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 259, 280, 292, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 283, 0, 0, 0, 291, - 0, 0, 0, 0, 0, 0, 217, 218, 219, 220, - 184, 0, 161, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 304, 180, 186, 0, 188, 160, 232, 182, - 289, 195, 0, 224, 191, 256, 196, 202, 244, 288, - 230, 249, 158, 279, 257, 206, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, + 0, 0, 0, 0, 0, 262, 0, 0, 198, 0, + 0, 0, 303, 0, 248, 231, 0, 0, 0, 246, + 201, 273, 239, 278, 264, 286, 427, 240, 144, 265, + 171, 212, 154, 155, 167, 173, 175, 177, 178, 221, + 222, 234, 253, 266, 267, 268, 170, 163, 247, 164, + 187, 165, 145, 255, 166, 146, 235, 271, 0, 183, + 243, 208, 147, 207, 236, 270, 269, 294, 300, 301, + 305, 0, 306, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 299, 181, 142, + 282, 0, 227, 0, 0, 0, 0, 0, 0, 0, + 223, 298, 0, 0, 0, 0, 251, 0, 0, 0, + 0, 0, 192, 233, 0, 252, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 259, 280, + 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 283, 0, 0, 0, 291, 0, 0, + 0, 0, 0, 430, 217, 218, 219, 220, 184, 0, + 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 304, 180, 186, 0, 188, 160, 232, 182, 289, 195, + 0, 438, 433, 434, 196, 202, 244, 288, 230, 249, + 158, 279, 257, 435, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 143, 0, 200, 70, 241, 179, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 229, 0, 0, 295, 296, 297, - 281, 0, 0, 0, 0, 0, 174, 0, 0, 199, + 143, 0, 200, 0, 241, 179, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 97, 0, 0, 295, 296, 297, 281, 0, + 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 103, 436, 437, 0, 0, 0, + 94, 0, 1006, 0, 103, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 441, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, - 185, 169, 226, 0, 0, 302, 168, 293, 410, 285, - 152, 409, 284, 225, 272, 276, 211, 205, 151, 274, + 185, 169, 226, 0, 0, 302, 168, 293, 0, 285, + 152, 0, 284, 225, 272, 276, 211, 205, 151, 274, 209, 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2203,30 +2158,30 @@ var yyAct = [...]int{ 0, 291, 0, 0, 0, 0, 0, 0, 217, 218, 219, 220, 184, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 180, 186, 0, 188, 160, - 232, 182, 289, 195, 0, 438, 433, 434, 196, 202, - 244, 288, 230, 249, 158, 279, 257, 435, 0, 0, + 232, 182, 289, 195, 0, 224, 191, 256, 196, 202, + 244, 288, 230, 249, 158, 279, 257, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 143, 0, 200, 0, 241, 179, + 0, 0, 0, 0, 143, 0, 200, 70, 241, 179, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 229, 0, 0, 295, - 296, 297, 281, 0, 0, 0, 0, 0, 174, 606, + 296, 297, 281, 0, 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 103, 0, 0, 604, + 0, 0, 0, 0, 0, 0, 103, 436, 437, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 602, 0, 0, 0, 148, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, 226, 0, 0, 302, 168, 293, - 0, 285, 152, 0, 284, 225, 272, 276, 211, 205, + 410, 285, 152, 409, 284, 225, 272, 276, 211, 205, 151, 274, 209, 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2248,8 +2203,8 @@ var yyAct = [...]int{ 0, 0, 0, 291, 0, 0, 0, 0, 0, 0, 217, 218, 219, 220, 184, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 180, 186, 0, - 188, 160, 232, 182, 289, 195, 0, 224, 191, 256, - 196, 202, 244, 288, 230, 249, 158, 279, 257, 206, + 188, 160, 232, 182, 289, 195, 0, 438, 433, 434, + 196, 202, 244, 288, 230, 249, 158, 279, 257, 435, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2259,7 +2214,7 @@ var yyAct = [...]int{ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 229, 0, 0, 295, 296, 297, 281, 0, 0, 0, 0, 0, - 174, 600, 0, 199, 0, 0, 0, 258, 213, 0, + 174, 606, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 604, 0, 0, 0, 156, 0, 0, 0, 0, @@ -2304,15 +2259,15 @@ var yyAct = [...]int{ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 229, 0, 0, 295, 296, 297, 281, 0, 0, 0, - 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, + 0, 0, 174, 600, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2228, 0, - 103, 723, 0, 0, 0, 0, 0, 156, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 0, 0, 604, 0, 0, 0, 156, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 602, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, 226, 0, @@ -2352,13 +2307,13 @@ var yyAct = [...]int{ 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 103, 0, 0, 604, 0, 0, 0, 156, + 2229, 0, 103, 724, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 602, 0, 0, 0, 148, 263, 277, 157, 254, + 0, 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, 226, 0, 0, 302, 168, 293, 0, 285, 152, 0, @@ -2403,7 +2358,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, 1835, 0, 0, 0, 148, 263, 277, + 0, 0, 0, 602, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, 226, 0, 0, 302, 168, 293, 0, 285, @@ -2439,7 +2394,7 @@ var yyAct = [...]int{ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 229, 0, 0, 295, - 296, 297, 281, 0, 0, 0, 0, 0, 174, 1294, + 296, 297, 281, 0, 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 604, @@ -2448,7 +2403,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, 148, + 0, 0, 0, 0, 0, 1836, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, 226, 0, 0, 302, 168, 293, @@ -2485,10 +2440,10 @@ var yyAct = [...]int{ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 229, 0, 0, 295, 296, 297, 281, 0, 0, 0, 0, 0, - 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, + 174, 1295, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 103, 723, - 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, + 0, 604, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2532,8 +2487,8 @@ var yyAct = [...]int{ 229, 0, 0, 295, 296, 297, 281, 0, 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1983, 0, 0, 0, - 103, 0, 0, 0, 0, 0, 0, 156, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 724, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2577,13 +2532,13 @@ var yyAct = [...]int{ 140, 141, 229, 0, 0, 295, 296, 297, 281, 0, 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1984, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1672, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, @@ -2623,12 +2578,12 @@ var yyAct = [...]int{ 281, 0, 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 867, 0, 0, 0, 103, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1673, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, @@ -2668,7 +2623,7 @@ var yyAct = [...]int{ 296, 297, 281, 0, 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 103, 0, 0, 604, + 0, 0, 868, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2714,11 +2669,11 @@ var yyAct = [...]int{ 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, - 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, + 0, 604, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1698, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, @@ -2764,7 +2719,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, - 1309, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1699, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, 226, 0, @@ -2804,12 +2759,12 @@ var yyAct = [...]int{ 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 103, 0, 0, 1307, 0, 0, 0, 156, + 0, 0, 103, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, 185, 169, @@ -2845,53 +2800,53 @@ var yyAct = [...]int{ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 1236, 0, 0, 295, 296, 297, - 281, 229, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, - 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, + 138, 139, 140, 141, 229, 0, 0, 295, 296, 297, + 281, 0, 0, 0, 0, 0, 174, 0, 0, 199, + 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 103, 0, 0, 0, 0, 0, 0, 156, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, + 0, 0, 0, 0, 103, 0, 0, 1308, 0, 0, + 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 148, 263, 277, + 157, 254, 290, 162, 261, 153, 228, 250, 0, 0, + 150, 275, 260, 210, 193, 194, 149, 0, 245, 172, + 185, 169, 226, 0, 0, 302, 168, 293, 0, 285, + 152, 0, 284, 225, 272, 276, 211, 205, 151, 274, + 209, 204, 197, 176, 189, 237, 203, 238, 190, 215, + 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, - 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, - 210, 193, 194, 149, 0, 245, 172, 185, 169, 226, - 0, 0, 302, 168, 293, 0, 285, 152, 0, 284, - 225, 272, 276, 211, 205, 151, 274, 209, 204, 197, - 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, + 0, 0, 287, 0, 0, 0, 0, 0, 0, 262, + 0, 0, 198, 0, 0, 0, 303, 0, 248, 231, + 0, 0, 0, 246, 201, 273, 239, 278, 264, 286, + 242, 240, 144, 265, 171, 212, 154, 155, 167, 173, + 175, 177, 178, 221, 222, 234, 253, 266, 267, 268, + 170, 163, 247, 164, 187, 165, 145, 255, 166, 146, + 235, 271, 0, 183, 243, 208, 147, 207, 236, 270, + 269, 294, 300, 301, 305, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 287, - 0, 0, 0, 0, 0, 0, 262, 0, 0, 198, - 0, 0, 0, 303, 0, 248, 231, 0, 0, 0, - 246, 201, 273, 239, 278, 264, 286, 242, 240, 144, - 265, 171, 212, 154, 155, 167, 173, 175, 177, 178, - 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, - 164, 187, 165, 145, 255, 166, 146, 235, 271, 0, - 183, 243, 208, 147, 207, 236, 270, 269, 294, 300, - 301, 305, 0, 306, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 299, 181, - 142, 282, 0, 227, 0, 0, 0, 0, 0, 0, - 0, 223, 298, 0, 0, 0, 0, 251, 0, 0, - 0, 0, 0, 192, 233, 0, 252, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, - 280, 292, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 283, 0, 0, 0, 291, 0, - 0, 0, 0, 0, 0, 217, 218, 219, 220, 184, - 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 304, 180, 186, 0, 188, 160, 232, 182, 289, - 195, 0, 224, 191, 256, 196, 202, 244, 288, 230, - 249, 158, 279, 257, 206, 0, 0, 0, 0, 0, + 0, 299, 181, 142, 282, 0, 227, 0, 0, 0, + 0, 0, 0, 0, 223, 298, 0, 0, 0, 0, + 251, 0, 0, 0, 0, 0, 192, 233, 0, 252, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 259, 280, 292, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 283, 0, 0, + 0, 291, 0, 0, 0, 0, 0, 0, 217, 218, + 219, 220, 184, 0, 161, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 304, 180, 186, 0, 188, 160, + 232, 182, 289, 195, 0, 224, 191, 256, 196, 202, + 244, 288, 230, 249, 158, 279, 257, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 143, 0, 200, 0, 241, 179, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 229, 0, 0, 295, 296, 297, 281, + 0, 0, 0, 0, 143, 0, 200, 0, 241, 179, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 1237, 0, 0, 295, + 296, 297, 281, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2909,7 +2864,7 @@ var yyAct = [...]int{ 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 287, 0, 0, 1219, 0, 0, 0, 262, 0, + 0, 287, 0, 0, 0, 0, 0, 0, 262, 0, 0, 198, 0, 0, 0, 303, 0, 248, 231, 0, 0, 0, 246, 201, 273, 239, 278, 264, 286, 242, 240, 144, 265, 171, 212, 154, 155, 167, 173, 175, @@ -2954,7 +2909,7 @@ var yyAct = [...]int{ 274, 209, 204, 197, 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 287, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 287, 0, 0, 1220, 0, 0, 0, 262, 0, 0, 198, 0, 0, 0, 303, 0, 248, 231, 0, 0, 0, 246, 201, 273, 239, 278, 264, 286, 242, 240, 144, 265, 171, 212, 154, 155, 167, @@ -2977,7 +2932,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, 393, 0, 0, 143, 0, 200, 0, 241, + 0, 0, 0, 0, 0, 143, 0, 200, 0, 241, 179, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, @@ -3002,7 +2957,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 287, 0, 0, 0, 0, 0, 0, 262, 0, 0, 198, 0, 0, 0, 303, 0, 248, 231, 0, 0, 0, 246, 201, 273, 239, - 278, 264, 286, 330, 240, 144, 265, 171, 212, 154, + 278, 264, 286, 242, 240, 144, 265, 171, 212, 154, 155, 167, 173, 175, 177, 178, 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, 164, 187, 165, 145, 255, 166, 146, 235, 271, 0, 183, 243, 208, 147, @@ -3013,7 +2968,7 @@ var yyAct = [...]int{ 0, 0, 0, 251, 0, 0, 0, 0, 0, 192, 233, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 280, 292, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 331, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, 0, 0, 0, 291, 0, 0, 0, 0, 0, 0, 217, 218, 219, 220, 184, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 180, 186, @@ -3022,13 +2977,13 @@ var yyAct = [...]int{ 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 143, 0, 200, + 0, 0, 0, 0, 393, 0, 0, 143, 0, 200, 0, 241, 179, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 229, 0, 0, 295, 296, 297, 281, 0, 0, 0, 0, - 100, 174, 0, 0, 199, 0, 0, 0, 258, 213, + 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, @@ -3047,7 +3002,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 287, 0, 0, 0, 0, 0, 0, 262, 0, 0, 198, 0, 0, 0, 303, 0, 248, 231, 0, 0, 0, 246, 201, - 273, 239, 278, 264, 286, 242, 240, 144, 265, 171, + 273, 239, 278, 264, 286, 330, 240, 144, 265, 171, 212, 154, 155, 167, 173, 175, 177, 178, 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, 164, 187, 165, 145, 255, 166, 146, 235, 271, 0, 183, 243, @@ -3059,7 +3014,7 @@ var yyAct = [...]int{ 0, 192, 233, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 280, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 283, 0, 0, 0, 291, 0, 0, 0, + 0, 331, 283, 0, 0, 0, 291, 0, 0, 0, 0, 0, 0, 217, 218, 219, 220, 184, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 180, 186, 0, 188, 160, 232, 182, 289, 195, 0, @@ -3073,7 +3028,7 @@ var yyAct = [...]int{ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 229, 0, 0, 295, 296, 297, 281, 0, 0, - 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, + 0, 0, 100, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 156, 0, @@ -3118,10 +3073,10 @@ var yyAct = [...]int{ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 229, 0, 0, 295, 296, 297, 281, - 1276, 0, 0, 0, 0, 174, 0, 0, 199, 0, + 0, 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 828, 829, 830, 1278, 0, 0, 0, + 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3154,53 +3109,23 @@ var yyAct = [...]int{ 220, 184, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 180, 186, 0, 188, 160, 232, 182, 289, 195, 0, 224, 191, 256, 196, 202, 244, - 288, 230, 249, 158, 279, 257, 206, 0, 0, 229, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 143, 0, 200, 0, 241, 179, 828, - 829, 830, 1278, 0, 0, 0, 156, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 295, 296, - 297, 281, 0, 0, 0, 0, 0, 0, 0, 0, + 288, 230, 249, 158, 279, 257, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, - 153, 228, 250, 0, 0, 150, 275, 260, 210, 193, - 194, 149, 0, 245, 172, 185, 169, 226, 0, 0, - 302, 168, 293, 0, 285, 152, 0, 284, 225, 272, - 276, 211, 205, 151, 274, 209, 204, 197, 176, 189, - 237, 203, 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 287, 0, 0, - 0, 0, 0, 0, 262, 0, 0, 198, 0, 0, - 0, 303, 0, 248, 231, 0, 0, 0, 246, 201, - 273, 239, 278, 264, 286, 242, 240, 144, 265, 171, - 212, 154, 155, 167, 173, 175, 177, 178, 221, 222, - 234, 253, 266, 267, 268, 170, 163, 247, 164, 187, - 165, 145, 255, 166, 146, 235, 271, 0, 183, 243, - 208, 147, 207, 236, 270, 269, 294, 300, 301, 305, - 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 299, 181, 142, 282, - 0, 227, 0, 0, 0, 0, 0, 0, 0, 223, - 298, 0, 0, 0, 0, 251, 0, 0, 0, 0, - 0, 192, 233, 0, 252, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 259, 280, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 283, 0, 0, 0, 291, 0, 0, 0, - 0, 0, 0, 217, 218, 219, 220, 184, 0, 161, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, - 180, 186, 0, 188, 160, 232, 182, 289, 195, 0, - 224, 191, 256, 196, 202, 244, 288, 230, 249, 158, - 279, 257, 206, 0, 0, 229, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, + 0, 0, 0, 143, 0, 200, 0, 241, 179, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 229, 0, 0, 295, 296, + 297, 281, 1277, 0, 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, - 0, 200, 0, 241, 179, 828, 829, 830, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 829, 830, 831, 1279, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 295, 296, 297, 281, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, 250, 0, @@ -3217,89 +3142,163 @@ var yyAct = [...]int{ 173, 175, 177, 178, 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, 164, 187, 165, 145, 255, 166, 146, 235, 271, 0, 183, 243, 208, 147, 207, 236, - 270, 269, 294, 300, 301, 305, 0, 306, 913, 914, - 915, 912, 0, 0, 0, 0, 0, 0, 0, 0, + 270, 269, 294, 300, 301, 305, 0, 306, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 181, 142, 282, 0, 227, 0, 0, 0, 0, 0, 0, 0, 223, 298, 0, 0, 0, 0, 251, 0, 0, 0, 0, 0, 192, 233, 0, - 252, 0, 0, 0, 0, 0, 0, 0, 0, 1727, + 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, 280, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, 0, - 0, 1357, 291, 0, 0, 0, 1941, 0, 0, 217, + 0, 0, 291, 0, 0, 0, 0, 0, 0, 217, 218, 219, 220, 184, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 180, 186, 0, 188, - 160, 232, 182, 289, 195, 1234, 224, 191, 256, 196, + 160, 232, 182, 289, 195, 0, 224, 191, 256, 196, 202, 244, 288, 230, 249, 158, 279, 257, 206, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2347, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1923, - 0, 0, 0, 0, 0, 1715, 0, 0, 0, 0, + 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 174, 0, 0, 199, 0, 0, 0, + 258, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 200, 0, 241, - 179, 0, 1734, 1738, 1740, 1742, 1744, 1745, 1747, 0, - 1751, 1748, 1749, 1750, 0, 0, 1729, 1730, 1731, 1732, - 1713, 1714, 1735, 1941, 1716, 0, 1717, 1718, 1719, 1720, - 1721, 1722, 1723, 1724, 1725, 1726, 1733, 0, 0, 0, - 295, 296, 297, 281, 1737, 1739, 1741, 1743, 1746, 1353, - 0, 1350, 1234, 0, 0, 1352, 1349, 1351, 1355, 1356, - 0, 0, 0, 1354, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1941, 2019, 0, 1728, 0, - 0, 0, 0, 0, 0, 0, 1923, 0, 0, 0, + 179, 829, 830, 831, 1279, 0, 0, 0, 156, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 295, 296, 297, 281, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 148, 263, 277, 157, 254, 290, + 162, 261, 153, 228, 250, 0, 0, 150, 275, 260, + 210, 193, 194, 149, 0, 245, 172, 185, 169, 226, + 0, 0, 302, 168, 293, 0, 285, 152, 0, 284, + 225, 272, 276, 211, 205, 151, 274, 209, 204, 197, + 176, 189, 237, 203, 238, 190, 215, 214, 216, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 287, + 0, 0, 0, 0, 0, 0, 262, 0, 0, 198, + 0, 0, 0, 303, 0, 248, 231, 0, 0, 0, + 246, 201, 273, 239, 278, 264, 286, 242, 240, 144, + 265, 171, 212, 154, 155, 167, 173, 175, 177, 178, + 221, 222, 234, 253, 266, 267, 268, 170, 163, 247, + 164, 187, 165, 145, 255, 166, 146, 235, 271, 0, + 183, 243, 208, 147, 207, 236, 270, 269, 294, 300, + 301, 305, 0, 306, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 299, 181, + 142, 282, 0, 227, 0, 0, 0, 0, 0, 0, + 0, 223, 298, 0, 0, 0, 0, 251, 0, 0, + 0, 0, 0, 192, 233, 0, 252, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 259, + 280, 292, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 283, 0, 0, 0, 291, 0, + 0, 0, 0, 0, 0, 217, 218, 219, 220, 184, + 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 304, 180, 186, 0, 188, 160, 232, 182, 289, + 195, 0, 224, 191, 256, 196, 202, 244, 288, 230, + 249, 158, 279, 257, 206, 0, 0, 229, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, + 0, 0, 199, 0, 0, 0, 258, 213, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 143, 0, 200, 0, 241, 179, 829, 830, 831, + 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 295, 296, 297, 281, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 148, 263, 277, 157, 254, 290, 162, 261, 153, 228, + 250, 0, 0, 150, 275, 260, 210, 193, 194, 149, + 0, 245, 172, 185, 169, 226, 0, 0, 302, 168, + 293, 0, 285, 152, 0, 284, 225, 272, 276, 211, + 205, 151, 274, 209, 204, 197, 176, 189, 237, 203, + 238, 190, 215, 214, 216, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 287, 0, 0, 0, 0, + 0, 0, 262, 0, 0, 198, 0, 0, 0, 303, + 0, 248, 231, 0, 0, 0, 246, 201, 273, 239, + 278, 264, 286, 242, 240, 144, 265, 171, 212, 154, + 155, 167, 173, 175, 177, 178, 221, 222, 234, 253, + 266, 267, 268, 170, 163, 247, 164, 187, 165, 145, + 255, 166, 146, 235, 271, 0, 183, 243, 208, 147, + 207, 236, 270, 269, 294, 300, 301, 305, 0, 306, + 914, 915, 916, 913, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 299, 181, 142, 282, 0, 227, + 0, 0, 0, 0, 0, 0, 0, 223, 298, 0, + 0, 0, 0, 251, 0, 0, 0, 0, 0, 192, + 233, 0, 252, 0, 0, 0, 0, 0, 0, 0, + 0, 1728, 0, 0, 0, 259, 280, 292, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 283, 0, 0, 1358, 291, 0, 0, 0, 1942, 0, + 0, 217, 218, 219, 220, 184, 0, 161, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 304, 180, 186, + 0, 188, 160, 232, 182, 289, 195, 1235, 224, 191, + 256, 196, 202, 244, 288, 230, 249, 158, 279, 257, + 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2348, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1924, 0, 0, 0, 0, 0, 1716, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 143, 0, 200, + 0, 241, 179, 0, 1735, 1739, 1741, 1743, 1745, 1746, + 1748, 0, 1752, 1749, 1750, 1751, 0, 0, 1730, 1731, + 1732, 1733, 1714, 1715, 1736, 1942, 1717, 0, 1718, 1719, + 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1734, 0, + 0, 0, 295, 296, 297, 281, 1738, 1740, 1742, 1744, + 1747, 1354, 0, 1351, 1235, 0, 0, 1353, 1350, 1352, + 1356, 1357, 0, 0, 0, 1355, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1942, 2020, 0, + 1729, 0, 0, 0, 0, 0, 0, 0, 1924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1234, 0, 0, 0, 0, 1927, + 0, 0, 0, 0, 0, 0, 1235, 0, 0, 0, + 0, 1928, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1932, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1931, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1923, 0, - 1920, 0, 0, 0, 1922, 1924, 1926, 0, 1928, 1929, - 1930, 1932, 1933, 1934, 1936, 1937, 1938, 1939, 0, 0, - 0, 0, 0, 0, 0, 0, 1338, 1339, 1340, 1341, - 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1360, 1361, 1362, - 1363, 1364, 1365, 1358, 1359, 0, 0, 1942, 350, 0, - 349, 353, 345, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 341, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 360, 0, 1927, 0, 0, 0, - 0, 1940, 0, 0, 0, 0, 0, 1931, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1919, 0, - 363, 0, 0, 364, 0, 0, 0, 1920, 0, 0, - 0, 1922, 1924, 1926, 0, 1928, 1929, 1930, 1932, 1933, - 1934, 1936, 1937, 1938, 1939, 1935, 0, 0, 1927, 0, - 0, 0, 1925, 0, 0, 0, 0, 0, 0, 1931, + 1924, 0, 1921, 0, 0, 0, 1923, 1925, 1927, 0, + 1929, 1930, 1931, 1933, 1934, 1935, 1937, 1938, 1939, 1940, + 0, 0, 0, 0, 0, 0, 0, 0, 1339, 1340, + 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1361, + 1362, 1363, 1364, 1365, 1366, 1359, 1360, 0, 0, 1943, + 350, 0, 349, 353, 345, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 341, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 360, 0, 1928, 0, + 0, 0, 0, 1941, 0, 0, 0, 0, 0, 1932, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1942, 0, 0, 1736, 0, 1920, - 0, 0, 0, 1922, 1924, 1926, 0, 1928, 1929, 1930, - 1932, 1933, 1934, 1936, 1937, 1938, 1939, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1940, 0, + 1920, 0, 363, 0, 0, 364, 0, 0, 0, 1921, + 0, 0, 0, 1923, 1925, 1927, 0, 1929, 1930, 1931, + 1933, 1934, 1935, 1937, 1938, 1939, 1940, 1936, 0, 0, + 1928, 0, 0, 0, 1926, 0, 0, 0, 0, 0, + 0, 1932, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1943, 0, 0, 1737, + 0, 1921, 0, 0, 0, 1923, 1925, 1927, 0, 1929, + 1930, 1931, 1933, 1934, 1935, 1937, 1938, 1939, 1940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1919, 1942, 0, 0, 0, + 1941, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1920, 1943, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 343, - 342, 346, 1935, 0, 0, 0, 0, 348, 0, 1925, - 1940, 0, 0, 0, 0, 0, 0, 0, 0, 352, - 0, 0, 0, 0, 0, 0, 0, 1919, 0, 0, - 0, 0, 0, 344, 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1935, 0, 0, 0, 0, 0, - 0, 1925, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 343, 342, 346, 1936, 0, 0, 0, 0, 348, + 0, 1926, 1941, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 0, 0, 0, 0, 0, 0, 1920, + 0, 0, 0, 0, 0, 344, 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1936, 0, 0, 0, + 0, 0, 0, 1926, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 347, 351, 354, 0, 355, 356, 0, 0, 357, 358, - 359, 0, 0, 361, 362, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 351, 354, 0, 355, 356, 0, 0, + 357, 358, 359, 0, 0, 361, 362, } var yyPact = [...]int{ - 210, -1000, -300, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 18767, -1000, -1000, - 1591, -1000, 7900, 19219, 81, 19219, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 273, - -1000, 18315, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 234, - 21038, 153, -1000, 1995, -1000, -1000, -1000, -1000, 619, 320, - 17863, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1169, 14, 320, 395, 399, - 611, 611, 9256, 1995, 187, 62, -1000, 700, 210, 207, - 19219, -1000, 542, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 210, -1000, -299, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 18769, -1000, -1000, + 1671, -1000, 7902, 19221, 70, 19221, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 289, + -1000, 18317, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 248, + 21040, 137, -1000, 1951, -1000, -1000, -1000, -1000, 620, 301, + 17865, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 674, 15, 301, 396, 398, + 458, 458, 9258, 1951, 187, 62, -1000, 510, 210, 226, + 19221, -1000, 531, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -3319,78 +3318,78 @@ 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, - 1995, 1995, 19219, -63, 660, -1000, 224, 219, 186, 538, - -1000, -1000, -1000, -1000, 2016, -1000, 19219, 1778, 19219, -1000, - 1011, 192, 1742, 1887, 1529, 387, 1797, -1000, -1000, 1770, - -1000, 30, -3, 106, -1000, -1000, 188, -1000, -1000, -1000, - -1000, -1000, 72, -1000, 15, -1000, 7, -1000, -1000, -1000, - -101, -1000, -1000, -1000, -1000, -191, 1864, 1939, 1601, 1998, - 1942, 1925, 1913, 1911, 2, 229, 229, 229, 251, 229, - 270, -1000, -1000, -1000, -1000, -1000, -1000, 328, -1000, -1000, - -1000, -1000, 1549, 19219, -1000, 1612, 601, 601, 714, 183, - -1000, -1000, -97, -115, 601, 601, -115, 16, -1000, 1907, - 1903, -1000, -1000, -1000, -1000, -1000, -1000, 234, 234, 239, - -1000, -195, -1000, 378, -1000, 361, -1000, 285, 178, 1553, - 715, -1000, 606, 19219, 19219, 19219, 606, 606, 11076, 10624, - 517, -1000, 1939, 1601, -1000, 1343, 1184, 1601, 234, 234, - 234, 234, 234, 234, 234, 19219, 5577, 5577, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 216, 1768, -1000, 19219, - 1939, 1864, 1939, -1000, 482, 906, 1095, -1000, -1000, 224, - 1527, -1000, 625, -1000, -1000, -1000, -1000, 19219, 193, -1000, - 1067, 1765, -1000, 307, 1354, 1531, -1000, 52, 7984, 15144, - 1011, 15144, 19219, -1000, -1000, -1000, -1000, -102, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -69, -1000, - -1000, -290, 1864, 6040, -1000, -1000, 6040, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 260, 229, -1000, 1114, 720, - 15144, 1011, 924, 19219, 229, 239, -1000, 19219, 1549, 1894, - 19219, 1991, 6966, 1991, 19219, -1000, -1000, 601, 601, -1000, - 714, 714, -1000, -1000, -106, 1991, 1991, -121, 19219, 19219, - 229, -1000, -1000, 1114, 15144, 14692, -1000, -141, 389, 367, - 381, -1000, -1000, 2038, -1000, -1000, 1500, 306, 10172, 237, - 15144, 3719, -1000, -1000, 606, 606, 606, 3719, 3719, 558, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 19219, 1864, -1000, - -1000, -1000, -1000, -1000, 1114, 15144, 1011, 19219, 19219, 19219, - 20423, -1000, 1493, -1000, -1000, 8804, 475, 6040, 807, 1763, - -1000, -1000, 1755, 1751, 1750, 1748, 1747, 1745, 1744, -1000, - 1692, -1000, -1000, 1743, 1740, 1739, 1737, -1000, -1000, -1000, - -1000, -1000, -1000, 1736, -1000, -1000, -1000, 1735, 1692, -1000, - -1000, 1721, 1719, 1718, 1717, 1715, -1000, -1000, -1000, -1000, - -1000, -1000, 1093, 1084, 2139, -1000, -1000, -1000, -1000, 3256, - 6966, 6966, 6966, 6966, -1000, -1000, 1656, 6040, 1714, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 7429, -1000, 1709, 1708, - 1703, 1701, 1695, 1692, 1690, 1079, 1689, 1684, 1683, 6966, - 1679, 1678, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1951, 1951, 19221, -71, 646, -1000, 236, 224, 186, 517, + -1000, -1000, -1000, -1000, 2000, -1000, 19221, 1620, 19221, -1000, + 919, 203, 1743, 1863, 1443, 424, 1769, -1000, -1000, 1745, + -1000, 24, -3, 103, -1000, -1000, 201, -1000, -1000, -1000, + -1000, -1000, 53, -1000, 13, -1000, 22, -1000, -1000, -1000, + -106, -1000, -1000, -1000, -1000, -192, 1835, 1941, 1499, 1985, + 1926, 1914, 1912, 1896, 9, 247, 247, 247, 277, 247, + 286, -1000, -1000, -1000, -1000, -1000, -1000, 359, -1000, -1000, + -1000, -1000, 1424, 19221, -1000, 1600, 596, 596, 687, 193, + -1000, -1000, -89, -127, 596, 596, -127, 12, -1000, 1931, + 1895, -1000, -1000, -1000, -1000, -1000, -1000, 248, 248, 258, + -1000, -195, -1000, 381, -1000, 375, -1000, 285, 183, 1426, + 683, -1000, 599, 19221, 19221, 19221, 599, 599, 11078, 10626, + 477, -1000, 1941, 1499, -1000, 1280, 1883, 1499, 248, 248, + 248, 248, 248, 248, 248, 19221, 5579, 5579, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 216, 1744, -1000, 19221, + 1941, 1835, 1941, -1000, 470, 892, 1022, -1000, -1000, 236, + 1528, -1000, 637, -1000, -1000, -1000, -1000, 19221, 219, -1000, + 1013, 1741, -1000, 276, 1310, 1590, -1000, 57, 7986, 15146, + 919, 15146, 19221, -1000, -1000, -1000, -1000, -114, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -86, -1000, + -1000, -290, 1835, 6042, -1000, -1000, 6042, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 264, 247, -1000, 1033, 677, + 15146, 919, 904, 19221, 247, 258, -1000, 19221, 1424, 1870, + 19221, 1993, 7431, 1993, 19221, -1000, -1000, 596, 596, -1000, + 687, 687, -1000, -1000, -116, 1993, 1993, -158, 19221, 19221, + 247, -1000, -1000, 1033, 15146, 14694, -1000, -176, 389, 377, + 379, -1000, -1000, 2012, -1000, -1000, 1362, 296, 10174, 227, + 15146, 3721, -1000, -1000, 599, 599, 599, 3721, 3721, 541, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 19221, 1835, -1000, + -1000, -1000, -1000, -1000, 1033, 15146, 919, 19221, 19221, 19221, + 20425, -1000, 1412, -1000, -1000, 8806, 464, 6042, -1000, 1355, + 1740, -1000, -1000, 1738, 1737, 1736, 1722, 1720, 1719, 1718, + -1000, 1675, -1000, -1000, 1716, 1715, 1712, 1710, -1000, -1000, + -1000, -1000, -1000, -1000, 1709, -1000, -1000, -1000, 1708, 1675, + -1000, -1000, 1707, 1706, 1696, 1693, 1691, -1000, -1000, -1000, + -1000, -1000, -1000, 1021, 1015, 1456, -1000, -1000, -1000, -1000, + 3258, 7431, 7431, 7431, 7431, -1000, -1000, 1625, 6042, 1690, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 6968, -1000, 1689, + 1688, 1687, 1679, 1677, 1675, 1674, 1014, 1673, 1672, 1669, + 7431, 1667, 1664, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1493, -1000, -288, -1000, 9720, 19219, 19219, -1000, - 1864, -1000, 1864, 2359, -1000, 1919, -1000, 224, 103, -1000, - -1000, -1000, -1000, -1000, -1000, 448, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1543, -1000, 19219, -1000, -1000, - 52, 15144, 648, -1000, -1000, -1000, -1000, -1000, -1000, 152, - -1000, -1000, 119, -1000, 254, -42, 1498, -1000, -1000, 10, - 114, 1063, -1000, 895, 441, 1541, -1000, 779, 17411, 19219, - -17, -1000, 1871, 1417, -1000, -42, 1500, 1777, -1000, -1000, - -1000, 1844, 19219, 16959, -1000, 1676, 1496, -1000, -1000, 6040, - -1000, -1000, 1991, 1991, 1991, 601, 20423, 714, 19219, 714, - -1000, -1000, 714, -1000, 436, -1000, 19219, -17, 1417, 1987, - 1502, -1000, -1000, -1000, -1000, 1893, 19671, 187, -1000, -1000, - 383, 352, 364, 1011, 252, -1000, -1000, 1500, -1000, -1000, - -1000, 1674, 658, -1000, -1000, 6966, -1000, 1041, -1000, 3719, - 3719, 3719, -1000, -1000, 12884, -1000, -1000, -1000, 1535, 1500, - 1796, 1520, -1000, 1520, -1000, -1000, -1000, 1991, 5577, -1000, - 14692, -1000, 6040, 6040, 6040, 6040, -1000, 16500, -1000, 16048, - -1000, 322, 6503, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 6040, 1900, 1900, 1900, 6040, 681, 6040, 6040, -1000, 823, - 8024, 1900, 1900, 1900, 1900, 1900, -1000, 2785, 1900, 1900, - 1900, 1900, -1000, -1000, 6966, 6966, 6966, 6966, 6966, 6966, - 6966, 6966, 6966, 6966, 6966, 6966, 1654, 659, 6966, 6966, - 6966, 1184, 1865, 1518, -1000, -1000, -1000, -1000, -1000, 677, - 1041, 6040, 20616, 6040, 6040, 6040, -1000, 1341, 1336, -1000, - -1000, 6040, -1000, 6040, 6966, 6040, -1000, 1900, 1056, 1991, - 1387, -1000, 1673, -1000, 1485, 1840, -1000, 435, 1515, -1000, - 657, 1446, -1000, -1000, -1000, -1000, 428, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 1412, -1000, -288, -1000, 9722, 19221, 19221, + -1000, 1835, -1000, 1835, 2361, -1000, 1938, -1000, 236, 105, + -1000, -1000, -1000, -1000, -1000, -1000, 463, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1418, -1000, 19221, -1000, + -1000, 57, 15146, 630, -1000, -1000, -1000, -1000, -1000, -1000, + 143, -1000, -1000, 116, -1000, 274, -41, 1515, -1000, -1000, + 2, 113, 1009, -1000, 1091, 448, 1409, -1000, 944, 17413, + 19221, -17, -1000, 1856, 1314, -1000, -41, 1362, 1550, -1000, + -1000, -1000, 1822, 19221, 16961, -1000, 1657, 1481, -1000, -1000, + 6042, -1000, -1000, 1993, 1993, 1993, 596, 20425, 687, 19221, + 687, -1000, -1000, 687, -1000, 443, -1000, 19221, -17, 1314, + 1899, 1331, -1000, -1000, -1000, -1000, 1869, 19673, 187, -1000, + -1000, 384, 374, 364, 919, 268, -1000, -1000, 1362, -1000, + -1000, -1000, 1655, 643, -1000, -1000, 7431, -1000, 1110, -1000, + 3721, 3721, 3721, -1000, -1000, 12886, -1000, -1000, -1000, 1388, + 1362, 1767, 1383, -1000, 1383, -1000, -1000, -1000, 1993, 5579, + -1000, 14694, -1000, 6042, 6042, 6042, 6042, -1000, 16502, -1000, + 16050, -1000, 292, 6505, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 6042, 1877, 1877, 1877, 6042, 664, 6042, 6042, -1000, + 863, 8026, 1877, 1877, 1877, 1877, 1877, -1000, 2787, 1877, + 1877, 1877, 1877, -1000, -1000, 7431, 7431, 7431, 7431, 7431, + 7431, 7431, 7431, 7431, 7431, 7431, 7431, 1622, 702, 7431, + 7431, 7431, 1883, 1796, 1378, -1000, -1000, -1000, -1000, -1000, + 645, 1110, 6042, 20618, 6042, 6042, 6042, -1000, 1263, 1259, + -1000, -1000, 6042, -1000, 6042, 7431, 6042, -1000, 1877, 1003, + 1993, 1333, -1000, 1652, -1000, 1447, 1808, -1000, 441, 1373, + -1000, 636, 1445, -1000, -1000, -1000, -1000, 439, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -3406,169 +3405,170 @@ 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, -65, -1000, -1000, 19219, 1067, 1444, 648, 1382, - -1000, 247, 421, 419, -1000, 15144, 17, 15144, -1000, 15144, - -1000, -1000, 190, -1000, 19219, 1850, -1000, -1000, -1000, 1051, - -119, 6040, 6040, 19219, 6040, -1000, -1000, -1000, 1612, 710, - 1670, -82, 638, -1000, 338, 15144, 172, -1000, 1790, 208, - -1000, 1844, -1000, 437, -1000, 1668, 19219, 1480, -1000, 415, - 210, -1000, 19219, 1041, -1000, -1000, -1000, 1991, -1000, 601, - -1000, 601, 714, 19219, -1000, -1000, -82, 338, 19219, 14692, - 14692, 14692, 14692, -1000, 1832, 1825, -1000, 1817, 1811, 1837, - 19219, 14692, 19219, -1000, -1000, -1000, 20047, -1000, -1000, -1000, - -1000, 1331, 1995, -1000, -1000, -1000, 343, 1500, 15144, 1049, - 237, -1000, -1000, -1000, -1000, -1000, 19219, 19219, 2003, -1000, - 1442, 1910, -1000, 744, 744, 727, -1000, -1000, 414, -1000, - -1000, 269, -1000, -1000, -1000, -1000, -1000, 1656, -1000, -1000, - -1000, 1321, 1377, 1041, 6040, -1000, -1000, 6040, 6040, 1009, - 6040, 1312, 1438, 1429, -1000, 1304, 2011, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -73, -1000, -1000, 19221, 1013, 1430, 630, + 1316, -1000, 262, 436, 434, -1000, 15146, 16, 15146, -1000, + 15146, -1000, -1000, 174, -1000, 19221, 1829, -1000, -1000, -1000, + 1001, -137, 6042, 6042, 19221, 6042, -1000, -1000, -1000, 1600, + 658, 1651, -119, 609, -1000, 339, 15146, 180, -1000, 1759, + 190, -1000, 1822, -1000, 641, -1000, 1646, 19221, 1399, -1000, + 428, 210, -1000, 19221, 1110, -1000, -1000, -1000, 1993, -1000, + 596, -1000, 596, 687, 19221, -1000, -1000, -119, 339, 19221, + 14694, 14694, 14694, 14694, -1000, 1799, 1792, -1000, 1793, 1784, + 1818, 19221, 14694, 19221, -1000, -1000, -1000, 20049, -1000, -1000, + -1000, -1000, 1237, 1951, -1000, -1000, -1000, 366, 1362, 15146, + 986, 227, -1000, -1000, -1000, -1000, -1000, 19221, 19221, 1991, + -1000, 1351, 1881, -1000, 662, 662, 682, -1000, -1000, 425, + -1000, -1000, 308, -1000, -1000, -1000, -1000, -1000, 1625, -1000, + -1000, -1000, 1221, 1292, 1110, 6042, -1000, -1000, 6042, 6042, + 1260, 6042, 1217, 1416, 1414, -1000, 1192, 1999, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 6040, 6040, 6040, 6040, - 6040, 761, 5114, -1000, -1000, -1000, 6040, 6040, 6040, 6040, - 1108, 1196, -1000, 723, 723, 565, 565, 565, 565, 565, - 688, 688, -1000, -1000, -1000, 3256, 1654, 6966, 6966, 6966, - 200, 1799, 1675, -1000, 6040, 683, -1000, 6040, 877, -1000, - 1295, 943, 1290, 1288, -1000, -1000, 1128, 1264, 1530, 1262, - 6040, 1433, 2003, -288, 4645, 209, 19219, -288, 19219, 19219, - 4645, -1000, 19219, 2359, 905, -1000, -1000, -1000, 2008, 15144, - 1011, 586, 630, -1000, 13, -1000, 143, 250, 1047, -1000, - 268, 645, -79, -73, 1041, 1041, 411, -1000, 1890, 1863, - 8352, 914, -1000, -1000, 1046, -1000, 243, -1000, -1000, -1000, - 329, 20, 901, 238, -1000, 1053, 19219, -1000, -1000, -1000, - -1000, -1000, 638, 638, 638, 8352, 207, 1411, 410, 14692, - 19219, -1000, 14240, 1258, -1000, -1000, 1991, 1991, 601, -1000, - 914, 243, 1315, -1000, 643, 1774, 1788, 1774, -1000, -1000, - -1000, -1000, 1819, -1000, 1809, -1000, -1000, 1315, -1000, 1612, - -1000, -1000, -1000, 1382, 1236, -1000, -1000, -1000, -1000, 1997, - 1996, 15596, -1000, -1000, -1000, -1000, -1000, 6040, 1861, 1805, - 1789, 999, 1415, -1000, -1000, -1000, -1000, 6040, 1756, 1680, - 1661, 1617, 1611, -1000, 6040, 6040, 771, 1547, 1537, 1397, - 1371, 1413, -1000, 200, 1799, 1456, -1000, 6966, 6966, 1366, - 671, -1000, 6040, 740, 899, 11980, -1000, 6040, -1000, -1000, - -1000, 11980, -1000, 6966, -1000, 1340, 1031, 1997, -1000, 1231, - 1425, -1000, -288, -1000, -1000, 1387, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 15144, -1000, 136, -1000, -1000, - -1000, -1000, -1000, -1000, -54, -1000, 19219, 1030, -292, -77, - 1993, 1990, 19219, 187, 19219, 1228, 1419, -1000, -1000, -1000, - 20724, 505, -1000, 19219, 769, 396, 229, 396, 767, 1651, - -1000, -1000, -1000, 1021, -43, -1000, -1000, 1020, 1014, 897, - -1000, -1000, 855, 459, -32, -1000, -1000, -1000, -1000, -1000, - -1000, 1650, 11980, 12432, 1013, 1226, 19671, 14692, 14240, 1242, - -1000, 406, -1000, -1000, -1000, -1000, 1991, -1000, -1000, 2000, - 19219, 4645, -1000, -1000, 6040, 1645, -1000, 6040, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 6040, 6040, -1000, -1000, 1041, - -1000, -1000, -1000, 1220, -1000, 341, 341, -12, -1000, -1000, - -1000, 1598, -1000, 1620, 1620, 1598, 1598, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1625, 1624, -1000, 1598, - 1616, 1616, 1598, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1621, 1621, - 1622, 1621, -1000, 1310, -1000, -1000, -1000, -1000, -1000, 1210, - 1193, 6040, -1000, -1000, -1000, -1000, -1000, -1000, 6966, -1000, - -1000, -1000, -1000, 1041, 6040, 1214, -1000, 1598, 1620, -1000, - 1598, 1616, 1598, 341, 341, 1208, 791, 1195, 1406, -1000, - 1191, -1000, -1000, 4645, 1387, 1382, -1000, -1000, -121, 110, - -294, 1010, -1000, 1989, 993, 925, -1000, 1612, 20929, 8352, - 1649, -1000, -1000, 19219, 19219, -1000, 19219, 19219, 229, 6040, - -1000, -1000, 170, -1000, -1000, 50, -1000, -1000, 853, 274, - -1000, 13788, -1000, -1000, -1000, -1000, -1000, -69, 1991, 1242, - 406, -1000, -1000, 583, -1000, 1939, -1000, -1000, 1041, 19219, - 1041, 1041, 1377, -1000, -1000, -1000, -1000, -1000, -15, -1000, - -1000, -1000, -1000, 896, -1000, 893, -1000, -1000, -1000, 985, - 985, -1000, -1000, 887, -1000, -1000, -1000, 885, -1000, -1000, - 879, -1000, -1000, -1000, -1000, 1182, -1000, 1041, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 6040, -1000, - -1000, -1000, -1000, -1000, -87, -81, -1000, 979, -296, 878, - -1000, 978, -74, -1000, -1000, 1889, 206, 20877, -1000, 638, - 638, 454, 638, 638, 638, 638, 151, 150, 638, 638, - 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, - 638, 638, 1609, -1000, -1000, 1649, -1000, -1000, 733, 6966, - -1000, -1000, 972, 12432, 350, 458, 1608, -1000, 122, 751, - 734, -1000, 19219, -1000, 1604, 1619, 91, 1603, -1000, 1600, - 1599, 19219, 1151, 249, 971, -1000, -1000, 48, -1000, -1000, - 1404, -1000, 1598, 6040, -1000, -121, 2000, -1000, -1000, 1400, - -1000, -1000, 1187, 1181, 1379, -1000, 1375, 1152, 1359, 1352, - -1000, 1125, 236, -96, -81, -1000, 1988, -78, 1986, 1985, - 642, -1000, 1596, -1000, -1000, 1979, 187, -1000, 1978, 20929, - -1000, 873, 870, 638, 638, 865, 970, 966, 965, 638, - 638, 861, 964, 20047, 856, 852, 829, 849, 958, 533, - 845, 844, 843, 19219, 1595, 919, -1000, -1000, 1799, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 828, 1594, -1000, -1000, 1593, 13788, 191, 191, 13788, 13788, - 13788, 1590, 293, -1000, -55, -1000, -1000, -1000, 13788, 1860, - 1090, -1000, 1939, -1000, -1000, -1000, -1000, 957, -1000, -1000, - -1000, 827, -1000, 824, -1000, 1575, 819, -77, 1975, -1000, - 925, 1946, 925, 925, 952, 19219, 925, -1000, 104, -1000, - -1000, -1000, 11980, 11980, -1000, -1000, -1000, -1000, 932, 927, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 6042, 6042, 6042, + 6042, 6042, 842, 5116, -1000, -1000, -1000, 6042, 6042, 6042, + 6042, 1109, 1197, -1000, 724, 724, 545, 545, 545, 545, + 545, 773, 773, -1000, -1000, -1000, 3258, 1622, 7431, 7431, + 7431, 234, 2665, 2151, -1000, 6042, 672, -1000, 6042, 876, + -1000, 1182, 1254, 1177, 1172, -1000, -1000, 1198, 1170, 2136, + 1168, 6042, 1345, 1991, -288, 4647, 241, 19221, -288, 19221, + 19221, 4647, -1000, 19221, 2361, 886, -1000, -1000, -1000, 1998, + 15146, 919, 562, 622, -1000, 3, -1000, 142, 250, 984, + -1000, 280, 625, -100, -92, 1110, 1110, 418, -1000, 1866, + 1841, 8354, 742, -1000, -1000, 981, -1000, 243, -1000, -1000, + -1000, 329, 19, 885, 237, -1000, 1031, 19221, -1000, -1000, + -1000, -1000, -1000, 609, 609, 609, 8354, 226, 1273, 415, + 14694, 19221, -1000, 14242, 1140, -1000, -1000, 1993, 1993, 596, + -1000, 742, 243, 1243, -1000, 621, 1751, 1755, 1751, -1000, + -1000, -1000, -1000, 1786, -1000, 1782, -1000, -1000, 1243, -1000, + 1600, -1000, -1000, -1000, 1316, 1138, -1000, -1000, -1000, -1000, + 1989, 1984, 15598, -1000, -1000, -1000, -1000, -1000, 6042, 1790, + 1770, 1757, 1000, 1405, -1000, -1000, -1000, -1000, 6042, 1678, + 1659, 1618, 1612, 1548, -1000, 6042, 6042, 1120, 1538, 1530, + 1518, 1397, 1401, -1000, 234, 2665, 1800, -1000, 7431, 7431, + 1341, 638, -1000, 6042, 741, 915, 11982, -1000, 6042, -1000, + -1000, -1000, 11982, -1000, 7431, -1000, 1311, 979, 1989, -1000, + 1136, 1343, -1000, -288, -1000, -1000, 1333, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 15146, -1000, 139, -1000, + -1000, -1000, -1000, -1000, -1000, -54, -1000, 19221, 974, -292, + -80, 1983, 1982, 19221, 187, 19221, 1131, 1338, -1000, -1000, + -1000, 20726, 647, -1000, 19221, 713, 454, 247, 454, 711, + 1621, -1000, -1000, -1000, 973, -42, -1000, -1000, 972, 967, + 880, -1000, -1000, 864, 533, -29, -1000, -1000, -1000, -1000, + -1000, -1000, 1617, 11982, 12434, 966, 1126, 19673, 14694, 14242, + 1233, -1000, 408, -1000, -1000, -1000, -1000, 1993, -1000, -1000, + 1987, 19221, 4647, -1000, -1000, 6042, 1613, -1000, 6042, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 6042, 6042, -1000, -1000, + 1110, -1000, -1000, -1000, 1119, -1000, 350, 350, -6, -1000, + -1000, -1000, 1576, -1000, 1602, 1602, 1576, 1576, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1610, 1609, -1000, + 1576, 1601, 1601, 1576, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1604, + 1604, 1605, 1604, -1000, 1211, -1000, -1000, -1000, -1000, -1000, + 1183, 1151, 6042, -1000, -1000, -1000, -1000, -1000, -1000, 7431, + -1000, -1000, -1000, -1000, 1110, 6042, 1101, -1000, 1576, 1602, + -1000, 1576, 1601, 1576, 350, 350, 1099, 821, 1076, 1676, + -1000, 1062, -1000, -1000, 4647, 1333, 1316, -1000, -1000, -158, + 122, -294, 965, -1000, 1980, 959, 907, -1000, 1600, 20931, + 8354, 1025, -1000, -1000, 19221, 19221, -1000, 19221, 19221, 247, + 6042, -1000, -1000, 170, -1000, -1000, 49, -1000, -1000, 844, + 273, -1000, 13790, -1000, -1000, -1000, -1000, -1000, -86, 1993, + 1233, 408, -1000, -1000, 554, -1000, 1941, -1000, -1000, 1110, + 19221, 1110, 1110, 1292, -1000, -1000, -1000, -1000, -1000, -15, + -1000, -1000, -1000, -1000, 879, -1000, 878, -1000, -1000, -1000, + 958, 958, -1000, -1000, 874, -1000, -1000, -1000, 871, -1000, + -1000, 867, -1000, -1000, -1000, -1000, 1125, -1000, 1110, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 6042, + -1000, -1000, -1000, -1000, -1000, -101, -70, -1000, 954, -296, + 866, -1000, 953, -87, -1000, -1000, 1865, 223, 20879, -1000, + 609, 609, 654, 609, 609, 609, 609, 163, 156, 609, + 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, + 609, 609, 609, 1599, -1000, -1000, 1025, -1000, -1000, 693, + 7431, -1000, -1000, 949, 12434, 347, 378, 1597, -1000, 128, + 700, 698, -1000, 19221, -1000, 1596, 1533, 79, 1595, -1000, + 1594, 1592, 19221, 1049, 249, 934, -1000, -1000, 39, -1000, + -1000, 1380, -1000, 1576, 6042, -1000, -158, 1987, -1000, -1000, + 1376, -1000, -1000, 1052, 1050, 1360, -1000, 1353, 1043, 1340, + 1329, -1000, 1042, 253, -97, -70, -1000, 1979, -91, 1976, + 1958, 616, -1000, 1570, -1000, -1000, 1949, 187, -1000, 1947, + 20931, -1000, 845, 839, 609, 609, 838, 933, 932, 927, + 609, 609, 830, 926, 20049, 825, 824, 823, 828, 924, + 473, 794, 783, 777, 19221, 1569, 899, -1000, -1000, 2665, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 801, 1559, -1000, -1000, 1551, 13790, 114, 114, 13790, + 13790, 13790, 1537, 293, -1000, -62, -1000, -1000, -1000, 13790, + 1852, 1032, -1000, 1941, -1000, -1000, -1000, -1000, 923, -1000, + -1000, -1000, 797, -1000, 796, -1000, 1527, 775, -80, 1946, + -1000, 907, 1945, 907, 907, 922, 19221, 907, -1000, 124, + -1000, -1000, -1000, 11982, 11982, -1000, -1000, -1000, -1000, 920, + 914, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 162, 19219, 1339, -1000, 640, 1144, 6040, -243, - 13788, 1330, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1328, - 1294, 1261, 13788, -1000, -1000, -1000, 117, -1000, 132, -1000, - -1000, 1860, -1000, -1000, 1139, 1137, 1869, 11528, -89, -1000, - 926, -1000, 925, -1000, -1000, -306, 1257, -1000, -1000, 107, - 160, 155, -1000, 267, -1000, -1000, -1000, -1000, -1000, -1000, - 163, 1240, -1000, 919, 900, -1000, 1050, 1787, -1000, 6, - 1224, -1000, -1000, -1000, -1000, 1197, -1000, -1000, 638, 882, - 71, -1000, -1000, -1000, -1000, -1000, -1000, 19219, -1000, 1186, - -1000, -1000, -1000, 405, -1000, -1000, -1000, -1000, -1000, 19219, - 98, 812, 6966, 1569, 6966, 1568, 112, 1558, -1000, -1000, - -1000, -1000, -1000, 293, -1000, -1000, 1782, 1781, 2027, -1000, - -1000, -1000, -1000, 132, 132, 132, 132, 8, 800, -1000, - 924, 1361, -1000, 636, -1000, 13336, 19219, -1000, 1556, 1944, - -1000, 1227, 19219, 992, 19219, 1555, 612, 6966, -1000, -1000, - 2030, -1000, 2028, 429, 429, -1000, -1000, -1000, 19219, 4182, - -1000, 403, -1000, 204, 105, -1000, 1179, -1000, 1172, 19219, - 799, 953, -1000, -1000, -1000, 817, 126, -1000, -1000, -1000, - 1041, 19219, 1168, -1000, 995, 94, -1000, -1000, 1142, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 204, 1762, -1000, 795, - -1000, -1000, 20770, 197, -1000, -1000, 20770, 96, -1000, 195, - -1000, -1000, 1135, -1000, 956, 1407, -1000, 96, 20929, 6040, - -1000, 20929, 1118, -1000, + -1000, -1000, -1000, 173, 19221, 1323, -1000, 615, 1041, 6042, + -236, 13790, 1295, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1275, 1266, 1262, 13790, -1000, -1000, -1000, 111, -1000, 136, + -1000, -1000, 1852, -1000, -1000, 1039, 1005, 1876, 11530, -103, + -1000, 912, -1000, 907, -1000, -1000, -309, 1258, -1000, -1000, + 97, 157, 153, -1000, 263, -1000, -1000, -1000, -1000, -1000, + -1000, 185, 1241, -1000, 899, 898, -1000, 792, 1754, -1000, + 6, 1228, -1000, -1000, -1000, -1000, 1225, -1000, -1000, 609, + 826, 65, -1000, -1000, -1000, -1000, -1000, -1000, 19221, -1000, + 1216, -1000, -1000, -1000, 407, -1000, -1000, -1000, -1000, -1000, + 19221, 95, 752, 7431, 1522, 7431, 1485, 106, 1470, -1000, + -1000, -1000, -1000, -1000, 293, -1000, -1000, 1749, 1746, 1997, + -1000, -1000, -1000, -1000, 136, 136, 136, 136, 10, 746, + -1000, 904, 1092, -1000, 607, -1000, 13338, 19221, -1000, 1438, + 1943, -1000, 1531, 19221, 1439, 19221, 1435, 605, 7431, -1000, + -1000, 2004, -1000, 2002, 452, 452, -1000, -1000, -1000, 19221, + 4184, -1000, 403, -1000, 217, 100, -1000, 1188, -1000, 1180, + 19221, 739, 1407, -1000, -1000, -1000, 784, 119, -1000, -1000, + -1000, 1110, 19221, 1153, -1000, 918, 81, -1000, -1000, 1129, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 217, 1797, -1000, + 726, -1000, -1000, 20772, 337, -1000, -1000, 20772, 92, -1000, + 209, 1408, -1000, -1000, 1118, -1000, 800, 395, 6042, -1000, + 92, 20931, -1000, 6042, 1048, -1000, 20931, 1037, -1000, -1000, } var yyPgo = [...]int{ - 0, 122, 2358, 180, 128, 126, 175, 2357, 1900, 1899, - 2356, 2355, 2354, 2353, 2352, 2350, 2348, 2347, 2346, 2345, - 2344, 2342, 2341, 2340, 2339, 2338, 2336, 174, 2335, 2334, - 2333, 2331, 2330, 2329, 2328, 2327, 2326, 2325, 2324, 2323, - 2321, 118, 2319, 1898, 2318, 2316, 2315, 2314, 2312, 162, - 2309, 2307, 2305, 2304, 2303, 2302, 2301, 2300, 2299, 2298, - 2297, 2296, 2288, 171, 57, 2286, 39, 61, 114, 199, - 73, 208, 191, 140, 70, 121, 164, 116, 2281, 2280, - 112, 24, 132, 2279, 43, 40, 35, 198, 102, 54, - 60, 91, 2275, 2273, 88, 2272, 2270, 97, 2268, 59, - 2267, 78, 48, 90, 26, 2266, 2265, 2264, 80, 2263, - 2262, 2261, 2260, 85, 2259, 63, 51, 2258, 2257, 2244, - 2239, 2238, 27, 2236, 46, 2235, 2230, 2229, 2228, 2226, - 2223, 2222, 11, 16, 21, 2221, 2220, 14, 2, 2219, - 147, 189, 84, 108, 2218, 375, 2217, 2216, 2215, 113, - 2212, 138, 2211, 2210, 2209, 2208, 2207, 10, 2205, 53, - 2204, 2203, 2202, 56, 2201, 2200, 2199, 96, 49, 50, - 92, 2198, 2197, 72, 157, 13, 42, 0, 151, 38, - 2195, 2194, 2191, 192, 146, 141, 165, 99, 246, 120, - 2190, 2189, 47, 2187, 117, 2185, 109, 66, 44, 2184, - 87, 2183, 37, 86, 2182, 105, 2181, 133, 1, 100, - 2180, 158, 2179, 2177, 2175, 125, 2174, 2173, 67, 124, - 2172, 2171, 2169, 25, 2168, 29, 19, 2167, 95, 176, - 2166, 156, 98, 131, 135, 82, 163, 166, 68, 115, - 766, 111, 81, 17, 2165, 161, 2164, 239, 194, 150, - 2162, 2161, 173, 322, 153, 2160, 130, 7, 2159, 2158, - 8, 2157, 22, 2154, 2153, 2152, 2150, 6, 2149, 2148, - 2147, 3, 5, 2146, 4, 110, 41, 65, 2145, 64, - 75, 2143, 2142, 2139, 2138, 2137, 269, 2136, 2135, 2134, - 2133, 2132, 2131, 2129, 83, 2125, 2123, 2122, 2121, 69, - 2120, 2119, 2117, 2116, 2115, 32, 2112, 2111, 23, 2110, - 30, 2109, 2107, 2105, 15, 136, 2103, 2102, 18, 2101, - 2100, 9, 12, 2098, 2097, 58, 45, 31, 79, 77, - 2093, 20, 2092, 107, 2089, 2088, 139, 2087, 103, 2086, - 144, 167, 215, 2085, 155, 2084, 2082, 2077, 2076, 2073, - 2065, 2061, 778, 2060, 2057, 170, 55, 159, 2053, 2052, - 154, 2051, 123, 94, 89, 148, 2050, 152, 2049, 2048, - 2047, 143, 2046, -} - -//line mysql_sql.y:7200 + 0, 122, 2349, 180, 128, 126, 174, 2348, 1918, 1900, + 2347, 2346, 2345, 2343, 2342, 2341, 2340, 2339, 2337, 2336, + 2335, 2334, 2332, 2331, 2330, 2329, 2328, 171, 2327, 2326, + 2325, 2324, 2322, 2320, 2319, 2317, 2316, 2315, 2313, 2310, + 2308, 118, 2306, 1888, 2305, 2304, 2303, 2302, 2301, 162, + 2300, 2299, 2298, 2297, 2289, 2287, 2282, 2281, 2280, 2276, + 2274, 2273, 2271, 156, 57, 2269, 39, 61, 114, 199, + 73, 188, 191, 140, 70, 121, 165, 116, 2256, 2255, + 112, 24, 132, 2254, 43, 40, 35, 200, 102, 54, + 60, 91, 2240, 2239, 88, 2237, 2231, 97, 2230, 59, + 2229, 78, 48, 90, 26, 2228, 2227, 2226, 80, 2224, + 2223, 2222, 2221, 85, 2220, 63, 51, 2219, 2218, 2217, + 2216, 2213, 27, 2212, 46, 2211, 2210, 2209, 2208, 2206, + 2205, 2204, 11, 16, 21, 2203, 2202, 14, 2, 2201, + 147, 189, 84, 108, 2200, 374, 2199, 2198, 2196, 113, + 2192, 138, 2191, 2190, 2188, 2186, 2185, 10, 2184, 53, + 2183, 2182, 2181, 56, 2180, 2178, 2176, 96, 49, 50, + 92, 2175, 2174, 72, 157, 13, 42, 0, 148, 38, + 2173, 2172, 2170, 192, 143, 141, 166, 99, 271, 120, + 2169, 2168, 47, 2167, 117, 2166, 109, 66, 44, 2165, + 87, 2163, 37, 86, 2162, 105, 2161, 133, 1, 100, + 2160, 155, 2159, 2158, 2155, 125, 2154, 2153, 67, 124, + 2151, 2150, 2149, 25, 2148, 29, 19, 2147, 95, 176, + 2146, 164, 98, 131, 135, 82, 159, 163, 68, 115, + 757, 111, 81, 17, 2144, 161, 2143, 252, 206, 150, + 2140, 2139, 173, 319, 153, 2138, 130, 7, 2137, 2136, + 8, 2135, 22, 2134, 2133, 2132, 2130, 6, 2126, 2124, + 2123, 4, 3, 2122, 5, 110, 41, 65, 2121, 64, + 75, 2120, 2118, 2117, 2116, 2113, 333, 2112, 2111, 2110, + 2108, 2106, 2104, 2103, 83, 2102, 2101, 2099, 2098, 69, + 2094, 2093, 2090, 2089, 2088, 32, 2087, 2086, 23, 2085, + 30, 2083, 2078, 2077, 15, 136, 2074, 2066, 18, 2062, + 2061, 9, 12, 2058, 2054, 58, 45, 31, 79, 77, + 2053, 20, 2052, 107, 2051, 2050, 139, 2049, 103, 2048, + 144, 169, 208, 2047, 146, 2046, 2044, 2043, 2042, 2041, + 2040, 2039, 766, 2037, 2036, 170, 55, 158, 2035, 2034, + 154, 2033, 123, 94, 89, 151, 2032, 152, 2027, 2024, + 2021, 167, 2020, +} + +//line mysql_sql.y:7213 type yySymType struct { union interface{} id int @@ -4278,55 +4278,55 @@ var yyR1 = [...]int{ 219, 23, 23, 65, 64, 64, 64, 66, 288, 288, 258, 258, 261, 261, 268, 268, 269, 269, 267, 267, 274, 274, 273, 273, 272, 272, 271, 271, 270, 270, - 265, 265, 264, 264, 259, 259, 259, 259, 259, 260, - 260, 263, 263, 266, 266, 120, 120, 121, 121, 121, + 270, 270, 265, 265, 264, 264, 259, 259, 259, 259, + 259, 260, 260, 263, 263, 266, 266, 120, 120, 121, + 121, 121, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 330, - 330, 331, 123, 123, 123, 127, 127, 127, 127, 127, - 127, 122, 122, 124, 124, 104, 104, 102, 102, 97, - 97, 98, 98, 99, 99, 100, 100, 101, 101, 101, - 101, 101, 101, 244, 244, 328, 328, 329, 329, 325, - 325, 325, 327, 327, 327, 327, 327, 326, 326, 105, - 158, 158, 158, 177, 177, 177, 157, 157, 157, 119, - 119, 118, 118, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 243, 243, 191, 191, - 192, 192, 137, 135, 135, 136, 136, 136, 136, 133, - 134, 132, 132, 132, 132, 132, 131, 131, 130, 130, - 130, 224, 224, 128, 128, 126, 126, 126, 125, 125, - 125, 275, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 200, 200, 200, 200, 200, + 138, 330, 330, 331, 123, 123, 123, 127, 127, 127, + 127, 127, 127, 122, 122, 124, 124, 104, 104, 102, + 102, 97, 97, 98, 98, 99, 99, 100, 100, 101, + 101, 101, 101, 101, 101, 244, 244, 328, 328, 329, + 329, 325, 325, 325, 327, 327, 327, 327, 327, 326, + 326, 105, 158, 158, 158, 177, 177, 177, 157, 157, + 157, 119, 119, 118, 118, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 243, 243, + 191, 191, 192, 192, 137, 135, 135, 136, 136, 136, + 136, 133, 134, 132, 132, 132, 132, 132, 131, 131, + 130, 130, 130, 224, 224, 128, 128, 126, 126, 126, + 125, 125, 125, 275, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 198, 198, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 201, 201, 206, 206, - 339, 339, 338, 106, 106, 106, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 115, 115, 115, 155, 155, + 200, 200, 200, 200, 200, 200, 200, 200, 201, 201, + 206, 206, 339, 339, 338, 106, 106, 106, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 115, 115, 115, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 298, 298, 298, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 156, 351, - 351, 351, 335, 335, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 337, 337, 337, 337, + 155, 155, 155, 155, 155, 298, 298, 298, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 156, 351, 351, 351, 335, 335, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 154, 154, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 210, 210, - 211, 211, 295, 295, 295, 295, 295, 295, 296, 296, - 297, 297, 297, 297, 291, 291, 291, 291, 291, 291, + 337, 337, 337, 337, 337, 154, 154, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 210, 210, 211, 211, 295, 295, 295, 295, 295, 295, + 296, 296, 297, 297, 297, 297, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 199, 151, 151, 151, 212, 207, 207, 208, - 208, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 204, 204, 204, 204, 204, 196, 196, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 203, 203, 205, - 205, 214, 214, 214, 213, 213, 213, 213, 213, 213, - 213, 117, 117, 117, 117, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 108, 108, 108, 108, 112, - 112, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 113, 113, 113, 113, 111, - 111, 111, 111, 111, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 110, - 159, 159, 276, 276, 279, 279, 277, 277, 278, 280, - 280, 280, 281, 281, 281, 282, 282, 282, 284, 284, - 163, 163, 163, 169, 169, 162, 162, 170, 170, 171, - 171, 167, 167, 167, 167, 167, 167, 167, 167, 167, + 291, 291, 291, 291, 199, 151, 151, 151, 212, 207, + 207, 208, 208, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 204, 204, 204, 204, 204, 196, + 196, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 203, 203, 205, 205, 214, 214, 214, 213, 213, 213, + 213, 213, 213, 213, 117, 117, 117, 117, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 108, 108, + 108, 108, 112, 112, 114, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 113, 113, + 113, 113, 111, 111, 111, 111, 111, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 110, 159, 159, 276, 276, 279, 279, 277, + 277, 278, 280, 280, 280, 281, 281, 281, 282, 282, + 282, 284, 284, 163, 163, 163, 169, 169, 162, 162, + 170, 170, 171, 171, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, @@ -4342,7 +4342,7 @@ var yyR1 = [...]int{ 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 167, 167, 167, 167, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, @@ -4358,12 +4358,12 @@ var yyR1 = [...]int{ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 165, 165, 165, 165, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 166, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 165, + 165, 165, 165, 165, 165, } var yyR2 = [...]int{ @@ -4431,55 +4431,55 @@ var yyR2 = [...]int{ 0, 3, 0, 1, 1, 2, 4, 4, 4, 0, 1, 10, 9, 2, 2, 6, 10, 5, 0, 1, 0, 6, 0, 4, 0, 3, 1, 3, 4, 5, - 0, 3, 1, 3, 2, 3, 1, 2, 0, 6, - 0, 2, 0, 2, 4, 5, 4, 5, 1, 6, - 5, 0, 3, 0, 1, 0, 1, 1, 3, 2, - 3, 3, 4, 4, 3, 3, 3, 3, 4, 4, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 4, 5, 4, 1, - 3, 3, 0, 2, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 1, 3, 0, - 1, 1, 3, 1, 1, 2, 1, 7, 7, 7, - 7, 8, 5, 0, 1, 0, 1, 1, 1, 1, - 3, 3, 1, 1, 1, 1, 1, 0, 1, 3, - 1, 3, 5, 1, 1, 1, 1, 3, 5, 0, - 1, 1, 2, 1, 2, 2, 1, 1, 2, 2, - 2, 2, 2, 1, 5, 6, 1, 2, 0, 1, - 1, 2, 5, 0, 1, 1, 1, 2, 2, 3, - 3, 1, 1, 2, 2, 2, 0, 1, 2, 2, - 2, 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, 1, 1, 2, 5, 6, 6, - 6, 1, 1, 1, 1, 1, 0, 2, 0, 1, - 1, 2, 4, 1, 2, 2, 1, 2, 2, 1, - 2, 2, 2, 2, 2, 0, 1, 1, 5, 4, - 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, - 5, 5, 5, 1, 1, 1, 4, 4, 6, 8, - 6, 4, 5, 5, 4, 6, 6, 7, 6, 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, 4, 2, 3, 2, 4, - 6, 2, 2, 4, 6, 4, 2, 2, 0, 1, - 2, 3, 1, 1, 1, 1, 1, 1, 0, 2, + 0, 3, 1, 3, 2, 3, 1, 2, 0, 4, + 6, 5, 0, 2, 0, 2, 4, 5, 4, 5, + 1, 6, 5, 0, 3, 0, 1, 0, 1, 1, + 3, 2, 3, 3, 4, 4, 3, 3, 3, 3, + 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 4, 5, + 4, 1, 3, 3, 0, 2, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, + 3, 0, 1, 1, 3, 1, 1, 2, 1, 7, + 7, 7, 7, 8, 5, 0, 1, 0, 1, 1, + 1, 1, 3, 3, 1, 1, 1, 1, 1, 0, + 1, 3, 1, 3, 5, 1, 1, 1, 1, 3, + 5, 0, 1, 1, 2, 1, 2, 2, 1, 1, + 2, 2, 2, 2, 2, 1, 5, 6, 1, 2, + 0, 1, 1, 2, 5, 0, 1, 1, 1, 2, + 2, 3, 3, 1, 1, 2, 2, 2, 0, 1, + 2, 2, 2, 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, 1, 1, 2, 5, + 6, 6, 6, 1, 1, 1, 1, 1, 0, 2, + 0, 1, 1, 2, 4, 1, 2, 2, 1, 2, + 2, 1, 2, 2, 2, 2, 2, 0, 1, 1, + 5, 4, 4, 5, 5, 5, 5, 4, 5, 5, + 5, 5, 5, 5, 5, 1, 1, 1, 4, 4, + 6, 8, 6, 4, 5, 5, 4, 6, 6, 7, + 6, 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, 4, 2, 3, + 2, 4, 6, 2, 2, 4, 6, 4, 2, 2, + 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, 3, 0, 1, 1, 3, 0, 1, 1, - 3, 3, 3, 3, 3, 2, 3, 4, 3, 4, - 1, 3, 4, 3, 4, 1, 1, 1, 3, 4, - 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, 3, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 4, 4, 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, 3, 0, 1, 1, 3, 0, + 1, 1, 3, 3, 3, 3, 3, 2, 1, 3, + 4, 3, 4, 1, 3, 4, 3, 4, 1, 1, + 1, 3, 4, 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, 3, 1, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 4, 4, 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, @@ -4517,7 +4517,7 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, + 1, 1, 1, 1, 1, } var yyChk = [...]int{ @@ -4583,181 +4583,181 @@ var yyChk = [...]int{ 23, -248, 94, 105, -247, -247, -247, -248, -248, -122, 35, -176, 121, -177, 65, -122, 35, 124, -86, -87, -71, -70, 60, 60, -286, -286, -286, -286, -286, -286, - -286, -183, -72, -73, 112, -202, -177, 86, -204, 62, - -197, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 79, 360, 302, 345, - 155, 303, 153, 214, -198, -200, -321, -315, -195, 58, - 110, 111, 118, 87, -199, -275, 30, 89, 405, -152, - -153, -154, -155, -156, -316, -314, 65, 70, 73, 76, - 77, 75, 74, 151, 72, 66, 123, -70, -335, -166, - -291, -297, 197, -295, 156, 152, 12, 116, 355, 121, - -298, 474, 64, 63, 296, 297, 298, 397, 293, 299, - 203, 47, 300, 301, 304, 404, 305, 48, 306, 295, - 218, 307, 408, 407, 409, 401, 398, 396, 399, 400, - 402, 403, -72, -293, 38, -67, 58, 25, 58, -177, - -86, -63, -87, 124, 70, 65, -49, 60, 59, -346, - 76, 77, -349, 170, 162, -177, -60, 65, -3, -4, - -5, -6, -27, -41, -67, -317, -315, 58, 26, 354, - 55, 15, -254, 198, 397, 309, 224, 200, -252, -236, - -233, -231, -176, -229, -232, -231, -257, -157, 372, -64, - 364, 476, -63, -202, -177, -83, -82, -202, 200, -218, - -357, 62, 86, -237, -234, -231, -228, -175, 62, 63, - 64, -177, -218, -355, -341, 29, -89, -177, -141, 16, - -200, -141, -102, -187, -187, -189, -371, -185, -371, 372, - -141, -141, -262, -186, -177, -186, -218, -357, -237, -76, - -74, -77, -78, -80, -144, -146, -102, 58, 389, 390, - 131, 134, 133, 7, -251, 354, 26, -228, -245, -241, - 65, 355, -232, -249, 55, 121, -299, -202, 35, -248, - -248, -248, -249, -249, 120, -177, -63, -357, -236, -228, - -177, -104, -102, -104, -178, -175, -168, -140, 59, -139, - 15, -172, 85, 82, 83, 84, -177, 29, 65, 124, - -202, 101, -213, 94, 95, 96, 97, 98, 99, 100, - 58, 58, 58, 58, 58, 58, 58, 58, -211, 58, - 58, 58, 58, 58, 58, 58, -211, 58, 58, 58, - 58, 58, 65, 65, 107, 106, 117, 110, 111, 112, - 113, 114, 115, 116, 108, 109, 104, 86, 102, 103, - 88, -70, -202, -208, -200, -200, -200, -200, -275, -206, - -202, 58, -202, 58, 58, 58, -296, 58, 58, -210, - -211, 58, 65, 58, 58, 58, -200, 58, 58, -140, - -294, -209, -334, 475, -93, 60, -88, -177, -332, -333, - -88, -92, -177, -63, -63, -170, -171, -162, -167, -174, - -175, -168, 196, 26, 85, 29, 31, 296, 328, 88, - 121, 20, 89, 156, 120, 298, 405, 297, 191, 51, - 407, 409, 408, 398, 396, 347, 351, 353, 350, 397, - 371, 35, 14, 32, 212, 27, 28, 114, 193, 92, - 93, 215, 30, 213, 77, 23, 54, 15, 17, 18, - 299, 346, 203, 202, 104, 364, 199, 49, 12, 123, - 33, 101, 348, 45, 81, 47, 102, 21, 399, 400, - 36, 363, 431, 219, 116, 300, 301, 52, 86, 354, - 75, 55, 82, 19, 50, 103, 194, 404, 48, 352, - 304, 306, 429, 305, 197, 382, 10, 295, 406, 25, - 211, 46, 198, 91, 201, 76, 218, 152, 6, 80, - 13, 53, 56, 401, 402, 403, 38, 90, 16, 307, - 435, 355, 365, 366, 367, 368, 369, 370, 180, 181, - 182, 183, 184, 260, 206, 204, 208, 209, 475, 476, - 185, 186, 286, 288, 159, 188, 189, 190, 220, 137, - 7, 333, 334, 335, 336, 338, 339, 340, 341, 342, - 343, 344, 23, -49, -344, 124, 59, -89, -254, -235, - -232, -256, 112, 62, -242, 59, 435, 482, 63, 201, - -366, -365, 346, 60, 59, -303, 202, 404, 65, 483, - 65, 59, 22, 124, 59, -81, 31, 32, -102, 203, - -102, -360, 333, 30, -367, 59, 35, -365, -221, 56, - -216, -217, -215, -219, 35, -102, 15, -75, -103, -177, - 58, 60, 59, -202, -141, -141, -141, -187, -178, -189, - -184, -189, -185, 124, -164, -177, -360, -367, 25, -147, - -148, -149, -150, 45, 49, 51, 46, 47, 48, 52, - 25, 59, -372, 29, -173, -179, 29, -174, 65, -175, - -168, -68, -70, 132, 135, 135, 134, -228, 201, 58, - 94, -249, -249, -249, 35, -176, 55, 59, -141, -73, - -74, -76, -202, -202, -202, -202, -177, 65, -177, 112, - -196, 86, 289, 75, 76, 77, -197, -214, 26, 270, - 271, -207, -208, -202, -151, 27, 26, -151, -151, -202, - -151, 112, -208, -208, 60, 70, -336, -337, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 300, - 295, 301, 299, 293, 307, 302, 303, 155, 427, 428, - 421, 422, 423, 424, 425, 426, -151, -151, -151, -151, - -151, -202, -351, 287, 286, 288, -151, -151, -151, -151, - -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, - -198, -198, -205, -212, -275, 58, 104, 102, 103, 88, - -200, -198, -198, 60, 59, -339, -338, 90, -202, -336, - -207, -202, -207, -207, 60, 60, -208, -207, -198, -207, - -151, 65, -141, 59, 58, 60, 59, 38, 124, 59, - 94, 60, 59, 124, 362, -177, -315, 60, -256, 59, - 201, 124, 124, -233, 314, -176, -235, 20, 435, -157, - 33, 65, -306, 376, -202, -202, -177, -82, -90, 86, - 58, -362, 378, 335, -169, 94, -194, -193, 292, 36, - -289, 355, 341, 342, -234, 228, 55, 281, 282, 283, - 284, -215, -163, 120, 239, 58, -102, -75, -177, 15, - 59, -356, 124, -1, -177, -141, -187, -187, -189, -177, - -362, -194, -239, -238, -157, -77, -77, -77, -77, 45, - 45, 45, 50, 45, 50, 45, -149, -239, -80, -177, - -179, 60, 135, -235, -190, 65, -241, -102, -102, -143, - 17, 124, -196, 289, 75, -275, 60, 59, -202, -202, - -202, 29, -208, 60, 60, 60, 60, 15, -202, -202, - -202, -202, -202, 60, 15, 15, -202, -202, -202, -202, - -202, -208, -205, -200, -198, -198, -203, 215, 85, -202, - -201, -338, 92, -202, 59, 56, 60, 15, 60, 60, - 60, 56, 60, 59, 60, -202, 59, -143, -209, -301, - -300, -299, 38, -67, -88, -294, -177, -333, -299, -177, - -170, -167, -175, -168, 70, 15, -232, -228, 112, 112, - 62, 315, -242, 65, 334, 65, 198, 94, -312, 370, - 365, 367, 124, 29, 30, -97, -98, -99, -105, -100, - -157, -192, -101, 206, 204, 208, -329, 80, 209, 260, - 81, 199, -363, 69, -358, 65, -364, 69, 336, 123, - 294, 35, 337, 338, 352, 290, 70, 70, 343, -359, - 62, -102, -169, -169, -169, -97, -91, 56, 124, -74, - -103, -177, 112, 60, -141, -141, -187, -363, -364, -141, - 59, 94, -95, -94, 55, 56, -96, 55, -94, 45, - 45, -141, -90, 60, -142, 18, 20, -177, 112, -202, - 60, 60, 60, -106, -108, 330, 331, -112, -109, -111, - -110, -114, -113, 156, 157, 121, 160, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 25, 214, 152, - 153, 154, 155, 172, 138, 158, 433, 180, 139, 181, - 140, 182, 141, 183, 142, 143, 184, 144, 147, 148, - 149, 146, 60, -202, 60, 60, 60, 60, 60, -202, - -202, 15, 60, 60, 60, 60, 60, -203, 85, -200, - -197, 60, 93, -202, 91, -107, -113, 121, 156, 214, - 155, 154, 152, 330, 331, -122, -202, -122, -198, 60, - 65, -142, 60, 59, -294, -235, -242, 355, -102, 65, - -283, 477, -310, 365, 20, 20, -67, -102, 60, 59, - -108, -101, -177, 81, -328, -329, -218, -328, 81, 58, - 65, -361, 346, 65, 65, 70, 35, 70, 123, 339, - -290, 58, -122, -124, -176, 121, 65, 60, -173, -74, - -177, -141, -356, 124, -141, -85, -238, -299, -202, 58, - -202, -202, -208, 60, -115, 143, 142, -115, -282, 331, - 330, -276, -278, 58, -277, 58, -277, -276, -276, 58, - 58, -276, -279, 58, -279, -276, -280, 58, -280, -281, - 58, -280, 60, 60, 60, -202, -197, -202, 60, -276, - -277, -276, -279, -276, -115, -115, 60, 60, 23, 60, - 60, 60, -299, -66, -304, -262, 484, 59, -129, 478, - 65, 20, 65, -308, 65, -90, -120, -121, -138, 328, - 230, -219, 234, 69, 235, 362, 236, 199, 238, 239, - 240, 210, 241, 242, 243, 355, 244, 245, 246, 247, - 311, 6, 277, -99, -119, -118, -116, 75, 86, 35, - 328, -117, 69, 120, 253, 231, 254, -137, -191, 204, - 80, 81, 316, -192, -325, -326, -177, -326, -177, -325, - -325, -218, -202, 20, 435, 293, 35, 70, 35, 340, - -223, -225, -157, 58, -65, -64, -141, -141, -86, -89, - -284, 332, 70, 70, -159, 65, -159, 70, 70, 70, - 60, -202, -311, 370, -307, -305, 365, 366, 367, 368, - 65, -160, 479, 70, 65, 367, 29, -258, 220, 59, - -138, -169, -169, -163, 120, -169, -169, -169, -169, 237, - 237, -169, -169, -169, -169, -169, -169, -169, -169, -169, - -169, -169, -169, -169, -169, 58, -116, 75, -198, 65, - -124, -125, 35, 252, 248, -126, 35, 232, 233, -128, - 58, 260, 81, 81, -102, 58, 56, 269, 58, 58, - 58, -326, 60, 65, 334, 65, 293, 60, 59, -276, - -202, -66, -85, 60, 60, 60, 60, 59, 60, 60, - 60, 59, 60, 59, 60, -313, 202, -309, 369, -305, - 20, 367, 20, 20, 94, 58, 20, -67, 20, -138, - 70, 70, -169, -169, 70, 65, 65, 65, -169, -169, - 70, 65, -179, 70, 70, 70, 70, 35, 65, -127, - 35, 248, 252, 249, 250, 251, 70, 35, 70, 35, - 70, 35, -177, 58, -330, -331, 65, 70, 58, -224, - 58, -223, -327, 281, 282, 283, 285, 284, -327, -223, - -223, -223, 58, -244, -243, 261, 86, 355, -226, -225, - -81, 60, -86, 65, 70, 70, -320, 58, 70, -310, - 20, -308, 20, -308, -308, 65, -161, -177, -308, -259, - 262, 263, -260, -266, 265, -122, -122, 65, 65, -123, - 231, -104, 60, 59, 94, 60, -202, -131, -130, 431, - -223, 60, 60, 60, 60, -223, 261, -227, 210, 69, - 435, 279, 280, -81, 60, 60, -324, 25, 60, -319, - -318, -158, -314, -177, 370, 65, -308, 484, 60, 59, - -264, 266, 58, -262, 58, -262, 81, 282, 232, 233, - 60, -331, 65, 60, -135, -136, -133, -134, 55, 374, - 258, 259, 60, -226, -226, -226, -226, 60, -169, 65, - 278, -323, -322, -321, 60, 59, 124, -177, -261, 267, - 70, -198, 58, -198, 58, -263, 264, 58, -243, -134, - 55, -133, 55, 14, 13, -137, 70, -175, 59, 94, - -318, -177, -268, 58, 20, 60, -257, 60, -257, 58, - 94, -198, -132, 255, 256, 25, 134, -132, -322, 35, - -202, 124, -269, -267, 220, -260, 60, 60, -257, 70, - 60, 75, 35, 257, -177, 60, 59, 62, -265, 268, - 60, -267, -270, 38, 70, -274, -271, 58, -138, 222, - -274, -138, -273, -272, 267, 223, 60, 59, 62, 58, - -272, -271, -208, 60, + -286, -183, -72, -73, 112, -202, -177, 86, 219, -204, + 62, -197, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 79, 360, 302, + 345, 155, 303, 153, 214, -198, -200, -321, -315, -195, + 58, 110, 111, 118, 87, -199, -275, 30, 89, 405, + -152, -153, -154, -155, -156, -316, -314, 65, 70, 73, + 76, 77, 75, 74, 151, 72, 66, 123, -70, -335, + -166, -291, -297, 197, -295, 156, 152, 12, 116, 355, + 121, -298, 474, 64, 63, 296, 297, 298, 397, 293, + 299, 203, 47, 300, 301, 304, 404, 305, 48, 306, + 295, 218, 307, 408, 407, 409, 401, 398, 396, 399, + 400, 402, 403, -72, -293, 38, -67, 58, 25, 58, + -177, -86, -63, -87, 124, 70, 65, -49, 60, 59, + -346, 76, 77, -349, 170, 162, -177, -60, 65, -3, + -4, -5, -6, -27, -41, -67, -317, -315, 58, 26, + 354, 55, 15, -254, 198, 397, 309, 224, 200, -252, + -236, -233, -231, -176, -229, -232, -231, -257, -157, 372, + -64, 364, 476, -63, -202, -177, -83, -82, -202, 200, + -218, -357, 62, 86, -237, -234, -231, -228, -175, 62, + 63, 64, -177, -218, -355, -341, 29, -89, -177, -141, + 16, -200, -141, -102, -187, -187, -189, -371, -185, -371, + 372, -141, -141, -262, -186, -177, -186, -218, -357, -237, + -76, -74, -77, -78, -80, -144, -146, -102, 58, 389, + 390, 131, 134, 133, 7, -251, 354, 26, -228, -245, + -241, 65, 355, -232, -249, 55, 121, -299, -202, 35, + -248, -248, -248, -249, -249, 120, -177, -63, -357, -236, + -228, -177, -104, -102, -104, -178, -175, -168, -140, 59, + -139, 15, -172, 85, 82, 83, 84, -177, 29, 65, + 124, -202, 101, -213, 94, 95, 96, 97, 98, 99, + 100, 58, 58, 58, 58, 58, 58, 58, 58, -211, + 58, 58, 58, 58, 58, 58, 58, -211, 58, 58, + 58, 58, 58, 65, 65, 107, 106, 117, 110, 111, + 112, 113, 114, 115, 116, 108, 109, 104, 86, 102, + 103, 88, -70, -202, -208, -200, -200, -200, -200, -275, + -206, -202, 58, -202, 58, 58, 58, -296, 58, 58, + -210, -211, 58, 65, 58, 58, 58, -200, 58, 58, + -140, -294, -209, -334, 475, -93, 60, -88, -177, -332, + -333, -88, -92, -177, -63, -63, -170, -171, -162, -167, + -174, -175, -168, 196, 26, 85, 29, 31, 296, 328, + 88, 121, 20, 89, 156, 120, 298, 405, 297, 191, + 51, 407, 409, 408, 398, 396, 347, 351, 353, 350, + 397, 371, 35, 14, 32, 212, 27, 28, 114, 193, + 92, 93, 215, 30, 213, 77, 23, 54, 15, 17, + 18, 299, 346, 203, 202, 104, 364, 199, 49, 12, + 123, 33, 101, 348, 45, 81, 47, 102, 21, 399, + 400, 36, 363, 431, 219, 116, 300, 301, 52, 86, + 354, 75, 55, 82, 19, 50, 103, 194, 404, 48, + 352, 304, 306, 429, 305, 197, 382, 10, 295, 406, + 25, 211, 46, 198, 91, 201, 76, 218, 152, 6, + 80, 13, 53, 56, 401, 402, 403, 38, 90, 16, + 307, 435, 355, 365, 366, 367, 368, 369, 370, 180, + 181, 182, 183, 184, 260, 206, 204, 208, 209, 475, + 476, 185, 186, 286, 288, 159, 188, 189, 190, 220, + 137, 7, 333, 334, 335, 336, 338, 339, 340, 341, + 342, 343, 344, 23, -49, -344, 124, 59, -89, -254, + -235, -232, -256, 112, 62, -242, 59, 435, 482, 63, + 201, -366, -365, 346, 60, 59, -303, 202, 404, 65, + 483, 65, 59, 22, 124, 59, -81, 31, 32, -102, + 203, -102, -360, 333, 30, -367, 59, 35, -365, -221, + 56, -216, -217, -215, -219, 35, -102, 15, -75, -103, + -177, 58, 60, 59, -202, -141, -141, -141, -187, -178, + -189, -184, -189, -185, 124, -164, -177, -360, -367, 25, + -147, -148, -149, -150, 45, 49, 51, 46, 47, 48, + 52, 25, 59, -372, 29, -173, -179, 29, -174, 65, + -175, -168, -68, -70, 132, 135, 135, 134, -228, 201, + 58, 94, -249, -249, -249, 35, -176, 55, 59, -141, + -73, -74, -76, -202, -202, -202, -202, -177, 65, -177, + 112, -196, 86, 289, 75, 76, 77, -197, -214, 26, + 270, 271, -207, -208, -202, -151, 27, 26, -151, -151, + -202, -151, 112, -208, -208, 60, 70, -336, -337, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 300, 295, 301, 299, 293, 307, 302, 303, 155, 427, + 428, 421, 422, 423, 424, 425, 426, -151, -151, -151, + -151, -151, -202, -351, 287, 286, 288, -151, -151, -151, + -151, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -205, -212, -275, 58, 104, 102, 103, + 88, -200, -198, -198, 60, 59, -339, -338, 90, -202, + -336, -207, -202, -207, -207, 60, 60, -208, -207, -198, + -207, -151, 65, -141, 59, 58, 60, 59, 38, 124, + 59, 94, 60, 59, 124, 362, -177, -315, 60, -256, + 59, 201, 124, 124, -233, 314, -176, -235, 20, 435, + -157, 33, 65, -306, 376, -202, -202, -177, -82, -90, + 86, 58, -362, 378, 335, -169, 94, -194, -193, 292, + 36, -289, 355, 341, 342, -234, 228, 55, 281, 282, + 283, 284, -215, -163, 120, 239, 58, -102, -75, -177, + 15, 59, -356, 124, -1, -177, -141, -187, -187, -189, + -177, -362, -194, -239, -238, -157, -77, -77, -77, -77, + 45, 45, 45, 50, 45, 50, 45, -149, -239, -80, + -177, -179, 60, 135, -235, -190, 65, -241, -102, -102, + -143, 17, 124, -196, 289, 75, -275, 60, 59, -202, + -202, -202, 29, -208, 60, 60, 60, 60, 15, -202, + -202, -202, -202, -202, 60, 15, 15, -202, -202, -202, + -202, -202, -208, -205, -200, -198, -198, -203, 215, 85, + -202, -201, -338, 92, -202, 59, 56, 60, 15, 60, + 60, 60, 56, 60, 59, 60, -202, 59, -143, -209, + -301, -300, -299, 38, -67, -88, -294, -177, -333, -299, + -177, -170, -167, -175, -168, 70, 15, -232, -228, 112, + 112, 62, 315, -242, 65, 334, 65, 198, 94, -312, + 370, 365, 367, 124, 29, 30, -97, -98, -99, -105, + -100, -157, -192, -101, 206, 204, 208, -329, 80, 209, + 260, 81, 199, -363, 69, -358, 65, -364, 69, 336, + 123, 294, 35, 337, 338, 352, 290, 70, 70, 343, + -359, 62, -102, -169, -169, -169, -97, -91, 56, 124, + -74, -103, -177, 112, 60, -141, -141, -187, -363, -364, + -141, 59, 94, -95, -94, 55, 56, -96, 55, -94, + 45, 45, -141, -90, 60, -142, 18, 20, -177, 112, + -202, 60, 60, 60, -106, -108, 330, 331, -112, -109, + -111, -110, -114, -113, 156, 157, 121, 160, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 25, 214, + 152, 153, 154, 155, 172, 138, 158, 433, 180, 139, + 181, 140, 182, 141, 183, 142, 143, 184, 144, 147, + 148, 149, 146, 60, -202, 60, 60, 60, 60, 60, + -202, -202, 15, 60, 60, 60, 60, 60, -203, 85, + -200, -197, 60, 93, -202, 91, -107, -113, 121, 156, + 214, 155, 154, 152, 330, 331, -122, -202, -122, -198, + 60, 65, -142, 60, 59, -294, -235, -242, 355, -102, + 65, -283, 477, -310, 365, 20, 20, -67, -102, 60, + 59, -108, -101, -177, 81, -328, -329, -218, -328, 81, + 58, 65, -361, 346, 65, 65, 70, 35, 70, 123, + 339, -290, 58, -122, -124, -176, 121, 65, 60, -173, + -74, -177, -141, -356, 124, -141, -85, -238, -299, -202, + 58, -202, -202, -208, 60, -115, 143, 142, -115, -282, + 331, 330, -276, -278, 58, -277, 58, -277, -276, -276, + 58, 58, -276, -279, 58, -279, -276, -280, 58, -280, + -281, 58, -280, 60, 60, 60, -202, -197, -202, 60, + -276, -277, -276, -279, -276, -115, -115, 60, 60, 23, + 60, 60, 60, -299, -66, -304, -262, 484, 59, -129, + 478, 65, 20, 65, -308, 65, -90, -120, -121, -138, + 328, 230, -219, 234, 69, 235, 362, 236, 199, 238, + 239, 240, 210, 241, 242, 243, 355, 244, 245, 246, + 247, 311, 6, 277, -99, -119, -118, -116, 75, 86, + 35, 328, -117, 69, 120, 253, 231, 254, -137, -191, + 204, 80, 81, 316, -192, -325, -326, -177, -326, -177, + -325, -325, -218, -202, 20, 435, 293, 35, 70, 35, + 340, -223, -225, -157, 58, -65, -64, -141, -141, -86, + -89, -284, 332, 70, 70, -159, 65, -159, 70, 70, + 70, 60, -202, -311, 370, -307, -305, 365, 366, 367, + 368, 65, -160, 479, 70, 65, 367, 29, -258, 220, + 59, -138, -169, -169, -163, 120, -169, -169, -169, -169, + 237, 237, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, 58, -116, 75, -198, + 65, -124, -125, 35, 252, 248, -126, 35, 232, 233, + -128, 58, 260, 81, 81, -102, 58, 56, 269, 58, + 58, 58, -326, 60, 65, 334, 65, 293, 60, 59, + -276, -202, -66, -85, 60, 60, 60, 60, 59, 60, + 60, 60, 59, 60, 59, 60, -313, 202, -309, 369, + -305, 20, 367, 20, 20, 94, 58, 20, -67, 20, + -138, 70, 70, -169, -169, 70, 65, 65, 65, -169, + -169, 70, 65, -179, 70, 70, 70, 70, 35, 65, + -127, 35, 248, 252, 249, 250, 251, 70, 35, 70, + 35, 70, 35, -177, 58, -330, -331, 65, 70, 58, + -224, 58, -223, -327, 281, 282, 283, 285, 284, -327, + -223, -223, -223, 58, -244, -243, 261, 86, 355, -226, + -225, -81, 60, -86, 65, 70, 70, -320, 58, 70, + -310, 20, -308, 20, -308, -308, 65, -161, -177, -308, + -259, 262, 263, -260, -266, 265, -122, -122, 65, 65, + -123, 231, -104, 60, 59, 94, 60, -202, -131, -130, + 431, -223, 60, 60, 60, 60, -223, 261, -227, 210, + 69, 435, 279, 280, -81, 60, 60, -324, 25, 60, + -319, -318, -158, -314, -177, 370, 65, -308, 484, 60, + 59, -264, 266, 58, -262, 58, -262, 81, 282, 232, + 233, 60, -331, 65, 60, -135, -136, -133, -134, 55, + 374, 258, 259, 60, -226, -226, -226, -226, 60, -169, + 65, 278, -323, -322, -321, 60, 59, 124, -177, -261, + 267, 70, -198, 58, -198, 58, -263, 264, 58, -243, + -134, 55, -133, 55, 14, 13, -137, 70, -175, 59, + 94, -318, -177, -268, 58, 20, 60, -257, 60, -257, + 58, 94, -198, -132, 255, 256, 25, 134, -132, -322, + 35, -202, 124, -269, -267, 220, -260, 60, 60, -257, + 70, 60, 75, 35, 257, -177, 60, 59, 62, -265, + 268, 60, -267, -270, 38, 70, -274, -271, 58, -138, + 222, 104, -274, -138, -273, -272, 267, 223, 58, 60, + 59, 62, 219, 58, -208, -272, -271, -208, 60, 60, } var yyDef = [...]int{ @@ -4771,44 +4771,44 @@ var yyDef = [...]int{ 0, 322, 323, 324, 325, 326, 327, 328, 329, 230, 231, 232, 227, 228, 229, -2, 0, 354, 179, 0, 171, 171, 0, 431, 0, 0, 442, 464, 23, 389, - 0, 394, 717, 753, 754, 755, 1466, 1467, 1468, 1469, - 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, - 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, - 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, - 1500, 1501, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, - 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, - 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, - 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, - 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, - 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, - 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, - 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, - 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, - 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, - 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, - 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, - 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, - 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, - 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, - 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, - 1449, 1450, 1451, 1452, 1453, 1454, 1455, 191, 343, 344, - 431, 431, 213, 0, 1333, 217, 0, 0, 0, 318, + 0, 394, 719, 755, 756, 757, 1469, 1470, 1471, 1472, + 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, + 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, + 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, + 1503, 1504, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, + 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, + 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, + 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, + 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, + 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, + 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, + 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, + 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, + 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, + 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, + 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, + 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, + 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, + 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, + 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, + 1452, 1453, 1454, 1455, 1456, 1457, 1458, 191, 343, 344, + 431, 431, 213, 0, 1336, 217, 0, 0, 0, 318, 209, 210, 211, 212, 0, 527, 0, 206, 0, 185, - 1391, 0, 0, 0, 0, 0, 0, 87, 581, 89, + 1394, 0, 0, 0, 0, 0, 0, 87, 581, 89, 583, 93, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 0, 108, 0, 110, 0, 113, 114, 115, 0, 124, 125, 584, 585, 67, -2, 0, 0, 0, 447, 450, 453, 456, 545, 610, 610, 610, 0, 610, 0, 629, 587, 588, 589, 608, 609, 359, 355, 356, 357, 358, 419, 0, 421, 424, 301, 301, 0, 0, - 292, 293, 0, 310, 301, 301, 310, 0, 1120, 0, + 292, 293, 0, 310, 301, 301, 310, 0, 1123, 0, 0, 284, 285, 286, 290, 291, 311, 247, 247, 361, - 180, 181, 170, 0, 175, 0, 169, 1391, 0, 140, - 0, 145, 0, 1340, 1405, 1355, 0, 0, 1373, 0, + 180, 181, 170, 0, 175, 0, 169, 1394, 0, 140, + 0, 145, 0, 1343, 1408, 1358, 0, 0, 1376, 0, 164, -2, 426, 0, 432, 0, 431, 0, 247, 247, 247, 247, 247, 247, 247, 0, 0, 0, 465, 466, 461, 462, 463, 467, 468, 3, 0, 0, 393, 0, - 426, -2, 0, 214, 756, 0, 0, 218, 219, 0, + 426, -2, 0, 214, 758, 0, 0, 218, 219, 0, 0, 233, 0, 236, 222, 223, 224, 0, 0, 208, 0, 0, 187, 0, 0, 0, 248, 81, 0, 0, 0, 0, 0, 94, 123, 97, 98, 0, 118, 120, @@ -4818,186 +4818,186 @@ var yyDef = [...]int{ 0, 0, 0, 0, 610, 361, 360, 0, 420, 0, 0, 473, 0, 473, 0, 306, 307, 301, 301, 294, 303, 0, 308, 309, 0, 473, 473, 0, 0, 0, - 610, 1121, 1122, 0, 0, 0, 362, 0, 0, 173, + 610, 1124, 1125, 0, 0, 0, 362, 0, 0, 173, 0, 178, 130, 135, 133, 134, 136, 0, 0, 0, 0, 0, 162, 163, 0, 0, 0, 0, 0, 153, - 156, 711, 712, 578, 579, 157, 158, 0, 395, 427, + 156, 713, 714, 578, 579, 157, 158, 0, 395, 427, 443, 445, 440, 441, 0, 0, 0, 0, 0, 0, - 0, 340, 481, 475, 477, 522, 31, 0, 1010, 753, - 1015, -2, 1467, 1468, 1469, 1470, 1471, 1472, 1473, -2, - 1475, -2, -2, 1478, 1479, 1480, 1482, -2, -2, -2, - -2, -2, -2, 1489, -2, -2, -2, 1493, 1494, -2, - -2, 1497, 1498, 1499, 1500, 1501, -2, -2, -2, -2, - -2, -2, -2, -2, 1026, 824, 825, 826, 827, 0, - 0, 0, 0, 0, 834, 835, 0, 848, 0, 841, - 842, 843, 844, 845, 43, 44, 1045, 1046, 1047, 1048, - 1049, 1050, 1051, 1052, 1053, 1054, 973, 811, 0, 0, - 0, 958, 0, 948, 0, 986, 0, 0, 0, 0, - 0, 0, 45, 46, 964, 966, 967, 969, 970, 971, - 972, 975, 976, 977, 980, 981, 982, 983, 984, 985, - 988, 990, 960, 961, 962, 963, 952, 953, 954, 955, - 956, 957, 481, 363, 381, 365, 0, 370, 0, 718, - 395, 417, 395, 0, 215, 0, 220, 0, 0, 235, - 237, 238, 239, 225, 226, 319, 204, 205, 197, 198, - 199, 200, 201, 202, 203, 207, 41, 0, 188, 189, - 81, 0, 0, 82, 83, 84, 85, 86, 88, 72, - 332, 334, 570, 582, 0, 573, 0, 91, 116, 64, - 0, 0, 415, 428, 31, 433, 434, 437, 0, 0, - 0, 548, 0, 245, 564, 0, 580, 602, 532, 533, - 534, -2, 0, 0, 422, 0, 0, 509, 281, 0, - 302, 282, 473, 473, 473, 301, 0, 303, 0, 303, - 297, 298, 0, 312, 315, 313, 0, 0, 245, 486, - 0, 487, 488, 484, 511, 514, 517, 0, 182, 183, - 0, 0, 177, 0, 0, 137, 138, 139, 146, 141, - 143, 0, 0, 147, 159, 160, 161, 387, 388, 0, - 0, 0, 151, 152, 0, 165, 413, 330, 331, 335, - 0, 337, 715, 338, 339, 528, 529, 473, 0, 482, - 0, 478, 0, 0, 0, 0, 523, 0, 525, 0, - 1005, 0, 0, 1034, 1035, 1036, 1037, 1038, 1039, 1040, - 997, 993, 993, 993, 0, 993, 0, 0, 933, 0, - 0, 993, 993, 993, 993, 993, 934, 0, 993, 993, - 993, 993, 947, 941, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -2, 999, 0, 830, 831, 832, 833, 836, 0, - 849, 0, 0, 997, 997, 997, 936, 0, 0, 938, - 949, 0, 942, 997, 0, 997, 946, 993, 0, 473, - 364, 378, 0, 382, 0, 0, 374, 376, 369, 371, - 0, 0, 391, 416, 418, 757, 0, 1127, -2, 1129, - -2, -2, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, - 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, - 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, - 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, - 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, - 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, - 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, - 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, - 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, - 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, - 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, - 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, - 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, - 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, - 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, - 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, - 1289, 1290, 0, 221, 234, 0, 0, 0, 0, 75, - 567, 0, 76, 80, 70, 0, 0, 0, 572, 0, - 569, 574, 0, 90, 0, 0, 65, 66, 624, 0, - 397, 0, 0, 0, 0, 436, 438, 439, 424, 0, - 0, 554, 1123, 611, 249, 0, 0, 566, 0, 0, - 607, -2, 614, 0, 620, 0, 0, 0, 348, 352, - 23, 425, 0, 474, 283, 287, 288, 473, 304, 301, - 305, 301, 303, 0, 314, 317, 554, 249, 0, 0, - 0, 0, 0, 502, 0, 0, 501, 0, 0, 0, - 0, 0, 0, 515, 516, 518, 0, 520, 521, 530, - 531, 0, 431, 184, 172, 174, 0, 132, 0, 0, - 0, 148, 149, 150, 154, 155, 0, 0, 471, 476, - 483, 486, 1001, 1002, 1003, 1004, 524, 526, 32, 479, - 1006, 0, 1008, 1011, 1016, 1017, 1013, 0, 1031, -2, - -2, 0, 998, 999, 0, 994, 995, 0, 0, 0, - 0, 0, 0, 0, 950, 0, 0, 904, 905, 906, - 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, - 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, - 927, 928, 929, 930, 931, 932, 0, 0, 0, 0, - 0, 0, 0, 899, 900, 901, 0, 0, 0, 0, - 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, - 822, 823, 1018, 1029, 1030, 0, 0, 0, 0, 0, - 1027, 1022, 0, 828, 0, 846, 850, 0, 0, 992, - 0, 999, 0, 0, 959, 937, 0, 0, 0, 0, - 0, 0, 471, 381, 383, 0, 0, 381, 0, 0, - 0, 390, 0, 0, 0, 320, 42, 240, 0, 0, - 0, 0, 0, 333, 0, 571, 72, 0, 0, 92, - 0, 0, 401, 0, 429, 430, 32, 435, 0, 0, - 719, 557, 555, 556, 0, 1124, 561, 250, 251, 252, - 253, 0, 0, 0, 565, 0, 0, 603, 604, 605, - 606, 615, 1123, 1123, 1123, 719, 389, 0, -2, 0, - 0, 350, 0, 0, 510, 295, 473, 473, 301, 316, - 557, 561, 473, 194, 0, 505, 499, 0, 492, 503, - 504, 495, 0, 497, 0, 493, 494, 473, 485, 424, - 519, 513, 176, 131, 0, 269, 142, 336, 716, 469, - 0, 0, 1007, 1009, 1012, 1014, 886, 0, 0, 0, - 0, 0, 0, 875, 869, 870, 951, 0, 0, 0, - 0, 0, 0, 894, 0, 0, 0, 0, 0, 0, - 0, 0, 1019, 1027, 1023, 0, 1020, 0, 0, 1000, - 0, 851, 0, 0, 0, 0, 887, 0, 891, 935, - 939, 0, 943, 0, 945, 0, 0, 469, 379, 0, - 384, 385, 381, 368, 375, 367, 377, 372, 373, 392, - 758, 1128, 1125, 1126, 216, 0, 568, 72, 77, 78, - 79, 73, 71, 575, 0, 577, 0, 0, 403, 53, - 0, 0, 0, 0, 0, 0, 720, 721, 723, 724, - 0, 0, 726, 780, 0, 735, 610, 735, 0, 0, - 737, 738, 547, 0, 0, 550, 559, 0, 0, 0, - 255, 256, 0, 0, 0, 268, 264, 265, 266, 246, - 560, 0, 0, 0, 0, 0, 517, 0, 0, 473, - 349, 352, 353, 423, 299, 296, 473, 243, 244, 431, - 0, 0, 489, 506, 0, 0, 490, 0, 491, 496, - 498, 193, 512, 144, 459, 0, 0, 33, 480, 1000, - 871, 872, 873, 0, 853, 865, 865, 1115, 1056, 1057, - 1058, 1102, 1060, 1106, 1106, 1102, 1102, 1088, 1089, 1090, - 1091, 1092, 1093, 1094, 1095, 1096, 0, 0, 1079, 1102, - 1104, 1104, 1102, 1099, 1061, 1062, 1063, 1064, 1065, 1066, - 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1109, 1109, - 1112, 1109, 874, 0, 893, 876, 877, 880, 878, 0, - 0, 0, 892, 881, 882, 868, 996, 1021, 0, 1028, - 1024, 829, 837, 847, 0, 0, 856, 1102, 1106, 859, - 1102, 1104, 1102, 865, 865, 0, 0, 0, 0, 879, - 0, 460, 380, 0, 366, 74, 69, 576, 55, 0, - 405, 0, 402, 0, 0, 0, 543, 424, -2, 0, - -2, 725, 781, 747, 747, 736, 747, 747, 610, 0, - 558, 549, 0, 562, 563, 0, 257, 258, 0, 261, - 267, 0, 616, 617, 713, 714, 618, 0, 473, 473, - -2, 346, 351, 0, 300, 426, 195, 196, 507, 0, - 500, 470, 472, 838, 854, 866, 867, 855, 1118, 1116, - 1117, 1059, 1103, 0, 1084, 0, 1085, 1086, 1087, 0, - 0, 1080, 1081, 0, 1082, 1083, 1075, 0, 1076, 1077, - 0, 1078, 890, 895, 896, 0, 1025, 852, 839, 857, - 858, 860, 861, 862, 863, 864, 840, 888, 0, 940, - 944, 898, 386, 24, 49, 0, 625, 0, 407, 0, - 404, 0, 398, 400, 63, 0, 630, -2, 667, 1123, - 1123, 0, 1123, 1123, 1123, 1123, 0, 0, 1123, 1123, - 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, - 1123, 1123, 0, 722, 749, -2, 761, 763, 0, 0, - 766, 767, 0, 0, 0, 0, 803, 773, 0, 0, - 1043, 1044, 0, 779, 0, 739, 748, 0, 748, 0, - 0, 747, 0, 0, 0, 254, 259, 0, 262, 263, - 0, 598, 1102, 0, 622, 55, 431, 347, 192, 0, - 1055, 1119, 0, 0, 0, 1100, 0, 0, 0, 0, - 897, 0, 47, 51, 56, 57, 0, 0, 0, 0, - 0, 396, 0, 406, 54, 0, 0, 621, 0, 619, - 669, 0, 0, 1123, 1123, 0, 0, 0, 0, 1123, - 1123, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 762, 764, 765, 768, - 769, 770, 808, 809, 810, 771, 805, 806, 807, 772, - 0, 0, 1041, 1042, 801, 0, 0, 0, 0, 0, - 0, 0, 733, 551, 0, 553, 260, 591, 0, 437, - 0, 623, 426, 508, 1108, 1107, 1097, 0, 1098, 1105, - 1110, 0, 1113, 0, 889, 34, 0, 53, 0, 58, - 0, 0, 0, 0, 0, 0, 0, 544, 663, 668, - 670, 671, 0, 0, 674, 675, 676, 677, 0, 0, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 705, 706, 707, 708, 709, 710, 690, 691, 692, 693, - 694, 695, 702, 0, 0, 699, 0, 0, 0, 796, - 0, 0, 740, 742, 743, 744, 745, 746, 741, 0, - 0, 0, 0, 732, 734, 776, 0, 552, 590, 599, - 600, 437, 345, 1101, 0, 0, 25, 0, 0, 50, - 0, 59, 0, 61, 62, 0, 0, 409, 399, 652, - 0, 0, 658, 0, 664, 672, 673, 678, 679, 696, - 0, 0, 698, 0, 0, 804, 0, 783, 797, 0, - 0, 591, 591, 591, 591, 0, 777, 592, 1123, 0, - 0, 596, 597, 601, 1111, 1114, 627, 0, 35, 0, - 37, 39, 40, 750, 48, 52, 60, 626, 408, 0, - 632, 0, 0, 0, 0, 0, 661, 0, 703, 704, - 697, 700, 701, 774, 782, 784, 785, 786, 0, 798, - 799, 800, 802, 727, 728, 729, 730, 0, 0, 594, - 0, 26, 27, 0, 36, 0, 0, 410, 634, 0, - 653, 0, 0, 0, 0, 0, 0, 0, 775, 787, - 0, 788, 0, 0, 0, 731, 593, 595, 0, 0, - 38, 751, 631, 0, 663, 654, 0, 656, 0, 0, - 0, 0, 789, 791, 792, 0, 0, 790, 28, 29, - 30, 0, 0, 636, 0, 650, 655, 657, 0, 662, - 660, 793, 795, 794, 752, 635, 0, 648, 633, 0, - 659, 637, -2, 0, 651, 638, -2, 0, 646, 0, - 639, 647, 0, 642, 0, 0, 641, 0, -2, 0, - 643, -2, 0, 649, + 0, 340, 481, 475, 477, 522, 31, 0, 1008, 1013, + 755, 1018, -2, 1470, 1471, 1472, 1473, 1474, 1475, 1476, + -2, 1478, -2, -2, 1481, 1482, 1483, 1485, -2, -2, + -2, -2, -2, -2, 1492, -2, -2, -2, 1496, 1497, + -2, -2, 1500, 1501, 1502, 1503, 1504, -2, -2, -2, + -2, -2, -2, -2, -2, 1029, 826, 827, 828, 829, + 0, 0, 0, 0, 0, 836, 837, 0, 850, 0, + 843, 844, 845, 846, 847, 43, 44, 1048, 1049, 1050, + 1051, 1052, 1053, 1054, 1055, 1056, 1057, 975, 813, 0, + 0, 0, 960, 0, 950, 0, 988, 0, 0, 0, + 0, 0, 0, 45, 46, 966, 968, 969, 971, 972, + 973, 974, 977, 978, 979, 982, 983, 984, 985, 986, + 987, 990, 992, 962, 963, 964, 965, 954, 955, 956, + 957, 958, 959, 481, 363, 381, 365, 0, 370, 0, + 720, 395, 417, 395, 0, 215, 0, 220, 0, 0, + 235, 237, 238, 239, 225, 226, 319, 204, 205, 197, + 198, 199, 200, 201, 202, 203, 207, 41, 0, 188, + 189, 81, 0, 0, 82, 83, 84, 85, 86, 88, + 72, 332, 334, 570, 582, 0, 573, 0, 91, 116, + 64, 0, 0, 415, 428, 31, 433, 434, 437, 0, + 0, 0, 548, 0, 245, 564, 0, 580, 602, 532, + 533, 534, -2, 0, 0, 422, 0, 0, 509, 281, + 0, 302, 282, 473, 473, 473, 301, 0, 303, 0, + 303, 297, 298, 0, 312, 315, 313, 0, 0, 245, + 486, 0, 487, 488, 484, 511, 514, 517, 0, 182, + 183, 0, 0, 177, 0, 0, 137, 138, 139, 146, + 141, 143, 0, 0, 147, 159, 160, 161, 387, 388, + 0, 0, 0, 151, 152, 0, 165, 413, 330, 331, + 335, 0, 337, 717, 338, 339, 528, 529, 473, 0, + 482, 0, 478, 0, 0, 0, 0, 523, 0, 525, + 0, 1007, 0, 0, 1037, 1038, 1039, 1040, 1041, 1042, + 1043, 999, 995, 995, 995, 0, 995, 0, 0, 935, + 0, 0, 995, 995, 995, 995, 995, 936, 0, 995, + 995, 995, 995, 949, 943, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2, 1001, 0, 832, 833, 834, 835, 838, + 0, 851, 0, 0, 999, 999, 999, 938, 0, 0, + 940, 951, 0, 944, 999, 0, 999, 948, 995, 0, + 473, 364, 378, 0, 382, 0, 0, 374, 376, 369, + 371, 0, 0, 391, 416, 418, 759, 0, 1130, -2, + 1132, -2, -2, 1134, 1135, 1136, 1137, 1138, 1139, 1140, + 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, + 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, + 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, + 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, + 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, + 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, + 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, + 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, + 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, + 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, + 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, + 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, + 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, + 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, + 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, + 1291, 1292, 1293, 0, 221, 234, 0, 0, 0, 0, + 75, 567, 0, 76, 80, 70, 0, 0, 0, 572, + 0, 569, 574, 0, 90, 0, 0, 65, 66, 624, + 0, 397, 0, 0, 0, 0, 436, 438, 439, 424, + 0, 0, 554, 1126, 611, 249, 0, 0, 566, 0, + 0, 607, -2, 614, 0, 620, 0, 0, 0, 348, + 352, 23, 425, 0, 474, 283, 287, 288, 473, 304, + 301, 305, 301, 303, 0, 314, 317, 554, 249, 0, + 0, 0, 0, 0, 502, 0, 0, 501, 0, 0, + 0, 0, 0, 0, 515, 516, 518, 0, 520, 521, + 530, 531, 0, 431, 184, 172, 174, 0, 132, 0, + 0, 0, 148, 149, 150, 154, 155, 0, 0, 471, + 476, 483, 486, 1003, 1004, 1005, 1006, 524, 526, 32, + 479, 1009, 0, 1011, 1014, 1019, 1020, 1016, 0, 1034, + -2, -2, 0, 1000, 1001, 0, 996, 997, 0, 0, + 0, 0, 0, 0, 0, 952, 0, 0, 906, 907, + 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, + 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, + 928, 929, 930, 931, 932, 933, 934, 0, 0, 0, + 0, 0, 0, 0, 901, 902, 903, 0, 0, 0, + 0, 814, 815, 816, 817, 818, 819, 820, 821, 822, + 823, 824, 825, 1021, 1032, 1033, 0, 0, 0, 0, + 0, 1030, 1025, 0, 830, 0, 848, 852, 0, 0, + 994, 0, 1001, 0, 0, 961, 939, 0, 0, 0, + 0, 0, 0, 471, 381, 383, 0, 0, 381, 0, + 0, 0, 390, 0, 0, 0, 320, 42, 240, 0, + 0, 0, 0, 0, 333, 0, 571, 72, 0, 0, + 92, 0, 0, 401, 0, 429, 430, 32, 435, 0, + 0, 721, 557, 555, 556, 0, 1127, 561, 250, 251, + 252, 253, 0, 0, 0, 565, 0, 0, 603, 604, + 605, 606, 615, 1126, 1126, 1126, 721, 389, 0, -2, + 0, 0, 350, 0, 0, 510, 295, 473, 473, 301, + 316, 557, 561, 473, 194, 0, 505, 499, 0, 492, + 503, 504, 495, 0, 497, 0, 493, 494, 473, 485, + 424, 519, 513, 176, 131, 0, 269, 142, 336, 718, + 469, 0, 0, 1010, 1012, 1015, 1017, 888, 0, 0, + 0, 0, 0, 0, 877, 871, 872, 953, 0, 0, + 0, 0, 0, 0, 896, 0, 0, 0, 0, 0, + 0, 0, 0, 1022, 1030, 1026, 0, 1023, 0, 0, + 1002, 0, 853, 0, 0, 0, 0, 889, 0, 893, + 937, 941, 0, 945, 0, 947, 0, 0, 469, 379, + 0, 384, 385, 381, 368, 375, 367, 377, 372, 373, + 392, 760, 1131, 1128, 1129, 216, 0, 568, 72, 77, + 78, 79, 73, 71, 575, 0, 577, 0, 0, 403, + 53, 0, 0, 0, 0, 0, 0, 722, 723, 725, + 726, 0, 0, 728, 782, 0, 737, 610, 737, 0, + 0, 739, 740, 547, 0, 0, 550, 559, 0, 0, + 0, 255, 256, 0, 0, 0, 268, 264, 265, 266, + 246, 560, 0, 0, 0, 0, 0, 517, 0, 0, + 473, 349, 352, 353, 423, 299, 296, 473, 243, 244, + 431, 0, 0, 489, 506, 0, 0, 490, 0, 491, + 496, 498, 193, 512, 144, 459, 0, 0, 33, 480, + 1002, 873, 874, 875, 0, 855, 867, 867, 1118, 1059, + 1060, 1061, 1105, 1063, 1109, 1109, 1105, 1105, 1091, 1092, + 1093, 1094, 1095, 1096, 1097, 1098, 1099, 0, 0, 1082, + 1105, 1107, 1107, 1105, 1102, 1064, 1065, 1066, 1067, 1068, + 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1112, + 1112, 1115, 1112, 876, 0, 895, 878, 879, 882, 880, + 0, 0, 0, 894, 883, 884, 870, 998, 1024, 0, + 1031, 1027, 831, 839, 849, 0, 0, 858, 1105, 1109, + 861, 1105, 1107, 1105, 867, 867, 0, 0, 0, 0, + 881, 0, 460, 380, 0, 366, 74, 69, 576, 55, + 0, 405, 0, 402, 0, 0, 0, 543, 424, -2, + 0, -2, 727, 783, 749, 749, 738, 749, 749, 610, + 0, 558, 549, 0, 562, 563, 0, 257, 258, 0, + 261, 267, 0, 616, 617, 715, 716, 618, 0, 473, + 473, -2, 346, 351, 0, 300, 426, 195, 196, 507, + 0, 500, 470, 472, 840, 856, 868, 869, 857, 1121, + 1119, 1120, 1062, 1106, 0, 1087, 0, 1088, 1089, 1090, + 0, 0, 1083, 1084, 0, 1085, 1086, 1078, 0, 1079, + 1080, 0, 1081, 892, 897, 898, 0, 1028, 854, 841, + 859, 860, 862, 863, 864, 865, 866, 842, 890, 0, + 942, 946, 900, 386, 24, 49, 0, 625, 0, 407, + 0, 404, 0, 398, 400, 63, 0, 630, -2, 669, + 1126, 1126, 0, 1126, 1126, 1126, 1126, 0, 0, 1126, + 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, + 1126, 1126, 1126, 0, 724, 751, -2, 763, 765, 0, + 0, 768, 769, 0, 0, 0, 0, 805, 775, 0, + 0, 1046, 1047, 0, 781, 0, 741, 750, 0, 750, + 0, 0, 749, 0, 0, 0, 254, 259, 0, 262, + 263, 0, 598, 1105, 0, 622, 55, 431, 347, 192, + 0, 1058, 1122, 0, 0, 0, 1103, 0, 0, 0, + 0, 899, 0, 47, 51, 56, 57, 0, 0, 0, + 0, 0, 396, 0, 406, 54, 0, 0, 621, 0, + 619, 671, 0, 0, 1126, 1126, 0, 0, 0, 0, + 1126, 1126, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 764, 766, 767, + 770, 771, 772, 810, 811, 812, 773, 807, 808, 809, + 774, 0, 0, 1044, 1045, 803, 0, 0, 0, 0, + 0, 0, 0, 735, 551, 0, 553, 260, 591, 0, + 437, 0, 623, 426, 508, 1111, 1110, 1100, 0, 1101, + 1108, 1113, 0, 1116, 0, 891, 34, 0, 53, 0, + 58, 0, 0, 0, 0, 0, 0, 0, 544, 665, + 670, 672, 673, 0, 0, 676, 677, 678, 679, 0, + 0, 682, 683, 684, 685, 686, 687, 688, 689, 690, + 691, 707, 708, 709, 710, 711, 712, 692, 693, 694, + 695, 696, 697, 704, 0, 0, 701, 0, 0, 0, + 798, 0, 0, 742, 744, 745, 746, 747, 748, 743, + 0, 0, 0, 0, 734, 736, 778, 0, 552, 590, + 599, 600, 437, 345, 1104, 0, 0, 25, 0, 0, + 50, 0, 59, 0, 61, 62, 0, 0, 409, 399, + 654, 0, 0, 660, 0, 666, 674, 675, 680, 681, + 698, 0, 0, 700, 0, 0, 806, 0, 785, 799, + 0, 0, 591, 591, 591, 591, 0, 779, 592, 1126, + 0, 0, 596, 597, 601, 1114, 1117, 627, 0, 35, + 0, 37, 39, 40, 752, 48, 52, 60, 626, 408, + 0, 632, 0, 0, 0, 0, 0, 663, 0, 705, + 706, 699, 702, 703, 776, 784, 786, 787, 788, 0, + 800, 801, 802, 804, 729, 730, 731, 732, 0, 0, + 594, 0, 26, 27, 0, 36, 0, 0, 410, 634, + 0, 655, 0, 0, 0, 0, 0, 0, 0, 777, + 789, 0, 790, 0, 0, 0, 733, 593, 595, 0, + 0, 38, 753, 631, 0, 665, 656, 0, 658, 0, + 0, 0, 0, 791, 793, 794, 0, 0, 792, 28, + 29, 30, 0, 0, 636, 0, 652, 657, 659, 0, + 664, 662, 795, 797, 796, 754, 635, 0, 648, 633, + 0, 661, 637, -2, 0, 653, 638, -2, 0, 646, + 0, 0, 639, 647, 0, 642, 0, 0, 0, 641, + 0, -2, 649, 0, 0, 643, -2, 0, 651, 650, } var yyTok1 = [...]int{ @@ -10298,25 +10298,42 @@ yydefault: } yyVAL.union = yyLOCAL case 649: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Values //line mysql_sql.y:4101 { - yyLOCAL = &tree.ValuesLessThan{ValueList: yyDollar[5].exprsUnion()} + expr := tree.NewMaxValue() + yyLOCAL = &tree.ValuesLessThan{ValueList: tree.Exprs{expr}} } yyVAL.union = yyLOCAL case 650: + yyDollar = yyS[yypt-6 : yypt+1] + var yyLOCAL tree.Values +//line mysql_sql.y:4106 + { + yyLOCAL = &tree.ValuesLessThan{ValueList: yyDollar[5].exprsUnion()} + } + yyVAL.union = yyLOCAL + case 651: + yyDollar = yyS[yypt-5 : yypt+1] + var yyLOCAL tree.Values +//line mysql_sql.y:4110 + { + yyLOCAL = &tree.ValuesIn{ValueList: yyDollar[4].exprsUnion()} + } + yyVAL.union = yyLOCAL + case 652: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:4106 +//line mysql_sql.y:4115 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 651: + case 653: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:4110 +//line mysql_sql.y:4119 { res := yyDollar[2].item.(int64) if res == 0 { @@ -10326,18 +10343,18 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 652: + case 654: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:4120 +//line mysql_sql.y:4129 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 653: + case 655: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:4124 +//line mysql_sql.y:4133 { res := yyDollar[2].item.(int64) if res == 0 { @@ -10347,10 +10364,10 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 654: + case 656: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:4135 +//line mysql_sql.y:4144 { yyLOCAL = &tree.PartitionBy{ PType: &tree.RangeType{ @@ -10359,10 +10376,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 655: + case 657: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:4143 +//line mysql_sql.y:4152 { yyLOCAL = &tree.PartitionBy{ PType: &tree.RangeType{ @@ -10371,10 +10388,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 656: + case 658: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:4151 +//line mysql_sql.y:4160 { yyLOCAL = &tree.PartitionBy{ PType: &tree.ListType{ @@ -10383,10 +10400,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 657: + case 659: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:4159 +//line mysql_sql.y:4168 { yyLOCAL = &tree.PartitionBy{ PType: &tree.ListType{ @@ -10395,10 +10412,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 659: + case 661: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:4170 +//line mysql_sql.y:4179 { yyLOCAL = &tree.PartitionBy{ PType: &tree.KeyType{ @@ -10409,10 +10426,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 660: + case 662: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:4180 +//line mysql_sql.y:4189 { yyLOCAL = &tree.PartitionBy{ PType: &tree.HashType{ @@ -10422,478 +10439,478 @@ yydefault: } } yyVAL.union = yyLOCAL - case 661: + case 663: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:4190 +//line mysql_sql.y:4199 { - yyLOCAL = 0 + yyLOCAL = 2 } yyVAL.union = yyLOCAL - case 662: + case 664: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:4194 +//line mysql_sql.y:4203 { yyLOCAL = yyDollar[3].item.(int64) } yyVAL.union = yyLOCAL - case 663: + case 665: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4199 +//line mysql_sql.y:4208 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 664: + case 666: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4203 +//line mysql_sql.y:4212 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 665: + case 667: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:4208 +//line mysql_sql.y:4217 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 666: + case 668: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:4212 +//line mysql_sql.y:4221 { yyLOCAL = yyDollar[1].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 667: + case 669: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:4218 +//line mysql_sql.y:4227 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 668: + case 670: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:4222 +//line mysql_sql.y:4231 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[3].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 669: + case 671: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:4226 +//line mysql_sql.y:4235 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[2].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 670: + case 672: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4232 +//line mysql_sql.y:4241 { yyLOCAL = tree.NewTableOptionAutoIncrement(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 671: + case 673: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4236 +//line mysql_sql.y:4245 { yyLOCAL = tree.NewTableOptionAvgRowLength(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 672: + case 674: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4240 +//line mysql_sql.y:4249 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 673: + case 675: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4244 +//line mysql_sql.y:4253 { yyLOCAL = tree.NewTableOptionCollate(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 674: + case 676: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4248 +//line mysql_sql.y:4257 { yyLOCAL = tree.NewTableOptionChecksum(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 675: + case 677: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4252 +//line mysql_sql.y:4261 { yyLOCAL = tree.NewTableOptionComment(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 676: + case 678: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4256 +//line mysql_sql.y:4265 { yyLOCAL = tree.NewTableOptionCompression(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 677: + case 679: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4260 +//line mysql_sql.y:4269 { yyLOCAL = tree.NewTableOptionConnection(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 678: + case 680: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4264 +//line mysql_sql.y:4273 { yyLOCAL = tree.NewTableOptionDataDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 679: + case 681: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4268 +//line mysql_sql.y:4277 { yyLOCAL = tree.NewTableOptionIndexDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 680: + case 682: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4272 +//line mysql_sql.y:4281 { yyLOCAL = tree.NewTableOptionDelayKeyWrite(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 681: + case 683: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4276 +//line mysql_sql.y:4285 { yyLOCAL = tree.NewTableOptionEncryption(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 682: + case 684: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4280 +//line mysql_sql.y:4289 { yyLOCAL = tree.NewTableOptionEngine(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 683: + case 685: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4284 +//line mysql_sql.y:4293 { yyLOCAL = tree.NewTableOptionKeyBlockSize(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 684: + case 686: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4288 +//line mysql_sql.y:4297 { yyLOCAL = tree.NewTableOptionMaxRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 685: + case 687: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4292 +//line mysql_sql.y:4301 { yyLOCAL = tree.NewTableOptionMinRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 686: + case 688: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4296 +//line mysql_sql.y:4305 { yyLOCAL = &tree.TableOptionPackKeys{Value: yyDollar[3].item.(int64)} } yyVAL.union = yyLOCAL - case 687: + case 689: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4300 +//line mysql_sql.y:4309 { yyLOCAL = &tree.TableOptionPackKeys{Default: true} } yyVAL.union = yyLOCAL - case 688: + case 690: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4304 +//line mysql_sql.y:4313 { yyLOCAL = tree.NewTableOptionPassword(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 689: + case 691: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4308 +//line mysql_sql.y:4317 { yyLOCAL = tree.NewTableOptionRowFormat(yyDollar[3].rowFormatTypeUnion()) } yyVAL.union = yyLOCAL - case 690: + case 692: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4312 +//line mysql_sql.y:4321 { yyLOCAL = &tree.TableOptionStatsAutoRecalc{Value: uint64(yyDollar[3].item.(int64))} } yyVAL.union = yyLOCAL - case 691: + case 693: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4316 +//line mysql_sql.y:4325 { yyLOCAL = &tree.TableOptionStatsAutoRecalc{Default: true} } yyVAL.union = yyLOCAL - case 692: + case 694: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4320 +//line mysql_sql.y:4329 { yyLOCAL = &tree.TableOptionStatsPersistent{Value: uint64(yyDollar[3].item.(int64))} } yyVAL.union = yyLOCAL - case 693: + case 695: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4324 +//line mysql_sql.y:4333 { yyLOCAL = &tree.TableOptionStatsPersistent{Default: true} } yyVAL.union = yyLOCAL - case 694: + case 696: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4328 +//line mysql_sql.y:4337 { yyLOCAL = &tree.TableOptionStatsSamplePages{Value: uint64(yyDollar[3].item.(int64))} } yyVAL.union = yyLOCAL - case 695: + case 697: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4332 +//line mysql_sql.y:4341 { yyLOCAL = &tree.TableOptionStatsSamplePages{Default: true} } yyVAL.union = yyLOCAL - case 696: + case 698: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4336 +//line mysql_sql.y:4345 { yyLOCAL = tree.NewTableOptionTablespace(yyDollar[3].str, yyDollar[4].str) } yyVAL.union = yyLOCAL - case 697: + case 699: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4340 +//line mysql_sql.y:4349 { yyLOCAL = tree.NewTableOptionUnion(yyDollar[4].tableNamesUnion()) } yyVAL.union = yyLOCAL - case 698: + case 700: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:4344 +//line mysql_sql.y:4353 { yyLOCAL = &tree.TableOptionProperties{Preperties: yyDollar[3].propertiesUnion()} } yyVAL.union = yyLOCAL - case 699: + case 701: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:4351 +//line mysql_sql.y:4360 { yyLOCAL = []tree.Property{yyDollar[1].propertyUnion()} } yyVAL.union = yyLOCAL - case 700: + case 702: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:4355 +//line mysql_sql.y:4364 { yyLOCAL = append(yyDollar[1].propertiesUnion(), yyDollar[3].propertyUnion()) } yyVAL.union = yyLOCAL - case 701: + case 703: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Property -//line mysql_sql.y:4361 +//line mysql_sql.y:4370 { yyLOCAL = tree.Property{Key: yyDollar[1].str, Value: yyDollar[3].str} } yyVAL.union = yyLOCAL - case 702: + case 704: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4366 +//line mysql_sql.y:4375 { yyVAL.str = "" } - case 703: + case 705: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:4370 +//line mysql_sql.y:4379 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 704: + case 706: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:4374 +//line mysql_sql.y:4383 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 705: + case 707: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:4380 +//line mysql_sql.y:4389 { yyLOCAL = tree.ROW_FORMAT_DEFAULT } yyVAL.union = yyLOCAL - case 706: + case 708: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:4384 +//line mysql_sql.y:4393 { yyLOCAL = tree.ROW_FORMAT_DYNAMIC } yyVAL.union = yyLOCAL - case 707: + case 709: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:4388 +//line mysql_sql.y:4397 { yyLOCAL = tree.ROW_FORMAT_FIXED } yyVAL.union = yyLOCAL - case 708: + case 710: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:4392 +//line mysql_sql.y:4401 { yyLOCAL = tree.ROW_FORMAT_COMPRESSED } yyVAL.union = yyLOCAL - case 709: + case 711: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:4396 +//line mysql_sql.y:4405 { yyLOCAL = tree.ROW_FORMAT_REDUNDANT } yyVAL.union = yyLOCAL - case 710: + case 712: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:4400 +//line mysql_sql.y:4409 { yyLOCAL = tree.ROW_FORMAT_COMPACT } yyVAL.union = yyLOCAL - case 715: + case 717: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:4414 +//line mysql_sql.y:4423 { yyLOCAL = tree.TableNames{yyDollar[1].tableNameUnion()} } yyVAL.union = yyLOCAL - case 716: + case 718: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:4418 +//line mysql_sql.y:4427 { yyLOCAL = append(yyDollar[1].tableNamesUnion(), yyDollar[3].tableNameUnion()) } yyVAL.union = yyLOCAL - case 717: + case 719: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:4427 +//line mysql_sql.y:4436 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewTableName(tree.Identifier(yyDollar[1].str), prefix) } yyVAL.union = yyLOCAL - case 718: + case 720: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:4432 +//line mysql_sql.y:4441 { prefix := tree.ObjectNamePrefix{SchemaName: tree.Identifier(yyDollar[1].str), ExplicitSchema: true} yyLOCAL = tree.NewTableName(tree.Identifier(yyDollar[3].str), prefix) } yyVAL.union = yyLOCAL - case 719: + case 721: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:4438 +//line mysql_sql.y:4447 { yyLOCAL = tree.TableDefs(nil) } yyVAL.union = yyLOCAL - case 721: + case 723: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:4445 +//line mysql_sql.y:4454 { yyLOCAL = tree.TableDefs{yyDollar[1].tableDefUnion()} } yyVAL.union = yyLOCAL - case 722: + case 724: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:4449 +//line mysql_sql.y:4458 { yyLOCAL = append(yyDollar[1].tableDefsUnion(), yyDollar[3].tableDefUnion()) } yyVAL.union = yyLOCAL - case 723: + case 725: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:4455 +//line mysql_sql.y:4464 { yyLOCAL = tree.TableDef(yyDollar[1].columnTableDefUnion()) } yyVAL.union = yyLOCAL - case 724: + case 726: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:4459 +//line mysql_sql.y:4468 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 725: + case 727: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:4465 +//line mysql_sql.y:4474 { if yyDollar[1].str != "" { switch v := yyDollar[2].tableDefUnion().(type) { @@ -10904,18 +10921,18 @@ yydefault: yyLOCAL = yyDollar[2].tableDefUnion() } yyVAL.union = yyLOCAL - case 726: + case 728: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:4475 +//line mysql_sql.y:4484 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 727: + case 729: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:4481 +//line mysql_sql.y:4490 { yyLOCAL = &tree.PrimaryKeyIndex{ KeyParts: yyDollar[5].keyPartsUnion(), @@ -10925,10 +10942,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 728: + case 730: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:4490 +//line mysql_sql.y:4499 { yyLOCAL = &tree.FullTextIndex{ KeyParts: yyDollar[5].keyPartsUnion(), @@ -10938,10 +10955,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 729: + case 731: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:4499 +//line mysql_sql.y:4508 { keyTyp := tree.INDEX_TYPE_INVALID if yyDollar[3].strsUnion()[1] != "" { @@ -10965,10 +10982,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 730: + case 732: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:4522 +//line mysql_sql.y:4531 { yyLOCAL = &tree.UniqueIndex{ KeyParts: yyDollar[5].keyPartsUnion(), @@ -10978,10 +10995,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 731: + case 733: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:4531 +//line mysql_sql.y:4540 { yyLOCAL = &tree.ForeignKey{ IfNotExists: yyDollar[3].ifNotExistsUnion(), @@ -10992,10 +11009,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 732: + case 734: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:4541 +//line mysql_sql.y:4550 { yyLOCAL = &tree.CheckIndex{ Expr: yyDollar[3].exprUnion(), @@ -11003,298 +11020,298 @@ yydefault: } } yyVAL.union = yyLOCAL - case 733: + case 735: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4549 +//line mysql_sql.y:4558 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 735: + case 737: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4555 +//line mysql_sql.y:4564 { yyVAL.str = "" } - case 736: + case 738: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:4559 +//line mysql_sql.y:4568 { yyVAL.str = yyDollar[1].str } - case 739: + case 741: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:4569 +//line mysql_sql.y:4578 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = "" } yyVAL.union = yyLOCAL - case 740: + case 742: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:4575 +//line mysql_sql.y:4584 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 741: + case 743: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:4581 +//line mysql_sql.y:4590 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 747: + case 749: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4595 +//line mysql_sql.y:4604 { yyVAL.str = "" } - case 749: + case 751: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ColumnTableDef -//line mysql_sql.y:4602 +//line mysql_sql.y:4611 { yyLOCAL = tree.NewColumnTableDef(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), yyDollar[3].columnAttributesUnion()) } yyVAL.union = yyLOCAL - case 750: + case 752: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:4608 +//line mysql_sql.y:4617 { yyLOCAL = tree.SetUnresolvedName(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 751: + case 753: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:4612 +//line mysql_sql.y:4621 { yyLOCAL = tree.SetUnresolvedName(yyDollar[1].str, yyDollar[3].str) } yyVAL.union = yyLOCAL - case 752: + case 754: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:4616 +//line mysql_sql.y:4625 { yyLOCAL = tree.SetUnresolvedName(yyDollar[1].str, yyDollar[3].str, yyDollar[5].str) } yyVAL.union = yyLOCAL - case 756: + case 758: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:4627 +//line mysql_sql.y:4636 { yyLOCAL = tree.SetUnresolvedName(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 757: + case 759: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:4631 +//line mysql_sql.y:4640 { yyLOCAL = tree.SetUnresolvedName(yyDollar[1].str, yyDollar[3].str) } yyVAL.union = yyLOCAL - case 758: + case 760: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:4635 +//line mysql_sql.y:4644 { yyLOCAL = tree.SetUnresolvedName(yyDollar[1].str, yyDollar[3].str, yyDollar[5].str) } yyVAL.union = yyLOCAL - case 759: + case 761: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:4640 +//line mysql_sql.y:4649 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 760: + case 762: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:4644 +//line mysql_sql.y:4653 { yyLOCAL = yyDollar[1].columnAttributesUnion() } yyVAL.union = yyLOCAL - case 761: + case 763: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:4650 +//line mysql_sql.y:4659 { yyLOCAL = []tree.ColumnAttribute{yyDollar[1].columnAttributeUnion()} } yyVAL.union = yyLOCAL - case 762: + case 764: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:4654 +//line mysql_sql.y:4663 { yyLOCAL = append(yyDollar[1].columnAttributesUnion(), yyDollar[2].columnAttributeUnion()) } yyVAL.union = yyLOCAL - case 763: + case 765: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:4660 +//line mysql_sql.y:4669 { yyLOCAL = tree.NewAttributeNull(true) } yyVAL.union = yyLOCAL - case 764: + case 766: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:4664 +//line mysql_sql.y:4673 { yyLOCAL = tree.NewAttributeNull(false) } yyVAL.union = yyLOCAL - case 765: + case 767: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:4668 +//line mysql_sql.y:4677 { yyLOCAL = tree.NewAttributeDefault(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 766: + case 768: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:4672 +//line mysql_sql.y:4681 { yyLOCAL = tree.NewAttributeAutoIncrement() } yyVAL.union = yyLOCAL - case 767: + case 769: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:4676 +//line mysql_sql.y:4685 { yyLOCAL = yyDollar[1].columnAttributeUnion() } yyVAL.union = yyLOCAL - case 768: + case 770: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:4680 +//line mysql_sql.y:4689 { yyLOCAL = tree.NewAttributeComment(tree.NewNumValWithType(constant.MakeString(yyDollar[2].str), yyDollar[2].str, false, tree.P_char)) } yyVAL.union = yyLOCAL - case 769: + case 771: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:4684 +//line mysql_sql.y:4693 { yyLOCAL = tree.NewAttributeCollate(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 770: + case 772: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:4688 +//line mysql_sql.y:4697 { yyLOCAL = tree.NewAttributeColumnFormat(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 771: + case 773: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:4692 +//line mysql_sql.y:4701 { yyLOCAL = tree.NewAttributeStorage(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 772: + case 774: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:4696 +//line mysql_sql.y:4705 { yyLOCAL = tree.NewAttributeAutoRandom(int(yyDollar[2].int64ValUnion())) } yyVAL.union = yyLOCAL - case 773: + case 775: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:4700 +//line mysql_sql.y:4709 { yyLOCAL = yyDollar[1].attributeReferenceUnion() } yyVAL.union = yyLOCAL - case 774: + case 776: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:4704 +//line mysql_sql.y:4713 { yyLOCAL = tree.NewAttributeCheck(yyDollar[4].exprUnion(), false, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 775: + case 777: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:4708 +//line mysql_sql.y:4717 { yyLOCAL = tree.NewAttributeCheck(yyDollar[4].exprUnion(), yyDollar[6].boolValUnion(), yyDollar[1].str) } yyVAL.union = yyLOCAL - case 776: + case 778: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4718 +//line mysql_sql.y:4727 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 777: + case 779: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:4722 +//line mysql_sql.y:4731 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 778: + case 780: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4727 +//line mysql_sql.y:4736 { yyVAL.str = "" } - case 779: + case 781: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:4731 +//line mysql_sql.y:4740 { yyVAL.str = yyDollar[1].str } - case 780: + case 782: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:4737 +//line mysql_sql.y:4746 { yyVAL.str = "" } - case 781: + case 783: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:4741 +//line mysql_sql.y:4750 { yyVAL.str = yyDollar[2].str } - case 782: + case 784: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AttributeReference -//line mysql_sql.y:4747 +//line mysql_sql.y:4756 { yyLOCAL = &tree.AttributeReference{ TableName: yyDollar[2].tableNameUnion(), @@ -11305,10 +11322,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 783: + case 785: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:4758 +//line mysql_sql.y:4767 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -11316,10 +11333,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 785: + case 787: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:4768 +//line mysql_sql.y:4777 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -11327,10 +11344,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 786: + case 788: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:4775 +//line mysql_sql.y:4784 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -11338,10 +11355,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 787: + case 789: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:4782 +//line mysql_sql.y:4791 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -11349,10 +11366,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 788: + case 790: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:4789 +//line mysql_sql.y:4798 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[2].referenceOptionTypeUnion(), @@ -11360,339 +11377,339 @@ yydefault: } } yyVAL.union = yyLOCAL - case 789: + case 791: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:4798 +//line mysql_sql.y:4807 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 790: + case 792: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:4804 +//line mysql_sql.y:4813 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 791: + case 793: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:4810 +//line mysql_sql.y:4819 { yyLOCAL = tree.REFERENCE_OPTION_RESTRICT } yyVAL.union = yyLOCAL - case 792: + case 794: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:4814 +//line mysql_sql.y:4823 { yyLOCAL = tree.REFERENCE_OPTION_CASCADE } yyVAL.union = yyLOCAL - case 793: + case 795: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:4818 +//line mysql_sql.y:4827 { yyLOCAL = tree.REFERENCE_OPTION_SET_NULL } yyVAL.union = yyLOCAL - case 794: + case 796: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:4822 +//line mysql_sql.y:4831 { yyLOCAL = tree.REFERENCE_OPTION_NO_ACTION } yyVAL.union = yyLOCAL - case 795: + case 797: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:4826 +//line mysql_sql.y:4835 { yyLOCAL = tree.REFERENCE_OPTION_SET_DEFAULT } yyVAL.union = yyLOCAL - case 796: + case 798: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:4831 +//line mysql_sql.y:4840 { yyLOCAL = tree.MATCH_INVALID } yyVAL.union = yyLOCAL - case 798: + case 800: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:4838 +//line mysql_sql.y:4847 { yyLOCAL = tree.MATCH_FULL } yyVAL.union = yyLOCAL - case 799: + case 801: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:4842 +//line mysql_sql.y:4851 { yyLOCAL = tree.MATCH_PARTIAL } yyVAL.union = yyLOCAL - case 800: + case 802: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:4846 +//line mysql_sql.y:4855 { yyLOCAL = tree.MATCH_SIMPLE } yyVAL.union = yyLOCAL - case 801: + case 803: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:4851 +//line mysql_sql.y:4860 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 802: + case 804: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:4855 +//line mysql_sql.y:4864 { yyLOCAL = yyDollar[2].keyPartsUnion() } yyVAL.union = yyLOCAL - case 803: + case 805: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:4860 +//line mysql_sql.y:4869 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 804: + case 806: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:4864 +//line mysql_sql.y:4873 { yyLOCAL = yyDollar[2].item.(int64) } yyVAL.union = yyLOCAL - case 811: + case 813: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Subquery -//line mysql_sql.y:4880 +//line mysql_sql.y:4889 { yyLOCAL = &tree.Subquery{Select: yyDollar[1].selectStatementUnion(), Exists: false} } yyVAL.union = yyLOCAL - case 812: + case 814: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4886 +//line mysql_sql.y:4895 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_AND, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 813: + case 815: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4890 +//line mysql_sql.y:4899 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_OR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 814: + case 816: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4894 +//line mysql_sql.y:4903 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_XOR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 815: + case 817: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4898 +//line mysql_sql.y:4907 { yyLOCAL = tree.NewBinaryExpr(tree.PLUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 816: + case 818: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4902 +//line mysql_sql.y:4911 { yyLOCAL = tree.NewBinaryExpr(tree.MINUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 817: + case 819: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4906 +//line mysql_sql.y:4915 { yyLOCAL = tree.NewBinaryExpr(tree.MULTI, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 818: + case 820: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4910 +//line mysql_sql.y:4919 { yyLOCAL = tree.NewBinaryExpr(tree.DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 819: + case 821: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4914 +//line mysql_sql.y:4923 { yyLOCAL = tree.NewBinaryExpr(tree.INTEGER_DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 820: + case 822: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4918 +//line mysql_sql.y:4927 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 821: + case 823: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4922 +//line mysql_sql.y:4931 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 822: + case 824: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4926 +//line mysql_sql.y:4935 { yyLOCAL = tree.NewBinaryExpr(tree.LEFT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 823: + case 825: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4930 +//line mysql_sql.y:4939 { yyLOCAL = tree.NewBinaryExpr(tree.RIGHT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 824: + case 826: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4934 +//line mysql_sql.y:4943 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 825: + case 827: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4940 +//line mysql_sql.y:4949 { yyLOCAL = yyDollar[1].unresolvedNameUnion() } yyVAL.union = yyLOCAL - case 826: + case 828: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4944 +//line mysql_sql.y:4953 { yyLOCAL = yyDollar[1].varExprUnion() } yyVAL.union = yyLOCAL - case 827: + case 829: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4948 +//line mysql_sql.y:4957 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 828: + case 830: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4952 +//line mysql_sql.y:4961 { yyLOCAL = tree.NewParenExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 829: + case 831: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4956 +//line mysql_sql.y:4965 { yyLOCAL = tree.NewTuple(append(yyDollar[2].exprsUnion(), yyDollar[4].exprUnion())) } yyVAL.union = yyLOCAL - case 830: + case 832: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4960 +//line mysql_sql.y:4969 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_PLUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 831: + case 833: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4964 +//line mysql_sql.y:4973 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MINUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 832: + case 834: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4968 +//line mysql_sql.y:4977 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_TILDE, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 833: + case 835: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4972 +//line mysql_sql.y:4981 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MARK, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 834: + case 836: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4976 +//line mysql_sql.y:4985 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 835: + case 837: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4980 +//line mysql_sql.y:4989 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 836: + case 838: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4984 +//line mysql_sql.y:4993 { yyDollar[2].subqueryUnion().Exists = true yyLOCAL = yyDollar[2].subqueryUnion() } yyVAL.union = yyLOCAL - case 837: + case 839: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4989 +//line mysql_sql.y:4998 { yyLOCAL = &tree.CaseExpr{ Expr: yyDollar[2].exprUnion(), @@ -11701,26 +11718,26 @@ yydefault: } } yyVAL.union = yyLOCAL - case 838: + case 840: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:4997 +//line mysql_sql.y:5006 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 839: + case 841: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5001 +//line mysql_sql.y:5010 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 840: + case 842: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5005 +//line mysql_sql.y:5014 { name := tree.SetUnresolvedName("convert") es := tree.NewNumValWithType(constant.MakeString(yyDollar[5].str), yyDollar[5].str, false, tree.P_char) @@ -11730,98 +11747,98 @@ yydefault: } } yyVAL.union = yyLOCAL - case 841: + case 843: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5014 +//line mysql_sql.y:5023 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 842: + case 844: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5018 +//line mysql_sql.y:5027 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 843: + case 845: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5022 +//line mysql_sql.y:5031 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 844: + case 846: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5026 +//line mysql_sql.y:5035 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 845: + case 847: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5030 +//line mysql_sql.y:5039 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 846: + case 848: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5035 +//line mysql_sql.y:5044 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 847: + case 849: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5039 +//line mysql_sql.y:5048 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 848: + case 850: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5044 +//line mysql_sql.y:5053 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 849: + case 851: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5048 +//line mysql_sql.y:5057 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 850: + case 852: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:5054 +//line mysql_sql.y:5063 { yyLOCAL = []*tree.When{yyDollar[1].whenClauseUnion()} } yyVAL.union = yyLOCAL - case 851: + case 853: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:5058 +//line mysql_sql.y:5067 { yyLOCAL = append(yyDollar[1].whenClauseListUnion(), yyDollar[2].whenClauseUnion()) } yyVAL.union = yyLOCAL - case 852: + case 854: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.When -//line mysql_sql.y:5064 +//line mysql_sql.y:5073 { yyLOCAL = &tree.When{ Cond: yyDollar[2].exprUnion(), @@ -11829,10 +11846,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 854: + case 856: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:5074 +//line mysql_sql.y:5083 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -11850,10 +11867,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 855: + case 857: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:5091 +//line mysql_sql.y:5100 { locale := "" yyLOCAL = &tree.T{ @@ -11868,10 +11885,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 857: + case 859: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:5108 +//line mysql_sql.y:5117 { locale := "" yyLOCAL = &tree.T{ @@ -11885,10 +11902,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 858: + case 860: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:5121 +//line mysql_sql.y:5130 { locale := "" yyLOCAL = &tree.T{ @@ -11902,10 +11919,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 859: + case 861: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:5134 +//line mysql_sql.y:5143 { locale := "" yyLOCAL = &tree.T{ @@ -11918,10 +11935,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 860: + case 862: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:5146 +//line mysql_sql.y:5155 { locale := "" yyLOCAL = &tree.T{ @@ -11936,10 +11953,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 861: + case 863: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:5160 +//line mysql_sql.y:5169 { locale := "" yyLOCAL = &tree.T{ @@ -11955,10 +11972,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 862: + case 864: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:5175 +//line mysql_sql.y:5184 { locale := "" yyLOCAL = &tree.T{ @@ -11974,10 +11991,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 863: + case 865: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:5190 +//line mysql_sql.y:5199 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -11995,10 +12012,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 864: + case 866: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:5207 +//line mysql_sql.y:5216 { locale := "" yyLOCAL = &tree.T{ @@ -12013,15 +12030,15 @@ yydefault: } } yyVAL.union = yyLOCAL - case 865: + case 867: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:5222 +//line mysql_sql.y:5231 { } - case 868: + case 870: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5228 +//line mysql_sql.y:5237 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12031,10 +12048,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 869: + case 871: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5237 +//line mysql_sql.y:5246 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12043,10 +12060,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 870: + case 872: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5245 +//line mysql_sql.y:5254 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12055,10 +12072,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 871: + case 873: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5253 +//line mysql_sql.y:5262 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12068,10 +12085,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 872: + case 874: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5262 +//line mysql_sql.y:5271 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12081,10 +12098,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 873: + case 875: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5271 +//line mysql_sql.y:5280 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12094,10 +12111,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 874: + case 876: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5280 +//line mysql_sql.y:5289 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12107,10 +12124,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 875: + case 877: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5289 +//line mysql_sql.y:5298 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) es := tree.NewNumValWithType(constant.MakeString("*"), "*", false, tree.P_char) @@ -12120,10 +12137,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 876: + case 878: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5298 +//line mysql_sql.y:5307 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12133,10 +12150,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 877: + case 879: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5307 +//line mysql_sql.y:5316 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12146,10 +12163,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 878: + case 880: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5316 +//line mysql_sql.y:5325 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12159,10 +12176,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 879: + case 881: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5325 +//line mysql_sql.y:5334 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12172,10 +12189,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 880: + case 882: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5334 +//line mysql_sql.y:5343 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12185,10 +12202,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 881: + case 883: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5343 +//line mysql_sql.y:5352 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12198,10 +12215,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 882: + case 884: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5352 +//line mysql_sql.y:5361 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12211,10 +12228,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 886: + case 888: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5368 +//line mysql_sql.y:5377 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12223,10 +12240,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 887: + case 889: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5376 +//line mysql_sql.y:5385 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12235,10 +12252,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 888: + case 890: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5384 +//line mysql_sql.y:5393 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12247,10 +12264,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 889: + case 891: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5392 +//line mysql_sql.y:5401 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12259,10 +12276,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 890: + case 892: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5400 +//line mysql_sql.y:5409 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) timeUinit := tree.NewNumValWithType(constant.MakeString(yyDollar[3].str), yyDollar[3].str, false, tree.P_char) @@ -12272,10 +12289,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 891: + case 893: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5409 +//line mysql_sql.y:5418 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12284,10 +12301,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 892: + case 894: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5417 +//line mysql_sql.y:5426 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12297,10 +12314,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 893: + case 895: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5426 +//line mysql_sql.y:5435 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12310,10 +12327,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 894: + case 896: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5435 +//line mysql_sql.y:5444 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12322,10 +12339,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 895: + case 897: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5443 +//line mysql_sql.y:5452 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12334,10 +12351,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 896: + case 898: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5451 +//line mysql_sql.y:5460 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) arg1 := tree.NewNumValWithType(constant.MakeString(yyDollar[3].str), yyDollar[3].str, false, tree.P_char) @@ -12347,10 +12364,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 897: + case 899: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5460 +//line mysql_sql.y:5469 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) arg1 := tree.NewNumValWithType(constant.MakeString(yyDollar[3].str), yyDollar[3].str, false, tree.P_char) @@ -12360,10 +12377,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 898: + case 900: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5470 +//line mysql_sql.y:5479 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) a1 := tree.NewNumValWithType(constant.MakeString(yyDollar[3].str), yyDollar[3].str, false, tree.P_char) @@ -12374,16 +12391,16 @@ yydefault: } } yyVAL.union = yyLOCAL - case 904: + case 906: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:5491 +//line mysql_sql.y:5500 { yyVAL.str = yyDollar[1].str } - case 933: + case 935: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5527 +//line mysql_sql.y:5536 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) var es tree.Exprs = nil @@ -12396,10 +12413,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 934: + case 936: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5539 +//line mysql_sql.y:5548 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) var es tree.Exprs = nil @@ -12412,10 +12429,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 935: + case 937: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5553 +//line mysql_sql.y:5562 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12424,10 +12441,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 936: + case 938: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5561 +//line mysql_sql.y:5570 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12435,10 +12452,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 937: + case 939: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5568 +//line mysql_sql.y:5577 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) yyLOCAL = &tree.FuncExpr{ @@ -12446,10 +12463,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 938: + case 940: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5575 +//line mysql_sql.y:5584 { name := tree.SetUnresolvedName(strings.ToLower(yyDollar[1].str)) var es tree.Exprs = nil @@ -12462,10 +12479,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 939: + case 941: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5587 +//line mysql_sql.y:5596 { name := tree.SetUnresolvedName("char") yyLOCAL = &tree.FuncExpr{ @@ -12474,10 +12491,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 940: + case 942: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5595 +//line mysql_sql.y:5604 { cn := tree.NewNumValWithType(constant.MakeString(yyDollar[5].str), yyDollar[5].str, false, tree.P_char) es := yyDollar[3].exprsUnion() @@ -12489,10 +12506,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 941: + case 943: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5606 +//line mysql_sql.y:5615 { val := tree.NewNumValWithType(constant.MakeString(yyDollar[2].str), yyDollar[2].str, false, tree.P_char) name := tree.SetUnresolvedName("date") @@ -12502,10 +12519,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 942: + case 944: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5615 +//line mysql_sql.y:5624 { val := tree.NewNumValWithType(constant.MakeString(yyDollar[2].str), yyDollar[2].str, false, tree.P_char) name := tree.SetUnresolvedName("time") @@ -12515,10 +12532,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 943: + case 945: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5624 +//line mysql_sql.y:5633 { name := tree.SetUnresolvedName("insert") yyLOCAL = &tree.FuncExpr{ @@ -12527,10 +12544,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 944: + case 946: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5632 +//line mysql_sql.y:5641 { es := tree.Exprs{yyDollar[3].exprUnion()} es = append(es, yyDollar[5].exprUnion()) @@ -12541,10 +12558,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 945: + case 947: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5642 +//line mysql_sql.y:5651 { name := tree.SetUnresolvedName("password") yyLOCAL = &tree.FuncExpr{ @@ -12553,10 +12570,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 946: + case 948: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5650 +//line mysql_sql.y:5659 { name := tree.SetUnresolvedName("binary") yyLOCAL = &tree.FuncExpr{ @@ -12565,10 +12582,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 947: + case 949: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:5658 +//line mysql_sql.y:5667 { val := tree.NewNumValWithType(constant.MakeString(yyDollar[2].str), yyDollar[2].str, false, tree.P_char) name := tree.SetUnresolvedName("timestamp") @@ -12578,34 +12595,34 @@ yydefault: } } yyVAL.union = yyLOCAL - case 948: + case 950: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5668 +//line mysql_sql.y:5677 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 949: + case 951: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5672 +//line mysql_sql.y:5681 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 950: + case 952: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5678 +//line mysql_sql.y:5687 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 951: + case 953: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5682 +//line mysql_sql.y:5691 { ival, errStr := util.GetInt64(yyDollar[2].item) if errStr != "" { @@ -12616,20 +12633,20 @@ yydefault: yyLOCAL = tree.NewNumValWithType(constant.MakeInt64(ival), str, false, tree.P_int64) } yyVAL.union = yyLOCAL - case 958: + case 960: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:5701 +//line mysql_sql.y:5710 { } - case 959: + case 961: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:5703 +//line mysql_sql.y:5712 { } - case 992: + case 994: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5743 +//line mysql_sql.y:5752 { name := tree.SetUnresolvedName("interval") arg2 := tree.NewNumValWithType(constant.MakeString(yyDollar[3].str), yyDollar[3].str, false, tree.P_char) @@ -12639,90 +12656,90 @@ yydefault: } } yyVAL.union = yyLOCAL - case 993: + case 995: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:5753 +//line mysql_sql.y:5762 { yyLOCAL = tree.FUNC_TYPE_DEFAULT } yyVAL.union = yyLOCAL - case 994: + case 996: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:5757 +//line mysql_sql.y:5766 { yyLOCAL = tree.FUNC_TYPE_DISTINCT } yyVAL.union = yyLOCAL - case 995: + case 997: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:5761 +//line mysql_sql.y:5770 { yyLOCAL = tree.FUNC_TYPE_ALL } yyVAL.union = yyLOCAL - case 996: + case 998: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Tuple -//line mysql_sql.y:5767 +//line mysql_sql.y:5776 { yyLOCAL = tree.NewTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 997: + case 999: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5772 +//line mysql_sql.y:5781 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 998: + case 1000: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5776 +//line mysql_sql.y:5785 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 999: + case 1001: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5782 +//line mysql_sql.y:5791 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1000: + case 1002: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5786 +//line mysql_sql.y:5795 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1001: + case 1003: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5793 +//line mysql_sql.y:5802 { yyLOCAL = tree.NewAndExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1002: + case 1004: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5797 +//line mysql_sql.y:5806 { yyLOCAL = tree.NewOrExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1003: + case 1005: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5801 +//line mysql_sql.y:5810 { name := tree.SetUnresolvedName(strings.ToLower("concat")) yyLOCAL = &tree.FuncExpr{ @@ -12731,332 +12748,340 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1004: + case 1006: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5809 +//line mysql_sql.y:5818 { yyLOCAL = tree.NewXorExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1005: + case 1007: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5813 +//line mysql_sql.y:5822 { yyLOCAL = tree.NewNotExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1006: + case 1008: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL tree.Expr +//line mysql_sql.y:5826 + { + yyLOCAL = tree.NewMaxValue() + } + yyVAL.union = yyLOCAL + case 1009: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5817 +//line mysql_sql.y:5830 { yyLOCAL = tree.NewComparisonExpr(tree.EQUAL, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1007: + case 1010: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5821 +//line mysql_sql.y:5834 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_EQUAL, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1008: + case 1011: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5825 +//line mysql_sql.y:5838 { arg := tree.NewNumValWithType(constant.MakeString(yyDollar[3].str), "", false, tree.P_char) yyLOCAL = tree.NewComparisonExpr(tree.EQUAL, yyDollar[1].exprUnion(), arg) } yyVAL.union = yyLOCAL - case 1009: + case 1012: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5830 +//line mysql_sql.y:5843 { arg := tree.NewNumValWithType(constant.MakeString(yyDollar[3].str), "", false, tree.P_char) yyLOCAL = tree.NewComparisonExpr(tree.NOT_EQUAL, yyDollar[1].exprUnion(), arg) } yyVAL.union = yyLOCAL - case 1010: + case 1013: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5835 +//line mysql_sql.y:5848 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1011: + case 1014: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5841 +//line mysql_sql.y:5854 { yyLOCAL = tree.NewIsNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1012: + case 1015: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5845 +//line mysql_sql.y:5858 { yyLOCAL = tree.NewIsNotNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1013: + case 1016: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5849 +//line mysql_sql.y:5862 { yyLOCAL = tree.NewComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1014: + case 1017: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5853 +//line mysql_sql.y:5866 { yyLOCAL = tree.NewSubqueryComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[3].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[4].subqueryUnion()) } yyVAL.union = yyLOCAL - case 1016: + case 1019: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5860 +//line mysql_sql.y:5873 { yyLOCAL = tree.NewNumValWithType(constant.MakeBool(true), "", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1017: + case 1020: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5864 +//line mysql_sql.y:5877 { yyLOCAL = tree.NewNumValWithType(constant.MakeBool(false), "", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1018: + case 1021: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5870 +//line mysql_sql.y:5883 { yyLOCAL = tree.NewComparisonExpr(tree.IN, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1019: + case 1022: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5874 +//line mysql_sql.y:5887 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_IN, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1020: + case 1023: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5878 +//line mysql_sql.y:5891 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.LIKE, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1021: + case 1024: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5882 +//line mysql_sql.y:5895 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.NOT_LIKE, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1022: + case 1025: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5886 +//line mysql_sql.y:5899 { yyLOCAL = tree.NewComparisonExpr(tree.REG_MATCH, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1023: + case 1026: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5890 +//line mysql_sql.y:5903 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_REG_MATCH, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1024: + case 1027: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5894 +//line mysql_sql.y:5907 { yyLOCAL = tree.NewRangeCond(false, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1025: + case 1028: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5898 +//line mysql_sql.y:5911 { yyLOCAL = tree.NewRangeCond(true, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[6].exprUnion()) } yyVAL.union = yyLOCAL - case 1027: + case 1030: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5904 +//line mysql_sql.y:5917 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1028: + case 1031: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5908 +//line mysql_sql.y:5921 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1029: + case 1032: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5914 +//line mysql_sql.y:5927 { yyLOCAL = yyDollar[1].tupleUnion() } yyVAL.union = yyLOCAL - case 1030: + case 1033: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5918 +//line mysql_sql.y:5931 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1031: + case 1034: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:5925 +//line mysql_sql.y:5938 { yyLOCAL = tree.ALL } yyVAL.union = yyLOCAL - case 1032: + case 1035: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:5929 +//line mysql_sql.y:5942 { yyLOCAL = tree.ANY } yyVAL.union = yyLOCAL - case 1033: + case 1036: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:5933 +//line mysql_sql.y:5946 { yyLOCAL = tree.SOME } yyVAL.union = yyLOCAL - case 1034: + case 1037: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:5939 +//line mysql_sql.y:5952 { yyLOCAL = tree.EQUAL } yyVAL.union = yyLOCAL - case 1035: + case 1038: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:5943 +//line mysql_sql.y:5956 { yyLOCAL = tree.LESS_THAN } yyVAL.union = yyLOCAL - case 1036: + case 1039: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:5947 +//line mysql_sql.y:5960 { yyLOCAL = tree.GREAT_THAN } yyVAL.union = yyLOCAL - case 1037: + case 1040: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:5951 +//line mysql_sql.y:5964 { yyLOCAL = tree.LESS_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1038: + case 1041: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:5955 +//line mysql_sql.y:5968 { yyLOCAL = tree.GREAT_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1039: + case 1042: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:5959 +//line mysql_sql.y:5972 { yyLOCAL = tree.NOT_EQUAL } yyVAL.union = yyLOCAL - case 1040: + case 1043: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:5963 +//line mysql_sql.y:5976 { yyLOCAL = tree.NULL_SAFE_EQUAL } yyVAL.union = yyLOCAL - case 1041: + case 1044: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:5969 +//line mysql_sql.y:5982 { yyLOCAL = tree.NewAttributePrimaryKey() } yyVAL.union = yyLOCAL - case 1042: + case 1045: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:5973 +//line mysql_sql.y:5986 { yyLOCAL = tree.NewAttributeUniqueKey() } yyVAL.union = yyLOCAL - case 1043: + case 1046: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:5977 +//line mysql_sql.y:5990 { yyLOCAL = tree.NewAttributeUnique() } yyVAL.union = yyLOCAL - case 1044: + case 1047: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:5981 +//line mysql_sql.y:5994 { yyLOCAL = tree.NewAttributeKey() } yyVAL.union = yyLOCAL - case 1045: + case 1048: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5987 +//line mysql_sql.y:6000 { yyLOCAL = tree.NewNumValWithType(constant.MakeString(yyDollar[1].str), yyDollar[1].str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1046: + case 1049: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5991 +//line mysql_sql.y:6004 { str := fmt.Sprintf("%v", yyDollar[1].item) switch v := yyDollar[1].item.(type) { @@ -13070,43 +13095,43 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1047: + case 1050: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6004 +//line mysql_sql.y:6017 { fval := yyDollar[1].item.(float64) yyLOCAL = tree.NewNumValWithType(constant.MakeFloat64(fval), yylex.(*Lexer).scanner.LastToken, false, tree.P_float64) } yyVAL.union = yyLOCAL - case 1048: + case 1051: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6009 +//line mysql_sql.y:6022 { yyLOCAL = tree.NewNumValWithType(constant.MakeBool(true), "true", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1049: + case 1052: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6013 +//line mysql_sql.y:6026 { yyLOCAL = tree.NewNumValWithType(constant.MakeBool(false), "false", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1050: + case 1053: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6017 +//line mysql_sql.y:6030 { yyLOCAL = tree.NewNumValWithType(constant.MakeUnknown(), "null", false, tree.P_null) } yyVAL.union = yyLOCAL - case 1051: + case 1054: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6021 +//line mysql_sql.y:6034 { switch v := yyDollar[1].item.(type) { case uint64: @@ -13121,18 +13146,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1052: + case 1055: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6035 +//line mysql_sql.y:6048 { yyLOCAL = tree.NewNumValWithType(constant.MakeString(yyDollar[1].str), yyDollar[1].str, false, tree.P_decimal) } yyVAL.union = yyLOCAL - case 1053: + case 1056: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6039 +//line mysql_sql.y:6052 { switch v := yyDollar[1].item.(type) { case uint64: @@ -13147,45 +13172,45 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1054: + case 1057: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6053 +//line mysql_sql.y:6066 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1055: + case 1058: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6059 +//line mysql_sql.y:6072 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.Unsigned = yyDollar[2].unsignedOptUnion() yyLOCAL.InternalType.Zerofill = yyDollar[3].zeroFillOptUnion() } yyVAL.union = yyLOCAL - case 1059: + case 1062: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6070 +//line mysql_sql.y:6083 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.DisplayWith = yyDollar[2].lengthOptUnion() } yyVAL.union = yyLOCAL - case 1060: + case 1063: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6075 +//line mysql_sql.y:6088 { yyLOCAL = yyDollar[1].columnTypeUnion() } yyVAL.union = yyLOCAL - case 1061: + case 1064: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6081 +//line mysql_sql.y:6094 { locale := "" yyLOCAL = &tree.T{ @@ -13198,10 +13223,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1062: + case 1065: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6093 +//line mysql_sql.y:6106 { locale := "" yyLOCAL = &tree.T{ @@ -13214,10 +13239,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1063: + case 1066: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6105 +//line mysql_sql.y:6118 { locale := "" yyLOCAL = &tree.T{ @@ -13230,10 +13255,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1064: + case 1067: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6117 +//line mysql_sql.y:6130 { locale := "" yyLOCAL = &tree.T{ @@ -13247,10 +13272,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1065: + case 1068: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6130 +//line mysql_sql.y:6143 { locale := "" yyLOCAL = &tree.T{ @@ -13264,10 +13289,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1066: + case 1069: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6143 +//line mysql_sql.y:6156 { locale := "" yyLOCAL = &tree.T{ @@ -13281,10 +13306,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1067: + case 1070: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6156 +//line mysql_sql.y:6169 { locale := "" yyLOCAL = &tree.T{ @@ -13298,10 +13323,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1068: + case 1071: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6169 +//line mysql_sql.y:6182 { locale := "" yyLOCAL = &tree.T{ @@ -13315,10 +13340,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1069: + case 1072: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6182 +//line mysql_sql.y:6195 { locale := "" yyLOCAL = &tree.T{ @@ -13332,10 +13357,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1070: + case 1073: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6195 +//line mysql_sql.y:6208 { locale := "" yyLOCAL = &tree.T{ @@ -13349,10 +13374,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1071: + case 1074: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6208 +//line mysql_sql.y:6221 { locale := "" yyLOCAL = &tree.T{ @@ -13366,10 +13391,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1072: + case 1075: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6221 +//line mysql_sql.y:6234 { locale := "" yyLOCAL = &tree.T{ @@ -13383,10 +13408,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1073: + case 1076: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6234 +//line mysql_sql.y:6247 { locale := "" yyLOCAL = &tree.T{ @@ -13400,10 +13425,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1074: + case 1077: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6247 +//line mysql_sql.y:6260 { locale := "" yyLOCAL = &tree.T{ @@ -13417,10 +13442,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1075: + case 1078: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6262 +//line mysql_sql.y:6275 { locale := "" if yyDollar[2].lengthScaleOptUnion().DisplayWith > 255 { @@ -13444,10 +13469,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1076: + case 1079: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6285 +//line mysql_sql.y:6298 { locale := "" if yyDollar[2].lengthScaleOptUnion().Precision != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Precision > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -13484,10 +13509,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1077: + case 1080: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6322 +//line mysql_sql.y:6335 { locale := "" if yyDollar[2].lengthScaleOptUnion().Precision != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Precision > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -13524,10 +13549,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1078: + case 1081: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6370 +//line mysql_sql.y:6383 { locale := "" yyLOCAL = &tree.T{ @@ -13543,10 +13568,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1079: + case 1082: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6387 +//line mysql_sql.y:6400 { locale := "" yyLOCAL = &tree.T{ @@ -13559,10 +13584,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1080: + case 1083: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6399 +//line mysql_sql.y:6412 { locale := "" yyLOCAL = &tree.T{ @@ -13578,10 +13603,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1081: + case 1084: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6414 +//line mysql_sql.y:6427 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -13602,10 +13627,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1082: + case 1085: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6434 +//line mysql_sql.y:6447 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -13626,10 +13651,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1083: + case 1086: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6454 +//line mysql_sql.y:6467 { locale := "" yyLOCAL = &tree.T{ @@ -13644,10 +13669,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1084: + case 1087: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6470 +//line mysql_sql.y:6483 { locale := "" yyLOCAL = &tree.T{ @@ -13661,10 +13686,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1085: + case 1088: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6483 +//line mysql_sql.y:6496 { locale := "" yyLOCAL = &tree.T{ @@ -13678,10 +13703,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1086: + case 1089: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6496 +//line mysql_sql.y:6509 { locale := "" yyLOCAL = &tree.T{ @@ -13695,10 +13720,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1087: + case 1090: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6509 +//line mysql_sql.y:6522 { locale := "" yyLOCAL = &tree.T{ @@ -13712,10 +13737,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1088: + case 1091: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6522 +//line mysql_sql.y:6535 { locale := "" yyLOCAL = &tree.T{ @@ -13728,10 +13753,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1089: + case 1092: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6534 +//line mysql_sql.y:6547 { locale := "" yyLOCAL = &tree.T{ @@ -13744,10 +13769,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1090: + case 1093: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6546 +//line mysql_sql.y:6559 { locale := "" yyLOCAL = &tree.T{ @@ -13760,10 +13785,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1091: + case 1094: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6558 +//line mysql_sql.y:6571 { locale := "" yyLOCAL = &tree.T{ @@ -13776,10 +13801,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1092: + case 1095: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6570 +//line mysql_sql.y:6583 { locale := "" yyLOCAL = &tree.T{ @@ -13792,10 +13817,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1093: + case 1096: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6582 +//line mysql_sql.y:6595 { locale := "" yyLOCAL = &tree.T{ @@ -13808,10 +13833,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1094: + case 1097: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6594 +//line mysql_sql.y:6607 { locale := "" yyLOCAL = &tree.T{ @@ -13824,10 +13849,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1095: + case 1098: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6606 +//line mysql_sql.y:6619 { locale := "" yyLOCAL = &tree.T{ @@ -13840,10 +13865,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1096: + case 1099: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6618 +//line mysql_sql.y:6631 { locale := "" yyLOCAL = &tree.T{ @@ -13856,10 +13881,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1097: + case 1100: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6630 +//line mysql_sql.y:6643 { locale := "" yyLOCAL = &tree.T{ @@ -13873,10 +13898,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1098: + case 1101: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6643 +//line mysql_sql.y:6656 { locale := "" yyLOCAL = &tree.T{ @@ -13890,10 +13915,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1099: + case 1102: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:6658 +//line mysql_sql.y:6671 { locale := "" yyLOCAL = &tree.T{ @@ -13906,75 +13931,75 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1100: + case 1103: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6681 +//line mysql_sql.y:6694 { yyLOCAL = make([]string, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1101: + case 1104: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6686 +//line mysql_sql.y:6699 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1102: + case 1105: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:6692 +//line mysql_sql.y:6705 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1104: + case 1107: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:6699 +//line mysql_sql.y:6712 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1105: + case 1108: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:6703 +//line mysql_sql.y:6716 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1106: + case 1109: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:6708 +//line mysql_sql.y:6721 { yyLOCAL = int32(-1) } yyVAL.union = yyLOCAL - case 1107: + case 1110: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:6712 +//line mysql_sql.y:6725 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1108: + case 1111: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:6718 +//line mysql_sql.y:6731 { yyLOCAL = tree.GetDisplayWith(int32(yyDollar[2].item.(int64))) } yyVAL.union = yyLOCAL - case 1109: + case 1112: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:6724 +//line mysql_sql.y:6737 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.NotDefineDisplayWidth, @@ -13982,10 +14007,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1110: + case 1113: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:6731 +//line mysql_sql.y:6744 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -13993,10 +14018,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1111: + case 1114: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:6738 +//line mysql_sql.y:6751 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -14004,10 +14029,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1112: + case 1115: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:6747 +//line mysql_sql.y:6760 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: 34, // this is the default precision for decimal @@ -14015,10 +14040,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1113: + case 1116: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:6754 +//line mysql_sql.y:6767 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -14026,10 +14051,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1114: + case 1117: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:6761 +//line mysql_sql.y:6774 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -14037,52 +14062,52 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1115: + case 1118: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6770 +//line mysql_sql.y:6783 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1116: + case 1119: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6774 +//line mysql_sql.y:6787 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1117: + case 1120: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6778 +//line mysql_sql.y:6791 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1118: + case 1121: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6784 +//line mysql_sql.y:6797 { } - case 1119: + case 1122: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6786 +//line mysql_sql.y:6799 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1123: + case 1126: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6796 +//line mysql_sql.y:6809 { yyVAL.str = "" } - case 1124: + case 1127: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6800 +//line mysql_sql.y:6813 { 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 06f3c3699389d620fea069a558755a92e019821c..9b4a7bf078a194ac587d957b0db3e976ff2bf25b 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.y +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.y @@ -14,7 +14,7 @@ %{ package mysql - + import ( "fmt" "strings" @@ -243,7 +243,7 @@ import ( %token <str> DYNAMIC COMPRESSED REDUNDANT COMPACT FIXED COLUMN_FORMAT AUTO_RANDOM %token <str> RESTRICT CASCADE ACTION PARTIAL SIMPLE CHECK ENFORCED %token <str> RANGE LIST ALGORITHM LINEAR PARTITIONS SUBPARTITION SUBPARTITIONS -%token <str> TYPE ANY SOME EXTERNAL LOCALFILE URL +%token <str> TYPE ANY SOME EXTERNAL LOCALFILE URL %token <str> PREPARE DEALLOCATE // MO table option @@ -394,7 +394,7 @@ import ( %type <funcExpr> function_call_json %type <unresolvedName> column_name column_name_unresolved -%type <strs> enum_values force_quote_opt force_quote_list +%type <strs> enum_values force_quote_opt force_quote_list %type <str> sql_id charset_keyword db_name %type <str> not_keyword func_not_keyword %type <str> reserved_keyword non_reserved_keyword @@ -798,7 +798,7 @@ load_fields: for _, f := range $2 { if f.Terminated != "" { res.Terminated = f.Terminated - } + } if f.Optionally { res.Optionally = f.Optionally } @@ -1445,7 +1445,7 @@ set_expr: } equal_or_assignment: - '=' + '=' { $$ = string($1) } @@ -1775,7 +1775,7 @@ utility_option_arg: analyze_stmt: - ANALYZE TABLE table_name '(' column_list ')' + ANALYZE TABLE table_name '(' column_list ')' { $$ = tree.NewAnalyzeStmt($3, $5) } @@ -2118,7 +2118,7 @@ show_create_stmt: { $$ = &tree.ShowCreateTable{Name: $4} } -| +| SHOW CREATE VIEW table_name_unresolved { $$ = &tree.ShowCreateView{Name: $4} @@ -2212,7 +2212,7 @@ drop_role_stmt: IfExists: $3, Roles: $4, } - } + } drop_index_stmt: DROP INDEX exists_opt ident ON table_name @@ -2868,7 +2868,7 @@ union_op: $$ = &tree.UnionTypeRecord{ Type: tree.UNION, All: true, - Distinct: false, + Distinct: false, } } | UNION DISTINCT @@ -2879,7 +2879,7 @@ union_op: Distinct: true, } } -| +| EXCEPT { $$ = &tree.UnionTypeRecord{ @@ -2893,7 +2893,7 @@ union_op: $$ = &tree.UnionTypeRecord{ Type: tree.EXCEPT, All: true, - Distinct: false, + Distinct: false, } } | EXCEPT DISTINCT @@ -3223,7 +3223,7 @@ column_list: $$ = append($1, tree.Identifier($3)) } -table_factor: +table_factor: aliased_table_name { $$ = $1 @@ -4097,10 +4097,19 @@ values_opt: { $$ = nil } +| VALUES LESS THAN MAXVALUE + { + expr := tree.NewMaxValue() + $$ = &tree.ValuesLessThan{ValueList: tree.Exprs{expr}} + } | VALUES LESS THAN '(' expression_list ')' { $$ = &tree.ValuesLessThan{ValueList: $5} } +| VALUES IN '(' expression_list ')' + { + $$ = &tree.ValuesIn{ValueList: $4} + } sub_partition_num_opt: { @@ -4188,7 +4197,7 @@ sub_partition_method: algorithm_opt: { - $$ = 0 + $$ = 2 } | ALGORITHM '=' INTEGRAL { @@ -4598,7 +4607,7 @@ index_name: | ident column_def: - column_name column_type column_attribute_list_opt + column_name column_type column_attribute_list_opt { $$ = tree.NewColumnTableDef($1, $2, $3) } @@ -4742,7 +4751,7 @@ constraint_keyword: $$ = $2 } -references_def: +references_def: REFERENCES table_name index_column_list_opt match_opt on_delete_update_opt { $$ = &tree.AttributeReference{ @@ -5001,7 +5010,7 @@ simple_expr: { $$ = tree.NewCastExpr($3, $5) } -| CONVERT '(' expression USING charset_name ')' +| CONVERT '(' expression USING charset_name ')' { name := tree.SetUnresolvedName("convert") es := tree.NewNumValWithType(constant.MakeString($5), $5, false, tree.P_char) @@ -5813,6 +5822,10 @@ expression: { $$ = tree.NewNotExpr($2) } +| MAXVALUE + { + $$ = tree.NewMaxValue() + } | boolean_primary IS true_or_false %prec IS { $$ = tree.NewComparisonExpr(tree.EQUAL, $1, $3) diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go index f3a19f0db10b756485983e909af9d2a35afd1115..1d0ce4ac63524d22081db15a4ca1e9c28a27111a 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go @@ -26,9 +26,8 @@ var ( input string output string }{ - input: "create user if not exists abc1 identified by '123', abc2 identified by '234', abc3 identified by '111' default role def_role " + - "password expire " + - "comment 'new comment'", + input: `create table table10 (a int primary key, b varchar(10)) checksum=0 COMMENT="asdf"`, + output: "create table table10 (a int primary key, b varchar(10)) checksum = 0 comment = asdf", } ) @@ -685,16 +684,20 @@ var ( }, { input: "select t.a from sa.t", }, { - input: "create table a (a int) partition by key (a, b, db.t.c) (partition xx (subpartition s1, subpartition s3 max_rows = 1000 min_rows = 100))", + input: "create table a (a int) partition by key (a, b, db.t.c) (partition xx (subpartition s1, subpartition s3 max_rows = 1000 min_rows = 100))", + output: "create table a (a int) partition by key algorithm = 2 (a, b, db.t.c) (partition xx (subpartition s1, subpartition s3 max_rows = 1000 min_rows = 100))", }, { - input: "create table a (a int) partition by key (a, b, db.t.c) (partition xx row_format = dynamic max_rows = 1000 min_rows = 100)", + input: "create table a (a int) partition by key (a, b, db.t.c) (partition xx row_format = dynamic max_rows = 1000 min_rows = 100)", + output: "create table a (a int) partition by key algorithm = 2 (a, b, db.t.c) (partition xx row_format = dynamic max_rows = 1000 min_rows = 100)", }, { input: "create table a (a int) engine = 'innodb' row_format = dynamic comment = 'table A' compression = 'lz4' data directory = '/data' index directory = '/index' max_rows = 1000 min_rows = 100", output: "create table a (a int) engine = innodb row_format = dynamic comment = table A compression = lz4 data directory = /data index directory = /index max_rows = 1000 min_rows = 100", }, { - input: "create table a (a int) partition by linear key algorithm = 3221 (a, b, db.t.c) (partition xx values less than (1, 2, 323), partition yy)", + input: "create table a (a int) partition by linear key algorithm = 3221 (a, b, db.t.c) (partition xx values less than (1, 2, 323), partition yy)", + output: "create table a (a int) partition by linear key algorithm = 3221 (a, b, db.t.c) (partition xx values less than (1, 2, 323), partition yy)", }, { - input: "create table a (a int) partition by linear key algorithm = 3221 (a, b, db.t.c) partitions 10 subpartition by key (a, b, db.t.c) subpartitions 10", + input: "create table a (a int) partition by linear key algorithm = 3221 (a, b, db.t.c) partitions 10 subpartition by key (a, b, db.t.c) subpartitions 10", + output: "create table a (a int) partition by linear key algorithm = 3221 (a, b, db.t.c) partitions 10 subpartition by key algorithm = 2 (a, b, db.t.c) subpartitions 10", }, { input: "create table a (a int) partition by linear key algorithm = 3221 (a, b, db.t.c) partitions 10", }, { @@ -702,7 +705,8 @@ var ( }, { input: "create table a (a int) partition by linear key algorithm = 31 (a, b, db.t.c)", }, { - input: "create table a (a int) partition by linear key (a, b, db.t.c)", + input: "create table a (a int) partition by linear key (a, b, db.t.c)", + output: "create table a (a int) partition by linear key algorithm = 2 (a, b, db.t.c)", }, { input: "create table a (a int) partition by list columns (a, b, db.t.c)", }, { @@ -719,13 +723,130 @@ var ( input: "create table a (a int storage disk, b int)", }, { input: "create table a (a int not null default 1 auto_increment unique primary key collate utf8_bin storage disk)", - }, { - input: "grant all, all(a, b), create(a, b), select(a, b), super(a, b, c) on table db.a to u1, u2 with grant option", - }, { - input: "grant proxy on u1 to u2, u3, u4 with grant option", - }, { - input: "grant proxy on u1 to u2, u3, u4", }, + { + input: `CREATE TABLE tp1 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col3) PARTITIONS 4`, + output: `create table tp1 (col1 int, col2 char(5), col3 date) partition by key algorithm = 2 (col3) partitions 4`, + }, + { + input: `CREATE TABLE tp2 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col3)`, + output: `create table tp2 (col1 int, col2 char(5), col3 date) partition by key algorithm = 2 (col3)`, + }, + { + input: `CREATE TABLE tp3 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR KEY(col3) PARTITIONS 5`, + output: `create table tp3 (col1 int, col2 char(5), col3 date) partition by linear key algorithm = 2 (col3) partitions 5`, + }, + { + input: `CREATE TABLE tp4 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY ALGORITHM = 1 (col3)`, + output: `create table tp4 (col1 int, col2 char(5), col3 date) partition by key algorithm = 1 (col3)`, + }, + { + input: `CREATE TABLE tp5 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR KEY ALGORITHM = 1 (col3) PARTITIONS 5;`, + output: `create table tp5 (col1 int, col2 char(5), col3 date) partition by linear key algorithm = 1 (col3) partitions 5`, + }, + { + input: `CREATE TABLE tp6 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col1, col2) PARTITIONS 4`, + output: `create table tp6 (col1 int, col2 char(5), col3 date) partition by key algorithm = 2 (col1, col2) partitions 4`, + }, + { + input: `CREATE TABLE tp7 (col1 INT NOT NULL, col2 DATE NOT NULL, col3 INT NOT NULL, col4 INT NOT NULL, PRIMARY KEY (col1, col2)) PARTITION BY KEY(col1) PARTITIONS 4`, + output: `create table tp7 (col1 int not null, col2 date not null, col3 int not null, col4 int not null, primary key (col1, col2)) partition by key algorithm = 2 (col1) partitions 4`, + }, + { + input: `CREATE TABLE tp9 (col1 INT, col2 CHAR(5)) PARTITION BY HASH(col1) PARTITIONS 4`, + output: `create table tp9 (col1 int, col2 char(5)) partition by hash (col1) partitions 4`, + }, + { + input: `CREATE TABLE tp10 (col1 INT, col2 CHAR(5), col3 DATETIME) PARTITION BY HASH (YEAR(col3));`, + output: `create table tp10 (col1 int, col2 char(5), col3 datetime(26)) partition by hash (year(col3))`, + }, + { + input: `CREATE TABLE tp11 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR HASH( YEAR(col3)) PARTITIONS 6`, + output: `create table tp11 (col1 int, col2 char(5), col3 date) partition by linear hash (year(col3)) partitions 6`, + }, + { + input: `CREATE TABLE tp12 (col1 INT NOT NULL, col2 DATE NOT NULL, col3 INT NOT NULL, col4 INT NOT NULL, PRIMARY KEY (col1, col2)) PARTITION BY HASH(col1) PARTITIONS 4`, + output: `create table tp12 (col1 int not null, col2 date not null, col3 int not null, col4 int not null, primary key (col1, col2)) partition by hash (col1) partitions 4`, + }, + { + input: `CREATE TABLE tp13 ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT, + store_id INT + ) + PARTITION BY RANGE ( YEAR(separated) ) ( + PARTITION p0 VALUES LESS THAN (1991), + PARTITION p1 VALUES LESS THAN (1996), + PARTITION p2 VALUES LESS THAN (2001), + PARTITION p3 VALUES LESS THAN MAXVALUE + );`, + output: `create table tp13 (id int not null, fname varchar(30), lname varchar(30), hired date not null default 1970-01-01, separated date not null default 9999-12-31, job_code int, store_id int) partition by range(year(separated)) (partition p0 values less than (1991), partition p1 values less than (1996), partition p2 values less than (2001), partition p3 values less than (MAXVALUE))`, + }, + { + input: `CREATE TABLE tp14 ( + a INT NOT NULL, + b INT NOT NULL + ) + PARTITION BY RANGE COLUMNS(a,b) PARTITIONS 4 ( + PARTITION p0 VALUES LESS THAN (10,5), + PARTITION p1 VALUES LESS THAN (20,10), + PARTITION p2 VALUES LESS THAN (50,20), + PARTITION p3 VALUES LESS THAN (65,30) + )`, + output: `create table tp14 (a int not null, b int not null) partition by range columns (a, b) partitions 4 (partition p0 values less than (10, 5), partition p1 values less than (20, 10), partition p2 values less than (50, 20), partition p3 values less than (65, 30))`, + }, + { + input: `CREATE TABLE tp15 ( + id INT PRIMARY KEY, + name VARCHAR(35), + age INT unsigned + ) + PARTITION BY LIST (id) ( + PARTITION r0 VALUES IN (1, 5, 9, 13, 17, 21), + PARTITION r1 VALUES IN (2, 6, 10, 14, 18, 22), + PARTITION r2 VALUES IN (3, 7, 11, 15, 19, 23), + PARTITION r3 VALUES IN (4, 8, 12, 16, 20, 24) + );`, + output: `create table tp15 (id int primary key, name varchar(35), age int unsigned) partition by list(id) (partition r0 values in (1, 5, 9, 13, 17, 21), partition r1 values in (2, 6, 10, 14, 18, 22), partition r2 values in (3, 7, 11, 15, 19, 23), partition r3 values in (4, 8, 12, 16, 20, 24))`, + }, + { + input: `CREATE TABLE tp16 ( + a INT NULL, + b INT NULL + ) + PARTITION BY LIST COLUMNS(a,b) ( + PARTITION p0 VALUES IN( (0,0), (NULL,NULL) ), + PARTITION p1 VALUES IN( (0,1), (0,2), (0,3), (1,1), (1,2) ), + PARTITION p2 VALUES IN( (1,0), (2,0), (2,1), (3,0), (3,1) ), + PARTITION p3 VALUES IN( (1,3), (2,2), (2,3), (3,2), (3,3) ) + )`, + output: `create table tp16 (a int null, b int null) partition by list columns (a, b) (partition p0 values in ((0, 0), (null, null)), partition p1 values in ((0, 1), (0, 2), (0, 3), (1, 1), (1, 2)), partition p2 values in ((1, 0), (2, 0), (2, 1), (3, 0), (3, 1)), partition p3 values in ((1, 3), (2, 2), (2, 3), (3, 2), (3, 3)))`, + }, + { + input: `CREATE TABLE tp17 ( + id INT NOT NULL PRIMARY KEY, + fname VARCHAR(30), + lname VARCHAR(30) + ) + PARTITION BY RANGE (id) ( + PARTITION p0 VALUES LESS THAN (6), + PARTITION p1 VALUES LESS THAN (11), + PARTITION p2 VALUES LESS THAN (16), + PARTITION p3 VALUES LESS THAN (21) + );`, + output: `create table tp17 (id int not null primary key, fname varchar(30), lname varchar(30)) partition by range(id) (partition p0 values less than (6), partition p1 values less than (11), partition p2 values less than (16), partition p3 values less than (21))`, + }, + { + input: "grant all, all(a, b), create(a, b), select(a, b), super(a, b, c) on table db.a to u1, u2 with grant option", + }, { + input: "grant proxy on u1 to u2, u3, u4 with grant option", + }, { + input: "grant proxy on u1 to u2, u3, u4", + }, { input: "grant r1, r2, r3 to u1, u1, u3", }, { diff --git a/pkg/sql/parsers/tree/create.go b/pkg/sql/parsers/tree/create.go index 1cdaec099a2d4a4b86ae9d3a55ac9659e0f2f359..2f661e3a26a30052711a20da7ba2570d6924342e 100644 --- a/pkg/sql/parsers/tree/create.go +++ b/pkg/sql/parsers/tree/create.go @@ -1655,10 +1655,16 @@ func NewValuesLessThan(vl Exprs) *ValuesLessThan { type ValuesIn struct { valuesImpl - ValueList []Exprs + ValueList Exprs +} + +func (node *ValuesIn) Format(ctx *FmtCtx) { + ctx.WriteString("values in (") + node.ValueList.Format(ctx) + ctx.WriteByte(')') } -func NewValuesIn(vl []Exprs) *ValuesIn { +func NewValuesIn(vl Exprs) *ValuesIn { return &ValuesIn{ ValueList: vl, } diff --git a/pkg/sql/parsers/tree/expr.go b/pkg/sql/parsers/tree/expr.go index 7a823c0d88cdb359852153c7e0cbf8b8f02bba5e..858f2d321c1296b15f478ee2fed111d41e3e6d8f 100644 --- a/pkg/sql/parsers/tree/expr.go +++ b/pkg/sql/parsers/tree/expr.go @@ -801,14 +801,6 @@ func NewDefaultVal(e Expr) *DefaultVal { } } -type MaxValue struct { - exprImpl -} - -func NewMaxValue() *MaxValue { - return &MaxValue{} -} - type TypeExpr interface { Expr } @@ -865,3 +857,15 @@ func NewParamExpr(offset int) *ParamExpr { Offset: offset, } } + +type MaxValue struct { + exprImpl +} + +func (node *MaxValue) Format(ctx *FmtCtx) { + ctx.WriteString("MAXVALUE") +} + +func NewMaxValue() *MaxValue { + return &MaxValue{} +} diff --git a/pkg/sql/plan/base_binder.go b/pkg/sql/plan/base_binder.go index c60630e772f3102f382a2a4998ff048d671dfedc..8631e6c588e5f955d10f3b5614266945f902ee58 100644 --- a/pkg/sql/plan/base_binder.go +++ b/pkg/sql/plan/base_binder.go @@ -150,8 +150,13 @@ func (b *baseBinder) baseBindExpr(astExpr tree.Expr, depth int32, isRoot bool) ( }, }, nil case *tree.MaxValue: - err = errors.New("", fmt.Sprintf("expr max'%v' is not supported now", exprImpl)) - + return &Expr{ + Expr: &plan.Expr_Max{ + Max: &MaxValue{ + Value: "maxvalue", + }, + }, + }, nil case *tree.VarExpr: expr, err = b.baseBindVar(exprImpl, depth, isRoot) diff --git a/pkg/sql/plan/build_ddl.go b/pkg/sql/plan/build_ddl.go index 15b1bab191759e2dd17206184e718eaec781cd60..59ce38ee9503ab673189d3b881c6c09ef7a7d2c4 100644 --- a/pkg/sql/plan/build_ddl.go +++ b/pkg/sql/plan/build_ddl.go @@ -182,6 +182,7 @@ func buildCreateTable(stmt *tree.CreateTable, ctx CompilerContext) (*Plan, error } } + // After handleTableOptions, so begin the partitions processing depend on TableDef if stmt.Param != nil { json_byte, err := json.Marshal(stmt.Param) if err != nil { @@ -205,9 +206,29 @@ func buildCreateTable(stmt *tree.CreateTable, ctx CompilerContext) (*Plan, error }, }) } + + builder := NewQueryBuilder(plan.Query_SELECT, ctx) + bindContext := NewBindContext(builder, nil) + // set partition(unsupport now) if stmt.PartitionOption != nil { - return nil, errors.New(errno.SQLStatementNotYetComplete, fmt.Sprintf("partition unsupport now; statement: '%v'", tree.String(stmt, dialect.MYSQL))) + nodeID := builder.appendNode(&plan.Node{ + NodeType: plan.Node_TABLE_SCAN, + Cost: nil, + ObjRef: nil, + TableDef: createTable.TableDef, + BindingTags: []int32{builder.genNewTag()}, + }, bindContext) + + err = builder.addBinding(nodeID, tree.AliasClause{}, bindContext) + if err != nil { + return nil, err + } + partitionBinder := NewPartitionBinder(builder, bindContext) + err = buildPartitionByClause(partitionBinder, stmt.PartitionOption, createTable.TableDef) + if err != nil { + return nil, err + } } return &Plan{ @@ -222,6 +243,22 @@ func buildCreateTable(stmt *tree.CreateTable, ctx CompilerContext) (*Plan, error }, nil } +// buildPartitionByClause build partition by clause info and semantic check. +// Currently, sub partition and partition value verification are not supported +func buildPartitionByClause(partitionBinder *PartitionBinder, partitionOp *tree.PartitionOption, tableDef *TableDef) (err error) { + switch partitionOp.PartBy.PType.(type) { + case *tree.HashType: + err = buildHashPartition(partitionBinder, partitionOp, tableDef) + case *tree.KeyType: + err = buildKeyPartition(partitionBinder, partitionOp, tableDef) + case *tree.RangeType: + err = buildRangePartition(partitionBinder, partitionOp, tableDef) + case *tree.ListType: + err = buildListPartitiion(partitionBinder, partitionOp, tableDef) + } + return err +} + func buildTableDefs(defs tree.TableDefs, ctx CompilerContext, tableDef *TableDef) error { var primaryKeys []string var indexs []string diff --git a/pkg/sql/plan/build_partition_test.go b/pkg/sql/plan/build_partition_test.go new file mode 100644 index 0000000000000000000000000000000000000000..c97fe6bc0c038f1164e44e63f17afa2fb11ec6fd --- /dev/null +++ b/pkg/sql/plan/build_partition_test.go @@ -0,0 +1,897 @@ +// 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 plan + +import ( + "github.com/matrixorigin/matrixone/pkg/sql/parsers/dialect/mysql" + "testing" +) + +func TestSingleDDLPartition(t *testing.T) { + //sql := `CREATE TABLE quarterly_report_status ( + // report_id INT NOT NULL, + // report_status VARCHAR(20) NOT NULL, + // report_updated TIMESTAMP NOT NULL + // ) + // PARTITION BY RANGE ( UNIX_TIMESTAMP(report_updated) ) ( + // PARTITION p0 VALUES LESS THAN ( UNIX_TIMESTAMP('2008-01-01 00:00:00') ), + // PARTITION p1 VALUES LESS THAN ( UNIX_TIMESTAMP('2008-04-01 00:00:00') ), + // PARTITION p2 VALUES LESS THAN ( UNIX_TIMESTAMP('2008-07-01 00:00:00') ), + // PARTITION p3 VALUES LESS THAN ( UNIX_TIMESTAMP('2008-10-01 00:00:00') ), + // PARTITION p4 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-01-01 00:00:00') ), + // PARTITION p5 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-04-01 00:00:00') ), + // PARTITION p6 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-07-01 00:00:00') ), + // PARTITION p7 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-10-01 00:00:00') ), + // PARTITION p8 VALUES LESS THAN ( UNIX_TIMESTAMP('2010-01-01 00:00:00') ), + // PARTITION p9 VALUES LESS THAN (MAXVALUE) + // );` + + sql := `CREATE TABLE tp16 ( + a INT NULL, + b INT NULL + ) + PARTITION BY LIST COLUMNS(a,b) ( + PARTITION p0 VALUES IN( (0,0), (NULL,NULL) ), + PARTITION p1 VALUES IN( (0,1), (0,2), (0,3), (1,1), (1,2) ), + PARTITION p2 VALUES IN( (1,0), (2,0), (2,1), (3,0), (3,1) ), + PARTITION p3 VALUES IN( (1,3), (2,2), (2,3), (3,2), (3,3) ) + )` + + //sql := `SELECT a FROM t1 WHERE (1,2) > ANY (SELECT a FROM t1 WHERE b = 2);` + + mock := NewMockOptimizer() + logicPlan, err := buildSingleStmt(mock, t, sql) + if err != nil { + t.Fatalf("%+v", err) + } + outPutPlan(logicPlan, true, t) +} + +// ---------------------------------- Key Partition ---------------------------------- +func TestKeyPartition(t *testing.T) { + // KEY(column_list) Partition + sqls := []string{ + "CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col3) PARTITIONS 4;", + "CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col3);", + "CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR KEY(col3) PARTITIONS 5;", + "CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY ALGORITHM = 1 (col3);", + "CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR KEY ALGORITHM = 1 (col3) PARTITIONS 5;", + "CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col1, col2) PARTITIONS 4;", + `CREATE TABLE t1 ( + col1 INT NOT NULL, + col2 DATE NOT NULL, + col3 INT NOT NULL, + col4 INT NOT NULL, + PRIMARY KEY (col1, col2) + ) + PARTITION BY KEY(col1) + PARTITIONS 4;`, + } + + mock := NewMockOptimizer() + for _, sql := range sqls { + t.Log(sql) + logicPlan, err := buildSingleStmt(mock, t, sql) + if err != nil { + t.Fatalf("%+v", err) + } + outPutPlan(logicPlan, true, t) + } +} + +func TestKeyPartitionError(t *testing.T) { + sqls := []string{ + "CREATE TABLE ts (id INT, purchased DATE) PARTITION BY KEY( id ) PARTITIONS 4 SUBPARTITION BY HASH( TO_DAYS(purchased) ) SUBPARTITIONS 2;", + "CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col4) PARTITIONS 4;", + "CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY ALGORITHM = 3 (col3);", + `CREATE TABLE t1 ( + col1 INT NOT NULL, + col2 DATE NOT NULL, + col3 INT NOT NULL, + col4 INT NOT NULL, + PRIMARY KEY (col1, col2) + ) + PARTITION BY KEY(col3) + PARTITIONS 4;`, + } + mock := NewMockOptimizer() + for _, sql := range sqls { + _, err := buildSingleStmt(mock, t, sql) + t.Log(sql) + t.Log(err) + if err == nil { + t.Fatalf("%+v", err) + } + } +} + +// -----------------------Hash Partition------------------------------------- +func TestHashPartition(t *testing.T) { + // HASH(expr) Partition + sqls := []string{ + "CREATE TABLE t1 (col1 INT, col2 CHAR(5)) PARTITION BY HASH(col1);", + "CREATE TABLE t1 (col1 INT, col2 CHAR(5)) PARTITION BY HASH(col1) PARTITIONS 4;", + "CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATETIME) PARTITION BY HASH (YEAR(col3));", + "CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR HASH( YEAR(col3)) PARTITIONS 6;", + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT, + store_id INT + ) + PARTITION BY HASH(store_id) + PARTITIONS 4;`, + + `CREATE TABLE t1 ( + col1 INT NOT NULL, + col2 DATE NOT NULL, + col3 INT NOT NULL, + col4 INT NOT NULL, + PRIMARY KEY (col1, col2) + ) + PARTITION BY HASH(col1) + PARTITIONS 4;`, + + `CREATE TABLE t1 ( + col1 INT NOT NULL, + col2 DATE NOT NULL, + col3 INT NOT NULL, + col4 INT NOT NULL, + PRIMARY KEY (col1, col3) + ) + PARTITION BY HASH(col1 + col3) + PARTITIONS 4;`, + + `CREATE TABLE t2 ( + col1 INT NOT NULL, + col2 DATE NOT NULL, + col3 INT NOT NULL, + col4 INT NOT NULL, + PRIMARY KEY (col1) + ) + PARTITION BY HASH(col1+10) + PARTITIONS 4;`, + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT, + store_id INT + ) + PARTITION BY LINEAR HASH( YEAR(hired) ) + PARTITIONS 4;`, + } + + mock := NewMockOptimizer() + for _, sql := range sqls { + t.Log(sql) + logicPlan, err := buildSingleStmt(mock, t, sql) + if err != nil { + t.Fatalf("%+v", err) + } + outPutPlan(logicPlan, true, t) + } +} + +func TestHashPartitionError(t *testing.T) { + // HASH(expr) Partition + sqls := []string{ + "CREATE TABLE t1 (col1 INT, col2 CHAR(5)) PARTITION BY HASH(col2);", + "CREATE TABLE t1 (col1 INT, col2 DECIMAL) PARTITION BY HASH(col2);", + "CREATE TABLE t1 (col1 INT, col2 DECIMAL) PARTITION BY HASH(col1+0.5);", + "CREATE TABLE t1 (col1 INT, col2 DECIMAL) PARTITION BY HASH(12);", + "CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATETIME) PARTITION BY HASH (YEAR(col3)) PARTITIONS 4 SUBPARTITION BY KEY(col1);", + "CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY HASH( YEAR(col3) ) PARTITIONS;", + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT, + store_id INT + ) + PARTITION BY HASH(4) + PARTITIONS 4;`, + + `CREATE TABLE t1 ( + col1 INT NOT NULL, + col2 DATE NOT NULL, + col3 INT NOT NULL, + col4 INT NOT NULL, + PRIMARY KEY (col1, col2) + ) + PARTITION BY HASH(col3) + PARTITIONS 4;`, + + `CREATE TABLE t2 ( + col1 INT NOT NULL, + col2 DATE NOT NULL, + col3 INT NOT NULL, + col4 INT NOT NULL, + PRIMARY KEY (col1) + ) + PARTITION BY HASH(col1 + col3) + PARTITIONS 4;`, + } + + mock := NewMockOptimizer() + for _, sql := range sqls { + _, err := buildSingleStmt(mock, t, sql) + t.Log(sql) + t.Log(err) + if err == nil { + t.Fatalf("%+v", err) + } + } + +} + +// -----------------------Range Partition------------------------------------- +func TestRangePartition(t *testing.T) { + sqls := []string{ + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT NOT NULL, + store_id INT NOT NULL + ) + PARTITION BY RANGE (store_id) ( + PARTITION p0 VALUES LESS THAN (6), + PARTITION p1 VALUES LESS THAN (11), + PARTITION p2 VALUES LESS THAN (16), + PARTITION p3 VALUES LESS THAN (21) + );`, + + `CREATE TABLE t1 ( + year_col INT, + some_data INT + ) + PARTITION BY RANGE (year_col) ( + PARTITION p0 VALUES LESS THAN (1991), + PARTITION p1 VALUES LESS THAN (1995), + PARTITION p2 VALUES LESS THAN (1999), + PARTITION p3 VALUES LESS THAN (2002), + PARTITION p4 VALUES LESS THAN (2006), + PARTITION p5 VALUES LESS THAN (2012) + );`, + + `CREATE TABLE t1 ( + year_col INT, + some_data INT + ) + PARTITION BY RANGE (year_col) ( + PARTITION p0 VALUES LESS THAN (1991) COMMENT = 'Data for the years previous to 1991', + PARTITION p1 VALUES LESS THAN (1995) COMMENT = 'Data for the years previous to 1995', + PARTITION p2 VALUES LESS THAN (1999) COMMENT = 'Data for the years previous to 1999', + PARTITION p3 VALUES LESS THAN (2002) COMMENT = 'Data for the years previous to 2002', + PARTITION p4 VALUES LESS THAN (2006) COMMENT = 'Data for the years previous to 2006', + PARTITION p5 VALUES LESS THAN (2012) COMMENT = 'Data for the years previous to 2012' + );`, + + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT NOT NULL, + store_id INT NOT NULL + ) + PARTITION BY RANGE (store_id) ( + PARTITION p0 VALUES LESS THAN (6), + PARTITION p1 VALUES LESS THAN (11), + PARTITION p2 VALUES LESS THAN (16), + PARTITION p3 VALUES LESS THAN MAXVALUE + );`, + + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT NOT NULL, + store_id INT NOT NULL + ) + PARTITION BY RANGE (job_code) ( + PARTITION p0 VALUES LESS THAN (100), + PARTITION p1 VALUES LESS THAN (1000), + PARTITION p2 VALUES LESS THAN (10000) + );`, + + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT, + store_id INT + ) + PARTITION BY RANGE ( YEAR(separated) ) ( + PARTITION p0 VALUES LESS THAN (1991), + PARTITION p1 VALUES LESS THAN (1996), + PARTITION p2 VALUES LESS THAN (2001), + PARTITION p3 VALUES LESS THAN MAXVALUE + );`, + + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT NOT NULL, + store_id INT NOT NULL, + PRIMARY KEY(id, store_id) + ) + PARTITION BY RANGE (store_id) ( + PARTITION p0 VALUES LESS THAN (6), + PARTITION p1 VALUES LESS THAN (11), + PARTITION p2 VALUES LESS THAN (16), + PARTITION p3 VALUES LESS THAN (21) + );`, + + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT NOT NULL, + store_id INT NOT NULL, + PRIMARY KEY(id, store_id) + ) + PARTITION BY RANGE (store_id + 5) ( + PARTITION p0 VALUES LESS THAN (6), + PARTITION p1 VALUES LESS THAN (11), + PARTITION p2 VALUES LESS THAN (16), + PARTITION p3 VALUES LESS THAN (21) + );`, + + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT NOT NULL, + store_id INT NOT NULL, + PRIMARY KEY(id, hired) + ) + PARTITION BY RANGE (year(hired)) ( + PARTITION p0 VALUES LESS THAN (6), + PARTITION p1 VALUES LESS THAN (11), + PARTITION p2 VALUES LESS THAN (16), + PARTITION p3 VALUES LESS THAN (21) + );`, + + `CREATE TABLE members ( + firstname VARCHAR(25) NOT NULL, + lastname VARCHAR(25) NOT NULL, + username VARCHAR(16) NOT NULL, + email VARCHAR(35), + joined DATE NOT NULL + ) + PARTITION BY RANGE( YEAR(joined) ) PARTITIONS 5 ( + PARTITION p0 VALUES LESS THAN (1960), + PARTITION p1 VALUES LESS THAN (1970), + PARTITION p2 VALUES LESS THAN (1980), + PARTITION p3 VALUES LESS THAN (1990), + PARTITION p4 VALUES LESS THAN MAXVALUE + );`, + + `CREATE TABLE quarterly_report_status ( + report_id INT NOT NULL, + report_status VARCHAR(20) NOT NULL, + report_updated TIMESTAMP NOT NULL + ) + PARTITION BY RANGE ( UNIX_TIMESTAMP(report_updated) ) ( + PARTITION p0 VALUES LESS THAN ( UNIX_TIMESTAMP('2008-01-01 00:00:00') ), + PARTITION p1 VALUES LESS THAN ( UNIX_TIMESTAMP('2008-04-01 00:00:00') ), + PARTITION p2 VALUES LESS THAN ( UNIX_TIMESTAMP('2008-07-01 00:00:00') ), + PARTITION p3 VALUES LESS THAN ( UNIX_TIMESTAMP('2008-10-01 00:00:00') ), + PARTITION p4 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-01-01 00:00:00') ), + PARTITION p5 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-04-01 00:00:00') ), + PARTITION p6 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-07-01 00:00:00') ), + PARTITION p7 VALUES LESS THAN ( UNIX_TIMESTAMP('2009-10-01 00:00:00') ), + PARTITION p8 VALUES LESS THAN ( UNIX_TIMESTAMP('2010-01-01 00:00:00') ), + PARTITION p9 VALUES LESS THAN (MAXVALUE) + );`, + } + + mock := NewMockOptimizer() + for _, sql := range sqls { + t.Log(sql) + logicPlan, err := buildSingleStmt(mock, t, sql) + if err != nil { + t.Fatalf("%+v", err) + } + outPutPlan(logicPlan, true, t) + } +} + +func TestRangePartitionError(t *testing.T) { + sqls := []string{ + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT NOT NULL, + store_id INT NOT NULL, + PRIMARY KEY(id, store_id) + ) + PARTITION BY RANGE (job_code) ( + PARTITION p0 VALUES LESS THAN (6), + PARTITION p1 VALUES LESS THAN (11), + PARTITION p2 VALUES LESS THAN (16), + PARTITION p3 VALUES LESS THAN (21) + );`, + + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT NOT NULL, + store_id INT NOT NULL, + PRIMARY KEY(id, store_id) + ) + PARTITION BY RANGE (job_code + 5) ( + PARTITION p0 VALUES LESS THAN (6), + PARTITION p1 VALUES LESS THAN (11), + PARTITION p2 VALUES LESS THAN (16), + PARTITION p3 VALUES LESS THAN (21) + );`, + + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT NOT NULL, + store_id INT NOT NULL, + PRIMARY KEY(id, hired) + ) + PARTITION BY RANGE (year(separated)) ( + PARTITION p0 VALUES LESS THAN (6), + PARTITION p1 VALUES LESS THAN (11), + PARTITION p2 VALUES LESS THAN (16), + PARTITION p3 VALUES LESS THAN (21) + );`, + + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT NOT NULL, + store_id INT NOT NULL, + PRIMARY KEY(id, store_id) + ) + PARTITION BY RANGE (job_code + store_id) ( + PARTITION p0 VALUES LESS THAN (6), + PARTITION p1 VALUES LESS THAN (11), + PARTITION p2 VALUES LESS THAN (16), + PARTITION p3 VALUES LESS THAN (21) + );`, + + `CREATE TABLE members ( + firstname VARCHAR(25) NOT NULL, + lastname VARCHAR(25) NOT NULL, + username VARCHAR(16) NOT NULL, + email VARCHAR(35), + joined DATE NOT NULL + ) + PARTITION BY RANGE( YEAR(joined) ) PARTITIONS 4 ( + PARTITION p0 VALUES LESS THAN (1960), + PARTITION p1 VALUES LESS THAN (1970), + PARTITION p2 VALUES LESS THAN (1980), + PARTITION p3 VALUES LESS THAN (1990), + PARTITION p4 VALUES LESS THAN MAXVALUE + );`, + } + + mock := NewMockOptimizer() + for _, sql := range sqls { + _, err := buildSingleStmt(mock, t, sql) + t.Log(sql) + t.Log(err) + if err == nil { + t.Fatalf("%+v", err) + } + } +} + +// ---------------------Range Columns Partition-------------------------------- +func TestRangeColumnsPartition(t *testing.T) { + sqls := []string{ + `CREATE TABLE rc ( + a INT NOT NULL, + b INT NOT NULL + ) + PARTITION BY RANGE COLUMNS(a,b) ( + PARTITION p0 VALUES LESS THAN (10,5), + PARTITION p1 VALUES LESS THAN (20,10), + PARTITION p2 VALUES LESS THAN (50,20), + PARTITION p3 VALUES LESS THAN (65,30) + );`, + + `CREATE TABLE rc ( + a INT NOT NULL, + b INT NOT NULL + ) + PARTITION BY RANGE COLUMNS(a,b) ( + PARTITION p0 VALUES LESS THAN (10,5), + PARTITION p1 VALUES LESS THAN (20,10), + PARTITION p2 VALUES LESS THAN (50,MAXVALUE), + PARTITION p3 VALUES LESS THAN (65,MAXVALUE), + PARTITION p4 VALUES LESS THAN (MAXVALUE,MAXVALUE) + );`, + + `CREATE TABLE rc ( + a INT NOT NULL, + b INT NOT NULL + ) + PARTITION BY RANGE COLUMNS(a,b) ( + PARTITION p0 VALUES LESS THAN (10,5) COMMENT = 'Data for LESS THAN (10,5)', + PARTITION p1 VALUES LESS THAN (20,10) COMMENT = 'Data for LESS THAN (20,10)', + PARTITION p2 VALUES LESS THAN (50,MAXVALUE) COMMENT = 'Data for LESS THAN (50,MAXVALUE)', + PARTITION p3 VALUES LESS THAN (65,MAXVALUE) COMMENT = 'Data for LESS THAN (65,MAXVALUE)', + PARTITION p4 VALUES LESS THAN (MAXVALUE,MAXVALUE) COMMENT = 'Data for LESS THAN (MAXVALUE,MAXVALUE)' + );`, + + `CREATE TABLE rcx ( + a INT, + b INT, + c CHAR(3), + d INT + ) + PARTITION BY RANGE COLUMNS(a,d,c) ( + PARTITION p0 VALUES LESS THAN (5,10,'ggg'), + PARTITION p1 VALUES LESS THAN (10,20,'mmm'), + PARTITION p2 VALUES LESS THAN (15,30,'sss'), + PARTITION p3 VALUES LESS THAN (MAXVALUE,MAXVALUE,MAXVALUE) + );`, + + `CREATE TABLE t1 ( + col1 INT NOT NULL, + col2 INT NOT NULL, + col3 INT NOT NULL, + col4 INT NOT NULL, + PRIMARY KEY(col1, col3) + ) + PARTITION BY RANGE COLUMNS(col1,col3) ( + PARTITION p0 VALUES LESS THAN (10,5), + PARTITION p1 VALUES LESS THAN (20,10), + PARTITION p2 VALUES LESS THAN (50,20), + PARTITION p3 VALUES LESS THAN (65,30) + );`, + + `CREATE TABLE rc ( + a INT NOT NULL, + b INT NOT NULL + ) + PARTITION BY RANGE COLUMNS(a,b) PARTITIONS 4 ( + PARTITION p0 VALUES LESS THAN (10,5), + PARTITION p1 VALUES LESS THAN (20,10), + PARTITION p2 VALUES LESS THAN (50,20), + PARTITION p3 VALUES LESS THAN (65,30) + );`, + } + mock := NewMockOptimizer() + for _, sql := range sqls { + t.Log(sql) + logicPlan, err := buildSingleStmt(mock, t, sql) + if err != nil { + t.Fatalf("%+v", err) + } + outPutPlan(logicPlan, true, t) + } +} + +func TestRangeColumnsPartitionError(t *testing.T) { + sqls := []string{ + `CREATE TABLE rc3 ( + a INT NOT NULL, + b INT NOT NULL + ) + PARTITION BY RANGE COLUMNS(a,b) ( + PARTITION p0 VALUES LESS THAN (a,5), + PARTITION p1 VALUES LESS THAN (20,10), + PARTITION p2 VALUES LESS THAN (50,20), + PARTITION p3 VALUES LESS THAN (65,30) + );`, + + `CREATE TABLE rc3 ( + a INT NOT NULL, + b INT NOT NULL + ) + PARTITION BY RANGE COLUMNS(a,b) ( + PARTITION p0 VALUES LESS THAN (a+7,5), + PARTITION p1 VALUES LESS THAN (20,10), + PARTITION p2 VALUES LESS THAN (50,20), + PARTITION p3 VALUES LESS THAN (65,30) + );`, + + `CREATE TABLE t1 ( + col1 INT NOT NULL, + col2 INT NOT NULL, + col3 INT NOT NULL, + col4 INT NOT NULL, + PRIMARY KEY(col1, col3) + ) + PARTITION BY RANGE COLUMNS(col1,col2) ( + PARTITION p0 VALUES LESS THAN (10,5), + PARTITION p1 VALUES LESS THAN (20,10), + PARTITION p2 VALUES LESS THAN (50,20), + PARTITION p3 VALUES LESS THAN (65,30) + );`, + + `CREATE TABLE rc ( + a INT NOT NULL, + b INT NOT NULL + ) + PARTITION BY RANGE COLUMNS(a,b) PARTITIONS 5 ( + PARTITION p0 VALUES LESS THAN (10,5), + PARTITION p1 VALUES LESS THAN (20,10), + PARTITION p2 VALUES LESS THAN (50,20), + PARTITION p3 VALUES LESS THAN (65,30) + );`, + } + + mock := NewMockOptimizer() + for _, sql := range sqls { + _, err := buildSingleStmt(mock, t, sql) + t.Log(sql) + t.Log(err) + if err == nil { + t.Fatalf("%+v", err) + } + } +} + +// -----------------------List Partition-------------------------------------- +func TestListPartition(t *testing.T) { + sqls := []string{ + `CREATE TABLE client_firms ( + id INT, + name VARCHAR(35) + ) + PARTITION BY LIST (id) ( + PARTITION r0 VALUES IN (1, 5, 9, 13, 17, 21), + PARTITION r1 VALUES IN (2, 6, 10, 14, 18, 22), + PARTITION r2 VALUES IN (3, 7, 11, 15, 19, 23), + PARTITION r3 VALUES IN (4, 8, 12, 16, 20, 24) + );`, + + `CREATE TABLE employees ( + id INT NOT NULL, + fname VARCHAR(30), + lname VARCHAR(30), + hired DATE NOT NULL DEFAULT '1970-01-01', + separated DATE NOT NULL DEFAULT '9999-12-31', + job_code INT, + store_id INT + ) + PARTITION BY LIST(store_id) ( + PARTITION pNorth VALUES IN (3,5,6,9,17), + PARTITION pEast VALUES IN (1,2,10,11,19,20), + PARTITION pWest VALUES IN (4,12,13,14,18), + PARTITION pCentral VALUES IN (7,8,15,16) + );`, + + `CREATE TABLE t1 ( + id INT PRIMARY KEY, + name VARCHAR(35) + ) + PARTITION BY LIST (id) ( + PARTITION r0 VALUES IN (1, 5, 9, 13, 17, 21), + PARTITION r1 VALUES IN (2, 6, 10, 14, 18, 22), + PARTITION r2 VALUES IN (3, 7, 11, 15, 19, 23), + PARTITION r3 VALUES IN (4, 8, 12, 16, 20, 24) + );`, + } + + mock := NewMockOptimizer() + for _, sql := range sqls { + t.Log(sql) + logicPlan, err := buildSingleStmt(mock, t, sql) + if err != nil { + t.Fatalf("%+v", err) + } + outPutPlan(logicPlan, true, t) + } +} + +func TestListPartitionError(t *testing.T) { + sqls := []string{ + `CREATE TABLE t1 ( + id INT, + name VARCHAR(35) + ) + PARTITION BY LIST (id);`, + + `CREATE TABLE t2 ( + id INT, + name VARCHAR(35) + ) + PARTITION BY LIST (id) ( + PARTITION r0 VALUES IN (1, 5, 9, 13, 17, 21), + PARTITION r1 VALUES IN (2, 6, 10, 14, 18, 22), + PARTITION r2 VALUES IN (3, 7, 11, 15, 19, 23), + PARTITION r2 VALUES IN (4, 8, 12, 16, 20, 24) + );`, + + `CREATE TABLE t1 ( + id INT PRIMARY KEY, + name VARCHAR(35), + age INT unsigned + ) + PARTITION BY LIST (age) ( + PARTITION r0 VALUES IN (1, 5, 9, 13, 17, 21), + PARTITION r1 VALUES IN (2, 6, 10, 14, 18, 22), + PARTITION r2 VALUES IN (3, 7, 11, 15, 19, 23), + PARTITION r3 VALUES IN (4, 8, 12, 16, 20, 24) + );`, + } + + mock := NewMockOptimizer() + for _, sql := range sqls { + _, err := buildSingleStmt(mock, t, sql) + t.Log(sql) + t.Log(err) + if err == nil { + t.Fatalf("%+v", err) + } + } +} + +// -----------------------List Columns Partition-------------------------------------- +func TestListColumnsPartition(t *testing.T) { + sqls := []string{ + `CREATE TABLE lc ( + a INT NULL, + b INT NULL + ) + PARTITION BY LIST COLUMNS(a,b) ( + PARTITION p0 VALUES IN( (0,0), (NULL,NULL) ), + PARTITION p1 VALUES IN( (0,1), (0,2), (0,3), (1,1), (1,2) ), + PARTITION p2 VALUES IN( (1,0), (2,0), (2,1), (3,0), (3,1) ), + PARTITION p3 VALUES IN( (1,3), (2,2), (2,3), (3,2), (3,3) ) + );`, + + `CREATE TABLE customers_1 ( + first_name VARCHAR(25), + last_name VARCHAR(25), + street_1 VARCHAR(30), + street_2 VARCHAR(30), + city VARCHAR(15), + renewal DATE + ) + PARTITION BY LIST COLUMNS(city) ( + PARTITION pRegion_1 VALUES IN('Oskarshamn', 'Högsby', 'Mönsterås'), + PARTITION pRegion_2 VALUES IN('Vimmerby', 'Hultsfred', 'Västervik'), + PARTITION pRegion_3 VALUES IN('Nässjö', 'Eksjö', 'Vetlanda'), + PARTITION pRegion_4 VALUES IN('Uppvidinge', 'Alvesta', 'Växjo') + );`, + + `CREATE TABLE customers_2 ( + first_name VARCHAR(25), + last_name VARCHAR(25), + street_1 VARCHAR(30), + street_2 VARCHAR(30), + city VARCHAR(15), + renewal DATE + ) + PARTITION BY LIST COLUMNS(renewal) ( + PARTITION pWeek_1 VALUES IN('2010-02-01', '2010-02-02', '2010-02-03', + '2010-02-04', '2010-02-05', '2010-02-06', '2010-02-07'), + PARTITION pWeek_2 VALUES IN('2010-02-08', '2010-02-09', '2010-02-10', + '2010-02-11', '2010-02-12', '2010-02-13', '2010-02-14'), + PARTITION pWeek_3 VALUES IN('2010-02-15', '2010-02-16', '2010-02-17', + '2010-02-18', '2010-02-19', '2010-02-20', '2010-02-21'), + PARTITION pWeek_4 VALUES IN('2010-02-22', '2010-02-23', '2010-02-24', + '2010-02-25', '2010-02-26', '2010-02-27', '2010-02-28') + );`, + + `CREATE TABLE lc ( + a INT NULL, + b INT NULL + ) + PARTITION BY LIST COLUMNS(a,b) PARTITIONS 4 ( + PARTITION p0 VALUES IN( (0,0), (NULL,NULL) ), + PARTITION p1 VALUES IN( (0,1), (0,2), (0,3), (1,1), (1,2) ), + PARTITION p2 VALUES IN( (1,0), (2,0), (2,1), (3,0), (3,1) ), + PARTITION p3 VALUES IN( (1,3), (2,2), (2,3), (3,2), (3,3) ) + );`, + } + + mock := NewMockOptimizer() + for _, sql := range sqls { + t.Log(sql) + logicPlan, err := buildSingleStmt(mock, t, sql) + if err != nil { + t.Fatalf("%+v", err) + } + outPutPlan(logicPlan, true, t) + } +} + +func TestListColumnsPartitionError(t *testing.T) { + sqls := []string{ + `CREATE TABLE t1 ( + a INT NULL, + b INT NULL + ) + PARTITION BY LIST COLUMNS(a,b);`, + + `CREATE TABLE t2 ( + a INT NULL, + b INT NULL + ) + PARTITION BY LIST COLUMNS(a,b) ( + PARTITION p0 VALUES IN( (0,0), (NULL,NULL) ), + PARTITION p1 VALUES IN( (0,1), (0,2), (0,3), (1,1), (1,2) ), + PARTITION p2 VALUES IN( (1,0), (2,0), (2,1), (3,0), (3,1) ), + PARTITION p2 VALUES IN( (1,3), (2,2), (2,3), (3,2), (3,3) ) + );`, + + `CREATE TABLE lc ( + a INT NULL, + b INT NULL + ) + PARTITION BY LIST COLUMNS(a,b) PARTITIONS 5 ( + PARTITION p0 VALUES IN( (0,0), (NULL,NULL) ), + PARTITION p1 VALUES IN( (0,1), (0,2), (0,3), (1,1), (1,2) ), + PARTITION p2 VALUES IN( (1,0), (2,0), (2,1), (3,0), (3,1) ), + PARTITION p3 VALUES IN( (1,3), (2,2), (2,3), (3,2), (3,3) ) + );`, + } + + mock := NewMockOptimizer() + for _, sql := range sqls { + _, err := buildSingleStmt(mock, t, sql) + t.Log(sql) + t.Log(err) + if err == nil { + t.Fatalf("%+v", err) + } + } +} + +func buildSingleStmt(opt Optimizer, t *testing.T, sql string) (*Plan, error) { + statements, err := mysql.Parse(sql) + if err != nil { + return nil, err + } + // this sql always return single statement + context := opt.CurrentContext() + return BuildPlan(context, statements[0]) +} diff --git a/pkg/sql/plan/build_test.go b/pkg/sql/plan/build_test.go index 3aa0ba3c332825ffd076856ffd7e26f6c8b02370..f210fb937d8be2f0ad9dc43d734048c8e87b663e 100644 --- a/pkg/sql/plan/build_test.go +++ b/pkg/sql/plan/build_test.go @@ -31,7 +31,8 @@ func TestSingleSQL(t *testing.T) { // sql := "SELECT nation2.* FROM nation2 natural join region" // sql := `select n_name, avg(N_REGIONKEY) t from NATION where n_name != 'a' group by n_name having avg(N_REGIONKEY) > 10 order by t limit 20` // sql := `select date_add('1997-12-31 23:59:59',INTERVAL 100000 SECOND)` - sql := "create view v1 as select * from nation" + //sql := "create view v1 as select * from nation" + sql := "select n_name,N_REGIONKEY from NATION" // sql := "explain a" // sql := "select 18446744073709551500" // stmts, err := mysql.Parse(sql) @@ -45,7 +46,7 @@ func TestSingleSQL(t *testing.T) { if err != nil { t.Fatalf("%+v", err) } - outPutPlan(logicPlan, true, t) + outPutPlan(logicPlan, false, t) } //Test Query Node Tree diff --git a/pkg/sql/plan/partition.go b/pkg/sql/plan/partition.go new file mode 100644 index 0000000000000000000000000000000000000000..c16bb46b5ef15254f07b211b51a70b4a1572d289 --- /dev/null +++ b/pkg/sql/plan/partition.go @@ -0,0 +1,567 @@ +// 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 plan + +import ( + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/errno" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/sql/errors" + "github.com/matrixorigin/matrixone/pkg/sql/parsers/dialect" + "github.com/matrixorigin/matrixone/pkg/sql/parsers/tree" + "strconv" + "strings" +) + +const ( + // Reference link https://dev.mysql.com/doc/mysql-reslimits-excerpt/5.6/en/partitioning-limitations.html + PartitionNumberLimit = 8192 +) + +// buildHashPartition handle Hash Partitioning +func buildHashPartition(partitionBinder *PartitionBinder, partitionOp *tree.PartitionOption, tableDef *TableDef) error { + if partitionOp.SubPartBy != nil { + return moerr.New(moerr.ErrPartitionSubpartition) + } + partitionsNum := partitionOp.PartBy.Num + // If you do not include a PARTITIONS clause, the number of partitions defaults to 1. + if partitionsNum <= 0 { + partitionsNum = 1 + } + // check partition number + if err := checkPartitionsNumber(partitionsNum); err != nil { + return err + } + + partitionType := partitionOp.PartBy.PType.(*tree.HashType) + partitionInfo := &plan.PartitionInfo{ + Partitions: make([]*plan.PartitionItem, partitionsNum), + PartitionNum: partitionsNum, + IsSubPartition: partitionOp.PartBy.IsSubPartition, + } + + if partitionType.Linear { + partitionInfo.Type = plan.PartitionType_LINEAR_HASH + } else { + partitionInfo.Type = plan.PartitionType_HASH + } + + err := buildPartitionExpr(partitionBinder, partitionInfo, partitionType.Expr) + if err != nil { + return err + } + + err = buildPartitionDefinitionsInfo(partitionBinder, partitionInfo, partitionOp.Partitions) + if err != nil { + return err + } + err = checkTableDefPartition(partitionBinder, tableDef, partitionInfo) + if err != nil { + return err + } + + tableDef.Defs = append(tableDef.Defs, &plan.TableDef_DefType{ + Def: &plan.TableDef_DefType_Partition{ + Partition: partitionInfo, + }, + }) + return nil +} + +// buildKeyPartition handle KEY Partitioning +func buildKeyPartition(partitionBinder *PartitionBinder, partitionOp *tree.PartitionOption, tableDef *TableDef) error { + if partitionOp.SubPartBy != nil { + return moerr.New(moerr.ErrPartitionSubpartition) + } + + // if you do not include a PARTITIONS clause, the number of partitions defaults to 1. + partitionsNum := partitionOp.PartBy.Num + if partitionsNum <= 0 { + partitionsNum = 1 + } + // check partition number + if err := checkPartitionsNumber(partitionsNum); err != nil { + return err + } + + partitionType := partitionOp.PartBy.PType.(*tree.KeyType) + // check the algorithm option + if partitionType.Algorithm != 1 && partitionType.Algorithm != 2 { + return errors.New(errno.InvalidOptionValue, "the 'ALGORITHM' option only supports 1 or 2 values") + } + + partitionInfo := &plan.PartitionInfo{ + Partitions: make([]*plan.PartitionItem, partitionsNum), + PartitionNum: partitionsNum, + Algorithm: partitionType.Algorithm, + IsSubPartition: partitionOp.PartBy.IsSubPartition, + } + + if partitionType.Linear { + partitionInfo.Type = plan.PartitionType_LINEAR_KEY + } else { + partitionInfo.Type = plan.PartitionType_KEY + } + err := buildPartitionColumns(partitionBinder, partitionInfo, partitionType.ColumnList) + if err != nil { + return err + } + + err = buildPartitionDefinitionsInfo(partitionBinder, partitionInfo, partitionOp.Partitions) + if err != nil { + return err + } + err = checkTableDefPartition(partitionBinder, tableDef, partitionInfo) + if err != nil { + return err + } + + tableDef.Defs = append(tableDef.Defs, &plan.TableDef_DefType{ + Def: &plan.TableDef_DefType_Partition{ + Partition: partitionInfo, + }, + }) + return nil +} + +// buildRangePartition handle Range Partitioning and Range columns partitioning +func buildRangePartition(partitionBinder *PartitionBinder, partitionOp *tree.PartitionOption, tableDef *TableDef) error { + partitionType := partitionOp.PartBy.PType.(*tree.RangeType) + + partitionNum := len(partitionOp.Partitions) + if partitionOp.PartBy.Num != 0 && uint64(partitionNum) != partitionOp.PartBy.Num { + return moerr.New(moerr.ErrPartitionWrongNoPart) + } + + partitionInfo := &plan.PartitionInfo{ + IsSubPartition: partitionOp.PartBy.IsSubPartition, + Partitions: make([]*plan.PartitionItem, partitionNum), + PartitionNum: uint64(partitionNum), + } + + // RANGE Partitioning + if len(partitionType.ColumnList) == 0 { + partitionInfo.Type = plan.PartitionType_RANGE + err := buildPartitionExpr(partitionBinder, partitionInfo, partitionType.Expr) + if err != nil { + return err + } + } else { + // RANGE COLUMNS partitioning + partitionInfo.Type = plan.PartitionType_RANGE_COLUMNS + err := buildPartitionColumns(partitionBinder, partitionInfo, partitionType.ColumnList) + if err != nil { + return err + } + } + + err := buildPartitionDefinitionsInfo(partitionBinder, partitionInfo, partitionOp.Partitions) + if err != nil { + return err + } + + err = checkTableDefPartition(partitionBinder, tableDef, partitionInfo) + if err != nil { + return err + } + + tableDef.Defs = append(tableDef.Defs, &plan.TableDef_DefType{ + Def: &plan.TableDef_DefType_Partition{ + Partition: partitionInfo, + }, + }) + return nil +} + +// buildListPartitiion handle List Partitioning and List columns partitioning +func buildListPartitiion(partitionBinder *PartitionBinder, partitionOp *tree.PartitionOption, tableDef *TableDef) error { + partitionType := partitionOp.PartBy.PType.(*tree.ListType) + + partitionNum := len(partitionOp.Partitions) + if partitionOp.PartBy.Num != 0 && uint64(partitionNum) != partitionOp.PartBy.Num { + return moerr.New(moerr.ErrPartitionWrongNoPart) + } + + partitionInfo := &plan.PartitionInfo{ + IsSubPartition: partitionOp.PartBy.IsSubPartition, + Partitions: make([]*plan.PartitionItem, partitionNum), + PartitionNum: uint64(partitionNum), + } + + if len(partitionType.ColumnList) == 0 { + partitionInfo.Type = plan.PartitionType_LIST + err := buildPartitionExpr(partitionBinder, partitionInfo, partitionType.Expr) + if err != nil { + return err + } + } else { + partitionInfo.Type = plan.PartitionType_LIST_COLUMNS + err := buildPartitionColumns(partitionBinder, partitionInfo, partitionType.ColumnList) + if err != nil { + return err + } + } + + err := buildPartitionDefinitionsInfo(partitionBinder, partitionInfo, partitionOp.Partitions) + if err != nil { + return err + } + + err = checkTableDefPartition(partitionBinder, tableDef, partitionInfo) + if err != nil { + return err + } + + tableDef.Defs = append(tableDef.Defs, &plan.TableDef_DefType{ + Def: &plan.TableDef_DefType_Partition{ + Partition: partitionInfo, + }, + }) + return nil +} + +// buildPartitionColumns COLUMNS partitioning enables the use of multiple columns in partitioning keys +func buildPartitionColumns(partitionBinder *PartitionBinder, partitionInfo *plan.PartitionInfo, columnList []*tree.UnresolvedName) error { + columnsExpr := make([]*plan.Expr, len(columnList)) + partitionColumns := make([]string, len(columnList)) + + // partition COLUMNS does not accept expressions, only names of columns. + for i, column := range columnList { + colExpr, err := partitionBinder.BindColRef(column, 0, true) + if err != nil { + return moerr.New(moerr.ErrFieldNotFoundPart) + } + columnsExpr[i] = colExpr + partitionColumns[i] = tree.String(column, dialect.MYSQL) + } + // check whether the columns partitioning type is legal + if err := checkColumnsPartitionType(partitionBinder, partitionInfo, columnsExpr); err != nil { + return err + } + partitionInfo.PartitionColumns = partitionColumns + partitionInfo.Columns = columnsExpr + + return nil +} + +// buildPartitionExpr expr partitioning is an expression using one or more table columns. +func buildPartitionExpr(partitionBinder *PartitionBinder, partitionInfo *plan.PartitionInfo, expr tree.Expr) error { + planExpr, err := partitionBinder.BindExpr(expr, 0, true) + if err != nil { + return err + } + partitionInfo.Expr = planExpr + + partitionExpr := tree.String(expr, dialect.MYSQL) + partitionInfo.PartitionExpression = partitionExpr + return nil +} + +// buildPartitionDefinitionsInfo build partition definitions info without assign partition id. tbInfo will be constant +func buildPartitionDefinitionsInfo(partitionBinder *PartitionBinder, partitionInfo *plan.PartitionInfo, defs []*tree.Partition) (err error) { + switch partitionInfo.Type { + case plan.PartitionType_HASH: + fallthrough + case plan.PartitionType_LINEAR_HASH: + err = buildHashPartitionDefinitions(partitionBinder, defs, partitionInfo) + case plan.PartitionType_KEY: + fallthrough + case plan.PartitionType_LINEAR_KEY: + err = buildKeyPartitionDefinitions(partitionBinder, defs, partitionInfo) + case plan.PartitionType_RANGE: + fallthrough + case plan.PartitionType_RANGE_COLUMNS: + err = buildRangePartitionDefinitions(partitionBinder, defs, partitionInfo) + case plan.PartitionType_LIST: + fallthrough + case plan.PartitionType_LIST_COLUMNS: + err = buildListPartitionDefinitions(partitionBinder, defs, partitionInfo) + } + + if err != nil { + return err + } + return nil +} + +func buildRangePartitionDefinitions(partitionBinder *PartitionBinder, defs []*tree.Partition, partitionInfo *plan.PartitionInfo) error { + // VALUES LESS THAN value must be strictly increasing for each partition + for i, partition := range defs { + partitionItem := &plan.PartitionItem{ + PartitionName: string(partition.Name), + OrdinalPosition: uint32(i + 1), + } + + if valuesLessThan, ok := partition.Values.(*tree.ValuesLessThan); ok { + planExprs := make([]*plan.Expr, len(valuesLessThan.ValueList)) + binder := NewPartitionBinder(nil, nil) + + for j, valueExpr := range valuesLessThan.ValueList { + // value must be able to evaluate the expression's return value + planExpr, err := binder.BindExpr(valueExpr, 0, false) + if err != nil { + return err + } + planExprs[j] = planExpr + } + + partitionItem.LessThan = planExprs + partitionItem.Description = tree.String(valuesLessThan.ValueList, dialect.MYSQL) + } else { + panic("syntax error") + } + + for _, tableOption := range partition.Options { + if opComment, ok := tableOption.(*tree.TableOptionComment); ok { + partitionItem.Comment = opComment.Comment + } + } + partitionInfo.Partitions[i] = partitionItem + } + return nil +} + +func buildListPartitionDefinitions(partitionBinder *PartitionBinder, defs []*tree.Partition, partitionInfo *plan.PartitionInfo) error { + for i, partition := range defs { + partitionItem := &plan.PartitionItem{ + PartitionName: string(partition.Name), + OrdinalPosition: uint32(i + 1), + } + + if valuesIn, ok := partition.Values.(*tree.ValuesIn); ok { + binder := NewPartitionBinder(nil, nil) + inValues := make([]*plan.Expr, len(valuesIn.ValueList)) + + for j, value := range valuesIn.ValueList { + tuple, err := binder.BindExpr(value, 0, false) + if err != nil { + return err + } + inValues[j] = tuple + } + partitionItem.InValues = inValues + partitionItem.Description = tree.String(valuesIn, dialect.MYSQL) + } else { + panic("syntax error") + } + partitionInfo.Partitions[i] = partitionItem + } + return nil +} + +func buildHashPartitionDefinitions(partitionBinder *PartitionBinder, defs []*tree.Partition, partitionInfo *plan.PartitionInfo) error { + for i := uint64(0); i < partitionInfo.PartitionNum; i++ { + partition := &plan.PartitionItem{ + PartitionName: "p" + strconv.FormatUint(i, 10), + OrdinalPosition: uint32(i + 1), + } + partitionInfo.Partitions[i] = partition + } + return nil +} + +func buildKeyPartitionDefinitions(partitionBinder *PartitionBinder, defs []*tree.Partition, partitionInfo *plan.PartitionInfo) error { + for i := uint64(0); i < partitionInfo.PartitionNum; i++ { + partition := &plan.PartitionItem{ + PartitionName: "p" + strconv.FormatUint(i, 10), + OrdinalPosition: uint32(i + 1), + } + partitionInfo.Partitions[i] = partition + } + return nil +} + +// The permitted data types are shown in the following list: +// All integer types +// DATE and DATETIME +// CHAR, VARCHAR, BINARY, and VARBINARY +// See https://dev.mysql.com/doc/mysql-partitioning-excerpt/5.7/en/partitioning-columns.html +func checkColumnsPartitionType(partitionBinder *PartitionBinder, partitionInfo *plan.PartitionInfo, columnPlanExprs []*plan.Expr) error { + columnNames := partitionInfo.PartitionColumns + for i, planexpr := range columnPlanExprs { + t := types.T(planexpr.Typ.Id) + if !types.IsInteger(t) && !types.IsString(t) && !types.IsDateRelate(t) { + return moerr.New(moerr.ErrFieldTypeNotAllowedAsPartitionField, columnNames[i]) + } + } + return nil +} + +// checkTableDefPartition Perform integrity constraint check on partitions of create table statement +func checkTableDefPartition(partitionBinder *PartitionBinder, tableDef *TableDef, partitionInfo *plan.PartitionInfo) error { + if err := checkPartitionFuncType(partitionBinder, tableDef, partitionInfo); err != nil { + return err + } + if err := checkPartitionDefinitionConstraints(partitionBinder, partitionInfo); err != nil { + return err + } + if err := checkPartitionKeysConstraints(partitionBinder, tableDef, partitionInfo); err != nil { + return err + } + return nil +} + +// check partition expression type +func checkPartitionFuncType(partitionBinder *PartitionBinder, tableDef *TableDef, partitionInfo *plan.PartitionInfo) error { + if partitionInfo.Expr == nil { + return nil + } else { + expr := partitionInfo.Expr + // expr must return a nonconstant, nonrandom integer value (in other words, it should be varying but deterministic) + if isConstant(expr) { + return moerr.New(moerr.ErrWrongExprInPartitionFunc) + } + + if !types.IsInteger(types.T(expr.Typ.Id)) { + return moerr.New(moerr.ErrFieldTypeNotAllowedAsPartitionField, partitionInfo.PartitionExpression) + } + } + return nil +} + +// checkPartitionKeysConstraints checks the partitioning key is included in the table constraint. +func checkPartitionKeysConstraints(partitionBinder *PartitionBinder, tableDef *TableDef, partitionInfo *plan.PartitionInfo) error { + defs := tableDef.Defs + hasPrimaryKey := false + var pkNames []string + for _, def := range defs { + if pkdef, ok := def.Def.(*plan.TableDef_DefType_Pk); ok { + hasPrimaryKey = true + pkNames = pkdef.Pk.Names + } + } + + if hasPrimaryKey { + if partitionInfo.PartitionColumns != nil { + if !checkUniqueKeyIncludePartKey(partitionInfo.PartitionColumns, pkNames) { + return moerr.New(moerr.ErrUniqueKeyNeedAllFieldsInPf, "PRIMARY KEY") + } + } else { + extractCols := extractColFromExpr(partitionBinder, partitionInfo.Expr) + if !checkUniqueKeyIncludePartKey(extractCols, pkNames) { + return moerr.New(moerr.ErrUniqueKeyNeedAllFieldsInPf, "PRIMARY KEY") + } + } + } + return nil +} + +// checkUniqueKeyIncludePartKey checks the partitioning key is included in the constraint. +func checkUniqueKeyIncludePartKey(partCols []string, pkcols []string) bool { + for i := 0; i < len(partCols); i++ { + partCol := partCols[i] + if !findColumnInIndexCols(partCol, pkcols) { + // Partition column is not found in the index columns. + return false + } + } + return true +} + +func findColumnInIndexCols(c string, pkcols []string) bool { + for _, c1 := range pkcols { + if strings.EqualFold(c, c1) { + return true + } + } + return false +} + +func checkPartitionDefinitionConstraints(partitionBinder *PartitionBinder, partitionInfo *plan.PartitionInfo) error { + var err error + if err = checkPartitionNameUnique(partitionInfo); err != nil { + return err + } + if err = checkPartitionsNumber(uint64(len(partitionInfo.Partitions))); err != nil { + return err + } + if err = checkPartitionColumnsUnique(partitionInfo); err != nil { + return err + } + + if len(partitionInfo.Partitions) == 0 { + if partitionInfo.Type == plan.PartitionType_RANGE || partitionInfo.Type == plan.PartitionType_RANGE_COLUMNS { + return moerr.New(moerr.ErrPartitionsMustBeDefined, "RANGE") + } else if partitionInfo.Type == plan.PartitionType_LIST || partitionInfo.Type == plan.PartitionType_LIST_COLUMNS { + return moerr.New(moerr.ErrPartitionsMustBeDefined, "LIST") + } + } + return err +} + +// checkPartitionColumnsUnique check partition columns for duplicate columns +func checkPartitionColumnsUnique(partitionInfo *plan.PartitionInfo) error { + if len(partitionInfo.PartitionColumns) <= 1 { + return nil + } + var columnsMap = make(map[string]byte) + for _, column := range partitionInfo.PartitionColumns { + if _, ok := columnsMap[column]; ok { + return moerr.New(moerr.ErrSameNamePartitionField, column) + } + columnsMap[column] = 1 + } + return nil +} + +// checkPartitionsNumber: check whether check partition number exceeds the limit +func checkPartitionsNumber(partNum uint64) error { + if partNum > uint64(PartitionNumberLimit) { + return moerr.New(moerr.ErrTooManyPartitions) + } + return nil +} + +// Check whether the partition name is duplicate +func checkPartitionNameUnique(pd *plan.PartitionInfo) error { + partitions := pd.Partitions + + partNames := make(map[string]byte, len(partitions)) + for _, par := range partitions { + if _, ok := partNames[par.PartitionName]; ok { + return moerr.New(moerr.ErrSameNamePartition, par.PartitionName) + } + partNames[par.PartitionName] = 1 + } + return nil +} + +// extractColFromExpr: extract column names from partition expression +func extractColFromExpr(partitionBinder *PartitionBinder, expr *Expr) []string { + result := make([]string, 0) + switch exprImpl := expr.Expr.(type) { + case *plan.Expr_Col: + builder := partitionBinder.builder + tableColName := builder.nameByColRef[[2]int32{exprImpl.Col.RelPos, exprImpl.Col.ColPos}] + split := strings.Split(tableColName, ".") + colName := split[len(split)-1] + result = append(result, colName) + case *plan.Expr_F: + tmpcols := extractColFromFunc(partitionBinder, exprImpl) + result = append(result, tmpcols...) + } + return result +} + +// extractColFromFunc extract column names from function expression +func extractColFromFunc(partitionBinder *PartitionBinder, funcExpr *plan.Expr_F) []string { + result := make([]string, 0) + for _, arg := range funcExpr.F.Args { + tmpcols := extractColFromExpr(partitionBinder, arg) + result = append(result, tmpcols...) + } + return result +} diff --git a/pkg/sql/plan/partition_binder.go b/pkg/sql/plan/partition_binder.go new file mode 100644 index 0000000000000000000000000000000000000000..770ddf53af94ac2e5184abef760f18376baecc79 --- /dev/null +++ b/pkg/sql/plan/partition_binder.go @@ -0,0 +1,50 @@ +// 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 plan + +import ( + "github.com/matrixorigin/matrixone/pkg/errno" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/sql/errors" + "github.com/matrixorigin/matrixone/pkg/sql/parsers/tree" +) + +func NewPartitionBinder(builder *QueryBuilder, ctx *BindContext) *PartitionBinder { + p := &PartitionBinder{} + p.builder = builder + p.ctx = ctx + p.impl = p + return p +} + +func (p *PartitionBinder) BindExpr(expr tree.Expr, i int32, b bool) (*plan.Expr, error) { + return p.baseBindExpr(expr, i, b) +} + +func (p *PartitionBinder) BindColRef(name *tree.UnresolvedName, i int32, b bool) (*plan.Expr, error) { + return p.baseBindColRef(name, i, b) +} + +func (p *PartitionBinder) BindAggFunc(s string, expr *tree.FuncExpr, i int32, b bool) (*plan.Expr, error) { + return nil, errors.New(errno.GroupingError, "aggregate functions not allowed here") +} + +func (p *PartitionBinder) BindWinFunc(s string, expr *tree.FuncExpr, i int32, b bool) (*plan.Expr, error) { + return nil, errors.New(errno.WindowingError, "window functions not allowed here") +} + +func (p *PartitionBinder) BindSubquery(subquery *tree.Subquery, b bool) (*plan.Expr, error) { + return nil, errors.New(errno.InvalidColumnReference, "subquery not allowed here") +} diff --git a/pkg/sql/plan/types.go b/pkg/sql/plan/types.go index c9c2328c8d00fb69c3fc166d5fec8059b2df0144..734406cc871fca879613762e94cc8824b8b07298 100644 --- a/pkg/sql/plan/types.go +++ b/pkg/sql/plan/types.go @@ -36,6 +36,7 @@ type ObjectRef = plan.ObjectRef type ColRef = plan.ColRef type Cost = plan.Cost type Const = plan.Const +type MaxValue = plan.MaxValue type Expr = plan.Expr type Node = plan.Node type RowsetData = plan.RowsetData @@ -233,12 +234,17 @@ type LimitBinder struct { baseBinder } +type PartitionBinder struct { + baseBinder +} + var _ Binder = (*TableBinder)(nil) var _ Binder = (*WhereBinder)(nil) var _ Binder = (*GroupBinder)(nil) var _ Binder = (*HavingBinder)(nil) var _ Binder = (*ProjectionBinder)(nil) var _ Binder = (*LimitBinder)(nil) +var _ Binder = (*PartitionBinder)(nil) const ( NotFound int32 = math.MaxInt32 diff --git a/proto/plan.proto b/proto/plan.proto index 3e7f031ec43074f0b67c09c143c1c339f377a600..07e67513d6a068f39e52ded9496f549862830021 100644 --- a/proto/plan.proto +++ b/proto/plan.proto @@ -84,6 +84,10 @@ message ExprList { repeated Expr list = 1; } +message MaxValue { + string value = 1; +} + // TargetType used in cast function as target type message TargetType { Type typ = 1; @@ -161,6 +165,7 @@ message Expr { CorrColRef corr = 8; TargetType t = 9; ExprList list = 10; + MaxValue max = 11; } } @@ -218,6 +223,39 @@ message PropertiesDef { repeated Property properties = 1; } + +enum PartitionType { + KEY = 0; + LINEAR_KEY = 1; + HASH = 2; + LINEAR_HASH = 3; + RANGE = 4; + RANGE_COLUMNS = 5; + LIST = 6; + LIST_COLUMNS = 7; +} + +message PartitionInfo { + PartitionType type = 1; + Expr Expr = 2; + string partitionExpression = 3; + repeated Expr Columns = 4; + repeated string partitionColumns = 5; + uint64 partitionNum = 6; + repeated PartitionItem partitions = 7; + int64 algorithm = 8; + bool isSubPartition = 9; +} + +message PartitionItem { + string partitionName = 1; + uint32 ordinalPosition = 2; + string description = 3; + string comment = 4; + repeated Expr lessThan = 5; + repeated Expr inValues = 6; +} + message ViewDef { string view = 1; } @@ -229,6 +267,7 @@ message TableDef { IndexDef idx = 2; PropertiesDef properties = 3; ViewDef view = 4; + PartitionInfo partition = 5; } } string name = 1; diff --git a/test/cases/ddl/table_partition.test b/test/cases/ddl/table_partition.test new file mode 100644 index 0000000000000000000000000000000000000000..c59dbac51a1f0d718a895a3348619ef960bd0011 --- /dev/null +++ b/test/cases/ddl/table_partition.test @@ -0,0 +1,103 @@ +CREATE TABLE tp1 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col3) PARTITIONS 4; +CREATE TABLE tp2 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col3); +CREATE TABLE tp3 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR KEY(col3) PARTITIONS 5; +CREATE TABLE tp4 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY ALGORITHM = 1 (col3); +CREATE TABLE tp5 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR KEY ALGORITHM = 1 (col3) PARTITIONS 5; +CREATE TABLE tp6 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col1, col2) PARTITIONS 4; +CREATE TABLE tp7 (col1 INT NOT NULL PRIMARY KEY, col2 DATE NOT NULL, col3 INT NOT NULL, col4 INT NOT NULL) PARTITION BY KEY(col1) PARTITIONS 4; +CREATE TABLE tp8 (col1 INT, col2 CHAR(5)) PARTITION BY HASH(col1); +CREATE TABLE tp9 (col1 INT, col2 CHAR(5)) PARTITION BY HASH(col1) PARTITIONS 4; +CREATE TABLE tp10 (col1 INT, col2 CHAR(5), col3 DATETIME) PARTITION BY HASH (YEAR(col3)); +CREATE TABLE tp11 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR HASH( YEAR(col3)) PARTITIONS 6; +CREATE TABLE tp12 (col1 INT NOT NULL PRIMARY KEY, col2 DATE NOT NULL, col3 INT NOT NULL, col4 INT NOT NULL) PARTITION BY HASH(col1) PARTITIONS 4; +CREATE TABLE tp13 ( +id INT NOT NULL PRIMARY KEY, +fname VARCHAR(30), +lname VARCHAR(30), +hired DATE NOT NULL DEFAULT '1970-01-01', +separated DATE NOT NULL DEFAULT '9999-12-31', +job_code INT NOT NULL, +store_id INT NOT NULL +) +PARTITION BY RANGE (id) ( +PARTITION p0 VALUES LESS THAN (6), +PARTITION p1 VALUES LESS THAN (11), +PARTITION p2 VALUES LESS THAN (16), +PARTITION p3 VALUES LESS THAN (21) +); +CREATE TABLE tp14 ( +id INT NOT NULL, +fname VARCHAR(30), +lname VARCHAR(30), +hired DATE NOT NULL DEFAULT '1970-01-01', +separated DATE NOT NULL DEFAULT '9999-12-31', +job_code INT, +store_id INT +) +PARTITION BY RANGE ( YEAR(separated) ) ( +PARTITION p0 VALUES LESS THAN (1991), +PARTITION p1 VALUES LESS THAN (1996), +PARTITION p2 VALUES LESS THAN (2001), +PARTITION p3 VALUES LESS THAN MAXVALUE +); +CREATE TABLE tp15 ( +a INT NOT NULL, +b INT NOT NULL +) +PARTITION BY RANGE COLUMNS(a,b) PARTITIONS 4 ( +PARTITION p0 VALUES LESS THAN (10,5), +PARTITION p1 VALUES LESS THAN (20,10), +PARTITION p2 VALUES LESS THAN (50,20), +PARTITION p3 VALUES LESS THAN (65,30) +); +CREATE TABLE tp16 ( +id INT PRIMARY KEY, +name VARCHAR(35), +age INT unsigned +) +PARTITION BY LIST (id) ( +PARTITION r0 VALUES IN (1, 5, 9, 13, 17, 21), +PARTITION r1 VALUES IN (2, 6, 10, 14, 18, 22), +PARTITION r2 VALUES IN (3, 7, 11, 15, 19, 23), +PARTITION r3 VALUES IN (4, 8, 12, 16, 20, 24) +); +CREATE TABLE tp17 ( +id INT, +name VARCHAR(35), +age INT unsigned +) +PARTITION BY LIST (id) ( +PARTITION r0 VALUES IN (1, 5, 9, 13, 17, 21), +PARTITION r1 VALUES IN (2, 6, 10, 14, 18, 22), +PARTITION r2 VALUES IN (3, 7, 11, 15, 19, 23), +PARTITION r3 VALUES IN (4, 8, 12, 16, 20, 24) +); +CREATE TABLE tp18 ( +a INT NULL, +b INT NULL +) +PARTITION BY LIST COLUMNS(a,b) ( +PARTITION p0 VALUES IN( (0,0), (NULL,NULL) ), +PARTITION p1 VALUES IN( (0,1), (0,2), (0,3), (1,1), (1,2) ), +PARTITION p2 VALUES IN( (1,0), (2,0), (2,1), (3,0), (3,1) ), +PARTITION p3 VALUES IN( (1,3), (2,2), (2,3), (3,2), (3,3) ) +); +show tables; +drop table tp1; +drop table tp2; +drop table tp3; +drop table tp4; +drop table tp5; +drop table tp6; +drop table tp7; +drop table tp8; +drop table tp9; +drop table tp10; +drop table tp11; +drop table tp12; +drop table tp13; +drop table tp14; +drop table tp15; +drop table tp16; +drop table tp17; +drop table tp18; \ No newline at end of file diff --git a/test/result/ddl/table_partition.result b/test/result/ddl/table_partition.result new file mode 100644 index 0000000000000000000000000000000000000000..f9cde67622ec19cfb5bfc2dcd7d05108b42d22ea --- /dev/null +++ b/test/result/ddl/table_partition.result @@ -0,0 +1,122 @@ +CREATE TABLE tp1 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col3) PARTITIONS 4; +CREATE TABLE tp2 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col3); +CREATE TABLE tp3 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR KEY(col3) PARTITIONS 5; +CREATE TABLE tp4 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY ALGORITHM = 1 (col3); +CREATE TABLE tp5 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR KEY ALGORITHM = 1 (col3) PARTITIONS 5; +CREATE TABLE tp6 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col1, col2) PARTITIONS 4; +CREATE TABLE tp7 (col1 INT NOT NULL PRIMARY KEY, col2 DATE NOT NULL, col3 INT NOT NULL, col4 INT NOT NULL) PARTITION BY KEY(col1) PARTITIONS 4; +CREATE TABLE tp8 (col1 INT, col2 CHAR(5)) PARTITION BY HASH(col1); +CREATE TABLE tp9 (col1 INT, col2 CHAR(5)) PARTITION BY HASH(col1) PARTITIONS 4; +CREATE TABLE tp10 (col1 INT, col2 CHAR(5), col3 DATETIME) PARTITION BY HASH (YEAR(col3)); +CREATE TABLE tp11 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR HASH( YEAR(col3)) PARTITIONS 6; +CREATE TABLE tp12 (col1 INT NOT NULL PRIMARY KEY, col2 DATE NOT NULL, col3 INT NOT NULL, col4 INT NOT NULL) PARTITION BY HASH(col1) PARTITIONS 4; +CREATE TABLE tp13 ( +id INT NOT NULL PRIMARY KEY, +fname VARCHAR(30), +lname VARCHAR(30), +hired DATE NOT NULL DEFAULT '1970-01-01', +separated DATE NOT NULL DEFAULT '9999-12-31', +job_code INT NOT NULL, +store_id INT NOT NULL +) +PARTITION BY RANGE (id) ( +PARTITION p0 VALUES LESS THAN (6), +PARTITION p1 VALUES LESS THAN (11), +PARTITION p2 VALUES LESS THAN (16), +PARTITION p3 VALUES LESS THAN (21) +); +CREATE TABLE tp14 ( +id INT NOT NULL, +fname VARCHAR(30), +lname VARCHAR(30), +hired DATE NOT NULL DEFAULT '1970-01-01', +separated DATE NOT NULL DEFAULT '9999-12-31', +job_code INT, +store_id INT +) +PARTITION BY RANGE ( YEAR(separated) ) ( +PARTITION p0 VALUES LESS THAN (1991), +PARTITION p1 VALUES LESS THAN (1996), +PARTITION p2 VALUES LESS THAN (2001), +PARTITION p3 VALUES LESS THAN MAXVALUE +); +CREATE TABLE tp15 ( +a INT NOT NULL, +b INT NOT NULL +) +PARTITION BY RANGE COLUMNS(a,b) PARTITIONS 4 ( +PARTITION p0 VALUES LESS THAN (10,5), +PARTITION p1 VALUES LESS THAN (20,10), +PARTITION p2 VALUES LESS THAN (50,20), +PARTITION p3 VALUES LESS THAN (65,30) +); +CREATE TABLE tp16 ( +id INT PRIMARY KEY, +name VARCHAR(35), +age INT unsigned +) +PARTITION BY LIST (id) ( +PARTITION r0 VALUES IN (1, 5, 9, 13, 17, 21), +PARTITION r1 VALUES IN (2, 6, 10, 14, 18, 22), +PARTITION r2 VALUES IN (3, 7, 11, 15, 19, 23), +PARTITION r3 VALUES IN (4, 8, 12, 16, 20, 24) +); +CREATE TABLE tp17 ( +id INT, +name VARCHAR(35), +age INT unsigned +) +PARTITION BY LIST (id) ( +PARTITION r0 VALUES IN (1, 5, 9, 13, 17, 21), +PARTITION r1 VALUES IN (2, 6, 10, 14, 18, 22), +PARTITION r2 VALUES IN (3, 7, 11, 15, 19, 23), +PARTITION r3 VALUES IN (4, 8, 12, 16, 20, 24) +); +CREATE TABLE tp18 ( +a INT NULL, +b INT NULL +) +PARTITION BY LIST COLUMNS(a,b) ( +PARTITION p0 VALUES IN( (0,0), (NULL,NULL) ), +PARTITION p1 VALUES IN( (0,1), (0,2), (0,3), (1,1), (1,2) ), +PARTITION p2 VALUES IN( (1,0), (2,0), (2,1), (3,0), (3,1) ), +PARTITION p3 VALUES IN( (1,3), (2,2), (2,3), (3,2), (3,3) ) +); +show tables; +tables_in_table_partition +tp1 +tp2 +tp3 +tp4 +tp5 +tp6 +tp7 +tp8 +tp9 +tp10 +tp11 +tp12 +tp13 +tp14 +tp15 +tp16 +tp17 +tp18 +drop table tp1; +drop table tp2; +drop table tp3; +drop table tp4; +drop table tp5; +drop table tp6; +drop table tp7; +drop table tp8; +drop table tp9; +drop table tp10; +drop table tp11; +drop table tp12; +drop table tp13; +drop table tp14; +drop table tp15; +drop table tp16; +drop table tp17; +drop table tp18;