diff --git a/.gitignore b/.gitignore index cd8d1cd..5a8a8f3 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,6 @@ dependency-graph.png # Go Workspace go.work.sum + +# testing +test-scripts diff --git a/api/minievm/evm/v1/auth.pulsar.go b/api/minievm/evm/v1/auth.pulsar.go index cdc3a06..10bc695 100644 --- a/api/minievm/evm/v1/auth.pulsar.go +++ b/api/minievm/evm/v1/auth.pulsar.go @@ -18,12 +18,14 @@ import ( var ( md_ContractAccount protoreflect.MessageDescriptor fd_ContractAccount_base_account protoreflect.FieldDescriptor + fd_ContractAccount_code_hash protoreflect.FieldDescriptor ) func init() { file_minievm_evm_v1_auth_proto_init() md_ContractAccount = File_minievm_evm_v1_auth_proto.Messages().ByName("ContractAccount") fd_ContractAccount_base_account = md_ContractAccount.Fields().ByName("base_account") + fd_ContractAccount_code_hash = md_ContractAccount.Fields().ByName("code_hash") } var _ protoreflect.Message = (*fastReflection_ContractAccount)(nil) @@ -97,6 +99,12 @@ func (x *fastReflection_ContractAccount) Range(f func(protoreflect.FieldDescript return } } + if len(x.CodeHash) != 0 { + value := protoreflect.ValueOfBytes(x.CodeHash) + if !f(fd_ContractAccount_code_hash, value) { + return + } + } } // Has reports whether a field is populated. @@ -114,6 +122,8 @@ func (x *fastReflection_ContractAccount) Has(fd protoreflect.FieldDescriptor) bo switch fd.FullName() { case "minievm.evm.v1.ContractAccount.base_account": return x.BaseAccount != nil + case "minievm.evm.v1.ContractAccount.code_hash": + return len(x.CodeHash) != 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.ContractAccount")) @@ -132,6 +142,8 @@ func (x *fastReflection_ContractAccount) Clear(fd protoreflect.FieldDescriptor) switch fd.FullName() { case "minievm.evm.v1.ContractAccount.base_account": x.BaseAccount = nil + case "minievm.evm.v1.ContractAccount.code_hash": + x.CodeHash = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.ContractAccount")) @@ -151,6 +163,9 @@ func (x *fastReflection_ContractAccount) Get(descriptor protoreflect.FieldDescri case "minievm.evm.v1.ContractAccount.base_account": value := x.BaseAccount return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "minievm.evm.v1.ContractAccount.code_hash": + value := x.CodeHash + return protoreflect.ValueOfBytes(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.ContractAccount")) @@ -173,6 +188,8 @@ func (x *fastReflection_ContractAccount) Set(fd protoreflect.FieldDescriptor, va switch fd.FullName() { case "minievm.evm.v1.ContractAccount.base_account": x.BaseAccount = value.Message().Interface().(*v1beta1.BaseAccount) + case "minievm.evm.v1.ContractAccount.code_hash": + x.CodeHash = value.Bytes() default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.ContractAccount")) @@ -198,6 +215,8 @@ func (x *fastReflection_ContractAccount) Mutable(fd protoreflect.FieldDescriptor x.BaseAccount = new(v1beta1.BaseAccount) } return protoreflect.ValueOfMessage(x.BaseAccount.ProtoReflect()) + case "minievm.evm.v1.ContractAccount.code_hash": + panic(fmt.Errorf("field code_hash of message minievm.evm.v1.ContractAccount is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.ContractAccount")) @@ -214,6 +233,8 @@ func (x *fastReflection_ContractAccount) NewField(fd protoreflect.FieldDescripto case "minievm.evm.v1.ContractAccount.base_account": m := new(v1beta1.BaseAccount) return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "minievm.evm.v1.ContractAccount.code_hash": + return protoreflect.ValueOfBytes(nil) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.ContractAccount")) @@ -287,6 +308,10 @@ func (x *fastReflection_ContractAccount) ProtoMethods() *protoiface.Methods { l = options.Size(x.BaseAccount) n += 1 + l + runtime.Sov(uint64(l)) } + l = len(x.CodeHash) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -316,6 +341,13 @@ func (x *fastReflection_ContractAccount) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.CodeHash) > 0 { + i -= len(x.CodeHash) + copy(dAtA[i:], x.CodeHash) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.CodeHash))) + i-- + dAtA[i] = 0x12 + } if x.BaseAccount != nil { encoded, err := options.Marshal(x.BaseAccount) if err != nil { @@ -415,6 +447,40 @@ func (x *fastReflection_ContractAccount) ProtoMethods() *protoiface.Methods { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field CodeHash", wireType) + } + var byteLen int + 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++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + byteLen + 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.CodeHash = append(x.CodeHash[:0], dAtA[iNdEx:postIndex]...) + if x.CodeHash == nil { + x.CodeHash = []byte{} + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -969,6 +1035,7 @@ type ContractAccount struct { unknownFields protoimpl.UnknownFields BaseAccount *v1beta1.BaseAccount `protobuf:"bytes,1,opt,name=base_account,json=baseAccount,proto3" json:"base_account,omitempty"` + CodeHash []byte `protobuf:"bytes,2,opt,name=code_hash,json=codeHash,proto3" json:"code_hash,omitempty"` } func (x *ContractAccount) Reset() { @@ -998,6 +1065,13 @@ func (x *ContractAccount) GetBaseAccount() *v1beta1.BaseAccount { return nil } +func (x *ContractAccount) GetCodeHash() []byte { + if x != nil { + return x.CodeHash + } + return nil +} + // ShorthandAccount defines an account of shorthand address // which is used to store the original long address (32bytes). // @@ -1052,40 +1126,42 @@ var file_minievm_evm_v1_auth_proto_rawDesc = []byte{ 0x0a, 0x19, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x1a, 0x11, 0x61, 0x6d, 0x69, - 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, + 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x61, 0x75, 0x74, - 0x68, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7a, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x04, 0xd0, 0xde, 0x1f, 0x01, 0x52, 0x0b, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x3a, 0x1c, 0x88, 0xa0, 0x1f, 0x00, 0x8a, 0xe7, 0xb0, 0x2a, 0x13, 0x65, 0x76, 0x6d, - 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0xa7, 0x01, 0x0a, 0x10, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x68, 0x61, 0x6e, 0x64, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x04, 0xd0, - 0xde, 0x1f, 0x01, 0x52, 0x0b, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x1d, 0x88, 0xa0, 0x1f, - 0x00, 0x8a, 0xe7, 0xb0, 0x2a, 0x14, 0x65, 0x76, 0x6d, 0x2f, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x68, - 0x61, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0xa0, 0x01, 0x0a, 0x12, 0x63, - 0x6f, 0x6d, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, - 0x31, 0x42, 0x09, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x25, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x3b, - 0x65, 0x76, 0x6d, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x4d, 0x69, - 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x45, 0x76, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x4d, - 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, - 0x4d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x4d, 0x69, 0x6e, - 0x69, 0x65, 0x76, 0x6d, 0x3a, 0x3a, 0x45, 0x76, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x97, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, + 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x42, 0x04, 0xd0, 0xde, 0x1f, 0x01, 0x52, 0x0b, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x48, 0x61, 0x73, 0x68, + 0x3a, 0x1c, 0x88, 0xa0, 0x1f, 0x00, 0x8a, 0xe7, 0xb0, 0x2a, 0x13, 0x65, 0x76, 0x6d, 0x2f, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa7, + 0x01, 0x0a, 0x10, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x68, 0x61, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x42, 0x61, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x04, 0xd0, 0xde, 0x1f, + 0x01, 0x52, 0x0b, 0x62, 0x61, 0x73, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, + 0x0a, 0x10, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, + 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x1d, 0x88, 0xa0, 0x1f, 0x00, 0x8a, + 0xe7, 0xb0, 0x2a, 0x14, 0x65, 0x76, 0x6d, 0x2f, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x68, 0x61, 0x6e, + 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0xa0, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, + 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x42, + 0x09, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x25, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, + 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x76, + 0x6d, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x4d, 0x69, 0x6e, 0x69, + 0x65, 0x76, 0x6d, 0x2e, 0x45, 0x76, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x4d, 0x69, 0x6e, + 0x69, 0x65, 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x4d, 0x69, + 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x4d, 0x69, 0x6e, 0x69, 0x65, + 0x76, 0x6d, 0x3a, 0x3a, 0x45, 0x76, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/api/minievm/evm/v1/genesis.pulsar.go b/api/minievm/evm/v1/genesis.pulsar.go index ab79d7b..670be44 100644 --- a/api/minievm/evm/v1/genesis.pulsar.go +++ b/api/minievm/evm/v1/genesis.pulsar.go @@ -13,53 +13,99 @@ import ( sync "sync" ) -var _ protoreflect.List = (*_GenesisState_3_list)(nil) +var _ protoreflect.List = (*_GenesisState_2_list)(nil) -type _GenesisState_3_list struct { +type _GenesisState_2_list struct { list *[]*GenesisKeyValue } -func (x *_GenesisState_3_list) Len() int { +func (x *_GenesisState_2_list) Len() int { if x.list == nil { return 0 } return len(*x.list) } -func (x *_GenesisState_3_list) Get(i int) protoreflect.Value { +func (x *_GenesisState_2_list) Get(i int) protoreflect.Value { return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) } -func (x *_GenesisState_3_list) Set(i int, value protoreflect.Value) { +func (x *_GenesisState_2_list) Set(i int, value protoreflect.Value) { valueUnwrapped := value.Message() concreteValue := valueUnwrapped.Interface().(*GenesisKeyValue) (*x.list)[i] = concreteValue } -func (x *_GenesisState_3_list) Append(value protoreflect.Value) { +func (x *_GenesisState_2_list) Append(value protoreflect.Value) { valueUnwrapped := value.Message() concreteValue := valueUnwrapped.Interface().(*GenesisKeyValue) *x.list = append(*x.list, concreteValue) } -func (x *_GenesisState_3_list) AppendMutable() protoreflect.Value { +func (x *_GenesisState_2_list) AppendMutable() protoreflect.Value { v := new(GenesisKeyValue) *x.list = append(*x.list, v) return protoreflect.ValueOfMessage(v.ProtoReflect()) } -func (x *_GenesisState_3_list) Truncate(n int) { +func (x *_GenesisState_2_list) Truncate(n int) { for i := n; i < len(*x.list); i++ { (*x.list)[i] = nil } *x.list = (*x.list)[:n] } -func (x *_GenesisState_3_list) NewElement() protoreflect.Value { +func (x *_GenesisState_2_list) NewElement() protoreflect.Value { v := new(GenesisKeyValue) return protoreflect.ValueOfMessage(v.ProtoReflect()) } +func (x *_GenesisState_2_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_GenesisState_3_list)(nil) + +type _GenesisState_3_list struct { + list *[][]byte +} + +func (x *_GenesisState_3_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_3_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfBytes((*x.list)[i]) +} + +func (x *_GenesisState_3_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Bytes() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_3_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Bytes() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_3_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message GenesisState at list field Erc20S as it is not of Message kind")) +} + +func (x *_GenesisState_3_list) Truncate(n int) { + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_3_list) NewElement() protoreflect.Value { + var v []byte + return protoreflect.ValueOfBytes(v) +} + func (x *_GenesisState_3_list) IsValid() bool { return x.list != nil } @@ -118,7 +164,7 @@ func (x *_GenesisState_4_list) IsValid() bool { var _ protoreflect.List = (*_GenesisState_5_list)(nil) type _GenesisState_5_list struct { - list *[]*GenesisDenomAddress + list *[]*GenesisDenomTrace } func (x *_GenesisState_5_list) Len() int { @@ -134,18 +180,18 @@ func (x *_GenesisState_5_list) Get(i int) protoreflect.Value { func (x *_GenesisState_5_list) Set(i int, value protoreflect.Value) { valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*GenesisDenomAddress) + concreteValue := valueUnwrapped.Interface().(*GenesisDenomTrace) (*x.list)[i] = concreteValue } func (x *_GenesisState_5_list) Append(value protoreflect.Value) { valueUnwrapped := value.Message() - concreteValue := valueUnwrapped.Interface().(*GenesisDenomAddress) + concreteValue := valueUnwrapped.Interface().(*GenesisDenomTrace) *x.list = append(*x.list, concreteValue) } func (x *_GenesisState_5_list) AppendMutable() protoreflect.Value { - v := new(GenesisDenomAddress) + v := new(GenesisDenomTrace) *x.list = append(*x.list, v) return protoreflect.ValueOfMessage(v.ProtoReflect()) } @@ -158,7 +204,7 @@ func (x *_GenesisState_5_list) Truncate(n int) { } func (x *_GenesisState_5_list) NewElement() protoreflect.Value { - v := new(GenesisDenomAddress) + v := new(GenesisDenomTrace) return protoreflect.ValueOfMessage(v.ProtoReflect()) } @@ -166,25 +212,133 @@ func (x *_GenesisState_5_list) IsValid() bool { return x.list != nil } +var _ protoreflect.List = (*_GenesisState_6_list)(nil) + +type _GenesisState_6_list struct { + list *[]*GenesisClassTrace +} + +func (x *_GenesisState_6_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_6_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_GenesisState_6_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*GenesisClassTrace) + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_6_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*GenesisClassTrace) + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_6_list) AppendMutable() protoreflect.Value { + v := new(GenesisClassTrace) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_6_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_6_list) NewElement() protoreflect.Value { + v := new(GenesisClassTrace) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_6_list) IsValid() bool { + return x.list != nil +} + +var _ protoreflect.List = (*_GenesisState_7_list)(nil) + +type _GenesisState_7_list struct { + list *[]*GenesisEVMBlockHash +} + +func (x *_GenesisState_7_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_GenesisState_7_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_GenesisState_7_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*GenesisEVMBlockHash) + (*x.list)[i] = concreteValue +} + +func (x *_GenesisState_7_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*GenesisEVMBlockHash) + *x.list = append(*x.list, concreteValue) +} + +func (x *_GenesisState_7_list) AppendMutable() protoreflect.Value { + v := new(GenesisEVMBlockHash) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_7_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_GenesisState_7_list) NewElement() protoreflect.Value { + v := new(GenesisEVMBlockHash) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_GenesisState_7_list) IsValid() bool { + return x.list != nil +} + var ( - md_GenesisState protoreflect.MessageDescriptor - fd_GenesisState_params protoreflect.FieldDescriptor - fd_GenesisState_state_root protoreflect.FieldDescriptor - fd_GenesisState_key_values protoreflect.FieldDescriptor - fd_GenesisState_erc20_stores protoreflect.FieldDescriptor - fd_GenesisState_denom_addresses protoreflect.FieldDescriptor - fd_GenesisState_erc20_factory protoreflect.FieldDescriptor + md_GenesisState protoreflect.MessageDescriptor + fd_GenesisState_params protoreflect.FieldDescriptor + fd_GenesisState_key_values protoreflect.FieldDescriptor + fd_GenesisState_erc20s protoreflect.FieldDescriptor + fd_GenesisState_erc20_stores protoreflect.FieldDescriptor + fd_GenesisState_denom_traces protoreflect.FieldDescriptor + fd_GenesisState_class_traces protoreflect.FieldDescriptor + fd_GenesisState_evm_block_hashes protoreflect.FieldDescriptor + fd_GenesisState_erc20_factory protoreflect.FieldDescriptor + fd_GenesisState_erc20_wrapper protoreflect.FieldDescriptor ) func init() { file_minievm_evm_v1_genesis_proto_init() md_GenesisState = File_minievm_evm_v1_genesis_proto.Messages().ByName("GenesisState") fd_GenesisState_params = md_GenesisState.Fields().ByName("params") - fd_GenesisState_state_root = md_GenesisState.Fields().ByName("state_root") fd_GenesisState_key_values = md_GenesisState.Fields().ByName("key_values") + fd_GenesisState_erc20s = md_GenesisState.Fields().ByName("erc20s") fd_GenesisState_erc20_stores = md_GenesisState.Fields().ByName("erc20_stores") - fd_GenesisState_denom_addresses = md_GenesisState.Fields().ByName("denom_addresses") + fd_GenesisState_denom_traces = md_GenesisState.Fields().ByName("denom_traces") + fd_GenesisState_class_traces = md_GenesisState.Fields().ByName("class_traces") + fd_GenesisState_evm_block_hashes = md_GenesisState.Fields().ByName("evm_block_hashes") fd_GenesisState_erc20_factory = md_GenesisState.Fields().ByName("erc20_factory") + fd_GenesisState_erc20_wrapper = md_GenesisState.Fields().ByName("erc20_wrapper") } var _ protoreflect.Message = (*fastReflection_GenesisState)(nil) @@ -258,15 +412,15 @@ func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, return } } - if len(x.StateRoot) != 0 { - value := protoreflect.ValueOfBytes(x.StateRoot) - if !f(fd_GenesisState_state_root, value) { + if len(x.KeyValues) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_2_list{list: &x.KeyValues}) + if !f(fd_GenesisState_key_values, value) { return } } - if len(x.KeyValues) != 0 { - value := protoreflect.ValueOfList(&_GenesisState_3_list{list: &x.KeyValues}) - if !f(fd_GenesisState_key_values, value) { + if len(x.Erc20S) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_3_list{list: &x.Erc20S}) + if !f(fd_GenesisState_erc20s, value) { return } } @@ -276,9 +430,21 @@ func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, return } } - if len(x.DenomAddresses) != 0 { - value := protoreflect.ValueOfList(&_GenesisState_5_list{list: &x.DenomAddresses}) - if !f(fd_GenesisState_denom_addresses, value) { + if len(x.DenomTraces) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_5_list{list: &x.DenomTraces}) + if !f(fd_GenesisState_denom_traces, value) { + return + } + } + if len(x.ClassTraces) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_6_list{list: &x.ClassTraces}) + if !f(fd_GenesisState_class_traces, value) { + return + } + } + if len(x.EvmBlockHashes) != 0 { + value := protoreflect.ValueOfList(&_GenesisState_7_list{list: &x.EvmBlockHashes}) + if !f(fd_GenesisState_evm_block_hashes, value) { return } } @@ -288,6 +454,12 @@ func (x *fastReflection_GenesisState) Range(f func(protoreflect.FieldDescriptor, return } } + if len(x.Erc20Wrapper) != 0 { + value := protoreflect.ValueOfBytes(x.Erc20Wrapper) + if !f(fd_GenesisState_erc20_wrapper, value) { + return + } + } } // Has reports whether a field is populated. @@ -305,16 +477,22 @@ func (x *fastReflection_GenesisState) Has(fd protoreflect.FieldDescriptor) bool switch fd.FullName() { case "minievm.evm.v1.GenesisState.params": return x.Params != nil - case "minievm.evm.v1.GenesisState.state_root": - return len(x.StateRoot) != 0 case "minievm.evm.v1.GenesisState.key_values": return len(x.KeyValues) != 0 + case "minievm.evm.v1.GenesisState.erc20s": + return len(x.Erc20S) != 0 case "minievm.evm.v1.GenesisState.erc20_stores": return len(x.Erc20Stores) != 0 - case "minievm.evm.v1.GenesisState.denom_addresses": - return len(x.DenomAddresses) != 0 + case "minievm.evm.v1.GenesisState.denom_traces": + return len(x.DenomTraces) != 0 + case "minievm.evm.v1.GenesisState.class_traces": + return len(x.ClassTraces) != 0 + case "minievm.evm.v1.GenesisState.evm_block_hashes": + return len(x.EvmBlockHashes) != 0 case "minievm.evm.v1.GenesisState.erc20_factory": return len(x.Erc20Factory) != 0 + case "minievm.evm.v1.GenesisState.erc20_wrapper": + return len(x.Erc20Wrapper) != 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisState")) @@ -333,16 +511,22 @@ func (x *fastReflection_GenesisState) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { case "minievm.evm.v1.GenesisState.params": x.Params = nil - case "minievm.evm.v1.GenesisState.state_root": - x.StateRoot = nil case "minievm.evm.v1.GenesisState.key_values": x.KeyValues = nil + case "minievm.evm.v1.GenesisState.erc20s": + x.Erc20S = nil case "minievm.evm.v1.GenesisState.erc20_stores": x.Erc20Stores = nil - case "minievm.evm.v1.GenesisState.denom_addresses": - x.DenomAddresses = nil + case "minievm.evm.v1.GenesisState.denom_traces": + x.DenomTraces = nil + case "minievm.evm.v1.GenesisState.class_traces": + x.ClassTraces = nil + case "minievm.evm.v1.GenesisState.evm_block_hashes": + x.EvmBlockHashes = nil case "minievm.evm.v1.GenesisState.erc20_factory": x.Erc20Factory = nil + case "minievm.evm.v1.GenesisState.erc20_wrapper": + x.Erc20Wrapper = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisState")) @@ -362,14 +546,17 @@ func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescripto case "minievm.evm.v1.GenesisState.params": value := x.Params return protoreflect.ValueOfMessage(value.ProtoReflect()) - case "minievm.evm.v1.GenesisState.state_root": - value := x.StateRoot - return protoreflect.ValueOfBytes(value) case "minievm.evm.v1.GenesisState.key_values": if len(x.KeyValues) == 0 { + return protoreflect.ValueOfList(&_GenesisState_2_list{}) + } + listValue := &_GenesisState_2_list{list: &x.KeyValues} + return protoreflect.ValueOfList(listValue) + case "minievm.evm.v1.GenesisState.erc20s": + if len(x.Erc20S) == 0 { return protoreflect.ValueOfList(&_GenesisState_3_list{}) } - listValue := &_GenesisState_3_list{list: &x.KeyValues} + listValue := &_GenesisState_3_list{list: &x.Erc20S} return protoreflect.ValueOfList(listValue) case "minievm.evm.v1.GenesisState.erc20_stores": if len(x.Erc20Stores) == 0 { @@ -377,15 +564,30 @@ func (x *fastReflection_GenesisState) Get(descriptor protoreflect.FieldDescripto } listValue := &_GenesisState_4_list{list: &x.Erc20Stores} return protoreflect.ValueOfList(listValue) - case "minievm.evm.v1.GenesisState.denom_addresses": - if len(x.DenomAddresses) == 0 { + case "minievm.evm.v1.GenesisState.denom_traces": + if len(x.DenomTraces) == 0 { return protoreflect.ValueOfList(&_GenesisState_5_list{}) } - listValue := &_GenesisState_5_list{list: &x.DenomAddresses} + listValue := &_GenesisState_5_list{list: &x.DenomTraces} + return protoreflect.ValueOfList(listValue) + case "minievm.evm.v1.GenesisState.class_traces": + if len(x.ClassTraces) == 0 { + return protoreflect.ValueOfList(&_GenesisState_6_list{}) + } + listValue := &_GenesisState_6_list{list: &x.ClassTraces} + return protoreflect.ValueOfList(listValue) + case "minievm.evm.v1.GenesisState.evm_block_hashes": + if len(x.EvmBlockHashes) == 0 { + return protoreflect.ValueOfList(&_GenesisState_7_list{}) + } + listValue := &_GenesisState_7_list{list: &x.EvmBlockHashes} return protoreflect.ValueOfList(listValue) case "minievm.evm.v1.GenesisState.erc20_factory": value := x.Erc20Factory return protoreflect.ValueOfBytes(value) + case "minievm.evm.v1.GenesisState.erc20_wrapper": + value := x.Erc20Wrapper + return protoreflect.ValueOfBytes(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisState")) @@ -408,22 +610,34 @@ func (x *fastReflection_GenesisState) Set(fd protoreflect.FieldDescriptor, value switch fd.FullName() { case "minievm.evm.v1.GenesisState.params": x.Params = value.Message().Interface().(*Params) - case "minievm.evm.v1.GenesisState.state_root": - x.StateRoot = value.Bytes() case "minievm.evm.v1.GenesisState.key_values": lv := value.List() - clv := lv.(*_GenesisState_3_list) + clv := lv.(*_GenesisState_2_list) x.KeyValues = *clv.list + case "minievm.evm.v1.GenesisState.erc20s": + lv := value.List() + clv := lv.(*_GenesisState_3_list) + x.Erc20S = *clv.list case "minievm.evm.v1.GenesisState.erc20_stores": lv := value.List() clv := lv.(*_GenesisState_4_list) x.Erc20Stores = *clv.list - case "minievm.evm.v1.GenesisState.denom_addresses": + case "minievm.evm.v1.GenesisState.denom_traces": lv := value.List() clv := lv.(*_GenesisState_5_list) - x.DenomAddresses = *clv.list + x.DenomTraces = *clv.list + case "minievm.evm.v1.GenesisState.class_traces": + lv := value.List() + clv := lv.(*_GenesisState_6_list) + x.ClassTraces = *clv.list + case "minievm.evm.v1.GenesisState.evm_block_hashes": + lv := value.List() + clv := lv.(*_GenesisState_7_list) + x.EvmBlockHashes = *clv.list case "minievm.evm.v1.GenesisState.erc20_factory": x.Erc20Factory = value.Bytes() + case "minievm.evm.v1.GenesisState.erc20_wrapper": + x.Erc20Wrapper = value.Bytes() default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisState")) @@ -453,7 +667,13 @@ func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) p if x.KeyValues == nil { x.KeyValues = []*GenesisKeyValue{} } - value := &_GenesisState_3_list{list: &x.KeyValues} + value := &_GenesisState_2_list{list: &x.KeyValues} + return protoreflect.ValueOfList(value) + case "minievm.evm.v1.GenesisState.erc20s": + if x.Erc20S == nil { + x.Erc20S = [][]byte{} + } + value := &_GenesisState_3_list{list: &x.Erc20S} return protoreflect.ValueOfList(value) case "minievm.evm.v1.GenesisState.erc20_stores": if x.Erc20Stores == nil { @@ -461,16 +681,28 @@ func (x *fastReflection_GenesisState) Mutable(fd protoreflect.FieldDescriptor) p } value := &_GenesisState_4_list{list: &x.Erc20Stores} return protoreflect.ValueOfList(value) - case "minievm.evm.v1.GenesisState.denom_addresses": - if x.DenomAddresses == nil { - x.DenomAddresses = []*GenesisDenomAddress{} + case "minievm.evm.v1.GenesisState.denom_traces": + if x.DenomTraces == nil { + x.DenomTraces = []*GenesisDenomTrace{} + } + value := &_GenesisState_5_list{list: &x.DenomTraces} + return protoreflect.ValueOfList(value) + case "minievm.evm.v1.GenesisState.class_traces": + if x.ClassTraces == nil { + x.ClassTraces = []*GenesisClassTrace{} + } + value := &_GenesisState_6_list{list: &x.ClassTraces} + return protoreflect.ValueOfList(value) + case "minievm.evm.v1.GenesisState.evm_block_hashes": + if x.EvmBlockHashes == nil { + x.EvmBlockHashes = []*GenesisEVMBlockHash{} } - value := &_GenesisState_5_list{list: &x.DenomAddresses} + value := &_GenesisState_7_list{list: &x.EvmBlockHashes} return protoreflect.ValueOfList(value) - case "minievm.evm.v1.GenesisState.state_root": - panic(fmt.Errorf("field state_root of message minievm.evm.v1.GenesisState is not mutable")) case "minievm.evm.v1.GenesisState.erc20_factory": panic(fmt.Errorf("field erc20_factory of message minievm.evm.v1.GenesisState is not mutable")) + case "minievm.evm.v1.GenesisState.erc20_wrapper": + panic(fmt.Errorf("field erc20_wrapper of message minievm.evm.v1.GenesisState is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisState")) @@ -487,19 +719,28 @@ func (x *fastReflection_GenesisState) NewField(fd protoreflect.FieldDescriptor) case "minievm.evm.v1.GenesisState.params": m := new(Params) return protoreflect.ValueOfMessage(m.ProtoReflect()) - case "minievm.evm.v1.GenesisState.state_root": - return protoreflect.ValueOfBytes(nil) case "minievm.evm.v1.GenesisState.key_values": list := []*GenesisKeyValue{} + return protoreflect.ValueOfList(&_GenesisState_2_list{list: &list}) + case "minievm.evm.v1.GenesisState.erc20s": + list := [][]byte{} return protoreflect.ValueOfList(&_GenesisState_3_list{list: &list}) case "minievm.evm.v1.GenesisState.erc20_stores": list := []*GenesisERC20Stores{} return protoreflect.ValueOfList(&_GenesisState_4_list{list: &list}) - case "minievm.evm.v1.GenesisState.denom_addresses": - list := []*GenesisDenomAddress{} + case "minievm.evm.v1.GenesisState.denom_traces": + list := []*GenesisDenomTrace{} return protoreflect.ValueOfList(&_GenesisState_5_list{list: &list}) + case "minievm.evm.v1.GenesisState.class_traces": + list := []*GenesisClassTrace{} + return protoreflect.ValueOfList(&_GenesisState_6_list{list: &list}) + case "minievm.evm.v1.GenesisState.evm_block_hashes": + list := []*GenesisEVMBlockHash{} + return protoreflect.ValueOfList(&_GenesisState_7_list{list: &list}) case "minievm.evm.v1.GenesisState.erc20_factory": return protoreflect.ValueOfBytes(nil) + case "minievm.evm.v1.GenesisState.erc20_wrapper": + return protoreflect.ValueOfBytes(nil) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisState")) @@ -573,24 +814,38 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { l = options.Size(x.Params) n += 1 + l + runtime.Sov(uint64(l)) } - l = len(x.StateRoot) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) - } if len(x.KeyValues) > 0 { for _, e := range x.KeyValues { l = options.Size(e) n += 1 + l + runtime.Sov(uint64(l)) } } + if len(x.Erc20S) > 0 { + for _, b := range x.Erc20S { + l = len(b) + n += 1 + l + runtime.Sov(uint64(l)) + } + } if len(x.Erc20Stores) > 0 { for _, e := range x.Erc20Stores { l = options.Size(e) n += 1 + l + runtime.Sov(uint64(l)) } } - if len(x.DenomAddresses) > 0 { - for _, e := range x.DenomAddresses { + if len(x.DenomTraces) > 0 { + for _, e := range x.DenomTraces { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.ClassTraces) > 0 { + for _, e := range x.ClassTraces { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if len(x.EvmBlockHashes) > 0 { + for _, e := range x.EvmBlockHashes { l = options.Size(e) n += 1 + l + runtime.Sov(uint64(l)) } @@ -599,6 +854,10 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + l = len(x.Erc20Wrapper) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -628,16 +887,55 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.Erc20Wrapper) > 0 { + i -= len(x.Erc20Wrapper) + copy(dAtA[i:], x.Erc20Wrapper) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Erc20Wrapper))) + i-- + dAtA[i] = 0x4a + } if len(x.Erc20Factory) > 0 { i -= len(x.Erc20Factory) copy(dAtA[i:], x.Erc20Factory) i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Erc20Factory))) i-- - dAtA[i] = 0x32 + dAtA[i] = 0x42 + } + if len(x.EvmBlockHashes) > 0 { + for iNdEx := len(x.EvmBlockHashes) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.EvmBlockHashes[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x3a + } } - if len(x.DenomAddresses) > 0 { - for iNdEx := len(x.DenomAddresses) - 1; iNdEx >= 0; iNdEx-- { - encoded, err := options.Marshal(x.DenomAddresses[iNdEx]) + if len(x.ClassTraces) > 0 { + for iNdEx := len(x.ClassTraces) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.ClassTraces[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x32 + } + } + if len(x.DenomTraces) > 0 { + for iNdEx := len(x.DenomTraces) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.DenomTraces[iNdEx]) if err != nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -667,6 +965,15 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { dAtA[i] = 0x22 } } + if len(x.Erc20S) > 0 { + for iNdEx := len(x.Erc20S) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.Erc20S[iNdEx]) + copy(dAtA[i:], x.Erc20S[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Erc20S[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } if len(x.KeyValues) > 0 { for iNdEx := len(x.KeyValues) - 1; iNdEx >= 0; iNdEx-- { encoded, err := options.Marshal(x.KeyValues[iNdEx]) @@ -680,16 +987,9 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { copy(dAtA[i:], encoded) i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x12 } } - if len(x.StateRoot) > 0 { - i -= len(x.StateRoot) - copy(dAtA[i:], x.StateRoot) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.StateRoot))) - i-- - dAtA[i] = 0x12 - } if x.Params != nil { encoded, err := options.Marshal(x.Params) if err != nil { @@ -791,9 +1091,9 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { iNdEx = postIndex case 2: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field StateRoot", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field KeyValues", wireType) } - var byteLen int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -803,31 +1103,31 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + if msglen < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } - postIndex := iNdEx + byteLen + postIndex := iNdEx + msglen 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.StateRoot = append(x.StateRoot[:0], dAtA[iNdEx:postIndex]...) - if x.StateRoot == nil { - x.StateRoot = []byte{} + x.KeyValues = append(x.KeyValues, &GenesisKeyValue{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.KeyValues[len(x.KeyValues)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex case 3: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field KeyValues", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Erc20S", wireType) } - var msglen int + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -837,25 +1137,23 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + byteLen |= int(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + if byteLen < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } - postIndex := iNdEx + msglen + postIndex := iNdEx + byteLen 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.KeyValues = append(x.KeyValues, &GenesisKeyValue{}) - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.KeyValues[len(x.KeyValues)-1]); err != nil { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err - } + x.Erc20S = append(x.Erc20S, make([]byte, postIndex-iNdEx)) + copy(x.Erc20S[len(x.Erc20S)-1], dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { @@ -893,7 +1191,7 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { iNdEx = postIndex case 5: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field DenomAddresses", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field DenomTraces", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -920,16 +1218,16 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.DenomAddresses = append(x.DenomAddresses, &GenesisDenomAddress{}) - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.DenomAddresses[len(x.DenomAddresses)-1]); err != nil { + x.DenomTraces = append(x.DenomTraces, &GenesisDenomTrace{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.DenomTraces[len(x.DenomTraces)-1]); err != nil { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex case 6: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Erc20Factory", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ClassTraces", wireType) } - var byteLen int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -939,30 +1237,132 @@ func (x *fastReflection_GenesisState) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + if msglen < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } - postIndex := iNdEx + byteLen + postIndex := iNdEx + msglen 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.Erc20Factory = append(x.Erc20Factory[:0], dAtA[iNdEx:postIndex]...) - if x.Erc20Factory == nil { - x.Erc20Factory = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := runtime.Skip(dAtA[iNdEx:]) - if err != nil { + x.ClassTraces = append(x.ClassTraces, &GenesisClassTrace{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ClassTraces[len(x.ClassTraces)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field EvmBlockHashes", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.EvmBlockHashes = append(x.EvmBlockHashes, &GenesisEVMBlockHash{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.EvmBlockHashes[len(x.EvmBlockHashes)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Erc20Factory", wireType) + } + var byteLen int + 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++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + byteLen + 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.Erc20Factory = append(x.Erc20Factory[:0], dAtA[iNdEx:postIndex]...) + if x.Erc20Factory == nil { + x.Erc20Factory = []byte{} + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Erc20Wrapper", wireType) + } + var byteLen int + 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++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + byteLen + 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.Erc20Wrapper = append(x.Erc20Wrapper[:0], dAtA[iNdEx:postIndex]...) + if x.Erc20Wrapper == nil { + x.Erc20Wrapper = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } if (skippy < 0) || (iNdEx+skippy) < 0 { @@ -1758,17 +2158,1014 @@ func (x *fastReflection_GenesisERC20Stores) NewField(fd protoreflect.FieldDescri if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisERC20Stores")) } - panic(fmt.Errorf("message minievm.evm.v1.GenesisERC20Stores does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message minievm.evm.v1.GenesisERC20Stores does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_GenesisERC20Stores) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in minievm.evm.v1.GenesisERC20Stores", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_GenesisERC20Stores) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisERC20Stores) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_GenesisERC20Stores) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_GenesisERC20Stores) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GenesisERC20Stores) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.Stores) > 0 { + for _, b := range x.Stores { + l = len(b) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*GenesisERC20Stores) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Stores) > 0 { + for iNdEx := len(x.Stores) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.Stores[iNdEx]) + copy(dAtA[i:], x.Stores[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Stores[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(x.Address) > 0 { + i -= len(x.Address) + copy(dAtA[i:], x.Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*GenesisERC20Stores) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire 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++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisERC20Stores: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisERC20Stores: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var byteLen int + 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++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + byteLen + 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.Address = append(x.Address[:0], dAtA[iNdEx:postIndex]...) + if x.Address == nil { + x.Address = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Stores", wireType) + } + var byteLen int + 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++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + byteLen + 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.Stores = append(x.Stores, make([]byte, postIndex-iNdEx)) + copy(x.Stores[len(x.Stores)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_GenesisDenomTrace protoreflect.MessageDescriptor + fd_GenesisDenomTrace_denom protoreflect.FieldDescriptor + fd_GenesisDenomTrace_contract_address protoreflect.FieldDescriptor +) + +func init() { + file_minievm_evm_v1_genesis_proto_init() + md_GenesisDenomTrace = File_minievm_evm_v1_genesis_proto.Messages().ByName("GenesisDenomTrace") + fd_GenesisDenomTrace_denom = md_GenesisDenomTrace.Fields().ByName("denom") + fd_GenesisDenomTrace_contract_address = md_GenesisDenomTrace.Fields().ByName("contract_address") +} + +var _ protoreflect.Message = (*fastReflection_GenesisDenomTrace)(nil) + +type fastReflection_GenesisDenomTrace GenesisDenomTrace + +func (x *GenesisDenomTrace) ProtoReflect() protoreflect.Message { + return (*fastReflection_GenesisDenomTrace)(x) +} + +func (x *GenesisDenomTrace) slowProtoReflect() protoreflect.Message { + mi := &file_minievm_evm_v1_genesis_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_GenesisDenomTrace_messageType fastReflection_GenesisDenomTrace_messageType +var _ protoreflect.MessageType = fastReflection_GenesisDenomTrace_messageType{} + +type fastReflection_GenesisDenomTrace_messageType struct{} + +func (x fastReflection_GenesisDenomTrace_messageType) Zero() protoreflect.Message { + return (*fastReflection_GenesisDenomTrace)(nil) +} +func (x fastReflection_GenesisDenomTrace_messageType) New() protoreflect.Message { + return new(fastReflection_GenesisDenomTrace) +} +func (x fastReflection_GenesisDenomTrace_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisDenomTrace +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GenesisDenomTrace) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisDenomTrace +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_GenesisDenomTrace) Type() protoreflect.MessageType { + return _fastReflection_GenesisDenomTrace_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GenesisDenomTrace) New() protoreflect.Message { + return new(fastReflection_GenesisDenomTrace) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GenesisDenomTrace) Interface() protoreflect.ProtoMessage { + return (*GenesisDenomTrace)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_GenesisDenomTrace) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Denom != "" { + value := protoreflect.ValueOfString(x.Denom) + if !f(fd_GenesisDenomTrace_denom, value) { + return + } + } + if len(x.ContractAddress) != 0 { + value := protoreflect.ValueOfBytes(x.ContractAddress) + if !f(fd_GenesisDenomTrace_contract_address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_GenesisDenomTrace) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "minievm.evm.v1.GenesisDenomTrace.denom": + return x.Denom != "" + case "minievm.evm.v1.GenesisDenomTrace.contract_address": + return len(x.ContractAddress) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisDenomTrace")) + } + panic(fmt.Errorf("message minievm.evm.v1.GenesisDenomTrace does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisDenomTrace) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "minievm.evm.v1.GenesisDenomTrace.denom": + x.Denom = "" + case "minievm.evm.v1.GenesisDenomTrace.contract_address": + x.ContractAddress = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisDenomTrace")) + } + panic(fmt.Errorf("message minievm.evm.v1.GenesisDenomTrace does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_GenesisDenomTrace) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "minievm.evm.v1.GenesisDenomTrace.denom": + value := x.Denom + return protoreflect.ValueOfString(value) + case "minievm.evm.v1.GenesisDenomTrace.contract_address": + value := x.ContractAddress + return protoreflect.ValueOfBytes(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisDenomTrace")) + } + panic(fmt.Errorf("message minievm.evm.v1.GenesisDenomTrace does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisDenomTrace) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "minievm.evm.v1.GenesisDenomTrace.denom": + x.Denom = value.Interface().(string) + case "minievm.evm.v1.GenesisDenomTrace.contract_address": + x.ContractAddress = value.Bytes() + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisDenomTrace")) + } + panic(fmt.Errorf("message minievm.evm.v1.GenesisDenomTrace does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisDenomTrace) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "minievm.evm.v1.GenesisDenomTrace.denom": + panic(fmt.Errorf("field denom of message minievm.evm.v1.GenesisDenomTrace is not mutable")) + case "minievm.evm.v1.GenesisDenomTrace.contract_address": + panic(fmt.Errorf("field contract_address of message minievm.evm.v1.GenesisDenomTrace is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisDenomTrace")) + } + panic(fmt.Errorf("message minievm.evm.v1.GenesisDenomTrace does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_GenesisDenomTrace) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "minievm.evm.v1.GenesisDenomTrace.denom": + return protoreflect.ValueOfString("") + case "minievm.evm.v1.GenesisDenomTrace.contract_address": + return protoreflect.ValueOfBytes(nil) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisDenomTrace")) + } + panic(fmt.Errorf("message minievm.evm.v1.GenesisDenomTrace does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_GenesisDenomTrace) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in minievm.evm.v1.GenesisDenomTrace", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_GenesisDenomTrace) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisDenomTrace) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_GenesisDenomTrace) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_GenesisDenomTrace) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*GenesisDenomTrace) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Denom) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.ContractAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*GenesisDenomTrace) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.ContractAddress) > 0 { + i -= len(x.ContractAddress) + copy(dAtA[i:], x.ContractAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ContractAddress))) + i-- + dAtA[i] = 0x12 + } + if len(x.Denom) > 0 { + i -= len(x.Denom) + copy(dAtA[i:], x.Denom) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Denom))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*GenesisDenomTrace) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire 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++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisDenomTrace: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisDenomTrace: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Denom", 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.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ContractAddress", wireType) + } + var byteLen int + 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++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + byteLen + 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.ContractAddress = append(x.ContractAddress[:0], dAtA[iNdEx:postIndex]...) + if x.ContractAddress == nil { + x.ContractAddress = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_GenesisClassTrace protoreflect.MessageDescriptor + fd_GenesisClassTrace_class_id protoreflect.FieldDescriptor + fd_GenesisClassTrace_contract_address protoreflect.FieldDescriptor + fd_GenesisClassTrace_uri protoreflect.FieldDescriptor +) + +func init() { + file_minievm_evm_v1_genesis_proto_init() + md_GenesisClassTrace = File_minievm_evm_v1_genesis_proto.Messages().ByName("GenesisClassTrace") + fd_GenesisClassTrace_class_id = md_GenesisClassTrace.Fields().ByName("class_id") + fd_GenesisClassTrace_contract_address = md_GenesisClassTrace.Fields().ByName("contract_address") + fd_GenesisClassTrace_uri = md_GenesisClassTrace.Fields().ByName("uri") +} + +var _ protoreflect.Message = (*fastReflection_GenesisClassTrace)(nil) + +type fastReflection_GenesisClassTrace GenesisClassTrace + +func (x *GenesisClassTrace) ProtoReflect() protoreflect.Message { + return (*fastReflection_GenesisClassTrace)(x) +} + +func (x *GenesisClassTrace) slowProtoReflect() protoreflect.Message { + mi := &file_minievm_evm_v1_genesis_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_GenesisClassTrace_messageType fastReflection_GenesisClassTrace_messageType +var _ protoreflect.MessageType = fastReflection_GenesisClassTrace_messageType{} + +type fastReflection_GenesisClassTrace_messageType struct{} + +func (x fastReflection_GenesisClassTrace_messageType) Zero() protoreflect.Message { + return (*fastReflection_GenesisClassTrace)(nil) +} +func (x fastReflection_GenesisClassTrace_messageType) New() protoreflect.Message { + return new(fastReflection_GenesisClassTrace) +} +func (x fastReflection_GenesisClassTrace_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisClassTrace +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_GenesisClassTrace) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisClassTrace +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_GenesisClassTrace) Type() protoreflect.MessageType { + return _fastReflection_GenesisClassTrace_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_GenesisClassTrace) New() protoreflect.Message { + return new(fastReflection_GenesisClassTrace) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_GenesisClassTrace) Interface() protoreflect.ProtoMessage { + return (*GenesisClassTrace)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_GenesisClassTrace) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.ClassId != "" { + value := protoreflect.ValueOfString(x.ClassId) + if !f(fd_GenesisClassTrace_class_id, value) { + return + } + } + if len(x.ContractAddress) != 0 { + value := protoreflect.ValueOfBytes(x.ContractAddress) + if !f(fd_GenesisClassTrace_contract_address, value) { + return + } + } + if x.Uri != "" { + value := protoreflect.ValueOfString(x.Uri) + if !f(fd_GenesisClassTrace_uri, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_GenesisClassTrace) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "minievm.evm.v1.GenesisClassTrace.class_id": + return x.ClassId != "" + case "minievm.evm.v1.GenesisClassTrace.contract_address": + return len(x.ContractAddress) != 0 + case "minievm.evm.v1.GenesisClassTrace.uri": + return x.Uri != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisClassTrace")) + } + panic(fmt.Errorf("message minievm.evm.v1.GenesisClassTrace does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisClassTrace) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "minievm.evm.v1.GenesisClassTrace.class_id": + x.ClassId = "" + case "minievm.evm.v1.GenesisClassTrace.contract_address": + x.ContractAddress = nil + case "minievm.evm.v1.GenesisClassTrace.uri": + x.Uri = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisClassTrace")) + } + panic(fmt.Errorf("message minievm.evm.v1.GenesisClassTrace does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_GenesisClassTrace) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "minievm.evm.v1.GenesisClassTrace.class_id": + value := x.ClassId + return protoreflect.ValueOfString(value) + case "minievm.evm.v1.GenesisClassTrace.contract_address": + value := x.ContractAddress + return protoreflect.ValueOfBytes(value) + case "minievm.evm.v1.GenesisClassTrace.uri": + value := x.Uri + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisClassTrace")) + } + panic(fmt.Errorf("message minievm.evm.v1.GenesisClassTrace does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisClassTrace) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "minievm.evm.v1.GenesisClassTrace.class_id": + x.ClassId = value.Interface().(string) + case "minievm.evm.v1.GenesisClassTrace.contract_address": + x.ContractAddress = value.Bytes() + case "minievm.evm.v1.GenesisClassTrace.uri": + x.Uri = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisClassTrace")) + } + panic(fmt.Errorf("message minievm.evm.v1.GenesisClassTrace does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_GenesisClassTrace) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "minievm.evm.v1.GenesisClassTrace.class_id": + panic(fmt.Errorf("field class_id of message minievm.evm.v1.GenesisClassTrace is not mutable")) + case "minievm.evm.v1.GenesisClassTrace.contract_address": + panic(fmt.Errorf("field contract_address of message minievm.evm.v1.GenesisClassTrace is not mutable")) + case "minievm.evm.v1.GenesisClassTrace.uri": + panic(fmt.Errorf("field uri of message minievm.evm.v1.GenesisClassTrace is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisClassTrace")) + } + panic(fmt.Errorf("message minievm.evm.v1.GenesisClassTrace does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_GenesisClassTrace) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "minievm.evm.v1.GenesisClassTrace.class_id": + return protoreflect.ValueOfString("") + case "minievm.evm.v1.GenesisClassTrace.contract_address": + return protoreflect.ValueOfBytes(nil) + case "minievm.evm.v1.GenesisClassTrace.uri": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisClassTrace")) + } + panic(fmt.Errorf("message minievm.evm.v1.GenesisClassTrace does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_GenesisERC20Stores) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_GenesisClassTrace) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in minievm.evm.v1.GenesisERC20Stores", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in minievm.evm.v1.GenesisClassTrace", d.FullName())) } panic("unreachable") } @@ -1776,7 +3173,7 @@ func (x *fastReflection_GenesisERC20Stores) WhichOneof(d protoreflect.OneofDescr // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_GenesisERC20Stores) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_GenesisClassTrace) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -1787,7 +3184,7 @@ func (x *fastReflection_GenesisERC20Stores) GetUnknown() protoreflect.RawFields // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_GenesisERC20Stores) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_GenesisClassTrace) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -1799,7 +3196,7 @@ func (x *fastReflection_GenesisERC20Stores) SetUnknown(fields protoreflect.RawFi // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_GenesisERC20Stores) IsValid() bool { +func (x *fastReflection_GenesisClassTrace) IsValid() bool { return x != nil } @@ -1809,9 +3206,9 @@ func (x *fastReflection_GenesisERC20Stores) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_GenesisERC20Stores) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_GenesisClassTrace) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*GenesisERC20Stores) + x := input.Message.Interface().(*GenesisClassTrace) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -1823,15 +3220,17 @@ func (x *fastReflection_GenesisERC20Stores) ProtoMethods() *protoiface.Methods { var n int var l int _ = l - l = len(x.Address) + l = len(x.ClassId) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - if len(x.Stores) > 0 { - for _, b := range x.Stores { - l = len(b) - n += 1 + l + runtime.Sov(uint64(l)) - } + l = len(x.ContractAddress) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.Uri) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) } if x.unknownFields != nil { n += len(x.unknownFields) @@ -1843,7 +3242,7 @@ func (x *fastReflection_GenesisERC20Stores) ProtoMethods() *protoiface.Methods { } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*GenesisERC20Stores) + x := input.Message.Interface().(*GenesisClassTrace) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -1862,19 +3261,24 @@ func (x *fastReflection_GenesisERC20Stores) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if len(x.Stores) > 0 { - for iNdEx := len(x.Stores) - 1; iNdEx >= 0; iNdEx-- { - i -= len(x.Stores[iNdEx]) - copy(dAtA[i:], x.Stores[iNdEx]) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Stores[iNdEx]))) - i-- - dAtA[i] = 0x12 - } + if len(x.Uri) > 0 { + i -= len(x.Uri) + copy(dAtA[i:], x.Uri) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Uri))) + i-- + dAtA[i] = 0x1a } - if len(x.Address) > 0 { - i -= len(x.Address) - copy(dAtA[i:], x.Address) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address))) + if len(x.ContractAddress) > 0 { + i -= len(x.ContractAddress) + copy(dAtA[i:], x.ContractAddress) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ContractAddress))) + i-- + dAtA[i] = 0x12 + } + if len(x.ClassId) > 0 { + i -= len(x.ClassId) + copy(dAtA[i:], x.ClassId) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ClassId))) i-- dAtA[i] = 0xa } @@ -1889,7 +3293,7 @@ func (x *fastReflection_GenesisERC20Stores) ProtoMethods() *protoiface.Methods { }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*GenesisERC20Stores) + x := input.Message.Interface().(*GenesisClassTrace) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -1921,17 +3325,17 @@ func (x *fastReflection_GenesisERC20Stores) ProtoMethods() *protoiface.Methods { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisERC20Stores: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisClassTrace: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisERC20Stores: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisClassTrace: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ClassId", wireType) } - var byteLen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -1941,29 +3345,27 @@ func (x *fastReflection_GenesisERC20Stores) ProtoMethods() *protoiface.Methods { } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } - postIndex := iNdEx + byteLen + 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.Address = append(x.Address[:0], dAtA[iNdEx:postIndex]...) - if x.Address == nil { - x.Address = []byte{} - } + x.ClassId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Stores", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ContractAddress", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -1990,8 +3392,42 @@ func (x *fastReflection_GenesisERC20Stores) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - x.Stores = append(x.Stores, make([]byte, postIndex-iNdEx)) - copy(x.Stores[len(x.Stores)-1], dAtA[iNdEx:postIndex]) + x.ContractAddress = append(x.ContractAddress[:0], dAtA[iNdEx:postIndex]...) + if x.ContractAddress == nil { + x.ContractAddress = []byte{} + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Uri", 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.Uri = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -2029,28 +3465,28 @@ func (x *fastReflection_GenesisERC20Stores) ProtoMethods() *protoiface.Methods { } var ( - md_GenesisDenomAddress protoreflect.MessageDescriptor - fd_GenesisDenomAddress_denom protoreflect.FieldDescriptor - fd_GenesisDenomAddress_contract_address protoreflect.FieldDescriptor + md_GenesisEVMBlockHash protoreflect.MessageDescriptor + fd_GenesisEVMBlockHash_hash protoreflect.FieldDescriptor + fd_GenesisEVMBlockHash_height protoreflect.FieldDescriptor ) func init() { file_minievm_evm_v1_genesis_proto_init() - md_GenesisDenomAddress = File_minievm_evm_v1_genesis_proto.Messages().ByName("GenesisDenomAddress") - fd_GenesisDenomAddress_denom = md_GenesisDenomAddress.Fields().ByName("denom") - fd_GenesisDenomAddress_contract_address = md_GenesisDenomAddress.Fields().ByName("contract_address") + md_GenesisEVMBlockHash = File_minievm_evm_v1_genesis_proto.Messages().ByName("GenesisEVMBlockHash") + fd_GenesisEVMBlockHash_hash = md_GenesisEVMBlockHash.Fields().ByName("hash") + fd_GenesisEVMBlockHash_height = md_GenesisEVMBlockHash.Fields().ByName("height") } -var _ protoreflect.Message = (*fastReflection_GenesisDenomAddress)(nil) +var _ protoreflect.Message = (*fastReflection_GenesisEVMBlockHash)(nil) -type fastReflection_GenesisDenomAddress GenesisDenomAddress +type fastReflection_GenesisEVMBlockHash GenesisEVMBlockHash -func (x *GenesisDenomAddress) ProtoReflect() protoreflect.Message { - return (*fastReflection_GenesisDenomAddress)(x) +func (x *GenesisEVMBlockHash) ProtoReflect() protoreflect.Message { + return (*fastReflection_GenesisEVMBlockHash)(x) } -func (x *GenesisDenomAddress) slowProtoReflect() protoreflect.Message { - mi := &file_minievm_evm_v1_genesis_proto_msgTypes[3] +func (x *GenesisEVMBlockHash) slowProtoReflect() protoreflect.Message { + mi := &file_minievm_evm_v1_genesis_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2061,43 +3497,43 @@ func (x *GenesisDenomAddress) slowProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -var _fastReflection_GenesisDenomAddress_messageType fastReflection_GenesisDenomAddress_messageType -var _ protoreflect.MessageType = fastReflection_GenesisDenomAddress_messageType{} +var _fastReflection_GenesisEVMBlockHash_messageType fastReflection_GenesisEVMBlockHash_messageType +var _ protoreflect.MessageType = fastReflection_GenesisEVMBlockHash_messageType{} -type fastReflection_GenesisDenomAddress_messageType struct{} +type fastReflection_GenesisEVMBlockHash_messageType struct{} -func (x fastReflection_GenesisDenomAddress_messageType) Zero() protoreflect.Message { - return (*fastReflection_GenesisDenomAddress)(nil) +func (x fastReflection_GenesisEVMBlockHash_messageType) Zero() protoreflect.Message { + return (*fastReflection_GenesisEVMBlockHash)(nil) } -func (x fastReflection_GenesisDenomAddress_messageType) New() protoreflect.Message { - return new(fastReflection_GenesisDenomAddress) +func (x fastReflection_GenesisEVMBlockHash_messageType) New() protoreflect.Message { + return new(fastReflection_GenesisEVMBlockHash) } -func (x fastReflection_GenesisDenomAddress_messageType) Descriptor() protoreflect.MessageDescriptor { - return md_GenesisDenomAddress +func (x fastReflection_GenesisEVMBlockHash_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisEVMBlockHash } // Descriptor returns message descriptor, which contains only the protobuf // type information for the message. -func (x *fastReflection_GenesisDenomAddress) Descriptor() protoreflect.MessageDescriptor { - return md_GenesisDenomAddress +func (x *fastReflection_GenesisEVMBlockHash) Descriptor() protoreflect.MessageDescriptor { + return md_GenesisEVMBlockHash } // Type returns the message type, which encapsulates both Go and protobuf // type information. If the Go type information is not needed, // it is recommended that the message descriptor be used instead. -func (x *fastReflection_GenesisDenomAddress) Type() protoreflect.MessageType { - return _fastReflection_GenesisDenomAddress_messageType +func (x *fastReflection_GenesisEVMBlockHash) Type() protoreflect.MessageType { + return _fastReflection_GenesisEVMBlockHash_messageType } // New returns a newly allocated and mutable empty message. -func (x *fastReflection_GenesisDenomAddress) New() protoreflect.Message { - return new(fastReflection_GenesisDenomAddress) +func (x *fastReflection_GenesisEVMBlockHash) New() protoreflect.Message { + return new(fastReflection_GenesisEVMBlockHash) } // Interface unwraps the message reflection interface and // returns the underlying ProtoMessage interface. -func (x *fastReflection_GenesisDenomAddress) Interface() protoreflect.ProtoMessage { - return (*GenesisDenomAddress)(x) +func (x *fastReflection_GenesisEVMBlockHash) Interface() protoreflect.ProtoMessage { + return (*GenesisEVMBlockHash)(x) } // Range iterates over every populated field in an undefined order, @@ -2105,16 +3541,16 @@ func (x *fastReflection_GenesisDenomAddress) Interface() protoreflect.ProtoMessa // Range returns immediately if f returns false. // While iterating, mutating operations may only be performed // on the current field descriptor. -func (x *fastReflection_GenesisDenomAddress) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { - if x.Denom != "" { - value := protoreflect.ValueOfString(x.Denom) - if !f(fd_GenesisDenomAddress_denom, value) { +func (x *fastReflection_GenesisEVMBlockHash) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if len(x.Hash) != 0 { + value := protoreflect.ValueOfBytes(x.Hash) + if !f(fd_GenesisEVMBlockHash_hash, value) { return } } - if len(x.ContractAddress) != 0 { - value := protoreflect.ValueOfBytes(x.ContractAddress) - if !f(fd_GenesisDenomAddress_contract_address, value) { + if x.Height != uint64(0) { + value := protoreflect.ValueOfUint64(x.Height) + if !f(fd_GenesisEVMBlockHash_height, value) { return } } @@ -2131,17 +3567,17 @@ func (x *fastReflection_GenesisDenomAddress) Range(f func(protoreflect.FieldDesc // In other cases (aside from the nullable cases above), // a proto3 scalar field is populated if it contains a non-zero value, and // a repeated field is populated if it is non-empty. -func (x *fastReflection_GenesisDenomAddress) Has(fd protoreflect.FieldDescriptor) bool { +func (x *fastReflection_GenesisEVMBlockHash) Has(fd protoreflect.FieldDescriptor) bool { switch fd.FullName() { - case "minievm.evm.v1.GenesisDenomAddress.denom": - return x.Denom != "" - case "minievm.evm.v1.GenesisDenomAddress.contract_address": - return len(x.ContractAddress) != 0 + case "minievm.evm.v1.GenesisEVMBlockHash.hash": + return len(x.Hash) != 0 + case "minievm.evm.v1.GenesisEVMBlockHash.height": + return x.Height != uint64(0) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisDenomAddress")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisEVMBlockHash")) } - panic(fmt.Errorf("message minievm.evm.v1.GenesisDenomAddress does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message minievm.evm.v1.GenesisEVMBlockHash does not contain field %s", fd.FullName())) } } @@ -2151,17 +3587,17 @@ func (x *fastReflection_GenesisDenomAddress) Has(fd protoreflect.FieldDescriptor // associated with the given field number. // // Clear is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_GenesisDenomAddress) Clear(fd protoreflect.FieldDescriptor) { +func (x *fastReflection_GenesisEVMBlockHash) Clear(fd protoreflect.FieldDescriptor) { switch fd.FullName() { - case "minievm.evm.v1.GenesisDenomAddress.denom": - x.Denom = "" - case "minievm.evm.v1.GenesisDenomAddress.contract_address": - x.ContractAddress = nil + case "minievm.evm.v1.GenesisEVMBlockHash.hash": + x.Hash = nil + case "minievm.evm.v1.GenesisEVMBlockHash.height": + x.Height = uint64(0) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisDenomAddress")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisEVMBlockHash")) } - panic(fmt.Errorf("message minievm.evm.v1.GenesisDenomAddress does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message minievm.evm.v1.GenesisEVMBlockHash does not contain field %s", fd.FullName())) } } @@ -2171,19 +3607,19 @@ func (x *fastReflection_GenesisDenomAddress) Clear(fd protoreflect.FieldDescript // the default value of a bytes scalar is guaranteed to be a copy. // For unpopulated composite types, it returns an empty, read-only view // of the value; to obtain a mutable reference, use Mutable. -func (x *fastReflection_GenesisDenomAddress) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_GenesisEVMBlockHash) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { switch descriptor.FullName() { - case "minievm.evm.v1.GenesisDenomAddress.denom": - value := x.Denom - return protoreflect.ValueOfString(value) - case "minievm.evm.v1.GenesisDenomAddress.contract_address": - value := x.ContractAddress + case "minievm.evm.v1.GenesisEVMBlockHash.hash": + value := x.Hash return protoreflect.ValueOfBytes(value) + case "minievm.evm.v1.GenesisEVMBlockHash.height": + value := x.Height + return protoreflect.ValueOfUint64(value) default: if descriptor.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisDenomAddress")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisEVMBlockHash")) } - panic(fmt.Errorf("message minievm.evm.v1.GenesisDenomAddress does not contain field %s", descriptor.FullName())) + panic(fmt.Errorf("message minievm.evm.v1.GenesisEVMBlockHash does not contain field %s", descriptor.FullName())) } } @@ -2197,17 +3633,17 @@ func (x *fastReflection_GenesisDenomAddress) Get(descriptor protoreflect.FieldDe // empty, read-only value, then it panics. // // Set is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_GenesisDenomAddress) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { +func (x *fastReflection_GenesisEVMBlockHash) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { switch fd.FullName() { - case "minievm.evm.v1.GenesisDenomAddress.denom": - x.Denom = value.Interface().(string) - case "minievm.evm.v1.GenesisDenomAddress.contract_address": - x.ContractAddress = value.Bytes() + case "minievm.evm.v1.GenesisEVMBlockHash.hash": + x.Hash = value.Bytes() + case "minievm.evm.v1.GenesisEVMBlockHash.height": + x.Height = value.Uint() default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisDenomAddress")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisEVMBlockHash")) } - panic(fmt.Errorf("message minievm.evm.v1.GenesisDenomAddress does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message minievm.evm.v1.GenesisEVMBlockHash does not contain field %s", fd.FullName())) } } @@ -2221,44 +3657,44 @@ func (x *fastReflection_GenesisDenomAddress) Set(fd protoreflect.FieldDescriptor // It panics if the field does not contain a composite type. // // Mutable is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_GenesisDenomAddress) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_GenesisEVMBlockHash) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "minievm.evm.v1.GenesisDenomAddress.denom": - panic(fmt.Errorf("field denom of message minievm.evm.v1.GenesisDenomAddress is not mutable")) - case "minievm.evm.v1.GenesisDenomAddress.contract_address": - panic(fmt.Errorf("field contract_address of message minievm.evm.v1.GenesisDenomAddress is not mutable")) + case "minievm.evm.v1.GenesisEVMBlockHash.hash": + panic(fmt.Errorf("field hash of message minievm.evm.v1.GenesisEVMBlockHash is not mutable")) + case "minievm.evm.v1.GenesisEVMBlockHash.height": + panic(fmt.Errorf("field height of message minievm.evm.v1.GenesisEVMBlockHash is not mutable")) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisDenomAddress")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisEVMBlockHash")) } - panic(fmt.Errorf("message minievm.evm.v1.GenesisDenomAddress does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message minievm.evm.v1.GenesisEVMBlockHash does not contain field %s", fd.FullName())) } } // NewField returns a new value that is assignable to the field // for the given descriptor. For scalars, this returns the default value. // For lists, maps, and messages, this returns a new, empty, mutable value. -func (x *fastReflection_GenesisDenomAddress) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { +func (x *fastReflection_GenesisEVMBlockHash) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { - case "minievm.evm.v1.GenesisDenomAddress.denom": - return protoreflect.ValueOfString("") - case "minievm.evm.v1.GenesisDenomAddress.contract_address": + case "minievm.evm.v1.GenesisEVMBlockHash.hash": return protoreflect.ValueOfBytes(nil) + case "minievm.evm.v1.GenesisEVMBlockHash.height": + return protoreflect.ValueOfUint64(uint64(0)) default: if fd.IsExtension() { - panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisDenomAddress")) + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.GenesisEVMBlockHash")) } - panic(fmt.Errorf("message minievm.evm.v1.GenesisDenomAddress does not contain field %s", fd.FullName())) + panic(fmt.Errorf("message minievm.evm.v1.GenesisEVMBlockHash does not contain field %s", fd.FullName())) } } // WhichOneof reports which field within the oneof is populated, // returning nil if none are populated. // It panics if the oneof descriptor does not belong to this message. -func (x *fastReflection_GenesisDenomAddress) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { +func (x *fastReflection_GenesisEVMBlockHash) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { switch d.FullName() { default: - panic(fmt.Errorf("%s is not a oneof field in minievm.evm.v1.GenesisDenomAddress", d.FullName())) + panic(fmt.Errorf("%s is not a oneof field in minievm.evm.v1.GenesisEVMBlockHash", d.FullName())) } panic("unreachable") } @@ -2266,7 +3702,7 @@ func (x *fastReflection_GenesisDenomAddress) WhichOneof(d protoreflect.OneofDesc // GetUnknown retrieves the entire list of unknown fields. // The caller may only mutate the contents of the RawFields // if the mutated bytes are stored back into the message with SetUnknown. -func (x *fastReflection_GenesisDenomAddress) GetUnknown() protoreflect.RawFields { +func (x *fastReflection_GenesisEVMBlockHash) GetUnknown() protoreflect.RawFields { return x.unknownFields } @@ -2277,7 +3713,7 @@ func (x *fastReflection_GenesisDenomAddress) GetUnknown() protoreflect.RawFields // An empty RawFields may be passed to clear the fields. // // SetUnknown is a mutating operation and unsafe for concurrent use. -func (x *fastReflection_GenesisDenomAddress) SetUnknown(fields protoreflect.RawFields) { +func (x *fastReflection_GenesisEVMBlockHash) SetUnknown(fields protoreflect.RawFields) { x.unknownFields = fields } @@ -2289,7 +3725,7 @@ func (x *fastReflection_GenesisDenomAddress) SetUnknown(fields protoreflect.RawF // message type, but the details are implementation dependent. // Validity is not part of the protobuf data model, and may not // be preserved in marshaling or other operations. -func (x *fastReflection_GenesisDenomAddress) IsValid() bool { +func (x *fastReflection_GenesisEVMBlockHash) IsValid() bool { return x != nil } @@ -2299,9 +3735,9 @@ func (x *fastReflection_GenesisDenomAddress) IsValid() bool { // The returned methods type is identical to // "google.golang.org/protobuf/runtime/protoiface".Methods. // Consult the protoiface package documentation for details. -func (x *fastReflection_GenesisDenomAddress) ProtoMethods() *protoiface.Methods { +func (x *fastReflection_GenesisEVMBlockHash) ProtoMethods() *protoiface.Methods { size := func(input protoiface.SizeInput) protoiface.SizeOutput { - x := input.Message.Interface().(*GenesisDenomAddress) + x := input.Message.Interface().(*GenesisEVMBlockHash) if x == nil { return protoiface.SizeOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -2313,13 +3749,12 @@ func (x *fastReflection_GenesisDenomAddress) ProtoMethods() *protoiface.Methods var n int var l int _ = l - l = len(x.Denom) + l = len(x.Hash) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } - l = len(x.ContractAddress) - if l > 0 { - n += 1 + l + runtime.Sov(uint64(l)) + if x.Height != 0 { + n += 1 + runtime.Sov(uint64(x.Height)) } if x.unknownFields != nil { n += len(x.unknownFields) @@ -2331,7 +3766,7 @@ func (x *fastReflection_GenesisDenomAddress) ProtoMethods() *protoiface.Methods } marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { - x := input.Message.Interface().(*GenesisDenomAddress) + x := input.Message.Interface().(*GenesisEVMBlockHash) if x == nil { return protoiface.MarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -2350,17 +3785,15 @@ func (x *fastReflection_GenesisDenomAddress) ProtoMethods() *protoiface.Methods i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } - if len(x.ContractAddress) > 0 { - i -= len(x.ContractAddress) - copy(dAtA[i:], x.ContractAddress) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ContractAddress))) + if x.Height != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.Height)) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x10 } - if len(x.Denom) > 0 { - i -= len(x.Denom) - copy(dAtA[i:], x.Denom) - i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Denom))) + if len(x.Hash) > 0 { + i -= len(x.Hash) + copy(dAtA[i:], x.Hash) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Hash))) i-- dAtA[i] = 0xa } @@ -2375,7 +3808,7 @@ func (x *fastReflection_GenesisDenomAddress) ProtoMethods() *protoiface.Methods }, nil } unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { - x := input.Message.Interface().(*GenesisDenomAddress) + x := input.Message.Interface().(*GenesisEVMBlockHash) if x == nil { return protoiface.UnmarshalOutput{ NoUnkeyedLiterals: input.NoUnkeyedLiterals, @@ -2407,17 +3840,17 @@ func (x *fastReflection_GenesisDenomAddress) ProtoMethods() *protoiface.Methods fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisDenomAddress: wiretype end group for non-group") + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisEVMBlockHash: wiretype end group for non-group") } if fieldNum <= 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisDenomAddress: illegal tag %d (wire type %d)", fieldNum, wire) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: GenesisEVMBlockHash: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Hash", wireType) } - var stringLen uint64 + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -2427,29 +3860,31 @@ func (x *fastReflection_GenesisDenomAddress) ProtoMethods() *protoiface.Methods } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + byteLen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if byteLen < 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + byteLen 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.Denom = string(dAtA[iNdEx:postIndex]) + x.Hash = append(x.Hash[:0], dAtA[iNdEx:postIndex]...) + if x.Hash == nil { + x.Hash = []byte{} + } iNdEx = postIndex case 2: - if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ContractAddress", wireType) + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) } - var byteLen int + x.Height = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow @@ -2459,26 +3894,11 @@ func (x *fastReflection_GenesisDenomAddress) ProtoMethods() *protoiface.Methods } b := dAtA[iNdEx] iNdEx++ - byteLen |= int(b&0x7F) << shift + x.Height |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if byteLen < 0 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength - } - postIndex := iNdEx + byteLen - 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.ContractAddress = append(x.ContractAddress[:0], dAtA[iNdEx:postIndex]...) - if x.ContractAddress == nil { - x.ContractAddress = []byte{} - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -2535,15 +3955,19 @@ type GenesisState struct { // params defines the parameters of the module. Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` - // state root - StateRoot []byte `protobuf:"bytes,2,opt,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"` // vm kv store - KeyValues []*GenesisKeyValue `protobuf:"bytes,3,rep,name=key_values,json=keyValues,proto3" json:"key_values,omitempty"` + KeyValues []*GenesisKeyValue `protobuf:"bytes,2,rep,name=key_values,json=keyValues,proto3" json:"key_values,omitempty"` + // erc20 contracts + Erc20S [][]byte `protobuf:"bytes,3,rep,name=erc20s,proto3" json:"erc20s,omitempty"` // erc20 stores Erc20Stores []*GenesisERC20Stores `protobuf:"bytes,4,rep,name=erc20_stores,json=erc20Stores,proto3" json:"erc20_stores,omitempty"` - DenomAddresses []*GenesisDenomAddress `protobuf:"bytes,5,rep,name=denom_addresses,json=denomAddresses,proto3" json:"denom_addresses,omitempty"` + DenomTraces []*GenesisDenomTrace `protobuf:"bytes,5,rep,name=denom_traces,json=denomTraces,proto3" json:"denom_traces,omitempty"` + ClassTraces []*GenesisClassTrace `protobuf:"bytes,6,rep,name=class_traces,json=classTraces,proto3" json:"class_traces,omitempty"` + EvmBlockHashes []*GenesisEVMBlockHash `protobuf:"bytes,7,rep,name=evm_block_hashes,json=evmBlockHashes,proto3" json:"evm_block_hashes,omitempty"` // erc20 factory contract address - Erc20Factory []byte `protobuf:"bytes,6,opt,name=erc20_factory,json=erc20Factory,proto3" json:"erc20_factory,omitempty"` + Erc20Factory []byte `protobuf:"bytes,8,opt,name=erc20_factory,json=erc20Factory,proto3" json:"erc20_factory,omitempty"` + // erc20 wrapper contract address + Erc20Wrapper []byte `protobuf:"bytes,9,opt,name=erc20_wrapper,json=erc20Wrapper,proto3" json:"erc20_wrapper,omitempty"` } func (x *GenesisState) Reset() { @@ -2573,16 +3997,16 @@ func (x *GenesisState) GetParams() *Params { return nil } -func (x *GenesisState) GetStateRoot() []byte { +func (x *GenesisState) GetKeyValues() []*GenesisKeyValue { if x != nil { - return x.StateRoot + return x.KeyValues } return nil } -func (x *GenesisState) GetKeyValues() []*GenesisKeyValue { +func (x *GenesisState) GetErc20S() [][]byte { if x != nil { - return x.KeyValues + return x.Erc20S } return nil } @@ -2594,9 +4018,23 @@ func (x *GenesisState) GetErc20Stores() []*GenesisERC20Stores { return nil } -func (x *GenesisState) GetDenomAddresses() []*GenesisDenomAddress { +func (x *GenesisState) GetDenomTraces() []*GenesisDenomTrace { + if x != nil { + return x.DenomTraces + } + return nil +} + +func (x *GenesisState) GetClassTraces() []*GenesisClassTrace { + if x != nil { + return x.ClassTraces + } + return nil +} + +func (x *GenesisState) GetEvmBlockHashes() []*GenesisEVMBlockHash { if x != nil { - return x.DenomAddresses + return x.EvmBlockHashes } return nil } @@ -2608,6 +4046,13 @@ func (x *GenesisState) GetErc20Factory() []byte { return nil } +func (x *GenesisState) GetErc20Wrapper() []byte { + if x != nil { + return x.Erc20Wrapper + } + return nil +} + // GenesisKeyValue defines store KV values. type GenesisKeyValue struct { state protoimpl.MessageState @@ -2696,8 +4141,8 @@ func (x *GenesisERC20Stores) GetStores() [][]byte { return nil } -// GenesisDenomAddress defines erc20 contract address of denom. -type GenesisDenomAddress struct { +// GenesisDenomTrace defines erc20 contract address of denom. +type GenesisDenomTrace struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -2706,8 +4151,8 @@ type GenesisDenomAddress struct { ContractAddress []byte `protobuf:"bytes,2,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` } -func (x *GenesisDenomAddress) Reset() { - *x = GenesisDenomAddress{} +func (x *GenesisDenomTrace) Reset() { + *x = GenesisDenomTrace{} if protoimpl.UnsafeEnabled { mi := &file_minievm_evm_v1_genesis_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2715,31 +4160,125 @@ func (x *GenesisDenomAddress) Reset() { } } -func (x *GenesisDenomAddress) String() string { +func (x *GenesisDenomTrace) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GenesisDenomAddress) ProtoMessage() {} +func (*GenesisDenomTrace) ProtoMessage() {} -// Deprecated: Use GenesisDenomAddress.ProtoReflect.Descriptor instead. -func (*GenesisDenomAddress) Descriptor() ([]byte, []int) { +// Deprecated: Use GenesisDenomTrace.ProtoReflect.Descriptor instead. +func (*GenesisDenomTrace) Descriptor() ([]byte, []int) { return file_minievm_evm_v1_genesis_proto_rawDescGZIP(), []int{3} } -func (x *GenesisDenomAddress) GetDenom() string { +func (x *GenesisDenomTrace) GetDenom() string { if x != nil { return x.Denom } return "" } -func (x *GenesisDenomAddress) GetContractAddress() []byte { +func (x *GenesisDenomTrace) GetContractAddress() []byte { + if x != nil { + return x.ContractAddress + } + return nil +} + +type GenesisClassTrace struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ClassId string `protobuf:"bytes,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"` + ContractAddress []byte `protobuf:"bytes,2,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` + Uri string `protobuf:"bytes,3,opt,name=uri,proto3" json:"uri,omitempty"` +} + +func (x *GenesisClassTrace) Reset() { + *x = GenesisClassTrace{} + if protoimpl.UnsafeEnabled { + mi := &file_minievm_evm_v1_genesis_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenesisClassTrace) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenesisClassTrace) ProtoMessage() {} + +// Deprecated: Use GenesisClassTrace.ProtoReflect.Descriptor instead. +func (*GenesisClassTrace) Descriptor() ([]byte, []int) { + return file_minievm_evm_v1_genesis_proto_rawDescGZIP(), []int{4} +} + +func (x *GenesisClassTrace) GetClassId() string { + if x != nil { + return x.ClassId + } + return "" +} + +func (x *GenesisClassTrace) GetContractAddress() []byte { if x != nil { return x.ContractAddress } return nil } +func (x *GenesisClassTrace) GetUri() string { + if x != nil { + return x.Uri + } + return "" +} + +type GenesisEVMBlockHash struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Height uint64 `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"` +} + +func (x *GenesisEVMBlockHash) Reset() { + *x = GenesisEVMBlockHash{} + if protoimpl.UnsafeEnabled { + mi := &file_minievm_evm_v1_genesis_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenesisEVMBlockHash) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenesisEVMBlockHash) ProtoMessage() {} + +// Deprecated: Use GenesisEVMBlockHash.ProtoReflect.Descriptor instead. +func (*GenesisEVMBlockHash) Descriptor() ([]byte, []int) { + return file_minievm_evm_v1_genesis_proto_rawDescGZIP(), []int{5} +} + +func (x *GenesisEVMBlockHash) GetHash() []byte { + if x != nil { + return x.Hash + } + return nil +} + +func (x *GenesisEVMBlockHash) GetHeight() uint64 { + if x != nil { + return x.Height + } + return 0 +} + var File_minievm_evm_v1_genesis_proto protoreflect.FileDescriptor var file_minievm_evm_v1_genesis_proto_rawDesc = []byte{ @@ -2749,59 +4288,87 @@ var file_minievm_evm_v1_genesis_proto_rawDesc = []byte{ 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xb5, 0x03, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, + 0x22, 0xcb, 0x05, 0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, - 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x59, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, - 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, - 0x73, 0x69, 0x73, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x19, 0xc8, 0xde, 0x1f, - 0x00, 0xf2, 0xde, 0x1f, 0x11, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6b, 0x65, 0x79, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x62, 0x0a, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, - 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, - 0x45, 0x52, 0x43, 0x32, 0x30, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x42, 0x1b, 0xc8, 0xde, 0x1f, - 0x00, 0xf2, 0xde, 0x1f, 0x13, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x65, 0x72, 0x63, 0x32, 0x30, - 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x52, 0x0b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x6c, 0x0a, 0x0f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x42, 0x1e, 0xc8, 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x16, 0x79, 0x61, 0x6d, - 0x6c, 0x3a, 0x22, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x65, 0x73, 0x22, 0x52, 0x0e, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x39, 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, - 0x73, 0x69, 0x73, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x46, 0x0a, 0x12, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x45, 0x52, - 0x43, 0x32, 0x30, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x56, 0x0a, 0x13, 0x47, - 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x42, 0xa3, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x69, 0x6e, 0x69, - 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x47, 0x65, 0x6e, 0x65, - 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x25, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x69, 0x6e, - 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x76, 0x6d, 0x76, - 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x4d, 0x69, 0x6e, 0x69, 0x65, 0x76, - 0x6d, 0x2e, 0x45, 0x76, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x4d, 0x69, 0x6e, 0x69, 0x65, - 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x4d, 0x69, 0x6e, 0x69, - 0x65, 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x4d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, - 0x3a, 0x3a, 0x45, 0x76, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x59, 0x0a, 0x0a, 0x6b, 0x65, 0x79, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, + 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, + 0x65, 0x73, 0x69, 0x73, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x19, 0xc8, 0xde, + 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x11, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6b, 0x65, 0x79, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x65, 0x72, 0x63, 0x32, 0x30, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0c, 0x42, 0x1b, 0xe2, 0xde, 0x1f, 0x06, 0x45, 0x52, 0x43, 0x32, 0x30, 0x73, 0xf2, 0xde, + 0x1f, 0x0d, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x65, 0x72, 0x63, 0x32, 0x30, 0x73, 0x22, 0x52, + 0x06, 0x65, 0x72, 0x63, 0x32, 0x30, 0x73, 0x12, 0x62, 0x0a, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, + 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x45, 0x52, 0x43, 0x32, 0x30, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x73, 0x42, 0x1b, 0xc8, 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x13, 0x79, 0x61, 0x6d, 0x6c, 0x3a, + 0x22, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x52, 0x0b, + 0x65, 0x72, 0x63, 0x32, 0x30, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x61, 0x0a, 0x0c, 0x64, + 0x65, 0x6e, 0x6f, 0x6d, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x42, 0x1b, 0xc8, 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, 0x13, 0x79, 0x61, + 0x6d, 0x6c, 0x3a, 0x22, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, + 0x22, 0x52, 0x0b, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x12, 0x61, + 0x0a, 0x0c, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, + 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x54, 0x72, 0x61, 0x63, 0x65, 0x42, 0x1b, 0xc8, 0xde, 0x1f, 0x00, 0xf2, 0xde, 0x1f, + 0x13, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x72, 0x61, + 0x63, 0x65, 0x73, 0x22, 0x52, 0x0b, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x54, 0x72, 0x61, 0x63, 0x65, + 0x73, 0x12, 0x80, 0x01, 0x0a, 0x10, 0x65, 0x76, 0x6d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, + 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x73, 0x69, 0x73, 0x45, 0x56, 0x4d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, + 0x68, 0x42, 0x31, 0xc8, 0xde, 0x1f, 0x00, 0xe2, 0xde, 0x1f, 0x0e, 0x45, 0x56, 0x4d, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0xf2, 0xde, 0x1f, 0x17, 0x79, 0x61, 0x6d, + 0x6c, 0x3a, 0x22, 0x65, 0x76, 0x6d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x65, 0x73, 0x22, 0x52, 0x0e, 0x65, 0x76, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, + 0x73, 0x68, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x66, 0x61, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x22, 0x39, + 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x46, 0x0a, 0x12, 0x47, 0x65, 0x6e, + 0x65, 0x73, 0x69, 0x73, 0x45, 0x52, 0x43, 0x32, 0x30, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, + 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x73, 0x22, 0x54, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x44, 0x65, 0x6e, 0x6f, + 0x6d, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x29, 0x0a, 0x10, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x6b, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x73, + 0x69, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x69, 0x22, 0x41, 0x0a, 0x13, 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x45, + 0x56, 0x4d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, + 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0xa3, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, + 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0c, + 0x47, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x25, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x3b, + 0x65, 0x76, 0x6d, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x4d, 0x69, + 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x45, 0x76, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x4d, + 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, + 0x4d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x4d, 0x69, 0x6e, + 0x69, 0x65, 0x76, 0x6d, 0x3a, 0x3a, 0x45, 0x76, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2816,24 +4383,28 @@ func file_minievm_evm_v1_genesis_proto_rawDescGZIP() []byte { return file_minievm_evm_v1_genesis_proto_rawDescData } -var file_minievm_evm_v1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_minievm_evm_v1_genesis_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_minievm_evm_v1_genesis_proto_goTypes = []interface{}{ (*GenesisState)(nil), // 0: minievm.evm.v1.GenesisState (*GenesisKeyValue)(nil), // 1: minievm.evm.v1.GenesisKeyValue (*GenesisERC20Stores)(nil), // 2: minievm.evm.v1.GenesisERC20Stores - (*GenesisDenomAddress)(nil), // 3: minievm.evm.v1.GenesisDenomAddress - (*Params)(nil), // 4: minievm.evm.v1.Params + (*GenesisDenomTrace)(nil), // 3: minievm.evm.v1.GenesisDenomTrace + (*GenesisClassTrace)(nil), // 4: minievm.evm.v1.GenesisClassTrace + (*GenesisEVMBlockHash)(nil), // 5: minievm.evm.v1.GenesisEVMBlockHash + (*Params)(nil), // 6: minievm.evm.v1.Params } var file_minievm_evm_v1_genesis_proto_depIdxs = []int32{ - 4, // 0: minievm.evm.v1.GenesisState.params:type_name -> minievm.evm.v1.Params + 6, // 0: minievm.evm.v1.GenesisState.params:type_name -> minievm.evm.v1.Params 1, // 1: minievm.evm.v1.GenesisState.key_values:type_name -> minievm.evm.v1.GenesisKeyValue 2, // 2: minievm.evm.v1.GenesisState.erc20_stores:type_name -> minievm.evm.v1.GenesisERC20Stores - 3, // 3: minievm.evm.v1.GenesisState.denom_addresses:type_name -> minievm.evm.v1.GenesisDenomAddress - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 3, // 3: minievm.evm.v1.GenesisState.denom_traces:type_name -> minievm.evm.v1.GenesisDenomTrace + 4, // 4: minievm.evm.v1.GenesisState.class_traces:type_name -> minievm.evm.v1.GenesisClassTrace + 5, // 5: minievm.evm.v1.GenesisState.evm_block_hashes:type_name -> minievm.evm.v1.GenesisEVMBlockHash + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_minievm_evm_v1_genesis_proto_init() } @@ -2880,7 +4451,31 @@ func file_minievm_evm_v1_genesis_proto_init() { } } file_minievm_evm_v1_genesis_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenesisDenomAddress); i { + switch v := v.(*GenesisDenomTrace); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_minievm_evm_v1_genesis_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenesisClassTrace); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_minievm_evm_v1_genesis_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenesisEVMBlockHash); i { case 0: return &v.state case 1: @@ -2898,7 +4493,7 @@ func file_minievm_evm_v1_genesis_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_minievm_evm_v1_genesis_proto_rawDesc, NumEnums: 0, - NumMessages: 4, + NumMessages: 6, NumExtensions: 0, NumServices: 0, }, diff --git a/api/minievm/evm/v1/query.pulsar.go b/api/minievm/evm/v1/query.pulsar.go index ff2dae5..6ffa9c6 100644 --- a/api/minievm/evm/v1/query.pulsar.go +++ b/api/minievm/evm/v1/query.pulsar.go @@ -2535,6 +2535,782 @@ func (x *fastReflection_QueryERC20FactoryResponse) ProtoMethods() *protoiface.Me } } +var ( + md_QueryERC20WrapperRequest protoreflect.MessageDescriptor +) + +func init() { + file_minievm_evm_v1_query_proto_init() + md_QueryERC20WrapperRequest = File_minievm_evm_v1_query_proto.Messages().ByName("QueryERC20WrapperRequest") +} + +var _ protoreflect.Message = (*fastReflection_QueryERC20WrapperRequest)(nil) + +type fastReflection_QueryERC20WrapperRequest QueryERC20WrapperRequest + +func (x *QueryERC20WrapperRequest) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryERC20WrapperRequest)(x) +} + +func (x *QueryERC20WrapperRequest) slowProtoReflect() protoreflect.Message { + mi := &file_minievm_evm_v1_query_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryERC20WrapperRequest_messageType fastReflection_QueryERC20WrapperRequest_messageType +var _ protoreflect.MessageType = fastReflection_QueryERC20WrapperRequest_messageType{} + +type fastReflection_QueryERC20WrapperRequest_messageType struct{} + +func (x fastReflection_QueryERC20WrapperRequest_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryERC20WrapperRequest)(nil) +} +func (x fastReflection_QueryERC20WrapperRequest_messageType) New() protoreflect.Message { + return new(fastReflection_QueryERC20WrapperRequest) +} +func (x fastReflection_QueryERC20WrapperRequest_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryERC20WrapperRequest +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryERC20WrapperRequest) Descriptor() protoreflect.MessageDescriptor { + return md_QueryERC20WrapperRequest +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryERC20WrapperRequest) Type() protoreflect.MessageType { + return _fastReflection_QueryERC20WrapperRequest_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryERC20WrapperRequest) New() protoreflect.Message { + return new(fastReflection_QueryERC20WrapperRequest) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryERC20WrapperRequest) Interface() protoreflect.ProtoMessage { + return (*QueryERC20WrapperRequest)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryERC20WrapperRequest) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryERC20WrapperRequest) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.QueryERC20WrapperRequest")) + } + panic(fmt.Errorf("message minievm.evm.v1.QueryERC20WrapperRequest does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryERC20WrapperRequest) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.QueryERC20WrapperRequest")) + } + panic(fmt.Errorf("message minievm.evm.v1.QueryERC20WrapperRequest does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryERC20WrapperRequest) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.QueryERC20WrapperRequest")) + } + panic(fmt.Errorf("message minievm.evm.v1.QueryERC20WrapperRequest does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryERC20WrapperRequest) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.QueryERC20WrapperRequest")) + } + panic(fmt.Errorf("message minievm.evm.v1.QueryERC20WrapperRequest does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryERC20WrapperRequest) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.QueryERC20WrapperRequest")) + } + panic(fmt.Errorf("message minievm.evm.v1.QueryERC20WrapperRequest does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryERC20WrapperRequest) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.QueryERC20WrapperRequest")) + } + panic(fmt.Errorf("message minievm.evm.v1.QueryERC20WrapperRequest does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryERC20WrapperRequest) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in minievm.evm.v1.QueryERC20WrapperRequest", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryERC20WrapperRequest) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryERC20WrapperRequest) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryERC20WrapperRequest) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryERC20WrapperRequest) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryERC20WrapperRequest) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryERC20WrapperRequest) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryERC20WrapperRequest) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire 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++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryERC20WrapperRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryERC20WrapperRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +var ( + md_QueryERC20WrapperResponse protoreflect.MessageDescriptor + fd_QueryERC20WrapperResponse_address protoreflect.FieldDescriptor +) + +func init() { + file_minievm_evm_v1_query_proto_init() + md_QueryERC20WrapperResponse = File_minievm_evm_v1_query_proto.Messages().ByName("QueryERC20WrapperResponse") + fd_QueryERC20WrapperResponse_address = md_QueryERC20WrapperResponse.Fields().ByName("address") +} + +var _ protoreflect.Message = (*fastReflection_QueryERC20WrapperResponse)(nil) + +type fastReflection_QueryERC20WrapperResponse QueryERC20WrapperResponse + +func (x *QueryERC20WrapperResponse) ProtoReflect() protoreflect.Message { + return (*fastReflection_QueryERC20WrapperResponse)(x) +} + +func (x *QueryERC20WrapperResponse) slowProtoReflect() protoreflect.Message { + mi := &file_minievm_evm_v1_query_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +var _fastReflection_QueryERC20WrapperResponse_messageType fastReflection_QueryERC20WrapperResponse_messageType +var _ protoreflect.MessageType = fastReflection_QueryERC20WrapperResponse_messageType{} + +type fastReflection_QueryERC20WrapperResponse_messageType struct{} + +func (x fastReflection_QueryERC20WrapperResponse_messageType) Zero() protoreflect.Message { + return (*fastReflection_QueryERC20WrapperResponse)(nil) +} +func (x fastReflection_QueryERC20WrapperResponse_messageType) New() protoreflect.Message { + return new(fastReflection_QueryERC20WrapperResponse) +} +func (x fastReflection_QueryERC20WrapperResponse_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_QueryERC20WrapperResponse +} + +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_QueryERC20WrapperResponse) Descriptor() protoreflect.MessageDescriptor { + return md_QueryERC20WrapperResponse +} + +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_QueryERC20WrapperResponse) Type() protoreflect.MessageType { + return _fastReflection_QueryERC20WrapperResponse_messageType +} + +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_QueryERC20WrapperResponse) New() protoreflect.Message { + return new(fastReflection_QueryERC20WrapperResponse) +} + +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_QueryERC20WrapperResponse) Interface() protoreflect.ProtoMessage { + return (*QueryERC20WrapperResponse)(x) +} + +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_QueryERC20WrapperResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Address != "" { + value := protoreflect.ValueOfString(x.Address) + if !f(fd_QueryERC20WrapperResponse_address, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_QueryERC20WrapperResponse) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "minievm.evm.v1.QueryERC20WrapperResponse.address": + return x.Address != "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.QueryERC20WrapperResponse")) + } + panic(fmt.Errorf("message minievm.evm.v1.QueryERC20WrapperResponse does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryERC20WrapperResponse) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "minievm.evm.v1.QueryERC20WrapperResponse.address": + x.Address = "" + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.QueryERC20WrapperResponse")) + } + panic(fmt.Errorf("message minievm.evm.v1.QueryERC20WrapperResponse does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_QueryERC20WrapperResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "minievm.evm.v1.QueryERC20WrapperResponse.address": + value := x.Address + return protoreflect.ValueOfString(value) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.QueryERC20WrapperResponse")) + } + panic(fmt.Errorf("message minievm.evm.v1.QueryERC20WrapperResponse does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryERC20WrapperResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "minievm.evm.v1.QueryERC20WrapperResponse.address": + x.Address = value.Interface().(string) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.QueryERC20WrapperResponse")) + } + panic(fmt.Errorf("message minievm.evm.v1.QueryERC20WrapperResponse does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryERC20WrapperResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "minievm.evm.v1.QueryERC20WrapperResponse.address": + panic(fmt.Errorf("field address of message minievm.evm.v1.QueryERC20WrapperResponse is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.QueryERC20WrapperResponse")) + } + panic(fmt.Errorf("message minievm.evm.v1.QueryERC20WrapperResponse does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_QueryERC20WrapperResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "minievm.evm.v1.QueryERC20WrapperResponse.address": + return protoreflect.ValueOfString("") + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.QueryERC20WrapperResponse")) + } + panic(fmt.Errorf("message minievm.evm.v1.QueryERC20WrapperResponse does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_QueryERC20WrapperResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in minievm.evm.v1.QueryERC20WrapperResponse", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_QueryERC20WrapperResponse) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_QueryERC20WrapperResponse) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_QueryERC20WrapperResponse) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_QueryERC20WrapperResponse) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*QueryERC20WrapperResponse) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*QueryERC20WrapperResponse) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.Address) > 0 { + i -= len(x.Address) + copy(dAtA[i:], x.Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*QueryERC20WrapperResponse) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire 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++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryERC20WrapperResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: QueryERC20WrapperResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Address", 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.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + var ( md_QueryContractAddrByDenomRequest protoreflect.MessageDescriptor fd_QueryContractAddrByDenomRequest_denom protoreflect.FieldDescriptor @@ -2555,7 +3331,7 @@ func (x *QueryContractAddrByDenomRequest) ProtoReflect() protoreflect.Message { } func (x *QueryContractAddrByDenomRequest) slowProtoReflect() protoreflect.Message { - mi := &file_minievm_evm_v1_query_proto_msgTypes[6] + mi := &file_minievm_evm_v1_query_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2975,7 +3751,7 @@ func (x *QueryContractAddrByDenomResponse) ProtoReflect() protoreflect.Message { } func (x *QueryContractAddrByDenomResponse) slowProtoReflect() protoreflect.Message { - mi := &file_minievm_evm_v1_query_proto_msgTypes[7] + mi := &file_minievm_evm_v1_query_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3395,7 +4171,7 @@ func (x *QueryDenomRequest) ProtoReflect() protoreflect.Message { } func (x *QueryDenomRequest) slowProtoReflect() protoreflect.Message { - mi := &file_minievm_evm_v1_query_proto_msgTypes[8] + mi := &file_minievm_evm_v1_query_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3815,7 +4591,7 @@ func (x *QueryDenomResponse) ProtoReflect() protoreflect.Message { } func (x *QueryDenomResponse) slowProtoReflect() protoreflect.Message { - mi := &file_minievm_evm_v1_query_proto_msgTypes[9] + mi := &file_minievm_evm_v1_query_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4243,7 +5019,7 @@ func (x *QueryCallRequest) ProtoReflect() protoreflect.Message { } func (x *QueryCallRequest) slowProtoReflect() protoreflect.Message { - mi := &file_minievm_evm_v1_query_proto_msgTypes[10] + mi := &file_minievm_evm_v1_query_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4932,7 +5708,7 @@ func (x *TraceOptions) ProtoReflect() protoreflect.Message { } func (x *TraceOptions) slowProtoReflect() protoreflect.Message { - mi := &file_minievm_evm_v1_query_proto_msgTypes[11] + mi := &file_minievm_evm_v1_query_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5557,7 +6333,7 @@ func (x *QueryCallResponse) ProtoReflect() protoreflect.Message { } func (x *QueryCallResponse) slowProtoReflect() protoreflect.Message { - mi := &file_minievm_evm_v1_query_proto_msgTypes[12] + mi := &file_minievm_evm_v1_query_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6230,7 +7006,7 @@ func (x *QueryParamsRequest) ProtoReflect() protoreflect.Message { } func (x *QueryParamsRequest) slowProtoReflect() protoreflect.Message { - mi := &file_minievm_evm_v1_query_proto_msgTypes[13] + mi := &file_minievm_evm_v1_query_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6588,7 +7364,7 @@ func (x *QueryParamsResponse) ProtoReflect() protoreflect.Message { } func (x *QueryParamsResponse) slowProtoReflect() protoreflect.Message { - mi := &file_minievm_evm_v1_query_proto_msgTypes[14] + mi := &file_minievm_evm_v1_query_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7242,6 +8018,72 @@ func (x *QueryERC20FactoryResponse) GetAddress() string { return "" } +// QueryERC20WrapperRequest is the request type for the Query/ERC20Wrapper RPC +// method +type QueryERC20WrapperRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *QueryERC20WrapperRequest) Reset() { + *x = QueryERC20WrapperRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_minievm_evm_v1_query_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryERC20WrapperRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryERC20WrapperRequest) ProtoMessage() {} + +// Deprecated: Use QueryERC20WrapperRequest.ProtoReflect.Descriptor instead. +func (*QueryERC20WrapperRequest) Descriptor() ([]byte, []int) { + return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{6} +} + +// QueryERC20WrapperResponse is the response type for the Query/ERC20Wrapper RPC +// method +type QueryERC20WrapperResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // 0x prefixed hex address + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` +} + +func (x *QueryERC20WrapperResponse) Reset() { + *x = QueryERC20WrapperResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_minievm_evm_v1_query_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryERC20WrapperResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryERC20WrapperResponse) ProtoMessage() {} + +// Deprecated: Use QueryERC20WrapperResponse.ProtoReflect.Descriptor instead. +func (*QueryERC20WrapperResponse) Descriptor() ([]byte, []int) { + return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{7} +} + +func (x *QueryERC20WrapperResponse) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + // QueryContractAddrByDenomRequest is the request type for the Query/ContractAddrByDenom RPC // method type QueryContractAddrByDenomRequest struct { @@ -7255,7 +8097,7 @@ type QueryContractAddrByDenomRequest struct { func (x *QueryContractAddrByDenomRequest) Reset() { *x = QueryContractAddrByDenomRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minievm_evm_v1_query_proto_msgTypes[6] + mi := &file_minievm_evm_v1_query_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7269,7 +8111,7 @@ func (*QueryContractAddrByDenomRequest) ProtoMessage() {} // Deprecated: Use QueryContractAddrByDenomRequest.ProtoReflect.Descriptor instead. func (*QueryContractAddrByDenomRequest) Descriptor() ([]byte, []int) { - return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{6} + return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{8} } func (x *QueryContractAddrByDenomRequest) GetDenom() string { @@ -7293,7 +8135,7 @@ type QueryContractAddrByDenomResponse struct { func (x *QueryContractAddrByDenomResponse) Reset() { *x = QueryContractAddrByDenomResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minievm_evm_v1_query_proto_msgTypes[7] + mi := &file_minievm_evm_v1_query_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7307,7 +8149,7 @@ func (*QueryContractAddrByDenomResponse) ProtoMessage() {} // Deprecated: Use QueryContractAddrByDenomResponse.ProtoReflect.Descriptor instead. func (*QueryContractAddrByDenomResponse) Descriptor() ([]byte, []int) { - return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{7} + return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{9} } func (x *QueryContractAddrByDenomResponse) GetAddress() string { @@ -7331,7 +8173,7 @@ type QueryDenomRequest struct { func (x *QueryDenomRequest) Reset() { *x = QueryDenomRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minievm_evm_v1_query_proto_msgTypes[8] + mi := &file_minievm_evm_v1_query_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7345,7 +8187,7 @@ func (*QueryDenomRequest) ProtoMessage() {} // Deprecated: Use QueryDenomRequest.ProtoReflect.Descriptor instead. func (*QueryDenomRequest) Descriptor() ([]byte, []int) { - return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{8} + return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{10} } func (x *QueryDenomRequest) GetContractAddr() string { @@ -7368,7 +8210,7 @@ type QueryDenomResponse struct { func (x *QueryDenomResponse) Reset() { *x = QueryDenomResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minievm_evm_v1_query_proto_msgTypes[9] + mi := &file_minievm_evm_v1_query_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7382,7 +8224,7 @@ func (*QueryDenomResponse) ProtoMessage() {} // Deprecated: Use QueryDenomResponse.ProtoReflect.Descriptor instead. func (*QueryDenomResponse) Descriptor() ([]byte, []int) { - return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{9} + return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{11} } func (x *QueryDenomResponse) GetDenom() string { @@ -7415,7 +8257,7 @@ type QueryCallRequest struct { func (x *QueryCallRequest) Reset() { *x = QueryCallRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minievm_evm_v1_query_proto_msgTypes[10] + mi := &file_minievm_evm_v1_query_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7429,7 +8271,7 @@ func (*QueryCallRequest) ProtoMessage() {} // Deprecated: Use QueryCallRequest.ProtoReflect.Descriptor instead. func (*QueryCallRequest) Descriptor() ([]byte, []int) { - return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{10} + return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{12} } func (x *QueryCallRequest) GetSender() string { @@ -7486,7 +8328,7 @@ type TraceOptions struct { func (x *TraceOptions) Reset() { *x = TraceOptions{} if protoimpl.UnsafeEnabled { - mi := &file_minievm_evm_v1_query_proto_msgTypes[11] + mi := &file_minievm_evm_v1_query_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7500,7 +8342,7 @@ func (*TraceOptions) ProtoMessage() {} // Deprecated: Use TraceOptions.ProtoReflect.Descriptor instead. func (*TraceOptions) Descriptor() ([]byte, []int) { - return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{11} + return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{13} } func (x *TraceOptions) GetWithMemory() bool { @@ -7549,7 +8391,7 @@ type QueryCallResponse struct { func (x *QueryCallResponse) Reset() { *x = QueryCallResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minievm_evm_v1_query_proto_msgTypes[12] + mi := &file_minievm_evm_v1_query_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7563,7 +8405,7 @@ func (*QueryCallResponse) ProtoMessage() {} // Deprecated: Use QueryCallResponse.ProtoReflect.Descriptor instead. func (*QueryCallResponse) Descriptor() ([]byte, []int) { - return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{12} + return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{14} } func (x *QueryCallResponse) GetResponse() string { @@ -7611,7 +8453,7 @@ type QueryParamsRequest struct { func (x *QueryParamsRequest) Reset() { *x = QueryParamsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_minievm_evm_v1_query_proto_msgTypes[13] + mi := &file_minievm_evm_v1_query_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7625,7 +8467,7 @@ func (*QueryParamsRequest) ProtoMessage() {} // Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead. func (*QueryParamsRequest) Descriptor() ([]byte, []int) { - return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{13} + return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{15} } // QueryParamsResponse is the response type for the Query/Params RPC method. @@ -7641,7 +8483,7 @@ type QueryParamsResponse struct { func (x *QueryParamsResponse) Reset() { *x = QueryParamsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_minievm_evm_v1_query_proto_msgTypes[14] + mi := &file_minievm_evm_v1_query_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7655,7 +8497,7 @@ func (*QueryParamsResponse) ProtoMessage() {} // Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead. func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{14} + return file_minievm_evm_v1_query_proto_rawDescGZIP(), []int{16} } func (x *QueryParamsResponse) GetParams() *Params { @@ -7696,90 +8538,105 @@ var file_minievm_evm_v1_query_proto_rawDesc = []byte{ 0x74, 0x22, 0x3b, 0x0a, 0x19, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x52, 0x43, 0x32, 0x30, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x37, - 0x0a, 0x1f, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, - 0x64, 0x64, 0x72, 0x42, 0x79, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x22, 0x42, 0x0a, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x1a, + 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x19, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x37, 0x0a, 0x1f, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x42, 0x79, 0x44, 0x65, - 0x6e, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x38, 0x0a, 0x11, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x41, 0x64, 0x64, 0x72, 0x22, 0x30, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, - 0x6e, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, - 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, - 0x6d, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0xe2, 0x01, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, - 0x6e, 0x64, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, - 0x38, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x22, - 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, - 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, - 0x2a, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x41, 0x0a, 0x0d, 0x74, 0x72, 0x61, - 0x63, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, - 0x74, 0x72, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9b, 0x01, 0x0a, - 0x0c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, - 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x1d, - 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x09, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x21, 0x0a, - 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x12, 0x28, 0x0a, 0x10, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x77, 0x69, 0x74, 0x68, - 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0xb7, 0x01, 0x0a, 0x11, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x75, 0x73, 0x65, 0x64, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, - 0x75, 0x73, 0x65, 0x64, 0x47, 0x61, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, - 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, - 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, - 0x72, 0x61, 0x63, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4b, 0x0a, 0x13, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x34, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, - 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x32, 0xa9, 0x07, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x12, 0x7a, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x69, - 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x69, - 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, - 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x7b, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x12, 0x84, 0x01, - 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, - 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6d, 0x69, 0x6e, - 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, - 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x2f, 0x7b, - 0x6b, 0x65, 0x79, 0x7d, 0x12, 0x94, 0x01, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x46, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x28, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, + 0x6e, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, + 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, + 0x22, 0x42, 0x0a, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x41, 0x64, 0x64, 0x72, 0x42, 0x79, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x04, + 0xe8, 0xa0, 0x1f, 0x01, 0x22, 0x38, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6e, + 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x22, 0x30, + 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x3a, 0x04, 0xe8, 0xa0, 0x1f, 0x01, + 0x22, 0xe2, 0x01, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x23, 0x0a, + 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, + 0x64, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x38, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x22, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, + 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, + 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x41, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x69, 0x6e, 0x69, + 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x63, 0x65, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6d, + 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, + 0x68, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x5f, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x69, 0x74, + 0x68, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x77, 0x69, + 0x74, 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0e, 0x77, 0x69, 0x74, 0x68, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x22, 0xb7, 0x01, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x61, 0x6c, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x67, 0x61, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x75, 0x73, 0x65, 0x64, 0x47, 0x61, 0x73, + 0x12, 0x32, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x6f, 0x67, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x04, + 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x63, + 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x14, 0x0a, + 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x4b, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x6e, + 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x32, 0xc0, 0x08, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x7a, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, + 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, + 0x25, 0x2f, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x12, 0x84, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, + 0x2c, 0x2f, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, + 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x7d, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x12, 0x94, 0x01, + 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x28, + 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x52, 0x43, 0x32, 0x30, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, + 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x6d, 0x69, + 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x2f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x66, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x94, 0x01, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, 0x72, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x28, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x52, 0x43, 0x32, - 0x30, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x30, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x52, 0x43, 0x32, 0x30, 0x46, 0x61, 0x63, 0x74, 0x6f, - 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x73, 0x2f, 0x65, 0x72, - 0x63, 0x32, 0x30, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0xa4, 0x01, 0x0a, 0x13, + 0x63, 0x32, 0x30, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0xa4, 0x01, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x42, 0x79, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, 0x2f, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, @@ -7838,7 +8695,7 @@ func file_minievm_evm_v1_query_proto_rawDescGZIP() []byte { return file_minievm_evm_v1_query_proto_rawDescData } -var file_minievm_evm_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_minievm_evm_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_minievm_evm_v1_query_proto_goTypes = []interface{}{ (*QueryCodeRequest)(nil), // 0: minievm.evm.v1.QueryCodeRequest (*QueryCodeResponse)(nil), // 1: minievm.evm.v1.QueryCodeResponse @@ -7846,38 +8703,42 @@ var file_minievm_evm_v1_query_proto_goTypes = []interface{}{ (*QueryStateResponse)(nil), // 3: minievm.evm.v1.QueryStateResponse (*QueryERC20FactoryRequest)(nil), // 4: minievm.evm.v1.QueryERC20FactoryRequest (*QueryERC20FactoryResponse)(nil), // 5: minievm.evm.v1.QueryERC20FactoryResponse - (*QueryContractAddrByDenomRequest)(nil), // 6: minievm.evm.v1.QueryContractAddrByDenomRequest - (*QueryContractAddrByDenomResponse)(nil), // 7: minievm.evm.v1.QueryContractAddrByDenomResponse - (*QueryDenomRequest)(nil), // 8: minievm.evm.v1.QueryDenomRequest - (*QueryDenomResponse)(nil), // 9: minievm.evm.v1.QueryDenomResponse - (*QueryCallRequest)(nil), // 10: minievm.evm.v1.QueryCallRequest - (*TraceOptions)(nil), // 11: minievm.evm.v1.TraceOptions - (*QueryCallResponse)(nil), // 12: minievm.evm.v1.QueryCallResponse - (*QueryParamsRequest)(nil), // 13: minievm.evm.v1.QueryParamsRequest - (*QueryParamsResponse)(nil), // 14: minievm.evm.v1.QueryParamsResponse - (*Log)(nil), // 15: minievm.evm.v1.Log - (*Params)(nil), // 16: minievm.evm.v1.Params + (*QueryERC20WrapperRequest)(nil), // 6: minievm.evm.v1.QueryERC20WrapperRequest + (*QueryERC20WrapperResponse)(nil), // 7: minievm.evm.v1.QueryERC20WrapperResponse + (*QueryContractAddrByDenomRequest)(nil), // 8: minievm.evm.v1.QueryContractAddrByDenomRequest + (*QueryContractAddrByDenomResponse)(nil), // 9: minievm.evm.v1.QueryContractAddrByDenomResponse + (*QueryDenomRequest)(nil), // 10: minievm.evm.v1.QueryDenomRequest + (*QueryDenomResponse)(nil), // 11: minievm.evm.v1.QueryDenomResponse + (*QueryCallRequest)(nil), // 12: minievm.evm.v1.QueryCallRequest + (*TraceOptions)(nil), // 13: minievm.evm.v1.TraceOptions + (*QueryCallResponse)(nil), // 14: minievm.evm.v1.QueryCallResponse + (*QueryParamsRequest)(nil), // 15: minievm.evm.v1.QueryParamsRequest + (*QueryParamsResponse)(nil), // 16: minievm.evm.v1.QueryParamsResponse + (*Log)(nil), // 17: minievm.evm.v1.Log + (*Params)(nil), // 18: minievm.evm.v1.Params } var file_minievm_evm_v1_query_proto_depIdxs = []int32{ - 11, // 0: minievm.evm.v1.QueryCallRequest.trace_options:type_name -> minievm.evm.v1.TraceOptions - 15, // 1: minievm.evm.v1.QueryCallResponse.logs:type_name -> minievm.evm.v1.Log - 16, // 2: minievm.evm.v1.QueryParamsResponse.params:type_name -> minievm.evm.v1.Params + 13, // 0: minievm.evm.v1.QueryCallRequest.trace_options:type_name -> minievm.evm.v1.TraceOptions + 17, // 1: minievm.evm.v1.QueryCallResponse.logs:type_name -> minievm.evm.v1.Log + 18, // 2: minievm.evm.v1.QueryParamsResponse.params:type_name -> minievm.evm.v1.Params 0, // 3: minievm.evm.v1.Query.Code:input_type -> minievm.evm.v1.QueryCodeRequest 2, // 4: minievm.evm.v1.Query.State:input_type -> minievm.evm.v1.QueryStateRequest 4, // 5: minievm.evm.v1.Query.ERC20Factory:input_type -> minievm.evm.v1.QueryERC20FactoryRequest - 6, // 6: minievm.evm.v1.Query.ContractAddrByDenom:input_type -> minievm.evm.v1.QueryContractAddrByDenomRequest - 8, // 7: minievm.evm.v1.Query.Denom:input_type -> minievm.evm.v1.QueryDenomRequest - 10, // 8: minievm.evm.v1.Query.Call:input_type -> minievm.evm.v1.QueryCallRequest - 13, // 9: minievm.evm.v1.Query.Params:input_type -> minievm.evm.v1.QueryParamsRequest - 1, // 10: minievm.evm.v1.Query.Code:output_type -> minievm.evm.v1.QueryCodeResponse - 3, // 11: minievm.evm.v1.Query.State:output_type -> minievm.evm.v1.QueryStateResponse - 5, // 12: minievm.evm.v1.Query.ERC20Factory:output_type -> minievm.evm.v1.QueryERC20FactoryResponse - 7, // 13: minievm.evm.v1.Query.ContractAddrByDenom:output_type -> minievm.evm.v1.QueryContractAddrByDenomResponse - 9, // 14: minievm.evm.v1.Query.Denom:output_type -> minievm.evm.v1.QueryDenomResponse - 12, // 15: minievm.evm.v1.Query.Call:output_type -> minievm.evm.v1.QueryCallResponse - 14, // 16: minievm.evm.v1.Query.Params:output_type -> minievm.evm.v1.QueryParamsResponse - 10, // [10:17] is the sub-list for method output_type - 3, // [3:10] is the sub-list for method input_type + 6, // 6: minievm.evm.v1.Query.ERC20Wrapper:input_type -> minievm.evm.v1.QueryERC20WrapperRequest + 8, // 7: minievm.evm.v1.Query.ContractAddrByDenom:input_type -> minievm.evm.v1.QueryContractAddrByDenomRequest + 10, // 8: minievm.evm.v1.Query.Denom:input_type -> minievm.evm.v1.QueryDenomRequest + 12, // 9: minievm.evm.v1.Query.Call:input_type -> minievm.evm.v1.QueryCallRequest + 15, // 10: minievm.evm.v1.Query.Params:input_type -> minievm.evm.v1.QueryParamsRequest + 1, // 11: minievm.evm.v1.Query.Code:output_type -> minievm.evm.v1.QueryCodeResponse + 3, // 12: minievm.evm.v1.Query.State:output_type -> minievm.evm.v1.QueryStateResponse + 5, // 13: minievm.evm.v1.Query.ERC20Factory:output_type -> minievm.evm.v1.QueryERC20FactoryResponse + 7, // 14: minievm.evm.v1.Query.ERC20Wrapper:output_type -> minievm.evm.v1.QueryERC20WrapperResponse + 9, // 15: minievm.evm.v1.Query.ContractAddrByDenom:output_type -> minievm.evm.v1.QueryContractAddrByDenomResponse + 11, // 16: minievm.evm.v1.Query.Denom:output_type -> minievm.evm.v1.QueryDenomResponse + 14, // 17: minievm.evm.v1.Query.Call:output_type -> minievm.evm.v1.QueryCallResponse + 16, // 18: minievm.evm.v1.Query.Params:output_type -> minievm.evm.v1.QueryParamsResponse + 11, // [11:19] is the sub-list for method output_type + 3, // [3:11] is the sub-list for method input_type 3, // [3:3] is the sub-list for extension type_name 3, // [3:3] is the sub-list for extension extendee 0, // [0:3] is the sub-list for field type_name @@ -7963,7 +8824,7 @@ func file_minievm_evm_v1_query_proto_init() { } } file_minievm_evm_v1_query_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryContractAddrByDenomRequest); i { + switch v := v.(*QueryERC20WrapperRequest); i { case 0: return &v.state case 1: @@ -7975,7 +8836,7 @@ func file_minievm_evm_v1_query_proto_init() { } } file_minievm_evm_v1_query_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryContractAddrByDenomResponse); i { + switch v := v.(*QueryERC20WrapperResponse); i { case 0: return &v.state case 1: @@ -7987,7 +8848,7 @@ func file_minievm_evm_v1_query_proto_init() { } } file_minievm_evm_v1_query_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryDenomRequest); i { + switch v := v.(*QueryContractAddrByDenomRequest); i { case 0: return &v.state case 1: @@ -7999,7 +8860,7 @@ func file_minievm_evm_v1_query_proto_init() { } } file_minievm_evm_v1_query_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryDenomResponse); i { + switch v := v.(*QueryContractAddrByDenomResponse); i { case 0: return &v.state case 1: @@ -8011,7 +8872,7 @@ func file_minievm_evm_v1_query_proto_init() { } } file_minievm_evm_v1_query_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryCallRequest); i { + switch v := v.(*QueryDenomRequest); i { case 0: return &v.state case 1: @@ -8023,7 +8884,7 @@ func file_minievm_evm_v1_query_proto_init() { } } file_minievm_evm_v1_query_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TraceOptions); i { + switch v := v.(*QueryDenomResponse); i { case 0: return &v.state case 1: @@ -8035,7 +8896,7 @@ func file_minievm_evm_v1_query_proto_init() { } } file_minievm_evm_v1_query_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryCallResponse); i { + switch v := v.(*QueryCallRequest); i { case 0: return &v.state case 1: @@ -8047,7 +8908,7 @@ func file_minievm_evm_v1_query_proto_init() { } } file_minievm_evm_v1_query_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryParamsRequest); i { + switch v := v.(*TraceOptions); i { case 0: return &v.state case 1: @@ -8059,6 +8920,30 @@ func file_minievm_evm_v1_query_proto_init() { } } file_minievm_evm_v1_query_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryCallResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_minievm_evm_v1_query_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QueryParamsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_minievm_evm_v1_query_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryParamsResponse); i { case 0: return &v.state @@ -8077,7 +8962,7 @@ func file_minievm_evm_v1_query_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_minievm_evm_v1_query_proto_rawDesc, NumEnums: 0, - NumMessages: 15, + NumMessages: 17, NumExtensions: 0, NumServices: 1, }, diff --git a/api/minievm/evm/v1/query_grpc.pb.go b/api/minievm/evm/v1/query_grpc.pb.go index 021a5e7..74685c4 100644 --- a/api/minievm/evm/v1/query_grpc.pb.go +++ b/api/minievm/evm/v1/query_grpc.pb.go @@ -22,6 +22,7 @@ const ( Query_Code_FullMethodName = "/minievm.evm.v1.Query/Code" Query_State_FullMethodName = "/minievm.evm.v1.Query/State" Query_ERC20Factory_FullMethodName = "/minievm.evm.v1.Query/ERC20Factory" + Query_ERC20Wrapper_FullMethodName = "/minievm.evm.v1.Query/ERC20Wrapper" Query_ContractAddrByDenom_FullMethodName = "/minievm.evm.v1.Query/ContractAddrByDenom" Query_Denom_FullMethodName = "/minievm.evm.v1.Query/Denom" Query_Call_FullMethodName = "/minievm.evm.v1.Query/Call" @@ -38,6 +39,8 @@ type QueryClient interface { State(ctx context.Context, in *QueryStateRequest, opts ...grpc.CallOption) (*QueryStateResponse, error) // ERC20Factory gets the ERC20Factory contract address. ERC20Factory(ctx context.Context, in *QueryERC20FactoryRequest, opts ...grpc.CallOption) (*QueryERC20FactoryResponse, error) + // ERC20Wrapper gets the ERC20Wrapper contract address. + ERC20Wrapper(ctx context.Context, in *QueryERC20WrapperRequest, opts ...grpc.CallOption) (*QueryERC20WrapperResponse, error) // ContractAddrByDenom gets the contract address by denom. ContractAddrByDenom(ctx context.Context, in *QueryContractAddrByDenomRequest, opts ...grpc.CallOption) (*QueryContractAddrByDenomResponse, error) // Denom gets the denom of the given contract address. @@ -83,6 +86,15 @@ func (c *queryClient) ERC20Factory(ctx context.Context, in *QueryERC20FactoryReq return out, nil } +func (c *queryClient) ERC20Wrapper(ctx context.Context, in *QueryERC20WrapperRequest, opts ...grpc.CallOption) (*QueryERC20WrapperResponse, error) { + out := new(QueryERC20WrapperResponse) + err := c.cc.Invoke(ctx, Query_ERC20Wrapper_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *queryClient) ContractAddrByDenom(ctx context.Context, in *QueryContractAddrByDenomRequest, opts ...grpc.CallOption) (*QueryContractAddrByDenomResponse, error) { out := new(QueryContractAddrByDenomResponse) err := c.cc.Invoke(ctx, Query_ContractAddrByDenom_FullMethodName, in, out, opts...) @@ -129,6 +141,8 @@ type QueryServer interface { State(context.Context, *QueryStateRequest) (*QueryStateResponse, error) // ERC20Factory gets the ERC20Factory contract address. ERC20Factory(context.Context, *QueryERC20FactoryRequest) (*QueryERC20FactoryResponse, error) + // ERC20Wrapper gets the ERC20Wrapper contract address. + ERC20Wrapper(context.Context, *QueryERC20WrapperRequest) (*QueryERC20WrapperResponse, error) // ContractAddrByDenom gets the contract address by denom. ContractAddrByDenom(context.Context, *QueryContractAddrByDenomRequest) (*QueryContractAddrByDenomResponse, error) // Denom gets the denom of the given contract address. @@ -153,6 +167,9 @@ func (UnimplementedQueryServer) State(context.Context, *QueryStateRequest) (*Que func (UnimplementedQueryServer) ERC20Factory(context.Context, *QueryERC20FactoryRequest) (*QueryERC20FactoryResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ERC20Factory not implemented") } +func (UnimplementedQueryServer) ERC20Wrapper(context.Context, *QueryERC20WrapperRequest) (*QueryERC20WrapperResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ERC20Wrapper not implemented") +} func (UnimplementedQueryServer) ContractAddrByDenom(context.Context, *QueryContractAddrByDenomRequest) (*QueryContractAddrByDenomResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ContractAddrByDenom not implemented") } @@ -232,6 +249,24 @@ func _Query_ERC20Factory_Handler(srv interface{}, ctx context.Context, dec func( return interceptor(ctx, in, info, handler) } +func _Query_ERC20Wrapper_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryERC20WrapperRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).ERC20Wrapper(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Query_ERC20Wrapper_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ERC20Wrapper(ctx, req.(*QueryERC20WrapperRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Query_ContractAddrByDenom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(QueryContractAddrByDenomRequest) if err := dec(in); err != nil { @@ -323,6 +358,10 @@ var Query_ServiceDesc = grpc.ServiceDesc{ MethodName: "ERC20Factory", Handler: _Query_ERC20Factory_Handler, }, + { + MethodName: "ERC20Wrapper", + Handler: _Query_ERC20Wrapper_Handler, + }, { MethodName: "ContractAddrByDenom", Handler: _Query_ContractAddrByDenom_Handler, diff --git a/api/minievm/evm/v1/tx.pulsar.go b/api/minievm/evm/v1/tx.pulsar.go index bb1a3ce..d3381bd 100644 --- a/api/minievm/evm/v1/tx.pulsar.go +++ b/api/minievm/evm/v1/tx.pulsar.go @@ -16,11 +16,63 @@ import ( sync "sync" ) +var _ protoreflect.List = (*_MsgCreate_4_list)(nil) + +type _MsgCreate_4_list struct { + list *[]*AccessTuple +} + +func (x *_MsgCreate_4_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_MsgCreate_4_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_MsgCreate_4_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*AccessTuple) + (*x.list)[i] = concreteValue +} + +func (x *_MsgCreate_4_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*AccessTuple) + *x.list = append(*x.list, concreteValue) +} + +func (x *_MsgCreate_4_list) AppendMutable() protoreflect.Value { + v := new(AccessTuple) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgCreate_4_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_MsgCreate_4_list) NewElement() protoreflect.Value { + v := new(AccessTuple) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgCreate_4_list) IsValid() bool { + return x.list != nil +} + var ( - md_MsgCreate protoreflect.MessageDescriptor - fd_MsgCreate_sender protoreflect.FieldDescriptor - fd_MsgCreate_code protoreflect.FieldDescriptor - fd_MsgCreate_value protoreflect.FieldDescriptor + md_MsgCreate protoreflect.MessageDescriptor + fd_MsgCreate_sender protoreflect.FieldDescriptor + fd_MsgCreate_code protoreflect.FieldDescriptor + fd_MsgCreate_value protoreflect.FieldDescriptor + fd_MsgCreate_access_list protoreflect.FieldDescriptor ) func init() { @@ -29,6 +81,7 @@ func init() { fd_MsgCreate_sender = md_MsgCreate.Fields().ByName("sender") fd_MsgCreate_code = md_MsgCreate.Fields().ByName("code") fd_MsgCreate_value = md_MsgCreate.Fields().ByName("value") + fd_MsgCreate_access_list = md_MsgCreate.Fields().ByName("access_list") } var _ protoreflect.Message = (*fastReflection_MsgCreate)(nil) @@ -114,6 +167,12 @@ func (x *fastReflection_MsgCreate) Range(f func(protoreflect.FieldDescriptor, pr return } } + if len(x.AccessList) != 0 { + value := protoreflect.ValueOfList(&_MsgCreate_4_list{list: &x.AccessList}) + if !f(fd_MsgCreate_access_list, value) { + return + } + } } // Has reports whether a field is populated. @@ -135,6 +194,8 @@ func (x *fastReflection_MsgCreate) Has(fd protoreflect.FieldDescriptor) bool { return x.Code != "" case "minievm.evm.v1.MsgCreate.value": return x.Value != "" + case "minievm.evm.v1.MsgCreate.access_list": + return len(x.AccessList) != 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCreate")) @@ -157,6 +218,8 @@ func (x *fastReflection_MsgCreate) Clear(fd protoreflect.FieldDescriptor) { x.Code = "" case "minievm.evm.v1.MsgCreate.value": x.Value = "" + case "minievm.evm.v1.MsgCreate.access_list": + x.AccessList = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCreate")) @@ -182,6 +245,12 @@ func (x *fastReflection_MsgCreate) Get(descriptor protoreflect.FieldDescriptor) case "minievm.evm.v1.MsgCreate.value": value := x.Value return protoreflect.ValueOfString(value) + case "minievm.evm.v1.MsgCreate.access_list": + if len(x.AccessList) == 0 { + return protoreflect.ValueOfList(&_MsgCreate_4_list{}) + } + listValue := &_MsgCreate_4_list{list: &x.AccessList} + return protoreflect.ValueOfList(listValue) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCreate")) @@ -208,6 +277,10 @@ func (x *fastReflection_MsgCreate) Set(fd protoreflect.FieldDescriptor, value pr x.Code = value.Interface().(string) case "minievm.evm.v1.MsgCreate.value": x.Value = value.Interface().(string) + case "minievm.evm.v1.MsgCreate.access_list": + lv := value.List() + clv := lv.(*_MsgCreate_4_list) + x.AccessList = *clv.list default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCreate")) @@ -228,6 +301,12 @@ func (x *fastReflection_MsgCreate) Set(fd protoreflect.FieldDescriptor, value pr // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgCreate) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "minievm.evm.v1.MsgCreate.access_list": + if x.AccessList == nil { + x.AccessList = []*AccessTuple{} + } + value := &_MsgCreate_4_list{list: &x.AccessList} + return protoreflect.ValueOfList(value) case "minievm.evm.v1.MsgCreate.sender": panic(fmt.Errorf("field sender of message minievm.evm.v1.MsgCreate is not mutable")) case "minievm.evm.v1.MsgCreate.code": @@ -253,6 +332,9 @@ func (x *fastReflection_MsgCreate) NewField(fd protoreflect.FieldDescriptor) pro return protoreflect.ValueOfString("") case "minievm.evm.v1.MsgCreate.value": return protoreflect.ValueOfString("") + case "minievm.evm.v1.MsgCreate.access_list": + list := []*AccessTuple{} + return protoreflect.ValueOfList(&_MsgCreate_4_list{list: &list}) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCreate")) @@ -334,6 +416,12 @@ func (x *fastReflection_MsgCreate) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if len(x.AccessList) > 0 { + for _, e := range x.AccessList { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -363,6 +451,22 @@ func (x *fastReflection_MsgCreate) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.AccessList) > 0 { + for iNdEx := len(x.AccessList) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.AccessList[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x22 + } + } if len(x.Value) > 0 { i -= len(x.Value) copy(dAtA[i:], x.Value) @@ -529,6 +633,40 @@ func (x *fastReflection_MsgCreate) ProtoMethods() *protoiface.Methods { } x.Value = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 4: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AccessList", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.AccessList = append(x.AccessList, &AccessTuple{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AccessList[len(x.AccessList)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -1186,12 +1324,64 @@ func (x *fastReflection_MsgCreateResponse) ProtoMethods() *protoiface.Methods { } } +var _ protoreflect.List = (*_MsgCreate2_5_list)(nil) + +type _MsgCreate2_5_list struct { + list *[]*AccessTuple +} + +func (x *_MsgCreate2_5_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_MsgCreate2_5_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_MsgCreate2_5_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*AccessTuple) + (*x.list)[i] = concreteValue +} + +func (x *_MsgCreate2_5_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*AccessTuple) + *x.list = append(*x.list, concreteValue) +} + +func (x *_MsgCreate2_5_list) AppendMutable() protoreflect.Value { + v := new(AccessTuple) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgCreate2_5_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_MsgCreate2_5_list) NewElement() protoreflect.Value { + v := new(AccessTuple) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgCreate2_5_list) IsValid() bool { + return x.list != nil +} + var ( - md_MsgCreate2 protoreflect.MessageDescriptor - fd_MsgCreate2_sender protoreflect.FieldDescriptor - fd_MsgCreate2_code protoreflect.FieldDescriptor - fd_MsgCreate2_salt protoreflect.FieldDescriptor - fd_MsgCreate2_value protoreflect.FieldDescriptor + md_MsgCreate2 protoreflect.MessageDescriptor + fd_MsgCreate2_sender protoreflect.FieldDescriptor + fd_MsgCreate2_code protoreflect.FieldDescriptor + fd_MsgCreate2_salt protoreflect.FieldDescriptor + fd_MsgCreate2_value protoreflect.FieldDescriptor + fd_MsgCreate2_access_list protoreflect.FieldDescriptor ) func init() { @@ -1201,6 +1391,7 @@ func init() { fd_MsgCreate2_code = md_MsgCreate2.Fields().ByName("code") fd_MsgCreate2_salt = md_MsgCreate2.Fields().ByName("salt") fd_MsgCreate2_value = md_MsgCreate2.Fields().ByName("value") + fd_MsgCreate2_access_list = md_MsgCreate2.Fields().ByName("access_list") } var _ protoreflect.Message = (*fastReflection_MsgCreate2)(nil) @@ -1292,6 +1483,12 @@ func (x *fastReflection_MsgCreate2) Range(f func(protoreflect.FieldDescriptor, p return } } + if len(x.AccessList) != 0 { + value := protoreflect.ValueOfList(&_MsgCreate2_5_list{list: &x.AccessList}) + if !f(fd_MsgCreate2_access_list, value) { + return + } + } } // Has reports whether a field is populated. @@ -1315,6 +1512,8 @@ func (x *fastReflection_MsgCreate2) Has(fd protoreflect.FieldDescriptor) bool { return x.Salt != uint64(0) case "minievm.evm.v1.MsgCreate2.value": return x.Value != "" + case "minievm.evm.v1.MsgCreate2.access_list": + return len(x.AccessList) != 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCreate2")) @@ -1339,6 +1538,8 @@ func (x *fastReflection_MsgCreate2) Clear(fd protoreflect.FieldDescriptor) { x.Salt = uint64(0) case "minievm.evm.v1.MsgCreate2.value": x.Value = "" + case "minievm.evm.v1.MsgCreate2.access_list": + x.AccessList = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCreate2")) @@ -1367,6 +1568,12 @@ func (x *fastReflection_MsgCreate2) Get(descriptor protoreflect.FieldDescriptor) case "minievm.evm.v1.MsgCreate2.value": value := x.Value return protoreflect.ValueOfString(value) + case "minievm.evm.v1.MsgCreate2.access_list": + if len(x.AccessList) == 0 { + return protoreflect.ValueOfList(&_MsgCreate2_5_list{}) + } + listValue := &_MsgCreate2_5_list{list: &x.AccessList} + return protoreflect.ValueOfList(listValue) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCreate2")) @@ -1395,6 +1602,10 @@ func (x *fastReflection_MsgCreate2) Set(fd protoreflect.FieldDescriptor, value p x.Salt = value.Uint() case "minievm.evm.v1.MsgCreate2.value": x.Value = value.Interface().(string) + case "minievm.evm.v1.MsgCreate2.access_list": + lv := value.List() + clv := lv.(*_MsgCreate2_5_list) + x.AccessList = *clv.list default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCreate2")) @@ -1415,6 +1626,12 @@ func (x *fastReflection_MsgCreate2) Set(fd protoreflect.FieldDescriptor, value p // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgCreate2) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "minievm.evm.v1.MsgCreate2.access_list": + if x.AccessList == nil { + x.AccessList = []*AccessTuple{} + } + value := &_MsgCreate2_5_list{list: &x.AccessList} + return protoreflect.ValueOfList(value) case "minievm.evm.v1.MsgCreate2.sender": panic(fmt.Errorf("field sender of message minievm.evm.v1.MsgCreate2 is not mutable")) case "minievm.evm.v1.MsgCreate2.code": @@ -1444,6 +1661,9 @@ func (x *fastReflection_MsgCreate2) NewField(fd protoreflect.FieldDescriptor) pr return protoreflect.ValueOfUint64(uint64(0)) case "minievm.evm.v1.MsgCreate2.value": return protoreflect.ValueOfString("") + case "minievm.evm.v1.MsgCreate2.access_list": + list := []*AccessTuple{} + return protoreflect.ValueOfList(&_MsgCreate2_5_list{list: &list}) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCreate2")) @@ -1528,6 +1748,12 @@ func (x *fastReflection_MsgCreate2) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if len(x.AccessList) > 0 { + for _, e := range x.AccessList { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -1557,6 +1783,22 @@ func (x *fastReflection_MsgCreate2) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.AccessList) > 0 { + for iNdEx := len(x.AccessList) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.AccessList[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x2a + } + } if len(x.Value) > 0 { i -= len(x.Value) copy(dAtA[i:], x.Value) @@ -1747,6 +1989,40 @@ func (x *fastReflection_MsgCreate2) ProtoMethods() *protoiface.Methods { } x.Value = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AccessList", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.AccessList = append(x.AccessList, &AccessTuple{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AccessList[len(x.AccessList)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -2404,12 +2680,64 @@ func (x *fastReflection_MsgCreate2Response) ProtoMethods() *protoiface.Methods { } } +var _ protoreflect.List = (*_MsgCall_5_list)(nil) + +type _MsgCall_5_list struct { + list *[]*AccessTuple +} + +func (x *_MsgCall_5_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_MsgCall_5_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_MsgCall_5_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*AccessTuple) + (*x.list)[i] = concreteValue +} + +func (x *_MsgCall_5_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*AccessTuple) + *x.list = append(*x.list, concreteValue) +} + +func (x *_MsgCall_5_list) AppendMutable() protoreflect.Value { + v := new(AccessTuple) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgCall_5_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_MsgCall_5_list) NewElement() protoreflect.Value { + v := new(AccessTuple) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_MsgCall_5_list) IsValid() bool { + return x.list != nil +} + var ( md_MsgCall protoreflect.MessageDescriptor fd_MsgCall_sender protoreflect.FieldDescriptor fd_MsgCall_contract_addr protoreflect.FieldDescriptor fd_MsgCall_input protoreflect.FieldDescriptor fd_MsgCall_value protoreflect.FieldDescriptor + fd_MsgCall_access_list protoreflect.FieldDescriptor ) func init() { @@ -2419,6 +2747,7 @@ func init() { fd_MsgCall_contract_addr = md_MsgCall.Fields().ByName("contract_addr") fd_MsgCall_input = md_MsgCall.Fields().ByName("input") fd_MsgCall_value = md_MsgCall.Fields().ByName("value") + fd_MsgCall_access_list = md_MsgCall.Fields().ByName("access_list") } var _ protoreflect.Message = (*fastReflection_MsgCall)(nil) @@ -2510,6 +2839,12 @@ func (x *fastReflection_MsgCall) Range(f func(protoreflect.FieldDescriptor, prot return } } + if len(x.AccessList) != 0 { + value := protoreflect.ValueOfList(&_MsgCall_5_list{list: &x.AccessList}) + if !f(fd_MsgCall_access_list, value) { + return + } + } } // Has reports whether a field is populated. @@ -2533,6 +2868,8 @@ func (x *fastReflection_MsgCall) Has(fd protoreflect.FieldDescriptor) bool { return x.Input != "" case "minievm.evm.v1.MsgCall.value": return x.Value != "" + case "minievm.evm.v1.MsgCall.access_list": + return len(x.AccessList) != 0 default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCall")) @@ -2557,6 +2894,8 @@ func (x *fastReflection_MsgCall) Clear(fd protoreflect.FieldDescriptor) { x.Input = "" case "minievm.evm.v1.MsgCall.value": x.Value = "" + case "minievm.evm.v1.MsgCall.access_list": + x.AccessList = nil default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCall")) @@ -2585,6 +2924,12 @@ func (x *fastReflection_MsgCall) Get(descriptor protoreflect.FieldDescriptor) pr case "minievm.evm.v1.MsgCall.value": value := x.Value return protoreflect.ValueOfString(value) + case "minievm.evm.v1.MsgCall.access_list": + if len(x.AccessList) == 0 { + return protoreflect.ValueOfList(&_MsgCall_5_list{}) + } + listValue := &_MsgCall_5_list{list: &x.AccessList} + return protoreflect.ValueOfList(listValue) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCall")) @@ -2613,6 +2958,10 @@ func (x *fastReflection_MsgCall) Set(fd protoreflect.FieldDescriptor, value prot x.Input = value.Interface().(string) case "minievm.evm.v1.MsgCall.value": x.Value = value.Interface().(string) + case "minievm.evm.v1.MsgCall.access_list": + lv := value.List() + clv := lv.(*_MsgCall_5_list) + x.AccessList = *clv.list default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCall")) @@ -2633,6 +2982,12 @@ func (x *fastReflection_MsgCall) Set(fd protoreflect.FieldDescriptor, value prot // Mutable is a mutating operation and unsafe for concurrent use. func (x *fastReflection_MsgCall) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { switch fd.FullName() { + case "minievm.evm.v1.MsgCall.access_list": + if x.AccessList == nil { + x.AccessList = []*AccessTuple{} + } + value := &_MsgCall_5_list{list: &x.AccessList} + return protoreflect.ValueOfList(value) case "minievm.evm.v1.MsgCall.sender": panic(fmt.Errorf("field sender of message minievm.evm.v1.MsgCall is not mutable")) case "minievm.evm.v1.MsgCall.contract_addr": @@ -2662,6 +3017,9 @@ func (x *fastReflection_MsgCall) NewField(fd protoreflect.FieldDescriptor) proto return protoreflect.ValueOfString("") case "minievm.evm.v1.MsgCall.value": return protoreflect.ValueOfString("") + case "minievm.evm.v1.MsgCall.access_list": + list := []*AccessTuple{} + return protoreflect.ValueOfList(&_MsgCall_5_list{list: &list}) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.MsgCall")) @@ -2747,6 +3105,12 @@ func (x *fastReflection_MsgCall) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if len(x.AccessList) > 0 { + for _, e := range x.AccessList { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -2776,6 +3140,22 @@ func (x *fastReflection_MsgCall) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if len(x.AccessList) > 0 { + for iNdEx := len(x.AccessList) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.AccessList[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x2a + } + } if len(x.Value) > 0 { i -= len(x.Value) copy(dAtA[i:], x.Value) @@ -2981,6 +3361,40 @@ func (x *fastReflection_MsgCall) ProtoMethods() *protoiface.Methods { } x.Value = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field AccessList", wireType) + } + var msglen int + 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++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + 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.AccessList = append(x.AccessList, &AccessTuple{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.AccessList[len(x.AccessList)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -4454,6 +4868,8 @@ type MsgCreate struct { Code string `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` // Value is the amount of fee denom token to transfer to the contract. Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + // AccessList is a predefined list of Ethereum addresses and their corresponding storage slots that a transaction will interact with during its execution. can be none + AccessList []*AccessTuple `protobuf:"bytes,4,rep,name=access_list,json=accessList,proto3" json:"access_list,omitempty"` } func (x *MsgCreate) Reset() { @@ -4497,6 +4913,13 @@ func (x *MsgCreate) GetValue() string { return "" } +func (x *MsgCreate) GetAccessList() []*AccessTuple { + if x != nil { + return x.AccessList + } + return nil +} + // MsgCreateResponse defines the Msg/Create response type. type MsgCreateResponse struct { state protoimpl.MessageState @@ -4565,6 +4988,8 @@ type MsgCreate2 struct { Salt uint64 `protobuf:"varint,3,opt,name=salt,proto3" json:"salt,omitempty"` // Value is the amount of fee denom token to transfer to the contract. Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` + // AccessList is a predefined list of Ethereum addresses and their corresponding storage slots that a transaction will interact with during its execution. can be none + AccessList []*AccessTuple `protobuf:"bytes,5,rep,name=access_list,json=accessList,proto3" json:"access_list,omitempty"` } func (x *MsgCreate2) Reset() { @@ -4615,6 +5040,13 @@ func (x *MsgCreate2) GetValue() string { return "" } +func (x *MsgCreate2) GetAccessList() []*AccessTuple { + if x != nil { + return x.AccessList + } + return nil +} + // MsgCreate2Response defines the Msg/Create2 response type. type MsgCreate2Response struct { state protoimpl.MessageState @@ -4684,6 +5116,8 @@ type MsgCall struct { Input string `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"` // Value is the amount of fee denom token to transfer to the contract. Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` + // AccessList is a predefined list of Ethereum addresses and their corresponding storage slots that a transaction will interact with during its execution. can be none + AccessList []*AccessTuple `protobuf:"bytes,5,rep,name=access_list,json=accessList,proto3" json:"access_list,omitempty"` } func (x *MsgCall) Reset() { @@ -4734,6 +5168,13 @@ func (x *MsgCall) GetValue() string { return "" } +func (x *MsgCall) GetAccessList() []*AccessTuple { + if x != nil { + return x.AccessList + } + return nil +} + // MsgCallResponse defines the Msg/Call response type. type MsgCallResponse struct { state protoimpl.MessageState @@ -4869,7 +5310,7 @@ var file_minievm_evm_v1_tx_proto_rawDesc = []byte{ 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xb8, 0x01, 0x0a, 0x09, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x74, 0x6f, 0x22, 0x81, 0x02, 0x0a, 0x09, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, @@ -4878,101 +5319,114 @@ var file_minievm_evm_v1_tx_proto_rawDesc = []byte{ 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, - 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x1d, - 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x0d, - 0x65, 0x76, 0x6d, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x22, 0x84, 0x01, - 0x0a, 0x11, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, - 0x12, 0x32, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x6f, 0x67, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x04, - 0x6c, 0x6f, 0x67, 0x73, 0x22, 0xce, 0x01, 0x0a, 0x0a, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x32, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x73, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x61, 0x6c, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x12, 0x46, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xc8, 0xde, - 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, - 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x1e, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, - 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x0e, 0x65, 0x76, 0x6d, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x32, 0x22, 0x85, 0x01, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x47, + 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x75, 0x70, 0x6c, 0x65, + 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x1d, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x0d, 0x65, 0x76, 0x6d, 0x2f, 0x4d, 0x73, 0x67, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x22, 0x84, 0x01, 0x0a, 0x11, 0x4d, 0x73, 0x67, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x12, 0x32, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x42, 0x09, 0xc8, 0xde, - 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0xdb, 0x01, - 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x65, 0x6e, - 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, - 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0x97, 0x02, + 0x0a, 0x0a, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x32, 0x12, 0x30, 0x0a, 0x06, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, + 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, - 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x1b, - 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x0b, - 0x65, 0x76, 0x6d, 0x2f, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6c, 0x6c, 0x22, 0x5d, 0x0a, 0x0f, 0x4d, - 0x73, 0x67, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, + 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x47, + 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x75, 0x70, 0x6c, 0x65, + 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x1e, 0x82, 0xe7, 0xb0, 0x2a, 0x06, 0x73, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x0e, 0x65, 0x76, 0x6d, 0x2f, 0x4d, 0x73, 0x67, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x32, 0x22, 0x85, 0x01, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, - 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, - 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, - 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, - 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xbb, 0x02, 0x0a, - 0x03, 0x4d, 0x73, 0x67, 0x12, 0x46, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x19, - 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x1a, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x69, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x12, 0x32, 0x0a, 0x04, 0x6c, + 0x6f, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x69, + 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x42, 0x09, + 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, + 0xa4, 0x02, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x30, 0x0a, 0x06, 0x73, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, + 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x23, 0x0a, + 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, + 0x64, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xda, 0xde, 0x1f, + 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x6d, 0x61, + 0x74, 0x68, 0x2e, 0x49, 0x6e, 0x74, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x49, 0x6e, 0x74, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x47, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, + 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x75, 0x70, + 0x6c, 0x65, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x1b, 0x82, 0xe7, 0xb0, 0x2a, 0x06, + 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x0b, 0x65, 0x76, 0x6d, 0x2f, 0x4d, + 0x73, 0x67, 0x43, 0x61, 0x6c, 0x6c, 0x22, 0x5d, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6c, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x32, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x6f, 0x67, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, + 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, + 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, + 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x0e, 0x82, 0xe7, + 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x19, 0x0a, 0x17, + 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xbb, 0x02, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, + 0x46, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x32, 0x12, 0x1a, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, - 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x32, 0x1a, 0x22, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x32, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x43, 0x61, 0x6c, 0x6c, 0x12, - 0x17, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6c, 0x6c, 0x1a, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, - 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6c, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0c, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x69, - 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x6d, 0x69, 0x6e, - 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x9e, 0x01, 0x0a, 0x12, 0x63, - 0x6f, 0x6d, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, - 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x25, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, - 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x76, - 0x6d, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x4d, 0x69, 0x6e, 0x69, - 0x65, 0x76, 0x6d, 0x2e, 0x45, 0x76, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x4d, 0x69, 0x6e, - 0x69, 0x65, 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x4d, 0x69, - 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x4d, 0x69, 0x6e, 0x69, 0x65, - 0x76, 0x6d, 0x3a, 0x3a, 0x45, 0x76, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x65, 0x61, 0x74, 0x65, 0x1a, 0x21, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, + 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x32, 0x12, 0x1a, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x32, 0x1a, 0x22, + 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x73, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x17, 0x2e, 0x6d, 0x69, 0x6e, + 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, + 0x61, 0x6c, 0x6c, 0x1a, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1f, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, + 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x27, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, + 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, + 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x9e, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x69, + 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x25, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, + 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, + 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x76, 0x6d, 0x76, 0x31, 0xa2, 0x02, + 0x03, 0x4d, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x4d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x45, + 0x76, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x4d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x5c, + 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x4d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, + 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x4d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x3a, 0x3a, 0x45, + 0x76, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4997,27 +5451,31 @@ var file_minievm_evm_v1_tx_proto_goTypes = []interface{}{ (*MsgCallResponse)(nil), // 5: minievm.evm.v1.MsgCallResponse (*MsgUpdateParams)(nil), // 6: minievm.evm.v1.MsgUpdateParams (*MsgUpdateParamsResponse)(nil), // 7: minievm.evm.v1.MsgUpdateParamsResponse - (*Log)(nil), // 8: minievm.evm.v1.Log - (*Params)(nil), // 9: minievm.evm.v1.Params + (*AccessTuple)(nil), // 8: minievm.evm.v1.AccessTuple + (*Log)(nil), // 9: minievm.evm.v1.Log + (*Params)(nil), // 10: minievm.evm.v1.Params } var file_minievm_evm_v1_tx_proto_depIdxs = []int32{ - 8, // 0: minievm.evm.v1.MsgCreateResponse.logs:type_name -> minievm.evm.v1.Log - 8, // 1: minievm.evm.v1.MsgCreate2Response.logs:type_name -> minievm.evm.v1.Log - 8, // 2: minievm.evm.v1.MsgCallResponse.logs:type_name -> minievm.evm.v1.Log - 9, // 3: minievm.evm.v1.MsgUpdateParams.params:type_name -> minievm.evm.v1.Params - 0, // 4: minievm.evm.v1.Msg.Create:input_type -> minievm.evm.v1.MsgCreate - 2, // 5: minievm.evm.v1.Msg.Create2:input_type -> minievm.evm.v1.MsgCreate2 - 4, // 6: minievm.evm.v1.Msg.Call:input_type -> minievm.evm.v1.MsgCall - 6, // 7: minievm.evm.v1.Msg.UpdateParams:input_type -> minievm.evm.v1.MsgUpdateParams - 1, // 8: minievm.evm.v1.Msg.Create:output_type -> minievm.evm.v1.MsgCreateResponse - 3, // 9: minievm.evm.v1.Msg.Create2:output_type -> minievm.evm.v1.MsgCreate2Response - 5, // 10: minievm.evm.v1.Msg.Call:output_type -> minievm.evm.v1.MsgCallResponse - 7, // 11: minievm.evm.v1.Msg.UpdateParams:output_type -> minievm.evm.v1.MsgUpdateParamsResponse - 8, // [8:12] is the sub-list for method output_type - 4, // [4:8] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 8, // 0: minievm.evm.v1.MsgCreate.access_list:type_name -> minievm.evm.v1.AccessTuple + 9, // 1: minievm.evm.v1.MsgCreateResponse.logs:type_name -> minievm.evm.v1.Log + 8, // 2: minievm.evm.v1.MsgCreate2.access_list:type_name -> minievm.evm.v1.AccessTuple + 9, // 3: minievm.evm.v1.MsgCreate2Response.logs:type_name -> minievm.evm.v1.Log + 8, // 4: minievm.evm.v1.MsgCall.access_list:type_name -> minievm.evm.v1.AccessTuple + 9, // 5: minievm.evm.v1.MsgCallResponse.logs:type_name -> minievm.evm.v1.Log + 10, // 6: minievm.evm.v1.MsgUpdateParams.params:type_name -> minievm.evm.v1.Params + 0, // 7: minievm.evm.v1.Msg.Create:input_type -> minievm.evm.v1.MsgCreate + 2, // 8: minievm.evm.v1.Msg.Create2:input_type -> minievm.evm.v1.MsgCreate2 + 4, // 9: minievm.evm.v1.Msg.Call:input_type -> minievm.evm.v1.MsgCall + 6, // 10: minievm.evm.v1.Msg.UpdateParams:input_type -> minievm.evm.v1.MsgUpdateParams + 1, // 11: minievm.evm.v1.Msg.Create:output_type -> minievm.evm.v1.MsgCreateResponse + 3, // 12: minievm.evm.v1.Msg.Create2:output_type -> minievm.evm.v1.MsgCreate2Response + 5, // 13: minievm.evm.v1.Msg.Call:output_type -> minievm.evm.v1.MsgCallResponse + 7, // 14: minievm.evm.v1.Msg.UpdateParams:output_type -> minievm.evm.v1.MsgUpdateParamsResponse + 11, // [11:15] is the sub-list for method output_type + 7, // [7:11] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_minievm_evm_v1_tx_proto_init() } diff --git a/api/minievm/evm/v1/types.pulsar.go b/api/minievm/evm/v1/types.pulsar.go index b0f7ca4..963db0a 100644 --- a/api/minievm/evm/v1/types.pulsar.go +++ b/api/minievm/evm/v1/types.pulsar.go @@ -153,12 +153,14 @@ func (x *_Params_4_list) IsValid() bool { } var ( - md_Params protoreflect.MessageDescriptor - fd_Params_extra_eips protoreflect.FieldDescriptor - fd_Params_allowed_publishers protoreflect.FieldDescriptor - fd_Params_allow_custom_erc20 protoreflect.FieldDescriptor - fd_Params_allowed_custom_erc20s protoreflect.FieldDescriptor - fd_Params_fee_denom protoreflect.FieldDescriptor + md_Params protoreflect.MessageDescriptor + fd_Params_extra_eips protoreflect.FieldDescriptor + fd_Params_allowed_publishers protoreflect.FieldDescriptor + fd_Params_allow_custom_erc20 protoreflect.FieldDescriptor + fd_Params_allowed_custom_erc20s protoreflect.FieldDescriptor + fd_Params_fee_denom protoreflect.FieldDescriptor + fd_Params_gas_refund_ratio protoreflect.FieldDescriptor + fd_Params_num_retain_block_hashes protoreflect.FieldDescriptor ) func init() { @@ -169,6 +171,8 @@ func init() { fd_Params_allow_custom_erc20 = md_Params.Fields().ByName("allow_custom_erc20") fd_Params_allowed_custom_erc20s = md_Params.Fields().ByName("allowed_custom_erc20s") fd_Params_fee_denom = md_Params.Fields().ByName("fee_denom") + fd_Params_gas_refund_ratio = md_Params.Fields().ByName("gas_refund_ratio") + fd_Params_num_retain_block_hashes = md_Params.Fields().ByName("num_retain_block_hashes") } var _ protoreflect.Message = (*fastReflection_Params)(nil) @@ -266,6 +270,18 @@ func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, proto return } } + if x.GasRefundRatio != "" { + value := protoreflect.ValueOfString(x.GasRefundRatio) + if !f(fd_Params_gas_refund_ratio, value) { + return + } + } + if x.NumRetainBlockHashes != uint64(0) { + value := protoreflect.ValueOfUint64(x.NumRetainBlockHashes) + if !f(fd_Params_num_retain_block_hashes, value) { + return + } + } } // Has reports whether a field is populated. @@ -291,6 +307,10 @@ func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { return len(x.AllowedCustomErc20S) != 0 case "minievm.evm.v1.Params.fee_denom": return x.FeeDenom != "" + case "minievm.evm.v1.Params.gas_refund_ratio": + return x.GasRefundRatio != "" + case "minievm.evm.v1.Params.num_retain_block_hashes": + return x.NumRetainBlockHashes != uint64(0) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.Params")) @@ -317,6 +337,10 @@ func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { x.AllowedCustomErc20S = nil case "minievm.evm.v1.Params.fee_denom": x.FeeDenom = "" + case "minievm.evm.v1.Params.gas_refund_ratio": + x.GasRefundRatio = "" + case "minievm.evm.v1.Params.num_retain_block_hashes": + x.NumRetainBlockHashes = uint64(0) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.Params")) @@ -357,6 +381,12 @@ func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) pro case "minievm.evm.v1.Params.fee_denom": value := x.FeeDenom return protoreflect.ValueOfString(value) + case "minievm.evm.v1.Params.gas_refund_ratio": + value := x.GasRefundRatio + return protoreflect.ValueOfString(value) + case "minievm.evm.v1.Params.num_retain_block_hashes": + value := x.NumRetainBlockHashes + return protoreflect.ValueOfUint64(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.Params")) @@ -393,6 +423,10 @@ func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value proto x.AllowedCustomErc20S = *clv.list case "minievm.evm.v1.Params.fee_denom": x.FeeDenom = value.Interface().(string) + case "minievm.evm.v1.Params.gas_refund_ratio": + x.GasRefundRatio = value.Interface().(string) + case "minievm.evm.v1.Params.num_retain_block_hashes": + x.NumRetainBlockHashes = value.Uint() default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.Params")) @@ -435,6 +469,10 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore panic(fmt.Errorf("field allow_custom_erc20 of message minievm.evm.v1.Params is not mutable")) case "minievm.evm.v1.Params.fee_denom": panic(fmt.Errorf("field fee_denom of message minievm.evm.v1.Params is not mutable")) + case "minievm.evm.v1.Params.gas_refund_ratio": + panic(fmt.Errorf("field gas_refund_ratio of message minievm.evm.v1.Params is not mutable")) + case "minievm.evm.v1.Params.num_retain_block_hashes": + panic(fmt.Errorf("field num_retain_block_hashes of message minievm.evm.v1.Params is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.Params")) @@ -461,6 +499,10 @@ func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protor return protoreflect.ValueOfList(&_Params_4_list{list: &list}) case "minievm.evm.v1.Params.fee_denom": return protoreflect.ValueOfString("") + case "minievm.evm.v1.Params.gas_refund_ratio": + return protoreflect.ValueOfString("") + case "minievm.evm.v1.Params.num_retain_block_hashes": + return protoreflect.ValueOfUint64(uint64(0)) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.Params")) @@ -556,6 +598,13 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + l = len(x.GasRefundRatio) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if x.NumRetainBlockHashes != 0 { + n += 1 + runtime.Sov(uint64(x.NumRetainBlockHashes)) + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -585,6 +634,18 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.NumRetainBlockHashes != 0 { + i = runtime.EncodeVarint(dAtA, i, uint64(x.NumRetainBlockHashes)) + i-- + dAtA[i] = 0x38 + } + if len(x.GasRefundRatio) > 0 { + i -= len(x.GasRefundRatio) + copy(dAtA[i:], x.GasRefundRatio) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.GasRefundRatio))) + i-- + dAtA[i] = 0x32 + } if len(x.FeeDenom) > 0 { i -= len(x.FeeDenom) copy(dAtA[i:], x.FeeDenom) @@ -882,6 +943,57 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { } x.FeeDenom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field GasRefundRatio", 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.GasRefundRatio = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field NumRetainBlockHashes", wireType) + } + x.NumRetainBlockHashes = 0 + 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++ + x.NumRetainBlockHashes |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -1525,231 +1637,862 @@ func (x *fastReflection_Log) ProtoMethods() *protoiface.Methods { } } -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.27.0 -// protoc (unknown) -// source: minievm/evm/v1/types.proto - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// Params defines the set of move parameters. -type Params struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +var _ protoreflect.List = (*_AccessTuple_2_list)(nil) - // extra_eips defines the additional EIPs for the vm.Config - ExtraEips []int64 `protobuf:"varint,1,rep,packed,name=extra_eips,json=extraEips,proto3" json:"extra_eips,omitempty"` - // It is a list of addresses with permission to distribute contracts, - // and an empty list is interpreted as allowing anyone to distribute. - AllowedPublishers []string `protobuf:"bytes,2,rep,name=allowed_publishers,json=allowedPublishers,proto3" json:"allowed_publishers,omitempty"` - // allow_custom_erc20 defines whether the chain allows custom erc20 tokens - // to be registered on cosmos bank interface. - AllowCustomErc20 bool `protobuf:"varint,3,opt,name=allow_custom_erc20,json=allowCustomErc20,proto3" json:"allow_custom_erc20,omitempty"` - AllowedCustomErc20S []string `protobuf:"bytes,4,rep,name=allowed_custom_erc20s,json=allowedCustomErc20s,proto3" json:"allowed_custom_erc20s,omitempty"` - // fee_denom defines the fee denom for the evm transactions - FeeDenom string `protobuf:"bytes,5,opt,name=fee_denom,json=feeDenom,proto3" json:"fee_denom,omitempty"` +type _AccessTuple_2_list struct { + list *[]string } -func (x *Params) Reset() { - *x = Params{} - if protoimpl.UnsafeEnabled { - mi := &file_minievm_evm_v1_types_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *_AccessTuple_2_list) Len() int { + if x.list == nil { + return 0 } + return len(*x.list) } -func (x *Params) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *_AccessTuple_2_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfString((*x.list)[i]) } -func (*Params) ProtoMessage() {} +func (x *_AccessTuple_2_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + (*x.list)[i] = concreteValue +} -// Deprecated: Use Params.ProtoReflect.Descriptor instead. -func (*Params) Descriptor() ([]byte, []int) { - return file_minievm_evm_v1_types_proto_rawDescGZIP(), []int{0} +func (x *_AccessTuple_2_list) Append(value protoreflect.Value) { + valueUnwrapped := value.String() + concreteValue := valueUnwrapped + *x.list = append(*x.list, concreteValue) } -func (x *Params) GetExtraEips() []int64 { - if x != nil { - return x.ExtraEips - } - return nil +func (x *_AccessTuple_2_list) AppendMutable() protoreflect.Value { + panic(fmt.Errorf("AppendMutable can not be called on message AccessTuple at list field StorageKeys as it is not of Message kind")) } -func (x *Params) GetAllowedPublishers() []string { - if x != nil { - return x.AllowedPublishers - } - return nil +func (x *_AccessTuple_2_list) Truncate(n int) { + *x.list = (*x.list)[:n] } -func (x *Params) GetAllowCustomErc20() bool { - if x != nil { - return x.AllowCustomErc20 - } - return false +func (x *_AccessTuple_2_list) NewElement() protoreflect.Value { + v := "" + return protoreflect.ValueOfString(v) } -func (x *Params) GetAllowedCustomErc20S() []string { - if x != nil { - return x.AllowedCustomErc20S - } - return nil +func (x *_AccessTuple_2_list) IsValid() bool { + return x.list != nil } -func (x *Params) GetFeeDenom() string { - if x != nil { - return x.FeeDenom - } - return "" +var ( + md_AccessTuple protoreflect.MessageDescriptor + fd_AccessTuple_address protoreflect.FieldDescriptor + fd_AccessTuple_storage_keys protoreflect.FieldDescriptor +) + +func init() { + file_minievm_evm_v1_types_proto_init() + md_AccessTuple = File_minievm_evm_v1_types_proto.Messages().ByName("AccessTuple") + fd_AccessTuple_address = md_AccessTuple.Fields().ByName("address") + fd_AccessTuple_storage_keys = md_AccessTuple.Fields().ByName("storage_keys") } -// Log represents a contract log event. These events are generated by -// the LOG opcode and stored/indexed by the node. -type Log struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +var _ protoreflect.Message = (*fastReflection_AccessTuple)(nil) - // address of the contract that generated the event - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - // list of topics provided by the contract. - Topics []string `protobuf:"bytes,2,rep,name=topics,proto3" json:"topics,omitempty"` - // supplied by the contract, usually ABI-encoded - Data string `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` +type fastReflection_AccessTuple AccessTuple + +func (x *AccessTuple) ProtoReflect() protoreflect.Message { + return (*fastReflection_AccessTuple)(x) } -func (x *Log) Reset() { - *x = Log{} - if protoimpl.UnsafeEnabled { - mi := &file_minievm_evm_v1_types_proto_msgTypes[1] +func (x *AccessTuple) slowProtoReflect() protoreflect.Message { + mi := &file_minievm_evm_v1_types_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } + return mi.MessageOf(x) } -func (x *Log) String() string { - return protoimpl.X.MessageStringOf(x) -} +var _fastReflection_AccessTuple_messageType fastReflection_AccessTuple_messageType +var _ protoreflect.MessageType = fastReflection_AccessTuple_messageType{} -func (*Log) ProtoMessage() {} +type fastReflection_AccessTuple_messageType struct{} -// Deprecated: Use Log.ProtoReflect.Descriptor instead. -func (*Log) Descriptor() ([]byte, []int) { - return file_minievm_evm_v1_types_proto_rawDescGZIP(), []int{1} +func (x fastReflection_AccessTuple_messageType) Zero() protoreflect.Message { + return (*fastReflection_AccessTuple)(nil) } - -func (x *Log) GetAddress() string { - if x != nil { - return x.Address - } - return "" +func (x fastReflection_AccessTuple_messageType) New() protoreflect.Message { + return new(fastReflection_AccessTuple) } - -func (x *Log) GetTopics() []string { - if x != nil { - return x.Topics - } - return nil +func (x fastReflection_AccessTuple_messageType) Descriptor() protoreflect.MessageDescriptor { + return md_AccessTuple } -func (x *Log) GetData() string { - if x != nil { - return x.Data - } - return "" +// Descriptor returns message descriptor, which contains only the protobuf +// type information for the message. +func (x *fastReflection_AccessTuple) Descriptor() protoreflect.MessageDescriptor { + return md_AccessTuple } -var File_minievm_evm_v1_types_proto protoreflect.FileDescriptor - -var file_minievm_evm_v1_types_proto_rawDesc = []byte{ - 0x0a, 0x1a, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x6d, 0x69, - 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x1a, 0x11, 0x61, 0x6d, - 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x03, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x41, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x65, 0x69, 0x70, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x03, 0x42, 0x22, 0xe2, 0xde, 0x1f, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, - 0x49, 0x50, 0x73, 0xf2, 0xde, 0x1f, 0x11, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x65, 0x78, 0x74, - 0x72, 0x61, 0x5f, 0x65, 0x69, 0x70, 0x73, 0x22, 0x52, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, 0x45, - 0x69, 0x70, 0x73, 0x12, 0x51, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, - 0x22, 0xf2, 0xde, 0x1f, 0x19, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x22, 0xa8, 0xe7, - 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x14, 0xe2, 0xde, 0x1f, 0x10, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x72, 0x63, 0x32, 0x30, 0x12, 0x70, 0x0a, 0x15, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x72, 0x63, - 0x32, 0x30, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x3c, 0xe2, 0xde, 0x1f, 0x13, 0x41, - 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x52, 0x43, 0x32, - 0x30, 0x73, 0xf2, 0xde, 0x1f, 0x1c, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, - 0x73, 0x22, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x72, 0x63, 0x32, 0x30, 0x73, 0x12, 0x31, 0x0a, 0x09, - 0x66, 0x65, 0x65, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x14, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x66, 0x65, 0x65, 0x5f, 0x64, - 0x65, 0x6e, 0x6f, 0x6d, 0x22, 0x52, 0x08, 0x66, 0x65, 0x65, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x3a, - 0x17, 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x8a, 0xe7, 0xb0, 0x2a, 0x0a, 0x65, 0x76, - 0x6d, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x4b, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, - 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x70, - 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, - 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0xa9, 0x01, 0xc8, 0xe1, 0x1e, 0x00, 0xa8, 0xe2, 0x1e, 0x01, - 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, - 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x25, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, - 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x76, 0x6d, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x45, 0x58, 0xaa, - 0x02, 0x0e, 0x4d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x45, 0x76, 0x6d, 0x2e, 0x56, 0x31, - 0xca, 0x02, 0x0e, 0x4d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, - 0x31, 0xe2, 0x02, 0x1a, 0x4d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, - 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x10, 0x4d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x3a, 0x3a, 0x45, 0x76, 0x6d, 0x3a, 0x3a, 0x56, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +// Type returns the message type, which encapsulates both Go and protobuf +// type information. If the Go type information is not needed, +// it is recommended that the message descriptor be used instead. +func (x *fastReflection_AccessTuple) Type() protoreflect.MessageType { + return _fastReflection_AccessTuple_messageType } -var ( - file_minievm_evm_v1_types_proto_rawDescOnce sync.Once - file_minievm_evm_v1_types_proto_rawDescData = file_minievm_evm_v1_types_proto_rawDesc -) - -func file_minievm_evm_v1_types_proto_rawDescGZIP() []byte { - file_minievm_evm_v1_types_proto_rawDescOnce.Do(func() { - file_minievm_evm_v1_types_proto_rawDescData = protoimpl.X.CompressGZIP(file_minievm_evm_v1_types_proto_rawDescData) - }) - return file_minievm_evm_v1_types_proto_rawDescData +// New returns a newly allocated and mutable empty message. +func (x *fastReflection_AccessTuple) New() protoreflect.Message { + return new(fastReflection_AccessTuple) } -var file_minievm_evm_v1_types_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_minievm_evm_v1_types_proto_goTypes = []interface{}{ - (*Params)(nil), // 0: minievm.evm.v1.Params - (*Log)(nil), // 1: minievm.evm.v1.Log -} -var file_minievm_evm_v1_types_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name +// Interface unwraps the message reflection interface and +// returns the underlying ProtoMessage interface. +func (x *fastReflection_AccessTuple) Interface() protoreflect.ProtoMessage { + return (*AccessTuple)(x) } -func init() { file_minievm_evm_v1_types_proto_init() } -func file_minievm_evm_v1_types_proto_init() { - if File_minievm_evm_v1_types_proto != nil { - return +// Range iterates over every populated field in an undefined order, +// calling f for each field descriptor and value encountered. +// Range returns immediately if f returns false. +// While iterating, mutating operations may only be performed +// on the current field descriptor. +func (x *fastReflection_AccessTuple) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) { + if x.Address != "" { + value := protoreflect.ValueOfString(x.Address) + if !f(fd_AccessTuple_address, value) { + return + } + } + if len(x.StorageKeys) != 0 { + value := protoreflect.ValueOfList(&_AccessTuple_2_list{list: &x.StorageKeys}) + if !f(fd_AccessTuple_storage_keys, value) { + return + } + } +} + +// Has reports whether a field is populated. +// +// Some fields have the property of nullability where it is possible to +// distinguish between the default value of a field and whether the field +// was explicitly populated with the default value. Singular message fields, +// member fields of a oneof, and proto2 scalar fields are nullable. Such +// fields are populated only if explicitly set. +// +// In other cases (aside from the nullable cases above), +// a proto3 scalar field is populated if it contains a non-zero value, and +// a repeated field is populated if it is non-empty. +func (x *fastReflection_AccessTuple) Has(fd protoreflect.FieldDescriptor) bool { + switch fd.FullName() { + case "minievm.evm.v1.AccessTuple.address": + return x.Address != "" + case "minievm.evm.v1.AccessTuple.storage_keys": + return len(x.StorageKeys) != 0 + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.AccessTuple")) + } + panic(fmt.Errorf("message minievm.evm.v1.AccessTuple does not contain field %s", fd.FullName())) + } +} + +// Clear clears the field such that a subsequent Has call reports false. +// +// Clearing an extension field clears both the extension type and value +// associated with the given field number. +// +// Clear is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_AccessTuple) Clear(fd protoreflect.FieldDescriptor) { + switch fd.FullName() { + case "minievm.evm.v1.AccessTuple.address": + x.Address = "" + case "minievm.evm.v1.AccessTuple.storage_keys": + x.StorageKeys = nil + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.AccessTuple")) + } + panic(fmt.Errorf("message minievm.evm.v1.AccessTuple does not contain field %s", fd.FullName())) + } +} + +// Get retrieves the value for a field. +// +// For unpopulated scalars, it returns the default value, where +// the default value of a bytes scalar is guaranteed to be a copy. +// For unpopulated composite types, it returns an empty, read-only view +// of the value; to obtain a mutable reference, use Mutable. +func (x *fastReflection_AccessTuple) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value { + switch descriptor.FullName() { + case "minievm.evm.v1.AccessTuple.address": + value := x.Address + return protoreflect.ValueOfString(value) + case "minievm.evm.v1.AccessTuple.storage_keys": + if len(x.StorageKeys) == 0 { + return protoreflect.ValueOfList(&_AccessTuple_2_list{}) + } + listValue := &_AccessTuple_2_list{list: &x.StorageKeys} + return protoreflect.ValueOfList(listValue) + default: + if descriptor.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.AccessTuple")) + } + panic(fmt.Errorf("message minievm.evm.v1.AccessTuple does not contain field %s", descriptor.FullName())) + } +} + +// Set stores the value for a field. +// +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType. +// When setting a composite type, it is unspecified whether the stored value +// aliases the source's memory in any way. If the composite value is an +// empty, read-only value, then it panics. +// +// Set is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_AccessTuple) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) { + switch fd.FullName() { + case "minievm.evm.v1.AccessTuple.address": + x.Address = value.Interface().(string) + case "minievm.evm.v1.AccessTuple.storage_keys": + lv := value.List() + clv := lv.(*_AccessTuple_2_list) + x.StorageKeys = *clv.list + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.AccessTuple")) + } + panic(fmt.Errorf("message minievm.evm.v1.AccessTuple does not contain field %s", fd.FullName())) + } +} + +// Mutable returns a mutable reference to a composite type. +// +// If the field is unpopulated, it may allocate a composite value. +// For a field belonging to a oneof, it implicitly clears any other field +// that may be currently set within the same oneof. +// For extension fields, it implicitly stores the provided ExtensionType +// if not already stored. +// It panics if the field does not contain a composite type. +// +// Mutable is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_AccessTuple) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "minievm.evm.v1.AccessTuple.storage_keys": + if x.StorageKeys == nil { + x.StorageKeys = []string{} + } + value := &_AccessTuple_2_list{list: &x.StorageKeys} + return protoreflect.ValueOfList(value) + case "minievm.evm.v1.AccessTuple.address": + panic(fmt.Errorf("field address of message minievm.evm.v1.AccessTuple is not mutable")) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.AccessTuple")) + } + panic(fmt.Errorf("message minievm.evm.v1.AccessTuple does not contain field %s", fd.FullName())) + } +} + +// NewField returns a new value that is assignable to the field +// for the given descriptor. For scalars, this returns the default value. +// For lists, maps, and messages, this returns a new, empty, mutable value. +func (x *fastReflection_AccessTuple) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value { + switch fd.FullName() { + case "minievm.evm.v1.AccessTuple.address": + return protoreflect.ValueOfString("") + case "minievm.evm.v1.AccessTuple.storage_keys": + list := []string{} + return protoreflect.ValueOfList(&_AccessTuple_2_list{list: &list}) + default: + if fd.IsExtension() { + panic(fmt.Errorf("proto3 declared messages do not support extensions: minievm.evm.v1.AccessTuple")) + } + panic(fmt.Errorf("message minievm.evm.v1.AccessTuple does not contain field %s", fd.FullName())) + } +} + +// WhichOneof reports which field within the oneof is populated, +// returning nil if none are populated. +// It panics if the oneof descriptor does not belong to this message. +func (x *fastReflection_AccessTuple) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor { + switch d.FullName() { + default: + panic(fmt.Errorf("%s is not a oneof field in minievm.evm.v1.AccessTuple", d.FullName())) + } + panic("unreachable") +} + +// GetUnknown retrieves the entire list of unknown fields. +// The caller may only mutate the contents of the RawFields +// if the mutated bytes are stored back into the message with SetUnknown. +func (x *fastReflection_AccessTuple) GetUnknown() protoreflect.RawFields { + return x.unknownFields +} + +// SetUnknown stores an entire list of unknown fields. +// The raw fields must be syntactically valid according to the wire format. +// An implementation may panic if this is not the case. +// Once stored, the caller must not mutate the content of the RawFields. +// An empty RawFields may be passed to clear the fields. +// +// SetUnknown is a mutating operation and unsafe for concurrent use. +func (x *fastReflection_AccessTuple) SetUnknown(fields protoreflect.RawFields) { + x.unknownFields = fields +} + +// IsValid reports whether the message is valid. +// +// An invalid message is an empty, read-only value. +// +// An invalid message often corresponds to a nil pointer of the concrete +// message type, but the details are implementation dependent. +// Validity is not part of the protobuf data model, and may not +// be preserved in marshaling or other operations. +func (x *fastReflection_AccessTuple) IsValid() bool { + return x != nil +} + +// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations. +// This method may return nil. +// +// The returned methods type is identical to +// "google.golang.org/protobuf/runtime/protoiface".Methods. +// Consult the protoiface package documentation for details. +func (x *fastReflection_AccessTuple) ProtoMethods() *protoiface.Methods { + size := func(input protoiface.SizeInput) protoiface.SizeOutput { + x := input.Message.Interface().(*AccessTuple) + if x == nil { + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: 0, + } + } + options := runtime.SizeInputToOptions(input) + _ = options + var n int + var l int + _ = l + l = len(x.Address) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.StorageKeys) > 0 { + for _, s := range x.StorageKeys { + l = len(s) + n += 1 + l + runtime.Sov(uint64(l)) + } + } + if x.unknownFields != nil { + n += len(x.unknownFields) + } + return protoiface.SizeOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Size: n, + } + } + + marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) { + x := input.Message.Interface().(*AccessTuple) + if x == nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + options := runtime.MarshalInputToOptions(input) + _ = options + size := options.Size(x) + dAtA := make([]byte, size) + i := len(dAtA) + _ = i + var l int + _ = l + if x.unknownFields != nil { + i -= len(x.unknownFields) + copy(dAtA[i:], x.unknownFields) + } + if len(x.StorageKeys) > 0 { + for iNdEx := len(x.StorageKeys) - 1; iNdEx >= 0; iNdEx-- { + i -= len(x.StorageKeys[iNdEx]) + copy(dAtA[i:], x.StorageKeys[iNdEx]) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.StorageKeys[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(x.Address) > 0 { + i -= len(x.Address) + copy(dAtA[i:], x.Address) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Address))) + i-- + dAtA[i] = 0xa + } + if input.Buf != nil { + input.Buf = append(input.Buf, dAtA...) + } else { + input.Buf = dAtA + } + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, nil + } + unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + x := input.Message.Interface().(*AccessTuple) + if x == nil { + return protoiface.UnmarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Flags: input.Flags, + }, nil + } + options := runtime.UnmarshalInputToOptions(input) + _ = options + dAtA := input.Buf + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire 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++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: AccessTuple: wiretype end group for non-group") + } + if fieldNum <= 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: AccessTuple: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Address", 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.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field StorageKeys", 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.StorageKeys = append(x.StorageKeys, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := runtime.Skip(dAtA[iNdEx:]) + if err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if !options.DiscardUnknown { + x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + } + iNdEx += skippy + } + } + + if iNdEx > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil + } + return &protoiface.Methods{ + NoUnkeyedLiterals: struct{}{}, + Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown, + Size: size, + Marshal: marshal, + Unmarshal: unmarshal, + Merge: nil, + CheckInitialized: nil, + } +} + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.0 +// protoc (unknown) +// source: minievm/evm/v1/types.proto + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Params defines the set of move parameters. +type Params struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // extra_eips defines the additional EIPs for the vm.Config + ExtraEips []int64 `protobuf:"varint,1,rep,packed,name=extra_eips,json=extraEips,proto3" json:"extra_eips,omitempty"` + // It is a list of addresses with permission to distribute contracts, + // and an empty list is interpreted as allowing anyone to distribute. + AllowedPublishers []string `protobuf:"bytes,2,rep,name=allowed_publishers,json=allowedPublishers,proto3" json:"allowed_publishers,omitempty"` + // allow_custom_erc20 defines whether the chain allows custom erc20 tokens + // to be registered on cosmos bank interface. + AllowCustomErc20 bool `protobuf:"varint,3,opt,name=allow_custom_erc20,json=allowCustomErc20,proto3" json:"allow_custom_erc20,omitempty"` + AllowedCustomErc20S []string `protobuf:"bytes,4,rep,name=allowed_custom_erc20s,json=allowedCustomErc20s,proto3" json:"allowed_custom_erc20s,omitempty"` + // fee_denom defines the fee denom for the evm transactions + FeeDenom string `protobuf:"bytes,5,opt,name=fee_denom,json=feeDenom,proto3" json:"fee_denom,omitempty"` + // gas_refund_ratio defines the gas refund ratio for the evm transactions + // If the gas refund ratio is 0, the gas refund is disabled. + GasRefundRatio string `protobuf:"bytes,6,opt,name=gas_refund_ratio,json=gasRefundRatio,proto3" json:"gas_refund_ratio,omitempty"` + // num_retain_block_hashes defines the number of block hashes to retain + // for the evm opcode `BLOCKHASH`. + // + // minimum is 256 and 0 means no limit. + NumRetainBlockHashes uint64 `protobuf:"varint,7,opt,name=num_retain_block_hashes,json=numRetainBlockHashes,proto3" json:"num_retain_block_hashes,omitempty"` +} + +func (x *Params) Reset() { + *x = Params{} + if protoimpl.UnsafeEnabled { + mi := &file_minievm_evm_v1_types_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Params) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Params) ProtoMessage() {} + +// Deprecated: Use Params.ProtoReflect.Descriptor instead. +func (*Params) Descriptor() ([]byte, []int) { + return file_minievm_evm_v1_types_proto_rawDescGZIP(), []int{0} +} + +func (x *Params) GetExtraEips() []int64 { + if x != nil { + return x.ExtraEips + } + return nil +} + +func (x *Params) GetAllowedPublishers() []string { + if x != nil { + return x.AllowedPublishers + } + return nil +} + +func (x *Params) GetAllowCustomErc20() bool { + if x != nil { + return x.AllowCustomErc20 + } + return false +} + +func (x *Params) GetAllowedCustomErc20S() []string { + if x != nil { + return x.AllowedCustomErc20S + } + return nil +} + +func (x *Params) GetFeeDenom() string { + if x != nil { + return x.FeeDenom + } + return "" +} + +func (x *Params) GetGasRefundRatio() string { + if x != nil { + return x.GasRefundRatio + } + return "" +} + +func (x *Params) GetNumRetainBlockHashes() uint64 { + if x != nil { + return x.NumRetainBlockHashes + } + return 0 +} + +// Log represents a contract log event. These events are generated by +// the LOG opcode and stored/indexed by the node. +type Log struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // address of the contract that generated the event + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // list of topics provided by the contract. + Topics []string `protobuf:"bytes,2,rep,name=topics,proto3" json:"topics,omitempty"` + // supplied by the contract, usually ABI-encoded + Data string `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *Log) Reset() { + *x = Log{} + if protoimpl.UnsafeEnabled { + mi := &file_minievm_evm_v1_types_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Log) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Log) ProtoMessage() {} + +// Deprecated: Use Log.ProtoReflect.Descriptor instead. +func (*Log) Descriptor() ([]byte, []int) { + return file_minievm_evm_v1_types_proto_rawDescGZIP(), []int{1} +} + +func (x *Log) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *Log) GetTopics() []string { + if x != nil { + return x.Topics + } + return nil +} + +func (x *Log) GetData() string { + if x != nil { + return x.Data + } + return "" +} + +type AccessTuple struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Address of the contract that will be accessed during the transaction execution. + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // A list of storage keys that the transaction will interact with within the specified contract. + // These keys represent specific storage slots in the contract's storage that are accessed or modified. + StorageKeys []string `protobuf:"bytes,2,rep,name=storage_keys,json=storageKeys,proto3" json:"storage_keys,omitempty"` +} + +func (x *AccessTuple) Reset() { + *x = AccessTuple{} + if protoimpl.UnsafeEnabled { + mi := &file_minievm_evm_v1_types_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AccessTuple) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccessTuple) ProtoMessage() {} + +// Deprecated: Use AccessTuple.ProtoReflect.Descriptor instead. +func (*AccessTuple) Descriptor() ([]byte, []int) { + return file_minievm_evm_v1_types_proto_rawDescGZIP(), []int{2} +} + +func (x *AccessTuple) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *AccessTuple) GetStorageKeys() []string { + if x != nil { + return x.StorageKeys + } + return nil +} + +var File_minievm_evm_v1_types_proto protoreflect.FileDescriptor + +var file_minievm_evm_v1_types_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x6d, 0x69, + 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x1a, 0x11, 0x61, 0x6d, + 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xef, 0x04, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x12, 0x41, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x65, 0x69, 0x70, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x03, 0x42, 0x22, 0xe2, 0xde, 0x1f, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, + 0x49, 0x50, 0x73, 0xf2, 0xde, 0x1f, 0x11, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x65, 0x78, 0x74, + 0x72, 0x61, 0x5f, 0x65, 0x69, 0x70, 0x73, 0x22, 0x52, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, 0x45, + 0x69, 0x70, 0x73, 0x12, 0x51, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x22, 0xf2, 0xde, 0x1f, 0x19, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x65, 0x64, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x22, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x12, 0x42, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x14, 0xe2, 0xde, 0x1f, 0x10, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x45, 0x52, 0x43, 0x32, 0x30, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x72, 0x63, 0x32, 0x30, 0x12, 0x70, 0x0a, 0x15, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x3c, 0xe2, 0xde, 0x1f, 0x13, 0x41, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x52, 0x43, 0x32, + 0x30, 0x73, 0xf2, 0xde, 0x1f, 0x1c, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x72, 0x63, 0x32, 0x30, + 0x73, 0x22, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x72, 0x63, 0x32, 0x30, 0x73, 0x12, 0x31, 0x0a, 0x09, + 0x66, 0x65, 0x65, 0x5f, 0x64, 0x65, 0x6e, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x14, 0xf2, 0xde, 0x1f, 0x10, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x66, 0x65, 0x65, 0x5f, 0x64, + 0x65, 0x6e, 0x6f, 0x6d, 0x22, 0x52, 0x08, 0x66, 0x65, 0x65, 0x44, 0x65, 0x6e, 0x6f, 0x6d, 0x12, + 0x6d, 0x0a, 0x10, 0x67, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x5f, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x43, 0xc8, 0xde, 0x1f, 0x00, 0xda, + 0xde, 0x1f, 0x1b, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, + 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x44, 0x65, 0x63, 0xf2, 0xde, + 0x1f, 0x17, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x67, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x75, + 0x6e, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x22, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0e, + 0x67, 0x61, 0x73, 0x52, 0x65, 0x66, 0x75, 0x6e, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x5e, + 0x0a, 0x17, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x27, 0xf2, 0xde, 0x1f, 0x1e, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x22, 0x6e, 0x75, 0x6d, 0x5f, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x65, 0x73, 0x22, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x74, + 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x3a, 0x17, + 0x98, 0xa0, 0x1f, 0x00, 0xe8, 0xa0, 0x1f, 0x01, 0x8a, 0xe7, 0xb0, 0x2a, 0x0a, 0x65, 0x76, 0x6d, + 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x4b, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x18, + 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, + 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x4a, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x75, + 0x70, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x21, 0x0a, + 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x73, + 0x42, 0xa9, 0x01, 0xc8, 0xe1, 0x1e, 0x00, 0xa8, 0xe2, 0x1e, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, + 0x2e, 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x65, 0x76, 0x6d, 0x2e, 0x76, 0x31, 0x42, + 0x0a, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x25, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x6d, 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x2f, 0x65, 0x76, 0x6d, 0x2f, 0x76, 0x31, 0x3b, 0x65, + 0x76, 0x6d, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x45, 0x58, 0xaa, 0x02, 0x0e, 0x4d, 0x69, 0x6e, + 0x69, 0x65, 0x76, 0x6d, 0x2e, 0x45, 0x76, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0e, 0x4d, 0x69, + 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1a, 0x4d, + 0x69, 0x6e, 0x69, 0x65, 0x76, 0x6d, 0x5c, 0x45, 0x76, 0x6d, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x4d, 0x69, 0x6e, 0x69, + 0x65, 0x76, 0x6d, 0x3a, 0x3a, 0x45, 0x76, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_minievm_evm_v1_types_proto_rawDescOnce sync.Once + file_minievm_evm_v1_types_proto_rawDescData = file_minievm_evm_v1_types_proto_rawDesc +) + +func file_minievm_evm_v1_types_proto_rawDescGZIP() []byte { + file_minievm_evm_v1_types_proto_rawDescOnce.Do(func() { + file_minievm_evm_v1_types_proto_rawDescData = protoimpl.X.CompressGZIP(file_minievm_evm_v1_types_proto_rawDescData) + }) + return file_minievm_evm_v1_types_proto_rawDescData +} + +var file_minievm_evm_v1_types_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_minievm_evm_v1_types_proto_goTypes = []interface{}{ + (*Params)(nil), // 0: minievm.evm.v1.Params + (*Log)(nil), // 1: minievm.evm.v1.Log + (*AccessTuple)(nil), // 2: minievm.evm.v1.AccessTuple +} +var file_minievm_evm_v1_types_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_minievm_evm_v1_types_proto_init() } +func file_minievm_evm_v1_types_proto_init() { + if File_minievm_evm_v1_types_proto != nil { + return } if !protoimpl.UnsafeEnabled { file_minievm_evm_v1_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { @@ -1776,6 +2519,18 @@ func file_minievm_evm_v1_types_proto_init() { return nil } } + file_minievm_evm_v1_types_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AccessTuple); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1783,7 +2538,7 @@ func file_minievm_evm_v1_types_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_minievm_evm_v1_types_proto_rawDesc, NumEnums: 0, - NumMessages: 2, + NumMessages: 3, NumExtensions: 0, NumServices: 0, }, diff --git a/app/app.go b/app/app.go index eba427d..be76d43 100644 --- a/app/app.go +++ b/app/app.go @@ -298,6 +298,9 @@ func NewMinitiaApp( } // override base-app's mempool + if app.evmIndexer != nil { + mempool = app.evmIndexer.MempoolWrapper(mempool) + } app.SetMempool(mempool) // override base-app's ante handler diff --git a/app/upgrade.go b/app/upgrade.go index fda1bb2..aa92dd8 100644 --- a/app/upgrade.go +++ b/app/upgrade.go @@ -3,17 +3,38 @@ package app import ( "context" + errorsmod "cosmossdk.io/errors" upgradetypes "cosmossdk.io/x/upgrade/types" "github.com/cosmos/cosmos-sdk/types/module" + + evmtypes "github.com/initia-labs/minievm/x/evm/types" ) -const upgradeName = "0.5.3" +const upgradeName = "0.5.7" // RegisterUpgradeHandlers returns upgrade handlers func (app *MinitiaApp) RegisterUpgradeHandlers(cfg module.Configurator) { app.UpgradeKeeper.SetUpgradeHandler( upgradeName, func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + // update evm params + params, err := app.EVMKeeper.Params.Get(ctx) + if err != nil { + return nil, errorsmod.Wrap(err, "failed to get evm params") + } + params.GasRefundRatio = evmtypes.DefaultParams().GasRefundRatio + params.NumRetainBlockHashes = 0 + err = app.EVMKeeper.Params.Set(ctx, params) + if err != nil { + return nil, errorsmod.Wrap(err, "failed to set evm params") + } + + // deploy and store erc20 wrapper contract address + err = app.EVMKeeper.DeployERC20Wrapper(ctx) + if err != nil { + return nil, err + } + return vm, nil }, ) diff --git a/indexer/abci.go b/indexer/abci.go index cab4b47..30ce855 100644 --- a/indexer/abci.go +++ b/indexer/abci.go @@ -201,7 +201,7 @@ func (e *EVMIndexerImpl) ListenFinalizeBlock(ctx context.Context, req abci.Reque } } - // TODO - currently state changes are not supported in abci listener, so we track cosmos block hash at x/evm endblocker. + // TODO - currently state changes are not supported in abci listener, so we track cosmos block hash at x/evm preblocker. // - https://github.com/cosmos/cosmos-sdk/issues/22246 // // err = e.evmKeeper.TrackBlockHash(sdkCtx, uint64(blockHeight), blockHash) diff --git a/jsonrpc/backend/txpool.go b/jsonrpc/backend/txpool.go index 4008d4f..5bdc7c1 100644 --- a/jsonrpc/backend/txpool.go +++ b/jsonrpc/backend/txpool.go @@ -57,6 +57,34 @@ func (b *JSONRPCBackend) TxPoolContent() (map[string]map[string]map[string]*rpct dump[fmt.Sprintf("%d", ethTx.Nonce())] = rpctypes.NewRPCTransaction(ethTx, common.Hash{}, 0, 0, chainID) } + // load queued txs + b.mut.Lock() + queuedTxs := b.queuedTxs.Values() + b.mut.Unlock() + + for _, tx := range queuedTxs { + cosmosTx, err := b.app.TxDecode(tx) + if err != nil { + return nil, err + } + + ethTx, account, err := txUtils.ConvertCosmosTxToEthereumTx(ctx, cosmosTx) + if err != nil { + return nil, err + } + if ethTx == nil { + continue + } + + dump, ok := content["queued"][account.Hex()] + if !ok { + dump = make(map[string]*rpctypes.RPCTransaction) + content["queued"][account.Hex()] = dump + } + + dump[fmt.Sprintf("%d", ethTx.Nonce())] = rpctypes.NewRPCTransaction(ethTx, common.Hash{}, 0, 0, chainID) + } + return content, nil } @@ -66,24 +94,27 @@ func (b *JSONRPCBackend) TxPoolContentFrom(addr common.Address) (map[string]map[ return nil, err } - dump := content["pending"][addr.Hex()] accountContent := make(map[string]map[string]*rpctypes.RPCTransaction, 2) - accountContent["pending"] = dump - accountContent["queued"] = make(map[string]*rpctypes.RPCTransaction) + accountContent["pending"] = content["pending"][addr.Hex()] + accountContent["queued"] = content["queued"][addr.Hex()] return accountContent, nil } // Status returns the number of pending and queued transaction in the pool. func (b *JSONRPCBackend) TxPoolStatus() (map[string]hexutil.Uint, error) { - numUnconfirmedTxs, err := b.clientCtx.Client.(rpcclient.MempoolClient).NumUnconfirmedTxs(b.ctx) + numPendingTxs, err := b.clientCtx.Client.(rpcclient.MempoolClient).NumUnconfirmedTxs(b.ctx) if err != nil { return nil, err } + b.mut.Lock() + numQueuedTxs := b.queuedTxs.Len() + b.mut.Unlock() + return map[string]hexutil.Uint{ - "pending": hexutil.Uint(numUnconfirmedTxs.Count), - "queued": hexutil.Uint(0), + "pending": hexutil.Uint(numPendingTxs.Count), + "queued": hexutil.Uint(numQueuedTxs), }, nil } @@ -115,5 +146,12 @@ func (b *JSONRPCBackend) TxPoolInspect() (map[string]map[string]map[string]strin } inspectContent["pending"][account] = dump } + for account, txs := range content["queued"] { + dump := make(map[string]string) + for _, tx := range txs { + dump[fmt.Sprintf("%d", tx.Nonce)] = format(tx) + } + inspectContent["queued"][account] = dump + } return inspectContent, nil } diff --git a/proto/minievm/evm/v1/tx.proto b/proto/minievm/evm/v1/tx.proto index d89e8c0..1845c14 100644 --- a/proto/minievm/evm/v1/tx.proto +++ b/proto/minievm/evm/v1/tx.proto @@ -43,7 +43,10 @@ message MsgCreate { (amino.dont_omitempty) = true ]; // AccessList is a predefined list of Ethereum addresses and their corresponding storage slots that a transaction will interact with during its execution. can be none - repeated AccessTuple access_list = 4 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + repeated AccessTuple access_list = 4 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true + ]; } // MsgCreateResponse defines the Msg/Create response type. @@ -83,7 +86,10 @@ message MsgCreate2 { ]; // AccessList is a predefined list of Ethereum addresses and their corresponding storage slots that a transaction will interact with during its execution. can be none - repeated AccessTuple access_list = 5 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + repeated AccessTuple access_list = 5 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true + ]; } // MsgCreate2Response defines the Msg/Create2 response type. @@ -124,7 +130,10 @@ message MsgCall { ]; // AccessList is a predefined list of Ethereum addresses and their corresponding storage slots that a transaction will interact with during its execution. can be none - repeated AccessTuple access_list = 5 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + repeated AccessTuple access_list = 5 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true + ]; } // MsgCallResponse defines the Msg/Call response type. diff --git a/proto/minievm/evm/v1/types.proto b/proto/minievm/evm/v1/types.proto index 4c0e372..8fe4d97 100644 --- a/proto/minievm/evm/v1/types.proto +++ b/proto/minievm/evm/v1/types.proto @@ -47,6 +47,15 @@ message Params { (gogoproto.nullable) = false, (amino.dont_omitempty) = true ]; + + // num_retain_block_hashes defines the number of block hashes to retain + // for the evm opcode `BLOCKHASH`. + // + // minimum is 256 and 0 means no limit. + uint64 num_retain_block_hashes = 7 [ + (gogoproto.moretags) = "yaml:\"num_retain_block_hashes\"", + (amino.dont_omitempty) = true + ]; } // Log represents a contract log event. These events are generated by @@ -67,4 +76,4 @@ message AccessTuple { // A list of storage keys that the transaction will interact with within the specified contract. // These keys represent specific storage slots in the contract's storage that are accessed or modified. repeated string storage_keys = 2; -} \ No newline at end of file +} diff --git a/x/evm/autocli.go b/x/evm/autocli.go index 508994f..0ade745 100644 --- a/x/evm/autocli.go +++ b/x/evm/autocli.go @@ -40,6 +40,12 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { Short: "Query erc20-factory contract address", Alias: []string{"factory"}, }, + { + RpcMethod: "ERC20Wrapper", + Use: "erc20-wrapper", + Short: "Query erc20-wrapper contract address", + Alias: []string{"wrapper"}, + }, { RpcMethod: "ContractAddrByDenom", Use: "contract-addr-by-denom [denom]", diff --git a/x/evm/contracts/erc20_wrapper/ERC20Wrapper.go b/x/evm/contracts/erc20_wrapper/ERC20Wrapper.go index 002de85..9e46d02 100644 --- a/x/evm/contracts/erc20_wrapper/ERC20Wrapper.go +++ b/x/evm/contracts/erc20_wrapper/ERC20Wrapper.go @@ -32,7 +32,7 @@ var ( // Erc20WrapperMetaData contains all meta data concerning the Erc20Wrapper contract. var Erc20WrapperMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20Factory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"erc20\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC20Created\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"createERC20\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contractERC20Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"callback_id\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"ibc_ack\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"callback_id\",\"type\":\"uint64\"}],\"name\":\"ibc_timeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"originTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"wrappedTokenDenom\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wrappedAmt\",\"type\":\"uint256\"}],\"name\":\"unwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"channel\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"receiver\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"}],\"name\":\"wrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wrappedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040525f8060146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550348015610037575f80fd5b5060405161520e38038061520e83398181016040528101906100599190610130565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505061015b565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100ff826100d6565b9050919050565b61010f816100f5565b8114610119575f80fd5b50565b5f8151905061012a81610106565b92915050565b5f60208284031215610145576101446100d2565b5b5f6101528482850161011c565b91505092915050565b60805161509461017a5f395f8181610935015261101501526150945ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c80639a1114321161006f5780639a11143214610161578063b5ad1fb61461017d578063c45a0155146101ad578063d5c6b504146101cb578063f2fde38b146101fb578063fc07875814610217576100a7565b806301ffc9a7146100ab57806306ef1a86146100db5780630d4f1f9d1461010b57806331a503f0146101275780638da5cb5b14610143575b5f80fd5b6100c560048036038101906100c09190611a72565b610233565b6040516100d29190611ab7565b60405180910390f35b6100f560048036038101906100f09190611c42565b61029c565b6040516101029190611d09565b60405180910390f35b61012560048036038101906101209190611d89565b61041b565b005b610141600480360381019061013c9190611dc7565b61042e565b005b61014b61043a565b6040516101589190611d09565b60405180910390f35b61017b60048036038101906101769190611e4f565b61045d565b005b61019760048036038101906101929190611efe565b610903565b6040516101a49190611d09565b60405180910390f35b6101b5610933565b6040516101c29190611f84565b60405180910390f35b6101e560048036038101906101e09190611efe565b610957565b6040516101f29190611d09565b60405180910390f35b61021560048036038101906102109190611efe565b610987565b005b610231600480360381019061022c9190611f9d565b610acf565b005b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f808484846040516102ad906119ff565b6102b993929190612078565b604051809103905ff0801580156102d2573d5f803e3d5ffd5b50905060f273ffffffffffffffffffffffffffffffffffffffff1663d126274a826040518263ffffffff1660e01b815260040161030f9190611d09565b6020604051808303815f875af115801561032b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061034f91906120cf565b508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b81526004016103899190611d09565b5f604051808303815f87803b1580156103a0575f80fd5b505af11580156103b2573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f85e892981b234101136bc30081e0a5c44345bebc0940193230c20a43b279e2d160405160405180910390a3809150509392505050565b8061042a5761042982610e48565b5b5050565b61043781610e48565b50565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61046684610f83565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016104a393929190612109565b6020604051808303815f875af11580156104bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e391906120cf565b505f61055d838673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610532573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105569190612152565b6006611338565b905060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b81526004016105f692919061217d565b5f604051808303815f87803b15801561060d575f80fd5b505af115801561061f573d5f803e3d5ffd5b5050505060015f60148282829054906101000a900467ffffffffffffffff1661064891906121d1565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200160f173ffffffffffffffffffffffffffffffffffffffff166381cf0f6a60015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161072b9190611d09565b5f604051808303815f875af1158015610746573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061076e919061227a565b81526020018281525060035f8060149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101908161080a91906124b2565b506040820151816002015590505060f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e661089e8860015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685878a611407565b6040518263ffffffff1660e01b81526004016108ba9190612581565b6020604051808303815f875af11580156108d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fa91906120cf565b50505050505050565b6002602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109dd575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a14575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60f173ffffffffffffffffffffffffffffffffffffffff16632b3324ce856040518263ffffffff1660e01b8152600401610b0a9190612581565b6020604051808303815f875af1158015610b26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4a91906125b5565b90505f73ffffffffffffffffffffffffffffffffffffffff1660025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d9061262a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166379cc679033846040518363ffffffff1660e01b8152600401610c5192919061217d565b6020604051808303815f875af1158015610c6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9191906120cf565b505f610d6783600660025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d629190612152565b611338565b905060025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b8152600401610e0092919061217d565b6020604051808303815f875af1158015610e1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4091906120cf565b505050505050565b5f60035f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f206040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054610edd906122ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610f09906122ee565b8015610f545780601f10610f2b57610100808354040283529160200191610f54565b820191905f5260205f20905b815481529060010190602001808311610f3757829003601f168201915b505050505081526020016002820154815250509050610f7f8160200151825f01518360400151610acf565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff1660015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611335575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166306ef1a866040518060400160405280600781526020017f57726170706564000000000000000000000000000000000000000000000000008152508473ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa1580156110cd573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906110f5919061227a565b604051602001611106929190612682565b6040516020818303038152906040526040518060400160405280600181526020017f57000000000000000000000000000000000000000000000000000000000000008152508573ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015611193573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906111bb919061227a565b6040516020016111cc929190612682565b60405160208183030381529060405260066040518463ffffffff1660e01b81526004016111fb93929190612078565b6020604051808303815f875af1158015611217573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123b91906125b5565b90508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b5f8160ff168360ff161115611379575f828461135491906126a5565b60ff16600a6113639190612808565b90508085611371919061287f565b9150506113be565b8160ff168360ff1610156113b9575f838361139491906126a5565b60ff16600a6113a39190612808565b905080856113b191906128af565b9150506113bd565b8390505b5b5f8103611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f79061293a565b60405180910390fd5b9392505050565b60608560f173ffffffffffffffffffffffffffffffffffffffff166381cf0f6a876040518263ffffffff1660e01b81526004016114449190611d09565b5f604051808303815f875af115801561145f573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611487919061227a565b61149086611579565b60f173ffffffffffffffffffffffffffffffffffffffff16636af32a55306040518263ffffffff1660e01b81526004016114ca9190611d09565b5f604051808303815f875af11580156114e5573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061150d919061227a565b8561151788611579565b61153f5f60149054906101000a900467ffffffffffffffff1667ffffffffffffffff16611579565b61154830611643565b60405160200161155f989796959493929190612e20565b604051602081830303815290604052905095945050505050565b60605f600161158784611670565b0190505f8167ffffffffffffffff8111156115a5576115a4611ae8565b5b6040519080825280601f01601f1916602001820160405280156115d75781602001600182028036833780820191505090505b5090505f82602001820190505b600115611638578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161162d5761162c612852565b5b0494505f85036115e4575b819350505050919050565b60606116698273ffffffffffffffffffffffffffffffffffffffff16601460ff166117c1565b9050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106116cc577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816116c2576116c1612852565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611709576d04ee2d6d415b85acef810000000083816116ff576116fe612852565b5b0492506020810190505b662386f26fc10000831061173857662386f26fc10000838161172e5761172d612852565b5b0492506010810190505b6305f5e1008310611761576305f5e100838161175757611756612852565b5b0492506008810190505b612710831061178657612710838161177c5761177b612852565b5b0492506004810190505b606483106117a9576064838161179f5761179e612852565b5b0492506002810190505b600a83106117b8576001810190505b80915050919050565b60605f8390505f60028460026117d791906128af565b6117e19190612f6d565b67ffffffffffffffff8111156117fa576117f9611ae8565b5b6040519080825280601f01601f19166020018201604052801561182c5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f8151811061186357611862612fa0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106118c6576118c5612fa0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f600185600261190491906128af565b61190e9190612f6d565b90505b60018111156119ad577f3031323334353637383961626364656600000000000000000000000000000000600f8416601081106119505761194f612fa0565b5b1a60f81b82828151811061196757611966612fa0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600483901c9250806119a690612fcd565b9050611911565b505f82146119f45784846040517fe22e27eb0000000000000000000000000000000000000000000000000000000081526004016119eb929190612ff4565b60405180910390fd5b809250505092915050565b6120438061301c83390190565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a5181611a1d565b8114611a5b575f80fd5b50565b5f81359050611a6c81611a48565b92915050565b5f60208284031215611a8757611a86611a15565b5b5f611a9484828501611a5e565b91505092915050565b5f8115159050919050565b611ab181611a9d565b82525050565b5f602082019050611aca5f830184611aa8565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b1e82611ad8565b810181811067ffffffffffffffff82111715611b3d57611b3c611ae8565b5b80604052505050565b5f611b4f611a0c565b9050611b5b8282611b15565b919050565b5f67ffffffffffffffff821115611b7a57611b79611ae8565b5b611b8382611ad8565b9050602081019050919050565b828183375f83830152505050565b5f611bb0611bab84611b60565b611b46565b905082815260208101848484011115611bcc57611bcb611ad4565b5b611bd7848285611b90565b509392505050565b5f82601f830112611bf357611bf2611ad0565b5b8135611c03848260208601611b9e565b91505092915050565b5f60ff82169050919050565b611c2181611c0c565b8114611c2b575f80fd5b50565b5f81359050611c3c81611c18565b92915050565b5f805f60608486031215611c5957611c58611a15565b5b5f84013567ffffffffffffffff811115611c7657611c75611a19565b5b611c8286828701611bdf565b935050602084013567ffffffffffffffff811115611ca357611ca2611a19565b5b611caf86828701611bdf565b9250506040611cc086828701611c2e565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611cf382611cca565b9050919050565b611d0381611ce9565b82525050565b5f602082019050611d1c5f830184611cfa565b92915050565b5f67ffffffffffffffff82169050919050565b611d3e81611d22565b8114611d48575f80fd5b50565b5f81359050611d5981611d35565b92915050565b611d6881611a9d565b8114611d72575f80fd5b50565b5f81359050611d8381611d5f565b92915050565b5f8060408385031215611d9f57611d9e611a15565b5b5f611dac85828601611d4b565b9250506020611dbd85828601611d75565b9150509250929050565b5f60208284031215611ddc57611ddb611a15565b5b5f611de984828501611d4b565b91505092915050565b611dfb81611ce9565b8114611e05575f80fd5b50565b5f81359050611e1681611df2565b92915050565b5f819050919050565b611e2e81611e1c565b8114611e38575f80fd5b50565b5f81359050611e4981611e25565b92915050565b5f805f805f60a08688031215611e6857611e67611a15565b5b5f86013567ffffffffffffffff811115611e8557611e84611a19565b5b611e9188828901611bdf565b9550506020611ea288828901611e08565b945050604086013567ffffffffffffffff811115611ec357611ec2611a19565b5b611ecf88828901611bdf565b9350506060611ee088828901611e3b565b9250506080611ef188828901611e3b565b9150509295509295909350565b5f60208284031215611f1357611f12611a15565b5b5f611f2084828501611e08565b91505092915050565b5f819050919050565b5f611f4c611f47611f4284611cca565b611f29565b611cca565b9050919050565b5f611f5d82611f32565b9050919050565b5f611f6e82611f53565b9050919050565b611f7e81611f64565b82525050565b5f602082019050611f975f830184611f75565b92915050565b5f805f60608486031215611fb457611fb3611a15565b5b5f84013567ffffffffffffffff811115611fd157611fd0611a19565b5b611fdd86828701611bdf565b9350506020611fee86828701611e08565b9250506040611fff86828701611e3b565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61203b82612009565b6120458185612013565b9350612055818560208601612023565b61205e81611ad8565b840191505092915050565b61207281611c0c565b82525050565b5f6060820190508181035f8301526120908186612031565b905081810360208301526120a48185612031565b90506120b36040830184612069565b949350505050565b5f815190506120c981611d5f565b92915050565b5f602082840312156120e4576120e3611a15565b5b5f6120f1848285016120bb565b91505092915050565b61210381611e1c565b82525050565b5f60608201905061211c5f830186611cfa565b6121296020830185611cfa565b61213660408301846120fa565b949350505050565b5f8151905061214c81611c18565b92915050565b5f6020828403121561216757612166611a15565b5b5f6121748482850161213e565b91505092915050565b5f6040820190506121905f830185611cfa565b61219d60208301846120fa565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121db82611d22565b91506121e683611d22565b9250828201905067ffffffffffffffff811115612206576122056121a4565b5b92915050565b5f61221e61221984611b60565b611b46565b90508281526020810184848401111561223a57612239611ad4565b5b612245848285612023565b509392505050565b5f82601f83011261226157612260611ad0565b5b815161227184826020860161220c565b91505092915050565b5f6020828403121561228f5761228e611a15565b5b5f82015167ffffffffffffffff8111156122ac576122ab611a19565b5b6122b88482850161224d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061230557607f821691505b602082108103612318576123176122c1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261237a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261233f565b612384868361233f565b95508019841693508086168417925050509392505050565b5f6123b66123b16123ac84611e1c565b611f29565b611e1c565b9050919050565b5f819050919050565b6123cf8361239c565b6123e36123db826123bd565b84845461234b565b825550505050565b5f90565b6123f76123eb565b6124028184846123c6565b505050565b5b818110156124255761241a5f826123ef565b600181019050612408565b5050565b601f82111561246a5761243b8161231e565b61244484612330565b81016020851015612453578190505b61246761245f85612330565b830182612407565b50505b505050565b5f82821c905092915050565b5f61248a5f198460080261246f565b1980831691505092915050565b5f6124a2838361247b565b9150826002028217905092915050565b6124bb82612009565b67ffffffffffffffff8111156124d4576124d3611ae8565b5b6124de82546122ee565b6124e9828285612429565b5f60209050601f83116001811461251a575f8415612508578287015190505b6125128582612497565b865550612579565b601f1984166125288661231e565b5f5b8281101561254f5784890151825560018201915060208501945060208101905061252a565b8683101561256c5784890151612568601f89168261247b565b8355505b6001600288020188555050505b505050505050565b5f6020820190508181035f8301526125998184612031565b905092915050565b5f815190506125af81611df2565b92915050565b5f602082840312156125ca576125c9611a15565b5b5f6125d7848285016125a1565b91505092915050565b7f6f726967696e20746f6b656e20646f65736e27742065786973740000000000005f82015250565b5f612614601a83612013565b915061261f826125e0565b602082019050919050565b5f6020820190508181035f83015261264181612608565b9050919050565b5f81905092915050565b5f61265c82612009565b6126668185612648565b9350612676818560208601612023565b80840191505092915050565b5f61268d8285612652565b91506126998284612652565b91508190509392505050565b5f6126af82611c0c565b91506126ba83611c0c565b9250828203905060ff8111156126d3576126d26121a4565b5b92915050565b5f8160011c9050919050565b5f808291508390505b600185111561272e5780860481111561270a576127096121a4565b5b60018516156127195780820291505b8081029050612727856126d9565b94506126ee565b94509492505050565b5f826127465760019050612801565b81612753575f9050612801565b81600181146127695760028114612773576127a2565b6001915050612801565b60ff841115612785576127846121a4565b5b8360020a91508482111561279c5761279b6121a4565b5b50612801565b5060208310610133831016604e8410600b84101617156127d75782820a9050838111156127d2576127d16121a4565b5b612801565b6127e484848460016126e5565b925090508184048111156127fb576127fa6121a4565b5b81810290505b9392505050565b5f61281282611e1c565b915061281d83611e1c565b925061284a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612737565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61288982611e1c565b915061289483611e1c565b9250826128a4576128a3612852565b5b828204905092915050565b5f6128b982611e1c565b91506128c483611e1c565b92508282026128d281611e1c565b915082820484148315176128e9576128e86121a4565b5b5092915050565b7f636f6e76657274656420616d6f756e74206973207a65726f00000000000000005f82015250565b5f612924601883612013565b915061292f826128f0565b602082019050919050565b5f6020820190508181035f83015261295181612918565b9050919050565b7f7b224074797065223a20222f6962632e6170706c69636174696f6e732e7472615f8201527f6e736665722e76312e4d73675472616e73666572222c00000000000000000000602082015250565b5f6129b2603683612648565b91506129bd82612958565b603682019050919050565b7f22736f757263655f706f7274223a20227472616e73666572222c0000000000005f82015250565b5f6129fc601a83612648565b9150612a07826129c8565b601a82019050919050565b7f22736f757263655f6368616e6e656c223a2022000000000000000000000000005f82015250565b5f612a46601383612648565b9150612a5182612a12565b601382019050919050565b7f222c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f612a90600283612648565b9150612a9b82612a5c565b600282019050919050565b7f22746f6b656e223a207b202264656e6f6d223a202200000000000000000000005f82015250565b5f612ada601583612648565b9150612ae582612aa6565b601582019050919050565b7f22616d6f756e74223a20220000000000000000000000000000000000000000005f82015250565b5f612b24600b83612648565b9150612b2f82612af0565b600b82019050919050565b7f227d2c00000000000000000000000000000000000000000000000000000000005f82015250565b5f612b6e600383612648565b9150612b7982612b3a565b600382019050919050565b7f2273656e646572223a20220000000000000000000000000000000000000000005f82015250565b5f612bb8600b83612648565b9150612bc382612b84565b600b82019050919050565b7f227265636569766572223a2022000000000000000000000000000000000000005f82015250565b5f612c02600d83612648565b9150612c0d82612bce565b600d82019050919050565b7f2274696d656f75745f686569676874223a207b227265766973696f6e5f6e756d5f8201527f626572223a202230222c227265766973696f6e5f686569676874223a2022302260208201527f7d2c000000000000000000000000000000000000000000000000000000000000604082015250565b5f612c98604283612648565b9150612ca382612c18565b604282019050919050565b7f2274696d656f75745f74696d657374616d70223a2022000000000000000000005f82015250565b5f612ce2601683612648565b9150612ced82612cae565b601682019050919050565b7f226d656d6f223a2022222c0000000000000000000000000000000000000000005f82015250565b5f612d2c600b83612648565b9150612d3782612cf8565b600b82019050919050565b7f226173796e635f63616c6c6261636b223a207b226964223a20220000000000005f82015250565b5f612d76601a83612648565b9150612d8182612d42565b601a82019050919050565b7f22636f6e74726163745f61646472657373223a202200000000000000000000005f82015250565b5f612dc0601583612648565b9150612dcb82612d8c565b601582019050919050565b7f227d7d00000000000000000000000000000000000000000000000000000000005f82015250565b5f612e0a600383612648565b9150612e1582612dd6565b600382019050919050565b5f612e2a826129a6565b9150612e35826129f0565b9150612e4082612a3a565b9150612e4c828b612652565b9150612e5782612a84565b9150612e6282612ace565b9150612e6e828a612652565b9150612e7982612a84565b9150612e8482612b18565b9150612e908289612652565b9150612e9b82612b62565b9150612ea682612bac565b9150612eb28288612652565b9150612ebd82612a84565b9150612ec882612bf6565b9150612ed48287612652565b9150612edf82612a84565b9150612eea82612c8c565b9150612ef582612cd6565b9150612f018286612652565b9150612f0c82612a84565b9150612f1782612d20565b9150612f2282612d6a565b9150612f2e8285612652565b9150612f3982612a84565b9150612f4482612db4565b9150612f508284612652565b9150612f5b82612dfe565b91508190509998505050505050505050565b5f612f7782611e1c565b9150612f8283611e1c565b9250828201905080821115612f9a57612f996121a4565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612fd782611e1c565b91505f8203612fe957612fe86121a4565b5b600182039050919050565b5f6040820190506130075f8301856120fa565b61301460208301846120fa565b939250505056fe608060405234801561000f575f80fd5b5060405161204338038061204383398181016040528101906100319190610235565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826003908161007f91906104ca565b50816004908161008f91906104ca565b508060055f6101000a81548160ff021916908360ff160217905550505050610599565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610111826100cb565b810181811067ffffffffffffffff821117156101305761012f6100db565b5b80604052505050565b5f6101426100b2565b905061014e8282610108565b919050565b5f67ffffffffffffffff82111561016d5761016c6100db565b5b610176826100cb565b9050602081019050919050565b8281835e5f83830152505050565b5f6101a361019e84610153565b610139565b9050828152602081018484840111156101bf576101be6100c7565b5b6101ca848285610183565b509392505050565b5f82601f8301126101e6576101e56100c3565b5b81516101f6848260208601610191565b91505092915050565b5f60ff82169050919050565b610214816101ff565b811461021e575f80fd5b50565b5f8151905061022f8161020b565b92915050565b5f805f6060848603121561024c5761024b6100bb565b5b5f84015167ffffffffffffffff811115610269576102686100bf565b5b610275868287016101d2565b935050602084015167ffffffffffffffff811115610296576102956100bf565b5b6102a2868287016101d2565b92505060406102b386828701610221565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061030b57607f821691505b60208210810361031e5761031d6102c7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610345565b61038a8683610345565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6103ce6103c96103c4846103a2565b6103ab565b6103a2565b9050919050565b5f819050919050565b6103e7836103b4565b6103fb6103f3826103d5565b848454610351565b825550505050565b5f90565b61040f610403565b61041a8184846103de565b505050565b5b8181101561043d576104325f82610407565b600181019050610420565b5050565b601f8211156104825761045381610324565b61045c84610336565b8101602085101561046b578190505b61047f61047785610336565b83018261041f565b50505b505050565b5f82821c905092915050565b5f6104a25f1984600802610487565b1980831691505092915050565b5f6104ba8383610493565b9150826002028217905092915050565b6104d3826102bd565b67ffffffffffffffff8111156104ec576104eb6100db565b5b6104f682546102f4565b610501828285610441565b5f60209050601f831160018114610532575f8415610520578287015190505b61052a85826104af565b865550610591565b601f19841661054086610324565b5f5b8281101561056757848901518255600182019150602085019450602081019050610542565b868310156105845784890151610580601f891682610493565b8355505b6001600288020188555050505b505050505050565b611a9d806105a65f395ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c806342966c68116100a057806395d89b411161006f57806395d89b41146102f0578063a9059cbb1461030e578063dd62ed3e1461033e578063f2fde38b1461036e578063fe1195ec1461038a57610114565b806342966c681461025657806370a082311461027257806379cc6790146102a25780638da5cb5b146102d257610114565b80631988513b116100e75780631988513b146101b457806323b872dd146101d05780632d688ca814610200578063313ce5671461021c57806340c10f191461023a57610114565b806301ffc9a71461011857806306fdde0314610148578063095ea7b31461016657806318160ddd14610196575b5f80fd5b610132600480360381019061012d919061143b565b6103a6565b60405161013f9190611480565b60405180910390f35b61015061041f565b60405161015d9190611509565b60405180910390f35b610180600480360381019061017b91906115b6565b6104ab565b60405161018d9190611480565b60405180910390f35b61019e610598565b6040516101ab9190611603565b60405180910390f35b6101ce60048036038101906101c9919061161c565b61059e565b005b6101ea60048036038101906101e5919061161c565b61061d565b6040516101f79190611480565b60405180910390f35b61021a600480360381019061021591906115b6565b61077d565b005b6102246107fa565b6040516102319190611687565b60405180910390f35b610254600480360381019061024f91906115b6565b61080c565b005b610270600480360381019061026b91906116a0565b61092b565b005b61028c600480360381019061028791906116cb565b6109f3565b6040516102999190611603565b60405180910390f35b6102bc60048036038101906102b791906115b6565b610a08565b6040516102c99190611480565b60405180910390f35b6102da610b66565b6040516102e79190611705565b60405180910390f35b6102f8610b89565b6040516103059190611509565b60405180910390f35b610328600480360381019061032391906115b6565b610c15565b6040516103359190611480565b60405180910390f35b6103586004803603810190610353919061171e565b610ce6565b6040516103659190611603565b60405180910390f35b610388600480360381019061038391906116cb565b610d06565b005b6103a4600480360381019061039f91906115b6565b610e4e565b005b5f7f8da6da19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610418575061041782610ecb565b5b9050919050565b6003805461042c90611789565b80601f016020809104026020016040519081016040528092919081815260200182805461045890611789565b80156104a35780601f1061047a576101008083540402835291602001916104a3565b820191905f5260205f20905b81548152906001019060200180831161048657829003601f168201915b505050505081565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105869190611603565b60405180910390a36001905092915050565b60065481565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461060d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060490611803565b60405180910390fd5b610618838383610f34565b505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016106599190611705565b602060405180830381865afa158015610674573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610698919061184b565b156106d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106cf906118e6565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461075f9190611931565b92505081905550610771858585610f34565b60019150509392505050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e390611803565b60405180910390fd5b6107f6828261113f565b5050565b60055f9054906101000a900460ff1681565b8160f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016108479190611705565b602060405180830381865afa158015610862573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610886919061184b565b156108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd906119ae565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461091c575f80fd5b610926838361113f565b505050565b3360f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b81526004016109669190611705565b602060405180830381865afa158015610981573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a5919061184b565b156109e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dc90611a16565b60405180910390fd5b6109ef338361130e565b5050565b6001602052805f5260405f205f915090505481565b5f8260f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610a449190611705565b602060405180830381865afa158015610a5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a83919061184b565b15610ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aba90611a16565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b4a9190611931565b92505081905550610b5b848461130e565b600191505092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60048054610b9690611789565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc290611789565b8015610c0d5780601f10610be457610100808354040283529160200191610c0d565b820191905f5260205f20905b815481529060010190602001808311610bf057829003601f168201915b505050505081565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b8152600401610c519190611705565b602060405180830381865afa158015610c6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c90919061184b565b15610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc7906118e6565b60405180910390fd5b610cdb338585610f34565b600191505092915050565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d5c575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d93575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb490611803565b60405180910390fd5b610ec7828261130e565b5050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b8152600401610f6f9190611705565b602060405180830381865afa158015610f8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fae919061184b565b61102e5760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b8152600401610fec9190611705565b6020604051808303815f875af1158015611008573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102c919061184b565b505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461107a9190611931565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110cd9190611a34565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111319190611603565b60405180910390a350505050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b815260040161117a9190611705565b602060405180830381865afa158015611195573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b9919061184b565b6112395760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016111f79190611705565b6020604051808303815f875af1158015611213573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611237919061184b565b505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546112859190611a34565b925050819055508160065f82825461129d9190611a34565b925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113019190611603565b60405180910390a3505050565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461135a9190611931565b925050819055508060065f8282546113729190611931565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113d69190611603565b60405180910390a35050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61141a816113e6565b8114611424575f80fd5b50565b5f8135905061143581611411565b92915050565b5f602082840312156114505761144f6113e2565b5b5f61145d84828501611427565b91505092915050565b5f8115159050919050565b61147a81611466565b82525050565b5f6020820190506114935f830184611471565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6114db82611499565b6114e581856114a3565b93506114f58185602086016114b3565b6114fe816114c1565b840191505092915050565b5f6020820190508181035f83015261152181846114d1565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61155282611529565b9050919050565b61156281611548565b811461156c575f80fd5b50565b5f8135905061157d81611559565b92915050565b5f819050919050565b61159581611583565b811461159f575f80fd5b50565b5f813590506115b08161158c565b92915050565b5f80604083850312156115cc576115cb6113e2565b5b5f6115d98582860161156f565b92505060206115ea858286016115a2565b9150509250929050565b6115fd81611583565b82525050565b5f6020820190506116165f8301846115f4565b92915050565b5f805f60608486031215611633576116326113e2565b5b5f6116408682870161156f565b93505060206116518682870161156f565b9250506040611662868287016115a2565b9150509250925092565b5f60ff82169050919050565b6116818161166c565b82525050565b5f60208201905061169a5f830184611678565b92915050565b5f602082840312156116b5576116b46113e2565b5b5f6116c2848285016115a2565b91505092915050565b5f602082840312156116e0576116df6113e2565b5b5f6116ed8482850161156f565b91505092915050565b6116ff81611548565b82525050565b5f6020820190506117185f8301846116f6565b92915050565b5f8060408385031215611734576117336113e2565b5b5f6117418582860161156f565b92505060206117528582860161156f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806117a057607f821691505b6020821081036117b3576117b261175c565b5b50919050565b7f45524332303a2063616c6c6572206973206e6f742074686520636861696e00005f82015250565b5f6117ed601e836114a3565b91506117f8826117b9565b602082019050919050565b5f6020820190508181035f83015261181a816117e1565b9050919050565b61182a81611466565b8114611834575f80fd5b50565b5f8151905061184581611821565b92915050565b5f602082840312156118605761185f6113e2565b5b5f61186d84828501611837565b91505092915050565b7f45524332303a207472616e7366657220746f20626c6f636b65642061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6118d06022836114a3565b91506118db82611876565b604082019050919050565b5f6020820190508181035f8301526118fd816118c4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61193b82611583565b915061194683611583565b925082820390508181111561195e5761195d611904565b5b92915050565b7f45524332303a206d696e7420746f20626c6f636b6564206164647265737300005f82015250565b5f611998601e836114a3565b91506119a382611964565b602082019050919050565b5f6020820190508181035f8301526119c58161198c565b9050919050565b7f45524332303a206275726e2066726f6d206d6f64756c652061646472657373005f82015250565b5f611a00601f836114a3565b9150611a0b826119cc565b602082019050919050565b5f6020820190508181035f830152611a2d816119f4565b9050919050565b5f611a3e82611583565b9150611a4983611583565b9250828201905080821115611a6157611a60611904565b5b9291505056fea2646970667358221220de4043b1adb87162ffc06c0127fc335d705e04b467c9acd7522c8721ebd4c4bb64736f6c63430008190033a2646970667358221220b60b16dbb873bc70c6d83f4f9c9822c78b2d692f5c12918ad733994c055bb7b664736f6c63430008190033", + Bin: "0x60a06040525f8060146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550348015610037575f80fd5b5060405161520e38038061520e83398181016040528101906100599190610130565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505061015b565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100ff826100d6565b9050919050565b61010f816100f5565b8114610119575f80fd5b50565b5f8151905061012a81610106565b92915050565b5f60208284031215610145576101446100d2565b5b5f6101528482850161011c565b91505092915050565b60805161509461017a5f395f8181610935015261101501526150945ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c80639a1114321161006f5780639a11143214610161578063b5ad1fb61461017d578063c45a0155146101ad578063d5c6b504146101cb578063f2fde38b146101fb578063fc07875814610217576100a7565b806301ffc9a7146100ab57806306ef1a86146100db5780630d4f1f9d1461010b57806331a503f0146101275780638da5cb5b14610143575b5f80fd5b6100c560048036038101906100c09190611a72565b610233565b6040516100d29190611ab7565b60405180910390f35b6100f560048036038101906100f09190611c42565b61029c565b6040516101029190611d09565b60405180910390f35b61012560048036038101906101209190611d89565b61041b565b005b610141600480360381019061013c9190611dc7565b61042e565b005b61014b61043a565b6040516101589190611d09565b60405180910390f35b61017b60048036038101906101769190611e4f565b61045d565b005b61019760048036038101906101929190611efe565b610903565b6040516101a49190611d09565b60405180910390f35b6101b5610933565b6040516101c29190611f84565b60405180910390f35b6101e560048036038101906101e09190611efe565b610957565b6040516101f29190611d09565b60405180910390f35b61021560048036038101906102109190611efe565b610987565b005b610231600480360381019061022c9190611f9d565b610acf565b005b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f808484846040516102ad906119ff565b6102b993929190612078565b604051809103905ff0801580156102d2573d5f803e3d5ffd5b50905060f273ffffffffffffffffffffffffffffffffffffffff1663d126274a826040518263ffffffff1660e01b815260040161030f9190611d09565b6020604051808303815f875af115801561032b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061034f91906120cf565b508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b81526004016103899190611d09565b5f604051808303815f87803b1580156103a0575f80fd5b505af11580156103b2573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f85e892981b234101136bc30081e0a5c44345bebc0940193230c20a43b279e2d160405160405180910390a3809150509392505050565b8061042a5761042982610e48565b5b5050565b61043781610e48565b50565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61046684610f83565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016104a393929190612109565b6020604051808303815f875af11580156104bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e391906120cf565b505f61055d838673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610532573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105569190612152565b6006611338565b905060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b81526004016105f692919061217d565b5f604051808303815f87803b15801561060d575f80fd5b505af115801561061f573d5f803e3d5ffd5b5050505060015f60148282829054906101000a900467ffffffffffffffff1661064891906121d1565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200160f173ffffffffffffffffffffffffffffffffffffffff166381cf0f6a60015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161072b9190611d09565b5f604051808303815f875af1158015610746573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061076e919061227a565b81526020018281525060035f8060149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101908161080a91906124b2565b506040820151816002015590505060f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e661089e8860015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685878a611407565b6040518263ffffffff1660e01b81526004016108ba9190612581565b6020604051808303815f875af11580156108d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fa91906120cf565b50505050505050565b6002602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109dd575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a14575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60f173ffffffffffffffffffffffffffffffffffffffff16632b3324ce856040518263ffffffff1660e01b8152600401610b0a9190612581565b6020604051808303815f875af1158015610b26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4a91906125b5565b90505f73ffffffffffffffffffffffffffffffffffffffff1660025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d9061262a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166379cc679033846040518363ffffffff1660e01b8152600401610c5192919061217d565b6020604051808303815f875af1158015610c6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9191906120cf565b505f610d6783600660025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d629190612152565b611338565b905060025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b8152600401610e0092919061217d565b6020604051808303815f875af1158015610e1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4091906120cf565b505050505050565b5f60035f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f206040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054610edd906122ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610f09906122ee565b8015610f545780601f10610f2b57610100808354040283529160200191610f54565b820191905f5260205f20905b815481529060010190602001808311610f3757829003601f168201915b505050505081526020016002820154815250509050610f7f8160200151825f01518360400151610acf565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff1660015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611335575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166306ef1a866040518060400160405280600781526020017f57726170706564000000000000000000000000000000000000000000000000008152508473ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa1580156110cd573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906110f5919061227a565b604051602001611106929190612682565b6040516020818303038152906040526040518060400160405280600181526020017f57000000000000000000000000000000000000000000000000000000000000008152508573ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015611193573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906111bb919061227a565b6040516020016111cc929190612682565b60405160208183030381529060405260066040518463ffffffff1660e01b81526004016111fb93929190612078565b6020604051808303815f875af1158015611217573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123b91906125b5565b90508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b5f8160ff168360ff161115611379575f828461135491906126a5565b60ff16600a6113639190612808565b90508085611371919061287f565b9150506113be565b8160ff168360ff1610156113b9575f838361139491906126a5565b60ff16600a6113a39190612808565b905080856113b191906128af565b9150506113bd565b8390505b5b5f8103611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f79061293a565b60405180910390fd5b9392505050565b60608560f173ffffffffffffffffffffffffffffffffffffffff166381cf0f6a876040518263ffffffff1660e01b81526004016114449190611d09565b5f604051808303815f875af115801561145f573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611487919061227a565b61149086611579565b60f173ffffffffffffffffffffffffffffffffffffffff16636af32a55306040518263ffffffff1660e01b81526004016114ca9190611d09565b5f604051808303815f875af11580156114e5573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061150d919061227a565b8561151788611579565b61153f5f60149054906101000a900467ffffffffffffffff1667ffffffffffffffff16611579565b61154830611643565b60405160200161155f989796959493929190612e20565b604051602081830303815290604052905095945050505050565b60605f600161158784611670565b0190505f8167ffffffffffffffff8111156115a5576115a4611ae8565b5b6040519080825280601f01601f1916602001820160405280156115d75781602001600182028036833780820191505090505b5090505f82602001820190505b600115611638578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161162d5761162c612852565b5b0494505f85036115e4575b819350505050919050565b60606116698273ffffffffffffffffffffffffffffffffffffffff16601460ff166117c1565b9050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106116cc577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816116c2576116c1612852565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611709576d04ee2d6d415b85acef810000000083816116ff576116fe612852565b5b0492506020810190505b662386f26fc10000831061173857662386f26fc10000838161172e5761172d612852565b5b0492506010810190505b6305f5e1008310611761576305f5e100838161175757611756612852565b5b0492506008810190505b612710831061178657612710838161177c5761177b612852565b5b0492506004810190505b606483106117a9576064838161179f5761179e612852565b5b0492506002810190505b600a83106117b8576001810190505b80915050919050565b60605f8390505f60028460026117d791906128af565b6117e19190612f6d565b67ffffffffffffffff8111156117fa576117f9611ae8565b5b6040519080825280601f01601f19166020018201604052801561182c5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f8151811061186357611862612fa0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106118c6576118c5612fa0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f600185600261190491906128af565b61190e9190612f6d565b90505b60018111156119ad577f3031323334353637383961626364656600000000000000000000000000000000600f8416601081106119505761194f612fa0565b5b1a60f81b82828151811061196757611966612fa0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600483901c9250806119a690612fcd565b9050611911565b505f82146119f45784846040517fe22e27eb0000000000000000000000000000000000000000000000000000000081526004016119eb929190612ff4565b60405180910390fd5b809250505092915050565b6120438061301c83390190565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a5181611a1d565b8114611a5b575f80fd5b50565b5f81359050611a6c81611a48565b92915050565b5f60208284031215611a8757611a86611a15565b5b5f611a9484828501611a5e565b91505092915050565b5f8115159050919050565b611ab181611a9d565b82525050565b5f602082019050611aca5f830184611aa8565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b1e82611ad8565b810181811067ffffffffffffffff82111715611b3d57611b3c611ae8565b5b80604052505050565b5f611b4f611a0c565b9050611b5b8282611b15565b919050565b5f67ffffffffffffffff821115611b7a57611b79611ae8565b5b611b8382611ad8565b9050602081019050919050565b828183375f83830152505050565b5f611bb0611bab84611b60565b611b46565b905082815260208101848484011115611bcc57611bcb611ad4565b5b611bd7848285611b90565b509392505050565b5f82601f830112611bf357611bf2611ad0565b5b8135611c03848260208601611b9e565b91505092915050565b5f60ff82169050919050565b611c2181611c0c565b8114611c2b575f80fd5b50565b5f81359050611c3c81611c18565b92915050565b5f805f60608486031215611c5957611c58611a15565b5b5f84013567ffffffffffffffff811115611c7657611c75611a19565b5b611c8286828701611bdf565b935050602084013567ffffffffffffffff811115611ca357611ca2611a19565b5b611caf86828701611bdf565b9250506040611cc086828701611c2e565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611cf382611cca565b9050919050565b611d0381611ce9565b82525050565b5f602082019050611d1c5f830184611cfa565b92915050565b5f67ffffffffffffffff82169050919050565b611d3e81611d22565b8114611d48575f80fd5b50565b5f81359050611d5981611d35565b92915050565b611d6881611a9d565b8114611d72575f80fd5b50565b5f81359050611d8381611d5f565b92915050565b5f8060408385031215611d9f57611d9e611a15565b5b5f611dac85828601611d4b565b9250506020611dbd85828601611d75565b9150509250929050565b5f60208284031215611ddc57611ddb611a15565b5b5f611de984828501611d4b565b91505092915050565b611dfb81611ce9565b8114611e05575f80fd5b50565b5f81359050611e1681611df2565b92915050565b5f819050919050565b611e2e81611e1c565b8114611e38575f80fd5b50565b5f81359050611e4981611e25565b92915050565b5f805f805f60a08688031215611e6857611e67611a15565b5b5f86013567ffffffffffffffff811115611e8557611e84611a19565b5b611e9188828901611bdf565b9550506020611ea288828901611e08565b945050604086013567ffffffffffffffff811115611ec357611ec2611a19565b5b611ecf88828901611bdf565b9350506060611ee088828901611e3b565b9250506080611ef188828901611e3b565b9150509295509295909350565b5f60208284031215611f1357611f12611a15565b5b5f611f2084828501611e08565b91505092915050565b5f819050919050565b5f611f4c611f47611f4284611cca565b611f29565b611cca565b9050919050565b5f611f5d82611f32565b9050919050565b5f611f6e82611f53565b9050919050565b611f7e81611f64565b82525050565b5f602082019050611f975f830184611f75565b92915050565b5f805f60608486031215611fb457611fb3611a15565b5b5f84013567ffffffffffffffff811115611fd157611fd0611a19565b5b611fdd86828701611bdf565b9350506020611fee86828701611e08565b9250506040611fff86828701611e3b565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61203b82612009565b6120458185612013565b9350612055818560208601612023565b61205e81611ad8565b840191505092915050565b61207281611c0c565b82525050565b5f6060820190508181035f8301526120908186612031565b905081810360208301526120a48185612031565b90506120b36040830184612069565b949350505050565b5f815190506120c981611d5f565b92915050565b5f602082840312156120e4576120e3611a15565b5b5f6120f1848285016120bb565b91505092915050565b61210381611e1c565b82525050565b5f60608201905061211c5f830186611cfa565b6121296020830185611cfa565b61213660408301846120fa565b949350505050565b5f8151905061214c81611c18565b92915050565b5f6020828403121561216757612166611a15565b5b5f6121748482850161213e565b91505092915050565b5f6040820190506121905f830185611cfa565b61219d60208301846120fa565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121db82611d22565b91506121e683611d22565b9250828201905067ffffffffffffffff811115612206576122056121a4565b5b92915050565b5f61221e61221984611b60565b611b46565b90508281526020810184848401111561223a57612239611ad4565b5b612245848285612023565b509392505050565b5f82601f83011261226157612260611ad0565b5b815161227184826020860161220c565b91505092915050565b5f6020828403121561228f5761228e611a15565b5b5f82015167ffffffffffffffff8111156122ac576122ab611a19565b5b6122b88482850161224d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061230557607f821691505b602082108103612318576123176122c1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261237a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261233f565b612384868361233f565b95508019841693508086168417925050509392505050565b5f6123b66123b16123ac84611e1c565b611f29565b611e1c565b9050919050565b5f819050919050565b6123cf8361239c565b6123e36123db826123bd565b84845461234b565b825550505050565b5f90565b6123f76123eb565b6124028184846123c6565b505050565b5b818110156124255761241a5f826123ef565b600181019050612408565b5050565b601f82111561246a5761243b8161231e565b61244484612330565b81016020851015612453578190505b61246761245f85612330565b830182612407565b50505b505050565b5f82821c905092915050565b5f61248a5f198460080261246f565b1980831691505092915050565b5f6124a2838361247b565b9150826002028217905092915050565b6124bb82612009565b67ffffffffffffffff8111156124d4576124d3611ae8565b5b6124de82546122ee565b6124e9828285612429565b5f60209050601f83116001811461251a575f8415612508578287015190505b6125128582612497565b865550612579565b601f1984166125288661231e565b5f5b8281101561254f5784890151825560018201915060208501945060208101905061252a565b8683101561256c5784890151612568601f89168261247b565b8355505b6001600288020188555050505b505050505050565b5f6020820190508181035f8301526125998184612031565b905092915050565b5f815190506125af81611df2565b92915050565b5f602082840312156125ca576125c9611a15565b5b5f6125d7848285016125a1565b91505092915050565b7f6f726967696e20746f6b656e20646f65736e27742065786973740000000000005f82015250565b5f612614601a83612013565b915061261f826125e0565b602082019050919050565b5f6020820190508181035f83015261264181612608565b9050919050565b5f81905092915050565b5f61265c82612009565b6126668185612648565b9350612676818560208601612023565b80840191505092915050565b5f61268d8285612652565b91506126998284612652565b91508190509392505050565b5f6126af82611c0c565b91506126ba83611c0c565b9250828203905060ff8111156126d3576126d26121a4565b5b92915050565b5f8160011c9050919050565b5f808291508390505b600185111561272e5780860481111561270a576127096121a4565b5b60018516156127195780820291505b8081029050612727856126d9565b94506126ee565b94509492505050565b5f826127465760019050612801565b81612753575f9050612801565b81600181146127695760028114612773576127a2565b6001915050612801565b60ff841115612785576127846121a4565b5b8360020a91508482111561279c5761279b6121a4565b5b50612801565b5060208310610133831016604e8410600b84101617156127d75782820a9050838111156127d2576127d16121a4565b5b612801565b6127e484848460016126e5565b925090508184048111156127fb576127fa6121a4565b5b81810290505b9392505050565b5f61281282611e1c565b915061281d83611e1c565b925061284a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612737565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61288982611e1c565b915061289483611e1c565b9250826128a4576128a3612852565b5b828204905092915050565b5f6128b982611e1c565b91506128c483611e1c565b92508282026128d281611e1c565b915082820484148315176128e9576128e86121a4565b5b5092915050565b7f636f6e76657274656420616d6f756e74206973207a65726f00000000000000005f82015250565b5f612924601883612013565b915061292f826128f0565b602082019050919050565b5f6020820190508181035f83015261295181612918565b9050919050565b7f7b224074797065223a20222f6962632e6170706c69636174696f6e732e7472615f8201527f6e736665722e76312e4d73675472616e73666572222c00000000000000000000602082015250565b5f6129b2603683612648565b91506129bd82612958565b603682019050919050565b7f22736f757263655f706f7274223a20227472616e73666572222c0000000000005f82015250565b5f6129fc601a83612648565b9150612a07826129c8565b601a82019050919050565b7f22736f757263655f6368616e6e656c223a2022000000000000000000000000005f82015250565b5f612a46601383612648565b9150612a5182612a12565b601382019050919050565b7f222c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f612a90600283612648565b9150612a9b82612a5c565b600282019050919050565b7f22746f6b656e223a207b202264656e6f6d223a202200000000000000000000005f82015250565b5f612ada601583612648565b9150612ae582612aa6565b601582019050919050565b7f22616d6f756e74223a20220000000000000000000000000000000000000000005f82015250565b5f612b24600b83612648565b9150612b2f82612af0565b600b82019050919050565b7f227d2c00000000000000000000000000000000000000000000000000000000005f82015250565b5f612b6e600383612648565b9150612b7982612b3a565b600382019050919050565b7f2273656e646572223a20220000000000000000000000000000000000000000005f82015250565b5f612bb8600b83612648565b9150612bc382612b84565b600b82019050919050565b7f227265636569766572223a2022000000000000000000000000000000000000005f82015250565b5f612c02600d83612648565b9150612c0d82612bce565b600d82019050919050565b7f2274696d656f75745f686569676874223a207b227265766973696f6e5f6e756d5f8201527f626572223a202230222c227265766973696f6e5f686569676874223a2022302260208201527f7d2c000000000000000000000000000000000000000000000000000000000000604082015250565b5f612c98604283612648565b9150612ca382612c18565b604282019050919050565b7f2274696d656f75745f74696d657374616d70223a2022000000000000000000005f82015250565b5f612ce2601683612648565b9150612ced82612cae565b601682019050919050565b7f226d656d6f223a2022222c0000000000000000000000000000000000000000005f82015250565b5f612d2c600b83612648565b9150612d3782612cf8565b600b82019050919050565b7f226173796e635f63616c6c6261636b223a207b226964223a20220000000000005f82015250565b5f612d76601a83612648565b9150612d8182612d42565b601a82019050919050565b7f22636f6e74726163745f61646472657373223a202200000000000000000000005f82015250565b5f612dc0601583612648565b9150612dcb82612d8c565b601582019050919050565b7f227d7d00000000000000000000000000000000000000000000000000000000005f82015250565b5f612e0a600383612648565b9150612e1582612dd6565b600382019050919050565b5f612e2a826129a6565b9150612e35826129f0565b9150612e4082612a3a565b9150612e4c828b612652565b9150612e5782612a84565b9150612e6282612ace565b9150612e6e828a612652565b9150612e7982612a84565b9150612e8482612b18565b9150612e908289612652565b9150612e9b82612b62565b9150612ea682612bac565b9150612eb28288612652565b9150612ebd82612a84565b9150612ec882612bf6565b9150612ed48287612652565b9150612edf82612a84565b9150612eea82612c8c565b9150612ef582612cd6565b9150612f018286612652565b9150612f0c82612a84565b9150612f1782612d20565b9150612f2282612d6a565b9150612f2e8285612652565b9150612f3982612a84565b9150612f4482612db4565b9150612f508284612652565b9150612f5b82612dfe565b91508190509998505050505050505050565b5f612f7782611e1c565b9150612f8283611e1c565b9250828201905080821115612f9a57612f996121a4565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612fd782611e1c565b91505f8203612fe957612fe86121a4565b5b600182039050919050565b5f6040820190506130075f8301856120fa565b61301460208301846120fa565b939250505056fe608060405234801561000f575f80fd5b5060405161204338038061204383398181016040528101906100319190610235565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826003908161007f91906104ca565b50816004908161008f91906104ca565b508060055f6101000a81548160ff021916908360ff160217905550505050610599565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610111826100cb565b810181811067ffffffffffffffff821117156101305761012f6100db565b5b80604052505050565b5f6101426100b2565b905061014e8282610108565b919050565b5f67ffffffffffffffff82111561016d5761016c6100db565b5b610176826100cb565b9050602081019050919050565b8281835e5f83830152505050565b5f6101a361019e84610153565b610139565b9050828152602081018484840111156101bf576101be6100c7565b5b6101ca848285610183565b509392505050565b5f82601f8301126101e6576101e56100c3565b5b81516101f6848260208601610191565b91505092915050565b5f60ff82169050919050565b610214816101ff565b811461021e575f80fd5b50565b5f8151905061022f8161020b565b92915050565b5f805f6060848603121561024c5761024b6100bb565b5b5f84015167ffffffffffffffff811115610269576102686100bf565b5b610275868287016101d2565b935050602084015167ffffffffffffffff811115610296576102956100bf565b5b6102a2868287016101d2565b92505060406102b386828701610221565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061030b57607f821691505b60208210810361031e5761031d6102c7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610345565b61038a8683610345565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6103ce6103c96103c4846103a2565b6103ab565b6103a2565b9050919050565b5f819050919050565b6103e7836103b4565b6103fb6103f3826103d5565b848454610351565b825550505050565b5f90565b61040f610403565b61041a8184846103de565b505050565b5b8181101561043d576104325f82610407565b600181019050610420565b5050565b601f8211156104825761045381610324565b61045c84610336565b8101602085101561046b578190505b61047f61047785610336565b83018261041f565b50505b505050565b5f82821c905092915050565b5f6104a25f1984600802610487565b1980831691505092915050565b5f6104ba8383610493565b9150826002028217905092915050565b6104d3826102bd565b67ffffffffffffffff8111156104ec576104eb6100db565b5b6104f682546102f4565b610501828285610441565b5f60209050601f831160018114610532575f8415610520578287015190505b61052a85826104af565b865550610591565b601f19841661054086610324565b5f5b8281101561056757848901518255600182019150602085019450602081019050610542565b868310156105845784890151610580601f891682610493565b8355505b6001600288020188555050505b505050505050565b611a9d806105a65f395ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c806342966c68116100a057806395d89b411161006f57806395d89b41146102f0578063a9059cbb1461030e578063dd62ed3e1461033e578063f2fde38b1461036e578063fe1195ec1461038a57610114565b806342966c681461025657806370a082311461027257806379cc6790146102a25780638da5cb5b146102d257610114565b80631988513b116100e75780631988513b146101b457806323b872dd146101d05780632d688ca814610200578063313ce5671461021c57806340c10f191461023a57610114565b806301ffc9a71461011857806306fdde0314610148578063095ea7b31461016657806318160ddd14610196575b5f80fd5b610132600480360381019061012d919061143b565b6103a6565b60405161013f9190611480565b60405180910390f35b61015061041f565b60405161015d9190611509565b60405180910390f35b610180600480360381019061017b91906115b6565b6104ab565b60405161018d9190611480565b60405180910390f35b61019e610598565b6040516101ab9190611603565b60405180910390f35b6101ce60048036038101906101c9919061161c565b61059e565b005b6101ea60048036038101906101e5919061161c565b61061d565b6040516101f79190611480565b60405180910390f35b61021a600480360381019061021591906115b6565b61077d565b005b6102246107fa565b6040516102319190611687565b60405180910390f35b610254600480360381019061024f91906115b6565b61080c565b005b610270600480360381019061026b91906116a0565b61092b565b005b61028c600480360381019061028791906116cb565b6109f3565b6040516102999190611603565b60405180910390f35b6102bc60048036038101906102b791906115b6565b610a08565b6040516102c99190611480565b60405180910390f35b6102da610b66565b6040516102e79190611705565b60405180910390f35b6102f8610b89565b6040516103059190611509565b60405180910390f35b610328600480360381019061032391906115b6565b610c15565b6040516103359190611480565b60405180910390f35b6103586004803603810190610353919061171e565b610ce6565b6040516103659190611603565b60405180910390f35b610388600480360381019061038391906116cb565b610d06565b005b6103a4600480360381019061039f91906115b6565b610e4e565b005b5f7f8da6da19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610418575061041782610ecb565b5b9050919050565b6003805461042c90611789565b80601f016020809104026020016040519081016040528092919081815260200182805461045890611789565b80156104a35780601f1061047a576101008083540402835291602001916104a3565b820191905f5260205f20905b81548152906001019060200180831161048657829003601f168201915b505050505081565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105869190611603565b60405180910390a36001905092915050565b60065481565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461060d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060490611803565b60405180910390fd5b610618838383610f34565b505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016106599190611705565b602060405180830381865afa158015610674573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610698919061184b565b156106d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106cf906118e6565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461075f9190611931565b92505081905550610771858585610f34565b60019150509392505050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e390611803565b60405180910390fd5b6107f6828261113f565b5050565b60055f9054906101000a900460ff1681565b8160f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016108479190611705565b602060405180830381865afa158015610862573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610886919061184b565b156108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd906119ae565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461091c575f80fd5b610926838361113f565b505050565b3360f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b81526004016109669190611705565b602060405180830381865afa158015610981573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a5919061184b565b156109e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dc90611a16565b60405180910390fd5b6109ef338361130e565b5050565b6001602052805f5260405f205f915090505481565b5f8260f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610a449190611705565b602060405180830381865afa158015610a5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a83919061184b565b15610ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aba90611a16565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b4a9190611931565b92505081905550610b5b848461130e565b600191505092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60048054610b9690611789565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc290611789565b8015610c0d5780601f10610be457610100808354040283529160200191610c0d565b820191905f5260205f20905b815481529060010190602001808311610bf057829003601f168201915b505050505081565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b8152600401610c519190611705565b602060405180830381865afa158015610c6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c90919061184b565b15610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc7906118e6565b60405180910390fd5b610cdb338585610f34565b600191505092915050565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d5c575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d93575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb490611803565b60405180910390fd5b610ec7828261130e565b5050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b8152600401610f6f9190611705565b602060405180830381865afa158015610f8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fae919061184b565b61102e5760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b8152600401610fec9190611705565b6020604051808303815f875af1158015611008573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102c919061184b565b505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461107a9190611931565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110cd9190611a34565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111319190611603565b60405180910390a350505050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b815260040161117a9190611705565b602060405180830381865afa158015611195573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b9919061184b565b6112395760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016111f79190611705565b6020604051808303815f875af1158015611213573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611237919061184b565b505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546112859190611a34565b925050819055508160065f82825461129d9190611a34565b925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113019190611603565b60405180910390a3505050565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461135a9190611931565b925050819055508060065f8282546113729190611931565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113d69190611603565b60405180910390a35050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61141a816113e6565b8114611424575f80fd5b50565b5f8135905061143581611411565b92915050565b5f602082840312156114505761144f6113e2565b5b5f61145d84828501611427565b91505092915050565b5f8115159050919050565b61147a81611466565b82525050565b5f6020820190506114935f830184611471565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6114db82611499565b6114e581856114a3565b93506114f58185602086016114b3565b6114fe816114c1565b840191505092915050565b5f6020820190508181035f83015261152181846114d1565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61155282611529565b9050919050565b61156281611548565b811461156c575f80fd5b50565b5f8135905061157d81611559565b92915050565b5f819050919050565b61159581611583565b811461159f575f80fd5b50565b5f813590506115b08161158c565b92915050565b5f80604083850312156115cc576115cb6113e2565b5b5f6115d98582860161156f565b92505060206115ea858286016115a2565b9150509250929050565b6115fd81611583565b82525050565b5f6020820190506116165f8301846115f4565b92915050565b5f805f60608486031215611633576116326113e2565b5b5f6116408682870161156f565b93505060206116518682870161156f565b9250506040611662868287016115a2565b9150509250925092565b5f60ff82169050919050565b6116818161166c565b82525050565b5f60208201905061169a5f830184611678565b92915050565b5f602082840312156116b5576116b46113e2565b5b5f6116c2848285016115a2565b91505092915050565b5f602082840312156116e0576116df6113e2565b5b5f6116ed8482850161156f565b91505092915050565b6116ff81611548565b82525050565b5f6020820190506117185f8301846116f6565b92915050565b5f8060408385031215611734576117336113e2565b5b5f6117418582860161156f565b92505060206117528582860161156f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806117a057607f821691505b6020821081036117b3576117b261175c565b5b50919050565b7f45524332303a2063616c6c6572206973206e6f742074686520636861696e00005f82015250565b5f6117ed601e836114a3565b91506117f8826117b9565b602082019050919050565b5f6020820190508181035f83015261181a816117e1565b9050919050565b61182a81611466565b8114611834575f80fd5b50565b5f8151905061184581611821565b92915050565b5f602082840312156118605761185f6113e2565b5b5f61186d84828501611837565b91505092915050565b7f45524332303a207472616e7366657220746f20626c6f636b65642061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6118d06022836114a3565b91506118db82611876565b604082019050919050565b5f6020820190508181035f8301526118fd816118c4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61193b82611583565b915061194683611583565b925082820390508181111561195e5761195d611904565b5b92915050565b7f45524332303a206d696e7420746f20626c6f636b6564206164647265737300005f82015250565b5f611998601e836114a3565b91506119a382611964565b602082019050919050565b5f6020820190508181035f8301526119c58161198c565b9050919050565b7f45524332303a206275726e2066726f6d206d6f64756c652061646472657373005f82015250565b5f611a00601f836114a3565b9150611a0b826119cc565b602082019050919050565b5f6020820190508181035f830152611a2d816119f4565b9050919050565b5f611a3e82611583565b9150611a4983611583565b9250828201905080821115611a6157611a60611904565b5b9291505056fea2646970667358221220de4043b1adb87162ffc06c0127fc335d705e04b467c9acd7522c8721ebd4c4bb64736f6c63430008190033a264697066735822122033c4a84f26f98b6e3f572377d6071b375cf3c1833cddb53e89437ad4f0d8196a64736f6c63430008190033", } // Erc20WrapperABI is the input ABI used to generate the binding from. diff --git a/x/evm/contracts/erc20_wrapper/ERC20Wrapper.sol b/x/evm/contracts/erc20_wrapper/ERC20Wrapper.sol index 106a8ba..6b8c9b7 100644 --- a/x/evm/contracts/erc20_wrapper/ERC20Wrapper.sol +++ b/x/evm/contracts/erc20_wrapper/ERC20Wrapper.sol @@ -38,7 +38,7 @@ contract ERC20Wrapper is /** * @notice This function wraps the tokens and transfer the tokens by ibc transfer - * @dev A sender requires sender approve to this contract to transfer the tokens. + * @dev This function requires sender approve to this contract to transfer the tokens. */ function wrap( string memory channel, diff --git a/x/evm/keeper/genesis.go b/x/evm/keeper/genesis.go index bfc7ac0..34c3996 100644 --- a/x/evm/keeper/genesis.go +++ b/x/evm/keeper/genesis.go @@ -6,6 +6,7 @@ import ( "cosmossdk.io/collections" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/initia-labs/minievm/x/evm/contracts/erc20_factory" @@ -16,7 +17,7 @@ import ( // Initialize initializes the EVM state at genesis by performing the following steps: // 1. Deploy and store the ERC20 factory contract. // 2. Deploy fee denom ERC20 coins at genesis bootstrapping with 18 decimals. -// 3. Deploy and store the wrapper ERC20 factory contract for IBC transfers to the destination chain (not compatible due to 18 decimals). +// 3. Deploy and store the wrapper ERC20 factory contract for IBC transfers. func (k Keeper) Initialize(ctx context.Context) error { return k.InitializeWithDecimals(ctx, types.EtherDecimals) } @@ -24,54 +25,69 @@ func (k Keeper) Initialize(ctx context.Context) error { // InitializeWithDecimals initializes the EVM state at genesis with the given decimals func (k Keeper) InitializeWithDecimals(ctx context.Context, decimals uint8) error { // 1. Deploy and store the ERC20 factory contract. - factoryCode, err := hexutil.Decode(erc20_factory.Erc20FactoryBin) + err := k.DeployERC20Factory(ctx) if err != nil { return err } - _, factoryAddr, _, err := k.EVMCreate2(ctx, types.StdAddress, factoryCode, nil, types.ERC20FactorySalt, nil) + params, err := k.Params.Get(ctx) if err != nil { return err } - err = k.ERC20FactoryAddr.Set(ctx, factoryAddr.Bytes()) + // 2. Deploy fee denom ERC20 coins at genesis bootstrapping with decimals. + err = k.erc20Keeper.CreateERC20(ctx, params.FeeDenom, decimals) if err != nil { return err } - params, err := k.Params.Get(ctx) + // 3. Deploy and store the ERC20 wrapper factory contract for IBC transfers. + err = k.DeployERC20Wrapper(ctx) if err != nil { return err } - // 2. Deploy fee denom ERC20 coins at genesis bootstrapping with decimals. - err = k.erc20Keeper.CreateERC20(ctx, params.FeeDenom, decimals) + return nil +} + +// DeployERC20Factory deploys the ERC20 factory contract and stores the address in the keeper. +func (k Keeper) DeployERC20Factory(ctx context.Context) error { + factoryCode, err := hexutil.Decode(erc20_factory.Erc20FactoryBin) if err != nil { return err } - // 3. Deploy and store the wrapper ERC20 factory contract for IBC transfers to the destination chain (not compatible due to 18 decimals). - wrapperCode, err := hexutil.Decode(erc20_wrapper.Erc20WrapperBin) + _, factoryAddr, _, err := k.EVMCreate2(ctx, types.StdAddress, factoryCode, nil, types.ERC20FactorySalt, nil) if err != nil { return err } - abi, _ := erc20_wrapper.Erc20WrapperMetaData.GetAbi() - wrapperConstructorArg, err := abi.Constructor.Inputs.Pack(factoryAddr) + + return k.ERC20FactoryAddr.Set(ctx, factoryAddr.Bytes()) +} + +// DeployERC20Wrapper deploys the ERC20 wrapper contract and stores the address in the keeper. +func (k Keeper) DeployERC20Wrapper(ctx context.Context) error { + factoryAddr, err := k.ERC20FactoryAddr.Get(ctx) if err != nil { return err } - _, wrapperAddr, _, err := k.EVMCreate2(ctx, types.StdAddress, append(wrapperCode, wrapperConstructorArg...), nil, types.ERC20WrapperSalt, nil) + wrapperCode, err := hexutil.Decode(erc20_wrapper.Erc20WrapperBin) + if err != nil { + return err + } + abi, _ := erc20_wrapper.Erc20WrapperMetaData.GetAbi() + wrapperConstructorArg, err := abi.Constructor.Inputs.Pack(common.BytesToAddress(factoryAddr)) if err != nil { return err } - err = k.ERC20WrapperAddr.Set(ctx, wrapperAddr.Bytes()) + _, wrapperAddr, _, err := k.EVMCreate2(ctx, types.StdAddress, append(wrapperCode, wrapperConstructorArg...), nil, types.ERC20WrapperSalt, nil) if err != nil { return err } - return nil + return k.ERC20WrapperAddr.Set(ctx, wrapperAddr.Bytes()) } func (k Keeper) InitGenesis(ctx context.Context, genState types.GenesisState) error { diff --git a/x/evm/keeper/keeper.go b/x/evm/keeper/keeper.go index 9842ad1..07e12b6 100644 --- a/x/evm/keeper/keeper.go +++ b/x/evm/keeper/keeper.go @@ -191,6 +191,11 @@ func (k *Keeper) Logger(ctx context.Context) log.Logger { return sdkCtx.Logger().With("module", "x/"+types.ModuleName) } +// StoreService returns the KVStoreService. +func (k Keeper) StoreService() corestoretypes.KVStoreService { + return k.storeService +} + // Config returns the x/evm configuration. func (k Keeper) Config() evmconfig.EVMConfig { return k.config @@ -264,11 +269,17 @@ func (k Keeper) GetERC20WrapperAddr(ctx context.Context) (common.Address, error) return common.BytesToAddress(wrapperAddr), nil } -// keep track recent 256 block hashes -// - https://www.ethervm.io/#40 +// keep track recent `NumRetainBlockHashes` block hashes +// - https://www.ethervm.io/#40 (default action is keep `256“ block hashes) func (k Keeper) TrackBlockHash(ctx context.Context, blockHeight uint64, hash common.Hash) error { - if blockHeight > 256 { - err := k.EVMBlockHashes.Remove(ctx, blockHeight-256) + num, err := k.NumRetainBlockHashes(ctx) + if err != nil { + return err + } + + // keep all block hashes if `NumRetainBlockHashes` is 0 + if num != 0 && blockHeight > num { + err := k.EVMBlockHashes.Remove(ctx, blockHeight-num) if err != nil { return err } diff --git a/x/evm/keeper/params.go b/x/evm/keeper/params.go index 7dd63e5..d823c12 100644 --- a/x/evm/keeper/params.go +++ b/x/evm/keeper/params.go @@ -37,3 +37,12 @@ func (k Keeper) GasRefundRatio(ctx context.Context) (math.LegacyDec, error) { return params.GasRefundRatio, nil } + +func (k Keeper) NumRetainBlockHashes(ctx context.Context) (uint64, error) { + params, err := k.Params.Get(ctx) + if err != nil { + return 0, err + } + + return params.NumRetainBlockHashes, nil +} diff --git a/x/evm/types/errors.go b/x/evm/types/errors.go index e4e631e..3999ece 100644 --- a/x/evm/types/errors.go +++ b/x/evm/types/errors.go @@ -35,6 +35,7 @@ var ( ErrInvalidFeeDenom = errorsmod.Register(ModuleName, 26, "Invalid fee denom") ErrInvalidGasRefundRatio = errorsmod.Register(ModuleName, 27, "Invalid gas refund ratio") ErrFailedToGetERC20WrapperAddr = errorsmod.Register(ModuleName, 28, "Failed to get ERC20 wrapper address") + ErrInvalidNumRetainBlockHashes = errorsmod.Register(ModuleName, 29, "Invalid num retain block hashes") ) func NewRevertError(revert []byte) error { diff --git a/x/evm/types/params.go b/x/evm/types/params.go index 1fde527..1ab12bf 100644 --- a/x/evm/types/params.go +++ b/x/evm/types/params.go @@ -10,9 +10,10 @@ import ( func DefaultParams() Params { return Params{ - AllowCustomERC20: true, - FeeDenom: sdk.DefaultBondDenom, - GasRefundRatio: math.LegacyNewDecWithPrec(5, 1), + AllowCustomERC20: true, + FeeDenom: sdk.DefaultBondDenom, + GasRefundRatio: math.LegacyNewDecWithPrec(5, 1), + NumRetainBlockHashes: 256, } } @@ -43,5 +44,9 @@ func (p Params) Validate(ac address.Codec) error { return ErrInvalidGasRefundRatio } + if p.NumRetainBlockHashes != 0 && p.NumRetainBlockHashes < 256 { + return ErrInvalidNumRetainBlockHashes + } + return nil } diff --git a/x/evm/types/types.pb.go b/x/evm/types/types.pb.go index dde3bb4..ab29caf 100644 --- a/x/evm/types/types.pb.go +++ b/x/evm/types/types.pb.go @@ -41,6 +41,9 @@ type Params struct { // gas_refund_ratio defines the gas refund ratio for the evm transactions // If the gas refund ratio is 0, the gas refund is disabled. GasRefundRatio cosmossdk_io_math.LegacyDec `protobuf:"bytes,6,opt,name=gas_refund_ratio,json=gasRefundRatio,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"gas_refund_ratio" yaml:"gas_refund_ratio"` + // num_retain_block_hashes defines the number of block hashes to retain + // for the evm opcode `BLOCKHASH`. + NumRetainBlockHashes uint64 `protobuf:"varint,7,opt,name=num_retain_block_hashes,json=numRetainBlockHashes,proto3" json:"num_retain_block_hashes,omitempty" yaml:"num_retain_block_hashes"` } func (m *Params) Reset() { *m = Params{} } @@ -169,43 +172,45 @@ func init() { func init() { proto.RegisterFile("minievm/evm/v1/types.proto", fileDescriptor_98c9eab1c4bf0154) } var fileDescriptor_98c9eab1c4bf0154 = []byte{ - // 561 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x53, 0xb1, 0x6f, 0xd3, 0x4e, - 0x14, 0xb6, 0x7f, 0xe9, 0x2f, 0xd4, 0x57, 0x54, 0xa5, 0xd7, 0x40, 0x4d, 0x40, 0x76, 0xf0, 0x14, - 0x45, 0x22, 0x6e, 0xca, 0x56, 0xb1, 0xc4, 0x69, 0x06, 0x68, 0x86, 0x60, 0x31, 0xb1, 0x58, 0x17, - 0xfb, 0xe2, 0x9c, 0x6a, 0xe7, 0x2c, 0x9f, 0x13, 0x9a, 0x7f, 0x81, 0x05, 0x46, 0xc6, 0x8e, 0x1d, - 0xfb, 0x67, 0x64, 0xec, 0x88, 0x18, 0x2c, 0x70, 0x86, 0x32, 0xe7, 0x2f, 0x40, 0x77, 0x76, 0x4a, - 0x02, 0x12, 0xc3, 0x59, 0xef, 0x7d, 0xdf, 0xf7, 0x3e, 0xbf, 0xd3, 0xbd, 0x07, 0x6a, 0x21, 0x99, - 0x10, 0x3c, 0x0b, 0x4d, 0x7e, 0x66, 0x6d, 0x33, 0x99, 0x47, 0x98, 0xb5, 0xa2, 0x98, 0x26, 0x14, - 0xee, 0x17, 0x5c, 0x8b, 0x9f, 0x59, 0xbb, 0x76, 0x80, 0x42, 0x32, 0xa1, 0xa6, 0xf8, 0xe6, 0x92, - 0x5a, 0xd5, 0xa7, 0x3e, 0x15, 0xa1, 0xc9, 0xa3, 0x1c, 0x35, 0x3e, 0xed, 0x80, 0xf2, 0x00, 0xc5, - 0x28, 0x64, 0xb0, 0x03, 0x00, 0xbe, 0x4c, 0x62, 0xe4, 0x60, 0x12, 0x31, 0x55, 0xae, 0x97, 0x1a, - 0x25, 0xcb, 0xc8, 0x52, 0x5d, 0xe9, 0x71, 0xb4, 0xf7, 0x7a, 0xc0, 0x56, 0xa9, 0x7e, 0x30, 0x47, - 0x61, 0x70, 0x6a, 0xfc, 0x16, 0x1a, 0xb6, 0x22, 0x92, 0x1e, 0x89, 0x18, 0x7c, 0x0b, 0x20, 0x0a, - 0x02, 0xfa, 0x01, 0x7b, 0x4e, 0x34, 0x1d, 0x06, 0x84, 0x8d, 0x71, 0xcc, 0xd4, 0xff, 0xea, 0xa5, - 0x86, 0x62, 0x19, 0xab, 0x54, 0x7f, 0x92, 0x57, 0xff, 0xad, 0x31, 0xae, 0xef, 0x6e, 0x9a, 0xb2, - 0x7d, 0x50, 0x30, 0x83, 0x7b, 0x02, 0x5a, 0x85, 0xa5, 0xe3, 0x4e, 0x59, 0x42, 0x43, 0x07, 0xc7, - 0xee, 0xc9, 0xb1, 0x5a, 0xaa, 0xcb, 0x8d, 0x5d, 0xab, 0x9a, 0xa5, 0x7a, 0xa5, 0xc3, 0xd9, 0xae, - 0x20, 0x7b, 0x76, 0xf7, 0xe4, 0xd8, 0xae, 0xa0, 0x0d, 0x84, 0xab, 0x61, 0x04, 0x1e, 0xad, 0x7f, - 0xb9, 0xe9, 0xc2, 0xd4, 0x1d, 0xd1, 0xd9, 0xab, 0x2c, 0xd5, 0x0f, 0x3b, 0xb9, 0x60, 0xc3, 0x88, - 0x5f, 0xf7, 0xd9, 0x76, 0xc3, 0x5b, 0xd5, 0x45, 0xcf, 0x87, 0x68, 0xab, 0x52, 0x50, 0xb0, 0x0d, - 0x94, 0x11, 0xc6, 0x8e, 0x87, 0x27, 0x34, 0x54, 0xff, 0xaf, 0xcb, 0x0d, 0xc5, 0xaa, 0xae, 0x52, - 0xbd, 0x92, 0xdb, 0xdd, 0x53, 0x86, 0xbd, 0x3b, 0xc2, 0xf8, 0x8c, 0x87, 0x30, 0x04, 0x15, 0x1f, - 0x31, 0x27, 0xc6, 0xa3, 0xe9, 0xc4, 0x73, 0x62, 0x94, 0x10, 0xaa, 0x96, 0x45, 0x65, 0x77, 0x91, - 0xea, 0xd2, 0xb7, 0x54, 0x7f, 0xea, 0x52, 0x16, 0x52, 0xc6, 0xbc, 0x8b, 0x16, 0xa1, 0x66, 0x88, - 0x92, 0x71, 0xab, 0x8f, 0x7d, 0xe4, 0xce, 0xcf, 0xb0, 0xbb, 0x4a, 0xf5, 0xa3, 0xdc, 0xfc, 0x4f, - 0x93, 0xa2, 0xcd, 0x7d, 0x1f, 0x31, 0x5b, 0xc0, 0x36, 0x47, 0x4f, 0x8f, 0xbe, 0x5c, 0xe9, 0xd2, - 0xcf, 0x2b, 0x5d, 0xfe, 0x78, 0x77, 0xd3, 0x04, 0x7c, 0xa4, 0xf2, 0x31, 0x30, 0xce, 0x41, 0xa9, - 0x4f, 0x7d, 0xa8, 0x82, 0x07, 0xc8, 0xf3, 0x62, 0xcc, 0xf8, 0x28, 0xc8, 0x0d, 0xc5, 0x5e, 0xa7, - 0xf0, 0x31, 0x28, 0x27, 0x34, 0x22, 0x6e, 0xf1, 0xb0, 0x76, 0x91, 0x41, 0x08, 0x76, 0x3c, 0x94, - 0x20, 0xf1, 0x36, 0x8a, 0x2d, 0x62, 0xe3, 0x0d, 0xd8, 0xeb, 0xb8, 0x2e, 0x66, 0xec, 0xdd, 0x34, - 0x0a, 0xf0, 0x3f, 0x4c, 0x9f, 0x83, 0x87, 0x2c, 0xa1, 0x31, 0xf2, 0xb1, 0x73, 0x81, 0xe7, 0x6b, - 0xeb, 0xbd, 0x02, 0x3b, 0xc7, 0x73, 0x66, 0xf5, 0x17, 0x3f, 0x34, 0xe9, 0x3a, 0xd3, 0xe4, 0x45, - 0xa6, 0xc9, 0xb7, 0x99, 0x26, 0x7f, 0xcf, 0x34, 0xf9, 0xf3, 0x52, 0x93, 0x6e, 0x97, 0x9a, 0xf4, - 0x75, 0xa9, 0x49, 0xef, 0x9b, 0x3e, 0x49, 0xc6, 0xd3, 0x61, 0xcb, 0xa5, 0xa1, 0x49, 0x26, 0x24, - 0x21, 0xe8, 0x45, 0x80, 0x86, 0xcc, 0x5c, 0x2f, 0xce, 0xa5, 0x58, 0x1d, 0xb1, 0x37, 0xc3, 0xb2, - 0x98, 0xff, 0x97, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0x17, 0x84, 0x6d, 0xd2, 0x56, 0x03, 0x00, - 0x00, + // 608 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x53, 0x41, 0x4f, 0xd4, 0x40, + 0x14, 0xde, 0xba, 0xeb, 0x42, 0x07, 0x43, 0x96, 0x61, 0x95, 0x8a, 0xa6, 0x5d, 0x7b, 0xb1, 0x21, + 0x71, 0x0b, 0x78, 0x23, 0x5e, 0xb6, 0xb0, 0x89, 0x0a, 0x07, 0x6c, 0x3c, 0x79, 0xb0, 0x99, 0x6d, + 0x87, 0xee, 0x84, 0x4e, 0xa7, 0xe9, 0xb4, 0xc8, 0xfe, 0x05, 0x4f, 0x1e, 0x3d, 0x72, 0xe4, 0xc8, + 0xcf, 0xe0, 0xc8, 0xd1, 0x78, 0x68, 0xb4, 0x1c, 0xf0, 0x66, 0xb2, 0xbf, 0xc0, 0xcc, 0xb4, 0x8b, + 0xa0, 0xd1, 0xc3, 0x6b, 0xde, 0xfb, 0xbe, 0xef, 0x7d, 0x7d, 0x4d, 0xdf, 0x03, 0xab, 0x94, 0xc4, + 0x04, 0x1f, 0x51, 0x5b, 0xc4, 0xd1, 0x86, 0x9d, 0x4d, 0x12, 0xcc, 0xfb, 0x49, 0xca, 0x32, 0x06, + 0x17, 0x6b, 0xae, 0x2f, 0xe2, 0x68, 0x63, 0x75, 0x09, 0x51, 0x12, 0x33, 0x5b, 0x3e, 0x2b, 0xc9, + 0x6a, 0x37, 0x64, 0x21, 0x93, 0xa9, 0x2d, 0xb2, 0x0a, 0x35, 0x7f, 0xb6, 0x40, 0x7b, 0x1f, 0xa5, + 0x88, 0x72, 0x38, 0x00, 0x00, 0x1f, 0x67, 0x29, 0xf2, 0x30, 0x49, 0xb8, 0xa6, 0xf4, 0x9a, 0x56, + 0xd3, 0x31, 0xcb, 0xc2, 0x50, 0x87, 0x02, 0x1d, 0xbe, 0xda, 0xe7, 0xd3, 0xc2, 0x58, 0x9a, 0x20, + 0x1a, 0x6d, 0x99, 0xbf, 0x85, 0xa6, 0xab, 0xca, 0x62, 0x48, 0x12, 0x0e, 0xdf, 0x00, 0x88, 0xa2, + 0x88, 0x7d, 0xc0, 0x81, 0x97, 0xe4, 0xa3, 0x88, 0xf0, 0x31, 0x4e, 0xb9, 0x76, 0xa7, 0xd7, 0xb4, + 0x54, 0xc7, 0x9c, 0x16, 0xc6, 0xc3, 0xaa, 0xfb, 0x6f, 0x8d, 0x79, 0x7a, 0x75, 0xb6, 0xa6, 0xb8, + 0x4b, 0x35, 0xb3, 0x7f, 0x4d, 0x40, 0xa7, 0xb6, 0xf4, 0xfc, 0x9c, 0x67, 0x8c, 0x7a, 0x38, 0xf5, + 0x37, 0xd7, 0xb5, 0x66, 0x4f, 0xb1, 0xe6, 0x9d, 0x6e, 0x59, 0x18, 0x9d, 0x81, 0x60, 0xb7, 0x25, + 0x39, 0x74, 0xb7, 0x37, 0xd7, 0xdd, 0x0e, 0xba, 0x81, 0x08, 0x35, 0x4c, 0xc0, 0xfd, 0xd9, 0x2b, + 0x6f, 0xba, 0x70, 0xad, 0x25, 0x27, 0x7b, 0x51, 0x16, 0xc6, 0xf2, 0xa0, 0x12, 0xdc, 0x30, 0x12, + 0x9f, 0xfb, 0xf8, 0xf6, 0xc0, 0xb7, 0xba, 0xeb, 0x99, 0x97, 0xd1, 0xad, 0x4e, 0x49, 0xc1, 0x0d, + 0xa0, 0x1e, 0x60, 0xec, 0x05, 0x38, 0x66, 0x54, 0xbb, 0xdb, 0x53, 0x2c, 0xd5, 0xe9, 0x4e, 0x0b, + 0xa3, 0x53, 0xd9, 0x5d, 0x53, 0xa6, 0x3b, 0x7f, 0x80, 0xf1, 0x8e, 0x48, 0x21, 0x05, 0x9d, 0x10, + 0x71, 0x2f, 0xc5, 0x07, 0x79, 0x1c, 0x78, 0x29, 0xca, 0x08, 0xd3, 0xda, 0xb2, 0x73, 0xfb, 0xbc, + 0x30, 0x1a, 0x5f, 0x0b, 0xe3, 0x91, 0xcf, 0x38, 0x65, 0x9c, 0x07, 0x87, 0x7d, 0xc2, 0x6c, 0x8a, + 0xb2, 0x71, 0x7f, 0x0f, 0x87, 0xc8, 0x9f, 0xec, 0x60, 0x7f, 0x5a, 0x18, 0x2b, 0x95, 0xf9, 0x9f, + 0x26, 0xf5, 0x98, 0x8b, 0x21, 0xe2, 0xae, 0x84, 0x5d, 0x81, 0xc2, 0xf7, 0x60, 0x25, 0xce, 0xa9, + 0x97, 0xe2, 0x0c, 0x91, 0xd8, 0x1b, 0x45, 0xcc, 0x3f, 0xf4, 0xc6, 0x88, 0x8f, 0x31, 0xd7, 0xe6, + 0x7a, 0x8a, 0xd5, 0x72, 0x9e, 0x4e, 0x0b, 0x43, 0xaf, 0x2c, 0xff, 0x21, 0xac, 0x9d, 0xbb, 0x71, + 0x4e, 0x5d, 0xc9, 0x3a, 0x82, 0x7c, 0x29, 0xb9, 0xad, 0x95, 0xcf, 0x27, 0x46, 0xe3, 0xc7, 0x89, + 0xa1, 0x7c, 0xbc, 0x3a, 0x5b, 0x03, 0x62, 0x65, 0xab, 0x35, 0x33, 0x77, 0x41, 0x73, 0x8f, 0x85, + 0x50, 0x03, 0x73, 0x28, 0x08, 0x52, 0xcc, 0xc5, 0xaa, 0x29, 0x96, 0xea, 0xce, 0x4a, 0xf8, 0x00, + 0xb4, 0x33, 0x96, 0x10, 0xbf, 0x5e, 0x1c, 0xb7, 0xae, 0x20, 0x04, 0xad, 0x00, 0x65, 0x48, 0xfe, + 0x7b, 0xd5, 0x95, 0xb9, 0xf9, 0x1a, 0x2c, 0x0c, 0x7c, 0x1f, 0x73, 0xfe, 0x36, 0x4f, 0x22, 0xfc, + 0x1f, 0xd3, 0x27, 0xe0, 0x1e, 0xcf, 0x58, 0x8a, 0x42, 0xec, 0x1d, 0xe2, 0xc9, 0xcc, 0x7a, 0xa1, + 0xc6, 0x76, 0xf1, 0x84, 0x3b, 0x7b, 0xe7, 0xdf, 0xf5, 0xc6, 0x69, 0xa9, 0x2b, 0xe7, 0xa5, 0xae, + 0x5c, 0x94, 0xba, 0xf2, 0xad, 0xd4, 0x95, 0x4f, 0x97, 0x7a, 0xe3, 0xe2, 0x52, 0x6f, 0x7c, 0xb9, + 0xd4, 0x1b, 0xef, 0xd6, 0x42, 0x92, 0x8d, 0xf3, 0x51, 0xdf, 0x67, 0xd4, 0x26, 0x31, 0xc9, 0x08, + 0x7a, 0x16, 0xa1, 0x11, 0xb7, 0x67, 0x87, 0x79, 0x2c, 0x4f, 0x53, 0xde, 0xe5, 0xa8, 0x2d, 0xef, + 0xeb, 0xf9, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x69, 0x72, 0x90, 0x5c, 0xb6, 0x03, 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool { @@ -260,6 +265,9 @@ func (this *Params) Equal(that interface{}) bool { if !this.GasRefundRatio.Equal(that1.GasRefundRatio) { return false } + if this.NumRetainBlockHashes != that1.NumRetainBlockHashes { + return false + } return true } func (this *Log) Equal(that interface{}) bool { @@ -349,6 +357,11 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.NumRetainBlockHashes != 0 { + i = encodeVarintTypes(dAtA, i, uint64(m.NumRetainBlockHashes)) + i-- + dAtA[i] = 0x38 + } { size := m.GasRefundRatio.Size() i -= size @@ -546,6 +559,9 @@ func (m *Params) Size() (n int) { } l = m.GasRefundRatio.Size() n += 1 + l + sovTypes(uint64(l)) + if m.NumRetainBlockHashes != 0 { + n += 1 + sovTypes(uint64(m.NumRetainBlockHashes)) + } return n } @@ -852,6 +868,25 @@ func (m *Params) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumRetainBlockHashes", wireType) + } + m.NumRetainBlockHashes = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumRetainBlockHashes |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:])