refactor: add title and summary to groups proposal (#14465)

This commit is contained in:
Marko
2023-01-04 20:01:31 +00:00
committed by GitHub
parent b244ffb4dd
commit 7b1233327c
26 changed files with 826 additions and 216 deletions
+8 -1
View File
@@ -6495,9 +6495,16 @@ type Proposal struct {
// metadata is any arbitrary metadata attached to the proposal.
Metadata string `protobuf:"bytes,10,opt,name=metadata,proto3" json:"metadata,omitempty"`
// title is the title of the proposal
//
// Since: cosmos-sdk 0.47
Title string `protobuf:"bytes,11,opt,name=title,proto3" json:"title,omitempty"`
// summary is a short summary of the proposal
Summary string `protobuf:"bytes,12,opt,name=summary,proto3" json:"summary,omitempty"`
//
// Since: cosmos-sdk 0.47
Summary string `protobuf:"bytes,12,opt,name=summary,proto3" json:"summary,omitempty"`
// Proposer is the address of the proposal sumbitter
//
// Since: cosmos-sdk 0.47
Proposer string `protobuf:"bytes,13,opt,name=proposer,proto3" json:"proposer,omitempty"`
}
+4
View File
@@ -5975,8 +5975,12 @@ type MsgSubmitProposal struct {
// metadata is any arbitrary metadata attached to the proposal.
Metadata string `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"`
// title is the title of the proposal.
//
// Since: cosmos-sdk 0.47
Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`
// summary is the summary of the proposal
//
// Since: cosmos-sdk 0.47
Summary string `protobuf:"bytes,6,opt,name=summary,proto3" json:"summary,omitempty"`
}
+155 -2
View File
@@ -8930,6 +8930,8 @@ var (
fd_MsgSubmitProposal_metadata protoreflect.FieldDescriptor
fd_MsgSubmitProposal_messages protoreflect.FieldDescriptor
fd_MsgSubmitProposal_exec protoreflect.FieldDescriptor
fd_MsgSubmitProposal_title protoreflect.FieldDescriptor
fd_MsgSubmitProposal_summary protoreflect.FieldDescriptor
)
func init() {
@@ -8940,6 +8942,8 @@ func init() {
fd_MsgSubmitProposal_metadata = md_MsgSubmitProposal.Fields().ByName("metadata")
fd_MsgSubmitProposal_messages = md_MsgSubmitProposal.Fields().ByName("messages")
fd_MsgSubmitProposal_exec = md_MsgSubmitProposal.Fields().ByName("exec")
fd_MsgSubmitProposal_title = md_MsgSubmitProposal.Fields().ByName("title")
fd_MsgSubmitProposal_summary = md_MsgSubmitProposal.Fields().ByName("summary")
}
var _ protoreflect.Message = (*fastReflection_MsgSubmitProposal)(nil)
@@ -9037,6 +9041,18 @@ func (x *fastReflection_MsgSubmitProposal) Range(f func(protoreflect.FieldDescri
return
}
}
if x.Title != "" {
value := protoreflect.ValueOfString(x.Title)
if !f(fd_MsgSubmitProposal_title, value) {
return
}
}
if x.Summary != "" {
value := protoreflect.ValueOfString(x.Summary)
if !f(fd_MsgSubmitProposal_summary, value) {
return
}
}
}
// Has reports whether a field is populated.
@@ -9062,6 +9078,10 @@ func (x *fastReflection_MsgSubmitProposal) Has(fd protoreflect.FieldDescriptor)
return len(x.Messages) != 0
case "cosmos.group.v1.MsgSubmitProposal.exec":
return x.Exec != 0
case "cosmos.group.v1.MsgSubmitProposal.title":
return x.Title != ""
case "cosmos.group.v1.MsgSubmitProposal.summary":
return x.Summary != ""
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.MsgSubmitProposal"))
@@ -9088,6 +9108,10 @@ func (x *fastReflection_MsgSubmitProposal) Clear(fd protoreflect.FieldDescriptor
x.Messages = nil
case "cosmos.group.v1.MsgSubmitProposal.exec":
x.Exec = 0
case "cosmos.group.v1.MsgSubmitProposal.title":
x.Title = ""
case "cosmos.group.v1.MsgSubmitProposal.summary":
x.Summary = ""
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.MsgSubmitProposal"))
@@ -9125,6 +9149,12 @@ func (x *fastReflection_MsgSubmitProposal) Get(descriptor protoreflect.FieldDesc
case "cosmos.group.v1.MsgSubmitProposal.exec":
value := x.Exec
return protoreflect.ValueOfEnum((protoreflect.EnumNumber)(value))
case "cosmos.group.v1.MsgSubmitProposal.title":
value := x.Title
return protoreflect.ValueOfString(value)
case "cosmos.group.v1.MsgSubmitProposal.summary":
value := x.Summary
return protoreflect.ValueOfString(value)
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.MsgSubmitProposal"))
@@ -9159,6 +9189,10 @@ func (x *fastReflection_MsgSubmitProposal) Set(fd protoreflect.FieldDescriptor,
x.Messages = *clv.list
case "cosmos.group.v1.MsgSubmitProposal.exec":
x.Exec = (Exec)(value.Enum())
case "cosmos.group.v1.MsgSubmitProposal.title":
x.Title = value.Interface().(string)
case "cosmos.group.v1.MsgSubmitProposal.summary":
x.Summary = value.Interface().(string)
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.MsgSubmitProposal"))
@@ -9197,6 +9231,10 @@ func (x *fastReflection_MsgSubmitProposal) Mutable(fd protoreflect.FieldDescript
panic(fmt.Errorf("field metadata of message cosmos.group.v1.MsgSubmitProposal is not mutable"))
case "cosmos.group.v1.MsgSubmitProposal.exec":
panic(fmt.Errorf("field exec of message cosmos.group.v1.MsgSubmitProposal is not mutable"))
case "cosmos.group.v1.MsgSubmitProposal.title":
panic(fmt.Errorf("field title of message cosmos.group.v1.MsgSubmitProposal is not mutable"))
case "cosmos.group.v1.MsgSubmitProposal.summary":
panic(fmt.Errorf("field summary of message cosmos.group.v1.MsgSubmitProposal is not mutable"))
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.MsgSubmitProposal"))
@@ -9222,6 +9260,10 @@ func (x *fastReflection_MsgSubmitProposal) NewField(fd protoreflect.FieldDescrip
return protoreflect.ValueOfList(&_MsgSubmitProposal_4_list{list: &list})
case "cosmos.group.v1.MsgSubmitProposal.exec":
return protoreflect.ValueOfEnum(0)
case "cosmos.group.v1.MsgSubmitProposal.title":
return protoreflect.ValueOfString("")
case "cosmos.group.v1.MsgSubmitProposal.summary":
return protoreflect.ValueOfString("")
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.MsgSubmitProposal"))
@@ -9314,6 +9356,14 @@ func (x *fastReflection_MsgSubmitProposal) ProtoMethods() *protoiface.Methods {
if x.Exec != 0 {
n += 1 + runtime.Sov(uint64(x.Exec))
}
l = len(x.Title)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
l = len(x.Summary)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
if x.unknownFields != nil {
n += len(x.unknownFields)
}
@@ -9343,6 +9393,20 @@ func (x *fastReflection_MsgSubmitProposal) ProtoMethods() *protoiface.Methods {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if len(x.Summary) > 0 {
i -= len(x.Summary)
copy(dAtA[i:], x.Summary)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Summary)))
i--
dAtA[i] = 0x3a
}
if len(x.Title) > 0 {
i -= len(x.Title)
copy(dAtA[i:], x.Title)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title)))
i--
dAtA[i] = 0x32
}
if x.Exec != 0 {
i = runtime.EncodeVarint(dAtA, i, uint64(x.Exec))
i--
@@ -9585,6 +9649,70 @@ func (x *fastReflection_MsgSubmitProposal) ProtoMethods() *protoiface.Methods {
break
}
}
case 6:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Title = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 7:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Summary", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Summary = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
@@ -14430,6 +14558,14 @@ type MsgSubmitProposal struct {
// whether it should be executed immediately on creation or not.
// If so, proposers signatures are considered as Yes votes.
Exec Exec `protobuf:"varint,5,opt,name=exec,proto3,enum=cosmos.group.v1.Exec" json:"exec,omitempty"`
// title is the title of the proposal.
//
// Since: cosmos-sdk 0.47
Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"`
// summary is the summary of the proposal.
//
// Since: cosmos-sdk 0.47
Summary string `protobuf:"bytes,7,opt,name=summary,proto3" json:"summary,omitempty"`
}
func (x *MsgSubmitProposal) Reset() {
@@ -14487,6 +14623,20 @@ func (x *MsgSubmitProposal) GetExec() Exec {
return Exec_EXEC_UNSPECIFIED
}
func (x *MsgSubmitProposal) GetTitle() string {
if x != nil {
return x.Title
}
return ""
}
func (x *MsgSubmitProposal) GetSummary() string {
if x != nil {
return x.Summary
}
return ""
}
// MsgSubmitProposalResponse is the Msg/SubmitProposal response type.
type MsgSubmitProposalResponse struct {
state protoimpl.MessageState
@@ -15048,7 +15198,7 @@ var file_cosmos_group_v1_tx_proto_rawDesc = []byte{
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x26, 0x0a, 0x24, 0x4d, 0x73, 0x67, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0xb1, 0x02, 0x0a, 0x11, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72,
0x22, 0xe1, 0x02, 0x0a, 0x11, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72,
0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x4a, 0x0a, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73,
@@ -15063,7 +15213,10 @@ var file_cosmos_group_v1_tx_proto_rawDesc = []byte{
0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x29,
0x0a, 0x04, 0x65, 0x78, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63,
0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45,
0x78, 0x65, 0x63, 0x52, 0x04, 0x65, 0x78, 0x65, 0x63, 0x3a, 0x39, 0x88, 0xa0, 0x1f, 0x00, 0x82,
0x78, 0x65, 0x63, 0x52, 0x04, 0x65, 0x78, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74,
0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12,
0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x3a, 0x39, 0x88, 0xa0, 0x1f, 0x00, 0x82,
0xe7, 0xb0, 0x2a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x73, 0x8a, 0xe7, 0xb0,
0x2a, 0x22, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x67, 0x72, 0x6f,
0x75, 0x70, 0x2f, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70,
+155 -2
View File
@@ -4824,6 +4824,8 @@ var (
fd_Proposal_voting_period_end protoreflect.FieldDescriptor
fd_Proposal_executor_result protoreflect.FieldDescriptor
fd_Proposal_messages protoreflect.FieldDescriptor
fd_Proposal_title protoreflect.FieldDescriptor
fd_Proposal_summary protoreflect.FieldDescriptor
)
func init() {
@@ -4841,6 +4843,8 @@ func init() {
fd_Proposal_voting_period_end = md_Proposal.Fields().ByName("voting_period_end")
fd_Proposal_executor_result = md_Proposal.Fields().ByName("executor_result")
fd_Proposal_messages = md_Proposal.Fields().ByName("messages")
fd_Proposal_title = md_Proposal.Fields().ByName("title")
fd_Proposal_summary = md_Proposal.Fields().ByName("summary")
}
var _ protoreflect.Message = (*fastReflection_Proposal)(nil)
@@ -4980,6 +4984,18 @@ func (x *fastReflection_Proposal) Range(f func(protoreflect.FieldDescriptor, pro
return
}
}
if x.Title != "" {
value := protoreflect.ValueOfString(x.Title)
if !f(fd_Proposal_title, value) {
return
}
}
if x.Summary != "" {
value := protoreflect.ValueOfString(x.Summary)
if !f(fd_Proposal_summary, value) {
return
}
}
}
// Has reports whether a field is populated.
@@ -5019,6 +5035,10 @@ func (x *fastReflection_Proposal) Has(fd protoreflect.FieldDescriptor) bool {
return x.ExecutorResult != 0
case "cosmos.group.v1.Proposal.messages":
return len(x.Messages) != 0
case "cosmos.group.v1.Proposal.title":
return x.Title != ""
case "cosmos.group.v1.Proposal.summary":
return x.Summary != ""
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.Proposal"))
@@ -5059,6 +5079,10 @@ func (x *fastReflection_Proposal) Clear(fd protoreflect.FieldDescriptor) {
x.ExecutorResult = 0
case "cosmos.group.v1.Proposal.messages":
x.Messages = nil
case "cosmos.group.v1.Proposal.title":
x.Title = ""
case "cosmos.group.v1.Proposal.summary":
x.Summary = ""
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.Proposal"))
@@ -5117,6 +5141,12 @@ func (x *fastReflection_Proposal) Get(descriptor protoreflect.FieldDescriptor) p
}
listValue := &_Proposal_12_list{list: &x.Messages}
return protoreflect.ValueOfList(listValue)
case "cosmos.group.v1.Proposal.title":
value := x.Title
return protoreflect.ValueOfString(value)
case "cosmos.group.v1.Proposal.summary":
value := x.Summary
return protoreflect.ValueOfString(value)
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.Proposal"))
@@ -5165,6 +5195,10 @@ func (x *fastReflection_Proposal) Set(fd protoreflect.FieldDescriptor, value pro
lv := value.List()
clv := lv.(*_Proposal_12_list)
x.Messages = *clv.list
case "cosmos.group.v1.Proposal.title":
x.Title = value.Interface().(string)
case "cosmos.group.v1.Proposal.summary":
x.Summary = value.Interface().(string)
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.Proposal"))
@@ -5226,6 +5260,10 @@ func (x *fastReflection_Proposal) Mutable(fd protoreflect.FieldDescriptor) proto
panic(fmt.Errorf("field status of message cosmos.group.v1.Proposal is not mutable"))
case "cosmos.group.v1.Proposal.executor_result":
panic(fmt.Errorf("field executor_result of message cosmos.group.v1.Proposal is not mutable"))
case "cosmos.group.v1.Proposal.title":
panic(fmt.Errorf("field title of message cosmos.group.v1.Proposal is not mutable"))
case "cosmos.group.v1.Proposal.summary":
panic(fmt.Errorf("field summary of message cosmos.group.v1.Proposal is not mutable"))
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.Proposal"))
@@ -5268,6 +5306,10 @@ func (x *fastReflection_Proposal) NewField(fd protoreflect.FieldDescriptor) prot
case "cosmos.group.v1.Proposal.messages":
list := []*anypb.Any{}
return protoreflect.ValueOfList(&_Proposal_12_list{list: &list})
case "cosmos.group.v1.Proposal.title":
return protoreflect.ValueOfString("")
case "cosmos.group.v1.Proposal.summary":
return protoreflect.ValueOfString("")
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.group.v1.Proposal"))
@@ -5384,6 +5426,14 @@ func (x *fastReflection_Proposal) ProtoMethods() *protoiface.Methods {
n += 1 + l + runtime.Sov(uint64(l))
}
}
l = len(x.Title)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
l = len(x.Summary)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
if x.unknownFields != nil {
n += len(x.unknownFields)
}
@@ -5413,6 +5463,20 @@ func (x *fastReflection_Proposal) ProtoMethods() *protoiface.Methods {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if len(x.Summary) > 0 {
i -= len(x.Summary)
copy(dAtA[i:], x.Summary)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Summary)))
i--
dAtA[i] = 0x72
}
if len(x.Title) > 0 {
i -= len(x.Title)
copy(dAtA[i:], x.Title)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Title)))
i--
dAtA[i] = 0x6a
}
if len(x.Messages) > 0 {
for iNdEx := len(x.Messages) - 1; iNdEx >= 0; iNdEx-- {
encoded, err := options.Marshal(x.Messages[iNdEx])
@@ -5901,6 +5965,70 @@ func (x *fastReflection_Proposal) ProtoMethods() *protoiface.Methods {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
iNdEx = postIndex
case 13:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Title", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Title = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 14:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Summary", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Summary = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
@@ -7960,6 +8088,14 @@ type Proposal struct {
ExecutorResult ProposalExecutorResult `protobuf:"varint,11,opt,name=executor_result,json=executorResult,proto3,enum=cosmos.group.v1.ProposalExecutorResult" json:"executor_result,omitempty"`
// messages is a list of `sdk.Msg`s that will be executed if the proposal passes.
Messages []*anypb.Any `protobuf:"bytes,12,rep,name=messages,proto3" json:"messages,omitempty"`
// title is the title of the proposal
//
// Since: cosmos-sdk 0.47
Title string `protobuf:"bytes,13,opt,name=title,proto3" json:"title,omitempty"`
// summary is a short summary of the proposal
//
// Since: cosmos-sdk 0.47
Summary string `protobuf:"bytes,14,opt,name=summary,proto3" json:"summary,omitempty"`
}
func (x *Proposal) Reset() {
@@ -8066,6 +8202,20 @@ func (x *Proposal) GetMessages() []*anypb.Any {
return nil
}
func (x *Proposal) GetTitle() string {
if x != nil {
return x.Title
}
return ""
}
func (x *Proposal) GetSummary() string {
if x != nil {
return x.Summary
}
return ""
}
// TallyResult represents the sum of weighted votes for each vote option.
type TallyResult struct {
state protoimpl.MessageState
@@ -8320,7 +8470,7 @@ var file_cosmos_group_v1_types_proto_rawDesc = []byte{
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42,
0x0d, 0xc8, 0xde, 0x1f, 0x00, 0x90, 0xdf, 0x1f, 0x01, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x09,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x3a, 0x08, 0x88, 0xa0, 0x1f, 0x00, 0xe8,
0xa0, 0x1f, 0x01, 0x22, 0xce, 0x05, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c,
0xa0, 0x1f, 0x01, 0x22, 0xfe, 0x05, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c,
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64,
0x12, 0x4a, 0x0a, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18,
@@ -8364,7 +8514,10 @@ var file_cosmos_group_v1_types_proto_rawDesc = []byte{
0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x08,
0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x04,
0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x14,
0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18,
0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x3a, 0x04,
0x88, 0xa0, 0x1f, 0x00, 0x22, 0x9d, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x79, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x79, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e,
+7
View File
@@ -83,11 +83,18 @@ message Proposal {
string metadata = 10;
// title is the title of the proposal
//
// Since: cosmos-sdk 0.47
string title = 11;
// summary is a short summary of the proposal
//
// Since: cosmos-sdk 0.47
string summary = 12;
// Proposer is the address of the proposal sumbitter
//
// Since: cosmos-sdk 0.47
string proposer = 13 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}
+4
View File
@@ -58,9 +58,13 @@ message MsgSubmitProposal {
string metadata = 4;
// title is the title of the proposal.
//
// Since: cosmos-sdk 0.47
string title = 5;
// summary is the summary of the proposal
//
// Since: cosmos-sdk 0.47
string summary = 6;
}
+10 -5
View File
@@ -81,7 +81,6 @@ message MsgCreateGroup {
// MsgCreateGroupResponse is the Msg/CreateGroup response type.
message MsgCreateGroupResponse {
// group_id is the unique ID of the newly created group.
uint64 group_id = 1;
}
@@ -167,7 +166,6 @@ message MsgCreateGroupPolicy {
// MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type.
message MsgCreateGroupPolicyResponse {
// address is the account address of the newly created group policy.
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}
@@ -218,7 +216,6 @@ message MsgCreateGroupWithPolicy {
// MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy response type.
message MsgCreateGroupWithPolicyResponse {
// group_id is the unique ID of the newly created group with policy.
uint64 group_id = 1;
@@ -270,7 +267,6 @@ message MsgUpdateGroupPolicyMetadataResponse {}
// Exec defines modes of execution of a proposal on creation or on new vote.
enum Exec {
// An empty value means that there should be a separate
// MsgExec request for the proposal to execute.
EXEC_UNSPECIFIED = 0;
@@ -306,11 +302,20 @@ message MsgSubmitProposal {
// whether it should be executed immediately on creation or not.
// If so, proposers signatures are considered as Yes votes.
Exec exec = 5;
// title is the title of the proposal.
//
// Since: cosmos-sdk 0.47
string title = 6;
// summary is the summary of the proposal.
//
// Since: cosmos-sdk 0.47
string summary = 7;
}
// MsgSubmitProposalResponse is the Msg/SubmitProposal response type.
message MsgSubmitProposalResponse {
// proposal is the unique ID of the proposal.
uint64 proposal_id = 1;
}
+10 -5
View File
@@ -15,7 +15,6 @@ import "amino/amino.proto";
// Member represents a group member with an account address,
// non-zero weight, metadata and added_at timestamp.
message Member {
// address is the member's account address.
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
@@ -34,7 +33,6 @@ message Member {
// Contrary to `Member`, it doesn't have any `added_at` field
// since this field cannot be set as part of requests.
message MemberRequest {
// address is the member's account address.
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
@@ -126,7 +124,6 @@ enum VoteOption {
// GroupInfo represents the high-level on-chain information for a group.
message GroupInfo {
// id is the unique ID of the group.
uint64 id = 1;
@@ -152,7 +149,6 @@ message GroupInfo {
// GroupMember represents the relationship between a group and a member.
message GroupMember {
// group_id is the unique ID of the group.
uint64 group_id = 1;
@@ -244,6 +240,16 @@ message Proposal {
// messages is a list of `sdk.Msg`s that will be executed if the proposal passes.
repeated google.protobuf.Any messages = 12;
// title is the title of the proposal
//
// Since: cosmos-sdk 0.47
string title = 13;
// summary is a short summary of the proposal
//
// Since: cosmos-sdk 0.47
string summary = 14;
}
// ProposalStatus defines proposal statuses.
@@ -309,7 +315,6 @@ message TallyResult {
// Vote represents a vote for a proposal.
message Vote {
// proposal is the unique ID of the proposal.
uint64 proposal_id = 1;
+1 -1
View File
@@ -781,7 +781,7 @@ func (s *E2ETestSuite) TestTallyResult() {
s.createCLIProposal(
s.groupPolicies[0].Address, val.Address.String(),
s.groupPolicies[0].Address, val.Address.String(),
""),
"", "title", "summary"),
},
commonFlags...,
),
+17 -13
View File
@@ -156,7 +156,7 @@ func (s *E2ETestSuite) SetupSuite() {
s.createCLIProposal(
s.groupPolicies[0].Address, val.Address.String(),
s.groupPolicies[0].Address, val.Address.String(),
""),
"", "title", "summary"),
},
s.commonFlags...,
),
@@ -1464,6 +1464,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() {
s.groupPolicies[0].Address, val.Address.String(),
s.groupPolicies[0].Address, val.Address.String(),
"",
"title", "summary",
),
},
s.commonFlags...,
@@ -1481,6 +1482,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() {
s.groupPolicies[0].Address, val.Address.String(),
s.groupPolicies[0].Address, val.Address.String(),
"",
"title", "summary",
),
fmt.Sprintf("--%s=try", client.FlagExec),
},
@@ -1498,7 +1500,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() {
s.createCLIProposal(
s.groupPolicies[3].Address, val.Address.String(),
s.groupPolicies[3].Address, val.Address.String(),
""),
"", "title", "summary"),
fmt.Sprintf("--%s=try", client.FlagExec),
},
s.commonFlags...,
@@ -1515,7 +1517,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() {
s.createCLIProposal(
s.groupPolicies[0].Address, val.Address.String(),
s.groupPolicies[0].Address, val.Address.String(),
"",
"", "title", "summary",
),
fmt.Sprintf("--%s=%s", flags.FlagSignMode, flags.SignModeLegacyAminoJSON),
},
@@ -1533,7 +1535,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() {
s.createCLIProposal(
s.groupPolicies[0].Address, val.Address.String(),
s.groupPolicies[0].Address, val.Address.String(),
tooLongMetadata,
tooLongMetadata, "title", "summary",
),
},
s.commonFlags...,
@@ -1550,7 +1552,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() {
s.createCLIProposal(
s.groupPolicies[0].Address, val.Address.String(),
val.Address.String(), s.groupPolicies[0].Address,
""),
"", "title", "summary"),
},
s.commonFlags...,
),
@@ -1566,7 +1568,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() {
s.createCLIProposal(
s.groupPolicies[0].Address, "invalid",
s.groupPolicies[0].Address, val.Address.String(),
"",
"", "title", "summary",
),
},
s.commonFlags...,
@@ -1583,7 +1585,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() {
s.createCLIProposal(
"invalid", val.Address.String(),
s.groupPolicies[0].Address, val.Address.String(),
"",
"", "title", "summary",
),
},
s.commonFlags...,
@@ -1600,7 +1602,7 @@ func (s *E2ETestSuite) TestTxSubmitProposal() {
s.createCLIProposal(
val.Address.String(), val.Address.String(),
s.groupPolicies[0].Address, val.Address.String(),
"",
"", "title", "summary",
),
},
s.commonFlags...,
@@ -1654,7 +1656,7 @@ func (s *E2ETestSuite) TestTxVote() {
s.createCLIProposal(
groupPolicyAddress, accounts[0],
groupPolicyAddress, accounts[0],
"",
"", "title", "summary",
),
},
s.commonFlags...,
@@ -1848,7 +1850,7 @@ func (s *E2ETestSuite) TestTxWithdrawProposal() {
s.createCLIProposal(
s.groupPolicies[1].Address, val.Address.String(),
s.groupPolicies[1].Address, val.Address.String(),
""),
"", "title", "summary"),
},
s.commonFlags...,
),
@@ -1995,7 +1997,7 @@ func (s *E2ETestSuite) TestTxExec() {
s.createCLIProposal(
s.groupPolicies[0].Address, val.Address.String(),
s.groupPolicies[0].Address, val.Address.String(),
"",
"", "title", "summary",
),
},
s.commonFlags...,
@@ -2421,7 +2423,7 @@ func (s *E2ETestSuite) TestExecProposalsWhenMemberLeavesOrIsUpdated() {
proposal := s.createCLIProposal(
groupPolicyAddress, tc.members[0],
groupPolicyAddress, tc.members[0],
"",
"", "title", "summary",
)
submitProposalArgs := append([]string{
proposal,
@@ -2500,7 +2502,7 @@ func (s *E2ETestSuite) getGroupIDFromTxResponse(txResp sdk.TxResponse) string {
// createCLIProposal writes a CLI proposal with a MsgSend to a file. Returns
// the path to the JSON file.
func (s *E2ETestSuite) createCLIProposal(groupPolicyAddress, proposer, sendFrom, sendTo, metadata string) string {
func (s *E2ETestSuite) createCLIProposal(groupPolicyAddress, proposer, sendFrom, sendTo, metadata, title, summary string) string {
_, err := base64.StdEncoding.DecodeString(metadata)
s.Require().NoError(err)
@@ -2517,6 +2519,8 @@ func (s *E2ETestSuite) createCLIProposal(groupPolicyAddress, proposer, sendFrom,
Messages: []json.RawMessage{msgJSON},
Metadata: metadata,
Proposers: []string{proposer},
Title: title,
Summary: summary,
}
bz, err := json.Marshal(&p)
+1 -1
View File
@@ -1156,7 +1156,7 @@ where `proposal.json` contains:
```
:::note
By default the metadata and the proposal are both limited by 255 characters, this can be overridden by the application developer.
By default the metadata, summary and title are both limited by 255 characters, this can be overridden by the application developer.
:::
##### submit-legacy-proposal
+6
View File
@@ -24,6 +24,12 @@ func (keeper Keeper) SubmitProposal(ctx sdk.Context, messages []sdk.Msg, metadat
return v1.Proposal{}, err
}
// assert title is no longer than predefined max length of metadata
err = keeper.assertMetadataLength(title)
if err != nil {
return v1.Proposal{}, err
}
// Will hold a comma-separated string of all Msg type URLs.
msgsStr := ""
+8 -1
View File
@@ -266,9 +266,16 @@ type Proposal struct {
// metadata is any arbitrary metadata attached to the proposal.
Metadata string `protobuf:"bytes,10,opt,name=metadata,proto3" json:"metadata,omitempty"`
// title is the title of the proposal
//
// Since: cosmos-sdk 0.47
Title string `protobuf:"bytes,11,opt,name=title,proto3" json:"title,omitempty"`
// summary is a short summary of the proposal
Summary string `protobuf:"bytes,12,opt,name=summary,proto3" json:"summary,omitempty"`
//
// Since: cosmos-sdk 0.47
Summary string `protobuf:"bytes,12,opt,name=summary,proto3" json:"summary,omitempty"`
// Proposer is the address of the proposal sumbitter
//
// Since: cosmos-sdk 0.47
Proposer string `protobuf:"bytes,13,opt,name=proposer,proto3" json:"proposer,omitempty"`
}
+4
View File
@@ -45,8 +45,12 @@ type MsgSubmitProposal struct {
// metadata is any arbitrary metadata attached to the proposal.
Metadata string `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"`
// title is the title of the proposal.
//
// Since: cosmos-sdk 0.47
Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"`
// summary is the summary of the proposal
//
// Since: cosmos-sdk 0.47
Summary string `protobuf:"bytes,6,opt,name=summary,proto3" json:"summary,omitempty"`
}
+1 -1
View File
@@ -454,7 +454,7 @@ https://github.com/cosmos/cosmos-sdk/blob/v0.46.0/proto/cosmos/group/v1/tx.proto
It's expected to fail if:
* metadata length is greater than `MaxMetadataLen` config.
* metadata, title, or summary length is greater than `MaxMetadataLen` config.
* if any of the proposers is not a group member.
### Msg/WithdrawProposal
+5 -2
View File
@@ -31,7 +31,6 @@ type proposalType struct {
// Prompt the proposal type values and return the proposal and its metadata.
func (p *proposalType) Prompt(cdc codec.Codec) (*Proposal, govtypes.ProposalMetadata, error) {
proposal := &Proposal{}
// set metadata
metadata, err := govcli.Prompt(govtypes.ProposalMetadata{}, "proposal")
@@ -39,7 +38,11 @@ func (p *proposalType) Prompt(cdc codec.Codec) (*Proposal, govtypes.ProposalMeta
return nil, metadata, fmt.Errorf("failed to set proposal metadata: %w", err)
}
// the metadata must be saved on IPFS, set placeholder
proposal.Metadata = "ipfs://CID"
proposal := &Proposal{
Metadata: "ipfs://CID", // the metadata must be saved on IPFS, set placeholder
Title: metadata.Title,
Summary: metadata.Summary,
}
// set group policy address
policyAddressPrompt := promptui.Prompt{
+4
View File
@@ -565,6 +565,8 @@ Parameters:
"from_address": "cosmos1...",
"to_address": "cosmos1...",
"amount":[{"denom": "stake","amount": "10"}]
"title": "My proposal",
"summary": "This is a proposal to send 10 stake to cosmos1...",
}
],
"metadata": "4pIMOgIGx1vZGU=", // base64-encoded metadata
@@ -599,6 +601,8 @@ Parameters:
msgs,
prop.Metadata,
execFromString(execStr),
prop.Title,
prop.Summary,
)
if err != nil {
return err
+2
View File
@@ -66,6 +66,8 @@ type Proposal struct {
Messages []json.RawMessage `json:"messages,omitempty"`
Metadata string `json:"metadata"`
Proposers []string `json:"proposers,omitempty"`
Title string `json:"title"`
Summary string `json:"summary"`
}
func getCLIProposal(path string) (Proposal, error) {
+5 -1
View File
@@ -18,7 +18,9 @@ func Test_ParseCLIProposal(t *testing.T) {
}
],
"metadata": "4pIMOgIGx1vZGU=",
"proposers": ["cosmos15r295x4994egvckteam9skazy9kvfvzpak4naf"]
"proposers": ["cosmos15r295x4994egvckteam9skazy9kvfvzpak4naf"],
"title": "test",
"summary": "test summary"
}`)
result, err := parseCLIProposal(data)
@@ -27,4 +29,6 @@ func Test_ParseCLIProposal(t *testing.T) {
require.NotEmpty(t, result.Metadata)
require.Equal(t, result.Metadata, "4pIMOgIGx1vZGU=")
require.Equal(t, result.Proposers, []string{"cosmos15r295x4994egvckteam9skazy9kvfvzpak4naf"})
require.Equal(t, result.Title, "test")
require.Equal(t, result.Summary, "test summary")
}
+10
View File
@@ -471,6 +471,14 @@ func (k Keeper) SubmitProposal(goCtx context.Context, req *group.MsgSubmitPropos
return nil, err
}
if err := k.assertMetadataLength(req.Summary, "proposal summary"); err != nil {
return nil, err
}
if err := k.assertMetadataLength(req.Title, "proposal Title"); err != nil {
return nil, err
}
policyAcc, err := k.getGroupPolicyInfo(ctx, req.GroupPolicyAddress)
if err != nil {
return nil, sdkerrors.Wrap(err, "load group policy")
@@ -516,6 +524,8 @@ func (k Keeper) SubmitProposal(goCtx context.Context, req *group.MsgSubmitPropos
ExecutorResult: group.PROPOSAL_EXECUTOR_RESULT_NOT_RUN,
VotingPeriodEnd: ctx.BlockTime().Add(policy.GetVotingPeriod()), // The voting window begins as soon as the proposal is submitted.
FinalTallyResult: group.DefaultTallyResult(),
Title: req.Title,
Summary: req.Summary,
}
if err := m.SetMsgs(msgs); err != nil {
+11 -1
View File
@@ -562,12 +562,14 @@ func (m MsgCreateGroupPolicy) UnpackInterfaces(unpacker types.AnyUnpacker) error
var _ sdk.Msg = &MsgSubmitProposal{}
// NewMsgSubmitProposal creates a new MsgSubmitProposal.
func NewMsgSubmitProposal(address string, proposers []string, msgs []sdk.Msg, metadata string, exec Exec) (*MsgSubmitProposal, error) {
func NewMsgSubmitProposal(address string, proposers []string, msgs []sdk.Msg, metadata string, exec Exec, title, summary string) (*MsgSubmitProposal, error) {
m := &MsgSubmitProposal{
GroupPolicyAddress: address,
Proposers: proposers,
Metadata: metadata,
Exec: exec,
Title: title,
Summary: summary,
}
err := m.SetMsgs(msgs)
if err != nil {
@@ -608,6 +610,14 @@ func (m MsgSubmitProposal) ValidateBasic() error {
return sdkerrors.Wrap(err, "group policy")
}
if m.Title == "" {
return sdkerrors.Wrap(errors.ErrEmpty, "title")
}
if m.Summary == "" {
return sdkerrors.Wrap(errors.ErrEmpty, "summary")
}
if len(m.Proposers) == 0 {
return sdkerrors.Wrap(errors.ErrEmpty, "proposers")
}
+26 -2
View File
@@ -936,6 +936,8 @@ func TestMsgSubmitProposal(t *testing.T) {
"proposers required",
&group.MsgSubmitProposal{
GroupPolicyAddress: admin.String(),
Title: "Title",
Summary: "Summary",
},
true,
"proposers: value is empty",
@@ -945,10 +947,32 @@ func TestMsgSubmitProposal(t *testing.T) {
&group.MsgSubmitProposal{
GroupPolicyAddress: admin.String(),
Proposers: []string{member1.String(), member2.String()},
Title: "Title",
Summary: "Summary",
},
false,
"",
},
{
"missing title",
&group.MsgSubmitProposal{
GroupPolicyAddress: admin.String(),
Proposers: []string{member1.String(), member2.String()},
Summary: "Summary",
},
true,
"title: value is empty",
},
{
"missing summary",
&group.MsgSubmitProposal{
GroupPolicyAddress: admin.String(),
Proposers: []string{member1.String(), member2.String()},
Title: "title",
},
true,
"summary: value is empty",
},
}
for _, tc := range testCases {
@@ -975,13 +999,13 @@ func TestMsgSubmitProposalGetSignBytes(t *testing.T) {
{
"MsgSend",
[]sdk.Msg{banktypes.NewMsgSend(member1, member1, sdk.NewCoins())},
fmt.Sprintf(`{"type":"cosmos-sdk/group/MsgSubmitProposal","value":{"messages":[{"type":"cosmos-sdk/MsgSend","value":{"amount":[],"from_address":"%s","to_address":"%s"}}],"proposers":[""]}}`, member1, member1),
fmt.Sprintf(`{"type":"cosmos-sdk/group/MsgSubmitProposal","value":{"messages":[{"type":"cosmos-sdk/MsgSend","value":{"amount":[],"from_address":"%s","to_address":"%s"}}],"proposers":[""],"summary":"This is a test","title":"MsgSend"}}`, member1, member1),
},
}
for _, tc := range testcases {
t.Run(tc.name, func(t *testing.T) {
msg, err := group.NewMsgSubmitProposal(sdk.AccAddress{}.String(), []string{sdk.AccAddress{}.String()}, tc.proposal, "", group.Exec_EXEC_UNSPECIFIED)
msg, err := group.NewMsgSubmitProposal(sdk.AccAddress{}.String(), []string{sdk.AccAddress{}.String()}, tc.proposal, "", group.Exec_EXEC_UNSPECIFIED, "MsgSend", "This is a test")
require.NoError(t, err)
var bz []byte
require.NotPanics(t, func() {
+2
View File
@@ -454,6 +454,8 @@ func SimulateMsgSubmitProposal(cdc *codec.ProtoCodec, ak group.AccountKeeper, bk
GroupPolicyAddress: groupPolicyAddr,
Proposers: []string{acc.Address.String()},
Metadata: simtypes.RandStringOfLength(r, 10),
Title: "Test Proposal",
Summary: "Summary of the proposal",
}
txGen := tx.NewTxConfig(cdc, tx.DefaultSignModes)
+3 -3
View File
@@ -309,7 +309,7 @@ func (suite *SimTestSuite) TestWithdrawProposal() {
ToAddress: addr,
Amount: sdk.Coins{sdk.NewInt64Coin("token", 100)},
},
}, "", 0)
}, "", 0, "MsgSend", "this is a test proposal")
suite.Require().NoError(err)
_, err = suite.groupKeeper.SubmitProposal(ctx, proposalReq)
suite.Require().NoError(err)
@@ -376,7 +376,7 @@ func (suite *SimTestSuite) TestSimulateVote() {
ToAddress: addr,
Amount: sdk.Coins{sdk.NewInt64Coin("token", 100)},
},
}, "", 0)
}, "", 0, "MsgSend", "this is a test proposal")
suite.Require().NoError(err)
_, err = suite.groupKeeper.SubmitProposal(ctx, proposalReq)
suite.Require().NoError(err)
@@ -442,7 +442,7 @@ func (suite *SimTestSuite) TestSimulateExec() {
ToAddress: addr,
Amount: sdk.Coins{sdk.NewInt64Coin("token", 100)},
},
}, "", 0)
}, "", 0, "MsgSend", "this is a test proposal")
suite.Require().NoError(err)
proposalRes, err := suite.groupKeeper.SubmitProposal(ctx, proposalReq)
suite.Require().NoError(err)
+186 -90
View File
@@ -975,6 +975,14 @@ type MsgSubmitProposal struct {
// whether it should be executed immediately on creation or not.
// If so, proposers signatures are considered as Yes votes.
Exec Exec `protobuf:"varint,5,opt,name=exec,proto3,enum=cosmos.group.v1.Exec" json:"exec,omitempty"`
// title is the title of the proposal.
//
// Since: cosmos-sdk 0.47
Title string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"`
// summary is the summary of the proposal.
//
// Since: cosmos-sdk 0.47
Summary string `protobuf:"bytes,7,opt,name=summary,proto3" json:"summary,omitempty"`
}
func (m *MsgSubmitProposal) Reset() { *m = MsgSubmitProposal{} }
@@ -1496,96 +1504,98 @@ func init() {
func init() { proto.RegisterFile("cosmos/group/v1/tx.proto", fileDescriptor_6b8d3d629f136420) }
var fileDescriptor_6b8d3d629f136420 = []byte{
// 1413 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcd, 0x6f, 0x1b, 0x45,
0x14, 0xcf, 0xda, 0x6e, 0x3e, 0x5e, 0xa8, 0x9b, 0x6c, 0x93, 0xd6, 0xd9, 0xb6, 0x6b, 0x77, 0x9a,
0x36, 0xa9, 0x55, 0xdb, 0x8d, 0x43, 0x2b, 0x61, 0x10, 0xa8, 0x49, 0x0d, 0x0a, 0xc2, 0x10, 0x6d,
0x5b, 0x0a, 0x5c, 0xcc, 0xc6, 0xbb, 0xdd, 0xae, 0x88, 0xbd, 0xc6, 0xb3, 0x4e, 0x93, 0x1b, 0x1f,
0x17, 0xe8, 0x05, 0x24, 0xf8, 0x03, 0xe0, 0xc6, 0xb1, 0x48, 0x3d, 0x70, 0xe3, 0x86, 0xaa, 0x72,
0xa9, 0x38, 0x71, 0x42, 0xa8, 0x15, 0xea, 0x8d, 0x7f, 0x01, 0xb4, 0x33, 0xbb, 0xe3, 0x1d, 0xef,
0xae, 0xd7, 0xb1, 0x2c, 0xb8, 0x44, 0xd9, 0x79, 0xbf, 0xf7, 0xf5, 0x9b, 0x37, 0xef, 0xcd, 0x18,
0x32, 0x0d, 0x0b, 0x37, 0x2d, 0x5c, 0x32, 0x3a, 0x56, 0xb7, 0x5d, 0xda, 0x5b, 0x2b, 0xd9, 0xfb,
0xc5, 0x76, 0xc7, 0xb2, 0x2d, 0xf1, 0x18, 0x95, 0x14, 0x89, 0xa4, 0xb8, 0xb7, 0x26, 0x2d, 0x18,
0x96, 0x61, 0x11, 0x59, 0xc9, 0xf9, 0x8f, 0xc2, 0xa4, 0x25, 0x0a, 0xab, 0x53, 0x81, 0xab, 0xe3,
0x8a, 0x0c, 0xcb, 0x32, 0x76, 0xf5, 0x12, 0xf9, 0xda, 0xe9, 0xde, 0x29, 0xa9, 0xad, 0x03, 0x57,
0x74, 0x2a, 0xe0, 0xf6, 0xa0, 0xad, 0x7b, 0x7a, 0x27, 0x5d, 0x61, 0x13, 0x1b, 0x8e, 0xa8, 0x89,
0x0d, 0x57, 0x30, 0xaf, 0x36, 0xcd, 0x96, 0x55, 0x22, 0x7f, 0xe9, 0x12, 0xfa, 0x55, 0x80, 0x74,
0x0d, 0x1b, 0x9b, 0x1d, 0x5d, 0xb5, 0xf5, 0x37, 0x1c, 0x6b, 0x62, 0x11, 0x8e, 0xa8, 0x5a, 0xd3,
0x6c, 0x65, 0x84, 0x9c, 0xb0, 0x3a, 0xb3, 0x91, 0xf9, 0xed, 0x61, 0x61, 0xc1, 0x8d, 0xeb, 0x9a,
0xa6, 0x75, 0x74, 0x8c, 0x6f, 0xd8, 0x1d, 0xb3, 0x65, 0x28, 0x14, 0x26, 0x6e, 0xc2, 0x54, 0x53,
0x6f, 0xee, 0xe8, 0x1d, 0x9c, 0x49, 0xe4, 0x92, 0xab, 0xb3, 0x65, 0xb9, 0xd8, 0x97, 0x7a, 0xb1,
0x46, 0xe4, 0x8a, 0xfe, 0x71, 0x57, 0xc7, 0xf6, 0xc6, 0xcc, 0xa3, 0x3f, 0xb2, 0x13, 0x3f, 0x3c,
0x7f, 0x90, 0x17, 0x14, 0x4f, 0x53, 0x94, 0x60, 0xba, 0xa9, 0xdb, 0xaa, 0xa6, 0xda, 0x6a, 0x26,
0xe9, 0xf8, 0x55, 0xd8, 0x77, 0x65, 0xf5, 0xb3, 0xe7, 0x0f, 0xf2, 0xd4, 0xd9, 0xfd, 0xe7, 0x0f,
0xf2, 0x2e, 0x63, 0x05, 0xac, 0x7d, 0x54, 0xe2, 0x43, 0x47, 0xeb, 0x70, 0x82, 0x5f, 0x51, 0x74,
0xdc, 0xb6, 0x5a, 0x58, 0x17, 0x97, 0x60, 0x9a, 0x44, 0x53, 0x37, 0x35, 0x92, 0x57, 0x4a, 0x99,
0x22, 0xdf, 0x5b, 0x1a, 0xfa, 0x4b, 0x80, 0xc5, 0x1a, 0x36, 0x6e, 0xb5, 0x35, 0x4f, 0xab, 0xe6,
0x06, 0x75, 0x58, 0x26, 0xfc, 0x4e, 0x12, 0x9c, 0x13, 0x71, 0x1b, 0xd2, 0x34, 0xd5, 0x7a, 0x97,
0xf8, 0xc1, 0x99, 0xe4, 0x61, 0xb9, 0x3a, 0x4a, 0x0d, 0xd0, 0x38, 0x71, 0xa5, 0xc4, 0xb3, 0x92,
0xe3, 0x59, 0x09, 0x66, 0x83, 0xb2, 0x70, 0x26, 0x54, 0xe0, 0x71, 0x84, 0x7e, 0x11, 0xe0, 0x38,
0x8f, 0xb8, 0x46, 0xd2, 0x1a, 0x23, 0x0d, 0x57, 0x60, 0xa6, 0xa5, 0xdf, 0xab, 0x53, 0x73, 0xc9,
0x18, 0x73, 0xd3, 0x2d, 0xfd, 0x1e, 0x89, 0xa0, 0x52, 0xe0, 0x73, 0x95, 0x23, 0x73, 0x25, 0x70,
0x74, 0x06, 0x4e, 0x85, 0x2c, 0xb3, 0x3c, 0x7f, 0x14, 0x48, 0x99, 0x70, 0x4c, 0xd0, 0x52, 0x1b,
0x67, 0xaa, 0x83, 0x2a, 0xfa, 0x32, 0x9f, 0xcf, 0xd9, 0x01, 0x7b, 0x47, 0x35, 0x50, 0x0e, 0xe4,
0x70, 0x09, 0xcb, 0xea, 0xdb, 0x04, 0x2c, 0xf0, 0xc5, 0xbf, 0x6d, 0xed, 0x9a, 0x8d, 0x83, 0xff,
0x28, 0x27, 0x51, 0x85, 0x63, 0x9a, 0xde, 0x30, 0xb1, 0x69, 0xb5, 0xea, 0x6d, 0xe2, 0x39, 0x93,
0xca, 0x09, 0xab, 0xb3, 0xe5, 0x85, 0x22, 0xed, 0x63, 0x45, 0xaf, 0x8f, 0x15, 0xaf, 0xb5, 0x0e,
0x36, 0xd0, 0xe3, 0x87, 0x05, 0xb9, 0xbf, 0xf6, 0xaf, 0xbb, 0x06, 0x68, 0xe4, 0x4a, 0x5a, 0xe3,
0xbe, 0x2b, 0xe5, 0x2f, 0xbe, 0xcb, 0x4e, 0xf0, 0xd4, 0x65, 0x23, 0x9b, 0x01, 0xd5, 0x41, 0x0a,
0x9c, 0x0e, 0x5b, 0x67, 0x8d, 0xa1, 0x0c, 0x53, 0x2a, 0x65, 0x21, 0x96, 0x1f, 0x0f, 0x88, 0x3e,
0x4f, 0xc0, 0x12, 0xbf, 0x1b, 0xd4, 0xe8, 0x68, 0xc7, 0xe5, 0x4d, 0x58, 0xa0, 0x7c, 0x53, 0xd6,
0xea, 0x5e, 0x38, 0x89, 0x18, 0x75, 0xd1, 0xf0, 0x7b, 0x26, 0x92, 0x51, 0xcf, 0xd7, 0x3a, 0x4f,
0xea, 0x72, 0x64, 0x3d, 0xfa, 0xf2, 0x44, 0xe7, 0xe0, 0x6c, 0xa4, 0x90, 0x55, 0xe5, 0x4f, 0x49,
0xc8, 0xf0, 0xfc, 0xdf, 0x36, 0xed, 0xbb, 0x23, 0x56, 0xe6, 0x58, 0x26, 0xcd, 0x79, 0x48, 0x53,
0xba, 0xfb, 0x2a, 0xf9, 0xa8, 0xc1, 0x75, 0x82, 0x32, 0x2c, 0x72, 0xbb, 0xc2, 0xd0, 0x29, 0x82,
0x3e, 0xee, 0x23, 0x9f, 0xe9, 0xac, 0xf5, 0xe9, 0xa8, 0xd8, 0xdd, 0x89, 0x23, 0x39, 0x61, 0x75,
0x9a, 0xdf, 0x30, 0x4c, 0x8b, 0x25, 0xe4, 0xd4, 0x4c, 0x8e, 0xf9, 0xd4, 0x5c, 0x0d, 0x9e, 0x9a,
0x73, 0x91, 0xa7, 0xa6, 0xb7, 0x3b, 0xe8, 0x4b, 0x01, 0x72, 0x51, 0xc2, 0x21, 0xe6, 0xea, 0x38,
0xeb, 0x1a, 0xfd, 0x9c, 0x00, 0x14, 0x56, 0x6c, 0x7c, 0xea, 0xff, 0xeb, 0xd1, 0x0b, 0xd9, 0xc9,
0xe4, 0x98, 0x77, 0xb2, 0x12, 0xdc, 0xc9, 0x95, 0xc8, 0xa3, 0xca, 0xdb, 0x42, 0x97, 0x20, 0x1f,
0x4f, 0x20, 0x3b, 0xb6, 0x7f, 0x0b, 0xa4, 0x6d, 0x06, 0xe0, 0x23, 0x0f, 0xca, 0x71, 0x32, 0x3d,
0x68, 0xb2, 0x5e, 0x1d, 0x96, 0x1e, 0x3e, 0x1f, 0x74, 0x01, 0x96, 0x07, 0xc9, 0x7b, 0x77, 0x87,
0x04, 0xcc, 0xd7, 0xb0, 0x71, 0xa3, 0xbb, 0xd3, 0x34, 0xed, 0xed, 0x8e, 0xd5, 0xb6, 0xb0, 0xba,
0x1b, 0x99, 0x9d, 0x30, 0x42, 0x76, 0xa7, 0x61, 0xa6, 0x4d, 0xec, 0x7a, 0x6d, 0x6e, 0x46, 0xe9,
0x2d, 0x0c, 0x9c, 0xc0, 0x97, 0x1d, 0x19, 0xc6, 0xaa, 0xa1, 0xe3, 0x4c, 0x8a, 0xf4, 0xc7, 0xd0,
0xd2, 0x53, 0x18, 0x4a, 0xbc, 0x08, 0x29, 0x7d, 0x5f, 0x6f, 0x90, 0xfe, 0x94, 0x2e, 0x2f, 0x06,
0xba, 0x69, 0x75, 0x5f, 0x6f, 0x28, 0x04, 0x52, 0x79, 0xc9, 0xab, 0xbd, 0x5e, 0x30, 0x0e, 0xc1,
0xc8, 0x47, 0x30, 0x7d, 0x8c, 0x04, 0xd8, 0x41, 0xaf, 0x90, 0x69, 0xc9, 0x2f, 0xb2, 0x06, 0x92,
0x85, 0xd9, 0xb6, 0xbb, 0xd6, 0xeb, 0x21, 0xe0, 0x2d, 0x6d, 0x69, 0xe8, 0x7b, 0x7a, 0x2b, 0x75,
0x7a, 0x8f, 0xd6, 0x51, 0xef, 0x31, 0xce, 0xe3, 0x14, 0xfd, 0x93, 0x3d, 0x31, 0xe4, 0x64, 0xaf,
0x5c, 0x71, 0x32, 0xf4, 0xbe, 0xfa, 0x47, 0x21, 0xcb, 0xaf, 0x3f, 0x16, 0xf7, 0xc2, 0xd9, 0xbf,
0xcc, 0x8a, 0xe6, 0x1f, 0x01, 0xa6, 0x6a, 0xd8, 0x78, 0xd7, 0xb2, 0xe3, 0xf3, 0x75, 0x4e, 0xd6,
0x9e, 0x65, 0xeb, 0x9d, 0xd8, 0xa0, 0x29, 0x4c, 0x5c, 0x87, 0x49, 0xab, 0x6d, 0x9b, 0x16, 0x9d,
0xf7, 0xe9, 0xf2, 0xa9, 0xc0, 0x2e, 0x3a, 0x7e, 0xdf, 0x21, 0x10, 0xc5, 0x85, 0x72, 0x65, 0x94,
0xea, 0x2b, 0xa3, 0x43, 0x14, 0xc5, 0x0a, 0x39, 0x6d, 0x24, 0x0e, 0x87, 0xac, 0x4c, 0x18, 0x59,
0x8e, 0x77, 0x34, 0x0f, 0xc7, 0xdc, 0x7f, 0x19, 0x29, 0xf7, 0x29, 0x29, 0x8e, 0xb5, 0x78, 0x52,
0x5e, 0x84, 0x69, 0xc7, 0x61, 0xd7, 0xb6, 0xe2, 0x79, 0x61, 0x48, 0xfa, 0x70, 0x9c, 0xc4, 0xa6,
0xd1, 0x1a, 0x10, 0x9f, 0x13, 0x00, 0x52, 0x48, 0x7c, 0x24, 0x33, 0xaf, 0x30, 0x5f, 0x83, 0xc9,
0x8e, 0x8e, 0xbb, 0xbb, 0x36, 0x71, 0x98, 0x2e, 0xaf, 0x04, 0x88, 0xf0, 0xf6, 0xb9, 0xea, 0xfa,
0x53, 0x08, 0x5c, 0x71, 0xd5, 0xd0, 0x57, 0x02, 0x1c, 0xad, 0x61, 0xe3, 0x2d, 0x5d, 0xdd, 0x73,
0x5f, 0xd6, 0x23, 0xdc, 0x35, 0x07, 0xdc, 0xc6, 0xe9, 0x0b, 0xd0, 0x5f, 0xac, 0x72, 0x58, 0x7e,
0x3d, 0xff, 0xe8, 0x24, 0x79, 0xe8, 0xf6, 0x16, 0xbc, 0x5c, 0xf3, 0x79, 0x48, 0x91, 0x7d, 0x58,
0x80, 0xb9, 0xea, 0x7b, 0xd5, 0xcd, 0xfa, 0xad, 0xb7, 0x6f, 0x6c, 0x57, 0x37, 0xb7, 0x5e, 0xdf,
0xaa, 0x5e, 0x9f, 0x9b, 0x10, 0x5f, 0x80, 0x69, 0xb2, 0x7a, 0x53, 0x79, 0x7f, 0x4e, 0x28, 0x3f,
0x9e, 0x85, 0x64, 0x0d, 0x1b, 0xe2, 0x6d, 0x98, 0xf5, 0xff, 0x6a, 0x90, 0x0d, 0x5e, 0xc5, 0xb8,
0xbb, 0x83, 0xb4, 0x12, 0x03, 0x60, 0xc4, 0xef, 0x82, 0x18, 0xf2, 0x16, 0xbf, 0x10, 0xa6, 0x1e,
0xc4, 0x49, 0xc5, 0xe1, 0x70, 0xcc, 0xdb, 0x1d, 0x98, 0x0b, 0x3c, 0x78, 0x97, 0x63, 0x6c, 0x10,
0x94, 0x74, 0x69, 0x18, 0x14, 0xf3, 0x63, 0xc1, 0xf1, 0xb0, 0x07, 0xe7, 0x4a, 0x6c, 0xb8, 0x14,
0x28, 0x95, 0x86, 0x04, 0x32, 0x87, 0x26, 0xcc, 0x07, 0xdf, 0x82, 0xe7, 0x63, 0x36, 0x81, 0xc2,
0xa4, 0xc2, 0x50, 0x30, 0xe6, 0xaa, 0x0b, 0x8b, 0xe1, 0x17, 0xfc, 0x8b, 0x31, 0x76, 0x7a, 0x50,
0x69, 0x6d, 0x68, 0x28, 0x73, 0xbb, 0x0f, 0x27, 0x22, 0x9e, 0x60, 0xf9, 0x18, 0xb2, 0x7c, 0x58,
0xa9, 0x3c, 0x3c, 0x96, 0x79, 0xfe, 0x46, 0x80, 0x6c, 0xdc, 0x5d, 0x74, 0x7d, 0x28, 0xbb, 0xbc,
0x92, 0xf4, 0xf2, 0x08, 0x4a, 0x2c, 0xaa, 0x4f, 0x05, 0x58, 0x8a, 0xbe, 0xb1, 0x15, 0x86, 0x32,
0xcd, 0xea, 0xed, 0xca, 0xa1, 0xe0, 0x2c, 0x86, 0x0f, 0x21, 0xdd, 0x77, 0x37, 0x42, 0x61, 0x86,
0x78, 0x8c, 0x94, 0x8f, 0xc7, 0xf8, 0x0f, 0x6c, 0xe0, 0x2e, 0x10, 0x7a, 0x60, 0xfb, 0x51, 0xe1,
0x07, 0x36, 0x6a, 0x68, 0x8b, 0x1b, 0x90, 0x22, 0x03, 0x3b, 0x13, 0xa6, 0xe5, 0x48, 0xa4, 0x5c,
0x94, 0xc4, 0x6f, 0x83, 0xf4, 0xd5, 0x50, 0x1b, 0x8e, 0x24, 0xdc, 0x06, 0x37, 0x87, 0x6e, 0x02,
0xf8, 0x46, 0x88, 0x1c, 0x86, 0xef, 0xc9, 0xa5, 0x0b, 0x83, 0xe5, 0x9e, 0x55, 0xe9, 0xc8, 0x27,
0xce, 0xab, 0x78, 0xe3, 0xd5, 0x47, 0x4f, 0x65, 0xe1, 0xc9, 0x53, 0x59, 0xf8, 0xf3, 0xa9, 0x2c,
0x7c, 0xfd, 0x4c, 0x9e, 0x78, 0xf2, 0x4c, 0x9e, 0xf8, 0xfd, 0x99, 0x3c, 0xf1, 0xc1, 0xb2, 0x61,
0xda, 0x77, 0xbb, 0x3b, 0xc5, 0x86, 0xd5, 0x74, 0x7f, 0x95, 0x2e, 0xf9, 0xa6, 0xcb, 0x3e, 0x9d,
0x2f, 0x3b, 0x93, 0xe4, 0x62, 0xb9, 0xfe, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xba, 0xc2, 0xe7,
0xa7, 0x07, 0x17, 0x00, 0x00,
// 1443 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcf, 0x6f, 0x1b, 0xc5,
0x17, 0xcf, 0xda, 0xce, 0xaf, 0x97, 0x6f, 0xdd, 0x64, 0x9b, 0xb4, 0x9b, 0x6d, 0x6b, 0xbb, 0xd3,
0xb4, 0x49, 0xad, 0xc6, 0x6e, 0x9c, 0x6f, 0x2b, 0x61, 0x10, 0xa8, 0x49, 0x0d, 0x0a, 0xc2, 0x10,
0x6d, 0x5b, 0x0a, 0x5c, 0xcc, 0x26, 0xde, 0x6e, 0x57, 0x64, 0xbd, 0xc6, 0xb3, 0x4e, 0x93, 0x1b,
0x3f, 0x2e, 0xd0, 0x0b, 0x48, 0xf0, 0x07, 0xc0, 0x8d, 0x63, 0x91, 0x7a, 0xe0, 0xc6, 0x0d, 0x55,
0xe5, 0x52, 0x71, 0xe2, 0x84, 0xa0, 0x15, 0xea, 0x8d, 0x7f, 0x01, 0xb4, 0x33, 0xbb, 0xe3, 0x1d,
0xef, 0xae, 0x77, 0x6b, 0x59, 0x70, 0x89, 0xb2, 0xf3, 0x3e, 0xef, 0xd7, 0xe7, 0xbd, 0x79, 0x33,
0x63, 0x90, 0x76, 0x2d, 0x6c, 0x5a, 0xb8, 0xac, 0x77, 0xac, 0x6e, 0xbb, 0xbc, 0xbf, 0x56, 0xb6,
0x0f, 0x4a, 0xed, 0x8e, 0x65, 0x5b, 0xe2, 0x51, 0x2a, 0x29, 0x11, 0x49, 0x69, 0x7f, 0x4d, 0x9e,
0xd7, 0x2d, 0xdd, 0x22, 0xb2, 0xb2, 0xf3, 0x1f, 0x85, 0xc9, 0x8b, 0x14, 0xd6, 0xa0, 0x02, 0x57,
0xc7, 0x15, 0xe9, 0x96, 0xa5, 0xef, 0x69, 0x65, 0xf2, 0xb5, 0xd3, 0xbd, 0x5d, 0x56, 0x5b, 0x87,
0xae, 0xe8, 0x64, 0xc0, 0xed, 0x61, 0x5b, 0xf3, 0xf4, 0x4e, 0xb8, 0x42, 0x13, 0xeb, 0x8e, 0xc8,
0xc4, 0xba, 0x2b, 0x98, 0x53, 0x4d, 0xa3, 0x65, 0x95, 0xc9, 0x5f, 0xba, 0x84, 0x7e, 0x16, 0x20,
0x5b, 0xc7, 0xfa, 0x66, 0x47, 0x53, 0x6d, 0xed, 0x35, 0xc7, 0x9a, 0x58, 0x82, 0x71, 0xb5, 0x69,
0x1a, 0x2d, 0x49, 0x28, 0x08, 0x2b, 0xd3, 0x1b, 0xd2, 0x2f, 0x0f, 0x56, 0xe7, 0xdd, 0xb8, 0xae,
0x36, 0x9b, 0x1d, 0x0d, 0xe3, 0xeb, 0x76, 0xc7, 0x68, 0xe9, 0x0a, 0x85, 0x89, 0x9b, 0x30, 0x69,
0x6a, 0xe6, 0x8e, 0xd6, 0xc1, 0x52, 0xaa, 0x90, 0x5e, 0x99, 0xa9, 0xe4, 0x4a, 0x7d, 0xa9, 0x97,
0xea, 0x44, 0xae, 0x68, 0x1f, 0x76, 0x35, 0x6c, 0x6f, 0x4c, 0x3f, 0xfc, 0x2d, 0x3f, 0xf6, 0xdd,
0xb3, 0xfb, 0x45, 0x41, 0xf1, 0x34, 0x45, 0x19, 0xa6, 0x4c, 0xcd, 0x56, 0x9b, 0xaa, 0xad, 0x4a,
0x69, 0xc7, 0xaf, 0xc2, 0xbe, 0xab, 0x2b, 0x9f, 0x3c, 0xbb, 0x5f, 0xa4, 0xce, 0xee, 0x3d, 0xbb,
0x5f, 0x74, 0x19, 0x5b, 0xc5, 0xcd, 0x0f, 0xca, 0x7c, 0xe8, 0x68, 0x1d, 0x8e, 0xf3, 0x2b, 0x8a,
0x86, 0xdb, 0x56, 0x0b, 0x6b, 0xe2, 0x22, 0x4c, 0x91, 0x68, 0x1a, 0x46, 0x93, 0xe4, 0x95, 0x51,
0x26, 0xc9, 0xf7, 0x56, 0x13, 0xfd, 0x29, 0xc0, 0x42, 0x1d, 0xeb, 0x37, 0xdb, 0x4d, 0x4f, 0xab,
0xee, 0x06, 0xf5, 0xbc, 0x4c, 0xf8, 0x9d, 0xa4, 0x38, 0x27, 0xe2, 0x36, 0x64, 0x69, 0xaa, 0x8d,
0x2e, 0xf1, 0x83, 0xa5, 0xf4, 0xf3, 0x72, 0x75, 0x84, 0x1a, 0xa0, 0x71, 0xe2, 0x6a, 0x99, 0x67,
0xa5, 0xc0, 0xb3, 0x12, 0xcc, 0x06, 0xe5, 0xe1, 0x74, 0xa8, 0xc0, 0xe3, 0x08, 0xfd, 0x24, 0xc0,
0x31, 0x1e, 0x71, 0x95, 0xa4, 0x35, 0x42, 0x1a, 0x2e, 0xc3, 0x74, 0x4b, 0xbb, 0xdb, 0xa0, 0xe6,
0xd2, 0x31, 0xe6, 0xa6, 0x5a, 0xda, 0x5d, 0x12, 0x41, 0x75, 0x95, 0xcf, 0x35, 0x17, 0x99, 0x2b,
0x81, 0xa3, 0xd3, 0x70, 0x32, 0x64, 0x99, 0xe5, 0xf9, 0xbd, 0x40, 0xda, 0x84, 0x63, 0x82, 0xb6,
0xda, 0x28, 0x53, 0x1d, 0xd4, 0xd1, 0x97, 0xf8, 0x7c, 0xce, 0x0c, 0xa8, 0x1d, 0xd5, 0x40, 0x05,
0xc8, 0x85, 0x4b, 0x58, 0x56, 0x5f, 0xa7, 0x60, 0x9e, 0x6f, 0xfe, 0x6d, 0x6b, 0xcf, 0xd8, 0x3d,
0xfc, 0x97, 0x72, 0x12, 0x55, 0x38, 0xda, 0xd4, 0x76, 0x0d, 0x6c, 0x58, 0xad, 0x46, 0x9b, 0x78,
0x96, 0x32, 0x05, 0x61, 0x65, 0xa6, 0x32, 0x5f, 0xa2, 0x73, 0xac, 0xe4, 0xcd, 0xb1, 0xd2, 0xd5,
0xd6, 0xe1, 0x06, 0x7a, 0xf4, 0x60, 0x35, 0xd7, 0xdf, 0xfb, 0xd7, 0x5c, 0x03, 0x34, 0x72, 0x25,
0xdb, 0xe4, 0xbe, 0xab, 0x95, 0xcf, 0xbe, 0xc9, 0x8f, 0xf1, 0xd4, 0xe5, 0x23, 0x87, 0x01, 0xd5,
0x41, 0x0a, 0x9c, 0x0a, 0x5b, 0x67, 0x83, 0xa1, 0x02, 0x93, 0x2a, 0x65, 0x21, 0x96, 0x1f, 0x0f,
0x88, 0x3e, 0x4d, 0xc1, 0x22, 0x5f, 0x0d, 0x6a, 0x74, 0xb8, 0xed, 0xf2, 0x3a, 0xcc, 0x53, 0xbe,
0x29, 0x6b, 0x0d, 0x2f, 0x9c, 0x54, 0x8c, 0xba, 0xa8, 0xfb, 0x3d, 0x13, 0xc9, 0xb0, 0xfb, 0x6b,
0x9d, 0x27, 0x75, 0x29, 0xb2, 0x1f, 0x7d, 0x79, 0xa2, 0xb3, 0x70, 0x26, 0x52, 0xc8, 0xba, 0xf2,
0x87, 0x34, 0x48, 0x3c, 0xff, 0xb7, 0x0c, 0xfb, 0xce, 0x90, 0x9d, 0x39, 0x92, 0x93, 0xe6, 0x1c,
0x64, 0x29, 0xdd, 0x7d, 0x9d, 0x7c, 0x44, 0xe7, 0x26, 0x41, 0x05, 0x16, 0xb8, 0xaa, 0x30, 0x74,
0x86, 0xa0, 0x8f, 0xf9, 0xc8, 0x67, 0x3a, 0x6b, 0x7d, 0x3a, 0x2a, 0x76, 0x2b, 0x31, 0x5e, 0x10,
0x56, 0xa6, 0xf8, 0x82, 0x61, 0xda, 0x2c, 0x21, 0xbb, 0x66, 0x62, 0xc4, 0xbb, 0xe6, 0x4a, 0x70,
0xd7, 0x9c, 0x8d, 0xdc, 0x35, 0xbd, 0xea, 0xa0, 0xcf, 0x05, 0x28, 0x44, 0x09, 0x13, 0x9c, 0xab,
0xa3, 0xec, 0x6b, 0xf4, 0x63, 0x0a, 0x50, 0x58, 0xb3, 0xf1, 0xa9, 0xff, 0xa7, 0x5b, 0x2f, 0xa4,
0x92, 0xe9, 0x11, 0x57, 0xb2, 0x1a, 0xac, 0xe4, 0x72, 0xe4, 0x56, 0xe5, 0x6d, 0xa1, 0x8b, 0x50,
0x8c, 0x27, 0x90, 0x6d, 0xdb, 0xbf, 0x04, 0x32, 0x36, 0x03, 0xf0, 0xa1, 0x0f, 0xca, 0x51, 0x32,
0x3d, 0xe8, 0x64, 0xbd, 0x92, 0x94, 0x1e, 0x3e, 0x1f, 0x74, 0x1e, 0x96, 0x06, 0xc9, 0x19, 0x31,
0x7f, 0xa4, 0x60, 0xae, 0x8e, 0xf5, 0xeb, 0xdd, 0x1d, 0xd3, 0xb0, 0xb7, 0x3b, 0x56, 0xdb, 0xc2,
0xea, 0x5e, 0x64, 0x76, 0xc2, 0x10, 0xd9, 0x9d, 0x82, 0xe9, 0x36, 0xb1, 0xeb, 0x8d, 0xb9, 0x69,
0xa5, 0xb7, 0x30, 0xf0, 0x04, 0xbe, 0xe4, 0xc8, 0x30, 0x56, 0x75, 0x0d, 0x4b, 0x19, 0x32, 0x1f,
0x43, 0x5b, 0x4f, 0x61, 0x28, 0xf1, 0x02, 0x64, 0xb4, 0x03, 0x6d, 0x97, 0xcc, 0xa7, 0x6c, 0x65,
0x21, 0x30, 0x4d, 0x6b, 0x07, 0xda, 0xae, 0x42, 0x20, 0xe2, 0x3c, 0x8c, 0xdb, 0x86, 0xbd, 0xa7,
0x91, 0xf1, 0x34, 0xad, 0xd0, 0x0f, 0x51, 0x82, 0x49, 0xdc, 0x35, 0x4d, 0xb5, 0x73, 0x28, 0x4d,
0x92, 0x75, 0xef, 0xb3, 0xfa, 0x82, 0xd7, 0xab, 0xbd, 0xe0, 0x9d, 0x82, 0x20, 0x5f, 0x41, 0xe8,
0xe3, 0x25, 0xc0, 0x26, 0x7a, 0x89, 0x9c, 0xae, 0xfc, 0x22, 0x1b, 0x38, 0x79, 0x98, 0x69, 0xbb,
0x6b, 0xbd, 0x99, 0x03, 0xde, 0xd2, 0x56, 0x13, 0x7d, 0x4b, 0x6f, 0xb1, 0xce, 0xac, 0x6a, 0x76,
0xd4, 0xbb, 0xac, 0x46, 0x71, 0x8a, 0xfe, 0x9b, 0x40, 0x2a, 0xe1, 0x4d, 0xa0, 0x7a, 0xd9, 0xc9,
0xd0, 0xfb, 0xea, 0x3f, 0x3a, 0x59, 0x7e, 0xfd, 0xb1, 0xb8, 0x17, 0xd4, 0xfe, 0x65, 0xd6, 0x64,
0x7f, 0x0b, 0x30, 0x59, 0xc7, 0xfa, 0xdb, 0x96, 0x1d, 0x9f, 0xaf, 0xb3, 0x13, 0xf7, 0x2d, 0x5b,
0xeb, 0xc4, 0x06, 0x4d, 0x61, 0xe2, 0x3a, 0x4c, 0x58, 0x6d, 0xdb, 0xb0, 0xe8, 0xfd, 0x20, 0x5b,
0x39, 0x19, 0xa8, 0xba, 0xe3, 0xf7, 0x2d, 0x02, 0x51, 0x5c, 0x28, 0xd7, 0x76, 0x99, 0xbe, 0xb6,
0x4b, 0xde, 0x44, 0xd5, 0x65, 0xb2, 0x3b, 0x49, 0x1c, 0x0e, 0x59, 0x52, 0x18, 0x59, 0x8e, 0x77,
0x34, 0x07, 0x47, 0xdd, 0x7f, 0x19, 0x29, 0xf7, 0x28, 0x29, 0x8e, 0xb5, 0x78, 0x52, 0xfe, 0x0f,
0x53, 0x8e, 0xc3, 0xae, 0x6d, 0xc5, 0xf3, 0xc2, 0x90, 0xf4, 0xa1, 0x39, 0x81, 0x0d, 0xbd, 0x35,
0x20, 0x3e, 0x27, 0x00, 0xa4, 0x90, 0xf8, 0x48, 0x66, 0x5e, 0x63, 0xbe, 0x02, 0x13, 0x1d, 0x0d,
0x77, 0xf7, 0x6c, 0xe2, 0x30, 0x5b, 0x59, 0x0e, 0x10, 0xe1, 0xd5, 0xb9, 0xe6, 0xfa, 0x53, 0x08,
0x5c, 0x71, 0xd5, 0xd0, 0x17, 0x02, 0x1c, 0xa9, 0x63, 0xfd, 0x0d, 0x4d, 0xdd, 0x77, 0x5f, 0xe2,
0x43, 0xdc, 0x4d, 0x07, 0xdc, 0xde, 0xe9, 0x8b, 0xd1, 0xdf, 0xac, 0xb9, 0xb0, 0xfc, 0x7a, 0xfe,
0xd1, 0x09, 0xf2, 0x30, 0xee, 0x2d, 0x78, 0xb9, 0x16, 0x8b, 0x90, 0xa9, 0xd1, 0xa1, 0x30, 0x5b,
0x7b, 0xa7, 0xb6, 0xd9, 0xb8, 0xf9, 0xe6, 0xf5, 0xed, 0xda, 0xe6, 0xd6, 0xab, 0x5b, 0xb5, 0x6b,
0xb3, 0x63, 0xe2, 0xff, 0x60, 0x8a, 0xac, 0xde, 0x50, 0xde, 0x9d, 0x15, 0x2a, 0x8f, 0x66, 0x20,
0x5d, 0xc7, 0xba, 0x78, 0x0b, 0x66, 0xfc, 0xbf, 0x32, 0xe4, 0x83, 0x57, 0x37, 0xee, 0xae, 0x21,
0x2f, 0xc7, 0x00, 0x18, 0xf1, 0x7b, 0x20, 0x86, 0xbc, 0xdd, 0xcf, 0x87, 0xa9, 0x07, 0x71, 0x72,
0x29, 0x19, 0x8e, 0x79, 0xbb, 0x0d, 0xb3, 0x81, 0x07, 0xf2, 0x52, 0x8c, 0x0d, 0x82, 0x92, 0x2f,
0x26, 0x41, 0x31, 0x3f, 0x16, 0x1c, 0x0b, 0x7b, 0xa0, 0x2e, 0xc7, 0x86, 0x4b, 0x81, 0x72, 0x39,
0x21, 0x90, 0x39, 0x34, 0x60, 0x2e, 0xf8, 0x76, 0x3c, 0x17, 0x53, 0x04, 0x0a, 0x93, 0x57, 0x13,
0xc1, 0x98, 0xab, 0x2e, 0x2c, 0x84, 0x3f, 0x08, 0x2e, 0xc4, 0xd8, 0xe9, 0x41, 0xe5, 0xb5, 0xc4,
0x50, 0xe6, 0xf6, 0x00, 0x8e, 0x47, 0x3c, 0xd9, 0x8a, 0x31, 0x64, 0xf9, 0xb0, 0x72, 0x25, 0x39,
0x96, 0x79, 0xfe, 0x4a, 0x80, 0x7c, 0xdc, 0xdd, 0x75, 0x3d, 0x91, 0x5d, 0x5e, 0x49, 0x7e, 0x71,
0x08, 0x25, 0x16, 0xd5, 0xc7, 0x02, 0x2c, 0x46, 0xdf, 0xf0, 0x56, 0x13, 0x99, 0x66, 0xfd, 0x76,
0xf9, 0xb9, 0xe0, 0x2c, 0x86, 0xf7, 0x21, 0xdb, 0x77, 0x97, 0x42, 0x61, 0x86, 0x78, 0x8c, 0x5c,
0x8c, 0xc7, 0xf8, 0x37, 0x6c, 0xe0, 0x2e, 0x10, 0xba, 0x61, 0xfb, 0x51, 0xe1, 0x1b, 0x36, 0xea,
0xd0, 0x16, 0x37, 0x20, 0x43, 0x0e, 0x6c, 0x29, 0x4c, 0xcb, 0x91, 0xc8, 0x85, 0x28, 0x89, 0xdf,
0x06, 0x99, 0xab, 0xa1, 0x36, 0x1c, 0x49, 0xb8, 0x0d, 0xee, 0x1c, 0xba, 0x01, 0xe0, 0x3b, 0x42,
0x72, 0x61, 0xf8, 0x9e, 0x5c, 0x3e, 0x3f, 0x58, 0xee, 0x59, 0x95, 0xc7, 0x3f, 0x72, 0x5e, 0xd1,
0x1b, 0x2f, 0x3f, 0x7c, 0x92, 0x13, 0x1e, 0x3f, 0xc9, 0x09, 0xbf, 0x3f, 0xc9, 0x09, 0x5f, 0x3e,
0xcd, 0x8d, 0x3d, 0x7e, 0x9a, 0x1b, 0xfb, 0xf5, 0x69, 0x6e, 0xec, 0xbd, 0x25, 0xdd, 0xb0, 0xef,
0x74, 0x77, 0x4a, 0xbb, 0x96, 0xe9, 0xfe, 0x8a, 0x5d, 0xf6, 0x9d, 0x2e, 0x07, 0xf4, 0x7c, 0xd9,
0x99, 0x20, 0x17, 0xd1, 0xf5, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x4d, 0x77, 0x54, 0x7d, 0x37,
0x17, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -2870,6 +2880,20 @@ func (m *MsgSubmitProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if len(m.Summary) > 0 {
i -= len(m.Summary)
copy(dAtA[i:], m.Summary)
i = encodeVarintTx(dAtA, i, uint64(len(m.Summary)))
i--
dAtA[i] = 0x3a
}
if len(m.Title) > 0 {
i -= len(m.Title)
copy(dAtA[i:], m.Title)
i = encodeVarintTx(dAtA, i, uint64(len(m.Title)))
i--
dAtA[i] = 0x32
}
if m.Exec != 0 {
i = encodeVarintTx(dAtA, i, uint64(m.Exec))
i--
@@ -3538,6 +3562,14 @@ func (m *MsgSubmitProposal) Size() (n int) {
if m.Exec != 0 {
n += 1 + sovTx(uint64(m.Exec))
}
l = len(m.Title)
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
l = len(m.Summary)
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
return n
}
@@ -5798,6 +5830,70 @@ func (m *MsgSubmitProposal) Unmarshal(dAtA []byte) error {
break
}
}
case 6:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
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 ErrInvalidLengthTx
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Title = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 7:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Summary", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
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 ErrInvalidLengthTx
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Summary = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTx(dAtA[iNdEx:])
+181 -85
View File
@@ -725,6 +725,14 @@ type Proposal struct {
ExecutorResult ProposalExecutorResult `protobuf:"varint,11,opt,name=executor_result,json=executorResult,proto3,enum=cosmos.group.v1.ProposalExecutorResult" json:"executor_result,omitempty"`
// messages is a list of `sdk.Msg`s that will be executed if the proposal passes.
Messages []*types.Any `protobuf:"bytes,12,rep,name=messages,proto3" json:"messages,omitempty"`
// title is the title of the proposal
//
// Since: cosmos-sdk 0.47
Title string `protobuf:"bytes,13,opt,name=title,proto3" json:"title,omitempty"`
// summary is a short summary of the proposal
//
// Since: cosmos-sdk 0.47
Summary string `protobuf:"bytes,14,opt,name=summary,proto3" json:"summary,omitempty"`
}
func (m *Proposal) Reset() { *m = Proposal{} }
@@ -907,91 +915,93 @@ func init() {
func init() { proto.RegisterFile("cosmos/group/v1/types.proto", fileDescriptor_f5bddd15d7a54a9d) }
var fileDescriptor_f5bddd15d7a54a9d = []byte{
// 1342 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcd, 0x6f, 0x1a, 0xc7,
0x1b, 0x66, 0x01, 0xf3, 0xf1, 0x62, 0x03, 0x99, 0xf8, 0x17, 0x63, 0x3b, 0x3f, 0x70, 0x49, 0xd4,
0x5a, 0xae, 0x02, 0x89, 0x23, 0xb5, 0x52, 0x0e, 0x55, 0x01, 0x6f, 0x1a, 0xac, 0x04, 0xd0, 0xee,
0x62, 0x37, 0xb9, 0xac, 0xd6, 0xec, 0x04, 0xaf, 0x0a, 0x3b, 0x74, 0x77, 0xb0, 0xc3, 0x7f, 0x10,
0xf5, 0xd2, 0x1c, 0x7b, 0xa9, 0x14, 0xa9, 0x97, 0x1e, 0x73, 0x88, 0x7a, 0xe8, 0xb1, 0xea, 0x21,
0xea, 0x21, 0x8a, 0x7a, 0xea, 0xa9, 0xad, 0xe2, 0x43, 0x7a, 0xea, 0xa9, 0xd7, 0x4a, 0xd5, 0xce,
0xcc, 0x62, 0x3e, 0x6c, 0x52, 0x47, 0x51, 0x2f, 0x96, 0x67, 0x9e, 0xe7, 0x7d, 0xe7, 0x7d, 0xde,
0x2f, 0x00, 0x56, 0x5b, 0xc4, 0xed, 0x12, 0xb7, 0xd8, 0x76, 0x48, 0xbf, 0x57, 0x3c, 0xb8, 0x56,
0xa4, 0x83, 0x1e, 0x76, 0x0b, 0x3d, 0x87, 0x50, 0x82, 0x52, 0x1c, 0x2c, 0x30, 0xb0, 0x70, 0x70,
0x6d, 0x65, 0xb1, 0x4d, 0xda, 0x84, 0x61, 0x45, 0xef, 0x3f, 0x4e, 0x5b, 0xc9, 0xb6, 0x09, 0x69,
0x77, 0x70, 0x91, 0x9d, 0xf6, 0xfa, 0xf7, 0x8b, 0x66, 0xdf, 0x31, 0xa8, 0x45, 0x6c, 0x81, 0xe7,
0x26, 0x71, 0x6a, 0x75, 0xb1, 0x4b, 0x8d, 0x6e, 0x4f, 0x10, 0x96, 0xf9, 0x3b, 0x3a, 0xf7, 0x2c,
0x1e, 0x15, 0xd0, 0xa4, 0xad, 0x61, 0x0f, 0x04, 0x74, 0xce, 0xe8, 0x5a, 0x36, 0x29, 0xb2, 0xbf,
0xfc, 0x2a, 0xff, 0x9d, 0x04, 0x91, 0x3b, 0xb8, 0xbb, 0x87, 0x1d, 0xb4, 0x09, 0x51, 0xc3, 0x34,
0x1d, 0xec, 0xba, 0x19, 0x69, 0x4d, 0x5a, 0x8f, 0x97, 0x33, 0x3f, 0x3f, 0xbd, 0xb2, 0x28, 0x7c,
0x97, 0x38, 0xa2, 0x52, 0xc7, 0xb2, 0xdb, 0x8a, 0x4f, 0x44, 0x17, 0x20, 0x72, 0x88, 0xad, 0xf6,
0x3e, 0xcd, 0x04, 0x3d, 0x13, 0x45, 0x9c, 0xd0, 0x0a, 0xc4, 0xba, 0x98, 0x1a, 0xa6, 0x41, 0x8d,
0x4c, 0x88, 0x21, 0xc3, 0x33, 0xda, 0x82, 0x98, 0x61, 0x9a, 0xd8, 0xd4, 0x0d, 0x9a, 0x09, 0xaf,
0x49, 0xeb, 0x89, 0xcd, 0x95, 0x02, 0x8f, 0xb9, 0xe0, 0xc7, 0x5c, 0xd0, 0x7c, 0xbd, 0xe5, 0x85,
0x67, 0xbf, 0xe6, 0x02, 0x8f, 0x7e, 0xcb, 0x49, 0xdf, 0xbe, 0x7a, 0xb2, 0x21, 0xb1, 0x97, 0xb1,
0x59, 0xa2, 0xf9, 0x43, 0x58, 0xe0, 0x71, 0x2b, 0xf8, 0xf3, 0x3e, 0x76, 0xe9, 0x7f, 0x15, 0x7e,
0xfe, 0x47, 0x09, 0x96, 0xb4, 0x7d, 0x07, 0xbb, 0xfb, 0xa4, 0x63, 0x6e, 0xe1, 0x96, 0xe5, 0x5a,
0xc4, 0x6e, 0x90, 0x8e, 0xd5, 0x1a, 0xa0, 0x8b, 0x10, 0xa7, 0x3e, 0xc4, 0xa3, 0x50, 0x8e, 0x2f,
0xd0, 0xc7, 0x10, 0x3d, 0xb4, 0x6c, 0x93, 0x1c, 0xba, 0xec, 0xb9, 0xc4, 0xe6, 0xbb, 0x85, 0x89,
0x76, 0x29, 0x8c, 0xfb, 0xdb, 0xe5, 0x6c, 0xc5, 0x37, 0xbb, 0x51, 0xfd, 0xe9, 0xe9, 0x95, 0xec,
0x6c, 0x9b, 0x2f, 0x5e, 0x3d, 0xd9, 0xc8, 0x73, 0xca, 0x15, 0xd7, 0xfc, 0xac, 0x78, 0x4a, 0xa8,
0xf9, 0x67, 0x12, 0x64, 0x1a, 0xd8, 0x69, 0x61, 0x9b, 0x1a, 0x6d, 0x3c, 0xa1, 0x23, 0x0b, 0xd0,
0x1b, 0x62, 0x42, 0xc8, 0xc8, 0xcd, 0x5b, 0x50, 0xb2, 0xfd, 0xef, 0x94, 0x5c, 0x1a, 0x51, 0x72,
0x5a, 0xb4, 0xf9, 0x1f, 0x24, 0xf8, 0xdf, 0x89, 0xcf, 0xa1, 0x3b, 0xb0, 0x70, 0x40, 0xa8, 0x65,
0xb7, 0xf5, 0x1e, 0x76, 0x2c, 0xc2, 0x6b, 0x92, 0xd8, 0x5c, 0x9e, 0xea, 0xb7, 0x2d, 0x31, 0x7f,
0xbc, 0xdd, 0xbe, 0x1a, 0xb6, 0xdb, 0x3c, 0x37, 0x6f, 0x30, 0x6b, 0x74, 0x0f, 0x16, 0xbb, 0x96,
0xad, 0xe3, 0x07, 0xb8, 0xd5, 0xf7, 0xd8, 0xbe, 0xd7, 0xe0, 0x19, 0xbd, 0xa2, 0xae, 0x65, 0xcb,
0xbe, 0x13, 0xee, 0x3b, 0xff, 0xa7, 0x04, 0xf1, 0x4f, 0xbc, 0x44, 0x54, 0xed, 0xfb, 0x04, 0x25,
0x21, 0x68, 0xf1, 0x68, 0xc3, 0x4a, 0xd0, 0x32, 0x51, 0x01, 0xe6, 0x0c, 0xb3, 0x6b, 0xd9, 0xbc,
0x4f, 0x67, 0xb4, 0x36, 0xa7, 0xcd, 0x9c, 0xbf, 0x0c, 0x44, 0x0f, 0xb0, 0xe3, 0x25, 0x8b, 0x8d,
0x5f, 0x58, 0xf1, 0x8f, 0xe8, 0x1d, 0x98, 0xa7, 0x84, 0x1a, 0x1d, 0x5d, 0x0c, 0xc5, 0x1c, 0xb3,
0x4c, 0xb0, 0xbb, 0x5d, 0x3e, 0x19, 0xb7, 0x00, 0x5a, 0x0e, 0x36, 0x28, 0x1f, 0xdf, 0xc8, 0x59,
0xc7, 0x37, 0x2e, 0x8c, 0x4b, 0x34, 0x7f, 0x17, 0x12, 0x4c, 0xaf, 0xd8, 0x3e, 0xcb, 0x10, 0x63,
0x7d, 0xa0, 0x0f, 0x75, 0x47, 0xd9, 0xb9, 0x6a, 0xa2, 0x22, 0x44, 0xba, 0x8c, 0x24, 0x12, 0xbd,
0x34, 0xd5, 0x6c, 0x62, 0x13, 0x08, 0x5a, 0xfe, 0xef, 0x20, 0xa4, 0x98, 0x6f, 0xde, 0x0d, 0x2c,
0xa3, 0x6f, 0xb2, 0x1e, 0x46, 0x63, 0x0a, 0x8e, 0xc7, 0x34, 0x2c, 0x48, 0xe8, 0xec, 0x05, 0x09,
0x9f, 0x5e, 0x90, 0xb9, 0xf1, 0x82, 0x18, 0x90, 0x32, 0x45, 0x63, 0xeb, 0x3d, 0xa6, 0x45, 0xa4,
0x7c, 0x71, 0x2a, 0xe5, 0x25, 0x7b, 0x50, 0xce, 0xbf, 0x7e, 0xa8, 0x94, 0xa4, 0x39, 0x3e, 0xea,
0xe3, 0x05, 0x8d, 0xbe, 0x79, 0x41, 0x6f, 0xc4, 0x1e, 0x3e, 0xce, 0x05, 0xfe, 0x78, 0x9c, 0x93,
0xf2, 0xcf, 0xe7, 0x20, 0xd6, 0x70, 0x48, 0x8f, 0xb8, 0x46, 0x67, 0xaa, 0x95, 0xb7, 0x61, 0x91,
0x27, 0x95, 0x0b, 0xd2, 0xfd, 0xaa, 0xbc, 0xae, 0xb3, 0x51, 0xfb, 0xb8, 0xa2, 0x02, 0x99, 0xd9,
0xe6, 0x1f, 0x40, 0xbc, 0xc7, 0x62, 0xc0, 0x8e, 0x9b, 0x09, 0xaf, 0x85, 0x66, 0x3a, 0x3f, 0xa6,
0xa2, 0x6d, 0x48, 0xb8, 0xfd, 0xbd, 0xae, 0x45, 0x75, 0xef, 0x43, 0x97, 0x55, 0xe4, 0x4c, 0x19,
0x01, 0x6e, 0xed, 0xe1, 0xe8, 0x12, 0x2c, 0x70, 0xad, 0x7e, 0x7d, 0x23, 0x2c, 0x0d, 0xf3, 0xec,
0x72, 0x47, 0x14, 0xf9, 0xea, 0x44, 0x42, 0x7c, 0x6e, 0x94, 0x71, 0x47, 0x65, 0xfb, 0x16, 0x1f,
0x42, 0xc4, 0xa5, 0x06, 0xed, 0xbb, 0x99, 0xd8, 0x9a, 0xb4, 0x9e, 0xdc, 0xcc, 0x4d, 0x0d, 0x84,
0x9f, 0x7d, 0x95, 0xd1, 0x14, 0x41, 0x47, 0x4d, 0x40, 0xf7, 0x2d, 0xdb, 0xe8, 0xe8, 0xd4, 0xe8,
0x74, 0x06, 0xba, 0x83, 0xdd, 0x7e, 0x87, 0x66, 0xe2, 0x4c, 0xe2, 0xc5, 0x29, 0x27, 0x9a, 0x47,
0x52, 0x18, 0xa7, 0x1c, 0xf7, 0x44, 0x72, 0x81, 0x69, 0xe6, 0x62, 0x04, 0x44, 0x4d, 0x38, 0x37,
0xb6, 0x66, 0x75, 0x6c, 0x9b, 0x19, 0x38, 0x6b, 0xe2, 0x52, 0xa3, 0xbb, 0x56, 0xb6, 0x4d, 0xd4,
0x80, 0x14, 0x5f, 0xb5, 0xc4, 0xf1, 0x43, 0x4d, 0x30, 0xbd, 0xef, 0x9d, 0xaa, 0x57, 0x16, 0x7c,
0x1e, 0x98, 0x92, 0xc4, 0x63, 0x67, 0x74, 0xd5, 0xeb, 0x17, 0xd7, 0x35, 0xda, 0xd8, 0xcd, 0xcc,
0xaf, 0x85, 0x4e, 0x1b, 0x24, 0x65, 0xc8, 0xba, 0x11, 0xf6, 0x9a, 0x3a, 0xff, 0xb5, 0x04, 0x89,
0x51, 0xc1, 0xab, 0x10, 0x1f, 0x60, 0x57, 0x6f, 0x91, 0xbe, 0x4d, 0xc5, 0xc7, 0x63, 0x6c, 0x80,
0xdd, 0x8a, 0x77, 0xf6, 0x8a, 0x6e, 0xec, 0xb9, 0xd4, 0xb0, 0x6c, 0x41, 0xe0, 0xdf, 0x2d, 0xe6,
0xc5, 0x25, 0x27, 0x2d, 0x43, 0xcc, 0x26, 0x02, 0xe7, 0x9d, 0x1b, 0xb5, 0x09, 0x87, 0xde, 0x07,
0x64, 0x13, 0xfd, 0xd0, 0xa2, 0xfb, 0xfa, 0x01, 0xa6, 0x3e, 0x89, 0x2f, 0x8d, 0x94, 0x4d, 0x76,
0x2d, 0xba, 0xbf, 0x83, 0x29, 0x27, 0x8b, 0xf8, 0xfe, 0x92, 0x20, 0xbc, 0x43, 0x28, 0x46, 0x39,
0x48, 0xf4, 0x44, 0x2a, 0x8e, 0x17, 0x29, 0xf8, 0x57, 0x7c, 0x6f, 0x1d, 0x10, 0x2a, 0x56, 0xe9,
0xcc, 0xbd, 0xc5, 0x68, 0xe8, 0x3a, 0x44, 0x48, 0xcf, 0xfb, 0x98, 0x62, 0x51, 0x26, 0x37, 0x57,
0xa7, 0x52, 0xef, 0xbd, 0x5b, 0x67, 0x14, 0x45, 0x50, 0x67, 0x2e, 0xbb, 0xb7, 0x38, 0x5e, 0x1b,
0x5f, 0x4a, 0x00, 0xc7, 0xcf, 0xa3, 0x55, 0x58, 0xda, 0xa9, 0x6b, 0xb2, 0x5e, 0x6f, 0x68, 0xd5,
0x7a, 0x4d, 0x6f, 0xd6, 0xd4, 0x86, 0x5c, 0xa9, 0xde, 0xac, 0xca, 0x5b, 0xe9, 0x00, 0x3a, 0x0f,
0xa9, 0x51, 0xf0, 0xae, 0xac, 0xa6, 0x25, 0xb4, 0x04, 0xe7, 0x47, 0x2f, 0x4b, 0x65, 0x55, 0x2b,
0x55, 0x6b, 0xe9, 0x20, 0x42, 0x90, 0x1c, 0x05, 0x6a, 0xf5, 0x74, 0x08, 0x5d, 0x84, 0xcc, 0xf8,
0x9d, 0xbe, 0x5b, 0xd5, 0x6e, 0xe9, 0x3b, 0xb2, 0x56, 0x4f, 0x87, 0x57, 0xc2, 0x0f, 0xbf, 0xc9,
0x06, 0x36, 0x9e, 0x4b, 0x90, 0x1c, 0x9f, 0x3d, 0x94, 0x83, 0xd5, 0x86, 0x52, 0x6f, 0xd4, 0xd5,
0xd2, 0x6d, 0x5d, 0xd5, 0x4a, 0x5a, 0x53, 0x9d, 0x88, 0xec, 0xff, 0xb0, 0x3c, 0x49, 0x50, 0x9b,
0xe5, 0x3b, 0x55, 0x4d, 0x93, 0xb7, 0xd2, 0x92, 0xf7, 0xec, 0x24, 0x5c, 0xaa, 0x54, 0xe4, 0x86,
0x87, 0x06, 0x4f, 0x42, 0x15, 0x79, 0x5b, 0xae, 0x78, 0x68, 0xc8, 0xcb, 0xc8, 0x94, 0x6d, 0xb9,
0xae, 0x78, 0x60, 0xf8, 0xa4, 0x77, 0x3d, 0x41, 0x5b, 0x4a, 0x69, 0xb7, 0x96, 0x9e, 0x13, 0x82,
0xbe, 0x97, 0xe0, 0xc2, 0xc9, 0xc3, 0x85, 0xd6, 0xe1, 0xf2, 0xd0, 0x5e, 0xfe, 0x54, 0xae, 0x34,
0xb5, 0xba, 0xa2, 0x2b, 0xb2, 0xda, 0xbc, 0xad, 0x4d, 0x28, 0xbc, 0x0c, 0x6b, 0xa7, 0x32, 0x6b,
0x75, 0x4d, 0x57, 0x9a, 0xb5, 0xb4, 0x34, 0x93, 0xa5, 0x36, 0x2b, 0x15, 0x59, 0x55, 0xd3, 0xc1,
0x99, 0xac, 0x9b, 0xa5, 0xea, 0xed, 0xa6, 0x22, 0xa7, 0x43, 0x3c, 0xf8, 0xf2, 0x47, 0xcf, 0x5e,
0x66, 0xa5, 0x17, 0x2f, 0xb3, 0xd2, 0xef, 0x2f, 0xb3, 0xd2, 0xa3, 0xa3, 0x6c, 0xe0, 0xc5, 0x51,
0x36, 0xf0, 0xcb, 0x51, 0x36, 0x70, 0xef, 0x72, 0xdb, 0xa2, 0xfb, 0xfd, 0xbd, 0x42, 0x8b, 0x74,
0xc5, 0xaf, 0xa7, 0xe2, 0xc8, 0x37, 0xcd, 0x07, 0xfc, 0xc7, 0xdd, 0x5e, 0x84, 0xb5, 0xe3, 0xf5,
0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xcf, 0x8f, 0x60, 0x0c, 0xf3, 0x0d, 0x00, 0x00,
// 1369 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x3b, 0x6f, 0x1b, 0xc7,
0x16, 0xd6, 0x92, 0x14, 0x1f, 0x87, 0x12, 0x49, 0x8f, 0x75, 0xad, 0x95, 0xe4, 0x4b, 0xea, 0xd2,
0xc6, 0xbd, 0x82, 0x2e, 0x4c, 0xda, 0x32, 0x90, 0x00, 0x2e, 0x82, 0x90, 0xd4, 0x3a, 0xa6, 0x60,
0x93, 0xc4, 0x72, 0x29, 0xc5, 0x6e, 0x16, 0x2b, 0xee, 0x98, 0x5a, 0x84, 0xbb, 0xc3, 0xec, 0x0e,
0x25, 0xf3, 0x1f, 0x18, 0x69, 0xe2, 0x32, 0x4d, 0x00, 0x03, 0x69, 0x52, 0xba, 0x30, 0x52, 0xa4,
0x0c, 0x52, 0x18, 0x29, 0x02, 0x23, 0x55, 0xaa, 0x24, 0xb0, 0x0b, 0xa7, 0x4a, 0x95, 0x36, 0x41,
0xb0, 0x33, 0xb3, 0x14, 0x1f, 0x12, 0x1d, 0x19, 0x46, 0x1a, 0x41, 0x33, 0xdf, 0x77, 0xce, 0x9c,
0xef, 0xbc, 0x48, 0xc2, 0x5a, 0x9b, 0x78, 0x36, 0xf1, 0x8a, 0x1d, 0x97, 0xf4, 0x7b, 0xc5, 0xc3,
0x6b, 0x45, 0x3a, 0xe8, 0x61, 0xaf, 0xd0, 0x73, 0x09, 0x25, 0x28, 0xcd, 0xc1, 0x02, 0x03, 0x0b,
0x87, 0xd7, 0x56, 0x97, 0x3a, 0xa4, 0x43, 0x18, 0x56, 0xf4, 0xff, 0xe3, 0xb4, 0xd5, 0x6c, 0x87,
0x90, 0x4e, 0x17, 0x17, 0xd9, 0x69, 0xbf, 0x7f, 0xbf, 0x68, 0xf6, 0x5d, 0x83, 0x5a, 0xc4, 0x11,
0x78, 0x6e, 0x12, 0xa7, 0x96, 0x8d, 0x3d, 0x6a, 0xd8, 0x3d, 0x41, 0x58, 0xe1, 0xef, 0xe8, 0xdc,
0xb3, 0x78, 0x54, 0x40, 0x93, 0xb6, 0x86, 0x33, 0x10, 0xd0, 0x39, 0xc3, 0xb6, 0x1c, 0x52, 0x64,
0x7f, 0xf9, 0x55, 0xfe, 0x2b, 0x09, 0xa2, 0x77, 0xb0, 0xbd, 0x8f, 0x5d, 0xb4, 0x05, 0x31, 0xc3,
0x34, 0x5d, 0xec, 0x79, 0xb2, 0xb4, 0x2e, 0x6d, 0x24, 0xca, 0xf2, 0x0f, 0x4f, 0xaf, 0x2c, 0x09,
0xdf, 0x25, 0x8e, 0x34, 0xa9, 0x6b, 0x39, 0x1d, 0x35, 0x20, 0xa2, 0x0b, 0x10, 0x3d, 0xc2, 0x56,
0xe7, 0x80, 0xca, 0x21, 0xdf, 0x44, 0x15, 0x27, 0xb4, 0x0a, 0x71, 0x1b, 0x53, 0xc3, 0x34, 0xa8,
0x21, 0x87, 0x19, 0x32, 0x3c, 0xa3, 0x6d, 0x88, 0x1b, 0xa6, 0x89, 0x4d, 0xdd, 0xa0, 0x72, 0x64,
0x5d, 0xda, 0x48, 0x6e, 0xad, 0x16, 0x78, 0xcc, 0x85, 0x20, 0xe6, 0x82, 0x16, 0xe8, 0x2d, 0x2f,
0x3e, 0xfb, 0x29, 0x37, 0xf7, 0xe8, 0xe7, 0x9c, 0xf4, 0xe5, 0xab, 0x27, 0x9b, 0x12, 0x7b, 0x19,
0x9b, 0x25, 0x9a, 0x3f, 0x82, 0x45, 0x1e, 0xb7, 0x8a, 0x3f, 0xee, 0x63, 0x8f, 0xfe, 0x53, 0xe1,
0xe7, 0xbf, 0x95, 0x60, 0x59, 0x3b, 0x70, 0xb1, 0x77, 0x40, 0xba, 0xe6, 0x36, 0x6e, 0x5b, 0x9e,
0x45, 0x9c, 0x06, 0xe9, 0x5a, 0xed, 0x01, 0xba, 0x08, 0x09, 0x1a, 0x40, 0x3c, 0x0a, 0xf5, 0xf8,
0x02, 0xbd, 0x0f, 0xb1, 0x23, 0xcb, 0x31, 0xc9, 0x91, 0xc7, 0x9e, 0x4b, 0x6e, 0xfd, 0xb7, 0x30,
0xd1, 0x2e, 0x85, 0x71, 0x7f, 0x7b, 0x9c, 0xad, 0x06, 0x66, 0x37, 0xaa, 0xdf, 0x3d, 0xbd, 0x92,
0x9d, 0x6d, 0xf3, 0xc9, 0xab, 0x27, 0x9b, 0x79, 0x4e, 0xb9, 0xe2, 0x99, 0x1f, 0x15, 0x4f, 0x09,
0x35, 0xff, 0x4c, 0x02, 0xb9, 0x81, 0xdd, 0x36, 0x76, 0xa8, 0xd1, 0xc1, 0x13, 0x3a, 0xb2, 0x00,
0xbd, 0x21, 0x26, 0x84, 0x8c, 0xdc, 0xbc, 0x05, 0x25, 0x3b, 0x7f, 0x4f, 0xc9, 0xa5, 0x11, 0x25,
0xa7, 0x45, 0x9b, 0xff, 0x46, 0x82, 0x7f, 0x9d, 0xf8, 0x1c, 0xba, 0x03, 0x8b, 0x87, 0x84, 0x5a,
0x4e, 0x47, 0xef, 0x61, 0xd7, 0x22, 0xbc, 0x26, 0xc9, 0xad, 0x95, 0xa9, 0x7e, 0xdb, 0x16, 0xf3,
0xc7, 0xdb, 0xed, 0xb3, 0x61, 0xbb, 0x2d, 0x70, 0xf3, 0x06, 0xb3, 0x46, 0xf7, 0x60, 0xc9, 0xb6,
0x1c, 0x1d, 0x3f, 0xc0, 0xed, 0xbe, 0xcf, 0x0e, 0xbc, 0x86, 0xce, 0xe8, 0x15, 0xd9, 0x96, 0xa3,
0x04, 0x4e, 0xb8, 0xef, 0xfc, 0x6f, 0x12, 0x24, 0x3e, 0xf0, 0x13, 0x51, 0x75, 0xee, 0x13, 0x94,
0x82, 0x90, 0xc5, 0xa3, 0x8d, 0xa8, 0x21, 0xcb, 0x44, 0x05, 0x98, 0x37, 0x4c, 0xdb, 0x72, 0x78,
0x9f, 0xce, 0x68, 0x6d, 0x4e, 0x9b, 0x39, 0x7f, 0x32, 0xc4, 0x0e, 0xb1, 0xeb, 0x27, 0x8b, 0x8d,
0x5f, 0x44, 0x0d, 0x8e, 0xe8, 0x3f, 0xb0, 0x40, 0x09, 0x35, 0xba, 0xba, 0x18, 0x8a, 0x79, 0x66,
0x99, 0x64, 0x77, 0x7b, 0x7c, 0x32, 0x6e, 0x01, 0xb4, 0x5d, 0x6c, 0x50, 0x3e, 0xbe, 0xd1, 0xb3,
0x8e, 0x6f, 0x42, 0x18, 0x97, 0x68, 0xfe, 0x2e, 0x24, 0x99, 0x5e, 0xb1, 0x7d, 0x56, 0x20, 0xce,
0xfa, 0x40, 0x1f, 0xea, 0x8e, 0xb1, 0x73, 0xd5, 0x44, 0x45, 0x88, 0xda, 0x8c, 0x24, 0x12, 0xbd,
0x3c, 0xd5, 0x6c, 0x62, 0x13, 0x08, 0x5a, 0xfe, 0x8f, 0x10, 0xa4, 0x99, 0x6f, 0xde, 0x0d, 0x2c,
0xa3, 0x6f, 0xb2, 0x1e, 0x46, 0x63, 0x0a, 0x8d, 0xc7, 0x34, 0x2c, 0x48, 0xf8, 0xec, 0x05, 0x89,
0x9c, 0x5e, 0x90, 0xf9, 0xf1, 0x82, 0x18, 0x90, 0x36, 0x45, 0x63, 0xeb, 0x3d, 0xa6, 0x45, 0xa4,
0x7c, 0x69, 0x2a, 0xe5, 0x25, 0x67, 0x50, 0xce, 0xbf, 0x7e, 0xa8, 0xd4, 0x94, 0x39, 0x3e, 0xea,
0xe3, 0x05, 0x8d, 0xbd, 0x79, 0x41, 0x6f, 0xc4, 0x1f, 0x3e, 0xce, 0xcd, 0xfd, 0xfa, 0x38, 0x27,
0xe5, 0xff, 0x9c, 0x87, 0x78, 0xc3, 0x25, 0x3d, 0xe2, 0x19, 0xdd, 0xa9, 0x56, 0xde, 0x81, 0x25,
0x9e, 0x54, 0x2e, 0x48, 0x0f, 0xaa, 0xf2, 0xba, 0xce, 0x46, 0x9d, 0xe3, 0x8a, 0x0a, 0x64, 0x66,
0x9b, 0xbf, 0x03, 0x89, 0x1e, 0x8b, 0x01, 0xbb, 0x9e, 0x1c, 0x59, 0x0f, 0xcf, 0x74, 0x7e, 0x4c,
0x45, 0x3b, 0x90, 0xf4, 0xfa, 0xfb, 0xb6, 0x45, 0x75, 0xff, 0x43, 0x97, 0x55, 0xe4, 0x4c, 0x19,
0x01, 0x6e, 0xed, 0xe3, 0xe8, 0x12, 0x2c, 0x72, 0xad, 0x41, 0x7d, 0xa3, 0x2c, 0x0d, 0x0b, 0xec,
0x72, 0x57, 0x14, 0xf9, 0xea, 0x44, 0x42, 0x02, 0x6e, 0x8c, 0x71, 0x47, 0x65, 0x07, 0x16, 0xef,
0x42, 0xd4, 0xa3, 0x06, 0xed, 0x7b, 0x72, 0x7c, 0x5d, 0xda, 0x48, 0x6d, 0xe5, 0xa6, 0x06, 0x22,
0xc8, 0x7e, 0x93, 0xd1, 0x54, 0x41, 0x47, 0x2d, 0x40, 0xf7, 0x2d, 0xc7, 0xe8, 0xea, 0xd4, 0xe8,
0x76, 0x07, 0xba, 0x8b, 0xbd, 0x7e, 0x97, 0xca, 0x09, 0x26, 0xf1, 0xe2, 0x94, 0x13, 0xcd, 0x27,
0xa9, 0x8c, 0x53, 0x4e, 0xf8, 0x22, 0xb9, 0xc0, 0x0c, 0x73, 0x31, 0x02, 0xa2, 0x16, 0x9c, 0x1b,
0x5b, 0xb3, 0x3a, 0x76, 0x4c, 0x19, 0xce, 0x9a, 0xb8, 0xf4, 0xe8, 0xae, 0x55, 0x1c, 0x13, 0x35,
0x20, 0xcd, 0x57, 0x2d, 0x71, 0x83, 0x50, 0x93, 0x4c, 0xef, 0xff, 0x4e, 0xd5, 0xab, 0x08, 0x3e,
0x0f, 0x4c, 0x4d, 0xe1, 0xb1, 0x33, 0xba, 0xea, 0xf7, 0x8b, 0xe7, 0x19, 0x1d, 0xec, 0xc9, 0x0b,
0xeb, 0xe1, 0xd3, 0x06, 0x49, 0x1d, 0xb2, 0xd0, 0x12, 0xcc, 0x53, 0x8b, 0x76, 0xb1, 0xbc, 0xc8,
0xda, 0x8b, 0x1f, 0xfc, 0x89, 0xf5, 0xfa, 0xb6, 0x6d, 0xb8, 0x03, 0x39, 0xc5, 0xee, 0x83, 0xe3,
0x8d, 0x88, 0x3f, 0x04, 0xf9, 0xcf, 0x25, 0x48, 0x8e, 0x26, 0x68, 0x0d, 0x12, 0x03, 0xec, 0xe9,
0x6d, 0xd2, 0x77, 0xa8, 0xf8, 0x38, 0x8d, 0x0f, 0xb0, 0x57, 0xf1, 0xcf, 0x7e, 0x93, 0x18, 0xfb,
0x1e, 0x35, 0x2c, 0x47, 0x10, 0xf8, 0x77, 0x91, 0x05, 0x71, 0xc9, 0x49, 0x2b, 0x10, 0x77, 0x88,
0xc0, 0x79, 0xa7, 0xc7, 0x1c, 0xc2, 0xa1, 0xff, 0x03, 0x72, 0x88, 0x7e, 0x64, 0xd1, 0x03, 0xfd,
0x10, 0xd3, 0x80, 0xc4, 0x97, 0x4c, 0xda, 0x21, 0x7b, 0x16, 0x3d, 0xd8, 0xc5, 0x94, 0x93, 0x45,
0x7c, 0xbf, 0x4b, 0x10, 0xd9, 0x25, 0x14, 0xa3, 0x1c, 0x24, 0x7b, 0x22, 0x75, 0xc7, 0x8b, 0x17,
0x82, 0x2b, 0xbe, 0xe7, 0x0e, 0x09, 0x15, 0xab, 0x77, 0xe6, 0x9e, 0x63, 0x34, 0x74, 0x1d, 0xa2,
0xa4, 0xe7, 0x7f, 0xac, 0xb1, 0x28, 0x53, 0x5b, 0x6b, 0x53, 0xa5, 0xf2, 0xdf, 0xad, 0x33, 0x8a,
0x2a, 0xa8, 0x33, 0x97, 0xe3, 0x5b, 0x1c, 0xc7, 0xcd, 0x4f, 0x25, 0x80, 0xe3, 0xe7, 0xd1, 0x1a,
0x2c, 0xef, 0xd6, 0x35, 0x45, 0xaf, 0x37, 0xb4, 0x6a, 0xbd, 0xa6, 0xb7, 0x6a, 0xcd, 0x86, 0x52,
0xa9, 0xde, 0xac, 0x2a, 0xdb, 0x99, 0x39, 0x74, 0x1e, 0xd2, 0xa3, 0xe0, 0x5d, 0xa5, 0x99, 0x91,
0xd0, 0x32, 0x9c, 0x1f, 0xbd, 0x2c, 0x95, 0x9b, 0x5a, 0xa9, 0x5a, 0xcb, 0x84, 0x10, 0x82, 0xd4,
0x28, 0x50, 0xab, 0x67, 0xc2, 0xe8, 0x22, 0xc8, 0xe3, 0x77, 0xfa, 0x5e, 0x55, 0xbb, 0xa5, 0xef,
0x2a, 0x5a, 0x3d, 0x13, 0x59, 0x8d, 0x3c, 0xfc, 0x22, 0x3b, 0xb7, 0xf9, 0xbd, 0x04, 0xa9, 0xf1,
0x59, 0x45, 0x39, 0x58, 0x6b, 0xa8, 0xf5, 0x46, 0xbd, 0x59, 0xba, 0xad, 0x37, 0xb5, 0x92, 0xd6,
0x6a, 0x4e, 0x44, 0xf6, 0x6f, 0x58, 0x99, 0x24, 0x34, 0x5b, 0xe5, 0x3b, 0x55, 0x4d, 0x53, 0xb6,
0x33, 0x92, 0xff, 0xec, 0x24, 0x5c, 0xaa, 0x54, 0x94, 0x86, 0x8f, 0x86, 0x4e, 0x42, 0x55, 0x65,
0x47, 0xa9, 0xf8, 0x68, 0xd8, 0xcf, 0xc8, 0x94, 0x6d, 0xb9, 0xae, 0xfa, 0x60, 0xe4, 0xa4, 0x77,
0x7d, 0x41, 0xdb, 0x6a, 0x69, 0xaf, 0x96, 0x99, 0x17, 0x82, 0xbe, 0x96, 0xe0, 0xc2, 0xc9, 0xc3,
0x88, 0x36, 0xe0, 0xf2, 0xd0, 0x5e, 0xf9, 0x50, 0xa9, 0xb4, 0xb4, 0xba, 0xaa, 0xab, 0x4a, 0xb3,
0x75, 0x5b, 0x9b, 0x50, 0x78, 0x19, 0xd6, 0x4f, 0x65, 0xd6, 0xea, 0x9a, 0xae, 0xb6, 0x6a, 0x19,
0x69, 0x26, 0xab, 0xd9, 0xaa, 0x54, 0x94, 0x66, 0x33, 0x13, 0x9a, 0xc9, 0xba, 0x59, 0xaa, 0xde,
0x6e, 0xa9, 0x4a, 0x26, 0xcc, 0x83, 0x2f, 0xbf, 0xf7, 0xec, 0x45, 0x56, 0x7a, 0xfe, 0x22, 0x2b,
0xfd, 0xf2, 0x22, 0x2b, 0x3d, 0x7a, 0x99, 0x9d, 0x7b, 0xfe, 0x32, 0x3b, 0xf7, 0xe3, 0xcb, 0xec,
0xdc, 0xbd, 0xcb, 0x1d, 0x8b, 0x1e, 0xf4, 0xf7, 0x0b, 0x6d, 0x62, 0x8b, 0x5f, 0x5b, 0xc5, 0x91,
0x6f, 0xa6, 0x0f, 0xf8, 0x8f, 0xc1, 0xfd, 0x28, 0x6b, 0xc7, 0xeb, 0x7f, 0x05, 0x00, 0x00, 0xff,
0xff, 0x98, 0xe9, 0x54, 0xdb, 0x23, 0x0e, 0x00, 0x00,
}
func (this *GroupPolicyInfo) Equal(that interface{}) bool {
@@ -1451,6 +1461,20 @@ func (m *Proposal) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if len(m.Summary) > 0 {
i -= len(m.Summary)
copy(dAtA[i:], m.Summary)
i = encodeVarintTypes(dAtA, i, uint64(len(m.Summary)))
i--
dAtA[i] = 0x72
}
if len(m.Title) > 0 {
i -= len(m.Title)
copy(dAtA[i:], m.Title)
i = encodeVarintTypes(dAtA, i, uint64(len(m.Title)))
i--
dAtA[i] = 0x6a
}
if len(m.Messages) > 0 {
for iNdEx := len(m.Messages) - 1; iNdEx >= 0; iNdEx-- {
{
@@ -1875,6 +1899,14 @@ func (m *Proposal) Size() (n int) {
n += 1 + l + sovTypes(uint64(l))
}
}
l = len(m.Title)
if l > 0 {
n += 1 + l + sovTypes(uint64(l))
}
l = len(m.Summary)
if l > 0 {
n += 1 + l + sovTypes(uint64(l))
}
return n
}
@@ -3539,6 +3571,70 @@ func (m *Proposal) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
case 13:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
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 ErrInvalidLengthTypes
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthTypes
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Title = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 14:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Summary", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
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 ErrInvalidLengthTypes
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthTypes
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Summary = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTypes(dAtA[iNdEx:])