From 5b00df1225945aa13945a179a7fb787ccb594fe8 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Tue, 23 Mar 2021 18:02:09 +0100 Subject: [PATCH 01/26] change: extend cosmos reflection --- Makefile | 2 +- baseapp/grpcrouter.go | 8 - client/grpc/reflection/reflection.go | 45 - client/grpc/reflection/reflection.pb.go | 936 --- client/grpc/reflection/reflection_test.go | 55 - docs/core/proto-docs.md | 317 +- .../base/reflection/v1beta1/reflection.proto | 182 +- .../grpc/cosmosreflection/cosmosreflection.go | 203 + server/grpc/cosmosreflection/reflection.pb.go | 5596 +++++++++++++++++ .../cosmosreflection}/reflection.pb.gw.go | 66 +- server/grpc/server.go | 21 +- x/bank/types/genesis.pb.go | 3 +- x/staking/types/staking.pb.go | 968 +-- 13 files changed, 6867 insertions(+), 1535 deletions(-) delete mode 100644 client/grpc/reflection/reflection.go delete mode 100644 client/grpc/reflection/reflection.pb.go delete mode 100644 client/grpc/reflection/reflection_test.go create mode 100644 server/grpc/cosmosreflection/cosmosreflection.go create mode 100644 server/grpc/cosmosreflection/reflection.pb.go rename {client/grpc/reflection => server/grpc/cosmosreflection}/reflection.pb.gw.go (77%) diff --git a/Makefile b/Makefile index d7b8a1fa8cfd..4c7582b01eb5 100644 --- a/Makefile +++ b/Makefile @@ -373,7 +373,7 @@ proto-all: proto-format proto-lint proto-gen proto-gen: @echo "Generating Protobuf files" - $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace tendermintdev/sdk-proto-gen:v0.1 sh ./scripts/protocgen.sh + docker run --rm -v $(CURDIR):/workspace --workdir /workspace tendermintdev/sdk-proto-gen:v0.1 sh ./scripts/protocgen.sh proto-format: @echo "Formatting Protobuf files" diff --git a/baseapp/grpcrouter.go b/baseapp/grpcrouter.go index 95186f0b16da..fa8ea78ceed9 100644 --- a/baseapp/grpcrouter.go +++ b/baseapp/grpcrouter.go @@ -10,7 +10,6 @@ import ( "google.golang.org/grpc/encoding" "google.golang.org/grpc/encoding/proto" - "github.com/cosmos/cosmos-sdk/client/grpc/reflection" codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -136,13 +135,6 @@ func (qrt *GRPCQueryRouter) RegisterService(sd *grpc.ServiceDesc, handler interf // also register the interface reflection gRPC service. func (qrt *GRPCQueryRouter) SetInterfaceRegistry(interfaceRegistry codectypes.InterfaceRegistry) { qrt.interfaceRegistry = interfaceRegistry - - // Once we have an interface registry, we can register the interface - // registry reflection gRPC service. - reflection.RegisterReflectionServiceServer( - qrt, - reflection.NewReflectionServiceServer(interfaceRegistry), - ) } // returnTypeOf returns the return type of a gRPC method handler. With the way the diff --git a/client/grpc/reflection/reflection.go b/client/grpc/reflection/reflection.go deleted file mode 100644 index eb07ea86bd73..000000000000 --- a/client/grpc/reflection/reflection.go +++ /dev/null @@ -1,45 +0,0 @@ -package reflection - -import ( - "context" - - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - "github.com/cosmos/cosmos-sdk/codec/types" -) - -type reflectionServiceServer struct { - interfaceRegistry types.InterfaceRegistry -} - -// NewReflectionServiceServer creates a new reflectionServiceServer. -func NewReflectionServiceServer(interfaceRegistry types.InterfaceRegistry) ReflectionServiceServer { - return &reflectionServiceServer{interfaceRegistry: interfaceRegistry} -} - -var _ ReflectionServiceServer = (*reflectionServiceServer)(nil) - -// ListAllInterfaces implements the ListAllInterfaces method of the -// ReflectionServiceServer interface. -func (r reflectionServiceServer) ListAllInterfaces(_ context.Context, _ *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) { - ifaces := r.interfaceRegistry.ListAllInterfaces() - - return &ListAllInterfacesResponse{InterfaceNames: ifaces}, nil -} - -// ListImplementations implements the ListImplementations method of the -// ReflectionServiceServer interface. -func (r reflectionServiceServer) ListImplementations(_ context.Context, req *ListImplementationsRequest) (*ListImplementationsResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "empty request") - } - - if req.InterfaceName == "" { - return nil, status.Error(codes.InvalidArgument, "invalid interface name") - } - - impls := r.interfaceRegistry.ListImplementations(req.InterfaceName) - - return &ListImplementationsResponse{ImplementationMessageNames: impls}, nil -} diff --git a/client/grpc/reflection/reflection.pb.go b/client/grpc/reflection/reflection.pb.go deleted file mode 100644 index 66dbef0c7105..000000000000 --- a/client/grpc/reflection/reflection.pb.go +++ /dev/null @@ -1,936 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: cosmos/base/reflection/v1beta1/reflection.proto - -package reflection - -import ( - context "context" - fmt "fmt" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" - _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// ListAllInterfacesRequest is the request type of the ListAllInterfaces RPC. -type ListAllInterfacesRequest struct { -} - -func (m *ListAllInterfacesRequest) Reset() { *m = ListAllInterfacesRequest{} } -func (m *ListAllInterfacesRequest) String() string { return proto.CompactTextString(m) } -func (*ListAllInterfacesRequest) ProtoMessage() {} -func (*ListAllInterfacesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{0} -} -func (m *ListAllInterfacesRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ListAllInterfacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ListAllInterfacesRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ListAllInterfacesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListAllInterfacesRequest.Merge(m, src) -} -func (m *ListAllInterfacesRequest) XXX_Size() int { - return m.Size() -} -func (m *ListAllInterfacesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListAllInterfacesRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListAllInterfacesRequest proto.InternalMessageInfo - -// ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC. -type ListAllInterfacesResponse struct { - // interface_names is an array of all the registered interfaces. - InterfaceNames []string `protobuf:"bytes,1,rep,name=interface_names,json=interfaceNames,proto3" json:"interface_names,omitempty"` -} - -func (m *ListAllInterfacesResponse) Reset() { *m = ListAllInterfacesResponse{} } -func (m *ListAllInterfacesResponse) String() string { return proto.CompactTextString(m) } -func (*ListAllInterfacesResponse) ProtoMessage() {} -func (*ListAllInterfacesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{1} -} -func (m *ListAllInterfacesResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ListAllInterfacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ListAllInterfacesResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ListAllInterfacesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListAllInterfacesResponse.Merge(m, src) -} -func (m *ListAllInterfacesResponse) XXX_Size() int { - return m.Size() -} -func (m *ListAllInterfacesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListAllInterfacesResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListAllInterfacesResponse proto.InternalMessageInfo - -func (m *ListAllInterfacesResponse) GetInterfaceNames() []string { - if m != nil { - return m.InterfaceNames - } - return nil -} - -// ListImplementationsRequest is the request type of the ListImplementations -// RPC. -type ListImplementationsRequest struct { - // interface_name defines the interface to query the implementations for. - InterfaceName string `protobuf:"bytes,1,opt,name=interface_name,json=interfaceName,proto3" json:"interface_name,omitempty"` -} - -func (m *ListImplementationsRequest) Reset() { *m = ListImplementationsRequest{} } -func (m *ListImplementationsRequest) String() string { return proto.CompactTextString(m) } -func (*ListImplementationsRequest) ProtoMessage() {} -func (*ListImplementationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{2} -} -func (m *ListImplementationsRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ListImplementationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ListImplementationsRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ListImplementationsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListImplementationsRequest.Merge(m, src) -} -func (m *ListImplementationsRequest) XXX_Size() int { - return m.Size() -} -func (m *ListImplementationsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListImplementationsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListImplementationsRequest proto.InternalMessageInfo - -func (m *ListImplementationsRequest) GetInterfaceName() string { - if m != nil { - return m.InterfaceName - } - return "" -} - -// ListImplementationsResponse is the response type of the ListImplementations -// RPC. -type ListImplementationsResponse struct { - ImplementationMessageNames []string `protobuf:"bytes,1,rep,name=implementation_message_names,json=implementationMessageNames,proto3" json:"implementation_message_names,omitempty"` -} - -func (m *ListImplementationsResponse) Reset() { *m = ListImplementationsResponse{} } -func (m *ListImplementationsResponse) String() string { return proto.CompactTextString(m) } -func (*ListImplementationsResponse) ProtoMessage() {} -func (*ListImplementationsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{3} -} -func (m *ListImplementationsResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ListImplementationsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ListImplementationsResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ListImplementationsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListImplementationsResponse.Merge(m, src) -} -func (m *ListImplementationsResponse) XXX_Size() int { - return m.Size() -} -func (m *ListImplementationsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListImplementationsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListImplementationsResponse proto.InternalMessageInfo - -func (m *ListImplementationsResponse) GetImplementationMessageNames() []string { - if m != nil { - return m.ImplementationMessageNames - } - return nil -} - -func init() { - proto.RegisterType((*ListAllInterfacesRequest)(nil), "cosmos.base.reflection.v1beta1.ListAllInterfacesRequest") - proto.RegisterType((*ListAllInterfacesResponse)(nil), "cosmos.base.reflection.v1beta1.ListAllInterfacesResponse") - proto.RegisterType((*ListImplementationsRequest)(nil), "cosmos.base.reflection.v1beta1.ListImplementationsRequest") - proto.RegisterType((*ListImplementationsResponse)(nil), "cosmos.base.reflection.v1beta1.ListImplementationsResponse") -} - -func init() { - proto.RegisterFile("cosmos/base/reflection/v1beta1/reflection.proto", fileDescriptor_d48c054165687f5c) -} - -var fileDescriptor_d48c054165687f5c = []byte{ - // 395 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4f, 0xce, 0x2f, 0xce, - 0xcd, 0x2f, 0xd6, 0x4f, 0x4a, 0x2c, 0x4e, 0xd5, 0x2f, 0x4a, 0x4d, 0xcb, 0x49, 0x4d, 0x2e, 0xc9, - 0xcc, 0xcf, 0xd3, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0x44, 0x12, 0xd2, 0x2b, 0x28, 0xca, - 0x2f, 0xc9, 0x17, 0x92, 0x83, 0x68, 0xd0, 0x03, 0x69, 0xd0, 0x43, 0x92, 0x85, 0x6a, 0x90, 0x92, - 0x49, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0x4f, 0xcc, 0xcb, 0xcb, 0x2f, - 0x49, 0x04, 0x49, 0x17, 0x43, 0x74, 0x2b, 0x49, 0x71, 0x49, 0xf8, 0x64, 0x16, 0x97, 0x38, 0xe6, - 0xe4, 0x78, 0xe6, 0x95, 0xa4, 0x16, 0xa5, 0x25, 0x26, 0xa7, 0x16, 0x07, 0xa5, 0x16, 0x96, 0xa6, - 0x16, 0x97, 0x28, 0xb9, 0x70, 0x49, 0x62, 0x91, 0x2b, 0x2e, 0xc8, 0xcf, 0x2b, 0x4e, 0x15, 0x52, - 0xe7, 0xe2, 0xcf, 0x84, 0x89, 0xc6, 0xe7, 0x25, 0xe6, 0xa6, 0x16, 0x4b, 0x30, 0x2a, 0x30, 0x6b, - 0x70, 0x06, 0xf1, 0xc1, 0x85, 0xfd, 0x40, 0xa2, 0x4a, 0xce, 0x5c, 0x52, 0x20, 0x53, 0x3c, 0x73, - 0x0b, 0x72, 0x52, 0x73, 0x53, 0xf3, 0xa0, 0xd6, 0x43, 0xed, 0x10, 0x52, 0xe5, 0xe2, 0x43, 0x35, - 0x46, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x88, 0x17, 0xc5, 0x14, 0xa5, 0x78, 0x2e, 0x69, 0xac, - 0x86, 0x40, 0x1d, 0xe3, 0xc0, 0x25, 0x93, 0x89, 0x22, 0x15, 0x9f, 0x9b, 0x5a, 0x5c, 0x9c, 0x98, - 0x8e, 0xea, 0x32, 0x29, 0x54, 0x35, 0xbe, 0x10, 0x25, 0x60, 0x57, 0x1a, 0xed, 0x60, 0xe6, 0x12, - 0x0c, 0x82, 0x07, 0x5e, 0x70, 0x6a, 0x51, 0x59, 0x66, 0x72, 0xaa, 0xd0, 0x1e, 0x46, 0x2e, 0x41, - 0x8c, 0x20, 0x10, 0xb2, 0xd0, 0xc3, 0x1f, 0xe4, 0x7a, 0xb8, 0x42, 0x54, 0xca, 0x92, 0x0c, 0x9d, - 0x10, 0x2f, 0x2a, 0x19, 0x35, 0x5d, 0x7e, 0x32, 0x99, 0x49, 0x47, 0x48, 0x8b, 0x50, 0x02, 0xc9, - 0x44, 0x38, 0xf4, 0x31, 0x23, 0x97, 0x30, 0x96, 0x60, 0x13, 0xb2, 0x22, 0xc6, 0x19, 0xd8, 0x23, - 0x4c, 0xca, 0x9a, 0x2c, 0xbd, 0x50, 0x4f, 0x04, 0x83, 0x3d, 0xe1, 0x2b, 0xe4, 0x4d, 0xbc, 0x27, - 0xf4, 0xab, 0x51, 0xd3, 0x47, 0xad, 0x3e, 0x6a, 0x2c, 0x16, 0x3b, 0xf9, 0x9e, 0x78, 0x24, 0xc7, - 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, - 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x71, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, - 0x7e, 0x2e, 0xcc, 0x42, 0x08, 0xa5, 0x5b, 0x9c, 0x92, 0xad, 0x9f, 0x9c, 0x93, 0x99, 0x9a, 0x57, - 0xa2, 0x9f, 0x5e, 0x54, 0x90, 0x8c, 0xe4, 0x84, 0x24, 0x36, 0x70, 0xc6, 0x30, 0x06, 0x04, 0x00, - 0x00, 0xff, 0xff, 0x32, 0x5b, 0x2b, 0x51, 0x89, 0x03, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// ReflectionServiceClient is the client API for ReflectionService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ReflectionServiceClient interface { - // ListAllInterfaces lists all the interfaces registered in the interface - // registry. - ListAllInterfaces(ctx context.Context, in *ListAllInterfacesRequest, opts ...grpc.CallOption) (*ListAllInterfacesResponse, error) - // ListImplementations list all the concrete types that implement a given - // interface. - ListImplementations(ctx context.Context, in *ListImplementationsRequest, opts ...grpc.CallOption) (*ListImplementationsResponse, error) -} - -type reflectionServiceClient struct { - cc grpc1.ClientConn -} - -func NewReflectionServiceClient(cc grpc1.ClientConn) ReflectionServiceClient { - return &reflectionServiceClient{cc} -} - -func (c *reflectionServiceClient) ListAllInterfaces(ctx context.Context, in *ListAllInterfacesRequest, opts ...grpc.CallOption) (*ListAllInterfacesResponse, error) { - out := new(ListAllInterfacesResponse) - err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/ListAllInterfaces", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *reflectionServiceClient) ListImplementations(ctx context.Context, in *ListImplementationsRequest, opts ...grpc.CallOption) (*ListImplementationsResponse, error) { - out := new(ListImplementationsResponse) - err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/ListImplementations", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ReflectionServiceServer is the server API for ReflectionService service. -type ReflectionServiceServer interface { - // ListAllInterfaces lists all the interfaces registered in the interface - // registry. - ListAllInterfaces(context.Context, *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) - // ListImplementations list all the concrete types that implement a given - // interface. - ListImplementations(context.Context, *ListImplementationsRequest) (*ListImplementationsResponse, error) -} - -// UnimplementedReflectionServiceServer can be embedded to have forward compatible implementations. -type UnimplementedReflectionServiceServer struct { -} - -func (*UnimplementedReflectionServiceServer) ListAllInterfaces(ctx context.Context, req *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListAllInterfaces not implemented") -} -func (*UnimplementedReflectionServiceServer) ListImplementations(ctx context.Context, req *ListImplementationsRequest) (*ListImplementationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListImplementations not implemented") -} - -func RegisterReflectionServiceServer(s grpc1.Server, srv ReflectionServiceServer) { - s.RegisterService(&_ReflectionService_serviceDesc, srv) -} - -func _ReflectionService_ListAllInterfaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListAllInterfacesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReflectionServiceServer).ListAllInterfaces(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/ListAllInterfaces", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReflectionServiceServer).ListAllInterfaces(ctx, req.(*ListAllInterfacesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReflectionService_ListImplementations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListImplementationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReflectionServiceServer).ListImplementations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/ListImplementations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReflectionServiceServer).ListImplementations(ctx, req.(*ListImplementationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ReflectionService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "cosmos.base.reflection.v1beta1.ReflectionService", - HandlerType: (*ReflectionServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListAllInterfaces", - Handler: _ReflectionService_ListAllInterfaces_Handler, - }, - { - MethodName: "ListImplementations", - Handler: _ReflectionService_ListImplementations_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "cosmos/base/reflection/v1beta1/reflection.proto", -} - -func (m *ListAllInterfacesRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ListAllInterfacesRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ListAllInterfacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *ListAllInterfacesResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ListAllInterfacesResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ListAllInterfacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.InterfaceNames) > 0 { - for iNdEx := len(m.InterfaceNames) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.InterfaceNames[iNdEx]) - copy(dAtA[i:], m.InterfaceNames[iNdEx]) - i = encodeVarintReflection(dAtA, i, uint64(len(m.InterfaceNames[iNdEx]))) - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *ListImplementationsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ListImplementationsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ListImplementationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.InterfaceName) > 0 { - i -= len(m.InterfaceName) - copy(dAtA[i:], m.InterfaceName) - i = encodeVarintReflection(dAtA, i, uint64(len(m.InterfaceName))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *ListImplementationsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ListImplementationsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ListImplementationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.ImplementationMessageNames) > 0 { - for iNdEx := len(m.ImplementationMessageNames) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.ImplementationMessageNames[iNdEx]) - copy(dAtA[i:], m.ImplementationMessageNames[iNdEx]) - i = encodeVarintReflection(dAtA, i, uint64(len(m.ImplementationMessageNames[iNdEx]))) - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func encodeVarintReflection(dAtA []byte, offset int, v uint64) int { - offset -= sovReflection(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *ListAllInterfacesRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *ListAllInterfacesResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.InterfaceNames) > 0 { - for _, s := range m.InterfaceNames { - l = len(s) - n += 1 + l + sovReflection(uint64(l)) - } - } - return n -} - -func (m *ListImplementationsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.InterfaceName) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - return n -} - -func (m *ListImplementationsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.ImplementationMessageNames) > 0 { - for _, s := range m.ImplementationMessageNames { - l = len(s) - n += 1 + l + sovReflection(uint64(l)) - } - } - return n -} - -func sovReflection(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozReflection(x uint64) (n int) { - return sovReflection(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *ListAllInterfacesRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListAllInterfacesRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListAllInterfacesRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipReflection(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthReflection - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ListAllInterfacesResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListAllInterfacesResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListAllInterfacesResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InterfaceNames", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.InterfaceNames = append(m.InterfaceNames, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipReflection(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthReflection - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ListImplementationsRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListImplementationsRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListImplementationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InterfaceName", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.InterfaceName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipReflection(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthReflection - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ListImplementationsResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListImplementationsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListImplementationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ImplementationMessageNames", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ImplementationMessageNames = append(m.ImplementationMessageNames, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipReflection(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthReflection - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipReflection(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowReflection - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowReflection - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowReflection - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthReflection - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupReflection - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthReflection - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthReflection = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowReflection = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupReflection = fmt.Errorf("proto: unexpected end of group") -) diff --git a/client/grpc/reflection/reflection_test.go b/client/grpc/reflection/reflection_test.go deleted file mode 100644 index 211fc397ad3e..000000000000 --- a/client/grpc/reflection/reflection_test.go +++ /dev/null @@ -1,55 +0,0 @@ -package reflection_test - -import ( - "context" - "testing" - - "github.com/stretchr/testify/suite" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/client/grpc/reflection" - "github.com/cosmos/cosmos-sdk/simapp" -) - -type IntegrationTestSuite struct { - suite.Suite - - queryClient reflection.ReflectionServiceClient -} - -func (s *IntegrationTestSuite) SetupSuite() { - app := simapp.Setup(false) - - sdkCtx := app.BaseApp.NewContext(false, tmproto.Header{}) - queryHelper := baseapp.NewQueryServerTestHelper(sdkCtx, app.InterfaceRegistry()) - queryClient := reflection.NewReflectionServiceClient(queryHelper) - s.queryClient = queryClient -} - -func (s IntegrationTestSuite) TestSimulateService() { - // We will test the following interface for testing. - var iface = "cosmos.evidence.v1beta1.Evidence" - - // Test that "cosmos.evidence.v1beta1.Evidence" is included in the - // interfaces. - resIface, err := s.queryClient.ListAllInterfaces( - context.Background(), - &reflection.ListAllInterfacesRequest{}, - ) - s.Require().NoError(err) - s.Require().Contains(resIface.GetInterfaceNames(), iface) - - // Test that "cosmos.evidence.v1beta1.Evidence" has at least the - // Equivocation implementations. - resImpl, err := s.queryClient.ListImplementations( - context.Background(), - &reflection.ListImplementationsRequest{InterfaceName: iface}, - ) - s.Require().NoError(err) - s.Require().Contains(resImpl.GetImplementationMessageNames(), "/cosmos.evidence.v1beta1.Equivocation") -} - -func TestSimulateTestSuite(t *testing.T) { - suite.Run(t, new(IntegrationTestSuite)) -} diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 9a94f05b8191..8759700992a8 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -117,10 +117,28 @@ - [Pairs](#cosmos.base.kv.v1beta1.Pairs) - [cosmos/base/reflection/v1beta1/reflection.proto](#cosmos/base/reflection/v1beta1/reflection.proto) + - [AppDescriptor](#cosmos.base.reflection.v1beta1.AppDescriptor) + - [AuthConfigDescriptor](#cosmos.base.reflection.v1beta1.AuthConfigDescriptor) + - [ChainDescriptor](#cosmos.base.reflection.v1beta1.ChainDescriptor) + - [CodecDescriptor](#cosmos.base.reflection.v1beta1.CodecDescriptor) + - [ConfigurationDescriptor](#cosmos.base.reflection.v1beta1.ConfigurationDescriptor) + - [GetAppDescriptorRequest](#cosmos.base.reflection.v1beta1.GetAppDescriptorRequest) + - [GetAppDescriptorResponse](#cosmos.base.reflection.v1beta1.GetAppDescriptorResponse) + - [InterfaceAcceptingTypeDescriptor](#cosmos.base.reflection.v1beta1.InterfaceAcceptingTypeDescriptor) + - [InterfaceDescriptor](#cosmos.base.reflection.v1beta1.InterfaceDescriptor) + - [InterfaceImplementerDescriptor](#cosmos.base.reflection.v1beta1.InterfaceImplementerDescriptor) + - [LegacyMsgDescriptor](#cosmos.base.reflection.v1beta1.LegacyMsgDescriptor) - [ListAllInterfacesRequest](#cosmos.base.reflection.v1beta1.ListAllInterfacesRequest) - [ListAllInterfacesResponse](#cosmos.base.reflection.v1beta1.ListAllInterfacesResponse) - [ListImplementationsRequest](#cosmos.base.reflection.v1beta1.ListImplementationsRequest) - [ListImplementationsResponse](#cosmos.base.reflection.v1beta1.ListImplementationsResponse) + - [MsgDescriptor](#cosmos.base.reflection.v1beta1.MsgDescriptor) + - [QueryMethodDescriptor](#cosmos.base.reflection.v1beta1.QueryMethodDescriptor) + - [QueryServiceDescriptor](#cosmos.base.reflection.v1beta1.QueryServiceDescriptor) + - [QueryServicesDescriptor](#cosmos.base.reflection.v1beta1.QueryServicesDescriptor) + - [ServiceMsgDescriptor](#cosmos.base.reflection.v1beta1.ServiceMsgDescriptor) + - [SigningModeDescriptor](#cosmos.base.reflection.v1beta1.SigningModeDescriptor) + - [TxDescriptor](#cosmos.base.reflection.v1beta1.TxDescriptor) - [ReflectionService](#cosmos.base.reflection.v1beta1.ReflectionService) @@ -1624,7 +1642,7 @@ GenesisState defines the bank module's genesis state. | ----- | ---- | ----- | ----------- | | `params` | [Params](#cosmos.bank.v1beta1.Params) | | params defines all the paramaters of the module. | | `balances` | [Balance](#cosmos.bank.v1beta1.Balance) | repeated | balances is an array containing the balances of all the accounts. | -| `supply` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | supply represents the total supply. | +| `supply` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | supply represents the total supply. If it is left empty, then supply will be calculated based on the provided balances. Otherwise, it will be used to validate that the sum of the balances equals this amount. | | `denom_metadata` | [Metadata](#cosmos.bank.v1beta1.Metadata) | repeated | denom_metadata defines the metadata of the differents coins. | @@ -2016,6 +2034,185 @@ Pairs defines a repeated slice of Pair objects. + + +### AppDescriptor +AppDescriptor describes a cosmos-sdk based application + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `chain` | [ChainDescriptor](#cosmos.base.reflection.v1beta1.ChainDescriptor) | | chain provides the chain descriptor | +| `codec` | [CodecDescriptor](#cosmos.base.reflection.v1beta1.CodecDescriptor) | | codec provides metadata information regarding codec related types | +| `configuration` | [ConfigurationDescriptor](#cosmos.base.reflection.v1beta1.ConfigurationDescriptor) | | configuration provides metadata information regarding the sdk.Config type | +| `query_services` | [QueryServicesDescriptor](#cosmos.base.reflection.v1beta1.QueryServicesDescriptor) | | query_services provides metadata information regarding the available queriable endpoints | +| `tx` | [TxDescriptor](#cosmos.base.reflection.v1beta1.TxDescriptor) | | tx provides metadata information regarding how to send transactions to the given application | + + + + + + + + +### AuthConfigDescriptor +AuthConfigDescriptor provides information on how to sign transactions + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `signing_modes` | [SigningModeDescriptor](#cosmos.base.reflection.v1beta1.SigningModeDescriptor) | repeated | signing_modes is a list of descriptors of the sign modes | + + + + + + + + +### ChainDescriptor +ChainDescriptor describes chain information of the application + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `id` | [string](#string) | | id is the chain id | + + + + + + + + +### CodecDescriptor +CodecDescriptor describes the registered interfaces and provides metadata information on the types + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `interfaces` | [InterfaceDescriptor](#cosmos.base.reflection.v1beta1.InterfaceDescriptor) | repeated | interfaces is a list of the registerted interfaces descriptors | + + + + + + + + +### ConfigurationDescriptor +ConfigurationDescriptor contains metadata information on the sdk.Config + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `bech32_account_address_prefix` | [string](#string) | | bech32_account_address_prefix is the account address prefix | +| `bech32_validator_address_prefix` | [string](#string) | | bech32_validator_address_prefix is the bech32 prefix for validator addresses | +| `bech32_consensus_address_prefix` | [string](#string) | | bech32_consensus_address_prefix is the bech32 prefix for consensus nodes addresses | +| `bech32AccountPublicKeyPrefix` | [string](#string) | | bech32_account_public_key_prefix is the bech32 prefix for accounts public keys | +| `bech32_validator_public_key_prefix` | [string](#string) | | bech32_validator_public_key_prefix is the bech32 prefix for validators public keys | +| `bech32_consensus_public_key_prefix` | [string](#string) | | bech32_consensus_public_key_prefix is the bech32 prefix for consensus nodes public keys | +| `purpose` | [uint32](#uint32) | | purpose is the BIP-0044 purpose code | +| `coin_type` | [uint32](#uint32) | | coin_type is the BIP-0044 coin type code | +| `full_fundraiser_path` | [string](#string) | | full_fundraiser_path is the BIP-0044 prefix (deprecated in favor of full_bip44_path) | +| `full_bip44_path` | [string](#string) | | full_bip44_path is the BIP-0044 prefix | + + + + + + + + +### GetAppDescriptorRequest +GetAppDescriptorRequest is the request type of the GetAppDescriptor RPC. + + + + + + + + +### GetAppDescriptorResponse +GetAppDescriptorResponse is the response type of the GetAppDescriptor RPC. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `app` | [AppDescriptor](#cosmos.base.reflection.v1beta1.AppDescriptor) | | app contains the cosmos-sdk application descriptor | + + + + + + + + +### InterfaceAcceptingTypeDescriptor +InterfaceAcceptingTypeDescriptor describes a protobuf message which contains +an interface represented as a google.protobuf.Any + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `fullname` | [string](#string) | | fullname is the protobuf fullname of the type containing the interface | +| `field_descriptor_names` | [string](#string) | repeated | field_descriptor_names is a list of the protobuf name (not fullname) of the field which contains the interface as google.protobuf.Any (the interface is the same, but it can be in multiple fields of the same proto message) | + + + + + + + + +### InterfaceDescriptor +InterfaceDescriptor describes the implementation of an interface + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `fullname` | [string](#string) | | fullname is the name of the interface | +| `interface_accepting_types` | [InterfaceAcceptingTypeDescriptor](#cosmos.base.reflection.v1beta1.InterfaceAcceptingTypeDescriptor) | repeated | interface_type_descriptors contains information regarding the types which contain the interface | +| `interface_implementers` | [InterfaceImplementerDescriptor](#cosmos.base.reflection.v1beta1.InterfaceImplementerDescriptor) | repeated | interface_implementers is a list of the descriptors of the interface implementers | + + + + + + + + +### InterfaceImplementerDescriptor +InterfaceImplementerDescriptor describes an interface implementer + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `fullname` | [string](#string) | | fullname is the protobuf queryable name of the interface implementer | +| `type_url` | [string](#string) | | type_url defines the type URL used when marshalling the type as any this is required so we can provide type safe google.protobuf.Any marshalling and unmarshalling, making sure that we don't accept just 'any' type in our interface fields | + + + + + + + + +### LegacyMsgDescriptor +LegacyMsgDescriptor describes an sdk.Msg type + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `fullname` | [string](#string) | | fullname is the protobuf fullname of the message | +| `type_url` | [string](#string) | | type_url defines the type URL used when marshalling the type as any this is required so we can provide type safe google.protobuf.Any marshalling and unmarshalling, making sure that we don't accept just 'any' type in our interface fields | + + + + + + ### ListAllInterfacesRequest @@ -2072,6 +2269,123 @@ RPC. + + + +### MsgDescriptor +MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `service_msg` | [ServiceMsgDescriptor](#cosmos.base.reflection.v1beta1.ServiceMsgDescriptor) | | service_msg is used when the message is an sdk.ServiceMsg type | +| `legacy_msg` | [LegacyMsgDescriptor](#cosmos.base.reflection.v1beta1.LegacyMsgDescriptor) | | legacy_msg is used when the message is an sdk.Msg type | + + + + + + + + +### QueryMethodDescriptor +QueryMethodDescriptor describes a queryable method of a query service +no other info is provided beside method name and tendermint queryable path +because it would be redundant with the grpc reflection service + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `name` | [string](#string) | | name is the protobuf name (not fullname) of the method | +| `full_query_path` | [string](#string) | | full_query_path is the path that can be used to query this method via tendermint abci.Query | + + + + + + + + +### QueryServiceDescriptor +QueryServiceDescriptor describes a cosmos-sdk queryable service + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `fullname` | [string](#string) | | fullname is the protobuf fullname of the service descriptor | +| `methods` | [QueryMethodDescriptor](#cosmos.base.reflection.v1beta1.QueryMethodDescriptor) | repeated | methods provides a list of query service methods | + + + + + + + + +### QueryServicesDescriptor +QueryServicesDescriptor contains the list of cosmos-sdk queriable services + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `query_services` | [QueryServiceDescriptor](#cosmos.base.reflection.v1beta1.QueryServiceDescriptor) | repeated | query_services is a list of cosmos-sdk QueryServiceDescriptor | + + + + + + + + +### ServiceMsgDescriptor +ServiceMsgDescriptor describes an sdk.ServiceMsg type + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `fullname` | [string](#string) | | fullname is the protobuf fullname of the given sdk.ServiceMsg | +| `route` | [string](#string) | | route is the sdk.ServiceMsg route, it is equal to type_url | +| `type_url` | [string](#string) | | type_url defines the type URL used when marshalling the type as any this is required so we can provide type safe google.protobuf.Any marshalling and unmarshalling, making sure that we don't accept just 'any' type in our interface fields | + + + + + + + + +### SigningModeDescriptor +SigningModeDescriptor provides information on a signing flow of the application +NOTE(fdymylja): here we could go as far as providing an entire flow on how +to sign a message given a SigningModeDescriptor, but it's better to think about +this another time + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `name` | [string](#string) | | name defines the unique name of the signing mode | + + + + + + + + +### TxDescriptor +TxDescriptor describes the accepted transaction type + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `fullname` | [string](#string) | | fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) | +| `auth_config` | [AuthConfigDescriptor](#cosmos.base.reflection.v1beta1.AuthConfigDescriptor) | | auth_config provides information on the accepted signatures | +| `msgs` | [MsgDescriptor](#cosmos.base.reflection.v1beta1.MsgDescriptor) | repeated | msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) NOTE: not to be confused with proto.Message types | + + + + + @@ -2086,6 +2400,7 @@ ReflectionService defines a service for interface reflection. | Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | | ----------- | ------------ | ------------- | ------------| ------- | -------- | +| `GetAppDescriptor` | [GetAppDescriptorRequest](#cosmos.base.reflection.v1beta1.GetAppDescriptorRequest) | [GetAppDescriptorResponse](#cosmos.base.reflection.v1beta1.GetAppDescriptorResponse) | GetAppDescriptor returns the full cosmos application descriptor | GET|/cosmos/base/reflection/v1beta1/app_descriptor| | `ListAllInterfaces` | [ListAllInterfacesRequest](#cosmos.base.reflection.v1beta1.ListAllInterfacesRequest) | [ListAllInterfacesResponse](#cosmos.base.reflection.v1beta1.ListAllInterfacesResponse) | ListAllInterfaces lists all the interfaces registered in the interface registry. | GET|/cosmos/base/reflection/v1beta1/interfaces| | `ListImplementations` | [ListImplementationsRequest](#cosmos.base.reflection.v1beta1.ListImplementationsRequest) | [ListImplementationsResponse](#cosmos.base.reflection.v1beta1.ListImplementationsResponse) | ListImplementations list all the concrete types that implement a given interface. | GET|/cosmos/base/reflection/v1beta1/interfaces/{interface_name}/implementations| diff --git a/proto/cosmos/base/reflection/v1beta1/reflection.proto b/proto/cosmos/base/reflection/v1beta1/reflection.proto index 22670e72b883..a59aafa233a6 100644 --- a/proto/cosmos/base/reflection/v1beta1/reflection.proto +++ b/proto/cosmos/base/reflection/v1beta1/reflection.proto @@ -3,10 +3,14 @@ package cosmos.base.reflection.v1beta1; import "google/api/annotations.proto"; -option go_package = "github.com/cosmos/cosmos-sdk/client/grpc/reflection"; +option go_package = "github.com/cosmos/cosmos-sdk/server/grpc/cosmosreflection"; // ReflectionService defines a service for interface reflection. service ReflectionService { + // GetAppDescriptor returns the full cosmos application descriptor + rpc GetAppDescriptor(GetAppDescriptorRequest) returns (GetAppDescriptorResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor"; + }; // ListAllInterfaces lists all the interfaces registered in the interface // registry. rpc ListAllInterfaces(ListAllInterfacesRequest) returns (ListAllInterfacesResponse) { @@ -21,6 +25,182 @@ service ReflectionService { }; } +// AppDescriptor describes a cosmos-sdk based application +message AppDescriptor { + // chain provides the chain descriptor + ChainDescriptor chain = 2; + // codec provides metadata information regarding codec related types + CodecDescriptor codec = 3; + // configuration provides metadata information regarding the sdk.Config type + ConfigurationDescriptor configuration = 4; + // query_services provides metadata information regarding the available queriable endpoints + QueryServicesDescriptor query_services = 5; + // tx provides metadata information regarding how to send transactions to the given application + TxDescriptor tx = 6; +} + +// TxDescriptor describes the accepted transaction type +message TxDescriptor { + // fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) + string fullname = 1; + // auth_config provides information on the accepted signatures + AuthConfigDescriptor auth_config = 2; + // msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) + // NOTE: not to be confused with proto.Message types + repeated MsgDescriptor msgs = 3; +} + +// AuthConfigDescriptor provides information on how to sign transactions +message AuthConfigDescriptor { + // signing_modes is a list of descriptors of the sign modes + repeated SigningModeDescriptor signing_modes = 1; +} + +// SigningModeDescriptor provides information on a signing flow of the application +// NOTE(fdymylja): here we could go as far as providing an entire flow on how +// to sign a message given a SigningModeDescriptor, but it's better to think about +// this another time +message SigningModeDescriptor { + // name defines the unique name of the signing mode + string name = 1; +} + +// ChainDescriptor describes chain information of the application +message ChainDescriptor { + // id is the chain id + string id = 1; +} + +// CodecDescriptor describes the registered interfaces and provides metadata information on the types +message CodecDescriptor { + // interfaces is a list of the registerted interfaces descriptors + repeated InterfaceDescriptor interfaces = 1; +} + +// InterfaceDescriptor describes the implementation of an interface +message InterfaceDescriptor { + // fullname is the name of the interface + string fullname = 1; + // interface_type_descriptors contains information regarding the types which contain the interface + repeated InterfaceAcceptingTypeDescriptor interface_accepting_types = 2; + // interface_implementers is a list of the descriptors of the interface implementers + repeated InterfaceImplementerDescriptor interface_implementers = 3; +} + +// InterfaceImplementerDescriptor describes an interface implementer +message InterfaceImplementerDescriptor { + // fullname is the protobuf queryable name of the interface implementer + string fullname = 1; + // type_url defines the type URL used when marshalling the type as any + // this is required so we can provide type safe google.protobuf.Any marshalling and + // unmarshalling, making sure that we don't accept just 'any' type + // in our interface fields + string type_url = 2; +} + +// InterfaceAcceptingTypeDescriptor describes a protobuf message which contains +// an interface represented as a google.protobuf.Any +message InterfaceAcceptingTypeDescriptor { + // fullname is the protobuf fullname of the type containing the interface + string fullname = 1; + // field_descriptor_names is a list of the protobuf name (not fullname) of the field + // which contains the interface as google.protobuf.Any (the interface is the same, but + // it can be in multiple fields of the same proto message) + repeated string field_descriptor_names = 2; +} + +// ConfigurationDescriptor contains metadata information on the sdk.Config +message ConfigurationDescriptor { + // bech32_account_address_prefix is the account address prefix + string bech32_account_address_prefix = 1; + // bech32_validator_address_prefix is the bech32 prefix for validator addresses + string bech32_validator_address_prefix = 2; + // bech32_consensus_address_prefix is the bech32 prefix for consensus nodes addresses + string bech32_consensus_address_prefix = 3; + // bech32_account_public_key_prefix is the bech32 prefix for accounts public keys + string bech32AccountPublicKeyPrefix = 4; + // bech32_validator_public_key_prefix is the bech32 prefix for validators public keys + string bech32_validator_public_key_prefix = 5; + // bech32_consensus_public_key_prefix is the bech32 prefix for consensus nodes public keys + string bech32_consensus_public_key_prefix = 6; + // purpose is the BIP-0044 purpose code + uint32 purpose = 7; + // coin_type is the BIP-0044 coin type code + uint32 coin_type = 8; + // full_fundraiser_path is the BIP-0044 prefix (deprecated in favor of full_bip44_path) + string full_fundraiser_path = 9; + // full_bip44_path is the BIP-0044 prefix + string full_bip44_path = 10; +} + +// MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction +message MsgDescriptor { + oneof msg { + // service_msg is used when the message is an sdk.ServiceMsg type + ServiceMsgDescriptor service_msg = 1; + // legacy_msg is used when the message is an sdk.Msg type + LegacyMsgDescriptor legacy_msg = 2; + } +} + +// ServiceMsgDescriptor describes an sdk.ServiceMsg type +message ServiceMsgDescriptor { + // fullname is the protobuf fullname of the given sdk.ServiceMsg + string fullname = 1; + // route is the sdk.ServiceMsg route, it is equal to type_url + string route = 2; + // type_url defines the type URL used when marshalling the type as any + // this is required so we can provide type safe google.protobuf.Any marshalling and + // unmarshalling, making sure that we don't accept just 'any' type + // in our interface fields + string type_url = 3; +} + +// LegacyMsgDescriptor describes an sdk.Msg type +message LegacyMsgDescriptor { + // fullname is the protobuf fullname of the message + string fullname = 1; + // type_url defines the type URL used when marshalling the type as any + // this is required so we can provide type safe google.protobuf.Any marshalling and + // unmarshalling, making sure that we don't accept just 'any' type + // in our interface fields + string type_url = 2; +} + +// GetAppDescriptorRequest is the request type of the GetAppDescriptor RPC. +message GetAppDescriptorRequest {} + +// GetAppDescriptorResponse is the response type of the GetAppDescriptor RPC. +message GetAppDescriptorResponse { + // app contains the cosmos-sdk application descriptor + AppDescriptor app = 1; +} + +// QueryServicesDescriptor contains the list of cosmos-sdk queriable services +message QueryServicesDescriptor { + // query_services is a list of cosmos-sdk QueryServiceDescriptor + repeated QueryServiceDescriptor query_services = 1; +} + +// QueryServiceDescriptor describes a cosmos-sdk queryable service +message QueryServiceDescriptor { + // fullname is the protobuf fullname of the service descriptor + string fullname = 1; + // methods provides a list of query service methods + repeated QueryMethodDescriptor methods = 2; +} + +// QueryMethodDescriptor describes a queryable method of a query service +// no other info is provided beside method name and tendermint queryable path +// because it would be redundant with the grpc reflection service +message QueryMethodDescriptor { + // name is the protobuf name (not fullname) of the method + string name = 1; + // full_query_path is the path that can be used to query + // this method via tendermint abci.Query + string full_query_path = 2; +} + // ListAllInterfacesRequest is the request type of the ListAllInterfaces RPC. message ListAllInterfacesRequest {} diff --git a/server/grpc/cosmosreflection/cosmosreflection.go b/server/grpc/cosmosreflection/cosmosreflection.go new file mode 100644 index 000000000000..a0d7c177591a --- /dev/null +++ b/server/grpc/cosmosreflection/cosmosreflection.go @@ -0,0 +1,203 @@ +package cosmosreflection + +import ( + "context" + "encoding/json" + "fmt" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/tx" + "github.com/gogo/protobuf/proto" + "google.golang.org/grpc" + "log" +) + +type Config struct { + SigningModes []string + ChainID string + SdkConfig *sdk.Config + InterfaceRegistry codectypes.InterfaceRegistry +} + +// Register registers the cosmos sdk reflection service +// to the provided *grpc.Server given a Config +func Register(srv *grpc.Server, conf Config) error { + reflectionServer, err := newReflectionServiceServer(srv, conf) + if err != nil { + return err + } + RegisterReflectionServiceServer(srv, reflectionServer) + return nil +} + +type reflectionServiceServer struct { + desc *AppDescriptor +} + +func newReflectionServiceServer(grpcSrv *grpc.Server, conf Config) (reflectionServiceServer, error) { + // set chain descriptor + chainDescriptor := &ChainDescriptor{Id: conf.ChainID} + // set configuration descriptor + configurationDescriptor := &ConfigurationDescriptor{ + Bech32AccountAddressPrefix: conf.SdkConfig.GetBech32AccountAddrPrefix(), + Bech32ValidatorAddressPrefix: conf.SdkConfig.GetBech32ValidatorAddrPrefix(), + Bech32ConsensusAddressPrefix: conf.SdkConfig.GetBech32ConsensusAddrPrefix(), + Bech32AccountPublicKeyPrefix: conf.SdkConfig.GetBech32AccountPubPrefix(), + Bech32ValidatorPublicKeyPrefix: conf.SdkConfig.GetBech32ValidatorPubPrefix(), + Bech32ConsensusPublicKeyPrefix: conf.SdkConfig.GetBech32ConsensusPubPrefix(), + Purpose: conf.SdkConfig.GetPurpose(), + CoinType: conf.SdkConfig.GetCoinType(), + FullFundraiserPath: conf.SdkConfig.GetFullFundraiserPath(), + FullBip44Path: conf.SdkConfig.GetFullBIP44Path(), + } + // set codec descriptor + codecDescriptor, err := newCodecDescriptor(conf.InterfaceRegistry) + if err != nil { + return reflectionServiceServer{}, fmt.Errorf("unable to create codec descriptor: %w", err) + } + // set query service descriptor + queryServiceDescriptor, err := newQueryServiceDescriptor(grpcSrv) + if err != nil { + return reflectionServiceServer{}, fmt.Errorf("unable to create query services descriptor: %w", err) + } + // set deliver descriptor + deliverDescriptor, err := newDeliverDescriptor(conf.InterfaceRegistry, conf.SigningModes) + if err != nil { + return reflectionServiceServer{}, fmt.Errorf("unable to create deliver descriptor: %w", err) + } + desc := &AppDescriptor{ + Chain: chainDescriptor, + Codec: codecDescriptor, + Configuration: configurationDescriptor, + QueryServices: queryServiceDescriptor, + Tx: deliverDescriptor, + } + b, _ := json.Marshal(desc) + log.Printf("%s", b) + return reflectionServiceServer{desc: desc}, nil +} + +func (r reflectionServiceServer) GetAppDescriptor(ctx context.Context, request *GetAppDescriptorRequest) (*GetAppDescriptorResponse, error) { + panic("implement me") +} + +func (r reflectionServiceServer) ListAllInterfaces(ctx context.Context, request *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) { + panic("implement me") +} + +func (r reflectionServiceServer) ListImplementations(ctx context.Context, request *ListImplementationsRequest) (*ListImplementationsResponse, error) { + panic("implement me") +} + +// newCodecDescriptor describes the codec given the codectypes.InterfaceRegistry +func newCodecDescriptor(ir codectypes.InterfaceRegistry) (*CodecDescriptor, error) { + registeredInterfaces := ir.ListAllInterfaces() + interfaceDescriptors := make([]*InterfaceDescriptor, len(registeredInterfaces)) + + for i, iface := range registeredInterfaces { + implementers := ir.ListImplementations(iface) + interfaceImplementers := make([]*InterfaceImplementerDescriptor, len(implementers)) + for j, implementer := range implementers { + pb, err := ir.Resolve(implementer) + if err != nil { + return nil, fmt.Errorf("unable to resolve implementing type %s for interface %s", implementer, iface) + } + pbName := proto.MessageName(pb) + if pbName == "" { + return nil, fmt.Errorf("unable to get proto name for implementing type %s for interface %s", implementer, iface) + } + interfaceImplementers[j] = &InterfaceImplementerDescriptor{ + Fullname: pbName, + TypeUrl: implementer, + } + } + interfaceDescriptors[i] = &InterfaceDescriptor{ + Fullname: iface, + InterfaceAcceptingTypes: nil, // NOTE(fdymylja): this will be used in the future when we will replace *anypb.Any fields with the interface + InterfaceImplementers: interfaceImplementers, + } + } + + return &CodecDescriptor{ + Interfaces: interfaceDescriptors, + }, nil +} + +func newQueryServiceDescriptor(srv *grpc.Server) (*QueryServicesDescriptor, error) { + svcInfo := srv.GetServiceInfo() + queryServices := make([]*QueryServiceDescriptor, 0, len(svcInfo)) + for name, info := range svcInfo { + methods := make([]*QueryMethodDescriptor, len(info.Methods)) + for i, svcMethod := range info.Methods { + methods[i] = &QueryMethodDescriptor{ + Name: svcMethod.Name, + FullQueryPath: fmt.Sprintf("/%s/%s", name, svcMethod.Name), + } + } + queryServices = append(queryServices, &QueryServiceDescriptor{ + Fullname: name, + Methods: methods, + }) + } + return &QueryServicesDescriptor{QueryServices: queryServices}, nil +} + +func newDeliverDescriptor(ir codectypes.InterfaceRegistry, signingModes []string) (*TxDescriptor, error) { + // get base tx type name + txPbName := proto.MessageName(&tx.Tx{}) + if txPbName == "" { + return nil, fmt.Errorf("unable to get *tx.Tx protobuf name") + } + // get msgs + msgImplementers := ir.ListImplementations(sdk.MsgInterfaceProtoName) + svcMsgImplementers := ir.ListImplementations(sdk.ServiceMsgInterfaceProtoName) + + msgsDesc := make([]*MsgDescriptor, 0, len(msgImplementers)+len(svcMsgImplementers)) + + // process sdk.Msg + for _, msg := range msgImplementers { + pb, err := ir.Resolve(msg) + if err != nil { + return nil, fmt.Errorf("unable to resolve sdk.Msg %s: %w", msg, err) + } + pbName := proto.MessageName(pb) + if pbName == "" { + return nil, fmt.Errorf("unable to get proto name for sdk.Msg %s", msg) + } + msgsDesc = append(msgsDesc, &MsgDescriptor{Msg: &MsgDescriptor_LegacyMsg{ + LegacyMsg: &LegacyMsgDescriptor{ + Fullname: pbName, + TypeUrl: msg, + }, + }}) + } + // process sdk.ServiceMsg + for _, svcMsg := range svcMsgImplementers { + resolved, err := ir.Resolve(svcMsg) + if err != nil { + return nil, fmt.Errorf("unable to resolve sdk.ServiceMsg %s: %w", svcMsg, err) + } + pbName := proto.MessageName(resolved) + if pbName == "" { + return nil, fmt.Errorf("unable to get proto name for sdk.ServiceMsg %s", svcMsg) + } + + msgsDesc = append(msgsDesc, &MsgDescriptor{Msg: &MsgDescriptor_ServiceMsg{ + ServiceMsg: &ServiceMsgDescriptor{ + Fullname: pbName, + Route: svcMsg, + TypeUrl: svcMsg, + }, + }}) + } + + signModesDesc := make([]*SigningModeDescriptor, len(signingModes)) + for i, m := range signingModes { + signModesDesc[i] = &SigningModeDescriptor{Name: m} + } + return &TxDescriptor{ + Fullname: txPbName, + AuthConfig: &AuthConfigDescriptor{SigningModes: signModesDesc}, + Msgs: msgsDesc, + }, nil +} diff --git a/server/grpc/cosmosreflection/reflection.pb.go b/server/grpc/cosmosreflection/reflection.pb.go new file mode 100644 index 000000000000..7bd4a17cb080 --- /dev/null +++ b/server/grpc/cosmosreflection/reflection.pb.go @@ -0,0 +1,5596 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/base/reflection/v1beta1/reflection.proto + +package cosmosreflection + +import ( + context "context" + fmt "fmt" + grpc1 "github.com/gogo/protobuf/grpc" + proto "github.com/gogo/protobuf/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// AppDescriptor describes a cosmos-sdk based application +type AppDescriptor struct { + // chain provides the chain descriptor + Chain *ChainDescriptor `protobuf:"bytes,2,opt,name=chain,proto3" json:"chain,omitempty"` + // codec provides metadata information regarding codec related types + Codec *CodecDescriptor `protobuf:"bytes,3,opt,name=codec,proto3" json:"codec,omitempty"` + // configuration provides metadata information regarding the sdk.Config type + Configuration *ConfigurationDescriptor `protobuf:"bytes,4,opt,name=configuration,proto3" json:"configuration,omitempty"` + // query_services provides metadata information regarding the available queriable endpoints + QueryServices *QueryServicesDescriptor `protobuf:"bytes,5,opt,name=query_services,json=queryServices,proto3" json:"query_services,omitempty"` + // tx provides metadata information regarding how to send transactions to the given application + Tx *TxDescriptor `protobuf:"bytes,6,opt,name=tx,proto3" json:"tx,omitempty"` +} + +func (m *AppDescriptor) Reset() { *m = AppDescriptor{} } +func (m *AppDescriptor) String() string { return proto.CompactTextString(m) } +func (*AppDescriptor) ProtoMessage() {} +func (*AppDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{0} +} +func (m *AppDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AppDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AppDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AppDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_AppDescriptor.Merge(m, src) +} +func (m *AppDescriptor) XXX_Size() int { + return m.Size() +} +func (m *AppDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_AppDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_AppDescriptor proto.InternalMessageInfo + +func (m *AppDescriptor) GetChain() *ChainDescriptor { + if m != nil { + return m.Chain + } + return nil +} + +func (m *AppDescriptor) GetCodec() *CodecDescriptor { + if m != nil { + return m.Codec + } + return nil +} + +func (m *AppDescriptor) GetConfiguration() *ConfigurationDescriptor { + if m != nil { + return m.Configuration + } + return nil +} + +func (m *AppDescriptor) GetQueryServices() *QueryServicesDescriptor { + if m != nil { + return m.QueryServices + } + return nil +} + +func (m *AppDescriptor) GetTx() *TxDescriptor { + if m != nil { + return m.Tx + } + return nil +} + +// TxDescriptor describes the accepted transaction type +type TxDescriptor struct { + // fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) + Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` + // auth_config provides information on the accepted signatures + AuthConfig *AuthConfigDescriptor `protobuf:"bytes,2,opt,name=auth_config,json=authConfig,proto3" json:"auth_config,omitempty"` + // msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) + // NOTE: not to be confused with proto.Message types + Msgs []*MsgDescriptor `protobuf:"bytes,3,rep,name=msgs,proto3" json:"msgs,omitempty"` +} + +func (m *TxDescriptor) Reset() { *m = TxDescriptor{} } +func (m *TxDescriptor) String() string { return proto.CompactTextString(m) } +func (*TxDescriptor) ProtoMessage() {} +func (*TxDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{1} +} +func (m *TxDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TxDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TxDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TxDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_TxDescriptor.Merge(m, src) +} +func (m *TxDescriptor) XXX_Size() int { + return m.Size() +} +func (m *TxDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_TxDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_TxDescriptor proto.InternalMessageInfo + +func (m *TxDescriptor) GetFullname() string { + if m != nil { + return m.Fullname + } + return "" +} + +func (m *TxDescriptor) GetAuthConfig() *AuthConfigDescriptor { + if m != nil { + return m.AuthConfig + } + return nil +} + +func (m *TxDescriptor) GetMsgs() []*MsgDescriptor { + if m != nil { + return m.Msgs + } + return nil +} + +// AuthConfigDescriptor provides information on how to sign transactions +type AuthConfigDescriptor struct { + // signing_modes is a list of descriptors of the sign modes + SigningModes []*SigningModeDescriptor `protobuf:"bytes,1,rep,name=signing_modes,json=signingModes,proto3" json:"signing_modes,omitempty"` +} + +func (m *AuthConfigDescriptor) Reset() { *m = AuthConfigDescriptor{} } +func (m *AuthConfigDescriptor) String() string { return proto.CompactTextString(m) } +func (*AuthConfigDescriptor) ProtoMessage() {} +func (*AuthConfigDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{2} +} +func (m *AuthConfigDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AuthConfigDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AuthConfigDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AuthConfigDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_AuthConfigDescriptor.Merge(m, src) +} +func (m *AuthConfigDescriptor) XXX_Size() int { + return m.Size() +} +func (m *AuthConfigDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_AuthConfigDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_AuthConfigDescriptor proto.InternalMessageInfo + +func (m *AuthConfigDescriptor) GetSigningModes() []*SigningModeDescriptor { + if m != nil { + return m.SigningModes + } + return nil +} + +// SigningModeDescriptor provides information on a signing flow of the application +// NOTE(fdymylja): here we could go as far as providing an entire flow on how +// to sign a message given a SigningModeDescriptor, but it's better to think about +// this another time +type SigningModeDescriptor struct { + // name defines the unique name of the signing mode + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (m *SigningModeDescriptor) Reset() { *m = SigningModeDescriptor{} } +func (m *SigningModeDescriptor) String() string { return proto.CompactTextString(m) } +func (*SigningModeDescriptor) ProtoMessage() {} +func (*SigningModeDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{3} +} +func (m *SigningModeDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SigningModeDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_SigningModeDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *SigningModeDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_SigningModeDescriptor.Merge(m, src) +} +func (m *SigningModeDescriptor) XXX_Size() int { + return m.Size() +} +func (m *SigningModeDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_SigningModeDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_SigningModeDescriptor proto.InternalMessageInfo + +func (m *SigningModeDescriptor) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +// ChainDescriptor describes chain information of the application +type ChainDescriptor struct { + // id is the chain id + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (m *ChainDescriptor) Reset() { *m = ChainDescriptor{} } +func (m *ChainDescriptor) String() string { return proto.CompactTextString(m) } +func (*ChainDescriptor) ProtoMessage() {} +func (*ChainDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{4} +} +func (m *ChainDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ChainDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ChainDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ChainDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_ChainDescriptor.Merge(m, src) +} +func (m *ChainDescriptor) XXX_Size() int { + return m.Size() +} +func (m *ChainDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_ChainDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_ChainDescriptor proto.InternalMessageInfo + +func (m *ChainDescriptor) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +// CodecDescriptor describes the registered interfaces and provides metadata information on the types +type CodecDescriptor struct { + // interfaces is a list of the registerted interfaces descriptors + Interfaces []*InterfaceDescriptor `protobuf:"bytes,1,rep,name=interfaces,proto3" json:"interfaces,omitempty"` +} + +func (m *CodecDescriptor) Reset() { *m = CodecDescriptor{} } +func (m *CodecDescriptor) String() string { return proto.CompactTextString(m) } +func (*CodecDescriptor) ProtoMessage() {} +func (*CodecDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{5} +} +func (m *CodecDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CodecDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CodecDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CodecDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_CodecDescriptor.Merge(m, src) +} +func (m *CodecDescriptor) XXX_Size() int { + return m.Size() +} +func (m *CodecDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_CodecDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_CodecDescriptor proto.InternalMessageInfo + +func (m *CodecDescriptor) GetInterfaces() []*InterfaceDescriptor { + if m != nil { + return m.Interfaces + } + return nil +} + +// InterfaceDescriptor describes the implementation of an interface +type InterfaceDescriptor struct { + // fullname is the name of the interface + Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` + // interface_type_descriptors contains information regarding the types which contain the interface + InterfaceAcceptingTypes []*InterfaceAcceptingTypeDescriptor `protobuf:"bytes,2,rep,name=interface_accepting_types,json=interfaceAcceptingTypes,proto3" json:"interface_accepting_types,omitempty"` + // interface_implementers is a list of the descriptors of the interface implementers + InterfaceImplementers []*InterfaceImplementerDescriptor `protobuf:"bytes,3,rep,name=interface_implementers,json=interfaceImplementers,proto3" json:"interface_implementers,omitempty"` +} + +func (m *InterfaceDescriptor) Reset() { *m = InterfaceDescriptor{} } +func (m *InterfaceDescriptor) String() string { return proto.CompactTextString(m) } +func (*InterfaceDescriptor) ProtoMessage() {} +func (*InterfaceDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{6} +} +func (m *InterfaceDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *InterfaceDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_InterfaceDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *InterfaceDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_InterfaceDescriptor.Merge(m, src) +} +func (m *InterfaceDescriptor) XXX_Size() int { + return m.Size() +} +func (m *InterfaceDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_InterfaceDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_InterfaceDescriptor proto.InternalMessageInfo + +func (m *InterfaceDescriptor) GetFullname() string { + if m != nil { + return m.Fullname + } + return "" +} + +func (m *InterfaceDescriptor) GetInterfaceAcceptingTypes() []*InterfaceAcceptingTypeDescriptor { + if m != nil { + return m.InterfaceAcceptingTypes + } + return nil +} + +func (m *InterfaceDescriptor) GetInterfaceImplementers() []*InterfaceImplementerDescriptor { + if m != nil { + return m.InterfaceImplementers + } + return nil +} + +// InterfaceImplementerDescriptor describes an interface implementer +type InterfaceImplementerDescriptor struct { + // fullname is the protobuf queryable name of the interface implementer + Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` + // type_url defines the type URL used when marshalling the type as any + // this is required so we can provide type safe google.protobuf.Any marshalling and + // unmarshalling, making sure that we don't accept just 'any' type + // in our interface fields + TypeUrl string `protobuf:"bytes,2,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"` +} + +func (m *InterfaceImplementerDescriptor) Reset() { *m = InterfaceImplementerDescriptor{} } +func (m *InterfaceImplementerDescriptor) String() string { return proto.CompactTextString(m) } +func (*InterfaceImplementerDescriptor) ProtoMessage() {} +func (*InterfaceImplementerDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{7} +} +func (m *InterfaceImplementerDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *InterfaceImplementerDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_InterfaceImplementerDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *InterfaceImplementerDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_InterfaceImplementerDescriptor.Merge(m, src) +} +func (m *InterfaceImplementerDescriptor) XXX_Size() int { + return m.Size() +} +func (m *InterfaceImplementerDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_InterfaceImplementerDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_InterfaceImplementerDescriptor proto.InternalMessageInfo + +func (m *InterfaceImplementerDescriptor) GetFullname() string { + if m != nil { + return m.Fullname + } + return "" +} + +func (m *InterfaceImplementerDescriptor) GetTypeUrl() string { + if m != nil { + return m.TypeUrl + } + return "" +} + +// InterfaceAcceptingTypeDescriptor describes a protobuf message which contains +// an interface represented as a google.protobuf.Any +type InterfaceAcceptingTypeDescriptor struct { + // fullname is the protobuf fullname of the type containing the interface + Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` + // field_descriptor_names is a list of the protobuf name (not fullname) of the field + // which contains the interface as google.protobuf.Any (the interface is the same, but + // it can be in multiple fields of the same proto message) + FieldDescriptorNames []string `protobuf:"bytes,2,rep,name=field_descriptor_names,json=fieldDescriptorNames,proto3" json:"field_descriptor_names,omitempty"` +} + +func (m *InterfaceAcceptingTypeDescriptor) Reset() { *m = InterfaceAcceptingTypeDescriptor{} } +func (m *InterfaceAcceptingTypeDescriptor) String() string { return proto.CompactTextString(m) } +func (*InterfaceAcceptingTypeDescriptor) ProtoMessage() {} +func (*InterfaceAcceptingTypeDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{8} +} +func (m *InterfaceAcceptingTypeDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *InterfaceAcceptingTypeDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_InterfaceAcceptingTypeDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *InterfaceAcceptingTypeDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_InterfaceAcceptingTypeDescriptor.Merge(m, src) +} +func (m *InterfaceAcceptingTypeDescriptor) XXX_Size() int { + return m.Size() +} +func (m *InterfaceAcceptingTypeDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_InterfaceAcceptingTypeDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_InterfaceAcceptingTypeDescriptor proto.InternalMessageInfo + +func (m *InterfaceAcceptingTypeDescriptor) GetFullname() string { + if m != nil { + return m.Fullname + } + return "" +} + +func (m *InterfaceAcceptingTypeDescriptor) GetFieldDescriptorNames() []string { + if m != nil { + return m.FieldDescriptorNames + } + return nil +} + +// ConfigurationDescriptor contains metadata information on the sdk.Config +type ConfigurationDescriptor struct { + // bech32_account_address_prefix is the account address prefix + Bech32AccountAddressPrefix string `protobuf:"bytes,1,opt,name=bech32_account_address_prefix,json=bech32AccountAddressPrefix,proto3" json:"bech32_account_address_prefix,omitempty"` + // bech32_validator_address_prefix is the bech32 prefix for validator addresses + Bech32ValidatorAddressPrefix string `protobuf:"bytes,2,opt,name=bech32_validator_address_prefix,json=bech32ValidatorAddressPrefix,proto3" json:"bech32_validator_address_prefix,omitempty"` + // bech32_consensus_address_prefix is the bech32 prefix for consensus nodes addresses + Bech32ConsensusAddressPrefix string `protobuf:"bytes,3,opt,name=bech32_consensus_address_prefix,json=bech32ConsensusAddressPrefix,proto3" json:"bech32_consensus_address_prefix,omitempty"` + // bech32_account_public_key_prefix is the bech32 prefix for accounts public keys + Bech32AccountPublicKeyPrefix string `protobuf:"bytes,4,opt,name=bech32AccountPublicKeyPrefix,proto3" json:"bech32AccountPublicKeyPrefix,omitempty"` + // bech32_validator_public_key_prefix is the bech32 prefix for validators public keys + Bech32ValidatorPublicKeyPrefix string `protobuf:"bytes,5,opt,name=bech32_validator_public_key_prefix,json=bech32ValidatorPublicKeyPrefix,proto3" json:"bech32_validator_public_key_prefix,omitempty"` + // bech32_consensus_public_key_prefix is the bech32 prefix for consensus nodes public keys + Bech32ConsensusPublicKeyPrefix string `protobuf:"bytes,6,opt,name=bech32_consensus_public_key_prefix,json=bech32ConsensusPublicKeyPrefix,proto3" json:"bech32_consensus_public_key_prefix,omitempty"` + // purpose is the BIP-0044 purpose code + Purpose uint32 `protobuf:"varint,7,opt,name=purpose,proto3" json:"purpose,omitempty"` + // coin_type is the BIP-0044 coin type code + CoinType uint32 `protobuf:"varint,8,opt,name=coin_type,json=coinType,proto3" json:"coin_type,omitempty"` + // full_fundraiser_path is the BIP-0044 prefix (deprecated in favor of full_bip44_path) + FullFundraiserPath string `protobuf:"bytes,9,opt,name=full_fundraiser_path,json=fullFundraiserPath,proto3" json:"full_fundraiser_path,omitempty"` + // full_bip44_path is the BIP-0044 prefix + FullBip44Path string `protobuf:"bytes,10,opt,name=full_bip44_path,json=fullBip44Path,proto3" json:"full_bip44_path,omitempty"` +} + +func (m *ConfigurationDescriptor) Reset() { *m = ConfigurationDescriptor{} } +func (m *ConfigurationDescriptor) String() string { return proto.CompactTextString(m) } +func (*ConfigurationDescriptor) ProtoMessage() {} +func (*ConfigurationDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{9} +} +func (m *ConfigurationDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ConfigurationDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ConfigurationDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ConfigurationDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConfigurationDescriptor.Merge(m, src) +} +func (m *ConfigurationDescriptor) XXX_Size() int { + return m.Size() +} +func (m *ConfigurationDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_ConfigurationDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_ConfigurationDescriptor proto.InternalMessageInfo + +func (m *ConfigurationDescriptor) GetBech32AccountAddressPrefix() string { + if m != nil { + return m.Bech32AccountAddressPrefix + } + return "" +} + +func (m *ConfigurationDescriptor) GetBech32ValidatorAddressPrefix() string { + if m != nil { + return m.Bech32ValidatorAddressPrefix + } + return "" +} + +func (m *ConfigurationDescriptor) GetBech32ConsensusAddressPrefix() string { + if m != nil { + return m.Bech32ConsensusAddressPrefix + } + return "" +} + +func (m *ConfigurationDescriptor) GetBech32AccountPublicKeyPrefix() string { + if m != nil { + return m.Bech32AccountPublicKeyPrefix + } + return "" +} + +func (m *ConfigurationDescriptor) GetBech32ValidatorPublicKeyPrefix() string { + if m != nil { + return m.Bech32ValidatorPublicKeyPrefix + } + return "" +} + +func (m *ConfigurationDescriptor) GetBech32ConsensusPublicKeyPrefix() string { + if m != nil { + return m.Bech32ConsensusPublicKeyPrefix + } + return "" +} + +func (m *ConfigurationDescriptor) GetPurpose() uint32 { + if m != nil { + return m.Purpose + } + return 0 +} + +func (m *ConfigurationDescriptor) GetCoinType() uint32 { + if m != nil { + return m.CoinType + } + return 0 +} + +func (m *ConfigurationDescriptor) GetFullFundraiserPath() string { + if m != nil { + return m.FullFundraiserPath + } + return "" +} + +func (m *ConfigurationDescriptor) GetFullBip44Path() string { + if m != nil { + return m.FullBip44Path + } + return "" +} + +// MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction +type MsgDescriptor struct { + // Types that are valid to be assigned to Msg: + // *MsgDescriptor_ServiceMsg + // *MsgDescriptor_LegacyMsg + Msg isMsgDescriptor_Msg `protobuf_oneof:"msg"` +} + +func (m *MsgDescriptor) Reset() { *m = MsgDescriptor{} } +func (m *MsgDescriptor) String() string { return proto.CompactTextString(m) } +func (*MsgDescriptor) ProtoMessage() {} +func (*MsgDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{10} +} +func (m *MsgDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDescriptor.Merge(m, src) +} +func (m *MsgDescriptor) XXX_Size() int { + return m.Size() +} +func (m *MsgDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDescriptor proto.InternalMessageInfo + +type isMsgDescriptor_Msg interface { + isMsgDescriptor_Msg() + MarshalTo([]byte) (int, error) + Size() int +} + +type MsgDescriptor_ServiceMsg struct { + ServiceMsg *ServiceMsgDescriptor `protobuf:"bytes,1,opt,name=service_msg,json=serviceMsg,proto3,oneof" json:"service_msg,omitempty"` +} +type MsgDescriptor_LegacyMsg struct { + LegacyMsg *LegacyMsgDescriptor `protobuf:"bytes,2,opt,name=legacy_msg,json=legacyMsg,proto3,oneof" json:"legacy_msg,omitempty"` +} + +func (*MsgDescriptor_ServiceMsg) isMsgDescriptor_Msg() {} +func (*MsgDescriptor_LegacyMsg) isMsgDescriptor_Msg() {} + +func (m *MsgDescriptor) GetMsg() isMsgDescriptor_Msg { + if m != nil { + return m.Msg + } + return nil +} + +func (m *MsgDescriptor) GetServiceMsg() *ServiceMsgDescriptor { + if x, ok := m.GetMsg().(*MsgDescriptor_ServiceMsg); ok { + return x.ServiceMsg + } + return nil +} + +func (m *MsgDescriptor) GetLegacyMsg() *LegacyMsgDescriptor { + if x, ok := m.GetMsg().(*MsgDescriptor_LegacyMsg); ok { + return x.LegacyMsg + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*MsgDescriptor) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*MsgDescriptor_ServiceMsg)(nil), + (*MsgDescriptor_LegacyMsg)(nil), + } +} + +// ServiceMsgDescriptor describes an sdk.ServiceMsg type +type ServiceMsgDescriptor struct { + // fullname is the protobuf fullname of the given sdk.ServiceMsg + Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` + // route is the sdk.ServiceMsg route, it is equal to type_url + Route string `protobuf:"bytes,2,opt,name=route,proto3" json:"route,omitempty"` + // type_url defines the type URL used when marshalling the type as any + // this is required so we can provide type safe google.protobuf.Any marshalling and + // unmarshalling, making sure that we don't accept just 'any' type + // in our interface fields + TypeUrl string `protobuf:"bytes,3,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"` +} + +func (m *ServiceMsgDescriptor) Reset() { *m = ServiceMsgDescriptor{} } +func (m *ServiceMsgDescriptor) String() string { return proto.CompactTextString(m) } +func (*ServiceMsgDescriptor) ProtoMessage() {} +func (*ServiceMsgDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{11} +} +func (m *ServiceMsgDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ServiceMsgDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ServiceMsgDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ServiceMsgDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceMsgDescriptor.Merge(m, src) +} +func (m *ServiceMsgDescriptor) XXX_Size() int { + return m.Size() +} +func (m *ServiceMsgDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_ServiceMsgDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_ServiceMsgDescriptor proto.InternalMessageInfo + +func (m *ServiceMsgDescriptor) GetFullname() string { + if m != nil { + return m.Fullname + } + return "" +} + +func (m *ServiceMsgDescriptor) GetRoute() string { + if m != nil { + return m.Route + } + return "" +} + +func (m *ServiceMsgDescriptor) GetTypeUrl() string { + if m != nil { + return m.TypeUrl + } + return "" +} + +// LegacyMsgDescriptor describes an sdk.Msg type +type LegacyMsgDescriptor struct { + // fullname is the protobuf fullname of the message + Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` + // type_url defines the type URL used when marshalling the type as any + // this is required so we can provide type safe google.protobuf.Any marshalling and + // unmarshalling, making sure that we don't accept just 'any' type + // in our interface fields + TypeUrl string `protobuf:"bytes,2,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"` +} + +func (m *LegacyMsgDescriptor) Reset() { *m = LegacyMsgDescriptor{} } +func (m *LegacyMsgDescriptor) String() string { return proto.CompactTextString(m) } +func (*LegacyMsgDescriptor) ProtoMessage() {} +func (*LegacyMsgDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{12} +} +func (m *LegacyMsgDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *LegacyMsgDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_LegacyMsgDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *LegacyMsgDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_LegacyMsgDescriptor.Merge(m, src) +} +func (m *LegacyMsgDescriptor) XXX_Size() int { + return m.Size() +} +func (m *LegacyMsgDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_LegacyMsgDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_LegacyMsgDescriptor proto.InternalMessageInfo + +func (m *LegacyMsgDescriptor) GetFullname() string { + if m != nil { + return m.Fullname + } + return "" +} + +func (m *LegacyMsgDescriptor) GetTypeUrl() string { + if m != nil { + return m.TypeUrl + } + return "" +} + +// GetAppDescriptorRequest is the request type of the GetAppDescriptor RPC. +type GetAppDescriptorRequest struct { +} + +func (m *GetAppDescriptorRequest) Reset() { *m = GetAppDescriptorRequest{} } +func (m *GetAppDescriptorRequest) String() string { return proto.CompactTextString(m) } +func (*GetAppDescriptorRequest) ProtoMessage() {} +func (*GetAppDescriptorRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{13} +} +func (m *GetAppDescriptorRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetAppDescriptorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetAppDescriptorRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetAppDescriptorRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetAppDescriptorRequest.Merge(m, src) +} +func (m *GetAppDescriptorRequest) XXX_Size() int { + return m.Size() +} +func (m *GetAppDescriptorRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetAppDescriptorRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetAppDescriptorRequest proto.InternalMessageInfo + +// GetAppDescriptorResponse is the response type of the GetAppDescriptor RPC. +type GetAppDescriptorResponse struct { + // app contains the cosmos-sdk application descriptor + App *AppDescriptor `protobuf:"bytes,1,opt,name=app,proto3" json:"app,omitempty"` +} + +func (m *GetAppDescriptorResponse) Reset() { *m = GetAppDescriptorResponse{} } +func (m *GetAppDescriptorResponse) String() string { return proto.CompactTextString(m) } +func (*GetAppDescriptorResponse) ProtoMessage() {} +func (*GetAppDescriptorResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{14} +} +func (m *GetAppDescriptorResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetAppDescriptorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetAppDescriptorResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetAppDescriptorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetAppDescriptorResponse.Merge(m, src) +} +func (m *GetAppDescriptorResponse) XXX_Size() int { + return m.Size() +} +func (m *GetAppDescriptorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetAppDescriptorResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetAppDescriptorResponse proto.InternalMessageInfo + +func (m *GetAppDescriptorResponse) GetApp() *AppDescriptor { + if m != nil { + return m.App + } + return nil +} + +// QueryServicesDescriptor contains the list of cosmos-sdk queriable services +type QueryServicesDescriptor struct { + // query_services is a list of cosmos-sdk QueryServiceDescriptor + QueryServices []*QueryServiceDescriptor `protobuf:"bytes,1,rep,name=query_services,json=queryServices,proto3" json:"query_services,omitempty"` +} + +func (m *QueryServicesDescriptor) Reset() { *m = QueryServicesDescriptor{} } +func (m *QueryServicesDescriptor) String() string { return proto.CompactTextString(m) } +func (*QueryServicesDescriptor) ProtoMessage() {} +func (*QueryServicesDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{15} +} +func (m *QueryServicesDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryServicesDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryServicesDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryServicesDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryServicesDescriptor.Merge(m, src) +} +func (m *QueryServicesDescriptor) XXX_Size() int { + return m.Size() +} +func (m *QueryServicesDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_QueryServicesDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryServicesDescriptor proto.InternalMessageInfo + +func (m *QueryServicesDescriptor) GetQueryServices() []*QueryServiceDescriptor { + if m != nil { + return m.QueryServices + } + return nil +} + +// QueryServiceDescriptor describes a cosmos-sdk queryable service +type QueryServiceDescriptor struct { + // fullname is the protobuf fullname of the service descriptor + Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` + // methods provides a list of query service methods + Methods []*QueryMethodDescriptor `protobuf:"bytes,2,rep,name=methods,proto3" json:"methods,omitempty"` +} + +func (m *QueryServiceDescriptor) Reset() { *m = QueryServiceDescriptor{} } +func (m *QueryServiceDescriptor) String() string { return proto.CompactTextString(m) } +func (*QueryServiceDescriptor) ProtoMessage() {} +func (*QueryServiceDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{16} +} +func (m *QueryServiceDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryServiceDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryServiceDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryServiceDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryServiceDescriptor.Merge(m, src) +} +func (m *QueryServiceDescriptor) XXX_Size() int { + return m.Size() +} +func (m *QueryServiceDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_QueryServiceDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryServiceDescriptor proto.InternalMessageInfo + +func (m *QueryServiceDescriptor) GetFullname() string { + if m != nil { + return m.Fullname + } + return "" +} + +func (m *QueryServiceDescriptor) GetMethods() []*QueryMethodDescriptor { + if m != nil { + return m.Methods + } + return nil +} + +// QueryMethodDescriptor describes a queryable method of a query service +// no other info is provided beside method name and tendermint queryable path +// because it would be redundant with the grpc reflection service +type QueryMethodDescriptor struct { + // name is the protobuf name (not fullname) of the method + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // full_query_path is the path that can be used to query + // this method via tendermint abci.Query + FullQueryPath string `protobuf:"bytes,2,opt,name=full_query_path,json=fullQueryPath,proto3" json:"full_query_path,omitempty"` +} + +func (m *QueryMethodDescriptor) Reset() { *m = QueryMethodDescriptor{} } +func (m *QueryMethodDescriptor) String() string { return proto.CompactTextString(m) } +func (*QueryMethodDescriptor) ProtoMessage() {} +func (*QueryMethodDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{17} +} +func (m *QueryMethodDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryMethodDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryMethodDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryMethodDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryMethodDescriptor.Merge(m, src) +} +func (m *QueryMethodDescriptor) XXX_Size() int { + return m.Size() +} +func (m *QueryMethodDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_QueryMethodDescriptor.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryMethodDescriptor proto.InternalMessageInfo + +func (m *QueryMethodDescriptor) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *QueryMethodDescriptor) GetFullQueryPath() string { + if m != nil { + return m.FullQueryPath + } + return "" +} + +// ListAllInterfacesRequest is the request type of the ListAllInterfaces RPC. +type ListAllInterfacesRequest struct { +} + +func (m *ListAllInterfacesRequest) Reset() { *m = ListAllInterfacesRequest{} } +func (m *ListAllInterfacesRequest) String() string { return proto.CompactTextString(m) } +func (*ListAllInterfacesRequest) ProtoMessage() {} +func (*ListAllInterfacesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{18} +} +func (m *ListAllInterfacesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListAllInterfacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListAllInterfacesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListAllInterfacesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListAllInterfacesRequest.Merge(m, src) +} +func (m *ListAllInterfacesRequest) XXX_Size() int { + return m.Size() +} +func (m *ListAllInterfacesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListAllInterfacesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ListAllInterfacesRequest proto.InternalMessageInfo + +// ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC. +type ListAllInterfacesResponse struct { + // interface_names is an array of all the registered interfaces. + InterfaceNames []string `protobuf:"bytes,1,rep,name=interface_names,json=interfaceNames,proto3" json:"interface_names,omitempty"` +} + +func (m *ListAllInterfacesResponse) Reset() { *m = ListAllInterfacesResponse{} } +func (m *ListAllInterfacesResponse) String() string { return proto.CompactTextString(m) } +func (*ListAllInterfacesResponse) ProtoMessage() {} +func (*ListAllInterfacesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{19} +} +func (m *ListAllInterfacesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListAllInterfacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListAllInterfacesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListAllInterfacesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListAllInterfacesResponse.Merge(m, src) +} +func (m *ListAllInterfacesResponse) XXX_Size() int { + return m.Size() +} +func (m *ListAllInterfacesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListAllInterfacesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ListAllInterfacesResponse proto.InternalMessageInfo + +func (m *ListAllInterfacesResponse) GetInterfaceNames() []string { + if m != nil { + return m.InterfaceNames + } + return nil +} + +// ListImplementationsRequest is the request type of the ListImplementations +// RPC. +type ListImplementationsRequest struct { + // interface_name defines the interface to query the implementations for. + InterfaceName string `protobuf:"bytes,1,opt,name=interface_name,json=interfaceName,proto3" json:"interface_name,omitempty"` +} + +func (m *ListImplementationsRequest) Reset() { *m = ListImplementationsRequest{} } +func (m *ListImplementationsRequest) String() string { return proto.CompactTextString(m) } +func (*ListImplementationsRequest) ProtoMessage() {} +func (*ListImplementationsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{20} +} +func (m *ListImplementationsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListImplementationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListImplementationsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListImplementationsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListImplementationsRequest.Merge(m, src) +} +func (m *ListImplementationsRequest) XXX_Size() int { + return m.Size() +} +func (m *ListImplementationsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListImplementationsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ListImplementationsRequest proto.InternalMessageInfo + +func (m *ListImplementationsRequest) GetInterfaceName() string { + if m != nil { + return m.InterfaceName + } + return "" +} + +// ListImplementationsResponse is the response type of the ListImplementations +// RPC. +type ListImplementationsResponse struct { + ImplementationMessageNames []string `protobuf:"bytes,1,rep,name=implementation_message_names,json=implementationMessageNames,proto3" json:"implementation_message_names,omitempty"` +} + +func (m *ListImplementationsResponse) Reset() { *m = ListImplementationsResponse{} } +func (m *ListImplementationsResponse) String() string { return proto.CompactTextString(m) } +func (*ListImplementationsResponse) ProtoMessage() {} +func (*ListImplementationsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{21} +} +func (m *ListImplementationsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListImplementationsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListImplementationsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListImplementationsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListImplementationsResponse.Merge(m, src) +} +func (m *ListImplementationsResponse) XXX_Size() int { + return m.Size() +} +func (m *ListImplementationsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListImplementationsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ListImplementationsResponse proto.InternalMessageInfo + +func (m *ListImplementationsResponse) GetImplementationMessageNames() []string { + if m != nil { + return m.ImplementationMessageNames + } + return nil +} + +func init() { + proto.RegisterType((*AppDescriptor)(nil), "cosmos.base.reflection.v1beta1.AppDescriptor") + proto.RegisterType((*TxDescriptor)(nil), "cosmos.base.reflection.v1beta1.TxDescriptor") + proto.RegisterType((*AuthConfigDescriptor)(nil), "cosmos.base.reflection.v1beta1.AuthConfigDescriptor") + proto.RegisterType((*SigningModeDescriptor)(nil), "cosmos.base.reflection.v1beta1.SigningModeDescriptor") + proto.RegisterType((*ChainDescriptor)(nil), "cosmos.base.reflection.v1beta1.ChainDescriptor") + proto.RegisterType((*CodecDescriptor)(nil), "cosmos.base.reflection.v1beta1.CodecDescriptor") + proto.RegisterType((*InterfaceDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceDescriptor") + proto.RegisterType((*InterfaceImplementerDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceImplementerDescriptor") + proto.RegisterType((*InterfaceAcceptingTypeDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceAcceptingTypeDescriptor") + proto.RegisterType((*ConfigurationDescriptor)(nil), "cosmos.base.reflection.v1beta1.ConfigurationDescriptor") + proto.RegisterType((*MsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.MsgDescriptor") + proto.RegisterType((*ServiceMsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.ServiceMsgDescriptor") + proto.RegisterType((*LegacyMsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.LegacyMsgDescriptor") + proto.RegisterType((*GetAppDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetAppDescriptorRequest") + proto.RegisterType((*GetAppDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetAppDescriptorResponse") + proto.RegisterType((*QueryServicesDescriptor)(nil), "cosmos.base.reflection.v1beta1.QueryServicesDescriptor") + proto.RegisterType((*QueryServiceDescriptor)(nil), "cosmos.base.reflection.v1beta1.QueryServiceDescriptor") + proto.RegisterType((*QueryMethodDescriptor)(nil), "cosmos.base.reflection.v1beta1.QueryMethodDescriptor") + proto.RegisterType((*ListAllInterfacesRequest)(nil), "cosmos.base.reflection.v1beta1.ListAllInterfacesRequest") + proto.RegisterType((*ListAllInterfacesResponse)(nil), "cosmos.base.reflection.v1beta1.ListAllInterfacesResponse") + proto.RegisterType((*ListImplementationsRequest)(nil), "cosmos.base.reflection.v1beta1.ListImplementationsRequest") + proto.RegisterType((*ListImplementationsResponse)(nil), "cosmos.base.reflection.v1beta1.ListImplementationsResponse") +} + +func init() { + proto.RegisterFile("cosmos/base/reflection/v1beta1/reflection.proto", fileDescriptor_d48c054165687f5c) +} + +var fileDescriptor_d48c054165687f5c = []byte{ + // 1249 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x51, 0x6f, 0xdb, 0xd4, + 0x17, 0xaf, 0x93, 0x76, 0x6d, 0x4e, 0x97, 0xf6, 0xbf, 0xbb, 0x6e, 0x75, 0xb3, 0xfe, 0x43, 0xb1, + 0x04, 0x54, 0xb0, 0x25, 0x5b, 0xd7, 0x0d, 0x06, 0x08, 0x96, 0x76, 0x03, 0xc6, 0x5a, 0x28, 0x49, + 0xc7, 0xa4, 0xa1, 0x61, 0x39, 0xf6, 0x8d, 0x73, 0x35, 0xc7, 0x76, 0x7d, 0xed, 0xaa, 0x11, 0xf0, + 0x82, 0xc4, 0x3b, 0x12, 0x6f, 0x7c, 0x00, 0x3e, 0x05, 0xbc, 0x81, 0xc4, 0xe3, 0x24, 0x1e, 0xe0, + 0x11, 0xb5, 0x7c, 0x08, 0x1e, 0xd1, 0xbd, 0xd7, 0x76, 0xec, 0xd4, 0x89, 0xb3, 0x3e, 0xb5, 0x3e, + 0xe7, 0xf7, 0xfb, 0x9d, 0x73, 0xee, 0x3d, 0xf7, 0x9e, 0x1b, 0xa8, 0xeb, 0x0e, 0xed, 0x39, 0xb4, + 0xde, 0xd6, 0x28, 0xae, 0x7b, 0xb8, 0x63, 0x61, 0xdd, 0x27, 0x8e, 0x5d, 0x3f, 0xbc, 0xd1, 0xc6, + 0xbe, 0x76, 0x23, 0x61, 0xaa, 0xb9, 0x9e, 0xe3, 0x3b, 0xa8, 0x2a, 0x08, 0x35, 0x46, 0xa8, 0x25, + 0xbc, 0x21, 0xa1, 0xb2, 0x6a, 0x3a, 0x8e, 0x69, 0xe1, 0xba, 0xe6, 0x92, 0xba, 0x66, 0xdb, 0x8e, + 0xaf, 0x31, 0x37, 0x15, 0x6c, 0xe5, 0xc7, 0x22, 0x94, 0x1b, 0xae, 0x7b, 0x0f, 0x53, 0xdd, 0x23, + 0xae, 0xef, 0x78, 0xe8, 0x3e, 0xcc, 0xe8, 0x5d, 0x8d, 0xd8, 0x72, 0x61, 0x4d, 0x5a, 0x9f, 0xdf, + 0xa8, 0xd7, 0xc6, 0xeb, 0xd7, 0xb6, 0x19, 0x78, 0xc0, 0x6f, 0x0a, 0x36, 0x97, 0x71, 0x0c, 0xac, + 0xcb, 0xc5, 0x09, 0x65, 0x18, 0x38, 0x25, 0xc3, 0x0c, 0xe8, 0x29, 0x94, 0x75, 0xc7, 0xee, 0x10, + 0x33, 0xf0, 0x78, 0xde, 0xf2, 0x34, 0x97, 0x7b, 0x33, 0x5f, 0x2e, 0x41, 0x4a, 0xc8, 0xa6, 0xd5, + 0xd0, 0x97, 0xb0, 0x70, 0x10, 0x60, 0xaf, 0xaf, 0x52, 0xec, 0x1d, 0x12, 0x1d, 0x53, 0x79, 0x66, + 0x32, 0xfd, 0xcf, 0x18, 0xab, 0x15, 0x92, 0x92, 0xfa, 0x07, 0x49, 0x07, 0x7a, 0x17, 0x0a, 0xfe, + 0x91, 0x7c, 0x8e, 0x6b, 0x5e, 0xcd, 0xd3, 0xdc, 0x3f, 0x4a, 0x08, 0x15, 0xfc, 0x23, 0xe5, 0x57, + 0x09, 0xce, 0x27, 0x8d, 0xa8, 0x02, 0x73, 0x9d, 0xc0, 0xb2, 0x6c, 0xad, 0x87, 0x65, 0x69, 0x4d, + 0x5a, 0x2f, 0x35, 0xe3, 0x6f, 0xf4, 0x08, 0xe6, 0xb5, 0xc0, 0xef, 0xaa, 0xa2, 0xc0, 0x70, 0xf7, + 0x36, 0xf3, 0x62, 0x36, 0x02, 0xbf, 0x2b, 0xd6, 0x2a, 0x11, 0x1b, 0xb4, 0xd8, 0x8a, 0x1a, 0x30, + 0xdd, 0xa3, 0x26, 0x95, 0x8b, 0x6b, 0xc5, 0xf5, 0xf9, 0x8d, 0x6b, 0x79, 0x7a, 0xbb, 0x34, 0x29, + 0xc4, 0xa9, 0x8a, 0x07, 0x4b, 0x59, 0x61, 0xd0, 0x13, 0x28, 0x53, 0x62, 0xda, 0xc4, 0x36, 0xd5, + 0x9e, 0x63, 0x60, 0x2a, 0x4b, 0x3c, 0xc6, 0xad, 0xbc, 0x18, 0x2d, 0x41, 0xda, 0x75, 0x0c, 0x9c, + 0x88, 0x75, 0x9e, 0x0e, 0xcc, 0x54, 0x79, 0x03, 0x2e, 0x65, 0xc2, 0x10, 0x82, 0xe9, 0xc4, 0xf2, + 0xf1, 0xff, 0x95, 0x97, 0x61, 0x71, 0xa8, 0x8b, 0xd1, 0x02, 0x14, 0x88, 0x11, 0x82, 0x0a, 0xc4, + 0x50, 0x3a, 0xb0, 0x38, 0xd4, 0xa1, 0xa8, 0x05, 0x40, 0x6c, 0x1f, 0x7b, 0x1d, 0x4d, 0x8f, 0x73, + 0xbf, 0x99, 0x97, 0xfb, 0x83, 0x88, 0x91, 0x5c, 0xee, 0x81, 0x8c, 0xf2, 0x53, 0x01, 0x2e, 0x66, + 0x60, 0xc6, 0xee, 0xfc, 0xd7, 0xb0, 0x12, 0x2b, 0xa8, 0x9a, 0xae, 0x63, 0xd7, 0x67, 0x6b, 0xea, + 0xf7, 0x5d, 0x4c, 0xe5, 0x02, 0xcf, 0xeb, 0xee, 0xc4, 0x79, 0x35, 0x22, 0xfe, 0x7e, 0xdf, 0x4d, + 0x26, 0xb9, 0x4c, 0x32, 0x11, 0x14, 0x05, 0x70, 0x79, 0x10, 0x9d, 0xf4, 0x5c, 0x0b, 0xf7, 0x30, + 0xfb, 0x8e, 0x5a, 0xe6, 0xbd, 0x89, 0x43, 0x3f, 0x18, 0x90, 0x13, 0x81, 0x2f, 0x91, 0x0c, 0x3f, + 0x55, 0x1e, 0x43, 0x75, 0x3c, 0x71, 0xec, 0x92, 0xad, 0xc0, 0x1c, 0x5b, 0x1e, 0x35, 0xf0, 0x2c, + 0x7e, 0x52, 0x4a, 0xcd, 0x59, 0xf6, 0xfd, 0xc8, 0xb3, 0x14, 0x1f, 0xd6, 0xf2, 0x16, 0x63, 0xac, + 0xf4, 0x26, 0x5c, 0xee, 0x10, 0x6c, 0x19, 0xaa, 0x11, 0xe3, 0x55, 0xe6, 0x10, 0x5b, 0x51, 0x6a, + 0x2e, 0x71, 0xef, 0x40, 0xec, 0x13, 0xe6, 0x53, 0xfe, 0x9c, 0x86, 0xe5, 0x11, 0x77, 0x16, 0x6a, + 0xc0, 0xff, 0xdb, 0x58, 0xef, 0xde, 0xdc, 0x60, 0x9b, 0xeb, 0x04, 0xb6, 0xaf, 0x6a, 0x86, 0xe1, + 0x61, 0x4a, 0x55, 0xd7, 0xc3, 0x1d, 0x72, 0x14, 0xa6, 0x50, 0x11, 0xa0, 0x86, 0xc0, 0x34, 0x04, + 0x64, 0x8f, 0x23, 0xd0, 0x7d, 0x78, 0x29, 0x94, 0x38, 0xd4, 0x2c, 0x62, 0x68, 0x2c, 0xa9, 0x21, + 0x11, 0xb1, 0x0c, 0xab, 0x02, 0xf6, 0x79, 0x84, 0x1a, 0x25, 0xa3, 0x3b, 0x36, 0xc5, 0x36, 0x0d, + 0xe8, 0xb0, 0x4c, 0x31, 0x29, 0xb3, 0x1d, 0xa1, 0xd2, 0x32, 0x5b, 0xb0, 0x9a, 0xca, 0x75, 0x2f, + 0x68, 0x5b, 0x44, 0x7f, 0x88, 0xfb, 0xc2, 0xcf, 0xef, 0xf8, 0x58, 0x23, 0x1b, 0x83, 0x3e, 0x06, + 0xe5, 0x54, 0x45, 0x2e, 0xc7, 0xa8, 0xcf, 0x70, 0x3f, 0xca, 0x66, 0x86, 0x2b, 0x55, 0x87, 0x8a, + 0x1a, 0xad, 0x35, 0x28, 0xeb, 0xb4, 0xd6, 0xb9, 0xa4, 0x56, 0x5c, 0xd9, 0xb0, 0x96, 0x0c, 0xb3, + 0x6e, 0xe0, 0xb9, 0x0e, 0xc5, 0xf2, 0xec, 0x9a, 0xb4, 0x5e, 0x6e, 0x46, 0x9f, 0xe8, 0x0a, 0x94, + 0x74, 0x87, 0xd8, 0xfc, 0x5c, 0xca, 0x73, 0xdc, 0x37, 0xc7, 0x0c, 0xac, 0xb7, 0xd0, 0x75, 0x58, + 0x62, 0x1d, 0xa4, 0x76, 0x02, 0xdb, 0xf0, 0x34, 0x42, 0xb1, 0xa7, 0xba, 0x9a, 0xdf, 0x95, 0x4b, + 0x3c, 0x28, 0x62, 0xbe, 0x0f, 0x62, 0xd7, 0x9e, 0xe6, 0x77, 0xd1, 0xab, 0xb0, 0xc8, 0x19, 0x6d, + 0xe2, 0x6e, 0x6e, 0x0a, 0x30, 0x70, 0x70, 0x99, 0x99, 0xb7, 0x98, 0x95, 0xe1, 0x94, 0xdf, 0x24, + 0x28, 0xa7, 0x6e, 0x65, 0xf4, 0x18, 0xe6, 0xc3, 0x71, 0xa7, 0xf6, 0xa8, 0xc9, 0xbb, 0x67, 0x82, + 0x49, 0x11, 0xce, 0xb4, 0x94, 0xd4, 0x47, 0x53, 0x4d, 0xa0, 0xb1, 0x1d, 0xed, 0x03, 0x58, 0xd8, + 0xd4, 0xf4, 0x3e, 0xd7, 0x15, 0x13, 0x28, 0xf7, 0x46, 0xdc, 0xe1, 0x8c, 0x61, 0xd9, 0x92, 0x15, + 0x99, 0xb7, 0x66, 0xa0, 0xd8, 0xa3, 0xa6, 0xa2, 0xc3, 0x52, 0x56, 0x0a, 0x63, 0xcf, 0xe2, 0x12, + 0xcc, 0x78, 0x4e, 0xe0, 0xe3, 0xb0, 0xb9, 0xc5, 0x47, 0xea, 0xf0, 0x17, 0xd3, 0x87, 0x7f, 0x07, + 0x2e, 0x66, 0xe4, 0x73, 0xd6, 0xab, 0x64, 0x05, 0x96, 0x3f, 0xc4, 0x7e, 0xea, 0x79, 0xd5, 0xc4, + 0x07, 0x01, 0xa6, 0xbe, 0xf2, 0x05, 0xc8, 0xa7, 0x5d, 0xd4, 0x65, 0x5d, 0x85, 0xde, 0x87, 0xa2, + 0xe6, 0xba, 0xe1, 0xbe, 0xe4, 0x4e, 0xdc, 0xb4, 0x06, 0x63, 0x2a, 0x47, 0xb0, 0x3c, 0xe2, 0x7d, + 0x82, 0x9e, 0x9e, 0x7a, 0xf0, 0x88, 0xc1, 0x75, 0xfb, 0x45, 0x1e, 0x3c, 0x23, 0xdf, 0x3b, 0xca, + 0x77, 0x12, 0x5c, 0xce, 0x46, 0x8e, 0x5d, 0xc3, 0x4f, 0x61, 0xb6, 0x87, 0xfd, 0xae, 0x63, 0x44, + 0xf3, 0xea, 0xd6, 0x44, 0xe9, 0xec, 0x72, 0x4e, 0x22, 0x9b, 0x48, 0x45, 0x69, 0xc1, 0xa5, 0x4c, + 0x44, 0xd6, 0xf8, 0x8f, 0x4f, 0x92, 0x58, 0x18, 0x7e, 0x92, 0x0a, 0x83, 0x93, 0xc4, 0x75, 0xf8, + 0x49, 0xaa, 0x80, 0xbc, 0x43, 0xa8, 0xdf, 0xb0, 0xac, 0x78, 0x40, 0xd0, 0x68, 0x3f, 0xef, 0xc1, + 0x4a, 0x86, 0x2f, 0xdc, 0xd0, 0xd7, 0x60, 0x71, 0x30, 0x22, 0xc5, 0x2c, 0x90, 0xf8, 0x2c, 0x58, + 0x88, 0xcd, 0x62, 0x0a, 0x6c, 0x43, 0x85, 0xa9, 0xc4, 0xf3, 0x4c, 0x3c, 0xd5, 0xc3, 0x18, 0xe8, + 0x15, 0x58, 0x48, 0xcb, 0x84, 0x55, 0x94, 0x53, 0x2a, 0x8a, 0x0a, 0x57, 0x32, 0x45, 0xc2, 0x64, + 0xee, 0xc2, 0x2a, 0x49, 0xb9, 0xd4, 0x1e, 0xa6, 0x54, 0x33, 0xd3, 0x99, 0x55, 0xd2, 0x98, 0x5d, + 0x01, 0xe1, 0x59, 0x6e, 0xfc, 0x3b, 0x0d, 0x17, 0x9a, 0xf1, 0x96, 0x84, 0x3b, 0x8d, 0x7e, 0x91, + 0xe0, 0x7f, 0xc3, 0x2d, 0x8d, 0x72, 0xdf, 0xd1, 0x23, 0xce, 0x47, 0xe5, 0xad, 0x17, 0x27, 0x8a, + 0xfa, 0x94, 0xdb, 0xdf, 0xfe, 0xf1, 0xcf, 0x0f, 0x85, 0xeb, 0xa8, 0x96, 0xf7, 0x4b, 0x4a, 0x73, + 0xdd, 0xc4, 0x8c, 0x46, 0x3f, 0x4b, 0x70, 0xe1, 0xd4, 0x16, 0xa2, 0xdc, 0x3c, 0x46, 0x75, 0x44, + 0xe5, 0xce, 0x19, 0x98, 0x61, 0x09, 0x1b, 0xbc, 0x84, 0xab, 0xe8, 0xf5, 0xbc, 0x12, 0x06, 0x0f, + 0x47, 0x74, 0x22, 0xc1, 0xc5, 0x8c, 0x6d, 0x47, 0x6f, 0x4f, 0x92, 0x46, 0x76, 0xc3, 0x55, 0xde, + 0x39, 0x13, 0x37, 0x2c, 0xa2, 0xc5, 0x8b, 0xd8, 0x45, 0x0f, 0x27, 0x2f, 0xa2, 0xfe, 0x55, 0xba, + 0xbf, 0xbf, 0xa9, 0xa7, 0xbb, 0x90, 0x6e, 0xb5, 0x7e, 0x3f, 0xae, 0x4a, 0xcf, 0x8f, 0xab, 0xd2, + 0xdf, 0xc7, 0x55, 0xe9, 0xfb, 0x93, 0xea, 0xd4, 0xf3, 0x93, 0xea, 0xd4, 0x5f, 0x27, 0xd5, 0xa9, + 0x27, 0x77, 0x4c, 0xe2, 0x77, 0x83, 0x76, 0x4d, 0x77, 0x7a, 0x51, 0x40, 0xf1, 0xe7, 0x1a, 0x35, + 0x9e, 0xd5, 0xd9, 0x6d, 0x87, 0xbd, 0xba, 0xe9, 0xb9, 0x7a, 0x68, 0x1e, 0x24, 0xd2, 0x3e, 0xc7, + 0x7f, 0x0a, 0xdf, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xed, 0xf0, 0xac, 0x45, 0x7b, 0x0f, 0x00, + 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// ReflectionServiceClient is the client API for ReflectionService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type ReflectionServiceClient interface { + // GetAppDescriptor returns the full cosmos application descriptor + GetAppDescriptor(ctx context.Context, in *GetAppDescriptorRequest, opts ...grpc.CallOption) (*GetAppDescriptorResponse, error) + // ListAllInterfaces lists all the interfaces registered in the interface + // registry. + ListAllInterfaces(ctx context.Context, in *ListAllInterfacesRequest, opts ...grpc.CallOption) (*ListAllInterfacesResponse, error) + // ListImplementations list all the concrete types that implement a given + // interface. + ListImplementations(ctx context.Context, in *ListImplementationsRequest, opts ...grpc.CallOption) (*ListImplementationsResponse, error) +} + +type reflectionServiceClient struct { + cc grpc1.ClientConn +} + +func NewReflectionServiceClient(cc grpc1.ClientConn) ReflectionServiceClient { + return &reflectionServiceClient{cc} +} + +func (c *reflectionServiceClient) GetAppDescriptor(ctx context.Context, in *GetAppDescriptorRequest, opts ...grpc.CallOption) (*GetAppDescriptorResponse, error) { + out := new(GetAppDescriptorResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetAppDescriptor", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *reflectionServiceClient) ListAllInterfaces(ctx context.Context, in *ListAllInterfacesRequest, opts ...grpc.CallOption) (*ListAllInterfacesResponse, error) { + out := new(ListAllInterfacesResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/ListAllInterfaces", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *reflectionServiceClient) ListImplementations(ctx context.Context, in *ListImplementationsRequest, opts ...grpc.CallOption) (*ListImplementationsResponse, error) { + out := new(ListImplementationsResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/ListImplementations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ReflectionServiceServer is the server API for ReflectionService service. +type ReflectionServiceServer interface { + // GetAppDescriptor returns the full cosmos application descriptor + GetAppDescriptor(context.Context, *GetAppDescriptorRequest) (*GetAppDescriptorResponse, error) + // ListAllInterfaces lists all the interfaces registered in the interface + // registry. + ListAllInterfaces(context.Context, *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) + // ListImplementations list all the concrete types that implement a given + // interface. + ListImplementations(context.Context, *ListImplementationsRequest) (*ListImplementationsResponse, error) +} + +// UnimplementedReflectionServiceServer can be embedded to have forward compatible implementations. +type UnimplementedReflectionServiceServer struct { +} + +func (*UnimplementedReflectionServiceServer) GetAppDescriptor(ctx context.Context, req *GetAppDescriptorRequest) (*GetAppDescriptorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAppDescriptor not implemented") +} +func (*UnimplementedReflectionServiceServer) ListAllInterfaces(ctx context.Context, req *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAllInterfaces not implemented") +} +func (*UnimplementedReflectionServiceServer) ListImplementations(ctx context.Context, req *ListImplementationsRequest) (*ListImplementationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListImplementations not implemented") +} + +func RegisterReflectionServiceServer(s grpc1.Server, srv ReflectionServiceServer) { + s.RegisterService(&_ReflectionService_serviceDesc, srv) +} + +func _ReflectionService_GetAppDescriptor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAppDescriptorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReflectionServiceServer).GetAppDescriptor(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetAppDescriptor", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReflectionServiceServer).GetAppDescriptor(ctx, req.(*GetAppDescriptorRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ReflectionService_ListAllInterfaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListAllInterfacesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReflectionServiceServer).ListAllInterfaces(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/ListAllInterfaces", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReflectionServiceServer).ListAllInterfaces(ctx, req.(*ListAllInterfacesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ReflectionService_ListImplementations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListImplementationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReflectionServiceServer).ListImplementations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/ListImplementations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReflectionServiceServer).ListImplementations(ctx, req.(*ListImplementationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _ReflectionService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "cosmos.base.reflection.v1beta1.ReflectionService", + HandlerType: (*ReflectionServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetAppDescriptor", + Handler: _ReflectionService_GetAppDescriptor_Handler, + }, + { + MethodName: "ListAllInterfaces", + Handler: _ReflectionService_ListAllInterfaces_Handler, + }, + { + MethodName: "ListImplementations", + Handler: _ReflectionService_ListImplementations_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "cosmos/base/reflection/v1beta1/reflection.proto", +} + +func (m *AppDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AppDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AppDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Tx != nil { + { + size, err := m.Tx.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.QueryServices != nil { + { + size, err := m.QueryServices.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.Configuration != nil { + { + size, err := m.Configuration.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.Codec != nil { + { + size, err := m.Codec.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.Chain != nil { + { + size, err := m.Chain.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} + +func (m *TxDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TxDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TxDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Msgs) > 0 { + for iNdEx := len(m.Msgs) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Msgs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if m.AuthConfig != nil { + { + size, err := m.AuthConfig.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Fullname) > 0 { + i -= len(m.Fullname) + copy(dAtA[i:], m.Fullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *AuthConfigDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AuthConfigDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AuthConfigDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SigningModes) > 0 { + for iNdEx := len(m.SigningModes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.SigningModes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *SigningModeDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SigningModeDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SigningModeDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ChainDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ChainDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ChainDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CodecDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CodecDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CodecDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Interfaces) > 0 { + for iNdEx := len(m.Interfaces) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Interfaces[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *InterfaceDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *InterfaceDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *InterfaceDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.InterfaceImplementers) > 0 { + for iNdEx := len(m.InterfaceImplementers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.InterfaceImplementers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.InterfaceAcceptingTypes) > 0 { + for iNdEx := len(m.InterfaceAcceptingTypes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.InterfaceAcceptingTypes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Fullname) > 0 { + i -= len(m.Fullname) + copy(dAtA[i:], m.Fullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *InterfaceImplementerDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *InterfaceImplementerDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *InterfaceImplementerDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TypeUrl) > 0 { + i -= len(m.TypeUrl) + copy(dAtA[i:], m.TypeUrl) + i = encodeVarintReflection(dAtA, i, uint64(len(m.TypeUrl))) + i-- + dAtA[i] = 0x12 + } + if len(m.Fullname) > 0 { + i -= len(m.Fullname) + copy(dAtA[i:], m.Fullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *InterfaceAcceptingTypeDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *InterfaceAcceptingTypeDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *InterfaceAcceptingTypeDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.FieldDescriptorNames) > 0 { + for iNdEx := len(m.FieldDescriptorNames) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.FieldDescriptorNames[iNdEx]) + copy(dAtA[i:], m.FieldDescriptorNames[iNdEx]) + i = encodeVarintReflection(dAtA, i, uint64(len(m.FieldDescriptorNames[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(m.Fullname) > 0 { + i -= len(m.Fullname) + copy(dAtA[i:], m.Fullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ConfigurationDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigurationDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ConfigurationDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.FullBip44Path) > 0 { + i -= len(m.FullBip44Path) + copy(dAtA[i:], m.FullBip44Path) + i = encodeVarintReflection(dAtA, i, uint64(len(m.FullBip44Path))) + i-- + dAtA[i] = 0x52 + } + if len(m.FullFundraiserPath) > 0 { + i -= len(m.FullFundraiserPath) + copy(dAtA[i:], m.FullFundraiserPath) + i = encodeVarintReflection(dAtA, i, uint64(len(m.FullFundraiserPath))) + i-- + dAtA[i] = 0x4a + } + if m.CoinType != 0 { + i = encodeVarintReflection(dAtA, i, uint64(m.CoinType)) + i-- + dAtA[i] = 0x40 + } + if m.Purpose != 0 { + i = encodeVarintReflection(dAtA, i, uint64(m.Purpose)) + i-- + dAtA[i] = 0x38 + } + if len(m.Bech32ConsensusPublicKeyPrefix) > 0 { + i -= len(m.Bech32ConsensusPublicKeyPrefix) + copy(dAtA[i:], m.Bech32ConsensusPublicKeyPrefix) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Bech32ConsensusPublicKeyPrefix))) + i-- + dAtA[i] = 0x32 + } + if len(m.Bech32ValidatorPublicKeyPrefix) > 0 { + i -= len(m.Bech32ValidatorPublicKeyPrefix) + copy(dAtA[i:], m.Bech32ValidatorPublicKeyPrefix) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Bech32ValidatorPublicKeyPrefix))) + i-- + dAtA[i] = 0x2a + } + if len(m.Bech32AccountPublicKeyPrefix) > 0 { + i -= len(m.Bech32AccountPublicKeyPrefix) + copy(dAtA[i:], m.Bech32AccountPublicKeyPrefix) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Bech32AccountPublicKeyPrefix))) + i-- + dAtA[i] = 0x22 + } + if len(m.Bech32ConsensusAddressPrefix) > 0 { + i -= len(m.Bech32ConsensusAddressPrefix) + copy(dAtA[i:], m.Bech32ConsensusAddressPrefix) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Bech32ConsensusAddressPrefix))) + i-- + dAtA[i] = 0x1a + } + if len(m.Bech32ValidatorAddressPrefix) > 0 { + i -= len(m.Bech32ValidatorAddressPrefix) + copy(dAtA[i:], m.Bech32ValidatorAddressPrefix) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Bech32ValidatorAddressPrefix))) + i-- + dAtA[i] = 0x12 + } + if len(m.Bech32AccountAddressPrefix) > 0 { + i -= len(m.Bech32AccountAddressPrefix) + copy(dAtA[i:], m.Bech32AccountAddressPrefix) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Bech32AccountAddressPrefix))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Msg != nil { + { + size := m.Msg.Size() + i -= size + if _, err := m.Msg.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } + return len(dAtA) - i, nil +} + +func (m *MsgDescriptor_ServiceMsg) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDescriptor_ServiceMsg) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.ServiceMsg != nil { + { + size, err := m.ServiceMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} +func (m *MsgDescriptor_LegacyMsg) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDescriptor_LegacyMsg) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.LegacyMsg != nil { + { + size, err := m.LegacyMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} +func (m *ServiceMsgDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServiceMsgDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ServiceMsgDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TypeUrl) > 0 { + i -= len(m.TypeUrl) + copy(dAtA[i:], m.TypeUrl) + i = encodeVarintReflection(dAtA, i, uint64(len(m.TypeUrl))) + i-- + dAtA[i] = 0x1a + } + if len(m.Route) > 0 { + i -= len(m.Route) + copy(dAtA[i:], m.Route) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Route))) + i-- + dAtA[i] = 0x12 + } + if len(m.Fullname) > 0 { + i -= len(m.Fullname) + copy(dAtA[i:], m.Fullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *LegacyMsgDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LegacyMsgDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *LegacyMsgDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TypeUrl) > 0 { + i -= len(m.TypeUrl) + copy(dAtA[i:], m.TypeUrl) + i = encodeVarintReflection(dAtA, i, uint64(len(m.TypeUrl))) + i-- + dAtA[i] = 0x12 + } + if len(m.Fullname) > 0 { + i -= len(m.Fullname) + copy(dAtA[i:], m.Fullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GetAppDescriptorRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetAppDescriptorRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetAppDescriptorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *GetAppDescriptorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetAppDescriptorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetAppDescriptorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.App != nil { + { + size, err := m.App.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryServicesDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryServicesDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryServicesDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.QueryServices) > 0 { + for iNdEx := len(m.QueryServices) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.QueryServices[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryServiceDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryServiceDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryServiceDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Methods) > 0 { + for iNdEx := len(m.Methods) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Methods[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Fullname) > 0 { + i -= len(m.Fullname) + copy(dAtA[i:], m.Fullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryMethodDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryMethodDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryMethodDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.FullQueryPath) > 0 { + i -= len(m.FullQueryPath) + copy(dAtA[i:], m.FullQueryPath) + i = encodeVarintReflection(dAtA, i, uint64(len(m.FullQueryPath))) + i-- + dAtA[i] = 0x12 + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ListAllInterfacesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListAllInterfacesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListAllInterfacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *ListAllInterfacesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListAllInterfacesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListAllInterfacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.InterfaceNames) > 0 { + for iNdEx := len(m.InterfaceNames) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.InterfaceNames[iNdEx]) + copy(dAtA[i:], m.InterfaceNames[iNdEx]) + i = encodeVarintReflection(dAtA, i, uint64(len(m.InterfaceNames[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *ListImplementationsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListImplementationsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListImplementationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.InterfaceName) > 0 { + i -= len(m.InterfaceName) + copy(dAtA[i:], m.InterfaceName) + i = encodeVarintReflection(dAtA, i, uint64(len(m.InterfaceName))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ListImplementationsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListImplementationsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListImplementationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ImplementationMessageNames) > 0 { + for iNdEx := len(m.ImplementationMessageNames) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ImplementationMessageNames[iNdEx]) + copy(dAtA[i:], m.ImplementationMessageNames[iNdEx]) + i = encodeVarintReflection(dAtA, i, uint64(len(m.ImplementationMessageNames[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintReflection(dAtA []byte, offset int, v uint64) int { + offset -= sovReflection(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *AppDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Chain != nil { + l = m.Chain.Size() + n += 1 + l + sovReflection(uint64(l)) + } + if m.Codec != nil { + l = m.Codec.Size() + n += 1 + l + sovReflection(uint64(l)) + } + if m.Configuration != nil { + l = m.Configuration.Size() + n += 1 + l + sovReflection(uint64(l)) + } + if m.QueryServices != nil { + l = m.QueryServices.Size() + n += 1 + l + sovReflection(uint64(l)) + } + if m.Tx != nil { + l = m.Tx.Size() + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *TxDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Fullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + if m.AuthConfig != nil { + l = m.AuthConfig.Size() + n += 1 + l + sovReflection(uint64(l)) + } + if len(m.Msgs) > 0 { + for _, e := range m.Msgs { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *AuthConfigDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.SigningModes) > 0 { + for _, e := range m.SigningModes { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *SigningModeDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *ChainDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *CodecDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Interfaces) > 0 { + for _, e := range m.Interfaces { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *InterfaceDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Fullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + if len(m.InterfaceAcceptingTypes) > 0 { + for _, e := range m.InterfaceAcceptingTypes { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + if len(m.InterfaceImplementers) > 0 { + for _, e := range m.InterfaceImplementers { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *InterfaceImplementerDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Fullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.TypeUrl) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *InterfaceAcceptingTypeDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Fullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + if len(m.FieldDescriptorNames) > 0 { + for _, s := range m.FieldDescriptorNames { + l = len(s) + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *ConfigurationDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Bech32AccountAddressPrefix) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.Bech32ValidatorAddressPrefix) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.Bech32ConsensusAddressPrefix) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.Bech32AccountPublicKeyPrefix) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.Bech32ValidatorPublicKeyPrefix) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.Bech32ConsensusPublicKeyPrefix) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + if m.Purpose != 0 { + n += 1 + sovReflection(uint64(m.Purpose)) + } + if m.CoinType != 0 { + n += 1 + sovReflection(uint64(m.CoinType)) + } + l = len(m.FullFundraiserPath) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.FullBip44Path) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *MsgDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Msg != nil { + n += m.Msg.Size() + } + return n +} + +func (m *MsgDescriptor_ServiceMsg) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ServiceMsg != nil { + l = m.ServiceMsg.Size() + n += 1 + l + sovReflection(uint64(l)) + } + return n +} +func (m *MsgDescriptor_LegacyMsg) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.LegacyMsg != nil { + l = m.LegacyMsg.Size() + n += 1 + l + sovReflection(uint64(l)) + } + return n +} +func (m *ServiceMsgDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Fullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.Route) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.TypeUrl) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *LegacyMsgDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Fullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.TypeUrl) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *GetAppDescriptorRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GetAppDescriptorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.App != nil { + l = m.App.Size() + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *QueryServicesDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.QueryServices) > 0 { + for _, e := range m.QueryServices { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *QueryServiceDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Fullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + if len(m.Methods) > 0 { + for _, e := range m.Methods { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *QueryMethodDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.FullQueryPath) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *ListAllInterfacesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *ListAllInterfacesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.InterfaceNames) > 0 { + for _, s := range m.InterfaceNames { + l = len(s) + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *ListImplementationsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.InterfaceName) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *ListImplementationsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.ImplementationMessageNames) > 0 { + for _, s := range m.ImplementationMessageNames { + l = len(s) + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func sovReflection(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozReflection(x uint64) (n int) { + return sovReflection(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *AppDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AppDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AppDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Chain", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Chain == nil { + m.Chain = &ChainDescriptor{} + } + if err := m.Chain.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Codec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Codec == nil { + m.Codec = &CodecDescriptor{} + } + if err := m.Codec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Configuration", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Configuration == nil { + m.Configuration = &ConfigurationDescriptor{} + } + if err := m.Configuration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QueryServices", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.QueryServices == nil { + m.QueryServices = &QueryServicesDescriptor{} + } + if err := m.QueryServices.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Tx", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Tx == nil { + m.Tx = &TxDescriptor{} + } + if err := m.Tx.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TxDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TxDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TxDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Fullname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuthConfig", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AuthConfig == nil { + m.AuthConfig = &AuthConfigDescriptor{} + } + if err := m.AuthConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Msgs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Msgs = append(m.Msgs, &MsgDescriptor{}) + if err := m.Msgs[len(m.Msgs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AuthConfigDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AuthConfigDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AuthConfigDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SigningModes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SigningModes = append(m.SigningModes, &SigningModeDescriptor{}) + if err := m.SigningModes[len(m.SigningModes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SigningModeDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SigningModeDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SigningModeDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ChainDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ChainDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ChainDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CodecDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CodecDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CodecDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Interfaces", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Interfaces = append(m.Interfaces, &InterfaceDescriptor{}) + if err := m.Interfaces[len(m.Interfaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *InterfaceDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: InterfaceDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InterfaceDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Fullname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InterfaceAcceptingTypes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InterfaceAcceptingTypes = append(m.InterfaceAcceptingTypes, &InterfaceAcceptingTypeDescriptor{}) + if err := m.InterfaceAcceptingTypes[len(m.InterfaceAcceptingTypes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InterfaceImplementers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InterfaceImplementers = append(m.InterfaceImplementers, &InterfaceImplementerDescriptor{}) + if err := m.InterfaceImplementers[len(m.InterfaceImplementers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *InterfaceImplementerDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: InterfaceImplementerDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InterfaceImplementerDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Fullname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TypeUrl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TypeUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *InterfaceAcceptingTypeDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: InterfaceAcceptingTypeDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InterfaceAcceptingTypeDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Fullname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FieldDescriptorNames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FieldDescriptorNames = append(m.FieldDescriptorNames, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigurationDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigurationDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigurationDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bech32AccountAddressPrefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bech32AccountAddressPrefix = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bech32ValidatorAddressPrefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bech32ValidatorAddressPrefix = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bech32ConsensusAddressPrefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bech32ConsensusAddressPrefix = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bech32AccountPublicKeyPrefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bech32AccountPublicKeyPrefix = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bech32ValidatorPublicKeyPrefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bech32ValidatorPublicKeyPrefix = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bech32ConsensusPublicKeyPrefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bech32ConsensusPublicKeyPrefix = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Purpose", wireType) + } + m.Purpose = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Purpose |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CoinType", wireType) + } + m.CoinType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CoinType |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FullFundraiserPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FullFundraiserPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FullBip44Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FullBip44Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceMsg", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &ServiceMsgDescriptor{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Msg = &MsgDescriptor_ServiceMsg{v} + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LegacyMsg", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &LegacyMsgDescriptor{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Msg = &MsgDescriptor_LegacyMsg{v} + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ServiceMsgDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceMsgDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceMsgDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Fullname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Route", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Route = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TypeUrl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TypeUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LegacyMsgDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LegacyMsgDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LegacyMsgDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Fullname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TypeUrl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TypeUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetAppDescriptorRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetAppDescriptorRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetAppDescriptorRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetAppDescriptorResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetAppDescriptorResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetAppDescriptorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field App", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.App == nil { + m.App = &AppDescriptor{} + } + if err := m.App.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryServicesDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryServicesDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryServicesDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QueryServices", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.QueryServices = append(m.QueryServices, &QueryServiceDescriptor{}) + if err := m.QueryServices[len(m.QueryServices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryServiceDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryServiceDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryServiceDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Fullname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Methods", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Methods = append(m.Methods, &QueryMethodDescriptor{}) + if err := m.Methods[len(m.Methods)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryMethodDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryMethodDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryMethodDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FullQueryPath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FullQueryPath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListAllInterfacesRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListAllInterfacesRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListAllInterfacesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListAllInterfacesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListAllInterfacesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListAllInterfacesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InterfaceNames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InterfaceNames = append(m.InterfaceNames, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListImplementationsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListImplementationsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListImplementationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InterfaceName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InterfaceName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListImplementationsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListImplementationsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListImplementationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ImplementationMessageNames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ImplementationMessageNames = append(m.ImplementationMessageNames, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipReflection(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowReflection + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowReflection + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowReflection + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthReflection + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupReflection + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthReflection + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthReflection = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowReflection = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupReflection = fmt.Errorf("proto: unexpected end of group") +) diff --git a/client/grpc/reflection/reflection.pb.gw.go b/server/grpc/cosmosreflection/reflection.pb.gw.go similarity index 77% rename from client/grpc/reflection/reflection.pb.gw.go rename to server/grpc/cosmosreflection/reflection.pb.gw.go index 7bb8a5e12836..6c685402e3e8 100644 --- a/client/grpc/reflection/reflection.pb.gw.go +++ b/server/grpc/cosmosreflection/reflection.pb.gw.go @@ -2,11 +2,11 @@ // source: cosmos/base/reflection/v1beta1/reflection.proto /* -Package reflection is a reverse proxy. +Package cosmosreflection is a reverse proxy. It translates gRPC into RESTful JSON APIs. */ -package reflection +package cosmosreflection import ( "context" @@ -31,6 +31,24 @@ var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage +func request_ReflectionService_GetAppDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, client ReflectionServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetAppDescriptorRequest + var metadata runtime.ServerMetadata + + msg, err := client.GetAppDescriptor(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ReflectionService_GetAppDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, server ReflectionServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetAppDescriptorRequest + var metadata runtime.ServerMetadata + + msg, err := server.GetAppDescriptor(ctx, &protoReq) + return msg, metadata, err + +} + func request_ReflectionService_ListAllInterfaces_0(ctx context.Context, marshaler runtime.Marshaler, client ReflectionServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq ListAllInterfacesRequest var metadata runtime.ServerMetadata @@ -109,6 +127,26 @@ func local_request_ReflectionService_ListImplementations_0(ctx context.Context, // Note that using this registration option will cause many gRPC library features (such as grpc.SendHeader, etc) to stop working. Consider using RegisterReflectionServiceHandlerFromEndpoint instead. func RegisterReflectionServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ReflectionServiceServer) error { + mux.Handle("GET", pattern_ReflectionService_GetAppDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ReflectionService_GetAppDescriptor_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_GetAppDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ReflectionService_ListAllInterfaces_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -190,6 +228,26 @@ func RegisterReflectionServiceHandler(ctx context.Context, mux *runtime.ServeMux // "ReflectionServiceClient" to call the correct interceptors. func RegisterReflectionServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ReflectionServiceClient) error { + mux.Handle("GET", pattern_ReflectionService_GetAppDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ReflectionService_GetAppDescriptor_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_GetAppDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_ReflectionService_ListAllInterfaces_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -234,12 +292,16 @@ func RegisterReflectionServiceHandlerClient(ctx context.Context, mux *runtime.Se } var ( + pattern_ReflectionService_GetAppDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_ReflectionService_ListAllInterfaces_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "reflection", "v1beta1", "interfaces"}, "", runtime.AssumeColonVerbOpt(false))) pattern_ReflectionService_ListImplementations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"cosmos", "base", "reflection", "v1beta1", "interfaces", "interface_name", "implementations"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( + forward_ReflectionService_GetAppDescriptor_0 = runtime.ForwardResponseMessage + forward_ReflectionService_ListAllInterfaces_0 = runtime.ForwardResponseMessage forward_ReflectionService_ListImplementations_0 = runtime.ForwardResponseMessage diff --git a/server/grpc/server.go b/server/grpc/server.go index 1d001e235c3e..5f1edae252c9 100644 --- a/server/grpc/server.go +++ b/server/grpc/server.go @@ -2,6 +2,8 @@ package grpc import ( "fmt" + "github.com/cosmos/cosmos-sdk/server/grpc/cosmosreflection" + sdk "github.com/cosmos/cosmos-sdk/types" "net" "time" @@ -16,11 +18,26 @@ import ( func StartGRPCServer(clientCtx client.Context, app types.Application, address string) (*grpc.Server, error) { grpcSrv := grpc.NewServer() app.RegisterGRPCServer(clientCtx, grpcSrv) - + // cosmosreflection allows consumers to build dynamic clients that can write + // to any cosmos-sdk application without relying on application packages at compile time + err := cosmosreflection.Register(grpcSrv, cosmosreflection.Config{ + SigningModes: func() []string { + modes := make([]string, len(clientCtx.TxConfig.SignModeHandler().Modes())) + for i, m := range clientCtx.TxConfig.SignModeHandler().Modes() { + modes[i] = m.String() + } + return modes + }(), + ChainID: clientCtx.ChainID, + SdkConfig: sdk.GetConfig(), + InterfaceRegistry: clientCtx.InterfaceRegistry, + }) + if err != nil { + return nil, err + } // Reflection allows external clients to see what services and methods // the gRPC server exposes. gogoreflection.Register(grpcSrv) - listener, err := net.Listen("tcp", address) if err != nil { return nil, err diff --git a/x/bank/types/genesis.pb.go b/x/bank/types/genesis.pb.go index f1d124bdd4e6..4e4724f34a7d 100644 --- a/x/bank/types/genesis.pb.go +++ b/x/bank/types/genesis.pb.go @@ -31,7 +31,8 @@ type GenesisState struct { Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` // balances is an array containing the balances of all the accounts. Balances []Balance `protobuf:"bytes,2,rep,name=balances,proto3" json:"balances"` - // supply represents the total supply. + // supply represents the total supply. If it is left empty, then supply will be calculated based on the provided + // balances. Otherwise, it will be used to validate that the sum of the balances equals this amount. Supply github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,3,rep,name=supply,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"supply"` // denom_metadata defines the metadata of the differents coins. DenomMetadata []Metadata `protobuf:"bytes,4,rep,name=denom_metadata,json=denomMetadata,proto3" json:"denom_metadata" yaml:"denom_metadata"` diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index dfd83e451845..618599edba36 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -1260,16 +1260,16 @@ func (this *Pool) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_ func StakingDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 9808 bytes of a gzipped FileDescriptorSet + // 9834 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x70, 0x5c, 0xd7, 0x75, 0x18, 0xde, 0x7e, 0x00, 0xbb, 0x07, 0x0b, 0x60, 0x71, 0x01, 0x92, 0xcb, 0x25, 0x09, 0x40, - 0x4f, 0x5f, 0x14, 0x25, 0x81, 0x12, 0x25, 0x52, 0xd2, 0xd2, 0xb6, 0xbc, 0x8b, 0x5d, 0x82, 0x10, + 0x4f, 0x5f, 0x14, 0x25, 0x81, 0x12, 0x25, 0x52, 0xd2, 0x32, 0xb6, 0xbc, 0x8b, 0x5d, 0x82, 0x10, 0xf1, 0xa5, 0x07, 0x80, 0x92, 0x65, 0xa7, 0x3b, 0x0f, 0xbb, 0x17, 0x8b, 0x27, 0xec, 0xbe, 0xf7, - 0xf4, 0xde, 0x5b, 0x12, 0xa0, 0xed, 0x8e, 0x62, 0xbb, 0xae, 0xcd, 0x4c, 0x1a, 0xbb, 0xee, 0x34, - 0xb6, 0x6c, 0xba, 0x76, 0x9c, 0xd6, 0xa9, 0xe3, 0x36, 0x71, 0xec, 0xba, 0x4d, 0xdb, 0x99, 0xda, - 0x9d, 0xa6, 0xb1, 0xdd, 0x26, 0x63, 0xb7, 0x99, 0x36, 0xcd, 0xb4, 0x74, 0x2a, 0x7b, 0x52, 0xd5, - 0x75, 0x1b, 0x87, 0x71, 0xda, 0x74, 0x3c, 0x9d, 0x76, 0xee, 0xd7, 0xfb, 0xda, 0x4f, 0x40, 0xa4, - 0xe5, 0x34, 0xf9, 0x85, 0xbd, 0xe7, 0x9e, 0x73, 0xee, 0x39, 0xe7, 0x9e, 0x7b, 0xee, 0xb9, 0x5f, + 0xf4, 0xde, 0x5b, 0x12, 0xa0, 0xed, 0x8e, 0xfc, 0x51, 0xd7, 0x66, 0x26, 0x8d, 0x5d, 0x77, 0x1a, + 0x5b, 0x36, 0x5d, 0x39, 0x4e, 0xeb, 0xd4, 0x71, 0x1b, 0x3b, 0x76, 0xdd, 0xa6, 0xed, 0x4c, 0xed, + 0xce, 0xa4, 0xb1, 0xdd, 0x26, 0x63, 0xb7, 0x99, 0x36, 0xcd, 0xa4, 0x74, 0x2a, 0x7b, 0x52, 0xd5, + 0x75, 0x1b, 0x87, 0x71, 0xdb, 0x74, 0x3c, 0x9d, 0x76, 0xee, 0xd7, 0xfb, 0xda, 0x4f, 0x40, 0xa4, + 0xed, 0x34, 0xfd, 0x85, 0xbd, 0xe7, 0x9e, 0x73, 0xee, 0x39, 0xe7, 0x9e, 0x7b, 0xee, 0xb9, 0x5f, 0x0f, 0xf0, 0x85, 0xf3, 0x30, 0x53, 0x33, 0x8c, 0x5a, 0x1d, 0x9f, 0x36, 0x2d, 0xc3, 0x31, 0x36, 0x9b, 0x5b, 0xa7, 0xab, 0xd8, 0xae, 0x58, 0x9a, 0xe9, 0x18, 0xd6, 0x2c, 0x85, 0xa1, 0x31, 0x86, 0x31, 0x2b, 0x30, 0xe4, 0x25, 0x18, 0xbf, 0xa0, 0xd5, 0x71, 0xd1, 0x45, 0x5c, 0xc3, 0x0e, 0x7a, @@ -1290,7 +1290,7 @@ func StakingDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descri 0x81, 0x8c, 0x16, 0x20, 0x6d, 0x1b, 0x4d, 0xab, 0x82, 0xcb, 0x15, 0xa3, 0x8a, 0xcb, 0x9a, 0xbe, 0x65, 0x64, 0x92, 0x94, 0xc1, 0x74, 0xab, 0x22, 0x14, 0x71, 0xce, 0xa8, 0xe2, 0x05, 0x7d, 0xcb, 0x50, 0x46, 0xed, 0x40, 0x19, 0x1d, 0x86, 0x41, 0x7b, 0x4f, 0x77, 0xd4, 0xdd, 0x4c, 0x8a, 0x7a, - 0x08, 0x2f, 0xc9, 0xbf, 0x3e, 0x08, 0x63, 0xfd, 0xb8, 0xd8, 0x79, 0x88, 0x6f, 0x11, 0x2d, 0x33, + 0x08, 0x2f, 0xc9, 0xbf, 0x31, 0x08, 0x63, 0xfd, 0xb8, 0xd8, 0x79, 0x88, 0x6f, 0x11, 0x2d, 0x33, 0x91, 0xfd, 0xd8, 0x80, 0xd1, 0x04, 0x8d, 0x38, 0x78, 0x40, 0x23, 0xe6, 0x61, 0x58, 0xc7, 0xb6, 0x83, 0xab, 0xcc, 0x23, 0xa2, 0x7d, 0xfa, 0x14, 0x30, 0xa2, 0x56, 0x97, 0x8a, 0x1d, 0xc8, 0xa5, 0x9e, 0x87, 0x31, 0x57, 0xa4, 0xb2, 0xa5, 0xea, 0x35, 0xe1, 0x9b, 0xa7, 0x7b, 0x49, 0x32, 0x5b, @@ -1301,14 +1301,14 @@ func StakingDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descri 0x29, 0x36, 0x62, 0xf9, 0x8b, 0xe8, 0x6e, 0x70, 0x01, 0x65, 0xea, 0x56, 0x40, 0xa3, 0x50, 0x4a, 0x00, 0x97, 0xd5, 0x06, 0xce, 0x5e, 0x83, 0xd1, 0xa0, 0x79, 0xd0, 0x24, 0xc4, 0x6d, 0x47, 0xb5, 0x1c, 0xea, 0x85, 0x71, 0x85, 0x15, 0x50, 0x1a, 0xa2, 0x58, 0xaf, 0xd2, 0x28, 0x17, 0x57, 0xc8, - 0x4f, 0xf4, 0x56, 0x4f, 0xe1, 0x28, 0x55, 0xf8, 0xbe, 0xd6, 0x1e, 0x0d, 0x70, 0x0e, 0xeb, 0x9d, - 0x7d, 0x02, 0x46, 0x02, 0x0a, 0xf4, 0xdb, 0xb4, 0xfc, 0x2e, 0x38, 0xd4, 0x96, 0x35, 0x7a, 0x1e, - 0x26, 0x9b, 0xba, 0xa6, 0x3b, 0xd8, 0x32, 0x2d, 0x4c, 0x3c, 0x96, 0x35, 0x95, 0xf9, 0x2f, 0x43, - 0x1d, 0x7c, 0x6e, 0xc3, 0x8f, 0xcd, 0xb8, 0x28, 0x13, 0xcd, 0x56, 0xe0, 0xa9, 0x64, 0xe2, 0xb5, + 0x4f, 0xf4, 0x16, 0x4f, 0xe1, 0x28, 0x55, 0xf8, 0xbe, 0xd6, 0x1e, 0x0d, 0x70, 0x0e, 0xeb, 0x9d, + 0x7d, 0x02, 0x46, 0x02, 0x0a, 0xf4, 0xdb, 0xb4, 0xfc, 0x4e, 0x38, 0xd4, 0x96, 0x35, 0x7a, 0x1e, + 0x26, 0x9b, 0xba, 0xa6, 0x3b, 0xd8, 0x32, 0x2d, 0x4c, 0x3c, 0x96, 0x35, 0x95, 0xf9, 0x4f, 0x43, + 0x1d, 0x7c, 0x6e, 0xc3, 0x8f, 0xcd, 0xb8, 0x28, 0x13, 0xcd, 0x56, 0xe0, 0xa9, 0x64, 0xe2, 0xf5, 0xa1, 0xf4, 0xcb, 0x2f, 0xbf, 0xfc, 0x72, 0x44, 0xfe, 0xea, 0x20, 0x4c, 0xb6, 0x1b, 0x33, 0x6d, 0x87, 0xef, 0x61, 0x18, 0xd4, 0x9b, 0x8d, 0x4d, 0x6c, 0x51, 0x23, 0xc5, 0x15, 0x5e, 0x42, 0x79, 0x88, 0xd7, 0xd5, 0x4d, 0x5c, 0xcf, 0xc4, 0x66, 0xa4, 0x93, 0xa3, 0x67, 0x1e, 0xec, 0x6b, 0x54, - 0xce, 0x2e, 0x12, 0x12, 0x85, 0x51, 0xa2, 0xb7, 0x40, 0x8c, 0x87, 0x68, 0xc2, 0xe1, 0x54, 0x7f, + 0xce, 0x2e, 0x12, 0x12, 0x85, 0x51, 0xa2, 0x37, 0x43, 0x8c, 0x87, 0x68, 0xc2, 0xe1, 0x54, 0x7f, 0x1c, 0xc8, 0x58, 0x52, 0x28, 0x1d, 0x3a, 0x06, 0x49, 0xf2, 0x97, 0xf9, 0xc6, 0x20, 0x95, 0x39, 0x41, 0x00, 0xc4, 0x2f, 0x50, 0x16, 0x12, 0x74, 0x98, 0x54, 0xb1, 0x98, 0xda, 0xdc, 0x32, 0x71, 0xac, 0x2a, 0xde, 0x52, 0x9b, 0x75, 0xa7, 0x7c, 0x45, 0xad, 0x37, 0x31, 0x75, 0xf8, 0xa4, 0x92, @@ -1316,14 +1316,14 @@ func StakingDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descri 0xe3, 0x0a, 0x1b, 0x68, 0x0b, 0x04, 0x42, 0x9a, 0x7f, 0xd1, 0x36, 0x74, 0xe1, 0x9a, 0xb4, 0x09, 0x02, 0xa0, 0xcd, 0x3f, 0x11, 0x0e, 0xdc, 0x27, 0xda, 0xab, 0xd7, 0x32, 0x96, 0xee, 0x87, 0x31, 0x8a, 0xf1, 0x18, 0xef, 0x7a, 0xb5, 0x9e, 0x19, 0x9f, 0x91, 0x4e, 0x26, 0x94, 0x51, 0x06, 0x5e, - 0xe1, 0x50, 0xf9, 0xcb, 0x11, 0x88, 0xd1, 0xc0, 0x32, 0x06, 0xc3, 0xeb, 0x6f, 0x5b, 0x2d, 0x95, + 0xe1, 0x50, 0xf9, 0xcb, 0x11, 0x88, 0xd1, 0xc0, 0x32, 0x06, 0xc3, 0xeb, 0x6f, 0x5d, 0x2d, 0x95, 0x8b, 0x2b, 0x1b, 0x85, 0xc5, 0x52, 0x5a, 0x42, 0xa3, 0x00, 0x14, 0x70, 0x61, 0x71, 0x25, 0xbf, 0x9e, 0x8e, 0xb8, 0xe5, 0x85, 0xe5, 0xf5, 0x73, 0x8f, 0xa7, 0xa3, 0x2e, 0xc1, 0x06, 0x03, 0xc4, 0xfc, 0x08, 0x8f, 0x9d, 0x49, 0xc7, 0x51, 0x1a, 0x52, 0x8c, 0xc1, 0xc2, 0xf3, 0xa5, 0xe2, 0xb9, 0xc7, 0xd3, 0x83, 0x41, 0xc8, 0x63, 0x67, 0xd2, 0x43, 0x68, 0x04, 0x92, 0x14, 0x52, 0x58, 0x59, 0x59, 0x4c, 0x27, 0x5c, 0x9e, 0x6b, 0xeb, 0xca, 0xc2, 0xf2, 0x7c, 0x3a, 0xe9, 0xf2, 0x9c, 0x57, 0x56, 0x36, 0x56, 0xd3, 0xe0, 0x72, 0x58, 0x2a, 0xad, 0xad, 0xe5, 0xe7, 0x4b, 0xe9, 0x61, 0x17, - 0xa3, 0xf0, 0xb6, 0xf5, 0xd2, 0x5a, 0x3a, 0x15, 0x10, 0xeb, 0xb1, 0x33, 0xe9, 0x11, 0xb7, 0x89, + 0xa3, 0xf0, 0xd6, 0xf5, 0xd2, 0x5a, 0x3a, 0x15, 0x10, 0xeb, 0xb1, 0x33, 0xe9, 0x11, 0xb7, 0x89, 0xd2, 0xf2, 0xc6, 0x52, 0x7a, 0x14, 0x8d, 0xc3, 0x08, 0x6b, 0x42, 0x08, 0x31, 0x16, 0x02, 0x9d, 0x7b, 0x3c, 0x9d, 0xf6, 0x04, 0x61, 0x5c, 0xc6, 0x03, 0x80, 0x73, 0x8f, 0xa7, 0x91, 0x3c, 0x07, 0x71, 0xea, 0x86, 0x08, 0xc1, 0xe8, 0x62, 0xbe, 0x50, 0x5a, 0x2c, 0xaf, 0xac, 0xae, 0x2f, 0xac, @@ -1332,10 +1332,10 @@ func StakingDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descri 0x84, 0x7c, 0xbe, 0x10, 0xe9, 0xe0, 0x0b, 0x94, 0x57, 0xd8, 0x17, 0xe4, 0xef, 0x44, 0x60, 0xa2, 0xcd, 0xa4, 0xd2, 0xb6, 0x91, 0xa7, 0x21, 0xce, 0x7c, 0x99, 0x4d, 0xb3, 0x0f, 0xb4, 0x9d, 0x9d, 0xa8, 0x67, 0xb7, 0x4c, 0xb5, 0x94, 0xce, 0x9f, 0x6a, 0x44, 0x3b, 0xa4, 0x1a, 0x84, 0x45, 0x8b, - 0xc3, 0xfe, 0x54, 0x4b, 0xf0, 0x67, 0xf3, 0xe3, 0xb9, 0x7e, 0xe6, 0x47, 0x0a, 0xdb, 0xdf, 0x24, + 0xc3, 0xfe, 0x6c, 0x4b, 0xf0, 0x67, 0xf3, 0xe3, 0xb9, 0x7e, 0xe6, 0x47, 0x0a, 0xdb, 0xdf, 0x24, 0x10, 0x6f, 0x33, 0x09, 0x9c, 0x87, 0xf1, 0x16, 0x46, 0x7d, 0x07, 0xe3, 0xf7, 0x4a, 0x90, 0xe9, 0x64, 0x9c, 0x1e, 0x21, 0x31, 0x12, 0x08, 0x89, 0xe7, 0xc3, 0x16, 0xbc, 0xab, 0x73, 0x27, 0xb4, - 0xf4, 0xf5, 0x67, 0x25, 0x38, 0xdc, 0x3e, 0xa5, 0x6c, 0x2b, 0xc3, 0x5b, 0x60, 0xb0, 0x81, 0x9d, + 0xf4, 0xf5, 0x67, 0x24, 0x38, 0xdc, 0x3e, 0xa5, 0x6c, 0x2b, 0xc3, 0x9b, 0x61, 0xb0, 0x81, 0x9d, 0x6d, 0x43, 0xa4, 0x55, 0xf7, 0xb5, 0x99, 0xac, 0x49, 0x75, 0xb8, 0xb3, 0x39, 0x95, 0x7f, 0xb6, 0x8f, 0x76, 0xca, 0x0b, 0x99, 0x34, 0x2d, 0x92, 0x7e, 0x30, 0x02, 0x87, 0xda, 0x32, 0x6f, 0x2b, 0xe8, 0x09, 0x00, 0x4d, 0x37, 0x9b, 0x0e, 0x4b, 0x9d, 0x58, 0x24, 0x4e, 0x52, 0x08, 0x0d, 0x5e, @@ -1374,506 +1374,508 @@ func StakingDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descri 0x09, 0xd7, 0xba, 0x63, 0xc9, 0xb9, 0x9c, 0x83, 0x94, 0xdf, 0xef, 0x51, 0x12, 0x98, 0xe7, 0xa7, 0x25, 0x92, 0x04, 0xcd, 0xad, 0x14, 0x49, 0xfa, 0xf2, 0x42, 0x29, 0x1d, 0x21, 0x69, 0xd4, 0xe2, 0xc2, 0x7a, 0xa9, 0xac, 0x6c, 0x2c, 0xaf, 0x2f, 0x2c, 0x95, 0xd2, 0x51, 0x5f, 0x62, 0xff, 0x4c, - 0x2c, 0x71, 0x5f, 0xfa, 0x7e, 0xf9, 0x5b, 0x11, 0x18, 0x0d, 0xae, 0xd4, 0xd0, 0x9b, 0xe0, 0x88, - 0xd8, 0x56, 0xb1, 0xb1, 0x53, 0xbe, 0xaa, 0x59, 0x74, 0x40, 0x36, 0x54, 0x36, 0x39, 0xba, 0xfe, - 0x33, 0xc9, 0xb1, 0xd6, 0xb0, 0xf3, 0x9c, 0x66, 0x91, 0xe1, 0xd6, 0x50, 0x1d, 0xb4, 0x08, 0xd3, - 0xba, 0x51, 0xb6, 0x1d, 0x55, 0xaf, 0xaa, 0x56, 0xb5, 0xec, 0x6d, 0x68, 0x95, 0xd5, 0x4a, 0x05, - 0xdb, 0xb6, 0xc1, 0x26, 0x42, 0x97, 0xcb, 0x71, 0xdd, 0x58, 0xe3, 0xc8, 0xde, 0x0c, 0x91, 0xe7, - 0xa8, 0x21, 0xf7, 0x8d, 0x76, 0x72, 0xdf, 0x63, 0x90, 0x6c, 0xa8, 0x66, 0x19, 0xeb, 0x8e, 0xb5, - 0x47, 0xf3, 0xf3, 0x84, 0x92, 0x68, 0xa8, 0x66, 0x89, 0x94, 0x7f, 0x2c, 0xcb, 0xa4, 0x67, 0x62, - 0x89, 0x44, 0x3a, 0xf9, 0x4c, 0x2c, 0x91, 0x4c, 0x83, 0xfc, 0x6a, 0x14, 0x52, 0xfe, 0x7c, 0x9d, - 0x2c, 0x7f, 0x2a, 0x74, 0xc6, 0x92, 0x68, 0x4c, 0xbb, 0xbb, 0x6b, 0x76, 0x3f, 0x3b, 0x47, 0xa6, - 0xb2, 0xdc, 0x20, 0x4b, 0x8e, 0x15, 0x46, 0x49, 0xd2, 0x08, 0xe2, 0x6c, 0x98, 0x25, 0x23, 0x09, - 0x85, 0x97, 0xd0, 0x3c, 0x0c, 0xbe, 0x68, 0x53, 0xde, 0x83, 0x94, 0xf7, 0x3d, 0xdd, 0x79, 0x3f, - 0xb3, 0x46, 0x99, 0x27, 0x9f, 0x59, 0x2b, 0x2f, 0xaf, 0x28, 0x4b, 0xf9, 0x45, 0x85, 0x93, 0xa3, - 0xa3, 0x10, 0xab, 0xab, 0xd7, 0xf6, 0x82, 0x93, 0x1e, 0x05, 0xf5, 0xdb, 0x09, 0x47, 0x21, 0x76, - 0x15, 0xab, 0x3b, 0xc1, 0xa9, 0x86, 0x82, 0xee, 0xe0, 0x60, 0x38, 0x0d, 0x71, 0x6a, 0x2f, 0x04, - 0xc0, 0x2d, 0x96, 0x1e, 0x40, 0x09, 0x88, 0xcd, 0xad, 0x28, 0x64, 0x40, 0xa4, 0x21, 0xc5, 0xa0, - 0xe5, 0xd5, 0x85, 0xd2, 0x5c, 0x29, 0x1d, 0x91, 0xcf, 0xc2, 0x20, 0x33, 0x02, 0x19, 0x2c, 0xae, - 0x19, 0xd2, 0x03, 0xbc, 0xc8, 0x79, 0x48, 0xa2, 0x76, 0x63, 0xa9, 0x50, 0x52, 0xd2, 0x91, 0x60, - 0x57, 0xc7, 0xd2, 0x71, 0xd9, 0x86, 0x94, 0x3f, 0x0f, 0xff, 0xf1, 0x2c, 0xc6, 0xbf, 0x22, 0xc1, - 0xb0, 0x2f, 0xaf, 0x26, 0x09, 0x91, 0x5a, 0xaf, 0x1b, 0x57, 0xcb, 0x6a, 0x5d, 0x53, 0x6d, 0xee, - 0x1a, 0x40, 0x41, 0x79, 0x02, 0xe9, 0xb7, 0xeb, 0x7e, 0x4c, 0x43, 0x24, 0x9e, 0x1e, 0x94, 0x3f, - 0x29, 0x41, 0x3a, 0x9c, 0xd8, 0x86, 0xc4, 0x94, 0xde, 0x48, 0x31, 0xe5, 0x4f, 0x48, 0x30, 0x1a, - 0xcc, 0x66, 0x43, 0xe2, 0xdd, 0xf5, 0x86, 0x8a, 0xf7, 0xfb, 0x11, 0x18, 0x09, 0xe4, 0xb0, 0xfd, - 0x4a, 0xf7, 0x12, 0x8c, 0x6b, 0x55, 0xdc, 0x30, 0x0d, 0x07, 0xeb, 0x95, 0xbd, 0x72, 0x1d, 0x5f, - 0xc1, 0xf5, 0x8c, 0x4c, 0x83, 0xc6, 0xe9, 0xee, 0x59, 0xf2, 0xec, 0x82, 0x47, 0xb7, 0x48, 0xc8, - 0x72, 0x13, 0x0b, 0xc5, 0xd2, 0xd2, 0xea, 0xca, 0x7a, 0x69, 0x79, 0xee, 0x6d, 0xe5, 0x8d, 0xe5, - 0x4b, 0xcb, 0x2b, 0xcf, 0x2d, 0x2b, 0x69, 0x2d, 0x84, 0x76, 0x07, 0x87, 0xfd, 0x2a, 0xa4, 0xc3, - 0x42, 0xa1, 0x23, 0xd0, 0x4e, 0xac, 0xf4, 0x00, 0x9a, 0x80, 0xb1, 0xe5, 0x95, 0xf2, 0xda, 0x42, - 0xb1, 0x54, 0x2e, 0x5d, 0xb8, 0x50, 0x9a, 0x5b, 0x5f, 0x63, 0xfb, 0x1e, 0x2e, 0xf6, 0x7a, 0x60, - 0x80, 0xcb, 0xaf, 0x44, 0x61, 0xa2, 0x8d, 0x24, 0x28, 0xcf, 0x57, 0x2c, 0x6c, 0x11, 0xf5, 0x70, - 0x3f, 0xd2, 0xcf, 0x92, 0x9c, 0x61, 0x55, 0xb5, 0x1c, 0xbe, 0xc0, 0x79, 0x00, 0x88, 0x95, 0x74, - 0x47, 0xdb, 0xd2, 0xb0, 0xc5, 0xf7, 0x93, 0xd8, 0x32, 0x66, 0xcc, 0x83, 0xb3, 0x2d, 0xa5, 0x87, - 0x00, 0x99, 0x86, 0xad, 0x39, 0xda, 0x15, 0x5c, 0xd6, 0x74, 0xb1, 0xf9, 0x44, 0x96, 0x35, 0x31, - 0x25, 0x2d, 0x6a, 0x16, 0x74, 0xc7, 0xc5, 0xd6, 0x71, 0x4d, 0x0d, 0x61, 0x93, 0x60, 0x1e, 0x55, - 0xd2, 0xa2, 0xc6, 0xc5, 0xbe, 0x0b, 0x52, 0x55, 0xa3, 0x49, 0x72, 0x3d, 0x86, 0x47, 0xe6, 0x0e, - 0x49, 0x19, 0x66, 0x30, 0x17, 0x85, 0x67, 0xf1, 0xde, 0xae, 0x57, 0x4a, 0x19, 0x66, 0x30, 0x86, - 0x72, 0x3f, 0x8c, 0xa9, 0xb5, 0x9a, 0x45, 0x98, 0x0b, 0x46, 0x6c, 0x5d, 0x32, 0xea, 0x82, 0x29, - 0x62, 0xf6, 0x19, 0x48, 0x08, 0x3b, 0x90, 0xa9, 0x9a, 0x58, 0xa2, 0x6c, 0xb2, 0xc5, 0x76, 0xe4, - 0x64, 0x52, 0x49, 0xe8, 0xa2, 0xf2, 0x2e, 0x48, 0x69, 0x76, 0xd9, 0xdb, 0xc4, 0x8f, 0xcc, 0x44, - 0x4e, 0x26, 0x94, 0x61, 0xcd, 0x76, 0x37, 0x40, 0xe5, 0xcf, 0x46, 0x60, 0x34, 0x78, 0x08, 0x81, - 0x8a, 0x90, 0xa8, 0x1b, 0x15, 0x95, 0xba, 0x16, 0x3b, 0x01, 0x3b, 0xd9, 0xe3, 0xdc, 0x62, 0x76, - 0x91, 0xe3, 0x2b, 0x2e, 0x65, 0xf6, 0xb7, 0x25, 0x48, 0x08, 0x30, 0x3a, 0x0c, 0x31, 0x53, 0x75, - 0xb6, 0x29, 0xbb, 0x78, 0x21, 0x92, 0x96, 0x14, 0x5a, 0x26, 0x70, 0xdb, 0x54, 0x75, 0xea, 0x02, - 0x1c, 0x4e, 0xca, 0xa4, 0x5f, 0xeb, 0x58, 0xad, 0xd2, 0x45, 0x8f, 0xd1, 0x68, 0x60, 0xdd, 0xb1, - 0x45, 0xbf, 0x72, 0xf8, 0x1c, 0x07, 0xa3, 0x07, 0x61, 0xdc, 0xb1, 0x54, 0xad, 0x1e, 0xc0, 0x8d, - 0x51, 0xdc, 0xb4, 0xa8, 0x70, 0x91, 0x73, 0x70, 0x54, 0xf0, 0xad, 0x62, 0x47, 0xad, 0x6c, 0xe3, - 0xaa, 0x47, 0x34, 0x48, 0x37, 0x37, 0x8e, 0x70, 0x84, 0x22, 0xaf, 0x17, 0xb4, 0xf2, 0xb7, 0x24, - 0x18, 0x17, 0xcb, 0xb4, 0xaa, 0x6b, 0xac, 0x25, 0x00, 0x55, 0xd7, 0x0d, 0xc7, 0x6f, 0xae, 0x56, - 0x57, 0x6e, 0xa1, 0x9b, 0xcd, 0xbb, 0x44, 0x8a, 0x8f, 0x41, 0xb6, 0x01, 0xe0, 0xd5, 0x74, 0x34, - 0xdb, 0x34, 0x0c, 0xf3, 0x13, 0x26, 0x7a, 0x4c, 0xc9, 0x16, 0xf6, 0xc0, 0x40, 0x64, 0x3d, 0x87, - 0x26, 0x21, 0xbe, 0x89, 0x6b, 0x9a, 0xce, 0xf7, 0x8d, 0x59, 0x41, 0x6c, 0xbf, 0xc4, 0xdc, 0xed, - 0x97, 0xc2, 0x5f, 0x86, 0x89, 0x8a, 0xd1, 0x08, 0x8b, 0x5b, 0x48, 0x87, 0x36, 0x17, 0xec, 0x8b, - 0xd2, 0x0b, 0x0f, 0x73, 0xa4, 0x9a, 0x51, 0x57, 0xf5, 0xda, 0xac, 0x61, 0xd5, 0xbc, 0x63, 0x56, - 0x92, 0xf1, 0xd8, 0xbe, 0xc3, 0x56, 0x73, 0xf3, 0x4f, 0x25, 0xe9, 0x17, 0x22, 0xd1, 0xf9, 0xd5, - 0xc2, 0xe7, 0x22, 0xd9, 0x79, 0x46, 0xb8, 0x2a, 0x8c, 0xa1, 0xe0, 0xad, 0x3a, 0xae, 0x10, 0x05, - 0xe1, 0x7b, 0x0f, 0xc2, 0x64, 0xcd, 0xa8, 0x19, 0x94, 0xd3, 0x69, 0xf2, 0x8b, 0x9f, 0xd3, 0x26, - 0x5d, 0x68, 0xb6, 0xe7, 0xa1, 0x6e, 0x6e, 0x19, 0x26, 0x38, 0x72, 0x99, 0x1e, 0x14, 0xb1, 0x65, - 0x0c, 0xea, 0xba, 0x87, 0x96, 0xf9, 0xc2, 0x77, 0xe9, 0xf4, 0xad, 0x8c, 0x73, 0x52, 0x52, 0xc7, - 0x56, 0x3a, 0x39, 0x05, 0x0e, 0x05, 0xf8, 0xb1, 0x41, 0x8a, 0xad, 0x1e, 0x1c, 0x7f, 0x83, 0x73, - 0x9c, 0xf0, 0x71, 0x5c, 0xe3, 0xa4, 0xb9, 0x39, 0x18, 0xd9, 0x0f, 0xaf, 0x7f, 0xc9, 0x79, 0xa5, - 0xb0, 0x9f, 0xc9, 0x3c, 0x8c, 0x51, 0x26, 0x95, 0xa6, 0xed, 0x18, 0x0d, 0x1a, 0x01, 0xbb, 0xb3, - 0xf9, 0xcd, 0xef, 0xb2, 0x51, 0x33, 0x4a, 0xc8, 0xe6, 0x5c, 0xaa, 0x5c, 0x0e, 0xe8, 0xd9, 0x58, - 0x15, 0x57, 0xea, 0x3d, 0x38, 0x7c, 0x8d, 0x0b, 0xe2, 0xe2, 0xe7, 0x2e, 0xc3, 0x24, 0xf9, 0x4d, - 0x03, 0x94, 0x5f, 0x92, 0xde, 0x1b, 0x6e, 0x99, 0x6f, 0xbd, 0x97, 0x0d, 0xcc, 0x09, 0x97, 0x81, - 0x4f, 0x26, 0x5f, 0x2f, 0xd6, 0xb0, 0xe3, 0x60, 0xcb, 0x2e, 0xab, 0xf5, 0x76, 0xe2, 0xf9, 0x76, - 0x2c, 0x32, 0x1f, 0xfb, 0x7e, 0xb0, 0x17, 0xe7, 0x19, 0x65, 0xbe, 0x5e, 0xcf, 0x6d, 0xc0, 0x91, - 0x36, 0x5e, 0xd1, 0x07, 0xcf, 0x57, 0x38, 0xcf, 0xc9, 0x16, 0xcf, 0x20, 0x6c, 0x57, 0x41, 0xc0, - 0xdd, 0xbe, 0xec, 0x83, 0xe7, 0xc7, 0x39, 0x4f, 0xc4, 0x69, 0x45, 0x97, 0x12, 0x8e, 0xcf, 0xc0, - 0xf8, 0x15, 0x6c, 0x6d, 0x1a, 0x36, 0xdf, 0x25, 0xea, 0x83, 0xdd, 0x27, 0x38, 0xbb, 0x31, 0x4e, - 0x48, 0xb7, 0x8d, 0x08, 0xaf, 0xa7, 0x20, 0xb1, 0xa5, 0x56, 0x70, 0x1f, 0x2c, 0x6e, 0x70, 0x16, - 0x43, 0x04, 0x9f, 0x90, 0xe6, 0x21, 0x55, 0x33, 0xf8, 0x1c, 0xd5, 0x9b, 0xfc, 0x93, 0x9c, 0x7c, - 0x58, 0xd0, 0x70, 0x16, 0xa6, 0x61, 0x36, 0xeb, 0x64, 0x02, 0xeb, 0xcd, 0xe2, 0x6f, 0x09, 0x16, - 0x82, 0x86, 0xb3, 0xd8, 0x87, 0x59, 0x3f, 0x25, 0x58, 0xd8, 0x3e, 0x7b, 0x3e, 0x0d, 0xc3, 0x86, - 0x5e, 0xdf, 0x33, 0xf4, 0x7e, 0x84, 0xf8, 0x34, 0xe7, 0x00, 0x9c, 0x84, 0x30, 0x38, 0x0f, 0xc9, - 0x7e, 0x3b, 0xe2, 0x6f, 0x7f, 0x5f, 0x0c, 0x0f, 0xd1, 0x03, 0xf3, 0x30, 0x26, 0x02, 0x94, 0x66, - 0xe8, 0x7d, 0xb0, 0xf8, 0x3b, 0x9c, 0xc5, 0xa8, 0x8f, 0x8c, 0xab, 0xe1, 0x60, 0xdb, 0xa9, 0xe1, - 0x7e, 0x98, 0x7c, 0x56, 0xa8, 0xc1, 0x49, 0xb8, 0x29, 0x37, 0xb1, 0x5e, 0xd9, 0xee, 0x8f, 0xc3, - 0x2f, 0x09, 0x53, 0x0a, 0x1a, 0xc2, 0x62, 0x0e, 0x46, 0x1a, 0xaa, 0x65, 0x6f, 0xab, 0xf5, 0xbe, - 0xba, 0xe3, 0xef, 0x72, 0x1e, 0x29, 0x97, 0x88, 0x5b, 0xa4, 0xa9, 0xef, 0x87, 0xcd, 0xe7, 0x84, - 0x45, 0x7c, 0x64, 0x7c, 0xe8, 0xd9, 0x0e, 0xdd, 0x52, 0xdb, 0x0f, 0xb7, 0x5f, 0x16, 0x43, 0x8f, - 0xd1, 0x2e, 0xf9, 0x39, 0x9e, 0x87, 0xa4, 0xad, 0x5d, 0xeb, 0x8b, 0xcd, 0xe7, 0x45, 0x4f, 0x53, - 0x02, 0x42, 0xfc, 0x36, 0x38, 0xda, 0x76, 0x9a, 0xe8, 0x83, 0xd9, 0xdf, 0xe3, 0xcc, 0x0e, 0xb7, - 0x99, 0x2a, 0x78, 0x48, 0xd8, 0x2f, 0xcb, 0xbf, 0x2f, 0x42, 0x02, 0x0e, 0xf1, 0x5a, 0x25, 0xab, - 0x06, 0x5b, 0xdd, 0xda, 0x9f, 0xd5, 0x7e, 0x45, 0x58, 0x8d, 0xd1, 0x06, 0xac, 0xb6, 0x0e, 0x87, - 0x39, 0xc7, 0xfd, 0xf5, 0xeb, 0xaf, 0x8a, 0xc0, 0xca, 0xa8, 0x37, 0x82, 0xbd, 0xfb, 0x76, 0xc8, - 0xba, 0xe6, 0x14, 0xe9, 0xa9, 0x5d, 0x6e, 0xa8, 0x66, 0x1f, 0x9c, 0xbf, 0xc0, 0x39, 0x8b, 0x88, - 0xef, 0xe6, 0xb7, 0xf6, 0x92, 0x6a, 0x12, 0xe6, 0xcf, 0x43, 0x46, 0x30, 0x6f, 0xea, 0x16, 0xae, - 0x18, 0x35, 0x5d, 0xbb, 0x86, 0xab, 0x7d, 0xb0, 0xfe, 0xb5, 0x50, 0x57, 0x6d, 0xf8, 0xc8, 0x09, - 0xe7, 0x05, 0x48, 0xbb, 0xb9, 0x4a, 0x59, 0x6b, 0x98, 0x86, 0xe5, 0xf4, 0xe0, 0xf8, 0x45, 0xd1, - 0x53, 0x2e, 0xdd, 0x02, 0x25, 0xcb, 0x95, 0x80, 0x9d, 0x33, 0xf7, 0xeb, 0x92, 0x5f, 0xe2, 0x8c, - 0x46, 0x3c, 0x2a, 0x1e, 0x38, 0x2a, 0x46, 0xc3, 0x54, 0xad, 0x7e, 0xe2, 0xdf, 0x3f, 0x10, 0x81, - 0x83, 0x93, 0xf0, 0xc0, 0x41, 0x32, 0x3a, 0x32, 0xdb, 0xf7, 0xc1, 0xe1, 0xcb, 0x22, 0x70, 0x08, - 0x1a, 0xce, 0x42, 0x24, 0x0c, 0x7d, 0xb0, 0xf8, 0x87, 0x82, 0x85, 0xa0, 0x21, 0x2c, 0x9e, 0xf5, - 0x26, 0x5a, 0x0b, 0xd7, 0x34, 0xdb, 0xb1, 0x58, 0x52, 0xdc, 0x9d, 0xd5, 0x3f, 0xfa, 0x7e, 0x30, - 0x09, 0x53, 0x7c, 0xa4, 0x24, 0x12, 0xf1, 0x4d, 0x56, 0xba, 0x66, 0xea, 0x2d, 0xd8, 0xaf, 0x8b, - 0x48, 0xe4, 0x23, 0x23, 0xb2, 0xf9, 0x32, 0x44, 0x62, 0xf6, 0x0a, 0x59, 0x29, 0xf4, 0xc1, 0xee, - 0x1f, 0x87, 0x84, 0x5b, 0x13, 0xb4, 0x84, 0xa7, 0x2f, 0xff, 0x69, 0xea, 0x3b, 0x78, 0xaf, 0x2f, - 0xef, 0xfc, 0x27, 0xa1, 0xfc, 0x67, 0x83, 0x51, 0xb2, 0x18, 0x32, 0x16, 0xca, 0xa7, 0x50, 0xaf, - 0x5b, 0x45, 0x99, 0x9f, 0xfe, 0x21, 0xd7, 0x37, 0x98, 0x4e, 0xe5, 0x16, 0x89, 0x93, 0x07, 0x93, + 0x2c, 0x71, 0x5f, 0xfa, 0x7e, 0xf9, 0x5b, 0x11, 0x18, 0x0d, 0xae, 0xd4, 0xd0, 0xcf, 0xc0, 0x11, + 0xb1, 0xad, 0x62, 0x63, 0xa7, 0x7c, 0x55, 0xb3, 0xe8, 0x80, 0x6c, 0xa8, 0x6c, 0x72, 0x74, 0xfd, + 0x67, 0x92, 0x63, 0xad, 0x61, 0xe7, 0x39, 0xcd, 0x22, 0xc3, 0xad, 0xa1, 0x3a, 0x68, 0x11, 0xa6, + 0x75, 0xa3, 0x6c, 0x3b, 0xaa, 0x5e, 0x55, 0xad, 0x6a, 0xd9, 0xdb, 0xd0, 0x2a, 0xab, 0x95, 0x0a, + 0xb6, 0x6d, 0x83, 0x4d, 0x84, 0x2e, 0x97, 0xe3, 0xba, 0xb1, 0xc6, 0x91, 0xbd, 0x19, 0x22, 0xcf, + 0x51, 0x43, 0xee, 0x1b, 0xed, 0xe4, 0xbe, 0xc7, 0x20, 0xd9, 0x50, 0xcd, 0x32, 0xd6, 0x1d, 0x6b, + 0x8f, 0xe6, 0xe7, 0x09, 0x25, 0xd1, 0x50, 0xcd, 0x12, 0x29, 0xff, 0x58, 0x96, 0x49, 0xcf, 0xc4, + 0x12, 0x89, 0x74, 0xf2, 0x99, 0x58, 0x22, 0x99, 0x06, 0xf9, 0xb5, 0x28, 0xa4, 0xfc, 0xf9, 0x3a, + 0x59, 0xfe, 0x54, 0xe8, 0x8c, 0x25, 0xd1, 0x98, 0x76, 0x77, 0xd7, 0xec, 0x7e, 0x76, 0x8e, 0x4c, + 0x65, 0xb9, 0x41, 0x96, 0x1c, 0x2b, 0x8c, 0x92, 0xa4, 0x11, 0xc4, 0xd9, 0x30, 0x4b, 0x46, 0x12, + 0x0a, 0x2f, 0xa1, 0x79, 0x18, 0x7c, 0xd1, 0xa6, 0xbc, 0x07, 0x29, 0xef, 0x7b, 0xba, 0xf3, 0x7e, + 0x66, 0x8d, 0x32, 0x4f, 0x3e, 0xb3, 0x56, 0x5e, 0x5e, 0x51, 0x96, 0xf2, 0x8b, 0x0a, 0x27, 0x47, + 0x47, 0x21, 0x56, 0x57, 0xaf, 0xed, 0x05, 0x27, 0x3d, 0x0a, 0xea, 0xb7, 0x13, 0x8e, 0x42, 0xec, + 0x2a, 0x56, 0x77, 0x82, 0x53, 0x0d, 0x05, 0xdd, 0xc1, 0xc1, 0x70, 0x1a, 0xe2, 0xd4, 0x5e, 0x08, + 0x80, 0x5b, 0x2c, 0x3d, 0x80, 0x12, 0x10, 0x9b, 0x5b, 0x51, 0xc8, 0x80, 0x48, 0x43, 0x8a, 0x41, + 0xcb, 0xab, 0x0b, 0xa5, 0xb9, 0x52, 0x3a, 0x22, 0x9f, 0x85, 0x41, 0x66, 0x04, 0x32, 0x58, 0x5c, + 0x33, 0xa4, 0x07, 0x78, 0x91, 0xf3, 0x90, 0x44, 0xed, 0xc6, 0x52, 0xa1, 0xa4, 0xa4, 0x23, 0xc1, + 0xae, 0x8e, 0xa5, 0xe3, 0xb2, 0x0d, 0x29, 0x7f, 0x1e, 0xfe, 0xe3, 0x59, 0x8c, 0x7f, 0x45, 0x82, + 0x61, 0x5f, 0x5e, 0x4d, 0x12, 0x22, 0xb5, 0x5e, 0x37, 0xae, 0x96, 0xd5, 0xba, 0xa6, 0xda, 0xdc, + 0x35, 0x80, 0x82, 0xf2, 0x04, 0xd2, 0x6f, 0xd7, 0xfd, 0x98, 0x86, 0x48, 0x3c, 0x3d, 0x28, 0x7f, + 0x52, 0x82, 0x74, 0x38, 0xb1, 0x0d, 0x89, 0x29, 0xfd, 0x24, 0xc5, 0x94, 0x3f, 0x21, 0xc1, 0x68, + 0x30, 0x9b, 0x0d, 0x89, 0x77, 0xd7, 0x4f, 0x54, 0xbc, 0x3f, 0x8c, 0xc0, 0x48, 0x20, 0x87, 0xed, + 0x57, 0xba, 0x97, 0x60, 0x5c, 0xab, 0xe2, 0x86, 0x69, 0x38, 0x58, 0xaf, 0xec, 0x95, 0xeb, 0xf8, + 0x0a, 0xae, 0x67, 0x64, 0x1a, 0x34, 0x4e, 0x77, 0xcf, 0x92, 0x67, 0x17, 0x3c, 0xba, 0x45, 0x42, + 0x96, 0x9b, 0x58, 0x28, 0x96, 0x96, 0x56, 0x57, 0xd6, 0x4b, 0xcb, 0x73, 0x6f, 0x2d, 0x6f, 0x2c, + 0x5f, 0x5a, 0x5e, 0x79, 0x6e, 0x59, 0x49, 0x6b, 0x21, 0xb4, 0x3b, 0x38, 0xec, 0x57, 0x21, 0x1d, + 0x16, 0x0a, 0x1d, 0x81, 0x76, 0x62, 0xa5, 0x07, 0xd0, 0x04, 0x8c, 0x2d, 0xaf, 0x94, 0xd7, 0x16, + 0x8a, 0xa5, 0x72, 0xe9, 0xc2, 0x85, 0xd2, 0xdc, 0xfa, 0x1a, 0xdb, 0xf7, 0x70, 0xb1, 0xd7, 0x03, + 0x03, 0x5c, 0x7e, 0x25, 0x0a, 0x13, 0x6d, 0x24, 0x41, 0x79, 0xbe, 0x62, 0x61, 0x8b, 0xa8, 0x87, + 0xfb, 0x91, 0x7e, 0x96, 0xe4, 0x0c, 0xab, 0xaa, 0xe5, 0xf0, 0x05, 0xce, 0x03, 0x40, 0xac, 0xa4, + 0x3b, 0xda, 0x96, 0x86, 0x2d, 0xbe, 0x9f, 0xc4, 0x96, 0x31, 0x63, 0x1e, 0x9c, 0x6d, 0x29, 0x3d, + 0x04, 0xc8, 0x34, 0x6c, 0xcd, 0xd1, 0xae, 0xe0, 0xb2, 0xa6, 0x8b, 0xcd, 0x27, 0xb2, 0xac, 0x89, + 0x29, 0x69, 0x51, 0xb3, 0xa0, 0x3b, 0x2e, 0xb6, 0x8e, 0x6b, 0x6a, 0x08, 0x9b, 0x04, 0xf3, 0xa8, + 0x92, 0x16, 0x35, 0x2e, 0xf6, 0x5d, 0x90, 0xaa, 0x1a, 0x4d, 0x92, 0xeb, 0x31, 0x3c, 0x32, 0x77, + 0x48, 0xca, 0x30, 0x83, 0xb9, 0x28, 0x3c, 0x8b, 0xf7, 0x76, 0xbd, 0x52, 0xca, 0x30, 0x83, 0x31, + 0x94, 0xfb, 0x61, 0x4c, 0xad, 0xd5, 0x2c, 0xc2, 0x5c, 0x30, 0x62, 0xeb, 0x92, 0x51, 0x17, 0x4c, + 0x11, 0xb3, 0xcf, 0x40, 0x42, 0xd8, 0x81, 0x4c, 0xd5, 0xc4, 0x12, 0x65, 0x93, 0x2d, 0xb6, 0x23, + 0x27, 0x93, 0x4a, 0x42, 0x17, 0x95, 0x77, 0x41, 0x4a, 0xb3, 0xcb, 0xde, 0x26, 0x7e, 0x64, 0x26, + 0x72, 0x32, 0xa1, 0x0c, 0x6b, 0xb6, 0xbb, 0x01, 0x2a, 0x7f, 0x26, 0x02, 0xa3, 0xc1, 0x43, 0x08, + 0x54, 0x84, 0x44, 0xdd, 0xa8, 0xa8, 0xd4, 0xb5, 0xd8, 0x09, 0xd8, 0xc9, 0x1e, 0xe7, 0x16, 0xb3, + 0x8b, 0x1c, 0x5f, 0x71, 0x29, 0xb3, 0xbf, 0x23, 0x41, 0x42, 0x80, 0xd1, 0x61, 0x88, 0x99, 0xaa, + 0xb3, 0x4d, 0xd9, 0xc5, 0x0b, 0x91, 0xb4, 0xa4, 0xd0, 0x32, 0x81, 0xdb, 0xa6, 0xaa, 0x53, 0x17, + 0xe0, 0x70, 0x52, 0x26, 0xfd, 0x5a, 0xc7, 0x6a, 0x95, 0x2e, 0x7a, 0x8c, 0x46, 0x03, 0xeb, 0x8e, + 0x2d, 0xfa, 0x95, 0xc3, 0xe7, 0x38, 0x18, 0x3d, 0x08, 0xe3, 0x8e, 0xa5, 0x6a, 0xf5, 0x00, 0x6e, + 0x8c, 0xe2, 0xa6, 0x45, 0x85, 0x8b, 0x9c, 0x83, 0xa3, 0x82, 0x6f, 0x15, 0x3b, 0x6a, 0x65, 0x1b, + 0x57, 0x3d, 0xa2, 0x41, 0xba, 0xb9, 0x71, 0x84, 0x23, 0x14, 0x79, 0xbd, 0xa0, 0x95, 0xbf, 0x25, + 0xc1, 0xb8, 0x58, 0xa6, 0x55, 0x5d, 0x63, 0x2d, 0x01, 0xa8, 0xba, 0x6e, 0x38, 0x7e, 0x73, 0xb5, + 0xba, 0x72, 0x0b, 0xdd, 0x6c, 0xde, 0x25, 0x52, 0x7c, 0x0c, 0xb2, 0x0d, 0x00, 0xaf, 0xa6, 0xa3, + 0xd9, 0xa6, 0x61, 0x98, 0x9f, 0x30, 0xd1, 0x63, 0x4a, 0xb6, 0xb0, 0x07, 0x06, 0x22, 0xeb, 0x39, + 0x34, 0x09, 0xf1, 0x4d, 0x5c, 0xd3, 0x74, 0xbe, 0x6f, 0xcc, 0x0a, 0x62, 0xfb, 0x25, 0xe6, 0x6e, + 0xbf, 0x14, 0xfe, 0x32, 0x4c, 0x54, 0x8c, 0x46, 0x58, 0xdc, 0x42, 0x3a, 0xb4, 0xb9, 0x60, 0x5f, + 0x94, 0x5e, 0x78, 0x98, 0x23, 0xd5, 0x8c, 0xba, 0xaa, 0xd7, 0x66, 0x0d, 0xab, 0xe6, 0x1d, 0xb3, + 0x92, 0x8c, 0xc7, 0xf6, 0x1d, 0xb6, 0x9a, 0x9b, 0x7f, 0x26, 0x49, 0xbf, 0x14, 0x89, 0xce, 0xaf, + 0x16, 0x3e, 0x1b, 0xc9, 0xce, 0x33, 0xc2, 0x55, 0x61, 0x0c, 0x05, 0x6f, 0xd5, 0x71, 0x85, 0x28, + 0x08, 0xdf, 0x7b, 0x10, 0x26, 0x6b, 0x46, 0xcd, 0xa0, 0x9c, 0x4e, 0x93, 0x5f, 0xfc, 0x9c, 0x36, + 0xe9, 0x42, 0xb3, 0x3d, 0x0f, 0x75, 0x73, 0xcb, 0x30, 0xc1, 0x91, 0xcb, 0xf4, 0xa0, 0x88, 0x2d, + 0x63, 0x50, 0xd7, 0x3d, 0xb4, 0xcc, 0x17, 0xbe, 0x4b, 0xa7, 0x6f, 0x65, 0x9c, 0x93, 0x92, 0x3a, + 0xb6, 0xd2, 0xc9, 0x29, 0x70, 0x28, 0xc0, 0x8f, 0x0d, 0x52, 0x6c, 0xf5, 0xe0, 0xf8, 0x9b, 0x9c, + 0xe3, 0x84, 0x8f, 0xe3, 0x1a, 0x27, 0xcd, 0xcd, 0xc1, 0xc8, 0x7e, 0x78, 0xfd, 0x0b, 0xce, 0x2b, + 0x85, 0xfd, 0x4c, 0xe6, 0x61, 0x8c, 0x32, 0xa9, 0x34, 0x6d, 0xc7, 0x68, 0xd0, 0x08, 0xd8, 0x9d, + 0xcd, 0x6f, 0x7d, 0x97, 0x8d, 0x9a, 0x51, 0x42, 0x36, 0xe7, 0x52, 0xe5, 0x72, 0x40, 0xcf, 0xc6, + 0xaa, 0xb8, 0x52, 0xef, 0xc1, 0xe1, 0x6b, 0x5c, 0x10, 0x17, 0x3f, 0x77, 0x19, 0x26, 0xc9, 0x6f, + 0x1a, 0xa0, 0xfc, 0x92, 0xf4, 0xde, 0x70, 0xcb, 0x7c, 0xeb, 0xbd, 0x6c, 0x60, 0x4e, 0xb8, 0x0c, + 0x7c, 0x32, 0xf9, 0x7a, 0xb1, 0x86, 0x1d, 0x07, 0x5b, 0x76, 0x59, 0xad, 0xb7, 0x13, 0xcf, 0xb7, + 0x63, 0x91, 0xf9, 0xd8, 0xf7, 0x83, 0xbd, 0x38, 0xcf, 0x28, 0xf3, 0xf5, 0x7a, 0x6e, 0x03, 0x8e, + 0xb4, 0xf1, 0x8a, 0x3e, 0x78, 0xbe, 0xc2, 0x79, 0x4e, 0xb6, 0x78, 0x06, 0x61, 0xbb, 0x0a, 0x02, + 0xee, 0xf6, 0x65, 0x1f, 0x3c, 0x3f, 0xce, 0x79, 0x22, 0x4e, 0x2b, 0xba, 0x94, 0x70, 0x7c, 0x06, + 0xc6, 0xaf, 0x60, 0x6b, 0xd3, 0xb0, 0xf9, 0x2e, 0x51, 0x1f, 0xec, 0x3e, 0xc1, 0xd9, 0x8d, 0x71, + 0x42, 0xba, 0x6d, 0x44, 0x78, 0x3d, 0x05, 0x89, 0x2d, 0xb5, 0x82, 0xfb, 0x60, 0x71, 0x83, 0xb3, + 0x18, 0x22, 0xf8, 0x84, 0x34, 0x0f, 0xa9, 0x9a, 0xc1, 0xe7, 0xa8, 0xde, 0xe4, 0x9f, 0xe4, 0xe4, + 0xc3, 0x82, 0x86, 0xb3, 0x30, 0x0d, 0xb3, 0x59, 0x27, 0x13, 0x58, 0x6f, 0x16, 0x7f, 0x4b, 0xb0, + 0x10, 0x34, 0x9c, 0xc5, 0x3e, 0xcc, 0xfa, 0xaa, 0x60, 0x61, 0xfb, 0xec, 0xf9, 0x34, 0x0c, 0x1b, + 0x7a, 0x7d, 0xcf, 0xd0, 0xfb, 0x11, 0xe2, 0x53, 0x9c, 0x03, 0x70, 0x12, 0xc2, 0xe0, 0x3c, 0x24, + 0xfb, 0xed, 0x88, 0xbf, 0xfd, 0x7d, 0x31, 0x3c, 0x44, 0x0f, 0xcc, 0xc3, 0x98, 0x08, 0x50, 0x9a, + 0xa1, 0xf7, 0xc1, 0xe2, 0xef, 0x70, 0x16, 0xa3, 0x3e, 0x32, 0xae, 0x86, 0x83, 0x6d, 0xa7, 0x86, + 0xfb, 0x61, 0xf2, 0x19, 0xa1, 0x06, 0x27, 0xe1, 0xa6, 0xdc, 0xc4, 0x7a, 0x65, 0xbb, 0x3f, 0x0e, + 0xbf, 0x22, 0x4c, 0x29, 0x68, 0x08, 0x8b, 0x39, 0x18, 0x69, 0xa8, 0x96, 0xbd, 0xad, 0xd6, 0xfb, + 0xea, 0x8e, 0xbf, 0xcb, 0x79, 0xa4, 0x5c, 0x22, 0x6e, 0x91, 0xa6, 0xbe, 0x1f, 0x36, 0x9f, 0x15, + 0x16, 0xf1, 0x91, 0xf1, 0xa1, 0x67, 0x3b, 0x74, 0x4b, 0x6d, 0x3f, 0xdc, 0x7e, 0x55, 0x0c, 0x3d, + 0x46, 0xbb, 0xe4, 0xe7, 0x78, 0x1e, 0x92, 0xb6, 0x76, 0xad, 0x2f, 0x36, 0x9f, 0x13, 0x3d, 0x4d, + 0x09, 0x08, 0xf1, 0x5b, 0xe1, 0x68, 0xdb, 0x69, 0xa2, 0x0f, 0x66, 0x7f, 0x8f, 0x33, 0x3b, 0xdc, + 0x66, 0xaa, 0xe0, 0x21, 0x61, 0xbf, 0x2c, 0xff, 0xbe, 0x08, 0x09, 0x38, 0xc4, 0x6b, 0x95, 0xac, + 0x1a, 0x6c, 0x75, 0x6b, 0x7f, 0x56, 0xfb, 0x35, 0x61, 0x35, 0x46, 0x1b, 0xb0, 0xda, 0x3a, 0x1c, + 0xe6, 0x1c, 0xf7, 0xd7, 0xaf, 0x9f, 0x17, 0x81, 0x95, 0x51, 0x6f, 0x04, 0x7b, 0xf7, 0x6d, 0x90, + 0x75, 0xcd, 0x29, 0xd2, 0x53, 0xbb, 0xdc, 0x50, 0xcd, 0x3e, 0x38, 0x7f, 0x81, 0x73, 0x16, 0x11, + 0xdf, 0xcd, 0x6f, 0xed, 0x25, 0xd5, 0x24, 0xcc, 0x9f, 0x87, 0x8c, 0x60, 0xde, 0xd4, 0x2d, 0x5c, + 0x31, 0x6a, 0xba, 0x76, 0x0d, 0x57, 0xfb, 0x60, 0xfd, 0xeb, 0xa1, 0xae, 0xda, 0xf0, 0x91, 0x13, + 0xce, 0x0b, 0x90, 0x76, 0x73, 0x95, 0xb2, 0xd6, 0x30, 0x0d, 0xcb, 0xe9, 0xc1, 0xf1, 0x8b, 0xa2, + 0xa7, 0x5c, 0xba, 0x05, 0x4a, 0x96, 0x2b, 0x01, 0x3b, 0x67, 0xee, 0xd7, 0x25, 0xbf, 0xc4, 0x19, + 0x8d, 0x78, 0x54, 0x3c, 0x70, 0x54, 0x8c, 0x86, 0xa9, 0x5a, 0xfd, 0xc4, 0xbf, 0x7f, 0x20, 0x02, + 0x07, 0x27, 0xe1, 0x81, 0x83, 0x64, 0x74, 0x64, 0xb6, 0xef, 0x83, 0xc3, 0x97, 0x45, 0xe0, 0x10, + 0x34, 0x9c, 0x85, 0x48, 0x18, 0xfa, 0x60, 0xf1, 0x0f, 0x05, 0x0b, 0x41, 0x43, 0x58, 0x3c, 0xeb, + 0x4d, 0xb4, 0x16, 0xae, 0x69, 0xb6, 0x63, 0xb1, 0xa4, 0xb8, 0x3b, 0xab, 0x7f, 0xf4, 0xfd, 0x60, + 0x12, 0xa6, 0xf8, 0x48, 0x49, 0x24, 0xe2, 0x9b, 0xac, 0x74, 0xcd, 0xd4, 0x5b, 0xb0, 0xdf, 0x10, + 0x91, 0xc8, 0x47, 0x46, 0x64, 0xf3, 0x65, 0x88, 0xc4, 0xec, 0x15, 0xb2, 0x52, 0xe8, 0x83, 0xdd, + 0x3f, 0x0e, 0x09, 0xb7, 0x26, 0x68, 0x09, 0x4f, 0x5f, 0xfe, 0xd3, 0xd4, 0x77, 0xf0, 0x5e, 0x5f, + 0xde, 0xf9, 0x4f, 0x42, 0xf9, 0xcf, 0x06, 0xa3, 0x64, 0x31, 0x64, 0x2c, 0x94, 0x4f, 0xa1, 0x5e, + 0xb7, 0x8a, 0x32, 0xef, 0xfe, 0x21, 0xd7, 0x37, 0x98, 0x4e, 0xe5, 0x16, 0x89, 0x93, 0x07, 0x93, 0x9e, 0xde, 0xcc, 0xde, 0xfb, 0x43, 0xd7, 0xcf, 0x03, 0x39, 0x4f, 0xee, 0x02, 0x8c, 0x04, 0x12, 0x9e, 0xde, 0xac, 0xde, 0xc7, 0x59, 0xa5, 0xfc, 0xf9, 0x4e, 0xee, 0x2c, 0xc4, 0x48, 0xf2, 0xd2, - 0x9b, 0xfc, 0xaf, 0x70, 0x72, 0x8a, 0x9e, 0x7b, 0x33, 0x24, 0x44, 0xd2, 0xd2, 0x9b, 0xf4, 0xfd, + 0x9b, 0xfc, 0xaf, 0x70, 0x72, 0x8a, 0x9e, 0x7b, 0x13, 0x24, 0x44, 0xd2, 0xd2, 0x9b, 0xf4, 0xfd, 0x9c, 0xd4, 0x25, 0x21, 0xe4, 0x22, 0x61, 0xe9, 0x4d, 0xfe, 0x57, 0x05, 0xb9, 0x20, 0x21, 0xe4, - 0xfd, 0x9b, 0xf0, 0x2b, 0x3f, 0x13, 0xe3, 0x93, 0x8e, 0xb0, 0xdd, 0x79, 0x18, 0xe2, 0x99, 0x4a, - 0x6f, 0xea, 0x0f, 0xf2, 0xc6, 0x05, 0x45, 0xee, 0x09, 0x88, 0xf7, 0x69, 0xf0, 0x9f, 0xe5, 0xa4, + 0xfd, 0x9b, 0xf0, 0x2b, 0x3f, 0x17, 0xe3, 0x93, 0x8e, 0xb0, 0xdd, 0x79, 0x18, 0xe2, 0x99, 0x4a, + 0x6f, 0xea, 0x0f, 0xf2, 0xc6, 0x05, 0x45, 0xee, 0x09, 0x88, 0xf7, 0x69, 0xf0, 0x9f, 0xe7, 0xa4, 0x0c, 0x3f, 0x37, 0x07, 0xc3, 0xbe, 0xec, 0xa4, 0x37, 0xf9, 0x5f, 0xe3, 0xe4, 0x7e, 0x2a, 0x22, - 0x3a, 0xcf, 0x4e, 0x7a, 0x33, 0xf8, 0x39, 0x21, 0x3a, 0xa7, 0x20, 0x66, 0x13, 0x89, 0x49, 0x6f, + 0x3a, 0xcf, 0x4e, 0x7a, 0x33, 0xf8, 0x05, 0x21, 0x3a, 0xa7, 0x20, 0x66, 0x13, 0x89, 0x49, 0x6f, 0xea, 0x0f, 0x09, 0xab, 0x0b, 0x92, 0xdc, 0xd3, 0x90, 0x74, 0x27, 0x9b, 0xde, 0xf4, 0x1f, 0xe6, 0xf4, 0x1e, 0x0d, 0xb1, 0x80, 0x6f, 0xb2, 0xeb, 0xcd, 0xe2, 0xaf, 0x0b, 0x0b, 0xf8, 0xa8, 0xc8, 0x30, 0x0a, 0x27, 0x30, 0xbd, 0x39, 0x7d, 0x44, 0x0c, 0xa3, 0x50, 0xfe, 0x42, 0x7a, 0x93, 0xc6, 0xfc, 0xde, 0x2c, 0xfe, 0x86, 0xe8, 0x4d, 0x8a, 0x4f, 0xc4, 0x08, 0x67, 0x04, 0xbd, 0x79, 0xfc, - 0xbc, 0x10, 0x23, 0x94, 0x10, 0xe4, 0x56, 0x01, 0xb5, 0x66, 0x03, 0xbd, 0xf9, 0x7d, 0x94, 0xf3, + 0xa2, 0x10, 0x23, 0x94, 0x10, 0xe4, 0x56, 0x01, 0xb5, 0x66, 0x03, 0xbd, 0xf9, 0x7d, 0x94, 0xf3, 0x1b, 0x6f, 0x49, 0x06, 0x72, 0xcf, 0xc1, 0xe1, 0xf6, 0x99, 0x40, 0x6f, 0xae, 0x1f, 0xfb, 0x61, 0x68, 0xed, 0xe6, 0x4f, 0x04, 0x72, 0xeb, 0xde, 0x94, 0xe2, 0xcf, 0x02, 0x7a, 0xb3, 0x7d, 0xe5, 0x87, 0xc1, 0xc0, 0xed, 0x4f, 0x02, 0x72, 0x79, 0x00, 0x6f, 0x02, 0xee, 0xcd, 0xeb, 0x13, 0x9c, 0x97, 0x8f, 0x88, 0x0c, 0x0d, 0x3e, 0xff, 0xf6, 0xa6, 0xbf, 0x21, 0x86, 0x06, 0xa7, 0x20, 0x43, 0x43, 0x4c, 0xbd, 0xbd, 0xa9, 0x3f, 0x29, 0x86, 0x86, 0x20, 0x21, 0x9e, 0xed, 0x9b, 0xdd, 0x7a, - 0x73, 0xf8, 0xb4, 0xf0, 0x6c, 0x1f, 0x55, 0x6e, 0x19, 0xc6, 0x5b, 0x26, 0xc4, 0xde, 0xac, 0x7e, - 0x81, 0xb3, 0x4a, 0x87, 0xe7, 0x43, 0xff, 0xe4, 0xc5, 0x27, 0xc3, 0xde, 0xdc, 0x3e, 0x13, 0x9a, + 0x73, 0xf8, 0x94, 0xf0, 0x6c, 0x1f, 0x55, 0x6e, 0x19, 0xc6, 0x5b, 0x26, 0xc4, 0xde, 0xac, 0x7e, + 0x89, 0xb3, 0x4a, 0x87, 0xe7, 0x43, 0xff, 0xe4, 0xc5, 0x27, 0xc3, 0xde, 0xdc, 0x3e, 0x1d, 0x9a, 0xbc, 0xf8, 0x5c, 0x98, 0x3b, 0x0f, 0x09, 0xbd, 0x59, 0xaf, 0x93, 0xc1, 0x83, 0xba, 0xdf, 0x04, - 0xcc, 0xfc, 0xd7, 0x1f, 0x71, 0xeb, 0x08, 0x82, 0xdc, 0x59, 0x88, 0xe3, 0xc6, 0x26, 0xae, 0xf6, + 0xcc, 0xfc, 0xe7, 0x1f, 0x71, 0xeb, 0x08, 0x82, 0xdc, 0x59, 0x88, 0xe3, 0xc6, 0x26, 0xae, 0xf6, 0xa2, 0xfc, 0xde, 0x8f, 0x44, 0xc0, 0x24, 0xd8, 0xb9, 0xa7, 0x01, 0xd8, 0xd6, 0x08, 0x3d, 0x0c, - 0xec, 0x41, 0xfb, 0xdf, 0x7e, 0xc4, 0xaf, 0xde, 0x78, 0x24, 0x1e, 0x03, 0x76, 0x91, 0xa7, 0x3b, + 0xec, 0x41, 0xfb, 0x5f, 0x7e, 0xc4, 0xaf, 0xde, 0x78, 0x24, 0x1e, 0x03, 0x76, 0x91, 0xa7, 0x3b, 0x83, 0xef, 0x07, 0x19, 0xd0, 0x1e, 0x79, 0x0a, 0x86, 0x5e, 0xb4, 0x0d, 0xdd, 0x51, 0x6b, 0xbd, - 0xa8, 0xff, 0x3b, 0xa7, 0x16, 0xf8, 0xc4, 0x60, 0x0d, 0xc3, 0xc2, 0x8e, 0x5a, 0xb3, 0x7b, 0xd1, - 0xfe, 0x0f, 0x4e, 0xeb, 0x12, 0x10, 0xe2, 0x8a, 0x6a, 0x3b, 0xfd, 0xe8, 0xfd, 0x87, 0x82, 0x58, + 0xa8, 0xff, 0x2b, 0xa7, 0x16, 0xf8, 0xc4, 0x60, 0x0d, 0xc3, 0xc2, 0x8e, 0x5a, 0xb3, 0x7b, 0xd1, + 0xfe, 0x37, 0x4e, 0xeb, 0x12, 0x10, 0xe2, 0x8a, 0x6a, 0x3b, 0xfd, 0xe8, 0xfd, 0xc7, 0x82, 0x58, 0x10, 0x10, 0xa1, 0xc9, 0xef, 0x1d, 0xbc, 0xd7, 0x8b, 0xf6, 0x07, 0x42, 0x68, 0x8e, 0x9f, 0x7b, - 0x33, 0x24, 0xc9, 0x4f, 0x76, 0x9f, 0xae, 0x07, 0xf1, 0x1f, 0x71, 0x62, 0x8f, 0x82, 0xb4, 0x6c, + 0x13, 0x24, 0xc9, 0x4f, 0x76, 0x9f, 0xae, 0x07, 0xf1, 0x9f, 0x70, 0x62, 0x8f, 0x82, 0xb4, 0x6c, 0x3b, 0x55, 0x47, 0xeb, 0x6d, 0xec, 0x5b, 0xbc, 0xa7, 0x05, 0x7e, 0x2e, 0x0f, 0xc3, 0xb6, 0x53, - 0xad, 0x36, 0x79, 0x7e, 0xda, 0x83, 0xfc, 0x8f, 0x7f, 0xe4, 0x6e, 0x59, 0xb8, 0x34, 0xa4, 0xb7, + 0xad, 0x36, 0x79, 0x7e, 0xda, 0x83, 0xfc, 0x4f, 0x7f, 0xe4, 0x6e, 0x59, 0xb8, 0x34, 0xa4, 0xb7, 0xaf, 0xee, 0x38, 0xa6, 0x41, 0x0f, 0x3c, 0x7a, 0x71, 0xf8, 0x21, 0xe7, 0xe0, 0x23, 0xc9, 0xcd, - 0x41, 0x8a, 0xe8, 0x62, 0x61, 0x13, 0xd3, 0xd3, 0xa9, 0x1e, 0x2c, 0xfe, 0x84, 0x1b, 0x20, 0x40, - 0x54, 0xf8, 0xa9, 0xaf, 0xbd, 0x3a, 0x25, 0x7d, 0xf3, 0xd5, 0x29, 0xe9, 0xf7, 0x5f, 0x9d, 0x92, - 0x3e, 0xf4, 0x9d, 0xa9, 0x81, 0x6f, 0x7e, 0x67, 0x6a, 0xe0, 0x77, 0xbf, 0x33, 0x35, 0xd0, 0x7e, - 0x97, 0x18, 0xe6, 0x8d, 0x79, 0x83, 0xed, 0x0f, 0xbf, 0x20, 0xd7, 0x34, 0x67, 0xbb, 0xb9, 0x39, - 0x5b, 0x31, 0x1a, 0x74, 0x1b, 0xd7, 0xdb, 0xad, 0x75, 0x17, 0x39, 0xf0, 0x9e, 0x28, 0x1c, 0xad, - 0x18, 0x76, 0xc3, 0xb0, 0xcb, 0x6c, 0xbf, 0x97, 0x15, 0xf8, 0x8e, 0x6f, 0xca, 0x5f, 0xd5, 0xc7, - 0xa6, 0xef, 0x45, 0x18, 0xa5, 0xaa, 0xd3, 0xed, 0x2e, 0xea, 0x6d, 0x3d, 0x03, 0xc4, 0xd7, 0xff, - 0x5d, 0x9c, 0x6a, 0x3d, 0xe2, 0x12, 0xd2, 0xd3, 0xfb, 0x75, 0x98, 0xd4, 0x1a, 0x66, 0x1d, 0xd3, - 0x6d, 0xfe, 0xb2, 0x5b, 0xd7, 0x9b, 0xdf, 0x37, 0x38, 0xbf, 0x09, 0x8f, 0x7c, 0x41, 0x50, 0xe7, - 0x16, 0x61, 0x5c, 0xad, 0x54, 0xb0, 0x19, 0x60, 0xd9, 0xa3, 0x5b, 0x84, 0x80, 0x69, 0x4e, 0xe9, - 0x72, 0x2b, 0x3c, 0xdd, 0xa9, 0x6b, 0x5e, 0xb8, 0xd7, 0x67, 0x79, 0x0b, 0xd7, 0xb0, 0xfe, 0xb0, - 0x8e, 0x9d, 0xab, 0x86, 0xb5, 0xc3, 0xcd, 0xfb, 0x30, 0x6b, 0x6a, 0x90, 0xdd, 0x60, 0x86, 0xf7, - 0x45, 0x61, 0x8a, 0x55, 0x9c, 0xde, 0x54, 0x6d, 0x7c, 0xfa, 0xca, 0xa3, 0x9b, 0xd8, 0x51, 0x1f, - 0x3d, 0x5d, 0x31, 0x34, 0x9d, 0xf7, 0xc4, 0x04, 0xef, 0x17, 0x52, 0x3f, 0xcb, 0xeb, 0xb3, 0x6d, - 0xb7, 0xe9, 0xe5, 0x79, 0x88, 0xcd, 0x19, 0x9a, 0x8e, 0x26, 0x21, 0x5e, 0xc5, 0xba, 0xd1, 0xe0, - 0x77, 0xee, 0x58, 0x01, 0xdd, 0x0d, 0x83, 0x6a, 0xc3, 0x68, 0xea, 0x0e, 0x3b, 0xa1, 0x28, 0x0c, - 0x7f, 0xed, 0xe6, 0xf4, 0xc0, 0xef, 0xdd, 0x9c, 0x8e, 0x2e, 0xe8, 0x8e, 0xc2, 0xab, 0x72, 0xb1, - 0xd7, 0x3e, 0x35, 0x2d, 0xc9, 0xcf, 0xc0, 0x50, 0x11, 0x57, 0x0e, 0xc2, 0xab, 0x88, 0x2b, 0x21, + 0x41, 0x8a, 0xe8, 0x62, 0x61, 0x13, 0xd3, 0xd3, 0xa9, 0x1e, 0x2c, 0xfe, 0x3b, 0x37, 0x40, 0x80, + 0xa8, 0xf0, 0xb3, 0x5f, 0x7b, 0x6d, 0x4a, 0xfa, 0xe6, 0x6b, 0x53, 0xd2, 0x1f, 0xbe, 0x36, 0x25, + 0x7d, 0xe8, 0x3b, 0x53, 0x03, 0xdf, 0xfc, 0xce, 0xd4, 0xc0, 0xef, 0x7d, 0x67, 0x6a, 0xa0, 0xfd, + 0x2e, 0x31, 0xcc, 0x1b, 0xf3, 0x06, 0xdb, 0x1f, 0x7e, 0x41, 0xae, 0x69, 0xce, 0x76, 0x73, 0x73, + 0xb6, 0x62, 0x34, 0xe8, 0x36, 0xae, 0xb7, 0x5b, 0xeb, 0x2e, 0x72, 0xe0, 0x3d, 0x51, 0x38, 0x5a, + 0x31, 0xec, 0x86, 0x61, 0x97, 0xd9, 0x7e, 0x2f, 0x2b, 0xf0, 0x1d, 0xdf, 0x94, 0xbf, 0xaa, 0x8f, + 0x4d, 0xdf, 0x8b, 0x30, 0x4a, 0x55, 0xa7, 0xdb, 0x5d, 0xd4, 0xdb, 0x7a, 0x06, 0x88, 0xaf, 0xff, + 0xdb, 0x38, 0xd5, 0x7a, 0xc4, 0x25, 0xa4, 0xa7, 0xf7, 0xeb, 0x30, 0xa9, 0x35, 0xcc, 0x3a, 0xa6, + 0xdb, 0xfc, 0x65, 0xb7, 0xae, 0x37, 0xbf, 0x6f, 0x70, 0x7e, 0x13, 0x1e, 0xf9, 0x82, 0xa0, 0xce, + 0x2d, 0xc2, 0xb8, 0x5a, 0xa9, 0x60, 0x33, 0xc0, 0xb2, 0x47, 0xb7, 0x08, 0x01, 0xd3, 0x9c, 0xd2, + 0xe5, 0x56, 0x78, 0xba, 0x53, 0xd7, 0xbc, 0x70, 0xaf, 0xcf, 0xf2, 0x16, 0xae, 0x61, 0xfd, 0x61, + 0x1d, 0x3b, 0x57, 0x0d, 0x6b, 0x87, 0x9b, 0xf7, 0x61, 0xd6, 0xd4, 0x20, 0xbb, 0xc1, 0x0c, 0xef, + 0x8b, 0xc2, 0x14, 0xab, 0x38, 0xbd, 0xa9, 0xda, 0xf8, 0xf4, 0x95, 0x47, 0x37, 0xb1, 0xa3, 0x3e, + 0x7a, 0xba, 0x62, 0x68, 0x3a, 0xef, 0x89, 0x09, 0xde, 0x2f, 0xa4, 0x7e, 0x96, 0xd7, 0x67, 0xdb, + 0x6e, 0xd3, 0xcb, 0xf3, 0x10, 0x9b, 0x33, 0x34, 0x1d, 0x4d, 0x42, 0xbc, 0x8a, 0x75, 0xa3, 0xc1, + 0xef, 0xdc, 0xb1, 0x02, 0xba, 0x1b, 0x06, 0xd5, 0x86, 0xd1, 0xd4, 0x1d, 0x76, 0x42, 0x51, 0x18, + 0xfe, 0xda, 0xcd, 0xe9, 0x81, 0xdf, 0xbf, 0x39, 0x1d, 0x5d, 0xd0, 0x1d, 0x85, 0x57, 0xe5, 0x62, + 0xaf, 0xbf, 0x3a, 0x2d, 0xc9, 0xcf, 0xc0, 0x50, 0x11, 0x57, 0x0e, 0xc2, 0xab, 0x88, 0x2b, 0x21, 0x5e, 0x0f, 0x40, 0x62, 0x41, 0x77, 0xd8, 0xad, 0xc8, 0x13, 0x10, 0xd5, 0x74, 0x76, 0xd1, 0x26, 0xd4, 0x3e, 0x81, 0x13, 0xd4, 0x22, 0xae, 0xb8, 0xa8, 0x55, 0x5c, 0x09, 0xa3, 0x12, 0xf6, 0x04, - 0x5e, 0x28, 0xfe, 0xee, 0x7f, 0x9e, 0x1a, 0x78, 0xf9, 0xd5, 0xa9, 0x81, 0x8e, 0x3d, 0xe1, 0x1f, - 0x03, 0xdc, 0xc4, 0xbc, 0x0b, 0xec, 0xea, 0x0e, 0x3b, 0x23, 0x71, 0xbb, 0xe1, 0xb7, 0x06, 0x41, + 0x5e, 0x28, 0xfe, 0xde, 0x7f, 0x9c, 0x1a, 0x78, 0xf9, 0xb5, 0xa9, 0x81, 0x8e, 0x3d, 0xe1, 0x1f, + 0x03, 0xdc, 0xc4, 0xbc, 0x0b, 0xec, 0xea, 0x0e, 0x3b, 0x23, 0x71, 0xbb, 0xe1, 0xb7, 0x07, 0x41, 0xe6, 0x38, 0xb6, 0xa3, 0xee, 0x68, 0x7a, 0xcd, 0xed, 0x09, 0xb5, 0xe9, 0x6c, 0x5f, 0xe3, 0x5d, 0x71, 0x98, 0x77, 0x05, 0xc7, 0xe9, 0xde, 0x1b, 0xd9, 0xce, 0xa3, 0x2b, 0xdb, 0xa3, 0xcf, 0xe5, - 0x7f, 0x1d, 0x05, 0xb4, 0xe6, 0xa8, 0x3b, 0x38, 0xdf, 0x74, 0xb6, 0x0d, 0x4b, 0xbb, 0xc6, 0x62, + 0x7f, 0x15, 0x05, 0xb4, 0xe6, 0xa8, 0x3b, 0x38, 0xdf, 0x74, 0xb6, 0x0d, 0x4b, 0xbb, 0xc6, 0x62, 0x19, 0x06, 0x68, 0xa8, 0xbb, 0x65, 0xc7, 0xd8, 0xc1, 0xba, 0x4d, 0x4d, 0x33, 0x7c, 0xe6, 0xe8, - 0x6c, 0x1b, 0xff, 0x98, 0x25, 0x5d, 0x57, 0x78, 0xf0, 0x73, 0xdf, 0x9e, 0xbe, 0xbf, 0xb7, 0x15, + 0x6c, 0x1b, 0xff, 0x98, 0x25, 0x5d, 0x57, 0x78, 0xf0, 0xb3, 0xdf, 0x9e, 0xbe, 0xbf, 0xb7, 0x15, 0x28, 0x32, 0x49, 0xae, 0x77, 0xd7, 0x29, 0x63, 0x74, 0x19, 0xd8, 0x25, 0x8b, 0x72, 0x5d, 0xb3, 0x1d, 0x7e, 0x4f, 0xfb, 0xec, 0x6c, 0x7b, 0xdd, 0x67, 0x5b, 0xc5, 0x9c, 0xbd, 0xac, 0xd6, 0xb5, 0xaa, 0xea, 0x18, 0x96, 0x7d, 0x71, 0x40, 0x49, 0x52, 0x56, 0x8b, 0x9a, 0xed, 0xa0, 0x75, 0x48, - 0x56, 0xb1, 0xbe, 0xc7, 0xd8, 0x46, 0x5f, 0x1f, 0xdb, 0x04, 0xe1, 0x44, 0xb9, 0x3e, 0x0f, 0x48, + 0x56, 0xb1, 0xbe, 0xc7, 0xd8, 0x46, 0xdf, 0x18, 0xdb, 0x04, 0xe1, 0x44, 0xb9, 0x3e, 0x0f, 0x48, 0xf5, 0xe3, 0x89, 0x87, 0x49, 0xec, 0x7e, 0x65, 0x07, 0xf6, 0x01, 0xce, 0xf4, 0x1d, 0xc5, 0xb8, 0x1a, 0x06, 0x65, 0xef, 0x03, 0xf0, 0xda, 0x44, 0x19, 0x18, 0x52, 0xab, 0x55, 0x0b, 0xdb, 0x36, - 0x3d, 0x00, 0x4c, 0x2a, 0xa2, 0x98, 0x1b, 0xff, 0x37, 0x5f, 0x7a, 0x78, 0x24, 0xc0, 0xb1, 0x90, + 0x3d, 0x00, 0x4c, 0x2a, 0xa2, 0x98, 0x1b, 0xff, 0xd7, 0x5f, 0x7a, 0x78, 0x24, 0xc0, 0xb1, 0x90, 0x02, 0xb8, 0xe2, 0x92, 0x9e, 0xfa, 0xa4, 0x04, 0xe3, 0x2d, 0x2d, 0x22, 0x19, 0xa6, 0xf2, 0x1b, 0xeb, 0x17, 0x57, 0x94, 0x85, 0x17, 0xf2, 0xeb, 0x0b, 0x2b, 0xcb, 0x65, 0x76, 0xe5, 0x7f, 0x79, 0x6d, 0xb5, 0x34, 0xb7, 0x70, 0x61, 0xa1, 0x54, 0x4c, 0x0f, 0xa0, 0x69, 0x38, 0xd6, 0x06, 0xa7, 0x58, 0x5a, 0x2c, 0xcd, 0xe7, 0xd7, 0x4b, 0x69, 0x09, 0xdd, 0x05, 0x27, 0xda, 0x32, 0x71, 0x51, 0x22, 0x1d, 0x50, 0x94, 0x92, 0x8b, 0x12, 0x2d, 0x5c, 0xe8, 0x38, 0x8a, 0x1e, 0xea, 0xea, 0x3f, - 0xbb, 0xee, 0x70, 0x09, 0x8e, 0xa7, 0x3f, 0x91, 0xe0, 0x68, 0x78, 0xca, 0x50, 0xf5, 0xbd, 0x0e, - 0xaf, 0x3e, 0x3b, 0x44, 0xb3, 0x37, 0x41, 0x34, 0xaf, 0xef, 0xa1, 0xa3, 0x2c, 0x9f, 0x2e, 0x37, - 0xad, 0x3a, 0x8f, 0x41, 0x43, 0xa4, 0xbc, 0x61, 0xd5, 0x49, 0x6c, 0x12, 0x17, 0xfd, 0xa5, 0x93, - 0x29, 0x7e, 0x7b, 0x3f, 0x17, 0xfb, 0xc1, 0xa7, 0xa7, 0x07, 0x0a, 0x3b, 0x61, 0x95, 0xbe, 0xd2, - 0x73, 0x06, 0x4d, 0xe4, 0xf5, 0x3d, 0x1a, 0x7c, 0x56, 0xa5, 0x17, 0xe2, 0x54, 0x21, 0x71, 0x68, - 0x3a, 0x15, 0x3e, 0x34, 0x7d, 0x0e, 0xd7, 0xeb, 0x97, 0x74, 0xe3, 0x2a, 0xed, 0x49, 0x4f, 0xef, - 0x8f, 0x44, 0x60, 0xaa, 0x65, 0xaa, 0xe4, 0x59, 0x45, 0xa7, 0x27, 0xaf, 0x39, 0x48, 0x14, 0x45, - 0xb2, 0x92, 0x81, 0x21, 0x1b, 0x57, 0x0c, 0xbd, 0xca, 0x46, 0x77, 0x54, 0x11, 0x45, 0xa2, 0xaa, - 0xae, 0xea, 0x86, 0xcd, 0xef, 0xd9, 0xb3, 0x42, 0xe1, 0xe3, 0xd2, 0xfe, 0x72, 0x84, 0x11, 0xd1, - 0x92, 0x50, 0xf3, 0xd1, 0x9e, 0xc7, 0xc8, 0x3b, 0x44, 0x4b, 0x57, 0x89, 0xc0, 0x51, 0x72, 0xbf, - 0x56, 0xf9, 0xf9, 0x08, 0x4c, 0x87, 0xad, 0x42, 0x52, 0x35, 0xdb, 0x51, 0x1b, 0x66, 0x27, 0xb3, - 0x9c, 0x87, 0xe4, 0xba, 0xc0, 0xd9, 0xb7, 0x5d, 0x6e, 0xec, 0xd3, 0x2e, 0xa3, 0x6e, 0x53, 0xc2, - 0x30, 0x67, 0xfa, 0x34, 0x8c, 0xab, 0xc7, 0x81, 0x2c, 0xf3, 0xb9, 0x18, 0x9c, 0xa0, 0x0f, 0xb1, - 0xac, 0x86, 0xa6, 0x3b, 0xa7, 0x2b, 0xd6, 0x9e, 0xe9, 0xd0, 0x64, 0xcd, 0xd8, 0xe2, 0x76, 0x19, - 0xf7, 0xaa, 0x67, 0x59, 0x75, 0x87, 0xd1, 0xb2, 0x05, 0xf1, 0x55, 0x42, 0x47, 0x2c, 0xe2, 0x18, - 0x8e, 0x5a, 0xe7, 0x96, 0x62, 0x05, 0x02, 0x65, 0x8f, 0xb7, 0x22, 0x0c, 0xaa, 0x89, 0x77, 0x5b, - 0x75, 0xac, 0x6e, 0xb1, 0x3b, 0xf0, 0x51, 0x3a, 0x88, 0x12, 0x04, 0x40, 0xaf, 0xbb, 0x4f, 0x42, - 0x5c, 0x6d, 0xb2, 0xeb, 0x1b, 0x51, 0x32, 0xba, 0x68, 0x41, 0xbe, 0x04, 0x43, 0xfc, 0x10, 0x19, - 0xa5, 0x21, 0xba, 0x83, 0xf7, 0x68, 0x3b, 0x29, 0x85, 0xfc, 0x44, 0xb3, 0x10, 0xa7, 0xc2, 0xf3, - 0x49, 0x23, 0x33, 0xdb, 0x22, 0xfd, 0x2c, 0x15, 0x52, 0x61, 0x68, 0xf2, 0x33, 0x90, 0x28, 0x1a, - 0x0d, 0x4d, 0x37, 0x82, 0xdc, 0x92, 0x8c, 0x1b, 0x95, 0xd9, 0x6c, 0xf2, 0x1c, 0x43, 0x61, 0x05, - 0x74, 0x18, 0x06, 0xd9, 0x9b, 0x08, 0x7e, 0x05, 0x85, 0x97, 0xe4, 0x39, 0x18, 0xa2, 0xbc, 0x57, - 0x4c, 0x84, 0xf8, 0x6b, 0x3a, 0xfe, 0xf8, 0x82, 0xa6, 0xa3, 0x9c, 0x7d, 0xc4, 0x13, 0x16, 0x41, - 0xac, 0xaa, 0x3a, 0x2a, 0xd7, 0x9b, 0xfe, 0x96, 0xdf, 0x02, 0x09, 0xce, 0xc4, 0x46, 0x67, 0x20, - 0x6a, 0x98, 0x36, 0xbf, 0x44, 0x92, 0xed, 0xa4, 0xca, 0x8a, 0x59, 0x88, 0x91, 0xec, 0x44, 0x21, - 0xc8, 0x05, 0xa5, 0x63, 0x20, 0x7d, 0xd2, 0x17, 0x48, 0x7d, 0x5d, 0xee, 0xfb, 0xc9, 0xba, 0xb4, - 0xc5, 0x1d, 0x5c, 0x67, 0xf9, 0x74, 0x04, 0xa6, 0x7c, 0xb5, 0x57, 0xb0, 0x65, 0x6b, 0x86, 0xce, - 0xe7, 0x70, 0xe6, 0x2d, 0xc8, 0x27, 0x24, 0xaf, 0xef, 0xe0, 0x2e, 0x6f, 0x86, 0x68, 0xde, 0x34, - 0x51, 0x16, 0x12, 0xb4, 0x5c, 0x31, 0x98, 0xbf, 0xc4, 0x14, 0xb7, 0x4c, 0xea, 0x6c, 0x63, 0xcb, - 0xb9, 0xaa, 0x5a, 0xee, 0xb3, 0x41, 0x51, 0x96, 0x9f, 0x82, 0xe4, 0x9c, 0xa1, 0xdb, 0x58, 0xb7, - 0x9b, 0x74, 0x0c, 0x6e, 0xd6, 0x8d, 0xca, 0x0e, 0xe7, 0xc0, 0x0a, 0xc4, 0xe0, 0xaa, 0x69, 0x52, - 0xca, 0x98, 0x42, 0x7e, 0xb2, 0x7c, 0xb0, 0xb0, 0xd6, 0xd1, 0x44, 0x4f, 0xed, 0xdf, 0x44, 0x5c, - 0x49, 0xd7, 0x46, 0xff, 0x47, 0x82, 0xe3, 0xad, 0x03, 0x6a, 0x07, 0xef, 0xd9, 0xfb, 0x1d, 0x4f, - 0xcf, 0x43, 0x72, 0x95, 0xbe, 0xdd, 0xbf, 0x84, 0xf7, 0x50, 0x16, 0x86, 0x70, 0xf5, 0xcc, 0xd9, - 0xb3, 0x8f, 0x3e, 0xc5, 0xbc, 0xfd, 0xe2, 0x80, 0x22, 0x00, 0x68, 0x0a, 0x92, 0x36, 0xae, 0x98, - 0x67, 0xce, 0x9e, 0xdb, 0x79, 0x94, 0xb9, 0x17, 0xc9, 0x7a, 0x5c, 0x50, 0x2e, 0x41, 0xb4, 0x7e, - 0xed, 0xd3, 0xd3, 0x52, 0x21, 0x0e, 0x51, 0xbb, 0xd9, 0xb8, 0xa3, 0x3e, 0xf2, 0x4a, 0x1c, 0x66, - 0xfc, 0x94, 0x34, 0x52, 0xb9, 0x99, 0x08, 0xb7, 0x41, 0xda, 0x67, 0x03, 0x8a, 0xd1, 0x21, 0x81, - 0xed, 0x6a, 0x49, 0xf9, 0xd7, 0x24, 0x48, 0xb9, 0xe9, 0xd1, 0x1a, 0x76, 0xd0, 0x79, 0x7f, 0xce, - 0xc3, 0x87, 0xcd, 0xb1, 0xd9, 0x70, 0x5b, 0x5e, 0x1a, 0xa7, 0xf8, 0xd0, 0xd1, 0x13, 0xd4, 0x11, - 0x4d, 0xc3, 0xe6, 0x4f, 0xc9, 0x7a, 0x90, 0xba, 0xc8, 0xe8, 0x21, 0x40, 0x34, 0xc2, 0x95, 0xaf, - 0x18, 0x8e, 0xa6, 0xd7, 0xca, 0xa6, 0x71, 0x95, 0x3f, 0xd0, 0x8d, 0x2a, 0x69, 0x5a, 0x73, 0x99, - 0x56, 0xac, 0x12, 0x38, 0x11, 0x3a, 0xe9, 0x72, 0x09, 0xa6, 0x74, 0x24, 0x08, 0x88, 0x22, 0x3a, - 0x0f, 0x43, 0x66, 0x73, 0xb3, 0x2c, 0x22, 0xc6, 0xf0, 0x99, 0xe3, 0xed, 0xc6, 0xbf, 0xf0, 0x0f, - 0x1e, 0x01, 0x06, 0xcd, 0xe6, 0x26, 0xf1, 0x96, 0xbb, 0x20, 0xd5, 0x46, 0x98, 0xe1, 0x2b, 0x9e, - 0x1c, 0xf4, 0x93, 0x11, 0x5c, 0x83, 0xb2, 0x69, 0x69, 0x86, 0xa5, 0x39, 0x7b, 0x34, 0x67, 0x8d, - 0x2a, 0x69, 0x51, 0xb1, 0xca, 0xe1, 0xf2, 0x0e, 0x8c, 0xad, 0xd1, 0x35, 0xad, 0x27, 0xf9, 0x59, - 0x4f, 0x3e, 0xa9, 0xb7, 0x7c, 0x1d, 0x25, 0x8b, 0xb4, 0x48, 0x56, 0x78, 0xb6, 0xa3, 0x77, 0x3e, - 0xb1, 0x7f, 0xef, 0x0c, 0x66, 0x85, 0x7f, 0x78, 0x34, 0x30, 0x38, 0x99, 0x73, 0xfa, 0xc3, 0x57, - 0xbf, 0x8e, 0xd9, 0x2b, 0x9b, 0xc8, 0x76, 0x9f, 0x54, 0xb3, 0x3d, 0xc2, 0x68, 0xb6, 0xe7, 0x10, - 0x92, 0x9f, 0x82, 0x91, 0x55, 0xd5, 0x72, 0xd6, 0xb0, 0x73, 0x11, 0xab, 0x55, 0x6c, 0x05, 0x67, - 0xdd, 0x11, 0x31, 0xeb, 0x22, 0x88, 0xd1, 0xa9, 0x95, 0xcd, 0x3a, 0xf4, 0xb7, 0xbc, 0x0d, 0x31, - 0x7a, 0x1b, 0xd4, 0x9d, 0x91, 0x39, 0x05, 0x9b, 0x91, 0x49, 0x2c, 0xdd, 0x73, 0xb0, 0x2d, 0x52, - 0x5a, 0x5a, 0x40, 0x8f, 0x8b, 0x79, 0x35, 0xda, 0x7d, 0x5e, 0xe5, 0x8e, 0xc8, 0x67, 0xd7, 0x3a, - 0x0c, 0x15, 0x48, 0x28, 0x5e, 0x28, 0xba, 0x82, 0x48, 0x9e, 0x20, 0x68, 0x09, 0xc6, 0x4c, 0xd5, - 0x72, 0xe8, 0x33, 0x98, 0x6d, 0xaa, 0x05, 0xf7, 0xf5, 0xe9, 0xd6, 0x91, 0x17, 0x50, 0x96, 0xb7, - 0x32, 0x62, 0xfa, 0x81, 0xf2, 0x1f, 0xc4, 0x60, 0x90, 0x1b, 0xe3, 0xcd, 0x30, 0xc4, 0xcd, 0xca, - 0xbd, 0xf3, 0xc4, 0x6c, 0xeb, 0xc4, 0x34, 0xeb, 0x4e, 0x20, 0x9c, 0x9f, 0xa0, 0x41, 0xf7, 0x41, - 0xa2, 0xb2, 0xad, 0x6a, 0x7a, 0x59, 0xab, 0x8a, 0xed, 0x85, 0x57, 0x6f, 0x4e, 0x0f, 0xcd, 0x11, - 0xd8, 0x42, 0x51, 0x19, 0xa2, 0x95, 0x0b, 0x55, 0x92, 0x09, 0x6c, 0x63, 0xad, 0xb6, 0xed, 0xf0, - 0x11, 0xc6, 0x4b, 0xe8, 0x49, 0x88, 0x11, 0x87, 0xe0, 0x8f, 0x24, 0xb3, 0x2d, 0x9b, 0x3c, 0x6e, - 0xb2, 0x57, 0x48, 0x90, 0x86, 0x3f, 0xf4, 0xed, 0x69, 0x49, 0xa1, 0x14, 0x68, 0x0e, 0x46, 0xea, - 0xaa, 0xed, 0x94, 0xe9, 0x0c, 0x46, 0x9a, 0x8f, 0xf3, 0x35, 0x76, 0x8b, 0x41, 0xb8, 0x61, 0xb9, - 0xe8, 0xc3, 0x84, 0x8a, 0x81, 0xaa, 0xe8, 0x24, 0xa4, 0x29, 0x93, 0x8a, 0xd1, 0x68, 0x68, 0x0e, - 0xcb, 0xad, 0x06, 0xa9, 0xdd, 0x47, 0x09, 0x7c, 0x8e, 0x82, 0x69, 0x86, 0x75, 0x0c, 0x92, 0xf4, - 0x59, 0x16, 0x45, 0x61, 0x57, 0x90, 0x13, 0x04, 0x40, 0x2b, 0xef, 0x87, 0x31, 0x2f, 0x3e, 0x32, - 0x94, 0x04, 0xe3, 0xe2, 0x81, 0x29, 0xe2, 0x23, 0x30, 0xa9, 0xe3, 0x5d, 0x7a, 0x29, 0x3a, 0x80, - 0x9d, 0xa4, 0xd8, 0x88, 0xd4, 0x5d, 0x0e, 0x52, 0xdc, 0x0b, 0xa3, 0x15, 0x61, 0x7c, 0x86, 0x0b, - 0x14, 0x77, 0xc4, 0x85, 0x52, 0xb4, 0xa3, 0x90, 0x50, 0x4d, 0x93, 0x21, 0x0c, 0xf3, 0xf8, 0x68, - 0x9a, 0xb4, 0xea, 0x14, 0x8c, 0x53, 0x1d, 0x2d, 0x6c, 0x37, 0xeb, 0x0e, 0x67, 0x92, 0xa2, 0x38, - 0x63, 0xa4, 0x42, 0x61, 0x70, 0x8a, 0x7b, 0x37, 0x8c, 0xe0, 0x2b, 0x5a, 0x15, 0xeb, 0x15, 0xcc, - 0xf0, 0x46, 0x28, 0x5e, 0x4a, 0x00, 0x29, 0xd2, 0x03, 0xe0, 0xc6, 0xbd, 0xb2, 0x88, 0xc9, 0xa3, - 0x8c, 0x9f, 0x80, 0xe7, 0x19, 0x58, 0xce, 0x40, 0xac, 0xa8, 0x3a, 0x2a, 0x49, 0x30, 0x9c, 0x5d, - 0x36, 0xd1, 0xa4, 0x14, 0xf2, 0x53, 0x7e, 0x2d, 0x02, 0xb1, 0xcb, 0x86, 0x83, 0xd1, 0x63, 0xbe, - 0x04, 0x70, 0xb4, 0x9d, 0x3f, 0xaf, 0x69, 0x35, 0x1d, 0x57, 0x97, 0xec, 0x9a, 0xef, 0x1b, 0x0a, - 0x9e, 0x3b, 0x45, 0x02, 0xee, 0x34, 0x09, 0x71, 0xcb, 0x68, 0xea, 0x55, 0x71, 0x7b, 0x97, 0x16, - 0x50, 0x09, 0x12, 0xae, 0x97, 0xc4, 0x7a, 0x79, 0xc9, 0x18, 0xf1, 0x12, 0xe2, 0xc3, 0x1c, 0xa0, - 0x0c, 0x6d, 0x72, 0x67, 0x29, 0x40, 0xd2, 0x0d, 0x5e, 0xdc, 0xdb, 0xfa, 0x73, 0x58, 0x8f, 0x8c, - 0x4c, 0x26, 0x6e, 0xdf, 0xbb, 0xc6, 0x63, 0x1e, 0x97, 0x76, 0x2b, 0xb8, 0xf5, 0x02, 0x6e, 0xc5, - 0xbf, 0xe7, 0x30, 0x44, 0xf5, 0xf2, 0xdc, 0x8a, 0x7d, 0xd3, 0xe1, 0x38, 0x24, 0x6d, 0xad, 0xa6, - 0xab, 0x4e, 0xd3, 0xc2, 0xdc, 0xf3, 0x3c, 0x80, 0xfc, 0x15, 0x09, 0x06, 0x99, 0x27, 0xfb, 0xec, - 0x26, 0xb5, 0xb7, 0x5b, 0xa4, 0x93, 0xdd, 0xa2, 0x07, 0xb7, 0x5b, 0x1e, 0xc0, 0x15, 0xc6, 0xe6, - 0xcf, 0xec, 0xdb, 0x64, 0x0c, 0x4c, 0xc4, 0x35, 0xad, 0xc6, 0x07, 0xaa, 0x8f, 0x48, 0xfe, 0x4f, - 0x12, 0x49, 0x62, 0x79, 0x3d, 0xca, 0xc3, 0x88, 0x90, 0xab, 0xbc, 0x55, 0x57, 0x6b, 0xdc, 0x77, - 0x4e, 0x74, 0x14, 0xee, 0x42, 0x5d, 0xad, 0x29, 0xc3, 0x5c, 0x1e, 0x52, 0x68, 0xdf, 0x0f, 0x91, - 0x0e, 0xfd, 0x10, 0xe8, 0xf8, 0xe8, 0xc1, 0x3a, 0x3e, 0xd0, 0x45, 0xb1, 0x70, 0x17, 0x7d, 0x31, - 0x42, 0x17, 0x33, 0xa6, 0x61, 0xab, 0xf5, 0x1f, 0xc7, 0x88, 0x38, 0x06, 0x49, 0xd3, 0xa8, 0x97, - 0x59, 0x0d, 0xbb, 0xd5, 0x9e, 0x30, 0x8d, 0xba, 0xd2, 0xd2, 0xed, 0xf1, 0xdb, 0x34, 0x5c, 0x06, - 0x6f, 0x83, 0xd5, 0x86, 0xc2, 0x56, 0xb3, 0x20, 0xc5, 0x4c, 0xc1, 0xe7, 0xb2, 0x47, 0x88, 0x0d, - 0xe8, 0xe4, 0x28, 0xb5, 0xce, 0xbd, 0x4c, 0x6c, 0x86, 0xa9, 0x70, 0x3c, 0x42, 0xc1, 0x42, 0x7f, - 0xbb, 0x55, 0xb0, 0xdf, 0x2d, 0x15, 0x8e, 0x27, 0xff, 0x4d, 0x09, 0x60, 0x91, 0x58, 0x96, 0xea, - 0x4b, 0x66, 0x21, 0x9b, 0x8a, 0x50, 0x0e, 0xb4, 0x3c, 0xd5, 0xa9, 0xd3, 0x78, 0xfb, 0x29, 0xdb, - 0x2f, 0xf7, 0x1c, 0x8c, 0x78, 0xce, 0x68, 0x63, 0x21, 0xcc, 0x54, 0x97, 0xac, 0x7a, 0x0d, 0x3b, - 0x4a, 0xea, 0x8a, 0xaf, 0x24, 0xff, 0x73, 0x09, 0x92, 0x54, 0xa6, 0x25, 0xec, 0xa8, 0x81, 0x3e, - 0x94, 0x0e, 0xde, 0x87, 0x27, 0x00, 0x18, 0x1b, 0x5b, 0xbb, 0x86, 0xb9, 0x67, 0x25, 0x29, 0x64, - 0x4d, 0xbb, 0x86, 0xd1, 0x39, 0xd7, 0xe0, 0xd1, 0xee, 0x06, 0x17, 0x59, 0x37, 0x37, 0xfb, 0x11, - 0x18, 0xa2, 0x9f, 0xa5, 0xda, 0xb5, 0x79, 0x22, 0x3d, 0xa8, 0x37, 0x1b, 0xeb, 0xbb, 0xb6, 0xfc, - 0x22, 0x0c, 0xad, 0xef, 0xb2, 0xbd, 0x91, 0x63, 0x90, 0xb4, 0x0c, 0x83, 0xcf, 0xc9, 0x2c, 0x17, - 0x4a, 0x10, 0x00, 0x9d, 0x82, 0xc4, 0x7e, 0x40, 0xc4, 0xdb, 0x0f, 0xf0, 0x36, 0x34, 0xa2, 0x7d, - 0x6d, 0x68, 0x9c, 0xfa, 0xf7, 0x12, 0x0c, 0xfb, 0xe2, 0x03, 0x7a, 0x14, 0x0e, 0x15, 0x16, 0x57, - 0xe6, 0x2e, 0x95, 0x17, 0x8a, 0xe5, 0x0b, 0x8b, 0xf9, 0x79, 0xef, 0xdd, 0x56, 0xf6, 0xf0, 0xf5, - 0x1b, 0x33, 0xc8, 0x87, 0xbb, 0xa1, 0xd3, 0x1d, 0x25, 0x74, 0x1a, 0x26, 0x83, 0x24, 0xf9, 0xc2, - 0x5a, 0x69, 0x79, 0x3d, 0x2d, 0x65, 0x0f, 0x5d, 0xbf, 0x31, 0x33, 0xee, 0xa3, 0xc8, 0x6f, 0xda, - 0x58, 0x77, 0x5a, 0x09, 0xe6, 0x56, 0x96, 0x96, 0x16, 0xd6, 0xd3, 0x91, 0x16, 0x02, 0x1e, 0xb0, - 0x1f, 0x80, 0xf1, 0x20, 0xc1, 0xf2, 0xc2, 0x62, 0x3a, 0x9a, 0x45, 0xd7, 0x6f, 0xcc, 0x8c, 0xfa, - 0xb0, 0x97, 0xb5, 0x7a, 0x36, 0xf1, 0x81, 0xcf, 0x4c, 0x0d, 0xfc, 0xd2, 0x2f, 0x4e, 0x49, 0x44, - 0xb3, 0x91, 0x40, 0x8c, 0x40, 0x0f, 0xc1, 0x91, 0xb5, 0x85, 0xf9, 0xe5, 0x52, 0xb1, 0xbc, 0xb4, - 0x36, 0x2f, 0xf6, 0x9d, 0x85, 0x76, 0x63, 0xd7, 0x6f, 0xcc, 0x0c, 0x73, 0x95, 0x3a, 0x61, 0xaf, - 0x2a, 0xa5, 0xcb, 0x2b, 0xeb, 0xa5, 0xb4, 0xc4, 0xb0, 0x57, 0x2d, 0x7c, 0xc5, 0x70, 0xd8, 0x77, - 0xeb, 0x1e, 0x81, 0xa3, 0x6d, 0xb0, 0x5d, 0xc5, 0xc6, 0xaf, 0xdf, 0x98, 0x19, 0x59, 0xb5, 0x30, - 0x1b, 0x3f, 0x94, 0x62, 0x16, 0x32, 0xad, 0x14, 0x2b, 0xab, 0x2b, 0x6b, 0xf9, 0xc5, 0xf4, 0x4c, - 0x36, 0x7d, 0xfd, 0xc6, 0x4c, 0x4a, 0x04, 0x43, 0xba, 0xb9, 0xef, 0x6a, 0x76, 0x27, 0x57, 0x3c, - 0x7f, 0xfc, 0x30, 0xdc, 0xd3, 0xe1, 0x5c, 0x49, 0x9c, 0x48, 0x1c, 0xe8, 0x64, 0xa9, 0xe3, 0xde, - 0x7a, 0xb6, 0xc7, 0xf6, 0x73, 0xef, 0xa5, 0xd3, 0xc1, 0x4f, 0xad, 0xb2, 0x5d, 0x17, 0x77, 0xf2, - 0x07, 0x25, 0x18, 0xbd, 0xa8, 0xd9, 0x8e, 0x61, 0x69, 0x15, 0xb5, 0x4e, 0x5f, 0x6b, 0x9d, 0xeb, - 0x37, 0xb6, 0x86, 0x86, 0xfa, 0xd3, 0x30, 0x78, 0x45, 0xad, 0xb3, 0xa0, 0x16, 0xa5, 0x1f, 0x97, - 0xe9, 0x70, 0xcc, 0xe3, 0x86, 0x36, 0xc1, 0x80, 0x91, 0xc9, 0xbf, 0x12, 0x81, 0x31, 0x3a, 0x18, - 0x6c, 0xf6, 0xd9, 0x31, 0xb2, 0xc6, 0x2a, 0x40, 0xcc, 0x52, 0x1d, 0xbe, 0x69, 0x58, 0x98, 0xe5, - 0x27, 0x8e, 0xf7, 0xf5, 0x71, 0x7e, 0x56, 0xc4, 0x15, 0x85, 0xd2, 0xa2, 0x77, 0x40, 0xa2, 0xa1, - 0xee, 0x96, 0x29, 0x1f, 0xb6, 0x72, 0xc9, 0xef, 0x8f, 0xcf, 0xad, 0x9b, 0xd3, 0x63, 0x7b, 0x6a, - 0xa3, 0x9e, 0x93, 0x05, 0x1f, 0x59, 0x19, 0x6a, 0xa8, 0xbb, 0x44, 0x44, 0x64, 0xc2, 0x18, 0x81, - 0x56, 0xb6, 0x55, 0xbd, 0x86, 0x59, 0x23, 0x74, 0x0b, 0xb4, 0x70, 0x71, 0xdf, 0x8d, 0x1c, 0xf6, - 0x1a, 0xf1, 0xb1, 0x93, 0x95, 0x91, 0x86, 0xba, 0x3b, 0x47, 0x01, 0xa4, 0xc5, 0x5c, 0xe2, 0xa3, - 0x9f, 0x9a, 0x1e, 0xa0, 0xa7, 0xb8, 0xdf, 0x92, 0x00, 0x3c, 0x8b, 0xa1, 0x77, 0x40, 0xba, 0xe2, - 0x96, 0x28, 0xad, 0x38, 0x8f, 0xbc, 0xbf, 0x53, 0x5f, 0x84, 0xec, 0xcd, 0xe6, 0xe6, 0x6f, 0xde, - 0x9c, 0x96, 0x94, 0xb1, 0x4a, 0xa8, 0x2b, 0xde, 0x0e, 0xc3, 0x4d, 0xb3, 0xaa, 0x3a, 0xb8, 0x4c, - 0xd7, 0x71, 0x91, 0x9e, 0xf3, 0xfc, 0x14, 0xe1, 0x75, 0xeb, 0xe6, 0x34, 0x62, 0x6a, 0xf9, 0x88, - 0x65, 0x3a, 0xfb, 0x03, 0x83, 0x10, 0x02, 0x9f, 0x4e, 0x5f, 0x97, 0x60, 0xb8, 0xe8, 0xbb, 0x47, - 0x99, 0x81, 0xa1, 0x86, 0xa1, 0x6b, 0x3b, 0xdc, 0x1f, 0x93, 0x8a, 0x28, 0xa2, 0x2c, 0x24, 0xd8, - 0x03, 0x56, 0x67, 0x4f, 0x6c, 0x85, 0x8a, 0x32, 0xa1, 0xba, 0x8a, 0x37, 0x6d, 0x4d, 0xf4, 0x86, - 0x22, 0x8a, 0xe8, 0x02, 0xa4, 0x6d, 0x5c, 0x69, 0x5a, 0x9a, 0xb3, 0x57, 0xae, 0x18, 0xba, 0xa3, - 0x56, 0x1c, 0xf6, 0x14, 0xb2, 0x70, 0xec, 0xd6, 0xcd, 0xe9, 0x23, 0x4c, 0xd6, 0x30, 0x86, 0xac, - 0x8c, 0x09, 0xd0, 0x1c, 0x83, 0x90, 0x16, 0xaa, 0xd8, 0x51, 0xb5, 0xba, 0x9d, 0x61, 0x17, 0x12, - 0x44, 0xd1, 0xa7, 0xcb, 0xe7, 0x87, 0xfc, 0x1b, 0x5b, 0x17, 0x20, 0x6d, 0x98, 0xd8, 0x0a, 0x24, - 0xa2, 0x52, 0xb8, 0xe5, 0x30, 0x86, 0xac, 0x8c, 0x09, 0x90, 0x48, 0x52, 0x1d, 0xd2, 0xcd, 0x62, - 0xa1, 0x68, 0x36, 0x37, 0xbd, 0xfd, 0xb0, 0xc9, 0x96, 0xde, 0xc8, 0xeb, 0x7b, 0x85, 0xc7, 0x3c, - 0xee, 0x61, 0x3a, 0xf9, 0x1b, 0x5f, 0x7a, 0x78, 0x92, 0xbb, 0x86, 0xb7, 0x3f, 0x75, 0x09, 0xef, - 0x91, 0xee, 0xe7, 0xa8, 0xab, 0x14, 0x93, 0xa4, 0x9d, 0x2f, 0xaa, 0x5a, 0x5d, 0x3c, 0xe9, 0x57, - 0x78, 0x09, 0xe5, 0x60, 0xd0, 0x76, 0x54, 0xa7, 0x69, 0xf3, 0xd3, 0x5d, 0xb9, 0x93, 0xab, 0x15, - 0x0c, 0xbd, 0xba, 0x46, 0x31, 0x15, 0x4e, 0x81, 0x2e, 0xc0, 0x20, 0x3f, 0x36, 0x8f, 0xef, 0x7b, - 0x7c, 0xd3, 0xfb, 0x11, 0x8c, 0x9a, 0x58, 0xa4, 0x8a, 0xeb, 0xb8, 0xc6, 0xd2, 0xaa, 0x6d, 0x95, - 0xac, 0x3e, 0xe8, 0xf7, 0xf6, 0x0a, 0x0b, 0xfb, 0x1e, 0x84, 0xdc, 0x52, 0x61, 0x7e, 0xb2, 0x32, - 0xe6, 0x82, 0xd6, 0x28, 0x04, 0x5d, 0x0a, 0x5c, 0xf8, 0xe5, 0x1f, 0xa5, 0xbc, 0xbb, 0x93, 0xfa, - 0x3e, 0x9f, 0x16, 0xfb, 0x13, 0xfe, 0xeb, 0xc2, 0x17, 0x20, 0xdd, 0xd4, 0x37, 0x0d, 0x9d, 0xbe, - 0xbb, 0xe5, 0xf9, 0x3d, 0x59, 0xdf, 0x45, 0xfd, 0xce, 0x11, 0xc6, 0x90, 0x95, 0x31, 0x17, 0x74, - 0x91, 0xad, 0x02, 0xaa, 0x30, 0xea, 0x61, 0xd1, 0x81, 0x9a, 0xec, 0x39, 0x50, 0xef, 0xe2, 0x03, - 0xf5, 0x50, 0xb8, 0x15, 0x6f, 0xac, 0x8e, 0xb8, 0x40, 0x42, 0x86, 0x2e, 0x02, 0x78, 0xe1, 0x81, - 0xee, 0x53, 0x0c, 0x77, 0xee, 0x78, 0x2f, 0xc6, 0x88, 0xf5, 0x9e, 0x47, 0x8b, 0xde, 0x05, 0x13, - 0x0d, 0x4d, 0x2f, 0xdb, 0xb8, 0xbe, 0x55, 0xe6, 0x06, 0x26, 0x2c, 0xe9, 0x67, 0x93, 0x0a, 0x8b, - 0xfb, 0xf3, 0x87, 0x5b, 0x37, 0xa7, 0xb3, 0x3c, 0x84, 0xb6, 0xb2, 0x94, 0x95, 0xf1, 0x86, 0xa6, - 0xaf, 0xe1, 0xfa, 0x56, 0xd1, 0x85, 0xe5, 0x52, 0x1f, 0xf8, 0xd4, 0xf4, 0x00, 0x1f, 0xae, 0x03, - 0xf2, 0x39, 0xba, 0x77, 0xce, 0x87, 0x19, 0xb6, 0xc9, 0x9a, 0x44, 0x15, 0x05, 0x7e, 0xbd, 0xc0, - 0x03, 0xb0, 0x61, 0xfe, 0xf2, 0x7f, 0x9c, 0x91, 0xe4, 0xcf, 0x4b, 0x30, 0x58, 0xbc, 0xbc, 0xaa, - 0x6a, 0x16, 0x5a, 0x80, 0x71, 0xcf, 0x73, 0x82, 0x83, 0xfc, 0xf8, 0xad, 0x9b, 0xd3, 0x99, 0xb0, - 0x73, 0xb9, 0xa3, 0xdc, 0x73, 0x60, 0x31, 0xcc, 0x17, 0x3a, 0x2d, 0x5c, 0x03, 0xac, 0x5a, 0x50, - 0xe4, 0xd6, 0x65, 0x6d, 0x48, 0xcd, 0x12, 0x0c, 0x31, 0x69, 0x6d, 0x94, 0x83, 0xb8, 0x49, 0x7e, - 0xf0, 0x83, 0x81, 0xa9, 0x8e, 0xce, 0x4b, 0xf1, 0xdd, 0x8d, 0x4c, 0x42, 0x22, 0x7f, 0x38, 0x02, - 0x50, 0xbc, 0x7c, 0x79, 0xdd, 0xd2, 0xcc, 0x3a, 0x76, 0x6e, 0xa7, 0xe6, 0xeb, 0x70, 0xc8, 0xb7, - 0x4a, 0xb2, 0x2a, 0x21, 0xed, 0x67, 0x6e, 0xdd, 0x9c, 0x3e, 0x1e, 0xd6, 0xde, 0x87, 0x26, 0x2b, - 0x13, 0xde, 0x7a, 0xc9, 0xaa, 0xb4, 0xe5, 0x5a, 0xb5, 0x1d, 0x97, 0x6b, 0xb4, 0x33, 0x57, 0x1f, - 0x9a, 0x9f, 0x6b, 0xd1, 0x76, 0xda, 0x9b, 0x76, 0x0d, 0x86, 0x3d, 0x93, 0xd8, 0xa8, 0x08, 0x09, - 0x87, 0xff, 0xe6, 0x16, 0x96, 0x3b, 0x5b, 0x58, 0x90, 0x71, 0x2b, 0xbb, 0x94, 0xf2, 0x9f, 0x4a, - 0x00, 0x9e, 0xcf, 0xfe, 0x64, 0xba, 0x18, 0x09, 0xe5, 0x3c, 0xf0, 0x46, 0x0f, 0x94, 0xaa, 0x71, - 0xea, 0x90, 0x3d, 0x7f, 0x26, 0x02, 0x13, 0x1b, 0x22, 0xf2, 0xfc, 0xc4, 0xdb, 0x60, 0x15, 0x86, - 0xb0, 0xee, 0x58, 0x1a, 0x35, 0x02, 0xe9, 0xed, 0x47, 0x3a, 0xf5, 0x76, 0x1b, 0x9d, 0xe8, 0x87, - 0xa3, 0xc4, 0xa6, 0x3b, 0x67, 0x13, 0xb2, 0xc6, 0xcf, 0x45, 0x21, 0xd3, 0x89, 0x12, 0xcd, 0xc1, - 0x58, 0xc5, 0xc2, 0xec, 0xb2, 0x95, 0x7f, 0xe7, 0xaf, 0x90, 0xf5, 0x32, 0xcb, 0x10, 0x82, 0xac, - 0x8c, 0x0a, 0x08, 0x9f, 0x3d, 0x6a, 0x40, 0xd2, 0x3e, 0xe2, 0x76, 0xf4, 0xce, 0x56, 0x7f, 0x79, - 0x9e, 0xcc, 0xa7, 0x0f, 0xd1, 0x48, 0x90, 0x01, 0x9b, 0x3f, 0x46, 0x3d, 0x28, 0x9d, 0x40, 0x5e, - 0x82, 0x31, 0x4d, 0xd7, 0x1c, 0x4d, 0xad, 0x97, 0x37, 0xd5, 0xba, 0xaa, 0x57, 0x0e, 0x92, 0x35, - 0xb3, 0x90, 0xcf, 0x9b, 0x0d, 0xb1, 0x93, 0x95, 0x51, 0x0e, 0x29, 0x30, 0x00, 0xba, 0x08, 0x43, - 0xa2, 0xa9, 0xd8, 0x81, 0xb2, 0x0d, 0x41, 0xee, 0x4b, 0xf0, 0x7e, 0x36, 0x0a, 0xe3, 0x0a, 0xae, - 0xfe, 0x45, 0x57, 0xec, 0xaf, 0x2b, 0x96, 0x00, 0xd8, 0x70, 0x27, 0x01, 0xf6, 0x00, 0xbd, 0x41, - 0x02, 0x46, 0x92, 0x71, 0x28, 0xda, 0x8e, 0xaf, 0x3f, 0x6e, 0x46, 0x20, 0xe5, 0xef, 0x8f, 0x3f, - 0xa7, 0xb3, 0x12, 0x5a, 0xf0, 0x22, 0x51, 0x8c, 0x7f, 0x6e, 0xb7, 0x43, 0x24, 0x6a, 0xf1, 0xde, - 0xee, 0x21, 0xe8, 0x7f, 0x46, 0x60, 0x70, 0x55, 0xb5, 0xd4, 0x86, 0x8d, 0x2a, 0x2d, 0x99, 0xa6, - 0xd8, 0x7e, 0x6c, 0xf9, 0xa8, 0x3a, 0xdf, 0xed, 0xe8, 0x91, 0x68, 0x7e, 0xb4, 0x4d, 0xa2, 0xf9, - 0x56, 0x18, 0x25, 0xcb, 0x61, 0xdf, 0x15, 0x06, 0x62, 0xed, 0x91, 0xc2, 0x51, 0x8f, 0x4b, 0xb0, - 0x9e, 0xad, 0x96, 0x2f, 0xfb, 0xef, 0x30, 0x0c, 0x13, 0x0c, 0x2f, 0x30, 0x13, 0xf2, 0xc3, 0xde, - 0xb2, 0xd4, 0x57, 0x29, 0x2b, 0xd0, 0x50, 0x77, 0x4b, 0xac, 0x80, 0x16, 0x01, 0x6d, 0xbb, 0x3b, - 0x23, 0x65, 0xcf, 0x9c, 0x84, 0xfe, 0xc4, 0xad, 0x9b, 0xd3, 0x47, 0x19, 0x7d, 0x2b, 0x8e, 0xac, - 0x8c, 0x7b, 0x40, 0xc1, 0xed, 0x71, 0x00, 0xa2, 0x57, 0x99, 0x5d, 0xdb, 0x66, 0xcb, 0x9d, 0x43, - 0xb7, 0x6e, 0x4e, 0x8f, 0x33, 0x2e, 0x5e, 0x9d, 0xac, 0x24, 0x49, 0xa1, 0x48, 0x7e, 0xfb, 0x3c, - 0xfb, 0x33, 0x12, 0x20, 0x2f, 0xe4, 0x2b, 0xd8, 0x36, 0xc9, 0xfa, 0x8c, 0x24, 0xe2, 0xbe, 0xac, - 0x59, 0xea, 0x9e, 0x88, 0x7b, 0xf4, 0x22, 0x11, 0xf7, 0x8d, 0x94, 0xa7, 0xbc, 0xf0, 0x18, 0xe9, - 0x75, 0x87, 0x99, 0xbb, 0x48, 0x38, 0x1e, 0x0e, 0xc8, 0xff, 0x4a, 0x82, 0xa3, 0x2d, 0x1e, 0xe5, - 0x0a, 0xfb, 0x97, 0x00, 0x59, 0xbe, 0x4a, 0xfe, 0xed, 0x44, 0x26, 0xf4, 0xbe, 0x1d, 0x74, 0xdc, - 0x6a, 0x89, 0xbb, 0xb7, 0x2f, 0xc2, 0xb3, 0x4b, 0xf2, 0xff, 0x4c, 0x82, 0x49, 0x7f, 0xf3, 0xae, - 0x22, 0xcb, 0x90, 0xf2, 0xb7, 0xce, 0x55, 0xb8, 0xa7, 0x1f, 0x15, 0xb8, 0xf4, 0x01, 0x7a, 0xf4, - 0xac, 0x37, 0x5c, 0xd9, 0xde, 0xd9, 0xa3, 0x7d, 0x5b, 0x43, 0xc8, 0x14, 0x1e, 0xb6, 0x31, 0xda, - 0x1f, 0xff, 0x57, 0x82, 0xd8, 0xaa, 0x61, 0xd4, 0x91, 0x01, 0xe3, 0xba, 0xe1, 0x94, 0x89, 0x67, - 0xe1, 0xaa, 0xff, 0xae, 0x7a, 0xb2, 0x30, 0xb7, 0x3f, 0x23, 0x7d, 0xef, 0xe6, 0x74, 0x2b, 0x2b, - 0x65, 0x4c, 0x37, 0x9c, 0x02, 0x85, 0xf0, 0xeb, 0xea, 0xef, 0x82, 0x91, 0x60, 0x63, 0x2c, 0x4a, - 0x3e, 0xb7, 0xef, 0xc6, 0x82, 0x6c, 0x6e, 0xdd, 0x9c, 0x9e, 0xf4, 0x46, 0x8c, 0x0b, 0x96, 0x95, - 0xd4, 0xa6, 0xaf, 0x75, 0x76, 0xbd, 0xeb, 0x07, 0x9f, 0x9a, 0x96, 0x4e, 0x7d, 0x59, 0x02, 0xf0, - 0x76, 0x1e, 0xd0, 0x43, 0x70, 0xa4, 0xb0, 0xb2, 0x5c, 0x2c, 0xaf, 0xad, 0xe7, 0xd7, 0x37, 0xd6, - 0x82, 0xf7, 0xba, 0xc5, 0xf6, 0xb8, 0x6d, 0xe2, 0x8a, 0xb6, 0xa5, 0xe1, 0x2a, 0xba, 0x0f, 0x26, - 0x83, 0xd8, 0xa4, 0x54, 0x2a, 0xa6, 0xa5, 0x6c, 0xea, 0xfa, 0x8d, 0x99, 0x04, 0xcb, 0xc5, 0x70, - 0x15, 0x9d, 0x84, 0x43, 0xad, 0x78, 0x0b, 0xcb, 0xf3, 0xe9, 0x48, 0x76, 0xe4, 0xfa, 0x8d, 0x99, - 0xa4, 0x9b, 0xb4, 0x21, 0x19, 0x90, 0x1f, 0x93, 0xf3, 0x8b, 0x66, 0xe1, 0xfa, 0x8d, 0x99, 0x41, - 0x66, 0xc0, 0x6c, 0xec, 0x03, 0x9f, 0x99, 0x1a, 0xb8, 0xed, 0xb7, 0xbf, 0xff, 0x68, 0xa8, 0xe3, - 0xae, 0x77, 0x0d, 0xeb, 0xd8, 0xd6, 0xec, 0x03, 0xed, 0x7a, 0xf7, 0xb5, 0x93, 0x2e, 0xff, 0x4e, - 0x1c, 0x52, 0xf3, 0xac, 0x15, 0xd2, 0x11, 0x18, 0xbd, 0x09, 0x06, 0x4d, 0x3a, 0x8d, 0xb8, 0xc7, - 0x68, 0x1d, 0x1c, 0x9e, 0x4d, 0x36, 0xee, 0x5d, 0x2e, 0x36, 0xf5, 0xd8, 0xfc, 0x32, 0x07, 0xbb, - 0x63, 0xe6, 0xdd, 0x9a, 0x4a, 0xed, 0x6b, 0xbf, 0x87, 0xe5, 0x2c, 0x7c, 0x6b, 0x25, 0xcc, 0x4f, - 0x66, 0xf7, 0x42, 0xd6, 0x09, 0x84, 0xdd, 0x0e, 0x7b, 0x9f, 0x04, 0x87, 0x28, 0x96, 0x37, 0x11, - 0x53, 0x4c, 0x91, 0xec, 0x9f, 0xea, 0xa4, 0xc2, 0xa2, 0x6a, 0x7b, 0x77, 0x3d, 0xd8, 0x7d, 0xae, - 0x7b, 0xf8, 0x44, 0x78, 0xdc, 0xd7, 0x78, 0x98, 0xad, 0xac, 0x4c, 0xd4, 0x5b, 0x28, 0x6d, 0x34, - 0x1f, 0xb8, 0xd0, 0x17, 0xdb, 0xdf, 0x56, 0xbb, 0xff, 0x72, 0xdf, 0x33, 0x30, 0xec, 0xc5, 0x12, - 0x9b, 0xff, 0xaf, 0x97, 0xfe, 0xe7, 0x0e, 0x3f, 0x31, 0x7a, 0xbf, 0x04, 0x87, 0xbc, 0xd9, 0xdc, - 0xcf, 0x96, 0xfd, 0x4f, 0x9c, 0x07, 0xf7, 0xb1, 0x10, 0x0a, 0x1b, 0xa7, 0x2d, 0x5f, 0x59, 0x99, - 0x6c, 0xb6, 0x92, 0x92, 0x25, 0xd8, 0x88, 0x3f, 0xb2, 0xda, 0x19, 0xf1, 0xd9, 0xc7, 0xfe, 0x43, - 0x73, 0x90, 0x01, 0xfb, 0x3f, 0x1d, 0xa6, 0x61, 0x39, 0xb8, 0x4a, 0x37, 0xe4, 0x12, 0x8a, 0x5b, - 0x96, 0x97, 0x01, 0xb5, 0x76, 0x6e, 0xf8, 0x02, 0xa3, 0xf7, 0x26, 0x05, 0x4d, 0x42, 0xdc, 0x7f, - 0xc5, 0x8f, 0x15, 0x72, 0x89, 0x0f, 0xf0, 0xe9, 0xf3, 0xb6, 0x8f, 0xf9, 0x7f, 0x11, 0x81, 0x53, - 0xfe, 0xe3, 0xa1, 0x97, 0x9a, 0xd8, 0xda, 0x73, 0x87, 0xa8, 0xa9, 0xd6, 0x34, 0xdd, 0xff, 0x0a, - 0xe2, 0xa8, 0x7f, 0xc2, 0xa7, 0xb8, 0xc2, 0x4e, 0xb2, 0x0e, 0xc3, 0xab, 0x6a, 0x0d, 0x2b, 0xf8, - 0xa5, 0x26, 0xb6, 0x9d, 0x36, 0x97, 0xcc, 0x0f, 0xc3, 0xa0, 0xb1, 0xb5, 0x25, 0x8e, 0xb4, 0x63, - 0x0a, 0x2f, 0x11, 0x95, 0xeb, 0x5a, 0x43, 0x63, 0xb7, 0xc1, 0x62, 0x0a, 0x2b, 0xa0, 0x69, 0x18, - 0xae, 0x18, 0x4d, 0x9d, 0x8f, 0xb8, 0x4c, 0x4c, 0x7c, 0x5e, 0xa5, 0xa9, 0xb3, 0x11, 0x27, 0x3f, - 0x0d, 0x29, 0xd6, 0x1e, 0x9f, 0x71, 0x8f, 0x42, 0x82, 0x5e, 0xa7, 0xf2, 0x5a, 0x1d, 0x22, 0xe5, - 0x4b, 0xec, 0x42, 0x3a, 0xe3, 0xc2, 0x1a, 0x66, 0x85, 0x42, 0xa1, 0xa3, 0x29, 0x4f, 0xf6, 0x0e, - 0x0d, 0xcc, 0x50, 0xae, 0x19, 0x7f, 0x23, 0x0e, 0x87, 0xf8, 0x09, 0x9d, 0x6a, 0x6a, 0xa7, 0xb7, - 0x1d, 0x47, 0x3c, 0x90, 0x00, 0x9e, 0xea, 0xaa, 0xa6, 0x26, 0xef, 0x41, 0xec, 0xa2, 0xe3, 0x98, - 0xe8, 0x14, 0xc4, 0xad, 0x66, 0x1d, 0x8b, 0x1d, 0x1f, 0x77, 0x4f, 0x5e, 0x35, 0xb5, 0x59, 0x82, - 0xa0, 0x34, 0xeb, 0x58, 0x61, 0x28, 0xa8, 0x04, 0xd3, 0x5b, 0xcd, 0x7a, 0x7d, 0xaf, 0x5c, 0xc5, - 0xf4, 0xff, 0x60, 0xb9, 0xff, 0x49, 0x02, 0xef, 0x9a, 0xaa, 0xf8, 0x1e, 0x25, 0xb1, 0xcd, 0x71, - 0x8a, 0x56, 0xa4, 0x58, 0xe2, 0xbf, 0x48, 0x94, 0x04, 0x8e, 0xfc, 0x7b, 0x11, 0x48, 0x08, 0xd6, - 0xf4, 0x86, 0x38, 0xae, 0xe3, 0x8a, 0x63, 0x88, 0x13, 0x13, 0xb7, 0x8c, 0x10, 0x44, 0x6b, 0xbc, - 0x8b, 0x92, 0x17, 0x07, 0x14, 0x52, 0x20, 0x30, 0xf7, 0xde, 0x3e, 0x81, 0x99, 0x4d, 0xd2, 0x6b, - 0x31, 0xd3, 0x10, 0x4b, 0xb3, 0x8b, 0x03, 0x0a, 0x2d, 0xa1, 0x0c, 0x0c, 0x92, 0x91, 0xe1, 0xb0, - 0x8f, 0x7c, 0x12, 0x38, 0x2f, 0xa3, 0xc3, 0x10, 0x37, 0x55, 0xa7, 0xc2, 0xae, 0xd4, 0x91, 0x0a, - 0x56, 0x44, 0x4f, 0xc0, 0x20, 0x7b, 0x6e, 0x1d, 0xfe, 0x27, 0x33, 0xc4, 0x18, 0xec, 0xbb, 0x76, - 0x44, 0xee, 0x55, 0xd5, 0x71, 0xb0, 0xa5, 0x13, 0x86, 0x0c, 0x1d, 0x21, 0x88, 0x6d, 0x1a, 0xd5, - 0x3d, 0xfe, 0x8f, 0x6f, 0xe8, 0x6f, 0xfe, 0x9f, 0x36, 0xa8, 0x3f, 0x94, 0x69, 0x25, 0xfb, 0x7f, - 0x5f, 0x29, 0x01, 0x2c, 0x10, 0xa4, 0x12, 0x4c, 0xa8, 0xd5, 0xaa, 0xc6, 0xfe, 0x07, 0x4d, 0x79, - 0x53, 0xa3, 0x11, 0xc2, 0xa6, 0xff, 0xcd, 0xad, 0x53, 0x5f, 0x20, 0x8f, 0xa0, 0xc0, 0xf1, 0x0b, - 0x49, 0x18, 0x32, 0x99, 0x50, 0xf2, 0x79, 0x18, 0x6f, 0x91, 0x94, 0xc8, 0xb7, 0xa3, 0xe9, 0x55, - 0xf1, 0x98, 0x81, 0xfc, 0x26, 0x30, 0xfa, 0x25, 0x4a, 0x76, 0x16, 0x45, 0x7f, 0x17, 0xde, 0xd3, - 0xf9, 0xcd, 0xcb, 0xa8, 0xef, 0xcd, 0x8b, 0x6a, 0x6a, 0x85, 0x24, 0xe5, 0xcf, 0x5f, 0xba, 0xe4, - 0x5b, 0x5f, 0xba, 0xd4, 0xb0, 0x2e, 0x66, 0x5f, 0x52, 0xa5, 0x9a, 0x9a, 0x4d, 0xdd, 0xd1, 0xfb, - 0x32, 0xa6, 0x7d, 0xde, 0xf7, 0x9b, 0x3e, 0x7c, 0x89, 0xcd, 0xe7, 0x57, 0x17, 0x5c, 0x3f, 0xfe, - 0x6a, 0x04, 0x8e, 0xfb, 0xfc, 0xd8, 0x87, 0xdc, 0xea, 0xce, 0xd9, 0xf6, 0x1e, 0xdf, 0xc7, 0xa3, - 0xe3, 0x4b, 0x10, 0x23, 0xf8, 0xa8, 0xc7, 0xff, 0xc1, 0xc8, 0xfc, 0xea, 0x37, 0xfe, 0xa9, 0x1c, - 0x3c, 0xb5, 0x0a, 0xf4, 0x0a, 0x65, 0x52, 0x78, 0x7f, 0xff, 0xf6, 0x4b, 0x7b, 0x1f, 0x05, 0xb5, - 0x6f, 0x9f, 0x19, 0xc3, 0x36, 0xfc, 0xee, 0xd9, 0x8e, 0x8f, 0x52, 0x59, 0xc4, 0xec, 0x9e, 0x44, - 0xed, 0x23, 0x1c, 0x77, 0xba, 0xff, 0xdf, 0xad, 0x07, 0xfb, 0x4c, 0xc7, 0x76, 0xe1, 0xf0, 0xb3, - 0xa4, 0x6d, 0x6f, 0x99, 0x2c, 0x02, 0xfb, 0x61, 0xf7, 0x34, 0x4f, 0xe2, 0xff, 0x4c, 0x4f, 0x9c, - 0xd4, 0x81, 0x27, 0x1f, 0x5f, 0x20, 0xde, 0x37, 0xdb, 0x71, 0xbe, 0x98, 0xf5, 0x4d, 0x16, 0x8a, - 0x8f, 0x52, 0xfe, 0x65, 0x09, 0x8e, 0xb4, 0x34, 0xcd, 0x63, 0xfc, 0x7c, 0x9b, 0xa7, 0x0a, 0x07, - 0xca, 0x6c, 0xe6, 0xdb, 0x08, 0x7b, 0x7f, 0x4f, 0x61, 0x99, 0x14, 0x01, 0x69, 0xdf, 0x02, 0x87, - 0x82, 0xc2, 0x0a, 0x33, 0xdd, 0x0b, 0xa3, 0xc1, 0x1d, 0x61, 0x6e, 0xae, 0x91, 0xc0, 0x9e, 0xb0, - 0x5c, 0x0e, 0xdb, 0xd9, 0xd5, 0xb5, 0x04, 0x49, 0x17, 0x95, 0xa7, 0xc0, 0x7d, 0xab, 0xea, 0x51, - 0xca, 0x1f, 0x96, 0x60, 0x26, 0xd8, 0x82, 0x2f, 0x19, 0xda, 0x9f, 0xb0, 0xb7, 0xad, 0x8b, 0x5f, - 0x93, 0xe0, 0xae, 0x2e, 0x32, 0x71, 0x03, 0x5c, 0x83, 0x49, 0xdf, 0x4e, 0x80, 0x08, 0xe1, 0xa2, - 0xdb, 0x4f, 0xf5, 0x4e, 0x43, 0xdd, 0x85, 0xef, 0x31, 0x62, 0x94, 0xcf, 0x7d, 0x7b, 0x7a, 0xa2, - 0xb5, 0xce, 0x56, 0x26, 0x5a, 0x57, 0xef, 0xb7, 0xd1, 0x3f, 0x5e, 0x91, 0xe0, 0x81, 0xa0, 0xaa, - 0x6d, 0xf2, 0xd9, 0x37, 0xaa, 0x1f, 0xfe, 0x83, 0x04, 0xa7, 0xfa, 0x11, 0x8e, 0x77, 0xc8, 0x26, - 0x4c, 0x78, 0x99, 0x76, 0xb8, 0x3f, 0xf6, 0x95, 0xbf, 0x33, 0x2f, 0x45, 0x2e, 0xb7, 0x3b, 0x60, - 0x78, 0x93, 0x0f, 0x2c, 0x7f, 0x97, 0xbb, 0x46, 0x0e, 0xee, 0xe6, 0x0a, 0x23, 0x07, 0xf6, 0x73, - 0xdb, 0xf4, 0x45, 0xa4, 0x4d, 0x5f, 0x78, 0xa9, 0xb9, 0x7c, 0x85, 0xc7, 0xad, 0x36, 0x7b, 0x70, - 0x6f, 0x87, 0x89, 0x36, 0xae, 0xcc, 0x47, 0xf5, 0x3e, 0x3c, 0x59, 0x41, 0xad, 0xce, 0x2a, 0xef, - 0xc1, 0x34, 0x6d, 0xb7, 0x8d, 0xa1, 0xef, 0xb4, 0xca, 0x0d, 0x1e, 0x5b, 0xda, 0x36, 0xcd, 0x75, - 0x5f, 0x80, 0x41, 0xd6, 0xcf, 0x5c, 0xdd, 0x03, 0x38, 0x0a, 0x67, 0x20, 0x7f, 0x5c, 0xc4, 0xb2, - 0xa2, 0x10, 0xbb, 0xfd, 0x18, 0xea, 0x47, 0xd7, 0xdb, 0x34, 0x86, 0x7c, 0xc6, 0xf8, 0x96, 0x88, - 0x6a, 0xed, 0xa5, 0xe3, 0xe6, 0xa8, 0xdc, 0xb6, 0xa8, 0xc6, 0x6c, 0x73, 0x67, 0xc3, 0xd7, 0x2f, - 0x8a, 0xf0, 0xe5, 0xea, 0xd4, 0x23, 0x7c, 0xbd, 0x31, 0xa6, 0x77, 0x03, 0x59, 0x0f, 0x31, 0xff, - 0x2c, 0x06, 0xb2, 0x1f, 0x48, 0x70, 0x94, 0xea, 0xe6, 0xdf, 0x88, 0xd8, 0xaf, 0xc9, 0x1f, 0x02, - 0x64, 0x5b, 0x95, 0x72, 0xdb, 0xd1, 0x9d, 0xb6, 0xad, 0xca, 0xe5, 0xc0, 0xfc, 0xf2, 0x10, 0xa0, - 0x6a, 0x60, 0xbb, 0x89, 0x62, 0xb3, 0x5b, 0x72, 0xe9, 0xaa, 0x6f, 0x37, 0xa3, 0x4d, 0x77, 0xc6, - 0x6e, 0x43, 0x77, 0x7e, 0x53, 0x82, 0x6c, 0x3b, 0x95, 0x79, 0xf7, 0x69, 0x70, 0x38, 0x70, 0x48, - 0x10, 0xee, 0xc1, 0x87, 0xfa, 0xd9, 0xca, 0x09, 0x0d, 0xa3, 0x43, 0x16, 0xbe, 0xd3, 0x79, 0xc0, - 0x74, 0xd0, 0x43, 0x5b, 0x33, 0xeb, 0x37, 0x6c, 0xf8, 0x7c, 0xa9, 0x25, 0xae, 0xfe, 0x99, 0xc8, - 0xbd, 0x77, 0x61, 0xaa, 0x83, 0xd4, 0x77, 0x7a, 0xde, 0xdb, 0xee, 0xd8, 0x99, 0xb7, 0x3b, 0x7d, - 0x7f, 0x9c, 0x8f, 0x84, 0xe0, 0x0d, 0x6c, 0xdf, 0x5a, 0xac, 0xdd, 0x13, 0x2e, 0xf9, 0x6d, 0x70, - 0xac, 0x2d, 0x15, 0x97, 0x2d, 0x07, 0xb1, 0x6d, 0xcd, 0x76, 0xb8, 0x58, 0xf7, 0x75, 0x12, 0x2b, - 0x44, 0x4d, 0x69, 0x64, 0x04, 0x69, 0xca, 0x7a, 0xd5, 0x30, 0xea, 0x5c, 0x0c, 0xf9, 0x12, 0x8c, - 0xfb, 0x60, 0xbc, 0x91, 0x73, 0x10, 0x33, 0x0d, 0xfe, 0x79, 0x82, 0xe1, 0x33, 0xc7, 0x3b, 0xee, - 0xde, 0x1b, 0x46, 0x9d, 0xab, 0x4d, 0xf1, 0xe5, 0x49, 0x40, 0x8c, 0x19, 0xdd, 0xc8, 0x17, 0x4d, - 0xac, 0xc1, 0x44, 0x00, 0xca, 0x1b, 0x79, 0x5d, 0x87, 0x04, 0x67, 0xbe, 0x77, 0x08, 0xe2, 0x94, - 0x2b, 0xfa, 0x98, 0x14, 0xf8, 0x66, 0xd0, 0x6c, 0x27, 0x36, 0xed, 0xd7, 0xc4, 0xd9, 0xd3, 0x7d, - 0xe3, 0xf3, 0x9c, 0xed, 0xd4, 0x7b, 0xfe, 0xed, 0x77, 0x3f, 0x12, 0xb9, 0x07, 0xc9, 0xa7, 0x3b, - 0xac, 0xc6, 0x7d, 0xe3, 0xe5, 0xb3, 0x81, 0xb7, 0xef, 0x0f, 0xf7, 0xd7, 0x94, 0x90, 0x6c, 0xb6, - 0x5f, 0x74, 0x2e, 0xd8, 0x79, 0x2a, 0xd8, 0x59, 0xf4, 0x58, 0x6f, 0xc1, 0x4e, 0xbf, 0x33, 0x38, - 0x68, 0xde, 0x8d, 0x7e, 0x47, 0x82, 0xc9, 0x76, 0x4b, 0x3a, 0xf4, 0x64, 0x7f, 0x52, 0xb4, 0xa6, - 0x14, 0xd9, 0xa7, 0x0e, 0x40, 0xc9, 0x55, 0x99, 0xa7, 0xaa, 0xe4, 0xd1, 0xd3, 0x07, 0x50, 0xe5, - 0xb4, 0x7f, 0x7f, 0xff, 0x7f, 0x4b, 0x70, 0xa2, 0xeb, 0x0a, 0x09, 0xe5, 0xfb, 0x93, 0xb2, 0x4b, - 0xee, 0x94, 0x2d, 0xbc, 0x1e, 0x16, 0x5c, 0xe3, 0x67, 0xa9, 0xc6, 0x97, 0xd0, 0xc2, 0x41, 0x34, - 0x6e, 0x7b, 0x88, 0x82, 0x7e, 0x33, 0x78, 0xb3, 0xb0, 0xbb, 0x3b, 0xb5, 0x2c, 0x3c, 0x7a, 0x0c, - 0x8c, 0xd6, 0xa4, 0x56, 0x7e, 0x9e, 0xaa, 0xa0, 0xa0, 0xd5, 0xd7, 0xd9, 0x69, 0xa7, 0xdf, 0x19, - 0x0c, 0xfc, 0xef, 0x46, 0xff, 0x4b, 0x6a, 0x7f, 0x51, 0xf0, 0x89, 0xae, 0x22, 0x76, 0x5e, 0x54, - 0x65, 0x9f, 0xdc, 0x3f, 0x21, 0x57, 0xb2, 0x41, 0x95, 0xac, 0x21, 0x7c, 0xbb, 0x95, 0x6c, 0xdb, - 0x89, 0xe8, 0xeb, 0x12, 0x4c, 0xb6, 0x5b, 0x93, 0xf4, 0x18, 0x96, 0x5d, 0x16, 0x59, 0x3d, 0x86, - 0x65, 0xb7, 0x05, 0x90, 0xfc, 0x26, 0xaa, 0xfc, 0x39, 0xf4, 0x78, 0x27, 0xe5, 0xbb, 0xf6, 0x22, - 0x19, 0x8b, 0x5d, 0x93, 0xfc, 0x1e, 0x63, 0xb1, 0x9f, 0x75, 0x4c, 0x8f, 0xb1, 0xd8, 0xd7, 0x1a, - 0xa3, 0xf7, 0x58, 0x74, 0x35, 0xeb, 0xb3, 0x1b, 0x6d, 0xf4, 0x55, 0x09, 0x46, 0x02, 0x19, 0x31, - 0x7a, 0xb4, 0xab, 0xa0, 0xed, 0x16, 0x0c, 0xd9, 0x33, 0xfb, 0x21, 0xe1, 0xba, 0x2c, 0x50, 0x5d, - 0xe6, 0x50, 0xfe, 0x20, 0xba, 0x04, 0xcf, 0x4a, 0xbf, 0x29, 0xc1, 0x44, 0x9b, 0x2c, 0xb3, 0xc7, - 0x28, 0xec, 0x9c, 0x34, 0x67, 0x9f, 0xdc, 0x3f, 0x21, 0xd7, 0xea, 0x02, 0xd5, 0xea, 0xad, 0xe8, - 0x2d, 0x07, 0xd1, 0xca, 0x37, 0x3f, 0xdf, 0xf4, 0xee, 0x5d, 0xf9, 0xda, 0x41, 0xe7, 0xf6, 0x29, - 0x98, 0x50, 0xe8, 0x89, 0x7d, 0xd3, 0x71, 0x7d, 0x9e, 0xa3, 0xfa, 0x3c, 0x8b, 0x56, 0x5e, 0x9f, - 0x3e, 0xad, 0xd3, 0xfa, 0x17, 0x5b, 0x5f, 0x00, 0x76, 0xf7, 0xa2, 0xb6, 0xc9, 0x6a, 0xf6, 0xb1, - 0x7d, 0xd1, 0x70, 0xa5, 0x9e, 0xa4, 0x4a, 0x9d, 0x41, 0x8f, 0x74, 0x52, 0xca, 0x77, 0xb9, 0x4e, - 0xd3, 0xb7, 0x8c, 0xd3, 0xef, 0x64, 0x29, 0xf0, 0xbb, 0xd1, 0x4f, 0x8b, 0x8b, 0x4d, 0x27, 0xbb, - 0xb6, 0xeb, 0xcb, 0x63, 0xb3, 0x0f, 0xf4, 0x81, 0xc9, 0xe5, 0xba, 0x87, 0xca, 0x35, 0x85, 0x8e, - 0x77, 0x92, 0x8b, 0xe4, 0xb2, 0xe8, 0x83, 0x92, 0x7b, 0x17, 0xf2, 0x54, 0x77, 0xde, 0xfe, 0x64, - 0x37, 0xfb, 0x60, 0x5f, 0xb8, 0x5c, 0x92, 0xfb, 0xa8, 0x24, 0x33, 0x68, 0xaa, 0xa3, 0x24, 0x2c, - 0xf5, 0xbd, 0xdd, 0x37, 0x07, 0xae, 0x1f, 0x81, 0xe9, 0x0e, 0x2d, 0x3a, 0xbb, 0x3d, 0xce, 0xb8, - 0xba, 0x3c, 0x84, 0xed, 0xf9, 0xd0, 0xf5, 0x76, 0x7f, 0xb4, 0xb5, 0xcf, 0x03, 0xb1, 0xdf, 0x8a, - 0x01, 0x5a, 0xb2, 0x6b, 0x73, 0x16, 0x66, 0xff, 0x40, 0x92, 0x8f, 0xf2, 0xd0, 0x0b, 0x2f, 0xe9, - 0x75, 0xbd, 0xf0, 0x5a, 0x0a, 0xbc, 0x99, 0x8a, 0xec, 0xef, 0x5d, 0x66, 0xdf, 0x0f, 0xa7, 0xa2, - 0x3f, 0x96, 0x87, 0x53, 0xed, 0xef, 0x55, 0xc7, 0x6e, 0xdf, 0x03, 0x8c, 0xf8, 0x41, 0x1f, 0xa1, - 0xf0, 0xf7, 0x90, 0x83, 0x5d, 0xde, 0x43, 0x66, 0x3a, 0x3e, 0x7a, 0xe4, 0xd4, 0xe8, 0xac, 0xf8, - 0x84, 0xe9, 0x50, 0x7f, 0x37, 0x61, 0xf9, 0x37, 0x4e, 0xbd, 0x2d, 0x84, 0xe3, 0x90, 0x6d, 0x75, - 0x27, 0x77, 0x50, 0x7f, 0x24, 0x0a, 0xe9, 0x25, 0xbb, 0x56, 0xaa, 0x6a, 0xce, 0x1d, 0xf2, 0xb5, - 0xa7, 0x3b, 0x3f, 0x6a, 0x41, 0xb7, 0x6e, 0x4e, 0x8f, 0x32, 0x9b, 0x76, 0xb1, 0x64, 0x03, 0xc6, - 0x42, 0x4f, 0x89, 0xb9, 0x67, 0x15, 0x0f, 0xf2, 0xa2, 0x39, 0xc4, 0x4a, 0xa6, 0x6f, 0x10, 0x7c, - 0xfe, 0x8d, 0x76, 0xdb, 0x3b, 0x33, 0x73, 0xa8, 0x8b, 0x77, 0xf2, 0x05, 0xa0, 0xd7, 0x67, 0x59, - 0xc8, 0x84, 0x3b, 0xc5, 0xed, 0xb1, 0x3f, 0x90, 0x60, 0x78, 0xc9, 0x16, 0xa9, 0x20, 0xfe, 0x09, - 0x7d, 0x7f, 0xf4, 0x84, 0xfb, 0xfd, 0xef, 0x68, 0x7f, 0x7e, 0x2b, 0xbe, 0x09, 0xee, 0x19, 0xe1, - 0x10, 0x4c, 0xf8, 0xf4, 0x74, 0xf5, 0xff, 0xed, 0x08, 0x8d, 0x8f, 0x05, 0x5c, 0xd3, 0x74, 0x37, - 0x8b, 0xc4, 0x7f, 0x5e, 0x5f, 0x57, 0x78, 0x76, 0x8e, 0x1d, 0xd4, 0xce, 0x3b, 0x34, 0x40, 0x84, - 0xec, 0xe9, 0x6e, 0x7c, 0x2d, 0xb5, 0xbe, 0xfd, 0x91, 0xf6, 0xf1, 0x59, 0x9d, 0xd0, 0x0b, 0x1f, - 0xf9, 0x35, 0x09, 0x46, 0x96, 0xec, 0xda, 0x86, 0x5e, 0xfd, 0xff, 0xde, 0x7f, 0xb7, 0xe0, 0x50, - 0x40, 0xd3, 0x3b, 0x64, 0xd2, 0x33, 0xaf, 0xc4, 0x20, 0xba, 0x64, 0xd7, 0xd0, 0x4b, 0x30, 0x16, - 0x4e, 0x1a, 0x3a, 0xe6, 0x82, 0xad, 0x33, 0x42, 0xe7, 0xf5, 0x5a, 0xe7, 0xd9, 0x03, 0xed, 0xc0, - 0x48, 0x70, 0xe6, 0x38, 0xd9, 0x85, 0x49, 0x00, 0x33, 0xfb, 0x48, 0xbf, 0x98, 0x6e, 0x63, 0xef, - 0x80, 0x84, 0x1b, 0xf4, 0xee, 0xee, 0x42, 0x2d, 0x90, 0x3a, 0x67, 0xb7, 0x6d, 0xc2, 0x0a, 0xb1, - 0x5e, 0x38, 0xa4, 0x74, 0xb3, 0x5e, 0x08, 0xb7, 0xab, 0xf5, 0x3a, 0x0d, 0xad, 0x4d, 0x00, 0xdf, - 0x38, 0xb8, 0xb7, 0x0b, 0x07, 0x0f, 0x2d, 0xfb, 0x70, 0x5f, 0x68, 0xee, 0xa1, 0xd3, 0x6d, 0x4e, - 0xc6, 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd4, 0x8f, 0xbc, 0xb2, 0xb6, 0x97, 0x00, 0x00, + 0xbb, 0xee, 0x70, 0x09, 0x8e, 0xa7, 0x77, 0x47, 0xe0, 0x68, 0x78, 0xca, 0x50, 0xf5, 0xbd, 0x0e, + 0xaf, 0x3e, 0x3b, 0x44, 0xb3, 0x8b, 0x10, 0xcd, 0xeb, 0x7b, 0xe8, 0x28, 0xcb, 0xa7, 0xcb, 0x4d, + 0xab, 0xce, 0x63, 0xd0, 0x10, 0x29, 0x6f, 0x58, 0x75, 0x12, 0x9b, 0xc4, 0x45, 0x7f, 0xe9, 0x64, + 0x8a, 0xdf, 0xde, 0xcf, 0xa5, 0x3f, 0xfa, 0xea, 0xf4, 0xc0, 0xe7, 0x5f, 0x9d, 0x1e, 0xf8, 0xc1, + 0xa7, 0xa6, 0x07, 0x5e, 0xfe, 0x83, 0x99, 0x81, 0xc2, 0x4e, 0x58, 0xbd, 0xaf, 0xf4, 0x9c, 0x4d, + 0x13, 0x79, 0x7d, 0x8f, 0x06, 0xa2, 0x55, 0xe9, 0x85, 0x38, 0x55, 0x4e, 0x1c, 0xa0, 0x4e, 0x85, + 0x0f, 0x50, 0x9f, 0xc3, 0xf5, 0xfa, 0x25, 0xdd, 0xb8, 0x4a, 0x7b, 0xd5, 0xb3, 0xc1, 0x47, 0x22, + 0x30, 0xd5, 0x32, 0x6d, 0xf2, 0x0c, 0xa3, 0xd3, 0xf3, 0xd7, 0x1c, 0x24, 0x8a, 0x22, 0x71, 0xc9, + 0xc0, 0x90, 0x8d, 0x2b, 0x86, 0x5e, 0x65, 0x23, 0x3d, 0xaa, 0x88, 0x22, 0x51, 0x5b, 0x57, 0x75, + 0xc3, 0xe6, 0x77, 0xee, 0x59, 0xa1, 0xf0, 0x71, 0x69, 0x7f, 0xf9, 0xc2, 0x88, 0x68, 0x49, 0xa8, + 0xf9, 0x68, 0xcf, 0x23, 0xe5, 0x1d, 0xa2, 0xa5, 0xab, 0x44, 0xe0, 0x58, 0xb9, 0x5f, 0xab, 0xfc, + 0x62, 0x04, 0xa6, 0xc3, 0x56, 0x21, 0x69, 0x9b, 0xed, 0xa8, 0x0d, 0xb3, 0x93, 0x59, 0xce, 0x43, + 0x72, 0x5d, 0xe0, 0xec, 0xdb, 0x2e, 0x37, 0xf6, 0x69, 0x97, 0x51, 0xb7, 0x29, 0x61, 0x98, 0x33, + 0x7d, 0x1a, 0xc6, 0xd5, 0xe3, 0x40, 0x96, 0xf9, 0x6c, 0x0c, 0x4e, 0xd0, 0x47, 0x59, 0x56, 0x43, + 0xd3, 0x9d, 0xd3, 0x15, 0x6b, 0xcf, 0x74, 0x68, 0xe2, 0x66, 0x6c, 0x71, 0xbb, 0x8c, 0x7b, 0xd5, + 0xb3, 0xac, 0xba, 0xc3, 0xc8, 0xd9, 0x82, 0xf8, 0x2a, 0xa1, 0x23, 0x16, 0x71, 0x0c, 0x47, 0xad, + 0x73, 0x4b, 0xb1, 0x02, 0x81, 0xb2, 0x87, 0x5c, 0x11, 0x06, 0xd5, 0xc4, 0x1b, 0xae, 0x3a, 0x56, + 0xb7, 0xd8, 0x7d, 0xf8, 0x28, 0x1d, 0x50, 0x09, 0x02, 0xa0, 0x57, 0xdf, 0x27, 0x21, 0xae, 0x36, + 0xd9, 0x55, 0x8e, 0x28, 0x19, 0x69, 0xb4, 0x20, 0x5f, 0x82, 0x21, 0x7e, 0xa0, 0x8c, 0xd2, 0x10, + 0xdd, 0xc1, 0x7b, 0xb4, 0x9d, 0x94, 0x42, 0x7e, 0xa2, 0x59, 0x88, 0x53, 0xe1, 0xf9, 0x04, 0x92, + 0x99, 0x6d, 0x91, 0x7e, 0x96, 0x0a, 0xa9, 0x30, 0x34, 0xf9, 0x19, 0x48, 0x14, 0x8d, 0x86, 0xa6, + 0x1b, 0x41, 0x6e, 0x49, 0xc6, 0x8d, 0xca, 0x6c, 0x36, 0x79, 0xbe, 0xa1, 0xb0, 0x02, 0x3a, 0x0c, + 0x83, 0xec, 0x7d, 0x04, 0xbf, 0x8e, 0xc2, 0x4b, 0xf2, 0x1c, 0x0c, 0x51, 0xde, 0x2b, 0x26, 0x42, + 0xfc, 0x65, 0x1d, 0x7f, 0x88, 0x41, 0x53, 0x53, 0xce, 0x3e, 0xe2, 0x09, 0x8b, 0x20, 0x56, 0x55, + 0x1d, 0x95, 0xeb, 0x4d, 0x7f, 0xcb, 0x6f, 0x86, 0x04, 0x67, 0x62, 0xa3, 0x33, 0x10, 0x35, 0x4c, + 0x9b, 0x5f, 0x28, 0xc9, 0x76, 0x52, 0x65, 0xc5, 0x2c, 0xc4, 0x48, 0xa6, 0xa2, 0x10, 0xe4, 0x82, + 0xd2, 0x31, 0xa8, 0x3e, 0xe9, 0x0b, 0xaa, 0xbe, 0x2e, 0xf7, 0xfd, 0x64, 0x5d, 0xda, 0xe2, 0x0e, + 0xae, 0xb3, 0x7c, 0x2a, 0x02, 0x53, 0xbe, 0xda, 0x2b, 0xd8, 0xb2, 0x35, 0x43, 0xe7, 0xf3, 0x39, + 0xf3, 0x16, 0xe4, 0x13, 0x92, 0xd7, 0x77, 0x70, 0x97, 0x37, 0x41, 0x34, 0x6f, 0x9a, 0x28, 0x0b, + 0x09, 0x5a, 0xae, 0x18, 0xcc, 0x5f, 0x62, 0x8a, 0x5b, 0x26, 0x75, 0xb6, 0xb1, 0xe5, 0x5c, 0x55, + 0x2d, 0xf7, 0x09, 0xa1, 0x28, 0xcb, 0x4f, 0x41, 0x72, 0xce, 0xd0, 0x6d, 0xac, 0xdb, 0x4d, 0x3a, + 0x06, 0x37, 0xeb, 0x46, 0x65, 0x87, 0x73, 0x60, 0x05, 0x62, 0x70, 0xd5, 0x34, 0x29, 0x65, 0x4c, + 0x21, 0x3f, 0x59, 0x6e, 0x58, 0x58, 0xeb, 0x68, 0xa2, 0xa7, 0xf6, 0x6f, 0x22, 0xae, 0xa4, 0x6b, + 0xa3, 0xff, 0x2d, 0xc1, 0xf1, 0xd6, 0x01, 0xb5, 0x83, 0xf7, 0xec, 0xfd, 0x8e, 0xa7, 0xe7, 0x21, + 0xb9, 0x4a, 0xdf, 0xf1, 0x5f, 0xc2, 0x7b, 0x28, 0x0b, 0x43, 0xb8, 0x7a, 0xe6, 0xec, 0xd9, 0x47, + 0x9f, 0x62, 0xde, 0x7e, 0x71, 0x40, 0x11, 0x00, 0x34, 0x05, 0x49, 0x1b, 0x57, 0xcc, 0x33, 0x67, + 0xcf, 0xed, 0x3c, 0xca, 0xdc, 0x8b, 0x64, 0x40, 0x2e, 0x28, 0x97, 0x20, 0x5a, 0xbf, 0xfe, 0xa9, + 0x69, 0xa9, 0x10, 0x87, 0xa8, 0xdd, 0x6c, 0xdc, 0x51, 0x1f, 0x79, 0x25, 0x0e, 0x33, 0x7e, 0x4a, + 0x1a, 0xa9, 0xdc, 0xac, 0x84, 0xdb, 0x20, 0xed, 0xb3, 0x01, 0xc5, 0xe8, 0x90, 0xcc, 0x76, 0xb5, + 0xa4, 0xfc, 0xeb, 0x12, 0xa4, 0xdc, 0x54, 0x69, 0x0d, 0x3b, 0xe8, 0xbc, 0x3f, 0xff, 0xe1, 0xc3, + 0xe6, 0xd8, 0x6c, 0xb8, 0x2d, 0x2f, 0xa5, 0x53, 0x7c, 0xe8, 0xe8, 0x09, 0xea, 0x88, 0xa6, 0x61, + 0xf3, 0x67, 0x65, 0x3d, 0x48, 0x5d, 0x64, 0xf4, 0x10, 0x20, 0x1a, 0xe1, 0xca, 0x57, 0x0c, 0x47, + 0xd3, 0x6b, 0x65, 0xd3, 0xb8, 0xca, 0x1f, 0xeb, 0x46, 0x95, 0x34, 0xad, 0xb9, 0x4c, 0x2b, 0x56, + 0x09, 0x9c, 0x08, 0x9d, 0x74, 0xb9, 0x04, 0xd3, 0x3b, 0x12, 0x04, 0x44, 0x11, 0x9d, 0x87, 0x21, + 0xb3, 0xb9, 0x59, 0x16, 0x11, 0x63, 0xf8, 0xcc, 0xf1, 0x76, 0xe3, 0x5f, 0xf8, 0x07, 0x8f, 0x00, + 0x83, 0x66, 0x73, 0x93, 0x78, 0xcb, 0x5d, 0x90, 0x6a, 0x23, 0xcc, 0xf0, 0x15, 0x4f, 0x0e, 0xfa, + 0xf9, 0x08, 0xae, 0x41, 0xd9, 0xb4, 0x34, 0xc3, 0xd2, 0x9c, 0x3d, 0x9a, 0xbf, 0x46, 0x95, 0xb4, + 0xa8, 0x58, 0xe5, 0x70, 0x79, 0x07, 0xc6, 0xd6, 0xe8, 0xfa, 0xd6, 0x93, 0xfc, 0xac, 0x27, 0x9f, + 0xd4, 0x5b, 0xbe, 0x8e, 0x92, 0x45, 0x5a, 0x24, 0x2b, 0x3c, 0xdb, 0xd1, 0x3b, 0x9f, 0xd8, 0xbf, + 0x77, 0x06, 0x33, 0xc4, 0x3f, 0x3e, 0x1a, 0x18, 0x9c, 0xcc, 0x39, 0xfd, 0xe1, 0xab, 0x5f, 0xc7, + 0xec, 0x95, 0x4d, 0x64, 0xbb, 0x4f, 0xaa, 0xd9, 0x1e, 0x61, 0x34, 0xdb, 0x73, 0x08, 0xc9, 0x4f, + 0xc1, 0xc8, 0xaa, 0x6a, 0x39, 0x6b, 0xd8, 0xb9, 0x88, 0xd5, 0x2a, 0xb6, 0x82, 0xb3, 0xee, 0x88, + 0x98, 0x75, 0x11, 0xc4, 0xe8, 0xd4, 0xca, 0x66, 0x1d, 0xfa, 0x5b, 0xde, 0x86, 0x18, 0xbd, 0x19, + 0xea, 0xce, 0xc8, 0x9c, 0x82, 0xcd, 0xc8, 0x24, 0x96, 0xee, 0x39, 0xd8, 0x16, 0xe9, 0x2d, 0x2d, + 0xa0, 0xc7, 0xc5, 0xbc, 0x1a, 0xed, 0x3e, 0xaf, 0x72, 0x47, 0xe4, 0xb3, 0x6b, 0x1d, 0x86, 0x0a, + 0x24, 0x14, 0x2f, 0x14, 0x5d, 0x41, 0x24, 0x4f, 0x10, 0xb4, 0x04, 0x63, 0xa6, 0x6a, 0x39, 0xf4, + 0x49, 0xcc, 0x36, 0xd5, 0x82, 0xfb, 0xfa, 0x74, 0xeb, 0xc8, 0x0b, 0x28, 0xcb, 0x5b, 0x19, 0x31, + 0xfd, 0x40, 0xf9, 0x8f, 0x62, 0x30, 0xc8, 0x8d, 0xf1, 0x26, 0x18, 0xe2, 0x66, 0xe5, 0xde, 0x79, + 0x62, 0xb6, 0x75, 0x62, 0x9a, 0x75, 0x27, 0x10, 0xce, 0x4f, 0xd0, 0xa0, 0xfb, 0x20, 0x51, 0xd9, + 0x56, 0x35, 0xbd, 0xac, 0x55, 0xc5, 0x56, 0xc3, 0x6b, 0x37, 0xa7, 0x87, 0xe6, 0x08, 0x6c, 0xa1, + 0xa8, 0x0c, 0xd1, 0xca, 0x85, 0x2a, 0xc9, 0x04, 0xb6, 0xb1, 0x56, 0xdb, 0x76, 0xf8, 0x08, 0xe3, + 0x25, 0xf4, 0x24, 0xc4, 0x88, 0x43, 0xf0, 0x07, 0x93, 0xd9, 0x96, 0x0d, 0x1f, 0x37, 0xd9, 0x2b, + 0x24, 0x48, 0xc3, 0x1f, 0xfa, 0xf6, 0xb4, 0xa4, 0x50, 0x0a, 0x34, 0x07, 0x23, 0x75, 0xd5, 0x76, + 0xca, 0x74, 0x06, 0x23, 0xcd, 0xc7, 0xf9, 0x7a, 0xbb, 0xc5, 0x20, 0xdc, 0xb0, 0x5c, 0xf4, 0x61, + 0x42, 0xc5, 0x40, 0x55, 0x74, 0x12, 0xd2, 0x94, 0x49, 0xc5, 0x68, 0x34, 0x34, 0x87, 0xe5, 0x56, + 0x83, 0xd4, 0xee, 0xa3, 0x04, 0x3e, 0x47, 0xc1, 0x34, 0xc3, 0x3a, 0x06, 0x49, 0xfa, 0x44, 0x8b, + 0xa2, 0xb0, 0xeb, 0xc8, 0x09, 0x02, 0xa0, 0x95, 0xf7, 0xc3, 0x98, 0x17, 0x1f, 0x19, 0x4a, 0x82, + 0x71, 0xf1, 0xc0, 0x14, 0xf1, 0x11, 0x98, 0xd4, 0xf1, 0x2e, 0xbd, 0x20, 0x1d, 0xc0, 0x4e, 0x52, + 0x6c, 0x44, 0xea, 0x2e, 0x07, 0x29, 0xee, 0x85, 0xd1, 0x8a, 0x30, 0x3e, 0xc3, 0x05, 0x8a, 0x3b, + 0xe2, 0x42, 0x29, 0xda, 0x51, 0x48, 0xa8, 0xa6, 0xc9, 0x10, 0x86, 0x79, 0x7c, 0x34, 0x4d, 0x5a, + 0x75, 0x0a, 0xc6, 0xa9, 0x8e, 0x16, 0xb6, 0x9b, 0x75, 0x87, 0x33, 0x49, 0x51, 0x9c, 0x31, 0x52, + 0xa1, 0x30, 0x38, 0xc5, 0xbd, 0x1b, 0x46, 0xf0, 0x15, 0xad, 0x8a, 0xf5, 0x0a, 0x66, 0x78, 0x23, + 0x14, 0x2f, 0x25, 0x80, 0x14, 0xe9, 0x01, 0x70, 0xe3, 0x5e, 0x59, 0xc4, 0xe4, 0x51, 0xc6, 0x4f, + 0xc0, 0xf3, 0x0c, 0x2c, 0x67, 0x20, 0x56, 0x54, 0x1d, 0x95, 0x24, 0x18, 0xce, 0x2e, 0x9b, 0x68, + 0x52, 0x0a, 0xf9, 0x29, 0xbf, 0x1e, 0x81, 0xd8, 0x65, 0xc3, 0xc1, 0xe8, 0x31, 0x5f, 0x02, 0x38, + 0xda, 0xce, 0x9f, 0xd7, 0xb4, 0x9a, 0x8e, 0xab, 0x4b, 0x76, 0xcd, 0xf7, 0x3d, 0x05, 0xcf, 0x9d, + 0x22, 0x01, 0x77, 0x9a, 0x84, 0xb8, 0x65, 0x34, 0xf5, 0xaa, 0xb8, 0xc9, 0x4b, 0x0b, 0xa8, 0x04, + 0x09, 0xd7, 0x4b, 0x62, 0xbd, 0xbc, 0x64, 0x8c, 0x78, 0x09, 0xf1, 0x61, 0x0e, 0x50, 0x86, 0x36, + 0xb9, 0xb3, 0x14, 0x20, 0xe9, 0x06, 0x2f, 0xee, 0x6d, 0xfd, 0x39, 0xac, 0x47, 0x46, 0x26, 0x13, + 0xb7, 0xef, 0x5d, 0xe3, 0x31, 0x8f, 0x4b, 0xbb, 0x15, 0xdc, 0x7a, 0x01, 0xb7, 0xe2, 0xdf, 0x76, + 0x18, 0xa2, 0x7a, 0x79, 0x6e, 0xc5, 0xbe, 0xef, 0x70, 0x1c, 0x92, 0xb6, 0x56, 0xd3, 0x55, 0xa7, + 0x69, 0x61, 0xee, 0x79, 0x1e, 0x40, 0xfe, 0x8a, 0x04, 0x83, 0xcc, 0x93, 0x7d, 0x76, 0x93, 0xda, + 0xdb, 0x2d, 0xd2, 0xc9, 0x6e, 0xd1, 0x83, 0xdb, 0x2d, 0x0f, 0xe0, 0x0a, 0x63, 0xf3, 0x27, 0xf7, + 0x6d, 0x32, 0x06, 0x26, 0xe2, 0x9a, 0x56, 0xe3, 0x03, 0xd5, 0x47, 0x24, 0xff, 0x07, 0x89, 0x24, + 0xb1, 0xbc, 0x1e, 0xe5, 0x61, 0x44, 0xc8, 0x55, 0xde, 0xaa, 0xab, 0x35, 0xee, 0x3b, 0x27, 0x3a, + 0x0a, 0x77, 0xa1, 0xae, 0xd6, 0x94, 0x61, 0x2e, 0x0f, 0x29, 0xb4, 0xef, 0x87, 0x48, 0x87, 0x7e, + 0x08, 0x74, 0x7c, 0xf4, 0x60, 0x1d, 0x1f, 0xe8, 0xa2, 0x58, 0xb8, 0x8b, 0xbe, 0x18, 0xa1, 0x8b, + 0x19, 0xd3, 0xb0, 0xd5, 0xfa, 0x8f, 0x63, 0x44, 0x1c, 0x83, 0xa4, 0x69, 0xd4, 0xcb, 0xac, 0x86, + 0xdd, 0x70, 0x4f, 0x98, 0x46, 0x5d, 0x69, 0xe9, 0xf6, 0xf8, 0x6d, 0x1a, 0x2e, 0x83, 0xb7, 0xc1, + 0x6a, 0x43, 0x61, 0xab, 0x59, 0x90, 0x62, 0xa6, 0xe0, 0x73, 0xd9, 0x23, 0xc4, 0x06, 0x74, 0x72, + 0x94, 0x5a, 0xe7, 0x5e, 0x26, 0x36, 0xc3, 0x54, 0x38, 0x1e, 0xa1, 0x60, 0xa1, 0xbf, 0xdd, 0x2a, + 0xd8, 0xef, 0x96, 0x0a, 0xc7, 0x93, 0xff, 0xa6, 0x04, 0xb0, 0x48, 0x2c, 0x4b, 0xf5, 0x25, 0xb3, + 0x90, 0x4d, 0x45, 0x28, 0x07, 0x5a, 0x9e, 0xea, 0xd4, 0x69, 0xbc, 0xfd, 0x94, 0xed, 0x97, 0x7b, + 0x0e, 0x46, 0x3c, 0x67, 0xb4, 0xb1, 0x10, 0x66, 0xaa, 0x4b, 0x56, 0xbd, 0x86, 0x1d, 0x25, 0x75, + 0xc5, 0x57, 0x92, 0xff, 0xb9, 0x04, 0x49, 0x2a, 0xd3, 0x12, 0x76, 0xd4, 0x40, 0x1f, 0x4a, 0x07, + 0xef, 0xc3, 0x13, 0x00, 0x8c, 0x8d, 0xad, 0x5d, 0xc3, 0xdc, 0xb3, 0x92, 0x14, 0xb2, 0xa6, 0x5d, + 0xc3, 0xe8, 0x9c, 0x6b, 0xf0, 0x68, 0x77, 0x83, 0x8b, 0xac, 0x9b, 0x9b, 0xfd, 0x08, 0x0c, 0xd1, + 0x4f, 0x54, 0xed, 0xda, 0x3c, 0x91, 0x1e, 0xd4, 0x9b, 0x8d, 0xf5, 0x5d, 0x5b, 0x7e, 0x11, 0x86, + 0xd6, 0x77, 0xd9, 0xde, 0xc8, 0x31, 0x48, 0x5a, 0x86, 0xc1, 0xe7, 0x64, 0x96, 0x0b, 0x25, 0x08, + 0x80, 0x4e, 0x41, 0x62, 0x3f, 0x20, 0xe2, 0xed, 0x07, 0x78, 0x1b, 0x1a, 0xd1, 0xbe, 0x36, 0x34, + 0x4e, 0xfd, 0x3b, 0x09, 0x86, 0x7d, 0xf1, 0x01, 0x3d, 0x0a, 0x87, 0x0a, 0x8b, 0x2b, 0x73, 0x97, + 0xca, 0x0b, 0xc5, 0xf2, 0x85, 0xc5, 0xfc, 0xbc, 0xf7, 0x86, 0x2b, 0x7b, 0xf8, 0xfa, 0x8d, 0x19, + 0xe4, 0xc3, 0xdd, 0xd0, 0xe9, 0x8e, 0x12, 0x3a, 0x0d, 0x93, 0x41, 0x92, 0x7c, 0x61, 0xad, 0xb4, + 0xbc, 0x9e, 0x96, 0xb2, 0x87, 0xae, 0xdf, 0x98, 0x19, 0xf7, 0x51, 0xe4, 0x37, 0x6d, 0xac, 0x3b, + 0xad, 0x04, 0x73, 0x2b, 0x4b, 0x4b, 0x0b, 0xeb, 0xe9, 0x48, 0x0b, 0x01, 0x0f, 0xd8, 0x0f, 0xc0, + 0x78, 0x90, 0x60, 0x79, 0x61, 0x31, 0x1d, 0xcd, 0xa2, 0xeb, 0x37, 0x66, 0x46, 0x7d, 0xd8, 0xcb, + 0x5a, 0x3d, 0x9b, 0xf8, 0xc0, 0xa7, 0xa7, 0x06, 0x7e, 0xe5, 0x97, 0xa7, 0x24, 0xa2, 0xd9, 0x48, + 0x20, 0x46, 0xa0, 0x87, 0xe0, 0xc8, 0xda, 0xc2, 0xfc, 0x72, 0xa9, 0x58, 0x5e, 0x5a, 0x9b, 0x17, + 0x7b, 0xd0, 0x42, 0xbb, 0xb1, 0xeb, 0x37, 0x66, 0x86, 0xb9, 0x4a, 0x9d, 0xb0, 0x57, 0x95, 0xd2, + 0xe5, 0x95, 0xf5, 0x52, 0x5a, 0x62, 0xd8, 0xab, 0x16, 0xbe, 0x62, 0x38, 0xec, 0x1b, 0x76, 0x8f, + 0xc0, 0xd1, 0x36, 0xd8, 0xae, 0x62, 0xe3, 0xd7, 0x6f, 0xcc, 0x8c, 0xac, 0x5a, 0x98, 0x8d, 0x1f, + 0x4a, 0x31, 0x0b, 0x99, 0x56, 0x8a, 0x95, 0xd5, 0x95, 0xb5, 0xfc, 0x62, 0x7a, 0x26, 0x9b, 0xbe, + 0x7e, 0x63, 0x26, 0x25, 0x82, 0x21, 0xdd, 0xe8, 0x77, 0x35, 0xbb, 0x93, 0x2b, 0x9e, 0x3f, 0x7d, + 0x18, 0xee, 0xe9, 0x70, 0xc6, 0x24, 0x4e, 0x27, 0x0e, 0x74, 0xca, 0xd4, 0x71, 0x9f, 0x3d, 0xdb, + 0x63, 0xfb, 0xb9, 0xf7, 0xd2, 0xe9, 0xe0, 0x27, 0x58, 0xd9, 0xae, 0x8b, 0x3b, 0xf9, 0x83, 0x12, + 0x8c, 0x5e, 0xd4, 0x6c, 0xc7, 0xb0, 0xb4, 0x8a, 0x5a, 0xa7, 0x2f, 0xb7, 0xce, 0xf5, 0x1b, 0x5b, + 0x43, 0x43, 0xfd, 0x69, 0x18, 0xbc, 0xa2, 0xd6, 0x59, 0x50, 0x8b, 0xd2, 0x0f, 0xcd, 0x74, 0x38, + 0xf2, 0x71, 0x43, 0x9b, 0x60, 0xc0, 0xc8, 0xe4, 0x5f, 0x8b, 0xc0, 0x18, 0x1d, 0x0c, 0x36, 0xfb, + 0x04, 0x19, 0x59, 0x63, 0x15, 0x20, 0x66, 0xa9, 0x0e, 0xdf, 0x34, 0x2c, 0xcc, 0xf2, 0xd3, 0xc7, + 0xfb, 0xfa, 0x38, 0x4b, 0x2b, 0xe2, 0x8a, 0x42, 0x69, 0xd1, 0xdb, 0x21, 0xd1, 0x50, 0x77, 0xcb, + 0x94, 0x0f, 0x5b, 0xb9, 0xe4, 0xf7, 0xc7, 0xe7, 0xd6, 0xcd, 0xe9, 0xb1, 0x3d, 0xb5, 0x51, 0xcf, + 0xc9, 0x82, 0x8f, 0xac, 0x0c, 0x35, 0xd4, 0x5d, 0x22, 0x22, 0x32, 0x61, 0x8c, 0x40, 0x2b, 0xdb, + 0xaa, 0x5e, 0xc3, 0xac, 0x11, 0xba, 0x05, 0x5a, 0xb8, 0xb8, 0xef, 0x46, 0x0e, 0x7b, 0x8d, 0xf8, + 0xd8, 0xc9, 0xca, 0x48, 0x43, 0xdd, 0x9d, 0xa3, 0x00, 0xd2, 0x62, 0x2e, 0xf1, 0xd1, 0x57, 0xa7, + 0x07, 0xe8, 0x89, 0xee, 0xb7, 0x24, 0x00, 0xcf, 0x62, 0xe8, 0xed, 0x90, 0xae, 0xb8, 0x25, 0x4a, + 0x2b, 0xce, 0x26, 0xef, 0xef, 0xd4, 0x17, 0x21, 0x7b, 0xb3, 0xb9, 0xf9, 0x9b, 0x37, 0xa7, 0x25, + 0x65, 0xac, 0x12, 0xea, 0x8a, 0xb7, 0xc1, 0x70, 0xd3, 0xac, 0xaa, 0x0e, 0x2e, 0xd3, 0x75, 0x5c, + 0xa4, 0xe7, 0x3c, 0x3f, 0x45, 0x78, 0xdd, 0xba, 0x39, 0x8d, 0x98, 0x5a, 0x3e, 0x62, 0x99, 0xce, + 0xfe, 0xc0, 0x20, 0x84, 0xc0, 0xa7, 0xd3, 0xd7, 0x25, 0x18, 0x2e, 0xfa, 0xee, 0x54, 0x66, 0x60, + 0xa8, 0x61, 0xe8, 0xda, 0x0e, 0xf7, 0xc7, 0xa4, 0x22, 0x8a, 0x28, 0x0b, 0x09, 0xf6, 0x98, 0xd5, + 0xd9, 0x13, 0x5b, 0xa1, 0xa2, 0x4c, 0xa8, 0xae, 0xe2, 0x4d, 0x5b, 0x13, 0xbd, 0xa1, 0x88, 0x22, + 0xba, 0x00, 0x69, 0x1b, 0x57, 0x9a, 0x96, 0xe6, 0xec, 0x95, 0x2b, 0x86, 0xee, 0xa8, 0x15, 0x87, + 0x3d, 0x8b, 0x2c, 0x1c, 0xbb, 0x75, 0x73, 0xfa, 0x08, 0x93, 0x35, 0x8c, 0x21, 0x2b, 0x63, 0x02, + 0x34, 0xc7, 0x20, 0xa4, 0x85, 0x2a, 0x76, 0x54, 0xad, 0x6e, 0x67, 0xd8, 0xe5, 0x04, 0x51, 0xf4, + 0xe9, 0xf2, 0xb9, 0x21, 0xff, 0xc6, 0xd6, 0x05, 0x48, 0x1b, 0x26, 0xb6, 0x02, 0x89, 0xa8, 0x14, + 0x6e, 0x39, 0x8c, 0x21, 0x2b, 0x63, 0x02, 0x24, 0x92, 0x54, 0x87, 0x74, 0xb3, 0x58, 0x28, 0x9a, + 0xcd, 0x4d, 0x6f, 0x3f, 0x6c, 0xb2, 0xa5, 0x37, 0xf2, 0xfa, 0x5e, 0xe1, 0x31, 0x8f, 0x7b, 0x98, + 0x4e, 0xfe, 0xc6, 0x97, 0x1e, 0x9e, 0xe4, 0xae, 0xe1, 0xed, 0x4f, 0x5d, 0xc2, 0x7b, 0xa4, 0xfb, + 0x39, 0xea, 0x2a, 0xc5, 0x24, 0x69, 0xe7, 0x8b, 0xaa, 0x56, 0x17, 0xcf, 0xfb, 0x15, 0x5e, 0x42, + 0x39, 0x18, 0xb4, 0x1d, 0xd5, 0x69, 0xda, 0xfc, 0xa4, 0x57, 0xee, 0xe4, 0x6a, 0x05, 0x43, 0xaf, + 0xae, 0x51, 0x4c, 0x85, 0x53, 0xa0, 0x0b, 0x30, 0xc8, 0x8f, 0xd0, 0xe3, 0xfb, 0x1e, 0xdf, 0xf4, + 0xae, 0x04, 0xa3, 0x26, 0x16, 0xa9, 0xe2, 0x3a, 0xae, 0xb1, 0xb4, 0x6a, 0x5b, 0x25, 0xab, 0x0f, + 0xfa, 0xed, 0xbd, 0xc2, 0xc2, 0xbe, 0x07, 0x21, 0xb7, 0x54, 0x98, 0x9f, 0xac, 0x8c, 0xb9, 0xa0, + 0x35, 0x0a, 0x41, 0x97, 0x02, 0x97, 0x7f, 0xf9, 0x07, 0x2a, 0xef, 0xee, 0xa4, 0xbe, 0xcf, 0xa7, + 0xc5, 0xfe, 0x84, 0xff, 0xea, 0xf0, 0x05, 0x48, 0x37, 0xf5, 0x4d, 0x43, 0xa7, 0x6f, 0x70, 0x79, + 0x7e, 0x4f, 0xd6, 0x77, 0x51, 0xbf, 0x73, 0x84, 0x31, 0x64, 0x65, 0xcc, 0x05, 0x5d, 0x64, 0xab, + 0x80, 0x2a, 0x8c, 0x7a, 0x58, 0x74, 0xa0, 0x26, 0x7b, 0x0e, 0xd4, 0xbb, 0xf8, 0x40, 0x3d, 0x14, + 0x6e, 0xc5, 0x1b, 0xab, 0x23, 0x2e, 0x90, 0x90, 0xa1, 0x8b, 0x00, 0x5e, 0x78, 0xa0, 0xfb, 0x14, + 0xc3, 0x9d, 0x3b, 0xde, 0x8b, 0x31, 0x62, 0xbd, 0xe7, 0xd1, 0xa2, 0x77, 0xc2, 0x44, 0x43, 0xd3, + 0xcb, 0x36, 0xae, 0x6f, 0x95, 0xb9, 0x81, 0x09, 0x4b, 0xfa, 0x09, 0xa5, 0xc2, 0xe2, 0xfe, 0xfc, + 0xe1, 0xd6, 0xcd, 0xe9, 0x2c, 0x0f, 0xa1, 0xad, 0x2c, 0x65, 0x65, 0xbc, 0xa1, 0xe9, 0x6b, 0xb8, + 0xbe, 0x55, 0x74, 0x61, 0xb9, 0xd4, 0x07, 0x5e, 0x9d, 0x1e, 0xe0, 0xc3, 0x75, 0x40, 0x3e, 0x47, + 0xf7, 0xce, 0xf9, 0x30, 0xc3, 0x36, 0x59, 0x93, 0xa8, 0xa2, 0xc0, 0xaf, 0x1a, 0x78, 0x00, 0x36, + 0xcc, 0x5f, 0xfe, 0x83, 0x19, 0x49, 0xfe, 0x9c, 0x04, 0x83, 0xc5, 0xcb, 0xab, 0xaa, 0x66, 0xa1, + 0x05, 0x18, 0xf7, 0x3c, 0x27, 0x38, 0xc8, 0x8f, 0xdf, 0xba, 0x39, 0x9d, 0x09, 0x3b, 0x97, 0x3b, + 0xca, 0x3d, 0x07, 0x16, 0xc3, 0x7c, 0xa1, 0xd3, 0xc2, 0x35, 0xc0, 0xaa, 0x05, 0x45, 0x6e, 0x5d, + 0xd6, 0x86, 0xd4, 0x2c, 0xc1, 0x10, 0x93, 0xd6, 0x46, 0x39, 0x88, 0x9b, 0xe4, 0x07, 0x3f, 0x18, + 0x98, 0xea, 0xe8, 0xbc, 0x14, 0xdf, 0xdd, 0xc8, 0x24, 0x24, 0xf2, 0x87, 0x23, 0x00, 0xc5, 0xcb, + 0x97, 0xd7, 0x2d, 0xcd, 0xac, 0x63, 0xe7, 0x76, 0x6a, 0xbe, 0x0e, 0x87, 0x7c, 0xab, 0x24, 0xab, + 0x12, 0xd2, 0x7e, 0xe6, 0xd6, 0xcd, 0xe9, 0xe3, 0x61, 0xed, 0x7d, 0x68, 0xb2, 0x32, 0xe1, 0xad, + 0x97, 0xac, 0x4a, 0x5b, 0xae, 0x55, 0xdb, 0x71, 0xb9, 0x46, 0x3b, 0x73, 0xf5, 0xa1, 0xf9, 0xb9, + 0x16, 0x6d, 0xa7, 0xbd, 0x69, 0xd7, 0x60, 0xd8, 0x33, 0x89, 0x8d, 0x8a, 0x90, 0x70, 0xf8, 0x6f, + 0x6e, 0x61, 0xb9, 0xb3, 0x85, 0x05, 0x19, 0xb7, 0xb2, 0x4b, 0x29, 0xff, 0x99, 0x04, 0xe0, 0xf9, + 0xec, 0x4f, 0xa7, 0x8b, 0x91, 0x50, 0xce, 0x03, 0x6f, 0xf4, 0x40, 0xa9, 0x1a, 0xa7, 0x0e, 0xd9, + 0xf3, 0xe7, 0x22, 0x30, 0xb1, 0x21, 0x22, 0xcf, 0x4f, 0xbd, 0x0d, 0x56, 0x61, 0x08, 0xeb, 0x8e, + 0xa5, 0x51, 0x23, 0x90, 0xde, 0x7e, 0xa4, 0x53, 0x6f, 0xb7, 0xd1, 0x89, 0x7e, 0x44, 0x4a, 0x6c, + 0xba, 0x73, 0x36, 0x21, 0x6b, 0xfc, 0x42, 0x14, 0x32, 0x9d, 0x28, 0xd1, 0x1c, 0x8c, 0x55, 0x2c, + 0xcc, 0x2e, 0x5e, 0xf9, 0x77, 0xfe, 0x0a, 0x59, 0x2f, 0xb3, 0x0c, 0x21, 0xc8, 0xca, 0xa8, 0x80, + 0xf0, 0xd9, 0xa3, 0x06, 0x24, 0xed, 0x23, 0x6e, 0x47, 0xef, 0x6f, 0xf5, 0x97, 0xe7, 0xc9, 0x7c, + 0xfa, 0x10, 0x8d, 0x04, 0x19, 0xb0, 0xf9, 0x63, 0xd4, 0x83, 0xd2, 0x09, 0xe4, 0x25, 0x18, 0xd3, + 0x74, 0xcd, 0xd1, 0xd4, 0x7a, 0x79, 0x53, 0xad, 0xab, 0x7a, 0xe5, 0x20, 0x59, 0x33, 0x0b, 0xf9, + 0xbc, 0xd9, 0x10, 0x3b, 0x59, 0x19, 0xe5, 0x90, 0x02, 0x03, 0xa0, 0x8b, 0x30, 0x24, 0x9a, 0x8a, + 0x1d, 0x28, 0xdb, 0x10, 0xe4, 0xbe, 0x04, 0xef, 0xe7, 0xa3, 0x30, 0xae, 0xe0, 0xea, 0xff, 0xef, + 0x8a, 0xfd, 0x75, 0xc5, 0x12, 0x00, 0x1b, 0xee, 0x24, 0xc0, 0x1e, 0xa0, 0x37, 0x48, 0xc0, 0x48, + 0x32, 0x0e, 0x45, 0xdb, 0xf1, 0xf5, 0xc7, 0xcd, 0x08, 0xa4, 0xfc, 0xfd, 0xf1, 0x17, 0x74, 0x56, + 0x42, 0x0b, 0x5e, 0x24, 0x8a, 0xf1, 0x4f, 0xef, 0x76, 0x88, 0x44, 0x2d, 0xde, 0xdb, 0x3d, 0x04, + 0xfd, 0x8f, 0x08, 0x0c, 0xae, 0xaa, 0x96, 0xda, 0xb0, 0x51, 0xa5, 0x25, 0xd3, 0x14, 0xdb, 0x8f, + 0x2d, 0x1f, 0x58, 0xe7, 0xbb, 0x1d, 0x3d, 0x12, 0xcd, 0x8f, 0xb6, 0x49, 0x34, 0xdf, 0x02, 0xa3, + 0x64, 0x39, 0xec, 0xbb, 0xc2, 0x40, 0xac, 0x3d, 0x52, 0x38, 0xea, 0x71, 0x09, 0xd6, 0xb3, 0xd5, + 0xf2, 0x65, 0xff, 0x1d, 0x86, 0x61, 0x82, 0xe1, 0x05, 0x66, 0x42, 0x7e, 0xd8, 0x5b, 0x96, 0xfa, + 0x2a, 0x65, 0x05, 0x1a, 0xea, 0x6e, 0x89, 0x15, 0xd0, 0x22, 0xa0, 0x6d, 0x77, 0x67, 0xa4, 0xec, + 0x99, 0x93, 0xd0, 0x9f, 0xb8, 0x75, 0x73, 0xfa, 0x28, 0xa3, 0x6f, 0xc5, 0x91, 0x95, 0x71, 0x0f, + 0x28, 0xb8, 0x3d, 0x0e, 0x40, 0xf4, 0x2a, 0xb3, 0x2b, 0xdc, 0x6c, 0xb9, 0x73, 0xe8, 0xd6, 0xcd, + 0xe9, 0x71, 0xc6, 0xc5, 0xab, 0x93, 0x95, 0x24, 0x29, 0x14, 0xc9, 0x6f, 0x9f, 0x67, 0x7f, 0x5a, + 0x02, 0xe4, 0x85, 0x7c, 0x05, 0xdb, 0x26, 0x59, 0x9f, 0x91, 0x44, 0xdc, 0x97, 0x35, 0x4b, 0xdd, + 0x13, 0x71, 0x8f, 0x5e, 0x24, 0xe2, 0xbe, 0x91, 0xf2, 0x94, 0x17, 0x1e, 0x23, 0xbd, 0xee, 0x33, + 0x73, 0x17, 0x09, 0xc7, 0xc3, 0x01, 0xf9, 0x5f, 0x4a, 0x70, 0xb4, 0xc5, 0xa3, 0x5c, 0x61, 0xff, + 0x12, 0x20, 0xcb, 0x57, 0xc9, 0xbf, 0xa3, 0xc8, 0x84, 0xde, 0xb7, 0x83, 0x8e, 0x5b, 0x2d, 0x71, + 0xf7, 0xf6, 0x45, 0x78, 0x76, 0x61, 0xfe, 0x9f, 0x49, 0x30, 0xe9, 0x6f, 0xde, 0x55, 0x64, 0x19, + 0x52, 0xfe, 0xd6, 0xb9, 0x0a, 0xf7, 0xf4, 0xa3, 0x02, 0x97, 0x3e, 0x40, 0x8f, 0x9e, 0xf5, 0x86, + 0x2b, 0xdb, 0x3b, 0x7b, 0xb4, 0x6f, 0x6b, 0x08, 0x99, 0xc2, 0xc3, 0x36, 0x46, 0xfb, 0xe3, 0xff, + 0x48, 0x10, 0x5b, 0x35, 0x8c, 0x3a, 0x32, 0x60, 0x5c, 0x37, 0x9c, 0x32, 0xf1, 0x2c, 0x5c, 0xf5, + 0xdf, 0x5b, 0x4f, 0x16, 0xe6, 0xf6, 0x67, 0xa4, 0xef, 0xdd, 0x9c, 0x6e, 0x65, 0xa5, 0x8c, 0xe9, + 0x86, 0x53, 0xa0, 0x10, 0x7e, 0x75, 0xfd, 0x9d, 0x30, 0x12, 0x6c, 0x8c, 0x45, 0xc9, 0xe7, 0xf6, + 0xdd, 0x58, 0x90, 0xcd, 0xad, 0x9b, 0xd3, 0x93, 0xde, 0x88, 0x71, 0xc1, 0xb2, 0x92, 0xda, 0xf4, + 0xb5, 0xce, 0xae, 0x77, 0xfd, 0xe0, 0xd5, 0x69, 0xe9, 0xd4, 0x97, 0x25, 0x00, 0x6f, 0xe7, 0x01, + 0x3d, 0x04, 0x47, 0x0a, 0x2b, 0xcb, 0xc5, 0xf2, 0xda, 0x7a, 0x7e, 0x7d, 0x63, 0x2d, 0x78, 0xc7, + 0x5b, 0x6c, 0x8f, 0xdb, 0x26, 0xae, 0x68, 0x5b, 0x1a, 0xae, 0xa2, 0xfb, 0x60, 0x32, 0x88, 0x4d, + 0x4a, 0xa5, 0x62, 0x5a, 0xca, 0xa6, 0xae, 0xdf, 0x98, 0x49, 0xb0, 0x5c, 0x0c, 0x57, 0xd1, 0x49, + 0x38, 0xd4, 0x8a, 0xb7, 0xb0, 0x3c, 0x9f, 0x8e, 0x64, 0x47, 0xae, 0xdf, 0x98, 0x49, 0xba, 0x49, + 0x1b, 0x92, 0x01, 0xf9, 0x31, 0x39, 0xbf, 0x68, 0x16, 0xae, 0xdf, 0x98, 0x19, 0x64, 0x06, 0xcc, + 0xc6, 0x3e, 0xf0, 0xe9, 0xa9, 0x81, 0xdb, 0x7e, 0x13, 0xfc, 0x4f, 0x86, 0x3a, 0xee, 0x7a, 0xd7, + 0xb0, 0x8e, 0x6d, 0xcd, 0x3e, 0xd0, 0xae, 0x77, 0x5f, 0x3b, 0xe9, 0xf2, 0xef, 0xc6, 0x21, 0x35, + 0xcf, 0x5a, 0x21, 0x1d, 0x81, 0xd1, 0xcf, 0xc0, 0xa0, 0x49, 0xa7, 0x11, 0xf7, 0x18, 0xad, 0x83, + 0xc3, 0xb3, 0xc9, 0xc6, 0xbd, 0xcb, 0xc5, 0xa6, 0x1e, 0x9b, 0x5f, 0xe6, 0x60, 0x77, 0xcc, 0xbc, + 0x5b, 0x53, 0xa9, 0x7d, 0xed, 0xf7, 0xb0, 0x9c, 0x85, 0x6f, 0xad, 0x84, 0xf9, 0xc9, 0xec, 0x5e, + 0xc8, 0x3a, 0x81, 0xb0, 0xdb, 0x61, 0xef, 0x93, 0xe0, 0x10, 0xc5, 0xf2, 0x26, 0x62, 0x8a, 0x29, + 0x92, 0xfd, 0x53, 0x9d, 0x54, 0x58, 0x54, 0x6d, 0xef, 0xae, 0x07, 0xbb, 0xcf, 0x75, 0x0f, 0x9f, + 0x08, 0x8f, 0xfb, 0x1a, 0x0f, 0xb3, 0x95, 0x95, 0x89, 0x7a, 0x0b, 0xa5, 0x8d, 0xe6, 0x03, 0x17, + 0xfa, 0x62, 0xfb, 0xdb, 0x6a, 0xf7, 0x5f, 0xee, 0x7b, 0x06, 0x86, 0xbd, 0x58, 0x62, 0xf3, 0xff, + 0xfb, 0xd2, 0xff, 0xdc, 0xe1, 0x27, 0x46, 0xef, 0x97, 0xe0, 0x90, 0x37, 0x9b, 0xfb, 0xd9, 0xb2, + 0xff, 0x8f, 0xf3, 0xe0, 0x3e, 0x16, 0x42, 0x61, 0xe3, 0xb4, 0xe5, 0x2b, 0x2b, 0x93, 0xcd, 0x56, + 0x52, 0xb2, 0x04, 0x1b, 0xf1, 0x47, 0x56, 0x3b, 0x23, 0x3e, 0x01, 0xd9, 0x7f, 0x68, 0x0e, 0x32, + 0x60, 0xff, 0xb3, 0xc3, 0x34, 0x2c, 0x07, 0x57, 0xe9, 0x86, 0x5c, 0x42, 0x71, 0xcb, 0xf2, 0x32, + 0xa0, 0xd6, 0xce, 0x0d, 0x5f, 0x60, 0xf4, 0xde, 0xa7, 0xa0, 0x49, 0x88, 0xfb, 0xaf, 0xf8, 0xb1, + 0x42, 0x2e, 0xf1, 0x01, 0x3e, 0x7d, 0xde, 0xf6, 0x31, 0xff, 0xed, 0x08, 0x9c, 0xf2, 0x1f, 0x0f, + 0xbd, 0xd4, 0xc4, 0xd6, 0x9e, 0x3b, 0x44, 0x4d, 0xb5, 0xa6, 0xe9, 0xfe, 0x57, 0x10, 0x47, 0xfd, + 0x13, 0x3e, 0xc5, 0x15, 0x76, 0x92, 0x3f, 0x20, 0xc1, 0xf0, 0xaa, 0x5a, 0xc3, 0x0a, 0x7e, 0xa9, + 0x89, 0x6d, 0xa7, 0xcd, 0x2d, 0xf3, 0xc3, 0x30, 0x68, 0x6c, 0x6d, 0x89, 0x33, 0xed, 0x98, 0xc2, + 0x4b, 0x44, 0xe7, 0xba, 0xd6, 0xd0, 0xd8, 0x75, 0xb0, 0x98, 0xc2, 0x0a, 0x68, 0x1a, 0x86, 0x2b, + 0x46, 0x53, 0xe7, 0x43, 0x2e, 0x13, 0x13, 0xdf, 0x5a, 0x69, 0xea, 0x6c, 0xc8, 0x11, 0x23, 0x5a, + 0xf8, 0x0a, 0xb6, 0x6c, 0xf6, 0x75, 0xc9, 0x84, 0x22, 0x8a, 0xf2, 0xd3, 0x90, 0x62, 0x92, 0xf0, + 0xc9, 0xf8, 0x28, 0x24, 0xe8, 0x4d, 0x2b, 0x4f, 0x9e, 0x21, 0x52, 0xbe, 0xc4, 0xee, 0xaa, 0x33, + 0xfe, 0x4c, 0x24, 0x56, 0x28, 0x14, 0x3a, 0x5a, 0xf9, 0x64, 0xef, 0xa8, 0xc1, 0x6c, 0xe8, 0x5a, + 0xf8, 0x37, 0xe3, 0x70, 0x88, 0x1f, 0xde, 0xa9, 0xa6, 0x76, 0x7a, 0xdb, 0x71, 0xc4, 0xdb, 0x09, + 0xe0, 0x59, 0xb0, 0x6a, 0x6a, 0xf2, 0x1e, 0xc4, 0x2e, 0x3a, 0x8e, 0x89, 0x4e, 0x41, 0xdc, 0x6a, + 0xd6, 0xb1, 0xd8, 0x0c, 0x72, 0xb7, 0xeb, 0x55, 0x53, 0x9b, 0x25, 0x08, 0x4a, 0xb3, 0x8e, 0x15, + 0x86, 0x82, 0x4a, 0x30, 0xbd, 0xd5, 0xac, 0xd7, 0xf7, 0xca, 0x55, 0x4c, 0xff, 0x5d, 0x96, 0xfb, + 0x0f, 0x27, 0xf0, 0xae, 0xa9, 0x8a, 0xcf, 0x56, 0x12, 0xc3, 0x1c, 0xa7, 0x68, 0x45, 0x8a, 0x25, + 0xfe, 0xd9, 0x44, 0x49, 0xe0, 0xc8, 0xbf, 0x1f, 0x81, 0x84, 0x60, 0x4d, 0x2f, 0x8f, 0xe3, 0x3a, + 0xae, 0x38, 0x86, 0x38, 0x4c, 0x71, 0xcb, 0x08, 0x41, 0xb4, 0xc6, 0x3b, 0x2f, 0x79, 0x71, 0x40, + 0x21, 0x05, 0x02, 0x73, 0xaf, 0xf4, 0x13, 0x98, 0xd9, 0x24, 0xfd, 0x19, 0x33, 0x0d, 0xb1, 0x6a, + 0xbb, 0x38, 0xa0, 0xd0, 0x12, 0xca, 0xc0, 0x20, 0x19, 0x34, 0x0e, 0xeb, 0x2d, 0x02, 0xe7, 0x65, + 0x74, 0x18, 0xe2, 0xa6, 0xea, 0x54, 0xd8, 0x6d, 0x3b, 0x52, 0xc1, 0x8a, 0xe8, 0x09, 0x18, 0x64, + 0xaf, 0xb2, 0xc3, 0xff, 0x8b, 0x86, 0x18, 0x83, 0x7d, 0xfe, 0x8e, 0xc8, 0xbd, 0xaa, 0x3a, 0x0e, + 0xb6, 0x74, 0xc2, 0x90, 0xa1, 0x23, 0x04, 0xb1, 0x4d, 0xa3, 0xba, 0xc7, 0xff, 0x3f, 0x0e, 0xfd, + 0xcd, 0xff, 0x21, 0x07, 0xf5, 0x87, 0x32, 0xad, 0x64, 0xff, 0x16, 0x2c, 0x25, 0x80, 0x05, 0x82, + 0x54, 0x82, 0x09, 0xb5, 0x5a, 0xd5, 0xd8, 0xbf, 0xaa, 0x29, 0x6f, 0x6a, 0x34, 0x78, 0xd8, 0xf4, + 0x9f, 0xbe, 0x75, 0xea, 0x0b, 0xe4, 0x11, 0x14, 0x38, 0x7e, 0x21, 0x09, 0x43, 0x26, 0x13, 0x4a, + 0x3e, 0x0f, 0xe3, 0x2d, 0x92, 0x12, 0xf9, 0x76, 0x34, 0xbd, 0x2a, 0xde, 0x39, 0x90, 0xdf, 0x04, + 0x46, 0x3f, 0x58, 0xc9, 0x8e, 0xa9, 0xe8, 0xef, 0xc2, 0x7b, 0x3a, 0x3f, 0x87, 0x19, 0xf5, 0x3d, + 0x87, 0x51, 0x4d, 0xad, 0x90, 0xa4, 0xfc, 0xf9, 0x23, 0x98, 0x7c, 0xeb, 0x23, 0x98, 0x1a, 0xd6, + 0xc5, 0xc4, 0x4c, 0xaa, 0x54, 0x53, 0xb3, 0xa9, 0x3b, 0x7a, 0x1f, 0xd0, 0xb4, 0xcf, 0xfb, 0x7e, + 0xd3, 0x37, 0x31, 0xb1, 0xf9, 0xfc, 0xea, 0x82, 0xeb, 0xc7, 0x5f, 0x8d, 0xc0, 0x71, 0x9f, 0x1f, + 0xfb, 0x90, 0x5b, 0xdd, 0x39, 0xdb, 0xde, 0xe3, 0xfb, 0x78, 0x9b, 0x7c, 0x09, 0x62, 0x04, 0x1f, + 0xf5, 0xf8, 0x77, 0x19, 0x99, 0xcf, 0x7f, 0xe3, 0x9f, 0xca, 0xc1, 0x03, 0xad, 0x40, 0xaf, 0x50, + 0x26, 0x85, 0xf7, 0xf7, 0x6f, 0xbf, 0xb4, 0xf7, 0xed, 0x50, 0xfb, 0xf6, 0x99, 0x31, 0x6c, 0xc3, + 0xef, 0x9e, 0xed, 0xf8, 0x76, 0x95, 0x05, 0xd3, 0xee, 0xf9, 0xd5, 0x3e, 0x22, 0x75, 0xa7, 0xa7, + 0x01, 0xdd, 0x7a, 0xb0, 0xcf, 0x4c, 0x6d, 0x17, 0x0e, 0x3f, 0x4b, 0xda, 0xf6, 0x56, 0xd0, 0x22, + 0xe4, 0x1f, 0x76, 0x0f, 0xfa, 0x24, 0xfe, 0x3f, 0xf7, 0xc4, 0x21, 0x1e, 0x78, 0xf2, 0xf1, 0xb5, + 0xe3, 0x7d, 0xb3, 0x1d, 0xa7, 0x92, 0x59, 0xdf, 0x34, 0xa2, 0xf8, 0x28, 0xe5, 0x5f, 0x95, 0xe0, + 0x48, 0x4b, 0xd3, 0x3c, 0xc6, 0xcf, 0xb7, 0x79, 0xc5, 0x70, 0xa0, 0xa4, 0x67, 0xbe, 0x8d, 0xb0, + 0xf7, 0xf7, 0x14, 0x96, 0x49, 0x11, 0x90, 0xf6, 0xcd, 0x70, 0x28, 0x28, 0xac, 0x30, 0xd3, 0xbd, + 0x30, 0x1a, 0xdc, 0x2c, 0xe6, 0xe6, 0x1a, 0x09, 0x6c, 0x17, 0xcb, 0xe5, 0xb0, 0x9d, 0x5d, 0x5d, + 0x4b, 0x90, 0x74, 0x51, 0x79, 0x76, 0xdc, 0xb7, 0xaa, 0x1e, 0xa5, 0xfc, 0x61, 0x09, 0x66, 0x82, + 0x2d, 0xf8, 0xf2, 0xa4, 0xfd, 0x09, 0x7b, 0xdb, 0xba, 0xf8, 0x75, 0x09, 0xee, 0xea, 0x22, 0x13, + 0x37, 0xc0, 0x35, 0x98, 0xf4, 0x6d, 0x12, 0x88, 0x10, 0x2e, 0xba, 0xfd, 0x54, 0xef, 0x0c, 0xd5, + 0x5d, 0x13, 0x1f, 0x23, 0x46, 0xf9, 0xec, 0xb7, 0xa7, 0x27, 0x5a, 0xeb, 0x6c, 0x65, 0xa2, 0x75, + 0x61, 0x7f, 0x1b, 0xfd, 0xe3, 0x15, 0x09, 0x1e, 0x08, 0xaa, 0xda, 0x26, 0xd5, 0xfd, 0x49, 0xf5, + 0xc3, 0xbf, 0x97, 0xe0, 0x54, 0x3f, 0xc2, 0xf1, 0x0e, 0xd9, 0x84, 0x09, 0x2f, 0x09, 0x0f, 0xf7, + 0xc7, 0xbe, 0x52, 0x7b, 0xe6, 0xa5, 0xc8, 0xe5, 0x76, 0x07, 0x0c, 0x6f, 0xf2, 0x81, 0xe5, 0xef, + 0x72, 0xd7, 0xc8, 0xc1, 0x8d, 0x5e, 0x61, 0xe4, 0xc0, 0x56, 0x6f, 0x9b, 0xbe, 0x88, 0xb4, 0xe9, + 0x0b, 0x2f, 0x6b, 0x97, 0xaf, 0xf0, 0xb8, 0xd5, 0x66, 0x7b, 0xee, 0x6d, 0x30, 0xd1, 0xc6, 0x95, + 0xf9, 0xa8, 0xde, 0x87, 0x27, 0x2b, 0xa8, 0xd5, 0x59, 0xe5, 0x3d, 0x98, 0xa6, 0xed, 0xb6, 0x31, + 0xf4, 0x9d, 0x56, 0xb9, 0xc1, 0x63, 0x4b, 0xdb, 0xa6, 0xb9, 0xee, 0x0b, 0x30, 0xc8, 0xfa, 0x99, + 0xab, 0x7b, 0x00, 0x47, 0xe1, 0x0c, 0xe4, 0x8f, 0x8b, 0x58, 0x56, 0x14, 0x62, 0xb7, 0x1f, 0x43, + 0xfd, 0xe8, 0x7a, 0x9b, 0xc6, 0x90, 0xcf, 0x18, 0xdf, 0x12, 0x51, 0xad, 0xbd, 0x74, 0xdc, 0x1c, + 0x95, 0xdb, 0x16, 0xd5, 0x98, 0x6d, 0xee, 0x6c, 0xf8, 0xfa, 0x65, 0x11, 0xbe, 0x5c, 0x9d, 0x7a, + 0x84, 0xaf, 0x9f, 0x8c, 0xe9, 0xdd, 0x40, 0xd6, 0x43, 0xcc, 0x3f, 0x8f, 0x81, 0xec, 0x07, 0x12, + 0x1c, 0xa5, 0xba, 0xf9, 0xf7, 0x28, 0xf6, 0x6b, 0xf2, 0x87, 0x00, 0xd9, 0x56, 0xa5, 0xdc, 0x76, + 0x74, 0xa7, 0x6d, 0xab, 0x72, 0x39, 0x30, 0xbf, 0x3c, 0x04, 0xa8, 0x1a, 0xd8, 0x89, 0xa2, 0xd8, + 0xec, 0x02, 0x5d, 0xba, 0xea, 0xdb, 0xe8, 0x68, 0xd3, 0x9d, 0xb1, 0xdb, 0xd0, 0x9d, 0xdf, 0x94, + 0x20, 0xdb, 0x4e, 0x65, 0xde, 0x7d, 0x1a, 0x1c, 0x0e, 0x9c, 0x1f, 0x84, 0x7b, 0xf0, 0xa1, 0x7e, + 0x76, 0x79, 0x42, 0xc3, 0xe8, 0x90, 0x85, 0xef, 0x74, 0x1e, 0x30, 0x1d, 0xf4, 0xd0, 0xd6, 0xcc, + 0xfa, 0x27, 0x36, 0x7c, 0xbe, 0xd4, 0x12, 0x57, 0xff, 0x5c, 0xe4, 0xde, 0xbb, 0x30, 0xd5, 0x41, + 0xea, 0x3b, 0x3d, 0xef, 0x6d, 0x77, 0xec, 0xcc, 0xdb, 0x9d, 0xbe, 0x3f, 0xce, 0x47, 0x42, 0xf0, + 0x72, 0xb6, 0x6f, 0x2d, 0xd6, 0xee, 0x75, 0x97, 0xfc, 0x56, 0x38, 0xd6, 0x96, 0x8a, 0xcb, 0x96, + 0x83, 0xd8, 0xb6, 0x66, 0x3b, 0x5c, 0xac, 0xfb, 0x3a, 0x89, 0x15, 0xa2, 0xa6, 0x34, 0x32, 0x82, + 0x34, 0x65, 0xbd, 0x6a, 0x18, 0x75, 0x2e, 0x86, 0x7c, 0x09, 0xc6, 0x7d, 0x30, 0xde, 0xc8, 0x39, + 0x88, 0x99, 0x06, 0xff, 0x72, 0xc1, 0xf0, 0x99, 0xe3, 0x1d, 0x37, 0xf6, 0x0d, 0xa3, 0xce, 0xd5, + 0xa6, 0xf8, 0xf2, 0x24, 0x20, 0xc6, 0x8c, 0xee, 0xf1, 0x8b, 0x26, 0xd6, 0x60, 0x22, 0x00, 0xe5, + 0x8d, 0xbc, 0xa1, 0xf3, 0x83, 0x33, 0xdf, 0x3b, 0x04, 0x71, 0xca, 0x15, 0x7d, 0x4c, 0x0a, 0x7c, + 0x5a, 0x68, 0xb6, 0x13, 0x9b, 0xf6, 0x6b, 0xe2, 0xec, 0xe9, 0xbe, 0xf1, 0x79, 0xce, 0x76, 0xea, + 0x3d, 0xff, 0xe6, 0xbb, 0x1f, 0x89, 0xdc, 0x83, 0xe4, 0xd3, 0x1d, 0x56, 0xe3, 0xbe, 0xf1, 0xf2, + 0x99, 0xc0, 0xb3, 0xf8, 0x87, 0xfb, 0x6b, 0x4a, 0x48, 0x36, 0xdb, 0x2f, 0x3a, 0x17, 0xec, 0x3c, + 0x15, 0xec, 0x2c, 0x7a, 0xac, 0xb7, 0x60, 0xa7, 0xdf, 0x11, 0x1c, 0x34, 0xef, 0x42, 0xbf, 0x2b, + 0xc1, 0x64, 0xbb, 0x25, 0x1d, 0x7a, 0xb2, 0x3f, 0x29, 0x5a, 0x53, 0x8a, 0xec, 0x53, 0x07, 0xa0, + 0xe4, 0xaa, 0xcc, 0x53, 0x55, 0xf2, 0xe8, 0xe9, 0x03, 0xa8, 0x72, 0xda, 0xbf, 0xf5, 0xff, 0xbf, + 0x24, 0x38, 0xd1, 0x75, 0x85, 0x84, 0xf2, 0xfd, 0x49, 0xd9, 0x25, 0x77, 0xca, 0x16, 0xde, 0x08, + 0x0b, 0xae, 0xf1, 0xb3, 0x54, 0xe3, 0x4b, 0x68, 0xe1, 0x20, 0x1a, 0xb7, 0x3d, 0x5f, 0x41, 0xbf, + 0x15, 0xbc, 0x74, 0xd8, 0xdd, 0x9d, 0x5a, 0x16, 0x1e, 0x3d, 0x06, 0x46, 0x6b, 0x52, 0x2b, 0x3f, + 0x4f, 0x55, 0x50, 0xd0, 0xea, 0x1b, 0xec, 0xb4, 0xd3, 0xef, 0x08, 0x06, 0xfe, 0x77, 0xa1, 0xff, + 0x29, 0xb5, 0xbf, 0x43, 0xf8, 0x44, 0x57, 0x11, 0x3b, 0x2f, 0xaa, 0xb2, 0x4f, 0xee, 0x9f, 0x90, + 0x2b, 0xd9, 0xa0, 0x4a, 0xd6, 0x10, 0xbe, 0xdd, 0x4a, 0xb6, 0xed, 0x44, 0xf4, 0x75, 0x09, 0x26, + 0xdb, 0xad, 0x49, 0x7a, 0x0c, 0xcb, 0x2e, 0x8b, 0xac, 0x1e, 0xc3, 0xb2, 0xdb, 0x02, 0x48, 0xfe, + 0x19, 0xaa, 0xfc, 0x39, 0xf4, 0x78, 0x27, 0xe5, 0xbb, 0xf6, 0x22, 0x19, 0x8b, 0x5d, 0x93, 0xfc, + 0x1e, 0x63, 0xb1, 0x9f, 0x75, 0x4c, 0x8f, 0xb1, 0xd8, 0xd7, 0x1a, 0xa3, 0xf7, 0x58, 0x74, 0x35, + 0xeb, 0xb3, 0x1b, 0x6d, 0xf4, 0x55, 0x09, 0x46, 0x02, 0x19, 0x31, 0x7a, 0xb4, 0xab, 0xa0, 0xed, + 0x16, 0x0c, 0xd9, 0x33, 0xfb, 0x21, 0xe1, 0xba, 0x2c, 0x50, 0x5d, 0xe6, 0x50, 0xfe, 0x20, 0xba, + 0x04, 0x8f, 0x51, 0xbf, 0x29, 0xc1, 0x44, 0x9b, 0x2c, 0xb3, 0xc7, 0x28, 0xec, 0x9c, 0x34, 0x67, + 0x9f, 0xdc, 0x3f, 0x21, 0xd7, 0xea, 0x02, 0xd5, 0xea, 0x2d, 0xe8, 0xcd, 0x07, 0xd1, 0xca, 0x37, + 0x3f, 0xdf, 0xf4, 0xae, 0x64, 0xf9, 0xda, 0x41, 0xe7, 0xf6, 0x29, 0x98, 0x50, 0xe8, 0x89, 0x7d, + 0xd3, 0x71, 0x7d, 0x9e, 0xa3, 0xfa, 0x3c, 0x8b, 0x56, 0xde, 0x98, 0x3e, 0xad, 0xd3, 0xfa, 0x17, + 0x5b, 0x1f, 0x07, 0x76, 0xf7, 0xa2, 0xb6, 0xc9, 0x6a, 0xf6, 0xb1, 0x7d, 0xd1, 0x70, 0xa5, 0x9e, + 0xa4, 0x4a, 0x9d, 0x41, 0x8f, 0x74, 0x52, 0xca, 0x77, 0xef, 0x4e, 0xd3, 0xb7, 0x8c, 0xd3, 0xef, + 0x60, 0x29, 0xf0, 0xbb, 0xd0, 0xbb, 0xc5, 0x9d, 0xa7, 0x93, 0x5d, 0xdb, 0xf5, 0xe5, 0xb1, 0xd9, + 0x07, 0xfa, 0xc0, 0xe4, 0x72, 0xdd, 0x43, 0xe5, 0x9a, 0x42, 0xc7, 0x3b, 0xc9, 0x45, 0x72, 0x59, + 0xf4, 0x41, 0xc9, 0xbd, 0x26, 0x79, 0xaa, 0x3b, 0x6f, 0x7f, 0xb2, 0x9b, 0x7d, 0xb0, 0x2f, 0x5c, + 0x2e, 0xc9, 0x7d, 0x54, 0x92, 0x19, 0x34, 0xd5, 0x51, 0x12, 0x96, 0xfa, 0xde, 0xee, 0x4b, 0x05, + 0xd7, 0x8f, 0xc0, 0x74, 0x87, 0x16, 0x9d, 0xdd, 0x1e, 0x67, 0x5c, 0x5d, 0xde, 0xc8, 0xf6, 0x7c, + 0x03, 0x7b, 0xbb, 0xbf, 0xed, 0xda, 0xe7, 0x81, 0xd8, 0x6f, 0xc7, 0x00, 0x2d, 0xd9, 0xb5, 0x39, + 0x0b, 0xb3, 0xff, 0x33, 0xc9, 0x47, 0x79, 0xe8, 0xf1, 0x97, 0xf4, 0x86, 0x1e, 0x7f, 0x2d, 0x05, + 0x9e, 0x53, 0x45, 0xf6, 0xf7, 0x64, 0xb3, 0xef, 0x37, 0x55, 0xd1, 0x1f, 0xcb, 0x9b, 0xaa, 0xf6, + 0x57, 0xae, 0x63, 0xb7, 0xef, 0x6d, 0x46, 0xfc, 0xa0, 0xef, 0x53, 0xf8, 0x53, 0xc9, 0xc1, 0x2e, + 0x4f, 0x25, 0x33, 0x1d, 0xdf, 0x43, 0x72, 0x6a, 0x74, 0x56, 0x7c, 0xe9, 0x74, 0xa8, 0xbf, 0x4b, + 0xb2, 0xfc, 0x53, 0xa8, 0xde, 0x16, 0xc2, 0x71, 0xc8, 0xb6, 0xba, 0x93, 0x3b, 0xa8, 0x3f, 0x12, + 0x85, 0xf4, 0x92, 0x5d, 0x2b, 0x55, 0x35, 0xe7, 0x0e, 0xf9, 0xda, 0xd3, 0x9d, 0xdf, 0xbb, 0xa0, + 0x5b, 0x37, 0xa7, 0x47, 0x99, 0x4d, 0xbb, 0x58, 0xb2, 0x01, 0x63, 0xa1, 0x57, 0xc6, 0xdc, 0xb3, + 0x8a, 0x07, 0x79, 0xec, 0x1c, 0x62, 0x25, 0xd3, 0xe7, 0x09, 0x3e, 0xff, 0x46, 0xbb, 0xed, 0x9d, + 0x99, 0x39, 0xd4, 0xc5, 0x3b, 0xf9, 0x38, 0xd0, 0xeb, 0xb3, 0x2c, 0x64, 0xc2, 0x9d, 0xe2, 0xf6, + 0xd8, 0x1f, 0x49, 0x30, 0xbc, 0x64, 0x8b, 0x54, 0x10, 0xff, 0x94, 0x3e, 0x4d, 0x7a, 0xc2, 0xfd, + 0x4c, 0x78, 0xb4, 0x3f, 0xbf, 0x15, 0x9f, 0x0e, 0xf7, 0x8c, 0x70, 0x08, 0x26, 0x7c, 0x7a, 0xba, + 0xfa, 0xff, 0x4e, 0x84, 0xc6, 0xc7, 0x02, 0xae, 0x69, 0xba, 0x9b, 0x45, 0xe2, 0xbf, 0xa8, 0x0f, + 0x2f, 0x3c, 0x3b, 0xc7, 0x0e, 0x6a, 0xe7, 0x1d, 0x1a, 0x20, 0x42, 0xf6, 0x74, 0x37, 0xbe, 0x96, + 0x5a, 0x9f, 0x05, 0x49, 0xfb, 0xf8, 0xe2, 0x4e, 0xe8, 0xf1, 0x8f, 0xfc, 0xba, 0x04, 0x23, 0x4b, + 0x76, 0x6d, 0x43, 0xaf, 0xfe, 0x3f, 0xef, 0xbf, 0x5b, 0x70, 0x28, 0xa0, 0xe9, 0x1d, 0x32, 0xe9, + 0x99, 0x57, 0x62, 0x10, 0x5d, 0xb2, 0x6b, 0xe8, 0x25, 0x18, 0x0b, 0x27, 0x0d, 0x1d, 0x73, 0xc1, + 0xd6, 0x19, 0xa1, 0xf3, 0x7a, 0xad, 0xf3, 0xec, 0x81, 0x76, 0x60, 0x24, 0x38, 0x73, 0x9c, 0xec, + 0xc2, 0x24, 0x80, 0x99, 0x7d, 0xa4, 0x5f, 0x4c, 0xb7, 0xb1, 0xb7, 0x43, 0xc2, 0x0d, 0x7a, 0x77, + 0x77, 0xa1, 0x16, 0x48, 0x9d, 0xb3, 0xdb, 0x36, 0x61, 0x85, 0x58, 0x2f, 0x1c, 0x52, 0xba, 0x59, + 0x2f, 0x84, 0xdb, 0xd5, 0x7a, 0x9d, 0x86, 0xd6, 0x26, 0x80, 0x6f, 0x1c, 0xdc, 0xdb, 0x85, 0x83, + 0x87, 0x96, 0x7d, 0xb8, 0x2f, 0x34, 0xf7, 0xd0, 0xe9, 0x36, 0x27, 0xe3, 0xff, 0x37, 0x00, 0x00, + 0xff, 0xff, 0xb1, 0x48, 0x2a, 0x05, 0xdd, 0x97, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) From 5c4702d6b9cc48ee6ee2a12d4fdd2eaaff795999 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Tue, 23 Mar 2021 18:12:41 +0100 Subject: [PATCH 02/26] add: reflection service implementation --- .../grpc/cosmosreflection/cosmosreflection.go | 49 +++++++++++++------ 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/server/grpc/cosmosreflection/cosmosreflection.go b/server/grpc/cosmosreflection/cosmosreflection.go index a0d7c177591a..2000a695f4ec 100644 --- a/server/grpc/cosmosreflection/cosmosreflection.go +++ b/server/grpc/cosmosreflection/cosmosreflection.go @@ -2,14 +2,16 @@ package cosmosreflection import ( "context" - "encoding/json" "fmt" + + "github.com/gogo/protobuf/proto" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/tx" - "github.com/gogo/protobuf/proto" - "google.golang.org/grpc" - "log" ) type Config struct { @@ -31,7 +33,9 @@ func Register(srv *grpc.Server, conf Config) error { } type reflectionServiceServer struct { - desc *AppDescriptor + desc *AppDescriptor + interfacesList []string + interfaceImplementers map[string][]string } func newReflectionServiceServer(grpcSrv *grpc.Server, conf Config) (reflectionServiceServer, error) { @@ -72,21 +76,38 @@ func newReflectionServiceServer(grpcSrv *grpc.Server, conf Config) (reflectionSe QueryServices: queryServiceDescriptor, Tx: deliverDescriptor, } - b, _ := json.Marshal(desc) - log.Printf("%s", b) - return reflectionServiceServer{desc: desc}, nil + ifaceList := make([]string, len(desc.Codec.Interfaces)) + ifaceImplementers := make(map[string][]string, len(desc.Codec.Interfaces)) + for i, iface := range desc.Codec.Interfaces { + ifaceList[i] = iface.Fullname + impls := make([]string, len(iface.InterfaceImplementers)) + for j, impl := range iface.InterfaceImplementers { + impls[j] = impl.TypeUrl + } + ifaceImplementers[iface.Fullname] = impls + } + return reflectionServiceServer{ + desc: desc, + interfacesList: ifaceList, + interfaceImplementers: ifaceImplementers, + }, nil } -func (r reflectionServiceServer) GetAppDescriptor(ctx context.Context, request *GetAppDescriptorRequest) (*GetAppDescriptorResponse, error) { - panic("implement me") +func (r reflectionServiceServer) GetAppDescriptor(_ context.Context, _ *GetAppDescriptorRequest) (*GetAppDescriptorResponse, error) { + return &GetAppDescriptorResponse{App: r.desc}, nil } -func (r reflectionServiceServer) ListAllInterfaces(ctx context.Context, request *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) { - panic("implement me") +func (r reflectionServiceServer) ListAllInterfaces(_ context.Context, _ *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) { + return &ListAllInterfacesResponse{InterfaceNames: r.interfacesList}, nil } -func (r reflectionServiceServer) ListImplementations(ctx context.Context, request *ListImplementationsRequest) (*ListImplementationsResponse, error) { - panic("implement me") +func (r reflectionServiceServer) ListImplementations(_ context.Context, request *ListImplementationsRequest) (*ListImplementationsResponse, error) { + implementers, ok := r.interfaceImplementers[request.InterfaceName] + if !ok { + return nil, status.Errorf(codes.NotFound, "interface name %s does not exist", request.InterfaceName) + } + + return &ListImplementationsResponse{ImplementationMessageNames: implementers}, nil } // newCodecDescriptor describes the codec given the codectypes.InterfaceRegistry From 41b56e7ba71ba4c999c71855cc358d42e3d8446c Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Wed, 24 Mar 2021 11:52:05 +0100 Subject: [PATCH 03/26] chore: cleanup naming --- docs/core/proto-docs.md | 12 +- .../base/reflection/v1beta1/reflection.proto | 10 +- .../grpc/cosmosreflection/cosmosreflection.go | 6 +- server/grpc/cosmosreflection/reflection.pb.go | 236 +++++++++--------- 4 files changed, 132 insertions(+), 132 deletions(-) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 8759700992a8..9d0f4e49c455 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -124,7 +124,7 @@ - [ConfigurationDescriptor](#cosmos.base.reflection.v1beta1.ConfigurationDescriptor) - [GetAppDescriptorRequest](#cosmos.base.reflection.v1beta1.GetAppDescriptorRequest) - [GetAppDescriptorResponse](#cosmos.base.reflection.v1beta1.GetAppDescriptorResponse) - - [InterfaceAcceptingTypeDescriptor](#cosmos.base.reflection.v1beta1.InterfaceAcceptingTypeDescriptor) + - [InterfaceAcceptingMessageDescriptor](#cosmos.base.reflection.v1beta1.InterfaceAcceptingMessageDescriptor) - [InterfaceDescriptor](#cosmos.base.reflection.v1beta1.InterfaceDescriptor) - [InterfaceImplementerDescriptor](#cosmos.base.reflection.v1beta1.InterfaceImplementerDescriptor) - [LegacyMsgDescriptor](#cosmos.base.reflection.v1beta1.LegacyMsgDescriptor) @@ -2109,7 +2109,7 @@ ConfigurationDescriptor contains metadata information on the sdk.Config | `bech32_account_address_prefix` | [string](#string) | | bech32_account_address_prefix is the account address prefix | | `bech32_validator_address_prefix` | [string](#string) | | bech32_validator_address_prefix is the bech32 prefix for validator addresses | | `bech32_consensus_address_prefix` | [string](#string) | | bech32_consensus_address_prefix is the bech32 prefix for consensus nodes addresses | -| `bech32AccountPublicKeyPrefix` | [string](#string) | | bech32_account_public_key_prefix is the bech32 prefix for accounts public keys | +| `bech32_account_public_key_prefix` | [string](#string) | | bech32_account_public_key_prefix is the bech32 prefix for accounts public keys | | `bech32_validator_public_key_prefix` | [string](#string) | | bech32_validator_public_key_prefix is the bech32 prefix for validators public keys | | `bech32_consensus_public_key_prefix` | [string](#string) | | bech32_consensus_public_key_prefix is the bech32 prefix for consensus nodes public keys | | `purpose` | [uint32](#uint32) | | purpose is the BIP-0044 purpose code | @@ -2147,10 +2147,10 @@ GetAppDescriptorResponse is the response type of the GetAppDescriptor RPC. - + -### InterfaceAcceptingTypeDescriptor -InterfaceAcceptingTypeDescriptor describes a protobuf message which contains +### InterfaceAcceptingMessageDescriptor +InterfaceAcceptingMessageDescriptor describes a protobuf message which contains an interface represented as a google.protobuf.Any @@ -2173,7 +2173,7 @@ InterfaceDescriptor describes the implementation of an interface | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `fullname` | [string](#string) | | fullname is the name of the interface | -| `interface_accepting_types` | [InterfaceAcceptingTypeDescriptor](#cosmos.base.reflection.v1beta1.InterfaceAcceptingTypeDescriptor) | repeated | interface_type_descriptors contains information regarding the types which contain the interface | +| `interface_accepting_messages` | [InterfaceAcceptingMessageDescriptor](#cosmos.base.reflection.v1beta1.InterfaceAcceptingMessageDescriptor) | repeated | interface_accepting_messages contains information regarding the proto messages which contain the interface as google.protobuf.Any field | | `interface_implementers` | [InterfaceImplementerDescriptor](#cosmos.base.reflection.v1beta1.InterfaceImplementerDescriptor) | repeated | interface_implementers is a list of the descriptors of the interface implementers | diff --git a/proto/cosmos/base/reflection/v1beta1/reflection.proto b/proto/cosmos/base/reflection/v1beta1/reflection.proto index a59aafa233a6..148729462db5 100644 --- a/proto/cosmos/base/reflection/v1beta1/reflection.proto +++ b/proto/cosmos/base/reflection/v1beta1/reflection.proto @@ -81,8 +81,8 @@ message CodecDescriptor { message InterfaceDescriptor { // fullname is the name of the interface string fullname = 1; - // interface_type_descriptors contains information regarding the types which contain the interface - repeated InterfaceAcceptingTypeDescriptor interface_accepting_types = 2; + // interface_accepting_messages contains information regarding the proto messages which contain the interface as google.protobuf.Any field + repeated InterfaceAcceptingMessageDescriptor interface_accepting_messages = 2; // interface_implementers is a list of the descriptors of the interface implementers repeated InterfaceImplementerDescriptor interface_implementers = 3; } @@ -98,9 +98,9 @@ message InterfaceImplementerDescriptor { string type_url = 2; } -// InterfaceAcceptingTypeDescriptor describes a protobuf message which contains +// InterfaceAcceptingMessageDescriptor describes a protobuf message which contains // an interface represented as a google.protobuf.Any -message InterfaceAcceptingTypeDescriptor { +message InterfaceAcceptingMessageDescriptor { // fullname is the protobuf fullname of the type containing the interface string fullname = 1; // field_descriptor_names is a list of the protobuf name (not fullname) of the field @@ -118,7 +118,7 @@ message ConfigurationDescriptor { // bech32_consensus_address_prefix is the bech32 prefix for consensus nodes addresses string bech32_consensus_address_prefix = 3; // bech32_account_public_key_prefix is the bech32 prefix for accounts public keys - string bech32AccountPublicKeyPrefix = 4; + string bech32_account_public_key_prefix = 4; // bech32_validator_public_key_prefix is the bech32 prefix for validators public keys string bech32_validator_public_key_prefix = 5; // bech32_consensus_public_key_prefix is the bech32 prefix for consensus nodes public keys diff --git a/server/grpc/cosmosreflection/cosmosreflection.go b/server/grpc/cosmosreflection/cosmosreflection.go index 2000a695f4ec..73b70cdc1091 100644 --- a/server/grpc/cosmosreflection/cosmosreflection.go +++ b/server/grpc/cosmosreflection/cosmosreflection.go @@ -133,9 +133,9 @@ func newCodecDescriptor(ir codectypes.InterfaceRegistry) (*CodecDescriptor, erro } } interfaceDescriptors[i] = &InterfaceDescriptor{ - Fullname: iface, - InterfaceAcceptingTypes: nil, // NOTE(fdymylja): this will be used in the future when we will replace *anypb.Any fields with the interface - InterfaceImplementers: interfaceImplementers, + Fullname: iface, + InterfaceAcceptingMessages: nil, // NOTE(fdymylja): this will be used in the future when we will replace *anypb.Any fields with the interface + InterfaceImplementers: interfaceImplementers, } } diff --git a/server/grpc/cosmosreflection/reflection.pb.go b/server/grpc/cosmosreflection/reflection.pb.go index 7bd4a17cb080..7091353b3a21 100644 --- a/server/grpc/cosmosreflection/reflection.pb.go +++ b/server/grpc/cosmosreflection/reflection.pb.go @@ -366,8 +366,8 @@ func (m *CodecDescriptor) GetInterfaces() []*InterfaceDescriptor { type InterfaceDescriptor struct { // fullname is the name of the interface Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` - // interface_type_descriptors contains information regarding the types which contain the interface - InterfaceAcceptingTypes []*InterfaceAcceptingTypeDescriptor `protobuf:"bytes,2,rep,name=interface_accepting_types,json=interfaceAcceptingTypes,proto3" json:"interface_accepting_types,omitempty"` + // interface_accepting_messages contains information regarding the proto messages which contain the interface as google.protobuf.Any field + InterfaceAcceptingMessages []*InterfaceAcceptingMessageDescriptor `protobuf:"bytes,2,rep,name=interface_accepting_messages,json=interfaceAcceptingMessages,proto3" json:"interface_accepting_messages,omitempty"` // interface_implementers is a list of the descriptors of the interface implementers InterfaceImplementers []*InterfaceImplementerDescriptor `protobuf:"bytes,3,rep,name=interface_implementers,json=interfaceImplementers,proto3" json:"interface_implementers,omitempty"` } @@ -412,9 +412,9 @@ func (m *InterfaceDescriptor) GetFullname() string { return "" } -func (m *InterfaceDescriptor) GetInterfaceAcceptingTypes() []*InterfaceAcceptingTypeDescriptor { +func (m *InterfaceDescriptor) GetInterfaceAcceptingMessages() []*InterfaceAcceptingMessageDescriptor { if m != nil { - return m.InterfaceAcceptingTypes + return m.InterfaceAcceptingMessages } return nil } @@ -484,9 +484,9 @@ func (m *InterfaceImplementerDescriptor) GetTypeUrl() string { return "" } -// InterfaceAcceptingTypeDescriptor describes a protobuf message which contains +// InterfaceAcceptingMessageDescriptor describes a protobuf message which contains // an interface represented as a google.protobuf.Any -type InterfaceAcceptingTypeDescriptor struct { +type InterfaceAcceptingMessageDescriptor struct { // fullname is the protobuf fullname of the type containing the interface Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` // field_descriptor_names is a list of the protobuf name (not fullname) of the field @@ -495,18 +495,18 @@ type InterfaceAcceptingTypeDescriptor struct { FieldDescriptorNames []string `protobuf:"bytes,2,rep,name=field_descriptor_names,json=fieldDescriptorNames,proto3" json:"field_descriptor_names,omitempty"` } -func (m *InterfaceAcceptingTypeDescriptor) Reset() { *m = InterfaceAcceptingTypeDescriptor{} } -func (m *InterfaceAcceptingTypeDescriptor) String() string { return proto.CompactTextString(m) } -func (*InterfaceAcceptingTypeDescriptor) ProtoMessage() {} -func (*InterfaceAcceptingTypeDescriptor) Descriptor() ([]byte, []int) { +func (m *InterfaceAcceptingMessageDescriptor) Reset() { *m = InterfaceAcceptingMessageDescriptor{} } +func (m *InterfaceAcceptingMessageDescriptor) String() string { return proto.CompactTextString(m) } +func (*InterfaceAcceptingMessageDescriptor) ProtoMessage() {} +func (*InterfaceAcceptingMessageDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor_d48c054165687f5c, []int{8} } -func (m *InterfaceAcceptingTypeDescriptor) XXX_Unmarshal(b []byte) error { +func (m *InterfaceAcceptingMessageDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *InterfaceAcceptingTypeDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *InterfaceAcceptingMessageDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_InterfaceAcceptingTypeDescriptor.Marshal(b, m, deterministic) + return xxx_messageInfo_InterfaceAcceptingMessageDescriptor.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -516,26 +516,26 @@ func (m *InterfaceAcceptingTypeDescriptor) XXX_Marshal(b []byte, deterministic b return b[:n], nil } } -func (m *InterfaceAcceptingTypeDescriptor) XXX_Merge(src proto.Message) { - xxx_messageInfo_InterfaceAcceptingTypeDescriptor.Merge(m, src) +func (m *InterfaceAcceptingMessageDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_InterfaceAcceptingMessageDescriptor.Merge(m, src) } -func (m *InterfaceAcceptingTypeDescriptor) XXX_Size() int { +func (m *InterfaceAcceptingMessageDescriptor) XXX_Size() int { return m.Size() } -func (m *InterfaceAcceptingTypeDescriptor) XXX_DiscardUnknown() { - xxx_messageInfo_InterfaceAcceptingTypeDescriptor.DiscardUnknown(m) +func (m *InterfaceAcceptingMessageDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_InterfaceAcceptingMessageDescriptor.DiscardUnknown(m) } -var xxx_messageInfo_InterfaceAcceptingTypeDescriptor proto.InternalMessageInfo +var xxx_messageInfo_InterfaceAcceptingMessageDescriptor proto.InternalMessageInfo -func (m *InterfaceAcceptingTypeDescriptor) GetFullname() string { +func (m *InterfaceAcceptingMessageDescriptor) GetFullname() string { if m != nil { return m.Fullname } return "" } -func (m *InterfaceAcceptingTypeDescriptor) GetFieldDescriptorNames() []string { +func (m *InterfaceAcceptingMessageDescriptor) GetFieldDescriptorNames() []string { if m != nil { return m.FieldDescriptorNames } @@ -551,7 +551,7 @@ type ConfigurationDescriptor struct { // bech32_consensus_address_prefix is the bech32 prefix for consensus nodes addresses Bech32ConsensusAddressPrefix string `protobuf:"bytes,3,opt,name=bech32_consensus_address_prefix,json=bech32ConsensusAddressPrefix,proto3" json:"bech32_consensus_address_prefix,omitempty"` // bech32_account_public_key_prefix is the bech32 prefix for accounts public keys - Bech32AccountPublicKeyPrefix string `protobuf:"bytes,4,opt,name=bech32AccountPublicKeyPrefix,proto3" json:"bech32AccountPublicKeyPrefix,omitempty"` + Bech32AccountPublicKeyPrefix string `protobuf:"bytes,4,opt,name=bech32_account_public_key_prefix,json=bech32AccountPublicKeyPrefix,proto3" json:"bech32_account_public_key_prefix,omitempty"` // bech32_validator_public_key_prefix is the bech32 prefix for validators public keys Bech32ValidatorPublicKeyPrefix string `protobuf:"bytes,5,opt,name=bech32_validator_public_key_prefix,json=bech32ValidatorPublicKeyPrefix,proto3" json:"bech32_validator_public_key_prefix,omitempty"` // bech32_consensus_public_key_prefix is the bech32 prefix for consensus nodes public keys @@ -1307,7 +1307,7 @@ func init() { proto.RegisterType((*CodecDescriptor)(nil), "cosmos.base.reflection.v1beta1.CodecDescriptor") proto.RegisterType((*InterfaceDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceDescriptor") proto.RegisterType((*InterfaceImplementerDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceImplementerDescriptor") - proto.RegisterType((*InterfaceAcceptingTypeDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceAcceptingTypeDescriptor") + proto.RegisterType((*InterfaceAcceptingMessageDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceAcceptingMessageDescriptor") proto.RegisterType((*ConfigurationDescriptor)(nil), "cosmos.base.reflection.v1beta1.ConfigurationDescriptor") proto.RegisterType((*MsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.MsgDescriptor") proto.RegisterType((*ServiceMsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.ServiceMsgDescriptor") @@ -1328,86 +1328,86 @@ func init() { } var fileDescriptor_d48c054165687f5c = []byte{ - // 1249 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x51, 0x6f, 0xdb, 0xd4, - 0x17, 0xaf, 0x93, 0x76, 0x6d, 0x4e, 0x97, 0xf6, 0xbf, 0xbb, 0x6e, 0x75, 0xb3, 0xfe, 0x43, 0xb1, - 0x04, 0x54, 0xb0, 0x25, 0x5b, 0xd7, 0x0d, 0x06, 0x08, 0x96, 0x76, 0x03, 0xc6, 0x5a, 0x28, 0x49, - 0xc7, 0xa4, 0xa1, 0x61, 0x39, 0xf6, 0x8d, 0x73, 0x35, 0xc7, 0x76, 0x7d, 0xed, 0xaa, 0x11, 0xf0, - 0x82, 0xc4, 0x3b, 0x12, 0x6f, 0x7c, 0x00, 0x3e, 0x05, 0xbc, 0x81, 0xc4, 0xe3, 0x24, 0x1e, 0xe0, - 0x11, 0xb5, 0x7c, 0x08, 0x1e, 0xd1, 0xbd, 0xd7, 0x76, 0xec, 0xd4, 0x89, 0xb3, 0x3e, 0xb5, 0x3e, - 0xe7, 0xf7, 0xfb, 0x9d, 0x73, 0xee, 0x3d, 0xf7, 0x9e, 0x1b, 0xa8, 0xeb, 0x0e, 0xed, 0x39, 0xb4, - 0xde, 0xd6, 0x28, 0xae, 0x7b, 0xb8, 0x63, 0x61, 0xdd, 0x27, 0x8e, 0x5d, 0x3f, 0xbc, 0xd1, 0xc6, - 0xbe, 0x76, 0x23, 0x61, 0xaa, 0xb9, 0x9e, 0xe3, 0x3b, 0xa8, 0x2a, 0x08, 0x35, 0x46, 0xa8, 0x25, - 0xbc, 0x21, 0xa1, 0xb2, 0x6a, 0x3a, 0x8e, 0x69, 0xe1, 0xba, 0xe6, 0x92, 0xba, 0x66, 0xdb, 0x8e, - 0xaf, 0x31, 0x37, 0x15, 0x6c, 0xe5, 0xc7, 0x22, 0x94, 0x1b, 0xae, 0x7b, 0x0f, 0x53, 0xdd, 0x23, - 0xae, 0xef, 0x78, 0xe8, 0x3e, 0xcc, 0xe8, 0x5d, 0x8d, 0xd8, 0x72, 0x61, 0x4d, 0x5a, 0x9f, 0xdf, - 0xa8, 0xd7, 0xc6, 0xeb, 0xd7, 0xb6, 0x19, 0x78, 0xc0, 0x6f, 0x0a, 0x36, 0x97, 0x71, 0x0c, 0xac, - 0xcb, 0xc5, 0x09, 0x65, 0x18, 0x38, 0x25, 0xc3, 0x0c, 0xe8, 0x29, 0x94, 0x75, 0xc7, 0xee, 0x10, - 0x33, 0xf0, 0x78, 0xde, 0xf2, 0x34, 0x97, 0x7b, 0x33, 0x5f, 0x2e, 0x41, 0x4a, 0xc8, 0xa6, 0xd5, - 0xd0, 0x97, 0xb0, 0x70, 0x10, 0x60, 0xaf, 0xaf, 0x52, 0xec, 0x1d, 0x12, 0x1d, 0x53, 0x79, 0x66, - 0x32, 0xfd, 0xcf, 0x18, 0xab, 0x15, 0x92, 0x92, 0xfa, 0x07, 0x49, 0x07, 0x7a, 0x17, 0x0a, 0xfe, - 0x91, 0x7c, 0x8e, 0x6b, 0x5e, 0xcd, 0xd3, 0xdc, 0x3f, 0x4a, 0x08, 0x15, 0xfc, 0x23, 0xe5, 0x57, - 0x09, 0xce, 0x27, 0x8d, 0xa8, 0x02, 0x73, 0x9d, 0xc0, 0xb2, 0x6c, 0xad, 0x87, 0x65, 0x69, 0x4d, - 0x5a, 0x2f, 0x35, 0xe3, 0x6f, 0xf4, 0x08, 0xe6, 0xb5, 0xc0, 0xef, 0xaa, 0xa2, 0xc0, 0x70, 0xf7, - 0x36, 0xf3, 0x62, 0x36, 0x02, 0xbf, 0x2b, 0xd6, 0x2a, 0x11, 0x1b, 0xb4, 0xd8, 0x8a, 0x1a, 0x30, - 0xdd, 0xa3, 0x26, 0x95, 0x8b, 0x6b, 0xc5, 0xf5, 0xf9, 0x8d, 0x6b, 0x79, 0x7a, 0xbb, 0x34, 0x29, - 0xc4, 0xa9, 0x8a, 0x07, 0x4b, 0x59, 0x61, 0xd0, 0x13, 0x28, 0x53, 0x62, 0xda, 0xc4, 0x36, 0xd5, - 0x9e, 0x63, 0x60, 0x2a, 0x4b, 0x3c, 0xc6, 0xad, 0xbc, 0x18, 0x2d, 0x41, 0xda, 0x75, 0x0c, 0x9c, - 0x88, 0x75, 0x9e, 0x0e, 0xcc, 0x54, 0x79, 0x03, 0x2e, 0x65, 0xc2, 0x10, 0x82, 0xe9, 0xc4, 0xf2, - 0xf1, 0xff, 0x95, 0x97, 0x61, 0x71, 0xa8, 0x8b, 0xd1, 0x02, 0x14, 0x88, 0x11, 0x82, 0x0a, 0xc4, - 0x50, 0x3a, 0xb0, 0x38, 0xd4, 0xa1, 0xa8, 0x05, 0x40, 0x6c, 0x1f, 0x7b, 0x1d, 0x4d, 0x8f, 0x73, - 0xbf, 0x99, 0x97, 0xfb, 0x83, 0x88, 0x91, 0x5c, 0xee, 0x81, 0x8c, 0xf2, 0x53, 0x01, 0x2e, 0x66, - 0x60, 0xc6, 0xee, 0xfc, 0xd7, 0xb0, 0x12, 0x2b, 0xa8, 0x9a, 0xae, 0x63, 0xd7, 0x67, 0x6b, 0xea, - 0xf7, 0x5d, 0x4c, 0xe5, 0x02, 0xcf, 0xeb, 0xee, 0xc4, 0x79, 0x35, 0x22, 0xfe, 0x7e, 0xdf, 0x4d, - 0x26, 0xb9, 0x4c, 0x32, 0x11, 0x14, 0x05, 0x70, 0x79, 0x10, 0x9d, 0xf4, 0x5c, 0x0b, 0xf7, 0x30, - 0xfb, 0x8e, 0x5a, 0xe6, 0xbd, 0x89, 0x43, 0x3f, 0x18, 0x90, 0x13, 0x81, 0x2f, 0x91, 0x0c, 0x3f, - 0x55, 0x1e, 0x43, 0x75, 0x3c, 0x71, 0xec, 0x92, 0xad, 0xc0, 0x1c, 0x5b, 0x1e, 0x35, 0xf0, 0x2c, - 0x7e, 0x52, 0x4a, 0xcd, 0x59, 0xf6, 0xfd, 0xc8, 0xb3, 0x14, 0x1f, 0xd6, 0xf2, 0x16, 0x63, 0xac, - 0xf4, 0x26, 0x5c, 0xee, 0x10, 0x6c, 0x19, 0xaa, 0x11, 0xe3, 0x55, 0xe6, 0x10, 0x5b, 0x51, 0x6a, - 0x2e, 0x71, 0xef, 0x40, 0xec, 0x13, 0xe6, 0x53, 0xfe, 0x9c, 0x86, 0xe5, 0x11, 0x77, 0x16, 0x6a, - 0xc0, 0xff, 0xdb, 0x58, 0xef, 0xde, 0xdc, 0x60, 0x9b, 0xeb, 0x04, 0xb6, 0xaf, 0x6a, 0x86, 0xe1, - 0x61, 0x4a, 0x55, 0xd7, 0xc3, 0x1d, 0x72, 0x14, 0xa6, 0x50, 0x11, 0xa0, 0x86, 0xc0, 0x34, 0x04, - 0x64, 0x8f, 0x23, 0xd0, 0x7d, 0x78, 0x29, 0x94, 0x38, 0xd4, 0x2c, 0x62, 0x68, 0x2c, 0xa9, 0x21, - 0x11, 0xb1, 0x0c, 0xab, 0x02, 0xf6, 0x79, 0x84, 0x1a, 0x25, 0xa3, 0x3b, 0x36, 0xc5, 0x36, 0x0d, - 0xe8, 0xb0, 0x4c, 0x31, 0x29, 0xb3, 0x1d, 0xa1, 0xd2, 0x32, 0x5b, 0xb0, 0x9a, 0xca, 0x75, 0x2f, - 0x68, 0x5b, 0x44, 0x7f, 0x88, 0xfb, 0xc2, 0xcf, 0xef, 0xf8, 0x58, 0x23, 0x1b, 0x83, 0x3e, 0x06, - 0xe5, 0x54, 0x45, 0x2e, 0xc7, 0xa8, 0xcf, 0x70, 0x3f, 0xca, 0x66, 0x86, 0x2b, 0x55, 0x87, 0x8a, - 0x1a, 0xad, 0x35, 0x28, 0xeb, 0xb4, 0xd6, 0xb9, 0xa4, 0x56, 0x5c, 0xd9, 0xb0, 0x96, 0x0c, 0xb3, - 0x6e, 0xe0, 0xb9, 0x0e, 0xc5, 0xf2, 0xec, 0x9a, 0xb4, 0x5e, 0x6e, 0x46, 0x9f, 0xe8, 0x0a, 0x94, - 0x74, 0x87, 0xd8, 0xfc, 0x5c, 0xca, 0x73, 0xdc, 0x37, 0xc7, 0x0c, 0xac, 0xb7, 0xd0, 0x75, 0x58, - 0x62, 0x1d, 0xa4, 0x76, 0x02, 0xdb, 0xf0, 0x34, 0x42, 0xb1, 0xa7, 0xba, 0x9a, 0xdf, 0x95, 0x4b, - 0x3c, 0x28, 0x62, 0xbe, 0x0f, 0x62, 0xd7, 0x9e, 0xe6, 0x77, 0xd1, 0xab, 0xb0, 0xc8, 0x19, 0x6d, - 0xe2, 0x6e, 0x6e, 0x0a, 0x30, 0x70, 0x70, 0x99, 0x99, 0xb7, 0x98, 0x95, 0xe1, 0x94, 0xdf, 0x24, - 0x28, 0xa7, 0x6e, 0x65, 0xf4, 0x18, 0xe6, 0xc3, 0x71, 0xa7, 0xf6, 0xa8, 0xc9, 0xbb, 0x67, 0x82, - 0x49, 0x11, 0xce, 0xb4, 0x94, 0xd4, 0x47, 0x53, 0x4d, 0xa0, 0xb1, 0x1d, 0xed, 0x03, 0x58, 0xd8, - 0xd4, 0xf4, 0x3e, 0xd7, 0x15, 0x13, 0x28, 0xf7, 0x46, 0xdc, 0xe1, 0x8c, 0x61, 0xd9, 0x92, 0x15, - 0x99, 0xb7, 0x66, 0xa0, 0xd8, 0xa3, 0xa6, 0xa2, 0xc3, 0x52, 0x56, 0x0a, 0x63, 0xcf, 0xe2, 0x12, - 0xcc, 0x78, 0x4e, 0xe0, 0xe3, 0xb0, 0xb9, 0xc5, 0x47, 0xea, 0xf0, 0x17, 0xd3, 0x87, 0x7f, 0x07, - 0x2e, 0x66, 0xe4, 0x73, 0xd6, 0xab, 0x64, 0x05, 0x96, 0x3f, 0xc4, 0x7e, 0xea, 0x79, 0xd5, 0xc4, - 0x07, 0x01, 0xa6, 0xbe, 0xf2, 0x05, 0xc8, 0xa7, 0x5d, 0xd4, 0x65, 0x5d, 0x85, 0xde, 0x87, 0xa2, - 0xe6, 0xba, 0xe1, 0xbe, 0xe4, 0x4e, 0xdc, 0xb4, 0x06, 0x63, 0x2a, 0x47, 0xb0, 0x3c, 0xe2, 0x7d, - 0x82, 0x9e, 0x9e, 0x7a, 0xf0, 0x88, 0xc1, 0x75, 0xfb, 0x45, 0x1e, 0x3c, 0x23, 0xdf, 0x3b, 0xca, - 0x77, 0x12, 0x5c, 0xce, 0x46, 0x8e, 0x5d, 0xc3, 0x4f, 0x61, 0xb6, 0x87, 0xfd, 0xae, 0x63, 0x44, - 0xf3, 0xea, 0xd6, 0x44, 0xe9, 0xec, 0x72, 0x4e, 0x22, 0x9b, 0x48, 0x45, 0x69, 0xc1, 0xa5, 0x4c, - 0x44, 0xd6, 0xf8, 0x8f, 0x4f, 0x92, 0x58, 0x18, 0x7e, 0x92, 0x0a, 0x83, 0x93, 0xc4, 0x75, 0xf8, - 0x49, 0xaa, 0x80, 0xbc, 0x43, 0xa8, 0xdf, 0xb0, 0xac, 0x78, 0x40, 0xd0, 0x68, 0x3f, 0xef, 0xc1, - 0x4a, 0x86, 0x2f, 0xdc, 0xd0, 0xd7, 0x60, 0x71, 0x30, 0x22, 0xc5, 0x2c, 0x90, 0xf8, 0x2c, 0x58, - 0x88, 0xcd, 0x62, 0x0a, 0x6c, 0x43, 0x85, 0xa9, 0xc4, 0xf3, 0x4c, 0x3c, 0xd5, 0xc3, 0x18, 0xe8, - 0x15, 0x58, 0x48, 0xcb, 0x84, 0x55, 0x94, 0x53, 0x2a, 0x8a, 0x0a, 0x57, 0x32, 0x45, 0xc2, 0x64, - 0xee, 0xc2, 0x2a, 0x49, 0xb9, 0xd4, 0x1e, 0xa6, 0x54, 0x33, 0xd3, 0x99, 0x55, 0xd2, 0x98, 0x5d, - 0x01, 0xe1, 0x59, 0x6e, 0xfc, 0x3b, 0x0d, 0x17, 0x9a, 0xf1, 0x96, 0x84, 0x3b, 0x8d, 0x7e, 0x91, - 0xe0, 0x7f, 0xc3, 0x2d, 0x8d, 0x72, 0xdf, 0xd1, 0x23, 0xce, 0x47, 0xe5, 0xad, 0x17, 0x27, 0x8a, - 0xfa, 0x94, 0xdb, 0xdf, 0xfe, 0xf1, 0xcf, 0x0f, 0x85, 0xeb, 0xa8, 0x96, 0xf7, 0x4b, 0x4a, 0x73, - 0xdd, 0xc4, 0x8c, 0x46, 0x3f, 0x4b, 0x70, 0xe1, 0xd4, 0x16, 0xa2, 0xdc, 0x3c, 0x46, 0x75, 0x44, - 0xe5, 0xce, 0x19, 0x98, 0x61, 0x09, 0x1b, 0xbc, 0x84, 0xab, 0xe8, 0xf5, 0xbc, 0x12, 0x06, 0x0f, - 0x47, 0x74, 0x22, 0xc1, 0xc5, 0x8c, 0x6d, 0x47, 0x6f, 0x4f, 0x92, 0x46, 0x76, 0xc3, 0x55, 0xde, - 0x39, 0x13, 0x37, 0x2c, 0xa2, 0xc5, 0x8b, 0xd8, 0x45, 0x0f, 0x27, 0x2f, 0xa2, 0xfe, 0x55, 0xba, - 0xbf, 0xbf, 0xa9, 0xa7, 0xbb, 0x90, 0x6e, 0xb5, 0x7e, 0x3f, 0xae, 0x4a, 0xcf, 0x8f, 0xab, 0xd2, - 0xdf, 0xc7, 0x55, 0xe9, 0xfb, 0x93, 0xea, 0xd4, 0xf3, 0x93, 0xea, 0xd4, 0x5f, 0x27, 0xd5, 0xa9, - 0x27, 0x77, 0x4c, 0xe2, 0x77, 0x83, 0x76, 0x4d, 0x77, 0x7a, 0x51, 0x40, 0xf1, 0xe7, 0x1a, 0x35, - 0x9e, 0xd5, 0xd9, 0x6d, 0x87, 0xbd, 0xba, 0xe9, 0xb9, 0x7a, 0x68, 0x1e, 0x24, 0xd2, 0x3e, 0xc7, - 0x7f, 0x0a, 0xdf, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xed, 0xf0, 0xac, 0x45, 0x7b, 0x0f, 0x00, - 0x00, + // 1253 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0xdf, 0x6f, 0xdb, 0xd4, + 0x17, 0xc0, 0xeb, 0x24, 0x5d, 0x9b, 0xd3, 0xa5, 0xfd, 0xee, 0xae, 0x3f, 0xdc, 0xac, 0xdf, 0x50, + 0x8c, 0x80, 0x0a, 0xb6, 0x64, 0x6b, 0xbb, 0xc1, 0x00, 0x01, 0x69, 0xb7, 0xc1, 0x58, 0x0b, 0x25, + 0xe9, 0x98, 0x34, 0x34, 0x2c, 0xc7, 0xbe, 0x71, 0xae, 0xe6, 0xd8, 0xae, 0xaf, 0x5d, 0x1a, 0x21, + 0x5e, 0x90, 0xf6, 0x8e, 0xc4, 0x1b, 0x7f, 0x05, 0x7f, 0x00, 0xbc, 0x81, 0xc4, 0xe3, 0x24, 0x5e, + 0x90, 0x78, 0x41, 0x2d, 0x7f, 0x04, 0x8f, 0xc8, 0xf7, 0xda, 0x8e, 0x9d, 0x38, 0x71, 0xd6, 0xa7, + 0xd6, 0xe7, 0xc7, 0xe7, 0x9e, 0x73, 0xcf, 0xb9, 0xf7, 0xdc, 0x40, 0x4d, 0xb5, 0x68, 0xd7, 0xa2, + 0xb5, 0x96, 0x42, 0x71, 0xcd, 0xc1, 0x6d, 0x03, 0xab, 0x2e, 0xb1, 0xcc, 0xda, 0xf1, 0x8d, 0x16, + 0x76, 0x95, 0x1b, 0x31, 0x51, 0xd5, 0x76, 0x2c, 0xd7, 0x42, 0x15, 0xee, 0x50, 0xf5, 0x1d, 0xaa, + 0x31, 0x6d, 0xe0, 0x50, 0x5e, 0xd3, 0x2d, 0x4b, 0x37, 0x70, 0x4d, 0xb1, 0x49, 0x4d, 0x31, 0x4d, + 0xcb, 0x55, 0x7c, 0x35, 0xe5, 0xde, 0xd2, 0x8f, 0x79, 0x28, 0xd5, 0x6d, 0xfb, 0x0e, 0xa6, 0xaa, + 0x43, 0x6c, 0xd7, 0x72, 0xd0, 0x5d, 0x98, 0x56, 0x3b, 0x0a, 0x31, 0xc5, 0xdc, 0xba, 0xb0, 0x31, + 0xb7, 0x59, 0xab, 0x8e, 0xe7, 0x57, 0x77, 0x7d, 0xe3, 0xbe, 0x7f, 0x83, 0x7b, 0x33, 0x8c, 0xa5, + 0x61, 0x55, 0xcc, 0x4f, 0x88, 0xf1, 0x8d, 0x13, 0x18, 0x5f, 0x80, 0x9e, 0x40, 0x49, 0xb5, 0xcc, + 0x36, 0xd1, 0x3d, 0x87, 0xc5, 0x2d, 0x16, 0x18, 0xee, 0xad, 0x6c, 0x5c, 0xcc, 0x29, 0x86, 0x4d, + 0xd2, 0xd0, 0x57, 0x30, 0x7f, 0xe4, 0x61, 0xa7, 0x27, 0x53, 0xec, 0x1c, 0x13, 0x15, 0x53, 0x71, + 0x7a, 0x32, 0xfe, 0xe7, 0xbe, 0x57, 0x33, 0x70, 0x8a, 0xf3, 0x8f, 0xe2, 0x0a, 0xf4, 0x1e, 0xe4, + 0xdc, 0x13, 0xf1, 0x02, 0x63, 0x5e, 0xcd, 0x62, 0x1e, 0x9e, 0xc4, 0x40, 0x39, 0xf7, 0x44, 0xfa, + 0x55, 0x80, 0x8b, 0x71, 0x21, 0x2a, 0xc3, 0x6c, 0xdb, 0x33, 0x0c, 0x53, 0xe9, 0x62, 0x51, 0x58, + 0x17, 0x36, 0x8a, 0x8d, 0xe8, 0x1b, 0x3d, 0x84, 0x39, 0xc5, 0x73, 0x3b, 0x32, 0x4f, 0x30, 0xa8, + 0xde, 0x76, 0xd6, 0x9a, 0x75, 0xcf, 0xed, 0xf0, 0xbd, 0x8a, 0xad, 0x0d, 0x4a, 0x24, 0x45, 0x75, + 0x28, 0x74, 0xa9, 0x4e, 0xc5, 0xfc, 0x7a, 0x7e, 0x63, 0x6e, 0xf3, 0x5a, 0x16, 0x6f, 0x9f, 0xc6, + 0x41, 0xcc, 0x55, 0x72, 0x60, 0x31, 0x6d, 0x19, 0xf4, 0x18, 0x4a, 0x94, 0xe8, 0x26, 0x31, 0x75, + 0xb9, 0x6b, 0x69, 0x98, 0x8a, 0x02, 0x5b, 0xe3, 0x66, 0xd6, 0x1a, 0x4d, 0xee, 0xb4, 0x6f, 0x69, + 0x38, 0xb6, 0xd6, 0x45, 0xda, 0x17, 0x53, 0xe9, 0x4d, 0x58, 0x4a, 0x35, 0x43, 0x08, 0x0a, 0xb1, + 0xed, 0x63, 0xff, 0x4b, 0x2f, 0xc3, 0xc2, 0x40, 0x17, 0xa3, 0x79, 0xc8, 0x11, 0x2d, 0x30, 0xca, + 0x11, 0x4d, 0x6a, 0xc3, 0xc2, 0x40, 0x87, 0xa2, 0x26, 0x00, 0x31, 0x5d, 0xec, 0xb4, 0x15, 0x35, + 0x8a, 0x7d, 0x2b, 0x2b, 0xf6, 0xfb, 0xa1, 0x47, 0x7c, 0xbb, 0xfb, 0x18, 0xe9, 0xa7, 0x1c, 0x5c, + 0x4e, 0xb1, 0x19, 0x5b, 0xf9, 0x67, 0x02, 0xac, 0x45, 0x08, 0x59, 0x51, 0x55, 0x6c, 0xbb, 0x6c, + 0x53, 0x31, 0xa5, 0x8a, 0x8e, 0xa9, 0x98, 0x63, 0xb1, 0xed, 0x4e, 0x1c, 0x5b, 0x3d, 0x44, 0xec, + 0x73, 0x42, 0x2c, 0xd6, 0x32, 0x19, 0x65, 0x44, 0x91, 0x07, 0xcb, 0xfd, 0x30, 0x48, 0xd7, 0x36, + 0x70, 0x17, 0xfb, 0xdf, 0x61, 0xf3, 0xbc, 0x3f, 0x71, 0x00, 0xf7, 0xfb, 0xce, 0xb1, 0xb5, 0x97, + 0x48, 0x8a, 0x9e, 0x4a, 0x8f, 0xa0, 0x32, 0xde, 0x71, 0xec, 0xe6, 0xad, 0xc2, 0xac, 0xdb, 0xb3, + 0xb1, 0xec, 0x39, 0x06, 0x3b, 0x33, 0xc5, 0xc6, 0x8c, 0xff, 0xfd, 0xd0, 0x31, 0xa4, 0xaf, 0xe1, + 0x95, 0x09, 0xb6, 0x64, 0x2c, 0x7d, 0x1b, 0x96, 0xdb, 0x04, 0x1b, 0x9a, 0xac, 0x45, 0xf6, 0xb2, + 0xaf, 0xe0, 0x35, 0x29, 0x36, 0x16, 0x99, 0xb6, 0x0f, 0xfb, 0xd4, 0xd7, 0x49, 0x7f, 0x15, 0x60, + 0x65, 0xc4, 0x05, 0x86, 0xea, 0xf0, 0xff, 0x16, 0x56, 0x3b, 0x5b, 0x9b, 0x7e, 0xa1, 0x2d, 0xcf, + 0x74, 0x65, 0x45, 0xd3, 0x1c, 0x4c, 0xa9, 0x6c, 0x3b, 0xb8, 0x4d, 0x4e, 0x82, 0x10, 0xca, 0xdc, + 0xa8, 0xce, 0x6d, 0xea, 0xdc, 0xe4, 0x80, 0x59, 0xa0, 0xbb, 0xf0, 0x52, 0x80, 0x38, 0x56, 0x0c, + 0xa2, 0x29, 0x7e, 0x50, 0x03, 0x10, 0xbe, 0x13, 0x6b, 0xdc, 0xec, 0x8b, 0xd0, 0x6a, 0x14, 0x46, + 0xb5, 0x4c, 0x8a, 0x4d, 0xea, 0xd1, 0x41, 0x4c, 0x3e, 0x8e, 0xd9, 0x0d, 0xad, 0x92, 0x98, 0x7b, + 0xb0, 0x3e, 0x90, 0x90, 0xed, 0xb5, 0x0c, 0xa2, 0xca, 0x4f, 0x71, 0x2f, 0xe4, 0x14, 0xe2, 0x9c, + 0x20, 0xa7, 0x03, 0x66, 0xf5, 0x00, 0xf7, 0x02, 0xce, 0x27, 0x20, 0x0d, 0x65, 0x35, 0x4c, 0x9a, + 0x66, 0xa4, 0xca, 0x40, 0x62, 0xa3, 0x59, 0xfd, 0xd4, 0x86, 0x59, 0x17, 0xe2, 0xac, 0x28, 0xbb, + 0x41, 0x96, 0x08, 0x33, 0xb6, 0xe7, 0xd8, 0x16, 0xc5, 0xe2, 0xcc, 0xba, 0xb0, 0x51, 0x6a, 0x84, + 0x9f, 0xe8, 0x0a, 0x14, 0x55, 0x8b, 0x98, 0xb2, 0xdf, 0x6f, 0xe2, 0x2c, 0xd3, 0xcd, 0xfa, 0x82, + 0xc3, 0x9e, 0x8d, 0xd1, 0x75, 0x58, 0xf4, 0xbb, 0x48, 0x6e, 0x7b, 0xa6, 0xe6, 0x28, 0x84, 0x62, + 0x47, 0xb6, 0x15, 0xb7, 0x23, 0x16, 0xd9, 0xa2, 0xc8, 0xd7, 0xdd, 0x8b, 0x54, 0x07, 0x8a, 0xdb, + 0x41, 0xaf, 0xc1, 0x02, 0xf3, 0x68, 0x11, 0x7b, 0x7b, 0x9b, 0x1b, 0x03, 0x33, 0x2e, 0xf9, 0xe2, + 0x1d, 0x5f, 0xea, 0xdb, 0x49, 0xbf, 0x09, 0x50, 0x4a, 0x5c, 0xd3, 0xe8, 0x11, 0xcc, 0x05, 0xf3, + 0x4f, 0xee, 0x52, 0x9d, 0x75, 0xd0, 0x04, 0xa3, 0x23, 0x18, 0x72, 0x09, 0xd4, 0xc7, 0x53, 0x0d, + 0xa0, 0x91, 0x1c, 0x1d, 0x02, 0x18, 0x58, 0x57, 0xd4, 0x1e, 0xe3, 0xf2, 0x91, 0x94, 0x79, 0x45, + 0xee, 0x31, 0x8f, 0x41, 0x6c, 0xd1, 0x08, 0xc5, 0x3b, 0xd3, 0x90, 0xef, 0x52, 0x5d, 0x52, 0x61, + 0x31, 0x2d, 0x84, 0xb1, 0xe7, 0x71, 0x11, 0xa6, 0x1d, 0xcb, 0x73, 0x71, 0xd0, 0xe0, 0xfc, 0x23, + 0x71, 0x07, 0xe4, 0x93, 0x77, 0xc0, 0x1e, 0x5c, 0x4e, 0x89, 0xe7, 0xbc, 0x37, 0xca, 0x2a, 0xac, + 0x7c, 0x84, 0xdd, 0xc4, 0x7b, 0xab, 0x81, 0x8f, 0x3c, 0x4c, 0x5d, 0xe9, 0x4b, 0x10, 0x87, 0x55, + 0xd4, 0xf6, 0xbb, 0x0a, 0x7d, 0x00, 0x79, 0xc5, 0xb6, 0x83, 0xba, 0x64, 0x8e, 0xe0, 0x24, 0xc3, + 0xf7, 0x94, 0x4e, 0x60, 0x65, 0xc4, 0x83, 0x05, 0x3d, 0x19, 0x7a, 0x01, 0xf1, 0x49, 0x76, 0xeb, + 0x45, 0x5e, 0x40, 0x23, 0x1f, 0x40, 0xd2, 0x33, 0x01, 0x96, 0xd3, 0x2d, 0xc7, 0xee, 0xe1, 0x67, + 0x30, 0xd3, 0xc5, 0x6e, 0xc7, 0xd2, 0xc2, 0xe1, 0x75, 0x73, 0xa2, 0x70, 0xf6, 0x99, 0x4f, 0x2c, + 0x9a, 0x90, 0x22, 0x35, 0x61, 0x29, 0xd5, 0x22, 0xed, 0x3d, 0x10, 0x9d, 0x24, 0xbe, 0x31, 0xec, + 0x24, 0xe5, 0xfa, 0x27, 0x89, 0x71, 0xd8, 0x49, 0x2a, 0x83, 0xb8, 0x47, 0xa8, 0x5b, 0x37, 0x8c, + 0x68, 0x4e, 0xd0, 0xb0, 0x9e, 0x77, 0x60, 0x35, 0x45, 0x17, 0x14, 0xf4, 0x75, 0x58, 0xe8, 0x4f, + 0x4a, 0x3e, 0x0f, 0x04, 0x36, 0x0f, 0xe6, 0x23, 0x31, 0x9f, 0x04, 0xbb, 0x50, 0xf6, 0x29, 0xd1, + 0x58, 0xe3, 0x6f, 0xf7, 0x60, 0x0d, 0xf4, 0x2a, 0xcc, 0x27, 0x31, 0x41, 0x16, 0xa5, 0x04, 0x45, + 0x92, 0xe1, 0x4a, 0x2a, 0x24, 0x08, 0xe6, 0x43, 0x58, 0x23, 0x09, 0x55, 0xf8, 0x70, 0x48, 0x44, + 0x56, 0x4e, 0xda, 0x04, 0x63, 0x90, 0x45, 0xb9, 0xf9, 0x6f, 0x01, 0x2e, 0x35, 0xa2, 0x92, 0x04, + 0x95, 0x46, 0xbf, 0x08, 0xf0, 0xbf, 0xc1, 0x96, 0x46, 0x99, 0x0f, 0xeb, 0x11, 0xe7, 0xa3, 0xfc, + 0xf6, 0x8b, 0x3b, 0xf2, 0xfc, 0xa4, 0x5b, 0xdf, 0xfd, 0xf1, 0xcf, 0x0f, 0xb9, 0xeb, 0xa8, 0x9a, + 0xf5, 0xd3, 0x4a, 0xb1, 0xed, 0xd8, 0x9c, 0x46, 0x3f, 0x0b, 0x70, 0x69, 0xa8, 0x84, 0x28, 0x33, + 0x8e, 0x51, 0x1d, 0x51, 0xbe, 0x7d, 0x0e, 0xcf, 0x20, 0x85, 0x4d, 0x96, 0xc2, 0x55, 0xf4, 0x46, + 0x56, 0x0a, 0xfd, 0x97, 0x24, 0x3a, 0x13, 0xe0, 0x72, 0x4a, 0xd9, 0xd1, 0x3b, 0x93, 0x84, 0x91, + 0xde, 0x70, 0xe5, 0x77, 0xcf, 0xe5, 0x1b, 0x24, 0xd1, 0x64, 0x49, 0xec, 0xa3, 0x07, 0x93, 0x27, + 0x51, 0xfb, 0x26, 0xd9, 0xdf, 0xdf, 0xd6, 0x92, 0x5d, 0x48, 0x77, 0x9a, 0xbf, 0x9f, 0x56, 0x84, + 0xe7, 0xa7, 0x15, 0xe1, 0xef, 0xd3, 0x8a, 0xf0, 0xfd, 0x59, 0x65, 0xea, 0xf9, 0x59, 0x65, 0xea, + 0xcf, 0xb3, 0xca, 0xd4, 0xe3, 0xdb, 0x3a, 0x71, 0x3b, 0x5e, 0xab, 0xaa, 0x5a, 0xdd, 0x70, 0x41, + 0xfe, 0xe7, 0x1a, 0xd5, 0x9e, 0xd6, 0xfc, 0xdb, 0x0e, 0x3b, 0x35, 0xdd, 0xb1, 0xd5, 0x40, 0xdc, + 0x0f, 0xa4, 0x75, 0x81, 0xfd, 0x36, 0xde, 0xfa, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xcf, 0x6d, 0x3a, + 0xd1, 0x8c, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1879,10 +1879,10 @@ func (m *InterfaceDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x1a } } - if len(m.InterfaceAcceptingTypes) > 0 { - for iNdEx := len(m.InterfaceAcceptingTypes) - 1; iNdEx >= 0; iNdEx-- { + if len(m.InterfaceAcceptingMessages) > 0 { + for iNdEx := len(m.InterfaceAcceptingMessages) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.InterfaceAcceptingTypes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.InterfaceAcceptingMessages[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1940,7 +1940,7 @@ func (m *InterfaceImplementerDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, return len(dAtA) - i, nil } -func (m *InterfaceAcceptingTypeDescriptor) Marshal() (dAtA []byte, err error) { +func (m *InterfaceAcceptingMessageDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1950,12 +1950,12 @@ func (m *InterfaceAcceptingTypeDescriptor) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *InterfaceAcceptingTypeDescriptor) MarshalTo(dAtA []byte) (int, error) { +func (m *InterfaceAcceptingMessageDescriptor) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *InterfaceAcceptingTypeDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *InterfaceAcceptingMessageDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -2645,8 +2645,8 @@ func (m *InterfaceDescriptor) Size() (n int) { if l > 0 { n += 1 + l + sovReflection(uint64(l)) } - if len(m.InterfaceAcceptingTypes) > 0 { - for _, e := range m.InterfaceAcceptingTypes { + if len(m.InterfaceAcceptingMessages) > 0 { + for _, e := range m.InterfaceAcceptingMessages { l = e.Size() n += 1 + l + sovReflection(uint64(l)) } @@ -2677,7 +2677,7 @@ func (m *InterfaceImplementerDescriptor) Size() (n int) { return n } -func (m *InterfaceAcceptingTypeDescriptor) Size() (n int) { +func (m *InterfaceAcceptingMessageDescriptor) Size() (n int) { if m == nil { return 0 } @@ -3725,7 +3725,7 @@ func (m *InterfaceDescriptor) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InterfaceAcceptingTypes", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field InterfaceAcceptingMessages", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3752,8 +3752,8 @@ func (m *InterfaceDescriptor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.InterfaceAcceptingTypes = append(m.InterfaceAcceptingTypes, &InterfaceAcceptingTypeDescriptor{}) - if err := m.InterfaceAcceptingTypes[len(m.InterfaceAcceptingTypes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.InterfaceAcceptingMessages = append(m.InterfaceAcceptingMessages, &InterfaceAcceptingMessageDescriptor{}) + if err := m.InterfaceAcceptingMessages[len(m.InterfaceAcceptingMessages)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -3926,7 +3926,7 @@ func (m *InterfaceImplementerDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *InterfaceAcceptingTypeDescriptor) Unmarshal(dAtA []byte) error { +func (m *InterfaceAcceptingMessageDescriptor) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3949,10 +3949,10 @@ func (m *InterfaceAcceptingTypeDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: InterfaceAcceptingTypeDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: InterfaceAcceptingMessageDescriptor: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: InterfaceAcceptingTypeDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: InterfaceAcceptingMessageDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: From 300f8d62ad44fbd02af0d00fa0663051bb6a00e6 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Fri, 26 Mar 2021 11:56:07 +0100 Subject: [PATCH 04/26] change: various cleanups --- docs/core/proto-docs.md | 14 +- .../base/reflection/v1beta1/reflection.proto | 17 +- .../grpc/cosmosreflection/cosmosreflection.go | 8 +- server/grpc/cosmosreflection/reflection.pb.go | 338 ++++++++++-------- 4 files changed, 216 insertions(+), 161 deletions(-) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 9d0f4e49c455..e7c33306577c 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -118,7 +118,7 @@ - [cosmos/base/reflection/v1beta1/reflection.proto](#cosmos/base/reflection/v1beta1/reflection.proto) - [AppDescriptor](#cosmos.base.reflection.v1beta1.AppDescriptor) - - [AuthConfigDescriptor](#cosmos.base.reflection.v1beta1.AuthConfigDescriptor) + - [AuthnDescriptor](#cosmos.base.reflection.v1beta1.AuthnDescriptor) - [ChainDescriptor](#cosmos.base.reflection.v1beta1.ChainDescriptor) - [CodecDescriptor](#cosmos.base.reflection.v1beta1.CodecDescriptor) - [ConfigurationDescriptor](#cosmos.base.reflection.v1beta1.ConfigurationDescriptor) @@ -2053,15 +2053,17 @@ AppDescriptor describes a cosmos-sdk based application - + -### AuthConfigDescriptor -AuthConfigDescriptor provides information on how to sign transactions +### AuthnDescriptor +AuthnDescriptor provides information on how to sign transactions without relying +on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `signing_modes` | [SigningModeDescriptor](#cosmos.base.reflection.v1beta1.SigningModeDescriptor) | repeated | signing_modes is a list of descriptors of the sign modes | +| `sign_mode` | [string](#string) | | sign_mode defines the signature algorithm | +| `authn_info_provider_method_fullname` | [string](#string) | | authn_info_provider_method_fullname defines the fullname of the method to call to get the metadata required to authenticate | @@ -2379,7 +2381,7 @@ TxDescriptor describes the accepted transaction type | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `fullname` | [string](#string) | | fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) | -| `auth_config` | [AuthConfigDescriptor](#cosmos.base.reflection.v1beta1.AuthConfigDescriptor) | | auth_config provides information on the accepted signatures | +| `authn` | [AuthnDescriptor](#cosmos.base.reflection.v1beta1.AuthnDescriptor) | | authn provides information on how to authenticate a transaction in offline mode | | `msgs` | [MsgDescriptor](#cosmos.base.reflection.v1beta1.MsgDescriptor) | repeated | msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) NOTE: not to be confused with proto.Message types | diff --git a/proto/cosmos/base/reflection/v1beta1/reflection.proto b/proto/cosmos/base/reflection/v1beta1/reflection.proto index 148729462db5..eac10789baed 100644 --- a/proto/cosmos/base/reflection/v1beta1/reflection.proto +++ b/proto/cosmos/base/reflection/v1beta1/reflection.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package cosmos.base.reflection.v1beta1; import "google/api/annotations.proto"; +import "google/protobuf/any.proto"; option go_package = "github.com/cosmos/cosmos-sdk/server/grpc/cosmosreflection"; @@ -43,17 +44,21 @@ message AppDescriptor { message TxDescriptor { // fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) string fullname = 1; - // auth_config provides information on the accepted signatures - AuthConfigDescriptor auth_config = 2; + // authn provides information on how to authenticate a transaction in offline mode + AuthnDescriptor authn = 2; // msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) // NOTE: not to be confused with proto.Message types repeated MsgDescriptor msgs = 3; } -// AuthConfigDescriptor provides information on how to sign transactions -message AuthConfigDescriptor { - // signing_modes is a list of descriptors of the sign modes - repeated SigningModeDescriptor signing_modes = 1; +// AuthnDescriptor provides information on how to sign transactions without relying +// on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures +message AuthnDescriptor { + // sign_mode defines the signature algorithm + string sign_mode = 1; + // authn_info_provider_method_fullname defines the fullname of the method to call to get + // the metadata required to authenticate + string authn_info_provider_method_fullname = 2; } // SigningModeDescriptor provides information on a signing flow of the application diff --git a/server/grpc/cosmosreflection/cosmosreflection.go b/server/grpc/cosmosreflection/cosmosreflection.go index 73b70cdc1091..fec1ef505228 100644 --- a/server/grpc/cosmosreflection/cosmosreflection.go +++ b/server/grpc/cosmosreflection/cosmosreflection.go @@ -15,6 +15,7 @@ import ( ) type Config struct { + Address string SigningModes []string ChainID string SdkConfig *sdk.Config @@ -24,6 +25,7 @@ type Config struct { // Register registers the cosmos sdk reflection service // to the provided *grpc.Server given a Config func Register(srv *grpc.Server, conf Config) error { + reflectionServer, err := newReflectionServiceServer(srv, conf) if err != nil { return err @@ -217,8 +219,8 @@ func newDeliverDescriptor(ir codectypes.InterfaceRegistry, signingModes []string signModesDesc[i] = &SigningModeDescriptor{Name: m} } return &TxDescriptor{ - Fullname: txPbName, - AuthConfig: &AuthConfigDescriptor{SigningModes: signModesDesc}, - Msgs: msgsDesc, + Fullname: txPbName, + Authn: &AuthnDescriptor{}, // TODO + Msgs: msgsDesc, }, nil } diff --git a/server/grpc/cosmosreflection/reflection.pb.go b/server/grpc/cosmosreflection/reflection.pb.go index 7091353b3a21..de5b07bc5767 100644 --- a/server/grpc/cosmosreflection/reflection.pb.go +++ b/server/grpc/cosmosreflection/reflection.pb.go @@ -6,6 +6,7 @@ package cosmosreflection import ( context "context" fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/codec/types" grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" @@ -114,8 +115,8 @@ func (m *AppDescriptor) GetTx() *TxDescriptor { type TxDescriptor struct { // fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` - // auth_config provides information on the accepted signatures - AuthConfig *AuthConfigDescriptor `protobuf:"bytes,2,opt,name=auth_config,json=authConfig,proto3" json:"auth_config,omitempty"` + // authn provides information on how to authenticate a transaction in offline mode + Authn *AuthnDescriptor `protobuf:"bytes,2,opt,name=authn,proto3" json:"authn,omitempty"` // msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) // NOTE: not to be confused with proto.Message types Msgs []*MsgDescriptor `protobuf:"bytes,3,rep,name=msgs,proto3" json:"msgs,omitempty"` @@ -161,9 +162,9 @@ func (m *TxDescriptor) GetFullname() string { return "" } -func (m *TxDescriptor) GetAuthConfig() *AuthConfigDescriptor { +func (m *TxDescriptor) GetAuthn() *AuthnDescriptor { if m != nil { - return m.AuthConfig + return m.Authn } return nil } @@ -175,24 +176,28 @@ func (m *TxDescriptor) GetMsgs() []*MsgDescriptor { return nil } -// AuthConfigDescriptor provides information on how to sign transactions -type AuthConfigDescriptor struct { - // signing_modes is a list of descriptors of the sign modes - SigningModes []*SigningModeDescriptor `protobuf:"bytes,1,rep,name=signing_modes,json=signingModes,proto3" json:"signing_modes,omitempty"` +// AuthnDescriptor provides information on how to sign transactions without relying +// on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures +type AuthnDescriptor struct { + // sign_mode defines the signature algorithm + SignMode string `protobuf:"bytes,1,opt,name=sign_mode,json=signMode,proto3" json:"sign_mode,omitempty"` + // authn_info_provider_method_fullname defines the fullname of the method to call to get + // the metadata required to authenticate + AuthnInfoProviderMethodFullname string `protobuf:"bytes,2,opt,name=authn_info_provider_method_fullname,json=authnInfoProviderMethodFullname,proto3" json:"authn_info_provider_method_fullname,omitempty"` } -func (m *AuthConfigDescriptor) Reset() { *m = AuthConfigDescriptor{} } -func (m *AuthConfigDescriptor) String() string { return proto.CompactTextString(m) } -func (*AuthConfigDescriptor) ProtoMessage() {} -func (*AuthConfigDescriptor) Descriptor() ([]byte, []int) { +func (m *AuthnDescriptor) Reset() { *m = AuthnDescriptor{} } +func (m *AuthnDescriptor) String() string { return proto.CompactTextString(m) } +func (*AuthnDescriptor) ProtoMessage() {} +func (*AuthnDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor_d48c054165687f5c, []int{2} } -func (m *AuthConfigDescriptor) XXX_Unmarshal(b []byte) error { +func (m *AuthnDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *AuthConfigDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *AuthnDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_AuthConfigDescriptor.Marshal(b, m, deterministic) + return xxx_messageInfo_AuthnDescriptor.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -202,23 +207,30 @@ func (m *AuthConfigDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte return b[:n], nil } } -func (m *AuthConfigDescriptor) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuthConfigDescriptor.Merge(m, src) +func (m *AuthnDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_AuthnDescriptor.Merge(m, src) } -func (m *AuthConfigDescriptor) XXX_Size() int { +func (m *AuthnDescriptor) XXX_Size() int { return m.Size() } -func (m *AuthConfigDescriptor) XXX_DiscardUnknown() { - xxx_messageInfo_AuthConfigDescriptor.DiscardUnknown(m) +func (m *AuthnDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_AuthnDescriptor.DiscardUnknown(m) } -var xxx_messageInfo_AuthConfigDescriptor proto.InternalMessageInfo +var xxx_messageInfo_AuthnDescriptor proto.InternalMessageInfo -func (m *AuthConfigDescriptor) GetSigningModes() []*SigningModeDescriptor { +func (m *AuthnDescriptor) GetSignMode() string { if m != nil { - return m.SigningModes + return m.SignMode } - return nil + return "" +} + +func (m *AuthnDescriptor) GetAuthnInfoProviderMethodFullname() string { + if m != nil { + return m.AuthnInfoProviderMethodFullname + } + return "" } // SigningModeDescriptor provides information on a signing flow of the application @@ -1301,7 +1313,7 @@ func (m *ListImplementationsResponse) GetImplementationMessageNames() []string { func init() { proto.RegisterType((*AppDescriptor)(nil), "cosmos.base.reflection.v1beta1.AppDescriptor") proto.RegisterType((*TxDescriptor)(nil), "cosmos.base.reflection.v1beta1.TxDescriptor") - proto.RegisterType((*AuthConfigDescriptor)(nil), "cosmos.base.reflection.v1beta1.AuthConfigDescriptor") + proto.RegisterType((*AuthnDescriptor)(nil), "cosmos.base.reflection.v1beta1.AuthnDescriptor") proto.RegisterType((*SigningModeDescriptor)(nil), "cosmos.base.reflection.v1beta1.SigningModeDescriptor") proto.RegisterType((*ChainDescriptor)(nil), "cosmos.base.reflection.v1beta1.ChainDescriptor") proto.RegisterType((*CodecDescriptor)(nil), "cosmos.base.reflection.v1beta1.CodecDescriptor") @@ -1328,86 +1340,88 @@ func init() { } var fileDescriptor_d48c054165687f5c = []byte{ - // 1253 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0xdf, 0x6f, 0xdb, 0xd4, - 0x17, 0xc0, 0xeb, 0x24, 0x5d, 0x9b, 0xd3, 0xa5, 0xfd, 0xee, 0xae, 0x3f, 0xdc, 0xac, 0xdf, 0x50, - 0x8c, 0x80, 0x0a, 0xb6, 0x64, 0x6b, 0xbb, 0xc1, 0x00, 0x01, 0x69, 0xb7, 0xc1, 0x58, 0x0b, 0x25, - 0xe9, 0x98, 0x34, 0x34, 0x2c, 0xc7, 0xbe, 0x71, 0xae, 0xe6, 0xd8, 0xae, 0xaf, 0x5d, 0x1a, 0x21, - 0x5e, 0x90, 0xf6, 0x8e, 0xc4, 0x1b, 0x7f, 0x05, 0x7f, 0x00, 0xbc, 0x81, 0xc4, 0xe3, 0x24, 0x5e, - 0x90, 0x78, 0x41, 0x2d, 0x7f, 0x04, 0x8f, 0xc8, 0xf7, 0xda, 0x8e, 0x9d, 0x38, 0x71, 0xd6, 0xa7, - 0xd6, 0xe7, 0xc7, 0xe7, 0x9e, 0x73, 0xcf, 0xb9, 0xf7, 0xdc, 0x40, 0x4d, 0xb5, 0x68, 0xd7, 0xa2, - 0xb5, 0x96, 0x42, 0x71, 0xcd, 0xc1, 0x6d, 0x03, 0xab, 0x2e, 0xb1, 0xcc, 0xda, 0xf1, 0x8d, 0x16, - 0x76, 0x95, 0x1b, 0x31, 0x51, 0xd5, 0x76, 0x2c, 0xd7, 0x42, 0x15, 0xee, 0x50, 0xf5, 0x1d, 0xaa, - 0x31, 0x6d, 0xe0, 0x50, 0x5e, 0xd3, 0x2d, 0x4b, 0x37, 0x70, 0x4d, 0xb1, 0x49, 0x4d, 0x31, 0x4d, - 0xcb, 0x55, 0x7c, 0x35, 0xe5, 0xde, 0xd2, 0x8f, 0x79, 0x28, 0xd5, 0x6d, 0xfb, 0x0e, 0xa6, 0xaa, - 0x43, 0x6c, 0xd7, 0x72, 0xd0, 0x5d, 0x98, 0x56, 0x3b, 0x0a, 0x31, 0xc5, 0xdc, 0xba, 0xb0, 0x31, - 0xb7, 0x59, 0xab, 0x8e, 0xe7, 0x57, 0x77, 0x7d, 0xe3, 0xbe, 0x7f, 0x83, 0x7b, 0x33, 0x8c, 0xa5, - 0x61, 0x55, 0xcc, 0x4f, 0x88, 0xf1, 0x8d, 0x13, 0x18, 0x5f, 0x80, 0x9e, 0x40, 0x49, 0xb5, 0xcc, - 0x36, 0xd1, 0x3d, 0x87, 0xc5, 0x2d, 0x16, 0x18, 0xee, 0xad, 0x6c, 0x5c, 0xcc, 0x29, 0x86, 0x4d, - 0xd2, 0xd0, 0x57, 0x30, 0x7f, 0xe4, 0x61, 0xa7, 0x27, 0x53, 0xec, 0x1c, 0x13, 0x15, 0x53, 0x71, - 0x7a, 0x32, 0xfe, 0xe7, 0xbe, 0x57, 0x33, 0x70, 0x8a, 0xf3, 0x8f, 0xe2, 0x0a, 0xf4, 0x1e, 0xe4, - 0xdc, 0x13, 0xf1, 0x02, 0x63, 0x5e, 0xcd, 0x62, 0x1e, 0x9e, 0xc4, 0x40, 0x39, 0xf7, 0x44, 0xfa, - 0x55, 0x80, 0x8b, 0x71, 0x21, 0x2a, 0xc3, 0x6c, 0xdb, 0x33, 0x0c, 0x53, 0xe9, 0x62, 0x51, 0x58, - 0x17, 0x36, 0x8a, 0x8d, 0xe8, 0x1b, 0x3d, 0x84, 0x39, 0xc5, 0x73, 0x3b, 0x32, 0x4f, 0x30, 0xa8, - 0xde, 0x76, 0xd6, 0x9a, 0x75, 0xcf, 0xed, 0xf0, 0xbd, 0x8a, 0xad, 0x0d, 0x4a, 0x24, 0x45, 0x75, - 0x28, 0x74, 0xa9, 0x4e, 0xc5, 0xfc, 0x7a, 0x7e, 0x63, 0x6e, 0xf3, 0x5a, 0x16, 0x6f, 0x9f, 0xc6, - 0x41, 0xcc, 0x55, 0x72, 0x60, 0x31, 0x6d, 0x19, 0xf4, 0x18, 0x4a, 0x94, 0xe8, 0x26, 0x31, 0x75, - 0xb9, 0x6b, 0x69, 0x98, 0x8a, 0x02, 0x5b, 0xe3, 0x66, 0xd6, 0x1a, 0x4d, 0xee, 0xb4, 0x6f, 0x69, - 0x38, 0xb6, 0xd6, 0x45, 0xda, 0x17, 0x53, 0xe9, 0x4d, 0x58, 0x4a, 0x35, 0x43, 0x08, 0x0a, 0xb1, - 0xed, 0x63, 0xff, 0x4b, 0x2f, 0xc3, 0xc2, 0x40, 0x17, 0xa3, 0x79, 0xc8, 0x11, 0x2d, 0x30, 0xca, - 0x11, 0x4d, 0x6a, 0xc3, 0xc2, 0x40, 0x87, 0xa2, 0x26, 0x00, 0x31, 0x5d, 0xec, 0xb4, 0x15, 0x35, - 0x8a, 0x7d, 0x2b, 0x2b, 0xf6, 0xfb, 0xa1, 0x47, 0x7c, 0xbb, 0xfb, 0x18, 0xe9, 0xa7, 0x1c, 0x5c, - 0x4e, 0xb1, 0x19, 0x5b, 0xf9, 0x67, 0x02, 0xac, 0x45, 0x08, 0x59, 0x51, 0x55, 0x6c, 0xbb, 0x6c, - 0x53, 0x31, 0xa5, 0x8a, 0x8e, 0xa9, 0x98, 0x63, 0xb1, 0xed, 0x4e, 0x1c, 0x5b, 0x3d, 0x44, 0xec, - 0x73, 0x42, 0x2c, 0xd6, 0x32, 0x19, 0x65, 0x44, 0x91, 0x07, 0xcb, 0xfd, 0x30, 0x48, 0xd7, 0x36, - 0x70, 0x17, 0xfb, 0xdf, 0x61, 0xf3, 0xbc, 0x3f, 0x71, 0x00, 0xf7, 0xfb, 0xce, 0xb1, 0xb5, 0x97, - 0x48, 0x8a, 0x9e, 0x4a, 0x8f, 0xa0, 0x32, 0xde, 0x71, 0xec, 0xe6, 0xad, 0xc2, 0xac, 0xdb, 0xb3, - 0xb1, 0xec, 0x39, 0x06, 0x3b, 0x33, 0xc5, 0xc6, 0x8c, 0xff, 0xfd, 0xd0, 0x31, 0xa4, 0xaf, 0xe1, - 0x95, 0x09, 0xb6, 0x64, 0x2c, 0x7d, 0x1b, 0x96, 0xdb, 0x04, 0x1b, 0x9a, 0xac, 0x45, 0xf6, 0xb2, - 0xaf, 0xe0, 0x35, 0x29, 0x36, 0x16, 0x99, 0xb6, 0x0f, 0xfb, 0xd4, 0xd7, 0x49, 0x7f, 0x15, 0x60, - 0x65, 0xc4, 0x05, 0x86, 0xea, 0xf0, 0xff, 0x16, 0x56, 0x3b, 0x5b, 0x9b, 0x7e, 0xa1, 0x2d, 0xcf, - 0x74, 0x65, 0x45, 0xd3, 0x1c, 0x4c, 0xa9, 0x6c, 0x3b, 0xb8, 0x4d, 0x4e, 0x82, 0x10, 0xca, 0xdc, - 0xa8, 0xce, 0x6d, 0xea, 0xdc, 0xe4, 0x80, 0x59, 0xa0, 0xbb, 0xf0, 0x52, 0x80, 0x38, 0x56, 0x0c, - 0xa2, 0x29, 0x7e, 0x50, 0x03, 0x10, 0xbe, 0x13, 0x6b, 0xdc, 0xec, 0x8b, 0xd0, 0x6a, 0x14, 0x46, - 0xb5, 0x4c, 0x8a, 0x4d, 0xea, 0xd1, 0x41, 0x4c, 0x3e, 0x8e, 0xd9, 0x0d, 0xad, 0x92, 0x98, 0x7b, - 0xb0, 0x3e, 0x90, 0x90, 0xed, 0xb5, 0x0c, 0xa2, 0xca, 0x4f, 0x71, 0x2f, 0xe4, 0x14, 0xe2, 0x9c, - 0x20, 0xa7, 0x03, 0x66, 0xf5, 0x00, 0xf7, 0x02, 0xce, 0x27, 0x20, 0x0d, 0x65, 0x35, 0x4c, 0x9a, - 0x66, 0xa4, 0xca, 0x40, 0x62, 0xa3, 0x59, 0xfd, 0xd4, 0x86, 0x59, 0x17, 0xe2, 0xac, 0x28, 0xbb, - 0x41, 0x96, 0x08, 0x33, 0xb6, 0xe7, 0xd8, 0x16, 0xc5, 0xe2, 0xcc, 0xba, 0xb0, 0x51, 0x6a, 0x84, - 0x9f, 0xe8, 0x0a, 0x14, 0x55, 0x8b, 0x98, 0xb2, 0xdf, 0x6f, 0xe2, 0x2c, 0xd3, 0xcd, 0xfa, 0x82, - 0xc3, 0x9e, 0x8d, 0xd1, 0x75, 0x58, 0xf4, 0xbb, 0x48, 0x6e, 0x7b, 0xa6, 0xe6, 0x28, 0x84, 0x62, - 0x47, 0xb6, 0x15, 0xb7, 0x23, 0x16, 0xd9, 0xa2, 0xc8, 0xd7, 0xdd, 0x8b, 0x54, 0x07, 0x8a, 0xdb, - 0x41, 0xaf, 0xc1, 0x02, 0xf3, 0x68, 0x11, 0x7b, 0x7b, 0x9b, 0x1b, 0x03, 0x33, 0x2e, 0xf9, 0xe2, - 0x1d, 0x5f, 0xea, 0xdb, 0x49, 0xbf, 0x09, 0x50, 0x4a, 0x5c, 0xd3, 0xe8, 0x11, 0xcc, 0x05, 0xf3, - 0x4f, 0xee, 0x52, 0x9d, 0x75, 0xd0, 0x04, 0xa3, 0x23, 0x18, 0x72, 0x09, 0xd4, 0xc7, 0x53, 0x0d, - 0xa0, 0x91, 0x1c, 0x1d, 0x02, 0x18, 0x58, 0x57, 0xd4, 0x1e, 0xe3, 0xf2, 0x91, 0x94, 0x79, 0x45, - 0xee, 0x31, 0x8f, 0x41, 0x6c, 0xd1, 0x08, 0xc5, 0x3b, 0xd3, 0x90, 0xef, 0x52, 0x5d, 0x52, 0x61, - 0x31, 0x2d, 0x84, 0xb1, 0xe7, 0x71, 0x11, 0xa6, 0x1d, 0xcb, 0x73, 0x71, 0xd0, 0xe0, 0xfc, 0x23, - 0x71, 0x07, 0xe4, 0x93, 0x77, 0xc0, 0x1e, 0x5c, 0x4e, 0x89, 0xe7, 0xbc, 0x37, 0xca, 0x2a, 0xac, - 0x7c, 0x84, 0xdd, 0xc4, 0x7b, 0xab, 0x81, 0x8f, 0x3c, 0x4c, 0x5d, 0xe9, 0x4b, 0x10, 0x87, 0x55, - 0xd4, 0xf6, 0xbb, 0x0a, 0x7d, 0x00, 0x79, 0xc5, 0xb6, 0x83, 0xba, 0x64, 0x8e, 0xe0, 0x24, 0xc3, - 0xf7, 0x94, 0x4e, 0x60, 0x65, 0xc4, 0x83, 0x05, 0x3d, 0x19, 0x7a, 0x01, 0xf1, 0x49, 0x76, 0xeb, - 0x45, 0x5e, 0x40, 0x23, 0x1f, 0x40, 0xd2, 0x33, 0x01, 0x96, 0xd3, 0x2d, 0xc7, 0xee, 0xe1, 0x67, - 0x30, 0xd3, 0xc5, 0x6e, 0xc7, 0xd2, 0xc2, 0xe1, 0x75, 0x73, 0xa2, 0x70, 0xf6, 0x99, 0x4f, 0x2c, - 0x9a, 0x90, 0x22, 0x35, 0x61, 0x29, 0xd5, 0x22, 0xed, 0x3d, 0x10, 0x9d, 0x24, 0xbe, 0x31, 0xec, - 0x24, 0xe5, 0xfa, 0x27, 0x89, 0x71, 0xd8, 0x49, 0x2a, 0x83, 0xb8, 0x47, 0xa8, 0x5b, 0x37, 0x8c, - 0x68, 0x4e, 0xd0, 0xb0, 0x9e, 0x77, 0x60, 0x35, 0x45, 0x17, 0x14, 0xf4, 0x75, 0x58, 0xe8, 0x4f, - 0x4a, 0x3e, 0x0f, 0x04, 0x36, 0x0f, 0xe6, 0x23, 0x31, 0x9f, 0x04, 0xbb, 0x50, 0xf6, 0x29, 0xd1, - 0x58, 0xe3, 0x6f, 0xf7, 0x60, 0x0d, 0xf4, 0x2a, 0xcc, 0x27, 0x31, 0x41, 0x16, 0xa5, 0x04, 0x45, - 0x92, 0xe1, 0x4a, 0x2a, 0x24, 0x08, 0xe6, 0x43, 0x58, 0x23, 0x09, 0x55, 0xf8, 0x70, 0x48, 0x44, - 0x56, 0x4e, 0xda, 0x04, 0x63, 0x90, 0x45, 0xb9, 0xf9, 0x6f, 0x01, 0x2e, 0x35, 0xa2, 0x92, 0x04, - 0x95, 0x46, 0xbf, 0x08, 0xf0, 0xbf, 0xc1, 0x96, 0x46, 0x99, 0x0f, 0xeb, 0x11, 0xe7, 0xa3, 0xfc, - 0xf6, 0x8b, 0x3b, 0xf2, 0xfc, 0xa4, 0x5b, 0xdf, 0xfd, 0xf1, 0xcf, 0x0f, 0xb9, 0xeb, 0xa8, 0x9a, - 0xf5, 0xd3, 0x4a, 0xb1, 0xed, 0xd8, 0x9c, 0x46, 0x3f, 0x0b, 0x70, 0x69, 0xa8, 0x84, 0x28, 0x33, - 0x8e, 0x51, 0x1d, 0x51, 0xbe, 0x7d, 0x0e, 0xcf, 0x20, 0x85, 0x4d, 0x96, 0xc2, 0x55, 0xf4, 0x46, - 0x56, 0x0a, 0xfd, 0x97, 0x24, 0x3a, 0x13, 0xe0, 0x72, 0x4a, 0xd9, 0xd1, 0x3b, 0x93, 0x84, 0x91, - 0xde, 0x70, 0xe5, 0x77, 0xcf, 0xe5, 0x1b, 0x24, 0xd1, 0x64, 0x49, 0xec, 0xa3, 0x07, 0x93, 0x27, - 0x51, 0xfb, 0x26, 0xd9, 0xdf, 0xdf, 0xd6, 0x92, 0x5d, 0x48, 0x77, 0x9a, 0xbf, 0x9f, 0x56, 0x84, - 0xe7, 0xa7, 0x15, 0xe1, 0xef, 0xd3, 0x8a, 0xf0, 0xfd, 0x59, 0x65, 0xea, 0xf9, 0x59, 0x65, 0xea, - 0xcf, 0xb3, 0xca, 0xd4, 0xe3, 0xdb, 0x3a, 0x71, 0x3b, 0x5e, 0xab, 0xaa, 0x5a, 0xdd, 0x70, 0x41, - 0xfe, 0xe7, 0x1a, 0xd5, 0x9e, 0xd6, 0xfc, 0xdb, 0x0e, 0x3b, 0x35, 0xdd, 0xb1, 0xd5, 0x40, 0xdc, - 0x0f, 0xa4, 0x75, 0x81, 0xfd, 0x36, 0xde, 0xfa, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xcf, 0x6d, 0x3a, - 0xd1, 0x8c, 0x0f, 0x00, 0x00, + // 1286 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0xcf, 0x6f, 0xdc, 0x44, + 0x14, 0xc7, 0xe3, 0xdd, 0xcd, 0xaf, 0x17, 0x36, 0xa1, 0x93, 0x5f, 0xce, 0x36, 0x6c, 0x83, 0x2b, + 0x20, 0x82, 0x76, 0xdd, 0x6e, 0x42, 0xa1, 0x80, 0x80, 0x4d, 0xda, 0x40, 0x68, 0x02, 0x61, 0x37, + 0x50, 0x09, 0x54, 0x2c, 0xaf, 0x3d, 0xeb, 0x1d, 0xd5, 0x6b, 0x3b, 0x1e, 0x3b, 0x64, 0x05, 0x5c, + 0x90, 0x7a, 0x47, 0xe2, 0xc6, 0x5f, 0xc1, 0x81, 0x23, 0x1c, 0x91, 0x38, 0x56, 0xe2, 0x82, 0xc4, + 0x05, 0x25, 0xfc, 0x11, 0x1c, 0xd1, 0x8c, 0x7f, 0xac, 0xbd, 0xbf, 0x9b, 0x53, 0xe2, 0x79, 0xdf, + 0xf7, 0x99, 0xf7, 0x66, 0xde, 0xcc, 0x9b, 0x05, 0x59, 0xb3, 0x69, 0xcb, 0xa6, 0x72, 0x5d, 0xa5, + 0x58, 0x76, 0x71, 0xc3, 0xc4, 0x9a, 0x47, 0x6c, 0x4b, 0x3e, 0xbd, 0x5d, 0xc7, 0x9e, 0x7a, 0x3b, + 0x31, 0x54, 0x72, 0x5c, 0xdb, 0xb3, 0x51, 0x31, 0x70, 0x28, 0x31, 0x87, 0x52, 0xc2, 0x1a, 0x3a, + 0x14, 0xd6, 0x0d, 0xdb, 0x36, 0x4c, 0x2c, 0xab, 0x0e, 0x91, 0x55, 0xcb, 0xb2, 0x3d, 0x95, 0x99, + 0x69, 0xe0, 0x5d, 0x58, 0x0b, 0xad, 0xfc, 0xab, 0xee, 0x37, 0x64, 0xd5, 0x6a, 0x07, 0x26, 0xe9, + 0xa7, 0x2c, 0xe4, 0x2b, 0x8e, 0x73, 0x0f, 0x53, 0xcd, 0x25, 0x8e, 0x67, 0xbb, 0xe8, 0x3e, 0x4c, + 0x6a, 0x4d, 0x95, 0x58, 0x62, 0x66, 0x43, 0xd8, 0x9c, 0x2b, 0xcb, 0xa5, 0xe1, 0x53, 0x97, 0x76, + 0x99, 0xb8, 0xe3, 0x5f, 0x0d, 0xbc, 0x39, 0xc6, 0xd6, 0xb1, 0x26, 0x66, 0xc7, 0xc4, 0x30, 0x71, + 0x0a, 0xc3, 0x06, 0xd0, 0x23, 0xc8, 0x6b, 0xb6, 0xd5, 0x20, 0x86, 0xef, 0xf2, 0x94, 0xc4, 0x1c, + 0xc7, 0xbd, 0x31, 0x1a, 0x97, 0x70, 0x4a, 0x60, 0xd3, 0x34, 0xf4, 0x15, 0xcc, 0x9f, 0xf8, 0xd8, + 0x6d, 0x2b, 0x14, 0xbb, 0xa7, 0x44, 0xc3, 0x54, 0x9c, 0x1c, 0x8f, 0xff, 0x29, 0xf3, 0xaa, 0x85, + 0x4e, 0x49, 0xfe, 0x49, 0xd2, 0x80, 0xde, 0x81, 0x8c, 0x77, 0x26, 0x4e, 0x71, 0xe6, 0x8d, 0x51, + 0xcc, 0xe3, 0xb3, 0x04, 0x28, 0xe3, 0x9d, 0x49, 0xbf, 0x08, 0xf0, 0x5c, 0x72, 0x10, 0x15, 0x60, + 0xa6, 0xe1, 0x9b, 0xa6, 0xa5, 0xb6, 0xb0, 0x28, 0x6c, 0x08, 0x9b, 0xb3, 0xd5, 0xf8, 0x9b, 0x2d, + 0xb8, 0xea, 0x7b, 0xcd, 0xb1, 0xf7, 0xad, 0xc2, 0xc4, 0xc9, 0x05, 0xe7, 0xde, 0xa8, 0x02, 0xb9, + 0x16, 0x35, 0xa8, 0x98, 0xdd, 0xc8, 0x6e, 0xce, 0x95, 0x6f, 0x8e, 0xa2, 0x1c, 0x52, 0x23, 0xc1, + 0xe0, 0xae, 0xd2, 0xb7, 0xb0, 0xd0, 0x05, 0x47, 0x57, 0x61, 0x96, 0x12, 0xc3, 0x52, 0x5a, 0xb6, + 0x1e, 0x47, 0xce, 0x06, 0x0e, 0x6d, 0x1d, 0xa3, 0x03, 0xb8, 0xce, 0xe7, 0x56, 0x88, 0xd5, 0xb0, + 0x15, 0xc7, 0xb5, 0x4f, 0x89, 0x8e, 0x5d, 0xa5, 0x85, 0xbd, 0xa6, 0xad, 0x2b, 0x71, 0xc2, 0x19, + 0xee, 0x76, 0x8d, 0x4b, 0xf7, 0xad, 0x86, 0x7d, 0x14, 0x0a, 0x0f, 0xb9, 0x6e, 0x2f, 0x94, 0x49, + 0xaf, 0xc1, 0x72, 0x8d, 0x18, 0x16, 0xb1, 0x0c, 0x06, 0x4f, 0xc4, 0x80, 0x20, 0x97, 0x58, 0x38, + 0xfe, 0xbf, 0xf4, 0x22, 0x2c, 0x74, 0xd5, 0x2f, 0x9a, 0x87, 0x0c, 0xd1, 0x43, 0x51, 0x86, 0xe8, + 0x52, 0x03, 0x16, 0xba, 0x6a, 0x13, 0xd5, 0x00, 0x88, 0xe5, 0x61, 0xb7, 0xa1, 0xb2, 0x8a, 0x11, + 0xf8, 0x4a, 0x6d, 0x8d, 0x5a, 0xa9, 0xfd, 0xc8, 0x23, 0xb1, 0x5e, 0x09, 0x8c, 0xf4, 0x73, 0x06, + 0x16, 0xfb, 0x68, 0x86, 0xee, 0xf9, 0x13, 0x01, 0xd6, 0x63, 0x84, 0xa2, 0x6a, 0x1a, 0x76, 0x3c, + 0x62, 0x19, 0x4a, 0x0b, 0x53, 0xaa, 0x1a, 0x98, 0x8a, 0x19, 0x1e, 0xdb, 0xee, 0xd8, 0xb1, 0x55, + 0x22, 0xc4, 0x61, 0x40, 0x48, 0xc4, 0x5a, 0x20, 0x83, 0x44, 0x14, 0xf9, 0xb0, 0xd2, 0x09, 0x83, + 0xb4, 0x1c, 0x13, 0xb7, 0x30, 0xfb, 0x8e, 0xca, 0xe8, 0xdd, 0xb1, 0x03, 0xd8, 0xef, 0x38, 0x27, + 0xe6, 0x5e, 0x26, 0x7d, 0xec, 0x54, 0x7a, 0x08, 0xc5, 0xe1, 0x8e, 0x43, 0x17, 0x6f, 0x0d, 0x66, + 0xbc, 0xb6, 0x83, 0x15, 0xdf, 0x35, 0xc3, 0xda, 0x9a, 0x66, 0xdf, 0x9f, 0xb9, 0xa6, 0xf4, 0x35, + 0x5c, 0x1f, 0x63, 0x49, 0x86, 0xd2, 0xb7, 0x61, 0xa5, 0x41, 0xb0, 0xa9, 0x2b, 0x7a, 0xac, 0x57, + 0x98, 0x21, 0xd8, 0x93, 0xd9, 0xea, 0x12, 0xb7, 0x76, 0x60, 0x1f, 0x33, 0x9b, 0xf4, 0x77, 0x0e, + 0x56, 0x07, 0x5c, 0x5d, 0xa8, 0x02, 0x2f, 0xd4, 0xb1, 0xd6, 0xdc, 0x2a, 0xb3, 0x8d, 0xb6, 0x7d, + 0xcb, 0x53, 0x54, 0x5d, 0x77, 0x31, 0xa5, 0x8a, 0xe3, 0xe2, 0x06, 0x39, 0x0b, 0x43, 0x28, 0x04, + 0xa2, 0x4a, 0xa0, 0xa9, 0x04, 0x92, 0x23, 0xae, 0x40, 0xf7, 0xe1, 0x5a, 0x88, 0x38, 0x55, 0x4d, + 0xa2, 0xab, 0x2c, 0xa8, 0x2e, 0x48, 0xb0, 0x12, 0xeb, 0x81, 0xec, 0xf3, 0x48, 0x35, 0x08, 0xa3, + 0xd9, 0x16, 0xc5, 0x16, 0xf5, 0x69, 0x37, 0x26, 0x9b, 0xc4, 0xec, 0x46, 0xaa, 0x34, 0x66, 0x0f, + 0x36, 0xba, 0x12, 0x72, 0xfc, 0xba, 0x49, 0x34, 0xe5, 0x31, 0x6e, 0x47, 0x9c, 0x5c, 0x92, 0x13, + 0xe6, 0x74, 0xc4, 0x55, 0x0f, 0x70, 0x3b, 0xe4, 0x7c, 0x04, 0x52, 0x4f, 0x56, 0xbd, 0xa4, 0x49, + 0x4e, 0x2a, 0x76, 0x25, 0x36, 0x98, 0xd5, 0x49, 0xad, 0x97, 0x35, 0x95, 0x64, 0xc5, 0xd9, 0x75, + 0xb3, 0x44, 0x98, 0x76, 0x7c, 0xd7, 0xb1, 0x29, 0x16, 0xa7, 0x37, 0x84, 0xcd, 0x7c, 0x35, 0xfa, + 0x64, 0xd7, 0xa1, 0x66, 0x13, 0x4b, 0x61, 0xf5, 0x26, 0xce, 0x70, 0xdb, 0x0c, 0x1b, 0x38, 0x6e, + 0x3b, 0x18, 0xdd, 0x82, 0x25, 0x56, 0x45, 0x4a, 0xc3, 0xb7, 0x74, 0x57, 0x25, 0x14, 0xbb, 0x8a, + 0xa3, 0x7a, 0x4d, 0x71, 0x96, 0x4f, 0x8a, 0x98, 0x6d, 0x2f, 0x36, 0x1d, 0xa9, 0x5e, 0x13, 0xbd, + 0x0c, 0x0b, 0xdc, 0xa3, 0x4e, 0x9c, 0xed, 0xed, 0x40, 0x0c, 0x5c, 0x9c, 0x67, 0xc3, 0x3b, 0x6c, + 0x94, 0xe9, 0xa4, 0xdf, 0x05, 0xc8, 0xa7, 0x2e, 0x6c, 0xf4, 0x10, 0xe6, 0xc2, 0xce, 0xa7, 0xb4, + 0xa8, 0xc1, 0x2b, 0x68, 0xae, 0xbc, 0x3d, 0xea, 0xb4, 0x86, 0xed, 0x2d, 0x85, 0xfa, 0x70, 0xa2, + 0x0a, 0x34, 0x1e, 0x47, 0xc7, 0x00, 0x26, 0x36, 0x54, 0xad, 0xcd, 0xb9, 0x41, 0x4b, 0x1a, 0x79, + 0x45, 0x1e, 0x70, 0x8f, 0x6e, 0xec, 0xac, 0x19, 0x0d, 0xef, 0x4c, 0x42, 0xb6, 0x45, 0x0d, 0x49, + 0x83, 0xa5, 0x7e, 0x21, 0x0c, 0x3d, 0x8f, 0x4b, 0x30, 0xe9, 0xda, 0xbe, 0x17, 0xb5, 0x91, 0xe0, + 0x23, 0x75, 0x07, 0x64, 0xd3, 0x77, 0xc0, 0x01, 0x2c, 0xf6, 0x89, 0xe7, 0xb2, 0x37, 0xca, 0x1a, + 0xac, 0x7e, 0x80, 0xbd, 0xd4, 0x4b, 0xab, 0x8a, 0x4f, 0x7c, 0x4c, 0x3d, 0xe9, 0x4b, 0x10, 0x7b, + 0x4d, 0xd4, 0x61, 0x55, 0x85, 0xde, 0x83, 0xac, 0xea, 0x38, 0xe1, 0xbe, 0x8c, 0x6c, 0xc6, 0x69, + 0x06, 0xf3, 0x94, 0xce, 0x60, 0x75, 0xc0, 0x53, 0x05, 0x3d, 0xea, 0x79, 0xfb, 0x04, 0x9d, 0xec, + 0xce, 0xb3, 0xbc, 0x7d, 0x06, 0x3e, 0x7d, 0xa4, 0x27, 0x02, 0xac, 0xf4, 0x57, 0x0e, 0x5d, 0xc3, + 0x4f, 0x60, 0x3a, 0x68, 0xfc, 0x51, 0xf3, 0x7a, 0x7d, 0xac, 0x70, 0x82, 0x47, 0x40, 0x22, 0x9a, + 0x88, 0x22, 0xd5, 0x60, 0xb9, 0xaf, 0xa2, 0xdf, 0x7b, 0x20, 0x3e, 0x49, 0xc1, 0xc2, 0xf0, 0x93, + 0x94, 0xe9, 0x9c, 0x24, 0xce, 0xe1, 0x27, 0xa9, 0x00, 0xe2, 0x01, 0xa1, 0x5e, 0xc5, 0x34, 0xe3, + 0x3e, 0x41, 0xa3, 0xfd, 0xbc, 0x07, 0x6b, 0x7d, 0x6c, 0xe1, 0x86, 0xbe, 0x02, 0x0b, 0x9d, 0x4e, + 0x19, 0xf4, 0x03, 0x81, 0xf7, 0x83, 0xf9, 0x78, 0x38, 0xe8, 0x04, 0xbb, 0x50, 0x60, 0x94, 0xb8, + 0xad, 0x05, 0x0f, 0xfa, 0x70, 0x0e, 0xf4, 0x12, 0xcc, 0xa7, 0x31, 0x61, 0x16, 0xf9, 0x14, 0x45, + 0x52, 0xe0, 0x6a, 0x5f, 0x48, 0x18, 0xcc, 0xfb, 0xb0, 0x4e, 0x52, 0xa6, 0xe8, 0xe1, 0x90, 0x8a, + 0xac, 0x90, 0xd6, 0x84, 0x6d, 0x90, 0x47, 0x59, 0xfe, 0x2f, 0x07, 0x57, 0xaa, 0xf1, 0x96, 0x84, + 0x3b, 0x8d, 0x7e, 0x13, 0xe0, 0xf9, 0xee, 0x92, 0x46, 0x23, 0x9f, 0xd4, 0x03, 0xce, 0x47, 0xe1, + 0xcd, 0x67, 0x77, 0x0c, 0xf2, 0x93, 0xee, 0x7c, 0xff, 0xe7, 0xbf, 0x3f, 0x66, 0x6e, 0xa1, 0xd2, + 0xa8, 0xdf, 0x5b, 0xaa, 0xe3, 0x24, 0xfa, 0x34, 0xfa, 0x55, 0x80, 0x2b, 0x3d, 0x5b, 0x88, 0x46, + 0xc6, 0x31, 0xa8, 0x22, 0x0a, 0x77, 0x2f, 0xe1, 0x19, 0xa6, 0x50, 0xe6, 0x29, 0xdc, 0x40, 0xaf, + 0x8e, 0x4a, 0xa1, 0xf3, 0x92, 0x44, 0x17, 0x02, 0x2c, 0xf6, 0xd9, 0x76, 0xf4, 0xd6, 0x38, 0x61, + 0xf4, 0x2f, 0xb8, 0xc2, 0xdb, 0x97, 0xf2, 0x0d, 0x93, 0xa8, 0xf1, 0x24, 0x0e, 0xd1, 0x83, 0xf1, + 0x93, 0x90, 0xbf, 0x49, 0xd7, 0xf7, 0x77, 0x72, 0xba, 0x0a, 0xe9, 0x4e, 0xed, 0x8f, 0xf3, 0xa2, + 0xf0, 0xf4, 0xbc, 0x28, 0xfc, 0x73, 0x5e, 0x14, 0x7e, 0xb8, 0x28, 0x4e, 0x3c, 0xbd, 0x28, 0x4e, + 0xfc, 0x75, 0x51, 0x9c, 0xf8, 0xe2, 0xae, 0x41, 0xbc, 0xa6, 0x5f, 0x2f, 0x69, 0x76, 0x2b, 0x9a, + 0x30, 0xf8, 0x73, 0x93, 0xea, 0x8f, 0x65, 0x76, 0xdb, 0x61, 0x57, 0x36, 0x5c, 0x47, 0x0b, 0x87, + 0x3b, 0x81, 0xd4, 0xa7, 0xf8, 0xaf, 0xe2, 0xad, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x52, 0xa3, + 0x7a, 0xf2, 0xa1, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1689,9 +1703,9 @@ func (m *TxDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x1a } } - if m.AuthConfig != nil { + if m.Authn != nil { { - size, err := m.AuthConfig.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Authn.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1711,7 +1725,7 @@ func (m *TxDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *AuthConfigDescriptor) Marshal() (dAtA []byte, err error) { +func (m *AuthnDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1721,29 +1735,29 @@ func (m *AuthConfigDescriptor) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *AuthConfigDescriptor) MarshalTo(dAtA []byte) (int, error) { +func (m *AuthnDescriptor) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *AuthConfigDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *AuthnDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.SigningModes) > 0 { - for iNdEx := len(m.SigningModes) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.SigningModes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } + if len(m.AuthnInfoProviderMethodFullname) > 0 { + i -= len(m.AuthnInfoProviderMethodFullname) + copy(dAtA[i:], m.AuthnInfoProviderMethodFullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.AuthnInfoProviderMethodFullname))) + i-- + dAtA[i] = 0x12 + } + if len(m.SignMode) > 0 { + i -= len(m.SignMode) + copy(dAtA[i:], m.SignMode) + i = encodeVarintReflection(dAtA, i, uint64(len(m.SignMode))) + i-- + dAtA[i] = 0xa } return len(dAtA) - i, nil } @@ -2566,8 +2580,8 @@ func (m *TxDescriptor) Size() (n int) { if l > 0 { n += 1 + l + sovReflection(uint64(l)) } - if m.AuthConfig != nil { - l = m.AuthConfig.Size() + if m.Authn != nil { + l = m.Authn.Size() n += 1 + l + sovReflection(uint64(l)) } if len(m.Msgs) > 0 { @@ -2579,17 +2593,19 @@ func (m *TxDescriptor) Size() (n int) { return n } -func (m *AuthConfigDescriptor) Size() (n int) { +func (m *AuthnDescriptor) Size() (n int) { if m == nil { return 0 } var l int _ = l - if len(m.SigningModes) > 0 { - for _, e := range m.SigningModes { - l = e.Size() - n += 1 + l + sovReflection(uint64(l)) - } + l = len(m.SignMode) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.AuthnInfoProviderMethodFullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) } return n } @@ -3241,7 +3257,7 @@ func (m *TxDescriptor) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthConfig", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Authn", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3268,10 +3284,10 @@ func (m *TxDescriptor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.AuthConfig == nil { - m.AuthConfig = &AuthConfigDescriptor{} + if m.Authn == nil { + m.Authn = &AuthnDescriptor{} } - if err := m.AuthConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Authn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -3330,7 +3346,7 @@ func (m *TxDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *AuthConfigDescriptor) Unmarshal(dAtA []byte) error { +func (m *AuthnDescriptor) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3353,17 +3369,17 @@ func (m *AuthConfigDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AuthConfigDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: AuthnDescriptor: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AuthConfigDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AuthnDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SigningModes", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SignMode", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowReflection @@ -3373,25 +3389,55 @@ func (m *AuthConfigDescriptor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthReflection } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthReflection } if postIndex > l { return io.ErrUnexpectedEOF } - m.SigningModes = append(m.SigningModes, &SigningModeDescriptor{}) - if err := m.SigningModes[len(m.SigningModes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + m.SignMode = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuthnInfoProviderMethodFullname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF } + m.AuthnInfoProviderMethodFullname = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex From 66be3af0fd401e9839d9d11f5d91c9acc8742407 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Mon, 29 Mar 2021 13:05:19 +0200 Subject: [PATCH 05/26] add: tmp --- docs/core/proto-docs.md | 162 ++- .../base/reflection/v1beta1/reflection.proto | 13 +- .../{cosmosreflection.go => reflection.go} | 7 +- server/grpc/cosmosreflection/reflection.pb.go | 164 ++- types/tx/signing/signing.pb.go | 9 +- x/staking/types/staking.pb.go | 1167 +++++++++-------- 6 files changed, 843 insertions(+), 679 deletions(-) rename server/grpc/cosmosreflection/{cosmosreflection.go => reflection.go} (98%) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 14ddbceb821b..7ba19f42b772 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -142,6 +142,18 @@ - [ReflectionService](#cosmos.base.reflection.v1beta1.ReflectionService) +- [cosmos/base/reflection/v1beta1/txreflection.proto](#cosmos/base/reflection/v1beta1/txreflection.proto) + - [CombineRequest](#cosmos.base.reflection.v1beta1.CombineRequest) + - [CombineResponse](#cosmos.base.reflection.v1beta1.CombineResponse) + - [Intent](#cosmos.base.reflection.v1beta1.Intent) + - [PayloadRequest](#cosmos.base.reflection.v1beta1.PayloadRequest) + - [PayloadResponse](#cosmos.base.reflection.v1beta1.PayloadResponse) + - [PubKeyDescriptor](#cosmos.base.reflection.v1beta1.PubKeyDescriptor) + - [SignatureDescriptor](#cosmos.base.reflection.v1beta1.SignatureDescriptor) + - [TxMetadata](#cosmos.base.reflection.v1beta1.TxMetadata) + + - [ReflectionTxBuilderService](#cosmos.base.reflection.v1beta1.ReflectionTxBuilderService) + - [cosmos/base/snapshots/v1beta1/snapshot.proto](#cosmos/base/snapshots/v1beta1/snapshot.proto) - [Metadata](#cosmos.base.snapshots.v1beta1.Metadata) - [Snapshot](#cosmos.base.snapshots.v1beta1.Snapshot) @@ -2398,7 +2410,7 @@ TxDescriptor describes the accepted transaction type ### ReflectionService -ReflectionService defines a service for interface reflection. +ReflectionService defines a service for application reflection. | Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | | ----------- | ------------ | ------------- | ------------| ------- | -------- | @@ -2410,6 +2422,154 @@ ReflectionService defines a service for interface reflection. + +

Top

+ +## cosmos/base/reflection/v1beta1/txreflection.proto + + + + + +### CombineRequest + + + + + + + + + +### CombineResponse + + + + + + + + + +### Intent +Intent defines the intent of a transaction, which consists in the expected +msgs which the client wants to send + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `msgs` | [google.protobuf.Any](#google.protobuf.Any) | repeated | msgs is the any representation of msgs | + + + + + + + + +### PayloadRequest +PayloadRequest is the request type used for the Payload RPC. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `intent` | [Intent](#cosmos.base.reflection.v1beta1.Intent) | | intent defines the intent of a transaction (the expected msgs) | +| `tx_metadata` | [TxMetadata](#cosmos.base.reflection.v1beta1.TxMetadata) | | tx_metadata defines transaction metadata information | + + + + + + + + +### PayloadResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `unsigned_tx` | [bytes](#bytes) | | unsigned_tx is the unsigned tx bytes | +| `expected_signatures` | [SignatureDescriptor](#cosmos.base.reflection.v1beta1.SignatureDescriptor) | repeated | | + + + + + + + + +### PubKeyDescriptor +PubKeyDescriptor describes a public key + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `key` | [bytes](#bytes) | | key is the public key raw bytes | +| `fullname` | [string](#string) | | fullname is the public key protobuf fullname | + + + + + + + + +### SignatureDescriptor +SignatureDescriptor describes a signature expected to authenticate a transaction + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `bytes_to_sign` | [bytes](#bytes) | | bytes_to_sign are the bytes that the public key is expected to sign | +| `pub_key` | [PubKeyDescriptor](#cosmos.base.reflection.v1beta1.PubKeyDescriptor) | | pub_key is the public key descriptor for the signer | + + + + + + + + +### TxMetadata +TxMetadata defines the metadata information for a transaction + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `fee_payer_address` | [bytes](#bytes) | | fee_payer_address is the fee payer of the transaction IT MUST BE EXPLICITLY PROVIDED | +| `fee_granter_address` | [bytes](#bytes) | | fee_granter_address is the address of the fee granter it is optional | +| `memo` | [string](#string) | | memo is the memo of the trasnsaction | +| `timeout_height` | [uint64](#uint64) | | timeout_height is optional and is the timeout height for a tx | +| `fee_amount` | [string](#string) | | fee_amount is the string representation of the expected fee should it be sdk.Coins? | +| `gas_limit` | [uint64](#uint64) | | gas_limit is the gas_limit for the tx | + + + + + + + + + + + + + + +### ReflectionTxBuilderService +ReflectionTxBuilderService can be used by clients to build transactions on any chain +without having context on the TX building semantics. + +| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | +| ----------- | ------------ | ------------- | ------------| ------- | -------- | +| `Payload` | [PayloadRequest](#cosmos.base.reflection.v1beta1.PayloadRequest) | [PayloadResponse](#cosmos.base.reflection.v1beta1.PayloadResponse) | Payload provides the transaction payload and the expected bytes to sign given an intent expressed via msgs and transaction metadata such as fees, memo etc. IMPORTANT NOTE: when interacting with untrusted nodes, it is required by clients to perform intent verification on the returned transaction bytes | | +| `Combine` | [CombineRequest](#cosmos.base.reflection.v1beta1.CombineRequest) | [CombineResponse](#cosmos.base.reflection.v1beta1.CombineResponse) | Combine combines together the unsigned transaction bytes and the signatures | | + + + + +

Top

diff --git a/proto/cosmos/base/reflection/v1beta1/reflection.proto b/proto/cosmos/base/reflection/v1beta1/reflection.proto index eac10789baed..74f785f446c8 100644 --- a/proto/cosmos/base/reflection/v1beta1/reflection.proto +++ b/proto/cosmos/base/reflection/v1beta1/reflection.proto @@ -2,11 +2,14 @@ syntax = "proto3"; package cosmos.base.reflection.v1beta1; import "google/api/annotations.proto"; -import "google/protobuf/any.proto"; option go_package = "github.com/cosmos/cosmos-sdk/server/grpc/cosmosreflection"; -// ReflectionService defines a service for interface reflection. +service AuthReflectionService { + +} + +// ReflectionService defines a service for application reflection. service ReflectionService { // GetAppDescriptor returns the full cosmos application descriptor rpc GetAppDescriptor(GetAppDescriptorRequest) returns (GetAppDescriptorResponse) { @@ -54,10 +57,10 @@ message TxDescriptor { // AuthnDescriptor provides information on how to sign transactions without relying // on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures message AuthnDescriptor { - // sign_mode defines the signature algorithm - string sign_mode = 1; + // sign_modes defines the supported signature algorithm + repeated string sign_modes = 1; // authn_info_provider_method_fullname defines the fullname of the method to call to get - // the metadata required to authenticate + // the metadata required to authenticate using the provided sign_modes string authn_info_provider_method_fullname = 2; } diff --git a/server/grpc/cosmosreflection/cosmosreflection.go b/server/grpc/cosmosreflection/reflection.go similarity index 98% rename from server/grpc/cosmosreflection/cosmosreflection.go rename to server/grpc/cosmosreflection/reflection.go index fec1ef505228..7e8d4b79a74f 100644 --- a/server/grpc/cosmosreflection/cosmosreflection.go +++ b/server/grpc/cosmosreflection/reflection.go @@ -220,7 +220,10 @@ func newDeliverDescriptor(ir codectypes.InterfaceRegistry, signingModes []string } return &TxDescriptor{ Fullname: txPbName, - Authn: &AuthnDescriptor{}, // TODO - Msgs: msgsDesc, + Authn: &AuthnDescriptor{ + SignMode: "", + AuthnInfoProviderMethodFullname: "", + }, // TODO + Msgs: msgsDesc, }, nil } diff --git a/server/grpc/cosmosreflection/reflection.pb.go b/server/grpc/cosmosreflection/reflection.pb.go index de5b07bc5767..552f00669ec7 100644 --- a/server/grpc/cosmosreflection/reflection.pb.go +++ b/server/grpc/cosmosreflection/reflection.pb.go @@ -6,7 +6,6 @@ package cosmosreflection import ( context "context" fmt "fmt" - _ "github.com/cosmos/cosmos-sdk/codec/types" grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" @@ -1340,88 +1339,87 @@ func init() { } var fileDescriptor_d48c054165687f5c = []byte{ - // 1286 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0xcf, 0x6f, 0xdc, 0x44, - 0x14, 0xc7, 0xe3, 0xdd, 0xcd, 0xaf, 0x17, 0x36, 0xa1, 0x93, 0x5f, 0xce, 0x36, 0x6c, 0x83, 0x2b, - 0x20, 0x82, 0x76, 0xdd, 0x6e, 0x42, 0xa1, 0x80, 0x80, 0x4d, 0xda, 0x40, 0x68, 0x02, 0x61, 0x37, - 0x50, 0x09, 0x54, 0x2c, 0xaf, 0x3d, 0xeb, 0x1d, 0xd5, 0x6b, 0x3b, 0x1e, 0x3b, 0x64, 0x05, 0x5c, - 0x90, 0x7a, 0x47, 0xe2, 0xc6, 0x5f, 0xc1, 0x81, 0x23, 0x1c, 0x91, 0x38, 0x56, 0xe2, 0x82, 0xc4, - 0x05, 0x25, 0xfc, 0x11, 0x1c, 0xd1, 0x8c, 0x7f, 0xac, 0xbd, 0xbf, 0x9b, 0x53, 0xe2, 0x79, 0xdf, - 0xf7, 0x99, 0xf7, 0x66, 0xde, 0xcc, 0x9b, 0x05, 0x59, 0xb3, 0x69, 0xcb, 0xa6, 0x72, 0x5d, 0xa5, - 0x58, 0x76, 0x71, 0xc3, 0xc4, 0x9a, 0x47, 0x6c, 0x4b, 0x3e, 0xbd, 0x5d, 0xc7, 0x9e, 0x7a, 0x3b, - 0x31, 0x54, 0x72, 0x5c, 0xdb, 0xb3, 0x51, 0x31, 0x70, 0x28, 0x31, 0x87, 0x52, 0xc2, 0x1a, 0x3a, - 0x14, 0xd6, 0x0d, 0xdb, 0x36, 0x4c, 0x2c, 0xab, 0x0e, 0x91, 0x55, 0xcb, 0xb2, 0x3d, 0x95, 0x99, - 0x69, 0xe0, 0x5d, 0x58, 0x0b, 0xad, 0xfc, 0xab, 0xee, 0x37, 0x64, 0xd5, 0x6a, 0x07, 0x26, 0xe9, - 0xa7, 0x2c, 0xe4, 0x2b, 0x8e, 0x73, 0x0f, 0x53, 0xcd, 0x25, 0x8e, 0x67, 0xbb, 0xe8, 0x3e, 0x4c, - 0x6a, 0x4d, 0x95, 0x58, 0x62, 0x66, 0x43, 0xd8, 0x9c, 0x2b, 0xcb, 0xa5, 0xe1, 0x53, 0x97, 0x76, - 0x99, 0xb8, 0xe3, 0x5f, 0x0d, 0xbc, 0x39, 0xc6, 0xd6, 0xb1, 0x26, 0x66, 0xc7, 0xc4, 0x30, 0x71, - 0x0a, 0xc3, 0x06, 0xd0, 0x23, 0xc8, 0x6b, 0xb6, 0xd5, 0x20, 0x86, 0xef, 0xf2, 0x94, 0xc4, 0x1c, - 0xc7, 0xbd, 0x31, 0x1a, 0x97, 0x70, 0x4a, 0x60, 0xd3, 0x34, 0xf4, 0x15, 0xcc, 0x9f, 0xf8, 0xd8, - 0x6d, 0x2b, 0x14, 0xbb, 0xa7, 0x44, 0xc3, 0x54, 0x9c, 0x1c, 0x8f, 0xff, 0x29, 0xf3, 0xaa, 0x85, - 0x4e, 0x49, 0xfe, 0x49, 0xd2, 0x80, 0xde, 0x81, 0x8c, 0x77, 0x26, 0x4e, 0x71, 0xe6, 0x8d, 0x51, - 0xcc, 0xe3, 0xb3, 0x04, 0x28, 0xe3, 0x9d, 0x49, 0xbf, 0x08, 0xf0, 0x5c, 0x72, 0x10, 0x15, 0x60, - 0xa6, 0xe1, 0x9b, 0xa6, 0xa5, 0xb6, 0xb0, 0x28, 0x6c, 0x08, 0x9b, 0xb3, 0xd5, 0xf8, 0x9b, 0x2d, - 0xb8, 0xea, 0x7b, 0xcd, 0xb1, 0xf7, 0xad, 0xc2, 0xc4, 0xc9, 0x05, 0xe7, 0xde, 0xa8, 0x02, 0xb9, - 0x16, 0x35, 0xa8, 0x98, 0xdd, 0xc8, 0x6e, 0xce, 0x95, 0x6f, 0x8e, 0xa2, 0x1c, 0x52, 0x23, 0xc1, - 0xe0, 0xae, 0xd2, 0xb7, 0xb0, 0xd0, 0x05, 0x47, 0x57, 0x61, 0x96, 0x12, 0xc3, 0x52, 0x5a, 0xb6, - 0x1e, 0x47, 0xce, 0x06, 0x0e, 0x6d, 0x1d, 0xa3, 0x03, 0xb8, 0xce, 0xe7, 0x56, 0x88, 0xd5, 0xb0, - 0x15, 0xc7, 0xb5, 0x4f, 0x89, 0x8e, 0x5d, 0xa5, 0x85, 0xbd, 0xa6, 0xad, 0x2b, 0x71, 0xc2, 0x19, - 0xee, 0x76, 0x8d, 0x4b, 0xf7, 0xad, 0x86, 0x7d, 0x14, 0x0a, 0x0f, 0xb9, 0x6e, 0x2f, 0x94, 0x49, - 0xaf, 0xc1, 0x72, 0x8d, 0x18, 0x16, 0xb1, 0x0c, 0x06, 0x4f, 0xc4, 0x80, 0x20, 0x97, 0x58, 0x38, - 0xfe, 0xbf, 0xf4, 0x22, 0x2c, 0x74, 0xd5, 0x2f, 0x9a, 0x87, 0x0c, 0xd1, 0x43, 0x51, 0x86, 0xe8, - 0x52, 0x03, 0x16, 0xba, 0x6a, 0x13, 0xd5, 0x00, 0x88, 0xe5, 0x61, 0xb7, 0xa1, 0xb2, 0x8a, 0x11, - 0xf8, 0x4a, 0x6d, 0x8d, 0x5a, 0xa9, 0xfd, 0xc8, 0x23, 0xb1, 0x5e, 0x09, 0x8c, 0xf4, 0x73, 0x06, - 0x16, 0xfb, 0x68, 0x86, 0xee, 0xf9, 0x13, 0x01, 0xd6, 0x63, 0x84, 0xa2, 0x6a, 0x1a, 0x76, 0x3c, - 0x62, 0x19, 0x4a, 0x0b, 0x53, 0xaa, 0x1a, 0x98, 0x8a, 0x19, 0x1e, 0xdb, 0xee, 0xd8, 0xb1, 0x55, - 0x22, 0xc4, 0x61, 0x40, 0x48, 0xc4, 0x5a, 0x20, 0x83, 0x44, 0x14, 0xf9, 0xb0, 0xd2, 0x09, 0x83, - 0xb4, 0x1c, 0x13, 0xb7, 0x30, 0xfb, 0x8e, 0xca, 0xe8, 0xdd, 0xb1, 0x03, 0xd8, 0xef, 0x38, 0x27, - 0xe6, 0x5e, 0x26, 0x7d, 0xec, 0x54, 0x7a, 0x08, 0xc5, 0xe1, 0x8e, 0x43, 0x17, 0x6f, 0x0d, 0x66, - 0xbc, 0xb6, 0x83, 0x15, 0xdf, 0x35, 0xc3, 0xda, 0x9a, 0x66, 0xdf, 0x9f, 0xb9, 0xa6, 0xf4, 0x35, - 0x5c, 0x1f, 0x63, 0x49, 0x86, 0xd2, 0xb7, 0x61, 0xa5, 0x41, 0xb0, 0xa9, 0x2b, 0x7a, 0xac, 0x57, - 0x98, 0x21, 0xd8, 0x93, 0xd9, 0xea, 0x12, 0xb7, 0x76, 0x60, 0x1f, 0x33, 0x9b, 0xf4, 0x77, 0x0e, - 0x56, 0x07, 0x5c, 0x5d, 0xa8, 0x02, 0x2f, 0xd4, 0xb1, 0xd6, 0xdc, 0x2a, 0xb3, 0x8d, 0xb6, 0x7d, - 0xcb, 0x53, 0x54, 0x5d, 0x77, 0x31, 0xa5, 0x8a, 0xe3, 0xe2, 0x06, 0x39, 0x0b, 0x43, 0x28, 0x04, - 0xa2, 0x4a, 0xa0, 0xa9, 0x04, 0x92, 0x23, 0xae, 0x40, 0xf7, 0xe1, 0x5a, 0x88, 0x38, 0x55, 0x4d, - 0xa2, 0xab, 0x2c, 0xa8, 0x2e, 0x48, 0xb0, 0x12, 0xeb, 0x81, 0xec, 0xf3, 0x48, 0x35, 0x08, 0xa3, - 0xd9, 0x16, 0xc5, 0x16, 0xf5, 0x69, 0x37, 0x26, 0x9b, 0xc4, 0xec, 0x46, 0xaa, 0x34, 0x66, 0x0f, - 0x36, 0xba, 0x12, 0x72, 0xfc, 0xba, 0x49, 0x34, 0xe5, 0x31, 0x6e, 0x47, 0x9c, 0x5c, 0x92, 0x13, - 0xe6, 0x74, 0xc4, 0x55, 0x0f, 0x70, 0x3b, 0xe4, 0x7c, 0x04, 0x52, 0x4f, 0x56, 0xbd, 0xa4, 0x49, - 0x4e, 0x2a, 0x76, 0x25, 0x36, 0x98, 0xd5, 0x49, 0xad, 0x97, 0x35, 0x95, 0x64, 0xc5, 0xd9, 0x75, - 0xb3, 0x44, 0x98, 0x76, 0x7c, 0xd7, 0xb1, 0x29, 0x16, 0xa7, 0x37, 0x84, 0xcd, 0x7c, 0x35, 0xfa, - 0x64, 0xd7, 0xa1, 0x66, 0x13, 0x4b, 0x61, 0xf5, 0x26, 0xce, 0x70, 0xdb, 0x0c, 0x1b, 0x38, 0x6e, - 0x3b, 0x18, 0xdd, 0x82, 0x25, 0x56, 0x45, 0x4a, 0xc3, 0xb7, 0x74, 0x57, 0x25, 0x14, 0xbb, 0x8a, - 0xa3, 0x7a, 0x4d, 0x71, 0x96, 0x4f, 0x8a, 0x98, 0x6d, 0x2f, 0x36, 0x1d, 0xa9, 0x5e, 0x13, 0xbd, - 0x0c, 0x0b, 0xdc, 0xa3, 0x4e, 0x9c, 0xed, 0xed, 0x40, 0x0c, 0x5c, 0x9c, 0x67, 0xc3, 0x3b, 0x6c, - 0x94, 0xe9, 0xa4, 0xdf, 0x05, 0xc8, 0xa7, 0x2e, 0x6c, 0xf4, 0x10, 0xe6, 0xc2, 0xce, 0xa7, 0xb4, - 0xa8, 0xc1, 0x2b, 0x68, 0xae, 0xbc, 0x3d, 0xea, 0xb4, 0x86, 0xed, 0x2d, 0x85, 0xfa, 0x70, 0xa2, - 0x0a, 0x34, 0x1e, 0x47, 0xc7, 0x00, 0x26, 0x36, 0x54, 0xad, 0xcd, 0xb9, 0x41, 0x4b, 0x1a, 0x79, - 0x45, 0x1e, 0x70, 0x8f, 0x6e, 0xec, 0xac, 0x19, 0x0d, 0xef, 0x4c, 0x42, 0xb6, 0x45, 0x0d, 0x49, - 0x83, 0xa5, 0x7e, 0x21, 0x0c, 0x3d, 0x8f, 0x4b, 0x30, 0xe9, 0xda, 0xbe, 0x17, 0xb5, 0x91, 0xe0, - 0x23, 0x75, 0x07, 0x64, 0xd3, 0x77, 0xc0, 0x01, 0x2c, 0xf6, 0x89, 0xe7, 0xb2, 0x37, 0xca, 0x1a, - 0xac, 0x7e, 0x80, 0xbd, 0xd4, 0x4b, 0xab, 0x8a, 0x4f, 0x7c, 0x4c, 0x3d, 0xe9, 0x4b, 0x10, 0x7b, - 0x4d, 0xd4, 0x61, 0x55, 0x85, 0xde, 0x83, 0xac, 0xea, 0x38, 0xe1, 0xbe, 0x8c, 0x6c, 0xc6, 0x69, - 0x06, 0xf3, 0x94, 0xce, 0x60, 0x75, 0xc0, 0x53, 0x05, 0x3d, 0xea, 0x79, 0xfb, 0x04, 0x9d, 0xec, - 0xce, 0xb3, 0xbc, 0x7d, 0x06, 0x3e, 0x7d, 0xa4, 0x27, 0x02, 0xac, 0xf4, 0x57, 0x0e, 0x5d, 0xc3, - 0x4f, 0x60, 0x3a, 0x68, 0xfc, 0x51, 0xf3, 0x7a, 0x7d, 0xac, 0x70, 0x82, 0x47, 0x40, 0x22, 0x9a, - 0x88, 0x22, 0xd5, 0x60, 0xb9, 0xaf, 0xa2, 0xdf, 0x7b, 0x20, 0x3e, 0x49, 0xc1, 0xc2, 0xf0, 0x93, - 0x94, 0xe9, 0x9c, 0x24, 0xce, 0xe1, 0x27, 0xa9, 0x00, 0xe2, 0x01, 0xa1, 0x5e, 0xc5, 0x34, 0xe3, - 0x3e, 0x41, 0xa3, 0xfd, 0xbc, 0x07, 0x6b, 0x7d, 0x6c, 0xe1, 0x86, 0xbe, 0x02, 0x0b, 0x9d, 0x4e, - 0x19, 0xf4, 0x03, 0x81, 0xf7, 0x83, 0xf9, 0x78, 0x38, 0xe8, 0x04, 0xbb, 0x50, 0x60, 0x94, 0xb8, - 0xad, 0x05, 0x0f, 0xfa, 0x70, 0x0e, 0xf4, 0x12, 0xcc, 0xa7, 0x31, 0x61, 0x16, 0xf9, 0x14, 0x45, - 0x52, 0xe0, 0x6a, 0x5f, 0x48, 0x18, 0xcc, 0xfb, 0xb0, 0x4e, 0x52, 0xa6, 0xe8, 0xe1, 0x90, 0x8a, - 0xac, 0x90, 0xd6, 0x84, 0x6d, 0x90, 0x47, 0x59, 0xfe, 0x2f, 0x07, 0x57, 0xaa, 0xf1, 0x96, 0x84, - 0x3b, 0x8d, 0x7e, 0x13, 0xe0, 0xf9, 0xee, 0x92, 0x46, 0x23, 0x9f, 0xd4, 0x03, 0xce, 0x47, 0xe1, - 0xcd, 0x67, 0x77, 0x0c, 0xf2, 0x93, 0xee, 0x7c, 0xff, 0xe7, 0xbf, 0x3f, 0x66, 0x6e, 0xa1, 0xd2, - 0xa8, 0xdf, 0x5b, 0xaa, 0xe3, 0x24, 0xfa, 0x34, 0xfa, 0x55, 0x80, 0x2b, 0x3d, 0x5b, 0x88, 0x46, - 0xc6, 0x31, 0xa8, 0x22, 0x0a, 0x77, 0x2f, 0xe1, 0x19, 0xa6, 0x50, 0xe6, 0x29, 0xdc, 0x40, 0xaf, - 0x8e, 0x4a, 0xa1, 0xf3, 0x92, 0x44, 0x17, 0x02, 0x2c, 0xf6, 0xd9, 0x76, 0xf4, 0xd6, 0x38, 0x61, - 0xf4, 0x2f, 0xb8, 0xc2, 0xdb, 0x97, 0xf2, 0x0d, 0x93, 0xa8, 0xf1, 0x24, 0x0e, 0xd1, 0x83, 0xf1, - 0x93, 0x90, 0xbf, 0x49, 0xd7, 0xf7, 0x77, 0x72, 0xba, 0x0a, 0xe9, 0x4e, 0xed, 0x8f, 0xf3, 0xa2, - 0xf0, 0xf4, 0xbc, 0x28, 0xfc, 0x73, 0x5e, 0x14, 0x7e, 0xb8, 0x28, 0x4e, 0x3c, 0xbd, 0x28, 0x4e, - 0xfc, 0x75, 0x51, 0x9c, 0xf8, 0xe2, 0xae, 0x41, 0xbc, 0xa6, 0x5f, 0x2f, 0x69, 0x76, 0x2b, 0x9a, - 0x30, 0xf8, 0x73, 0x93, 0xea, 0x8f, 0x65, 0x76, 0xdb, 0x61, 0x57, 0x36, 0x5c, 0x47, 0x0b, 0x87, - 0x3b, 0x81, 0xd4, 0xa7, 0xf8, 0xaf, 0xe2, 0xad, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x52, 0xa3, - 0x7a, 0xf2, 0xa1, 0x0f, 0x00, 0x00, + // 1274 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xc7, 0xb3, 0xb6, 0xd3, 0x24, 0x2f, 0x38, 0xa1, 0xd3, 0xb4, 0xd9, 0xb8, 0xc1, 0x0d, 0x5b, + 0x01, 0x11, 0xb4, 0x76, 0xeb, 0x84, 0x42, 0x01, 0x01, 0x4e, 0xda, 0x40, 0x68, 0x02, 0xc1, 0x0e, + 0x54, 0x02, 0x95, 0xd5, 0x7a, 0x77, 0xbc, 0x1e, 0x75, 0xbd, 0xb3, 0xd9, 0xd9, 0x0d, 0xb1, 0x80, + 0x0b, 0x52, 0xef, 0x48, 0xdc, 0xf8, 0x2b, 0x38, 0x70, 0x84, 0x23, 0x12, 0xc7, 0x4a, 0x5c, 0x90, + 0xb8, 0xa0, 0x84, 0x3f, 0x82, 0x23, 0x9a, 0xd9, 0x1f, 0xde, 0xf5, 0xef, 0xe6, 0x94, 0xec, 0xbc, + 0xef, 0xfb, 0xcc, 0x7b, 0x33, 0x6f, 0xe6, 0x8d, 0xa1, 0xac, 0x53, 0xd6, 0xa6, 0xac, 0xdc, 0xd0, + 0x18, 0x2e, 0xbb, 0xb8, 0x69, 0x61, 0xdd, 0x23, 0xd4, 0x2e, 0x1f, 0xdf, 0x6e, 0x60, 0x4f, 0xbb, + 0x9d, 0x18, 0x2a, 0x39, 0x2e, 0xf5, 0x28, 0x2a, 0x06, 0x0e, 0x25, 0xee, 0x50, 0x4a, 0x58, 0x43, + 0x87, 0xc2, 0xaa, 0x49, 0xa9, 0x69, 0xe1, 0xb2, 0xe6, 0x90, 0xb2, 0x66, 0xdb, 0xd4, 0xd3, 0xb8, + 0x99, 0x05, 0xde, 0xca, 0x4f, 0x59, 0xc8, 0x57, 0x1d, 0xe7, 0x1e, 0x66, 0xba, 0x4b, 0x1c, 0x8f, + 0xba, 0xe8, 0x3e, 0x4c, 0xeb, 0x2d, 0x8d, 0xd8, 0x72, 0x66, 0x4d, 0x5a, 0x9f, 0xaf, 0x94, 0x4b, + 0xa3, 0xf9, 0xa5, 0x6d, 0x2e, 0xee, 0xfa, 0xd7, 0x02, 0x6f, 0x81, 0xa1, 0x06, 0xd6, 0xe5, 0xec, + 0x84, 0x18, 0x2e, 0x4e, 0x61, 0xf8, 0x00, 0x7a, 0x04, 0x79, 0x9d, 0xda, 0x4d, 0x62, 0xfa, 0xae, + 0x88, 0x5b, 0xce, 0x09, 0xdc, 0x1b, 0xe3, 0x71, 0x09, 0xa7, 0x04, 0x36, 0x4d, 0x43, 0x5f, 0xc1, + 0xc2, 0x91, 0x8f, 0xdd, 0x8e, 0xca, 0xb0, 0x7b, 0x4c, 0x74, 0xcc, 0xe4, 0xe9, 0xc9, 0xf8, 0x9f, + 0x72, 0xaf, 0x7a, 0xe8, 0x94, 0xe4, 0x1f, 0x25, 0x0d, 0xe8, 0x1d, 0xc8, 0x78, 0x27, 0xf2, 0x05, + 0xc1, 0xbc, 0x31, 0x8e, 0x79, 0x78, 0x92, 0x00, 0x65, 0xbc, 0x13, 0xe5, 0x17, 0x09, 0x9e, 0x4b, + 0x0e, 0xa2, 0x02, 0xcc, 0x36, 0x7d, 0xcb, 0xb2, 0xb5, 0x36, 0x96, 0xa5, 0x35, 0x69, 0x7d, 0xae, + 0x16, 0x7f, 0xf3, 0x05, 0xd7, 0x7c, 0xaf, 0x35, 0xf1, 0xbe, 0x55, 0xb9, 0x38, 0xb9, 0xe0, 0xc2, + 0x1b, 0x55, 0x21, 0xd7, 0x66, 0x26, 0x93, 0xb3, 0x6b, 0xd9, 0xf5, 0xf9, 0xca, 0xcd, 0x71, 0x94, + 0x7d, 0x66, 0x26, 0x18, 0xc2, 0x55, 0xf9, 0x16, 0x16, 0x7b, 0xe0, 0xe8, 0x2a, 0xcc, 0x31, 0x62, + 0xda, 0x6a, 0x9b, 0x1a, 0x71, 0xe4, 0x7c, 0x60, 0x9f, 0x1a, 0x18, 0xed, 0xc1, 0x75, 0x31, 0xb7, + 0x4a, 0xec, 0x26, 0x55, 0x1d, 0x97, 0x1e, 0x13, 0x03, 0xbb, 0x6a, 0x1b, 0x7b, 0x2d, 0x6a, 0xa8, + 0x71, 0xc2, 0x19, 0xe1, 0x76, 0x4d, 0x48, 0x77, 0xed, 0x26, 0x3d, 0x08, 0x85, 0xfb, 0x42, 0xb7, + 0x13, 0xca, 0x94, 0xd7, 0xe0, 0x72, 0x9d, 0x98, 0x36, 0xb1, 0x4d, 0x0e, 0x4f, 0xc4, 0x80, 0x20, + 0x97, 0x58, 0x38, 0xf1, 0xbf, 0xf2, 0x22, 0x2c, 0xf6, 0xd4, 0x2f, 0x5a, 0x80, 0x0c, 0x31, 0x42, + 0x51, 0x86, 0x18, 0x4a, 0x13, 0x16, 0x7b, 0x6a, 0x13, 0xd5, 0x01, 0x88, 0xed, 0x61, 0xb7, 0xa9, + 0xf1, 0x8a, 0x91, 0xc4, 0x4a, 0x6d, 0x8c, 0x5b, 0xa9, 0xdd, 0xc8, 0x23, 0xb1, 0x5e, 0x09, 0x8c, + 0xf2, 0x73, 0x06, 0x2e, 0x0d, 0xd0, 0x8c, 0xdc, 0xf3, 0x27, 0x12, 0xac, 0xc6, 0x08, 0x55, 0xd3, + 0x75, 0xec, 0x78, 0xc4, 0x36, 0xd5, 0x36, 0x66, 0x4c, 0x33, 0x31, 0x93, 0x33, 0x22, 0xb6, 0xed, + 0x89, 0x63, 0xab, 0x46, 0x88, 0xfd, 0x80, 0x90, 0x88, 0xb5, 0x40, 0x86, 0x89, 0x18, 0xf2, 0xe1, + 0x4a, 0x37, 0x0c, 0xd2, 0x76, 0x2c, 0xdc, 0xc6, 0xfc, 0x3b, 0x2a, 0xa3, 0x77, 0x27, 0x0e, 0x60, + 0xb7, 0xeb, 0x9c, 0x98, 0xfb, 0x32, 0x19, 0x60, 0x67, 0xca, 0x43, 0x28, 0x8e, 0x76, 0x1c, 0xb9, + 0x78, 0x2b, 0x30, 0xeb, 0x75, 0x1c, 0xac, 0xfa, 0xae, 0x15, 0xd6, 0xd6, 0x0c, 0xff, 0xfe, 0xcc, + 0xb5, 0x94, 0xaf, 0xe1, 0xfa, 0x04, 0x4b, 0x32, 0x92, 0xbe, 0x09, 0x57, 0x9a, 0x04, 0x5b, 0x86, + 0x6a, 0xc4, 0x7a, 0x95, 0x1b, 0x82, 0x3d, 0x99, 0xab, 0x2d, 0x09, 0x6b, 0x17, 0xf6, 0x31, 0xb7, + 0x29, 0x7f, 0xe7, 0x60, 0x79, 0xc8, 0xd5, 0x85, 0xaa, 0xf0, 0x42, 0x03, 0xeb, 0xad, 0x8d, 0x0a, + 0xdf, 0x68, 0xea, 0xdb, 0x9e, 0xaa, 0x19, 0x86, 0x8b, 0x19, 0x53, 0x1d, 0x17, 0x37, 0xc9, 0x49, + 0x18, 0x42, 0x21, 0x10, 0x55, 0x03, 0x4d, 0x35, 0x90, 0x1c, 0x08, 0x05, 0xba, 0x0f, 0xd7, 0x42, + 0xc4, 0xb1, 0x66, 0x11, 0x43, 0xe3, 0x41, 0xf5, 0x40, 0x82, 0x95, 0x58, 0x0d, 0x64, 0x9f, 0x47, + 0xaa, 0x61, 0x18, 0x9d, 0xda, 0x0c, 0xdb, 0xcc, 0x67, 0xbd, 0x98, 0x6c, 0x12, 0xb3, 0x1d, 0xa9, + 0xd2, 0x98, 0x1d, 0x58, 0xeb, 0x49, 0xc8, 0xf1, 0x1b, 0x16, 0xd1, 0xd5, 0xc7, 0xb8, 0x13, 0x71, + 0x72, 0x49, 0x4e, 0x98, 0xd3, 0x81, 0x50, 0x3d, 0xc0, 0x9d, 0x90, 0xf3, 0x11, 0x28, 0x7d, 0x59, + 0xf5, 0x93, 0xa6, 0x05, 0xa9, 0xd8, 0x93, 0xd8, 0x70, 0x56, 0x37, 0xb5, 0x7e, 0xd6, 0x85, 0x24, + 0x2b, 0xce, 0xae, 0x97, 0x25, 0xc3, 0x8c, 0xe3, 0xbb, 0x0e, 0x65, 0x58, 0x9e, 0x59, 0x93, 0xd6, + 0xf3, 0xb5, 0xe8, 0x93, 0x5f, 0x87, 0x3a, 0x25, 0xb6, 0xca, 0xeb, 0x4d, 0x9e, 0x15, 0xb6, 0x59, + 0x3e, 0x70, 0xd8, 0x71, 0x30, 0xba, 0x05, 0x4b, 0xbc, 0x8a, 0xd4, 0xa6, 0x6f, 0x1b, 0xae, 0x46, + 0x18, 0x76, 0x55, 0x47, 0xf3, 0x5a, 0xf2, 0x9c, 0x98, 0x14, 0x71, 0xdb, 0x4e, 0x6c, 0x3a, 0xd0, + 0xbc, 0x16, 0x7a, 0x19, 0x16, 0x85, 0x47, 0x83, 0x38, 0x9b, 0x9b, 0x81, 0x18, 0x84, 0x38, 0xcf, + 0x87, 0xb7, 0xf8, 0x28, 0xd7, 0x29, 0xbf, 0x4b, 0x90, 0x4f, 0x5d, 0xd8, 0xe8, 0x21, 0xcc, 0x87, + 0x9d, 0x4f, 0x6d, 0x33, 0x53, 0x54, 0xd0, 0x7c, 0x65, 0x73, 0xdc, 0x69, 0x0d, 0xdb, 0x5b, 0x0a, + 0xf5, 0xe1, 0x54, 0x0d, 0x58, 0x3c, 0x8e, 0x0e, 0x01, 0x2c, 0x6c, 0x6a, 0x7a, 0x47, 0x70, 0x83, + 0x96, 0x34, 0xf6, 0x8a, 0xdc, 0x13, 0x1e, 0xbd, 0xd8, 0x39, 0x2b, 0x1a, 0xde, 0x9a, 0x86, 0x6c, + 0x9b, 0x99, 0x8a, 0x0e, 0x4b, 0x83, 0x42, 0x18, 0x79, 0x1e, 0x97, 0x60, 0xda, 0xa5, 0xbe, 0x17, + 0xb5, 0x91, 0xe0, 0x23, 0x75, 0x07, 0x64, 0xd3, 0x77, 0xc0, 0x1e, 0x5c, 0x1a, 0x10, 0xcf, 0x79, + 0x6f, 0x94, 0x15, 0x58, 0xfe, 0x00, 0x7b, 0xa9, 0x97, 0x56, 0x0d, 0x1f, 0xf9, 0x98, 0x79, 0xca, + 0x97, 0x20, 0xf7, 0x9b, 0x98, 0xc3, 0xab, 0x0a, 0xbd, 0x07, 0x59, 0xcd, 0x71, 0xc2, 0x7d, 0x19, + 0xdb, 0x8c, 0xd3, 0x0c, 0xee, 0xa9, 0x9c, 0xc0, 0xf2, 0x90, 0xa7, 0x0a, 0x7a, 0xd4, 0xf7, 0xf6, + 0x09, 0x3a, 0xd9, 0x9d, 0x67, 0x79, 0xfb, 0x0c, 0x7d, 0xfa, 0x28, 0x4f, 0x24, 0xb8, 0x32, 0x58, + 0x39, 0x72, 0x0d, 0x3f, 0x81, 0x99, 0xa0, 0xf1, 0x47, 0xcd, 0xeb, 0xf5, 0x89, 0xc2, 0x09, 0x1e, + 0x01, 0x89, 0x68, 0x22, 0x8a, 0x52, 0x87, 0xcb, 0x03, 0x15, 0x83, 0xde, 0x03, 0xf1, 0x49, 0x0a, + 0x16, 0x46, 0x9c, 0xa4, 0x4c, 0xf7, 0x24, 0x09, 0x8e, 0x38, 0x49, 0x05, 0x90, 0xf7, 0x08, 0xf3, + 0xaa, 0x96, 0x15, 0xf7, 0x09, 0x16, 0xed, 0xe7, 0x3d, 0x58, 0x19, 0x60, 0x0b, 0x37, 0xf4, 0x15, + 0x58, 0xec, 0x76, 0xca, 0xa0, 0x1f, 0x48, 0xa2, 0x1f, 0x2c, 0xc4, 0xc3, 0x41, 0x27, 0xd8, 0x86, + 0x02, 0xa7, 0xc4, 0x6d, 0x2d, 0x78, 0xb5, 0x87, 0x73, 0xa0, 0x97, 0x60, 0x21, 0x8d, 0x09, 0xb3, + 0xc8, 0xa7, 0x28, 0x8a, 0x0a, 0x57, 0x07, 0x42, 0xc2, 0x60, 0xde, 0x87, 0x55, 0x92, 0x32, 0x45, + 0x0f, 0x87, 0x54, 0x64, 0x85, 0xb4, 0x26, 0x6c, 0x83, 0x22, 0xca, 0xca, 0x7f, 0x39, 0xb8, 0x58, + 0x8b, 0xb7, 0x24, 0xdc, 0x69, 0xf4, 0x9b, 0x04, 0xcf, 0xf7, 0x96, 0x34, 0x1a, 0xfb, 0xa4, 0x1e, + 0x72, 0x3e, 0x0a, 0x6f, 0x3e, 0xbb, 0x63, 0x90, 0x9f, 0x72, 0xe7, 0xfb, 0x3f, 0xff, 0xfd, 0x31, + 0x73, 0x0b, 0x95, 0xc6, 0xfd, 0xa8, 0xd2, 0x1c, 0x27, 0xd1, 0xa7, 0xd1, 0xaf, 0x12, 0x5c, 0xec, + 0xdb, 0x42, 0x34, 0x36, 0x8e, 0x61, 0x15, 0x51, 0xb8, 0x7b, 0x0e, 0xcf, 0x30, 0x85, 0x8a, 0x48, + 0xe1, 0x06, 0x7a, 0x75, 0x5c, 0x0a, 0xdd, 0x97, 0x24, 0x3a, 0x93, 0xe0, 0xd2, 0x80, 0x6d, 0x47, + 0x6f, 0x4d, 0x12, 0xc6, 0xe0, 0x82, 0x2b, 0xbc, 0x7d, 0x2e, 0xdf, 0x30, 0x89, 0xba, 0x48, 0x62, + 0x1f, 0x3d, 0x98, 0x3c, 0x89, 0xf2, 0x37, 0xe9, 0xfa, 0xfe, 0xae, 0x9c, 0xae, 0x42, 0xb6, 0x55, + 0xff, 0xe3, 0xb4, 0x28, 0x3d, 0x3d, 0x2d, 0x4a, 0xff, 0x9c, 0x16, 0xa5, 0x1f, 0xce, 0x8a, 0x53, + 0x4f, 0xcf, 0x8a, 0x53, 0x7f, 0x9d, 0x15, 0xa7, 0xbe, 0xb8, 0x6b, 0x12, 0xaf, 0xe5, 0x37, 0x4a, + 0x3a, 0x6d, 0x47, 0x13, 0x06, 0x7f, 0x6e, 0x32, 0xe3, 0x71, 0x99, 0xdf, 0x76, 0xd8, 0x2d, 0x9b, + 0xae, 0xa3, 0x87, 0xc3, 0xdd, 0x40, 0x1a, 0x17, 0xc4, 0xaf, 0xe2, 0x8d, 0xff, 0x03, 0x00, 0x00, + 0xff, 0xff, 0xb0, 0x13, 0xdb, 0x07, 0x86, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/types/tx/signing/signing.pb.go b/types/tx/signing/signing.pb.go index cd41e1bba220..f06a270c7cbd 100644 --- a/types/tx/signing/signing.pb.go +++ b/types/tx/signing/signing.pb.go @@ -5,13 +5,12 @@ package signing import ( fmt "fmt" - io "io" - math "math" - math_bits "math/bits" - types "github.com/cosmos/cosmos-sdk/codec/types" types1 "github.com/cosmos/cosmos-sdk/crypto/types" proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" ) // Reference imports to suppress errors if they are not otherwise used. @@ -39,7 +38,7 @@ const ( // human-readable textual representation on top of the binary representation // from SIGN_MODE_DIRECT SignMode_SIGN_MODE_TEXTUAL SignMode = 2 - // Deprecated: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses + // SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses // Amino JSON and will be removed in the future SignMode_SIGN_MODE_LEGACY_AMINO_JSON SignMode = 127 ) diff --git a/x/staking/types/staking.pb.go b/x/staking/types/staking.pb.go index 3653bbe3dde8..618599edba36 100644 --- a/x/staking/types/staking.pb.go +++ b/x/staking/types/staking.pb.go @@ -1260,621 +1260,622 @@ func (this *Pool) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_ func StakingDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) { d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{} var gzipped = []byte{ - // 9821 bytes of a gzipped FileDescriptorSet + // 9834 bytes of a gzipped FileDescriptorSet 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x70, 0x5c, 0xd7, 0x75, 0x18, 0xde, 0x7e, 0x00, 0xbb, 0x07, 0x0b, 0x60, 0x71, 0x01, 0x92, 0xcb, 0x25, 0x09, 0x40, - 0x4f, 0x5f, 0x14, 0x25, 0x81, 0x12, 0x25, 0x52, 0xd2, 0xd2, 0xb6, 0xbc, 0x8b, 0x5d, 0x82, 0x10, + 0x4f, 0x5f, 0x14, 0x25, 0x81, 0x12, 0x25, 0x52, 0xd2, 0x32, 0xb6, 0xbc, 0x8b, 0x5d, 0x82, 0x10, 0xf1, 0xa5, 0x07, 0x80, 0x92, 0x65, 0xa7, 0x3b, 0x0f, 0xbb, 0x17, 0x8b, 0x27, 0xec, 0xbe, 0xf7, - 0xf4, 0xde, 0x5b, 0x12, 0x90, 0xed, 0x8e, 0xfc, 0x51, 0xd7, 0x66, 0x26, 0x8d, 0x5d, 0x77, 0x1a, + 0xf4, 0xde, 0x5b, 0x12, 0xa0, 0xed, 0x8e, 0xfc, 0x51, 0xd7, 0x66, 0x26, 0x8d, 0x5d, 0x77, 0x1a, 0x5b, 0x36, 0x5d, 0x39, 0x4e, 0xeb, 0xd4, 0x71, 0x1b, 0x3b, 0x76, 0xdd, 0xa6, 0xed, 0x4c, 0xed, - 0x4e, 0xd3, 0xd8, 0x6e, 0x93, 0xb1, 0xdb, 0x4c, 0x9b, 0x66, 0x52, 0x3a, 0x95, 0x3d, 0xa9, 0xea, - 0xba, 0x8d, 0xc3, 0xb8, 0x6d, 0x3a, 0x9e, 0x4e, 0x3b, 0xf7, 0xeb, 0x7d, 0xed, 0x27, 0x20, 0xd2, - 0x72, 0x9a, 0xfc, 0xc2, 0xde, 0x73, 0xcf, 0x39, 0xf7, 0x9c, 0x73, 0xcf, 0x3d, 0xf7, 0xdc, 0xaf, - 0x07, 0xf8, 0xe2, 0x79, 0x98, 0xa9, 0x19, 0x46, 0xad, 0x8e, 0x4f, 0x9b, 0x96, 0xe1, 0x18, 0x9b, - 0xcd, 0xad, 0xd3, 0x55, 0x6c, 0x57, 0x2c, 0xcd, 0x74, 0x0c, 0x6b, 0x96, 0xc2, 0xd0, 0x18, 0xc3, - 0x98, 0x15, 0x18, 0xf2, 0x12, 0x8c, 0x5f, 0xd0, 0xea, 0xb8, 0xe8, 0x22, 0xae, 0x61, 0x07, 0x3d, - 0x0e, 0xb1, 0x2d, 0xad, 0x8e, 0x33, 0xd2, 0x4c, 0xf4, 0xe4, 0xf0, 0x99, 0xbb, 0x66, 0x43, 0x44, - 0xb3, 0x41, 0x8a, 0x55, 0x02, 0x56, 0x28, 0x85, 0xfc, 0xbd, 0x18, 0x4c, 0xb4, 0xa9, 0x45, 0x08, - 0x62, 0xba, 0xda, 0x20, 0x1c, 0xa5, 0x93, 0x49, 0x85, 0xfe, 0x46, 0x19, 0x18, 0x32, 0xd5, 0xca, - 0x8e, 0x5a, 0xc3, 0x99, 0x08, 0x05, 0x8b, 0x22, 0x9a, 0x02, 0xa8, 0x62, 0x13, 0xeb, 0x55, 0xac, - 0x57, 0xf6, 0x32, 0xd1, 0x99, 0xe8, 0xc9, 0xa4, 0xe2, 0x83, 0xa0, 0xfb, 0x61, 0xdc, 0x6c, 0x6e, - 0xd6, 0xb5, 0x4a, 0xd9, 0x87, 0x06, 0x33, 0xd1, 0x93, 0x71, 0x25, 0xcd, 0x2a, 0x8a, 0x1e, 0xf2, - 0xbd, 0x30, 0x76, 0x15, 0xab, 0x3b, 0x7e, 0xd4, 0x61, 0x8a, 0x3a, 0x4a, 0xc0, 0x3e, 0xc4, 0x39, - 0x48, 0x35, 0xb0, 0x6d, 0xab, 0x35, 0x5c, 0x76, 0xf6, 0x4c, 0x9c, 0x89, 0x51, 0xed, 0x67, 0x5a, - 0xb4, 0x0f, 0x6b, 0x3e, 0xcc, 0xa9, 0xd6, 0xf7, 0x4c, 0x8c, 0xf2, 0x90, 0xc4, 0x7a, 0xb3, 0xc1, - 0x38, 0xc4, 0x3b, 0xd8, 0xaf, 0xa4, 0x37, 0x1b, 0x61, 0x2e, 0x09, 0x42, 0xc6, 0x59, 0x0c, 0xd9, - 0xd8, 0xba, 0xa2, 0x55, 0x70, 0x66, 0x90, 0x32, 0xb8, 0xb7, 0x85, 0xc1, 0x1a, 0xab, 0x0f, 0xf3, - 0x10, 0x74, 0x68, 0x0e, 0x92, 0x78, 0xd7, 0xc1, 0xba, 0xad, 0x19, 0x7a, 0x66, 0x88, 0x32, 0xb9, - 0xbb, 0x4d, 0x2f, 0xe2, 0x7a, 0x35, 0xcc, 0xc2, 0xa3, 0x43, 0xe7, 0x60, 0xc8, 0x30, 0x1d, 0xcd, - 0xd0, 0xed, 0x4c, 0x62, 0x46, 0x3a, 0x39, 0x7c, 0xe6, 0x78, 0x5b, 0x47, 0x58, 0x61, 0x38, 0x8a, - 0x40, 0x46, 0x0b, 0x90, 0xb6, 0x8d, 0xa6, 0x55, 0xc1, 0xe5, 0x8a, 0x51, 0xc5, 0x65, 0x4d, 0xdf, - 0x32, 0x32, 0x49, 0xca, 0x60, 0xba, 0x55, 0x11, 0x8a, 0x38, 0x67, 0x54, 0xf1, 0x82, 0xbe, 0x65, - 0x28, 0xa3, 0x76, 0xa0, 0x8c, 0x0e, 0xc3, 0xa0, 0xbd, 0xa7, 0x3b, 0xea, 0x6e, 0x26, 0x45, 0x3d, - 0x84, 0x97, 0xe4, 0x5f, 0x1f, 0x84, 0xb1, 0x7e, 0x5c, 0xec, 0x3c, 0xc4, 0xb7, 0x88, 0x96, 0x99, - 0xc8, 0x7e, 0x6c, 0xc0, 0x68, 0x82, 0x46, 0x1c, 0x3c, 0xa0, 0x11, 0xf3, 0x30, 0xac, 0x63, 0xdb, - 0xc1, 0x55, 0xe6, 0x11, 0xd1, 0x3e, 0x7d, 0x0a, 0x18, 0x51, 0xab, 0x4b, 0xc5, 0x0e, 0xe4, 0x52, - 0xcf, 0xc2, 0x98, 0x2b, 0x52, 0xd9, 0x52, 0xf5, 0x9a, 0xf0, 0xcd, 0xd3, 0xbd, 0x24, 0x99, 0x2d, - 0x09, 0x3a, 0x85, 0x90, 0x29, 0xa3, 0x38, 0x50, 0x46, 0x45, 0x00, 0x43, 0xc7, 0xc6, 0x56, 0xb9, - 0x8a, 0x2b, 0xf5, 0x4c, 0xa2, 0x83, 0x95, 0x56, 0x08, 0x4a, 0x8b, 0x95, 0x0c, 0x06, 0xad, 0xd4, - 0xd1, 0x13, 0x9e, 0xab, 0x0d, 0x75, 0xf0, 0x94, 0x25, 0x36, 0xc8, 0x5a, 0xbc, 0x6d, 0x03, 0x46, - 0x2d, 0x4c, 0xfc, 0x1e, 0x57, 0xb9, 0x66, 0x49, 0x2a, 0xc4, 0x6c, 0x4f, 0xcd, 0x14, 0x4e, 0xc6, - 0x14, 0x1b, 0xb1, 0xfc, 0x45, 0x74, 0x27, 0xb8, 0x80, 0x32, 0x75, 0x2b, 0xa0, 0x51, 0x28, 0x25, - 0x80, 0xcb, 0x6a, 0x03, 0x67, 0x5f, 0x84, 0xd1, 0xa0, 0x79, 0xd0, 0x24, 0xc4, 0x6d, 0x47, 0xb5, + 0xce, 0xa4, 0xb1, 0xdd, 0x26, 0x63, 0xb7, 0x99, 0x36, 0xcd, 0xa4, 0x74, 0x2a, 0x7b, 0x52, 0xd5, + 0x75, 0x1b, 0x87, 0x71, 0xdb, 0x74, 0x3c, 0x9d, 0x76, 0xee, 0xd7, 0xfb, 0xda, 0x4f, 0x40, 0xa4, + 0xed, 0x34, 0xfd, 0x85, 0xbd, 0xe7, 0x9e, 0x73, 0xee, 0x39, 0xe7, 0x9e, 0x7b, 0xee, 0xb9, 0x5f, + 0x0f, 0xf0, 0x85, 0xf3, 0x30, 0x53, 0x33, 0x8c, 0x5a, 0x1d, 0x9f, 0x36, 0x2d, 0xc3, 0x31, 0x36, + 0x9b, 0x5b, 0xa7, 0xab, 0xd8, 0xae, 0x58, 0x9a, 0xe9, 0x18, 0xd6, 0x2c, 0x85, 0xa1, 0x31, 0x86, + 0x31, 0x2b, 0x30, 0xe4, 0x25, 0x18, 0xbf, 0xa0, 0xd5, 0x71, 0xd1, 0x45, 0x5c, 0xc3, 0x0e, 0x7a, + 0x12, 0x62, 0x5b, 0x5a, 0x1d, 0x67, 0xa4, 0x99, 0xe8, 0xc9, 0xe1, 0x33, 0xf7, 0xcc, 0x86, 0x88, + 0x66, 0x83, 0x14, 0xab, 0x04, 0xac, 0x50, 0x0a, 0xf9, 0xbb, 0x31, 0x98, 0x68, 0x53, 0x8b, 0x10, + 0xc4, 0x74, 0xb5, 0x41, 0x38, 0x4a, 0x27, 0x93, 0x0a, 0xfd, 0x8d, 0x32, 0x30, 0x64, 0xaa, 0x95, + 0x1d, 0xb5, 0x86, 0x33, 0x11, 0x0a, 0x16, 0x45, 0x34, 0x05, 0x50, 0xc5, 0x26, 0xd6, 0xab, 0x58, + 0xaf, 0xec, 0x65, 0xa2, 0x33, 0xd1, 0x93, 0x49, 0xc5, 0x07, 0x41, 0x0f, 0xc2, 0xb8, 0xd9, 0xdc, + 0xac, 0x6b, 0x95, 0xb2, 0x0f, 0x0d, 0x66, 0xa2, 0x27, 0xe3, 0x4a, 0x9a, 0x55, 0x14, 0x3d, 0xe4, + 0xfb, 0x61, 0xec, 0x2a, 0x56, 0x77, 0xfc, 0xa8, 0xc3, 0x14, 0x75, 0x94, 0x80, 0x7d, 0x88, 0x73, + 0x90, 0x6a, 0x60, 0xdb, 0x56, 0x6b, 0xb8, 0xec, 0xec, 0x99, 0x38, 0x13, 0xa3, 0xda, 0xcf, 0xb4, + 0x68, 0x1f, 0xd6, 0x7c, 0x98, 0x53, 0xad, 0xef, 0x99, 0x18, 0xe5, 0x21, 0x89, 0xf5, 0x66, 0x83, + 0x71, 0x88, 0x77, 0xb0, 0x5f, 0x49, 0x6f, 0x36, 0xc2, 0x5c, 0x12, 0x84, 0x8c, 0xb3, 0x18, 0xb2, + 0xb1, 0x75, 0x45, 0xab, 0xe0, 0xcc, 0x20, 0x65, 0x70, 0x7f, 0x0b, 0x83, 0x35, 0x56, 0x1f, 0xe6, + 0x21, 0xe8, 0xd0, 0x1c, 0x24, 0xf1, 0xae, 0x83, 0x75, 0x5b, 0x33, 0xf4, 0xcc, 0x10, 0x65, 0x72, + 0x6f, 0x9b, 0x5e, 0xc4, 0xf5, 0x6a, 0x98, 0x85, 0x47, 0x87, 0xce, 0xc1, 0x90, 0x61, 0x3a, 0x9a, + 0xa1, 0xdb, 0x99, 0xc4, 0x8c, 0x74, 0x72, 0xf8, 0xcc, 0xf1, 0xb6, 0x8e, 0xb0, 0xc2, 0x70, 0x14, + 0x81, 0x8c, 0x16, 0x20, 0x6d, 0x1b, 0x4d, 0xab, 0x82, 0xcb, 0x15, 0xa3, 0x8a, 0xcb, 0x9a, 0xbe, + 0x65, 0x64, 0x92, 0x94, 0xc1, 0x74, 0xab, 0x22, 0x14, 0x71, 0xce, 0xa8, 0xe2, 0x05, 0x7d, 0xcb, + 0x50, 0x46, 0xed, 0x40, 0x19, 0x1d, 0x86, 0x41, 0x7b, 0x4f, 0x77, 0xd4, 0xdd, 0x4c, 0x8a, 0x7a, + 0x08, 0x2f, 0xc9, 0xbf, 0x31, 0x08, 0x63, 0xfd, 0xb8, 0xd8, 0x79, 0x88, 0x6f, 0x11, 0x2d, 0x33, + 0x91, 0xfd, 0xd8, 0x80, 0xd1, 0x04, 0x8d, 0x38, 0x78, 0x40, 0x23, 0xe6, 0x61, 0x58, 0xc7, 0xb6, + 0x83, 0xab, 0xcc, 0x23, 0xa2, 0x7d, 0xfa, 0x14, 0x30, 0xa2, 0x56, 0x97, 0x8a, 0x1d, 0xc8, 0xa5, + 0x9e, 0x87, 0x31, 0x57, 0xa4, 0xb2, 0xa5, 0xea, 0x35, 0xe1, 0x9b, 0xa7, 0x7b, 0x49, 0x32, 0x5b, + 0x12, 0x74, 0x0a, 0x21, 0x53, 0x46, 0x71, 0xa0, 0x8c, 0x8a, 0x00, 0x86, 0x8e, 0x8d, 0xad, 0x72, + 0x15, 0x57, 0xea, 0x99, 0x44, 0x07, 0x2b, 0xad, 0x10, 0x94, 0x16, 0x2b, 0x19, 0x0c, 0x5a, 0xa9, + 0xa3, 0xa7, 0x3c, 0x57, 0x1b, 0xea, 0xe0, 0x29, 0x4b, 0x6c, 0x90, 0xb5, 0x78, 0xdb, 0x06, 0x8c, + 0x5a, 0x98, 0xf8, 0x3d, 0xae, 0x72, 0xcd, 0x92, 0x54, 0x88, 0xd9, 0x9e, 0x9a, 0x29, 0x9c, 0x8c, + 0x29, 0x36, 0x62, 0xf9, 0x8b, 0xe8, 0x6e, 0x70, 0x01, 0x65, 0xea, 0x56, 0x40, 0xa3, 0x50, 0x4a, + 0x00, 0x97, 0xd5, 0x06, 0xce, 0x5e, 0x83, 0xd1, 0xa0, 0x79, 0xd0, 0x24, 0xc4, 0x6d, 0x47, 0xb5, 0x1c, 0xea, 0x85, 0x71, 0x85, 0x15, 0x50, 0x1a, 0xa2, 0x58, 0xaf, 0xd2, 0x28, 0x17, 0x57, 0xc8, - 0x4f, 0xf4, 0x56, 0x4f, 0xe1, 0x28, 0x55, 0xf8, 0x9e, 0xd6, 0x1e, 0x0d, 0x70, 0x0e, 0xeb, 0x9d, - 0x7d, 0x0c, 0x46, 0x02, 0x0a, 0xf4, 0xdb, 0xb4, 0xfc, 0x2e, 0x38, 0xd4, 0x96, 0x35, 0x7a, 0x16, - 0x26, 0x9b, 0xba, 0xa6, 0x3b, 0xd8, 0x32, 0x2d, 0x4c, 0x3c, 0x96, 0x35, 0x95, 0xf9, 0xcf, 0x43, - 0x1d, 0x7c, 0x6e, 0xc3, 0x8f, 0xcd, 0xb8, 0x28, 0x13, 0xcd, 0x56, 0xe0, 0xa9, 0x64, 0xe2, 0xb5, - 0xa1, 0xf4, 0x4b, 0x2f, 0xbd, 0xf4, 0x52, 0x44, 0xfe, 0xda, 0x20, 0x4c, 0xb6, 0x1b, 0x33, 0x6d, + 0x4f, 0xf4, 0x16, 0x4f, 0xe1, 0x28, 0x55, 0xf8, 0xbe, 0xd6, 0x1e, 0x0d, 0x70, 0x0e, 0xeb, 0x9d, + 0x7d, 0x02, 0x46, 0x02, 0x0a, 0xf4, 0xdb, 0xb4, 0xfc, 0x4e, 0x38, 0xd4, 0x96, 0x35, 0x7a, 0x1e, + 0x26, 0x9b, 0xba, 0xa6, 0x3b, 0xd8, 0x32, 0x2d, 0x4c, 0x3c, 0x96, 0x35, 0x95, 0xf9, 0x4f, 0x43, + 0x1d, 0x7c, 0x6e, 0xc3, 0x8f, 0xcd, 0xb8, 0x28, 0x13, 0xcd, 0x56, 0xe0, 0xa9, 0x64, 0xe2, 0xf5, + 0xa1, 0xf4, 0xcb, 0x2f, 0xbf, 0xfc, 0x72, 0x44, 0xfe, 0xea, 0x20, 0x4c, 0xb6, 0x1b, 0x33, 0x6d, 0x87, 0xef, 0x61, 0x18, 0xd4, 0x9b, 0x8d, 0x4d, 0x6c, 0x51, 0x23, 0xc5, 0x15, 0x5e, 0x42, 0x79, - 0x88, 0xd7, 0xd5, 0x4d, 0x5c, 0xcf, 0xc4, 0x66, 0xa4, 0x93, 0xa3, 0x67, 0xee, 0xef, 0x6b, 0x54, - 0xce, 0x2e, 0x12, 0x12, 0x85, 0x51, 0xa2, 0xb7, 0x40, 0x8c, 0x87, 0x68, 0xc2, 0xe1, 0x54, 0x7f, + 0x88, 0xd7, 0xd5, 0x4d, 0x5c, 0xcf, 0xc4, 0x66, 0xa4, 0x93, 0xa3, 0x67, 0x1e, 0xec, 0x6b, 0x54, + 0xce, 0x2e, 0x12, 0x12, 0x85, 0x51, 0xa2, 0x37, 0x43, 0x8c, 0x87, 0x68, 0xc2, 0xe1, 0x54, 0x7f, 0x1c, 0xc8, 0x58, 0x52, 0x28, 0x1d, 0x3a, 0x06, 0x49, 0xf2, 0x97, 0xf9, 0xc6, 0x20, 0x95, 0x39, 0x41, 0x00, 0xc4, 0x2f, 0x50, 0x16, 0x12, 0x74, 0x98, 0x54, 0xb1, 0x98, 0xda, 0xdc, 0x32, 0x71, 0xac, 0x2a, 0xde, 0x52, 0x9b, 0x75, 0xa7, 0x7c, 0x45, 0xad, 0x37, 0x31, 0x75, 0xf8, 0xa4, 0x92, 0xe2, 0xc0, 0xcb, 0x04, 0x86, 0xa6, 0x61, 0x98, 0x8d, 0x2a, 0x4d, 0xaf, 0xe2, 0x5d, 0x1a, 0x3d, - 0xe3, 0x0a, 0x1b, 0x68, 0x0b, 0x04, 0x42, 0x9a, 0x7f, 0xde, 0x36, 0x74, 0xe1, 0x9a, 0xb4, 0x09, - 0x02, 0xa0, 0xcd, 0x3f, 0x16, 0x0e, 0xdc, 0x27, 0xda, 0xab, 0xd7, 0x32, 0x96, 0xee, 0x85, 0x31, - 0x8a, 0xf1, 0x08, 0xef, 0x7a, 0xb5, 0x9e, 0x19, 0x9f, 0x91, 0x4e, 0x26, 0x94, 0x51, 0x06, 0x5e, - 0xe1, 0x50, 0xf9, 0x2b, 0x11, 0x88, 0xd1, 0xc0, 0x32, 0x06, 0xc3, 0xeb, 0x6f, 0x5b, 0x2d, 0x95, + 0xe3, 0x0a, 0x1b, 0x68, 0x0b, 0x04, 0x42, 0x9a, 0x7f, 0xd1, 0x36, 0x74, 0xe1, 0x9a, 0xb4, 0x09, + 0x02, 0xa0, 0xcd, 0x3f, 0x11, 0x0e, 0xdc, 0x27, 0xda, 0xab, 0xd7, 0x32, 0x96, 0xee, 0x87, 0x31, + 0x8a, 0xf1, 0x18, 0xef, 0x7a, 0xb5, 0x9e, 0x19, 0x9f, 0x91, 0x4e, 0x26, 0x94, 0x51, 0x06, 0x5e, + 0xe1, 0x50, 0xf9, 0xcb, 0x11, 0x88, 0xd1, 0xc0, 0x32, 0x06, 0xc3, 0xeb, 0x6f, 0x5d, 0x2d, 0x95, 0x8b, 0x2b, 0x1b, 0x85, 0xc5, 0x52, 0x5a, 0x42, 0xa3, 0x00, 0x14, 0x70, 0x61, 0x71, 0x25, 0xbf, - 0x9e, 0x8e, 0xb8, 0xe5, 0x85, 0xe5, 0xf5, 0x73, 0x8f, 0xa6, 0xa3, 0x2e, 0xc1, 0x06, 0x03, 0xc4, - 0xfc, 0x08, 0x8f, 0x9c, 0x49, 0xc7, 0x51, 0x1a, 0x52, 0x8c, 0xc1, 0xc2, 0xb3, 0xa5, 0xe2, 0xb9, - 0x47, 0xd3, 0x83, 0x41, 0xc8, 0x23, 0x67, 0xd2, 0x43, 0x68, 0x04, 0x92, 0x14, 0x52, 0x58, 0x59, + 0x9e, 0x8e, 0xb8, 0xe5, 0x85, 0xe5, 0xf5, 0x73, 0x8f, 0xa7, 0xa3, 0x2e, 0xc1, 0x06, 0x03, 0xc4, + 0xfc, 0x08, 0x8f, 0x9d, 0x49, 0xc7, 0x51, 0x1a, 0x52, 0x8c, 0xc1, 0xc2, 0xf3, 0xa5, 0xe2, 0xb9, + 0xc7, 0xd3, 0x83, 0x41, 0xc8, 0x63, 0x67, 0xd2, 0x43, 0x68, 0x04, 0x92, 0x14, 0x52, 0x58, 0x59, 0x59, 0x4c, 0x27, 0x5c, 0x9e, 0x6b, 0xeb, 0xca, 0xc2, 0xf2, 0x7c, 0x3a, 0xe9, 0xf2, 0x9c, 0x57, 0x56, 0x36, 0x56, 0xd3, 0xe0, 0x72, 0x58, 0x2a, 0xad, 0xad, 0xe5, 0xe7, 0x4b, 0xe9, 0x61, 0x17, - 0xa3, 0xf0, 0xb6, 0xf5, 0xd2, 0x5a, 0x3a, 0x15, 0x10, 0xeb, 0x91, 0x33, 0xe9, 0x11, 0xb7, 0x89, + 0xa3, 0xf0, 0xd6, 0xf5, 0xd2, 0x5a, 0x3a, 0x15, 0x10, 0xeb, 0xb1, 0x33, 0xe9, 0x11, 0xb7, 0x89, 0xd2, 0xf2, 0xc6, 0x52, 0x7a, 0x14, 0x8d, 0xc3, 0x08, 0x6b, 0x42, 0x08, 0x31, 0x16, 0x02, 0x9d, - 0x7b, 0x34, 0x9d, 0xf6, 0x04, 0x61, 0x5c, 0xc6, 0x03, 0x80, 0x73, 0x8f, 0xa6, 0x91, 0x3c, 0x07, + 0x7b, 0x3c, 0x9d, 0xf6, 0x04, 0x61, 0x5c, 0xc6, 0x03, 0x80, 0x73, 0x8f, 0xa7, 0x91, 0x3c, 0x07, 0x71, 0xea, 0x86, 0x08, 0xc1, 0xe8, 0x62, 0xbe, 0x50, 0x5a, 0x2c, 0xaf, 0xac, 0xae, 0x2f, 0xac, - 0x2c, 0xe7, 0x17, 0xd3, 0x92, 0x07, 0x53, 0x4a, 0x4f, 0x6f, 0x2c, 0x28, 0xa5, 0x62, 0x3a, 0xe2, + 0x2c, 0xe7, 0x17, 0xd3, 0x92, 0x07, 0x53, 0x4a, 0xcf, 0x6e, 0x2c, 0x28, 0xa5, 0x62, 0x3a, 0xe2, 0x87, 0xad, 0x96, 0xf2, 0xeb, 0xa5, 0x62, 0x3a, 0x2a, 0x57, 0x60, 0xb2, 0x5d, 0x40, 0x6d, 0x3b, - 0x84, 0x7c, 0xbe, 0x10, 0xe9, 0xe0, 0x0b, 0x94, 0x57, 0xd8, 0x17, 0xe4, 0xef, 0x46, 0x60, 0xa2, - 0xcd, 0xa4, 0xd2, 0xb6, 0x91, 0x27, 0x21, 0xce, 0x7c, 0x99, 0x4d, 0xb3, 0xf7, 0xb5, 0x9d, 0x9d, + 0x84, 0x7c, 0xbe, 0x10, 0xe9, 0xe0, 0x0b, 0x94, 0x57, 0xd8, 0x17, 0xe4, 0xef, 0x44, 0x60, 0xa2, + 0xcd, 0xa4, 0xd2, 0xb6, 0x91, 0xa7, 0x21, 0xce, 0x7c, 0x99, 0x4d, 0xb3, 0x0f, 0xb4, 0x9d, 0x9d, 0xa8, 0x67, 0xb7, 0x4c, 0xb5, 0x94, 0xce, 0x9f, 0x6a, 0x44, 0x3b, 0xa4, 0x1a, 0x84, 0x45, 0x8b, - 0xc3, 0xfe, 0x4c, 0x4b, 0xf0, 0x67, 0xf3, 0xe3, 0xb9, 0x7e, 0xe6, 0x47, 0x0a, 0xdb, 0xdf, 0x24, - 0x10, 0x6f, 0x33, 0x09, 0x9c, 0x87, 0xf1, 0x16, 0x46, 0x7d, 0x07, 0xe3, 0xf7, 0x49, 0x90, 0xe9, - 0x64, 0x9c, 0x1e, 0x21, 0x31, 0x12, 0x08, 0x89, 0xe7, 0xc3, 0x16, 0xbc, 0xa3, 0x73, 0x27, 0xb4, - 0xf4, 0xf5, 0x67, 0x25, 0x38, 0xdc, 0x3e, 0xa5, 0x6c, 0x2b, 0xc3, 0x5b, 0x60, 0xb0, 0x81, 0x9d, - 0x6d, 0x43, 0xa4, 0x55, 0xf7, 0xb4, 0x99, 0xac, 0x49, 0x75, 0xb8, 0xb3, 0x39, 0x95, 0x7f, 0xb6, - 0x8f, 0x76, 0xca, 0x0b, 0x99, 0x34, 0x2d, 0x92, 0x7e, 0x28, 0x02, 0x87, 0xda, 0x32, 0x6f, 0x2b, + 0xc3, 0xfe, 0x6c, 0x4b, 0xf0, 0x67, 0xf3, 0xe3, 0xb9, 0x7e, 0xe6, 0x47, 0x0a, 0xdb, 0xdf, 0x24, + 0x10, 0x6f, 0x33, 0x09, 0x9c, 0x87, 0xf1, 0x16, 0x46, 0x7d, 0x07, 0xe3, 0xf7, 0x4a, 0x90, 0xe9, + 0x64, 0x9c, 0x1e, 0x21, 0x31, 0x12, 0x08, 0x89, 0xe7, 0xc3, 0x16, 0xbc, 0xab, 0x73, 0x27, 0xb4, + 0xf4, 0xf5, 0x67, 0x24, 0x38, 0xdc, 0x3e, 0xa5, 0x6c, 0x2b, 0xc3, 0x9b, 0x61, 0xb0, 0x81, 0x9d, + 0x6d, 0x43, 0xa4, 0x55, 0xf7, 0xb5, 0x99, 0xac, 0x49, 0x75, 0xb8, 0xb3, 0x39, 0x95, 0x7f, 0xb6, + 0x8f, 0x76, 0xca, 0x0b, 0x99, 0x34, 0x2d, 0x92, 0x7e, 0x30, 0x02, 0x87, 0xda, 0x32, 0x6f, 0x2b, 0xe8, 0x09, 0x00, 0x4d, 0x37, 0x9b, 0x0e, 0x4b, 0x9d, 0x58, 0x24, 0x4e, 0x52, 0x08, 0x0d, 0x5e, - 0x24, 0xca, 0x36, 0x1d, 0xb7, 0x3e, 0x4a, 0xeb, 0x81, 0x81, 0x28, 0xc2, 0xe3, 0x9e, 0xa0, 0x31, - 0x2a, 0xe8, 0x54, 0x07, 0x4d, 0x5b, 0x1c, 0xf3, 0x21, 0x48, 0x57, 0xea, 0x1a, 0xd6, 0x9d, 0xb2, + 0x24, 0xca, 0x36, 0x1d, 0xb7, 0x3e, 0x4a, 0xeb, 0x81, 0x81, 0x28, 0xc2, 0x93, 0x9e, 0xa0, 0x31, + 0x2a, 0xe8, 0x54, 0x07, 0x4d, 0x5b, 0x1c, 0xf3, 0x11, 0x48, 0x57, 0xea, 0x1a, 0xd6, 0x9d, 0xb2, 0xed, 0x58, 0x58, 0x6d, 0x68, 0x7a, 0x8d, 0x4e, 0x35, 0x89, 0x5c, 0x7c, 0x4b, 0xad, 0xdb, 0x58, 0x19, 0x63, 0xd5, 0x6b, 0xa2, 0x96, 0x50, 0x50, 0x07, 0xb2, 0x7c, 0x14, 0x83, 0x01, 0x0a, 0x56, - 0xed, 0x52, 0xc8, 0x1f, 0x49, 0xc2, 0xb0, 0x2f, 0x01, 0x47, 0x77, 0x40, 0xea, 0x79, 0xf5, 0x8a, - 0x5a, 0x16, 0x8b, 0x2a, 0x66, 0x89, 0x61, 0x02, 0x5b, 0xe5, 0x0b, 0xab, 0x87, 0x60, 0x92, 0xa2, + 0xed, 0x52, 0xc8, 0x1f, 0x4e, 0xc2, 0xb0, 0x2f, 0x01, 0x47, 0x77, 0x41, 0xea, 0x45, 0xf5, 0x8a, + 0x5a, 0x16, 0x8b, 0x2a, 0x66, 0x89, 0x61, 0x02, 0x5b, 0xe5, 0x0b, 0xab, 0x47, 0x60, 0x92, 0xa2, 0x18, 0x4d, 0x07, 0x5b, 0xe5, 0x4a, 0x5d, 0xb5, 0x6d, 0x6a, 0xb4, 0x04, 0x45, 0x45, 0xa4, 0x6e, 0x85, 0x54, 0xcd, 0x89, 0x1a, 0x74, 0x16, 0x26, 0x28, 0x45, 0xa3, 0x59, 0x77, 0x34, 0xb3, 0x8e, 0xcb, 0x64, 0x99, 0x67, 0xd3, 0x29, 0xc7, 0x95, 0x6c, 0x9c, 0x60, 0x2c, 0x71, 0x04, 0x22, 0x91, - 0x8d, 0x8a, 0x70, 0x82, 0x92, 0xd5, 0xb0, 0x8e, 0x2d, 0xd5, 0xc1, 0x65, 0xfc, 0x42, 0x53, 0xad, + 0x8d, 0x8a, 0x70, 0x82, 0x92, 0xd5, 0xb0, 0x8e, 0x2d, 0xd5, 0xc1, 0x65, 0xfc, 0x52, 0x53, 0xad, 0xdb, 0x65, 0x55, 0xaf, 0x96, 0xb7, 0x55, 0x7b, 0x3b, 0x33, 0x49, 0x18, 0x14, 0x22, 0x19, 0x49, 0x39, 0x4a, 0x10, 0xe7, 0x39, 0x5e, 0x89, 0xa2, 0xe5, 0xf5, 0xea, 0x45, 0xd5, 0xde, 0x46, 0x39, 0x38, 0x4c, 0xb9, 0xd8, 0x8e, 0xa5, 0xe9, 0xb5, 0x72, 0x65, 0x1b, 0x57, 0x76, 0xca, 0x4d, 0x67, - 0xeb, 0xf1, 0xcc, 0x31, 0x7f, 0xfb, 0x54, 0xc2, 0x35, 0x8a, 0x33, 0x47, 0x50, 0x36, 0x9c, 0xad, - 0xc7, 0xd1, 0x1a, 0xa4, 0x48, 0x67, 0x34, 0xb4, 0x17, 0x71, 0x79, 0xcb, 0xb0, 0xe8, 0x1c, 0x3a, - 0xda, 0x26, 0x34, 0xf9, 0x2c, 0x38, 0xbb, 0xc2, 0x09, 0x96, 0x8c, 0x2a, 0xce, 0xc5, 0xd7, 0x56, - 0x4b, 0xa5, 0xa2, 0x32, 0x2c, 0xb8, 0x5c, 0x30, 0x2c, 0xe2, 0x50, 0x35, 0xc3, 0x35, 0xf0, 0x30, - 0x73, 0xa8, 0x9a, 0x21, 0xcc, 0x7b, 0x16, 0x26, 0x2a, 0x15, 0xa6, 0xb3, 0x56, 0x29, 0xf3, 0xc5, - 0x98, 0x9d, 0x49, 0x07, 0x8c, 0x55, 0xa9, 0xcc, 0x33, 0x04, 0xee, 0xe3, 0x36, 0x7a, 0x02, 0x0e, - 0x79, 0xc6, 0xf2, 0x13, 0x8e, 0xb7, 0x68, 0x19, 0x26, 0x3d, 0x0b, 0x13, 0xe6, 0x5e, 0x2b, 0x21, - 0x0a, 0xb4, 0x68, 0xee, 0x85, 0xc9, 0x1e, 0x83, 0x49, 0x73, 0xdb, 0x6c, 0xa5, 0x3b, 0xe5, 0xa7, - 0x43, 0xe6, 0xb6, 0x19, 0x26, 0xbc, 0x9b, 0xae, 0xcc, 0x2d, 0x5c, 0x51, 0x1d, 0x5c, 0xcd, 0x1c, - 0xf1, 0xa3, 0xfb, 0x2a, 0xd0, 0x2c, 0xa4, 0x2b, 0x95, 0x32, 0xd6, 0xd5, 0xcd, 0x3a, 0x2e, 0xab, - 0x16, 0xd6, 0x55, 0x3b, 0x33, 0x4d, 0x91, 0x63, 0x8e, 0xd5, 0xc4, 0xca, 0x68, 0xa5, 0x52, 0xa2, - 0x95, 0x79, 0x5a, 0x87, 0x4e, 0xc1, 0xb8, 0xb1, 0xf9, 0x7c, 0x85, 0x79, 0x64, 0xd9, 0xb4, 0xf0, - 0x96, 0xb6, 0x9b, 0xb9, 0x8b, 0x9a, 0x77, 0x8c, 0x54, 0x50, 0x7f, 0x5c, 0xa5, 0x60, 0x74, 0x1f, - 0xa4, 0x2b, 0xf6, 0xb6, 0x6a, 0x99, 0x34, 0x24, 0xdb, 0xa6, 0x5a, 0xc1, 0x99, 0xbb, 0x19, 0x2a, - 0x83, 0x2f, 0x0b, 0x30, 0x19, 0x11, 0xf6, 0x55, 0x6d, 0xcb, 0x11, 0x1c, 0xef, 0x65, 0x23, 0x82, - 0xc2, 0x38, 0xb7, 0x93, 0x90, 0x26, 0x96, 0x08, 0x34, 0x7c, 0x92, 0xa2, 0x8d, 0x9a, 0xdb, 0xa6, - 0xbf, 0xdd, 0x3b, 0x61, 0x84, 0x60, 0x7a, 0x8d, 0xde, 0xc7, 0x12, 0x37, 0x73, 0xdb, 0xd7, 0xe2, - 0xa3, 0x70, 0x98, 0x20, 0x35, 0xb0, 0xa3, 0x56, 0x55, 0x47, 0xf5, 0x61, 0x3f, 0x40, 0xb1, 0x89, - 0xd9, 0x97, 0x78, 0x65, 0x40, 0x4e, 0xab, 0xb9, 0xb9, 0xe7, 0x3a, 0xd6, 0x83, 0x4c, 0x4e, 0x02, - 0x13, 0xae, 0x75, 0xdb, 0x92, 0x73, 0x39, 0x07, 0x29, 0xbf, 0xdf, 0xa3, 0x24, 0x30, 0xcf, 0x4f, - 0x4b, 0x24, 0x09, 0x9a, 0x5b, 0x29, 0x92, 0xf4, 0xe5, 0xb9, 0x52, 0x3a, 0x42, 0xd2, 0xa8, 0xc5, - 0x85, 0xf5, 0x52, 0x59, 0xd9, 0x58, 0x5e, 0x5f, 0x58, 0x2a, 0xa5, 0xa3, 0xbe, 0xc4, 0xfe, 0xa9, - 0x58, 0xe2, 0x9e, 0xf4, 0xbd, 0xf2, 0xb7, 0x23, 0x30, 0x1a, 0x5c, 0xa9, 0xa1, 0x37, 0xc1, 0x11, + 0xeb, 0xc9, 0xcc, 0x31, 0x7f, 0xfb, 0x54, 0xc2, 0x35, 0x8a, 0x33, 0x47, 0x50, 0x36, 0x9c, 0xad, + 0x27, 0xd1, 0x1a, 0xa4, 0x48, 0x67, 0x34, 0xb4, 0x6b, 0xb8, 0xbc, 0x65, 0x58, 0x74, 0x0e, 0x1d, + 0x6d, 0x13, 0x9a, 0x7c, 0x16, 0x9c, 0x5d, 0xe1, 0x04, 0x4b, 0x46, 0x15, 0xe7, 0xe2, 0x6b, 0xab, + 0xa5, 0x52, 0x51, 0x19, 0x16, 0x5c, 0x2e, 0x18, 0x16, 0x71, 0xa8, 0x9a, 0xe1, 0x1a, 0x78, 0x98, + 0x39, 0x54, 0xcd, 0x10, 0xe6, 0x3d, 0x0b, 0x13, 0x95, 0x0a, 0xd3, 0x59, 0xab, 0x94, 0xf9, 0x62, + 0xcc, 0xce, 0xa4, 0x03, 0xc6, 0xaa, 0x54, 0xe6, 0x19, 0x02, 0xf7, 0x71, 0x1b, 0x3d, 0x05, 0x87, + 0x3c, 0x63, 0xf9, 0x09, 0xc7, 0x5b, 0xb4, 0x0c, 0x93, 0x9e, 0x85, 0x09, 0x73, 0xaf, 0x95, 0x10, + 0x05, 0x5a, 0x34, 0xf7, 0xc2, 0x64, 0x4f, 0xc0, 0xa4, 0xb9, 0x6d, 0xb6, 0xd2, 0x9d, 0xf2, 0xd3, + 0x21, 0x73, 0xdb, 0x0c, 0x13, 0xde, 0x4b, 0x57, 0xe6, 0x16, 0xae, 0xa8, 0x0e, 0xae, 0x66, 0x8e, + 0xf8, 0xd1, 0x7d, 0x15, 0x68, 0x16, 0xd2, 0x95, 0x4a, 0x19, 0xeb, 0xea, 0x66, 0x1d, 0x97, 0x55, + 0x0b, 0xeb, 0xaa, 0x9d, 0x99, 0xa6, 0xc8, 0x31, 0xc7, 0x6a, 0x62, 0x65, 0xb4, 0x52, 0x29, 0xd1, + 0xca, 0x3c, 0xad, 0x43, 0xa7, 0x60, 0xdc, 0xd8, 0x7c, 0xb1, 0xc2, 0x3c, 0xb2, 0x6c, 0x5a, 0x78, + 0x4b, 0xdb, 0xcd, 0xdc, 0x43, 0xcd, 0x3b, 0x46, 0x2a, 0xa8, 0x3f, 0xae, 0x52, 0x30, 0x7a, 0x00, + 0xd2, 0x15, 0x7b, 0x5b, 0xb5, 0x4c, 0x1a, 0x92, 0x6d, 0x53, 0xad, 0xe0, 0xcc, 0xbd, 0x0c, 0x95, + 0xc1, 0x97, 0x05, 0x98, 0x8c, 0x08, 0xfb, 0xaa, 0xb6, 0xe5, 0x08, 0x8e, 0xf7, 0xb3, 0x11, 0x41, + 0x61, 0x9c, 0xdb, 0x49, 0x48, 0x13, 0x4b, 0x04, 0x1a, 0x3e, 0x49, 0xd1, 0x46, 0xcd, 0x6d, 0xd3, + 0xdf, 0xee, 0xdd, 0x30, 0x42, 0x30, 0xbd, 0x46, 0x1f, 0x60, 0x89, 0x9b, 0xb9, 0xed, 0x6b, 0xf1, + 0x71, 0x38, 0x4c, 0x90, 0x1a, 0xd8, 0x51, 0xab, 0xaa, 0xa3, 0xfa, 0xb0, 0x1f, 0xa2, 0xd8, 0xc4, + 0xec, 0x4b, 0xbc, 0x32, 0x20, 0xa7, 0xd5, 0xdc, 0xdc, 0x73, 0x1d, 0xeb, 0x61, 0x26, 0x27, 0x81, + 0x09, 0xd7, 0xba, 0x63, 0xc9, 0xb9, 0x9c, 0x83, 0x94, 0xdf, 0xef, 0x51, 0x12, 0x98, 0xe7, 0xa7, + 0x25, 0x92, 0x04, 0xcd, 0xad, 0x14, 0x49, 0xfa, 0xf2, 0x42, 0x29, 0x1d, 0x21, 0x69, 0xd4, 0xe2, + 0xc2, 0x7a, 0xa9, 0xac, 0x6c, 0x2c, 0xaf, 0x2f, 0x2c, 0x95, 0xd2, 0x51, 0x5f, 0x62, 0xff, 0x4c, + 0x2c, 0x71, 0x5f, 0xfa, 0x7e, 0xf9, 0x5b, 0x11, 0x18, 0x0d, 0xae, 0xd4, 0xd0, 0xcf, 0xc0, 0x11, 0xb1, 0xad, 0x62, 0x63, 0xa7, 0x7c, 0x55, 0xb3, 0xe8, 0x80, 0x6c, 0xa8, 0x6c, 0x72, 0x74, 0xfd, - 0x67, 0x92, 0x63, 0xad, 0x61, 0xe7, 0x19, 0xcd, 0x22, 0xc3, 0xad, 0xa1, 0x3a, 0x68, 0x11, 0xa6, + 0x67, 0x92, 0x63, 0xad, 0x61, 0xe7, 0x39, 0xcd, 0x22, 0xc3, 0xad, 0xa1, 0x3a, 0x68, 0x11, 0xa6, 0x75, 0xa3, 0x6c, 0x3b, 0xaa, 0x5e, 0x55, 0xad, 0x6a, 0xd9, 0xdb, 0xd0, 0x2a, 0xab, 0x95, 0x0a, 0xb6, 0x6d, 0x83, 0x4d, 0x84, 0x2e, 0x97, 0xe3, 0xba, 0xb1, 0xc6, 0x91, 0xbd, 0x19, 0x22, 0xcf, 0x51, 0x43, 0xee, 0x1b, 0xed, 0xe4, 0xbe, 0xc7, 0x20, 0xd9, 0x50, 0xcd, 0x32, 0xd6, 0x1d, 0x6b, - 0x8f, 0xe6, 0xe7, 0x09, 0x25, 0xd1, 0x50, 0xcd, 0x12, 0x29, 0xff, 0x44, 0x96, 0x49, 0x4f, 0xc5, - 0x12, 0x89, 0x74, 0xf2, 0xa9, 0x58, 0x22, 0x99, 0x06, 0xf9, 0xd5, 0x28, 0xa4, 0xfc, 0xf9, 0x3a, - 0x59, 0xfe, 0x54, 0xe8, 0x8c, 0x25, 0xd1, 0x98, 0x76, 0x67, 0xd7, 0xec, 0x7e, 0x76, 0x8e, 0x4c, + 0x8f, 0xe6, 0xe7, 0x09, 0x25, 0xd1, 0x50, 0xcd, 0x12, 0x29, 0xff, 0x58, 0x96, 0x49, 0xcf, 0xc4, + 0x12, 0x89, 0x74, 0xf2, 0x99, 0x58, 0x22, 0x99, 0x06, 0xf9, 0xb5, 0x28, 0xa4, 0xfc, 0xf9, 0x3a, + 0x59, 0xfe, 0x54, 0xe8, 0x8c, 0x25, 0xd1, 0x98, 0x76, 0x77, 0xd7, 0xec, 0x7e, 0x76, 0x8e, 0x4c, 0x65, 0xb9, 0x41, 0x96, 0x1c, 0x2b, 0x8c, 0x92, 0xa4, 0x11, 0xc4, 0xd9, 0x30, 0x4b, 0x46, 0x12, - 0x0a, 0x2f, 0xa1, 0x79, 0x18, 0x7c, 0xde, 0xa6, 0xbc, 0x07, 0x29, 0xef, 0xbb, 0xba, 0xf3, 0x7e, - 0x6a, 0x8d, 0x32, 0x4f, 0x3e, 0xb5, 0x56, 0x5e, 0x5e, 0x51, 0x96, 0xf2, 0x8b, 0x0a, 0x27, 0x47, - 0x47, 0x21, 0x56, 0x57, 0x5f, 0xdc, 0x0b, 0x4e, 0x7a, 0x14, 0xd4, 0x6f, 0x27, 0x1c, 0x85, 0xd8, - 0x55, 0xac, 0xee, 0x04, 0xa7, 0x1a, 0x0a, 0xba, 0x8d, 0x83, 0xe1, 0x34, 0xc4, 0xa9, 0xbd, 0x10, - 0x00, 0xb7, 0x58, 0x7a, 0x00, 0x25, 0x20, 0x36, 0xb7, 0xa2, 0x90, 0x01, 0x91, 0x86, 0x14, 0x83, - 0x96, 0x57, 0x17, 0x4a, 0x73, 0xa5, 0x74, 0x44, 0x3e, 0x0b, 0x83, 0xcc, 0x08, 0x64, 0xb0, 0xb8, - 0x66, 0x48, 0x0f, 0xf0, 0x22, 0xe7, 0x21, 0x89, 0xda, 0x8d, 0xa5, 0x42, 0x49, 0x49, 0x47, 0x82, - 0x5d, 0x1d, 0x4b, 0xc7, 0x65, 0x1b, 0x52, 0xfe, 0x3c, 0xfc, 0x27, 0xb3, 0x18, 0xff, 0xaa, 0x04, - 0xc3, 0xbe, 0xbc, 0x9a, 0x24, 0x44, 0x6a, 0xbd, 0x6e, 0x5c, 0x2d, 0xab, 0x75, 0x4d, 0xb5, 0xb9, - 0x6b, 0x00, 0x05, 0xe5, 0x09, 0xa4, 0xdf, 0xae, 0xfb, 0x09, 0x0d, 0x91, 0x78, 0x7a, 0x50, 0xfe, - 0x94, 0x04, 0xe9, 0x70, 0x62, 0x1b, 0x12, 0x53, 0x7a, 0x23, 0xc5, 0x94, 0x3f, 0x29, 0xc1, 0x68, - 0x30, 0x9b, 0x0d, 0x89, 0x77, 0xc7, 0x1b, 0x2a, 0xde, 0x1f, 0x44, 0x60, 0x24, 0x90, 0xc3, 0xf6, - 0x2b, 0xdd, 0x0b, 0x30, 0xae, 0x55, 0x71, 0xc3, 0x34, 0x1c, 0xac, 0x57, 0xf6, 0xca, 0x75, 0x7c, - 0x05, 0xd7, 0x33, 0x32, 0x0d, 0x1a, 0xa7, 0xbb, 0x67, 0xc9, 0xb3, 0x0b, 0x1e, 0xdd, 0x22, 0x21, - 0xcb, 0x4d, 0x2c, 0x14, 0x4b, 0x4b, 0xab, 0x2b, 0xeb, 0xa5, 0xe5, 0xb9, 0xb7, 0x95, 0x37, 0x96, - 0x2f, 0x2d, 0xaf, 0x3c, 0xb3, 0xac, 0xa4, 0xb5, 0x10, 0xda, 0x6d, 0x1c, 0xf6, 0xab, 0x90, 0x0e, - 0x0b, 0x85, 0x8e, 0x40, 0x3b, 0xb1, 0xd2, 0x03, 0x68, 0x02, 0xc6, 0x96, 0x57, 0xca, 0x6b, 0x0b, - 0xc5, 0x52, 0xb9, 0x74, 0xe1, 0x42, 0x69, 0x6e, 0x7d, 0x8d, 0xed, 0x7b, 0xb8, 0xd8, 0xeb, 0x81, - 0x01, 0x2e, 0xbf, 0x1c, 0x85, 0x89, 0x36, 0x92, 0xa0, 0x3c, 0x5f, 0xb1, 0xb0, 0x45, 0xd4, 0x83, - 0xfd, 0x48, 0x3f, 0x4b, 0x72, 0x86, 0x55, 0xd5, 0x72, 0xf8, 0x02, 0xe7, 0x3e, 0x20, 0x56, 0xd2, - 0x1d, 0x6d, 0x4b, 0xc3, 0x16, 0xdf, 0x4f, 0x62, 0xcb, 0x98, 0x31, 0x0f, 0xce, 0xb6, 0x94, 0x1e, - 0x00, 0x64, 0x1a, 0xb6, 0xe6, 0x68, 0x57, 0x70, 0x59, 0xd3, 0xc5, 0xe6, 0x13, 0x59, 0xd6, 0xc4, - 0x94, 0xb4, 0xa8, 0x59, 0xd0, 0x1d, 0x17, 0x5b, 0xc7, 0x35, 0x35, 0x84, 0x4d, 0x82, 0x79, 0x54, - 0x49, 0x8b, 0x1a, 0x17, 0xfb, 0x0e, 0x48, 0x55, 0x8d, 0x26, 0xc9, 0xf5, 0x18, 0x1e, 0x99, 0x3b, - 0x24, 0x65, 0x98, 0xc1, 0x5c, 0x14, 0x9e, 0xc5, 0x7b, 0xbb, 0x5e, 0x29, 0x65, 0x98, 0xc1, 0x18, - 0xca, 0xbd, 0x30, 0xa6, 0xd6, 0x6a, 0x16, 0x61, 0x2e, 0x18, 0xb1, 0x75, 0xc9, 0xa8, 0x0b, 0xa6, - 0x88, 0xd9, 0xa7, 0x20, 0x21, 0xec, 0x40, 0xa6, 0x6a, 0x62, 0x89, 0xb2, 0xc9, 0x16, 0xdb, 0x91, - 0x93, 0x49, 0x25, 0xa1, 0x8b, 0xca, 0x3b, 0x20, 0xa5, 0xd9, 0x65, 0x6f, 0x13, 0x3f, 0x32, 0x13, - 0x39, 0x99, 0x50, 0x86, 0x35, 0xdb, 0xdd, 0x00, 0x95, 0x3f, 0x1b, 0x81, 0xd1, 0xe0, 0x21, 0x04, - 0x2a, 0x42, 0xa2, 0x6e, 0x54, 0x54, 0xea, 0x5a, 0xec, 0x04, 0xec, 0x64, 0x8f, 0x73, 0x8b, 0xd9, - 0x45, 0x8e, 0xaf, 0xb8, 0x94, 0xd9, 0xdf, 0x96, 0x20, 0x21, 0xc0, 0xe8, 0x30, 0xc4, 0x4c, 0xd5, - 0xd9, 0xa6, 0xec, 0xe2, 0x85, 0x48, 0x5a, 0x52, 0x68, 0x99, 0xc0, 0x6d, 0x53, 0xd5, 0xa9, 0x0b, - 0x70, 0x38, 0x29, 0x93, 0x7e, 0xad, 0x63, 0xb5, 0x4a, 0x17, 0x3d, 0x46, 0xa3, 0x81, 0x75, 0xc7, - 0x16, 0xfd, 0xca, 0xe1, 0x73, 0x1c, 0x8c, 0xee, 0x87, 0x71, 0xc7, 0x52, 0xb5, 0x7a, 0x00, 0x37, - 0x46, 0x71, 0xd3, 0xa2, 0xc2, 0x45, 0xce, 0xc1, 0x51, 0xc1, 0xb7, 0x8a, 0x1d, 0xb5, 0xb2, 0x8d, - 0xab, 0x1e, 0xd1, 0x20, 0xdd, 0xdc, 0x38, 0xc2, 0x11, 0x8a, 0xbc, 0x5e, 0xd0, 0xca, 0xdf, 0x96, - 0x60, 0x5c, 0x2c, 0xd3, 0xaa, 0xae, 0xb1, 0x96, 0x00, 0x54, 0x5d, 0x37, 0x1c, 0xbf, 0xb9, 0x5a, - 0x5d, 0xb9, 0x85, 0x6e, 0x36, 0xef, 0x12, 0x29, 0x3e, 0x06, 0xd9, 0x06, 0x80, 0x57, 0xd3, 0xd1, - 0x6c, 0xd3, 0x30, 0xcc, 0x4f, 0x98, 0xe8, 0x31, 0x25, 0x5b, 0xd8, 0x03, 0x03, 0x91, 0xf5, 0x1c, - 0x9a, 0x84, 0xf8, 0x26, 0xae, 0x69, 0x3a, 0xdf, 0x37, 0x66, 0x05, 0xb1, 0xfd, 0x12, 0x73, 0xb7, - 0x5f, 0x0a, 0x7f, 0x19, 0x26, 0x2a, 0x46, 0x23, 0x2c, 0x6e, 0x21, 0x1d, 0xda, 0x5c, 0xb0, 0x2f, - 0x4a, 0xcf, 0x3d, 0xc8, 0x91, 0x6a, 0x46, 0x5d, 0xd5, 0x6b, 0xb3, 0x86, 0x55, 0xf3, 0x8e, 0x59, - 0x49, 0xc6, 0x63, 0xfb, 0x0e, 0x5b, 0xcd, 0xcd, 0x3f, 0x95, 0xa4, 0x5f, 0x8c, 0x44, 0xe7, 0x57, - 0x0b, 0x9f, 0x8b, 0x64, 0xe7, 0x19, 0xe1, 0xaa, 0x30, 0x86, 0x82, 0xb7, 0xea, 0xb8, 0x42, 0x14, - 0x84, 0xef, 0xdf, 0x0f, 0x93, 0x35, 0xa3, 0x66, 0x50, 0x4e, 0xa7, 0xc9, 0x2f, 0x7e, 0x4e, 0x9b, - 0x74, 0xa1, 0xd9, 0x9e, 0x87, 0xba, 0xb9, 0x65, 0x98, 0xe0, 0xc8, 0x65, 0x7a, 0x50, 0xc4, 0x96, - 0x31, 0xa8, 0xeb, 0x1e, 0x5a, 0xe6, 0x8b, 0xdf, 0xa3, 0xd3, 0xb7, 0x32, 0xce, 0x49, 0x49, 0x1d, - 0x5b, 0xe9, 0xe4, 0x14, 0x38, 0x14, 0xe0, 0xc7, 0x06, 0x29, 0xb6, 0x7a, 0x70, 0xfc, 0x0d, 0xce, - 0x71, 0xc2, 0xc7, 0x71, 0x8d, 0x93, 0xe6, 0xe6, 0x60, 0x64, 0x3f, 0xbc, 0xfe, 0x25, 0xe7, 0x95, - 0xc2, 0x7e, 0x26, 0xf3, 0x30, 0x46, 0x99, 0x54, 0x9a, 0xb6, 0x63, 0x34, 0x68, 0x04, 0xec, 0xce, - 0xe6, 0x37, 0xbf, 0xc7, 0x46, 0xcd, 0x28, 0x21, 0x9b, 0x73, 0xa9, 0x72, 0x39, 0xa0, 0x67, 0x63, - 0x55, 0x5c, 0xa9, 0xf7, 0xe0, 0xf0, 0x75, 0x2e, 0x88, 0x8b, 0x9f, 0xbb, 0x0c, 0x93, 0xe4, 0x37, - 0x0d, 0x50, 0x7e, 0x49, 0x7a, 0x6f, 0xb8, 0x65, 0xbe, 0xfd, 0x3e, 0x36, 0x30, 0x27, 0x5c, 0x06, - 0x3e, 0x99, 0x7c, 0xbd, 0x58, 0xc3, 0x8e, 0x83, 0x2d, 0xbb, 0xac, 0xd6, 0xdb, 0x89, 0xe7, 0xdb, - 0xb1, 0xc8, 0x7c, 0xfc, 0x07, 0xc1, 0x5e, 0x9c, 0x67, 0x94, 0xf9, 0x7a, 0x3d, 0xb7, 0x01, 0x47, - 0xda, 0x78, 0x45, 0x1f, 0x3c, 0x5f, 0xe6, 0x3c, 0x27, 0x5b, 0x3c, 0x83, 0xb0, 0x5d, 0x05, 0x01, - 0x77, 0xfb, 0xb2, 0x0f, 0x9e, 0x9f, 0xe0, 0x3c, 0x11, 0xa7, 0x15, 0x5d, 0x4a, 0x38, 0x3e, 0x05, - 0xe3, 0x57, 0xb0, 0xb5, 0x69, 0xd8, 0x7c, 0x97, 0xa8, 0x0f, 0x76, 0x9f, 0xe4, 0xec, 0xc6, 0x38, - 0x21, 0xdd, 0x36, 0x22, 0xbc, 0x9e, 0x80, 0xc4, 0x96, 0x5a, 0xc1, 0x7d, 0xb0, 0xb8, 0xce, 0x59, - 0x0c, 0x11, 0x7c, 0x42, 0x9a, 0x87, 0x54, 0xcd, 0xe0, 0x73, 0x54, 0x6f, 0xf2, 0x4f, 0x71, 0xf2, - 0x61, 0x41, 0xc3, 0x59, 0x98, 0x86, 0xd9, 0xac, 0x93, 0x09, 0xac, 0x37, 0x8b, 0xbf, 0x25, 0x58, - 0x08, 0x1a, 0xce, 0x62, 0x1f, 0x66, 0x7d, 0x45, 0xb0, 0xb0, 0x7d, 0xf6, 0x7c, 0x12, 0x86, 0x0d, - 0xbd, 0xbe, 0x67, 0xe8, 0xfd, 0x08, 0xf1, 0x69, 0xce, 0x01, 0x38, 0x09, 0x61, 0x70, 0x1e, 0x92, - 0xfd, 0x76, 0xc4, 0xdf, 0xfe, 0x81, 0x18, 0x1e, 0xa2, 0x07, 0xe6, 0x61, 0x4c, 0x04, 0x28, 0xcd, - 0xd0, 0xfb, 0x60, 0xf1, 0x77, 0x38, 0x8b, 0x51, 0x1f, 0x19, 0x57, 0xc3, 0xc1, 0xb6, 0x53, 0xc3, - 0xfd, 0x30, 0xf9, 0xac, 0x50, 0x83, 0x93, 0x70, 0x53, 0x6e, 0x62, 0xbd, 0xb2, 0xdd, 0x1f, 0x87, - 0x5f, 0x16, 0xa6, 0x14, 0x34, 0x84, 0xc5, 0x1c, 0x8c, 0x34, 0x54, 0xcb, 0xde, 0x56, 0xeb, 0x7d, - 0x75, 0xc7, 0xdf, 0xe5, 0x3c, 0x52, 0x2e, 0x11, 0xb7, 0x48, 0x53, 0xdf, 0x0f, 0x9b, 0xcf, 0x09, - 0x8b, 0xf8, 0xc8, 0xf8, 0xd0, 0xb3, 0x1d, 0xba, 0xa5, 0xb6, 0x1f, 0x6e, 0xbf, 0x22, 0x86, 0x1e, - 0xa3, 0x5d, 0xf2, 0x73, 0x3c, 0x0f, 0x49, 0x5b, 0x7b, 0xb1, 0x2f, 0x36, 0x9f, 0x17, 0x3d, 0x4d, - 0x09, 0x08, 0xf1, 0xdb, 0xe0, 0x68, 0xdb, 0x69, 0xa2, 0x0f, 0x66, 0x7f, 0x8f, 0x33, 0x3b, 0xdc, + 0x0a, 0x2f, 0xa1, 0x79, 0x18, 0x7c, 0xd1, 0xa6, 0xbc, 0x07, 0x29, 0xef, 0x7b, 0xba, 0xf3, 0x7e, + 0x66, 0x8d, 0x32, 0x4f, 0x3e, 0xb3, 0x56, 0x5e, 0x5e, 0x51, 0x96, 0xf2, 0x8b, 0x0a, 0x27, 0x47, + 0x47, 0x21, 0x56, 0x57, 0xaf, 0xed, 0x05, 0x27, 0x3d, 0x0a, 0xea, 0xb7, 0x13, 0x8e, 0x42, 0xec, + 0x2a, 0x56, 0x77, 0x82, 0x53, 0x0d, 0x05, 0xdd, 0xc1, 0xc1, 0x70, 0x1a, 0xe2, 0xd4, 0x5e, 0x08, + 0x80, 0x5b, 0x2c, 0x3d, 0x80, 0x12, 0x10, 0x9b, 0x5b, 0x51, 0xc8, 0x80, 0x48, 0x43, 0x8a, 0x41, + 0xcb, 0xab, 0x0b, 0xa5, 0xb9, 0x52, 0x3a, 0x22, 0x9f, 0x85, 0x41, 0x66, 0x04, 0x32, 0x58, 0x5c, + 0x33, 0xa4, 0x07, 0x78, 0x91, 0xf3, 0x90, 0x44, 0xed, 0xc6, 0x52, 0xa1, 0xa4, 0xa4, 0x23, 0xc1, + 0xae, 0x8e, 0xa5, 0xe3, 0xb2, 0x0d, 0x29, 0x7f, 0x1e, 0xfe, 0xe3, 0x59, 0x8c, 0x7f, 0x45, 0x82, + 0x61, 0x5f, 0x5e, 0x4d, 0x12, 0x22, 0xb5, 0x5e, 0x37, 0xae, 0x96, 0xd5, 0xba, 0xa6, 0xda, 0xdc, + 0x35, 0x80, 0x82, 0xf2, 0x04, 0xd2, 0x6f, 0xd7, 0xfd, 0x98, 0x86, 0x48, 0x3c, 0x3d, 0x28, 0x7f, + 0x52, 0x82, 0x74, 0x38, 0xb1, 0x0d, 0x89, 0x29, 0xfd, 0x24, 0xc5, 0x94, 0x3f, 0x21, 0xc1, 0x68, + 0x30, 0x9b, 0x0d, 0x89, 0x77, 0xd7, 0x4f, 0x54, 0xbc, 0x3f, 0x8c, 0xc0, 0x48, 0x20, 0x87, 0xed, + 0x57, 0xba, 0x97, 0x60, 0x5c, 0xab, 0xe2, 0x86, 0x69, 0x38, 0x58, 0xaf, 0xec, 0x95, 0xeb, 0xf8, + 0x0a, 0xae, 0x67, 0x64, 0x1a, 0x34, 0x4e, 0x77, 0xcf, 0x92, 0x67, 0x17, 0x3c, 0xba, 0x45, 0x42, + 0x96, 0x9b, 0x58, 0x28, 0x96, 0x96, 0x56, 0x57, 0xd6, 0x4b, 0xcb, 0x73, 0x6f, 0x2d, 0x6f, 0x2c, + 0x5f, 0x5a, 0x5e, 0x79, 0x6e, 0x59, 0x49, 0x6b, 0x21, 0xb4, 0x3b, 0x38, 0xec, 0x57, 0x21, 0x1d, + 0x16, 0x0a, 0x1d, 0x81, 0x76, 0x62, 0xa5, 0x07, 0xd0, 0x04, 0x8c, 0x2d, 0xaf, 0x94, 0xd7, 0x16, + 0x8a, 0xa5, 0x72, 0xe9, 0xc2, 0x85, 0xd2, 0xdc, 0xfa, 0x1a, 0xdb, 0xf7, 0x70, 0xb1, 0xd7, 0x03, + 0x03, 0x5c, 0x7e, 0x25, 0x0a, 0x13, 0x6d, 0x24, 0x41, 0x79, 0xbe, 0x62, 0x61, 0x8b, 0xa8, 0x87, + 0xfb, 0x91, 0x7e, 0x96, 0xe4, 0x0c, 0xab, 0xaa, 0xe5, 0xf0, 0x05, 0xce, 0x03, 0x40, 0xac, 0xa4, + 0x3b, 0xda, 0x96, 0x86, 0x2d, 0xbe, 0x9f, 0xc4, 0x96, 0x31, 0x63, 0x1e, 0x9c, 0x6d, 0x29, 0x3d, + 0x04, 0xc8, 0x34, 0x6c, 0xcd, 0xd1, 0xae, 0xe0, 0xb2, 0xa6, 0x8b, 0xcd, 0x27, 0xb2, 0xac, 0x89, + 0x29, 0x69, 0x51, 0xb3, 0xa0, 0x3b, 0x2e, 0xb6, 0x8e, 0x6b, 0x6a, 0x08, 0x9b, 0x04, 0xf3, 0xa8, + 0x92, 0x16, 0x35, 0x2e, 0xf6, 0x5d, 0x90, 0xaa, 0x1a, 0x4d, 0x92, 0xeb, 0x31, 0x3c, 0x32, 0x77, + 0x48, 0xca, 0x30, 0x83, 0xb9, 0x28, 0x3c, 0x8b, 0xf7, 0x76, 0xbd, 0x52, 0xca, 0x30, 0x83, 0x31, + 0x94, 0xfb, 0x61, 0x4c, 0xad, 0xd5, 0x2c, 0xc2, 0x5c, 0x30, 0x62, 0xeb, 0x92, 0x51, 0x17, 0x4c, + 0x11, 0xb3, 0xcf, 0x40, 0x42, 0xd8, 0x81, 0x4c, 0xd5, 0xc4, 0x12, 0x65, 0x93, 0x2d, 0xb6, 0x23, + 0x27, 0x93, 0x4a, 0x42, 0x17, 0x95, 0x77, 0x41, 0x4a, 0xb3, 0xcb, 0xde, 0x26, 0x7e, 0x64, 0x26, + 0x72, 0x32, 0xa1, 0x0c, 0x6b, 0xb6, 0xbb, 0x01, 0x2a, 0x7f, 0x26, 0x02, 0xa3, 0xc1, 0x43, 0x08, + 0x54, 0x84, 0x44, 0xdd, 0xa8, 0xa8, 0xd4, 0xb5, 0xd8, 0x09, 0xd8, 0xc9, 0x1e, 0xe7, 0x16, 0xb3, + 0x8b, 0x1c, 0x5f, 0x71, 0x29, 0xb3, 0xbf, 0x23, 0x41, 0x42, 0x80, 0xd1, 0x61, 0x88, 0x99, 0xaa, + 0xb3, 0x4d, 0xd9, 0xc5, 0x0b, 0x91, 0xb4, 0xa4, 0xd0, 0x32, 0x81, 0xdb, 0xa6, 0xaa, 0x53, 0x17, + 0xe0, 0x70, 0x52, 0x26, 0xfd, 0x5a, 0xc7, 0x6a, 0x95, 0x2e, 0x7a, 0x8c, 0x46, 0x03, 0xeb, 0x8e, + 0x2d, 0xfa, 0x95, 0xc3, 0xe7, 0x38, 0x18, 0x3d, 0x08, 0xe3, 0x8e, 0xa5, 0x6a, 0xf5, 0x00, 0x6e, + 0x8c, 0xe2, 0xa6, 0x45, 0x85, 0x8b, 0x9c, 0x83, 0xa3, 0x82, 0x6f, 0x15, 0x3b, 0x6a, 0x65, 0x1b, + 0x57, 0x3d, 0xa2, 0x41, 0xba, 0xb9, 0x71, 0x84, 0x23, 0x14, 0x79, 0xbd, 0xa0, 0x95, 0xbf, 0x25, + 0xc1, 0xb8, 0x58, 0xa6, 0x55, 0x5d, 0x63, 0x2d, 0x01, 0xa8, 0xba, 0x6e, 0x38, 0x7e, 0x73, 0xb5, + 0xba, 0x72, 0x0b, 0xdd, 0x6c, 0xde, 0x25, 0x52, 0x7c, 0x0c, 0xb2, 0x0d, 0x00, 0xaf, 0xa6, 0xa3, + 0xd9, 0xa6, 0x61, 0x98, 0x9f, 0x30, 0xd1, 0x63, 0x4a, 0xb6, 0xb0, 0x07, 0x06, 0x22, 0xeb, 0x39, + 0x34, 0x09, 0xf1, 0x4d, 0x5c, 0xd3, 0x74, 0xbe, 0x6f, 0xcc, 0x0a, 0x62, 0xfb, 0x25, 0xe6, 0x6e, + 0xbf, 0x14, 0xfe, 0x32, 0x4c, 0x54, 0x8c, 0x46, 0x58, 0xdc, 0x42, 0x3a, 0xb4, 0xb9, 0x60, 0x5f, + 0x94, 0x5e, 0x78, 0x98, 0x23, 0xd5, 0x8c, 0xba, 0xaa, 0xd7, 0x66, 0x0d, 0xab, 0xe6, 0x1d, 0xb3, + 0x92, 0x8c, 0xc7, 0xf6, 0x1d, 0xb6, 0x9a, 0x9b, 0x7f, 0x26, 0x49, 0xbf, 0x14, 0x89, 0xce, 0xaf, + 0x16, 0x3e, 0x1b, 0xc9, 0xce, 0x33, 0xc2, 0x55, 0x61, 0x0c, 0x05, 0x6f, 0xd5, 0x71, 0x85, 0x28, + 0x08, 0xdf, 0x7b, 0x10, 0x26, 0x6b, 0x46, 0xcd, 0xa0, 0x9c, 0x4e, 0x93, 0x5f, 0xfc, 0x9c, 0x36, + 0xe9, 0x42, 0xb3, 0x3d, 0x0f, 0x75, 0x73, 0xcb, 0x30, 0xc1, 0x91, 0xcb, 0xf4, 0xa0, 0x88, 0x2d, + 0x63, 0x50, 0xd7, 0x3d, 0xb4, 0xcc, 0x17, 0xbe, 0x4b, 0xa7, 0x6f, 0x65, 0x9c, 0x93, 0x92, 0x3a, + 0xb6, 0xd2, 0xc9, 0x29, 0x70, 0x28, 0xc0, 0x8f, 0x0d, 0x52, 0x6c, 0xf5, 0xe0, 0xf8, 0x9b, 0x9c, + 0xe3, 0x84, 0x8f, 0xe3, 0x1a, 0x27, 0xcd, 0xcd, 0xc1, 0xc8, 0x7e, 0x78, 0xfd, 0x0b, 0xce, 0x2b, + 0x85, 0xfd, 0x4c, 0xe6, 0x61, 0x8c, 0x32, 0xa9, 0x34, 0x6d, 0xc7, 0x68, 0xd0, 0x08, 0xd8, 0x9d, + 0xcd, 0x6f, 0x7d, 0x97, 0x8d, 0x9a, 0x51, 0x42, 0x36, 0xe7, 0x52, 0xe5, 0x72, 0x40, 0xcf, 0xc6, + 0xaa, 0xb8, 0x52, 0xef, 0xc1, 0xe1, 0x6b, 0x5c, 0x10, 0x17, 0x3f, 0x77, 0x19, 0x26, 0xc9, 0x6f, + 0x1a, 0xa0, 0xfc, 0x92, 0xf4, 0xde, 0x70, 0xcb, 0x7c, 0xeb, 0xbd, 0x6c, 0x60, 0x4e, 0xb8, 0x0c, + 0x7c, 0x32, 0xf9, 0x7a, 0xb1, 0x86, 0x1d, 0x07, 0x5b, 0x76, 0x59, 0xad, 0xb7, 0x13, 0xcf, 0xb7, + 0x63, 0x91, 0xf9, 0xd8, 0xf7, 0x83, 0xbd, 0x38, 0xcf, 0x28, 0xf3, 0xf5, 0x7a, 0x6e, 0x03, 0x8e, + 0xb4, 0xf1, 0x8a, 0x3e, 0x78, 0xbe, 0xc2, 0x79, 0x4e, 0xb6, 0x78, 0x06, 0x61, 0xbb, 0x0a, 0x02, + 0xee, 0xf6, 0x65, 0x1f, 0x3c, 0x3f, 0xce, 0x79, 0x22, 0x4e, 0x2b, 0xba, 0x94, 0x70, 0x7c, 0x06, + 0xc6, 0xaf, 0x60, 0x6b, 0xd3, 0xb0, 0xf9, 0x2e, 0x51, 0x1f, 0xec, 0x3e, 0xc1, 0xd9, 0x8d, 0x71, + 0x42, 0xba, 0x6d, 0x44, 0x78, 0x3d, 0x05, 0x89, 0x2d, 0xb5, 0x82, 0xfb, 0x60, 0x71, 0x83, 0xb3, + 0x18, 0x22, 0xf8, 0x84, 0x34, 0x0f, 0xa9, 0x9a, 0xc1, 0xe7, 0xa8, 0xde, 0xe4, 0x9f, 0xe4, 0xe4, + 0xc3, 0x82, 0x86, 0xb3, 0x30, 0x0d, 0xb3, 0x59, 0x27, 0x13, 0x58, 0x6f, 0x16, 0x7f, 0x4b, 0xb0, + 0x10, 0x34, 0x9c, 0xc5, 0x3e, 0xcc, 0xfa, 0xaa, 0x60, 0x61, 0xfb, 0xec, 0xf9, 0x34, 0x0c, 0x1b, + 0x7a, 0x7d, 0xcf, 0xd0, 0xfb, 0x11, 0xe2, 0x53, 0x9c, 0x03, 0x70, 0x12, 0xc2, 0xe0, 0x3c, 0x24, + 0xfb, 0xed, 0x88, 0xbf, 0xfd, 0x7d, 0x31, 0x3c, 0x44, 0x0f, 0xcc, 0xc3, 0x98, 0x08, 0x50, 0x9a, + 0xa1, 0xf7, 0xc1, 0xe2, 0xef, 0x70, 0x16, 0xa3, 0x3e, 0x32, 0xae, 0x86, 0x83, 0x6d, 0xa7, 0x86, + 0xfb, 0x61, 0xf2, 0x19, 0xa1, 0x06, 0x27, 0xe1, 0xa6, 0xdc, 0xc4, 0x7a, 0x65, 0xbb, 0x3f, 0x0e, + 0xbf, 0x22, 0x4c, 0x29, 0x68, 0x08, 0x8b, 0x39, 0x18, 0x69, 0xa8, 0x96, 0xbd, 0xad, 0xd6, 0xfb, + 0xea, 0x8e, 0xbf, 0xcb, 0x79, 0xa4, 0x5c, 0x22, 0x6e, 0x91, 0xa6, 0xbe, 0x1f, 0x36, 0x9f, 0x15, + 0x16, 0xf1, 0x91, 0xf1, 0xa1, 0x67, 0x3b, 0x74, 0x4b, 0x6d, 0x3f, 0xdc, 0x7e, 0x55, 0x0c, 0x3d, + 0x46, 0xbb, 0xe4, 0xe7, 0x78, 0x1e, 0x92, 0xb6, 0x76, 0xad, 0x2f, 0x36, 0x9f, 0x13, 0x3d, 0x4d, + 0x09, 0x08, 0xf1, 0x5b, 0xe1, 0x68, 0xdb, 0x69, 0xa2, 0x0f, 0x66, 0x7f, 0x8f, 0x33, 0x3b, 0xdc, 0x66, 0xaa, 0xe0, 0x21, 0x61, 0xbf, 0x2c, 0xff, 0xbe, 0x08, 0x09, 0x38, 0xc4, 0x6b, 0x95, 0xac, - 0x1a, 0x6c, 0x75, 0x6b, 0x7f, 0x56, 0xfb, 0x55, 0x61, 0x35, 0x46, 0x1b, 0xb0, 0xda, 0x3a, 0x1c, - 0xe6, 0x1c, 0xf7, 0xd7, 0xaf, 0x5f, 0x10, 0x81, 0x95, 0x51, 0x6f, 0x04, 0x7b, 0xf7, 0xed, 0x90, - 0x75, 0xcd, 0x29, 0xd2, 0x53, 0xbb, 0xdc, 0x50, 0xcd, 0x3e, 0x38, 0x7f, 0x91, 0x73, 0x16, 0x11, - 0xdf, 0xcd, 0x6f, 0xed, 0x25, 0xd5, 0x24, 0xcc, 0x9f, 0x85, 0x8c, 0x60, 0xde, 0xd4, 0x2d, 0x5c, - 0x31, 0x6a, 0xba, 0xf6, 0x22, 0xae, 0xf6, 0xc1, 0xfa, 0xd7, 0x42, 0x5d, 0xb5, 0xe1, 0x23, 0x27, - 0x9c, 0x17, 0x20, 0xed, 0xe6, 0x2a, 0x65, 0xad, 0x61, 0x1a, 0x96, 0xd3, 0x83, 0xe3, 0x97, 0x44, - 0x4f, 0xb9, 0x74, 0x0b, 0x94, 0x2c, 0x57, 0x02, 0x76, 0xce, 0xdc, 0xaf, 0x4b, 0x7e, 0x99, 0x33, - 0x1a, 0xf1, 0xa8, 0x78, 0xe0, 0xa8, 0x18, 0x0d, 0x53, 0xb5, 0xfa, 0x89, 0x7f, 0xff, 0x40, 0x04, - 0x0e, 0x4e, 0xc2, 0x03, 0x07, 0xc9, 0xe8, 0xc8, 0x6c, 0xdf, 0x07, 0x87, 0xaf, 0x88, 0xc0, 0x21, - 0x68, 0x38, 0x0b, 0x91, 0x30, 0xf4, 0xc1, 0xe2, 0x1f, 0x0a, 0x16, 0x82, 0x86, 0xb0, 0x78, 0xda, - 0x9b, 0x68, 0x2d, 0x5c, 0xd3, 0x6c, 0xc7, 0x62, 0x49, 0x71, 0x77, 0x56, 0xff, 0xe8, 0x07, 0xc1, - 0x24, 0x4c, 0xf1, 0x91, 0x92, 0x48, 0xc4, 0x37, 0x59, 0xe9, 0x9a, 0xa9, 0xb7, 0x60, 0xbf, 0x2e, - 0x22, 0x91, 0x8f, 0x8c, 0xc8, 0xe6, 0xcb, 0x10, 0x89, 0xd9, 0x2b, 0x64, 0xa5, 0xd0, 0x07, 0xbb, - 0x7f, 0x1c, 0x12, 0x6e, 0x4d, 0xd0, 0x12, 0x9e, 0xbe, 0xfc, 0xa7, 0xa9, 0xef, 0xe0, 0xbd, 0xbe, - 0xbc, 0xf3, 0x9f, 0x84, 0xf2, 0x9f, 0x0d, 0x46, 0xc9, 0x62, 0xc8, 0x58, 0x28, 0x9f, 0x42, 0xbd, - 0x6e, 0x15, 0x65, 0xde, 0xf3, 0x23, 0xae, 0x6f, 0x30, 0x9d, 0xca, 0x2d, 0x12, 0x27, 0x0f, 0x26, - 0x3d, 0xbd, 0x99, 0xbd, 0xef, 0x47, 0xae, 0x9f, 0x07, 0x72, 0x9e, 0xdc, 0x05, 0x18, 0x09, 0x24, - 0x3c, 0xbd, 0x59, 0xbd, 0x9f, 0xb3, 0x4a, 0xf9, 0xf3, 0x9d, 0xdc, 0x59, 0x88, 0x91, 0xe4, 0xa5, - 0x37, 0xf9, 0x5f, 0xe1, 0xe4, 0x14, 0x3d, 0xf7, 0x66, 0x48, 0x88, 0xa4, 0xa5, 0x37, 0xe9, 0x07, - 0x38, 0xa9, 0x4b, 0x42, 0xc8, 0x45, 0xc2, 0xd2, 0x9b, 0xfc, 0xaf, 0x0a, 0x72, 0x41, 0x42, 0xc8, - 0xfb, 0x37, 0xe1, 0x57, 0x7f, 0x36, 0xc6, 0x27, 0x1d, 0x61, 0xbb, 0xf3, 0x30, 0xc4, 0x33, 0x95, - 0xde, 0xd4, 0x1f, 0xe2, 0x8d, 0x0b, 0x8a, 0xdc, 0x63, 0x10, 0xef, 0xd3, 0xe0, 0x3f, 0xc7, 0x49, - 0x19, 0x7e, 0x6e, 0x0e, 0x86, 0x7d, 0xd9, 0x49, 0x6f, 0xf2, 0xbf, 0xc6, 0xc9, 0xfd, 0x54, 0x44, - 0x74, 0x9e, 0x9d, 0xf4, 0x66, 0xf0, 0xf3, 0x42, 0x74, 0x4e, 0x41, 0xcc, 0x26, 0x12, 0x93, 0xde, - 0xd4, 0x1f, 0x16, 0x56, 0x17, 0x24, 0xb9, 0x27, 0x21, 0xe9, 0x4e, 0x36, 0xbd, 0xe9, 0x3f, 0xc2, - 0xe9, 0x3d, 0x1a, 0x62, 0x01, 0xdf, 0x64, 0xd7, 0x9b, 0xc5, 0x5f, 0x17, 0x16, 0xf0, 0x51, 0x91, - 0x61, 0x14, 0x4e, 0x60, 0x7a, 0x73, 0xfa, 0xa8, 0x18, 0x46, 0xa1, 0xfc, 0x85, 0xf4, 0x26, 0x8d, - 0xf9, 0xbd, 0x59, 0xfc, 0x0d, 0xd1, 0x9b, 0x14, 0x9f, 0x88, 0x11, 0xce, 0x08, 0x7a, 0xf3, 0xf8, - 0x05, 0x21, 0x46, 0x28, 0x21, 0xc8, 0xad, 0x02, 0x6a, 0xcd, 0x06, 0x7a, 0xf3, 0xfb, 0x18, 0xe7, - 0x37, 0xde, 0x92, 0x0c, 0xe4, 0x9e, 0x81, 0xc3, 0xed, 0x33, 0x81, 0xde, 0x5c, 0x3f, 0xfe, 0xa3, - 0xd0, 0xda, 0xcd, 0x9f, 0x08, 0xe4, 0xd6, 0xbd, 0x29, 0xc5, 0x9f, 0x05, 0xf4, 0x66, 0xfb, 0xf2, - 0x8f, 0x82, 0x81, 0xdb, 0x9f, 0x04, 0xe4, 0xf2, 0x00, 0xde, 0x04, 0xdc, 0x9b, 0xd7, 0x27, 0x39, - 0x2f, 0x1f, 0x11, 0x19, 0x1a, 0x7c, 0xfe, 0xed, 0x4d, 0x7f, 0x5d, 0x0c, 0x0d, 0x4e, 0x41, 0x86, - 0x86, 0x98, 0x7a, 0x7b, 0x53, 0x7f, 0x4a, 0x0c, 0x0d, 0x41, 0x42, 0x3c, 0xdb, 0x37, 0xbb, 0xf5, - 0xe6, 0xf0, 0x69, 0xe1, 0xd9, 0x3e, 0xaa, 0xdc, 0x32, 0x8c, 0xb7, 0x4c, 0x88, 0xbd, 0x59, 0xfd, - 0x22, 0x67, 0x95, 0x0e, 0xcf, 0x87, 0xfe, 0xc9, 0x8b, 0x4f, 0x86, 0xbd, 0xb9, 0x7d, 0x26, 0x34, - 0x79, 0xf1, 0xb9, 0x30, 0x77, 0x1e, 0x12, 0x7a, 0xb3, 0x5e, 0x27, 0x83, 0x07, 0x75, 0xbf, 0x09, - 0x98, 0xf9, 0x2f, 0x3f, 0xe6, 0xd6, 0x11, 0x04, 0xb9, 0xb3, 0x10, 0xc7, 0x8d, 0x4d, 0x5c, 0xed, - 0x45, 0xf9, 0xfd, 0x1f, 0x8b, 0x80, 0x49, 0xb0, 0x73, 0x4f, 0x02, 0xb0, 0xad, 0x11, 0x7a, 0x18, - 0xd8, 0x83, 0xf6, 0xbf, 0xfe, 0x98, 0x5f, 0xbd, 0xf1, 0x48, 0x3c, 0x06, 0xec, 0x22, 0x4f, 0x77, - 0x06, 0x3f, 0x08, 0x32, 0xa0, 0x3d, 0xf2, 0x04, 0x0c, 0x3d, 0x6f, 0x1b, 0xba, 0xa3, 0xd6, 0x7a, - 0x51, 0xff, 0x37, 0x4e, 0x2d, 0xf0, 0x89, 0xc1, 0x1a, 0x86, 0x85, 0x1d, 0xb5, 0x66, 0xf7, 0xa2, - 0xfd, 0xef, 0x9c, 0xd6, 0x25, 0x20, 0xc4, 0x15, 0xd5, 0x76, 0xfa, 0xd1, 0xfb, 0x8f, 0x04, 0xb1, - 0x20, 0x20, 0x42, 0x93, 0xdf, 0x3b, 0x78, 0xaf, 0x17, 0xed, 0x0f, 0x85, 0xd0, 0x1c, 0x3f, 0xf7, - 0x66, 0x48, 0x92, 0x9f, 0xec, 0x3e, 0x5d, 0x0f, 0xe2, 0x3f, 0xe6, 0xc4, 0x1e, 0x05, 0x69, 0xd9, - 0x76, 0xaa, 0x8e, 0xd6, 0xdb, 0xd8, 0x37, 0x79, 0x4f, 0x0b, 0xfc, 0x5c, 0x1e, 0x86, 0x6d, 0xa7, - 0x5a, 0x6d, 0xf2, 0xfc, 0xb4, 0x07, 0xf9, 0x9f, 0xfc, 0xd8, 0xdd, 0xb2, 0x70, 0x69, 0x48, 0x6f, - 0x5f, 0xdd, 0x71, 0x4c, 0x83, 0x1e, 0x78, 0xf4, 0xe2, 0xf0, 0x23, 0xce, 0xc1, 0x47, 0x92, 0x9b, - 0x83, 0x14, 0xd1, 0xc5, 0xc2, 0x26, 0xa6, 0xa7, 0x53, 0x3d, 0x58, 0xfc, 0x0f, 0x6e, 0x80, 0x00, - 0x51, 0xe1, 0x67, 0xbe, 0xfe, 0xea, 0x94, 0xf4, 0xad, 0x57, 0xa7, 0xa4, 0x3f, 0x78, 0x75, 0x4a, - 0xfa, 0xf0, 0x77, 0xa7, 0x06, 0xbe, 0xf5, 0xdd, 0xa9, 0x81, 0xdf, 0xfd, 0xee, 0xd4, 0x40, 0xfb, - 0x5d, 0x62, 0x98, 0x37, 0xe6, 0x0d, 0xb6, 0x3f, 0xfc, 0x9c, 0x5c, 0xd3, 0x9c, 0xed, 0xe6, 0xe6, - 0x6c, 0xc5, 0x68, 0xd0, 0x6d, 0x5c, 0x6f, 0xb7, 0xd6, 0x5d, 0xe4, 0xc0, 0x7b, 0xa3, 0x70, 0xb4, - 0x62, 0xd8, 0x0d, 0xc3, 0x2e, 0xb3, 0xfd, 0x5e, 0x56, 0xe0, 0x3b, 0xbe, 0x29, 0x7f, 0x55, 0x1f, - 0x9b, 0xbe, 0x17, 0x61, 0x94, 0xaa, 0x4e, 0xb7, 0xbb, 0xa8, 0xb7, 0xf5, 0x0c, 0x10, 0xdf, 0xf8, - 0x77, 0x71, 0xaa, 0xf5, 0x88, 0x4b, 0x48, 0x4f, 0xef, 0xd7, 0x61, 0x52, 0x6b, 0x98, 0x75, 0x4c, - 0xb7, 0xf9, 0xcb, 0x6e, 0x5d, 0x6f, 0x7e, 0xdf, 0xe4, 0xfc, 0x26, 0x3c, 0xf2, 0x05, 0x41, 0x9d, - 0x5b, 0x84, 0x71, 0xb5, 0x52, 0xc1, 0x66, 0x80, 0x65, 0x8f, 0x6e, 0x11, 0x02, 0xa6, 0x39, 0xa5, - 0xcb, 0xad, 0xf0, 0x64, 0xa7, 0xae, 0x79, 0xee, 0x6e, 0x9f, 0xe5, 0x2d, 0x5c, 0xc3, 0xfa, 0x83, - 0x3a, 0x76, 0xae, 0x1a, 0xd6, 0x0e, 0x37, 0xef, 0x83, 0xac, 0xa9, 0x41, 0x76, 0x83, 0x19, 0xde, - 0x1f, 0x85, 0x29, 0x56, 0x71, 0x7a, 0x53, 0xb5, 0xf1, 0xe9, 0x2b, 0x0f, 0x6f, 0x62, 0x47, 0x7d, - 0xf8, 0x74, 0xc5, 0xd0, 0x74, 0xde, 0x13, 0x13, 0xbc, 0x5f, 0x48, 0xfd, 0x2c, 0xaf, 0xcf, 0xb6, - 0xdd, 0xa6, 0x97, 0xe7, 0x21, 0x36, 0x67, 0x68, 0x3a, 0x9a, 0x84, 0x78, 0x15, 0xeb, 0x46, 0x83, - 0xdf, 0xb9, 0x63, 0x05, 0x74, 0x27, 0x0c, 0xaa, 0x0d, 0xa3, 0xa9, 0x3b, 0xec, 0x84, 0xa2, 0x30, - 0xfc, 0xf5, 0x1b, 0xd3, 0x03, 0xbf, 0x77, 0x63, 0x3a, 0xba, 0xa0, 0x3b, 0x0a, 0xaf, 0xca, 0xc5, - 0x5e, 0x7b, 0x65, 0x5a, 0x92, 0x9f, 0x82, 0xa1, 0x22, 0xae, 0x1c, 0x84, 0x57, 0x11, 0x57, 0x42, - 0xbc, 0xee, 0x83, 0xc4, 0x82, 0xee, 0xb0, 0x5b, 0x91, 0x27, 0x20, 0xaa, 0xe9, 0xec, 0xa2, 0x4d, - 0xa8, 0x7d, 0x02, 0x27, 0xa8, 0x45, 0x5c, 0x71, 0x51, 0xab, 0xb8, 0x12, 0x46, 0x25, 0xec, 0x09, - 0xbc, 0x50, 0xfc, 0xdd, 0xff, 0x34, 0x35, 0xf0, 0xd2, 0xab, 0x53, 0x03, 0x1d, 0x7b, 0xc2, 0x3f, - 0x06, 0xb8, 0x89, 0x79, 0x17, 0xd8, 0xd5, 0x1d, 0x76, 0x46, 0xe2, 0x76, 0xc3, 0x6f, 0x0d, 0x82, - 0xcc, 0x71, 0x6c, 0x47, 0xdd, 0xd1, 0xf4, 0x9a, 0xdb, 0x13, 0x6a, 0xd3, 0xd9, 0x7e, 0x91, 0x77, - 0xc5, 0x61, 0xde, 0x15, 0x1c, 0xa7, 0x7b, 0x6f, 0x64, 0x3b, 0x8f, 0xae, 0x6c, 0x8f, 0x3e, 0x97, - 0xff, 0x75, 0x14, 0xd0, 0x9a, 0xa3, 0xee, 0xe0, 0x7c, 0xd3, 0xd9, 0x36, 0x2c, 0xed, 0x45, 0x16, - 0xcb, 0x30, 0x40, 0x43, 0xdd, 0x2d, 0x3b, 0xc6, 0x0e, 0xd6, 0x6d, 0x6a, 0x9a, 0xe1, 0x33, 0x47, - 0x67, 0xdb, 0xf8, 0xc7, 0x2c, 0xe9, 0xba, 0xc2, 0xfd, 0x9f, 0xfb, 0xce, 0xf4, 0xbd, 0xbd, 0xad, - 0x40, 0x91, 0x49, 0x72, 0xbd, 0xbb, 0x4e, 0x19, 0xa3, 0xcb, 0xc0, 0x2e, 0x59, 0x94, 0xeb, 0x9a, - 0xed, 0xf0, 0x7b, 0xda, 0x67, 0x67, 0xdb, 0xeb, 0x3e, 0xdb, 0x2a, 0xe6, 0xec, 0x65, 0xb5, 0xae, - 0x55, 0x55, 0xc7, 0xb0, 0xec, 0x8b, 0x03, 0x4a, 0x92, 0xb2, 0x5a, 0xd4, 0x6c, 0x07, 0xad, 0x43, - 0xb2, 0x8a, 0xf5, 0x3d, 0xc6, 0x36, 0xfa, 0xfa, 0xd8, 0x26, 0x08, 0x27, 0xca, 0xf5, 0x59, 0x40, - 0xaa, 0x1f, 0x4f, 0x3c, 0x4c, 0x62, 0xf7, 0x2b, 0x3b, 0xb0, 0x0f, 0x70, 0xa6, 0xef, 0x28, 0xc6, - 0xd5, 0x30, 0x28, 0x7b, 0x0f, 0x80, 0xd7, 0x26, 0xca, 0xc0, 0x90, 0x5a, 0xad, 0x5a, 0xd8, 0xb6, - 0xe9, 0x01, 0x60, 0x52, 0x11, 0xc5, 0xdc, 0xf8, 0xbf, 0xf9, 0xf2, 0x83, 0x23, 0x01, 0x8e, 0x85, - 0x14, 0xc0, 0x15, 0x97, 0xf4, 0xd4, 0xa7, 0x24, 0x18, 0x6f, 0x69, 0x11, 0xc9, 0x30, 0x95, 0xdf, - 0x58, 0xbf, 0xb8, 0xa2, 0x2c, 0x3c, 0x97, 0x5f, 0x5f, 0x58, 0x59, 0x2e, 0xb3, 0x2b, 0xff, 0xcb, - 0x6b, 0xab, 0xa5, 0xb9, 0x85, 0x0b, 0x0b, 0xa5, 0x62, 0x7a, 0x00, 0x4d, 0xc3, 0xb1, 0x36, 0x38, - 0xc5, 0xd2, 0x62, 0x69, 0x3e, 0xbf, 0x5e, 0x4a, 0x4b, 0xe8, 0x0e, 0x38, 0xd1, 0x96, 0x89, 0x8b, - 0x12, 0xe9, 0x80, 0xa2, 0x94, 0x5c, 0x94, 0x68, 0xe1, 0x42, 0xc7, 0x51, 0xf4, 0x40, 0x57, 0xff, - 0xd9, 0x75, 0x87, 0x4b, 0x70, 0x3c, 0xbd, 0x27, 0x02, 0x47, 0xc3, 0x53, 0x86, 0xaa, 0xef, 0x75, - 0x78, 0xf5, 0xd9, 0x21, 0x9a, 0x5d, 0x84, 0x68, 0x5e, 0xdf, 0x43, 0x47, 0x59, 0x3e, 0x5d, 0x6e, - 0x5a, 0x75, 0x1e, 0x83, 0x86, 0x48, 0x79, 0xc3, 0xaa, 0x93, 0xd8, 0x24, 0x2e, 0xfa, 0x4b, 0x27, - 0x53, 0xfc, 0xf6, 0x7e, 0x2e, 0xfd, 0xb1, 0x57, 0xa6, 0x07, 0xbe, 0xf0, 0xca, 0xf4, 0xc0, 0x0f, - 0x3f, 0x3d, 0x3d, 0xf0, 0xd2, 0xef, 0xcf, 0x0c, 0x14, 0x76, 0xc2, 0xea, 0x7d, 0xb5, 0xe7, 0x6c, - 0x9a, 0xc8, 0xeb, 0x7b, 0x34, 0x10, 0xad, 0x4a, 0xcf, 0xc5, 0xa9, 0x72, 0xe2, 0x00, 0x75, 0x2a, - 0x7c, 0x80, 0xfa, 0x0c, 0xae, 0xd7, 0x2f, 0xe9, 0xc6, 0x55, 0xda, 0xab, 0x9e, 0x0d, 0x3e, 0x1a, - 0x81, 0xa9, 0x96, 0x69, 0x93, 0x67, 0x18, 0x9d, 0x9e, 0xbf, 0xe6, 0x20, 0x51, 0x14, 0x89, 0x4b, - 0x06, 0x86, 0x6c, 0x5c, 0x31, 0xf4, 0x2a, 0x1b, 0xe9, 0x51, 0x45, 0x14, 0x89, 0xda, 0xba, 0xaa, - 0x1b, 0x36, 0xbf, 0x73, 0xcf, 0x0a, 0x85, 0x4f, 0x48, 0xfb, 0xcb, 0x17, 0x46, 0x44, 0x4b, 0x42, - 0xcd, 0x87, 0x7b, 0x1e, 0x29, 0xef, 0x10, 0x2d, 0x5d, 0x25, 0x02, 0xc7, 0xca, 0xfd, 0x5a, 0xe5, - 0x17, 0x22, 0x30, 0x1d, 0xb6, 0x0a, 0x49, 0xdb, 0x6c, 0x47, 0x6d, 0x98, 0x9d, 0xcc, 0x72, 0x1e, - 0x92, 0xeb, 0x02, 0x67, 0xdf, 0x76, 0xb9, 0xbe, 0x4f, 0xbb, 0x8c, 0xba, 0x4d, 0x09, 0xc3, 0x9c, - 0xe9, 0xd3, 0x30, 0xae, 0x1e, 0x07, 0xb2, 0xcc, 0xe7, 0x62, 0x70, 0x82, 0x3e, 0xca, 0xb2, 0x1a, - 0x9a, 0xee, 0x9c, 0xae, 0x58, 0x7b, 0xa6, 0x43, 0x13, 0x37, 0x63, 0x8b, 0xdb, 0x65, 0xdc, 0xab, - 0x9e, 0x65, 0xd5, 0x1d, 0x46, 0xce, 0x16, 0xc4, 0x57, 0x09, 0x1d, 0xb1, 0x88, 0x63, 0x38, 0x6a, - 0x9d, 0x5b, 0x8a, 0x15, 0x08, 0x94, 0x3d, 0xe4, 0x8a, 0x30, 0xa8, 0x26, 0xde, 0x70, 0xd5, 0xb1, - 0xba, 0xc5, 0xee, 0xc3, 0x47, 0xe9, 0x80, 0x4a, 0x10, 0x00, 0xbd, 0xfa, 0x3e, 0x09, 0x71, 0xb5, - 0xc9, 0xae, 0x72, 0x44, 0xc9, 0x48, 0xa3, 0x05, 0xf9, 0x12, 0x0c, 0xf1, 0x03, 0x65, 0x94, 0x86, - 0xe8, 0x0e, 0xde, 0xa3, 0xed, 0xa4, 0x14, 0xf2, 0x13, 0xcd, 0x42, 0x9c, 0x0a, 0xcf, 0x27, 0x90, - 0xcc, 0x6c, 0x8b, 0xf4, 0xb3, 0x54, 0x48, 0x85, 0xa1, 0xc9, 0x4f, 0x41, 0xa2, 0x68, 0x34, 0x34, - 0xdd, 0x08, 0x72, 0x4b, 0x32, 0x6e, 0x54, 0x66, 0xb3, 0xc9, 0xf3, 0x0d, 0x85, 0x15, 0xd0, 0x61, - 0x18, 0x64, 0xef, 0x23, 0xf8, 0x75, 0x14, 0x5e, 0x92, 0xe7, 0x60, 0x88, 0xf2, 0x5e, 0x31, 0x11, - 0xe2, 0x2f, 0xeb, 0xf8, 0x43, 0x0c, 0x9a, 0x9a, 0x72, 0xf6, 0x11, 0x4f, 0x58, 0x04, 0xb1, 0xaa, - 0xea, 0xa8, 0x5c, 0x6f, 0xfa, 0x5b, 0x7e, 0x0b, 0x24, 0x38, 0x13, 0x1b, 0x9d, 0x81, 0xa8, 0x61, - 0xda, 0xfc, 0x42, 0x49, 0xb6, 0x93, 0x2a, 0x2b, 0x66, 0x21, 0x46, 0x32, 0x15, 0x85, 0x20, 0x17, - 0x94, 0x8e, 0x41, 0xf5, 0x71, 0x5f, 0x50, 0xf5, 0x75, 0xb9, 0xef, 0x27, 0xeb, 0xd2, 0x16, 0x77, - 0x70, 0x9d, 0xe5, 0xd3, 0x11, 0x98, 0xf2, 0xd5, 0x5e, 0xc1, 0x96, 0xad, 0x19, 0x3a, 0x9f, 0xcf, - 0x99, 0xb7, 0x20, 0x9f, 0x90, 0xbc, 0xbe, 0x83, 0xbb, 0xbc, 0x19, 0xa2, 0x79, 0xd3, 0x44, 0x59, - 0x48, 0xd0, 0x72, 0xc5, 0x60, 0xfe, 0x12, 0x53, 0xdc, 0x32, 0xa9, 0xb3, 0x8d, 0x2d, 0xe7, 0xaa, - 0x6a, 0xb9, 0x4f, 0x08, 0x45, 0x59, 0x7e, 0x02, 0x92, 0x73, 0x86, 0x6e, 0x63, 0xdd, 0x6e, 0xd2, - 0x31, 0xb8, 0x59, 0x37, 0x2a, 0x3b, 0x9c, 0x03, 0x2b, 0x10, 0x83, 0xab, 0xa6, 0x49, 0x29, 0x63, - 0x0a, 0xf9, 0xc9, 0x72, 0xc3, 0xc2, 0x5a, 0x47, 0x13, 0x3d, 0xb1, 0x7f, 0x13, 0x71, 0x25, 0x5d, - 0x1b, 0xfd, 0x1f, 0x09, 0x8e, 0xb7, 0x0e, 0xa8, 0x1d, 0xbc, 0x67, 0xef, 0x77, 0x3c, 0x3d, 0x0b, - 0xc9, 0x55, 0xfa, 0x8e, 0xff, 0x12, 0xde, 0x43, 0x59, 0x18, 0xc2, 0xd5, 0x33, 0x67, 0xcf, 0x3e, - 0xfc, 0x04, 0xf3, 0xf6, 0x8b, 0x03, 0x8a, 0x00, 0xa0, 0x29, 0x48, 0xda, 0xb8, 0x62, 0x9e, 0x39, - 0x7b, 0x6e, 0xe7, 0x61, 0xe6, 0x5e, 0x24, 0x03, 0x72, 0x41, 0xb9, 0x04, 0xd1, 0xfa, 0xb5, 0x4f, - 0x4f, 0x4b, 0x85, 0x38, 0x44, 0xed, 0x66, 0xe3, 0xb6, 0xfa, 0xc8, 0xcb, 0x71, 0x98, 0xf1, 0x53, - 0xd2, 0x48, 0xe5, 0x66, 0x25, 0xdc, 0x06, 0x69, 0x9f, 0x0d, 0x28, 0x46, 0x87, 0x64, 0xb6, 0xab, - 0x25, 0xe5, 0x5f, 0x93, 0x20, 0xe5, 0xa6, 0x4a, 0x6b, 0xd8, 0x41, 0xe7, 0xfd, 0xf9, 0x0f, 0x1f, - 0x36, 0xc7, 0x66, 0xc3, 0x6d, 0x79, 0x29, 0x9d, 0xe2, 0x43, 0x47, 0x8f, 0x51, 0x47, 0x34, 0x0d, - 0x9b, 0x3f, 0x2b, 0xeb, 0x41, 0xea, 0x22, 0xa3, 0x07, 0x00, 0xd1, 0x08, 0x57, 0xbe, 0x62, 0x38, - 0x9a, 0x5e, 0x2b, 0x9b, 0xc6, 0x55, 0xfe, 0x58, 0x37, 0xaa, 0xa4, 0x69, 0xcd, 0x65, 0x5a, 0xb1, - 0x4a, 0xe0, 0x44, 0xe8, 0xa4, 0xcb, 0x25, 0x98, 0xde, 0x91, 0x20, 0x20, 0x8a, 0xe8, 0x3c, 0x0c, - 0x99, 0xcd, 0xcd, 0xb2, 0x88, 0x18, 0xc3, 0x67, 0x8e, 0xb7, 0x1b, 0xff, 0xc2, 0x3f, 0x78, 0x04, - 0x18, 0x34, 0x9b, 0x9b, 0xc4, 0x5b, 0xee, 0x80, 0x54, 0x1b, 0x61, 0x86, 0xaf, 0x78, 0x72, 0xd0, - 0xcf, 0x47, 0x70, 0x0d, 0xca, 0xa6, 0xa5, 0x19, 0x96, 0xe6, 0xec, 0xd1, 0xfc, 0x35, 0xaa, 0xa4, - 0x45, 0xc5, 0x2a, 0x87, 0xcb, 0x3b, 0x30, 0xb6, 0x46, 0xd7, 0xb7, 0x9e, 0xe4, 0x67, 0x3d, 0xf9, - 0xa4, 0xde, 0xf2, 0x75, 0x94, 0x2c, 0xd2, 0x22, 0x59, 0xe1, 0xe9, 0x8e, 0xde, 0xf9, 0xd8, 0xfe, - 0xbd, 0x33, 0x98, 0x21, 0xfe, 0xd1, 0xd1, 0xc0, 0xe0, 0x64, 0xce, 0xe9, 0x0f, 0x5f, 0xfd, 0x3a, - 0x66, 0xaf, 0x6c, 0x22, 0xdb, 0x7d, 0x52, 0xcd, 0xf6, 0x08, 0xa3, 0xd9, 0x9e, 0x43, 0x48, 0x7e, - 0x02, 0x46, 0x56, 0x55, 0xcb, 0x59, 0xc3, 0xce, 0x45, 0xac, 0x56, 0xb1, 0x15, 0x9c, 0x75, 0x47, - 0xc4, 0xac, 0x8b, 0x20, 0x46, 0xa7, 0x56, 0x36, 0xeb, 0xd0, 0xdf, 0xf2, 0x36, 0xc4, 0xe8, 0xcd, - 0x50, 0x77, 0x46, 0xe6, 0x14, 0x6c, 0x46, 0x26, 0xb1, 0x74, 0xcf, 0xc1, 0xb6, 0x48, 0x6f, 0x69, - 0x01, 0x3d, 0x2a, 0xe6, 0xd5, 0x68, 0xf7, 0x79, 0x95, 0x3b, 0x22, 0x9f, 0x5d, 0xeb, 0x30, 0x54, - 0x20, 0xa1, 0x78, 0xa1, 0xe8, 0x0a, 0x22, 0x79, 0x82, 0xa0, 0x25, 0x18, 0x33, 0x55, 0xcb, 0xa1, - 0x4f, 0x62, 0xb6, 0xa9, 0x16, 0xdc, 0xd7, 0xa7, 0x5b, 0x47, 0x5e, 0x40, 0x59, 0xde, 0xca, 0x88, - 0xe9, 0x07, 0xca, 0x7f, 0x18, 0x83, 0x41, 0x6e, 0x8c, 0x37, 0xc3, 0x10, 0x37, 0x2b, 0xf7, 0xce, - 0x13, 0xb3, 0xad, 0x13, 0xd3, 0xac, 0x3b, 0x81, 0x70, 0x7e, 0x82, 0x06, 0xdd, 0x03, 0x89, 0xca, - 0xb6, 0xaa, 0xe9, 0x65, 0xad, 0x2a, 0xb6, 0x1a, 0x5e, 0xbd, 0x31, 0x3d, 0x34, 0x47, 0x60, 0x0b, - 0x45, 0x65, 0x88, 0x56, 0x2e, 0x54, 0x49, 0x26, 0xb0, 0x8d, 0xb5, 0xda, 0xb6, 0xc3, 0x47, 0x18, - 0x2f, 0xa1, 0xc7, 0x21, 0x46, 0x1c, 0x82, 0x3f, 0x98, 0xcc, 0xb6, 0x6c, 0xf8, 0xb8, 0xc9, 0x5e, - 0x21, 0x41, 0x1a, 0xfe, 0xf0, 0x77, 0xa6, 0x25, 0x85, 0x52, 0xa0, 0x39, 0x18, 0xa9, 0xab, 0xb6, - 0x53, 0xa6, 0x33, 0x18, 0x69, 0x3e, 0xce, 0xd7, 0xdb, 0x2d, 0x06, 0xe1, 0x86, 0xe5, 0xa2, 0x0f, - 0x13, 0x2a, 0x06, 0xaa, 0xa2, 0x93, 0x90, 0xa6, 0x4c, 0x2a, 0x46, 0xa3, 0xa1, 0x39, 0x2c, 0xb7, - 0x1a, 0xa4, 0x76, 0x1f, 0x25, 0xf0, 0x39, 0x0a, 0xa6, 0x19, 0xd6, 0x31, 0x48, 0xd2, 0x27, 0x5a, - 0x14, 0x85, 0x5d, 0x47, 0x4e, 0x10, 0x00, 0xad, 0xbc, 0x17, 0xc6, 0xbc, 0xf8, 0xc8, 0x50, 0x12, - 0x8c, 0x8b, 0x07, 0xa6, 0x88, 0x0f, 0xc1, 0xa4, 0x8e, 0x77, 0xe9, 0x05, 0xe9, 0x00, 0x76, 0x92, - 0x62, 0x23, 0x52, 0x77, 0x39, 0x48, 0x71, 0x37, 0x8c, 0x56, 0x84, 0xf1, 0x19, 0x2e, 0x50, 0xdc, - 0x11, 0x17, 0x4a, 0xd1, 0x8e, 0x42, 0x42, 0x35, 0x4d, 0x86, 0x30, 0xcc, 0xe3, 0xa3, 0x69, 0xd2, - 0xaa, 0x53, 0x30, 0x4e, 0x75, 0xb4, 0xb0, 0xdd, 0xac, 0x3b, 0x9c, 0x49, 0x8a, 0xe2, 0x8c, 0x91, - 0x0a, 0x85, 0xc1, 0x29, 0xee, 0x9d, 0x30, 0x82, 0xaf, 0x68, 0x55, 0xac, 0x57, 0x30, 0xc3, 0x1b, - 0xa1, 0x78, 0x29, 0x01, 0xa4, 0x48, 0xf7, 0x81, 0x1b, 0xf7, 0xca, 0x22, 0x26, 0x8f, 0x32, 0x7e, - 0x02, 0x9e, 0x67, 0x60, 0x39, 0x03, 0xb1, 0xa2, 0xea, 0xa8, 0x24, 0xc1, 0x70, 0x76, 0xd9, 0x44, - 0x93, 0x52, 0xc8, 0x4f, 0xf9, 0xb5, 0x08, 0xc4, 0x2e, 0x1b, 0x0e, 0x46, 0x8f, 0xf8, 0x12, 0xc0, - 0xd1, 0x76, 0xfe, 0xbc, 0xa6, 0xd5, 0x74, 0x5c, 0x5d, 0xb2, 0x6b, 0xbe, 0xef, 0x29, 0x78, 0xee, - 0x14, 0x09, 0xb8, 0xd3, 0x24, 0xc4, 0x2d, 0xa3, 0xa9, 0x57, 0xc5, 0x4d, 0x5e, 0x5a, 0x40, 0x25, - 0x48, 0xb8, 0x5e, 0x12, 0xeb, 0xe5, 0x25, 0x63, 0xc4, 0x4b, 0x88, 0x0f, 0x73, 0x80, 0x32, 0xb4, - 0xc9, 0x9d, 0xa5, 0x00, 0x49, 0x37, 0x78, 0x71, 0x6f, 0xeb, 0xcf, 0x61, 0x3d, 0x32, 0x32, 0x99, - 0xb8, 0x7d, 0xef, 0x1a, 0x8f, 0x79, 0x5c, 0xda, 0xad, 0xe0, 0xd6, 0x0b, 0xb8, 0x15, 0xff, 0xb6, - 0xc3, 0x10, 0xd5, 0xcb, 0x73, 0x2b, 0xf6, 0x7d, 0x87, 0xe3, 0x90, 0xb4, 0xb5, 0x9a, 0xae, 0x3a, - 0x4d, 0x0b, 0x73, 0xcf, 0xf3, 0x00, 0xf2, 0x57, 0x25, 0x18, 0x64, 0x9e, 0xec, 0xb3, 0x9b, 0xd4, - 0xde, 0x6e, 0x91, 0x4e, 0x76, 0x8b, 0x1e, 0xdc, 0x6e, 0x79, 0x00, 0x57, 0x18, 0x9b, 0x3f, 0xb9, - 0x6f, 0x93, 0x31, 0x30, 0x11, 0xd7, 0xb4, 0x1a, 0x1f, 0xa8, 0x3e, 0x22, 0xf9, 0x3f, 0x4a, 0x24, - 0x89, 0xe5, 0xf5, 0x28, 0x0f, 0x23, 0x42, 0xae, 0xf2, 0x56, 0x5d, 0xad, 0x71, 0xdf, 0x39, 0xd1, - 0x51, 0xb8, 0x0b, 0x75, 0xb5, 0xa6, 0x0c, 0x73, 0x79, 0x48, 0xa1, 0x7d, 0x3f, 0x44, 0x3a, 0xf4, - 0x43, 0xa0, 0xe3, 0xa3, 0x07, 0xeb, 0xf8, 0x40, 0x17, 0xc5, 0xc2, 0x5d, 0xf4, 0xa5, 0x08, 0x5d, - 0xcc, 0x98, 0x86, 0xad, 0xd6, 0x7f, 0x12, 0x23, 0xe2, 0x18, 0x24, 0x4d, 0xa3, 0x5e, 0x66, 0x35, - 0xec, 0x86, 0x7b, 0xc2, 0x34, 0xea, 0x4a, 0x4b, 0xb7, 0xc7, 0x6f, 0xd1, 0x70, 0x19, 0xbc, 0x05, - 0x56, 0x1b, 0x0a, 0x5b, 0xcd, 0x82, 0x14, 0x33, 0x05, 0x9f, 0xcb, 0x1e, 0x22, 0x36, 0xa0, 0x93, - 0xa3, 0xd4, 0x3a, 0xf7, 0x32, 0xb1, 0x19, 0xa6, 0xc2, 0xf1, 0x08, 0x05, 0x0b, 0xfd, 0xed, 0x56, - 0xc1, 0x7e, 0xb7, 0x54, 0x38, 0x9e, 0xfc, 0x37, 0x25, 0x80, 0x45, 0x62, 0x59, 0xaa, 0x2f, 0x99, - 0x85, 0x6c, 0x2a, 0x42, 0x39, 0xd0, 0xf2, 0x54, 0xa7, 0x4e, 0xe3, 0xed, 0xa7, 0x6c, 0xbf, 0xdc, - 0x73, 0x30, 0xe2, 0x39, 0xa3, 0x8d, 0x85, 0x30, 0x53, 0x5d, 0xb2, 0xea, 0x35, 0xec, 0x28, 0xa9, - 0x2b, 0xbe, 0x92, 0xfc, 0xcf, 0x25, 0x48, 0x52, 0x99, 0x96, 0xb0, 0xa3, 0x06, 0xfa, 0x50, 0x3a, - 0x78, 0x1f, 0x9e, 0x00, 0x60, 0x6c, 0x6c, 0xed, 0x45, 0xcc, 0x3d, 0x2b, 0x49, 0x21, 0x6b, 0xda, - 0x8b, 0x18, 0x9d, 0x73, 0x0d, 0x1e, 0xed, 0x6e, 0x70, 0x91, 0x75, 0x73, 0xb3, 0x1f, 0x81, 0x21, - 0xfa, 0x89, 0xaa, 0x5d, 0x9b, 0x27, 0xd2, 0x83, 0x7a, 0xb3, 0xb1, 0xbe, 0x6b, 0xcb, 0xcf, 0xc3, - 0xd0, 0xfa, 0x2e, 0xdb, 0x1b, 0x39, 0x06, 0x49, 0xcb, 0x30, 0xf8, 0x9c, 0xcc, 0x72, 0xa1, 0x04, - 0x01, 0xd0, 0x29, 0x48, 0xec, 0x07, 0x44, 0xbc, 0xfd, 0x00, 0x6f, 0x43, 0x23, 0xda, 0xd7, 0x86, - 0xc6, 0xa9, 0x7f, 0x2f, 0xc1, 0xb0, 0x2f, 0x3e, 0xa0, 0x87, 0xe1, 0x50, 0x61, 0x71, 0x65, 0xee, - 0x52, 0x79, 0xa1, 0x58, 0xbe, 0xb0, 0x98, 0x9f, 0xf7, 0xde, 0x70, 0x65, 0x0f, 0x5f, 0xbb, 0x3e, - 0x83, 0x7c, 0xb8, 0x1b, 0x3a, 0xdd, 0x51, 0x42, 0xa7, 0x61, 0x32, 0x48, 0x92, 0x2f, 0xac, 0x95, - 0x96, 0xd7, 0xd3, 0x52, 0xf6, 0xd0, 0xb5, 0xeb, 0x33, 0xe3, 0x3e, 0x8a, 0xfc, 0xa6, 0x8d, 0x75, - 0xa7, 0x95, 0x60, 0x6e, 0x65, 0x69, 0x69, 0x61, 0x3d, 0x1d, 0x69, 0x21, 0xe0, 0x01, 0xfb, 0x3e, - 0x18, 0x0f, 0x12, 0x2c, 0x2f, 0x2c, 0xa6, 0xa3, 0x59, 0x74, 0xed, 0xfa, 0xcc, 0xa8, 0x0f, 0x7b, - 0x59, 0xab, 0x67, 0x13, 0x1f, 0xfc, 0xcc, 0xd4, 0xc0, 0x2f, 0xff, 0xd2, 0x94, 0x44, 0x34, 0x1b, - 0x09, 0xc4, 0x08, 0xf4, 0x00, 0x1c, 0x59, 0x5b, 0x98, 0x5f, 0x2e, 0x15, 0xcb, 0x4b, 0x6b, 0xf3, - 0x62, 0x0f, 0x5a, 0x68, 0x37, 0x76, 0xed, 0xfa, 0xcc, 0x30, 0x57, 0xa9, 0x13, 0xf6, 0xaa, 0x52, - 0xba, 0xbc, 0xb2, 0x5e, 0x4a, 0x4b, 0x0c, 0x7b, 0xd5, 0xc2, 0x57, 0x0c, 0x87, 0x7d, 0xc3, 0xee, - 0x21, 0x38, 0xda, 0x06, 0xdb, 0x55, 0x6c, 0xfc, 0xda, 0xf5, 0x99, 0x91, 0x55, 0x0b, 0xb3, 0xf1, - 0x43, 0x29, 0x66, 0x21, 0xd3, 0x4a, 0xb1, 0xb2, 0xba, 0xb2, 0x96, 0x5f, 0x4c, 0xcf, 0x64, 0xd3, - 0xd7, 0xae, 0xcf, 0xa4, 0x44, 0x30, 0xa4, 0x1b, 0xfd, 0xae, 0x66, 0xb7, 0x73, 0xc5, 0xf3, 0x27, - 0x0f, 0xc2, 0x5d, 0x1d, 0xce, 0x98, 0xc4, 0xe9, 0xc4, 0x81, 0x4e, 0x99, 0x3a, 0xee, 0xb3, 0x67, - 0x7b, 0x6c, 0x3f, 0xf7, 0x5e, 0x3a, 0x1d, 0xfc, 0x04, 0x2b, 0xdb, 0x75, 0x71, 0x27, 0x7f, 0x48, - 0x82, 0xd1, 0x8b, 0x9a, 0xed, 0x18, 0x96, 0x56, 0x51, 0xeb, 0xf4, 0xe5, 0xd6, 0xb9, 0x7e, 0x63, - 0x6b, 0x68, 0xa8, 0x3f, 0x09, 0x83, 0x57, 0xd4, 0x3a, 0x0b, 0x6a, 0x51, 0xfa, 0xa1, 0x99, 0x0e, - 0x47, 0x3e, 0x6e, 0x68, 0x13, 0x0c, 0x18, 0x99, 0xfc, 0xab, 0x11, 0x18, 0xa3, 0x83, 0xc1, 0x66, - 0x9f, 0x20, 0x23, 0x6b, 0xac, 0x02, 0xc4, 0x2c, 0xd5, 0xe1, 0x9b, 0x86, 0x85, 0x59, 0x7e, 0xfa, - 0x78, 0x4f, 0x1f, 0x67, 0x69, 0x45, 0x5c, 0x51, 0x28, 0x2d, 0x7a, 0x07, 0x24, 0x1a, 0xea, 0x6e, - 0x99, 0xf2, 0x61, 0x2b, 0x97, 0xfc, 0xfe, 0xf8, 0xdc, 0xbc, 0x31, 0x3d, 0xb6, 0xa7, 0x36, 0xea, - 0x39, 0x59, 0xf0, 0x91, 0x95, 0xa1, 0x86, 0xba, 0x4b, 0x44, 0x44, 0x26, 0x8c, 0x11, 0x68, 0x65, - 0x5b, 0xd5, 0x6b, 0x98, 0x35, 0x42, 0xb7, 0x40, 0x0b, 0x17, 0xf7, 0xdd, 0xc8, 0x61, 0xaf, 0x11, - 0x1f, 0x3b, 0x59, 0x19, 0x69, 0xa8, 0xbb, 0x73, 0x14, 0x40, 0x5a, 0xcc, 0x25, 0x3e, 0xf6, 0xca, - 0xf4, 0x00, 0x3d, 0xd1, 0xfd, 0xb6, 0x04, 0xe0, 0x59, 0x0c, 0xbd, 0x03, 0xd2, 0x15, 0xb7, 0x44, - 0x69, 0xc5, 0xd9, 0xe4, 0xbd, 0x9d, 0xfa, 0x22, 0x64, 0x6f, 0x36, 0x37, 0x7f, 0xeb, 0xc6, 0xb4, - 0xa4, 0x8c, 0x55, 0x42, 0x5d, 0xf1, 0x76, 0x18, 0x6e, 0x9a, 0x55, 0xd5, 0xc1, 0x65, 0xba, 0x8e, - 0x8b, 0xf4, 0x9c, 0xe7, 0xa7, 0x08, 0xaf, 0x9b, 0x37, 0xa6, 0x11, 0x53, 0xcb, 0x47, 0x2c, 0xd3, - 0xd9, 0x1f, 0x18, 0x84, 0x10, 0xf8, 0x74, 0xfa, 0x86, 0x04, 0xc3, 0x45, 0xdf, 0x9d, 0xca, 0x0c, - 0x0c, 0x35, 0x0c, 0x5d, 0xdb, 0xe1, 0xfe, 0x98, 0x54, 0x44, 0x11, 0x65, 0x21, 0xc1, 0x1e, 0xb3, - 0x3a, 0x7b, 0x62, 0x2b, 0x54, 0x94, 0x09, 0xd5, 0x55, 0xbc, 0x69, 0x6b, 0xa2, 0x37, 0x14, 0x51, - 0x44, 0x17, 0x20, 0x6d, 0xe3, 0x4a, 0xd3, 0xd2, 0x9c, 0xbd, 0x72, 0xc5, 0xd0, 0x1d, 0xb5, 0xe2, - 0xb0, 0x67, 0x91, 0x85, 0x63, 0x37, 0x6f, 0x4c, 0x1f, 0x61, 0xb2, 0x86, 0x31, 0x64, 0x65, 0x4c, - 0x80, 0xe6, 0x18, 0x84, 0xb4, 0x50, 0xc5, 0x8e, 0xaa, 0xd5, 0xed, 0x0c, 0xbb, 0x9c, 0x20, 0x8a, - 0x3e, 0x5d, 0x3e, 0x3f, 0xe4, 0xdf, 0xd8, 0xba, 0x00, 0x69, 0xc3, 0xc4, 0x56, 0x20, 0x11, 0x95, - 0xc2, 0x2d, 0x87, 0x31, 0x64, 0x65, 0x4c, 0x80, 0x44, 0x92, 0xea, 0x90, 0x6e, 0x16, 0x0b, 0x45, - 0xb3, 0xb9, 0xe9, 0xed, 0x87, 0x4d, 0xb6, 0xf4, 0x46, 0x5e, 0xdf, 0x2b, 0x3c, 0xe2, 0x71, 0x0f, - 0xd3, 0xc9, 0xdf, 0xfc, 0xf2, 0x83, 0x93, 0xdc, 0x35, 0xbc, 0xfd, 0xa9, 0x4b, 0x78, 0x8f, 0x74, - 0x3f, 0x47, 0x5d, 0xa5, 0x98, 0x24, 0xed, 0x7c, 0x5e, 0xd5, 0xea, 0xe2, 0x79, 0xbf, 0xc2, 0x4b, - 0x28, 0x07, 0x83, 0xb6, 0xa3, 0x3a, 0x4d, 0x9b, 0x9f, 0xf4, 0xca, 0x9d, 0x5c, 0xad, 0x60, 0xe8, - 0xd5, 0x35, 0x8a, 0xa9, 0x70, 0x0a, 0x74, 0x01, 0x06, 0xf9, 0x11, 0x7a, 0x7c, 0xdf, 0xe3, 0x9b, - 0xde, 0x95, 0x60, 0xd4, 0xc4, 0x22, 0x55, 0x5c, 0xc7, 0x35, 0x96, 0x56, 0x6d, 0xab, 0x64, 0xf5, - 0x41, 0xbf, 0xbd, 0x57, 0x58, 0xd8, 0xf7, 0x20, 0xe4, 0x96, 0x0a, 0xf3, 0x93, 0x95, 0x31, 0x17, - 0xb4, 0x46, 0x21, 0xe8, 0x52, 0xe0, 0xf2, 0x2f, 0xff, 0x40, 0xe5, 0x9d, 0x9d, 0xd4, 0xf7, 0xf9, - 0xb4, 0xd8, 0x9f, 0xf0, 0x5f, 0x1d, 0xbe, 0x00, 0xe9, 0xa6, 0xbe, 0x69, 0xe8, 0xf4, 0x0d, 0x2e, - 0xcf, 0xef, 0xc9, 0xfa, 0x2e, 0xea, 0x77, 0x8e, 0x30, 0x86, 0xac, 0x8c, 0xb9, 0xa0, 0x8b, 0x6c, - 0x15, 0x50, 0x85, 0x51, 0x0f, 0x8b, 0x0e, 0xd4, 0x64, 0xcf, 0x81, 0x7a, 0x07, 0x1f, 0xa8, 0x87, - 0xc2, 0xad, 0x78, 0x63, 0x75, 0xc4, 0x05, 0x12, 0x32, 0x74, 0x11, 0xc0, 0x0b, 0x0f, 0x74, 0x9f, - 0x62, 0xb8, 0x73, 0xc7, 0x7b, 0x31, 0x46, 0xac, 0xf7, 0x3c, 0x5a, 0xf4, 0x2e, 0x98, 0x68, 0x68, - 0x7a, 0xd9, 0xc6, 0xf5, 0xad, 0x32, 0x37, 0x30, 0x61, 0x49, 0x3f, 0xa1, 0x54, 0x58, 0xdc, 0x9f, - 0x3f, 0xdc, 0xbc, 0x31, 0x9d, 0xe5, 0x21, 0xb4, 0x95, 0xa5, 0xac, 0x8c, 0x37, 0x34, 0x7d, 0x0d, - 0xd7, 0xb7, 0x8a, 0x2e, 0x2c, 0x97, 0xfa, 0xe0, 0x2b, 0xd3, 0x03, 0x7c, 0xb8, 0x0e, 0xc8, 0xe7, - 0xe8, 0xde, 0x39, 0x1f, 0x66, 0xd8, 0x26, 0x6b, 0x12, 0x55, 0x14, 0xf8, 0x55, 0x03, 0x0f, 0xc0, - 0x86, 0xf9, 0x4b, 0xbf, 0x3f, 0x23, 0xc9, 0x9f, 0x97, 0x60, 0xb0, 0x78, 0x79, 0x55, 0xd5, 0x2c, - 0xb4, 0x00, 0xe3, 0x9e, 0xe7, 0x04, 0x07, 0xf9, 0xf1, 0x9b, 0x37, 0xa6, 0x33, 0x61, 0xe7, 0x72, - 0x47, 0xb9, 0xe7, 0xc0, 0x62, 0x98, 0x2f, 0x74, 0x5a, 0xb8, 0x06, 0x58, 0xb5, 0xa0, 0xc8, 0xad, - 0xcb, 0xda, 0x90, 0x9a, 0x25, 0x18, 0x62, 0xd2, 0xda, 0x28, 0x07, 0x71, 0x93, 0xfc, 0xe0, 0x07, - 0x03, 0x53, 0x1d, 0x9d, 0x97, 0xe2, 0xbb, 0x1b, 0x99, 0x84, 0x44, 0xfe, 0x48, 0x04, 0xa0, 0x78, - 0xf9, 0xf2, 0xba, 0xa5, 0x99, 0x75, 0xec, 0xdc, 0x4a, 0xcd, 0xd7, 0xe1, 0x90, 0x6f, 0x95, 0x64, - 0x55, 0x42, 0xda, 0xcf, 0xdc, 0xbc, 0x31, 0x7d, 0x3c, 0xac, 0xbd, 0x0f, 0x4d, 0x56, 0x26, 0xbc, - 0xf5, 0x92, 0x55, 0x69, 0xcb, 0xb5, 0x6a, 0x3b, 0x2e, 0xd7, 0x68, 0x67, 0xae, 0x3e, 0x34, 0x3f, - 0xd7, 0xa2, 0xed, 0xb4, 0x37, 0xed, 0x1a, 0x0c, 0x7b, 0x26, 0xb1, 0x51, 0x11, 0x12, 0x0e, 0xff, - 0xcd, 0x2d, 0x2c, 0x77, 0xb6, 0xb0, 0x20, 0xe3, 0x56, 0x76, 0x29, 0xe5, 0x3f, 0x95, 0x00, 0x3c, - 0x9f, 0xfd, 0xe9, 0x74, 0x31, 0x12, 0xca, 0x79, 0xe0, 0x8d, 0x1e, 0x28, 0x55, 0xe3, 0xd4, 0x21, - 0x7b, 0xfe, 0x6c, 0x04, 0x26, 0x36, 0x44, 0xe4, 0xf9, 0xa9, 0xb7, 0xc1, 0x2a, 0x0c, 0x61, 0xdd, - 0xb1, 0x34, 0x6a, 0x04, 0xd2, 0xdb, 0x0f, 0x75, 0xea, 0xed, 0x36, 0x3a, 0xd1, 0x8f, 0x48, 0x89, - 0x4d, 0x77, 0xce, 0x26, 0x64, 0x8d, 0x9f, 0x8f, 0x42, 0xa6, 0x13, 0x25, 0x9a, 0x83, 0xb1, 0x8a, - 0x85, 0xd9, 0xc5, 0x2b, 0xff, 0xce, 0x5f, 0x21, 0xeb, 0x65, 0x96, 0x21, 0x04, 0x59, 0x19, 0x15, - 0x10, 0x3e, 0x7b, 0xd4, 0x80, 0xa4, 0x7d, 0xc4, 0xed, 0xe8, 0xfd, 0xad, 0xfe, 0xf2, 0x3c, 0x99, - 0x4f, 0x1f, 0xa2, 0x91, 0x20, 0x03, 0x36, 0x7f, 0x8c, 0x7a, 0x50, 0x3a, 0x81, 0xbc, 0x00, 0x63, - 0x9a, 0xae, 0x39, 0x9a, 0x5a, 0x2f, 0x6f, 0xaa, 0x75, 0x55, 0xaf, 0x1c, 0x24, 0x6b, 0x66, 0x21, - 0x9f, 0x37, 0x1b, 0x62, 0x27, 0x2b, 0xa3, 0x1c, 0x52, 0x60, 0x00, 0x74, 0x11, 0x86, 0x44, 0x53, - 0xb1, 0x03, 0x65, 0x1b, 0x82, 0xdc, 0x97, 0xe0, 0xfd, 0x5c, 0x14, 0xc6, 0x15, 0x5c, 0xfd, 0x8b, - 0xae, 0xd8, 0x5f, 0x57, 0x2c, 0x01, 0xb0, 0xe1, 0x4e, 0x02, 0xec, 0x01, 0x7a, 0x83, 0x04, 0x8c, - 0x24, 0xe3, 0x50, 0xb4, 0x1d, 0x5f, 0x7f, 0xdc, 0x88, 0x40, 0xca, 0xdf, 0x1f, 0x7f, 0x4e, 0x67, - 0x25, 0xb4, 0xe0, 0x45, 0xa2, 0x18, 0xff, 0xf4, 0x6e, 0x87, 0x48, 0xd4, 0xe2, 0xbd, 0xdd, 0x43, - 0xd0, 0xff, 0x8c, 0xc0, 0xe0, 0xaa, 0x6a, 0xa9, 0x0d, 0x1b, 0x55, 0x5a, 0x32, 0x4d, 0xb1, 0xfd, - 0xd8, 0xf2, 0x81, 0x75, 0xbe, 0xdb, 0xd1, 0x23, 0xd1, 0xfc, 0x58, 0x9b, 0x44, 0xf3, 0xad, 0x30, - 0x4a, 0x96, 0xc3, 0xbe, 0x2b, 0x0c, 0xc4, 0xda, 0x23, 0x85, 0xa3, 0x1e, 0x97, 0x60, 0x3d, 0x5b, - 0x2d, 0x5f, 0xf6, 0xdf, 0x61, 0x18, 0x26, 0x18, 0x5e, 0x60, 0x26, 0xe4, 0x87, 0xbd, 0x65, 0xa9, - 0xaf, 0x52, 0x56, 0xa0, 0xa1, 0xee, 0x96, 0x58, 0x01, 0x2d, 0x02, 0xda, 0x76, 0x77, 0x46, 0xca, - 0x9e, 0x39, 0x09, 0xfd, 0x89, 0x9b, 0x37, 0xa6, 0x8f, 0x32, 0xfa, 0x56, 0x1c, 0x59, 0x19, 0xf7, - 0x80, 0x82, 0xdb, 0xa3, 0x00, 0x44, 0xaf, 0x32, 0xbb, 0xc2, 0xcd, 0x96, 0x3b, 0x87, 0x6e, 0xde, - 0x98, 0x1e, 0x67, 0x5c, 0xbc, 0x3a, 0x59, 0x49, 0x92, 0x42, 0x91, 0xfc, 0xf6, 0x79, 0xf6, 0x67, - 0x24, 0x40, 0x5e, 0xc8, 0x57, 0xb0, 0x6d, 0x92, 0xf5, 0x19, 0x49, 0xc4, 0x7d, 0x59, 0xb3, 0xd4, - 0x3d, 0x11, 0xf7, 0xe8, 0x45, 0x22, 0xee, 0x1b, 0x29, 0x4f, 0x78, 0xe1, 0x31, 0xd2, 0xeb, 0x3e, - 0x33, 0x77, 0x91, 0x70, 0x3c, 0x1c, 0x90, 0xff, 0x95, 0x04, 0x47, 0x5b, 0x3c, 0xca, 0x15, 0xf6, - 0x2f, 0x01, 0xb2, 0x7c, 0x95, 0xfc, 0x3b, 0x8a, 0x4c, 0xe8, 0x7d, 0x3b, 0xe8, 0xb8, 0xd5, 0x12, - 0x77, 0x6f, 0x5d, 0x84, 0x67, 0x17, 0xe6, 0xff, 0x99, 0x04, 0x93, 0xfe, 0xe6, 0x5d, 0x45, 0x96, - 0x21, 0xe5, 0x6f, 0x9d, 0xab, 0x70, 0x57, 0x3f, 0x2a, 0x70, 0xe9, 0x03, 0xf4, 0xe8, 0x69, 0x6f, - 0xb8, 0xb2, 0xbd, 0xb3, 0x87, 0xfb, 0xb6, 0x86, 0x90, 0x29, 0x3c, 0x6c, 0x63, 0xb4, 0x3f, 0xfe, - 0xaf, 0x04, 0xb1, 0x55, 0xc3, 0xa8, 0x23, 0x03, 0xc6, 0x75, 0xc3, 0x29, 0x13, 0xcf, 0xc2, 0x55, - 0xff, 0xbd, 0xf5, 0x64, 0x61, 0x6e, 0x7f, 0x46, 0xfa, 0xfe, 0x8d, 0xe9, 0x56, 0x56, 0xca, 0x98, - 0x6e, 0x38, 0x05, 0x0a, 0xe1, 0x57, 0xd7, 0xdf, 0x05, 0x23, 0xc1, 0xc6, 0x58, 0x94, 0x7c, 0x66, - 0xdf, 0x8d, 0x05, 0xd9, 0xdc, 0xbc, 0x31, 0x3d, 0xe9, 0x8d, 0x18, 0x17, 0x2c, 0x2b, 0xa9, 0x4d, - 0x5f, 0xeb, 0xec, 0x7a, 0xd7, 0x0f, 0x5f, 0x99, 0x96, 0x4e, 0x7d, 0x45, 0x02, 0xf0, 0x76, 0x1e, - 0xd0, 0x03, 0x70, 0xa4, 0xb0, 0xb2, 0x5c, 0x2c, 0xaf, 0xad, 0xe7, 0xd7, 0x37, 0xd6, 0x82, 0x77, - 0xbc, 0xc5, 0xf6, 0xb8, 0x6d, 0xe2, 0x8a, 0xb6, 0xa5, 0xe1, 0x2a, 0xba, 0x07, 0x26, 0x83, 0xd8, - 0xa4, 0x54, 0x2a, 0xa6, 0xa5, 0x6c, 0xea, 0xda, 0xf5, 0x99, 0x04, 0xcb, 0xc5, 0x70, 0x15, 0x9d, - 0x84, 0x43, 0xad, 0x78, 0x0b, 0xcb, 0xf3, 0xe9, 0x48, 0x76, 0xe4, 0xda, 0xf5, 0x99, 0xa4, 0x9b, - 0xb4, 0x21, 0x19, 0x90, 0x1f, 0x93, 0xf3, 0x8b, 0x66, 0xe1, 0xda, 0xf5, 0x99, 0x41, 0x66, 0xc0, - 0x6c, 0xec, 0x83, 0x9f, 0x99, 0x1a, 0xb8, 0xe5, 0x37, 0xc1, 0xff, 0x78, 0xa8, 0xe3, 0xae, 0x77, - 0x0d, 0xeb, 0xd8, 0xd6, 0xec, 0x03, 0xed, 0x7a, 0xf7, 0xb5, 0x93, 0x2e, 0xff, 0x4e, 0x1c, 0x52, - 0xf3, 0xac, 0x15, 0xd2, 0x11, 0x18, 0xbd, 0x09, 0x06, 0x4d, 0x3a, 0x8d, 0xb8, 0xc7, 0x68, 0x1d, - 0x1c, 0x9e, 0x4d, 0x36, 0xee, 0x5d, 0x2e, 0x36, 0xf5, 0xd8, 0xfc, 0x32, 0x07, 0xbb, 0x63, 0xe6, - 0xdd, 0x9a, 0x4a, 0xed, 0x6b, 0xbf, 0x87, 0xe5, 0x2c, 0x7c, 0x6b, 0x25, 0xcc, 0x4f, 0x66, 0xf7, - 0x42, 0xd6, 0x09, 0x84, 0xdd, 0x0e, 0x7b, 0xbf, 0x04, 0x87, 0x28, 0x96, 0x37, 0x11, 0x53, 0x4c, - 0x91, 0xec, 0x9f, 0xea, 0xa4, 0xc2, 0xa2, 0x6a, 0x7b, 0x77, 0x3d, 0xd8, 0x7d, 0xae, 0xbb, 0xf8, - 0x44, 0x78, 0xdc, 0xd7, 0x78, 0x98, 0xad, 0xac, 0x4c, 0xd4, 0x5b, 0x28, 0x6d, 0x34, 0x1f, 0xb8, - 0xd0, 0x17, 0xdb, 0xdf, 0x56, 0xbb, 0xff, 0x72, 0xdf, 0x53, 0x30, 0xec, 0xc5, 0x12, 0x9b, 0xff, - 0xdf, 0x97, 0xfe, 0xe7, 0x0e, 0x3f, 0x31, 0xfa, 0x80, 0x04, 0x87, 0xbc, 0xd9, 0xdc, 0xcf, 0x96, - 0xfd, 0x7f, 0x9c, 0xfb, 0xf7, 0xb1, 0x10, 0x0a, 0x1b, 0xa7, 0x2d, 0x5f, 0x59, 0x99, 0x6c, 0xb6, - 0x92, 0x92, 0x25, 0xd8, 0x88, 0x3f, 0xb2, 0xda, 0x19, 0xf1, 0x09, 0xc8, 0xfe, 0x43, 0x73, 0x90, - 0x01, 0xfb, 0x9f, 0x1d, 0xa6, 0x61, 0x39, 0xb8, 0x4a, 0x37, 0xe4, 0x12, 0x8a, 0x5b, 0x96, 0x97, - 0x01, 0xb5, 0x76, 0x6e, 0xf8, 0x02, 0xa3, 0xf7, 0x3e, 0x05, 0x4d, 0x42, 0xdc, 0x7f, 0xc5, 0x8f, - 0x15, 0x72, 0x89, 0x0f, 0xf2, 0xe9, 0xf3, 0x96, 0x8f, 0xf9, 0x7f, 0x11, 0x81, 0x53, 0xfe, 0xe3, - 0xa1, 0x17, 0x9a, 0xd8, 0xda, 0x73, 0x87, 0xa8, 0xa9, 0xd6, 0x34, 0xdd, 0xff, 0x0a, 0xe2, 0xa8, - 0x7f, 0xc2, 0xa7, 0xb8, 0xc2, 0x4e, 0xb2, 0x0e, 0xc3, 0xab, 0x6a, 0x0d, 0x2b, 0xf8, 0x85, 0x26, - 0xb6, 0x9d, 0x36, 0x97, 0xcc, 0x0f, 0xc3, 0xa0, 0xb1, 0xb5, 0x25, 0x8e, 0xb4, 0x63, 0x0a, 0x2f, - 0x11, 0x95, 0xeb, 0x5a, 0x43, 0x63, 0xb7, 0xc1, 0x62, 0x0a, 0x2b, 0xa0, 0x69, 0x18, 0xae, 0x18, - 0x4d, 0x9d, 0x8f, 0xb8, 0x4c, 0x4c, 0x7c, 0x6a, 0xa5, 0xa9, 0xb3, 0x11, 0x27, 0x3f, 0x09, 0x29, - 0xd6, 0x1e, 0x9f, 0x71, 0x8f, 0x42, 0x82, 0x5e, 0xa7, 0xf2, 0x5a, 0x1d, 0x22, 0xe5, 0x4b, 0xec, - 0x42, 0x3a, 0xe3, 0xc2, 0x1a, 0x66, 0x85, 0x42, 0xa1, 0xa3, 0x29, 0x4f, 0xf6, 0x0e, 0x0d, 0xcc, - 0x50, 0xae, 0x19, 0x7f, 0x23, 0x0e, 0x87, 0xf8, 0x09, 0x9d, 0x6a, 0x6a, 0xa7, 0xb7, 0x1d, 0x47, - 0x3c, 0x90, 0x00, 0x9e, 0xea, 0xaa, 0xa6, 0x26, 0xef, 0x41, 0xec, 0xa2, 0xe3, 0x98, 0xe8, 0x14, - 0xc4, 0xad, 0x66, 0x1d, 0x8b, 0x1d, 0x1f, 0x77, 0x4f, 0x5e, 0x35, 0xb5, 0x59, 0x82, 0xa0, 0x34, - 0xeb, 0x58, 0x61, 0x28, 0xa8, 0x04, 0xd3, 0x5b, 0xcd, 0x7a, 0x7d, 0xaf, 0x5c, 0xc5, 0xf4, 0x7f, - 0x62, 0xb9, 0xff, 0x55, 0x02, 0xef, 0x9a, 0xaa, 0xf8, 0x36, 0x25, 0xb1, 0xcd, 0x71, 0x8a, 0x56, - 0xa4, 0x58, 0xe2, 0x3f, 0x4a, 0x94, 0x04, 0x8e, 0xfc, 0x7b, 0x11, 0x48, 0x08, 0xd6, 0xf4, 0x86, - 0x38, 0xae, 0xe3, 0x8a, 0x63, 0x88, 0x13, 0x13, 0xb7, 0x8c, 0x10, 0x44, 0x6b, 0xbc, 0x8b, 0x92, - 0x17, 0x07, 0x14, 0x52, 0x20, 0x30, 0xf7, 0xde, 0x3e, 0x81, 0x99, 0x4d, 0xd2, 0x6b, 0x31, 0xd3, - 0x10, 0x4b, 0xb3, 0x8b, 0x03, 0x0a, 0x2d, 0xa1, 0x0c, 0x0c, 0x92, 0x91, 0xe1, 0xb0, 0x0f, 0x7e, - 0x12, 0x38, 0x2f, 0xa3, 0xc3, 0x10, 0x37, 0x55, 0xa7, 0xc2, 0xae, 0xd4, 0x91, 0x0a, 0x56, 0x44, - 0x8f, 0xc1, 0x20, 0x7b, 0x7a, 0x1d, 0xfe, 0x87, 0x33, 0xc4, 0x18, 0xec, 0x1b, 0x77, 0x44, 0xee, - 0x55, 0xd5, 0x71, 0xb0, 0xa5, 0x13, 0x86, 0x0c, 0x1d, 0x21, 0x88, 0x6d, 0x1a, 0xd5, 0x3d, 0xfe, - 0x4f, 0x70, 0xe8, 0x6f, 0xfe, 0x5f, 0x37, 0xa8, 0x3f, 0x94, 0x69, 0x25, 0xfb, 0xdf, 0x5f, 0x29, - 0x01, 0x2c, 0x10, 0xa4, 0x12, 0x4c, 0xa8, 0xd5, 0xaa, 0xc6, 0xfe, 0x1f, 0x4d, 0x79, 0x53, 0xa3, - 0x11, 0xc2, 0xa6, 0xff, 0xd9, 0xad, 0x53, 0x5f, 0x20, 0x8f, 0xa0, 0xc0, 0xf1, 0x0b, 0x49, 0x18, - 0x32, 0x99, 0x50, 0xf2, 0x79, 0x18, 0x6f, 0x91, 0x94, 0xc8, 0xb7, 0xa3, 0xe9, 0x55, 0xf1, 0x98, - 0x81, 0xfc, 0x26, 0x30, 0xfa, 0x55, 0x4a, 0x76, 0x16, 0x45, 0x7f, 0x17, 0xde, 0xdb, 0xf9, 0xcd, - 0xcb, 0xa8, 0xef, 0xcd, 0x8b, 0x6a, 0x6a, 0x85, 0x24, 0xe5, 0xcf, 0x5f, 0xba, 0xe4, 0x5b, 0x5f, - 0xba, 0xd4, 0xb0, 0x2e, 0x66, 0x5f, 0x52, 0xa5, 0x9a, 0x9a, 0x4d, 0xdd, 0xd1, 0xfb, 0x4a, 0xa6, - 0x7d, 0xde, 0xf7, 0x9b, 0x3e, 0x7c, 0x89, 0xcd, 0xe7, 0x57, 0x17, 0x5c, 0x3f, 0xfe, 0x5a, 0x04, - 0x8e, 0xfb, 0xfc, 0xd8, 0x87, 0xdc, 0xea, 0xce, 0xd9, 0xf6, 0x1e, 0xdf, 0xc7, 0x03, 0xe4, 0x4b, - 0x10, 0x23, 0xf8, 0xa8, 0xc7, 0xff, 0xc4, 0xc8, 0x7c, 0xe1, 0x9b, 0xff, 0x54, 0x0e, 0x9e, 0x5a, - 0x05, 0x7a, 0x85, 0x32, 0x29, 0x7c, 0xa0, 0x7f, 0xfb, 0xa5, 0xbd, 0x0f, 0x84, 0xda, 0xb7, 0xce, - 0x8c, 0x61, 0x1b, 0x7e, 0xef, 0x6c, 0xc7, 0x07, 0xaa, 0x2c, 0x62, 0x76, 0x4f, 0xa2, 0xf6, 0x11, - 0x8e, 0x3b, 0xdd, 0xff, 0xef, 0xd6, 0x83, 0x7d, 0xa6, 0x63, 0xbb, 0x70, 0xf8, 0x69, 0xd2, 0xb6, - 0xb7, 0x4c, 0x16, 0x81, 0xfd, 0xb0, 0x7b, 0x9a, 0x27, 0xf1, 0x7f, 0xac, 0x27, 0x4e, 0xea, 0xc0, - 0x93, 0x8f, 0x2f, 0x10, 0xef, 0x99, 0xed, 0x38, 0x5f, 0xcc, 0xfa, 0x26, 0x0b, 0xc5, 0x47, 0x29, - 0xff, 0x8a, 0x04, 0x47, 0x5a, 0x9a, 0xe6, 0x31, 0x7e, 0xbe, 0xcd, 0x53, 0x85, 0x03, 0x65, 0x36, - 0xf3, 0x6d, 0x84, 0xbd, 0xb7, 0xa7, 0xb0, 0x4c, 0x8a, 0x80, 0xb4, 0x6f, 0x81, 0x43, 0x41, 0x61, - 0x85, 0x99, 0xee, 0x86, 0xd1, 0xe0, 0x8e, 0x30, 0x37, 0xd7, 0x48, 0x60, 0x4f, 0x58, 0x2e, 0x87, - 0xed, 0xec, 0xea, 0x5a, 0x82, 0xa4, 0x8b, 0xca, 0x53, 0xe0, 0xbe, 0x55, 0xf5, 0x28, 0xe5, 0x8f, - 0x48, 0x30, 0x13, 0x6c, 0xc1, 0x97, 0x0c, 0xed, 0x4f, 0xd8, 0x5b, 0xd6, 0xc5, 0xaf, 0x49, 0x70, - 0x47, 0x17, 0x99, 0xb8, 0x01, 0x5e, 0x84, 0x49, 0xdf, 0x4e, 0x80, 0x08, 0xe1, 0xa2, 0xdb, 0x4f, - 0xf5, 0x4e, 0x43, 0xdd, 0x85, 0xef, 0x31, 0x62, 0x94, 0xcf, 0x7d, 0x67, 0x7a, 0xa2, 0xb5, 0xce, - 0x56, 0x26, 0x5a, 0x57, 0xef, 0xb7, 0xd0, 0x3f, 0x5e, 0x96, 0xe0, 0xbe, 0xa0, 0xaa, 0x6d, 0xf2, - 0xd9, 0x37, 0xaa, 0x1f, 0xfe, 0x83, 0x04, 0xa7, 0xfa, 0x11, 0x8e, 0x77, 0xc8, 0x26, 0x4c, 0x78, - 0x99, 0x76, 0xb8, 0x3f, 0xf6, 0x95, 0xbf, 0x33, 0x2f, 0x45, 0x2e, 0xb7, 0xdb, 0x60, 0x78, 0x93, - 0x0f, 0x2c, 0x7f, 0x97, 0xbb, 0x46, 0x0e, 0xee, 0xe6, 0x0a, 0x23, 0x07, 0xf6, 0x73, 0xdb, 0xf4, - 0x45, 0xa4, 0x4d, 0x5f, 0x78, 0xa9, 0xb9, 0x7c, 0x85, 0xc7, 0xad, 0x36, 0x7b, 0x70, 0x6f, 0x87, - 0x89, 0x36, 0xae, 0xcc, 0x47, 0xf5, 0x3e, 0x3c, 0x59, 0x41, 0xad, 0xce, 0x2a, 0xef, 0xc1, 0x34, - 0x6d, 0xb7, 0x8d, 0xa1, 0x6f, 0xb7, 0xca, 0x0d, 0x1e, 0x5b, 0xda, 0x36, 0xcd, 0x75, 0x5f, 0x80, - 0x41, 0xd6, 0xcf, 0x5c, 0xdd, 0x03, 0x38, 0x0a, 0x67, 0x20, 0x7f, 0x42, 0xc4, 0xb2, 0xa2, 0x10, - 0xbb, 0xfd, 0x18, 0xea, 0x47, 0xd7, 0x5b, 0x34, 0x86, 0x7c, 0xc6, 0xf8, 0xb6, 0x88, 0x6a, 0xed, - 0xa5, 0xe3, 0xe6, 0xa8, 0xdc, 0xb2, 0xa8, 0xc6, 0x6c, 0x73, 0x7b, 0xc3, 0xd7, 0x2f, 0x89, 0xf0, - 0xe5, 0xea, 0xd4, 0x23, 0x7c, 0xbd, 0x31, 0xa6, 0x77, 0x03, 0x59, 0x0f, 0x31, 0xff, 0x2c, 0x06, - 0xb2, 0x1f, 0x4a, 0x70, 0x94, 0xea, 0xe6, 0xdf, 0x88, 0xd8, 0xaf, 0xc9, 0x1f, 0x00, 0x64, 0x5b, - 0x95, 0x72, 0xdb, 0xd1, 0x9d, 0xb6, 0xad, 0xca, 0xe5, 0xc0, 0xfc, 0xf2, 0x00, 0xa0, 0x6a, 0x60, - 0xbb, 0x89, 0x62, 0xb3, 0x5b, 0x72, 0xe9, 0xaa, 0x6f, 0x37, 0xa3, 0x4d, 0x77, 0xc6, 0x6e, 0x41, - 0x77, 0x7e, 0x4b, 0x82, 0x6c, 0x3b, 0x95, 0x79, 0xf7, 0x69, 0x70, 0x38, 0x70, 0x48, 0x10, 0xee, - 0xc1, 0x07, 0xfa, 0xd9, 0xca, 0x09, 0x0d, 0xa3, 0x43, 0x16, 0xbe, 0xdd, 0x79, 0xc0, 0x74, 0xd0, - 0x43, 0x5b, 0x33, 0xeb, 0x37, 0x6c, 0xf8, 0x7c, 0xb9, 0x25, 0xae, 0xfe, 0x99, 0xc8, 0xbd, 0x77, - 0x61, 0xaa, 0x83, 0xd4, 0xb7, 0x7b, 0xde, 0xdb, 0xee, 0xd8, 0x99, 0xb7, 0x3a, 0x7d, 0x7f, 0x94, - 0x8f, 0x84, 0xe0, 0x0d, 0x6c, 0xdf, 0x5a, 0xac, 0xdd, 0x13, 0x2e, 0xf9, 0x6d, 0x70, 0xac, 0x2d, - 0x15, 0x97, 0x2d, 0x07, 0xb1, 0x6d, 0xcd, 0x76, 0xb8, 0x58, 0xf7, 0x74, 0x12, 0x2b, 0x44, 0x4d, - 0x69, 0x64, 0x04, 0x69, 0xca, 0x7a, 0xd5, 0x30, 0xea, 0x5c, 0x0c, 0xf9, 0x12, 0x8c, 0xfb, 0x60, - 0xbc, 0x91, 0x73, 0x10, 0x33, 0x0d, 0xfe, 0x79, 0x82, 0xe1, 0x33, 0xc7, 0x3b, 0xee, 0xde, 0x1b, - 0x46, 0x9d, 0xab, 0x4d, 0xf1, 0xe5, 0x49, 0x40, 0x8c, 0x19, 0xdd, 0xc8, 0x17, 0x4d, 0xac, 0xc1, - 0x44, 0x00, 0xca, 0x1b, 0x79, 0x5d, 0x87, 0x04, 0x67, 0xbe, 0x7f, 0x08, 0xe2, 0x94, 0x2b, 0xfa, - 0xb8, 0x14, 0xf8, 0x7e, 0xd0, 0x6c, 0x27, 0x36, 0xed, 0xd7, 0xc4, 0xd9, 0xd3, 0x7d, 0xe3, 0xf3, - 0x9c, 0xed, 0xd4, 0x7b, 0xff, 0xed, 0xf7, 0x3e, 0x1a, 0xb9, 0x0b, 0xc9, 0xa7, 0x3b, 0xac, 0xc6, - 0x7d, 0xe3, 0xe5, 0xb3, 0x81, 0xb7, 0xef, 0x0f, 0xf6, 0xd7, 0x94, 0x90, 0x6c, 0xb6, 0x5f, 0x74, - 0x2e, 0xd8, 0x79, 0x2a, 0xd8, 0x59, 0xf4, 0x48, 0x6f, 0xc1, 0x4e, 0xbf, 0x33, 0x38, 0x68, 0xde, - 0x8d, 0x7e, 0x47, 0x82, 0xc9, 0x76, 0x4b, 0x3a, 0xf4, 0x78, 0x7f, 0x52, 0xb4, 0xa6, 0x14, 0xd9, - 0x27, 0x0e, 0x40, 0xc9, 0x55, 0x99, 0xa7, 0xaa, 0xe4, 0xd1, 0x93, 0x07, 0x50, 0xe5, 0xb4, 0x7f, - 0x7f, 0xff, 0x7f, 0x4b, 0x70, 0xa2, 0xeb, 0x0a, 0x09, 0xe5, 0xfb, 0x93, 0xb2, 0x4b, 0xee, 0x94, - 0x2d, 0xbc, 0x1e, 0x16, 0x5c, 0xe3, 0xa7, 0xa9, 0xc6, 0x97, 0xd0, 0xc2, 0x41, 0x34, 0x6e, 0x7b, - 0x88, 0x82, 0x7e, 0x33, 0x78, 0xb3, 0xb0, 0xbb, 0x3b, 0xb5, 0x2c, 0x3c, 0x7a, 0x0c, 0x8c, 0xd6, - 0xa4, 0x56, 0x7e, 0x96, 0xaa, 0xa0, 0xa0, 0xd5, 0xd7, 0xd9, 0x69, 0xa7, 0xdf, 0x19, 0x0c, 0xfc, - 0xef, 0x46, 0xff, 0x4b, 0x6a, 0x7f, 0x51, 0xf0, 0xb1, 0xae, 0x22, 0x76, 0x5e, 0x54, 0x65, 0x1f, - 0xdf, 0x3f, 0x21, 0x57, 0xb2, 0x41, 0x95, 0xac, 0x21, 0x7c, 0xab, 0x95, 0x6c, 0xdb, 0x89, 0xe8, - 0x1b, 0x12, 0x4c, 0xb6, 0x5b, 0x93, 0xf4, 0x18, 0x96, 0x5d, 0x16, 0x59, 0x3d, 0x86, 0x65, 0xb7, - 0x05, 0x90, 0xfc, 0x26, 0xaa, 0xfc, 0x39, 0xf4, 0x68, 0x27, 0xe5, 0xbb, 0xf6, 0x22, 0x19, 0x8b, - 0x5d, 0x93, 0xfc, 0x1e, 0x63, 0xb1, 0x9f, 0x75, 0x4c, 0x8f, 0xb1, 0xd8, 0xd7, 0x1a, 0xa3, 0xf7, - 0x58, 0x74, 0x35, 0xeb, 0xb3, 0x1b, 0x6d, 0xf4, 0x35, 0x09, 0x46, 0x02, 0x19, 0x31, 0x7a, 0xb8, - 0xab, 0xa0, 0xed, 0x16, 0x0c, 0xd9, 0x33, 0xfb, 0x21, 0xe1, 0xba, 0x2c, 0x50, 0x5d, 0xe6, 0x50, - 0xfe, 0x20, 0xba, 0x04, 0xcf, 0x4a, 0xbf, 0x25, 0xc1, 0x44, 0x9b, 0x2c, 0xb3, 0xc7, 0x28, 0xec, - 0x9c, 0x34, 0x67, 0x1f, 0xdf, 0x3f, 0x21, 0xd7, 0xea, 0x02, 0xd5, 0xea, 0xad, 0xe8, 0x2d, 0x07, - 0xd1, 0xca, 0x37, 0x3f, 0xdf, 0xf0, 0xee, 0x5d, 0xf9, 0xda, 0x41, 0xe7, 0xf6, 0x29, 0x98, 0x50, - 0xe8, 0xb1, 0x7d, 0xd3, 0x71, 0x7d, 0x9e, 0xa1, 0xfa, 0x3c, 0x8d, 0x56, 0x5e, 0x9f, 0x3e, 0xad, - 0xd3, 0xfa, 0x97, 0x5a, 0x5f, 0x00, 0x76, 0xf7, 0xa2, 0xb6, 0xc9, 0x6a, 0xf6, 0x91, 0x7d, 0xd1, - 0x70, 0xa5, 0x1e, 0xa7, 0x4a, 0x9d, 0x41, 0x0f, 0x75, 0x52, 0xca, 0x77, 0xb9, 0x4e, 0xd3, 0xb7, - 0x8c, 0xd3, 0xef, 0x64, 0x29, 0xf0, 0xbb, 0xd1, 0x7b, 0xc4, 0xc5, 0xa6, 0x93, 0x5d, 0xdb, 0xf5, - 0xe5, 0xb1, 0xd9, 0xfb, 0xfa, 0xc0, 0xe4, 0x72, 0xdd, 0x45, 0xe5, 0x9a, 0x42, 0xc7, 0x3b, 0xc9, - 0x45, 0x72, 0x59, 0xf4, 0x21, 0xc9, 0xbd, 0x0b, 0x79, 0xaa, 0x3b, 0x6f, 0x7f, 0xb2, 0x9b, 0xbd, - 0xbf, 0x2f, 0x5c, 0x2e, 0xc9, 0x3d, 0x54, 0x92, 0x19, 0x34, 0xd5, 0x51, 0x12, 0x96, 0xfa, 0xde, - 0xea, 0x9b, 0x03, 0xd7, 0x8e, 0xc0, 0x74, 0x87, 0x16, 0x9d, 0xdd, 0x1e, 0x67, 0x5c, 0x5d, 0x1e, - 0xc2, 0xf6, 0x7c, 0xe8, 0x7a, 0xab, 0x3f, 0xe0, 0xda, 0xe7, 0x81, 0xd8, 0x6f, 0xc5, 0x00, 0x2d, - 0xd9, 0xb5, 0x39, 0x0b, 0xb3, 0x7f, 0x26, 0xc9, 0x47, 0x79, 0xe8, 0x85, 0x97, 0xf4, 0xba, 0x5e, - 0x78, 0x2d, 0x05, 0xde, 0x4c, 0x45, 0xf6, 0xf7, 0x2e, 0xb3, 0xef, 0x87, 0x53, 0xd1, 0x9f, 0xc8, - 0xc3, 0xa9, 0xf6, 0xf7, 0xaa, 0x63, 0xb7, 0xee, 0x01, 0x46, 0xfc, 0xa0, 0x8f, 0x50, 0xf8, 0x7b, - 0xc8, 0xc1, 0x2e, 0xef, 0x21, 0x33, 0x1d, 0x1f, 0x3d, 0x72, 0x6a, 0x74, 0x56, 0x7c, 0xce, 0x74, - 0xa8, 0xbf, 0x9b, 0xb0, 0xfc, 0x7b, 0xa7, 0xde, 0x16, 0xc2, 0x71, 0xc8, 0xb6, 0xba, 0x93, 0x3b, - 0xa8, 0x3f, 0x1a, 0x85, 0xf4, 0x92, 0x5d, 0x2b, 0x55, 0x35, 0xe7, 0x36, 0xf9, 0xda, 0x93, 0x9d, - 0x1f, 0xb5, 0xa0, 0x9b, 0x37, 0xa6, 0x47, 0x99, 0x4d, 0xbb, 0x58, 0xb2, 0x01, 0x63, 0xa1, 0xa7, - 0xc4, 0xdc, 0xb3, 0x8a, 0x07, 0x79, 0xd1, 0x1c, 0x62, 0x25, 0xd3, 0x37, 0x08, 0x3e, 0xff, 0x46, - 0xbb, 0xed, 0x9d, 0x99, 0x39, 0xd4, 0xc5, 0xdb, 0xf9, 0x02, 0xd0, 0xeb, 0xb3, 0x2c, 0x64, 0xc2, - 0x9d, 0xe2, 0xf6, 0xd8, 0x1f, 0x4a, 0x30, 0xbc, 0x64, 0x8b, 0x54, 0x10, 0xff, 0x94, 0xbe, 0x3f, - 0x7a, 0xcc, 0xfd, 0x16, 0x78, 0xb4, 0x3f, 0xbf, 0x15, 0xdf, 0x07, 0xf7, 0x8c, 0x70, 0x08, 0x26, - 0x7c, 0x7a, 0xba, 0xfa, 0xff, 0x76, 0x84, 0xc6, 0xc7, 0x02, 0xae, 0x69, 0xba, 0x9b, 0x45, 0xe2, - 0x3f, 0xaf, 0xaf, 0x2b, 0x3c, 0x3b, 0xc7, 0x0e, 0x6a, 0xe7, 0x1d, 0x1a, 0x20, 0x42, 0xf6, 0x74, - 0x37, 0xbe, 0x96, 0x5a, 0xdf, 0xfe, 0x48, 0xfb, 0xf8, 0xac, 0x4e, 0xe8, 0x85, 0x8f, 0xfc, 0x9a, - 0x04, 0x23, 0x4b, 0x76, 0x6d, 0x43, 0xaf, 0xfe, 0x7f, 0xef, 0xbf, 0x5b, 0x70, 0x28, 0xa0, 0xe9, - 0x6d, 0x32, 0xe9, 0x99, 0x97, 0x63, 0x10, 0x5d, 0xb2, 0x6b, 0xe8, 0x05, 0x18, 0x0b, 0x27, 0x0d, - 0x1d, 0x73, 0xc1, 0xd6, 0x19, 0xa1, 0xf3, 0x7a, 0xad, 0xf3, 0xec, 0x81, 0x76, 0x60, 0x24, 0x38, - 0x73, 0x9c, 0xec, 0xc2, 0x24, 0x80, 0x99, 0x7d, 0xa8, 0x5f, 0x4c, 0xb7, 0xb1, 0x77, 0x40, 0xc2, - 0x0d, 0x7a, 0x77, 0x76, 0xa1, 0x16, 0x48, 0x9d, 0xb3, 0xdb, 0x36, 0x61, 0x85, 0x58, 0x2f, 0x1c, - 0x52, 0xba, 0x59, 0x2f, 0x84, 0xdb, 0xd5, 0x7a, 0x9d, 0x86, 0xd6, 0x26, 0x80, 0x6f, 0x1c, 0xdc, - 0xdd, 0x85, 0x83, 0x87, 0x96, 0x7d, 0xb0, 0x2f, 0x34, 0xf7, 0xd0, 0xe9, 0x16, 0x27, 0xe3, 0xff, - 0x2f, 0x00, 0x00, 0xff, 0xff, 0x85, 0xe7, 0x76, 0x21, 0xc2, 0x97, 0x00, 0x00, + 0x1a, 0x6c, 0x75, 0x6b, 0x7f, 0x56, 0xfb, 0x35, 0x61, 0x35, 0x46, 0x1b, 0xb0, 0xda, 0x3a, 0x1c, + 0xe6, 0x1c, 0xf7, 0xd7, 0xaf, 0x9f, 0x17, 0x81, 0x95, 0x51, 0x6f, 0x04, 0x7b, 0xf7, 0x6d, 0x90, + 0x75, 0xcd, 0x29, 0xd2, 0x53, 0xbb, 0xdc, 0x50, 0xcd, 0x3e, 0x38, 0x7f, 0x81, 0x73, 0x16, 0x11, + 0xdf, 0xcd, 0x6f, 0xed, 0x25, 0xd5, 0x24, 0xcc, 0x9f, 0x87, 0x8c, 0x60, 0xde, 0xd4, 0x2d, 0x5c, + 0x31, 0x6a, 0xba, 0x76, 0x0d, 0x57, 0xfb, 0x60, 0xfd, 0xeb, 0xa1, 0xae, 0xda, 0xf0, 0x91, 0x13, + 0xce, 0x0b, 0x90, 0x76, 0x73, 0x95, 0xb2, 0xd6, 0x30, 0x0d, 0xcb, 0xe9, 0xc1, 0xf1, 0x8b, 0xa2, + 0xa7, 0x5c, 0xba, 0x05, 0x4a, 0x96, 0x2b, 0x01, 0x3b, 0x67, 0xee, 0xd7, 0x25, 0xbf, 0xc4, 0x19, + 0x8d, 0x78, 0x54, 0x3c, 0x70, 0x54, 0x8c, 0x86, 0xa9, 0x5a, 0xfd, 0xc4, 0xbf, 0x7f, 0x20, 0x02, + 0x07, 0x27, 0xe1, 0x81, 0x83, 0x64, 0x74, 0x64, 0xb6, 0xef, 0x83, 0xc3, 0x97, 0x45, 0xe0, 0x10, + 0x34, 0x9c, 0x85, 0x48, 0x18, 0xfa, 0x60, 0xf1, 0x0f, 0x05, 0x0b, 0x41, 0x43, 0x58, 0x3c, 0xeb, + 0x4d, 0xb4, 0x16, 0xae, 0x69, 0xb6, 0x63, 0xb1, 0xa4, 0xb8, 0x3b, 0xab, 0x7f, 0xf4, 0xfd, 0x60, + 0x12, 0xa6, 0xf8, 0x48, 0x49, 0x24, 0xe2, 0x9b, 0xac, 0x74, 0xcd, 0xd4, 0x5b, 0xb0, 0xdf, 0x10, + 0x91, 0xc8, 0x47, 0x46, 0x64, 0xf3, 0x65, 0x88, 0xc4, 0xec, 0x15, 0xb2, 0x52, 0xe8, 0x83, 0xdd, + 0x3f, 0x0e, 0x09, 0xb7, 0x26, 0x68, 0x09, 0x4f, 0x5f, 0xfe, 0xd3, 0xd4, 0x77, 0xf0, 0x5e, 0x5f, + 0xde, 0xf9, 0x4f, 0x42, 0xf9, 0xcf, 0x06, 0xa3, 0x64, 0x31, 0x64, 0x2c, 0x94, 0x4f, 0xa1, 0x5e, + 0xb7, 0x8a, 0x32, 0xef, 0xfe, 0x21, 0xd7, 0x37, 0x98, 0x4e, 0xe5, 0x16, 0x89, 0x93, 0x07, 0x93, + 0x9e, 0xde, 0xcc, 0xde, 0xfb, 0x43, 0xd7, 0xcf, 0x03, 0x39, 0x4f, 0xee, 0x02, 0x8c, 0x04, 0x12, + 0x9e, 0xde, 0xac, 0xde, 0xc7, 0x59, 0xa5, 0xfc, 0xf9, 0x4e, 0xee, 0x2c, 0xc4, 0x48, 0xf2, 0xd2, + 0x9b, 0xfc, 0xaf, 0x70, 0x72, 0x8a, 0x9e, 0x7b, 0x13, 0x24, 0x44, 0xd2, 0xd2, 0x9b, 0xf4, 0xfd, + 0x9c, 0xd4, 0x25, 0x21, 0xe4, 0x22, 0x61, 0xe9, 0x4d, 0xfe, 0x57, 0x05, 0xb9, 0x20, 0x21, 0xe4, + 0xfd, 0x9b, 0xf0, 0x2b, 0x3f, 0x17, 0xe3, 0x93, 0x8e, 0xb0, 0xdd, 0x79, 0x18, 0xe2, 0x99, 0x4a, + 0x6f, 0xea, 0x0f, 0xf2, 0xc6, 0x05, 0x45, 0xee, 0x09, 0x88, 0xf7, 0x69, 0xf0, 0x9f, 0xe7, 0xa4, + 0x0c, 0x3f, 0x37, 0x07, 0xc3, 0xbe, 0xec, 0xa4, 0x37, 0xf9, 0x5f, 0xe3, 0xe4, 0x7e, 0x2a, 0x22, + 0x3a, 0xcf, 0x4e, 0x7a, 0x33, 0xf8, 0x05, 0x21, 0x3a, 0xa7, 0x20, 0x66, 0x13, 0x89, 0x49, 0x6f, + 0xea, 0x0f, 0x09, 0xab, 0x0b, 0x92, 0xdc, 0xd3, 0x90, 0x74, 0x27, 0x9b, 0xde, 0xf4, 0x1f, 0xe6, + 0xf4, 0x1e, 0x0d, 0xb1, 0x80, 0x6f, 0xb2, 0xeb, 0xcd, 0xe2, 0xaf, 0x0b, 0x0b, 0xf8, 0xa8, 0xc8, + 0x30, 0x0a, 0x27, 0x30, 0xbd, 0x39, 0x7d, 0x44, 0x0c, 0xa3, 0x50, 0xfe, 0x42, 0x7a, 0x93, 0xc6, + 0xfc, 0xde, 0x2c, 0xfe, 0x86, 0xe8, 0x4d, 0x8a, 0x4f, 0xc4, 0x08, 0x67, 0x04, 0xbd, 0x79, 0xfc, + 0xa2, 0x10, 0x23, 0x94, 0x10, 0xe4, 0x56, 0x01, 0xb5, 0x66, 0x03, 0xbd, 0xf9, 0x7d, 0x94, 0xf3, + 0x1b, 0x6f, 0x49, 0x06, 0x72, 0xcf, 0xc1, 0xe1, 0xf6, 0x99, 0x40, 0x6f, 0xae, 0x1f, 0xfb, 0x61, + 0x68, 0xed, 0xe6, 0x4f, 0x04, 0x72, 0xeb, 0xde, 0x94, 0xe2, 0xcf, 0x02, 0x7a, 0xb3, 0x7d, 0xe5, + 0x87, 0xc1, 0xc0, 0xed, 0x4f, 0x02, 0x72, 0x79, 0x00, 0x6f, 0x02, 0xee, 0xcd, 0xeb, 0x13, 0x9c, + 0x97, 0x8f, 0x88, 0x0c, 0x0d, 0x3e, 0xff, 0xf6, 0xa6, 0xbf, 0x21, 0x86, 0x06, 0xa7, 0x20, 0x43, + 0x43, 0x4c, 0xbd, 0xbd, 0xa9, 0x3f, 0x29, 0x86, 0x86, 0x20, 0x21, 0x9e, 0xed, 0x9b, 0xdd, 0x7a, + 0x73, 0xf8, 0x94, 0xf0, 0x6c, 0x1f, 0x55, 0x6e, 0x19, 0xc6, 0x5b, 0x26, 0xc4, 0xde, 0xac, 0x7e, + 0x89, 0xb3, 0x4a, 0x87, 0xe7, 0x43, 0xff, 0xe4, 0xc5, 0x27, 0xc3, 0xde, 0xdc, 0x3e, 0x1d, 0x9a, + 0xbc, 0xf8, 0x5c, 0x98, 0x3b, 0x0f, 0x09, 0xbd, 0x59, 0xaf, 0x93, 0xc1, 0x83, 0xba, 0xdf, 0x04, + 0xcc, 0xfc, 0xe7, 0x1f, 0x71, 0xeb, 0x08, 0x82, 0xdc, 0x59, 0x88, 0xe3, 0xc6, 0x26, 0xae, 0xf6, + 0xa2, 0xfc, 0xde, 0x8f, 0x44, 0xc0, 0x24, 0xd8, 0xb9, 0xa7, 0x01, 0xd8, 0xd6, 0x08, 0x3d, 0x0c, + 0xec, 0x41, 0xfb, 0x5f, 0x7e, 0xc4, 0xaf, 0xde, 0x78, 0x24, 0x1e, 0x03, 0x76, 0x91, 0xa7, 0x3b, + 0x83, 0xef, 0x07, 0x19, 0xd0, 0x1e, 0x79, 0x0a, 0x86, 0x5e, 0xb4, 0x0d, 0xdd, 0x51, 0x6b, 0xbd, + 0xa8, 0xff, 0x2b, 0xa7, 0x16, 0xf8, 0xc4, 0x60, 0x0d, 0xc3, 0xc2, 0x8e, 0x5a, 0xb3, 0x7b, 0xd1, + 0xfe, 0x37, 0x4e, 0xeb, 0x12, 0x10, 0xe2, 0x8a, 0x6a, 0x3b, 0xfd, 0xe8, 0xfd, 0xc7, 0x82, 0x58, + 0x10, 0x10, 0xa1, 0xc9, 0xef, 0x1d, 0xbc, 0xd7, 0x8b, 0xf6, 0x07, 0x42, 0x68, 0x8e, 0x9f, 0x7b, + 0x13, 0x24, 0xc9, 0x4f, 0x76, 0x9f, 0xae, 0x07, 0xf1, 0x9f, 0x70, 0x62, 0x8f, 0x82, 0xb4, 0x6c, + 0x3b, 0x55, 0x47, 0xeb, 0x6d, 0xec, 0x5b, 0xbc, 0xa7, 0x05, 0x7e, 0x2e, 0x0f, 0xc3, 0xb6, 0x53, + 0xad, 0x36, 0x79, 0x7e, 0xda, 0x83, 0xfc, 0x4f, 0x7f, 0xe4, 0x6e, 0x59, 0xb8, 0x34, 0xa4, 0xb7, + 0xaf, 0xee, 0x38, 0xa6, 0x41, 0x0f, 0x3c, 0x7a, 0x71, 0xf8, 0x21, 0xe7, 0xe0, 0x23, 0xc9, 0xcd, + 0x41, 0x8a, 0xe8, 0x62, 0x61, 0x13, 0xd3, 0xd3, 0xa9, 0x1e, 0x2c, 0xfe, 0x3b, 0x37, 0x40, 0x80, + 0xa8, 0xf0, 0xb3, 0x5f, 0x7b, 0x6d, 0x4a, 0xfa, 0xe6, 0x6b, 0x53, 0xd2, 0x1f, 0xbe, 0x36, 0x25, + 0x7d, 0xe8, 0x3b, 0x53, 0x03, 0xdf, 0xfc, 0xce, 0xd4, 0xc0, 0xef, 0x7d, 0x67, 0x6a, 0xa0, 0xfd, + 0x2e, 0x31, 0xcc, 0x1b, 0xf3, 0x06, 0xdb, 0x1f, 0x7e, 0x41, 0xae, 0x69, 0xce, 0x76, 0x73, 0x73, + 0xb6, 0x62, 0x34, 0xe8, 0x36, 0xae, 0xb7, 0x5b, 0xeb, 0x2e, 0x72, 0xe0, 0x3d, 0x51, 0x38, 0x5a, + 0x31, 0xec, 0x86, 0x61, 0x97, 0xd9, 0x7e, 0x2f, 0x2b, 0xf0, 0x1d, 0xdf, 0x94, 0xbf, 0xaa, 0x8f, + 0x4d, 0xdf, 0x8b, 0x30, 0x4a, 0x55, 0xa7, 0xdb, 0x5d, 0xd4, 0xdb, 0x7a, 0x06, 0x88, 0xaf, 0xff, + 0xdb, 0x38, 0xd5, 0x7a, 0xc4, 0x25, 0xa4, 0xa7, 0xf7, 0xeb, 0x30, 0xa9, 0x35, 0xcc, 0x3a, 0xa6, + 0xdb, 0xfc, 0x65, 0xb7, 0xae, 0x37, 0xbf, 0x6f, 0x70, 0x7e, 0x13, 0x1e, 0xf9, 0x82, 0xa0, 0xce, + 0x2d, 0xc2, 0xb8, 0x5a, 0xa9, 0x60, 0x33, 0xc0, 0xb2, 0x47, 0xb7, 0x08, 0x01, 0xd3, 0x9c, 0xd2, + 0xe5, 0x56, 0x78, 0xba, 0x53, 0xd7, 0xbc, 0x70, 0xaf, 0xcf, 0xf2, 0x16, 0xae, 0x61, 0xfd, 0x61, + 0x1d, 0x3b, 0x57, 0x0d, 0x6b, 0x87, 0x9b, 0xf7, 0x61, 0xd6, 0xd4, 0x20, 0xbb, 0xc1, 0x0c, 0xef, + 0x8b, 0xc2, 0x14, 0xab, 0x38, 0xbd, 0xa9, 0xda, 0xf8, 0xf4, 0x95, 0x47, 0x37, 0xb1, 0xa3, 0x3e, + 0x7a, 0xba, 0x62, 0x68, 0x3a, 0xef, 0x89, 0x09, 0xde, 0x2f, 0xa4, 0x7e, 0x96, 0xd7, 0x67, 0xdb, + 0x6e, 0xd3, 0xcb, 0xf3, 0x10, 0x9b, 0x33, 0x34, 0x1d, 0x4d, 0x42, 0xbc, 0x8a, 0x75, 0xa3, 0xc1, + 0xef, 0xdc, 0xb1, 0x02, 0xba, 0x1b, 0x06, 0xd5, 0x86, 0xd1, 0xd4, 0x1d, 0x76, 0x42, 0x51, 0x18, + 0xfe, 0xda, 0xcd, 0xe9, 0x81, 0xdf, 0xbf, 0x39, 0x1d, 0x5d, 0xd0, 0x1d, 0x85, 0x57, 0xe5, 0x62, + 0xaf, 0xbf, 0x3a, 0x2d, 0xc9, 0xcf, 0xc0, 0x50, 0x11, 0x57, 0x0e, 0xc2, 0xab, 0x88, 0x2b, 0x21, + 0x5e, 0x0f, 0x40, 0x62, 0x41, 0x77, 0xd8, 0xad, 0xc8, 0x13, 0x10, 0xd5, 0x74, 0x76, 0xd1, 0x26, + 0xd4, 0x3e, 0x81, 0x13, 0xd4, 0x22, 0xae, 0xb8, 0xa8, 0x55, 0x5c, 0x09, 0xa3, 0x12, 0xf6, 0x04, + 0x5e, 0x28, 0xfe, 0xde, 0x7f, 0x9c, 0x1a, 0x78, 0xf9, 0xb5, 0xa9, 0x81, 0x8e, 0x3d, 0xe1, 0x1f, + 0x03, 0xdc, 0xc4, 0xbc, 0x0b, 0xec, 0xea, 0x0e, 0x3b, 0x23, 0x71, 0xbb, 0xe1, 0xb7, 0x07, 0x41, + 0xe6, 0x38, 0xb6, 0xa3, 0xee, 0x68, 0x7a, 0xcd, 0xed, 0x09, 0xb5, 0xe9, 0x6c, 0x5f, 0xe3, 0x5d, + 0x71, 0x98, 0x77, 0x05, 0xc7, 0xe9, 0xde, 0x1b, 0xd9, 0xce, 0xa3, 0x2b, 0xdb, 0xa3, 0xcf, 0xe5, + 0x7f, 0x15, 0x05, 0xb4, 0xe6, 0xa8, 0x3b, 0x38, 0xdf, 0x74, 0xb6, 0x0d, 0x4b, 0xbb, 0xc6, 0x62, + 0x19, 0x06, 0x68, 0xa8, 0xbb, 0x65, 0xc7, 0xd8, 0xc1, 0xba, 0x4d, 0x4d, 0x33, 0x7c, 0xe6, 0xe8, + 0x6c, 0x1b, 0xff, 0x98, 0x25, 0x5d, 0x57, 0x78, 0xf0, 0xb3, 0xdf, 0x9e, 0xbe, 0xbf, 0xb7, 0x15, + 0x28, 0x32, 0x49, 0xae, 0x77, 0xd7, 0x29, 0x63, 0x74, 0x19, 0xd8, 0x25, 0x8b, 0x72, 0x5d, 0xb3, + 0x1d, 0x7e, 0x4f, 0xfb, 0xec, 0x6c, 0x7b, 0xdd, 0x67, 0x5b, 0xc5, 0x9c, 0xbd, 0xac, 0xd6, 0xb5, + 0xaa, 0xea, 0x18, 0x96, 0x7d, 0x71, 0x40, 0x49, 0x52, 0x56, 0x8b, 0x9a, 0xed, 0xa0, 0x75, 0x48, + 0x56, 0xb1, 0xbe, 0xc7, 0xd8, 0x46, 0xdf, 0x18, 0xdb, 0x04, 0xe1, 0x44, 0xb9, 0x3e, 0x0f, 0x48, + 0xf5, 0xe3, 0x89, 0x87, 0x49, 0xec, 0x7e, 0x65, 0x07, 0xf6, 0x01, 0xce, 0xf4, 0x1d, 0xc5, 0xb8, + 0x1a, 0x06, 0x65, 0xef, 0x03, 0xf0, 0xda, 0x44, 0x19, 0x18, 0x52, 0xab, 0x55, 0x0b, 0xdb, 0x36, + 0x3d, 0x00, 0x4c, 0x2a, 0xa2, 0x98, 0x1b, 0xff, 0xd7, 0x5f, 0x7a, 0x78, 0x24, 0xc0, 0xb1, 0x90, + 0x02, 0xb8, 0xe2, 0x92, 0x9e, 0xfa, 0xa4, 0x04, 0xe3, 0x2d, 0x2d, 0x22, 0x19, 0xa6, 0xf2, 0x1b, + 0xeb, 0x17, 0x57, 0x94, 0x85, 0x17, 0xf2, 0xeb, 0x0b, 0x2b, 0xcb, 0x65, 0x76, 0xe5, 0x7f, 0x79, + 0x6d, 0xb5, 0x34, 0xb7, 0x70, 0x61, 0xa1, 0x54, 0x4c, 0x0f, 0xa0, 0x69, 0x38, 0xd6, 0x06, 0xa7, + 0x58, 0x5a, 0x2c, 0xcd, 0xe7, 0xd7, 0x4b, 0x69, 0x09, 0xdd, 0x05, 0x27, 0xda, 0x32, 0x71, 0x51, + 0x22, 0x1d, 0x50, 0x94, 0x92, 0x8b, 0x12, 0x2d, 0x5c, 0xe8, 0x38, 0x8a, 0x1e, 0xea, 0xea, 0x3f, + 0xbb, 0xee, 0x70, 0x09, 0x8e, 0xa7, 0x77, 0x47, 0xe0, 0x68, 0x78, 0xca, 0x50, 0xf5, 0xbd, 0x0e, + 0xaf, 0x3e, 0x3b, 0x44, 0xb3, 0x8b, 0x10, 0xcd, 0xeb, 0x7b, 0xe8, 0x28, 0xcb, 0xa7, 0xcb, 0x4d, + 0xab, 0xce, 0x63, 0xd0, 0x10, 0x29, 0x6f, 0x58, 0x75, 0x12, 0x9b, 0xc4, 0x45, 0x7f, 0xe9, 0x64, + 0x8a, 0xdf, 0xde, 0xcf, 0xa5, 0x3f, 0xfa, 0xea, 0xf4, 0xc0, 0xe7, 0x5f, 0x9d, 0x1e, 0xf8, 0xc1, + 0xa7, 0xa6, 0x07, 0x5e, 0xfe, 0x83, 0x99, 0x81, 0xc2, 0x4e, 0x58, 0xbd, 0xaf, 0xf4, 0x9c, 0x4d, + 0x13, 0x79, 0x7d, 0x8f, 0x06, 0xa2, 0x55, 0xe9, 0x85, 0x38, 0x55, 0x4e, 0x1c, 0xa0, 0x4e, 0x85, + 0x0f, 0x50, 0x9f, 0xc3, 0xf5, 0xfa, 0x25, 0xdd, 0xb8, 0x4a, 0x7b, 0xd5, 0xb3, 0xc1, 0x47, 0x22, + 0x30, 0xd5, 0x32, 0x6d, 0xf2, 0x0c, 0xa3, 0xd3, 0xf3, 0xd7, 0x1c, 0x24, 0x8a, 0x22, 0x71, 0xc9, + 0xc0, 0x90, 0x8d, 0x2b, 0x86, 0x5e, 0x65, 0x23, 0x3d, 0xaa, 0x88, 0x22, 0x51, 0x5b, 0x57, 0x75, + 0xc3, 0xe6, 0x77, 0xee, 0x59, 0xa1, 0xf0, 0x71, 0x69, 0x7f, 0xf9, 0xc2, 0x88, 0x68, 0x49, 0xa8, + 0xf9, 0x68, 0xcf, 0x23, 0xe5, 0x1d, 0xa2, 0xa5, 0xab, 0x44, 0xe0, 0x58, 0xb9, 0x5f, 0xab, 0xfc, + 0x62, 0x04, 0xa6, 0xc3, 0x56, 0x21, 0x69, 0x9b, 0xed, 0xa8, 0x0d, 0xb3, 0x93, 0x59, 0xce, 0x43, + 0x72, 0x5d, 0xe0, 0xec, 0xdb, 0x2e, 0x37, 0xf6, 0x69, 0x97, 0x51, 0xb7, 0x29, 0x61, 0x98, 0x33, + 0x7d, 0x1a, 0xc6, 0xd5, 0xe3, 0x40, 0x96, 0xf9, 0x6c, 0x0c, 0x4e, 0xd0, 0x47, 0x59, 0x56, 0x43, + 0xd3, 0x9d, 0xd3, 0x15, 0x6b, 0xcf, 0x74, 0x68, 0xe2, 0x66, 0x6c, 0x71, 0xbb, 0x8c, 0x7b, 0xd5, + 0xb3, 0xac, 0xba, 0xc3, 0xc8, 0xd9, 0x82, 0xf8, 0x2a, 0xa1, 0x23, 0x16, 0x71, 0x0c, 0x47, 0xad, + 0x73, 0x4b, 0xb1, 0x02, 0x81, 0xb2, 0x87, 0x5c, 0x11, 0x06, 0xd5, 0xc4, 0x1b, 0xae, 0x3a, 0x56, + 0xb7, 0xd8, 0x7d, 0xf8, 0x28, 0x1d, 0x50, 0x09, 0x02, 0xa0, 0x57, 0xdf, 0x27, 0x21, 0xae, 0x36, + 0xd9, 0x55, 0x8e, 0x28, 0x19, 0x69, 0xb4, 0x20, 0x5f, 0x82, 0x21, 0x7e, 0xa0, 0x8c, 0xd2, 0x10, + 0xdd, 0xc1, 0x7b, 0xb4, 0x9d, 0x94, 0x42, 0x7e, 0xa2, 0x59, 0x88, 0x53, 0xe1, 0xf9, 0x04, 0x92, + 0x99, 0x6d, 0x91, 0x7e, 0x96, 0x0a, 0xa9, 0x30, 0x34, 0xf9, 0x19, 0x48, 0x14, 0x8d, 0x86, 0xa6, + 0x1b, 0x41, 0x6e, 0x49, 0xc6, 0x8d, 0xca, 0x6c, 0x36, 0x79, 0xbe, 0xa1, 0xb0, 0x02, 0x3a, 0x0c, + 0x83, 0xec, 0x7d, 0x04, 0xbf, 0x8e, 0xc2, 0x4b, 0xf2, 0x1c, 0x0c, 0x51, 0xde, 0x2b, 0x26, 0x42, + 0xfc, 0x65, 0x1d, 0x7f, 0x88, 0x41, 0x53, 0x53, 0xce, 0x3e, 0xe2, 0x09, 0x8b, 0x20, 0x56, 0x55, + 0x1d, 0x95, 0xeb, 0x4d, 0x7f, 0xcb, 0x6f, 0x86, 0x04, 0x67, 0x62, 0xa3, 0x33, 0x10, 0x35, 0x4c, + 0x9b, 0x5f, 0x28, 0xc9, 0x76, 0x52, 0x65, 0xc5, 0x2c, 0xc4, 0x48, 0xa6, 0xa2, 0x10, 0xe4, 0x82, + 0xd2, 0x31, 0xa8, 0x3e, 0xe9, 0x0b, 0xaa, 0xbe, 0x2e, 0xf7, 0xfd, 0x64, 0x5d, 0xda, 0xe2, 0x0e, + 0xae, 0xb3, 0x7c, 0x2a, 0x02, 0x53, 0xbe, 0xda, 0x2b, 0xd8, 0xb2, 0x35, 0x43, 0xe7, 0xf3, 0x39, + 0xf3, 0x16, 0xe4, 0x13, 0x92, 0xd7, 0x77, 0x70, 0x97, 0x37, 0x41, 0x34, 0x6f, 0x9a, 0x28, 0x0b, + 0x09, 0x5a, 0xae, 0x18, 0xcc, 0x5f, 0x62, 0x8a, 0x5b, 0x26, 0x75, 0xb6, 0xb1, 0xe5, 0x5c, 0x55, + 0x2d, 0xf7, 0x09, 0xa1, 0x28, 0xcb, 0x4f, 0x41, 0x72, 0xce, 0xd0, 0x6d, 0xac, 0xdb, 0x4d, 0x3a, + 0x06, 0x37, 0xeb, 0x46, 0x65, 0x87, 0x73, 0x60, 0x05, 0x62, 0x70, 0xd5, 0x34, 0x29, 0x65, 0x4c, + 0x21, 0x3f, 0x59, 0x6e, 0x58, 0x58, 0xeb, 0x68, 0xa2, 0xa7, 0xf6, 0x6f, 0x22, 0xae, 0xa4, 0x6b, + 0xa3, 0xff, 0x2d, 0xc1, 0xf1, 0xd6, 0x01, 0xb5, 0x83, 0xf7, 0xec, 0xfd, 0x8e, 0xa7, 0xe7, 0x21, + 0xb9, 0x4a, 0xdf, 0xf1, 0x5f, 0xc2, 0x7b, 0x28, 0x0b, 0x43, 0xb8, 0x7a, 0xe6, 0xec, 0xd9, 0x47, + 0x9f, 0x62, 0xde, 0x7e, 0x71, 0x40, 0x11, 0x00, 0x34, 0x05, 0x49, 0x1b, 0x57, 0xcc, 0x33, 0x67, + 0xcf, 0xed, 0x3c, 0xca, 0xdc, 0x8b, 0x64, 0x40, 0x2e, 0x28, 0x97, 0x20, 0x5a, 0xbf, 0xfe, 0xa9, + 0x69, 0xa9, 0x10, 0x87, 0xa8, 0xdd, 0x6c, 0xdc, 0x51, 0x1f, 0x79, 0x25, 0x0e, 0x33, 0x7e, 0x4a, + 0x1a, 0xa9, 0xdc, 0xac, 0x84, 0xdb, 0x20, 0xed, 0xb3, 0x01, 0xc5, 0xe8, 0x90, 0xcc, 0x76, 0xb5, + 0xa4, 0xfc, 0xeb, 0x12, 0xa4, 0xdc, 0x54, 0x69, 0x0d, 0x3b, 0xe8, 0xbc, 0x3f, 0xff, 0xe1, 0xc3, + 0xe6, 0xd8, 0x6c, 0xb8, 0x2d, 0x2f, 0xa5, 0x53, 0x7c, 0xe8, 0xe8, 0x09, 0xea, 0x88, 0xa6, 0x61, + 0xf3, 0x67, 0x65, 0x3d, 0x48, 0x5d, 0x64, 0xf4, 0x10, 0x20, 0x1a, 0xe1, 0xca, 0x57, 0x0c, 0x47, + 0xd3, 0x6b, 0x65, 0xd3, 0xb8, 0xca, 0x1f, 0xeb, 0x46, 0x95, 0x34, 0xad, 0xb9, 0x4c, 0x2b, 0x56, + 0x09, 0x9c, 0x08, 0x9d, 0x74, 0xb9, 0x04, 0xd3, 0x3b, 0x12, 0x04, 0x44, 0x11, 0x9d, 0x87, 0x21, + 0xb3, 0xb9, 0x59, 0x16, 0x11, 0x63, 0xf8, 0xcc, 0xf1, 0x76, 0xe3, 0x5f, 0xf8, 0x07, 0x8f, 0x00, + 0x83, 0x66, 0x73, 0x93, 0x78, 0xcb, 0x5d, 0x90, 0x6a, 0x23, 0xcc, 0xf0, 0x15, 0x4f, 0x0e, 0xfa, + 0xf9, 0x08, 0xae, 0x41, 0xd9, 0xb4, 0x34, 0xc3, 0xd2, 0x9c, 0x3d, 0x9a, 0xbf, 0x46, 0x95, 0xb4, + 0xa8, 0x58, 0xe5, 0x70, 0x79, 0x07, 0xc6, 0xd6, 0xe8, 0xfa, 0xd6, 0x93, 0xfc, 0xac, 0x27, 0x9f, + 0xd4, 0x5b, 0xbe, 0x8e, 0x92, 0x45, 0x5a, 0x24, 0x2b, 0x3c, 0xdb, 0xd1, 0x3b, 0x9f, 0xd8, 0xbf, + 0x77, 0x06, 0x33, 0xc4, 0x3f, 0x3e, 0x1a, 0x18, 0x9c, 0xcc, 0x39, 0xfd, 0xe1, 0xab, 0x5f, 0xc7, + 0xec, 0x95, 0x4d, 0x64, 0xbb, 0x4f, 0xaa, 0xd9, 0x1e, 0x61, 0x34, 0xdb, 0x73, 0x08, 0xc9, 0x4f, + 0xc1, 0xc8, 0xaa, 0x6a, 0x39, 0x6b, 0xd8, 0xb9, 0x88, 0xd5, 0x2a, 0xb6, 0x82, 0xb3, 0xee, 0x88, + 0x98, 0x75, 0x11, 0xc4, 0xe8, 0xd4, 0xca, 0x66, 0x1d, 0xfa, 0x5b, 0xde, 0x86, 0x18, 0xbd, 0x19, + 0xea, 0xce, 0xc8, 0x9c, 0x82, 0xcd, 0xc8, 0x24, 0x96, 0xee, 0x39, 0xd8, 0x16, 0xe9, 0x2d, 0x2d, + 0xa0, 0xc7, 0xc5, 0xbc, 0x1a, 0xed, 0x3e, 0xaf, 0x72, 0x47, 0xe4, 0xb3, 0x6b, 0x1d, 0x86, 0x0a, + 0x24, 0x14, 0x2f, 0x14, 0x5d, 0x41, 0x24, 0x4f, 0x10, 0xb4, 0x04, 0x63, 0xa6, 0x6a, 0x39, 0xf4, + 0x49, 0xcc, 0x36, 0xd5, 0x82, 0xfb, 0xfa, 0x74, 0xeb, 0xc8, 0x0b, 0x28, 0xcb, 0x5b, 0x19, 0x31, + 0xfd, 0x40, 0xf9, 0x8f, 0x62, 0x30, 0xc8, 0x8d, 0xf1, 0x26, 0x18, 0xe2, 0x66, 0xe5, 0xde, 0x79, + 0x62, 0xb6, 0x75, 0x62, 0x9a, 0x75, 0x27, 0x10, 0xce, 0x4f, 0xd0, 0xa0, 0xfb, 0x20, 0x51, 0xd9, + 0x56, 0x35, 0xbd, 0xac, 0x55, 0xc5, 0x56, 0xc3, 0x6b, 0x37, 0xa7, 0x87, 0xe6, 0x08, 0x6c, 0xa1, + 0xa8, 0x0c, 0xd1, 0xca, 0x85, 0x2a, 0xc9, 0x04, 0xb6, 0xb1, 0x56, 0xdb, 0x76, 0xf8, 0x08, 0xe3, + 0x25, 0xf4, 0x24, 0xc4, 0x88, 0x43, 0xf0, 0x07, 0x93, 0xd9, 0x96, 0x0d, 0x1f, 0x37, 0xd9, 0x2b, + 0x24, 0x48, 0xc3, 0x1f, 0xfa, 0xf6, 0xb4, 0xa4, 0x50, 0x0a, 0x34, 0x07, 0x23, 0x75, 0xd5, 0x76, + 0xca, 0x74, 0x06, 0x23, 0xcd, 0xc7, 0xf9, 0x7a, 0xbb, 0xc5, 0x20, 0xdc, 0xb0, 0x5c, 0xf4, 0x61, + 0x42, 0xc5, 0x40, 0x55, 0x74, 0x12, 0xd2, 0x94, 0x49, 0xc5, 0x68, 0x34, 0x34, 0x87, 0xe5, 0x56, + 0x83, 0xd4, 0xee, 0xa3, 0x04, 0x3e, 0x47, 0xc1, 0x34, 0xc3, 0x3a, 0x06, 0x49, 0xfa, 0x44, 0x8b, + 0xa2, 0xb0, 0xeb, 0xc8, 0x09, 0x02, 0xa0, 0x95, 0xf7, 0xc3, 0x98, 0x17, 0x1f, 0x19, 0x4a, 0x82, + 0x71, 0xf1, 0xc0, 0x14, 0xf1, 0x11, 0x98, 0xd4, 0xf1, 0x2e, 0xbd, 0x20, 0x1d, 0xc0, 0x4e, 0x52, + 0x6c, 0x44, 0xea, 0x2e, 0x07, 0x29, 0xee, 0x85, 0xd1, 0x8a, 0x30, 0x3e, 0xc3, 0x05, 0x8a, 0x3b, + 0xe2, 0x42, 0x29, 0xda, 0x51, 0x48, 0xa8, 0xa6, 0xc9, 0x10, 0x86, 0x79, 0x7c, 0x34, 0x4d, 0x5a, + 0x75, 0x0a, 0xc6, 0xa9, 0x8e, 0x16, 0xb6, 0x9b, 0x75, 0x87, 0x33, 0x49, 0x51, 0x9c, 0x31, 0x52, + 0xa1, 0x30, 0x38, 0xc5, 0xbd, 0x1b, 0x46, 0xf0, 0x15, 0xad, 0x8a, 0xf5, 0x0a, 0x66, 0x78, 0x23, + 0x14, 0x2f, 0x25, 0x80, 0x14, 0xe9, 0x01, 0x70, 0xe3, 0x5e, 0x59, 0xc4, 0xe4, 0x51, 0xc6, 0x4f, + 0xc0, 0xf3, 0x0c, 0x2c, 0x67, 0x20, 0x56, 0x54, 0x1d, 0x95, 0x24, 0x18, 0xce, 0x2e, 0x9b, 0x68, + 0x52, 0x0a, 0xf9, 0x29, 0xbf, 0x1e, 0x81, 0xd8, 0x65, 0xc3, 0xc1, 0xe8, 0x31, 0x5f, 0x02, 0x38, + 0xda, 0xce, 0x9f, 0xd7, 0xb4, 0x9a, 0x8e, 0xab, 0x4b, 0x76, 0xcd, 0xf7, 0x3d, 0x05, 0xcf, 0x9d, + 0x22, 0x01, 0x77, 0x9a, 0x84, 0xb8, 0x65, 0x34, 0xf5, 0xaa, 0xb8, 0xc9, 0x4b, 0x0b, 0xa8, 0x04, + 0x09, 0xd7, 0x4b, 0x62, 0xbd, 0xbc, 0x64, 0x8c, 0x78, 0x09, 0xf1, 0x61, 0x0e, 0x50, 0x86, 0x36, + 0xb9, 0xb3, 0x14, 0x20, 0xe9, 0x06, 0x2f, 0xee, 0x6d, 0xfd, 0x39, 0xac, 0x47, 0x46, 0x26, 0x13, + 0xb7, 0xef, 0x5d, 0xe3, 0x31, 0x8f, 0x4b, 0xbb, 0x15, 0xdc, 0x7a, 0x01, 0xb7, 0xe2, 0xdf, 0x76, + 0x18, 0xa2, 0x7a, 0x79, 0x6e, 0xc5, 0xbe, 0xef, 0x70, 0x1c, 0x92, 0xb6, 0x56, 0xd3, 0x55, 0xa7, + 0x69, 0x61, 0xee, 0x79, 0x1e, 0x40, 0xfe, 0x8a, 0x04, 0x83, 0xcc, 0x93, 0x7d, 0x76, 0x93, 0xda, + 0xdb, 0x2d, 0xd2, 0xc9, 0x6e, 0xd1, 0x83, 0xdb, 0x2d, 0x0f, 0xe0, 0x0a, 0x63, 0xf3, 0x27, 0xf7, + 0x6d, 0x32, 0x06, 0x26, 0xe2, 0x9a, 0x56, 0xe3, 0x03, 0xd5, 0x47, 0x24, 0xff, 0x07, 0x89, 0x24, + 0xb1, 0xbc, 0x1e, 0xe5, 0x61, 0x44, 0xc8, 0x55, 0xde, 0xaa, 0xab, 0x35, 0xee, 0x3b, 0x27, 0x3a, + 0x0a, 0x77, 0xa1, 0xae, 0xd6, 0x94, 0x61, 0x2e, 0x0f, 0x29, 0xb4, 0xef, 0x87, 0x48, 0x87, 0x7e, + 0x08, 0x74, 0x7c, 0xf4, 0x60, 0x1d, 0x1f, 0xe8, 0xa2, 0x58, 0xb8, 0x8b, 0xbe, 0x18, 0xa1, 0x8b, + 0x19, 0xd3, 0xb0, 0xd5, 0xfa, 0x8f, 0x63, 0x44, 0x1c, 0x83, 0xa4, 0x69, 0xd4, 0xcb, 0xac, 0x86, + 0xdd, 0x70, 0x4f, 0x98, 0x46, 0x5d, 0x69, 0xe9, 0xf6, 0xf8, 0x6d, 0x1a, 0x2e, 0x83, 0xb7, 0xc1, + 0x6a, 0x43, 0x61, 0xab, 0x59, 0x90, 0x62, 0xa6, 0xe0, 0x73, 0xd9, 0x23, 0xc4, 0x06, 0x74, 0x72, + 0x94, 0x5a, 0xe7, 0x5e, 0x26, 0x36, 0xc3, 0x54, 0x38, 0x1e, 0xa1, 0x60, 0xa1, 0xbf, 0xdd, 0x2a, + 0xd8, 0xef, 0x96, 0x0a, 0xc7, 0x93, 0xff, 0xa6, 0x04, 0xb0, 0x48, 0x2c, 0x4b, 0xf5, 0x25, 0xb3, + 0x90, 0x4d, 0x45, 0x28, 0x07, 0x5a, 0x9e, 0xea, 0xd4, 0x69, 0xbc, 0xfd, 0x94, 0xed, 0x97, 0x7b, + 0x0e, 0x46, 0x3c, 0x67, 0xb4, 0xb1, 0x10, 0x66, 0xaa, 0x4b, 0x56, 0xbd, 0x86, 0x1d, 0x25, 0x75, + 0xc5, 0x57, 0x92, 0xff, 0xb9, 0x04, 0x49, 0x2a, 0xd3, 0x12, 0x76, 0xd4, 0x40, 0x1f, 0x4a, 0x07, + 0xef, 0xc3, 0x13, 0x00, 0x8c, 0x8d, 0xad, 0x5d, 0xc3, 0xdc, 0xb3, 0x92, 0x14, 0xb2, 0xa6, 0x5d, + 0xc3, 0xe8, 0x9c, 0x6b, 0xf0, 0x68, 0x77, 0x83, 0x8b, 0xac, 0x9b, 0x9b, 0xfd, 0x08, 0x0c, 0xd1, + 0x4f, 0x54, 0xed, 0xda, 0x3c, 0x91, 0x1e, 0xd4, 0x9b, 0x8d, 0xf5, 0x5d, 0x5b, 0x7e, 0x11, 0x86, + 0xd6, 0x77, 0xd9, 0xde, 0xc8, 0x31, 0x48, 0x5a, 0x86, 0xc1, 0xe7, 0x64, 0x96, 0x0b, 0x25, 0x08, + 0x80, 0x4e, 0x41, 0x62, 0x3f, 0x20, 0xe2, 0xed, 0x07, 0x78, 0x1b, 0x1a, 0xd1, 0xbe, 0x36, 0x34, + 0x4e, 0xfd, 0x3b, 0x09, 0x86, 0x7d, 0xf1, 0x01, 0x3d, 0x0a, 0x87, 0x0a, 0x8b, 0x2b, 0x73, 0x97, + 0xca, 0x0b, 0xc5, 0xf2, 0x85, 0xc5, 0xfc, 0xbc, 0xf7, 0x86, 0x2b, 0x7b, 0xf8, 0xfa, 0x8d, 0x19, + 0xe4, 0xc3, 0xdd, 0xd0, 0xe9, 0x8e, 0x12, 0x3a, 0x0d, 0x93, 0x41, 0x92, 0x7c, 0x61, 0xad, 0xb4, + 0xbc, 0x9e, 0x96, 0xb2, 0x87, 0xae, 0xdf, 0x98, 0x19, 0xf7, 0x51, 0xe4, 0x37, 0x6d, 0xac, 0x3b, + 0xad, 0x04, 0x73, 0x2b, 0x4b, 0x4b, 0x0b, 0xeb, 0xe9, 0x48, 0x0b, 0x01, 0x0f, 0xd8, 0x0f, 0xc0, + 0x78, 0x90, 0x60, 0x79, 0x61, 0x31, 0x1d, 0xcd, 0xa2, 0xeb, 0x37, 0x66, 0x46, 0x7d, 0xd8, 0xcb, + 0x5a, 0x3d, 0x9b, 0xf8, 0xc0, 0xa7, 0xa7, 0x06, 0x7e, 0xe5, 0x97, 0xa7, 0x24, 0xa2, 0xd9, 0x48, + 0x20, 0x46, 0xa0, 0x87, 0xe0, 0xc8, 0xda, 0xc2, 0xfc, 0x72, 0xa9, 0x58, 0x5e, 0x5a, 0x9b, 0x17, + 0x7b, 0xd0, 0x42, 0xbb, 0xb1, 0xeb, 0x37, 0x66, 0x86, 0xb9, 0x4a, 0x9d, 0xb0, 0x57, 0x95, 0xd2, + 0xe5, 0x95, 0xf5, 0x52, 0x5a, 0x62, 0xd8, 0xab, 0x16, 0xbe, 0x62, 0x38, 0xec, 0x1b, 0x76, 0x8f, + 0xc0, 0xd1, 0x36, 0xd8, 0xae, 0x62, 0xe3, 0xd7, 0x6f, 0xcc, 0x8c, 0xac, 0x5a, 0x98, 0x8d, 0x1f, + 0x4a, 0x31, 0x0b, 0x99, 0x56, 0x8a, 0x95, 0xd5, 0x95, 0xb5, 0xfc, 0x62, 0x7a, 0x26, 0x9b, 0xbe, + 0x7e, 0x63, 0x26, 0x25, 0x82, 0x21, 0xdd, 0xe8, 0x77, 0x35, 0xbb, 0x93, 0x2b, 0x9e, 0x3f, 0x7d, + 0x18, 0xee, 0xe9, 0x70, 0xc6, 0x24, 0x4e, 0x27, 0x0e, 0x74, 0xca, 0xd4, 0x71, 0x9f, 0x3d, 0xdb, + 0x63, 0xfb, 0xb9, 0xf7, 0xd2, 0xe9, 0xe0, 0x27, 0x58, 0xd9, 0xae, 0x8b, 0x3b, 0xf9, 0x83, 0x12, + 0x8c, 0x5e, 0xd4, 0x6c, 0xc7, 0xb0, 0xb4, 0x8a, 0x5a, 0xa7, 0x2f, 0xb7, 0xce, 0xf5, 0x1b, 0x5b, + 0x43, 0x43, 0xfd, 0x69, 0x18, 0xbc, 0xa2, 0xd6, 0x59, 0x50, 0x8b, 0xd2, 0x0f, 0xcd, 0x74, 0x38, + 0xf2, 0x71, 0x43, 0x9b, 0x60, 0xc0, 0xc8, 0xe4, 0x5f, 0x8b, 0xc0, 0x18, 0x1d, 0x0c, 0x36, 0xfb, + 0x04, 0x19, 0x59, 0x63, 0x15, 0x20, 0x66, 0xa9, 0x0e, 0xdf, 0x34, 0x2c, 0xcc, 0xf2, 0xd3, 0xc7, + 0xfb, 0xfa, 0x38, 0x4b, 0x2b, 0xe2, 0x8a, 0x42, 0x69, 0xd1, 0xdb, 0x21, 0xd1, 0x50, 0x77, 0xcb, + 0x94, 0x0f, 0x5b, 0xb9, 0xe4, 0xf7, 0xc7, 0xe7, 0xd6, 0xcd, 0xe9, 0xb1, 0x3d, 0xb5, 0x51, 0xcf, + 0xc9, 0x82, 0x8f, 0xac, 0x0c, 0x35, 0xd4, 0x5d, 0x22, 0x22, 0x32, 0x61, 0x8c, 0x40, 0x2b, 0xdb, + 0xaa, 0x5e, 0xc3, 0xac, 0x11, 0xba, 0x05, 0x5a, 0xb8, 0xb8, 0xef, 0x46, 0x0e, 0x7b, 0x8d, 0xf8, + 0xd8, 0xc9, 0xca, 0x48, 0x43, 0xdd, 0x9d, 0xa3, 0x00, 0xd2, 0x62, 0x2e, 0xf1, 0xd1, 0x57, 0xa7, + 0x07, 0xe8, 0x89, 0xee, 0xb7, 0x24, 0x00, 0xcf, 0x62, 0xe8, 0xed, 0x90, 0xae, 0xb8, 0x25, 0x4a, + 0x2b, 0xce, 0x26, 0xef, 0xef, 0xd4, 0x17, 0x21, 0x7b, 0xb3, 0xb9, 0xf9, 0x9b, 0x37, 0xa7, 0x25, + 0x65, 0xac, 0x12, 0xea, 0x8a, 0xb7, 0xc1, 0x70, 0xd3, 0xac, 0xaa, 0x0e, 0x2e, 0xd3, 0x75, 0x5c, + 0xa4, 0xe7, 0x3c, 0x3f, 0x45, 0x78, 0xdd, 0xba, 0x39, 0x8d, 0x98, 0x5a, 0x3e, 0x62, 0x99, 0xce, + 0xfe, 0xc0, 0x20, 0x84, 0xc0, 0xa7, 0xd3, 0xd7, 0x25, 0x18, 0x2e, 0xfa, 0xee, 0x54, 0x66, 0x60, + 0xa8, 0x61, 0xe8, 0xda, 0x0e, 0xf7, 0xc7, 0xa4, 0x22, 0x8a, 0x28, 0x0b, 0x09, 0xf6, 0x98, 0xd5, + 0xd9, 0x13, 0x5b, 0xa1, 0xa2, 0x4c, 0xa8, 0xae, 0xe2, 0x4d, 0x5b, 0x13, 0xbd, 0xa1, 0x88, 0x22, + 0xba, 0x00, 0x69, 0x1b, 0x57, 0x9a, 0x96, 0xe6, 0xec, 0x95, 0x2b, 0x86, 0xee, 0xa8, 0x15, 0x87, + 0x3d, 0x8b, 0x2c, 0x1c, 0xbb, 0x75, 0x73, 0xfa, 0x08, 0x93, 0x35, 0x8c, 0x21, 0x2b, 0x63, 0x02, + 0x34, 0xc7, 0x20, 0xa4, 0x85, 0x2a, 0x76, 0x54, 0xad, 0x6e, 0x67, 0xd8, 0xe5, 0x04, 0x51, 0xf4, + 0xe9, 0xf2, 0xb9, 0x21, 0xff, 0xc6, 0xd6, 0x05, 0x48, 0x1b, 0x26, 0xb6, 0x02, 0x89, 0xa8, 0x14, + 0x6e, 0x39, 0x8c, 0x21, 0x2b, 0x63, 0x02, 0x24, 0x92, 0x54, 0x87, 0x74, 0xb3, 0x58, 0x28, 0x9a, + 0xcd, 0x4d, 0x6f, 0x3f, 0x6c, 0xb2, 0xa5, 0x37, 0xf2, 0xfa, 0x5e, 0xe1, 0x31, 0x8f, 0x7b, 0x98, + 0x4e, 0xfe, 0xc6, 0x97, 0x1e, 0x9e, 0xe4, 0xae, 0xe1, 0xed, 0x4f, 0x5d, 0xc2, 0x7b, 0xa4, 0xfb, + 0x39, 0xea, 0x2a, 0xc5, 0x24, 0x69, 0xe7, 0x8b, 0xaa, 0x56, 0x17, 0xcf, 0xfb, 0x15, 0x5e, 0x42, + 0x39, 0x18, 0xb4, 0x1d, 0xd5, 0x69, 0xda, 0xfc, 0xa4, 0x57, 0xee, 0xe4, 0x6a, 0x05, 0x43, 0xaf, + 0xae, 0x51, 0x4c, 0x85, 0x53, 0xa0, 0x0b, 0x30, 0xc8, 0x8f, 0xd0, 0xe3, 0xfb, 0x1e, 0xdf, 0xf4, + 0xae, 0x04, 0xa3, 0x26, 0x16, 0xa9, 0xe2, 0x3a, 0xae, 0xb1, 0xb4, 0x6a, 0x5b, 0x25, 0xab, 0x0f, + 0xfa, 0xed, 0xbd, 0xc2, 0xc2, 0xbe, 0x07, 0x21, 0xb7, 0x54, 0x98, 0x9f, 0xac, 0x8c, 0xb9, 0xa0, + 0x35, 0x0a, 0x41, 0x97, 0x02, 0x97, 0x7f, 0xf9, 0x07, 0x2a, 0xef, 0xee, 0xa4, 0xbe, 0xcf, 0xa7, + 0xc5, 0xfe, 0x84, 0xff, 0xea, 0xf0, 0x05, 0x48, 0x37, 0xf5, 0x4d, 0x43, 0xa7, 0x6f, 0x70, 0x79, + 0x7e, 0x4f, 0xd6, 0x77, 0x51, 0xbf, 0x73, 0x84, 0x31, 0x64, 0x65, 0xcc, 0x05, 0x5d, 0x64, 0xab, + 0x80, 0x2a, 0x8c, 0x7a, 0x58, 0x74, 0xa0, 0x26, 0x7b, 0x0e, 0xd4, 0xbb, 0xf8, 0x40, 0x3d, 0x14, + 0x6e, 0xc5, 0x1b, 0xab, 0x23, 0x2e, 0x90, 0x90, 0xa1, 0x8b, 0x00, 0x5e, 0x78, 0xa0, 0xfb, 0x14, + 0xc3, 0x9d, 0x3b, 0xde, 0x8b, 0x31, 0x62, 0xbd, 0xe7, 0xd1, 0xa2, 0x77, 0xc2, 0x44, 0x43, 0xd3, + 0xcb, 0x36, 0xae, 0x6f, 0x95, 0xb9, 0x81, 0x09, 0x4b, 0xfa, 0x09, 0xa5, 0xc2, 0xe2, 0xfe, 0xfc, + 0xe1, 0xd6, 0xcd, 0xe9, 0x2c, 0x0f, 0xa1, 0xad, 0x2c, 0x65, 0x65, 0xbc, 0xa1, 0xe9, 0x6b, 0xb8, + 0xbe, 0x55, 0x74, 0x61, 0xb9, 0xd4, 0x07, 0x5e, 0x9d, 0x1e, 0xe0, 0xc3, 0x75, 0x40, 0x3e, 0x47, + 0xf7, 0xce, 0xf9, 0x30, 0xc3, 0x36, 0x59, 0x93, 0xa8, 0xa2, 0xc0, 0xaf, 0x1a, 0x78, 0x00, 0x36, + 0xcc, 0x5f, 0xfe, 0x83, 0x19, 0x49, 0xfe, 0x9c, 0x04, 0x83, 0xc5, 0xcb, 0xab, 0xaa, 0x66, 0xa1, + 0x05, 0x18, 0xf7, 0x3c, 0x27, 0x38, 0xc8, 0x8f, 0xdf, 0xba, 0x39, 0x9d, 0x09, 0x3b, 0x97, 0x3b, + 0xca, 0x3d, 0x07, 0x16, 0xc3, 0x7c, 0xa1, 0xd3, 0xc2, 0x35, 0xc0, 0xaa, 0x05, 0x45, 0x6e, 0x5d, + 0xd6, 0x86, 0xd4, 0x2c, 0xc1, 0x10, 0x93, 0xd6, 0x46, 0x39, 0x88, 0x9b, 0xe4, 0x07, 0x3f, 0x18, + 0x98, 0xea, 0xe8, 0xbc, 0x14, 0xdf, 0xdd, 0xc8, 0x24, 0x24, 0xf2, 0x87, 0x23, 0x00, 0xc5, 0xcb, + 0x97, 0xd7, 0x2d, 0xcd, 0xac, 0x63, 0xe7, 0x76, 0x6a, 0xbe, 0x0e, 0x87, 0x7c, 0xab, 0x24, 0xab, + 0x12, 0xd2, 0x7e, 0xe6, 0xd6, 0xcd, 0xe9, 0xe3, 0x61, 0xed, 0x7d, 0x68, 0xb2, 0x32, 0xe1, 0xad, + 0x97, 0xac, 0x4a, 0x5b, 0xae, 0x55, 0xdb, 0x71, 0xb9, 0x46, 0x3b, 0x73, 0xf5, 0xa1, 0xf9, 0xb9, + 0x16, 0x6d, 0xa7, 0xbd, 0x69, 0xd7, 0x60, 0xd8, 0x33, 0x89, 0x8d, 0x8a, 0x90, 0x70, 0xf8, 0x6f, + 0x6e, 0x61, 0xb9, 0xb3, 0x85, 0x05, 0x19, 0xb7, 0xb2, 0x4b, 0x29, 0xff, 0x99, 0x04, 0xe0, 0xf9, + 0xec, 0x4f, 0xa7, 0x8b, 0x91, 0x50, 0xce, 0x03, 0x6f, 0xf4, 0x40, 0xa9, 0x1a, 0xa7, 0x0e, 0xd9, + 0xf3, 0xe7, 0x22, 0x30, 0xb1, 0x21, 0x22, 0xcf, 0x4f, 0xbd, 0x0d, 0x56, 0x61, 0x08, 0xeb, 0x8e, + 0xa5, 0x51, 0x23, 0x90, 0xde, 0x7e, 0xa4, 0x53, 0x6f, 0xb7, 0xd1, 0x89, 0x7e, 0x44, 0x4a, 0x6c, + 0xba, 0x73, 0x36, 0x21, 0x6b, 0xfc, 0x42, 0x14, 0x32, 0x9d, 0x28, 0xd1, 0x1c, 0x8c, 0x55, 0x2c, + 0xcc, 0x2e, 0x5e, 0xf9, 0x77, 0xfe, 0x0a, 0x59, 0x2f, 0xb3, 0x0c, 0x21, 0xc8, 0xca, 0xa8, 0x80, + 0xf0, 0xd9, 0xa3, 0x06, 0x24, 0xed, 0x23, 0x6e, 0x47, 0xef, 0x6f, 0xf5, 0x97, 0xe7, 0xc9, 0x7c, + 0xfa, 0x10, 0x8d, 0x04, 0x19, 0xb0, 0xf9, 0x63, 0xd4, 0x83, 0xd2, 0x09, 0xe4, 0x25, 0x18, 0xd3, + 0x74, 0xcd, 0xd1, 0xd4, 0x7a, 0x79, 0x53, 0xad, 0xab, 0x7a, 0xe5, 0x20, 0x59, 0x33, 0x0b, 0xf9, + 0xbc, 0xd9, 0x10, 0x3b, 0x59, 0x19, 0xe5, 0x90, 0x02, 0x03, 0xa0, 0x8b, 0x30, 0x24, 0x9a, 0x8a, + 0x1d, 0x28, 0xdb, 0x10, 0xe4, 0xbe, 0x04, 0xef, 0xe7, 0xa3, 0x30, 0xae, 0xe0, 0xea, 0xff, 0xef, + 0x8a, 0xfd, 0x75, 0xc5, 0x12, 0x00, 0x1b, 0xee, 0x24, 0xc0, 0x1e, 0xa0, 0x37, 0x48, 0xc0, 0x48, + 0x32, 0x0e, 0x45, 0xdb, 0xf1, 0xf5, 0xc7, 0xcd, 0x08, 0xa4, 0xfc, 0xfd, 0xf1, 0x17, 0x74, 0x56, + 0x42, 0x0b, 0x5e, 0x24, 0x8a, 0xf1, 0x4f, 0xef, 0x76, 0x88, 0x44, 0x2d, 0xde, 0xdb, 0x3d, 0x04, + 0xfd, 0x8f, 0x08, 0x0c, 0xae, 0xaa, 0x96, 0xda, 0xb0, 0x51, 0xa5, 0x25, 0xd3, 0x14, 0xdb, 0x8f, + 0x2d, 0x1f, 0x58, 0xe7, 0xbb, 0x1d, 0x3d, 0x12, 0xcd, 0x8f, 0xb6, 0x49, 0x34, 0xdf, 0x02, 0xa3, + 0x64, 0x39, 0xec, 0xbb, 0xc2, 0x40, 0xac, 0x3d, 0x52, 0x38, 0xea, 0x71, 0x09, 0xd6, 0xb3, 0xd5, + 0xf2, 0x65, 0xff, 0x1d, 0x86, 0x61, 0x82, 0xe1, 0x05, 0x66, 0x42, 0x7e, 0xd8, 0x5b, 0x96, 0xfa, + 0x2a, 0x65, 0x05, 0x1a, 0xea, 0x6e, 0x89, 0x15, 0xd0, 0x22, 0xa0, 0x6d, 0x77, 0x67, 0xa4, 0xec, + 0x99, 0x93, 0xd0, 0x9f, 0xb8, 0x75, 0x73, 0xfa, 0x28, 0xa3, 0x6f, 0xc5, 0x91, 0x95, 0x71, 0x0f, + 0x28, 0xb8, 0x3d, 0x0e, 0x40, 0xf4, 0x2a, 0xb3, 0x2b, 0xdc, 0x6c, 0xb9, 0x73, 0xe8, 0xd6, 0xcd, + 0xe9, 0x71, 0xc6, 0xc5, 0xab, 0x93, 0x95, 0x24, 0x29, 0x14, 0xc9, 0x6f, 0x9f, 0x67, 0x7f, 0x5a, + 0x02, 0xe4, 0x85, 0x7c, 0x05, 0xdb, 0x26, 0x59, 0x9f, 0x91, 0x44, 0xdc, 0x97, 0x35, 0x4b, 0xdd, + 0x13, 0x71, 0x8f, 0x5e, 0x24, 0xe2, 0xbe, 0x91, 0xf2, 0x94, 0x17, 0x1e, 0x23, 0xbd, 0xee, 0x33, + 0x73, 0x17, 0x09, 0xc7, 0xc3, 0x01, 0xf9, 0x5f, 0x4a, 0x70, 0xb4, 0xc5, 0xa3, 0x5c, 0x61, 0xff, + 0x12, 0x20, 0xcb, 0x57, 0xc9, 0xbf, 0xa3, 0xc8, 0x84, 0xde, 0xb7, 0x83, 0x8e, 0x5b, 0x2d, 0x71, + 0xf7, 0xf6, 0x45, 0x78, 0x76, 0x61, 0xfe, 0x9f, 0x49, 0x30, 0xe9, 0x6f, 0xde, 0x55, 0x64, 0x19, + 0x52, 0xfe, 0xd6, 0xb9, 0x0a, 0xf7, 0xf4, 0xa3, 0x02, 0x97, 0x3e, 0x40, 0x8f, 0x9e, 0xf5, 0x86, + 0x2b, 0xdb, 0x3b, 0x7b, 0xb4, 0x6f, 0x6b, 0x08, 0x99, 0xc2, 0xc3, 0x36, 0x46, 0xfb, 0xe3, 0xff, + 0x48, 0x10, 0x5b, 0x35, 0x8c, 0x3a, 0x32, 0x60, 0x5c, 0x37, 0x9c, 0x32, 0xf1, 0x2c, 0x5c, 0xf5, + 0xdf, 0x5b, 0x4f, 0x16, 0xe6, 0xf6, 0x67, 0xa4, 0xef, 0xdd, 0x9c, 0x6e, 0x65, 0xa5, 0x8c, 0xe9, + 0x86, 0x53, 0xa0, 0x10, 0x7e, 0x75, 0xfd, 0x9d, 0x30, 0x12, 0x6c, 0x8c, 0x45, 0xc9, 0xe7, 0xf6, + 0xdd, 0x58, 0x90, 0xcd, 0xad, 0x9b, 0xd3, 0x93, 0xde, 0x88, 0x71, 0xc1, 0xb2, 0x92, 0xda, 0xf4, + 0xb5, 0xce, 0xae, 0x77, 0xfd, 0xe0, 0xd5, 0x69, 0xe9, 0xd4, 0x97, 0x25, 0x00, 0x6f, 0xe7, 0x01, + 0x3d, 0x04, 0x47, 0x0a, 0x2b, 0xcb, 0xc5, 0xf2, 0xda, 0x7a, 0x7e, 0x7d, 0x63, 0x2d, 0x78, 0xc7, + 0x5b, 0x6c, 0x8f, 0xdb, 0x26, 0xae, 0x68, 0x5b, 0x1a, 0xae, 0xa2, 0xfb, 0x60, 0x32, 0x88, 0x4d, + 0x4a, 0xa5, 0x62, 0x5a, 0xca, 0xa6, 0xae, 0xdf, 0x98, 0x49, 0xb0, 0x5c, 0x0c, 0x57, 0xd1, 0x49, + 0x38, 0xd4, 0x8a, 0xb7, 0xb0, 0x3c, 0x9f, 0x8e, 0x64, 0x47, 0xae, 0xdf, 0x98, 0x49, 0xba, 0x49, + 0x1b, 0x92, 0x01, 0xf9, 0x31, 0x39, 0xbf, 0x68, 0x16, 0xae, 0xdf, 0x98, 0x19, 0x64, 0x06, 0xcc, + 0xc6, 0x3e, 0xf0, 0xe9, 0xa9, 0x81, 0xdb, 0x7e, 0x13, 0xfc, 0x4f, 0x86, 0x3a, 0xee, 0x7a, 0xd7, + 0xb0, 0x8e, 0x6d, 0xcd, 0x3e, 0xd0, 0xae, 0x77, 0x5f, 0x3b, 0xe9, 0xf2, 0xef, 0xc6, 0x21, 0x35, + 0xcf, 0x5a, 0x21, 0x1d, 0x81, 0xd1, 0xcf, 0xc0, 0xa0, 0x49, 0xa7, 0x11, 0xf7, 0x18, 0xad, 0x83, + 0xc3, 0xb3, 0xc9, 0xc6, 0xbd, 0xcb, 0xc5, 0xa6, 0x1e, 0x9b, 0x5f, 0xe6, 0x60, 0x77, 0xcc, 0xbc, + 0x5b, 0x53, 0xa9, 0x7d, 0xed, 0xf7, 0xb0, 0x9c, 0x85, 0x6f, 0xad, 0x84, 0xf9, 0xc9, 0xec, 0x5e, + 0xc8, 0x3a, 0x81, 0xb0, 0xdb, 0x61, 0xef, 0x93, 0xe0, 0x10, 0xc5, 0xf2, 0x26, 0x62, 0x8a, 0x29, + 0x92, 0xfd, 0x53, 0x9d, 0x54, 0x58, 0x54, 0x6d, 0xef, 0xae, 0x07, 0xbb, 0xcf, 0x75, 0x0f, 0x9f, + 0x08, 0x8f, 0xfb, 0x1a, 0x0f, 0xb3, 0x95, 0x95, 0x89, 0x7a, 0x0b, 0xa5, 0x8d, 0xe6, 0x03, 0x17, + 0xfa, 0x62, 0xfb, 0xdb, 0x6a, 0xf7, 0x5f, 0xee, 0x7b, 0x06, 0x86, 0xbd, 0x58, 0x62, 0xf3, 0xff, + 0xfb, 0xd2, 0xff, 0xdc, 0xe1, 0x27, 0x46, 0xef, 0x97, 0xe0, 0x90, 0x37, 0x9b, 0xfb, 0xd9, 0xb2, + 0xff, 0x8f, 0xf3, 0xe0, 0x3e, 0x16, 0x42, 0x61, 0xe3, 0xb4, 0xe5, 0x2b, 0x2b, 0x93, 0xcd, 0x56, + 0x52, 0xb2, 0x04, 0x1b, 0xf1, 0x47, 0x56, 0x3b, 0x23, 0x3e, 0x01, 0xd9, 0x7f, 0x68, 0x0e, 0x32, + 0x60, 0xff, 0xb3, 0xc3, 0x34, 0x2c, 0x07, 0x57, 0xe9, 0x86, 0x5c, 0x42, 0x71, 0xcb, 0xf2, 0x32, + 0xa0, 0xd6, 0xce, 0x0d, 0x5f, 0x60, 0xf4, 0xde, 0xa7, 0xa0, 0x49, 0x88, 0xfb, 0xaf, 0xf8, 0xb1, + 0x42, 0x2e, 0xf1, 0x01, 0x3e, 0x7d, 0xde, 0xf6, 0x31, 0xff, 0xed, 0x08, 0x9c, 0xf2, 0x1f, 0x0f, + 0xbd, 0xd4, 0xc4, 0xd6, 0x9e, 0x3b, 0x44, 0x4d, 0xb5, 0xa6, 0xe9, 0xfe, 0x57, 0x10, 0x47, 0xfd, + 0x13, 0x3e, 0xc5, 0x15, 0x76, 0x92, 0x3f, 0x20, 0xc1, 0xf0, 0xaa, 0x5a, 0xc3, 0x0a, 0x7e, 0xa9, + 0x89, 0x6d, 0xa7, 0xcd, 0x2d, 0xf3, 0xc3, 0x30, 0x68, 0x6c, 0x6d, 0x89, 0x33, 0xed, 0x98, 0xc2, + 0x4b, 0x44, 0xe7, 0xba, 0xd6, 0xd0, 0xd8, 0x75, 0xb0, 0x98, 0xc2, 0x0a, 0x68, 0x1a, 0x86, 0x2b, + 0x46, 0x53, 0xe7, 0x43, 0x2e, 0x13, 0x13, 0xdf, 0x5a, 0x69, 0xea, 0x6c, 0xc8, 0x11, 0x23, 0x5a, + 0xf8, 0x0a, 0xb6, 0x6c, 0xf6, 0x75, 0xc9, 0x84, 0x22, 0x8a, 0xf2, 0xd3, 0x90, 0x62, 0x92, 0xf0, + 0xc9, 0xf8, 0x28, 0x24, 0xe8, 0x4d, 0x2b, 0x4f, 0x9e, 0x21, 0x52, 0xbe, 0xc4, 0xee, 0xaa, 0x33, + 0xfe, 0x4c, 0x24, 0x56, 0x28, 0x14, 0x3a, 0x5a, 0xf9, 0x64, 0xef, 0xa8, 0xc1, 0x6c, 0xe8, 0x5a, + 0xf8, 0x37, 0xe3, 0x70, 0x88, 0x1f, 0xde, 0xa9, 0xa6, 0x76, 0x7a, 0xdb, 0x71, 0xc4, 0xdb, 0x09, + 0xe0, 0x59, 0xb0, 0x6a, 0x6a, 0xf2, 0x1e, 0xc4, 0x2e, 0x3a, 0x8e, 0x89, 0x4e, 0x41, 0xdc, 0x6a, + 0xd6, 0xb1, 0xd8, 0x0c, 0x72, 0xb7, 0xeb, 0x55, 0x53, 0x9b, 0x25, 0x08, 0x4a, 0xb3, 0x8e, 0x15, + 0x86, 0x82, 0x4a, 0x30, 0xbd, 0xd5, 0xac, 0xd7, 0xf7, 0xca, 0x55, 0x4c, 0xff, 0x5d, 0x96, 0xfb, + 0x0f, 0x27, 0xf0, 0xae, 0xa9, 0x8a, 0xcf, 0x56, 0x12, 0xc3, 0x1c, 0xa7, 0x68, 0x45, 0x8a, 0x25, + 0xfe, 0xd9, 0x44, 0x49, 0xe0, 0xc8, 0xbf, 0x1f, 0x81, 0x84, 0x60, 0x4d, 0x2f, 0x8f, 0xe3, 0x3a, + 0xae, 0x38, 0x86, 0x38, 0x4c, 0x71, 0xcb, 0x08, 0x41, 0xb4, 0xc6, 0x3b, 0x2f, 0x79, 0x71, 0x40, + 0x21, 0x05, 0x02, 0x73, 0xaf, 0xf4, 0x13, 0x98, 0xd9, 0x24, 0xfd, 0x19, 0x33, 0x0d, 0xb1, 0x6a, + 0xbb, 0x38, 0xa0, 0xd0, 0x12, 0xca, 0xc0, 0x20, 0x19, 0x34, 0x0e, 0xeb, 0x2d, 0x02, 0xe7, 0x65, + 0x74, 0x18, 0xe2, 0xa6, 0xea, 0x54, 0xd8, 0x6d, 0x3b, 0x52, 0xc1, 0x8a, 0xe8, 0x09, 0x18, 0x64, + 0xaf, 0xb2, 0xc3, 0xff, 0x8b, 0x86, 0x18, 0x83, 0x7d, 0xfe, 0x8e, 0xc8, 0xbd, 0xaa, 0x3a, 0x0e, + 0xb6, 0x74, 0xc2, 0x90, 0xa1, 0x23, 0x04, 0xb1, 0x4d, 0xa3, 0xba, 0xc7, 0xff, 0x3f, 0x0e, 0xfd, + 0xcd, 0xff, 0x21, 0x07, 0xf5, 0x87, 0x32, 0xad, 0x64, 0xff, 0x16, 0x2c, 0x25, 0x80, 0x05, 0x82, + 0x54, 0x82, 0x09, 0xb5, 0x5a, 0xd5, 0xd8, 0xbf, 0xaa, 0x29, 0x6f, 0x6a, 0x34, 0x78, 0xd8, 0xf4, + 0x9f, 0xbe, 0x75, 0xea, 0x0b, 0xe4, 0x11, 0x14, 0x38, 0x7e, 0x21, 0x09, 0x43, 0x26, 0x13, 0x4a, + 0x3e, 0x0f, 0xe3, 0x2d, 0x92, 0x12, 0xf9, 0x76, 0x34, 0xbd, 0x2a, 0xde, 0x39, 0x90, 0xdf, 0x04, + 0x46, 0x3f, 0x58, 0xc9, 0x8e, 0xa9, 0xe8, 0xef, 0xc2, 0x7b, 0x3a, 0x3f, 0x87, 0x19, 0xf5, 0x3d, + 0x87, 0x51, 0x4d, 0xad, 0x90, 0xa4, 0xfc, 0xf9, 0x23, 0x98, 0x7c, 0xeb, 0x23, 0x98, 0x1a, 0xd6, + 0xc5, 0xc4, 0x4c, 0xaa, 0x54, 0x53, 0xb3, 0xa9, 0x3b, 0x7a, 0x1f, 0xd0, 0xb4, 0xcf, 0xfb, 0x7e, + 0xd3, 0x37, 0x31, 0xb1, 0xf9, 0xfc, 0xea, 0x82, 0xeb, 0xc7, 0x5f, 0x8d, 0xc0, 0x71, 0x9f, 0x1f, + 0xfb, 0x90, 0x5b, 0xdd, 0x39, 0xdb, 0xde, 0xe3, 0xfb, 0x78, 0x9b, 0x7c, 0x09, 0x62, 0x04, 0x1f, + 0xf5, 0xf8, 0x77, 0x19, 0x99, 0xcf, 0x7f, 0xe3, 0x9f, 0xca, 0xc1, 0x03, 0xad, 0x40, 0xaf, 0x50, + 0x26, 0x85, 0xf7, 0xf7, 0x6f, 0xbf, 0xb4, 0xf7, 0xed, 0x50, 0xfb, 0xf6, 0x99, 0x31, 0x6c, 0xc3, + 0xef, 0x9e, 0xed, 0xf8, 0x76, 0x95, 0x05, 0xd3, 0xee, 0xf9, 0xd5, 0x3e, 0x22, 0x75, 0xa7, 0xa7, + 0x01, 0xdd, 0x7a, 0xb0, 0xcf, 0x4c, 0x6d, 0x17, 0x0e, 0x3f, 0x4b, 0xda, 0xf6, 0x56, 0xd0, 0x22, + 0xe4, 0x1f, 0x76, 0x0f, 0xfa, 0x24, 0xfe, 0x3f, 0xf7, 0xc4, 0x21, 0x1e, 0x78, 0xf2, 0xf1, 0xb5, + 0xe3, 0x7d, 0xb3, 0x1d, 0xa7, 0x92, 0x59, 0xdf, 0x34, 0xa2, 0xf8, 0x28, 0xe5, 0x5f, 0x95, 0xe0, + 0x48, 0x4b, 0xd3, 0x3c, 0xc6, 0xcf, 0xb7, 0x79, 0xc5, 0x70, 0xa0, 0xa4, 0x67, 0xbe, 0x8d, 0xb0, + 0xf7, 0xf7, 0x14, 0x96, 0x49, 0x11, 0x90, 0xf6, 0xcd, 0x70, 0x28, 0x28, 0xac, 0x30, 0xd3, 0xbd, + 0x30, 0x1a, 0xdc, 0x2c, 0xe6, 0xe6, 0x1a, 0x09, 0x6c, 0x17, 0xcb, 0xe5, 0xb0, 0x9d, 0x5d, 0x5d, + 0x4b, 0x90, 0x74, 0x51, 0x79, 0x76, 0xdc, 0xb7, 0xaa, 0x1e, 0xa5, 0xfc, 0x61, 0x09, 0x66, 0x82, + 0x2d, 0xf8, 0xf2, 0xa4, 0xfd, 0x09, 0x7b, 0xdb, 0xba, 0xf8, 0x75, 0x09, 0xee, 0xea, 0x22, 0x13, + 0x37, 0xc0, 0x35, 0x98, 0xf4, 0x6d, 0x12, 0x88, 0x10, 0x2e, 0xba, 0xfd, 0x54, 0xef, 0x0c, 0xd5, + 0x5d, 0x13, 0x1f, 0x23, 0x46, 0xf9, 0xec, 0xb7, 0xa7, 0x27, 0x5a, 0xeb, 0x6c, 0x65, 0xa2, 0x75, + 0x61, 0x7f, 0x1b, 0xfd, 0xe3, 0x15, 0x09, 0x1e, 0x08, 0xaa, 0xda, 0x26, 0xd5, 0xfd, 0x49, 0xf5, + 0xc3, 0xbf, 0x97, 0xe0, 0x54, 0x3f, 0xc2, 0xf1, 0x0e, 0xd9, 0x84, 0x09, 0x2f, 0x09, 0x0f, 0xf7, + 0xc7, 0xbe, 0x52, 0x7b, 0xe6, 0xa5, 0xc8, 0xe5, 0x76, 0x07, 0x0c, 0x6f, 0xf2, 0x81, 0xe5, 0xef, + 0x72, 0xd7, 0xc8, 0xc1, 0x8d, 0x5e, 0x61, 0xe4, 0xc0, 0x56, 0x6f, 0x9b, 0xbe, 0x88, 0xb4, 0xe9, + 0x0b, 0x2f, 0x6b, 0x97, 0xaf, 0xf0, 0xb8, 0xd5, 0x66, 0x7b, 0xee, 0x6d, 0x30, 0xd1, 0xc6, 0x95, + 0xf9, 0xa8, 0xde, 0x87, 0x27, 0x2b, 0xa8, 0xd5, 0x59, 0xe5, 0x3d, 0x98, 0xa6, 0xed, 0xb6, 0x31, + 0xf4, 0x9d, 0x56, 0xb9, 0xc1, 0x63, 0x4b, 0xdb, 0xa6, 0xb9, 0xee, 0x0b, 0x30, 0xc8, 0xfa, 0x99, + 0xab, 0x7b, 0x00, 0x47, 0xe1, 0x0c, 0xe4, 0x8f, 0x8b, 0x58, 0x56, 0x14, 0x62, 0xb7, 0x1f, 0x43, + 0xfd, 0xe8, 0x7a, 0x9b, 0xc6, 0x90, 0xcf, 0x18, 0xdf, 0x12, 0x51, 0xad, 0xbd, 0x74, 0xdc, 0x1c, + 0x95, 0xdb, 0x16, 0xd5, 0x98, 0x6d, 0xee, 0x6c, 0xf8, 0xfa, 0x65, 0x11, 0xbe, 0x5c, 0x9d, 0x7a, + 0x84, 0xaf, 0x9f, 0x8c, 0xe9, 0xdd, 0x40, 0xd6, 0x43, 0xcc, 0x3f, 0x8f, 0x81, 0xec, 0x07, 0x12, + 0x1c, 0xa5, 0xba, 0xf9, 0xf7, 0x28, 0xf6, 0x6b, 0xf2, 0x87, 0x00, 0xd9, 0x56, 0xa5, 0xdc, 0x76, + 0x74, 0xa7, 0x6d, 0xab, 0x72, 0x39, 0x30, 0xbf, 0x3c, 0x04, 0xa8, 0x1a, 0xd8, 0x89, 0xa2, 0xd8, + 0xec, 0x02, 0x5d, 0xba, 0xea, 0xdb, 0xe8, 0x68, 0xd3, 0x9d, 0xb1, 0xdb, 0xd0, 0x9d, 0xdf, 0x94, + 0x20, 0xdb, 0x4e, 0x65, 0xde, 0x7d, 0x1a, 0x1c, 0x0e, 0x9c, 0x1f, 0x84, 0x7b, 0xf0, 0xa1, 0x7e, + 0x76, 0x79, 0x42, 0xc3, 0xe8, 0x90, 0x85, 0xef, 0x74, 0x1e, 0x30, 0x1d, 0xf4, 0xd0, 0xd6, 0xcc, + 0xfa, 0x27, 0x36, 0x7c, 0xbe, 0xd4, 0x12, 0x57, 0xff, 0x5c, 0xe4, 0xde, 0xbb, 0x30, 0xd5, 0x41, + 0xea, 0x3b, 0x3d, 0xef, 0x6d, 0x77, 0xec, 0xcc, 0xdb, 0x9d, 0xbe, 0x3f, 0xce, 0x47, 0x42, 0xf0, + 0x72, 0xb6, 0x6f, 0x2d, 0xd6, 0xee, 0x75, 0x97, 0xfc, 0x56, 0x38, 0xd6, 0x96, 0x8a, 0xcb, 0x96, + 0x83, 0xd8, 0xb6, 0x66, 0x3b, 0x5c, 0xac, 0xfb, 0x3a, 0x89, 0x15, 0xa2, 0xa6, 0x34, 0x32, 0x82, + 0x34, 0x65, 0xbd, 0x6a, 0x18, 0x75, 0x2e, 0x86, 0x7c, 0x09, 0xc6, 0x7d, 0x30, 0xde, 0xc8, 0x39, + 0x88, 0x99, 0x06, 0xff, 0x72, 0xc1, 0xf0, 0x99, 0xe3, 0x1d, 0x37, 0xf6, 0x0d, 0xa3, 0xce, 0xd5, + 0xa6, 0xf8, 0xf2, 0x24, 0x20, 0xc6, 0x8c, 0xee, 0xf1, 0x8b, 0x26, 0xd6, 0x60, 0x22, 0x00, 0xe5, + 0x8d, 0xbc, 0xa1, 0xf3, 0x83, 0x33, 0xdf, 0x3b, 0x04, 0x71, 0xca, 0x15, 0x7d, 0x4c, 0x0a, 0x7c, + 0x5a, 0x68, 0xb6, 0x13, 0x9b, 0xf6, 0x6b, 0xe2, 0xec, 0xe9, 0xbe, 0xf1, 0x79, 0xce, 0x76, 0xea, + 0x3d, 0xff, 0xe6, 0xbb, 0x1f, 0x89, 0xdc, 0x83, 0xe4, 0xd3, 0x1d, 0x56, 0xe3, 0xbe, 0xf1, 0xf2, + 0x99, 0xc0, 0xb3, 0xf8, 0x87, 0xfb, 0x6b, 0x4a, 0x48, 0x36, 0xdb, 0x2f, 0x3a, 0x17, 0xec, 0x3c, + 0x15, 0xec, 0x2c, 0x7a, 0xac, 0xb7, 0x60, 0xa7, 0xdf, 0x11, 0x1c, 0x34, 0xef, 0x42, 0xbf, 0x2b, + 0xc1, 0x64, 0xbb, 0x25, 0x1d, 0x7a, 0xb2, 0x3f, 0x29, 0x5a, 0x53, 0x8a, 0xec, 0x53, 0x07, 0xa0, + 0xe4, 0xaa, 0xcc, 0x53, 0x55, 0xf2, 0xe8, 0xe9, 0x03, 0xa8, 0x72, 0xda, 0xbf, 0xf5, 0xff, 0xbf, + 0x24, 0x38, 0xd1, 0x75, 0x85, 0x84, 0xf2, 0xfd, 0x49, 0xd9, 0x25, 0x77, 0xca, 0x16, 0xde, 0x08, + 0x0b, 0xae, 0xf1, 0xb3, 0x54, 0xe3, 0x4b, 0x68, 0xe1, 0x20, 0x1a, 0xb7, 0x3d, 0x5f, 0x41, 0xbf, + 0x15, 0xbc, 0x74, 0xd8, 0xdd, 0x9d, 0x5a, 0x16, 0x1e, 0x3d, 0x06, 0x46, 0x6b, 0x52, 0x2b, 0x3f, + 0x4f, 0x55, 0x50, 0xd0, 0xea, 0x1b, 0xec, 0xb4, 0xd3, 0xef, 0x08, 0x06, 0xfe, 0x77, 0xa1, 0xff, + 0x29, 0xb5, 0xbf, 0x43, 0xf8, 0x44, 0x57, 0x11, 0x3b, 0x2f, 0xaa, 0xb2, 0x4f, 0xee, 0x9f, 0x90, + 0x2b, 0xd9, 0xa0, 0x4a, 0xd6, 0x10, 0xbe, 0xdd, 0x4a, 0xb6, 0xed, 0x44, 0xf4, 0x75, 0x09, 0x26, + 0xdb, 0xad, 0x49, 0x7a, 0x0c, 0xcb, 0x2e, 0x8b, 0xac, 0x1e, 0xc3, 0xb2, 0xdb, 0x02, 0x48, 0xfe, + 0x19, 0xaa, 0xfc, 0x39, 0xf4, 0x78, 0x27, 0xe5, 0xbb, 0xf6, 0x22, 0x19, 0x8b, 0x5d, 0x93, 0xfc, + 0x1e, 0x63, 0xb1, 0x9f, 0x75, 0x4c, 0x8f, 0xb1, 0xd8, 0xd7, 0x1a, 0xa3, 0xf7, 0x58, 0x74, 0x35, + 0xeb, 0xb3, 0x1b, 0x6d, 0xf4, 0x55, 0x09, 0x46, 0x02, 0x19, 0x31, 0x7a, 0xb4, 0xab, 0xa0, 0xed, + 0x16, 0x0c, 0xd9, 0x33, 0xfb, 0x21, 0xe1, 0xba, 0x2c, 0x50, 0x5d, 0xe6, 0x50, 0xfe, 0x20, 0xba, + 0x04, 0x8f, 0x51, 0xbf, 0x29, 0xc1, 0x44, 0x9b, 0x2c, 0xb3, 0xc7, 0x28, 0xec, 0x9c, 0x34, 0x67, + 0x9f, 0xdc, 0x3f, 0x21, 0xd7, 0xea, 0x02, 0xd5, 0xea, 0x2d, 0xe8, 0xcd, 0x07, 0xd1, 0xca, 0x37, + 0x3f, 0xdf, 0xf4, 0xae, 0x64, 0xf9, 0xda, 0x41, 0xe7, 0xf6, 0x29, 0x98, 0x50, 0xe8, 0x89, 0x7d, + 0xd3, 0x71, 0x7d, 0x9e, 0xa3, 0xfa, 0x3c, 0x8b, 0x56, 0xde, 0x98, 0x3e, 0xad, 0xd3, 0xfa, 0x17, + 0x5b, 0x1f, 0x07, 0x76, 0xf7, 0xa2, 0xb6, 0xc9, 0x6a, 0xf6, 0xb1, 0x7d, 0xd1, 0x70, 0xa5, 0x9e, + 0xa4, 0x4a, 0x9d, 0x41, 0x8f, 0x74, 0x52, 0xca, 0x77, 0xef, 0x4e, 0xd3, 0xb7, 0x8c, 0xd3, 0xef, + 0x60, 0x29, 0xf0, 0xbb, 0xd0, 0xbb, 0xc5, 0x9d, 0xa7, 0x93, 0x5d, 0xdb, 0xf5, 0xe5, 0xb1, 0xd9, + 0x07, 0xfa, 0xc0, 0xe4, 0x72, 0xdd, 0x43, 0xe5, 0x9a, 0x42, 0xc7, 0x3b, 0xc9, 0x45, 0x72, 0x59, + 0xf4, 0x41, 0xc9, 0xbd, 0x26, 0x79, 0xaa, 0x3b, 0x6f, 0x7f, 0xb2, 0x9b, 0x7d, 0xb0, 0x2f, 0x5c, + 0x2e, 0xc9, 0x7d, 0x54, 0x92, 0x19, 0x34, 0xd5, 0x51, 0x12, 0x96, 0xfa, 0xde, 0xee, 0x4b, 0x05, + 0xd7, 0x8f, 0xc0, 0x74, 0x87, 0x16, 0x9d, 0xdd, 0x1e, 0x67, 0x5c, 0x5d, 0xde, 0xc8, 0xf6, 0x7c, + 0x03, 0x7b, 0xbb, 0xbf, 0xed, 0xda, 0xe7, 0x81, 0xd8, 0x6f, 0xc7, 0x00, 0x2d, 0xd9, 0xb5, 0x39, + 0x0b, 0xb3, 0xff, 0x33, 0xc9, 0x47, 0x79, 0xe8, 0xf1, 0x97, 0xf4, 0x86, 0x1e, 0x7f, 0x2d, 0x05, + 0x9e, 0x53, 0x45, 0xf6, 0xf7, 0x64, 0xb3, 0xef, 0x37, 0x55, 0xd1, 0x1f, 0xcb, 0x9b, 0xaa, 0xf6, + 0x57, 0xae, 0x63, 0xb7, 0xef, 0x6d, 0x46, 0xfc, 0xa0, 0xef, 0x53, 0xf8, 0x53, 0xc9, 0xc1, 0x2e, + 0x4f, 0x25, 0x33, 0x1d, 0xdf, 0x43, 0x72, 0x6a, 0x74, 0x56, 0x7c, 0xe9, 0x74, 0xa8, 0xbf, 0x4b, + 0xb2, 0xfc, 0x53, 0xa8, 0xde, 0x16, 0xc2, 0x71, 0xc8, 0xb6, 0xba, 0x93, 0x3b, 0xa8, 0x3f, 0x12, + 0x85, 0xf4, 0x92, 0x5d, 0x2b, 0x55, 0x35, 0xe7, 0x0e, 0xf9, 0xda, 0xd3, 0x9d, 0xdf, 0xbb, 0xa0, + 0x5b, 0x37, 0xa7, 0x47, 0x99, 0x4d, 0xbb, 0x58, 0xb2, 0x01, 0x63, 0xa1, 0x57, 0xc6, 0xdc, 0xb3, + 0x8a, 0x07, 0x79, 0xec, 0x1c, 0x62, 0x25, 0xd3, 0xe7, 0x09, 0x3e, 0xff, 0x46, 0xbb, 0xed, 0x9d, + 0x99, 0x39, 0xd4, 0xc5, 0x3b, 0xf9, 0x38, 0xd0, 0xeb, 0xb3, 0x2c, 0x64, 0xc2, 0x9d, 0xe2, 0xf6, + 0xd8, 0x1f, 0x49, 0x30, 0xbc, 0x64, 0x8b, 0x54, 0x10, 0xff, 0x94, 0x3e, 0x4d, 0x7a, 0xc2, 0xfd, + 0x4c, 0x78, 0xb4, 0x3f, 0xbf, 0x15, 0x9f, 0x0e, 0xf7, 0x8c, 0x70, 0x08, 0x26, 0x7c, 0x7a, 0xba, + 0xfa, 0xff, 0x4e, 0x84, 0xc6, 0xc7, 0x02, 0xae, 0x69, 0xba, 0x9b, 0x45, 0xe2, 0xbf, 0xa8, 0x0f, + 0x2f, 0x3c, 0x3b, 0xc7, 0x0e, 0x6a, 0xe7, 0x1d, 0x1a, 0x20, 0x42, 0xf6, 0x74, 0x37, 0xbe, 0x96, + 0x5a, 0x9f, 0x05, 0x49, 0xfb, 0xf8, 0xe2, 0x4e, 0xe8, 0xf1, 0x8f, 0xfc, 0xba, 0x04, 0x23, 0x4b, + 0x76, 0x6d, 0x43, 0xaf, 0xfe, 0x3f, 0xef, 0xbf, 0x5b, 0x70, 0x28, 0xa0, 0xe9, 0x1d, 0x32, 0xe9, + 0x99, 0x57, 0x62, 0x10, 0x5d, 0xb2, 0x6b, 0xe8, 0x25, 0x18, 0x0b, 0x27, 0x0d, 0x1d, 0x73, 0xc1, + 0xd6, 0x19, 0xa1, 0xf3, 0x7a, 0xad, 0xf3, 0xec, 0x81, 0x76, 0x60, 0x24, 0x38, 0x73, 0x9c, 0xec, + 0xc2, 0x24, 0x80, 0x99, 0x7d, 0xa4, 0x5f, 0x4c, 0xb7, 0xb1, 0xb7, 0x43, 0xc2, 0x0d, 0x7a, 0x77, + 0x77, 0xa1, 0x16, 0x48, 0x9d, 0xb3, 0xdb, 0x36, 0x61, 0x85, 0x58, 0x2f, 0x1c, 0x52, 0xba, 0x59, + 0x2f, 0x84, 0xdb, 0xd5, 0x7a, 0x9d, 0x86, 0xd6, 0x26, 0x80, 0x6f, 0x1c, 0xdc, 0xdb, 0x85, 0x83, + 0x87, 0x96, 0x7d, 0xb8, 0x2f, 0x34, 0xf7, 0xd0, 0xe9, 0x36, 0x27, 0xe3, 0xff, 0x37, 0x00, 0x00, + 0xff, 0xff, 0xb1, 0x48, 0x2a, 0x05, 0xdd, 0x97, 0x00, 0x00, } r := bytes.NewReader(gzipped) gzipr, err := compress_gzip.NewReader(r) From 064ef13f78c333199594230c8419c0491096a3b7 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Mon, 29 Mar 2021 15:17:00 +0200 Subject: [PATCH 06/26] change: finalize implementation --- docs/core/proto-docs.md | 164 +-------- .../base/reflection/v1beta1/reflection.proto | 15 +- .../reflection.go | 11 +- .../reflection.pb.go | 322 +++++++++--------- .../reflection.pb.gw.go | 4 +- server/grpc/server.go | 7 +- server/grpc/server_test.go | 12 + 7 files changed, 199 insertions(+), 336 deletions(-) rename server/grpc/{cosmosreflection => appreflection}/reflection.go (97%) rename server/grpc/{cosmosreflection => appreflection}/reflection.pb.go (94%) rename server/grpc/{cosmosreflection => appreflection}/reflection.pb.gw.go (99%) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 7ba19f42b772..69f755eb1e85 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -142,18 +142,6 @@ - [ReflectionService](#cosmos.base.reflection.v1beta1.ReflectionService) -- [cosmos/base/reflection/v1beta1/txreflection.proto](#cosmos/base/reflection/v1beta1/txreflection.proto) - - [CombineRequest](#cosmos.base.reflection.v1beta1.CombineRequest) - - [CombineResponse](#cosmos.base.reflection.v1beta1.CombineResponse) - - [Intent](#cosmos.base.reflection.v1beta1.Intent) - - [PayloadRequest](#cosmos.base.reflection.v1beta1.PayloadRequest) - - [PayloadResponse](#cosmos.base.reflection.v1beta1.PayloadResponse) - - [PubKeyDescriptor](#cosmos.base.reflection.v1beta1.PubKeyDescriptor) - - [SignatureDescriptor](#cosmos.base.reflection.v1beta1.SignatureDescriptor) - - [TxMetadata](#cosmos.base.reflection.v1beta1.TxMetadata) - - - [ReflectionTxBuilderService](#cosmos.base.reflection.v1beta1.ReflectionTxBuilderService) - - [cosmos/base/snapshots/v1beta1/snapshot.proto](#cosmos/base/snapshots/v1beta1/snapshot.proto) - [Metadata](#cosmos.base.snapshots.v1beta1.Metadata) - [Snapshot](#cosmos.base.snapshots.v1beta1.Snapshot) @@ -2074,8 +2062,7 @@ on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `sign_mode` | [string](#string) | | sign_mode defines the signature algorithm | -| `authn_info_provider_method_fullname` | [string](#string) | | authn_info_provider_method_fullname defines the fullname of the method to call to get the metadata required to authenticate | +| `sign_modes` | [SigningModeDescriptor](#cosmos.base.reflection.v1beta1.SigningModeDescriptor) | repeated | sign_modes defines the supported signature algorithm | @@ -2378,6 +2365,7 @@ this another time | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `name` | [string](#string) | | name defines the unique name of the signing mode | +| `authn_info_provider_method_fullname` | [string](#string) | | authn_info_provider_method_fullname defines the fullname of the method to call to get the metadata required to authenticate using the provided sign_modes | @@ -2422,154 +2410,6 @@ ReflectionService defines a service for application reflection. - -

Top

- -## cosmos/base/reflection/v1beta1/txreflection.proto - - - - - -### CombineRequest - - - - - - - - - -### CombineResponse - - - - - - - - - -### Intent -Intent defines the intent of a transaction, which consists in the expected -msgs which the client wants to send - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `msgs` | [google.protobuf.Any](#google.protobuf.Any) | repeated | msgs is the any representation of msgs | - - - - - - - - -### PayloadRequest -PayloadRequest is the request type used for the Payload RPC. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `intent` | [Intent](#cosmos.base.reflection.v1beta1.Intent) | | intent defines the intent of a transaction (the expected msgs) | -| `tx_metadata` | [TxMetadata](#cosmos.base.reflection.v1beta1.TxMetadata) | | tx_metadata defines transaction metadata information | - - - - - - - - -### PayloadResponse - - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `unsigned_tx` | [bytes](#bytes) | | unsigned_tx is the unsigned tx bytes | -| `expected_signatures` | [SignatureDescriptor](#cosmos.base.reflection.v1beta1.SignatureDescriptor) | repeated | | - - - - - - - - -### PubKeyDescriptor -PubKeyDescriptor describes a public key - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `key` | [bytes](#bytes) | | key is the public key raw bytes | -| `fullname` | [string](#string) | | fullname is the public key protobuf fullname | - - - - - - - - -### SignatureDescriptor -SignatureDescriptor describes a signature expected to authenticate a transaction - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `bytes_to_sign` | [bytes](#bytes) | | bytes_to_sign are the bytes that the public key is expected to sign | -| `pub_key` | [PubKeyDescriptor](#cosmos.base.reflection.v1beta1.PubKeyDescriptor) | | pub_key is the public key descriptor for the signer | - - - - - - - - -### TxMetadata -TxMetadata defines the metadata information for a transaction - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `fee_payer_address` | [bytes](#bytes) | | fee_payer_address is the fee payer of the transaction IT MUST BE EXPLICITLY PROVIDED | -| `fee_granter_address` | [bytes](#bytes) | | fee_granter_address is the address of the fee granter it is optional | -| `memo` | [string](#string) | | memo is the memo of the trasnsaction | -| `timeout_height` | [uint64](#uint64) | | timeout_height is optional and is the timeout height for a tx | -| `fee_amount` | [string](#string) | | fee_amount is the string representation of the expected fee should it be sdk.Coins? | -| `gas_limit` | [uint64](#uint64) | | gas_limit is the gas_limit for the tx | - - - - - - - - - - - - - - -### ReflectionTxBuilderService -ReflectionTxBuilderService can be used by clients to build transactions on any chain -without having context on the TX building semantics. - -| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | -| ----------- | ------------ | ------------- | ------------| ------- | -------- | -| `Payload` | [PayloadRequest](#cosmos.base.reflection.v1beta1.PayloadRequest) | [PayloadResponse](#cosmos.base.reflection.v1beta1.PayloadResponse) | Payload provides the transaction payload and the expected bytes to sign given an intent expressed via msgs and transaction metadata such as fees, memo etc. IMPORTANT NOTE: when interacting with untrusted nodes, it is required by clients to perform intent verification on the returned transaction bytes | | -| `Combine` | [CombineRequest](#cosmos.base.reflection.v1beta1.CombineRequest) | [CombineResponse](#cosmos.base.reflection.v1beta1.CombineResponse) | Combine combines together the unsigned transaction bytes and the signatures | | - - - - -

Top

diff --git a/proto/cosmos/base/reflection/v1beta1/reflection.proto b/proto/cosmos/base/reflection/v1beta1/reflection.proto index 74f785f446c8..63b855e3a7e0 100644 --- a/proto/cosmos/base/reflection/v1beta1/reflection.proto +++ b/proto/cosmos/base/reflection/v1beta1/reflection.proto @@ -3,11 +3,7 @@ package cosmos.base.reflection.v1beta1; import "google/api/annotations.proto"; -option go_package = "github.com/cosmos/cosmos-sdk/server/grpc/cosmosreflection"; - -service AuthReflectionService { - -} +option go_package = "github.com/cosmos/cosmos-sdk/server/grpc/appreflection"; // ReflectionService defines a service for application reflection. service ReflectionService { @@ -58,10 +54,7 @@ message TxDescriptor { // on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures message AuthnDescriptor { // sign_modes defines the supported signature algorithm - repeated string sign_modes = 1; - // authn_info_provider_method_fullname defines the fullname of the method to call to get - // the metadata required to authenticate using the provided sign_modes - string authn_info_provider_method_fullname = 2; + repeated SigningModeDescriptor sign_modes = 1; } // SigningModeDescriptor provides information on a signing flow of the application @@ -71,6 +64,9 @@ message AuthnDescriptor { message SigningModeDescriptor { // name defines the unique name of the signing mode string name = 1; + // authn_info_provider_method_fullname defines the fullname of the method to call to get + // the metadata required to authenticate using the provided sign_modes + string authn_info_provider_method_fullname = 2; } // ChainDescriptor describes chain information of the application @@ -143,6 +139,7 @@ message ConfigurationDescriptor { // MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction message MsgDescriptor { + // msg contains a descriptor of sdk.ServiceMsg or sdk.Msg oneof msg { // service_msg is used when the message is an sdk.ServiceMsg type ServiceMsgDescriptor service_msg = 1; diff --git a/server/grpc/cosmosreflection/reflection.go b/server/grpc/appreflection/reflection.go similarity index 97% rename from server/grpc/cosmosreflection/reflection.go rename to server/grpc/appreflection/reflection.go index 7e8d4b79a74f..8e1654b3d67c 100644 --- a/server/grpc/cosmosreflection/reflection.go +++ b/server/grpc/appreflection/reflection.go @@ -1,4 +1,4 @@ -package cosmosreflection +package appreflection import ( "context" @@ -15,7 +15,6 @@ import ( ) type Config struct { - Address string SigningModes []string ChainID string SdkConfig *sdk.Config @@ -216,13 +215,15 @@ func newDeliverDescriptor(ir codectypes.InterfaceRegistry, signingModes []string signModesDesc := make([]*SigningModeDescriptor, len(signingModes)) for i, m := range signingModes { - signModesDesc[i] = &SigningModeDescriptor{Name: m} + signModesDesc[i] = &SigningModeDescriptor{ + Name: m, + AuthnInfoProviderMethodFullname: "", // this cannot be filled as of now + } } return &TxDescriptor{ Fullname: txPbName, Authn: &AuthnDescriptor{ - SignMode: "", - AuthnInfoProviderMethodFullname: "", + SignModes: signModesDesc, }, // TODO Msgs: msgsDesc, }, nil diff --git a/server/grpc/cosmosreflection/reflection.pb.go b/server/grpc/appreflection/reflection.pb.go similarity index 94% rename from server/grpc/cosmosreflection/reflection.pb.go rename to server/grpc/appreflection/reflection.pb.go index 552f00669ec7..f90444a194cc 100644 --- a/server/grpc/cosmosreflection/reflection.pb.go +++ b/server/grpc/appreflection/reflection.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: cosmos/base/reflection/v1beta1/reflection.proto -package cosmosreflection +package appreflection import ( context "context" @@ -178,11 +178,8 @@ func (m *TxDescriptor) GetMsgs() []*MsgDescriptor { // AuthnDescriptor provides information on how to sign transactions without relying // on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures type AuthnDescriptor struct { - // sign_mode defines the signature algorithm - SignMode string `protobuf:"bytes,1,opt,name=sign_mode,json=signMode,proto3" json:"sign_mode,omitempty"` - // authn_info_provider_method_fullname defines the fullname of the method to call to get - // the metadata required to authenticate - AuthnInfoProviderMethodFullname string `protobuf:"bytes,2,opt,name=authn_info_provider_method_fullname,json=authnInfoProviderMethodFullname,proto3" json:"authn_info_provider_method_fullname,omitempty"` + // sign_modes defines the supported signature algorithm + SignModes []*SigningModeDescriptor `protobuf:"bytes,1,rep,name=sign_modes,json=signModes,proto3" json:"sign_modes,omitempty"` } func (m *AuthnDescriptor) Reset() { *m = AuthnDescriptor{} } @@ -218,18 +215,11 @@ func (m *AuthnDescriptor) XXX_DiscardUnknown() { var xxx_messageInfo_AuthnDescriptor proto.InternalMessageInfo -func (m *AuthnDescriptor) GetSignMode() string { +func (m *AuthnDescriptor) GetSignModes() []*SigningModeDescriptor { if m != nil { - return m.SignMode + return m.SignModes } - return "" -} - -func (m *AuthnDescriptor) GetAuthnInfoProviderMethodFullname() string { - if m != nil { - return m.AuthnInfoProviderMethodFullname - } - return "" + return nil } // SigningModeDescriptor provides information on a signing flow of the application @@ -239,6 +229,9 @@ func (m *AuthnDescriptor) GetAuthnInfoProviderMethodFullname() string { type SigningModeDescriptor struct { // name defines the unique name of the signing mode Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // authn_info_provider_method_fullname defines the fullname of the method to call to get + // the metadata required to authenticate using the provided sign_modes + AuthnInfoProviderMethodFullname string `protobuf:"bytes,2,opt,name=authn_info_provider_method_fullname,json=authnInfoProviderMethodFullname,proto3" json:"authn_info_provider_method_fullname,omitempty"` } func (m *SigningModeDescriptor) Reset() { *m = SigningModeDescriptor{} } @@ -281,6 +274,13 @@ func (m *SigningModeDescriptor) GetName() string { return "" } +func (m *SigningModeDescriptor) GetAuthnInfoProviderMethodFullname() string { + if m != nil { + return m.AuthnInfoProviderMethodFullname + } + return "" +} + // ChainDescriptor describes chain information of the application type ChainDescriptor struct { // id is the chain id @@ -1339,87 +1339,88 @@ func init() { } var fileDescriptor_d48c054165687f5c = []byte{ - // 1274 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xc7, 0xb3, 0xb6, 0xd3, 0x24, 0x2f, 0x38, 0xa1, 0xd3, 0xb4, 0xd9, 0xb8, 0xc1, 0x0d, 0x5b, - 0x01, 0x11, 0xb4, 0x76, 0xeb, 0x84, 0x42, 0x01, 0x01, 0x4e, 0xda, 0x40, 0x68, 0x02, 0xc1, 0x0e, - 0x54, 0x02, 0x95, 0xd5, 0x7a, 0x77, 0xbc, 0x1e, 0x75, 0xbd, 0xb3, 0xd9, 0xd9, 0x0d, 0xb1, 0x80, - 0x0b, 0x52, 0xef, 0x48, 0xdc, 0xf8, 0x2b, 0x38, 0x70, 0x84, 0x23, 0x12, 0xc7, 0x4a, 0x5c, 0x90, - 0xb8, 0xa0, 0x84, 0x3f, 0x82, 0x23, 0x9a, 0xd9, 0x1f, 0xde, 0xf5, 0xef, 0xe6, 0x94, 0xec, 0xbc, - 0xef, 0xfb, 0xcc, 0x7b, 0x33, 0x6f, 0xe6, 0x8d, 0xa1, 0xac, 0x53, 0xd6, 0xa6, 0xac, 0xdc, 0xd0, - 0x18, 0x2e, 0xbb, 0xb8, 0x69, 0x61, 0xdd, 0x23, 0xd4, 0x2e, 0x1f, 0xdf, 0x6e, 0x60, 0x4f, 0xbb, - 0x9d, 0x18, 0x2a, 0x39, 0x2e, 0xf5, 0x28, 0x2a, 0x06, 0x0e, 0x25, 0xee, 0x50, 0x4a, 0x58, 0x43, - 0x87, 0xc2, 0xaa, 0x49, 0xa9, 0x69, 0xe1, 0xb2, 0xe6, 0x90, 0xb2, 0x66, 0xdb, 0xd4, 0xd3, 0xb8, - 0x99, 0x05, 0xde, 0xca, 0x4f, 0x59, 0xc8, 0x57, 0x1d, 0xe7, 0x1e, 0x66, 0xba, 0x4b, 0x1c, 0x8f, - 0xba, 0xe8, 0x3e, 0x4c, 0xeb, 0x2d, 0x8d, 0xd8, 0x72, 0x66, 0x4d, 0x5a, 0x9f, 0xaf, 0x94, 0x4b, - 0xa3, 0xf9, 0xa5, 0x6d, 0x2e, 0xee, 0xfa, 0xd7, 0x02, 0x6f, 0x81, 0xa1, 0x06, 0xd6, 0xe5, 0xec, - 0x84, 0x18, 0x2e, 0x4e, 0x61, 0xf8, 0x00, 0x7a, 0x04, 0x79, 0x9d, 0xda, 0x4d, 0x62, 0xfa, 0xae, - 0x88, 0x5b, 0xce, 0x09, 0xdc, 0x1b, 0xe3, 0x71, 0x09, 0xa7, 0x04, 0x36, 0x4d, 0x43, 0x5f, 0xc1, - 0xc2, 0x91, 0x8f, 0xdd, 0x8e, 0xca, 0xb0, 0x7b, 0x4c, 0x74, 0xcc, 0xe4, 0xe9, 0xc9, 0xf8, 0x9f, - 0x72, 0xaf, 0x7a, 0xe8, 0x94, 0xe4, 0x1f, 0x25, 0x0d, 0xe8, 0x1d, 0xc8, 0x78, 0x27, 0xf2, 0x05, - 0xc1, 0xbc, 0x31, 0x8e, 0x79, 0x78, 0x92, 0x00, 0x65, 0xbc, 0x13, 0xe5, 0x17, 0x09, 0x9e, 0x4b, - 0x0e, 0xa2, 0x02, 0xcc, 0x36, 0x7d, 0xcb, 0xb2, 0xb5, 0x36, 0x96, 0xa5, 0x35, 0x69, 0x7d, 0xae, - 0x16, 0x7f, 0xf3, 0x05, 0xd7, 0x7c, 0xaf, 0x35, 0xf1, 0xbe, 0x55, 0xb9, 0x38, 0xb9, 0xe0, 0xc2, - 0x1b, 0x55, 0x21, 0xd7, 0x66, 0x26, 0x93, 0xb3, 0x6b, 0xd9, 0xf5, 0xf9, 0xca, 0xcd, 0x71, 0x94, - 0x7d, 0x66, 0x26, 0x18, 0xc2, 0x55, 0xf9, 0x16, 0x16, 0x7b, 0xe0, 0xe8, 0x2a, 0xcc, 0x31, 0x62, - 0xda, 0x6a, 0x9b, 0x1a, 0x71, 0xe4, 0x7c, 0x60, 0x9f, 0x1a, 0x18, 0xed, 0xc1, 0x75, 0x31, 0xb7, - 0x4a, 0xec, 0x26, 0x55, 0x1d, 0x97, 0x1e, 0x13, 0x03, 0xbb, 0x6a, 0x1b, 0x7b, 0x2d, 0x6a, 0xa8, - 0x71, 0xc2, 0x19, 0xe1, 0x76, 0x4d, 0x48, 0x77, 0xed, 0x26, 0x3d, 0x08, 0x85, 0xfb, 0x42, 0xb7, - 0x13, 0xca, 0x94, 0xd7, 0xe0, 0x72, 0x9d, 0x98, 0x36, 0xb1, 0x4d, 0x0e, 0x4f, 0xc4, 0x80, 0x20, - 0x97, 0x58, 0x38, 0xf1, 0xbf, 0xf2, 0x22, 0x2c, 0xf6, 0xd4, 0x2f, 0x5a, 0x80, 0x0c, 0x31, 0x42, - 0x51, 0x86, 0x18, 0x4a, 0x13, 0x16, 0x7b, 0x6a, 0x13, 0xd5, 0x01, 0x88, 0xed, 0x61, 0xb7, 0xa9, - 0xf1, 0x8a, 0x91, 0xc4, 0x4a, 0x6d, 0x8c, 0x5b, 0xa9, 0xdd, 0xc8, 0x23, 0xb1, 0x5e, 0x09, 0x8c, - 0xf2, 0x73, 0x06, 0x2e, 0x0d, 0xd0, 0x8c, 0xdc, 0xf3, 0x27, 0x12, 0xac, 0xc6, 0x08, 0x55, 0xd3, - 0x75, 0xec, 0x78, 0xc4, 0x36, 0xd5, 0x36, 0x66, 0x4c, 0x33, 0x31, 0x93, 0x33, 0x22, 0xb6, 0xed, - 0x89, 0x63, 0xab, 0x46, 0x88, 0xfd, 0x80, 0x90, 0x88, 0xb5, 0x40, 0x86, 0x89, 0x18, 0xf2, 0xe1, - 0x4a, 0x37, 0x0c, 0xd2, 0x76, 0x2c, 0xdc, 0xc6, 0xfc, 0x3b, 0x2a, 0xa3, 0x77, 0x27, 0x0e, 0x60, - 0xb7, 0xeb, 0x9c, 0x98, 0xfb, 0x32, 0x19, 0x60, 0x67, 0xca, 0x43, 0x28, 0x8e, 0x76, 0x1c, 0xb9, - 0x78, 0x2b, 0x30, 0xeb, 0x75, 0x1c, 0xac, 0xfa, 0xae, 0x15, 0xd6, 0xd6, 0x0c, 0xff, 0xfe, 0xcc, - 0xb5, 0x94, 0xaf, 0xe1, 0xfa, 0x04, 0x4b, 0x32, 0x92, 0xbe, 0x09, 0x57, 0x9a, 0x04, 0x5b, 0x86, - 0x6a, 0xc4, 0x7a, 0x95, 0x1b, 0x82, 0x3d, 0x99, 0xab, 0x2d, 0x09, 0x6b, 0x17, 0xf6, 0x31, 0xb7, - 0x29, 0x7f, 0xe7, 0x60, 0x79, 0xc8, 0xd5, 0x85, 0xaa, 0xf0, 0x42, 0x03, 0xeb, 0xad, 0x8d, 0x0a, - 0xdf, 0x68, 0xea, 0xdb, 0x9e, 0xaa, 0x19, 0x86, 0x8b, 0x19, 0x53, 0x1d, 0x17, 0x37, 0xc9, 0x49, - 0x18, 0x42, 0x21, 0x10, 0x55, 0x03, 0x4d, 0x35, 0x90, 0x1c, 0x08, 0x05, 0xba, 0x0f, 0xd7, 0x42, - 0xc4, 0xb1, 0x66, 0x11, 0x43, 0xe3, 0x41, 0xf5, 0x40, 0x82, 0x95, 0x58, 0x0d, 0x64, 0x9f, 0x47, - 0xaa, 0x61, 0x18, 0x9d, 0xda, 0x0c, 0xdb, 0xcc, 0x67, 0xbd, 0x98, 0x6c, 0x12, 0xb3, 0x1d, 0xa9, - 0xd2, 0x98, 0x1d, 0x58, 0xeb, 0x49, 0xc8, 0xf1, 0x1b, 0x16, 0xd1, 0xd5, 0xc7, 0xb8, 0x13, 0x71, - 0x72, 0x49, 0x4e, 0x98, 0xd3, 0x81, 0x50, 0x3d, 0xc0, 0x9d, 0x90, 0xf3, 0x11, 0x28, 0x7d, 0x59, - 0xf5, 0x93, 0xa6, 0x05, 0xa9, 0xd8, 0x93, 0xd8, 0x70, 0x56, 0x37, 0xb5, 0x7e, 0xd6, 0x85, 0x24, - 0x2b, 0xce, 0xae, 0x97, 0x25, 0xc3, 0x8c, 0xe3, 0xbb, 0x0e, 0x65, 0x58, 0x9e, 0x59, 0x93, 0xd6, - 0xf3, 0xb5, 0xe8, 0x93, 0x5f, 0x87, 0x3a, 0x25, 0xb6, 0xca, 0xeb, 0x4d, 0x9e, 0x15, 0xb6, 0x59, - 0x3e, 0x70, 0xd8, 0x71, 0x30, 0xba, 0x05, 0x4b, 0xbc, 0x8a, 0xd4, 0xa6, 0x6f, 0x1b, 0xae, 0x46, - 0x18, 0x76, 0x55, 0x47, 0xf3, 0x5a, 0xf2, 0x9c, 0x98, 0x14, 0x71, 0xdb, 0x4e, 0x6c, 0x3a, 0xd0, - 0xbc, 0x16, 0x7a, 0x19, 0x16, 0x85, 0x47, 0x83, 0x38, 0x9b, 0x9b, 0x81, 0x18, 0x84, 0x38, 0xcf, - 0x87, 0xb7, 0xf8, 0x28, 0xd7, 0x29, 0xbf, 0x4b, 0x90, 0x4f, 0x5d, 0xd8, 0xe8, 0x21, 0xcc, 0x87, - 0x9d, 0x4f, 0x6d, 0x33, 0x53, 0x54, 0xd0, 0x7c, 0x65, 0x73, 0xdc, 0x69, 0x0d, 0xdb, 0x5b, 0x0a, - 0xf5, 0xe1, 0x54, 0x0d, 0x58, 0x3c, 0x8e, 0x0e, 0x01, 0x2c, 0x6c, 0x6a, 0x7a, 0x47, 0x70, 0x83, - 0x96, 0x34, 0xf6, 0x8a, 0xdc, 0x13, 0x1e, 0xbd, 0xd8, 0x39, 0x2b, 0x1a, 0xde, 0x9a, 0x86, 0x6c, - 0x9b, 0x99, 0x8a, 0x0e, 0x4b, 0x83, 0x42, 0x18, 0x79, 0x1e, 0x97, 0x60, 0xda, 0xa5, 0xbe, 0x17, - 0xb5, 0x91, 0xe0, 0x23, 0x75, 0x07, 0x64, 0xd3, 0x77, 0xc0, 0x1e, 0x5c, 0x1a, 0x10, 0xcf, 0x79, - 0x6f, 0x94, 0x15, 0x58, 0xfe, 0x00, 0x7b, 0xa9, 0x97, 0x56, 0x0d, 0x1f, 0xf9, 0x98, 0x79, 0xca, - 0x97, 0x20, 0xf7, 0x9b, 0x98, 0xc3, 0xab, 0x0a, 0xbd, 0x07, 0x59, 0xcd, 0x71, 0xc2, 0x7d, 0x19, - 0xdb, 0x8c, 0xd3, 0x0c, 0xee, 0xa9, 0x9c, 0xc0, 0xf2, 0x90, 0xa7, 0x0a, 0x7a, 0xd4, 0xf7, 0xf6, - 0x09, 0x3a, 0xd9, 0x9d, 0x67, 0x79, 0xfb, 0x0c, 0x7d, 0xfa, 0x28, 0x4f, 0x24, 0xb8, 0x32, 0x58, - 0x39, 0x72, 0x0d, 0x3f, 0x81, 0x99, 0xa0, 0xf1, 0x47, 0xcd, 0xeb, 0xf5, 0x89, 0xc2, 0x09, 0x1e, - 0x01, 0x89, 0x68, 0x22, 0x8a, 0x52, 0x87, 0xcb, 0x03, 0x15, 0x83, 0xde, 0x03, 0xf1, 0x49, 0x0a, - 0x16, 0x46, 0x9c, 0xa4, 0x4c, 0xf7, 0x24, 0x09, 0x8e, 0x38, 0x49, 0x05, 0x90, 0xf7, 0x08, 0xf3, - 0xaa, 0x96, 0x15, 0xf7, 0x09, 0x16, 0xed, 0xe7, 0x3d, 0x58, 0x19, 0x60, 0x0b, 0x37, 0xf4, 0x15, - 0x58, 0xec, 0x76, 0xca, 0xa0, 0x1f, 0x48, 0xa2, 0x1f, 0x2c, 0xc4, 0xc3, 0x41, 0x27, 0xd8, 0x86, - 0x02, 0xa7, 0xc4, 0x6d, 0x2d, 0x78, 0xb5, 0x87, 0x73, 0xa0, 0x97, 0x60, 0x21, 0x8d, 0x09, 0xb3, - 0xc8, 0xa7, 0x28, 0x8a, 0x0a, 0x57, 0x07, 0x42, 0xc2, 0x60, 0xde, 0x87, 0x55, 0x92, 0x32, 0x45, - 0x0f, 0x87, 0x54, 0x64, 0x85, 0xb4, 0x26, 0x6c, 0x83, 0x22, 0xca, 0xca, 0x7f, 0x39, 0xb8, 0x58, - 0x8b, 0xb7, 0x24, 0xdc, 0x69, 0xf4, 0x9b, 0x04, 0xcf, 0xf7, 0x96, 0x34, 0x1a, 0xfb, 0xa4, 0x1e, - 0x72, 0x3e, 0x0a, 0x6f, 0x3e, 0xbb, 0x63, 0x90, 0x9f, 0x72, 0xe7, 0xfb, 0x3f, 0xff, 0xfd, 0x31, - 0x73, 0x0b, 0x95, 0xc6, 0xfd, 0xa8, 0xd2, 0x1c, 0x27, 0xd1, 0xa7, 0xd1, 0xaf, 0x12, 0x5c, 0xec, - 0xdb, 0x42, 0x34, 0x36, 0x8e, 0x61, 0x15, 0x51, 0xb8, 0x7b, 0x0e, 0xcf, 0x30, 0x85, 0x8a, 0x48, - 0xe1, 0x06, 0x7a, 0x75, 0x5c, 0x0a, 0xdd, 0x97, 0x24, 0x3a, 0x93, 0xe0, 0xd2, 0x80, 0x6d, 0x47, - 0x6f, 0x4d, 0x12, 0xc6, 0xe0, 0x82, 0x2b, 0xbc, 0x7d, 0x2e, 0xdf, 0x30, 0x89, 0xba, 0x48, 0x62, - 0x1f, 0x3d, 0x98, 0x3c, 0x89, 0xf2, 0x37, 0xe9, 0xfa, 0xfe, 0xae, 0x9c, 0xae, 0x42, 0xb6, 0x55, - 0xff, 0xe3, 0xb4, 0x28, 0x3d, 0x3d, 0x2d, 0x4a, 0xff, 0x9c, 0x16, 0xa5, 0x1f, 0xce, 0x8a, 0x53, - 0x4f, 0xcf, 0x8a, 0x53, 0x7f, 0x9d, 0x15, 0xa7, 0xbe, 0xb8, 0x6b, 0x12, 0xaf, 0xe5, 0x37, 0x4a, - 0x3a, 0x6d, 0x47, 0x13, 0x06, 0x7f, 0x6e, 0x32, 0xe3, 0x71, 0x99, 0xdf, 0x76, 0xd8, 0x2d, 0x9b, - 0xae, 0xa3, 0x87, 0xc3, 0xdd, 0x40, 0x1a, 0x17, 0xc4, 0xaf, 0xe2, 0x8d, 0xff, 0x03, 0x00, 0x00, - 0xff, 0xff, 0xb0, 0x13, 0xdb, 0x07, 0x86, 0x0f, 0x00, 0x00, + // 1282 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0xdf, 0x6f, 0xdb, 0x54, + 0x14, 0xc7, 0xeb, 0x24, 0x5d, 0x9b, 0x53, 0xd2, 0xb2, 0xbb, 0x6e, 0x75, 0xb3, 0x92, 0x15, 0x4f, + 0x40, 0x85, 0xb6, 0x64, 0x4b, 0xbb, 0xf2, 0x53, 0x40, 0xda, 0xad, 0x50, 0xd6, 0x42, 0x49, 0x0b, + 0x93, 0x40, 0xc3, 0x72, 0xec, 0x1b, 0xe7, 0x6a, 0x8e, 0xed, 0xfa, 0xda, 0xa5, 0x11, 0xe2, 0x05, + 0x69, 0xef, 0x48, 0xbc, 0xf1, 0x57, 0xf0, 0xc0, 0x23, 0x3c, 0x22, 0xf1, 0x38, 0x89, 0x17, 0x24, + 0x5e, 0x50, 0xcb, 0x1f, 0xc1, 0x23, 0xba, 0xd7, 0x3f, 0x62, 0x27, 0x4e, 0x9c, 0xf5, 0xa9, 0xf5, + 0x3d, 0xdf, 0xf3, 0xf1, 0x39, 0xe7, 0x1e, 0xdf, 0x73, 0x03, 0x35, 0xd5, 0xa2, 0x5d, 0x8b, 0xd6, + 0x5a, 0x0a, 0xc5, 0x35, 0x07, 0xb7, 0x0d, 0xac, 0xba, 0xc4, 0x32, 0x6b, 0x27, 0x77, 0x5b, 0xd8, + 0x55, 0xee, 0xc6, 0x96, 0xaa, 0xb6, 0x63, 0xb9, 0x16, 0xaa, 0xf8, 0x0e, 0x55, 0xe6, 0x50, 0x8d, + 0x59, 0x03, 0x87, 0xf2, 0x8a, 0x6e, 0x59, 0xba, 0x81, 0x6b, 0x8a, 0x4d, 0x6a, 0x8a, 0x69, 0x5a, + 0xae, 0xc2, 0xcc, 0xd4, 0xf7, 0x96, 0x7e, 0xca, 0x43, 0xa9, 0x61, 0xdb, 0xf7, 0x31, 0x55, 0x1d, + 0x62, 0xbb, 0x96, 0x83, 0x1e, 0xc0, 0xb4, 0xda, 0x51, 0x88, 0x29, 0xe6, 0x56, 0x85, 0xb5, 0xb9, + 0x7a, 0xad, 0x3a, 0x9e, 0x5f, 0xdd, 0x66, 0xe2, 0xbe, 0x7f, 0xd3, 0xf7, 0xe6, 0x18, 0x4b, 0xc3, + 0xaa, 0x98, 0x9f, 0x10, 0xc3, 0xc4, 0x09, 0x0c, 0x5b, 0x40, 0x8f, 0xa1, 0xa4, 0x5a, 0x66, 0x9b, + 0xe8, 0x9e, 0xc3, 0xe3, 0x16, 0x0b, 0x1c, 0xf7, 0x46, 0x36, 0x2e, 0xe6, 0x14, 0xc3, 0x26, 0x69, + 0xe8, 0x6b, 0x98, 0x3f, 0xf6, 0xb0, 0xd3, 0x93, 0x29, 0x76, 0x4e, 0x88, 0x8a, 0xa9, 0x38, 0x3d, + 0x19, 0xff, 0x33, 0xe6, 0x75, 0x18, 0x38, 0xc5, 0xf9, 0xc7, 0x71, 0x03, 0x7a, 0x17, 0x72, 0xee, + 0xa9, 0x78, 0x89, 0x33, 0x6f, 0x65, 0x31, 0x8f, 0x4e, 0x63, 0xa0, 0x9c, 0x7b, 0x2a, 0xfd, 0x22, + 0xc0, 0x0b, 0xf1, 0x45, 0x54, 0x86, 0xd9, 0xb6, 0x67, 0x18, 0xa6, 0xd2, 0xc5, 0xa2, 0xb0, 0x2a, + 0xac, 0x15, 0x9b, 0xd1, 0x33, 0x2b, 0xb8, 0xe2, 0xb9, 0x9d, 0x89, 0xf7, 0xad, 0xc1, 0xc4, 0xf1, + 0x82, 0x73, 0x6f, 0xd4, 0x80, 0x42, 0x97, 0xea, 0x54, 0xcc, 0xaf, 0xe6, 0xd7, 0xe6, 0xea, 0xb7, + 0xb3, 0x28, 0xfb, 0x54, 0x8f, 0x31, 0xb8, 0xab, 0xa4, 0xc3, 0xc2, 0x00, 0x1c, 0x1d, 0x01, 0x50, + 0xa2, 0x9b, 0x72, 0xd7, 0xd2, 0x30, 0x15, 0x05, 0xce, 0xbe, 0x97, 0xc5, 0x3e, 0x24, 0xba, 0x49, + 0x4c, 0x7d, 0xdf, 0xd2, 0x70, 0xec, 0x1d, 0x45, 0x06, 0x62, 0x6b, 0x54, 0xea, 0xc1, 0xd5, 0x54, + 0x0d, 0x42, 0x50, 0x88, 0xd5, 0x88, 0xff, 0x8f, 0xf6, 0xe0, 0x26, 0xcf, 0x50, 0x26, 0x66, 0xdb, + 0x92, 0x6d, 0xc7, 0x3a, 0x21, 0x1a, 0x76, 0xe4, 0x2e, 0x76, 0x3b, 0x96, 0x26, 0x47, 0x65, 0xcd, + 0x71, 0x97, 0x1b, 0x5c, 0xba, 0x6b, 0xb6, 0xad, 0x83, 0x40, 0xb8, 0xcf, 0x75, 0x3b, 0x81, 0x4c, + 0x7a, 0x19, 0x16, 0x06, 0x1a, 0x1f, 0xcd, 0x43, 0x8e, 0x68, 0xc1, 0x2b, 0x73, 0x44, 0x93, 0xda, + 0xb0, 0x30, 0xd0, 0xd4, 0xe8, 0x10, 0x80, 0x98, 0x2e, 0x76, 0xda, 0x8a, 0x1a, 0x95, 0x61, 0x3d, + 0xab, 0x0c, 0xbb, 0xa1, 0x47, 0xac, 0x08, 0x31, 0x8c, 0xf4, 0x73, 0x0e, 0xae, 0xa4, 0x68, 0xc6, + 0x36, 0xcb, 0x53, 0x01, 0x56, 0x22, 0x84, 0xac, 0xa8, 0x2a, 0xb6, 0x5d, 0x62, 0xea, 0x72, 0x17, + 0x53, 0xaa, 0xe8, 0x98, 0x8a, 0x39, 0x1e, 0xdb, 0xf6, 0xc4, 0xb1, 0x35, 0x42, 0xc4, 0xbe, 0x4f, + 0x88, 0xc5, 0x5a, 0x26, 0xa3, 0x44, 0x14, 0x79, 0x70, 0xad, 0x1f, 0x06, 0xe9, 0xda, 0x06, 0xee, + 0x62, 0xf6, 0x1c, 0xf6, 0xdf, 0x7b, 0x13, 0x07, 0xb0, 0xdb, 0x77, 0x8e, 0xbd, 0xfb, 0x2a, 0x49, + 0xb1, 0x53, 0xe9, 0x11, 0x54, 0xc6, 0x3b, 0x8e, 0x2d, 0xde, 0x32, 0xcc, 0xba, 0x3d, 0x1b, 0xcb, + 0x9e, 0x63, 0x04, 0xed, 0x32, 0xc3, 0x9e, 0x3f, 0x77, 0x0c, 0xe9, 0x1b, 0xb8, 0x39, 0x41, 0x49, + 0xc6, 0xd2, 0x37, 0xe0, 0x5a, 0x9b, 0x60, 0x43, 0x93, 0xb5, 0x48, 0x2f, 0x33, 0x83, 0xbf, 0x27, + 0xc5, 0xe6, 0x22, 0xb7, 0xf6, 0x61, 0x9f, 0x30, 0x9b, 0xf4, 0x77, 0x01, 0x96, 0x46, 0x9c, 0x79, + 0xa8, 0x01, 0x2f, 0xb5, 0xb0, 0xda, 0x59, 0xaf, 0xb3, 0x8d, 0xb6, 0x3c, 0xd3, 0x95, 0x15, 0x4d, + 0x73, 0x30, 0xa5, 0xb2, 0xed, 0xe0, 0x36, 0x39, 0x0d, 0x42, 0x28, 0xfb, 0xa2, 0x86, 0xaf, 0x69, + 0xf8, 0x92, 0x03, 0xae, 0x40, 0x0f, 0xe0, 0x46, 0x80, 0x38, 0x51, 0x0c, 0xa2, 0x29, 0x2c, 0xa8, + 0x01, 0x88, 0x5f, 0x89, 0x15, 0x5f, 0xf6, 0x45, 0xa8, 0x1a, 0x85, 0x51, 0x2d, 0x93, 0x62, 0x93, + 0x7a, 0x74, 0x10, 0x93, 0x8f, 0x63, 0xb6, 0x43, 0x55, 0x12, 0xb3, 0x03, 0xab, 0x03, 0x09, 0xd9, + 0x5e, 0xcb, 0x20, 0xaa, 0xfc, 0x04, 0xf7, 0x42, 0x4e, 0x21, 0xce, 0x09, 0x72, 0x3a, 0xe0, 0xaa, + 0x87, 0xb8, 0x17, 0x70, 0x3e, 0x06, 0x69, 0x28, 0xab, 0x61, 0xd2, 0x34, 0x27, 0x55, 0x06, 0x12, + 0x1b, 0xcd, 0xea, 0xa7, 0x36, 0xcc, 0xba, 0x14, 0x67, 0x45, 0xd9, 0x0d, 0xb2, 0x44, 0x98, 0xb1, + 0x3d, 0xc7, 0xb6, 0x28, 0x16, 0x67, 0x56, 0x85, 0xb5, 0x52, 0x33, 0x7c, 0x44, 0xd7, 0xa1, 0xa8, + 0x5a, 0xc4, 0x94, 0x59, 0xbf, 0x89, 0xb3, 0xdc, 0x36, 0xcb, 0x16, 0x8e, 0x7a, 0x36, 0x46, 0x77, + 0x60, 0x91, 0x75, 0x91, 0xdc, 0xf6, 0x4c, 0xcd, 0x51, 0x08, 0xc5, 0x8e, 0x6c, 0x2b, 0x6e, 0x47, + 0x2c, 0xf2, 0x97, 0x22, 0x66, 0xdb, 0x89, 0x4c, 0x07, 0x8a, 0xdb, 0x41, 0xaf, 0xc2, 0x02, 0xf7, + 0x68, 0x11, 0x7b, 0x63, 0xc3, 0x17, 0x03, 0x17, 0x97, 0xd8, 0xf2, 0x16, 0x5b, 0x65, 0x3a, 0xe9, + 0x77, 0x01, 0x4a, 0x89, 0x93, 0x1e, 0x3d, 0x82, 0xb9, 0x60, 0x64, 0xca, 0x5d, 0xaa, 0xf3, 0x0e, + 0x9a, 0xab, 0x6f, 0x64, 0x9e, 0xe8, 0xbe, 0x4b, 0x02, 0xf5, 0xd1, 0x54, 0x13, 0x68, 0xb4, 0xce, + 0x26, 0x85, 0x81, 0x75, 0x45, 0xed, 0x71, 0xae, 0x3f, 0xcb, 0x32, 0x8f, 0xc8, 0x3d, 0xee, 0x31, + 0x88, 0x2d, 0x1a, 0xe1, 0xf2, 0xd6, 0x34, 0xe4, 0xbb, 0x54, 0x97, 0x54, 0x58, 0x4c, 0x0b, 0x61, + 0xec, 0xf7, 0xb8, 0x08, 0xd3, 0x8e, 0xe5, 0xb9, 0xe1, 0x64, 0xf0, 0x1f, 0x12, 0x67, 0x40, 0x3e, + 0x79, 0x06, 0xec, 0xc1, 0x95, 0x94, 0x78, 0x2e, 0x7a, 0xa2, 0x2c, 0xc3, 0xd2, 0x87, 0xd8, 0x4d, + 0x5c, 0xd1, 0x9a, 0xf8, 0xd8, 0xc3, 0xd4, 0x95, 0xbe, 0x02, 0x71, 0xd8, 0x44, 0x6d, 0xd6, 0x55, + 0xe8, 0x7d, 0xc8, 0x2b, 0xb6, 0x1d, 0xec, 0x4b, 0xe6, 0x14, 0x4f, 0x32, 0x98, 0xa7, 0x74, 0x0a, + 0x4b, 0x23, 0xee, 0x38, 0xe8, 0xf1, 0xd0, 0xa5, 0xc9, 0x9f, 0x64, 0x9b, 0xcf, 0x73, 0x69, 0x1a, + 0x79, 0x67, 0x92, 0x9e, 0x0a, 0x70, 0x2d, 0x5d, 0x39, 0xb6, 0x86, 0x9f, 0xc2, 0x8c, 0x3f, 0xcb, + 0xc3, 0xe1, 0x75, 0x6f, 0xa2, 0x70, 0xfc, 0xb9, 0x1e, 0x8b, 0x26, 0xa4, 0x48, 0x87, 0x70, 0x35, + 0x55, 0x91, 0x7a, 0xbb, 0x08, 0xbf, 0x24, 0xbf, 0x30, 0xfc, 0x4b, 0xca, 0xf5, 0xbf, 0x24, 0xce, + 0xe1, 0x5f, 0x52, 0x19, 0xc4, 0x3d, 0x42, 0xdd, 0x86, 0x61, 0x44, 0x73, 0x82, 0x86, 0xfb, 0x79, + 0x1f, 0x96, 0x53, 0x6c, 0xc1, 0x86, 0xbe, 0x06, 0x0b, 0xfd, 0x49, 0xe9, 0xcf, 0x03, 0x81, 0xcf, + 0x83, 0xf9, 0x68, 0xd9, 0x9f, 0x04, 0xdb, 0x50, 0x66, 0x94, 0x68, 0xac, 0xf9, 0xd7, 0xfd, 0xe0, + 0x1d, 0xe8, 0x15, 0x98, 0x4f, 0x62, 0x82, 0x2c, 0x4a, 0x09, 0x8a, 0x24, 0xc3, 0xf5, 0x54, 0x48, + 0x10, 0xcc, 0x07, 0xb0, 0x42, 0x12, 0xa6, 0xf0, 0xe2, 0x90, 0x88, 0xac, 0x9c, 0xd4, 0x04, 0x63, + 0x90, 0x47, 0x59, 0xff, 0xaf, 0x00, 0x97, 0x9b, 0xd1, 0x96, 0x04, 0x3b, 0x8d, 0x7e, 0x13, 0xe0, + 0xc5, 0xc1, 0x96, 0x46, 0x99, 0x77, 0xf1, 0x11, 0xdf, 0x47, 0xf9, 0xcd, 0xe7, 0x77, 0xf4, 0xf3, + 0x93, 0x36, 0xbf, 0xff, 0xf3, 0xdf, 0x1f, 0x73, 0x77, 0x50, 0x35, 0xeb, 0xd7, 0x98, 0x62, 0xdb, + 0xb1, 0x39, 0x8d, 0x7e, 0x15, 0xe0, 0xf2, 0xd0, 0x16, 0xa2, 0xcc, 0x38, 0x46, 0x75, 0x44, 0xf9, + 0xad, 0x0b, 0x78, 0x06, 0x29, 0xd4, 0x79, 0x0a, 0xb7, 0xd0, 0xeb, 0x59, 0x29, 0xf4, 0x6f, 0x92, + 0xe8, 0x5c, 0x80, 0x2b, 0x29, 0xdb, 0x8e, 0xde, 0x9e, 0x24, 0x8c, 0xf4, 0x86, 0x2b, 0xbf, 0x73, + 0x21, 0xdf, 0x20, 0x89, 0x43, 0x9e, 0xc4, 0x3e, 0x7a, 0x38, 0x79, 0x12, 0xb5, 0x6f, 0x93, 0xfd, + 0xfd, 0x5d, 0x2d, 0xd9, 0x85, 0x74, 0xeb, 0xe0, 0x8f, 0xb3, 0x8a, 0xf0, 0xec, 0xac, 0x22, 0xfc, + 0x73, 0x56, 0x11, 0x7e, 0x38, 0xaf, 0x4c, 0x3d, 0x3b, 0xaf, 0x4c, 0xfd, 0x75, 0x5e, 0x99, 0xfa, + 0x72, 0x53, 0x27, 0x6e, 0xc7, 0x6b, 0x55, 0x55, 0xab, 0x1b, 0xbe, 0xd0, 0xff, 0x73, 0x9b, 0x6a, + 0x4f, 0x6a, 0xec, 0xb4, 0xc3, 0x4e, 0x4d, 0x77, 0x6c, 0x95, 0xed, 0x7b, 0x3f, 0x8a, 0xd6, 0x25, + 0xfe, 0x5b, 0x7a, 0xfd, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x54, 0xa4, 0x24, 0xbc, 0x0f, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1743,19 +1744,19 @@ func (m *AuthnDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.AuthnInfoProviderMethodFullname) > 0 { - i -= len(m.AuthnInfoProviderMethodFullname) - copy(dAtA[i:], m.AuthnInfoProviderMethodFullname) - i = encodeVarintReflection(dAtA, i, uint64(len(m.AuthnInfoProviderMethodFullname))) - i-- - dAtA[i] = 0x12 - } - if len(m.SignMode) > 0 { - i -= len(m.SignMode) - copy(dAtA[i:], m.SignMode) - i = encodeVarintReflection(dAtA, i, uint64(len(m.SignMode))) - i-- - dAtA[i] = 0xa + if len(m.SignModes) > 0 { + for iNdEx := len(m.SignModes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.SignModes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } } return len(dAtA) - i, nil } @@ -1780,6 +1781,13 @@ func (m *SigningModeDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.AuthnInfoProviderMethodFullname) > 0 { + i -= len(m.AuthnInfoProviderMethodFullname) + copy(dAtA[i:], m.AuthnInfoProviderMethodFullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.AuthnInfoProviderMethodFullname))) + i-- + dAtA[i] = 0x12 + } if len(m.Name) > 0 { i -= len(m.Name) copy(dAtA[i:], m.Name) @@ -2597,13 +2605,11 @@ func (m *AuthnDescriptor) Size() (n int) { } var l int _ = l - l = len(m.SignMode) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - l = len(m.AuthnInfoProviderMethodFullname) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) + if len(m.SignModes) > 0 { + for _, e := range m.SignModes { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } } return n } @@ -2618,6 +2624,10 @@ func (m *SigningModeDescriptor) Size() (n int) { if l > 0 { n += 1 + l + sovReflection(uint64(l)) } + l = len(m.AuthnInfoProviderMethodFullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } return n } @@ -3375,9 +3385,9 @@ func (m *AuthnDescriptor) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SignMode", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SignModes", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowReflection @@ -3387,55 +3397,25 @@ func (m *AuthnDescriptor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthReflection } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthReflection } if postIndex > l { return io.ErrUnexpectedEOF } - m.SignMode = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthnInfoProviderMethodFullname", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF + m.SignModes = append(m.SignModes, &SigningModeDescriptor{}) + if err := m.SignModes[len(m.SignModes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.AuthnInfoProviderMethodFullname = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -3519,6 +3499,38 @@ func (m *SigningModeDescriptor) Unmarshal(dAtA []byte) error { } m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuthnInfoProviderMethodFullname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AuthnInfoProviderMethodFullname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipReflection(dAtA[iNdEx:]) diff --git a/server/grpc/cosmosreflection/reflection.pb.gw.go b/server/grpc/appreflection/reflection.pb.gw.go similarity index 99% rename from server/grpc/cosmosreflection/reflection.pb.gw.go rename to server/grpc/appreflection/reflection.pb.gw.go index 6c685402e3e8..b188cdc68965 100644 --- a/server/grpc/cosmosreflection/reflection.pb.gw.go +++ b/server/grpc/appreflection/reflection.pb.gw.go @@ -2,11 +2,11 @@ // source: cosmos/base/reflection/v1beta1/reflection.proto /* -Package cosmosreflection is a reverse proxy. +Package appreflection is a reverse proxy. It translates gRPC into RESTful JSON APIs. */ -package cosmosreflection +package appreflection import ( "context" diff --git a/server/grpc/server.go b/server/grpc/server.go index 5f1edae252c9..99a8f9228312 100644 --- a/server/grpc/server.go +++ b/server/grpc/server.go @@ -2,11 +2,12 @@ package grpc import ( "fmt" - "github.com/cosmos/cosmos-sdk/server/grpc/cosmosreflection" - sdk "github.com/cosmos/cosmos-sdk/types" "net" "time" + "github.com/cosmos/cosmos-sdk/server/grpc/appreflection" + sdk "github.com/cosmos/cosmos-sdk/types" + "google.golang.org/grpc" "github.com/cosmos/cosmos-sdk/client" @@ -20,7 +21,7 @@ func StartGRPCServer(clientCtx client.Context, app types.Application, address st app.RegisterGRPCServer(clientCtx, grpcSrv) // cosmosreflection allows consumers to build dynamic clients that can write // to any cosmos-sdk application without relying on application packages at compile time - err := cosmosreflection.Register(grpcSrv, cosmosreflection.Config{ + err := appreflection.Register(grpcSrv, appreflection.Config{ SigningModes: func() []string { modes := make([]string, len(clientCtx.TxConfig.SignModeHandler().Modes())) for i, m := range clientCtx.TxConfig.SignModeHandler().Modes() { diff --git a/server/grpc/server_test.go b/server/grpc/server_test.go index 23314facc7d8..2e0be57ed514 100644 --- a/server/grpc/server_test.go +++ b/server/grpc/server_test.go @@ -8,6 +8,8 @@ import ( "testing" "time" + "github.com/cosmos/cosmos-sdk/server/grpc/appreflection" + "github.com/jhump/protoreflect/grpcreflect" "github.com/stretchr/testify/require" @@ -120,6 +122,16 @@ func (s *IntegrationTestSuite) TestGRPCServer_Reflection() { } } +func (s *IntegrationTestSuite) TestAppReflection() { + // this tests the application reflection capabilities + ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) + defer cancel() + + c := appreflection.NewReflectionServiceClient(s.conn) + _, err := c.GetAppDescriptor(ctx, nil) + s.Require().NoError(err) +} + func (s *IntegrationTestSuite) TestGRPCServer_GetTxsEvent() { // Query the tx via gRPC without pagination. This used to panic, see // https://github.com/cosmos/cosmos-sdk/issues/8038. From dc3f543ffc64b0b77380b06b422c8e6ea08e902b Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Mon, 29 Mar 2021 15:22:19 +0200 Subject: [PATCH 07/26] revert: Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4c7582b01eb5..d7b8a1fa8cfd 100644 --- a/Makefile +++ b/Makefile @@ -373,7 +373,7 @@ proto-all: proto-format proto-lint proto-gen proto-gen: @echo "Generating Protobuf files" - docker run --rm -v $(CURDIR):/workspace --workdir /workspace tendermintdev/sdk-proto-gen:v0.1 sh ./scripts/protocgen.sh + $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace tendermintdev/sdk-proto-gen:v0.1 sh ./scripts/protocgen.sh proto-format: @echo "Formatting Protobuf files" From 894af9069296dbbe4b9037ad882cdce647d7dd85 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Mon, 29 Mar 2021 15:43:27 +0200 Subject: [PATCH 08/26] chore: extend reflection tests --- server/grpc/server_test.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/server/grpc/server_test.go b/server/grpc/server_test.go index 2e0be57ed514..ca09a25e70b3 100644 --- a/server/grpc/server_test.go +++ b/server/grpc/server_test.go @@ -128,8 +128,20 @@ func (s *IntegrationTestSuite) TestAppReflection() { defer cancel() c := appreflection.NewReflectionServiceClient(s.conn) - _, err := c.GetAppDescriptor(ctx, nil) + appDesc, err := c.GetAppDescriptor(ctx, nil) s.Require().NoError(err) + + interfaces, err := c.ListAllInterfaces(ctx, nil) + s.Require().NoError(err) + s.Require().Equal(len(appDesc.App.Codec.Interfaces), len(interfaces.InterfaceNames)) + s.Require().Equal(len(s.cfg.InterfaceRegistry.ListAllInterfaces()), len(appDesc.App.Codec.Interfaces)) + + for _, iface := range interfaces.InterfaceNames { + impls, err := c.ListImplementations(ctx, &appreflection.ListImplementationsRequest{InterfaceName: iface}) + s.Require().NoError(err) + + s.Require().ElementsMatch(impls.ImplementationMessageNames, s.cfg.InterfaceRegistry.ListImplementations(iface)) + } } func (s *IntegrationTestSuite) TestGRPCServer_GetTxsEvent() { From 0e2d6f58ff86a86fe2469996d9beb5ba5f518f00 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Mon, 29 Mar 2021 15:54:40 +0200 Subject: [PATCH 09/26] chore: fix rosetta CI in the meantime --- contrib/rosetta/configuration/bootstrap.json | 2 +- contrib/rosetta/node/data.tar.gz | Bin 37459 -> 36795 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/rosetta/configuration/bootstrap.json b/contrib/rosetta/configuration/bootstrap.json index f08dae661fa1..1696d9bd8cf1 100644 --- a/contrib/rosetta/configuration/bootstrap.json +++ b/contrib/rosetta/configuration/bootstrap.json @@ -1,7 +1,7 @@ [ { "account_identifier": { - "address":"cosmos1gykh2dsytj0lde8wr9msl9xd2nyj88duvmsnn7" + "address":"cosmos1tqpwnlx558r36pmf5h8xxct94qcq00h2p5evag" }, "currency":{ "symbol":"stake", diff --git a/contrib/rosetta/node/data.tar.gz b/contrib/rosetta/node/data.tar.gz index 342100ebccfd780cdb5c9e1077febe548524692b..291681c89dc091faa0a0962c341eca0a8642eab1 100644 GIT binary patch literal 36795 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 literal 37459 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 From b39062f0863a8050f17d180affc1684432d736a8 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Mon, 29 Mar 2021 18:28:32 +0200 Subject: [PATCH 10/26] chore: lint --- server/grpc/appreflection/reflection.go | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/server/grpc/appreflection/reflection.go b/server/grpc/appreflection/reflection.go index 8e1654b3d67c..c4d7d5e5a39a 100644 --- a/server/grpc/appreflection/reflection.go +++ b/server/grpc/appreflection/reflection.go @@ -52,8 +52,9 @@ func newReflectionServiceServer(grpcSrv *grpc.Server, conf Config) (reflectionSe Bech32ConsensusPublicKeyPrefix: conf.SdkConfig.GetBech32ConsensusPubPrefix(), Purpose: conf.SdkConfig.GetPurpose(), CoinType: conf.SdkConfig.GetCoinType(), - FullFundraiserPath: conf.SdkConfig.GetFullFundraiserPath(), - FullBip44Path: conf.SdkConfig.GetFullBIP44Path(), + // nolint: staticcheck + FullFundraiserPath: conf.SdkConfig.GetFullFundraiserPath(), + FullBip44Path: conf.SdkConfig.GetFullBIP44Path(), } // set codec descriptor codecDescriptor, err := newCodecDescriptor(conf.InterfaceRegistry) @@ -61,12 +62,9 @@ func newReflectionServiceServer(grpcSrv *grpc.Server, conf Config) (reflectionSe return reflectionServiceServer{}, fmt.Errorf("unable to create codec descriptor: %w", err) } // set query service descriptor - queryServiceDescriptor, err := newQueryServiceDescriptor(grpcSrv) - if err != nil { - return reflectionServiceServer{}, fmt.Errorf("unable to create query services descriptor: %w", err) - } + queryServiceDescriptor := newQueryServiceDescriptor(grpcSrv) // set deliver descriptor - deliverDescriptor, err := newDeliverDescriptor(conf.InterfaceRegistry, conf.SigningModes) + txDescriptor, err := newTxDescriptor(conf.InterfaceRegistry, conf.SigningModes) if err != nil { return reflectionServiceServer{}, fmt.Errorf("unable to create deliver descriptor: %w", err) } @@ -75,7 +73,7 @@ func newReflectionServiceServer(grpcSrv *grpc.Server, conf Config) (reflectionSe Codec: codecDescriptor, Configuration: configurationDescriptor, QueryServices: queryServiceDescriptor, - Tx: deliverDescriptor, + Tx: txDescriptor, } ifaceList := make([]string, len(desc.Codec.Interfaces)) ifaceImplementers := make(map[string][]string, len(desc.Codec.Interfaces)) @@ -145,7 +143,7 @@ func newCodecDescriptor(ir codectypes.InterfaceRegistry) (*CodecDescriptor, erro }, nil } -func newQueryServiceDescriptor(srv *grpc.Server) (*QueryServicesDescriptor, error) { +func newQueryServiceDescriptor(srv *grpc.Server) *QueryServicesDescriptor { svcInfo := srv.GetServiceInfo() queryServices := make([]*QueryServiceDescriptor, 0, len(svcInfo)) for name, info := range svcInfo { @@ -161,10 +159,10 @@ func newQueryServiceDescriptor(srv *grpc.Server) (*QueryServicesDescriptor, erro Methods: methods, }) } - return &QueryServicesDescriptor{QueryServices: queryServices}, nil + return &QueryServicesDescriptor{QueryServices: queryServices} } -func newDeliverDescriptor(ir codectypes.InterfaceRegistry, signingModes []string) (*TxDescriptor, error) { +func newTxDescriptor(ir codectypes.InterfaceRegistry, signingModes []string) (*TxDescriptor, error) { // get base tx type name txPbName := proto.MessageName(&tx.Tx{}) if txPbName == "" { From 4982499c3d1ae776f6257b449129d529e674898c Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Tue, 30 Mar 2021 17:37:18 +0200 Subject: [PATCH 11/26] chore: lint the updates from master --- client/tx/factory.go | 2 +- server/rosetta/converter.go | 4 ++-- x/auth/ante/sigverify.go | 2 +- x/auth/client/cli/tx_multisign.go | 4 ++-- x/auth/client/cli/tx_sign.go | 4 ++-- x/auth/testutil/suite.go | 2 +- x/auth/tx/mode_handler.go | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/client/tx/factory.go b/client/tx/factory.go index 8510b39c00c9..b10d728d6b87 100644 --- a/client/tx/factory.go +++ b/client/tx/factory.go @@ -38,7 +38,7 @@ func NewFactoryCLI(clientCtx client.Context, flagSet *pflag.FlagSet) Factory { case flags.SignModeDirect: signMode = signing.SignMode_SIGN_MODE_DIRECT case flags.SignModeLegacyAminoJSON: - signMode = signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON //nolint:staticcheck + signMode = signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON } accNum, _ := flagSet.GetUint64(flags.FlagAccountNumber) diff --git a/server/rosetta/converter.go b/server/rosetta/converter.go index 2c7282e4851f..43c9460014fc 100644 --- a/server/rosetta/converter.go +++ b/server/rosetta/converter.go @@ -118,7 +118,7 @@ func NewConverter(cdc *codec.ProtoCodec, ir codectypes.InterfaceRegistry, cfg sd txDecode: cfg.TxDecoder(), txEncode: cfg.TxEncoder(), bytesToSign: func(tx authsigning.Tx, signerData authsigning.SignerData) (b []byte, err error) { - bytesToSign, err := cfg.SignModeHandler().GetSignBytes(signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signerData, tx) //nolint:staticcheck + bytesToSign, err := cfg.SignModeHandler().GetSignBytes(signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signerData, tx) if err != nil { return nil, err } @@ -662,7 +662,7 @@ func (c converter) SignedTx(txBytes []byte, signatures []*rosettatypes.Signature signedSigs[i] = signing.SignatureV2{ PubKey: notSignedSigs[i].PubKey, Data: &signing.SingleSignatureData{ - SignMode: signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, //nolint:staticcheck + SignMode: signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, Signature: signature.Bytes, }, Sequence: notSignedSigs[i].Sequence, diff --git a/x/auth/ante/sigverify.go b/x/auth/ante/sigverify.go index a057c7454524..daa59d0b52d9 100644 --- a/x/auth/ante/sigverify.go +++ b/x/auth/ante/sigverify.go @@ -186,7 +186,7 @@ func NewSigVerificationDecorator(ak AccountKeeper, signModeHandler authsigning.S func OnlyLegacyAminoSigners(sigData signing.SignatureData) bool { switch v := sigData.(type) { case *signing.SingleSignatureData: - return v.SignMode == signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON //nolint:staticcheck + return v.SignMode == signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON case *signing.MultiSignatureData: for _, s := range v.Signatures { if !OnlyLegacyAminoSigners(s) { diff --git a/x/auth/client/cli/tx_multisign.go b/x/auth/client/cli/tx_multisign.go index 8a95eff9f101..7fdcace968f5 100644 --- a/x/auth/client/cli/tx_multisign.go +++ b/x/auth/client/cli/tx_multisign.go @@ -77,7 +77,7 @@ func makeMultiSignCmd() func(cmd *cobra.Command, args []string) (err error) { txFactory := tx.NewFactoryCLI(clientCtx, cmd.Flags()) if txFactory.SignMode() == signingtypes.SignMode_SIGN_MODE_UNSPECIFIED { - txFactory = txFactory.WithSignMode(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) //nolint:staticcheck + txFactory = txFactory.WithSignMode(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) } txCfg := clientCtx.TxConfig @@ -235,7 +235,7 @@ func makeBatchMultisignCmd() func(cmd *cobra.Command, args []string) error { txCfg := clientCtx.TxConfig txFactory := tx.NewFactoryCLI(clientCtx, cmd.Flags()) if txFactory.SignMode() == signingtypes.SignMode_SIGN_MODE_UNSPECIFIED { - txFactory = txFactory.WithSignMode(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) //nolint:staticcheck + txFactory = txFactory.WithSignMode(signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) } var infile = os.Stdin diff --git a/x/auth/client/cli/tx_sign.go b/x/auth/client/cli/tx_sign.go index c5208bb3e1d6..f814f9b99a41 100644 --- a/x/auth/client/cli/tx_sign.go +++ b/x/auth/client/cli/tx_sign.go @@ -115,7 +115,7 @@ func makeSignBatchCmd() func(cmd *cobra.Command, args []string) error { } } else { if txFactory.SignMode() == signing.SignMode_SIGN_MODE_UNSPECIFIED { - txFactory = txFactory.WithSignMode(signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) //nolint:staticcheck + txFactory = txFactory.WithSignMode(signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) } err = authclient.SignTxWithSignerAddress( txFactory, clientCtx, multisigAddr, clientCtx.GetFromName(), txBuilder, clientCtx.Offline, true) @@ -219,7 +219,7 @@ func makeSignCmd() func(cmd *cobra.Command, args []string) error { return err } if txF.SignMode() == signing.SignMode_SIGN_MODE_UNSPECIFIED { - txF = txF.WithSignMode(signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) //nolint:staticcheck + txF = txF.WithSignMode(signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) } txCfg := clientCtx.TxConfig txBuilder, err := txCfg.WrapTxBuilder(newTx) diff --git a/x/auth/testutil/suite.go b/x/auth/testutil/suite.go index 93ffb6b7206c..253ce3409c5b 100644 --- a/x/auth/testutil/suite.go +++ b/x/auth/testutil/suite.go @@ -226,7 +226,7 @@ func (s *TxConfigTestSuite) TestTxEncodeDecode() { sig := signingtypes.SignatureV2{ PubKey: pubkey, Data: &signingtypes.SingleSignatureData{ - SignMode: signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, //nolint:staticcheck + SignMode: signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, Signature: dummySig, }, } diff --git a/x/auth/tx/mode_handler.go b/x/auth/tx/mode_handler.go index 861ab777322a..f49ee16198d7 100644 --- a/x/auth/tx/mode_handler.go +++ b/x/auth/tx/mode_handler.go @@ -10,7 +10,7 @@ import ( // DefaultSignModes are the default sign modes enabled for protobuf transactions. var DefaultSignModes = []signingtypes.SignMode{ signingtypes.SignMode_SIGN_MODE_DIRECT, - signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, //nolint:staticcheck + signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, } // makeSignModeHandler returns the default protobuf SignModeHandler supporting @@ -26,7 +26,7 @@ func makeSignModeHandler(modes []signingtypes.SignMode) signing.SignModeHandler switch mode { case signingtypes.SignMode_SIGN_MODE_DIRECT: handlers[i] = signModeDirectHandler{} - case signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON: //nolint:staticcheck + case signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON: handlers[i] = signModeLegacyAminoJSONHandler{} default: panic(fmt.Errorf("unsupported sign mode %+v", mode)) From 493c58aca0a5bd1b211ae111c3a83bf1157cf190 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Tue, 30 Mar 2021 17:48:26 +0200 Subject: [PATCH 12/26] chore: update CHANGELOG.md --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e82d2bd46ad..a542322c13ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,14 +37,14 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased] ## Features - +* [\#8965](https://github.com/cosmos/cosmos-sdk/pull/8965) cosmos reflection now provides more information on the application such as: deliverable msgs, sdk.Config info etc. * [\#8559](https://github.com/cosmos/cosmos-sdk/pull/8559) Added Protobuf compatible secp256r1 ECDSA signatures. * [\#8786](https://github.com/cosmos/cosmos-sdk/pull/8786) Enabled secp256r1 in x/auth. * (rosetta) [\#8729](https://github.com/cosmos/cosmos-sdk/pull/8729) Data API fully supports balance tracking. Construction API can now construct any message supported by the application. * [\#8754](https://github.com/cosmos/cosmos-sdk/pull/8875) Added support for reverse iteration to pagination. ### Client Breaking Changes - +* [\#8965](https://github.com/cosmos/cosmos-sdk/pull/8965) Cosmos reflection import path has changed from `github.com/cosmos/cosmos-sdk/client/grpc/reflection` to `github.com/cosmos/cosmos-sdk/server/grpc/appreflection` * [\#8363](https://github.com/cosmos/cosmos-sdk/pull/8363) Addresses no longer have a fixed 20-byte length. From the SDK modules' point of view, any 1-255 bytes-long byte array is a valid address. * [\#8346](https://github.com/cosmos/cosmos-sdk/pull/8346) All CLI `tx` commands generate ServiceMsgs by default. Graceful Amino support has been added to ServiceMsgs to support signing legacy Msgs. * (crypto/ed25519) [\#8690] Adopt zip1215 ed2559 verification rules. From a2accf3558db5b0466f37027344d31e01372ca34 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Wed, 31 Mar 2021 09:42:06 +0200 Subject: [PATCH 13/26] chore: clarify tx fullname role --- docs/core/proto-docs.md | 20 ++++++++++++++++++- .../base/reflection/v1beta1/reflection.proto | 2 ++ server/grpc/appreflection/reflection.pb.go | 4 ++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index a6de9d231bba..9703336ba73d 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -80,6 +80,7 @@ - [Output](#cosmos.bank.v1beta1.Output) - [Params](#cosmos.bank.v1beta1.Params) - [SendEnabled](#cosmos.bank.v1beta1.SendEnabled) + - [Supply](#cosmos.bank.v1beta1.Supply) - [cosmos/bank/v1beta1/genesis.proto](#cosmos/bank/v1beta1/genesis.proto) - [Balance](#cosmos.bank.v1beta1.Balance) @@ -1583,6 +1584,23 @@ sendable). + + + +### Supply +Supply represents a struct that passively keeps track of the total supply +amounts in the network. +This message is deprecated now that supply is indexed by denom. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `total` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | | + + + + + @@ -2365,7 +2383,7 @@ TxDescriptor describes the accepted transaction type | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `fullname` | [string](#string) | | fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) | +| `fullname` | [string](#string) | | fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) it is not meant to support polymorphism of transaction types, it is supposed to be used by reflection clients to understand if they can handle a specific transaction type in an application. | | `authn` | [AuthnDescriptor](#cosmos.base.reflection.v1beta1.AuthnDescriptor) | | authn provides information on how to authenticate a transaction in offline mode | | `msgs` | [MsgDescriptor](#cosmos.base.reflection.v1beta1.MsgDescriptor) | repeated | msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) NOTE: not to be confused with proto.Message types | diff --git a/proto/cosmos/base/reflection/v1beta1/reflection.proto b/proto/cosmos/base/reflection/v1beta1/reflection.proto index 63b855e3a7e0..6f7c96ebd139 100644 --- a/proto/cosmos/base/reflection/v1beta1/reflection.proto +++ b/proto/cosmos/base/reflection/v1beta1/reflection.proto @@ -42,6 +42,8 @@ message AppDescriptor { // TxDescriptor describes the accepted transaction type message TxDescriptor { // fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) + // it is not meant to support polymorphism of transaction types, it is supposed to be used by + // reflection clients to understand if they can handle a specific transaction type in an application. string fullname = 1; // authn provides information on how to authenticate a transaction in offline mode AuthnDescriptor authn = 2; diff --git a/server/grpc/appreflection/reflection.pb.go b/server/grpc/appreflection/reflection.pb.go index f90444a194cc..21d71f21a8e8 100644 --- a/server/grpc/appreflection/reflection.pb.go +++ b/server/grpc/appreflection/reflection.pb.go @@ -113,6 +113,8 @@ func (m *AppDescriptor) GetTx() *TxDescriptor { // TxDescriptor describes the accepted transaction type type TxDescriptor struct { // fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) + // it is not meant to support polymorphism of transaction types, it is supposed to be used by + // reflection clients to understand if they can handle a specific transaction type in an application. Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` // authn provides information on how to authenticate a transaction in offline mode Authn *AuthnDescriptor `protobuf:"bytes,2,opt,name=authn,proto3" json:"authn,omitempty"` @@ -682,6 +684,8 @@ func (m *ConfigurationDescriptor) GetFullBip44Path() string { // MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction type MsgDescriptor struct { + // msg contains a descriptor of sdk.ServiceMsg or sdk.Msg + // // Types that are valid to be assigned to Msg: // *MsgDescriptor_ServiceMsg // *MsgDescriptor_LegacyMsg From 8d3d45757929028d21a6bd5a4946e59ad4aace00 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Wed, 31 Mar 2021 09:49:43 +0200 Subject: [PATCH 14/26] change: remove support for legacy msgs --- docs/core/proto-docs.md | 18 - .../base/reflection/v1beta1/reflection.proto | 17 +- server/grpc/appreflection/reflection.go | 17 - server/grpc/appreflection/reflection.pb.go | 492 ++++-------------- 4 files changed, 95 insertions(+), 449 deletions(-) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 9703336ba73d..e11e471efefe 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -127,7 +127,6 @@ - [InterfaceAcceptingMessageDescriptor](#cosmos.base.reflection.v1beta1.InterfaceAcceptingMessageDescriptor) - [InterfaceDescriptor](#cosmos.base.reflection.v1beta1.InterfaceDescriptor) - [InterfaceImplementerDescriptor](#cosmos.base.reflection.v1beta1.InterfaceImplementerDescriptor) - - [LegacyMsgDescriptor](#cosmos.base.reflection.v1beta1.LegacyMsgDescriptor) - [ListAllInterfacesRequest](#cosmos.base.reflection.v1beta1.ListAllInterfacesRequest) - [ListAllInterfacesResponse](#cosmos.base.reflection.v1beta1.ListAllInterfacesResponse) - [ListImplementationsRequest](#cosmos.base.reflection.v1beta1.ListImplementationsRequest) @@ -2201,22 +2200,6 @@ InterfaceImplementerDescriptor describes an interface implementer - - -### LegacyMsgDescriptor -LegacyMsgDescriptor describes an sdk.Msg type - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `fullname` | [string](#string) | | fullname is the protobuf fullname of the message | -| `type_url` | [string](#string) | | type_url defines the type URL used when marshalling the type as any this is required so we can provide type safe google.protobuf.Any marshalling and unmarshalling, making sure that we don't accept just 'any' type in our interface fields | - - - - - - ### ListAllInterfacesRequest @@ -2283,7 +2266,6 @@ MsgDescriptor describes a cosmos-sdk message that can be delivered with a transa | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `service_msg` | [ServiceMsgDescriptor](#cosmos.base.reflection.v1beta1.ServiceMsgDescriptor) | | service_msg is used when the message is an sdk.ServiceMsg type | -| `legacy_msg` | [LegacyMsgDescriptor](#cosmos.base.reflection.v1beta1.LegacyMsgDescriptor) | | legacy_msg is used when the message is an sdk.Msg type | diff --git a/proto/cosmos/base/reflection/v1beta1/reflection.proto b/proto/cosmos/base/reflection/v1beta1/reflection.proto index 6f7c96ebd139..9e02740aed45 100644 --- a/proto/cosmos/base/reflection/v1beta1/reflection.proto +++ b/proto/cosmos/base/reflection/v1beta1/reflection.proto @@ -141,12 +141,12 @@ message ConfigurationDescriptor { // MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction message MsgDescriptor { - // msg contains a descriptor of sdk.ServiceMsg or sdk.Msg + // msg contains a descriptor of sdk.ServiceMsg, note: sdk.Msg is not supported + // as every sdk.Msg is already an sdk.ServiceMsg. It is defined as a oneof in case + // different representation of a msg will be implemented. oneof msg { // service_msg is used when the message is an sdk.ServiceMsg type ServiceMsgDescriptor service_msg = 1; - // legacy_msg is used when the message is an sdk.Msg type - LegacyMsgDescriptor legacy_msg = 2; } } @@ -163,17 +163,6 @@ message ServiceMsgDescriptor { string type_url = 3; } -// LegacyMsgDescriptor describes an sdk.Msg type -message LegacyMsgDescriptor { - // fullname is the protobuf fullname of the message - string fullname = 1; - // type_url defines the type URL used when marshalling the type as any - // this is required so we can provide type safe google.protobuf.Any marshalling and - // unmarshalling, making sure that we don't accept just 'any' type - // in our interface fields - string type_url = 2; -} - // GetAppDescriptorRequest is the request type of the GetAppDescriptor RPC. message GetAppDescriptorRequest {} diff --git a/server/grpc/appreflection/reflection.go b/server/grpc/appreflection/reflection.go index c4d7d5e5a39a..991b3e0e8c33 100644 --- a/server/grpc/appreflection/reflection.go +++ b/server/grpc/appreflection/reflection.go @@ -174,23 +174,6 @@ func newTxDescriptor(ir codectypes.InterfaceRegistry, signingModes []string) (*T msgsDesc := make([]*MsgDescriptor, 0, len(msgImplementers)+len(svcMsgImplementers)) - // process sdk.Msg - for _, msg := range msgImplementers { - pb, err := ir.Resolve(msg) - if err != nil { - return nil, fmt.Errorf("unable to resolve sdk.Msg %s: %w", msg, err) - } - pbName := proto.MessageName(pb) - if pbName == "" { - return nil, fmt.Errorf("unable to get proto name for sdk.Msg %s", msg) - } - msgsDesc = append(msgsDesc, &MsgDescriptor{Msg: &MsgDescriptor_LegacyMsg{ - LegacyMsg: &LegacyMsgDescriptor{ - Fullname: pbName, - TypeUrl: msg, - }, - }}) - } // process sdk.ServiceMsg for _, svcMsg := range svcMsgImplementers { resolved, err := ir.Resolve(svcMsg) diff --git a/server/grpc/appreflection/reflection.pb.go b/server/grpc/appreflection/reflection.pb.go index 21d71f21a8e8..95b850d5cbc1 100644 --- a/server/grpc/appreflection/reflection.pb.go +++ b/server/grpc/appreflection/reflection.pb.go @@ -684,11 +684,12 @@ func (m *ConfigurationDescriptor) GetFullBip44Path() string { // MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction type MsgDescriptor struct { - // msg contains a descriptor of sdk.ServiceMsg or sdk.Msg + // msg contains a descriptor of sdk.ServiceMsg, note: sdk.Msg is not supported + // as every sdk.Msg is already an sdk.ServiceMsg. It is defined as a oneof in case + // different representation of a msg will be implemented. // // Types that are valid to be assigned to Msg: // *MsgDescriptor_ServiceMsg - // *MsgDescriptor_LegacyMsg Msg isMsgDescriptor_Msg `protobuf_oneof:"msg"` } @@ -734,12 +735,8 @@ type isMsgDescriptor_Msg interface { type MsgDescriptor_ServiceMsg struct { ServiceMsg *ServiceMsgDescriptor `protobuf:"bytes,1,opt,name=service_msg,json=serviceMsg,proto3,oneof" json:"service_msg,omitempty"` } -type MsgDescriptor_LegacyMsg struct { - LegacyMsg *LegacyMsgDescriptor `protobuf:"bytes,2,opt,name=legacy_msg,json=legacyMsg,proto3,oneof" json:"legacy_msg,omitempty"` -} func (*MsgDescriptor_ServiceMsg) isMsgDescriptor_Msg() {} -func (*MsgDescriptor_LegacyMsg) isMsgDescriptor_Msg() {} func (m *MsgDescriptor) GetMsg() isMsgDescriptor_Msg { if m != nil { @@ -755,18 +752,10 @@ func (m *MsgDescriptor) GetServiceMsg() *ServiceMsgDescriptor { return nil } -func (m *MsgDescriptor) GetLegacyMsg() *LegacyMsgDescriptor { - if x, ok := m.GetMsg().(*MsgDescriptor_LegacyMsg); ok { - return x.LegacyMsg - } - return nil -} - // XXX_OneofWrappers is for the internal use of the proto package. func (*MsgDescriptor) XXX_OneofWrappers() []interface{} { return []interface{}{ (*MsgDescriptor_ServiceMsg)(nil), - (*MsgDescriptor_LegacyMsg)(nil), } } @@ -837,64 +826,6 @@ func (m *ServiceMsgDescriptor) GetTypeUrl() string { return "" } -// LegacyMsgDescriptor describes an sdk.Msg type -type LegacyMsgDescriptor struct { - // fullname is the protobuf fullname of the message - Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` - // type_url defines the type URL used when marshalling the type as any - // this is required so we can provide type safe google.protobuf.Any marshalling and - // unmarshalling, making sure that we don't accept just 'any' type - // in our interface fields - TypeUrl string `protobuf:"bytes,2,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"` -} - -func (m *LegacyMsgDescriptor) Reset() { *m = LegacyMsgDescriptor{} } -func (m *LegacyMsgDescriptor) String() string { return proto.CompactTextString(m) } -func (*LegacyMsgDescriptor) ProtoMessage() {} -func (*LegacyMsgDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{12} -} -func (m *LegacyMsgDescriptor) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *LegacyMsgDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_LegacyMsgDescriptor.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *LegacyMsgDescriptor) XXX_Merge(src proto.Message) { - xxx_messageInfo_LegacyMsgDescriptor.Merge(m, src) -} -func (m *LegacyMsgDescriptor) XXX_Size() int { - return m.Size() -} -func (m *LegacyMsgDescriptor) XXX_DiscardUnknown() { - xxx_messageInfo_LegacyMsgDescriptor.DiscardUnknown(m) -} - -var xxx_messageInfo_LegacyMsgDescriptor proto.InternalMessageInfo - -func (m *LegacyMsgDescriptor) GetFullname() string { - if m != nil { - return m.Fullname - } - return "" -} - -func (m *LegacyMsgDescriptor) GetTypeUrl() string { - if m != nil { - return m.TypeUrl - } - return "" -} - // GetAppDescriptorRequest is the request type of the GetAppDescriptor RPC. type GetAppDescriptorRequest struct { } @@ -903,7 +834,7 @@ func (m *GetAppDescriptorRequest) Reset() { *m = GetAppDescriptorRequest func (m *GetAppDescriptorRequest) String() string { return proto.CompactTextString(m) } func (*GetAppDescriptorRequest) ProtoMessage() {} func (*GetAppDescriptorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{13} + return fileDescriptor_d48c054165687f5c, []int{12} } func (m *GetAppDescriptorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -942,7 +873,7 @@ func (m *GetAppDescriptorResponse) Reset() { *m = GetAppDescriptorRespon func (m *GetAppDescriptorResponse) String() string { return proto.CompactTextString(m) } func (*GetAppDescriptorResponse) ProtoMessage() {} func (*GetAppDescriptorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{14} + return fileDescriptor_d48c054165687f5c, []int{13} } func (m *GetAppDescriptorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -988,7 +919,7 @@ func (m *QueryServicesDescriptor) Reset() { *m = QueryServicesDescriptor func (m *QueryServicesDescriptor) String() string { return proto.CompactTextString(m) } func (*QueryServicesDescriptor) ProtoMessage() {} func (*QueryServicesDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{15} + return fileDescriptor_d48c054165687f5c, []int{14} } func (m *QueryServicesDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1036,7 +967,7 @@ func (m *QueryServiceDescriptor) Reset() { *m = QueryServiceDescriptor{} func (m *QueryServiceDescriptor) String() string { return proto.CompactTextString(m) } func (*QueryServiceDescriptor) ProtoMessage() {} func (*QueryServiceDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{16} + return fileDescriptor_d48c054165687f5c, []int{15} } func (m *QueryServiceDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1094,7 +1025,7 @@ func (m *QueryMethodDescriptor) Reset() { *m = QueryMethodDescriptor{} } func (m *QueryMethodDescriptor) String() string { return proto.CompactTextString(m) } func (*QueryMethodDescriptor) ProtoMessage() {} func (*QueryMethodDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{17} + return fileDescriptor_d48c054165687f5c, []int{16} } func (m *QueryMethodDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1145,7 +1076,7 @@ func (m *ListAllInterfacesRequest) Reset() { *m = ListAllInterfacesReque func (m *ListAllInterfacesRequest) String() string { return proto.CompactTextString(m) } func (*ListAllInterfacesRequest) ProtoMessage() {} func (*ListAllInterfacesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{18} + return fileDescriptor_d48c054165687f5c, []int{17} } func (m *ListAllInterfacesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1184,7 +1115,7 @@ func (m *ListAllInterfacesResponse) Reset() { *m = ListAllInterfacesResp func (m *ListAllInterfacesResponse) String() string { return proto.CompactTextString(m) } func (*ListAllInterfacesResponse) ProtoMessage() {} func (*ListAllInterfacesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{19} + return fileDescriptor_d48c054165687f5c, []int{18} } func (m *ListAllInterfacesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1231,7 +1162,7 @@ func (m *ListImplementationsRequest) Reset() { *m = ListImplementationsR func (m *ListImplementationsRequest) String() string { return proto.CompactTextString(m) } func (*ListImplementationsRequest) ProtoMessage() {} func (*ListImplementationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{20} + return fileDescriptor_d48c054165687f5c, []int{19} } func (m *ListImplementationsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1277,7 +1208,7 @@ func (m *ListImplementationsResponse) Reset() { *m = ListImplementations func (m *ListImplementationsResponse) String() string { return proto.CompactTextString(m) } func (*ListImplementationsResponse) ProtoMessage() {} func (*ListImplementationsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{21} + return fileDescriptor_d48c054165687f5c, []int{20} } func (m *ListImplementationsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1326,7 +1257,6 @@ func init() { proto.RegisterType((*ConfigurationDescriptor)(nil), "cosmos.base.reflection.v1beta1.ConfigurationDescriptor") proto.RegisterType((*MsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.MsgDescriptor") proto.RegisterType((*ServiceMsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.ServiceMsgDescriptor") - proto.RegisterType((*LegacyMsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.LegacyMsgDescriptor") proto.RegisterType((*GetAppDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetAppDescriptorRequest") proto.RegisterType((*GetAppDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetAppDescriptorResponse") proto.RegisterType((*QueryServicesDescriptor)(nil), "cosmos.base.reflection.v1beta1.QueryServicesDescriptor") @@ -1343,88 +1273,86 @@ func init() { } var fileDescriptor_d48c054165687f5c = []byte{ - // 1282 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0xdf, 0x6f, 0xdb, 0x54, - 0x14, 0xc7, 0xeb, 0x24, 0x5d, 0x9b, 0x53, 0xd2, 0xb2, 0xbb, 0x6e, 0x75, 0xb3, 0x92, 0x15, 0x4f, - 0x40, 0x85, 0xb6, 0x64, 0x4b, 0xbb, 0xf2, 0x53, 0x40, 0xda, 0xad, 0x50, 0xd6, 0x42, 0x49, 0x0b, - 0x93, 0x40, 0xc3, 0x72, 0xec, 0x1b, 0xe7, 0x6a, 0x8e, 0xed, 0xfa, 0xda, 0xa5, 0x11, 0xe2, 0x05, - 0x69, 0xef, 0x48, 0xbc, 0xf1, 0x57, 0xf0, 0xc0, 0x23, 0x3c, 0x22, 0xf1, 0x38, 0x89, 0x17, 0x24, - 0x5e, 0x50, 0xcb, 0x1f, 0xc1, 0x23, 0xba, 0xd7, 0x3f, 0x62, 0x27, 0x4e, 0x9c, 0xf5, 0xa9, 0xf5, - 0x3d, 0xdf, 0xf3, 0xf1, 0x39, 0xe7, 0x1e, 0xdf, 0x73, 0x03, 0x35, 0xd5, 0xa2, 0x5d, 0x8b, 0xd6, - 0x5a, 0x0a, 0xc5, 0x35, 0x07, 0xb7, 0x0d, 0xac, 0xba, 0xc4, 0x32, 0x6b, 0x27, 0x77, 0x5b, 0xd8, - 0x55, 0xee, 0xc6, 0x96, 0xaa, 0xb6, 0x63, 0xb9, 0x16, 0xaa, 0xf8, 0x0e, 0x55, 0xe6, 0x50, 0x8d, - 0x59, 0x03, 0x87, 0xf2, 0x8a, 0x6e, 0x59, 0xba, 0x81, 0x6b, 0x8a, 0x4d, 0x6a, 0x8a, 0x69, 0x5a, - 0xae, 0xc2, 0xcc, 0xd4, 0xf7, 0x96, 0x7e, 0xca, 0x43, 0xa9, 0x61, 0xdb, 0xf7, 0x31, 0x55, 0x1d, - 0x62, 0xbb, 0x96, 0x83, 0x1e, 0xc0, 0xb4, 0xda, 0x51, 0x88, 0x29, 0xe6, 0x56, 0x85, 0xb5, 0xb9, - 0x7a, 0xad, 0x3a, 0x9e, 0x5f, 0xdd, 0x66, 0xe2, 0xbe, 0x7f, 0xd3, 0xf7, 0xe6, 0x18, 0x4b, 0xc3, - 0xaa, 0x98, 0x9f, 0x10, 0xc3, 0xc4, 0x09, 0x0c, 0x5b, 0x40, 0x8f, 0xa1, 0xa4, 0x5a, 0x66, 0x9b, - 0xe8, 0x9e, 0xc3, 0xe3, 0x16, 0x0b, 0x1c, 0xf7, 0x46, 0x36, 0x2e, 0xe6, 0x14, 0xc3, 0x26, 0x69, - 0xe8, 0x6b, 0x98, 0x3f, 0xf6, 0xb0, 0xd3, 0x93, 0x29, 0x76, 0x4e, 0x88, 0x8a, 0xa9, 0x38, 0x3d, - 0x19, 0xff, 0x33, 0xe6, 0x75, 0x18, 0x38, 0xc5, 0xf9, 0xc7, 0x71, 0x03, 0x7a, 0x17, 0x72, 0xee, - 0xa9, 0x78, 0x89, 0x33, 0x6f, 0x65, 0x31, 0x8f, 0x4e, 0x63, 0xa0, 0x9c, 0x7b, 0x2a, 0xfd, 0x22, - 0xc0, 0x0b, 0xf1, 0x45, 0x54, 0x86, 0xd9, 0xb6, 0x67, 0x18, 0xa6, 0xd2, 0xc5, 0xa2, 0xb0, 0x2a, - 0xac, 0x15, 0x9b, 0xd1, 0x33, 0x2b, 0xb8, 0xe2, 0xb9, 0x9d, 0x89, 0xf7, 0xad, 0xc1, 0xc4, 0xf1, - 0x82, 0x73, 0x6f, 0xd4, 0x80, 0x42, 0x97, 0xea, 0x54, 0xcc, 0xaf, 0xe6, 0xd7, 0xe6, 0xea, 0xb7, - 0xb3, 0x28, 0xfb, 0x54, 0x8f, 0x31, 0xb8, 0xab, 0xa4, 0xc3, 0xc2, 0x00, 0x1c, 0x1d, 0x01, 0x50, - 0xa2, 0x9b, 0x72, 0xd7, 0xd2, 0x30, 0x15, 0x05, 0xce, 0xbe, 0x97, 0xc5, 0x3e, 0x24, 0xba, 0x49, - 0x4c, 0x7d, 0xdf, 0xd2, 0x70, 0xec, 0x1d, 0x45, 0x06, 0x62, 0x6b, 0x54, 0xea, 0xc1, 0xd5, 0x54, - 0x0d, 0x42, 0x50, 0x88, 0xd5, 0x88, 0xff, 0x8f, 0xf6, 0xe0, 0x26, 0xcf, 0x50, 0x26, 0x66, 0xdb, - 0x92, 0x6d, 0xc7, 0x3a, 0x21, 0x1a, 0x76, 0xe4, 0x2e, 0x76, 0x3b, 0x96, 0x26, 0x47, 0x65, 0xcd, - 0x71, 0x97, 0x1b, 0x5c, 0xba, 0x6b, 0xb6, 0xad, 0x83, 0x40, 0xb8, 0xcf, 0x75, 0x3b, 0x81, 0x4c, - 0x7a, 0x19, 0x16, 0x06, 0x1a, 0x1f, 0xcd, 0x43, 0x8e, 0x68, 0xc1, 0x2b, 0x73, 0x44, 0x93, 0xda, - 0xb0, 0x30, 0xd0, 0xd4, 0xe8, 0x10, 0x80, 0x98, 0x2e, 0x76, 0xda, 0x8a, 0x1a, 0x95, 0x61, 0x3d, - 0xab, 0x0c, 0xbb, 0xa1, 0x47, 0xac, 0x08, 0x31, 0x8c, 0xf4, 0x73, 0x0e, 0xae, 0xa4, 0x68, 0xc6, - 0x36, 0xcb, 0x53, 0x01, 0x56, 0x22, 0x84, 0xac, 0xa8, 0x2a, 0xb6, 0x5d, 0x62, 0xea, 0x72, 0x17, - 0x53, 0xaa, 0xe8, 0x98, 0x8a, 0x39, 0x1e, 0xdb, 0xf6, 0xc4, 0xb1, 0x35, 0x42, 0xc4, 0xbe, 0x4f, - 0x88, 0xc5, 0x5a, 0x26, 0xa3, 0x44, 0x14, 0x79, 0x70, 0xad, 0x1f, 0x06, 0xe9, 0xda, 0x06, 0xee, - 0x62, 0xf6, 0x1c, 0xf6, 0xdf, 0x7b, 0x13, 0x07, 0xb0, 0xdb, 0x77, 0x8e, 0xbd, 0xfb, 0x2a, 0x49, - 0xb1, 0x53, 0xe9, 0x11, 0x54, 0xc6, 0x3b, 0x8e, 0x2d, 0xde, 0x32, 0xcc, 0xba, 0x3d, 0x1b, 0xcb, - 0x9e, 0x63, 0x04, 0xed, 0x32, 0xc3, 0x9e, 0x3f, 0x77, 0x0c, 0xe9, 0x1b, 0xb8, 0x39, 0x41, 0x49, - 0xc6, 0xd2, 0x37, 0xe0, 0x5a, 0x9b, 0x60, 0x43, 0x93, 0xb5, 0x48, 0x2f, 0x33, 0x83, 0xbf, 0x27, - 0xc5, 0xe6, 0x22, 0xb7, 0xf6, 0x61, 0x9f, 0x30, 0x9b, 0xf4, 0x77, 0x01, 0x96, 0x46, 0x9c, 0x79, - 0xa8, 0x01, 0x2f, 0xb5, 0xb0, 0xda, 0x59, 0xaf, 0xb3, 0x8d, 0xb6, 0x3c, 0xd3, 0x95, 0x15, 0x4d, - 0x73, 0x30, 0xa5, 0xb2, 0xed, 0xe0, 0x36, 0x39, 0x0d, 0x42, 0x28, 0xfb, 0xa2, 0x86, 0xaf, 0x69, - 0xf8, 0x92, 0x03, 0xae, 0x40, 0x0f, 0xe0, 0x46, 0x80, 0x38, 0x51, 0x0c, 0xa2, 0x29, 0x2c, 0xa8, - 0x01, 0x88, 0x5f, 0x89, 0x15, 0x5f, 0xf6, 0x45, 0xa8, 0x1a, 0x85, 0x51, 0x2d, 0x93, 0x62, 0x93, - 0x7a, 0x74, 0x10, 0x93, 0x8f, 0x63, 0xb6, 0x43, 0x55, 0x12, 0xb3, 0x03, 0xab, 0x03, 0x09, 0xd9, - 0x5e, 0xcb, 0x20, 0xaa, 0xfc, 0x04, 0xf7, 0x42, 0x4e, 0x21, 0xce, 0x09, 0x72, 0x3a, 0xe0, 0xaa, - 0x87, 0xb8, 0x17, 0x70, 0x3e, 0x06, 0x69, 0x28, 0xab, 0x61, 0xd2, 0x34, 0x27, 0x55, 0x06, 0x12, - 0x1b, 0xcd, 0xea, 0xa7, 0x36, 0xcc, 0xba, 0x14, 0x67, 0x45, 0xd9, 0x0d, 0xb2, 0x44, 0x98, 0xb1, - 0x3d, 0xc7, 0xb6, 0x28, 0x16, 0x67, 0x56, 0x85, 0xb5, 0x52, 0x33, 0x7c, 0x44, 0xd7, 0xa1, 0xa8, - 0x5a, 0xc4, 0x94, 0x59, 0xbf, 0x89, 0xb3, 0xdc, 0x36, 0xcb, 0x16, 0x8e, 0x7a, 0x36, 0x46, 0x77, - 0x60, 0x91, 0x75, 0x91, 0xdc, 0xf6, 0x4c, 0xcd, 0x51, 0x08, 0xc5, 0x8e, 0x6c, 0x2b, 0x6e, 0x47, - 0x2c, 0xf2, 0x97, 0x22, 0x66, 0xdb, 0x89, 0x4c, 0x07, 0x8a, 0xdb, 0x41, 0xaf, 0xc2, 0x02, 0xf7, - 0x68, 0x11, 0x7b, 0x63, 0xc3, 0x17, 0x03, 0x17, 0x97, 0xd8, 0xf2, 0x16, 0x5b, 0x65, 0x3a, 0xe9, - 0x77, 0x01, 0x4a, 0x89, 0x93, 0x1e, 0x3d, 0x82, 0xb9, 0x60, 0x64, 0xca, 0x5d, 0xaa, 0xf3, 0x0e, - 0x9a, 0xab, 0x6f, 0x64, 0x9e, 0xe8, 0xbe, 0x4b, 0x02, 0xf5, 0xd1, 0x54, 0x13, 0x68, 0xb4, 0xce, - 0x26, 0x85, 0x81, 0x75, 0x45, 0xed, 0x71, 0xae, 0x3f, 0xcb, 0x32, 0x8f, 0xc8, 0x3d, 0xee, 0x31, - 0x88, 0x2d, 0x1a, 0xe1, 0xf2, 0xd6, 0x34, 0xe4, 0xbb, 0x54, 0x97, 0x54, 0x58, 0x4c, 0x0b, 0x61, - 0xec, 0xf7, 0xb8, 0x08, 0xd3, 0x8e, 0xe5, 0xb9, 0xe1, 0x64, 0xf0, 0x1f, 0x12, 0x67, 0x40, 0x3e, - 0x79, 0x06, 0xec, 0xc1, 0x95, 0x94, 0x78, 0x2e, 0x7a, 0xa2, 0x2c, 0xc3, 0xd2, 0x87, 0xd8, 0x4d, - 0x5c, 0xd1, 0x9a, 0xf8, 0xd8, 0xc3, 0xd4, 0x95, 0xbe, 0x02, 0x71, 0xd8, 0x44, 0x6d, 0xd6, 0x55, - 0xe8, 0x7d, 0xc8, 0x2b, 0xb6, 0x1d, 0xec, 0x4b, 0xe6, 0x14, 0x4f, 0x32, 0x98, 0xa7, 0x74, 0x0a, - 0x4b, 0x23, 0xee, 0x38, 0xe8, 0xf1, 0xd0, 0xa5, 0xc9, 0x9f, 0x64, 0x9b, 0xcf, 0x73, 0x69, 0x1a, - 0x79, 0x67, 0x92, 0x9e, 0x0a, 0x70, 0x2d, 0x5d, 0x39, 0xb6, 0x86, 0x9f, 0xc2, 0x8c, 0x3f, 0xcb, - 0xc3, 0xe1, 0x75, 0x6f, 0xa2, 0x70, 0xfc, 0xb9, 0x1e, 0x8b, 0x26, 0xa4, 0x48, 0x87, 0x70, 0x35, - 0x55, 0x91, 0x7a, 0xbb, 0x08, 0xbf, 0x24, 0xbf, 0x30, 0xfc, 0x4b, 0xca, 0xf5, 0xbf, 0x24, 0xce, - 0xe1, 0x5f, 0x52, 0x19, 0xc4, 0x3d, 0x42, 0xdd, 0x86, 0x61, 0x44, 0x73, 0x82, 0x86, 0xfb, 0x79, - 0x1f, 0x96, 0x53, 0x6c, 0xc1, 0x86, 0xbe, 0x06, 0x0b, 0xfd, 0x49, 0xe9, 0xcf, 0x03, 0x81, 0xcf, - 0x83, 0xf9, 0x68, 0xd9, 0x9f, 0x04, 0xdb, 0x50, 0x66, 0x94, 0x68, 0xac, 0xf9, 0xd7, 0xfd, 0xe0, - 0x1d, 0xe8, 0x15, 0x98, 0x4f, 0x62, 0x82, 0x2c, 0x4a, 0x09, 0x8a, 0x24, 0xc3, 0xf5, 0x54, 0x48, - 0x10, 0xcc, 0x07, 0xb0, 0x42, 0x12, 0xa6, 0xf0, 0xe2, 0x90, 0x88, 0xac, 0x9c, 0xd4, 0x04, 0x63, - 0x90, 0x47, 0x59, 0xff, 0xaf, 0x00, 0x97, 0x9b, 0xd1, 0x96, 0x04, 0x3b, 0x8d, 0x7e, 0x13, 0xe0, - 0xc5, 0xc1, 0x96, 0x46, 0x99, 0x77, 0xf1, 0x11, 0xdf, 0x47, 0xf9, 0xcd, 0xe7, 0x77, 0xf4, 0xf3, - 0x93, 0x36, 0xbf, 0xff, 0xf3, 0xdf, 0x1f, 0x73, 0x77, 0x50, 0x35, 0xeb, 0xd7, 0x98, 0x62, 0xdb, - 0xb1, 0x39, 0x8d, 0x7e, 0x15, 0xe0, 0xf2, 0xd0, 0x16, 0xa2, 0xcc, 0x38, 0x46, 0x75, 0x44, 0xf9, - 0xad, 0x0b, 0x78, 0x06, 0x29, 0xd4, 0x79, 0x0a, 0xb7, 0xd0, 0xeb, 0x59, 0x29, 0xf4, 0x6f, 0x92, - 0xe8, 0x5c, 0x80, 0x2b, 0x29, 0xdb, 0x8e, 0xde, 0x9e, 0x24, 0x8c, 0xf4, 0x86, 0x2b, 0xbf, 0x73, - 0x21, 0xdf, 0x20, 0x89, 0x43, 0x9e, 0xc4, 0x3e, 0x7a, 0x38, 0x79, 0x12, 0xb5, 0x6f, 0x93, 0xfd, - 0xfd, 0x5d, 0x2d, 0xd9, 0x85, 0x74, 0xeb, 0xe0, 0x8f, 0xb3, 0x8a, 0xf0, 0xec, 0xac, 0x22, 0xfc, - 0x73, 0x56, 0x11, 0x7e, 0x38, 0xaf, 0x4c, 0x3d, 0x3b, 0xaf, 0x4c, 0xfd, 0x75, 0x5e, 0x99, 0xfa, - 0x72, 0x53, 0x27, 0x6e, 0xc7, 0x6b, 0x55, 0x55, 0xab, 0x1b, 0xbe, 0xd0, 0xff, 0x73, 0x9b, 0x6a, - 0x4f, 0x6a, 0xec, 0xb4, 0xc3, 0x4e, 0x4d, 0x77, 0x6c, 0x95, 0xed, 0x7b, 0x3f, 0x8a, 0xd6, 0x25, - 0xfe, 0x5b, 0x7a, 0xfd, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x54, 0xa4, 0x24, 0xbc, 0x0f, - 0x00, 0x00, + // 1249 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0x4d, 0x6f, 0xdc, 0x54, + 0x17, 0xc7, 0xe3, 0x99, 0x49, 0x93, 0x9c, 0x3c, 0x93, 0x3c, 0xbd, 0x4d, 0x13, 0x67, 0x1a, 0xa6, + 0xc1, 0x15, 0x10, 0xa1, 0x76, 0xa6, 0x9d, 0xa4, 0xe1, 0x55, 0xc0, 0x24, 0x6d, 0x20, 0xb4, 0x81, + 0x30, 0x09, 0x54, 0x02, 0x15, 0xcb, 0x63, 0xdf, 0xf1, 0x5c, 0xd5, 0xe3, 0xeb, 0xf8, 0xda, 0x21, + 0x23, 0xc4, 0x06, 0xa9, 0x7b, 0x24, 0x76, 0x7c, 0x0a, 0x16, 0x2c, 0x61, 0xcf, 0xb2, 0x12, 0x1b, + 0x24, 0x36, 0x28, 0xe1, 0x43, 0xb0, 0x44, 0xf7, 0xfa, 0x65, 0xec, 0x79, 0xf3, 0xb4, 0xab, 0xc4, + 0xf7, 0xfc, 0xcf, 0xcf, 0xe7, 0x9c, 0x7b, 0x7c, 0xcf, 0x1d, 0xa8, 0xea, 0x94, 0x75, 0x28, 0xab, + 0x36, 0x35, 0x86, 0xab, 0x2e, 0x6e, 0x59, 0x58, 0xf7, 0x08, 0xb5, 0xab, 0xa7, 0x77, 0x9a, 0xd8, + 0xd3, 0xee, 0x24, 0x96, 0x2a, 0x8e, 0x4b, 0x3d, 0x8a, 0xca, 0x81, 0x43, 0x85, 0x3b, 0x54, 0x12, + 0xd6, 0xd0, 0xa1, 0xb4, 0x66, 0x52, 0x6a, 0x5a, 0xb8, 0xaa, 0x39, 0xa4, 0xaa, 0xd9, 0x36, 0xf5, + 0x34, 0x6e, 0x66, 0x81, 0xb7, 0xf2, 0x53, 0x1e, 0x8a, 0x75, 0xc7, 0xb9, 0x87, 0x99, 0xee, 0x12, + 0xc7, 0xa3, 0x2e, 0xba, 0x0f, 0xd3, 0x7a, 0x5b, 0x23, 0xb6, 0x9c, 0x5b, 0x97, 0x36, 0xe6, 0x6b, + 0xd5, 0xca, 0x78, 0x7e, 0x65, 0x97, 0x8b, 0x7b, 0xfe, 0x8d, 0xc0, 0x5b, 0x60, 0xa8, 0x81, 0x75, + 0x39, 0x3f, 0x21, 0x86, 0x8b, 0x53, 0x18, 0xbe, 0x80, 0x1e, 0x43, 0x51, 0xa7, 0x76, 0x8b, 0x98, + 0xbe, 0x2b, 0xe2, 0x96, 0x0b, 0x02, 0xf7, 0x46, 0x36, 0x2e, 0xe1, 0x94, 0xc0, 0xa6, 0x69, 0xe8, + 0x6b, 0x58, 0x38, 0xf1, 0xb1, 0xdb, 0x55, 0x19, 0x76, 0x4f, 0x89, 0x8e, 0x99, 0x3c, 0x3d, 0x19, + 0xff, 0x33, 0xee, 0x75, 0x14, 0x3a, 0x25, 0xf9, 0x27, 0x49, 0x03, 0x7a, 0x17, 0x72, 0xde, 0x99, + 0x7c, 0x49, 0x30, 0x6f, 0x66, 0x31, 0x8f, 0xcf, 0x12, 0xa0, 0x9c, 0x77, 0xa6, 0xfc, 0x22, 0xc1, + 0xff, 0x92, 0x8b, 0xa8, 0x04, 0xb3, 0x2d, 0xdf, 0xb2, 0x6c, 0xad, 0x83, 0x65, 0x69, 0x5d, 0xda, + 0x98, 0x6b, 0xc4, 0xcf, 0xbc, 0xe0, 0x9a, 0xef, 0xb5, 0x27, 0xde, 0xb7, 0x3a, 0x17, 0x27, 0x0b, + 0x2e, 0xbc, 0x51, 0x1d, 0x0a, 0x1d, 0x66, 0x32, 0x39, 0xbf, 0x9e, 0xdf, 0x98, 0xaf, 0xdd, 0xca, + 0xa2, 0x1c, 0x30, 0x33, 0xc1, 0x10, 0xae, 0x8a, 0x09, 0x8b, 0x7d, 0x70, 0x74, 0x0c, 0xc0, 0x88, + 0x69, 0xab, 0x1d, 0x6a, 0x60, 0x26, 0x4b, 0x82, 0x7d, 0x37, 0x8b, 0x7d, 0x44, 0x4c, 0x9b, 0xd8, + 0xe6, 0x01, 0x35, 0x70, 0xe2, 0x1d, 0x73, 0x1c, 0xc4, 0xd7, 0x98, 0xd2, 0x85, 0xab, 0x43, 0x35, + 0x08, 0x41, 0x21, 0x51, 0x23, 0xf1, 0x3f, 0x7a, 0x08, 0x37, 0x44, 0x86, 0x2a, 0xb1, 0x5b, 0x54, + 0x75, 0x5c, 0x7a, 0x4a, 0x0c, 0xec, 0xaa, 0x1d, 0xec, 0xb5, 0xa9, 0xa1, 0xc6, 0x65, 0xcd, 0x09, + 0x97, 0xeb, 0x42, 0xba, 0x6f, 0xb7, 0xe8, 0x61, 0x28, 0x3c, 0x10, 0xba, 0xbd, 0x50, 0xa6, 0xbc, + 0x0c, 0x8b, 0x7d, 0x8d, 0x8f, 0x16, 0x20, 0x47, 0x8c, 0xf0, 0x95, 0x39, 0x62, 0x28, 0x2d, 0x58, + 0xec, 0x6b, 0x6a, 0x74, 0x04, 0x40, 0x6c, 0x0f, 0xbb, 0x2d, 0x4d, 0x8f, 0xcb, 0xb0, 0x99, 0x55, + 0x86, 0xfd, 0xc8, 0x23, 0x51, 0x84, 0x04, 0x46, 0xf9, 0x39, 0x07, 0x57, 0x86, 0x68, 0xc6, 0x36, + 0xcb, 0x53, 0x09, 0xd6, 0x62, 0x84, 0xaa, 0xe9, 0x3a, 0x76, 0x3c, 0x62, 0x9b, 0x6a, 0x07, 0x33, + 0xa6, 0x99, 0x98, 0xc9, 0x39, 0x11, 0xdb, 0xee, 0xc4, 0xb1, 0xd5, 0x23, 0xc4, 0x41, 0x40, 0x48, + 0xc4, 0x5a, 0x22, 0xa3, 0x44, 0x0c, 0xf9, 0xb0, 0xdc, 0x0b, 0x83, 0x74, 0x1c, 0x0b, 0x77, 0x30, + 0x7f, 0x8e, 0xfa, 0xef, 0xbd, 0x89, 0x03, 0xd8, 0xef, 0x39, 0x27, 0xde, 0x7d, 0x95, 0x0c, 0xb1, + 0x33, 0xe5, 0x11, 0x94, 0xc7, 0x3b, 0x8e, 0x2d, 0xde, 0x2a, 0xcc, 0x7a, 0x5d, 0x07, 0xab, 0xbe, + 0x6b, 0x85, 0xed, 0x32, 0xc3, 0x9f, 0x3f, 0x77, 0x2d, 0xe5, 0x1b, 0xb8, 0x31, 0x41, 0x49, 0xc6, + 0xd2, 0xb7, 0x60, 0xb9, 0x45, 0xb0, 0x65, 0xa8, 0x46, 0xac, 0x57, 0xb9, 0x21, 0xd8, 0x93, 0xb9, + 0xc6, 0x92, 0xb0, 0xf6, 0x60, 0x9f, 0x70, 0x9b, 0xf2, 0x57, 0x01, 0x56, 0x46, 0x9c, 0x79, 0xa8, + 0x0e, 0x2f, 0x35, 0xb1, 0xde, 0xde, 0xac, 0xf1, 0x8d, 0xa6, 0xbe, 0xed, 0xa9, 0x9a, 0x61, 0xb8, + 0x98, 0x31, 0xd5, 0x71, 0x71, 0x8b, 0x9c, 0x85, 0x21, 0x94, 0x02, 0x51, 0x3d, 0xd0, 0xd4, 0x03, + 0xc9, 0xa1, 0x50, 0xa0, 0xfb, 0x70, 0x3d, 0x44, 0x9c, 0x6a, 0x16, 0x31, 0x34, 0x1e, 0x54, 0x1f, + 0x24, 0xa8, 0xc4, 0x5a, 0x20, 0xfb, 0x22, 0x52, 0x8d, 0xc2, 0xe8, 0xd4, 0x66, 0xd8, 0x66, 0x3e, + 0xeb, 0xc7, 0xe4, 0x93, 0x98, 0xdd, 0x48, 0x95, 0xc6, 0xec, 0xc1, 0x7a, 0x5f, 0x42, 0x8e, 0xdf, + 0xb4, 0x88, 0xae, 0x3e, 0xc1, 0xdd, 0x88, 0x53, 0x48, 0x72, 0xc2, 0x9c, 0x0e, 0x85, 0xea, 0x01, + 0xee, 0x86, 0x9c, 0x8f, 0x41, 0x19, 0xc8, 0x6a, 0x90, 0x34, 0x2d, 0x48, 0xe5, 0xbe, 0xc4, 0x46, + 0xb3, 0x7a, 0xa9, 0x0d, 0xb2, 0x2e, 0x25, 0x59, 0x71, 0x76, 0xfd, 0x2c, 0x19, 0x66, 0x1c, 0xdf, + 0x75, 0x28, 0xc3, 0xf2, 0xcc, 0xba, 0xb4, 0x51, 0x6c, 0x44, 0x8f, 0xe8, 0x1a, 0xcc, 0xe9, 0x94, + 0xd8, 0x2a, 0xef, 0x37, 0x79, 0x56, 0xd8, 0x66, 0xf9, 0xc2, 0x71, 0xd7, 0xc1, 0xe8, 0x36, 0x2c, + 0xf1, 0x2e, 0x52, 0x5b, 0xbe, 0x6d, 0xb8, 0x1a, 0x61, 0xd8, 0x55, 0x1d, 0xcd, 0x6b, 0xcb, 0x73, + 0xe2, 0xa5, 0x88, 0xdb, 0xf6, 0x62, 0xd3, 0xa1, 0xe6, 0xb5, 0xd1, 0xab, 0xb0, 0x28, 0x3c, 0x9a, + 0xc4, 0xd9, 0xda, 0x0a, 0xc4, 0x20, 0xc4, 0x45, 0xbe, 0xbc, 0xc3, 0x57, 0xb9, 0x4e, 0xa1, 0x50, + 0x4c, 0x1d, 0xf4, 0xe8, 0x11, 0xcc, 0x87, 0x13, 0x53, 0xed, 0x30, 0x53, 0x34, 0xd0, 0x7c, 0x6d, + 0x2b, 0xf3, 0x40, 0x0f, 0x5c, 0x52, 0xa8, 0x8f, 0xa6, 0x1a, 0xc0, 0xe2, 0xf5, 0x9d, 0x69, 0xc8, + 0x77, 0x98, 0xa9, 0xe8, 0xb0, 0x34, 0x4c, 0x3c, 0xf6, 0xc3, 0x59, 0x82, 0x69, 0x97, 0xfa, 0x5e, + 0x74, 0x84, 0x07, 0x0f, 0xa9, 0x8f, 0x35, 0x9f, 0xfe, 0x58, 0x57, 0x61, 0xe5, 0x43, 0xec, 0xa5, + 0x6e, 0x3f, 0x0d, 0x7c, 0xe2, 0x63, 0xe6, 0x29, 0x5f, 0x81, 0x3c, 0x68, 0x62, 0x0e, 0xdf, 0x30, + 0xf4, 0x3e, 0xe4, 0x35, 0xc7, 0x09, 0x73, 0xce, 0x1c, 0x90, 0x69, 0x06, 0xf7, 0x54, 0xce, 0x60, + 0x65, 0xc4, 0xf5, 0x01, 0x3d, 0x1e, 0xb8, 0x8f, 0x04, 0x43, 0x62, 0xfb, 0x79, 0xee, 0x23, 0x23, + 0xaf, 0x23, 0xca, 0x53, 0x09, 0x96, 0x87, 0x2b, 0xc7, 0x56, 0xf6, 0x53, 0x98, 0x09, 0xc6, 0x64, + 0x34, 0x17, 0xee, 0x4e, 0x14, 0x4e, 0x30, 0x32, 0x13, 0xd1, 0x44, 0x14, 0xe5, 0x08, 0xae, 0x0e, + 0x55, 0x0c, 0x1d, 0xdc, 0x51, 0x93, 0x06, 0x85, 0x11, 0x4d, 0x9a, 0xeb, 0x35, 0xa9, 0xe0, 0x88, + 0x26, 0x2d, 0x81, 0xfc, 0x90, 0x30, 0xaf, 0x6e, 0x59, 0xf1, 0x11, 0xcc, 0xa2, 0xfd, 0xbc, 0x07, + 0xab, 0x43, 0x6c, 0xe1, 0x86, 0xbe, 0x06, 0x8b, 0xbd, 0x21, 0x14, 0x1c, 0xb5, 0x92, 0x38, 0x6a, + 0x17, 0xe2, 0xe5, 0xe0, 0x90, 0xdd, 0x85, 0x12, 0xa7, 0xc4, 0x13, 0x23, 0xb8, 0x49, 0x87, 0xef, + 0x40, 0xaf, 0xc0, 0x42, 0x1a, 0x13, 0x66, 0x51, 0x4c, 0x51, 0x14, 0x15, 0xae, 0x0d, 0x85, 0x84, + 0xc1, 0x7c, 0x00, 0x6b, 0x24, 0x65, 0x8a, 0x66, 0x72, 0x2a, 0xb2, 0x52, 0x5a, 0x13, 0x4e, 0x18, + 0x11, 0x65, 0xed, 0xdf, 0x02, 0x5c, 0x6e, 0xc4, 0x5b, 0x12, 0xee, 0x34, 0xfa, 0x4d, 0x82, 0xff, + 0xf7, 0xb7, 0x34, 0xca, 0xbc, 0xe6, 0x8e, 0xf8, 0x3e, 0x4a, 0x6f, 0x3e, 0xbf, 0x63, 0x90, 0x9f, + 0xb2, 0xfd, 0xfd, 0x1f, 0xff, 0xfc, 0x98, 0xbb, 0x8d, 0x2a, 0x59, 0x3f, 0x74, 0x34, 0xc7, 0x49, + 0x8c, 0x40, 0xf4, 0xab, 0x04, 0x97, 0x07, 0xb6, 0x10, 0x65, 0xc6, 0x31, 0xaa, 0x23, 0x4a, 0x6f, + 0xbd, 0x80, 0x67, 0x98, 0x42, 0x4d, 0xa4, 0x70, 0x13, 0xbd, 0x9e, 0x95, 0x42, 0xef, 0x92, 0x86, + 0x2e, 0x24, 0xb8, 0x32, 0x64, 0xdb, 0xd1, 0xdb, 0x93, 0x84, 0x31, 0xbc, 0xe1, 0x4a, 0xef, 0xbc, + 0x90, 0x6f, 0x98, 0xc4, 0x91, 0x48, 0xe2, 0x00, 0x3d, 0x98, 0x3c, 0x89, 0xea, 0xb7, 0xe9, 0xfe, + 0xfe, 0xae, 0x9a, 0xee, 0x42, 0xb6, 0x73, 0xf8, 0xfb, 0x79, 0x59, 0x7a, 0x76, 0x5e, 0x96, 0xfe, + 0x3e, 0x2f, 0x4b, 0x3f, 0x5c, 0x94, 0xa7, 0x9e, 0x5d, 0x94, 0xa7, 0xfe, 0xbc, 0x28, 0x4f, 0x7d, + 0xb9, 0x6d, 0x12, 0xaf, 0xed, 0x37, 0x2b, 0x3a, 0xed, 0x44, 0x2f, 0x0c, 0xfe, 0xdc, 0x62, 0xc6, + 0x93, 0x2a, 0x3f, 0xed, 0xb0, 0x5b, 0x35, 0x5d, 0x47, 0xe7, 0xfb, 0xde, 0x8b, 0xa2, 0x79, 0x49, + 0xfc, 0x4c, 0xdd, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x73, 0xc4, 0x72, 0x03, 0x17, 0x0f, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2145,27 +2073,6 @@ func (m *MsgDescriptor_ServiceMsg) MarshalToSizedBuffer(dAtA []byte) (int, error } return len(dAtA) - i, nil } -func (m *MsgDescriptor_LegacyMsg) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgDescriptor_LegacyMsg) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.LegacyMsg != nil { - { - size, err := m.LegacyMsg.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - return len(dAtA) - i, nil -} func (m *ServiceMsgDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2210,43 +2117,6 @@ func (m *ServiceMsgDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *LegacyMsgDescriptor) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *LegacyMsgDescriptor) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *LegacyMsgDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.TypeUrl) > 0 { - i -= len(m.TypeUrl) - copy(dAtA[i:], m.TypeUrl) - i = encodeVarintReflection(dAtA, i, uint64(len(m.TypeUrl))) - i-- - dAtA[i] = 0x12 - } - if len(m.Fullname) > 0 { - i -= len(m.Fullname) - copy(dAtA[i:], m.Fullname) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *GetAppDescriptorRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2795,18 +2665,6 @@ func (m *MsgDescriptor_ServiceMsg) Size() (n int) { } return n } -func (m *MsgDescriptor_LegacyMsg) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.LegacyMsg != nil { - l = m.LegacyMsg.Size() - n += 1 + l + sovReflection(uint64(l)) - } - return n -} func (m *ServiceMsgDescriptor) Size() (n int) { if m == nil { return 0 @@ -2828,23 +2686,6 @@ func (m *ServiceMsgDescriptor) Size() (n int) { return n } -func (m *LegacyMsgDescriptor) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Fullname) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - l = len(m.TypeUrl) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - return n -} - func (m *GetAppDescriptorRequest) Size() (n int) { if m == nil { return 0 @@ -4508,41 +4349,6 @@ func (m *MsgDescriptor) Unmarshal(dAtA []byte) error { } m.Msg = &MsgDescriptor_ServiceMsg{v} iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LegacyMsg", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &LegacyMsgDescriptor{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Msg = &MsgDescriptor_LegacyMsg{v} - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipReflection(dAtA[iNdEx:]) @@ -4710,120 +4516,6 @@ func (m *ServiceMsgDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *LegacyMsgDescriptor) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: LegacyMsgDescriptor: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: LegacyMsgDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Fullname = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TypeUrl", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.TypeUrl = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipReflection(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthReflection - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *GetAppDescriptorRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 From 865868774858dcb697e56600646f4e266a8353e9 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Wed, 31 Mar 2021 09:55:25 +0200 Subject: [PATCH 15/26] change: remove deprecated configuration info --- docs/core/proto-docs.md | 9 - .../base/reflection/v1beta1/reflection.proto | 18 - server/grpc/appreflection/reflection.go | 12 +- server/grpc/appreflection/reflection.pb.go | 585 +++--------------- 4 files changed, 70 insertions(+), 554 deletions(-) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index e11e471efefe..895d52e74240 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -2110,15 +2110,6 @@ ConfigurationDescriptor contains metadata information on the sdk.Config | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `bech32_account_address_prefix` | [string](#string) | | bech32_account_address_prefix is the account address prefix | -| `bech32_validator_address_prefix` | [string](#string) | | bech32_validator_address_prefix is the bech32 prefix for validator addresses | -| `bech32_consensus_address_prefix` | [string](#string) | | bech32_consensus_address_prefix is the bech32 prefix for consensus nodes addresses | -| `bech32_account_public_key_prefix` | [string](#string) | | bech32_account_public_key_prefix is the bech32 prefix for accounts public keys | -| `bech32_validator_public_key_prefix` | [string](#string) | | bech32_validator_public_key_prefix is the bech32 prefix for validators public keys | -| `bech32_consensus_public_key_prefix` | [string](#string) | | bech32_consensus_public_key_prefix is the bech32 prefix for consensus nodes public keys | -| `purpose` | [uint32](#uint32) | | purpose is the BIP-0044 purpose code | -| `coin_type` | [uint32](#uint32) | | coin_type is the BIP-0044 coin type code | -| `full_fundraiser_path` | [string](#string) | | full_fundraiser_path is the BIP-0044 prefix (deprecated in favor of full_bip44_path) | -| `full_bip44_path` | [string](#string) | | full_bip44_path is the BIP-0044 prefix | diff --git a/proto/cosmos/base/reflection/v1beta1/reflection.proto b/proto/cosmos/base/reflection/v1beta1/reflection.proto index 9e02740aed45..95b620a3d374 100644 --- a/proto/cosmos/base/reflection/v1beta1/reflection.proto +++ b/proto/cosmos/base/reflection/v1beta1/reflection.proto @@ -119,24 +119,6 @@ message InterfaceAcceptingMessageDescriptor { message ConfigurationDescriptor { // bech32_account_address_prefix is the account address prefix string bech32_account_address_prefix = 1; - // bech32_validator_address_prefix is the bech32 prefix for validator addresses - string bech32_validator_address_prefix = 2; - // bech32_consensus_address_prefix is the bech32 prefix for consensus nodes addresses - string bech32_consensus_address_prefix = 3; - // bech32_account_public_key_prefix is the bech32 prefix for accounts public keys - string bech32_account_public_key_prefix = 4; - // bech32_validator_public_key_prefix is the bech32 prefix for validators public keys - string bech32_validator_public_key_prefix = 5; - // bech32_consensus_public_key_prefix is the bech32 prefix for consensus nodes public keys - string bech32_consensus_public_key_prefix = 6; - // purpose is the BIP-0044 purpose code - uint32 purpose = 7; - // coin_type is the BIP-0044 coin type code - uint32 coin_type = 8; - // full_fundraiser_path is the BIP-0044 prefix (deprecated in favor of full_bip44_path) - string full_fundraiser_path = 9; - // full_bip44_path is the BIP-0044 prefix - string full_bip44_path = 10; } // MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction diff --git a/server/grpc/appreflection/reflection.go b/server/grpc/appreflection/reflection.go index 991b3e0e8c33..af936a4718ce 100644 --- a/server/grpc/appreflection/reflection.go +++ b/server/grpc/appreflection/reflection.go @@ -44,17 +44,7 @@ func newReflectionServiceServer(grpcSrv *grpc.Server, conf Config) (reflectionSe chainDescriptor := &ChainDescriptor{Id: conf.ChainID} // set configuration descriptor configurationDescriptor := &ConfigurationDescriptor{ - Bech32AccountAddressPrefix: conf.SdkConfig.GetBech32AccountAddrPrefix(), - Bech32ValidatorAddressPrefix: conf.SdkConfig.GetBech32ValidatorAddrPrefix(), - Bech32ConsensusAddressPrefix: conf.SdkConfig.GetBech32ConsensusAddrPrefix(), - Bech32AccountPublicKeyPrefix: conf.SdkConfig.GetBech32AccountPubPrefix(), - Bech32ValidatorPublicKeyPrefix: conf.SdkConfig.GetBech32ValidatorPubPrefix(), - Bech32ConsensusPublicKeyPrefix: conf.SdkConfig.GetBech32ConsensusPubPrefix(), - Purpose: conf.SdkConfig.GetPurpose(), - CoinType: conf.SdkConfig.GetCoinType(), - // nolint: staticcheck - FullFundraiserPath: conf.SdkConfig.GetFullFundraiserPath(), - FullBip44Path: conf.SdkConfig.GetFullBIP44Path(), + Bech32AccountAddressPrefix: conf.SdkConfig.GetBech32AccountAddrPrefix(), } // set codec descriptor codecDescriptor, err := newCodecDescriptor(conf.InterfaceRegistry) diff --git a/server/grpc/appreflection/reflection.pb.go b/server/grpc/appreflection/reflection.pb.go index 95b850d5cbc1..195db946f251 100644 --- a/server/grpc/appreflection/reflection.pb.go +++ b/server/grpc/appreflection/reflection.pb.go @@ -559,24 +559,6 @@ func (m *InterfaceAcceptingMessageDescriptor) GetFieldDescriptorNames() []string type ConfigurationDescriptor struct { // bech32_account_address_prefix is the account address prefix Bech32AccountAddressPrefix string `protobuf:"bytes,1,opt,name=bech32_account_address_prefix,json=bech32AccountAddressPrefix,proto3" json:"bech32_account_address_prefix,omitempty"` - // bech32_validator_address_prefix is the bech32 prefix for validator addresses - Bech32ValidatorAddressPrefix string `protobuf:"bytes,2,opt,name=bech32_validator_address_prefix,json=bech32ValidatorAddressPrefix,proto3" json:"bech32_validator_address_prefix,omitempty"` - // bech32_consensus_address_prefix is the bech32 prefix for consensus nodes addresses - Bech32ConsensusAddressPrefix string `protobuf:"bytes,3,opt,name=bech32_consensus_address_prefix,json=bech32ConsensusAddressPrefix,proto3" json:"bech32_consensus_address_prefix,omitempty"` - // bech32_account_public_key_prefix is the bech32 prefix for accounts public keys - Bech32AccountPublicKeyPrefix string `protobuf:"bytes,4,opt,name=bech32_account_public_key_prefix,json=bech32AccountPublicKeyPrefix,proto3" json:"bech32_account_public_key_prefix,omitempty"` - // bech32_validator_public_key_prefix is the bech32 prefix for validators public keys - Bech32ValidatorPublicKeyPrefix string `protobuf:"bytes,5,opt,name=bech32_validator_public_key_prefix,json=bech32ValidatorPublicKeyPrefix,proto3" json:"bech32_validator_public_key_prefix,omitempty"` - // bech32_consensus_public_key_prefix is the bech32 prefix for consensus nodes public keys - Bech32ConsensusPublicKeyPrefix string `protobuf:"bytes,6,opt,name=bech32_consensus_public_key_prefix,json=bech32ConsensusPublicKeyPrefix,proto3" json:"bech32_consensus_public_key_prefix,omitempty"` - // purpose is the BIP-0044 purpose code - Purpose uint32 `protobuf:"varint,7,opt,name=purpose,proto3" json:"purpose,omitempty"` - // coin_type is the BIP-0044 coin type code - CoinType uint32 `protobuf:"varint,8,opt,name=coin_type,json=coinType,proto3" json:"coin_type,omitempty"` - // full_fundraiser_path is the BIP-0044 prefix (deprecated in favor of full_bip44_path) - FullFundraiserPath string `protobuf:"bytes,9,opt,name=full_fundraiser_path,json=fullFundraiserPath,proto3" json:"full_fundraiser_path,omitempty"` - // full_bip44_path is the BIP-0044 prefix - FullBip44Path string `protobuf:"bytes,10,opt,name=full_bip44_path,json=fullBip44Path,proto3" json:"full_bip44_path,omitempty"` } func (m *ConfigurationDescriptor) Reset() { *m = ConfigurationDescriptor{} } @@ -619,69 +601,6 @@ func (m *ConfigurationDescriptor) GetBech32AccountAddressPrefix() string { return "" } -func (m *ConfigurationDescriptor) GetBech32ValidatorAddressPrefix() string { - if m != nil { - return m.Bech32ValidatorAddressPrefix - } - return "" -} - -func (m *ConfigurationDescriptor) GetBech32ConsensusAddressPrefix() string { - if m != nil { - return m.Bech32ConsensusAddressPrefix - } - return "" -} - -func (m *ConfigurationDescriptor) GetBech32AccountPublicKeyPrefix() string { - if m != nil { - return m.Bech32AccountPublicKeyPrefix - } - return "" -} - -func (m *ConfigurationDescriptor) GetBech32ValidatorPublicKeyPrefix() string { - if m != nil { - return m.Bech32ValidatorPublicKeyPrefix - } - return "" -} - -func (m *ConfigurationDescriptor) GetBech32ConsensusPublicKeyPrefix() string { - if m != nil { - return m.Bech32ConsensusPublicKeyPrefix - } - return "" -} - -func (m *ConfigurationDescriptor) GetPurpose() uint32 { - if m != nil { - return m.Purpose - } - return 0 -} - -func (m *ConfigurationDescriptor) GetCoinType() uint32 { - if m != nil { - return m.CoinType - } - return 0 -} - -func (m *ConfigurationDescriptor) GetFullFundraiserPath() string { - if m != nil { - return m.FullFundraiserPath - } - return "" -} - -func (m *ConfigurationDescriptor) GetFullBip44Path() string { - if m != nil { - return m.FullBip44Path - } - return "" -} - // MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction type MsgDescriptor struct { // msg contains a descriptor of sdk.ServiceMsg, note: sdk.Msg is not supported @@ -1273,86 +1192,75 @@ func init() { } var fileDescriptor_d48c054165687f5c = []byte{ - // 1249 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0x4d, 0x6f, 0xdc, 0x54, - 0x17, 0xc7, 0xe3, 0x99, 0x49, 0x93, 0x9c, 0x3c, 0x93, 0x3c, 0xbd, 0x4d, 0x13, 0x67, 0x1a, 0xa6, - 0xc1, 0x15, 0x10, 0xa1, 0x76, 0xa6, 0x9d, 0xa4, 0xe1, 0x55, 0xc0, 0x24, 0x6d, 0x20, 0xb4, 0x81, - 0x30, 0x09, 0x54, 0x02, 0x15, 0xcb, 0x63, 0xdf, 0xf1, 0x5c, 0xd5, 0xe3, 0xeb, 0xf8, 0xda, 0x21, - 0x23, 0xc4, 0x06, 0xa9, 0x7b, 0x24, 0x76, 0x7c, 0x0a, 0x16, 0x2c, 0x61, 0xcf, 0xb2, 0x12, 0x1b, - 0x24, 0x36, 0x28, 0xe1, 0x43, 0xb0, 0x44, 0xf7, 0xfa, 0x65, 0xec, 0x79, 0xf3, 0xb4, 0xab, 0xc4, - 0xf7, 0xfc, 0xcf, 0xcf, 0xe7, 0x9c, 0x7b, 0x7c, 0xcf, 0x1d, 0xa8, 0xea, 0x94, 0x75, 0x28, 0xab, - 0x36, 0x35, 0x86, 0xab, 0x2e, 0x6e, 0x59, 0x58, 0xf7, 0x08, 0xb5, 0xab, 0xa7, 0x77, 0x9a, 0xd8, - 0xd3, 0xee, 0x24, 0x96, 0x2a, 0x8e, 0x4b, 0x3d, 0x8a, 0xca, 0x81, 0x43, 0x85, 0x3b, 0x54, 0x12, - 0xd6, 0xd0, 0xa1, 0xb4, 0x66, 0x52, 0x6a, 0x5a, 0xb8, 0xaa, 0x39, 0xa4, 0xaa, 0xd9, 0x36, 0xf5, - 0x34, 0x6e, 0x66, 0x81, 0xb7, 0xf2, 0x53, 0x1e, 0x8a, 0x75, 0xc7, 0xb9, 0x87, 0x99, 0xee, 0x12, - 0xc7, 0xa3, 0x2e, 0xba, 0x0f, 0xd3, 0x7a, 0x5b, 0x23, 0xb6, 0x9c, 0x5b, 0x97, 0x36, 0xe6, 0x6b, - 0xd5, 0xca, 0x78, 0x7e, 0x65, 0x97, 0x8b, 0x7b, 0xfe, 0x8d, 0xc0, 0x5b, 0x60, 0xa8, 0x81, 0x75, - 0x39, 0x3f, 0x21, 0x86, 0x8b, 0x53, 0x18, 0xbe, 0x80, 0x1e, 0x43, 0x51, 0xa7, 0x76, 0x8b, 0x98, - 0xbe, 0x2b, 0xe2, 0x96, 0x0b, 0x02, 0xf7, 0x46, 0x36, 0x2e, 0xe1, 0x94, 0xc0, 0xa6, 0x69, 0xe8, - 0x6b, 0x58, 0x38, 0xf1, 0xb1, 0xdb, 0x55, 0x19, 0x76, 0x4f, 0x89, 0x8e, 0x99, 0x3c, 0x3d, 0x19, - 0xff, 0x33, 0xee, 0x75, 0x14, 0x3a, 0x25, 0xf9, 0x27, 0x49, 0x03, 0x7a, 0x17, 0x72, 0xde, 0x99, - 0x7c, 0x49, 0x30, 0x6f, 0x66, 0x31, 0x8f, 0xcf, 0x12, 0xa0, 0x9c, 0x77, 0xa6, 0xfc, 0x22, 0xc1, - 0xff, 0x92, 0x8b, 0xa8, 0x04, 0xb3, 0x2d, 0xdf, 0xb2, 0x6c, 0xad, 0x83, 0x65, 0x69, 0x5d, 0xda, - 0x98, 0x6b, 0xc4, 0xcf, 0xbc, 0xe0, 0x9a, 0xef, 0xb5, 0x27, 0xde, 0xb7, 0x3a, 0x17, 0x27, 0x0b, - 0x2e, 0xbc, 0x51, 0x1d, 0x0a, 0x1d, 0x66, 0x32, 0x39, 0xbf, 0x9e, 0xdf, 0x98, 0xaf, 0xdd, 0xca, - 0xa2, 0x1c, 0x30, 0x33, 0xc1, 0x10, 0xae, 0x8a, 0x09, 0x8b, 0x7d, 0x70, 0x74, 0x0c, 0xc0, 0x88, - 0x69, 0xab, 0x1d, 0x6a, 0x60, 0x26, 0x4b, 0x82, 0x7d, 0x37, 0x8b, 0x7d, 0x44, 0x4c, 0x9b, 0xd8, - 0xe6, 0x01, 0x35, 0x70, 0xe2, 0x1d, 0x73, 0x1c, 0xc4, 0xd7, 0x98, 0xd2, 0x85, 0xab, 0x43, 0x35, - 0x08, 0x41, 0x21, 0x51, 0x23, 0xf1, 0x3f, 0x7a, 0x08, 0x37, 0x44, 0x86, 0x2a, 0xb1, 0x5b, 0x54, - 0x75, 0x5c, 0x7a, 0x4a, 0x0c, 0xec, 0xaa, 0x1d, 0xec, 0xb5, 0xa9, 0xa1, 0xc6, 0x65, 0xcd, 0x09, - 0x97, 0xeb, 0x42, 0xba, 0x6f, 0xb7, 0xe8, 0x61, 0x28, 0x3c, 0x10, 0xba, 0xbd, 0x50, 0xa6, 0xbc, - 0x0c, 0x8b, 0x7d, 0x8d, 0x8f, 0x16, 0x20, 0x47, 0x8c, 0xf0, 0x95, 0x39, 0x62, 0x28, 0x2d, 0x58, - 0xec, 0x6b, 0x6a, 0x74, 0x04, 0x40, 0x6c, 0x0f, 0xbb, 0x2d, 0x4d, 0x8f, 0xcb, 0xb0, 0x99, 0x55, - 0x86, 0xfd, 0xc8, 0x23, 0x51, 0x84, 0x04, 0x46, 0xf9, 0x39, 0x07, 0x57, 0x86, 0x68, 0xc6, 0x36, - 0xcb, 0x53, 0x09, 0xd6, 0x62, 0x84, 0xaa, 0xe9, 0x3a, 0x76, 0x3c, 0x62, 0x9b, 0x6a, 0x07, 0x33, - 0xa6, 0x99, 0x98, 0xc9, 0x39, 0x11, 0xdb, 0xee, 0xc4, 0xb1, 0xd5, 0x23, 0xc4, 0x41, 0x40, 0x48, - 0xc4, 0x5a, 0x22, 0xa3, 0x44, 0x0c, 0xf9, 0xb0, 0xdc, 0x0b, 0x83, 0x74, 0x1c, 0x0b, 0x77, 0x30, - 0x7f, 0x8e, 0xfa, 0xef, 0xbd, 0x89, 0x03, 0xd8, 0xef, 0x39, 0x27, 0xde, 0x7d, 0x95, 0x0c, 0xb1, - 0x33, 0xe5, 0x11, 0x94, 0xc7, 0x3b, 0x8e, 0x2d, 0xde, 0x2a, 0xcc, 0x7a, 0x5d, 0x07, 0xab, 0xbe, - 0x6b, 0x85, 0xed, 0x32, 0xc3, 0x9f, 0x3f, 0x77, 0x2d, 0xe5, 0x1b, 0xb8, 0x31, 0x41, 0x49, 0xc6, - 0xd2, 0xb7, 0x60, 0xb9, 0x45, 0xb0, 0x65, 0xa8, 0x46, 0xac, 0x57, 0xb9, 0x21, 0xd8, 0x93, 0xb9, - 0xc6, 0x92, 0xb0, 0xf6, 0x60, 0x9f, 0x70, 0x9b, 0xf2, 0x57, 0x01, 0x56, 0x46, 0x9c, 0x79, 0xa8, - 0x0e, 0x2f, 0x35, 0xb1, 0xde, 0xde, 0xac, 0xf1, 0x8d, 0xa6, 0xbe, 0xed, 0xa9, 0x9a, 0x61, 0xb8, - 0x98, 0x31, 0xd5, 0x71, 0x71, 0x8b, 0x9c, 0x85, 0x21, 0x94, 0x02, 0x51, 0x3d, 0xd0, 0xd4, 0x03, - 0xc9, 0xa1, 0x50, 0xa0, 0xfb, 0x70, 0x3d, 0x44, 0x9c, 0x6a, 0x16, 0x31, 0x34, 0x1e, 0x54, 0x1f, - 0x24, 0xa8, 0xc4, 0x5a, 0x20, 0xfb, 0x22, 0x52, 0x8d, 0xc2, 0xe8, 0xd4, 0x66, 0xd8, 0x66, 0x3e, - 0xeb, 0xc7, 0xe4, 0x93, 0x98, 0xdd, 0x48, 0x95, 0xc6, 0xec, 0xc1, 0x7a, 0x5f, 0x42, 0x8e, 0xdf, - 0xb4, 0x88, 0xae, 0x3e, 0xc1, 0xdd, 0x88, 0x53, 0x48, 0x72, 0xc2, 0x9c, 0x0e, 0x85, 0xea, 0x01, - 0xee, 0x86, 0x9c, 0x8f, 0x41, 0x19, 0xc8, 0x6a, 0x90, 0x34, 0x2d, 0x48, 0xe5, 0xbe, 0xc4, 0x46, - 0xb3, 0x7a, 0xa9, 0x0d, 0xb2, 0x2e, 0x25, 0x59, 0x71, 0x76, 0xfd, 0x2c, 0x19, 0x66, 0x1c, 0xdf, - 0x75, 0x28, 0xc3, 0xf2, 0xcc, 0xba, 0xb4, 0x51, 0x6c, 0x44, 0x8f, 0xe8, 0x1a, 0xcc, 0xe9, 0x94, - 0xd8, 0x2a, 0xef, 0x37, 0x79, 0x56, 0xd8, 0x66, 0xf9, 0xc2, 0x71, 0xd7, 0xc1, 0xe8, 0x36, 0x2c, - 0xf1, 0x2e, 0x52, 0x5b, 0xbe, 0x6d, 0xb8, 0x1a, 0x61, 0xd8, 0x55, 0x1d, 0xcd, 0x6b, 0xcb, 0x73, - 0xe2, 0xa5, 0x88, 0xdb, 0xf6, 0x62, 0xd3, 0xa1, 0xe6, 0xb5, 0xd1, 0xab, 0xb0, 0x28, 0x3c, 0x9a, - 0xc4, 0xd9, 0xda, 0x0a, 0xc4, 0x20, 0xc4, 0x45, 0xbe, 0xbc, 0xc3, 0x57, 0xb9, 0x4e, 0xa1, 0x50, - 0x4c, 0x1d, 0xf4, 0xe8, 0x11, 0xcc, 0x87, 0x13, 0x53, 0xed, 0x30, 0x53, 0x34, 0xd0, 0x7c, 0x6d, - 0x2b, 0xf3, 0x40, 0x0f, 0x5c, 0x52, 0xa8, 0x8f, 0xa6, 0x1a, 0xc0, 0xe2, 0xf5, 0x9d, 0x69, 0xc8, - 0x77, 0x98, 0xa9, 0xe8, 0xb0, 0x34, 0x4c, 0x3c, 0xf6, 0xc3, 0x59, 0x82, 0x69, 0x97, 0xfa, 0x5e, - 0x74, 0x84, 0x07, 0x0f, 0xa9, 0x8f, 0x35, 0x9f, 0xfe, 0x58, 0x57, 0x61, 0xe5, 0x43, 0xec, 0xa5, - 0x6e, 0x3f, 0x0d, 0x7c, 0xe2, 0x63, 0xe6, 0x29, 0x5f, 0x81, 0x3c, 0x68, 0x62, 0x0e, 0xdf, 0x30, - 0xf4, 0x3e, 0xe4, 0x35, 0xc7, 0x09, 0x73, 0xce, 0x1c, 0x90, 0x69, 0x06, 0xf7, 0x54, 0xce, 0x60, - 0x65, 0xc4, 0xf5, 0x01, 0x3d, 0x1e, 0xb8, 0x8f, 0x04, 0x43, 0x62, 0xfb, 0x79, 0xee, 0x23, 0x23, - 0xaf, 0x23, 0xca, 0x53, 0x09, 0x96, 0x87, 0x2b, 0xc7, 0x56, 0xf6, 0x53, 0x98, 0x09, 0xc6, 0x64, - 0x34, 0x17, 0xee, 0x4e, 0x14, 0x4e, 0x30, 0x32, 0x13, 0xd1, 0x44, 0x14, 0xe5, 0x08, 0xae, 0x0e, - 0x55, 0x0c, 0x1d, 0xdc, 0x51, 0x93, 0x06, 0x85, 0x11, 0x4d, 0x9a, 0xeb, 0x35, 0xa9, 0xe0, 0x88, - 0x26, 0x2d, 0x81, 0xfc, 0x90, 0x30, 0xaf, 0x6e, 0x59, 0xf1, 0x11, 0xcc, 0xa2, 0xfd, 0xbc, 0x07, - 0xab, 0x43, 0x6c, 0xe1, 0x86, 0xbe, 0x06, 0x8b, 0xbd, 0x21, 0x14, 0x1c, 0xb5, 0x92, 0x38, 0x6a, - 0x17, 0xe2, 0xe5, 0xe0, 0x90, 0xdd, 0x85, 0x12, 0xa7, 0xc4, 0x13, 0x23, 0xb8, 0x49, 0x87, 0xef, - 0x40, 0xaf, 0xc0, 0x42, 0x1a, 0x13, 0x66, 0x51, 0x4c, 0x51, 0x14, 0x15, 0xae, 0x0d, 0x85, 0x84, - 0xc1, 0x7c, 0x00, 0x6b, 0x24, 0x65, 0x8a, 0x66, 0x72, 0x2a, 0xb2, 0x52, 0x5a, 0x13, 0x4e, 0x18, - 0x11, 0x65, 0xed, 0xdf, 0x02, 0x5c, 0x6e, 0xc4, 0x5b, 0x12, 0xee, 0x34, 0xfa, 0x4d, 0x82, 0xff, - 0xf7, 0xb7, 0x34, 0xca, 0xbc, 0xe6, 0x8e, 0xf8, 0x3e, 0x4a, 0x6f, 0x3e, 0xbf, 0x63, 0x90, 0x9f, - 0xb2, 0xfd, 0xfd, 0x1f, 0xff, 0xfc, 0x98, 0xbb, 0x8d, 0x2a, 0x59, 0x3f, 0x74, 0x34, 0xc7, 0x49, - 0x8c, 0x40, 0xf4, 0xab, 0x04, 0x97, 0x07, 0xb6, 0x10, 0x65, 0xc6, 0x31, 0xaa, 0x23, 0x4a, 0x6f, - 0xbd, 0x80, 0x67, 0x98, 0x42, 0x4d, 0xa4, 0x70, 0x13, 0xbd, 0x9e, 0x95, 0x42, 0xef, 0x92, 0x86, - 0x2e, 0x24, 0xb8, 0x32, 0x64, 0xdb, 0xd1, 0xdb, 0x93, 0x84, 0x31, 0xbc, 0xe1, 0x4a, 0xef, 0xbc, - 0x90, 0x6f, 0x98, 0xc4, 0x91, 0x48, 0xe2, 0x00, 0x3d, 0x98, 0x3c, 0x89, 0xea, 0xb7, 0xe9, 0xfe, - 0xfe, 0xae, 0x9a, 0xee, 0x42, 0xb6, 0x73, 0xf8, 0xfb, 0x79, 0x59, 0x7a, 0x76, 0x5e, 0x96, 0xfe, - 0x3e, 0x2f, 0x4b, 0x3f, 0x5c, 0x94, 0xa7, 0x9e, 0x5d, 0x94, 0xa7, 0xfe, 0xbc, 0x28, 0x4f, 0x7d, - 0xb9, 0x6d, 0x12, 0xaf, 0xed, 0x37, 0x2b, 0x3a, 0xed, 0x44, 0x2f, 0x0c, 0xfe, 0xdc, 0x62, 0xc6, - 0x93, 0x2a, 0x3f, 0xed, 0xb0, 0x5b, 0x35, 0x5d, 0x47, 0xe7, 0xfb, 0xde, 0x8b, 0xa2, 0x79, 0x49, - 0xfc, 0x4c, 0xdd, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x73, 0xc4, 0x72, 0x03, 0x17, 0x0f, 0x00, - 0x00, + // 1074 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xcb, 0x6f, 0xdc, 0x44, + 0x18, 0x8f, 0x77, 0x93, 0x3e, 0xbe, 0x90, 0x84, 0x4e, 0xf3, 0x70, 0x4c, 0x58, 0x82, 0x2b, 0x20, + 0x42, 0xed, 0x9a, 0x6e, 0xda, 0xf0, 0x14, 0xb0, 0x4d, 0x79, 0x44, 0x34, 0x10, 0x36, 0x45, 0x95, + 0x80, 0x62, 0x39, 0xf6, 0xac, 0x77, 0x84, 0xed, 0x71, 0x3c, 0xe3, 0xb0, 0x11, 0xe2, 0x82, 0xd4, + 0x3b, 0x12, 0x37, 0xfe, 0x0a, 0x0e, 0x1c, 0xe1, 0xce, 0xb1, 0x12, 0x17, 0x8e, 0x28, 0xe1, 0x8f, + 0xe0, 0x88, 0x66, 0xec, 0xf5, 0xda, 0x89, 0x77, 0xbd, 0xed, 0x29, 0x99, 0xf9, 0x7e, 0xbf, 0xdf, + 0x7c, 0xaf, 0xf9, 0xc6, 0x0b, 0x86, 0x4d, 0x99, 0x4f, 0x99, 0x71, 0x60, 0x31, 0x6c, 0x44, 0xb8, + 0xeb, 0x61, 0x9b, 0x13, 0x1a, 0x18, 0x47, 0x37, 0x0f, 0x30, 0xb7, 0x6e, 0xe6, 0xb6, 0x9a, 0x61, + 0x44, 0x39, 0x45, 0x8d, 0x84, 0xd0, 0x14, 0x84, 0x66, 0xce, 0x9a, 0x12, 0xb4, 0x35, 0x97, 0x52, + 0xd7, 0xc3, 0x86, 0x15, 0x12, 0xc3, 0x0a, 0x02, 0xca, 0x2d, 0x61, 0x66, 0x09, 0x5b, 0xff, 0xa5, + 0x0e, 0x73, 0xed, 0x30, 0xbc, 0x8b, 0x99, 0x1d, 0x91, 0x90, 0xd3, 0x08, 0x7d, 0x00, 0x33, 0x76, + 0xcf, 0x22, 0x81, 0x5a, 0x5b, 0x57, 0x36, 0x66, 0x5b, 0x46, 0x73, 0xbc, 0x7e, 0x73, 0x5b, 0x80, + 0x87, 0xfc, 0x4e, 0xc2, 0x96, 0x32, 0xd4, 0xc1, 0xb6, 0x5a, 0x9f, 0x50, 0x46, 0x80, 0x0b, 0x32, + 0x62, 0x03, 0x3d, 0x84, 0x39, 0x9b, 0x06, 0x5d, 0xe2, 0xc6, 0x91, 0xf4, 0x5b, 0x9d, 0x96, 0x72, + 0xaf, 0x57, 0xcb, 0xe5, 0x48, 0x39, 0xd9, 0xa2, 0x1a, 0xfa, 0x06, 0xe6, 0x0f, 0x63, 0x1c, 0x1d, + 0x9b, 0x0c, 0x47, 0x47, 0xc4, 0xc6, 0x4c, 0x9d, 0x99, 0x4c, 0xff, 0x73, 0xc1, 0xda, 0x4f, 0x49, + 0x79, 0xfd, 0xc3, 0xbc, 0x01, 0xbd, 0x03, 0x35, 0xde, 0x57, 0x2f, 0x48, 0xcd, 0xeb, 0x55, 0x9a, + 0xf7, 0xfb, 0x39, 0xa1, 0x1a, 0xef, 0xeb, 0xbf, 0x29, 0xf0, 0x4c, 0x7e, 0x13, 0x69, 0x70, 0xa9, + 0x1b, 0x7b, 0x5e, 0x60, 0xf9, 0x58, 0x55, 0xd6, 0x95, 0x8d, 0xcb, 0x9d, 0x6c, 0x2d, 0x12, 0x6e, + 0xc5, 0xbc, 0x37, 0x71, 0xdd, 0xda, 0x02, 0x9c, 0x4f, 0xb8, 0x64, 0xa3, 0x36, 0x4c, 0xfb, 0xcc, + 0x65, 0x6a, 0x7d, 0xbd, 0xbe, 0x31, 0xdb, 0xba, 0x51, 0xa5, 0xb2, 0xcb, 0xdc, 0x9c, 0x86, 0xa4, + 0xea, 0x2e, 0x2c, 0x9c, 0x11, 0x47, 0xf7, 0x01, 0x18, 0x71, 0x03, 0xd3, 0xa7, 0x0e, 0x66, 0xaa, + 0x22, 0xb5, 0x6f, 0x57, 0x69, 0xef, 0x13, 0x37, 0x20, 0x81, 0xbb, 0x4b, 0x1d, 0x9c, 0x3b, 0xe3, + 0xb2, 0x10, 0x12, 0x7b, 0x4c, 0x3f, 0x86, 0xa5, 0x52, 0x0c, 0x42, 0x30, 0x9d, 0xcb, 0x91, 0xfc, + 0x1f, 0xdd, 0x83, 0x6b, 0x32, 0x42, 0x93, 0x04, 0x5d, 0x6a, 0x86, 0x11, 0x3d, 0x22, 0x0e, 0x8e, + 0x4c, 0x1f, 0xf3, 0x1e, 0x75, 0xcc, 0x2c, 0xad, 0x35, 0x49, 0x79, 0x41, 0x42, 0x77, 0x82, 0x2e, + 0xdd, 0x4b, 0x81, 0xbb, 0x12, 0xf7, 0x61, 0x0a, 0xd3, 0x5f, 0x84, 0x85, 0x33, 0x8d, 0x8f, 0xe6, + 0xa1, 0x46, 0x9c, 0xf4, 0xc8, 0x1a, 0x71, 0xf4, 0x2e, 0x2c, 0x9c, 0x69, 0x6a, 0xb4, 0x0f, 0x40, + 0x02, 0x8e, 0xa3, 0xae, 0x65, 0x67, 0x69, 0xd8, 0xac, 0x4a, 0xc3, 0xce, 0x80, 0x91, 0x4b, 0x42, + 0x4e, 0x46, 0xff, 0xb5, 0x06, 0x57, 0x4b, 0x30, 0x63, 0x9b, 0xe5, 0x91, 0x02, 0x6b, 0x99, 0x84, + 0x69, 0xd9, 0x36, 0x0e, 0x39, 0x09, 0x5c, 0xd3, 0xc7, 0x8c, 0x59, 0x2e, 0x66, 0x6a, 0x4d, 0xfa, + 0xb6, 0x3d, 0xb1, 0x6f, 0xed, 0x81, 0xc4, 0x6e, 0xa2, 0x90, 0xf3, 0x55, 0x23, 0xa3, 0x40, 0x0c, + 0xc5, 0xb0, 0x3c, 0x74, 0x83, 0xf8, 0xa1, 0x87, 0x7d, 0x2c, 0xd6, 0x83, 0xfe, 0x7b, 0x77, 0x62, + 0x07, 0x76, 0x86, 0xe4, 0xdc, 0xd9, 0x4b, 0xa4, 0xc4, 0xce, 0xf4, 0x07, 0xd0, 0x18, 0x4f, 0x1c, + 0x9b, 0xbc, 0x55, 0xb8, 0xc4, 0x8f, 0x43, 0x6c, 0xc6, 0x91, 0x97, 0xb6, 0xcb, 0x45, 0xb1, 0xfe, + 0x22, 0xf2, 0xf4, 0xef, 0xe0, 0xda, 0x04, 0x29, 0x19, 0xab, 0x7e, 0x0b, 0x96, 0xbb, 0x04, 0x7b, + 0x8e, 0xe9, 0x64, 0x78, 0x53, 0x18, 0x92, 0x9a, 0x5c, 0xee, 0x2c, 0x4a, 0xeb, 0x50, 0xec, 0x53, + 0x61, 0xd3, 0xbf, 0x86, 0x95, 0x11, 0x23, 0x0f, 0xb5, 0xe1, 0xf9, 0x03, 0x6c, 0xf7, 0x36, 0x5b, + 0xa2, 0xce, 0x34, 0x0e, 0xb8, 0x69, 0x39, 0x4e, 0x84, 0x19, 0x33, 0xc3, 0x08, 0x77, 0x49, 0x3f, + 0xf5, 0x40, 0x4b, 0x40, 0xed, 0x04, 0xd3, 0x4e, 0x20, 0x7b, 0x12, 0xa1, 0x53, 0x98, 0x2b, 0x5c, + 0x74, 0xf4, 0x00, 0x66, 0xd3, 0x89, 0x69, 0xfa, 0xcc, 0x95, 0x0a, 0xb3, 0xad, 0x5b, 0x95, 0x17, + 0x3a, 0xa1, 0x14, 0xa4, 0x3e, 0x9e, 0xea, 0x00, 0xcb, 0xf6, 0xef, 0xcc, 0x40, 0xdd, 0x67, 0xae, + 0x6e, 0xc3, 0x62, 0x19, 0x78, 0x6c, 0xe2, 0x16, 0x61, 0x26, 0xa2, 0x31, 0x1f, 0x5c, 0xe1, 0x64, + 0x51, 0x28, 0x56, 0xbd, 0x58, 0xac, 0x55, 0x58, 0xf9, 0x08, 0xf3, 0xc2, 0xeb, 0xd7, 0xc1, 0x87, + 0x31, 0x66, 0x5c, 0xff, 0x0a, 0xd4, 0xf3, 0x26, 0x16, 0xd2, 0x80, 0x61, 0xf4, 0x1e, 0xd4, 0xad, + 0x30, 0x4c, 0x63, 0xae, 0x1c, 0x90, 0x45, 0x0d, 0xc1, 0xd4, 0xfb, 0xb0, 0x32, 0xe2, 0xf9, 0x40, + 0x0f, 0xcf, 0xbd, 0x47, 0xc9, 0x90, 0xd8, 0x7a, 0x92, 0xf7, 0x68, 0xe4, 0x73, 0xa4, 0x3f, 0x52, + 0x60, 0xb9, 0x1c, 0x39, 0x36, 0xb3, 0x9f, 0xc1, 0xc5, 0x64, 0x4c, 0x0e, 0xe6, 0xc2, 0xed, 0x89, + 0xdc, 0x49, 0x46, 0x66, 0xce, 0x9b, 0x81, 0x8a, 0xbe, 0x0f, 0x4b, 0xa5, 0x88, 0xd2, 0xc1, 0xfd, + 0x32, 0x2c, 0x08, 0x4f, 0xcc, 0x24, 0x31, 0xa1, 0xc5, 0x7b, 0x69, 0x85, 0xe7, 0xc4, 0xb6, 0xd4, + 0xd9, 0xb3, 0x78, 0x4f, 0xd7, 0x40, 0xbd, 0x47, 0x18, 0x6f, 0x7b, 0x5e, 0x76, 0x05, 0xd9, 0xa0, + 0x9e, 0x77, 0x61, 0xb5, 0xc4, 0x96, 0x16, 0xf4, 0x15, 0x58, 0x18, 0x0e, 0xa1, 0xe4, 0xaa, 0x29, + 0xf2, 0xaa, 0xcd, 0x67, 0xdb, 0xc9, 0x25, 0xdb, 0x06, 0x4d, 0xa8, 0x64, 0x13, 0x23, 0xf9, 0x92, + 0x4a, 0xcf, 0x40, 0x2f, 0xc1, 0x7c, 0x51, 0x26, 0x8d, 0x62, 0xae, 0xa0, 0xa2, 0x9b, 0xf0, 0x5c, + 0xa9, 0x48, 0xea, 0xcc, 0xfb, 0xb0, 0x46, 0x0a, 0xa6, 0xc1, 0x4c, 0x2e, 0x78, 0xa6, 0x15, 0x31, + 0xe9, 0x84, 0x91, 0x5e, 0xb6, 0xfe, 0x9b, 0x86, 0x2b, 0x9d, 0xac, 0x24, 0x69, 0xa5, 0xd1, 0x1f, + 0x0a, 0x3c, 0x7b, 0xb6, 0xa5, 0x51, 0xe5, 0x67, 0xce, 0x88, 0xfb, 0xa1, 0xbd, 0xf1, 0xe4, 0xc4, + 0x24, 0x3e, 0x7d, 0xeb, 0xc7, 0xbf, 0xfe, 0xfd, 0xb9, 0xf6, 0x1a, 0x6a, 0x56, 0x7d, 0xe8, 0x5a, + 0x61, 0x98, 0x1b, 0x81, 0xe8, 0x77, 0x05, 0xae, 0x9c, 0x2b, 0x21, 0xaa, 0xf4, 0x63, 0x54, 0x47, + 0x68, 0x6f, 0x3e, 0x05, 0x33, 0x0d, 0xa1, 0x25, 0x43, 0xb8, 0x8e, 0x5e, 0xad, 0x0a, 0x61, 0xf8, + 0x48, 0xa3, 0x53, 0x05, 0xae, 0x96, 0x94, 0x1d, 0xbd, 0x35, 0x89, 0x1b, 0xe5, 0x0d, 0xa7, 0xbd, + 0xfd, 0x54, 0xdc, 0x34, 0x88, 0x7d, 0x19, 0xc4, 0x2e, 0xfa, 0x64, 0xf2, 0x20, 0x8c, 0xef, 0x8b, + 0xfd, 0xfd, 0x83, 0x51, 0xec, 0x42, 0x76, 0x67, 0xef, 0xcf, 0x93, 0x86, 0xf2, 0xf8, 0xa4, 0xa1, + 0xfc, 0x73, 0xd2, 0x50, 0x7e, 0x3a, 0x6d, 0x4c, 0x3d, 0x3e, 0x6d, 0x4c, 0xfd, 0x7d, 0xda, 0x98, + 0xfa, 0x72, 0xcb, 0x25, 0xbc, 0x17, 0x1f, 0x34, 0x6d, 0xea, 0x0f, 0x0e, 0x4c, 0xfe, 0xdc, 0x60, + 0xce, 0xb7, 0x86, 0x98, 0x76, 0x38, 0x32, 0xdc, 0x28, 0xb4, 0x45, 0xdd, 0x87, 0x5e, 0x1c, 0x5c, + 0x90, 0x3f, 0x53, 0x36, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x9f, 0xfa, 0x7a, 0x54, 0x17, 0x0d, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1951,65 +1859,6 @@ func (m *ConfigurationDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l - if len(m.FullBip44Path) > 0 { - i -= len(m.FullBip44Path) - copy(dAtA[i:], m.FullBip44Path) - i = encodeVarintReflection(dAtA, i, uint64(len(m.FullBip44Path))) - i-- - dAtA[i] = 0x52 - } - if len(m.FullFundraiserPath) > 0 { - i -= len(m.FullFundraiserPath) - copy(dAtA[i:], m.FullFundraiserPath) - i = encodeVarintReflection(dAtA, i, uint64(len(m.FullFundraiserPath))) - i-- - dAtA[i] = 0x4a - } - if m.CoinType != 0 { - i = encodeVarintReflection(dAtA, i, uint64(m.CoinType)) - i-- - dAtA[i] = 0x40 - } - if m.Purpose != 0 { - i = encodeVarintReflection(dAtA, i, uint64(m.Purpose)) - i-- - dAtA[i] = 0x38 - } - if len(m.Bech32ConsensusPublicKeyPrefix) > 0 { - i -= len(m.Bech32ConsensusPublicKeyPrefix) - copy(dAtA[i:], m.Bech32ConsensusPublicKeyPrefix) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Bech32ConsensusPublicKeyPrefix))) - i-- - dAtA[i] = 0x32 - } - if len(m.Bech32ValidatorPublicKeyPrefix) > 0 { - i -= len(m.Bech32ValidatorPublicKeyPrefix) - copy(dAtA[i:], m.Bech32ValidatorPublicKeyPrefix) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Bech32ValidatorPublicKeyPrefix))) - i-- - dAtA[i] = 0x2a - } - if len(m.Bech32AccountPublicKeyPrefix) > 0 { - i -= len(m.Bech32AccountPublicKeyPrefix) - copy(dAtA[i:], m.Bech32AccountPublicKeyPrefix) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Bech32AccountPublicKeyPrefix))) - i-- - dAtA[i] = 0x22 - } - if len(m.Bech32ConsensusAddressPrefix) > 0 { - i -= len(m.Bech32ConsensusAddressPrefix) - copy(dAtA[i:], m.Bech32ConsensusAddressPrefix) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Bech32ConsensusAddressPrefix))) - i-- - dAtA[i] = 0x1a - } - if len(m.Bech32ValidatorAddressPrefix) > 0 { - i -= len(m.Bech32ValidatorAddressPrefix) - copy(dAtA[i:], m.Bech32ValidatorAddressPrefix) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Bech32ValidatorAddressPrefix))) - i-- - dAtA[i] = 0x12 - } if len(m.Bech32AccountAddressPrefix) > 0 { i -= len(m.Bech32AccountAddressPrefix) copy(dAtA[i:], m.Bech32AccountAddressPrefix) @@ -2604,40 +2453,6 @@ func (m *ConfigurationDescriptor) Size() (n int) { if l > 0 { n += 1 + l + sovReflection(uint64(l)) } - l = len(m.Bech32ValidatorAddressPrefix) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - l = len(m.Bech32ConsensusAddressPrefix) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - l = len(m.Bech32AccountPublicKeyPrefix) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - l = len(m.Bech32ValidatorPublicKeyPrefix) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - l = len(m.Bech32ConsensusPublicKeyPrefix) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - if m.Purpose != 0 { - n += 1 + sovReflection(uint64(m.Purpose)) - } - if m.CoinType != 0 { - n += 1 + sovReflection(uint64(m.CoinType)) - } - l = len(m.FullFundraiserPath) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - l = len(m.FullBip44Path) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } return n } @@ -4002,268 +3817,6 @@ func (m *ConfigurationDescriptor) Unmarshal(dAtA []byte) error { } m.Bech32AccountAddressPrefix = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Bech32ValidatorAddressPrefix", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Bech32ValidatorAddressPrefix = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Bech32ConsensusAddressPrefix", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Bech32ConsensusAddressPrefix = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Bech32AccountPublicKeyPrefix", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Bech32AccountPublicKeyPrefix = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Bech32ValidatorPublicKeyPrefix", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Bech32ValidatorPublicKeyPrefix = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Bech32ConsensusPublicKeyPrefix", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Bech32ConsensusPublicKeyPrefix = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Purpose", wireType) - } - m.Purpose = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Purpose |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 8: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field CoinType", wireType) - } - m.CoinType = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.CoinType |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 9: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FullFundraiserPath", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.FullFundraiserPath = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FullBip44Path", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.FullBip44Path = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipReflection(dAtA[iNdEx:]) From 33df176f702dffffb547ac4acdab3b372771a2bb Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Wed, 31 Mar 2021 10:04:58 +0200 Subject: [PATCH 16/26] change: enhance servicemsg descriptor --- docs/core/proto-docs.md | 7 +- .../base/reflection/v1beta1/reflection.proto | 20 +- server/grpc/appreflection/reflection.go | 6 +- server/grpc/appreflection/reflection.pb.go | 265 +++++++++++------- 4 files changed, 178 insertions(+), 120 deletions(-) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 895d52e74240..e6e09ee38747 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -2320,9 +2320,10 @@ ServiceMsgDescriptor describes an sdk.ServiceMsg type | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `fullname` | [string](#string) | | fullname is the protobuf fullname of the given sdk.ServiceMsg | -| `route` | [string](#string) | | route is the sdk.ServiceMsg route, it is equal to type_url | -| `type_url` | [string](#string) | | type_url defines the type URL used when marshalling the type as any this is required so we can provide type safe google.protobuf.Any marshalling and unmarshalling, making sure that we don't accept just 'any' type in our interface fields | +| `request_fullname` | [string](#string) | | request_fullname is the protobuf fullname of the given sdk.ServiceMsg request this is the protobuf message type which should be used as google.protobuf.Any.value when delivering the msg to the DeliverTx endpoint | +| `request_route` | [string](#string) | | request_route is the sdk.ServiceMsg route, it is equal to type_url | +| `request_type_url` | [string](#string) | | request_type_url is the identifier that should be used as google.protobuf.Any.type_url when delivering the msg to the DeliverTx endpoint | +| `response_fullname` | [string](#string) | | response_fullname is the protobuf fullname of the given sdk.ServiceMsg response | diff --git a/proto/cosmos/base/reflection/v1beta1/reflection.proto b/proto/cosmos/base/reflection/v1beta1/reflection.proto index 95b620a3d374..d6f6d65db7b3 100644 --- a/proto/cosmos/base/reflection/v1beta1/reflection.proto +++ b/proto/cosmos/base/reflection/v1beta1/reflection.proto @@ -134,15 +134,17 @@ message MsgDescriptor { // ServiceMsgDescriptor describes an sdk.ServiceMsg type message ServiceMsgDescriptor { - // fullname is the protobuf fullname of the given sdk.ServiceMsg - string fullname = 1; - // route is the sdk.ServiceMsg route, it is equal to type_url - string route = 2; - // type_url defines the type URL used when marshalling the type as any - // this is required so we can provide type safe google.protobuf.Any marshalling and - // unmarshalling, making sure that we don't accept just 'any' type - // in our interface fields - string type_url = 3; + // request_fullname is the protobuf fullname of the given sdk.ServiceMsg request + // this is the protobuf message type which should be used as google.protobuf.Any.value + // when delivering the msg to the DeliverTx endpoint + string request_fullname = 1; + // request_route is the sdk.ServiceMsg route, it is equal to type_url + string request_route = 2; + // request_type_url is the identifier that should be used as google.protobuf.Any.type_url + // when delivering the msg to the DeliverTx endpoint + string request_type_url = 3; + // response_fullname is the protobuf fullname of the given sdk.ServiceMsg response + string response_fullname = 4; } // GetAppDescriptorRequest is the request type of the GetAppDescriptor RPC. diff --git a/server/grpc/appreflection/reflection.go b/server/grpc/appreflection/reflection.go index af936a4718ce..d2b421eafb0f 100644 --- a/server/grpc/appreflection/reflection.go +++ b/server/grpc/appreflection/reflection.go @@ -177,9 +177,9 @@ func newTxDescriptor(ir codectypes.InterfaceRegistry, signingModes []string) (*T msgsDesc = append(msgsDesc, &MsgDescriptor{Msg: &MsgDescriptor_ServiceMsg{ ServiceMsg: &ServiceMsgDescriptor{ - Fullname: pbName, - Route: svcMsg, - TypeUrl: svcMsg, + RequestFullname: pbName, + RequestRoute: svcMsg, + RequestTypeUrl: svcMsg, }, }}) } diff --git a/server/grpc/appreflection/reflection.pb.go b/server/grpc/appreflection/reflection.pb.go index 195db946f251..fdedf827bf89 100644 --- a/server/grpc/appreflection/reflection.pb.go +++ b/server/grpc/appreflection/reflection.pb.go @@ -680,15 +680,17 @@ func (*MsgDescriptor) XXX_OneofWrappers() []interface{} { // ServiceMsgDescriptor describes an sdk.ServiceMsg type type ServiceMsgDescriptor struct { - // fullname is the protobuf fullname of the given sdk.ServiceMsg - Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` - // route is the sdk.ServiceMsg route, it is equal to type_url - Route string `protobuf:"bytes,2,opt,name=route,proto3" json:"route,omitempty"` - // type_url defines the type URL used when marshalling the type as any - // this is required so we can provide type safe google.protobuf.Any marshalling and - // unmarshalling, making sure that we don't accept just 'any' type - // in our interface fields - TypeUrl string `protobuf:"bytes,3,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"` + // request_fullname is the protobuf fullname of the given sdk.ServiceMsg request + // this is the protobuf message type which should be used as google.protobuf.Any.value + // when delivering the msg to the DeliverTx endpoint + RequestFullname string `protobuf:"bytes,1,opt,name=request_fullname,json=requestFullname,proto3" json:"request_fullname,omitempty"` + // request_route is the sdk.ServiceMsg route, it is equal to type_url + RequestRoute string `protobuf:"bytes,2,opt,name=request_route,json=requestRoute,proto3" json:"request_route,omitempty"` + // request_type_url is the identifier that should be used as google.protobuf.Any.type_url + // when delivering the msg to the DeliverTx endpoint + RequestTypeUrl string `protobuf:"bytes,3,opt,name=request_type_url,json=requestTypeUrl,proto3" json:"request_type_url,omitempty"` + // response_fullname is the protobuf fullname of the given sdk.ServiceMsg response + ResponseFullname string `protobuf:"bytes,4,opt,name=response_fullname,json=responseFullname,proto3" json:"response_fullname,omitempty"` } func (m *ServiceMsgDescriptor) Reset() { *m = ServiceMsgDescriptor{} } @@ -724,23 +726,30 @@ func (m *ServiceMsgDescriptor) XXX_DiscardUnknown() { var xxx_messageInfo_ServiceMsgDescriptor proto.InternalMessageInfo -func (m *ServiceMsgDescriptor) GetFullname() string { +func (m *ServiceMsgDescriptor) GetRequestFullname() string { if m != nil { - return m.Fullname + return m.RequestFullname } return "" } -func (m *ServiceMsgDescriptor) GetRoute() string { +func (m *ServiceMsgDescriptor) GetRequestRoute() string { if m != nil { - return m.Route + return m.RequestRoute } return "" } -func (m *ServiceMsgDescriptor) GetTypeUrl() string { +func (m *ServiceMsgDescriptor) GetRequestTypeUrl() string { if m != nil { - return m.TypeUrl + return m.RequestTypeUrl + } + return "" +} + +func (m *ServiceMsgDescriptor) GetResponseFullname() string { + if m != nil { + return m.ResponseFullname } return "" } @@ -1192,75 +1201,78 @@ func init() { } var fileDescriptor_d48c054165687f5c = []byte{ - // 1074 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xcb, 0x6f, 0xdc, 0x44, - 0x18, 0x8f, 0x77, 0x93, 0x3e, 0xbe, 0x90, 0x84, 0x4e, 0xf3, 0x70, 0x4c, 0x58, 0x82, 0x2b, 0x20, - 0x42, 0xed, 0x9a, 0x6e, 0xda, 0xf0, 0x14, 0xb0, 0x4d, 0x79, 0x44, 0x34, 0x10, 0x36, 0x45, 0x95, - 0x80, 0x62, 0x39, 0xf6, 0xac, 0x77, 0x84, 0xed, 0x71, 0x3c, 0xe3, 0xb0, 0x11, 0xe2, 0x82, 0xd4, - 0x3b, 0x12, 0x37, 0xfe, 0x0a, 0x0e, 0x1c, 0xe1, 0xce, 0xb1, 0x12, 0x17, 0x8e, 0x28, 0xe1, 0x8f, - 0xe0, 0x88, 0x66, 0xec, 0xf5, 0xda, 0x89, 0x77, 0xbd, 0xed, 0x29, 0x99, 0xf9, 0x7e, 0xbf, 0xdf, - 0x7c, 0xaf, 0xf9, 0xc6, 0x0b, 0x86, 0x4d, 0x99, 0x4f, 0x99, 0x71, 0x60, 0x31, 0x6c, 0x44, 0xb8, - 0xeb, 0x61, 0x9b, 0x13, 0x1a, 0x18, 0x47, 0x37, 0x0f, 0x30, 0xb7, 0x6e, 0xe6, 0xb6, 0x9a, 0x61, - 0x44, 0x39, 0x45, 0x8d, 0x84, 0xd0, 0x14, 0x84, 0x66, 0xce, 0x9a, 0x12, 0xb4, 0x35, 0x97, 0x52, - 0xd7, 0xc3, 0x86, 0x15, 0x12, 0xc3, 0x0a, 0x02, 0xca, 0x2d, 0x61, 0x66, 0x09, 0x5b, 0xff, 0xa5, - 0x0e, 0x73, 0xed, 0x30, 0xbc, 0x8b, 0x99, 0x1d, 0x91, 0x90, 0xd3, 0x08, 0x7d, 0x00, 0x33, 0x76, - 0xcf, 0x22, 0x81, 0x5a, 0x5b, 0x57, 0x36, 0x66, 0x5b, 0x46, 0x73, 0xbc, 0x7e, 0x73, 0x5b, 0x80, - 0x87, 0xfc, 0x4e, 0xc2, 0x96, 0x32, 0xd4, 0xc1, 0xb6, 0x5a, 0x9f, 0x50, 0x46, 0x80, 0x0b, 0x32, - 0x62, 0x03, 0x3d, 0x84, 0x39, 0x9b, 0x06, 0x5d, 0xe2, 0xc6, 0x91, 0xf4, 0x5b, 0x9d, 0x96, 0x72, - 0xaf, 0x57, 0xcb, 0xe5, 0x48, 0x39, 0xd9, 0xa2, 0x1a, 0xfa, 0x06, 0xe6, 0x0f, 0x63, 0x1c, 0x1d, - 0x9b, 0x0c, 0x47, 0x47, 0xc4, 0xc6, 0x4c, 0x9d, 0x99, 0x4c, 0xff, 0x73, 0xc1, 0xda, 0x4f, 0x49, - 0x79, 0xfd, 0xc3, 0xbc, 0x01, 0xbd, 0x03, 0x35, 0xde, 0x57, 0x2f, 0x48, 0xcd, 0xeb, 0x55, 0x9a, - 0xf7, 0xfb, 0x39, 0xa1, 0x1a, 0xef, 0xeb, 0xbf, 0x29, 0xf0, 0x4c, 0x7e, 0x13, 0x69, 0x70, 0xa9, - 0x1b, 0x7b, 0x5e, 0x60, 0xf9, 0x58, 0x55, 0xd6, 0x95, 0x8d, 0xcb, 0x9d, 0x6c, 0x2d, 0x12, 0x6e, - 0xc5, 0xbc, 0x37, 0x71, 0xdd, 0xda, 0x02, 0x9c, 0x4f, 0xb8, 0x64, 0xa3, 0x36, 0x4c, 0xfb, 0xcc, - 0x65, 0x6a, 0x7d, 0xbd, 0xbe, 0x31, 0xdb, 0xba, 0x51, 0xa5, 0xb2, 0xcb, 0xdc, 0x9c, 0x86, 0xa4, - 0xea, 0x2e, 0x2c, 0x9c, 0x11, 0x47, 0xf7, 0x01, 0x18, 0x71, 0x03, 0xd3, 0xa7, 0x0e, 0x66, 0xaa, - 0x22, 0xb5, 0x6f, 0x57, 0x69, 0xef, 0x13, 0x37, 0x20, 0x81, 0xbb, 0x4b, 0x1d, 0x9c, 0x3b, 0xe3, - 0xb2, 0x10, 0x12, 0x7b, 0x4c, 0x3f, 0x86, 0xa5, 0x52, 0x0c, 0x42, 0x30, 0x9d, 0xcb, 0x91, 0xfc, - 0x1f, 0xdd, 0x83, 0x6b, 0x32, 0x42, 0x93, 0x04, 0x5d, 0x6a, 0x86, 0x11, 0x3d, 0x22, 0x0e, 0x8e, - 0x4c, 0x1f, 0xf3, 0x1e, 0x75, 0xcc, 0x2c, 0xad, 0x35, 0x49, 0x79, 0x41, 0x42, 0x77, 0x82, 0x2e, - 0xdd, 0x4b, 0x81, 0xbb, 0x12, 0xf7, 0x61, 0x0a, 0xd3, 0x5f, 0x84, 0x85, 0x33, 0x8d, 0x8f, 0xe6, - 0xa1, 0x46, 0x9c, 0xf4, 0xc8, 0x1a, 0x71, 0xf4, 0x2e, 0x2c, 0x9c, 0x69, 0x6a, 0xb4, 0x0f, 0x40, - 0x02, 0x8e, 0xa3, 0xae, 0x65, 0x67, 0x69, 0xd8, 0xac, 0x4a, 0xc3, 0xce, 0x80, 0x91, 0x4b, 0x42, - 0x4e, 0x46, 0xff, 0xb5, 0x06, 0x57, 0x4b, 0x30, 0x63, 0x9b, 0xe5, 0x91, 0x02, 0x6b, 0x99, 0x84, - 0x69, 0xd9, 0x36, 0x0e, 0x39, 0x09, 0x5c, 0xd3, 0xc7, 0x8c, 0x59, 0x2e, 0x66, 0x6a, 0x4d, 0xfa, - 0xb6, 0x3d, 0xb1, 0x6f, 0xed, 0x81, 0xc4, 0x6e, 0xa2, 0x90, 0xf3, 0x55, 0x23, 0xa3, 0x40, 0x0c, - 0xc5, 0xb0, 0x3c, 0x74, 0x83, 0xf8, 0xa1, 0x87, 0x7d, 0x2c, 0xd6, 0x83, 0xfe, 0x7b, 0x77, 0x62, - 0x07, 0x76, 0x86, 0xe4, 0xdc, 0xd9, 0x4b, 0xa4, 0xc4, 0xce, 0xf4, 0x07, 0xd0, 0x18, 0x4f, 0x1c, - 0x9b, 0xbc, 0x55, 0xb8, 0xc4, 0x8f, 0x43, 0x6c, 0xc6, 0x91, 0x97, 0xb6, 0xcb, 0x45, 0xb1, 0xfe, - 0x22, 0xf2, 0xf4, 0xef, 0xe0, 0xda, 0x04, 0x29, 0x19, 0xab, 0x7e, 0x0b, 0x96, 0xbb, 0x04, 0x7b, - 0x8e, 0xe9, 0x64, 0x78, 0x53, 0x18, 0x92, 0x9a, 0x5c, 0xee, 0x2c, 0x4a, 0xeb, 0x50, 0xec, 0x53, - 0x61, 0xd3, 0xbf, 0x86, 0x95, 0x11, 0x23, 0x0f, 0xb5, 0xe1, 0xf9, 0x03, 0x6c, 0xf7, 0x36, 0x5b, - 0xa2, 0xce, 0x34, 0x0e, 0xb8, 0x69, 0x39, 0x4e, 0x84, 0x19, 0x33, 0xc3, 0x08, 0x77, 0x49, 0x3f, - 0xf5, 0x40, 0x4b, 0x40, 0xed, 0x04, 0xd3, 0x4e, 0x20, 0x7b, 0x12, 0xa1, 0x53, 0x98, 0x2b, 0x5c, - 0x74, 0xf4, 0x00, 0x66, 0xd3, 0x89, 0x69, 0xfa, 0xcc, 0x95, 0x0a, 0xb3, 0xad, 0x5b, 0x95, 0x17, - 0x3a, 0xa1, 0x14, 0xa4, 0x3e, 0x9e, 0xea, 0x00, 0xcb, 0xf6, 0xef, 0xcc, 0x40, 0xdd, 0x67, 0xae, - 0x6e, 0xc3, 0x62, 0x19, 0x78, 0x6c, 0xe2, 0x16, 0x61, 0x26, 0xa2, 0x31, 0x1f, 0x5c, 0xe1, 0x64, - 0x51, 0x28, 0x56, 0xbd, 0x58, 0xac, 0x55, 0x58, 0xf9, 0x08, 0xf3, 0xc2, 0xeb, 0xd7, 0xc1, 0x87, - 0x31, 0x66, 0x5c, 0xff, 0x0a, 0xd4, 0xf3, 0x26, 0x16, 0xd2, 0x80, 0x61, 0xf4, 0x1e, 0xd4, 0xad, - 0x30, 0x4c, 0x63, 0xae, 0x1c, 0x90, 0x45, 0x0d, 0xc1, 0xd4, 0xfb, 0xb0, 0x32, 0xe2, 0xf9, 0x40, - 0x0f, 0xcf, 0xbd, 0x47, 0xc9, 0x90, 0xd8, 0x7a, 0x92, 0xf7, 0x68, 0xe4, 0x73, 0xa4, 0x3f, 0x52, - 0x60, 0xb9, 0x1c, 0x39, 0x36, 0xb3, 0x9f, 0xc1, 0xc5, 0x64, 0x4c, 0x0e, 0xe6, 0xc2, 0xed, 0x89, - 0xdc, 0x49, 0x46, 0x66, 0xce, 0x9b, 0x81, 0x8a, 0xbe, 0x0f, 0x4b, 0xa5, 0x88, 0xd2, 0xc1, 0xfd, - 0x32, 0x2c, 0x08, 0x4f, 0xcc, 0x24, 0x31, 0xa1, 0xc5, 0x7b, 0x69, 0x85, 0xe7, 0xc4, 0xb6, 0xd4, - 0xd9, 0xb3, 0x78, 0x4f, 0xd7, 0x40, 0xbd, 0x47, 0x18, 0x6f, 0x7b, 0x5e, 0x76, 0x05, 0xd9, 0xa0, - 0x9e, 0x77, 0x61, 0xb5, 0xc4, 0x96, 0x16, 0xf4, 0x15, 0x58, 0x18, 0x0e, 0xa1, 0xe4, 0xaa, 0x29, - 0xf2, 0xaa, 0xcd, 0x67, 0xdb, 0xc9, 0x25, 0xdb, 0x06, 0x4d, 0xa8, 0x64, 0x13, 0x23, 0xf9, 0x92, - 0x4a, 0xcf, 0x40, 0x2f, 0xc1, 0x7c, 0x51, 0x26, 0x8d, 0x62, 0xae, 0xa0, 0xa2, 0x9b, 0xf0, 0x5c, - 0xa9, 0x48, 0xea, 0xcc, 0xfb, 0xb0, 0x46, 0x0a, 0xa6, 0xc1, 0x4c, 0x2e, 0x78, 0xa6, 0x15, 0x31, - 0xe9, 0x84, 0x91, 0x5e, 0xb6, 0xfe, 0x9b, 0x86, 0x2b, 0x9d, 0xac, 0x24, 0x69, 0xa5, 0xd1, 0x1f, - 0x0a, 0x3c, 0x7b, 0xb6, 0xa5, 0x51, 0xe5, 0x67, 0xce, 0x88, 0xfb, 0xa1, 0xbd, 0xf1, 0xe4, 0xc4, - 0x24, 0x3e, 0x7d, 0xeb, 0xc7, 0xbf, 0xfe, 0xfd, 0xb9, 0xf6, 0x1a, 0x6a, 0x56, 0x7d, 0xe8, 0x5a, - 0x61, 0x98, 0x1b, 0x81, 0xe8, 0x77, 0x05, 0xae, 0x9c, 0x2b, 0x21, 0xaa, 0xf4, 0x63, 0x54, 0x47, - 0x68, 0x6f, 0x3e, 0x05, 0x33, 0x0d, 0xa1, 0x25, 0x43, 0xb8, 0x8e, 0x5e, 0xad, 0x0a, 0x61, 0xf8, - 0x48, 0xa3, 0x53, 0x05, 0xae, 0x96, 0x94, 0x1d, 0xbd, 0x35, 0x89, 0x1b, 0xe5, 0x0d, 0xa7, 0xbd, - 0xfd, 0x54, 0xdc, 0x34, 0x88, 0x7d, 0x19, 0xc4, 0x2e, 0xfa, 0x64, 0xf2, 0x20, 0x8c, 0xef, 0x8b, - 0xfd, 0xfd, 0x83, 0x51, 0xec, 0x42, 0x76, 0x67, 0xef, 0xcf, 0x93, 0x86, 0xf2, 0xf8, 0xa4, 0xa1, - 0xfc, 0x73, 0xd2, 0x50, 0x7e, 0x3a, 0x6d, 0x4c, 0x3d, 0x3e, 0x6d, 0x4c, 0xfd, 0x7d, 0xda, 0x98, - 0xfa, 0x72, 0xcb, 0x25, 0xbc, 0x17, 0x1f, 0x34, 0x6d, 0xea, 0x0f, 0x0e, 0x4c, 0xfe, 0xdc, 0x60, - 0xce, 0xb7, 0x86, 0x98, 0x76, 0x38, 0x32, 0xdc, 0x28, 0xb4, 0x45, 0xdd, 0x87, 0x5e, 0x1c, 0x5c, - 0x90, 0x3f, 0x53, 0x36, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x9f, 0xfa, 0x7a, 0x54, 0x17, 0x0d, - 0x00, 0x00, + // 1121 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xcd, 0x73, 0xdb, 0xc4, + 0x1b, 0x8e, 0xec, 0xa4, 0x6d, 0xde, 0xd4, 0x71, 0xb2, 0x6d, 0x12, 0xc5, 0xbf, 0xfc, 0x4c, 0x50, + 0x06, 0x08, 0xd0, 0x5a, 0xd4, 0x69, 0xc3, 0xe7, 0x00, 0x6e, 0xca, 0x47, 0x86, 0x06, 0x82, 0x13, + 0xa6, 0x33, 0x40, 0xd1, 0x28, 0xd2, 0x5a, 0xde, 0xc1, 0xd2, 0x2a, 0x5a, 0x39, 0x24, 0xc3, 0x70, + 0x61, 0xa6, 0x77, 0x66, 0xb8, 0xf1, 0x57, 0x70, 0xe0, 0x48, 0xef, 0x1c, 0x3b, 0xc3, 0x85, 0x23, + 0x93, 0xf0, 0x47, 0x70, 0x64, 0x76, 0xb5, 0x92, 0xa5, 0x44, 0xb6, 0xdc, 0x9e, 0x5a, 0xbf, 0xef, + 0xf3, 0x3c, 0xfb, 0xee, 0xfb, 0xb5, 0x0a, 0xe8, 0x16, 0x65, 0x2e, 0x65, 0xfa, 0x81, 0xc9, 0xb0, + 0x1e, 0xe0, 0x4e, 0x0f, 0x5b, 0x21, 0xa1, 0x9e, 0x7e, 0x74, 0xeb, 0x00, 0x87, 0xe6, 0xad, 0x94, + 0xa9, 0xe1, 0x07, 0x34, 0xa4, 0xa8, 0x1e, 0x11, 0x1a, 0x9c, 0xd0, 0x48, 0x79, 0x25, 0xa1, 0xb6, + 0xe2, 0x50, 0xea, 0xf4, 0xb0, 0x6e, 0xfa, 0x44, 0x37, 0x3d, 0x8f, 0x86, 0x26, 0x77, 0xb3, 0x88, + 0xad, 0xfd, 0x52, 0x86, 0x4a, 0xcb, 0xf7, 0xef, 0x61, 0x66, 0x05, 0xc4, 0x0f, 0x69, 0x80, 0x3e, + 0x80, 0x29, 0xab, 0x6b, 0x12, 0x4f, 0x2d, 0xad, 0x2a, 0xeb, 0x33, 0x4d, 0xbd, 0x31, 0x5a, 0xbf, + 0xb1, 0xc5, 0xc1, 0x03, 0x7e, 0x3b, 0x62, 0x0b, 0x19, 0x6a, 0x63, 0x4b, 0x2d, 0x8f, 0x29, 0xc3, + 0xc1, 0x19, 0x19, 0x6e, 0x40, 0x0f, 0xa1, 0x62, 0x51, 0xaf, 0x43, 0x9c, 0x7e, 0x20, 0xe2, 0x56, + 0x27, 0x85, 0xdc, 0xeb, 0xc5, 0x72, 0x29, 0x52, 0x4a, 0x36, 0xab, 0x86, 0xbe, 0x81, 0xd9, 0xc3, + 0x3e, 0x0e, 0x4e, 0x0c, 0x86, 0x83, 0x23, 0x62, 0x61, 0xa6, 0x4e, 0x8d, 0xa7, 0xff, 0x39, 0x67, + 0xed, 0x49, 0x52, 0x5a, 0xff, 0x30, 0xed, 0x40, 0xef, 0x40, 0x29, 0x3c, 0x56, 0x2f, 0x09, 0xcd, + 0x1b, 0x45, 0x9a, 0xfb, 0xc7, 0x29, 0xa1, 0x52, 0x78, 0xac, 0xfd, 0xa6, 0xc0, 0xd5, 0xb4, 0x11, + 0xd5, 0xe0, 0x4a, 0xa7, 0xdf, 0xeb, 0x79, 0xa6, 0x8b, 0x55, 0x65, 0x55, 0x59, 0x9f, 0x6e, 0x27, + 0xbf, 0x79, 0xc2, 0xcd, 0x7e, 0xd8, 0x1d, 0xbb, 0x6e, 0x2d, 0x0e, 0x4e, 0x27, 0x5c, 0xb0, 0x51, + 0x0b, 0x26, 0x5d, 0xe6, 0x30, 0xb5, 0xbc, 0x5a, 0x5e, 0x9f, 0x69, 0xde, 0x2c, 0x52, 0xd9, 0x61, + 0x4e, 0x4a, 0x43, 0x50, 0x35, 0x07, 0xaa, 0xe7, 0xc4, 0xd1, 0x3e, 0x00, 0x23, 0x8e, 0x67, 0xb8, + 0xd4, 0xc6, 0x4c, 0x55, 0x84, 0xf6, 0x9d, 0x22, 0xed, 0x3d, 0xe2, 0x78, 0xc4, 0x73, 0x76, 0xa8, + 0x8d, 0x53, 0x67, 0x4c, 0x73, 0x21, 0x6e, 0x63, 0xda, 0x09, 0x2c, 0xe4, 0x62, 0x10, 0x82, 0xc9, + 0x54, 0x8e, 0xc4, 0xff, 0xd1, 0x7d, 0x58, 0x13, 0x37, 0x34, 0x88, 0xd7, 0xa1, 0x86, 0x1f, 0xd0, + 0x23, 0x62, 0xe3, 0xc0, 0x70, 0x71, 0xd8, 0xa5, 0xb6, 0x91, 0xa4, 0xb5, 0x24, 0x28, 0xcf, 0x09, + 0xe8, 0xb6, 0xd7, 0xa1, 0xbb, 0x12, 0xb8, 0x23, 0x70, 0x1f, 0x4a, 0x98, 0xf6, 0x3c, 0x54, 0xcf, + 0x35, 0x3e, 0x9a, 0x85, 0x12, 0xb1, 0xe5, 0x91, 0x25, 0x62, 0x6b, 0x1d, 0xa8, 0x9e, 0x6b, 0x6a, + 0xb4, 0x07, 0x40, 0xbc, 0x10, 0x07, 0x1d, 0xd3, 0x4a, 0xd2, 0xb0, 0x51, 0x94, 0x86, 0xed, 0x98, + 0x91, 0x4a, 0x42, 0x4a, 0x46, 0xfb, 0xb5, 0x04, 0xd7, 0x72, 0x30, 0x23, 0x9b, 0xe5, 0x91, 0x02, + 0x2b, 0x89, 0x84, 0x61, 0x5a, 0x16, 0xf6, 0x43, 0xe2, 0x39, 0x86, 0x8b, 0x19, 0x33, 0x1d, 0xcc, + 0xd4, 0x92, 0x88, 0x6d, 0x6b, 0xec, 0xd8, 0x5a, 0xb1, 0xc4, 0x4e, 0xa4, 0x90, 0x8a, 0xb5, 0x46, + 0x86, 0x81, 0x18, 0xea, 0xc3, 0xe2, 0x20, 0x0c, 0xe2, 0xfa, 0x3d, 0xec, 0x62, 0xfe, 0x3b, 0xee, + 0xbf, 0x77, 0xc7, 0x0e, 0x60, 0x7b, 0x40, 0x4e, 0x9d, 0xbd, 0x40, 0x72, 0xfc, 0x4c, 0x7b, 0x00, + 0xf5, 0xd1, 0xc4, 0x91, 0xc9, 0x5b, 0x86, 0x2b, 0xe1, 0x89, 0x8f, 0x8d, 0x7e, 0xd0, 0x93, 0xed, + 0x72, 0x99, 0xff, 0xfe, 0x22, 0xe8, 0x69, 0xdf, 0xc1, 0xda, 0x18, 0x29, 0x19, 0xa9, 0x7e, 0x1b, + 0x16, 0x3b, 0x04, 0xf7, 0x6c, 0xc3, 0x4e, 0xf0, 0x06, 0x77, 0x44, 0x35, 0x99, 0x6e, 0x5f, 0x17, + 0xde, 0x81, 0xd8, 0xa7, 0xdc, 0xa7, 0x7d, 0x0d, 0x4b, 0x43, 0x56, 0x1e, 0x6a, 0xc1, 0xff, 0x0f, + 0xb0, 0xd5, 0xdd, 0x68, 0xf2, 0x3a, 0xd3, 0xbe, 0x17, 0x1a, 0xa6, 0x6d, 0x07, 0x98, 0x31, 0xc3, + 0x0f, 0x70, 0x87, 0x1c, 0xcb, 0x08, 0x6a, 0x11, 0xa8, 0x15, 0x61, 0x5a, 0x11, 0x64, 0x57, 0x20, + 0x34, 0x0a, 0x95, 0xcc, 0xa0, 0xa3, 0x07, 0x30, 0x23, 0x37, 0xa6, 0xe1, 0x32, 0x47, 0x28, 0xcc, + 0x34, 0x6f, 0x17, 0x0e, 0x74, 0x44, 0xc9, 0x48, 0x7d, 0x3c, 0xd1, 0x06, 0x96, 0xd8, 0xef, 0x4e, + 0x41, 0xd9, 0x65, 0x8e, 0xf6, 0x58, 0x81, 0xeb, 0x79, 0x68, 0xf4, 0x32, 0xcc, 0x05, 0xf8, 0xb0, + 0x8f, 0x59, 0x68, 0x9c, 0xcb, 0x60, 0x55, 0xda, 0xe3, 0x11, 0x45, 0x6b, 0x50, 0x89, 0xa1, 0x01, + 0xed, 0x87, 0xf1, 0x68, 0x5f, 0x95, 0xc6, 0x36, 0xb7, 0xa1, 0xf5, 0x81, 0x5e, 0x52, 0xd3, 0xb2, + 0xc0, 0xcd, 0x4a, 0xfb, 0x7e, 0x54, 0x5a, 0xf4, 0x2a, 0xcc, 0x07, 0x98, 0xf9, 0xd4, 0x63, 0x78, + 0x70, 0xf4, 0xa4, 0x80, 0xce, 0xc5, 0x8e, 0x64, 0x3d, 0x2c, 0xc3, 0xd2, 0x47, 0x38, 0xcc, 0x3c, + 0xac, 0xed, 0x48, 0x4e, 0xfb, 0x0a, 0xd4, 0x8b, 0xae, 0x88, 0x8e, 0xde, 0x83, 0xb2, 0xe9, 0xfb, + 0x32, 0x9d, 0x85, 0xbb, 0x37, 0xab, 0xc1, 0x99, 0xda, 0x31, 0x2c, 0x0d, 0x79, 0x99, 0xd0, 0xc3, + 0x0b, 0x4f, 0x5d, 0xb4, 0x7f, 0x36, 0x9f, 0xe6, 0xa9, 0x1b, 0xfa, 0xd2, 0x69, 0x8f, 0x14, 0x58, + 0xcc, 0x47, 0x8e, 0xec, 0xf6, 0xcf, 0xe0, 0x72, 0xb4, 0x81, 0xe3, 0x95, 0x73, 0x67, 0xac, 0x70, + 0xa2, 0x6d, 0x9c, 0x8a, 0x26, 0x56, 0xd1, 0xf6, 0x60, 0x21, 0x17, 0x91, 0xfb, 0x26, 0xbc, 0x08, + 0x55, 0x1e, 0x89, 0x11, 0x25, 0xc6, 0x37, 0xc3, 0xae, 0x6c, 0x92, 0x0a, 0x37, 0x0b, 0x9d, 0x5d, + 0x33, 0xec, 0x6a, 0x35, 0x50, 0xef, 0x13, 0x16, 0xb6, 0x7a, 0xbd, 0x64, 0xba, 0x59, 0x5c, 0xcf, + 0x7b, 0xb0, 0x9c, 0xe3, 0x93, 0x05, 0x7d, 0x09, 0xaa, 0x83, 0xfd, 0x16, 0x4d, 0xb1, 0x22, 0xa6, + 0x78, 0x36, 0x31, 0x47, 0xf3, 0xbb, 0x05, 0x35, 0xae, 0x92, 0x2c, 0xa3, 0xe8, 0x23, 0x4d, 0x9e, + 0x81, 0x5e, 0x80, 0xd9, 0xac, 0x8c, 0xbc, 0x45, 0x25, 0xa3, 0xa2, 0x19, 0xf0, 0xbf, 0x5c, 0x11, + 0x19, 0xcc, 0xfb, 0xb0, 0x42, 0x32, 0xae, 0x78, 0xdd, 0x67, 0x22, 0xab, 0x65, 0x31, 0x72, 0x79, + 0x89, 0x28, 0x9b, 0xff, 0x4e, 0xc2, 0x7c, 0x3b, 0x29, 0x89, 0xac, 0x34, 0x7a, 0xac, 0xc0, 0xdc, + 0xf9, 0x96, 0x46, 0x85, 0x5f, 0x50, 0x43, 0xe6, 0xa3, 0xf6, 0xc6, 0xd3, 0x13, 0xa3, 0xfb, 0x69, + 0x9b, 0x3f, 0xfe, 0xf9, 0xcf, 0xcf, 0xa5, 0xd7, 0x50, 0xa3, 0xe8, 0x1b, 0xda, 0xf4, 0xfd, 0xd4, + 0x76, 0x45, 0xbf, 0x2b, 0x30, 0x7f, 0xa1, 0x84, 0xa8, 0x30, 0x8e, 0x61, 0x1d, 0x51, 0x7b, 0xf3, + 0x19, 0x98, 0xf2, 0x0a, 0x4d, 0x71, 0x85, 0x1b, 0xe8, 0x95, 0xa2, 0x2b, 0x0c, 0xde, 0x7f, 0x74, + 0xa6, 0xc0, 0xb5, 0x9c, 0xb2, 0xa3, 0xb7, 0xc6, 0x09, 0x23, 0xbf, 0xe1, 0x6a, 0x6f, 0x3f, 0x13, + 0x57, 0x5e, 0x62, 0x4f, 0x5c, 0x62, 0x07, 0x7d, 0x32, 0xfe, 0x25, 0xf4, 0xef, 0xb3, 0xfd, 0xfd, + 0x83, 0x9e, 0xed, 0x42, 0x76, 0x77, 0xf7, 0x8f, 0xd3, 0xba, 0xf2, 0xe4, 0xb4, 0xae, 0xfc, 0x7d, + 0x5a, 0x57, 0x7e, 0x3a, 0xab, 0x4f, 0x3c, 0x39, 0xab, 0x4f, 0xfc, 0x75, 0x56, 0x9f, 0xf8, 0x72, + 0xd3, 0x21, 0x61, 0xb7, 0x7f, 0xd0, 0xb0, 0xa8, 0x1b, 0x1f, 0x18, 0xfd, 0x73, 0x93, 0xd9, 0xdf, + 0xea, 0x7c, 0xdb, 0xe1, 0x40, 0x77, 0x02, 0xdf, 0xe2, 0x75, 0x1f, 0x44, 0x71, 0x70, 0x49, 0xfc, + 0x05, 0xb4, 0xf1, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x91, 0xbc, 0xae, 0x98, 0x72, 0x0d, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1942,24 +1954,31 @@ func (m *ServiceMsgDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.TypeUrl) > 0 { - i -= len(m.TypeUrl) - copy(dAtA[i:], m.TypeUrl) - i = encodeVarintReflection(dAtA, i, uint64(len(m.TypeUrl))) + if len(m.ResponseFullname) > 0 { + i -= len(m.ResponseFullname) + copy(dAtA[i:], m.ResponseFullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.ResponseFullname))) + i-- + dAtA[i] = 0x22 + } + if len(m.RequestTypeUrl) > 0 { + i -= len(m.RequestTypeUrl) + copy(dAtA[i:], m.RequestTypeUrl) + i = encodeVarintReflection(dAtA, i, uint64(len(m.RequestTypeUrl))) i-- dAtA[i] = 0x1a } - if len(m.Route) > 0 { - i -= len(m.Route) - copy(dAtA[i:], m.Route) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Route))) + if len(m.RequestRoute) > 0 { + i -= len(m.RequestRoute) + copy(dAtA[i:], m.RequestRoute) + i = encodeVarintReflection(dAtA, i, uint64(len(m.RequestRoute))) i-- dAtA[i] = 0x12 } - if len(m.Fullname) > 0 { - i -= len(m.Fullname) - copy(dAtA[i:], m.Fullname) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) + if len(m.RequestFullname) > 0 { + i -= len(m.RequestFullname) + copy(dAtA[i:], m.RequestFullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.RequestFullname))) i-- dAtA[i] = 0xa } @@ -2486,15 +2505,19 @@ func (m *ServiceMsgDescriptor) Size() (n int) { } var l int _ = l - l = len(m.Fullname) + l = len(m.RequestFullname) if l > 0 { n += 1 + l + sovReflection(uint64(l)) } - l = len(m.Route) + l = len(m.RequestRoute) if l > 0 { n += 1 + l + sovReflection(uint64(l)) } - l = len(m.TypeUrl) + l = len(m.RequestTypeUrl) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.ResponseFullname) if l > 0 { n += 1 + l + sovReflection(uint64(l)) } @@ -3954,7 +3977,7 @@ func (m *ServiceMsgDescriptor) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RequestFullname", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3982,11 +4005,11 @@ func (m *ServiceMsgDescriptor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Fullname = string(dAtA[iNdEx:postIndex]) + m.RequestFullname = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Route", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RequestRoute", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4014,11 +4037,11 @@ func (m *ServiceMsgDescriptor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Route = string(dAtA[iNdEx:postIndex]) + m.RequestRoute = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TypeUrl", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RequestTypeUrl", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -4046,7 +4069,39 @@ func (m *ServiceMsgDescriptor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.TypeUrl = string(dAtA[iNdEx:postIndex]) + m.RequestTypeUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResponseFullname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ResponseFullname = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex From 90230902858329fd25f368345da27ef3c5ca4771 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Wed, 31 Mar 2021 10:18:28 +0200 Subject: [PATCH 17/26] chore: include comment on response full name for servicemsg descriptor --- server/grpc/appreflection/reflection.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/server/grpc/appreflection/reflection.go b/server/grpc/appreflection/reflection.go index d2b421eafb0f..1828073fab1b 100644 --- a/server/grpc/appreflection/reflection.go +++ b/server/grpc/appreflection/reflection.go @@ -177,9 +177,10 @@ func newTxDescriptor(ir codectypes.InterfaceRegistry, signingModes []string) (*T msgsDesc = append(msgsDesc, &MsgDescriptor{Msg: &MsgDescriptor_ServiceMsg{ ServiceMsg: &ServiceMsgDescriptor{ - RequestFullname: pbName, - RequestRoute: svcMsg, - RequestTypeUrl: svcMsg, + RequestFullname: pbName, + RequestRoute: svcMsg, + RequestTypeUrl: svcMsg, + ResponseFullname: "", // NOTE: this cannot be filled as of now }, }}) } From 858b99ca215737f30cef6e372cd3f1ef8a0c1a5c Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Wed, 31 Mar 2021 12:06:25 +0200 Subject: [PATCH 18/26] chore: document the rationale of certain implementations --- server/grpc/appreflection/reflection.go | 30 +++++++++++++++++-------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/server/grpc/appreflection/reflection.go b/server/grpc/appreflection/reflection.go index 1828073fab1b..9d94aff550c9 100644 --- a/server/grpc/appreflection/reflection.go +++ b/server/grpc/appreflection/reflection.go @@ -122,8 +122,15 @@ func newCodecDescriptor(ir codectypes.InterfaceRegistry) (*CodecDescriptor, erro } } interfaceDescriptors[i] = &InterfaceDescriptor{ - Fullname: iface, - InterfaceAcceptingMessages: nil, // NOTE(fdymylja): this will be used in the future when we will replace *anypb.Any fields with the interface + Fullname: iface, + // NOTE(fdymylja): this could be filled, but it won't be filled as of now + // doing this would require us to fully rebuild in a (dependency) transitive way the proto + // registry of the supported proto.Messages for the application, this could be easily + // done if we weren't relying on gogoproto which does not allow us to iterate over the + // registry. Achieving this right now would mean to start slowly building descriptors + // getting their files dependencies, building those dependencies then rebuilding the + // descriptor builder. It's too much work as of now. + InterfaceAcceptingMessages: nil, InterfaceImplementers: interfaceImplementers, } } @@ -177,10 +184,13 @@ func newTxDescriptor(ir codectypes.InterfaceRegistry, signingModes []string) (*T msgsDesc = append(msgsDesc, &MsgDescriptor{Msg: &MsgDescriptor_ServiceMsg{ ServiceMsg: &ServiceMsgDescriptor{ - RequestFullname: pbName, - RequestRoute: svcMsg, - RequestTypeUrl: svcMsg, - ResponseFullname: "", // NOTE: this cannot be filled as of now + RequestFullname: pbName, + RequestRoute: svcMsg, + RequestTypeUrl: svcMsg, + // NOTE(fdymylja): this cannot be filled as of now, the Configurator is not held inside the *BaseApp type + // but is local to specific applications, hence we have no way of getting the MsgServer's descriptors + // which contain response information. + ResponseFullname: "", }, }}) } @@ -188,15 +198,17 @@ func newTxDescriptor(ir codectypes.InterfaceRegistry, signingModes []string) (*T signModesDesc := make([]*SigningModeDescriptor, len(signingModes)) for i, m := range signingModes { signModesDesc[i] = &SigningModeDescriptor{ - Name: m, - AuthnInfoProviderMethodFullname: "", // this cannot be filled as of now + Name: m, + // NOTE(fdymylja): this cannot be filled as of now, auth and the sdk itself don't support as of now + // a service which allows to get authentication metadata for the provided sign mode. + AuthnInfoProviderMethodFullname: "", } } return &TxDescriptor{ Fullname: txPbName, Authn: &AuthnDescriptor{ SignModes: signModesDesc, - }, // TODO + }, Msgs: msgsDesc, }, nil } From ed60e4b234c6336ab03986ed784a2d1caa6c8e46 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Wed, 31 Mar 2021 18:22:38 +0200 Subject: [PATCH 19/26] change: add enum descriptor for sign_mode --- docs/core/proto-docs.md | 1 + .../base/reflection/v1beta1/reflection.proto | 4 +- server/grpc/appreflection/reflection.go | 14 +- server/grpc/appreflection/reflection.pb.go | 184 +++++++++++------- 4 files changed, 121 insertions(+), 82 deletions(-) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index e6e09ee38747..56e8e452b538 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -2342,6 +2342,7 @@ this another time | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `name` | [string](#string) | | name defines the unique name of the signing mode | +| `number` | [int32](#int32) | | number is the unique int32 identifier for the sign_mode enum | | `authn_info_provider_method_fullname` | [string](#string) | | authn_info_provider_method_fullname defines the fullname of the method to call to get the metadata required to authenticate using the provided sign_modes | diff --git a/proto/cosmos/base/reflection/v1beta1/reflection.proto b/proto/cosmos/base/reflection/v1beta1/reflection.proto index d6f6d65db7b3..1f96cb8e4ffa 100644 --- a/proto/cosmos/base/reflection/v1beta1/reflection.proto +++ b/proto/cosmos/base/reflection/v1beta1/reflection.proto @@ -66,9 +66,11 @@ message AuthnDescriptor { message SigningModeDescriptor { // name defines the unique name of the signing mode string name = 1; + // number is the unique int32 identifier for the sign_mode enum + int32 number = 2; // authn_info_provider_method_fullname defines the fullname of the method to call to get // the metadata required to authenticate using the provided sign_modes - string authn_info_provider_method_fullname = 2; + string authn_info_provider_method_fullname = 3; } // ChainDescriptor describes chain information of the application diff --git a/server/grpc/appreflection/reflection.go b/server/grpc/appreflection/reflection.go index 9d94aff550c9..c93f5bdb09dd 100644 --- a/server/grpc/appreflection/reflection.go +++ b/server/grpc/appreflection/reflection.go @@ -15,7 +15,7 @@ import ( ) type Config struct { - SigningModes []string + SigningModes map[string]int32 ChainID string SdkConfig *sdk.Config InterfaceRegistry codectypes.InterfaceRegistry @@ -159,7 +159,7 @@ func newQueryServiceDescriptor(srv *grpc.Server) *QueryServicesDescriptor { return &QueryServicesDescriptor{QueryServices: queryServices} } -func newTxDescriptor(ir codectypes.InterfaceRegistry, signingModes []string) (*TxDescriptor, error) { +func newTxDescriptor(ir codectypes.InterfaceRegistry, signingModes map[string]int32) (*TxDescriptor, error) { // get base tx type name txPbName := proto.MessageName(&tx.Tx{}) if txPbName == "" { @@ -194,15 +194,15 @@ func newTxDescriptor(ir codectypes.InterfaceRegistry, signingModes []string) (*T }, }}) } - - signModesDesc := make([]*SigningModeDescriptor, len(signingModes)) + signModesDesc := make([]*SigningModeDescriptor, 0, len(signingModes)) for i, m := range signingModes { - signModesDesc[i] = &SigningModeDescriptor{ - Name: m, + signModesDesc = append(signModesDesc, &SigningModeDescriptor{ + Name: i, + Number: m, // NOTE(fdymylja): this cannot be filled as of now, auth and the sdk itself don't support as of now // a service which allows to get authentication metadata for the provided sign mode. AuthnInfoProviderMethodFullname: "", - } + }) } return &TxDescriptor{ Fullname: txPbName, diff --git a/server/grpc/appreflection/reflection.pb.go b/server/grpc/appreflection/reflection.pb.go index fdedf827bf89..85cbd3972803 100644 --- a/server/grpc/appreflection/reflection.pb.go +++ b/server/grpc/appreflection/reflection.pb.go @@ -231,9 +231,11 @@ func (m *AuthnDescriptor) GetSignModes() []*SigningModeDescriptor { type SigningModeDescriptor struct { // name defines the unique name of the signing mode Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // number is the unique int32 identifier for the sign_mode enum + Number int32 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"` // authn_info_provider_method_fullname defines the fullname of the method to call to get // the metadata required to authenticate using the provided sign_modes - AuthnInfoProviderMethodFullname string `protobuf:"bytes,2,opt,name=authn_info_provider_method_fullname,json=authnInfoProviderMethodFullname,proto3" json:"authn_info_provider_method_fullname,omitempty"` + AuthnInfoProviderMethodFullname string `protobuf:"bytes,3,opt,name=authn_info_provider_method_fullname,json=authnInfoProviderMethodFullname,proto3" json:"authn_info_provider_method_fullname,omitempty"` } func (m *SigningModeDescriptor) Reset() { *m = SigningModeDescriptor{} } @@ -276,6 +278,13 @@ func (m *SigningModeDescriptor) GetName() string { return "" } +func (m *SigningModeDescriptor) GetNumber() int32 { + if m != nil { + return m.Number + } + return 0 +} + func (m *SigningModeDescriptor) GetAuthnInfoProviderMethodFullname() string { if m != nil { return m.AuthnInfoProviderMethodFullname @@ -1201,78 +1210,78 @@ func init() { } var fileDescriptor_d48c054165687f5c = []byte{ - // 1121 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xcd, 0x73, 0xdb, 0xc4, - 0x1b, 0x8e, 0xec, 0xa4, 0x6d, 0xde, 0xd4, 0x71, 0xb2, 0x6d, 0x12, 0xc5, 0xbf, 0xfc, 0x4c, 0x50, - 0x06, 0x08, 0xd0, 0x5a, 0xd4, 0x69, 0xc3, 0xe7, 0x00, 0x6e, 0xca, 0x47, 0x86, 0x06, 0x82, 0x13, - 0xa6, 0x33, 0x40, 0xd1, 0x28, 0xd2, 0x5a, 0xde, 0xc1, 0xd2, 0x2a, 0x5a, 0x39, 0x24, 0xc3, 0x70, - 0x61, 0xa6, 0x77, 0x66, 0xb8, 0xf1, 0x57, 0x70, 0xe0, 0x48, 0xef, 0x1c, 0x3b, 0xc3, 0x85, 0x23, - 0x93, 0xf0, 0x47, 0x70, 0x64, 0x76, 0xb5, 0x92, 0xa5, 0x44, 0xb6, 0xdc, 0x9e, 0x5a, 0xbf, 0xef, - 0xf3, 0x3c, 0xfb, 0xee, 0xfb, 0xb5, 0x0a, 0xe8, 0x16, 0x65, 0x2e, 0x65, 0xfa, 0x81, 0xc9, 0xb0, - 0x1e, 0xe0, 0x4e, 0x0f, 0x5b, 0x21, 0xa1, 0x9e, 0x7e, 0x74, 0xeb, 0x00, 0x87, 0xe6, 0xad, 0x94, - 0xa9, 0xe1, 0x07, 0x34, 0xa4, 0xa8, 0x1e, 0x11, 0x1a, 0x9c, 0xd0, 0x48, 0x79, 0x25, 0xa1, 0xb6, - 0xe2, 0x50, 0xea, 0xf4, 0xb0, 0x6e, 0xfa, 0x44, 0x37, 0x3d, 0x8f, 0x86, 0x26, 0x77, 0xb3, 0x88, - 0xad, 0xfd, 0x52, 0x86, 0x4a, 0xcb, 0xf7, 0xef, 0x61, 0x66, 0x05, 0xc4, 0x0f, 0x69, 0x80, 0x3e, - 0x80, 0x29, 0xab, 0x6b, 0x12, 0x4f, 0x2d, 0xad, 0x2a, 0xeb, 0x33, 0x4d, 0xbd, 0x31, 0x5a, 0xbf, - 0xb1, 0xc5, 0xc1, 0x03, 0x7e, 0x3b, 0x62, 0x0b, 0x19, 0x6a, 0x63, 0x4b, 0x2d, 0x8f, 0x29, 0xc3, - 0xc1, 0x19, 0x19, 0x6e, 0x40, 0x0f, 0xa1, 0x62, 0x51, 0xaf, 0x43, 0x9c, 0x7e, 0x20, 0xe2, 0x56, - 0x27, 0x85, 0xdc, 0xeb, 0xc5, 0x72, 0x29, 0x52, 0x4a, 0x36, 0xab, 0x86, 0xbe, 0x81, 0xd9, 0xc3, - 0x3e, 0x0e, 0x4e, 0x0c, 0x86, 0x83, 0x23, 0x62, 0x61, 0xa6, 0x4e, 0x8d, 0xa7, 0xff, 0x39, 0x67, - 0xed, 0x49, 0x52, 0x5a, 0xff, 0x30, 0xed, 0x40, 0xef, 0x40, 0x29, 0x3c, 0x56, 0x2f, 0x09, 0xcd, - 0x1b, 0x45, 0x9a, 0xfb, 0xc7, 0x29, 0xa1, 0x52, 0x78, 0xac, 0xfd, 0xa6, 0xc0, 0xd5, 0xb4, 0x11, - 0xd5, 0xe0, 0x4a, 0xa7, 0xdf, 0xeb, 0x79, 0xa6, 0x8b, 0x55, 0x65, 0x55, 0x59, 0x9f, 0x6e, 0x27, - 0xbf, 0x79, 0xc2, 0xcd, 0x7e, 0xd8, 0x1d, 0xbb, 0x6e, 0x2d, 0x0e, 0x4e, 0x27, 0x5c, 0xb0, 0x51, - 0x0b, 0x26, 0x5d, 0xe6, 0x30, 0xb5, 0xbc, 0x5a, 0x5e, 0x9f, 0x69, 0xde, 0x2c, 0x52, 0xd9, 0x61, - 0x4e, 0x4a, 0x43, 0x50, 0x35, 0x07, 0xaa, 0xe7, 0xc4, 0xd1, 0x3e, 0x00, 0x23, 0x8e, 0x67, 0xb8, - 0xd4, 0xc6, 0x4c, 0x55, 0x84, 0xf6, 0x9d, 0x22, 0xed, 0x3d, 0xe2, 0x78, 0xc4, 0x73, 0x76, 0xa8, - 0x8d, 0x53, 0x67, 0x4c, 0x73, 0x21, 0x6e, 0x63, 0xda, 0x09, 0x2c, 0xe4, 0x62, 0x10, 0x82, 0xc9, - 0x54, 0x8e, 0xc4, 0xff, 0xd1, 0x7d, 0x58, 0x13, 0x37, 0x34, 0x88, 0xd7, 0xa1, 0x86, 0x1f, 0xd0, - 0x23, 0x62, 0xe3, 0xc0, 0x70, 0x71, 0xd8, 0xa5, 0xb6, 0x91, 0xa4, 0xb5, 0x24, 0x28, 0xcf, 0x09, - 0xe8, 0xb6, 0xd7, 0xa1, 0xbb, 0x12, 0xb8, 0x23, 0x70, 0x1f, 0x4a, 0x98, 0xf6, 0x3c, 0x54, 0xcf, - 0x35, 0x3e, 0x9a, 0x85, 0x12, 0xb1, 0xe5, 0x91, 0x25, 0x62, 0x6b, 0x1d, 0xa8, 0x9e, 0x6b, 0x6a, - 0xb4, 0x07, 0x40, 0xbc, 0x10, 0x07, 0x1d, 0xd3, 0x4a, 0xd2, 0xb0, 0x51, 0x94, 0x86, 0xed, 0x98, - 0x91, 0x4a, 0x42, 0x4a, 0x46, 0xfb, 0xb5, 0x04, 0xd7, 0x72, 0x30, 0x23, 0x9b, 0xe5, 0x91, 0x02, - 0x2b, 0x89, 0x84, 0x61, 0x5a, 0x16, 0xf6, 0x43, 0xe2, 0x39, 0x86, 0x8b, 0x19, 0x33, 0x1d, 0xcc, - 0xd4, 0x92, 0x88, 0x6d, 0x6b, 0xec, 0xd8, 0x5a, 0xb1, 0xc4, 0x4e, 0xa4, 0x90, 0x8a, 0xb5, 0x46, - 0x86, 0x81, 0x18, 0xea, 0xc3, 0xe2, 0x20, 0x0c, 0xe2, 0xfa, 0x3d, 0xec, 0x62, 0xfe, 0x3b, 0xee, - 0xbf, 0x77, 0xc7, 0x0e, 0x60, 0x7b, 0x40, 0x4e, 0x9d, 0xbd, 0x40, 0x72, 0xfc, 0x4c, 0x7b, 0x00, - 0xf5, 0xd1, 0xc4, 0x91, 0xc9, 0x5b, 0x86, 0x2b, 0xe1, 0x89, 0x8f, 0x8d, 0x7e, 0xd0, 0x93, 0xed, - 0x72, 0x99, 0xff, 0xfe, 0x22, 0xe8, 0x69, 0xdf, 0xc1, 0xda, 0x18, 0x29, 0x19, 0xa9, 0x7e, 0x1b, - 0x16, 0x3b, 0x04, 0xf7, 0x6c, 0xc3, 0x4e, 0xf0, 0x06, 0x77, 0x44, 0x35, 0x99, 0x6e, 0x5f, 0x17, - 0xde, 0x81, 0xd8, 0xa7, 0xdc, 0xa7, 0x7d, 0x0d, 0x4b, 0x43, 0x56, 0x1e, 0x6a, 0xc1, 0xff, 0x0f, - 0xb0, 0xd5, 0xdd, 0x68, 0xf2, 0x3a, 0xd3, 0xbe, 0x17, 0x1a, 0xa6, 0x6d, 0x07, 0x98, 0x31, 0xc3, - 0x0f, 0x70, 0x87, 0x1c, 0xcb, 0x08, 0x6a, 0x11, 0xa8, 0x15, 0x61, 0x5a, 0x11, 0x64, 0x57, 0x20, - 0x34, 0x0a, 0x95, 0xcc, 0xa0, 0xa3, 0x07, 0x30, 0x23, 0x37, 0xa6, 0xe1, 0x32, 0x47, 0x28, 0xcc, - 0x34, 0x6f, 0x17, 0x0e, 0x74, 0x44, 0xc9, 0x48, 0x7d, 0x3c, 0xd1, 0x06, 0x96, 0xd8, 0xef, 0x4e, - 0x41, 0xd9, 0x65, 0x8e, 0xf6, 0x58, 0x81, 0xeb, 0x79, 0x68, 0xf4, 0x32, 0xcc, 0x05, 0xf8, 0xb0, - 0x8f, 0x59, 0x68, 0x9c, 0xcb, 0x60, 0x55, 0xda, 0xe3, 0x11, 0x45, 0x6b, 0x50, 0x89, 0xa1, 0x01, - 0xed, 0x87, 0xf1, 0x68, 0x5f, 0x95, 0xc6, 0x36, 0xb7, 0xa1, 0xf5, 0x81, 0x5e, 0x52, 0xd3, 0xb2, - 0xc0, 0xcd, 0x4a, 0xfb, 0x7e, 0x54, 0x5a, 0xf4, 0x2a, 0xcc, 0x07, 0x98, 0xf9, 0xd4, 0x63, 0x78, - 0x70, 0xf4, 0xa4, 0x80, 0xce, 0xc5, 0x8e, 0x64, 0x3d, 0x2c, 0xc3, 0xd2, 0x47, 0x38, 0xcc, 0x3c, - 0xac, 0xed, 0x48, 0x4e, 0xfb, 0x0a, 0xd4, 0x8b, 0xae, 0x88, 0x8e, 0xde, 0x83, 0xb2, 0xe9, 0xfb, - 0x32, 0x9d, 0x85, 0xbb, 0x37, 0xab, 0xc1, 0x99, 0xda, 0x31, 0x2c, 0x0d, 0x79, 0x99, 0xd0, 0xc3, - 0x0b, 0x4f, 0x5d, 0xb4, 0x7f, 0x36, 0x9f, 0xe6, 0xa9, 0x1b, 0xfa, 0xd2, 0x69, 0x8f, 0x14, 0x58, - 0xcc, 0x47, 0x8e, 0xec, 0xf6, 0xcf, 0xe0, 0x72, 0xb4, 0x81, 0xe3, 0x95, 0x73, 0x67, 0xac, 0x70, - 0xa2, 0x6d, 0x9c, 0x8a, 0x26, 0x56, 0xd1, 0xf6, 0x60, 0x21, 0x17, 0x91, 0xfb, 0x26, 0xbc, 0x08, - 0x55, 0x1e, 0x89, 0x11, 0x25, 0xc6, 0x37, 0xc3, 0xae, 0x6c, 0x92, 0x0a, 0x37, 0x0b, 0x9d, 0x5d, - 0x33, 0xec, 0x6a, 0x35, 0x50, 0xef, 0x13, 0x16, 0xb6, 0x7a, 0xbd, 0x64, 0xba, 0x59, 0x5c, 0xcf, - 0x7b, 0xb0, 0x9c, 0xe3, 0x93, 0x05, 0x7d, 0x09, 0xaa, 0x83, 0xfd, 0x16, 0x4d, 0xb1, 0x22, 0xa6, - 0x78, 0x36, 0x31, 0x47, 0xf3, 0xbb, 0x05, 0x35, 0xae, 0x92, 0x2c, 0xa3, 0xe8, 0x23, 0x4d, 0x9e, - 0x81, 0x5e, 0x80, 0xd9, 0xac, 0x8c, 0xbc, 0x45, 0x25, 0xa3, 0xa2, 0x19, 0xf0, 0xbf, 0x5c, 0x11, - 0x19, 0xcc, 0xfb, 0xb0, 0x42, 0x32, 0xae, 0x78, 0xdd, 0x67, 0x22, 0xab, 0x65, 0x31, 0x72, 0x79, - 0x89, 0x28, 0x9b, 0xff, 0x4e, 0xc2, 0x7c, 0x3b, 0x29, 0x89, 0xac, 0x34, 0x7a, 0xac, 0xc0, 0xdc, - 0xf9, 0x96, 0x46, 0x85, 0x5f, 0x50, 0x43, 0xe6, 0xa3, 0xf6, 0xc6, 0xd3, 0x13, 0xa3, 0xfb, 0x69, - 0x9b, 0x3f, 0xfe, 0xf9, 0xcf, 0xcf, 0xa5, 0xd7, 0x50, 0xa3, 0xe8, 0x1b, 0xda, 0xf4, 0xfd, 0xd4, - 0x76, 0x45, 0xbf, 0x2b, 0x30, 0x7f, 0xa1, 0x84, 0xa8, 0x30, 0x8e, 0x61, 0x1d, 0x51, 0x7b, 0xf3, - 0x19, 0x98, 0xf2, 0x0a, 0x4d, 0x71, 0x85, 0x1b, 0xe8, 0x95, 0xa2, 0x2b, 0x0c, 0xde, 0x7f, 0x74, - 0xa6, 0xc0, 0xb5, 0x9c, 0xb2, 0xa3, 0xb7, 0xc6, 0x09, 0x23, 0xbf, 0xe1, 0x6a, 0x6f, 0x3f, 0x13, - 0x57, 0x5e, 0x62, 0x4f, 0x5c, 0x62, 0x07, 0x7d, 0x32, 0xfe, 0x25, 0xf4, 0xef, 0xb3, 0xfd, 0xfd, - 0x83, 0x9e, 0xed, 0x42, 0x76, 0x77, 0xf7, 0x8f, 0xd3, 0xba, 0xf2, 0xe4, 0xb4, 0xae, 0xfc, 0x7d, - 0x5a, 0x57, 0x7e, 0x3a, 0xab, 0x4f, 0x3c, 0x39, 0xab, 0x4f, 0xfc, 0x75, 0x56, 0x9f, 0xf8, 0x72, - 0xd3, 0x21, 0x61, 0xb7, 0x7f, 0xd0, 0xb0, 0xa8, 0x1b, 0x1f, 0x18, 0xfd, 0x73, 0x93, 0xd9, 0xdf, - 0xea, 0x7c, 0xdb, 0xe1, 0x40, 0x77, 0x02, 0xdf, 0xe2, 0x75, 0x1f, 0x44, 0x71, 0x70, 0x49, 0xfc, - 0x05, 0xb4, 0xf1, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x91, 0xbc, 0xae, 0x98, 0x72, 0x0d, 0x00, - 0x00, + // 1135 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x4b, 0x73, 0xdb, 0x54, + 0x14, 0x8e, 0xec, 0xa4, 0x6d, 0x4e, 0xea, 0xb8, 0xbd, 0x6d, 0x12, 0xc7, 0x04, 0x13, 0x94, 0x01, + 0x02, 0xb4, 0x36, 0x75, 0xda, 0xf0, 0x1c, 0xc0, 0x4d, 0x79, 0x64, 0x68, 0x20, 0x38, 0x61, 0x3a, + 0x03, 0x14, 0x8d, 0x2c, 0x5d, 0xcb, 0x77, 0xb0, 0x74, 0x15, 0x5d, 0x39, 0xa4, 0xc3, 0xb0, 0x61, + 0xa6, 0x7b, 0x18, 0x76, 0xfc, 0x0a, 0x16, 0x2c, 0xe9, 0x9e, 0x65, 0x67, 0xd8, 0xb0, 0x64, 0x12, + 0x7e, 0x04, 0x4b, 0xe6, 0x3e, 0x24, 0x4b, 0x89, 0x6c, 0xb9, 0x5d, 0x25, 0x3a, 0xe7, 0xfb, 0x3e, + 0x9d, 0xd7, 0x3d, 0x57, 0x86, 0x86, 0x45, 0x99, 0x4b, 0x59, 0xa3, 0x63, 0x32, 0xdc, 0x08, 0x70, + 0xb7, 0x8f, 0xad, 0x90, 0x50, 0xaf, 0x71, 0x78, 0xa3, 0x83, 0x43, 0xf3, 0x46, 0xc2, 0x54, 0xf7, + 0x03, 0x1a, 0x52, 0x54, 0x93, 0x84, 0x3a, 0x27, 0xd4, 0x13, 0x5e, 0x45, 0xa8, 0xae, 0x38, 0x94, + 0x3a, 0x7d, 0xdc, 0x30, 0x7d, 0xd2, 0x30, 0x3d, 0x8f, 0x86, 0x26, 0x77, 0x33, 0xc9, 0xd6, 0x7f, + 0x2d, 0x42, 0xa9, 0xe5, 0xfb, 0x77, 0x30, 0xb3, 0x02, 0xe2, 0x87, 0x34, 0x40, 0x1f, 0xc0, 0x8c, + 0xd5, 0x33, 0x89, 0x57, 0x29, 0xac, 0x6a, 0xeb, 0x73, 0xcd, 0x46, 0x7d, 0xbc, 0x7e, 0x7d, 0x8b, + 0x83, 0x87, 0xfc, 0xb6, 0x64, 0x0b, 0x19, 0x6a, 0x63, 0xab, 0x52, 0x9c, 0x50, 0x86, 0x83, 0x53, + 0x32, 0xdc, 0x80, 0xee, 0x43, 0xc9, 0xa2, 0x5e, 0x97, 0x38, 0x83, 0x40, 0xc4, 0x5d, 0x99, 0x16, + 0x72, 0xaf, 0xe7, 0xcb, 0x25, 0x48, 0x09, 0xd9, 0xb4, 0x1a, 0xfa, 0x06, 0xe6, 0x0f, 0x06, 0x38, + 0x78, 0x60, 0x30, 0x1c, 0x1c, 0x12, 0x0b, 0xb3, 0xca, 0xcc, 0x64, 0xfa, 0x9f, 0x73, 0xd6, 0x9e, + 0x22, 0x25, 0xf5, 0x0f, 0x92, 0x0e, 0xf4, 0x0e, 0x14, 0xc2, 0xa3, 0xca, 0x39, 0xa1, 0x79, 0x2d, + 0x4f, 0x73, 0xff, 0x28, 0x21, 0x54, 0x08, 0x8f, 0xf4, 0xdf, 0x35, 0xb8, 0x98, 0x34, 0xa2, 0x2a, + 0x5c, 0xe8, 0x0e, 0xfa, 0x7d, 0xcf, 0x74, 0x71, 0x45, 0x5b, 0xd5, 0xd6, 0x67, 0xdb, 0xf1, 0x33, + 0x2f, 0xb8, 0x39, 0x08, 0x7b, 0x13, 0xf7, 0xad, 0xc5, 0xc1, 0xc9, 0x82, 0x0b, 0x36, 0x6a, 0xc1, + 0xb4, 0xcb, 0x1c, 0x56, 0x29, 0xae, 0x16, 0xd7, 0xe7, 0x9a, 0xd7, 0xf3, 0x54, 0x76, 0x98, 0x93, + 0xd0, 0x10, 0x54, 0xdd, 0x81, 0xf2, 0x29, 0x71, 0xb4, 0x0f, 0xc0, 0x88, 0xe3, 0x19, 0x2e, 0xb5, + 0x31, 0xab, 0x68, 0x42, 0xfb, 0x56, 0x9e, 0xf6, 0x1e, 0x71, 0x3c, 0xe2, 0x39, 0x3b, 0xd4, 0xc6, + 0x89, 0x77, 0xcc, 0x72, 0x21, 0x6e, 0x63, 0xfa, 0xcf, 0x1a, 0x2c, 0x64, 0x82, 0x10, 0x82, 0xe9, + 0x44, 0x91, 0xc4, 0xff, 0x68, 0x11, 0xce, 0x79, 0x03, 0xb7, 0x83, 0x03, 0x51, 0xa1, 0x99, 0xb6, + 0x7a, 0x42, 0x77, 0x61, 0x4d, 0xa4, 0x6e, 0x10, 0xaf, 0x4b, 0x0d, 0x3f, 0xa0, 0x87, 0xc4, 0xc6, + 0x81, 0xe1, 0xe2, 0xb0, 0x47, 0x6d, 0x23, 0xae, 0x77, 0x51, 0x48, 0x3d, 0x27, 0xa0, 0xdb, 0x5e, + 0x97, 0xee, 0x2a, 0xe0, 0x8e, 0xc0, 0x7d, 0xa8, 0x60, 0xfa, 0xf3, 0x50, 0x3e, 0x75, 0x22, 0xd0, + 0x3c, 0x14, 0x88, 0xad, 0x42, 0x29, 0x10, 0x5b, 0xef, 0x42, 0xf9, 0xd4, 0xb4, 0xa3, 0x3d, 0x00, + 0xe2, 0x85, 0x38, 0xe8, 0x9a, 0x56, 0x5c, 0x9f, 0x8d, 0xbc, 0xfa, 0x6c, 0x47, 0x8c, 0x44, 0x75, + 0x12, 0x32, 0xfa, 0x6f, 0x05, 0xb8, 0x92, 0x81, 0x19, 0x3b, 0x45, 0x0f, 0x35, 0x58, 0x89, 0x25, + 0x0c, 0xd3, 0xb2, 0xb0, 0x1f, 0x12, 0xcf, 0x31, 0x5c, 0xcc, 0x98, 0xe9, 0x60, 0x56, 0x29, 0x88, + 0xd8, 0xb6, 0x26, 0x8e, 0xad, 0x15, 0x49, 0xec, 0x48, 0x85, 0x44, 0xac, 0x55, 0x32, 0x0a, 0xc4, + 0xd0, 0x00, 0x16, 0x87, 0x61, 0x10, 0xd7, 0xef, 0x63, 0x17, 0xf3, 0xe7, 0x68, 0x30, 0xdf, 0x9d, + 0x38, 0x80, 0xed, 0x21, 0x39, 0xf1, 0xee, 0x05, 0x92, 0xe1, 0x67, 0xfa, 0x3d, 0xa8, 0x8d, 0x27, + 0x8e, 0x2d, 0xde, 0x32, 0x5c, 0x08, 0x1f, 0xf8, 0xd8, 0x18, 0x04, 0x7d, 0x31, 0x63, 0xb3, 0xed, + 0xf3, 0xfc, 0xf9, 0x8b, 0xa0, 0xaf, 0x7f, 0x07, 0x6b, 0x13, 0x94, 0x64, 0xac, 0xfa, 0x4d, 0x58, + 0xec, 0x12, 0xdc, 0xb7, 0x0d, 0x3b, 0xc6, 0x1b, 0xdc, 0x21, 0x7b, 0x32, 0xdb, 0xbe, 0x2a, 0xbc, + 0x43, 0xb1, 0x4f, 0xb9, 0x4f, 0xff, 0x1a, 0x96, 0x46, 0xec, 0x42, 0xd4, 0x82, 0x67, 0x3b, 0xd8, + 0xea, 0x6d, 0x34, 0x79, 0x9f, 0xe9, 0xc0, 0x0b, 0x0d, 0xd3, 0xb6, 0x03, 0xcc, 0x98, 0xe1, 0x07, + 0xb8, 0x4b, 0x8e, 0x54, 0x04, 0x55, 0x09, 0x6a, 0x49, 0x4c, 0x4b, 0x42, 0x76, 0x05, 0x42, 0xa7, + 0x50, 0x4a, 0x6d, 0x00, 0x74, 0x0f, 0xe6, 0xd4, 0x2a, 0x35, 0x5c, 0xe6, 0x08, 0x85, 0xb9, 0xe6, + 0xcd, 0xdc, 0x93, 0x2e, 0x29, 0x29, 0xa9, 0x8f, 0xa7, 0xda, 0xc0, 0x62, 0xfb, 0xed, 0x19, 0x28, + 0xba, 0xcc, 0xd1, 0x1f, 0x69, 0x70, 0x35, 0x0b, 0x8d, 0x5e, 0x86, 0x4b, 0x01, 0x3e, 0x18, 0x60, + 0x16, 0x1a, 0xa7, 0x2a, 0x58, 0x56, 0xf6, 0xe8, 0x88, 0xa2, 0x35, 0x28, 0x45, 0xd0, 0x80, 0x0e, + 0x42, 0xac, 0x7a, 0x75, 0x51, 0x19, 0xdb, 0xdc, 0x86, 0xd6, 0x87, 0x7a, 0x71, 0x4f, 0xe5, 0x0a, + 0x98, 0x57, 0xf6, 0x7d, 0xd9, 0x5a, 0xf4, 0x2a, 0x5c, 0x0e, 0x30, 0xf3, 0xa9, 0xc7, 0xf0, 0xf0, + 0xd5, 0xd3, 0x02, 0x7a, 0x29, 0x72, 0xc4, 0xeb, 0x61, 0x19, 0x96, 0x3e, 0xc2, 0x61, 0xea, 0xc6, + 0x6d, 0x4b, 0x39, 0xfd, 0x2b, 0xa8, 0x9c, 0x75, 0x49, 0x3a, 0x7a, 0x0f, 0x8a, 0xa6, 0xef, 0xab, + 0x72, 0xe6, 0x2e, 0xe5, 0xb4, 0x06, 0x67, 0xea, 0x47, 0xb0, 0x34, 0xe2, 0xca, 0x42, 0xf7, 0xcf, + 0xdc, 0x81, 0x72, 0xff, 0x6c, 0x3e, 0xc9, 0x1d, 0x38, 0xf2, 0x0a, 0xd4, 0x1f, 0x6a, 0xb0, 0x98, + 0x8d, 0x1c, 0x3b, 0xed, 0x9f, 0xc1, 0x79, 0xb9, 0x81, 0xa3, 0x95, 0x73, 0x6b, 0xa2, 0x70, 0xe4, + 0x36, 0x4e, 0x44, 0x13, 0xa9, 0xe8, 0x7b, 0xb0, 0x90, 0x89, 0xc8, 0xbc, 0x2b, 0x5e, 0x84, 0x32, + 0x8f, 0xc4, 0x90, 0x85, 0xf1, 0xcd, 0xb0, 0xa7, 0x86, 0xa4, 0xc4, 0xcd, 0x42, 0x67, 0xd7, 0x0c, + 0x7b, 0x7a, 0x15, 0x2a, 0x77, 0x09, 0x0b, 0x5b, 0xfd, 0x7e, 0x7c, 0xba, 0x59, 0xd4, 0xcf, 0x3b, + 0xb0, 0x9c, 0xe1, 0x53, 0x0d, 0x7d, 0x09, 0xca, 0xc3, 0xfd, 0x26, 0x4f, 0xb1, 0x26, 0x4e, 0xf1, + 0x7c, 0x6c, 0x96, 0xe7, 0x77, 0x0b, 0xaa, 0x5c, 0x25, 0x5e, 0x46, 0xf2, 0xeb, 0x4d, 0xbd, 0x03, + 0xbd, 0x00, 0xf3, 0x69, 0x19, 0x95, 0x45, 0x29, 0xa5, 0xa2, 0x1b, 0xf0, 0x4c, 0xa6, 0x88, 0x0a, + 0xe6, 0x7d, 0x58, 0x21, 0x29, 0x57, 0xb4, 0xee, 0x53, 0x91, 0x55, 0xd3, 0x18, 0xb5, 0xbc, 0x44, + 0x94, 0xcd, 0xff, 0xa6, 0xe1, 0x72, 0x3b, 0x6e, 0x89, 0xea, 0x34, 0x7a, 0xa4, 0xc1, 0xa5, 0xd3, + 0x23, 0x8d, 0x72, 0x3f, 0xad, 0x46, 0x9c, 0x8f, 0xea, 0x1b, 0x4f, 0x4e, 0x94, 0xf9, 0xe9, 0x9b, + 0x3f, 0xfe, 0xf5, 0xef, 0x2f, 0x85, 0xd7, 0x50, 0x3d, 0xef, 0xe3, 0xda, 0xf4, 0xfd, 0xc4, 0x76, + 0x45, 0x7f, 0x68, 0x70, 0xf9, 0x4c, 0x0b, 0x51, 0x6e, 0x1c, 0xa3, 0x26, 0xa2, 0xfa, 0xe6, 0x53, + 0x30, 0x55, 0x0a, 0x4d, 0x91, 0xc2, 0x35, 0xf4, 0x4a, 0x5e, 0x0a, 0xc3, 0xfb, 0x1f, 0x9d, 0x68, + 0x70, 0x25, 0xa3, 0xed, 0xe8, 0xad, 0x49, 0xc2, 0xc8, 0x1e, 0xb8, 0xea, 0xdb, 0x4f, 0xc5, 0x55, + 0x49, 0xec, 0x89, 0x24, 0x76, 0xd0, 0x27, 0x93, 0x27, 0xd1, 0xf8, 0x3e, 0x3d, 0xdf, 0x3f, 0x34, + 0xd2, 0x53, 0xc8, 0x6e, 0xef, 0xfe, 0x79, 0x5c, 0xd3, 0x1e, 0x1f, 0xd7, 0xb4, 0x7f, 0x8e, 0x6b, + 0xda, 0x4f, 0x27, 0xb5, 0xa9, 0xc7, 0x27, 0xb5, 0xa9, 0xbf, 0x4f, 0x6a, 0x53, 0x5f, 0x6e, 0x3a, + 0x24, 0xec, 0x0d, 0x3a, 0x75, 0x8b, 0xba, 0xd1, 0x0b, 0xe5, 0x9f, 0xeb, 0xcc, 0xfe, 0xb6, 0xc1, + 0xb7, 0x1d, 0x0e, 0x1a, 0x4e, 0xe0, 0x5b, 0xbc, 0xef, 0xc3, 0x28, 0x3a, 0xe7, 0xc4, 0x4f, 0xa3, + 0x8d, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x43, 0x25, 0x78, 0x65, 0x8b, 0x0d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1638,7 +1647,12 @@ func (m *SigningModeDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.AuthnInfoProviderMethodFullname) i = encodeVarintReflection(dAtA, i, uint64(len(m.AuthnInfoProviderMethodFullname))) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a + } + if m.Number != 0 { + i = encodeVarintReflection(dAtA, i, uint64(m.Number)) + i-- + dAtA[i] = 0x10 } if len(m.Name) > 0 { i -= len(m.Name) @@ -2366,6 +2380,9 @@ func (m *SigningModeDescriptor) Size() (n int) { if l > 0 { n += 1 + l + sovReflection(uint64(l)) } + if m.Number != 0 { + n += 1 + sovReflection(uint64(m.Number)) + } l = len(m.AuthnInfoProviderMethodFullname) if l > 0 { n += 1 + l + sovReflection(uint64(l)) @@ -3183,6 +3200,25 @@ func (m *SigningModeDescriptor) Unmarshal(dAtA []byte) error { m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Number", wireType) + } + m.Number = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Number |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field AuthnInfoProviderMethodFullname", wireType) } From ee64b2189f8c794a58610602334090c2a2fafa8c Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Wed, 31 Mar 2021 18:42:19 +0200 Subject: [PATCH 20/26] fix: commit missing file --- server/grpc/server.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/grpc/server.go b/server/grpc/server.go index 99a8f9228312..79138b881141 100644 --- a/server/grpc/server.go +++ b/server/grpc/server.go @@ -22,10 +22,10 @@ func StartGRPCServer(clientCtx client.Context, app types.Application, address st // cosmosreflection allows consumers to build dynamic clients that can write // to any cosmos-sdk application without relying on application packages at compile time err := appreflection.Register(grpcSrv, appreflection.Config{ - SigningModes: func() []string { - modes := make([]string, len(clientCtx.TxConfig.SignModeHandler().Modes())) - for i, m := range clientCtx.TxConfig.SignModeHandler().Modes() { - modes[i] = m.String() + SigningModes: func() map[string]int32 { + modes := make(map[string]int32, len(clientCtx.TxConfig.SignModeHandler().Modes())) + for _, m := range clientCtx.TxConfig.SignModeHandler().Modes() { + modes[m.String()] = (int32)(m) } return modes }(), From b51017db4cb30babfc31ec0ce23da7c6a8d67dff Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Thu, 1 Apr 2021 12:26:40 +0200 Subject: [PATCH 21/26] change: split RPCs --- docs/core/proto-docs.md | 162 +- .../base/reflection/v1beta1/reflection.proto | 122 +- server/grpc/appreflection/reflection.go | 50 +- server/grpc/appreflection/reflection.pb.go | 5052 +++++++++++------ server/grpc/appreflection/reflection.pb.gw.go | 338 +- server/grpc/server_test.go | 8 +- 6 files changed, 3993 insertions(+), 1739 deletions(-) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 56e8e452b538..b12a4443139b 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -122,8 +122,18 @@ - [ChainDescriptor](#cosmos.base.reflection.v1beta1.ChainDescriptor) - [CodecDescriptor](#cosmos.base.reflection.v1beta1.CodecDescriptor) - [ConfigurationDescriptor](#cosmos.base.reflection.v1beta1.ConfigurationDescriptor) - - [GetAppDescriptorRequest](#cosmos.base.reflection.v1beta1.GetAppDescriptorRequest) - - [GetAppDescriptorResponse](#cosmos.base.reflection.v1beta1.GetAppDescriptorResponse) + - [GetAuthnDescriptorRequest](#cosmos.base.reflection.v1beta1.GetAuthnDescriptorRequest) + - [GetAuthnDescriptorResponse](#cosmos.base.reflection.v1beta1.GetAuthnDescriptorResponse) + - [GetChainDescriptorRequest](#cosmos.base.reflection.v1beta1.GetChainDescriptorRequest) + - [GetChainDescriptorResponse](#cosmos.base.reflection.v1beta1.GetChainDescriptorResponse) + - [GetCodecDescriptorRequest](#cosmos.base.reflection.v1beta1.GetCodecDescriptorRequest) + - [GetCodecDescriptorResponse](#cosmos.base.reflection.v1beta1.GetCodecDescriptorResponse) + - [GetConfigurationDescriptorRequest](#cosmos.base.reflection.v1beta1.GetConfigurationDescriptorRequest) + - [GetConfigurationDescriptorResponse](#cosmos.base.reflection.v1beta1.GetConfigurationDescriptorResponse) + - [GetQueryServicesDescriptorRequest](#cosmos.base.reflection.v1beta1.GetQueryServicesDescriptorRequest) + - [GetQueryServicesDescriptorResponse](#cosmos.base.reflection.v1beta1.GetQueryServicesDescriptorResponse) + - [GetTxDescriptorRequest](#cosmos.base.reflection.v1beta1.GetTxDescriptorRequest) + - [GetTxDescriptorResponse](#cosmos.base.reflection.v1beta1.GetTxDescriptorResponse) - [InterfaceAcceptingMessageDescriptor](#cosmos.base.reflection.v1beta1.InterfaceAcceptingMessageDescriptor) - [InterfaceDescriptor](#cosmos.base.reflection.v1beta1.InterfaceDescriptor) - [InterfaceImplementerDescriptor](#cosmos.base.reflection.v1beta1.InterfaceImplementerDescriptor) @@ -2044,6 +2054,7 @@ AppDescriptor describes a cosmos-sdk based application | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | +| `authn` | [AuthnDescriptor](#cosmos.base.reflection.v1beta1.AuthnDescriptor) | | AuthnDescriptor provides information on how to authenticate transactions on the application NOTE: experimental and subject to change in future releases. | | `chain` | [ChainDescriptor](#cosmos.base.reflection.v1beta1.ChainDescriptor) | | chain provides the chain descriptor | | `codec` | [CodecDescriptor](#cosmos.base.reflection.v1beta1.CodecDescriptor) | | codec provides metadata information regarding codec related types | | `configuration` | [ConfigurationDescriptor](#cosmos.base.reflection.v1beta1.ConfigurationDescriptor) | | configuration provides metadata information regarding the sdk.Config type | @@ -2116,25 +2127,150 @@ ConfigurationDescriptor contains metadata information on the sdk.Config - + -### GetAppDescriptorRequest -GetAppDescriptorRequest is the request type of the GetAppDescriptor RPC. +### GetAuthnDescriptorRequest +GetAuthnDescriptorRequest is the request used for the GetAuthnDescriptor RPC - + -### GetAppDescriptorResponse -GetAppDescriptorResponse is the response type of the GetAppDescriptor RPC. +### GetAuthnDescriptorResponse +GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `app` | [AppDescriptor](#cosmos.base.reflection.v1beta1.AppDescriptor) | | app contains the cosmos-sdk application descriptor | +| `authn` | [AuthnDescriptor](#cosmos.base.reflection.v1beta1.AuthnDescriptor) | | authn describes how to authenticate to the application when sending transactions | + + + + + + + + +### GetChainDescriptorRequest +GetChainDescriptorRequest is the request used for the GetChainDescriptor RPC + + + + + + + + +### GetChainDescriptorResponse +GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `chain` | [ChainDescriptor](#cosmos.base.reflection.v1beta1.ChainDescriptor) | | chain describes application chain information | + + + + + + + + +### GetCodecDescriptorRequest +GetCodecDescriptorRequest is the request used for the GetCodecDescriptor RPC + + + + + + + + +### GetCodecDescriptorResponse +GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `codec` | [CodecDescriptor](#cosmos.base.reflection.v1beta1.CodecDescriptor) | | codec describes the application codec such as registered interfaces and implementations | + + + + + + + + +### GetConfigurationDescriptorRequest +GetConfigurationDescriptorRequest is the request used for the GetConfigurationDescriptor RPC + + + + + + + + +### GetConfigurationDescriptorResponse +GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `config` | [ConfigurationDescriptor](#cosmos.base.reflection.v1beta1.ConfigurationDescriptor) | | config describes the application's sdk.Config | + + + + + + + + +### GetQueryServicesDescriptorRequest +GetQueryServicesDescriptorRequest is the request used for the GetQueryServicesDescriptor RPC + + + + + + + + +### GetQueryServicesDescriptorResponse +GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `queries` | [QueryServicesDescriptor](#cosmos.base.reflection.v1beta1.QueryServicesDescriptor) | | queries provides information on the available queryable services | + + + + + + + + +### GetTxDescriptorRequest +GetTxDescriptorRequest is the request used for the GetTxDescriptor RPC + + + + + + + + +### GetTxDescriptorResponse +GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `tx` | [TxDescriptor](#cosmos.base.reflection.v1beta1.TxDescriptor) | | tx provides information on msgs that can be forwarded to the application alongside the accepted transaction protobuf type | @@ -2359,7 +2495,6 @@ TxDescriptor describes the accepted transaction type | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `fullname` | [string](#string) | | fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) it is not meant to support polymorphism of transaction types, it is supposed to be used by reflection clients to understand if they can handle a specific transaction type in an application. | -| `authn` | [AuthnDescriptor](#cosmos.base.reflection.v1beta1.AuthnDescriptor) | | authn provides information on how to authenticate a transaction in offline mode | | `msgs` | [MsgDescriptor](#cosmos.base.reflection.v1beta1.MsgDescriptor) | repeated | msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) NOTE: not to be confused with proto.Message types | @@ -2380,7 +2515,12 @@ ReflectionService defines a service for application reflection. | Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | | ----------- | ------------ | ------------- | ------------| ------- | -------- | -| `GetAppDescriptor` | [GetAppDescriptorRequest](#cosmos.base.reflection.v1beta1.GetAppDescriptorRequest) | [GetAppDescriptorResponse](#cosmos.base.reflection.v1beta1.GetAppDescriptorResponse) | GetAppDescriptor returns the full cosmos application descriptor | GET|/cosmos/base/reflection/v1beta1/app_descriptor| +| `GetAuthnDescriptor` | [GetAuthnDescriptorRequest](#cosmos.base.reflection.v1beta1.GetAuthnDescriptorRequest) | [GetAuthnDescriptorResponse](#cosmos.base.reflection.v1beta1.GetAuthnDescriptorResponse) | GetAuthnDescriptor returns information on how to authenticate transactions in the application NOTE: this RPC is still experimental and might be subject to breaking changes or removal in future releases of the cosmos-sdk. | GET|/cosmos/base/reflection/v1beta1/app_descriptor/authn| +| `GetChainDescriptor` | [GetChainDescriptorRequest](#cosmos.base.reflection.v1beta1.GetChainDescriptorRequest) | [GetChainDescriptorResponse](#cosmos.base.reflection.v1beta1.GetChainDescriptorResponse) | GetChainDescriptor returns the description of the chain | GET|/cosmos/base/reflection/v1beta1/app_descriptor/chain| +| `GetCodecDescriptor` | [GetCodecDescriptorRequest](#cosmos.base.reflection.v1beta1.GetCodecDescriptorRequest) | [GetCodecDescriptorResponse](#cosmos.base.reflection.v1beta1.GetCodecDescriptorResponse) | GetCodecDescriptor returns the descriptor of the codec of the application | GET|/cosmos/base/reflection/v1beta1/app_descriptor/codec| +| `GetConfigurationDescriptor` | [GetConfigurationDescriptorRequest](#cosmos.base.reflection.v1beta1.GetConfigurationDescriptorRequest) | [GetConfigurationDescriptorResponse](#cosmos.base.reflection.v1beta1.GetConfigurationDescriptorResponse) | GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application | GET|/cosmos/base/reflection/v1beta1/app_descriptor/configuration| +| `GetQueryServicesDescriptor` | [GetQueryServicesDescriptorRequest](#cosmos.base.reflection.v1beta1.GetQueryServicesDescriptorRequest) | [GetQueryServicesDescriptorResponse](#cosmos.base.reflection.v1beta1.GetQueryServicesDescriptorResponse) | GetQueryServicesDescriptor returns the available gRPC queryable services of the application | GET|/cosmos/base/reflection/v1beta1/app_descriptor/query_services| +| `GetTxDescriptor` | [GetTxDescriptorRequest](#cosmos.base.reflection.v1beta1.GetTxDescriptorRequest) | [GetTxDescriptorResponse](#cosmos.base.reflection.v1beta1.GetTxDescriptorResponse) | GetTxDescriptor returns information on the used transaction object and available msgs that can be used | GET|/cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor| | `ListAllInterfaces` | [ListAllInterfacesRequest](#cosmos.base.reflection.v1beta1.ListAllInterfacesRequest) | [ListAllInterfacesResponse](#cosmos.base.reflection.v1beta1.ListAllInterfacesResponse) | ListAllInterfaces lists all the interfaces registered in the interface registry. | GET|/cosmos/base/reflection/v1beta1/interfaces| | `ListImplementations` | [ListImplementationsRequest](#cosmos.base.reflection.v1beta1.ListImplementationsRequest) | [ListImplementationsResponse](#cosmos.base.reflection.v1beta1.ListImplementationsResponse) | ListImplementations list all the concrete types that implement a given interface. | GET|/cosmos/base/reflection/v1beta1/interfaces/{interface_name}/implementations| diff --git a/proto/cosmos/base/reflection/v1beta1/reflection.proto b/proto/cosmos/base/reflection/v1beta1/reflection.proto index 1f96cb8e4ffa..bce0845c6c07 100644 --- a/proto/cosmos/base/reflection/v1beta1/reflection.proto +++ b/proto/cosmos/base/reflection/v1beta1/reflection.proto @@ -5,28 +5,11 @@ import "google/api/annotations.proto"; option go_package = "github.com/cosmos/cosmos-sdk/server/grpc/appreflection"; -// ReflectionService defines a service for application reflection. -service ReflectionService { - // GetAppDescriptor returns the full cosmos application descriptor - rpc GetAppDescriptor(GetAppDescriptorRequest) returns (GetAppDescriptorResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor"; - }; - // ListAllInterfaces lists all the interfaces registered in the interface - // registry. - rpc ListAllInterfaces(ListAllInterfacesRequest) returns (ListAllInterfacesResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/interfaces"; - }; - - // ListImplementations list all the concrete types that implement a given - // interface. - rpc ListImplementations(ListImplementationsRequest) returns (ListImplementationsResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/interfaces/" - "{interface_name}/implementations"; - }; -} - // AppDescriptor describes a cosmos-sdk based application message AppDescriptor { + // AuthnDescriptor provides information on how to authenticate transactions on the application + // NOTE: experimental and subject to change in future releases. + AuthnDescriptor authn = 1; // chain provides the chain descriptor ChainDescriptor chain = 2; // codec provides metadata information regarding codec related types @@ -45,11 +28,9 @@ message TxDescriptor { // it is not meant to support polymorphism of transaction types, it is supposed to be used by // reflection clients to understand if they can handle a specific transaction type in an application. string fullname = 1; - // authn provides information on how to authenticate a transaction in offline mode - AuthnDescriptor authn = 2; // msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) // NOTE: not to be confused with proto.Message types - repeated MsgDescriptor msgs = 3; + repeated MsgDescriptor msgs = 2; } // AuthnDescriptor provides information on how to sign transactions without relying @@ -149,15 +130,98 @@ message ServiceMsgDescriptor { string response_fullname = 4; } -// GetAppDescriptorRequest is the request type of the GetAppDescriptor RPC. -message GetAppDescriptorRequest {} +// ReflectionService defines a service for application reflection. +service ReflectionService { + // GetAuthnDescriptor returns information on how to authenticate transactions in the application + // NOTE: this RPC is still experimental and might be subject to breaking changes or removal in + // future releases of the cosmos-sdk. + rpc GetAuthnDescriptor(GetAuthnDescriptorRequest) returns (GetAuthnDescriptorResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/authn"; + } + // GetChainDescriptor returns the description of the chain + rpc GetChainDescriptor(GetChainDescriptorRequest) returns (GetChainDescriptorResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/chain"; + }; + // GetCodecDescriptor returns the descriptor of the codec of the application + rpc GetCodecDescriptor(GetCodecDescriptorRequest) returns (GetCodecDescriptorResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/codec"; + } + // GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application + rpc GetConfigurationDescriptor(GetConfigurationDescriptorRequest) returns (GetConfigurationDescriptorResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/configuration"; + } + // GetQueryServicesDescriptor returns the available gRPC queryable services of the application + rpc GetQueryServicesDescriptor(GetQueryServicesDescriptorRequest) returns (GetQueryServicesDescriptorResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/query_services"; + } + // GetTxDescriptor returns information on the used transaction object and available msgs that can be used + rpc GetTxDescriptor(GetTxDescriptorRequest) returns (GetTxDescriptorResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor"; + } + // ListAllInterfaces lists all the interfaces registered in the interface + // registry. + rpc ListAllInterfaces(ListAllInterfacesRequest) returns (ListAllInterfacesResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/interfaces"; + }; + + // ListImplementations list all the concrete types that implement a given + // interface. + rpc ListImplementations(ListImplementationsRequest) returns (ListImplementationsResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/interfaces/" + "{interface_name}/implementations"; + }; +} -// GetAppDescriptorResponse is the response type of the GetAppDescriptor RPC. -message GetAppDescriptorResponse { - // app contains the cosmos-sdk application descriptor - AppDescriptor app = 1; +// GetAuthnDescriptorRequest is the request used for the GetAuthnDescriptor RPC +message GetAuthnDescriptorRequest {} +// GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC +message GetAuthnDescriptorResponse { + // authn describes how to authenticate to the application when sending transactions + AuthnDescriptor authn = 1; } +// GetChainDescriptorRequest is the request used for the GetChainDescriptor RPC +message GetChainDescriptorRequest {} +// GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC +message GetChainDescriptorResponse { + // chain describes application chain information + ChainDescriptor chain = 1; +} + +// GetCodecDescriptorRequest is the request used for the GetCodecDescriptor RPC +message GetCodecDescriptorRequest {} +// GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC +message GetCodecDescriptorResponse { + // codec describes the application codec such as registered interfaces and implementations + CodecDescriptor codec = 1; +} + +// GetConfigurationDescriptorRequest is the request used for the GetConfigurationDescriptor RPC +message GetConfigurationDescriptorRequest {} +// GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC +message GetConfigurationDescriptorResponse { + // config describes the application's sdk.Config + ConfigurationDescriptor config = 1; +} + +// GetQueryServicesDescriptorRequest is the request used for the GetQueryServicesDescriptor RPC +message GetQueryServicesDescriptorRequest {} +// GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC +message GetQueryServicesDescriptorResponse { + // queries provides information on the available queryable services + QueryServicesDescriptor queries = 1; +} + +// GetTxDescriptorRequest is the request used for the GetTxDescriptor RPC +message GetTxDescriptorRequest {} +// GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC +message GetTxDescriptorResponse { + // tx provides information on msgs that can be forwarded to the application + // alongside the accepted transaction protobuf type + TxDescriptor tx = 1; +} + + // QueryServicesDescriptor contains the list of cosmos-sdk queriable services message QueryServicesDescriptor { // query_services is a list of cosmos-sdk QueryServiceDescriptor diff --git a/server/grpc/appreflection/reflection.go b/server/grpc/appreflection/reflection.go index c93f5bdb09dd..952d11d5ceb4 100644 --- a/server/grpc/appreflection/reflection.go +++ b/server/grpc/appreflection/reflection.go @@ -39,6 +39,30 @@ type reflectionServiceServer struct { interfaceImplementers map[string][]string } +func (r reflectionServiceServer) GetAuthnDescriptor(_ context.Context, _ *GetAuthnDescriptorRequest) (*GetAuthnDescriptorResponse, error) { + return &GetAuthnDescriptorResponse{Authn: r.desc.Authn}, nil +} + +func (r reflectionServiceServer) GetChainDescriptor(_ context.Context, _ *GetChainDescriptorRequest) (*GetChainDescriptorResponse, error) { + return &GetChainDescriptorResponse{Chain: r.desc.Chain}, nil +} + +func (r reflectionServiceServer) GetCodecDescriptor(_ context.Context, _ *GetCodecDescriptorRequest) (*GetCodecDescriptorResponse, error) { + return &GetCodecDescriptorResponse{Codec: r.desc.Codec}, nil +} + +func (r reflectionServiceServer) GetConfigurationDescriptor(_ context.Context, _ *GetConfigurationDescriptorRequest) (*GetConfigurationDescriptorResponse, error) { + return &GetConfigurationDescriptorResponse{Config: r.desc.Configuration}, nil +} + +func (r reflectionServiceServer) GetQueryServicesDescriptor(_ context.Context, _ *GetQueryServicesDescriptorRequest) (*GetQueryServicesDescriptorResponse, error) { + return &GetQueryServicesDescriptorResponse{Queries: r.desc.QueryServices}, nil +} + +func (r reflectionServiceServer) GetTxDescriptor(_ context.Context, _ *GetTxDescriptorRequest) (*GetTxDescriptorResponse, error) { + return &GetTxDescriptorResponse{Tx: r.desc.Tx}, nil +} + func newReflectionServiceServer(grpcSrv *grpc.Server, conf Config) (reflectionServiceServer, error) { // set chain descriptor chainDescriptor := &ChainDescriptor{Id: conf.ChainID} @@ -54,17 +78,20 @@ func newReflectionServiceServer(grpcSrv *grpc.Server, conf Config) (reflectionSe // set query service descriptor queryServiceDescriptor := newQueryServiceDescriptor(grpcSrv) // set deliver descriptor - txDescriptor, err := newTxDescriptor(conf.InterfaceRegistry, conf.SigningModes) + txDescriptor, err := newTxDescriptor(conf.InterfaceRegistry) if err != nil { return reflectionServiceServer{}, fmt.Errorf("unable to create deliver descriptor: %w", err) } + authnDescriptor := newAuthnDescriptor(conf.SigningModes) desc := &AppDescriptor{ + Authn: authnDescriptor, Chain: chainDescriptor, Codec: codecDescriptor, Configuration: configurationDescriptor, QueryServices: queryServiceDescriptor, Tx: txDescriptor, } + ifaceList := make([]string, len(desc.Codec.Interfaces)) ifaceImplementers := make(map[string][]string, len(desc.Codec.Interfaces)) for i, iface := range desc.Codec.Interfaces { @@ -82,10 +109,6 @@ func newReflectionServiceServer(grpcSrv *grpc.Server, conf Config) (reflectionSe }, nil } -func (r reflectionServiceServer) GetAppDescriptor(_ context.Context, _ *GetAppDescriptorRequest) (*GetAppDescriptorResponse, error) { - return &GetAppDescriptorResponse{App: r.desc}, nil -} - func (r reflectionServiceServer) ListAllInterfaces(_ context.Context, _ *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) { return &ListAllInterfacesResponse{InterfaceNames: r.interfacesList}, nil } @@ -159,7 +182,7 @@ func newQueryServiceDescriptor(srv *grpc.Server) *QueryServicesDescriptor { return &QueryServicesDescriptor{QueryServices: queryServices} } -func newTxDescriptor(ir codectypes.InterfaceRegistry, signingModes map[string]int32) (*TxDescriptor, error) { +func newTxDescriptor(ir codectypes.InterfaceRegistry) (*TxDescriptor, error) { // get base tx type name txPbName := proto.MessageName(&tx.Tx{}) if txPbName == "" { @@ -194,6 +217,13 @@ func newTxDescriptor(ir codectypes.InterfaceRegistry, signingModes map[string]in }, }}) } + return &TxDescriptor{ + Fullname: txPbName, + Msgs: msgsDesc, + }, nil +} + +func newAuthnDescriptor(signingModes map[string]int32) *AuthnDescriptor { signModesDesc := make([]*SigningModeDescriptor, 0, len(signingModes)) for i, m := range signingModes { signModesDesc = append(signModesDesc, &SigningModeDescriptor{ @@ -204,11 +234,5 @@ func newTxDescriptor(ir codectypes.InterfaceRegistry, signingModes map[string]in AuthnInfoProviderMethodFullname: "", }) } - return &TxDescriptor{ - Fullname: txPbName, - Authn: &AuthnDescriptor{ - SignModes: signModesDesc, - }, - Msgs: msgsDesc, - }, nil + return &AuthnDescriptor{SignModes: signModesDesc} } diff --git a/server/grpc/appreflection/reflection.pb.go b/server/grpc/appreflection/reflection.pb.go index 85cbd3972803..7c77f1a5135e 100644 --- a/server/grpc/appreflection/reflection.pb.go +++ b/server/grpc/appreflection/reflection.pb.go @@ -30,6 +30,9 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // AppDescriptor describes a cosmos-sdk based application type AppDescriptor struct { + // AuthnDescriptor provides information on how to authenticate transactions on the application + // NOTE: experimental and subject to change in future releases. + Authn *AuthnDescriptor `protobuf:"bytes,1,opt,name=authn,proto3" json:"authn,omitempty"` // chain provides the chain descriptor Chain *ChainDescriptor `protobuf:"bytes,2,opt,name=chain,proto3" json:"chain,omitempty"` // codec provides metadata information regarding codec related types @@ -75,6 +78,13 @@ func (m *AppDescriptor) XXX_DiscardUnknown() { var xxx_messageInfo_AppDescriptor proto.InternalMessageInfo +func (m *AppDescriptor) GetAuthn() *AuthnDescriptor { + if m != nil { + return m.Authn + } + return nil +} + func (m *AppDescriptor) GetChain() *ChainDescriptor { if m != nil { return m.Chain @@ -116,11 +126,9 @@ type TxDescriptor struct { // it is not meant to support polymorphism of transaction types, it is supposed to be used by // reflection clients to understand if they can handle a specific transaction type in an application. Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` - // authn provides information on how to authenticate a transaction in offline mode - Authn *AuthnDescriptor `protobuf:"bytes,2,opt,name=authn,proto3" json:"authn,omitempty"` // msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) // NOTE: not to be confused with proto.Message types - Msgs []*MsgDescriptor `protobuf:"bytes,3,rep,name=msgs,proto3" json:"msgs,omitempty"` + Msgs []*MsgDescriptor `protobuf:"bytes,2,rep,name=msgs,proto3" json:"msgs,omitempty"` } func (m *TxDescriptor) Reset() { *m = TxDescriptor{} } @@ -163,13 +171,6 @@ func (m *TxDescriptor) GetFullname() string { return "" } -func (m *TxDescriptor) GetAuthn() *AuthnDescriptor { - if m != nil { - return m.Authn - } - return nil -} - func (m *TxDescriptor) GetMsgs() []*MsgDescriptor { if m != nil { return m.Msgs @@ -763,22 +764,22 @@ func (m *ServiceMsgDescriptor) GetResponseFullname() string { return "" } -// GetAppDescriptorRequest is the request type of the GetAppDescriptor RPC. -type GetAppDescriptorRequest struct { +// GetAuthnDescriptorRequest is the request used for the GetAuthnDescriptor RPC +type GetAuthnDescriptorRequest struct { } -func (m *GetAppDescriptorRequest) Reset() { *m = GetAppDescriptorRequest{} } -func (m *GetAppDescriptorRequest) String() string { return proto.CompactTextString(m) } -func (*GetAppDescriptorRequest) ProtoMessage() {} -func (*GetAppDescriptorRequest) Descriptor() ([]byte, []int) { +func (m *GetAuthnDescriptorRequest) Reset() { *m = GetAuthnDescriptorRequest{} } +func (m *GetAuthnDescriptorRequest) String() string { return proto.CompactTextString(m) } +func (*GetAuthnDescriptorRequest) ProtoMessage() {} +func (*GetAuthnDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor_d48c054165687f5c, []int{12} } -func (m *GetAppDescriptorRequest) XXX_Unmarshal(b []byte) error { +func (m *GetAuthnDescriptorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *GetAppDescriptorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GetAuthnDescriptorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_GetAppDescriptorRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_GetAuthnDescriptorRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -788,36 +789,36 @@ func (m *GetAppDescriptorRequest) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } -func (m *GetAppDescriptorRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetAppDescriptorRequest.Merge(m, src) +func (m *GetAuthnDescriptorRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetAuthnDescriptorRequest.Merge(m, src) } -func (m *GetAppDescriptorRequest) XXX_Size() int { +func (m *GetAuthnDescriptorRequest) XXX_Size() int { return m.Size() } -func (m *GetAppDescriptorRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetAppDescriptorRequest.DiscardUnknown(m) +func (m *GetAuthnDescriptorRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetAuthnDescriptorRequest.DiscardUnknown(m) } -var xxx_messageInfo_GetAppDescriptorRequest proto.InternalMessageInfo +var xxx_messageInfo_GetAuthnDescriptorRequest proto.InternalMessageInfo -// GetAppDescriptorResponse is the response type of the GetAppDescriptor RPC. -type GetAppDescriptorResponse struct { - // app contains the cosmos-sdk application descriptor - App *AppDescriptor `protobuf:"bytes,1,opt,name=app,proto3" json:"app,omitempty"` +// GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC +type GetAuthnDescriptorResponse struct { + // authn describes how to authenticate to the application when sending transactions + Authn *AuthnDescriptor `protobuf:"bytes,1,opt,name=authn,proto3" json:"authn,omitempty"` } -func (m *GetAppDescriptorResponse) Reset() { *m = GetAppDescriptorResponse{} } -func (m *GetAppDescriptorResponse) String() string { return proto.CompactTextString(m) } -func (*GetAppDescriptorResponse) ProtoMessage() {} -func (*GetAppDescriptorResponse) Descriptor() ([]byte, []int) { +func (m *GetAuthnDescriptorResponse) Reset() { *m = GetAuthnDescriptorResponse{} } +func (m *GetAuthnDescriptorResponse) String() string { return proto.CompactTextString(m) } +func (*GetAuthnDescriptorResponse) ProtoMessage() {} +func (*GetAuthnDescriptorResponse) Descriptor() ([]byte, []int) { return fileDescriptor_d48c054165687f5c, []int{13} } -func (m *GetAppDescriptorResponse) XXX_Unmarshal(b []byte) error { +func (m *GetAuthnDescriptorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *GetAppDescriptorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GetAuthnDescriptorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_GetAppDescriptorResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_GetAuthnDescriptorResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -827,43 +828,41 @@ func (m *GetAppDescriptorResponse) XXX_Marshal(b []byte, deterministic bool) ([] return b[:n], nil } } -func (m *GetAppDescriptorResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetAppDescriptorResponse.Merge(m, src) +func (m *GetAuthnDescriptorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetAuthnDescriptorResponse.Merge(m, src) } -func (m *GetAppDescriptorResponse) XXX_Size() int { +func (m *GetAuthnDescriptorResponse) XXX_Size() int { return m.Size() } -func (m *GetAppDescriptorResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetAppDescriptorResponse.DiscardUnknown(m) +func (m *GetAuthnDescriptorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetAuthnDescriptorResponse.DiscardUnknown(m) } -var xxx_messageInfo_GetAppDescriptorResponse proto.InternalMessageInfo +var xxx_messageInfo_GetAuthnDescriptorResponse proto.InternalMessageInfo -func (m *GetAppDescriptorResponse) GetApp() *AppDescriptor { +func (m *GetAuthnDescriptorResponse) GetAuthn() *AuthnDescriptor { if m != nil { - return m.App + return m.Authn } return nil } -// QueryServicesDescriptor contains the list of cosmos-sdk queriable services -type QueryServicesDescriptor struct { - // query_services is a list of cosmos-sdk QueryServiceDescriptor - QueryServices []*QueryServiceDescriptor `protobuf:"bytes,1,rep,name=query_services,json=queryServices,proto3" json:"query_services,omitempty"` +// GetChainDescriptorRequest is the request used for the GetChainDescriptor RPC +type GetChainDescriptorRequest struct { } -func (m *QueryServicesDescriptor) Reset() { *m = QueryServicesDescriptor{} } -func (m *QueryServicesDescriptor) String() string { return proto.CompactTextString(m) } -func (*QueryServicesDescriptor) ProtoMessage() {} -func (*QueryServicesDescriptor) Descriptor() ([]byte, []int) { +func (m *GetChainDescriptorRequest) Reset() { *m = GetChainDescriptorRequest{} } +func (m *GetChainDescriptorRequest) String() string { return proto.CompactTextString(m) } +func (*GetChainDescriptorRequest) ProtoMessage() {} +func (*GetChainDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor_d48c054165687f5c, []int{14} } -func (m *QueryServicesDescriptor) XXX_Unmarshal(b []byte) error { +func (m *GetChainDescriptorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryServicesDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GetChainDescriptorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryServicesDescriptor.Marshal(b, m, deterministic) + return xxx_messageInfo_GetChainDescriptorRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -873,45 +872,36 @@ func (m *QueryServicesDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } -func (m *QueryServicesDescriptor) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryServicesDescriptor.Merge(m, src) +func (m *GetChainDescriptorRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetChainDescriptorRequest.Merge(m, src) } -func (m *QueryServicesDescriptor) XXX_Size() int { +func (m *GetChainDescriptorRequest) XXX_Size() int { return m.Size() } -func (m *QueryServicesDescriptor) XXX_DiscardUnknown() { - xxx_messageInfo_QueryServicesDescriptor.DiscardUnknown(m) +func (m *GetChainDescriptorRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetChainDescriptorRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryServicesDescriptor proto.InternalMessageInfo - -func (m *QueryServicesDescriptor) GetQueryServices() []*QueryServiceDescriptor { - if m != nil { - return m.QueryServices - } - return nil -} +var xxx_messageInfo_GetChainDescriptorRequest proto.InternalMessageInfo -// QueryServiceDescriptor describes a cosmos-sdk queryable service -type QueryServiceDescriptor struct { - // fullname is the protobuf fullname of the service descriptor - Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` - // methods provides a list of query service methods - Methods []*QueryMethodDescriptor `protobuf:"bytes,2,rep,name=methods,proto3" json:"methods,omitempty"` +// GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC +type GetChainDescriptorResponse struct { + // chain describes application chain information + Chain *ChainDescriptor `protobuf:"bytes,1,opt,name=chain,proto3" json:"chain,omitempty"` } -func (m *QueryServiceDescriptor) Reset() { *m = QueryServiceDescriptor{} } -func (m *QueryServiceDescriptor) String() string { return proto.CompactTextString(m) } -func (*QueryServiceDescriptor) ProtoMessage() {} -func (*QueryServiceDescriptor) Descriptor() ([]byte, []int) { +func (m *GetChainDescriptorResponse) Reset() { *m = GetChainDescriptorResponse{} } +func (m *GetChainDescriptorResponse) String() string { return proto.CompactTextString(m) } +func (*GetChainDescriptorResponse) ProtoMessage() {} +func (*GetChainDescriptorResponse) Descriptor() ([]byte, []int) { return fileDescriptor_d48c054165687f5c, []int{15} } -func (m *QueryServiceDescriptor) XXX_Unmarshal(b []byte) error { +func (m *GetChainDescriptorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryServiceDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GetChainDescriptorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryServiceDescriptor.Marshal(b, m, deterministic) + return xxx_messageInfo_GetChainDescriptorResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -921,55 +911,41 @@ func (m *QueryServiceDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]by return b[:n], nil } } -func (m *QueryServiceDescriptor) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryServiceDescriptor.Merge(m, src) +func (m *GetChainDescriptorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetChainDescriptorResponse.Merge(m, src) } -func (m *QueryServiceDescriptor) XXX_Size() int { +func (m *GetChainDescriptorResponse) XXX_Size() int { return m.Size() } -func (m *QueryServiceDescriptor) XXX_DiscardUnknown() { - xxx_messageInfo_QueryServiceDescriptor.DiscardUnknown(m) +func (m *GetChainDescriptorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetChainDescriptorResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryServiceDescriptor proto.InternalMessageInfo - -func (m *QueryServiceDescriptor) GetFullname() string { - if m != nil { - return m.Fullname - } - return "" -} +var xxx_messageInfo_GetChainDescriptorResponse proto.InternalMessageInfo -func (m *QueryServiceDescriptor) GetMethods() []*QueryMethodDescriptor { +func (m *GetChainDescriptorResponse) GetChain() *ChainDescriptor { if m != nil { - return m.Methods + return m.Chain } return nil } -// QueryMethodDescriptor describes a queryable method of a query service -// no other info is provided beside method name and tendermint queryable path -// because it would be redundant with the grpc reflection service -type QueryMethodDescriptor struct { - // name is the protobuf name (not fullname) of the method - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // full_query_path is the path that can be used to query - // this method via tendermint abci.Query - FullQueryPath string `protobuf:"bytes,2,opt,name=full_query_path,json=fullQueryPath,proto3" json:"full_query_path,omitempty"` +// GetCodecDescriptorRequest is the request used for the GetCodecDescriptor RPC +type GetCodecDescriptorRequest struct { } -func (m *QueryMethodDescriptor) Reset() { *m = QueryMethodDescriptor{} } -func (m *QueryMethodDescriptor) String() string { return proto.CompactTextString(m) } -func (*QueryMethodDescriptor) ProtoMessage() {} -func (*QueryMethodDescriptor) Descriptor() ([]byte, []int) { +func (m *GetCodecDescriptorRequest) Reset() { *m = GetCodecDescriptorRequest{} } +func (m *GetCodecDescriptorRequest) String() string { return proto.CompactTextString(m) } +func (*GetCodecDescriptorRequest) ProtoMessage() {} +func (*GetCodecDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor_d48c054165687f5c, []int{16} } -func (m *QueryMethodDescriptor) XXX_Unmarshal(b []byte) error { +func (m *GetCodecDescriptorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryMethodDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GetCodecDescriptorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryMethodDescriptor.Marshal(b, m, deterministic) + return xxx_messageInfo_GetCodecDescriptorRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -979,48 +955,80 @@ func (m *QueryMethodDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byt return b[:n], nil } } -func (m *QueryMethodDescriptor) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryMethodDescriptor.Merge(m, src) +func (m *GetCodecDescriptorRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetCodecDescriptorRequest.Merge(m, src) } -func (m *QueryMethodDescriptor) XXX_Size() int { +func (m *GetCodecDescriptorRequest) XXX_Size() int { return m.Size() } -func (m *QueryMethodDescriptor) XXX_DiscardUnknown() { - xxx_messageInfo_QueryMethodDescriptor.DiscardUnknown(m) +func (m *GetCodecDescriptorRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetCodecDescriptorRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryMethodDescriptor proto.InternalMessageInfo +var xxx_messageInfo_GetCodecDescriptorRequest proto.InternalMessageInfo -func (m *QueryMethodDescriptor) GetName() string { - if m != nil { - return m.Name +// GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC +type GetCodecDescriptorResponse struct { + // codec describes the application codec such as registered interfaces and implementations + Codec *CodecDescriptor `protobuf:"bytes,1,opt,name=codec,proto3" json:"codec,omitempty"` +} + +func (m *GetCodecDescriptorResponse) Reset() { *m = GetCodecDescriptorResponse{} } +func (m *GetCodecDescriptorResponse) String() string { return proto.CompactTextString(m) } +func (*GetCodecDescriptorResponse) ProtoMessage() {} +func (*GetCodecDescriptorResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{17} +} +func (m *GetCodecDescriptorResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetCodecDescriptorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetCodecDescriptorResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return "" +} +func (m *GetCodecDescriptorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetCodecDescriptorResponse.Merge(m, src) +} +func (m *GetCodecDescriptorResponse) XXX_Size() int { + return m.Size() +} +func (m *GetCodecDescriptorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetCodecDescriptorResponse.DiscardUnknown(m) } -func (m *QueryMethodDescriptor) GetFullQueryPath() string { +var xxx_messageInfo_GetCodecDescriptorResponse proto.InternalMessageInfo + +func (m *GetCodecDescriptorResponse) GetCodec() *CodecDescriptor { if m != nil { - return m.FullQueryPath + return m.Codec } - return "" + return nil } -// ListAllInterfacesRequest is the request type of the ListAllInterfaces RPC. -type ListAllInterfacesRequest struct { +// GetConfigurationDescriptorRequest is the request used for the GetConfigurationDescriptor RPC +type GetConfigurationDescriptorRequest struct { } -func (m *ListAllInterfacesRequest) Reset() { *m = ListAllInterfacesRequest{} } -func (m *ListAllInterfacesRequest) String() string { return proto.CompactTextString(m) } -func (*ListAllInterfacesRequest) ProtoMessage() {} -func (*ListAllInterfacesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{17} +func (m *GetConfigurationDescriptorRequest) Reset() { *m = GetConfigurationDescriptorRequest{} } +func (m *GetConfigurationDescriptorRequest) String() string { return proto.CompactTextString(m) } +func (*GetConfigurationDescriptorRequest) ProtoMessage() {} +func (*GetConfigurationDescriptorRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{18} } -func (m *ListAllInterfacesRequest) XXX_Unmarshal(b []byte) error { +func (m *GetConfigurationDescriptorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *ListAllInterfacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GetConfigurationDescriptorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_ListAllInterfacesRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_GetConfigurationDescriptorRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1030,36 +1038,36 @@ func (m *ListAllInterfacesRequest) XXX_Marshal(b []byte, deterministic bool) ([] return b[:n], nil } } -func (m *ListAllInterfacesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListAllInterfacesRequest.Merge(m, src) +func (m *GetConfigurationDescriptorRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetConfigurationDescriptorRequest.Merge(m, src) } -func (m *ListAllInterfacesRequest) XXX_Size() int { +func (m *GetConfigurationDescriptorRequest) XXX_Size() int { return m.Size() } -func (m *ListAllInterfacesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListAllInterfacesRequest.DiscardUnknown(m) +func (m *GetConfigurationDescriptorRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetConfigurationDescriptorRequest.DiscardUnknown(m) } -var xxx_messageInfo_ListAllInterfacesRequest proto.InternalMessageInfo +var xxx_messageInfo_GetConfigurationDescriptorRequest proto.InternalMessageInfo -// ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC. -type ListAllInterfacesResponse struct { - // interface_names is an array of all the registered interfaces. - InterfaceNames []string `protobuf:"bytes,1,rep,name=interface_names,json=interfaceNames,proto3" json:"interface_names,omitempty"` +// GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC +type GetConfigurationDescriptorResponse struct { + // config describes the application's sdk.Config + Config *ConfigurationDescriptor `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` } -func (m *ListAllInterfacesResponse) Reset() { *m = ListAllInterfacesResponse{} } -func (m *ListAllInterfacesResponse) String() string { return proto.CompactTextString(m) } -func (*ListAllInterfacesResponse) ProtoMessage() {} -func (*ListAllInterfacesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{18} +func (m *GetConfigurationDescriptorResponse) Reset() { *m = GetConfigurationDescriptorResponse{} } +func (m *GetConfigurationDescriptorResponse) String() string { return proto.CompactTextString(m) } +func (*GetConfigurationDescriptorResponse) ProtoMessage() {} +func (*GetConfigurationDescriptorResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{19} } -func (m *ListAllInterfacesResponse) XXX_Unmarshal(b []byte) error { +func (m *GetConfigurationDescriptorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *ListAllInterfacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GetConfigurationDescriptorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_ListAllInterfacesResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_GetConfigurationDescriptorResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1069,44 +1077,41 @@ func (m *ListAllInterfacesResponse) XXX_Marshal(b []byte, deterministic bool) ([ return b[:n], nil } } -func (m *ListAllInterfacesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListAllInterfacesResponse.Merge(m, src) +func (m *GetConfigurationDescriptorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetConfigurationDescriptorResponse.Merge(m, src) } -func (m *ListAllInterfacesResponse) XXX_Size() int { +func (m *GetConfigurationDescriptorResponse) XXX_Size() int { return m.Size() } -func (m *ListAllInterfacesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListAllInterfacesResponse.DiscardUnknown(m) +func (m *GetConfigurationDescriptorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetConfigurationDescriptorResponse.DiscardUnknown(m) } -var xxx_messageInfo_ListAllInterfacesResponse proto.InternalMessageInfo +var xxx_messageInfo_GetConfigurationDescriptorResponse proto.InternalMessageInfo -func (m *ListAllInterfacesResponse) GetInterfaceNames() []string { +func (m *GetConfigurationDescriptorResponse) GetConfig() *ConfigurationDescriptor { if m != nil { - return m.InterfaceNames + return m.Config } return nil } -// ListImplementationsRequest is the request type of the ListImplementations -// RPC. -type ListImplementationsRequest struct { - // interface_name defines the interface to query the implementations for. - InterfaceName string `protobuf:"bytes,1,opt,name=interface_name,json=interfaceName,proto3" json:"interface_name,omitempty"` +// GetQueryServicesDescriptorRequest is the request used for the GetQueryServicesDescriptor RPC +type GetQueryServicesDescriptorRequest struct { } -func (m *ListImplementationsRequest) Reset() { *m = ListImplementationsRequest{} } -func (m *ListImplementationsRequest) String() string { return proto.CompactTextString(m) } -func (*ListImplementationsRequest) ProtoMessage() {} -func (*ListImplementationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{19} +func (m *GetQueryServicesDescriptorRequest) Reset() { *m = GetQueryServicesDescriptorRequest{} } +func (m *GetQueryServicesDescriptorRequest) String() string { return proto.CompactTextString(m) } +func (*GetQueryServicesDescriptorRequest) ProtoMessage() {} +func (*GetQueryServicesDescriptorRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{20} } -func (m *ListImplementationsRequest) XXX_Unmarshal(b []byte) error { +func (m *GetQueryServicesDescriptorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *ListImplementationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GetQueryServicesDescriptorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_ListImplementationsRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_GetQueryServicesDescriptorRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1116,43 +1121,36 @@ func (m *ListImplementationsRequest) XXX_Marshal(b []byte, deterministic bool) ( return b[:n], nil } } -func (m *ListImplementationsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListImplementationsRequest.Merge(m, src) +func (m *GetQueryServicesDescriptorRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetQueryServicesDescriptorRequest.Merge(m, src) } -func (m *ListImplementationsRequest) XXX_Size() int { +func (m *GetQueryServicesDescriptorRequest) XXX_Size() int { return m.Size() } -func (m *ListImplementationsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListImplementationsRequest.DiscardUnknown(m) +func (m *GetQueryServicesDescriptorRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetQueryServicesDescriptorRequest.DiscardUnknown(m) } -var xxx_messageInfo_ListImplementationsRequest proto.InternalMessageInfo - -func (m *ListImplementationsRequest) GetInterfaceName() string { - if m != nil { - return m.InterfaceName - } - return "" -} +var xxx_messageInfo_GetQueryServicesDescriptorRequest proto.InternalMessageInfo -// ListImplementationsResponse is the response type of the ListImplementations -// RPC. -type ListImplementationsResponse struct { - ImplementationMessageNames []string `protobuf:"bytes,1,rep,name=implementation_message_names,json=implementationMessageNames,proto3" json:"implementation_message_names,omitempty"` +// GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC +type GetQueryServicesDescriptorResponse struct { + // queries provides information on the available queryable services + Queries *QueryServicesDescriptor `protobuf:"bytes,1,opt,name=queries,proto3" json:"queries,omitempty"` } -func (m *ListImplementationsResponse) Reset() { *m = ListImplementationsResponse{} } -func (m *ListImplementationsResponse) String() string { return proto.CompactTextString(m) } -func (*ListImplementationsResponse) ProtoMessage() {} -func (*ListImplementationsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{20} +func (m *GetQueryServicesDescriptorResponse) Reset() { *m = GetQueryServicesDescriptorResponse{} } +func (m *GetQueryServicesDescriptorResponse) String() string { return proto.CompactTextString(m) } +func (*GetQueryServicesDescriptorResponse) ProtoMessage() {} +func (*GetQueryServicesDescriptorResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{21} } -func (m *ListImplementationsResponse) XXX_Unmarshal(b []byte) error { +func (m *GetQueryServicesDescriptorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *ListImplementationsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GetQueryServicesDescriptorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_ListImplementationsResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_GetQueryServicesDescriptorResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1162,740 +1160,929 @@ func (m *ListImplementationsResponse) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *ListImplementationsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListImplementationsResponse.Merge(m, src) +func (m *GetQueryServicesDescriptorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetQueryServicesDescriptorResponse.Merge(m, src) } -func (m *ListImplementationsResponse) XXX_Size() int { +func (m *GetQueryServicesDescriptorResponse) XXX_Size() int { return m.Size() } -func (m *ListImplementationsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListImplementationsResponse.DiscardUnknown(m) +func (m *GetQueryServicesDescriptorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetQueryServicesDescriptorResponse.DiscardUnknown(m) } -var xxx_messageInfo_ListImplementationsResponse proto.InternalMessageInfo +var xxx_messageInfo_GetQueryServicesDescriptorResponse proto.InternalMessageInfo -func (m *ListImplementationsResponse) GetImplementationMessageNames() []string { +func (m *GetQueryServicesDescriptorResponse) GetQueries() *QueryServicesDescriptor { if m != nil { - return m.ImplementationMessageNames + return m.Queries } return nil } -func init() { - proto.RegisterType((*AppDescriptor)(nil), "cosmos.base.reflection.v1beta1.AppDescriptor") - proto.RegisterType((*TxDescriptor)(nil), "cosmos.base.reflection.v1beta1.TxDescriptor") - proto.RegisterType((*AuthnDescriptor)(nil), "cosmos.base.reflection.v1beta1.AuthnDescriptor") - proto.RegisterType((*SigningModeDescriptor)(nil), "cosmos.base.reflection.v1beta1.SigningModeDescriptor") - proto.RegisterType((*ChainDescriptor)(nil), "cosmos.base.reflection.v1beta1.ChainDescriptor") - proto.RegisterType((*CodecDescriptor)(nil), "cosmos.base.reflection.v1beta1.CodecDescriptor") - proto.RegisterType((*InterfaceDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceDescriptor") - proto.RegisterType((*InterfaceImplementerDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceImplementerDescriptor") - proto.RegisterType((*InterfaceAcceptingMessageDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceAcceptingMessageDescriptor") - proto.RegisterType((*ConfigurationDescriptor)(nil), "cosmos.base.reflection.v1beta1.ConfigurationDescriptor") - proto.RegisterType((*MsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.MsgDescriptor") - proto.RegisterType((*ServiceMsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.ServiceMsgDescriptor") - proto.RegisterType((*GetAppDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetAppDescriptorRequest") - proto.RegisterType((*GetAppDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetAppDescriptorResponse") - proto.RegisterType((*QueryServicesDescriptor)(nil), "cosmos.base.reflection.v1beta1.QueryServicesDescriptor") - proto.RegisterType((*QueryServiceDescriptor)(nil), "cosmos.base.reflection.v1beta1.QueryServiceDescriptor") - proto.RegisterType((*QueryMethodDescriptor)(nil), "cosmos.base.reflection.v1beta1.QueryMethodDescriptor") - proto.RegisterType((*ListAllInterfacesRequest)(nil), "cosmos.base.reflection.v1beta1.ListAllInterfacesRequest") - proto.RegisterType((*ListAllInterfacesResponse)(nil), "cosmos.base.reflection.v1beta1.ListAllInterfacesResponse") - proto.RegisterType((*ListImplementationsRequest)(nil), "cosmos.base.reflection.v1beta1.ListImplementationsRequest") - proto.RegisterType((*ListImplementationsResponse)(nil), "cosmos.base.reflection.v1beta1.ListImplementationsResponse") +// GetTxDescriptorRequest is the request used for the GetTxDescriptor RPC +type GetTxDescriptorRequest struct { } -func init() { - proto.RegisterFile("cosmos/base/reflection/v1beta1/reflection.proto", fileDescriptor_d48c054165687f5c) +func (m *GetTxDescriptorRequest) Reset() { *m = GetTxDescriptorRequest{} } +func (m *GetTxDescriptorRequest) String() string { return proto.CompactTextString(m) } +func (*GetTxDescriptorRequest) ProtoMessage() {} +func (*GetTxDescriptorRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{22} } - -var fileDescriptor_d48c054165687f5c = []byte{ - // 1135 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x4b, 0x73, 0xdb, 0x54, - 0x14, 0x8e, 0xec, 0xa4, 0x6d, 0x4e, 0xea, 0xb8, 0xbd, 0x6d, 0x12, 0xc7, 0x04, 0x13, 0x94, 0x01, - 0x02, 0xb4, 0x36, 0x75, 0xda, 0xf0, 0x1c, 0xc0, 0x4d, 0x79, 0x64, 0x68, 0x20, 0x38, 0x61, 0x3a, - 0x03, 0x14, 0x8d, 0x2c, 0x5d, 0xcb, 0x77, 0xb0, 0x74, 0x15, 0x5d, 0x39, 0xa4, 0xc3, 0xb0, 0x61, - 0xa6, 0x7b, 0x18, 0x76, 0xfc, 0x0a, 0x16, 0x2c, 0xe9, 0x9e, 0x65, 0x67, 0xd8, 0xb0, 0x64, 0x12, - 0x7e, 0x04, 0x4b, 0xe6, 0x3e, 0x24, 0x4b, 0x89, 0x6c, 0xb9, 0x5d, 0x25, 0x3a, 0xe7, 0xfb, 0x3e, - 0x9d, 0xd7, 0x3d, 0x57, 0x86, 0x86, 0x45, 0x99, 0x4b, 0x59, 0xa3, 0x63, 0x32, 0xdc, 0x08, 0x70, - 0xb7, 0x8f, 0xad, 0x90, 0x50, 0xaf, 0x71, 0x78, 0xa3, 0x83, 0x43, 0xf3, 0x46, 0xc2, 0x54, 0xf7, - 0x03, 0x1a, 0x52, 0x54, 0x93, 0x84, 0x3a, 0x27, 0xd4, 0x13, 0x5e, 0x45, 0xa8, 0xae, 0x38, 0x94, - 0x3a, 0x7d, 0xdc, 0x30, 0x7d, 0xd2, 0x30, 0x3d, 0x8f, 0x86, 0x26, 0x77, 0x33, 0xc9, 0xd6, 0x7f, - 0x2d, 0x42, 0xa9, 0xe5, 0xfb, 0x77, 0x30, 0xb3, 0x02, 0xe2, 0x87, 0x34, 0x40, 0x1f, 0xc0, 0x8c, - 0xd5, 0x33, 0x89, 0x57, 0x29, 0xac, 0x6a, 0xeb, 0x73, 0xcd, 0x46, 0x7d, 0xbc, 0x7e, 0x7d, 0x8b, - 0x83, 0x87, 0xfc, 0xb6, 0x64, 0x0b, 0x19, 0x6a, 0x63, 0xab, 0x52, 0x9c, 0x50, 0x86, 0x83, 0x53, - 0x32, 0xdc, 0x80, 0xee, 0x43, 0xc9, 0xa2, 0x5e, 0x97, 0x38, 0x83, 0x40, 0xc4, 0x5d, 0x99, 0x16, - 0x72, 0xaf, 0xe7, 0xcb, 0x25, 0x48, 0x09, 0xd9, 0xb4, 0x1a, 0xfa, 0x06, 0xe6, 0x0f, 0x06, 0x38, - 0x78, 0x60, 0x30, 0x1c, 0x1c, 0x12, 0x0b, 0xb3, 0xca, 0xcc, 0x64, 0xfa, 0x9f, 0x73, 0xd6, 0x9e, - 0x22, 0x25, 0xf5, 0x0f, 0x92, 0x0e, 0xf4, 0x0e, 0x14, 0xc2, 0xa3, 0xca, 0x39, 0xa1, 0x79, 0x2d, - 0x4f, 0x73, 0xff, 0x28, 0x21, 0x54, 0x08, 0x8f, 0xf4, 0xdf, 0x35, 0xb8, 0x98, 0x34, 0xa2, 0x2a, - 0x5c, 0xe8, 0x0e, 0xfa, 0x7d, 0xcf, 0x74, 0x71, 0x45, 0x5b, 0xd5, 0xd6, 0x67, 0xdb, 0xf1, 0x33, - 0x2f, 0xb8, 0x39, 0x08, 0x7b, 0x13, 0xf7, 0xad, 0xc5, 0xc1, 0xc9, 0x82, 0x0b, 0x36, 0x6a, 0xc1, - 0xb4, 0xcb, 0x1c, 0x56, 0x29, 0xae, 0x16, 0xd7, 0xe7, 0x9a, 0xd7, 0xf3, 0x54, 0x76, 0x98, 0x93, - 0xd0, 0x10, 0x54, 0xdd, 0x81, 0xf2, 0x29, 0x71, 0xb4, 0x0f, 0xc0, 0x88, 0xe3, 0x19, 0x2e, 0xb5, - 0x31, 0xab, 0x68, 0x42, 0xfb, 0x56, 0x9e, 0xf6, 0x1e, 0x71, 0x3c, 0xe2, 0x39, 0x3b, 0xd4, 0xc6, - 0x89, 0x77, 0xcc, 0x72, 0x21, 0x6e, 0x63, 0xfa, 0xcf, 0x1a, 0x2c, 0x64, 0x82, 0x10, 0x82, 0xe9, - 0x44, 0x91, 0xc4, 0xff, 0x68, 0x11, 0xce, 0x79, 0x03, 0xb7, 0x83, 0x03, 0x51, 0xa1, 0x99, 0xb6, - 0x7a, 0x42, 0x77, 0x61, 0x4d, 0xa4, 0x6e, 0x10, 0xaf, 0x4b, 0x0d, 0x3f, 0xa0, 0x87, 0xc4, 0xc6, - 0x81, 0xe1, 0xe2, 0xb0, 0x47, 0x6d, 0x23, 0xae, 0x77, 0x51, 0x48, 0x3d, 0x27, 0xa0, 0xdb, 0x5e, - 0x97, 0xee, 0x2a, 0xe0, 0x8e, 0xc0, 0x7d, 0xa8, 0x60, 0xfa, 0xf3, 0x50, 0x3e, 0x75, 0x22, 0xd0, - 0x3c, 0x14, 0x88, 0xad, 0x42, 0x29, 0x10, 0x5b, 0xef, 0x42, 0xf9, 0xd4, 0xb4, 0xa3, 0x3d, 0x00, - 0xe2, 0x85, 0x38, 0xe8, 0x9a, 0x56, 0x5c, 0x9f, 0x8d, 0xbc, 0xfa, 0x6c, 0x47, 0x8c, 0x44, 0x75, - 0x12, 0x32, 0xfa, 0x6f, 0x05, 0xb8, 0x92, 0x81, 0x19, 0x3b, 0x45, 0x0f, 0x35, 0x58, 0x89, 0x25, - 0x0c, 0xd3, 0xb2, 0xb0, 0x1f, 0x12, 0xcf, 0x31, 0x5c, 0xcc, 0x98, 0xe9, 0x60, 0x56, 0x29, 0x88, - 0xd8, 0xb6, 0x26, 0x8e, 0xad, 0x15, 0x49, 0xec, 0x48, 0x85, 0x44, 0xac, 0x55, 0x32, 0x0a, 0xc4, - 0xd0, 0x00, 0x16, 0x87, 0x61, 0x10, 0xd7, 0xef, 0x63, 0x17, 0xf3, 0xe7, 0x68, 0x30, 0xdf, 0x9d, - 0x38, 0x80, 0xed, 0x21, 0x39, 0xf1, 0xee, 0x05, 0x92, 0xe1, 0x67, 0xfa, 0x3d, 0xa8, 0x8d, 0x27, - 0x8e, 0x2d, 0xde, 0x32, 0x5c, 0x08, 0x1f, 0xf8, 0xd8, 0x18, 0x04, 0x7d, 0x31, 0x63, 0xb3, 0xed, - 0xf3, 0xfc, 0xf9, 0x8b, 0xa0, 0xaf, 0x7f, 0x07, 0x6b, 0x13, 0x94, 0x64, 0xac, 0xfa, 0x4d, 0x58, - 0xec, 0x12, 0xdc, 0xb7, 0x0d, 0x3b, 0xc6, 0x1b, 0xdc, 0x21, 0x7b, 0x32, 0xdb, 0xbe, 0x2a, 0xbc, - 0x43, 0xb1, 0x4f, 0xb9, 0x4f, 0xff, 0x1a, 0x96, 0x46, 0xec, 0x42, 0xd4, 0x82, 0x67, 0x3b, 0xd8, - 0xea, 0x6d, 0x34, 0x79, 0x9f, 0xe9, 0xc0, 0x0b, 0x0d, 0xd3, 0xb6, 0x03, 0xcc, 0x98, 0xe1, 0x07, - 0xb8, 0x4b, 0x8e, 0x54, 0x04, 0x55, 0x09, 0x6a, 0x49, 0x4c, 0x4b, 0x42, 0x76, 0x05, 0x42, 0xa7, - 0x50, 0x4a, 0x6d, 0x00, 0x74, 0x0f, 0xe6, 0xd4, 0x2a, 0x35, 0x5c, 0xe6, 0x08, 0x85, 0xb9, 0xe6, - 0xcd, 0xdc, 0x93, 0x2e, 0x29, 0x29, 0xa9, 0x8f, 0xa7, 0xda, 0xc0, 0x62, 0xfb, 0xed, 0x19, 0x28, - 0xba, 0xcc, 0xd1, 0x1f, 0x69, 0x70, 0x35, 0x0b, 0x8d, 0x5e, 0x86, 0x4b, 0x01, 0x3e, 0x18, 0x60, - 0x16, 0x1a, 0xa7, 0x2a, 0x58, 0x56, 0xf6, 0xe8, 0x88, 0xa2, 0x35, 0x28, 0x45, 0xd0, 0x80, 0x0e, - 0x42, 0xac, 0x7a, 0x75, 0x51, 0x19, 0xdb, 0xdc, 0x86, 0xd6, 0x87, 0x7a, 0x71, 0x4f, 0xe5, 0x0a, - 0x98, 0x57, 0xf6, 0x7d, 0xd9, 0x5a, 0xf4, 0x2a, 0x5c, 0x0e, 0x30, 0xf3, 0xa9, 0xc7, 0xf0, 0xf0, - 0xd5, 0xd3, 0x02, 0x7a, 0x29, 0x72, 0xc4, 0xeb, 0x61, 0x19, 0x96, 0x3e, 0xc2, 0x61, 0xea, 0xc6, - 0x6d, 0x4b, 0x39, 0xfd, 0x2b, 0xa8, 0x9c, 0x75, 0x49, 0x3a, 0x7a, 0x0f, 0x8a, 0xa6, 0xef, 0xab, - 0x72, 0xe6, 0x2e, 0xe5, 0xb4, 0x06, 0x67, 0xea, 0x47, 0xb0, 0x34, 0xe2, 0xca, 0x42, 0xf7, 0xcf, - 0xdc, 0x81, 0x72, 0xff, 0x6c, 0x3e, 0xc9, 0x1d, 0x38, 0xf2, 0x0a, 0xd4, 0x1f, 0x6a, 0xb0, 0x98, - 0x8d, 0x1c, 0x3b, 0xed, 0x9f, 0xc1, 0x79, 0xb9, 0x81, 0xa3, 0x95, 0x73, 0x6b, 0xa2, 0x70, 0xe4, - 0x36, 0x4e, 0x44, 0x13, 0xa9, 0xe8, 0x7b, 0xb0, 0x90, 0x89, 0xc8, 0xbc, 0x2b, 0x5e, 0x84, 0x32, - 0x8f, 0xc4, 0x90, 0x85, 0xf1, 0xcd, 0xb0, 0xa7, 0x86, 0xa4, 0xc4, 0xcd, 0x42, 0x67, 0xd7, 0x0c, - 0x7b, 0x7a, 0x15, 0x2a, 0x77, 0x09, 0x0b, 0x5b, 0xfd, 0x7e, 0x7c, 0xba, 0x59, 0xd4, 0xcf, 0x3b, - 0xb0, 0x9c, 0xe1, 0x53, 0x0d, 0x7d, 0x09, 0xca, 0xc3, 0xfd, 0x26, 0x4f, 0xb1, 0x26, 0x4e, 0xf1, - 0x7c, 0x6c, 0x96, 0xe7, 0x77, 0x0b, 0xaa, 0x5c, 0x25, 0x5e, 0x46, 0xf2, 0xeb, 0x4d, 0xbd, 0x03, - 0xbd, 0x00, 0xf3, 0x69, 0x19, 0x95, 0x45, 0x29, 0xa5, 0xa2, 0x1b, 0xf0, 0x4c, 0xa6, 0x88, 0x0a, - 0xe6, 0x7d, 0x58, 0x21, 0x29, 0x57, 0xb4, 0xee, 0x53, 0x91, 0x55, 0xd3, 0x18, 0xb5, 0xbc, 0x44, - 0x94, 0xcd, 0xff, 0xa6, 0xe1, 0x72, 0x3b, 0x6e, 0x89, 0xea, 0x34, 0x7a, 0xa4, 0xc1, 0xa5, 0xd3, - 0x23, 0x8d, 0x72, 0x3f, 0xad, 0x46, 0x9c, 0x8f, 0xea, 0x1b, 0x4f, 0x4e, 0x94, 0xf9, 0xe9, 0x9b, - 0x3f, 0xfe, 0xf5, 0xef, 0x2f, 0x85, 0xd7, 0x50, 0x3d, 0xef, 0xe3, 0xda, 0xf4, 0xfd, 0xc4, 0x76, - 0x45, 0x7f, 0x68, 0x70, 0xf9, 0x4c, 0x0b, 0x51, 0x6e, 0x1c, 0xa3, 0x26, 0xa2, 0xfa, 0xe6, 0x53, - 0x30, 0x55, 0x0a, 0x4d, 0x91, 0xc2, 0x35, 0xf4, 0x4a, 0x5e, 0x0a, 0xc3, 0xfb, 0x1f, 0x9d, 0x68, - 0x70, 0x25, 0xa3, 0xed, 0xe8, 0xad, 0x49, 0xc2, 0xc8, 0x1e, 0xb8, 0xea, 0xdb, 0x4f, 0xc5, 0x55, - 0x49, 0xec, 0x89, 0x24, 0x76, 0xd0, 0x27, 0x93, 0x27, 0xd1, 0xf8, 0x3e, 0x3d, 0xdf, 0x3f, 0x34, - 0xd2, 0x53, 0xc8, 0x6e, 0xef, 0xfe, 0x79, 0x5c, 0xd3, 0x1e, 0x1f, 0xd7, 0xb4, 0x7f, 0x8e, 0x6b, - 0xda, 0x4f, 0x27, 0xb5, 0xa9, 0xc7, 0x27, 0xb5, 0xa9, 0xbf, 0x4f, 0x6a, 0x53, 0x5f, 0x6e, 0x3a, - 0x24, 0xec, 0x0d, 0x3a, 0x75, 0x8b, 0xba, 0xd1, 0x0b, 0xe5, 0x9f, 0xeb, 0xcc, 0xfe, 0xb6, 0xc1, - 0xb7, 0x1d, 0x0e, 0x1a, 0x4e, 0xe0, 0x5b, 0xbc, 0xef, 0xc3, 0x28, 0x3a, 0xe7, 0xc4, 0x4f, 0xa3, - 0x8d, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x43, 0x25, 0x78, 0x65, 0x8b, 0x0d, 0x00, 0x00, +func (m *GetTxDescriptorRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetTxDescriptorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetTxDescriptorRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetTxDescriptorRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetTxDescriptorRequest.Merge(m, src) +} +func (m *GetTxDescriptorRequest) XXX_Size() int { + return m.Size() +} +func (m *GetTxDescriptorRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetTxDescriptorRequest.DiscardUnknown(m) } -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn +var xxx_messageInfo_GetTxDescriptorRequest proto.InternalMessageInfo -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 +// GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC +type GetTxDescriptorResponse struct { + // tx provides information on msgs that can be forwarded to the application + // alongside the accepted transaction protobuf type + Tx *TxDescriptor `protobuf:"bytes,1,opt,name=tx,proto3" json:"tx,omitempty"` +} -// ReflectionServiceClient is the client API for ReflectionService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type ReflectionServiceClient interface { - // GetAppDescriptor returns the full cosmos application descriptor - GetAppDescriptor(ctx context.Context, in *GetAppDescriptorRequest, opts ...grpc.CallOption) (*GetAppDescriptorResponse, error) - // ListAllInterfaces lists all the interfaces registered in the interface - // registry. - ListAllInterfaces(ctx context.Context, in *ListAllInterfacesRequest, opts ...grpc.CallOption) (*ListAllInterfacesResponse, error) - // ListImplementations list all the concrete types that implement a given - // interface. - ListImplementations(ctx context.Context, in *ListImplementationsRequest, opts ...grpc.CallOption) (*ListImplementationsResponse, error) +func (m *GetTxDescriptorResponse) Reset() { *m = GetTxDescriptorResponse{} } +func (m *GetTxDescriptorResponse) String() string { return proto.CompactTextString(m) } +func (*GetTxDescriptorResponse) ProtoMessage() {} +func (*GetTxDescriptorResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{23} } - -type reflectionServiceClient struct { - cc grpc1.ClientConn +func (m *GetTxDescriptorResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } - -func NewReflectionServiceClient(cc grpc1.ClientConn) ReflectionServiceClient { - return &reflectionServiceClient{cc} +func (m *GetTxDescriptorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetTxDescriptorResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetTxDescriptorResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetTxDescriptorResponse.Merge(m, src) +} +func (m *GetTxDescriptorResponse) XXX_Size() int { + return m.Size() +} +func (m *GetTxDescriptorResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetTxDescriptorResponse.DiscardUnknown(m) } -func (c *reflectionServiceClient) GetAppDescriptor(ctx context.Context, in *GetAppDescriptorRequest, opts ...grpc.CallOption) (*GetAppDescriptorResponse, error) { - out := new(GetAppDescriptorResponse) - err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetAppDescriptor", in, out, opts...) - if err != nil { - return nil, err +var xxx_messageInfo_GetTxDescriptorResponse proto.InternalMessageInfo + +func (m *GetTxDescriptorResponse) GetTx() *TxDescriptor { + if m != nil { + return m.Tx } - return out, nil + return nil } -func (c *reflectionServiceClient) ListAllInterfaces(ctx context.Context, in *ListAllInterfacesRequest, opts ...grpc.CallOption) (*ListAllInterfacesResponse, error) { - out := new(ListAllInterfacesResponse) - err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/ListAllInterfaces", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil +// QueryServicesDescriptor contains the list of cosmos-sdk queriable services +type QueryServicesDescriptor struct { + // query_services is a list of cosmos-sdk QueryServiceDescriptor + QueryServices []*QueryServiceDescriptor `protobuf:"bytes,1,rep,name=query_services,json=queryServices,proto3" json:"query_services,omitempty"` } -func (c *reflectionServiceClient) ListImplementations(ctx context.Context, in *ListImplementationsRequest, opts ...grpc.CallOption) (*ListImplementationsResponse, error) { - out := new(ListImplementationsResponse) - err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/ListImplementations", in, out, opts...) - if err != nil { - return nil, err +func (m *QueryServicesDescriptor) Reset() { *m = QueryServicesDescriptor{} } +func (m *QueryServicesDescriptor) String() string { return proto.CompactTextString(m) } +func (*QueryServicesDescriptor) ProtoMessage() {} +func (*QueryServicesDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{24} +} +func (m *QueryServicesDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryServicesDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryServicesDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return out, nil +} +func (m *QueryServicesDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryServicesDescriptor.Merge(m, src) +} +func (m *QueryServicesDescriptor) XXX_Size() int { + return m.Size() +} +func (m *QueryServicesDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_QueryServicesDescriptor.DiscardUnknown(m) } -// ReflectionServiceServer is the server API for ReflectionService service. -type ReflectionServiceServer interface { - // GetAppDescriptor returns the full cosmos application descriptor - GetAppDescriptor(context.Context, *GetAppDescriptorRequest) (*GetAppDescriptorResponse, error) - // ListAllInterfaces lists all the interfaces registered in the interface - // registry. - ListAllInterfaces(context.Context, *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) - // ListImplementations list all the concrete types that implement a given - // interface. - ListImplementations(context.Context, *ListImplementationsRequest) (*ListImplementationsResponse, error) +var xxx_messageInfo_QueryServicesDescriptor proto.InternalMessageInfo + +func (m *QueryServicesDescriptor) GetQueryServices() []*QueryServiceDescriptor { + if m != nil { + return m.QueryServices + } + return nil } -// UnimplementedReflectionServiceServer can be embedded to have forward compatible implementations. -type UnimplementedReflectionServiceServer struct { +// QueryServiceDescriptor describes a cosmos-sdk queryable service +type QueryServiceDescriptor struct { + // fullname is the protobuf fullname of the service descriptor + Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` + // methods provides a list of query service methods + Methods []*QueryMethodDescriptor `protobuf:"bytes,2,rep,name=methods,proto3" json:"methods,omitempty"` } -func (*UnimplementedReflectionServiceServer) GetAppDescriptor(ctx context.Context, req *GetAppDescriptorRequest) (*GetAppDescriptorResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetAppDescriptor not implemented") +func (m *QueryServiceDescriptor) Reset() { *m = QueryServiceDescriptor{} } +func (m *QueryServiceDescriptor) String() string { return proto.CompactTextString(m) } +func (*QueryServiceDescriptor) ProtoMessage() {} +func (*QueryServiceDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{25} } -func (*UnimplementedReflectionServiceServer) ListAllInterfaces(ctx context.Context, req *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListAllInterfaces not implemented") +func (m *QueryServiceDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } -func (*UnimplementedReflectionServiceServer) ListImplementations(ctx context.Context, req *ListImplementationsRequest) (*ListImplementationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListImplementations not implemented") +func (m *QueryServiceDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryServiceDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } } - -func RegisterReflectionServiceServer(s grpc1.Server, srv ReflectionServiceServer) { - s.RegisterService(&_ReflectionService_serviceDesc, srv) +func (m *QueryServiceDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryServiceDescriptor.Merge(m, src) +} +func (m *QueryServiceDescriptor) XXX_Size() int { + return m.Size() +} +func (m *QueryServiceDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_QueryServiceDescriptor.DiscardUnknown(m) } -func _ReflectionService_GetAppDescriptor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetAppDescriptorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReflectionServiceServer).GetAppDescriptor(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetAppDescriptor", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReflectionServiceServer).GetAppDescriptor(ctx, req.(*GetAppDescriptorRequest)) +var xxx_messageInfo_QueryServiceDescriptor proto.InternalMessageInfo + +func (m *QueryServiceDescriptor) GetFullname() string { + if m != nil { + return m.Fullname } - return interceptor(ctx, in, info, handler) + return "" } -func _ReflectionService_ListAllInterfaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListAllInterfacesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReflectionServiceServer).ListAllInterfaces(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/ListAllInterfaces", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReflectionServiceServer).ListAllInterfaces(ctx, req.(*ListAllInterfacesRequest)) +func (m *QueryServiceDescriptor) GetMethods() []*QueryMethodDescriptor { + if m != nil { + return m.Methods } - return interceptor(ctx, in, info, handler) + return nil } -func _ReflectionService_ListImplementations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListImplementationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReflectionServiceServer).ListImplementations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/ListImplementations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReflectionServiceServer).ListImplementations(ctx, req.(*ListImplementationsRequest)) +// QueryMethodDescriptor describes a queryable method of a query service +// no other info is provided beside method name and tendermint queryable path +// because it would be redundant with the grpc reflection service +type QueryMethodDescriptor struct { + // name is the protobuf name (not fullname) of the method + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // full_query_path is the path that can be used to query + // this method via tendermint abci.Query + FullQueryPath string `protobuf:"bytes,2,opt,name=full_query_path,json=fullQueryPath,proto3" json:"full_query_path,omitempty"` +} + +func (m *QueryMethodDescriptor) Reset() { *m = QueryMethodDescriptor{} } +func (m *QueryMethodDescriptor) String() string { return proto.CompactTextString(m) } +func (*QueryMethodDescriptor) ProtoMessage() {} +func (*QueryMethodDescriptor) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{26} +} +func (m *QueryMethodDescriptor) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryMethodDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryMethodDescriptor.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return interceptor(ctx, in, info, handler) +} +func (m *QueryMethodDescriptor) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryMethodDescriptor.Merge(m, src) +} +func (m *QueryMethodDescriptor) XXX_Size() int { + return m.Size() +} +func (m *QueryMethodDescriptor) XXX_DiscardUnknown() { + xxx_messageInfo_QueryMethodDescriptor.DiscardUnknown(m) } -var _ReflectionService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "cosmos.base.reflection.v1beta1.ReflectionService", - HandlerType: (*ReflectionServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetAppDescriptor", - Handler: _ReflectionService_GetAppDescriptor_Handler, - }, - { - MethodName: "ListAllInterfaces", - Handler: _ReflectionService_ListAllInterfaces_Handler, - }, - { - MethodName: "ListImplementations", - Handler: _ReflectionService_ListImplementations_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "cosmos/base/reflection/v1beta1/reflection.proto", +var xxx_messageInfo_QueryMethodDescriptor proto.InternalMessageInfo + +func (m *QueryMethodDescriptor) GetName() string { + if m != nil { + return m.Name + } + return "" } -func (m *AppDescriptor) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +func (m *QueryMethodDescriptor) GetFullQueryPath() string { + if m != nil { + return m.FullQueryPath } - return dAtA[:n], nil + return "" } -func (m *AppDescriptor) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +// ListAllInterfacesRequest is the request type of the ListAllInterfaces RPC. +type ListAllInterfacesRequest struct { } -func (m *AppDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Tx != nil { - { - size, err := m.Tx.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x32 - } - if m.QueryServices != nil { - { - size, err := m.QueryServices.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - if m.Configuration != nil { - { - size, err := m.Configuration.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.Codec != nil { - { - size, err := m.Codec.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if m.Chain != nil { - { - size, err := m.Chain.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) +func (m *ListAllInterfacesRequest) Reset() { *m = ListAllInterfacesRequest{} } +func (m *ListAllInterfacesRequest) String() string { return proto.CompactTextString(m) } +func (*ListAllInterfacesRequest) ProtoMessage() {} +func (*ListAllInterfacesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{27} +} +func (m *ListAllInterfacesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListAllInterfacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListAllInterfacesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err } - i-- - dAtA[i] = 0x12 + return b[:n], nil } - return len(dAtA) - i, nil } - -func (m *TxDescriptor) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +func (m *ListAllInterfacesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListAllInterfacesRequest.Merge(m, src) +} +func (m *ListAllInterfacesRequest) XXX_Size() int { + return m.Size() +} +func (m *ListAllInterfacesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListAllInterfacesRequest.DiscardUnknown(m) } -func (m *TxDescriptor) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +var xxx_messageInfo_ListAllInterfacesRequest proto.InternalMessageInfo + +// ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC. +type ListAllInterfacesResponse struct { + // interface_names is an array of all the registered interfaces. + InterfaceNames []string `protobuf:"bytes,1,rep,name=interface_names,json=interfaceNames,proto3" json:"interface_names,omitempty"` } -func (m *TxDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Msgs) > 0 { - for iNdEx := len(m.Msgs) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Msgs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - } - if m.Authn != nil { - { - size, err := m.Authn.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) +func (m *ListAllInterfacesResponse) Reset() { *m = ListAllInterfacesResponse{} } +func (m *ListAllInterfacesResponse) String() string { return proto.CompactTextString(m) } +func (*ListAllInterfacesResponse) ProtoMessage() {} +func (*ListAllInterfacesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{28} +} +func (m *ListAllInterfacesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListAllInterfacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListAllInterfacesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err } - i-- - dAtA[i] = 0x12 - } - if len(m.Fullname) > 0 { - i -= len(m.Fullname) - copy(dAtA[i:], m.Fullname) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) - i-- - dAtA[i] = 0xa + return b[:n], nil } - return len(dAtA) - i, nil +} +func (m *ListAllInterfacesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListAllInterfacesResponse.Merge(m, src) +} +func (m *ListAllInterfacesResponse) XXX_Size() int { + return m.Size() +} +func (m *ListAllInterfacesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListAllInterfacesResponse.DiscardUnknown(m) } -func (m *AuthnDescriptor) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +var xxx_messageInfo_ListAllInterfacesResponse proto.InternalMessageInfo + +func (m *ListAllInterfacesResponse) GetInterfaceNames() []string { + if m != nil { + return m.InterfaceNames } - return dAtA[:n], nil + return nil } -func (m *AuthnDescriptor) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +// ListImplementationsRequest is the request type of the ListImplementations +// RPC. +type ListImplementationsRequest struct { + // interface_name defines the interface to query the implementations for. + InterfaceName string `protobuf:"bytes,1,opt,name=interface_name,json=interfaceName,proto3" json:"interface_name,omitempty"` } -func (m *AuthnDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.SignModes) > 0 { - for iNdEx := len(m.SignModes) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.SignModes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa +func (m *ListImplementationsRequest) Reset() { *m = ListImplementationsRequest{} } +func (m *ListImplementationsRequest) String() string { return proto.CompactTextString(m) } +func (*ListImplementationsRequest) ProtoMessage() {} +func (*ListImplementationsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{29} +} +func (m *ListImplementationsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListImplementationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListImplementationsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err } + return b[:n], nil } - return len(dAtA) - i, nil +} +func (m *ListImplementationsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListImplementationsRequest.Merge(m, src) +} +func (m *ListImplementationsRequest) XXX_Size() int { + return m.Size() +} +func (m *ListImplementationsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListImplementationsRequest.DiscardUnknown(m) } -func (m *SigningModeDescriptor) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +var xxx_messageInfo_ListImplementationsRequest proto.InternalMessageInfo + +func (m *ListImplementationsRequest) GetInterfaceName() string { + if m != nil { + return m.InterfaceName } - return dAtA[:n], nil + return "" } -func (m *SigningModeDescriptor) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +// ListImplementationsResponse is the response type of the ListImplementations +// RPC. +type ListImplementationsResponse struct { + ImplementationMessageNames []string `protobuf:"bytes,1,rep,name=implementation_message_names,json=implementationMessageNames,proto3" json:"implementation_message_names,omitempty"` } -func (m *SigningModeDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.AuthnInfoProviderMethodFullname) > 0 { - i -= len(m.AuthnInfoProviderMethodFullname) - copy(dAtA[i:], m.AuthnInfoProviderMethodFullname) - i = encodeVarintReflection(dAtA, i, uint64(len(m.AuthnInfoProviderMethodFullname))) - i-- - dAtA[i] = 0x1a - } - if m.Number != 0 { - i = encodeVarintReflection(dAtA, i, uint64(m.Number)) - i-- - dAtA[i] = 0x10 - } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0xa +func (m *ListImplementationsResponse) Reset() { *m = ListImplementationsResponse{} } +func (m *ListImplementationsResponse) String() string { return proto.CompactTextString(m) } +func (*ListImplementationsResponse) ProtoMessage() {} +func (*ListImplementationsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{30} +} +func (m *ListImplementationsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListImplementationsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListImplementationsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil } - return len(dAtA) - i, nil +} +func (m *ListImplementationsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListImplementationsResponse.Merge(m, src) +} +func (m *ListImplementationsResponse) XXX_Size() int { + return m.Size() +} +func (m *ListImplementationsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListImplementationsResponse.DiscardUnknown(m) } -func (m *ChainDescriptor) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err +var xxx_messageInfo_ListImplementationsResponse proto.InternalMessageInfo + +func (m *ListImplementationsResponse) GetImplementationMessageNames() []string { + if m != nil { + return m.ImplementationMessageNames } - return dAtA[:n], nil + return nil } -func (m *ChainDescriptor) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func init() { + proto.RegisterType((*AppDescriptor)(nil), "cosmos.base.reflection.v1beta1.AppDescriptor") + proto.RegisterType((*TxDescriptor)(nil), "cosmos.base.reflection.v1beta1.TxDescriptor") + proto.RegisterType((*AuthnDescriptor)(nil), "cosmos.base.reflection.v1beta1.AuthnDescriptor") + proto.RegisterType((*SigningModeDescriptor)(nil), "cosmos.base.reflection.v1beta1.SigningModeDescriptor") + proto.RegisterType((*ChainDescriptor)(nil), "cosmos.base.reflection.v1beta1.ChainDescriptor") + proto.RegisterType((*CodecDescriptor)(nil), "cosmos.base.reflection.v1beta1.CodecDescriptor") + proto.RegisterType((*InterfaceDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceDescriptor") + proto.RegisterType((*InterfaceImplementerDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceImplementerDescriptor") + proto.RegisterType((*InterfaceAcceptingMessageDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceAcceptingMessageDescriptor") + proto.RegisterType((*ConfigurationDescriptor)(nil), "cosmos.base.reflection.v1beta1.ConfigurationDescriptor") + proto.RegisterType((*MsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.MsgDescriptor") + proto.RegisterType((*ServiceMsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.ServiceMsgDescriptor") + proto.RegisterType((*GetAuthnDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetAuthnDescriptorRequest") + proto.RegisterType((*GetAuthnDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetAuthnDescriptorResponse") + proto.RegisterType((*GetChainDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetChainDescriptorRequest") + proto.RegisterType((*GetChainDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetChainDescriptorResponse") + proto.RegisterType((*GetCodecDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetCodecDescriptorRequest") + proto.RegisterType((*GetCodecDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetCodecDescriptorResponse") + proto.RegisterType((*GetConfigurationDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetConfigurationDescriptorRequest") + proto.RegisterType((*GetConfigurationDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetConfigurationDescriptorResponse") + proto.RegisterType((*GetQueryServicesDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetQueryServicesDescriptorRequest") + proto.RegisterType((*GetQueryServicesDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetQueryServicesDescriptorResponse") + proto.RegisterType((*GetTxDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetTxDescriptorRequest") + proto.RegisterType((*GetTxDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetTxDescriptorResponse") + proto.RegisterType((*QueryServicesDescriptor)(nil), "cosmos.base.reflection.v1beta1.QueryServicesDescriptor") + proto.RegisterType((*QueryServiceDescriptor)(nil), "cosmos.base.reflection.v1beta1.QueryServiceDescriptor") + proto.RegisterType((*QueryMethodDescriptor)(nil), "cosmos.base.reflection.v1beta1.QueryMethodDescriptor") + proto.RegisterType((*ListAllInterfacesRequest)(nil), "cosmos.base.reflection.v1beta1.ListAllInterfacesRequest") + proto.RegisterType((*ListAllInterfacesResponse)(nil), "cosmos.base.reflection.v1beta1.ListAllInterfacesResponse") + proto.RegisterType((*ListImplementationsRequest)(nil), "cosmos.base.reflection.v1beta1.ListImplementationsRequest") + proto.RegisterType((*ListImplementationsResponse)(nil), "cosmos.base.reflection.v1beta1.ListImplementationsResponse") } -func (m *ChainDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil +func init() { + proto.RegisterFile("cosmos/base/reflection/v1beta1/reflection.proto", fileDescriptor_d48c054165687f5c) } -func (m *CodecDescriptor) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil +var fileDescriptor_d48c054165687f5c = []byte{ + // 1363 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5d, 0x93, 0x13, 0x45, + 0x14, 0xdd, 0x49, 0x76, 0x17, 0xf6, 0x42, 0x36, 0xd0, 0xc0, 0x12, 0x06, 0x8c, 0x30, 0x5b, 0x2a, + 0x2a, 0x64, 0x8a, 0x05, 0x16, 0x41, 0x44, 0xc3, 0x87, 0x48, 0xc9, 0xca, 0x92, 0xc5, 0xa2, 0xca, + 0x12, 0xa7, 0x26, 0x33, 0x9d, 0x49, 0x97, 0x99, 0x0f, 0xa6, 0x67, 0x96, 0x50, 0x96, 0x2f, 0x56, + 0xf1, 0xae, 0xe5, 0x1f, 0xf1, 0x07, 0x68, 0x95, 0x8f, 0xf8, 0x46, 0x95, 0x2f, 0x3e, 0xea, 0xae, + 0x2f, 0xfa, 0x2b, 0xac, 0xe9, 0xee, 0x99, 0xcc, 0x64, 0x27, 0xc9, 0x6c, 0xd6, 0x27, 0x98, 0xbe, + 0xf7, 0x9e, 0x3e, 0xa7, 0xbb, 0xd3, 0xe7, 0xf6, 0x82, 0x6a, 0xb8, 0xd4, 0x76, 0xa9, 0xda, 0xd6, + 0x29, 0x56, 0x7d, 0xdc, 0xe9, 0x61, 0x23, 0x20, 0xae, 0xa3, 0x6e, 0x5e, 0x68, 0xe3, 0x40, 0xbf, + 0x90, 0x1a, 0x6a, 0x78, 0xbe, 0x1b, 0xb8, 0xa8, 0xce, 0x0b, 0x1a, 0x51, 0x41, 0x23, 0x15, 0x15, + 0x05, 0xf2, 0x29, 0xcb, 0x75, 0xad, 0x1e, 0x56, 0x75, 0x8f, 0xa8, 0xba, 0xe3, 0xb8, 0x81, 0x1e, + 0x85, 0x29, 0xaf, 0x56, 0xfe, 0x2a, 0x43, 0xa5, 0xe9, 0x79, 0xb7, 0x31, 0x35, 0x7c, 0xe2, 0x05, + 0xae, 0x8f, 0xee, 0xc0, 0x9c, 0x1e, 0x06, 0x5d, 0xa7, 0x26, 0x9d, 0x96, 0xce, 0x1e, 0x58, 0x51, + 0x1b, 0xe3, 0xf1, 0x1b, 0xcd, 0x28, 0x79, 0x50, 0xdf, 0xe2, 0xd5, 0x11, 0x8c, 0xd1, 0xd5, 0x89, + 0x53, 0x2b, 0x15, 0x83, 0xb9, 0x15, 0x25, 0xa7, 0x61, 0x58, 0x35, 0x83, 0x71, 0x4d, 0x6c, 0xd4, + 0xca, 0x05, 0x61, 0xa2, 0xe4, 0x0c, 0x4c, 0x34, 0x80, 0x9e, 0x40, 0xc5, 0x70, 0x9d, 0x0e, 0xb1, + 0x42, 0x9f, 0xc9, 0xaf, 0xcd, 0x32, 0xb8, 0x2b, 0x93, 0xe1, 0x52, 0x45, 0x29, 0xd8, 0x2c, 0x1a, + 0xfa, 0x0a, 0x16, 0x9f, 0x86, 0xd8, 0x7f, 0xae, 0x51, 0xec, 0x6f, 0x12, 0x03, 0xd3, 0xda, 0x5c, + 0x31, 0xfc, 0x87, 0x51, 0xd5, 0x86, 0x28, 0x4a, 0xe3, 0x3f, 0x4d, 0x07, 0xd0, 0x75, 0x28, 0x05, + 0xfd, 0xda, 0x3c, 0xc3, 0x3c, 0x37, 0x09, 0xf3, 0x51, 0x3f, 0x05, 0x54, 0x0a, 0xfa, 0x8a, 0x0d, + 0x07, 0xd3, 0x63, 0x48, 0x86, 0xfd, 0x9d, 0xb0, 0xd7, 0x73, 0x74, 0x1b, 0xb3, 0x4d, 0x5e, 0x68, + 0x25, 0xdf, 0xa8, 0x09, 0xb3, 0x36, 0xb5, 0x68, 0xad, 0x74, 0xba, 0x7c, 0xf6, 0xc0, 0xca, 0xf9, + 0x49, 0x73, 0xad, 0x51, 0x2b, 0x35, 0x19, 0x2b, 0x55, 0x2c, 0xa8, 0x0e, 0x9d, 0x09, 0xf4, 0x08, + 0x80, 0x12, 0xcb, 0xd1, 0x6c, 0xd7, 0xc4, 0xb4, 0x26, 0x31, 0xec, 0xcb, 0x93, 0xb0, 0x37, 0x88, + 0xe5, 0x10, 0xc7, 0x5a, 0x73, 0x4d, 0x9c, 0x9a, 0x63, 0x21, 0x02, 0x8a, 0xc6, 0xa8, 0xf2, 0x83, + 0x04, 0xc7, 0x72, 0x93, 0x10, 0x82, 0xd9, 0x94, 0x3a, 0xf6, 0x7f, 0xb4, 0x04, 0xf3, 0x4e, 0x68, + 0xb7, 0xb1, 0xcf, 0x4e, 0xe4, 0x5c, 0x4b, 0x7c, 0xa1, 0xfb, 0xb0, 0xcc, 0x4e, 0xac, 0x46, 0x9c, + 0x8e, 0xab, 0x79, 0xbe, 0xbb, 0x49, 0x4c, 0xec, 0x6b, 0x36, 0x0e, 0xba, 0xae, 0xa9, 0x25, 0x0b, + 0x55, 0x66, 0x50, 0xaf, 0xb3, 0xd4, 0x7b, 0x4e, 0xc7, 0x5d, 0x17, 0x89, 0x6b, 0x2c, 0xef, 0x63, + 0x91, 0xa6, 0x9c, 0x81, 0xea, 0xd0, 0x49, 0x46, 0x8b, 0x50, 0x22, 0xa6, 0xa0, 0x52, 0x22, 0xa6, + 0xd2, 0x81, 0xea, 0xd0, 0x29, 0x45, 0x1b, 0x00, 0xc4, 0x09, 0xb0, 0xdf, 0xd1, 0x8d, 0x64, 0x7d, + 0x2e, 0x4e, 0x5a, 0x9f, 0x7b, 0x71, 0x45, 0x6a, 0x75, 0x52, 0x30, 0xca, 0x4f, 0x25, 0x38, 0x92, + 0x93, 0x33, 0x76, 0xfb, 0x5f, 0x48, 0x70, 0x2a, 0x81, 0xd0, 0x74, 0xc3, 0xc0, 0x5e, 0x40, 0x1c, + 0x4b, 0xb3, 0x31, 0xa5, 0xba, 0x85, 0xe3, 0x73, 0x71, 0xab, 0x30, 0xb7, 0x66, 0x0c, 0xb1, 0xc6, + 0x11, 0x52, 0x5c, 0x65, 0x32, 0x2a, 0x89, 0xa2, 0x10, 0x96, 0x06, 0x34, 0x88, 0xed, 0xf5, 0xb0, + 0x8d, 0xa3, 0x6f, 0x5a, 0x2b, 0x33, 0x02, 0x37, 0x0a, 0x13, 0xb8, 0x37, 0x28, 0x4e, 0xcd, 0x7d, + 0x8c, 0xe4, 0xc4, 0xa9, 0xf2, 0x18, 0xea, 0xe3, 0x0b, 0xc7, 0x2e, 0xde, 0x09, 0xd8, 0x1f, 0x3c, + 0xf7, 0xb0, 0x16, 0xfa, 0x3d, 0x76, 0xc6, 0x16, 0x5a, 0xfb, 0xa2, 0xef, 0xcf, 0xfd, 0x9e, 0xf2, + 0x0c, 0x96, 0x0b, 0x2c, 0xc9, 0x58, 0xf4, 0x4b, 0xb0, 0xd4, 0x21, 0xb8, 0x67, 0x6a, 0x66, 0x92, + 0xaf, 0x45, 0x01, 0xbe, 0x27, 0x0b, 0xad, 0xa3, 0x2c, 0x3a, 0x00, 0xfb, 0x2c, 0x8a, 0x29, 0x5f, + 0xc2, 0xf1, 0x11, 0x77, 0x18, 0x6a, 0xc2, 0x6b, 0x6d, 0x6c, 0x74, 0x2f, 0xae, 0x44, 0xfb, 0xec, + 0x86, 0x4e, 0xa0, 0xe9, 0xa6, 0xe9, 0x63, 0x4a, 0x35, 0xcf, 0xc7, 0x1d, 0xd2, 0x17, 0x0c, 0x64, + 0x9e, 0xd4, 0xe4, 0x39, 0x4d, 0x9e, 0xb2, 0xce, 0x32, 0x14, 0x17, 0x2a, 0x99, 0x1b, 0x00, 0x3d, + 0x86, 0x03, 0xe2, 0x0a, 0xd4, 0x6c, 0x6a, 0x09, 0x0b, 0xb9, 0x34, 0xf1, 0x97, 0xce, 0x4b, 0x32, + 0x50, 0x9f, 0xcc, 0xb4, 0x80, 0x26, 0xe3, 0x37, 0xe7, 0xa0, 0x6c, 0x53, 0x4b, 0xf9, 0x45, 0x82, + 0xa3, 0x79, 0xd9, 0xe8, 0x6d, 0x38, 0xe4, 0xe3, 0xa7, 0x21, 0xa6, 0x81, 0x36, 0xb4, 0x82, 0x55, + 0x31, 0x1e, 0xff, 0x44, 0xd1, 0x32, 0x54, 0xe2, 0x54, 0xdf, 0x0d, 0x03, 0x2c, 0xf6, 0xea, 0xa0, + 0x18, 0x6c, 0x45, 0x63, 0xe8, 0xec, 0x00, 0x2f, 0xd9, 0x53, 0x7e, 0x05, 0x2c, 0x8a, 0xf1, 0x47, + 0x7c, 0x6b, 0xd1, 0xbb, 0x70, 0xd8, 0xc7, 0xd4, 0x73, 0x1d, 0x8a, 0x07, 0x53, 0xcf, 0xb2, 0xd4, + 0x43, 0x71, 0x20, 0xb9, 0x1e, 0x4e, 0xc2, 0x89, 0xbb, 0x38, 0x18, 0xb6, 0x4c, 0x0e, 0xa8, 0x18, + 0x20, 0xe7, 0x05, 0x39, 0xc4, 0xff, 0xe4, 0xcb, 0x82, 0xc1, 0xb0, 0xdb, 0x66, 0x18, 0xec, 0x08, + 0x0e, 0x18, 0x70, 0x4b, 0x97, 0xf6, 0x62, 0xe9, 0x31, 0x83, 0x21, 0xa3, 0xce, 0x32, 0x18, 0x0e, + 0xa6, 0x18, 0xb0, 0x6e, 0x40, 0xda, 0x4b, 0x37, 0xa0, 0x2c, 0xc3, 0x19, 0x36, 0x49, 0xbe, 0xb7, + 0x0b, 0x26, 0x21, 0x28, 0xe3, 0x92, 0x04, 0xa3, 0x07, 0x30, 0xcf, 0x5b, 0x01, 0x41, 0x69, 0xea, + 0x8e, 0x42, 0xc0, 0x08, 0x6e, 0xa3, 0xfa, 0x02, 0xc1, 0xed, 0x19, 0xe3, 0x36, 0x32, 0x49, 0x70, + 0x7b, 0x08, 0xfb, 0xa2, 0x36, 0x82, 0x30, 0x4b, 0xd9, 0x53, 0x3b, 0x12, 0xe3, 0x28, 0x35, 0x58, + 0xba, 0x8b, 0x83, 0x4c, 0x87, 0x21, 0x28, 0x3d, 0x86, 0xe3, 0x3b, 0x22, 0x82, 0x07, 0xef, 0x5e, + 0xa4, 0x29, 0xbb, 0x97, 0x3e, 0x1c, 0x1f, 0x41, 0x0b, 0x3d, 0xd9, 0xd1, 0x76, 0x71, 0xeb, 0x5c, + 0xdd, 0x8d, 0xce, 0x91, 0x5d, 0x97, 0xf2, 0x42, 0x82, 0xa5, 0xfc, 0xcc, 0xb1, 0x17, 0xf5, 0x03, + 0xd8, 0xc7, 0x9b, 0x87, 0xd8, 0x2d, 0x2f, 0x17, 0xa2, 0xc3, 0x1b, 0x89, 0xf4, 0xa2, 0x0b, 0x14, + 0x65, 0x03, 0x8e, 0xe5, 0x66, 0xe4, 0xb6, 0x39, 0x6f, 0x42, 0x35, 0x62, 0xa2, 0xf1, 0x85, 0xf1, + 0xf4, 0xa0, 0x2b, 0xee, 0xb7, 0x4a, 0x34, 0xcc, 0x70, 0xd6, 0xf5, 0xa0, 0xab, 0xc8, 0x50, 0xbb, + 0x4f, 0x68, 0xd0, 0xec, 0xf5, 0x12, 0x63, 0xa2, 0xf1, 0x5e, 0xde, 0x86, 0x13, 0x39, 0x31, 0xb1, + 0x9b, 0x6f, 0x41, 0x75, 0x60, 0xcd, 0xdc, 0x80, 0x24, 0x66, 0x40, 0x8b, 0xc9, 0x30, 0xb7, 0x9e, + 0x5b, 0x20, 0x47, 0x28, 0x89, 0x8f, 0xf2, 0x77, 0x87, 0x98, 0x03, 0xbd, 0x01, 0x8b, 0x59, 0x18, + 0xa1, 0xa2, 0x92, 0x41, 0x51, 0x34, 0x38, 0x99, 0x0b, 0x22, 0xc8, 0x7c, 0x04, 0xa7, 0x48, 0x26, + 0x14, 0x77, 0x2a, 0x19, 0x66, 0x72, 0x36, 0x47, 0xf8, 0x2e, 0x63, 0xb9, 0xf2, 0x6b, 0x05, 0x0e, + 0xb7, 0x92, 0x2d, 0x11, 0x3b, 0x8d, 0x7e, 0x93, 0x00, 0xed, 0xbc, 0x8b, 0xd1, 0xd5, 0x49, 0x3b, + 0x39, 0xf2, 0x72, 0x97, 0xaf, 0x4d, 0x53, 0xca, 0x55, 0x2a, 0xd7, 0xbf, 0xfb, 0xfd, 0xef, 0x1f, + 0x4b, 0xab, 0xe8, 0xd2, 0xa4, 0xc7, 0xa1, 0xee, 0x79, 0xa9, 0xf6, 0x40, 0xe5, 0x2f, 0x31, 0xa1, + 0x65, 0xb8, 0x2d, 0x2d, 0xa2, 0x25, 0xdf, 0x26, 0x0a, 0x69, 0x19, 0x61, 0x22, 0x53, 0x6b, 0xe1, + 0xcf, 0xc1, 0x58, 0xcb, 0x50, 0xff, 0x5c, 0x48, 0x4b, 0xae, 0xe1, 0x14, 0xd3, 0x92, 0x6f, 0x47, + 0xd3, 0x6b, 0x61, 0x6f, 0xd2, 0x7f, 0x24, 0xe1, 0x75, 0x23, 0xda, 0xb3, 0x42, 0xc4, 0xc6, 0x59, + 0x98, 0x7c, 0x73, 0x2f, 0x10, 0x42, 0xe3, 0x6d, 0xa6, 0xf1, 0x06, 0xba, 0xbe, 0x6b, 0x8d, 0xe9, + 0x07, 0xf2, 0xbf, 0x5c, 0xeb, 0xa8, 0x8b, 0xbc, 0x88, 0xd6, 0xf1, 0x96, 0x58, 0x48, 0xeb, 0x04, + 0xc3, 0x54, 0xee, 0x30, 0xad, 0x1f, 0xa2, 0x0f, 0x76, 0xa9, 0x35, 0x6b, 0x42, 0xe8, 0xa5, 0x04, + 0xd5, 0x21, 0x2f, 0x44, 0xab, 0x05, 0xe8, 0xe5, 0xd8, 0xaa, 0x7c, 0x65, 0xd7, 0x75, 0x7b, 0xdc, + 0xb7, 0xa0, 0x9f, 0xfa, 0x42, 0x3f, 0x4b, 0x70, 0x78, 0x87, 0x15, 0xa0, 0xf7, 0x26, 0x91, 0x1a, + 0xe5, 0x2c, 0xf2, 0xd5, 0x29, 0x2a, 0x85, 0xa0, 0x15, 0x26, 0xe8, 0x1c, 0x7a, 0x67, 0x92, 0xa0, + 0xc1, 0x13, 0x18, 0x6d, 0x4b, 0x70, 0x24, 0xc7, 0x3e, 0xd0, 0xb5, 0x22, 0x34, 0xf2, 0x8d, 0x4b, + 0x7e, 0x7f, 0xaa, 0x5a, 0x21, 0x62, 0x83, 0x89, 0x58, 0x43, 0x9f, 0x16, 0x17, 0xa1, 0x7e, 0x93, + 0xf5, 0xc9, 0x6f, 0xd5, 0xac, 0x9b, 0xd1, 0x9b, 0xeb, 0x2f, 0xb7, 0xea, 0xd2, 0xab, 0xad, 0xba, + 0xf4, 0xe7, 0x56, 0x5d, 0xfa, 0x7e, 0xbb, 0x3e, 0xf3, 0x6a, 0xbb, 0x3e, 0xf3, 0xc7, 0x76, 0x7d, + 0xe6, 0x8b, 0x55, 0x8b, 0x04, 0xdd, 0xb0, 0xdd, 0x30, 0x5c, 0x3b, 0x9e, 0x90, 0xff, 0x73, 0x9e, + 0x9a, 0x5f, 0xab, 0xd1, 0x81, 0xc5, 0xbe, 0x6a, 0xf9, 0x9e, 0x11, 0x9d, 0x82, 0x01, 0x8b, 0xf6, + 0x3c, 0xfb, 0xe3, 0xe0, 0xc5, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x8e, 0xa2, 0x5d, 0x41, 0x8d, + 0x14, 0x00, 0x00, } -func (m *CodecDescriptor) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// ReflectionServiceClient is the client API for ReflectionService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type ReflectionServiceClient interface { + // GetAuthnDescriptor returns information on how to authenticate transactions in the application + // NOTE: this RPC is still experimental and might be subject to breaking changes or removal in + // future releases of the cosmos-sdk. + GetAuthnDescriptor(ctx context.Context, in *GetAuthnDescriptorRequest, opts ...grpc.CallOption) (*GetAuthnDescriptorResponse, error) + // GetChainDescriptor returns the description of the chain + GetChainDescriptor(ctx context.Context, in *GetChainDescriptorRequest, opts ...grpc.CallOption) (*GetChainDescriptorResponse, error) + // GetCodecDescriptor returns the descriptor of the codec of the application + GetCodecDescriptor(ctx context.Context, in *GetCodecDescriptorRequest, opts ...grpc.CallOption) (*GetCodecDescriptorResponse, error) + // GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application + GetConfigurationDescriptor(ctx context.Context, in *GetConfigurationDescriptorRequest, opts ...grpc.CallOption) (*GetConfigurationDescriptorResponse, error) + // GetQueryServicesDescriptor returns the available gRPC queryable services of the application + GetQueryServicesDescriptor(ctx context.Context, in *GetQueryServicesDescriptorRequest, opts ...grpc.CallOption) (*GetQueryServicesDescriptorResponse, error) + // GetTxDescriptor returns information on the used transaction object and available msgs that can be used + GetTxDescriptor(ctx context.Context, in *GetTxDescriptorRequest, opts ...grpc.CallOption) (*GetTxDescriptorResponse, error) + // ListAllInterfaces lists all the interfaces registered in the interface + // registry. + ListAllInterfaces(ctx context.Context, in *ListAllInterfacesRequest, opts ...grpc.CallOption) (*ListAllInterfacesResponse, error) + // ListImplementations list all the concrete types that implement a given + // interface. + ListImplementations(ctx context.Context, in *ListImplementationsRequest, opts ...grpc.CallOption) (*ListImplementationsResponse, error) } -func (m *CodecDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Interfaces) > 0 { - for iNdEx := len(m.Interfaces) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Interfaces[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil +type reflectionServiceClient struct { + cc grpc1.ClientConn } -func (m *InterfaceDescriptor) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func NewReflectionServiceClient(cc grpc1.ClientConn) ReflectionServiceClient { + return &reflectionServiceClient{cc} +} + +func (c *reflectionServiceClient) GetAuthnDescriptor(ctx context.Context, in *GetAuthnDescriptorRequest, opts ...grpc.CallOption) (*GetAuthnDescriptorResponse, error) { + out := new(GetAuthnDescriptorResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetAuthnDescriptor", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *InterfaceDescriptor) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *reflectionServiceClient) GetChainDescriptor(ctx context.Context, in *GetChainDescriptorRequest, opts ...grpc.CallOption) (*GetChainDescriptorResponse, error) { + out := new(GetChainDescriptorResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetChainDescriptor", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *InterfaceDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.InterfaceImplementers) > 0 { - for iNdEx := len(m.InterfaceImplementers) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.InterfaceImplementers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - } - if len(m.InterfaceAcceptingMessages) > 0 { - for iNdEx := len(m.InterfaceAcceptingMessages) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.InterfaceAcceptingMessages[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - if len(m.Fullname) > 0 { - i -= len(m.Fullname) - copy(dAtA[i:], m.Fullname) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) - i-- - dAtA[i] = 0xa +func (c *reflectionServiceClient) GetCodecDescriptor(ctx context.Context, in *GetCodecDescriptorRequest, opts ...grpc.CallOption) (*GetCodecDescriptorResponse, error) { + out := new(GetCodecDescriptorResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetCodecDescriptor", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *InterfaceImplementerDescriptor) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *reflectionServiceClient) GetConfigurationDescriptor(ctx context.Context, in *GetConfigurationDescriptorRequest, opts ...grpc.CallOption) (*GetConfigurationDescriptorResponse, error) { + out := new(GetConfigurationDescriptorResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetConfigurationDescriptor", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *InterfaceImplementerDescriptor) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *reflectionServiceClient) GetQueryServicesDescriptor(ctx context.Context, in *GetQueryServicesDescriptorRequest, opts ...grpc.CallOption) (*GetQueryServicesDescriptorResponse, error) { + out := new(GetQueryServicesDescriptorResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetQueryServicesDescriptor", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *InterfaceImplementerDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.TypeUrl) > 0 { - i -= len(m.TypeUrl) - copy(dAtA[i:], m.TypeUrl) - i = encodeVarintReflection(dAtA, i, uint64(len(m.TypeUrl))) - i-- - dAtA[i] = 0x12 - } - if len(m.Fullname) > 0 { - i -= len(m.Fullname) - copy(dAtA[i:], m.Fullname) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) - i-- - dAtA[i] = 0xa +func (c *reflectionServiceClient) GetTxDescriptor(ctx context.Context, in *GetTxDescriptorRequest, opts ...grpc.CallOption) (*GetTxDescriptorResponse, error) { + out := new(GetTxDescriptorResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetTxDescriptor", in, out, opts...) + if err != nil { + return nil, err } - return len(dAtA) - i, nil + return out, nil } -func (m *InterfaceAcceptingMessageDescriptor) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) +func (c *reflectionServiceClient) ListAllInterfaces(ctx context.Context, in *ListAllInterfacesRequest, opts ...grpc.CallOption) (*ListAllInterfacesResponse, error) { + out := new(ListAllInterfacesResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/ListAllInterfaces", in, out, opts...) if err != nil { return nil, err } - return dAtA[:n], nil + return out, nil } -func (m *InterfaceAcceptingMessageDescriptor) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func (c *reflectionServiceClient) ListImplementations(ctx context.Context, in *ListImplementationsRequest, opts ...grpc.CallOption) (*ListImplementationsResponse, error) { + out := new(ListImplementationsResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/ListImplementations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil } -func (m *InterfaceAcceptingMessageDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.FieldDescriptorNames) > 0 { - for iNdEx := len(m.FieldDescriptorNames) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.FieldDescriptorNames[iNdEx]) - copy(dAtA[i:], m.FieldDescriptorNames[iNdEx]) - i = encodeVarintReflection(dAtA, i, uint64(len(m.FieldDescriptorNames[iNdEx]))) - i-- - dAtA[i] = 0x12 - } +// ReflectionServiceServer is the server API for ReflectionService service. +type ReflectionServiceServer interface { + // GetAuthnDescriptor returns information on how to authenticate transactions in the application + // NOTE: this RPC is still experimental and might be subject to breaking changes or removal in + // future releases of the cosmos-sdk. + GetAuthnDescriptor(context.Context, *GetAuthnDescriptorRequest) (*GetAuthnDescriptorResponse, error) + // GetChainDescriptor returns the description of the chain + GetChainDescriptor(context.Context, *GetChainDescriptorRequest) (*GetChainDescriptorResponse, error) + // GetCodecDescriptor returns the descriptor of the codec of the application + GetCodecDescriptor(context.Context, *GetCodecDescriptorRequest) (*GetCodecDescriptorResponse, error) + // GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application + GetConfigurationDescriptor(context.Context, *GetConfigurationDescriptorRequest) (*GetConfigurationDescriptorResponse, error) + // GetQueryServicesDescriptor returns the available gRPC queryable services of the application + GetQueryServicesDescriptor(context.Context, *GetQueryServicesDescriptorRequest) (*GetQueryServicesDescriptorResponse, error) + // GetTxDescriptor returns information on the used transaction object and available msgs that can be used + GetTxDescriptor(context.Context, *GetTxDescriptorRequest) (*GetTxDescriptorResponse, error) + // ListAllInterfaces lists all the interfaces registered in the interface + // registry. + ListAllInterfaces(context.Context, *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) + // ListImplementations list all the concrete types that implement a given + // interface. + ListImplementations(context.Context, *ListImplementationsRequest) (*ListImplementationsResponse, error) +} + +// UnimplementedReflectionServiceServer can be embedded to have forward compatible implementations. +type UnimplementedReflectionServiceServer struct { +} + +func (*UnimplementedReflectionServiceServer) GetAuthnDescriptor(ctx context.Context, req *GetAuthnDescriptorRequest) (*GetAuthnDescriptorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAuthnDescriptor not implemented") +} +func (*UnimplementedReflectionServiceServer) GetChainDescriptor(ctx context.Context, req *GetChainDescriptorRequest) (*GetChainDescriptorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetChainDescriptor not implemented") +} +func (*UnimplementedReflectionServiceServer) GetCodecDescriptor(ctx context.Context, req *GetCodecDescriptorRequest) (*GetCodecDescriptorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCodecDescriptor not implemented") +} +func (*UnimplementedReflectionServiceServer) GetConfigurationDescriptor(ctx context.Context, req *GetConfigurationDescriptorRequest) (*GetConfigurationDescriptorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetConfigurationDescriptor not implemented") +} +func (*UnimplementedReflectionServiceServer) GetQueryServicesDescriptor(ctx context.Context, req *GetQueryServicesDescriptorRequest) (*GetQueryServicesDescriptorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetQueryServicesDescriptor not implemented") +} +func (*UnimplementedReflectionServiceServer) GetTxDescriptor(ctx context.Context, req *GetTxDescriptorRequest) (*GetTxDescriptorResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTxDescriptor not implemented") +} +func (*UnimplementedReflectionServiceServer) ListAllInterfaces(ctx context.Context, req *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAllInterfaces not implemented") +} +func (*UnimplementedReflectionServiceServer) ListImplementations(ctx context.Context, req *ListImplementationsRequest) (*ListImplementationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListImplementations not implemented") +} + +func RegisterReflectionServiceServer(s grpc1.Server, srv ReflectionServiceServer) { + s.RegisterService(&_ReflectionService_serviceDesc, srv) +} + +func _ReflectionService_GetAuthnDescriptor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAuthnDescriptorRequest) + if err := dec(in); err != nil { + return nil, err } - if len(m.Fullname) > 0 { - i -= len(m.Fullname) - copy(dAtA[i:], m.Fullname) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) - i-- - dAtA[i] = 0xa + if interceptor == nil { + return srv.(ReflectionServiceServer).GetAuthnDescriptor(ctx, in) } - return len(dAtA) - i, nil + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetAuthnDescriptor", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReflectionServiceServer).GetAuthnDescriptor(ctx, req.(*GetAuthnDescriptorRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *ConfigurationDescriptor) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { +func _ReflectionService_GetChainDescriptor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetChainDescriptorRequest) + if err := dec(in); err != nil { return nil, err } - return dAtA[:n], nil + if interceptor == nil { + return srv.(ReflectionServiceServer).GetChainDescriptor(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetChainDescriptor", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReflectionServiceServer).GetChainDescriptor(ctx, req.(*GetChainDescriptorRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *ConfigurationDescriptor) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) +func _ReflectionService_GetCodecDescriptor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCodecDescriptorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReflectionServiceServer).GetCodecDescriptor(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetCodecDescriptor", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReflectionServiceServer).GetCodecDescriptor(ctx, req.(*GetCodecDescriptorRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *ConfigurationDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Bech32AccountAddressPrefix) > 0 { - i -= len(m.Bech32AccountAddressPrefix) - copy(dAtA[i:], m.Bech32AccountAddressPrefix) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Bech32AccountAddressPrefix))) - i-- - dAtA[i] = 0xa +func _ReflectionService_GetConfigurationDescriptor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetConfigurationDescriptorRequest) + if err := dec(in); err != nil { + return nil, err } - return len(dAtA) - i, nil + if interceptor == nil { + return srv.(ReflectionServiceServer).GetConfigurationDescriptor(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetConfigurationDescriptor", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReflectionServiceServer).GetConfigurationDescriptor(ctx, req.(*GetConfigurationDescriptorRequest)) + } + return interceptor(ctx, in, info, handler) } -func (m *MsgDescriptor) Marshal() (dAtA []byte, err error) { +func _ReflectionService_GetQueryServicesDescriptor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetQueryServicesDescriptorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReflectionServiceServer).GetQueryServicesDescriptor(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetQueryServicesDescriptor", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReflectionServiceServer).GetQueryServicesDescriptor(ctx, req.(*GetQueryServicesDescriptorRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ReflectionService_GetTxDescriptor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTxDescriptorRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReflectionServiceServer).GetTxDescriptor(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetTxDescriptor", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReflectionServiceServer).GetTxDescriptor(ctx, req.(*GetTxDescriptorRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ReflectionService_ListAllInterfaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListAllInterfacesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReflectionServiceServer).ListAllInterfaces(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/ListAllInterfaces", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReflectionServiceServer).ListAllInterfaces(ctx, req.(*ListAllInterfacesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ReflectionService_ListImplementations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListImplementationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReflectionServiceServer).ListImplementations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/ListImplementations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReflectionServiceServer).ListImplementations(ctx, req.(*ListImplementationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _ReflectionService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "cosmos.base.reflection.v1beta1.ReflectionService", + HandlerType: (*ReflectionServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetAuthnDescriptor", + Handler: _ReflectionService_GetAuthnDescriptor_Handler, + }, + { + MethodName: "GetChainDescriptor", + Handler: _ReflectionService_GetChainDescriptor_Handler, + }, + { + MethodName: "GetCodecDescriptor", + Handler: _ReflectionService_GetCodecDescriptor_Handler, + }, + { + MethodName: "GetConfigurationDescriptor", + Handler: _ReflectionService_GetConfigurationDescriptor_Handler, + }, + { + MethodName: "GetQueryServicesDescriptor", + Handler: _ReflectionService_GetQueryServicesDescriptor_Handler, + }, + { + MethodName: "GetTxDescriptor", + Handler: _ReflectionService_GetTxDescriptor_Handler, + }, + { + MethodName: "ListAllInterfaces", + Handler: _ReflectionService_ListAllInterfaces_Handler, + }, + { + MethodName: "ListImplementations", + Handler: _ReflectionService_ListImplementations_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "cosmos/base/reflection/v1beta1/reflection.proto", +} + +func (m *AppDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1905,38 +2092,43 @@ func (m *MsgDescriptor) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgDescriptor) MarshalTo(dAtA []byte) (int, error) { +func (m *AppDescriptor) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *AppDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Msg != nil { + if m.Tx != nil { { - size := m.Msg.Size() + size, err := m.Tx.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } i -= size - if _, err := m.Msg.MarshalTo(dAtA[i:]); err != nil { + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.QueryServices != nil { + { + size, err := m.QueryServices.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { return 0, err } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x2a } - return len(dAtA) - i, nil -} - -func (m *MsgDescriptor_ServiceMsg) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgDescriptor_ServiceMsg) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.ServiceMsg != nil { + if m.Configuration != nil { { - size, err := m.ServiceMsg.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Configuration.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1944,11 +2136,48 @@ func (m *MsgDescriptor_ServiceMsg) MarshalToSizedBuffer(dAtA []byte) (int, error i = encodeVarintReflection(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0xa + dAtA[i] = 0x22 } - return len(dAtA) - i, nil + if m.Codec != nil { + { + size, err := m.Codec.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.Chain != nil { + { + size, err := m.Chain.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Authn != nil { + { + size, err := m.Authn.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil } -func (m *ServiceMsgDescriptor) Marshal() (dAtA []byte, err error) { + +func (m *TxDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1958,48 +2187,78 @@ func (m *ServiceMsgDescriptor) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ServiceMsgDescriptor) MarshalTo(dAtA []byte) (int, error) { +func (m *TxDescriptor) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ServiceMsgDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *TxDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.ResponseFullname) > 0 { - i -= len(m.ResponseFullname) - copy(dAtA[i:], m.ResponseFullname) - i = encodeVarintReflection(dAtA, i, uint64(len(m.ResponseFullname))) - i-- - dAtA[i] = 0x22 + if len(m.Msgs) > 0 { + for iNdEx := len(m.Msgs) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Msgs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } } - if len(m.RequestTypeUrl) > 0 { - i -= len(m.RequestTypeUrl) - copy(dAtA[i:], m.RequestTypeUrl) - i = encodeVarintReflection(dAtA, i, uint64(len(m.RequestTypeUrl))) + if len(m.Fullname) > 0 { + i -= len(m.Fullname) + copy(dAtA[i:], m.Fullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) i-- - dAtA[i] = 0x1a + dAtA[i] = 0xa } - if len(m.RequestRoute) > 0 { - i -= len(m.RequestRoute) - copy(dAtA[i:], m.RequestRoute) - i = encodeVarintReflection(dAtA, i, uint64(len(m.RequestRoute))) - i-- - dAtA[i] = 0x12 + return len(dAtA) - i, nil +} + +func (m *AuthnDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - if len(m.RequestFullname) > 0 { - i -= len(m.RequestFullname) - copy(dAtA[i:], m.RequestFullname) - i = encodeVarintReflection(dAtA, i, uint64(len(m.RequestFullname))) - i-- - dAtA[i] = 0xa + return dAtA[:n], nil +} + +func (m *AuthnDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AuthnDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SignModes) > 0 { + for iNdEx := len(m.SignModes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.SignModes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } } return len(dAtA) - i, nil } -func (m *GetAppDescriptorRequest) Marshal() (dAtA []byte, err error) { +func (m *SigningModeDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -2009,20 +2268,39 @@ func (m *GetAppDescriptorRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *GetAppDescriptorRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *SigningModeDescriptor) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *GetAppDescriptorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *SigningModeDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if len(m.AuthnInfoProviderMethodFullname) > 0 { + i -= len(m.AuthnInfoProviderMethodFullname) + copy(dAtA[i:], m.AuthnInfoProviderMethodFullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.AuthnInfoProviderMethodFullname))) + i-- + dAtA[i] = 0x1a + } + if m.Number != 0 { + i = encodeVarintReflection(dAtA, i, uint64(m.Number)) + i-- + dAtA[i] = 0x10 + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } -func (m *GetAppDescriptorResponse) Marshal() (dAtA []byte, err error) { +func (m *ChainDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -2032,32 +2310,27 @@ func (m *GetAppDescriptorResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *GetAppDescriptorResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *ChainDescriptor) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *GetAppDescriptorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ChainDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.App != nil { - { - size, err := m.App.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintReflection(dAtA, i, uint64(size)) - } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Id))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *QueryServicesDescriptor) Marshal() (dAtA []byte, err error) { +func (m *CodecDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -2067,20 +2340,20 @@ func (m *QueryServicesDescriptor) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryServicesDescriptor) MarshalTo(dAtA []byte) (int, error) { +func (m *CodecDescriptor) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryServicesDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *CodecDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.QueryServices) > 0 { - for iNdEx := len(m.QueryServices) - 1; iNdEx >= 0; iNdEx-- { + if len(m.Interfaces) > 0 { + for iNdEx := len(m.Interfaces) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.QueryServices[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Interfaces[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -2094,7 +2367,7 @@ func (m *QueryServicesDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *QueryServiceDescriptor) Marshal() (dAtA []byte, err error) { +func (m *InterfaceDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -2104,20 +2377,34 @@ func (m *QueryServiceDescriptor) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryServiceDescriptor) MarshalTo(dAtA []byte) (int, error) { +func (m *InterfaceDescriptor) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryServiceDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *InterfaceDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Methods) > 0 { - for iNdEx := len(m.Methods) - 1; iNdEx >= 0; iNdEx-- { + if len(m.InterfaceImplementers) > 0 { + for iNdEx := len(m.InterfaceImplementers) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.Methods[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.InterfaceImplementers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.InterfaceAcceptingMessages) > 0 { + for iNdEx := len(m.InterfaceAcceptingMessages) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.InterfaceAcceptingMessages[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -2138,7 +2425,7 @@ func (m *QueryServiceDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *QueryMethodDescriptor) Marshal() (dAtA []byte, err error) { +func (m *InterfaceImplementerDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -2148,34 +2435,34 @@ func (m *QueryMethodDescriptor) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryMethodDescriptor) MarshalTo(dAtA []byte) (int, error) { +func (m *InterfaceImplementerDescriptor) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryMethodDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *InterfaceImplementerDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.FullQueryPath) > 0 { - i -= len(m.FullQueryPath) - copy(dAtA[i:], m.FullQueryPath) - i = encodeVarintReflection(dAtA, i, uint64(len(m.FullQueryPath))) + if len(m.TypeUrl) > 0 { + i -= len(m.TypeUrl) + copy(dAtA[i:], m.TypeUrl) + i = encodeVarintReflection(dAtA, i, uint64(len(m.TypeUrl))) i-- dAtA[i] = 0x12 } - if len(m.Name) > 0 { - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintReflection(dAtA, i, uint64(len(m.Name))) + if len(m.Fullname) > 0 { + i -= len(m.Fullname) + copy(dAtA[i:], m.Fullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *ListAllInterfacesRequest) Marshal() (dAtA []byte, err error) { +func (m *InterfaceAcceptingMessageDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -2185,20 +2472,36 @@ func (m *ListAllInterfacesRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ListAllInterfacesRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *InterfaceAcceptingMessageDescriptor) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ListAllInterfacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *InterfaceAcceptingMessageDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if len(m.FieldDescriptorNames) > 0 { + for iNdEx := len(m.FieldDescriptorNames) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.FieldDescriptorNames[iNdEx]) + copy(dAtA[i:], m.FieldDescriptorNames[iNdEx]) + i = encodeVarintReflection(dAtA, i, uint64(len(m.FieldDescriptorNames[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(m.Fullname) > 0 { + i -= len(m.Fullname) + copy(dAtA[i:], m.Fullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) + i-- + dAtA[i] = 0xa + } return len(dAtA) - i, nil } -func (m *ListAllInterfacesResponse) Marshal() (dAtA []byte, err error) { +func (m *ConfigurationDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -2208,29 +2511,27 @@ func (m *ListAllInterfacesResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ListAllInterfacesResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *ConfigurationDescriptor) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ListAllInterfacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ConfigurationDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.InterfaceNames) > 0 { - for iNdEx := len(m.InterfaceNames) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.InterfaceNames[iNdEx]) - copy(dAtA[i:], m.InterfaceNames[iNdEx]) - i = encodeVarintReflection(dAtA, i, uint64(len(m.InterfaceNames[iNdEx]))) - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *ListImplementationsRequest) Marshal() (dAtA []byte, err error) { + if len(m.Bech32AccountAddressPrefix) > 0 { + i -= len(m.Bech32AccountAddressPrefix) + copy(dAtA[i:], m.Bech32AccountAddressPrefix) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Bech32AccountAddressPrefix))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -2240,27 +2541,50 @@ func (m *ListImplementationsRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ListImplementationsRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgDescriptor) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ListImplementationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.InterfaceName) > 0 { - i -= len(m.InterfaceName) - copy(dAtA[i:], m.InterfaceName) - i = encodeVarintReflection(dAtA, i, uint64(len(m.InterfaceName))) + if m.Msg != nil { + { + size := m.Msg.Size() + i -= size + if _, err := m.Msg.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } + return len(dAtA) - i, nil +} + +func (m *MsgDescriptor_ServiceMsg) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDescriptor_ServiceMsg) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.ServiceMsg != nil { + { + size, err := m.ServiceMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } - -func (m *ListImplementationsResponse) Marshal() (dAtA []byte, err error) { +func (m *ServiceMsgDescriptor) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -2270,409 +2594,1886 @@ func (m *ListImplementationsResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ListImplementationsResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *ServiceMsgDescriptor) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ListImplementationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ServiceMsgDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.ImplementationMessageNames) > 0 { - for iNdEx := len(m.ImplementationMessageNames) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.ImplementationMessageNames[iNdEx]) - copy(dAtA[i:], m.ImplementationMessageNames[iNdEx]) - i = encodeVarintReflection(dAtA, i, uint64(len(m.ImplementationMessageNames[iNdEx]))) - i-- - dAtA[i] = 0xa - } + if len(m.ResponseFullname) > 0 { + i -= len(m.ResponseFullname) + copy(dAtA[i:], m.ResponseFullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.ResponseFullname))) + i-- + dAtA[i] = 0x22 + } + if len(m.RequestTypeUrl) > 0 { + i -= len(m.RequestTypeUrl) + copy(dAtA[i:], m.RequestTypeUrl) + i = encodeVarintReflection(dAtA, i, uint64(len(m.RequestTypeUrl))) + i-- + dAtA[i] = 0x1a + } + if len(m.RequestRoute) > 0 { + i -= len(m.RequestRoute) + copy(dAtA[i:], m.RequestRoute) + i = encodeVarintReflection(dAtA, i, uint64(len(m.RequestRoute))) + i-- + dAtA[i] = 0x12 + } + if len(m.RequestFullname) > 0 { + i -= len(m.RequestFullname) + copy(dAtA[i:], m.RequestFullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.RequestFullname))) + i-- + dAtA[i] = 0xa } return len(dAtA) - i, nil } -func encodeVarintReflection(dAtA []byte, offset int, v uint64) int { - offset -= sovReflection(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ +func (m *GetAuthnDescriptorRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - dAtA[offset] = uint8(v) - return base + return dAtA[:n], nil } -func (m *AppDescriptor) Size() (n int) { - if m == nil { - return 0 - } + +func (m *GetAuthnDescriptorRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetAuthnDescriptorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if m.Chain != nil { - l = m.Chain.Size() - n += 1 + l + sovReflection(uint64(l)) - } - if m.Codec != nil { - l = m.Codec.Size() - n += 1 + l + sovReflection(uint64(l)) - } - if m.Configuration != nil { - l = m.Configuration.Size() - n += 1 + l + sovReflection(uint64(l)) - } - if m.QueryServices != nil { - l = m.QueryServices.Size() - n += 1 + l + sovReflection(uint64(l)) - } - if m.Tx != nil { - l = m.Tx.Size() - n += 1 + l + sovReflection(uint64(l)) - } - return n + return len(dAtA) - i, nil } -func (m *TxDescriptor) Size() (n int) { - if m == nil { - return 0 +func (m *GetAuthnDescriptorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *GetAuthnDescriptorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetAuthnDescriptorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.Fullname) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } if m.Authn != nil { - l = m.Authn.Size() - n += 1 + l + sovReflection(uint64(l)) - } - if len(m.Msgs) > 0 { - for _, e := range m.Msgs { - l = e.Size() - n += 1 + l + sovReflection(uint64(l)) + { + size, err := m.Authn.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *AuthnDescriptor) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.SignModes) > 0 { - for _, e := range m.SignModes { - l = e.Size() - n += 1 + l + sovReflection(uint64(l)) - } +func (m *GetChainDescriptorRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - return n + return dAtA[:n], nil } -func (m *SigningModeDescriptor) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - if m.Number != 0 { - n += 1 + sovReflection(uint64(m.Number)) - } - l = len(m.AuthnInfoProviderMethodFullname) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - return n +func (m *GetChainDescriptorRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ChainDescriptor) Size() (n int) { - if m == nil { - return 0 - } +func (m *GetChainDescriptorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - return n + return len(dAtA) - i, nil } -func (m *CodecDescriptor) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.Interfaces) > 0 { - for _, e := range m.Interfaces { - l = e.Size() - n += 1 + l + sovReflection(uint64(l)) - } +func (m *GetChainDescriptorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - return n + return dAtA[:n], nil } -func (m *InterfaceDescriptor) Size() (n int) { - if m == nil { - return 0 - } +func (m *GetChainDescriptorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetChainDescriptorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.Fullname) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - if len(m.InterfaceAcceptingMessages) > 0 { - for _, e := range m.InterfaceAcceptingMessages { - l = e.Size() - n += 1 + l + sovReflection(uint64(l)) - } - } - if len(m.InterfaceImplementers) > 0 { - for _, e := range m.InterfaceImplementers { - l = e.Size() - n += 1 + l + sovReflection(uint64(l)) + if m.Chain != nil { + { + size, err := m.Chain.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *InterfaceImplementerDescriptor) Size() (n int) { - if m == nil { - return 0 +func (m *GetCodecDescriptorRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *GetCodecDescriptorRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetCodecDescriptorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.Fullname) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - l = len(m.TypeUrl) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - return n + return len(dAtA) - i, nil } -func (m *InterfaceAcceptingMessageDescriptor) Size() (n int) { - if m == nil { - return 0 +func (m *GetCodecDescriptorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *GetCodecDescriptorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetCodecDescriptorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.Fullname) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - if len(m.FieldDescriptorNames) > 0 { - for _, s := range m.FieldDescriptorNames { - l = len(s) - n += 1 + l + sovReflection(uint64(l)) + if m.Codec != nil { + { + size, err := m.Codec.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *ConfigurationDescriptor) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Bech32AccountAddressPrefix) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) +func (m *GetConfigurationDescriptorRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - return n + return dAtA[:n], nil } -func (m *MsgDescriptor) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Msg != nil { - n += m.Msg.Size() - } - return n +func (m *GetConfigurationDescriptorRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgDescriptor_ServiceMsg) Size() (n int) { - if m == nil { - return 0 - } +func (m *GetConfigurationDescriptorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if m.ServiceMsg != nil { - l = m.ServiceMsg.Size() - n += 1 + l + sovReflection(uint64(l)) - } - return n + return len(dAtA) - i, nil } -func (m *ServiceMsgDescriptor) Size() (n int) { - if m == nil { - return 0 + +func (m *GetConfigurationDescriptorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *GetConfigurationDescriptorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetConfigurationDescriptorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.RequestFullname) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - l = len(m.RequestRoute) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - l = len(m.RequestTypeUrl) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - l = len(m.ResponseFullname) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) + if m.Config != nil { + { + size, err := m.Config.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *GetAppDescriptorRequest) Size() (n int) { - if m == nil { - return 0 +func (m *GetQueryServicesDescriptorRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - var l int - _ = l - return n + return dAtA[:n], nil } -func (m *GetAppDescriptorResponse) Size() (n int) { - if m == nil { - return 0 - } +func (m *GetQueryServicesDescriptorRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetQueryServicesDescriptorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if m.App != nil { - l = m.App.Size() - n += 1 + l + sovReflection(uint64(l)) - } - return n + return len(dAtA) - i, nil } -func (m *QueryServicesDescriptor) Size() (n int) { - if m == nil { - return 0 +func (m *GetQueryServicesDescriptorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *GetQueryServicesDescriptorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetQueryServicesDescriptorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if len(m.QueryServices) > 0 { - for _, e := range m.QueryServices { - l = e.Size() - n += 1 + l + sovReflection(uint64(l)) + if m.Queries != nil { + { + size, err := m.Queries.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0xa } - return n + return len(dAtA) - i, nil } -func (m *QueryServiceDescriptor) Size() (n int) { - if m == nil { - return 0 +func (m *GetTxDescriptorRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *GetTxDescriptorRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetTxDescriptorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - l = len(m.Fullname) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) + return len(dAtA) - i, nil +} + +func (m *GetTxDescriptorResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } + return dAtA[:n], nil +} + +func (m *GetTxDescriptorResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetTxDescriptorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Tx != nil { + { + size, err := m.Tx.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryServicesDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryServicesDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryServicesDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.QueryServices) > 0 { + for iNdEx := len(m.QueryServices) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.QueryServices[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryServiceDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryServiceDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryServiceDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l if len(m.Methods) > 0 { - for _, e := range m.Methods { - l = e.Size() - n += 1 + l + sovReflection(uint64(l)) + for iNdEx := len(m.Methods) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Methods[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintReflection(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Fullname) > 0 { + i -= len(m.Fullname) + copy(dAtA[i:], m.Fullname) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Fullname))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryMethodDescriptor) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryMethodDescriptor) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryMethodDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.FullQueryPath) > 0 { + i -= len(m.FullQueryPath) + copy(dAtA[i:], m.FullQueryPath) + i = encodeVarintReflection(dAtA, i, uint64(len(m.FullQueryPath))) + i-- + dAtA[i] = 0x12 + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintReflection(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ListAllInterfacesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListAllInterfacesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListAllInterfacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *ListAllInterfacesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListAllInterfacesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListAllInterfacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.InterfaceNames) > 0 { + for iNdEx := len(m.InterfaceNames) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.InterfaceNames[iNdEx]) + copy(dAtA[i:], m.InterfaceNames[iNdEx]) + i = encodeVarintReflection(dAtA, i, uint64(len(m.InterfaceNames[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *ListImplementationsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListImplementationsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListImplementationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.InterfaceName) > 0 { + i -= len(m.InterfaceName) + copy(dAtA[i:], m.InterfaceName) + i = encodeVarintReflection(dAtA, i, uint64(len(m.InterfaceName))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ListImplementationsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListImplementationsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListImplementationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ImplementationMessageNames) > 0 { + for iNdEx := len(m.ImplementationMessageNames) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ImplementationMessageNames[iNdEx]) + copy(dAtA[i:], m.ImplementationMessageNames[iNdEx]) + i = encodeVarintReflection(dAtA, i, uint64(len(m.ImplementationMessageNames[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintReflection(dAtA []byte, offset int, v uint64) int { + offset -= sovReflection(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *AppDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Authn != nil { + l = m.Authn.Size() + n += 1 + l + sovReflection(uint64(l)) + } + if m.Chain != nil { + l = m.Chain.Size() + n += 1 + l + sovReflection(uint64(l)) + } + if m.Codec != nil { + l = m.Codec.Size() + n += 1 + l + sovReflection(uint64(l)) + } + if m.Configuration != nil { + l = m.Configuration.Size() + n += 1 + l + sovReflection(uint64(l)) + } + if m.QueryServices != nil { + l = m.QueryServices.Size() + n += 1 + l + sovReflection(uint64(l)) + } + if m.Tx != nil { + l = m.Tx.Size() + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *TxDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Fullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + if len(m.Msgs) > 0 { + for _, e := range m.Msgs { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *AuthnDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.SignModes) > 0 { + for _, e := range m.SignModes { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *SigningModeDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + if m.Number != 0 { + n += 1 + sovReflection(uint64(m.Number)) + } + l = len(m.AuthnInfoProviderMethodFullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *ChainDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *CodecDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Interfaces) > 0 { + for _, e := range m.Interfaces { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *InterfaceDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Fullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + if len(m.InterfaceAcceptingMessages) > 0 { + for _, e := range m.InterfaceAcceptingMessages { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + if len(m.InterfaceImplementers) > 0 { + for _, e := range m.InterfaceImplementers { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *InterfaceImplementerDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Fullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.TypeUrl) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *InterfaceAcceptingMessageDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Fullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + if len(m.FieldDescriptorNames) > 0 { + for _, s := range m.FieldDescriptorNames { + l = len(s) + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *ConfigurationDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Bech32AccountAddressPrefix) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *MsgDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Msg != nil { + n += m.Msg.Size() + } + return n +} + +func (m *MsgDescriptor_ServiceMsg) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ServiceMsg != nil { + l = m.ServiceMsg.Size() + n += 1 + l + sovReflection(uint64(l)) + } + return n +} +func (m *ServiceMsgDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.RequestFullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.RequestRoute) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.RequestTypeUrl) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.ResponseFullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *GetAuthnDescriptorRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GetAuthnDescriptorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Authn != nil { + l = m.Authn.Size() + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *GetChainDescriptorRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GetChainDescriptorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Chain != nil { + l = m.Chain.Size() + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *GetCodecDescriptorRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GetCodecDescriptorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Codec != nil { + l = m.Codec.Size() + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *GetConfigurationDescriptorRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GetConfigurationDescriptorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Config != nil { + l = m.Config.Size() + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *GetQueryServicesDescriptorRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GetQueryServicesDescriptorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Queries != nil { + l = m.Queries.Size() + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *GetTxDescriptorRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GetTxDescriptorResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Tx != nil { + l = m.Tx.Size() + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *QueryServicesDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.QueryServices) > 0 { + for _, e := range m.QueryServices { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *QueryServiceDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Fullname) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + if len(m.Methods) > 0 { + for _, e := range m.Methods { + l = e.Size() + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *QueryMethodDescriptor) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + l = len(m.FullQueryPath) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *ListAllInterfacesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *ListAllInterfacesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.InterfaceNames) > 0 { + for _, s := range m.InterfaceNames { + l = len(s) + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *ListImplementationsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.InterfaceName) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *ListImplementationsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.ImplementationMessageNames) > 0 { + for _, s := range m.ImplementationMessageNames { + l = len(s) + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func sovReflection(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozReflection(x uint64) (n int) { + return sovReflection(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *AppDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AppDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AppDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authn", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Authn == nil { + m.Authn = &AuthnDescriptor{} + } + if err := m.Authn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Chain", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Chain == nil { + m.Chain = &ChainDescriptor{} + } + if err := m.Chain.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Codec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Codec == nil { + m.Codec = &CodecDescriptor{} + } + if err := m.Codec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Configuration", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Configuration == nil { + m.Configuration = &ConfigurationDescriptor{} + } + if err := m.Configuration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QueryServices", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.QueryServices == nil { + m.QueryServices = &QueryServicesDescriptor{} + } + if err := m.QueryServices.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Tx", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Tx == nil { + m.Tx = &TxDescriptor{} + } + if err := m.Tx.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TxDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TxDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TxDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Fullname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Msgs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Msgs = append(m.Msgs, &MsgDescriptor{}) + if err := m.Msgs[len(m.Msgs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AuthnDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AuthnDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AuthnDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SignModes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SignModes = append(m.SignModes, &SigningModeDescriptor{}) + if err := m.SignModes[len(m.SignModes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SigningModeDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SigningModeDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SigningModeDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Number", wireType) + } + m.Number = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Number |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuthnInfoProviderMethodFullname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AuthnInfoProviderMethodFullname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy } } - return n -} - -func (m *QueryMethodDescriptor) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Name) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - l = len(m.FullQueryPath) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - return n -} -func (m *ListAllInterfacesRequest) Size() (n int) { - if m == nil { - return 0 + if iNdEx > l { + return io.ErrUnexpectedEOF } - var l int - _ = l - return n + return nil } - -func (m *ListAllInterfacesResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.InterfaceNames) > 0 { - for _, s := range m.InterfaceNames { - l = len(s) - n += 1 + l + sovReflection(uint64(l)) +func (m *ChainDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ChainDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ChainDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy } } - return n -} -func (m *ListImplementationsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.InterfaceName) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) + if iNdEx > l { + return io.ErrUnexpectedEOF } - return n + return nil } - -func (m *ListImplementationsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.ImplementationMessageNames) > 0 { - for _, s := range m.ImplementationMessageNames { - l = len(s) - n += 1 + l + sovReflection(uint64(l)) +func (m *CodecDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CodecDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CodecDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Interfaces", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Interfaces = append(m.Interfaces, &InterfaceDescriptor{}) + if err := m.Interfaces[len(m.Interfaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy } } - return n -} -func sovReflection(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozReflection(x uint64) (n int) { - return sovReflection(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil } -func (m *AppDescriptor) Unmarshal(dAtA []byte) error { +func (m *InterfaceDescriptor) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2695,17 +4496,17 @@ func (m *AppDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AppDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: InterfaceDescriptor: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AppDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: InterfaceDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 2: + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Chain", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowReflection @@ -2715,31 +4516,27 @@ func (m *AppDescriptor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthReflection } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthReflection } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Chain == nil { - m.Chain = &ChainDescriptor{} - } - if err := m.Chain.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Fullname = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Codec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field InterfaceAcceptingMessages", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -2766,16 +4563,14 @@ func (m *AppDescriptor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Codec == nil { - m.Codec = &CodecDescriptor{} - } - if err := m.Codec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.InterfaceAcceptingMessages = append(m.InterfaceAcceptingMessages, &InterfaceAcceptingMessageDescriptor{}) + if err := m.InterfaceAcceptingMessages[len(m.InterfaceAcceptingMessages)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Configuration", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field InterfaceImplementers", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -2802,18 +4597,66 @@ func (m *AppDescriptor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Configuration == nil { - m.Configuration = &ConfigurationDescriptor{} - } - if err := m.Configuration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.InterfaceImplementers = append(m.InterfaceImplementers, &InterfaceImplementerDescriptor{}) + if err := m.InterfaceImplementers[len(m.InterfaceImplementers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *InterfaceImplementerDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: InterfaceImplementerDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InterfaceImplementerDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field QueryServices", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowReflection @@ -2823,33 +4666,29 @@ func (m *AppDescriptor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthReflection } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthReflection } if postIndex > l { return io.ErrUnexpectedEOF } - if m.QueryServices == nil { - m.QueryServices = &QueryServicesDescriptor{} - } - if err := m.QueryServices.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Fullname = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Tx", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TypeUrl", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowReflection @@ -2859,27 +4698,23 @@ func (m *AppDescriptor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthReflection } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthReflection } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Tx == nil { - m.Tx = &TxDescriptor{} - } - if err := m.Tx.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.TypeUrl = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -2902,7 +4737,7 @@ func (m *AppDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *TxDescriptor) Unmarshal(dAtA []byte) error { +func (m *InterfaceAcceptingMessageDescriptor) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2925,10 +4760,10 @@ func (m *TxDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: TxDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: InterfaceAcceptingMessageDescriptor: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: TxDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: InterfaceAcceptingMessageDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2965,9 +4800,9 @@ func (m *TxDescriptor) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Authn", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field FieldDescriptorNames", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowReflection @@ -2977,33 +4812,79 @@ func (m *TxDescriptor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthReflection } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthReflection } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Authn == nil { - m.Authn = &AuthnDescriptor{} - } - if err := m.Authn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.FieldDescriptorNames = append(m.FieldDescriptorNames, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { return err } - iNdEx = postIndex - case 3: + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConfigurationDescriptor) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigurationDescriptor: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigurationDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Msgs", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Bech32AccountAddressPrefix", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowReflection @@ -3013,25 +4894,23 @@ func (m *TxDescriptor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthReflection } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthReflection } if postIndex > l { return io.ErrUnexpectedEOF } - m.Msgs = append(m.Msgs, &MsgDescriptor{}) - if err := m.Msgs[len(m.Msgs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Bech32AccountAddressPrefix = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -3054,7 +4933,7 @@ func (m *TxDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *AuthnDescriptor) Unmarshal(dAtA []byte) error { +func (m *MsgDescriptor) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3077,15 +4956,15 @@ func (m *AuthnDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AuthnDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: MsgDescriptor: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AuthnDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SignModes", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceMsg", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3112,10 +4991,11 @@ func (m *AuthnDescriptor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SignModes = append(m.SignModes, &SigningModeDescriptor{}) - if err := m.SignModes[len(m.SignModes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + v := &ServiceMsgDescriptor{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } + m.Msg = &MsgDescriptor_ServiceMsg{v} iNdEx = postIndex default: iNdEx = preIndex @@ -3138,7 +5018,7 @@ func (m *AuthnDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *SigningModeDescriptor) Unmarshal(dAtA []byte) error { +func (m *ServiceMsgDescriptor) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3161,15 +5041,47 @@ func (m *SigningModeDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SigningModeDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: ServiceMsgDescriptor: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SigningModeDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ServiceMsgDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RequestFullname", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RequestFullname = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequestRoute", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3197,13 +5109,13 @@ func (m *SigningModeDescriptor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + m.RequestRoute = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Number", wireType) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequestTypeUrl", wireType) } - m.Number = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowReflection @@ -3213,14 +5125,27 @@ func (m *SigningModeDescriptor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Number |= int32(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 3: + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RequestTypeUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthnInfoProviderMethodFullname", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ResponseFullname", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3248,7 +5173,7 @@ func (m *SigningModeDescriptor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.AuthnInfoProviderMethodFullname = string(dAtA[iNdEx:postIndex]) + m.ResponseFullname = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -3271,7 +5196,7 @@ func (m *SigningModeDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *ChainDescriptor) Unmarshal(dAtA []byte) error { +func (m *GetAuthnDescriptorRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3294,44 +5219,12 @@ func (m *ChainDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ChainDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: GetAuthnDescriptorRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ChainDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetAuthnDescriptorRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipReflection(dAtA[iNdEx:]) @@ -3353,7 +5246,7 @@ func (m *ChainDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *CodecDescriptor) Unmarshal(dAtA []byte) error { +func (m *GetAuthnDescriptorResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3376,15 +5269,15 @@ func (m *CodecDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: CodecDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: GetAuthnDescriptorResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: CodecDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetAuthnDescriptorResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Interfaces", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Authn", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3411,8 +5304,10 @@ func (m *CodecDescriptor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Interfaces = append(m.Interfaces, &InterfaceDescriptor{}) - if err := m.Interfaces[len(m.Interfaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Authn == nil { + m.Authn = &AuthnDescriptor{} + } + if err := m.Authn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -3437,7 +5332,7 @@ func (m *CodecDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *InterfaceDescriptor) Unmarshal(dAtA []byte) error { +func (m *GetChainDescriptorRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3460,112 +5355,12 @@ func (m *InterfaceDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: InterfaceDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: GetChainDescriptorRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: InterfaceDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetChainDescriptorRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Fullname = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InterfaceAcceptingMessages", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.InterfaceAcceptingMessages = append(m.InterfaceAcceptingMessages, &InterfaceAcceptingMessageDescriptor{}) - if err := m.InterfaceAcceptingMessages[len(m.InterfaceAcceptingMessages)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InterfaceImplementers", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.InterfaceImplementers = append(m.InterfaceImplementers, &InterfaceImplementerDescriptor{}) - if err := m.InterfaceImplementers[len(m.InterfaceImplementers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipReflection(dAtA[iNdEx:]) @@ -3587,7 +5382,7 @@ func (m *InterfaceDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *InterfaceImplementerDescriptor) Unmarshal(dAtA []byte) error { +func (m *GetChainDescriptorResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3610,17 +5405,17 @@ func (m *InterfaceImplementerDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: InterfaceImplementerDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: GetChainDescriptorResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: InterfaceImplementerDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetChainDescriptorResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Chain", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowReflection @@ -3630,56 +5425,78 @@ func (m *InterfaceImplementerDescriptor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthReflection } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthReflection } if postIndex > l { return io.ErrUnexpectedEOF } - m.Fullname = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TypeUrl", wireType) + if m.Chain == nil { + m.Chain = &ChainDescriptor{} } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + if err := m.Chain.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthReflection } - if postIndex > l { + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetCodecDescriptorRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - m.TypeUrl = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetCodecDescriptorRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetCodecDescriptorRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { default: iNdEx = preIndex skippy, err := skipReflection(dAtA[iNdEx:]) @@ -3701,7 +5518,7 @@ func (m *InterfaceImplementerDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *InterfaceAcceptingMessageDescriptor) Unmarshal(dAtA []byte) error { +func (m *GetCodecDescriptorResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3724,17 +5541,17 @@ func (m *InterfaceAcceptingMessageDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: InterfaceAcceptingMessageDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: GetCodecDescriptorResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: InterfaceAcceptingMessageDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetCodecDescriptorResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Fullname", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Codec", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowReflection @@ -3744,55 +5561,27 @@ func (m *InterfaceAcceptingMessageDescriptor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthReflection } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthReflection } if postIndex > l { return io.ErrUnexpectedEOF } - m.Fullname = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FieldDescriptorNames", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection + if m.Codec == nil { + m.Codec = &CodecDescriptor{} } - if postIndex > l { - return io.ErrUnexpectedEOF + if err := m.Codec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.FieldDescriptorNames = append(m.FieldDescriptorNames, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -3815,7 +5604,7 @@ func (m *InterfaceAcceptingMessageDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *ConfigurationDescriptor) Unmarshal(dAtA []byte) error { +func (m *GetConfigurationDescriptorRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3838,44 +5627,12 @@ func (m *ConfigurationDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ConfigurationDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: GetConfigurationDescriptorRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ConfigurationDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetConfigurationDescriptorRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Bech32AccountAddressPrefix", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Bech32AccountAddressPrefix = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipReflection(dAtA[iNdEx:]) @@ -3897,7 +5654,7 @@ func (m *ConfigurationDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgDescriptor) Unmarshal(dAtA []byte) error { +func (m *GetConfigurationDescriptorResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3920,15 +5677,15 @@ func (m *MsgDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: GetConfigurationDescriptorResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetConfigurationDescriptorResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceMsg", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3955,11 +5712,12 @@ func (m *MsgDescriptor) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &ServiceMsgDescriptor{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Config == nil { + m.Config = &ConfigurationDescriptor{} + } + if err := m.Config.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Msg = &MsgDescriptor_ServiceMsg{v} iNdEx = postIndex default: iNdEx = preIndex @@ -3982,7 +5740,7 @@ func (m *MsgDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *ServiceMsgDescriptor) Unmarshal(dAtA []byte) error { +func (m *GetQueryServicesDescriptorRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4005,81 +5763,67 @@ func (m *ServiceMsgDescriptor) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ServiceMsgDescriptor: wiretype end group for non-group") + return fmt.Errorf("proto: GetQueryServicesDescriptorRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ServiceMsgDescriptor: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetQueryServicesDescriptorRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RequestFullname", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthReflection } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.RequestFullname = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RequestRoute", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetQueryServicesDescriptorResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection } - if postIndex > l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - m.RequestRoute = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetQueryServicesDescriptorResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetQueryServicesDescriptorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RequestTypeUrl", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Queries", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowReflection @@ -4089,55 +5833,27 @@ func (m *ServiceMsgDescriptor) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthReflection } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthReflection } if postIndex > l { return io.ErrUnexpectedEOF } - m.RequestTypeUrl = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResponseFullname", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection + if m.Queries == nil { + m.Queries = &QueryServicesDescriptor{} } - if postIndex > l { - return io.ErrUnexpectedEOF + if err := m.Queries.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.ResponseFullname = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -4160,7 +5876,7 @@ func (m *ServiceMsgDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *GetAppDescriptorRequest) Unmarshal(dAtA []byte) error { +func (m *GetTxDescriptorRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4183,10 +5899,10 @@ func (m *GetAppDescriptorRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetAppDescriptorRequest: wiretype end group for non-group") + return fmt.Errorf("proto: GetTxDescriptorRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetAppDescriptorRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetTxDescriptorRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -4210,7 +5926,7 @@ func (m *GetAppDescriptorRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *GetAppDescriptorResponse) Unmarshal(dAtA []byte) error { +func (m *GetTxDescriptorResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4233,15 +5949,15 @@ func (m *GetAppDescriptorResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GetAppDescriptorResponse: wiretype end group for non-group") + return fmt.Errorf("proto: GetTxDescriptorResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GetAppDescriptorResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GetTxDescriptorResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field App", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Tx", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -4268,10 +5984,10 @@ func (m *GetAppDescriptorResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.App == nil { - m.App = &AppDescriptor{} + if m.Tx == nil { + m.Tx = &TxDescriptor{} } - if err := m.App.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Tx.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/server/grpc/appreflection/reflection.pb.gw.go b/server/grpc/appreflection/reflection.pb.gw.go index b188cdc68965..cc27bc42a1f9 100644 --- a/server/grpc/appreflection/reflection.pb.gw.go +++ b/server/grpc/appreflection/reflection.pb.gw.go @@ -31,20 +31,110 @@ var _ = runtime.String var _ = utilities.NewDoubleArray var _ = descriptor.ForMessage -func request_ReflectionService_GetAppDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, client ReflectionServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetAppDescriptorRequest +func request_ReflectionService_GetAuthnDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, client ReflectionServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetAuthnDescriptorRequest var metadata runtime.ServerMetadata - msg, err := client.GetAppDescriptor(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetAuthnDescriptor(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_ReflectionService_GetAppDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, server ReflectionServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq GetAppDescriptorRequest +func local_request_ReflectionService_GetAuthnDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, server ReflectionServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetAuthnDescriptorRequest var metadata runtime.ServerMetadata - msg, err := server.GetAppDescriptor(ctx, &protoReq) + msg, err := server.GetAuthnDescriptor(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ReflectionService_GetChainDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, client ReflectionServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetChainDescriptorRequest + var metadata runtime.ServerMetadata + + msg, err := client.GetChainDescriptor(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ReflectionService_GetChainDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, server ReflectionServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetChainDescriptorRequest + var metadata runtime.ServerMetadata + + msg, err := server.GetChainDescriptor(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ReflectionService_GetCodecDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, client ReflectionServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetCodecDescriptorRequest + var metadata runtime.ServerMetadata + + msg, err := client.GetCodecDescriptor(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ReflectionService_GetCodecDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, server ReflectionServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetCodecDescriptorRequest + var metadata runtime.ServerMetadata + + msg, err := server.GetCodecDescriptor(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ReflectionService_GetConfigurationDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, client ReflectionServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetConfigurationDescriptorRequest + var metadata runtime.ServerMetadata + + msg, err := client.GetConfigurationDescriptor(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ReflectionService_GetConfigurationDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, server ReflectionServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetConfigurationDescriptorRequest + var metadata runtime.ServerMetadata + + msg, err := server.GetConfigurationDescriptor(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ReflectionService_GetQueryServicesDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, client ReflectionServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetQueryServicesDescriptorRequest + var metadata runtime.ServerMetadata + + msg, err := client.GetQueryServicesDescriptor(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ReflectionService_GetQueryServicesDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, server ReflectionServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetQueryServicesDescriptorRequest + var metadata runtime.ServerMetadata + + msg, err := server.GetQueryServicesDescriptor(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ReflectionService_GetTxDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, client ReflectionServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTxDescriptorRequest + var metadata runtime.ServerMetadata + + msg, err := client.GetTxDescriptor(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ReflectionService_GetTxDescriptor_0(ctx context.Context, marshaler runtime.Marshaler, server ReflectionServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetTxDescriptorRequest + var metadata runtime.ServerMetadata + + msg, err := server.GetTxDescriptor(ctx, &protoReq) return msg, metadata, err } @@ -127,7 +217,107 @@ func local_request_ReflectionService_ListImplementations_0(ctx context.Context, // Note that using this registration option will cause many gRPC library features (such as grpc.SendHeader, etc) to stop working. Consider using RegisterReflectionServiceHandlerFromEndpoint instead. func RegisterReflectionServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ReflectionServiceServer) error { - mux.Handle("GET", pattern_ReflectionService_GetAppDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_ReflectionService_GetAuthnDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ReflectionService_GetAuthnDescriptor_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_GetAuthnDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ReflectionService_GetChainDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ReflectionService_GetChainDescriptor_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_GetChainDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ReflectionService_GetCodecDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ReflectionService_GetCodecDescriptor_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_GetCodecDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ReflectionService_GetConfigurationDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ReflectionService_GetConfigurationDescriptor_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_GetConfigurationDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ReflectionService_GetQueryServicesDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ReflectionService_GetQueryServicesDescriptor_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_GetQueryServicesDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ReflectionService_GetTxDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -136,14 +326,14 @@ func RegisterReflectionServiceHandlerServer(ctx context.Context, mux *runtime.Se runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_ReflectionService_GetAppDescriptor_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_ReflectionService_GetTxDescriptor_0(rctx, inboundMarshaler, server, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_ReflectionService_GetAppDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ReflectionService_GetTxDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -228,7 +418,107 @@ func RegisterReflectionServiceHandler(ctx context.Context, mux *runtime.ServeMux // "ReflectionServiceClient" to call the correct interceptors. func RegisterReflectionServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ReflectionServiceClient) error { - mux.Handle("GET", pattern_ReflectionService_GetAppDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_ReflectionService_GetAuthnDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ReflectionService_GetAuthnDescriptor_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_GetAuthnDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ReflectionService_GetChainDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ReflectionService_GetChainDescriptor_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_GetChainDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ReflectionService_GetCodecDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ReflectionService_GetCodecDescriptor_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_GetCodecDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ReflectionService_GetConfigurationDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ReflectionService_GetConfigurationDescriptor_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_GetConfigurationDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ReflectionService_GetQueryServicesDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ReflectionService_GetQueryServicesDescriptor_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_GetQueryServicesDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ReflectionService_GetTxDescriptor_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -237,14 +527,14 @@ func RegisterReflectionServiceHandlerClient(ctx context.Context, mux *runtime.Se runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_ReflectionService_GetAppDescriptor_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_ReflectionService_GetTxDescriptor_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_ReflectionService_GetAppDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_ReflectionService_GetTxDescriptor_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -292,7 +582,17 @@ func RegisterReflectionServiceHandlerClient(ctx context.Context, mux *runtime.Se } var ( - pattern_ReflectionService_GetAppDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_ReflectionService_GetAuthnDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "authn"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_ReflectionService_GetChainDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "chain"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_ReflectionService_GetCodecDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "codec"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_ReflectionService_GetConfigurationDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "configuration"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_ReflectionService_GetQueryServicesDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "query_services"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_ReflectionService_GetTxDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "tx_descriptor"}, "", runtime.AssumeColonVerbOpt(false))) pattern_ReflectionService_ListAllInterfaces_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "reflection", "v1beta1", "interfaces"}, "", runtime.AssumeColonVerbOpt(false))) @@ -300,7 +600,17 @@ var ( ) var ( - forward_ReflectionService_GetAppDescriptor_0 = runtime.ForwardResponseMessage + forward_ReflectionService_GetAuthnDescriptor_0 = runtime.ForwardResponseMessage + + forward_ReflectionService_GetChainDescriptor_0 = runtime.ForwardResponseMessage + + forward_ReflectionService_GetCodecDescriptor_0 = runtime.ForwardResponseMessage + + forward_ReflectionService_GetConfigurationDescriptor_0 = runtime.ForwardResponseMessage + + forward_ReflectionService_GetQueryServicesDescriptor_0 = runtime.ForwardResponseMessage + + forward_ReflectionService_GetTxDescriptor_0 = runtime.ForwardResponseMessage forward_ReflectionService_ListAllInterfaces_0 = runtime.ForwardResponseMessage diff --git a/server/grpc/server_test.go b/server/grpc/server_test.go index ca09a25e70b3..d735faec9cff 100644 --- a/server/grpc/server_test.go +++ b/server/grpc/server_test.go @@ -122,19 +122,19 @@ func (s *IntegrationTestSuite) TestGRPCServer_Reflection() { } } -func (s *IntegrationTestSuite) TestAppReflection() { +func (s *IntegrationTestSuite) TestGRPCServer_AppReflection() { // this tests the application reflection capabilities ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) defer cancel() c := appreflection.NewReflectionServiceClient(s.conn) - appDesc, err := c.GetAppDescriptor(ctx, nil) + codecDesc, err := c.GetCodecDescriptor(ctx, nil) s.Require().NoError(err) interfaces, err := c.ListAllInterfaces(ctx, nil) s.Require().NoError(err) - s.Require().Equal(len(appDesc.App.Codec.Interfaces), len(interfaces.InterfaceNames)) - s.Require().Equal(len(s.cfg.InterfaceRegistry.ListAllInterfaces()), len(appDesc.App.Codec.Interfaces)) + s.Require().Equal(len(codecDesc.Codec.Interfaces), len(interfaces.InterfaceNames)) + s.Require().Equal(len(s.cfg.InterfaceRegistry.ListAllInterfaces()), len(codecDesc.Codec.Interfaces)) for _, iface := range interfaces.InterfaceNames { impls, err := c.ListImplementations(ctx, &appreflection.ListImplementationsRequest{InterfaceName: iface}) From 74dc6677ffd09cd957e24986ee6216d7d4ff41ea Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Fri, 2 Apr 2021 14:44:18 +0200 Subject: [PATCH 22/26] change: re-add the old v1beta1 reflection service --- Makefile | 2 +- baseapp/grpcrouter.go | 8 + client/grpc/reflection/reflection.go | 45 + client/grpc/reflection/reflection.pb.go | 936 ++++++++++++++++++ client/grpc/reflection/reflection.pb.gw.go | 246 +++++ docs/core/proto-docs.md | 310 +++--- .../base/reflection/v1beta1/reflection.proto | 232 +---- .../base/reflection/v2alpha1/reflection.proto | 238 +++++ 8 files changed, 1647 insertions(+), 370 deletions(-) create mode 100644 client/grpc/reflection/reflection.go create mode 100644 client/grpc/reflection/reflection.pb.go create mode 100644 client/grpc/reflection/reflection.pb.gw.go create mode 100644 proto/cosmos/base/reflection/v2alpha1/reflection.proto diff --git a/Makefile b/Makefile index d7b8a1fa8cfd..4c7582b01eb5 100644 --- a/Makefile +++ b/Makefile @@ -373,7 +373,7 @@ proto-all: proto-format proto-lint proto-gen proto-gen: @echo "Generating Protobuf files" - $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace tendermintdev/sdk-proto-gen:v0.1 sh ./scripts/protocgen.sh + docker run --rm -v $(CURDIR):/workspace --workdir /workspace tendermintdev/sdk-proto-gen:v0.1 sh ./scripts/protocgen.sh proto-format: @echo "Formatting Protobuf files" diff --git a/baseapp/grpcrouter.go b/baseapp/grpcrouter.go index fa8ea78ceed9..3570648d48ab 100644 --- a/baseapp/grpcrouter.go +++ b/baseapp/grpcrouter.go @@ -4,6 +4,8 @@ import ( "fmt" "reflect" + "github.com/cosmos/cosmos-sdk/client/grpc/reflection" + gogogrpc "github.com/gogo/protobuf/grpc" abci "github.com/tendermint/tendermint/abci/types" "google.golang.org/grpc" @@ -135,6 +137,12 @@ func (qrt *GRPCQueryRouter) RegisterService(sd *grpc.ServiceDesc, handler interf // also register the interface reflection gRPC service. func (qrt *GRPCQueryRouter) SetInterfaceRegistry(interfaceRegistry codectypes.InterfaceRegistry) { qrt.interfaceRegistry = interfaceRegistry + // Once we have an interface registry, we can register the interface + // registry reflection gRPC service. + reflection.RegisterReflectionServiceServer( + qrt, + reflection.NewReflectionServiceServer(interfaceRegistry), + ) } // returnTypeOf returns the return type of a gRPC method handler. With the way the diff --git a/client/grpc/reflection/reflection.go b/client/grpc/reflection/reflection.go new file mode 100644 index 000000000000..eb07ea86bd73 --- /dev/null +++ b/client/grpc/reflection/reflection.go @@ -0,0 +1,45 @@ +package reflection + +import ( + "context" + + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "github.com/cosmos/cosmos-sdk/codec/types" +) + +type reflectionServiceServer struct { + interfaceRegistry types.InterfaceRegistry +} + +// NewReflectionServiceServer creates a new reflectionServiceServer. +func NewReflectionServiceServer(interfaceRegistry types.InterfaceRegistry) ReflectionServiceServer { + return &reflectionServiceServer{interfaceRegistry: interfaceRegistry} +} + +var _ ReflectionServiceServer = (*reflectionServiceServer)(nil) + +// ListAllInterfaces implements the ListAllInterfaces method of the +// ReflectionServiceServer interface. +func (r reflectionServiceServer) ListAllInterfaces(_ context.Context, _ *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) { + ifaces := r.interfaceRegistry.ListAllInterfaces() + + return &ListAllInterfacesResponse{InterfaceNames: ifaces}, nil +} + +// ListImplementations implements the ListImplementations method of the +// ReflectionServiceServer interface. +func (r reflectionServiceServer) ListImplementations(_ context.Context, req *ListImplementationsRequest) (*ListImplementationsResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + + if req.InterfaceName == "" { + return nil, status.Error(codes.InvalidArgument, "invalid interface name") + } + + impls := r.interfaceRegistry.ListImplementations(req.InterfaceName) + + return &ListImplementationsResponse{ImplementationMessageNames: impls}, nil +} diff --git a/client/grpc/reflection/reflection.pb.go b/client/grpc/reflection/reflection.pb.go new file mode 100644 index 000000000000..66dbef0c7105 --- /dev/null +++ b/client/grpc/reflection/reflection.pb.go @@ -0,0 +1,936 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/base/reflection/v1beta1/reflection.proto + +package reflection + +import ( + context "context" + fmt "fmt" + grpc1 "github.com/gogo/protobuf/grpc" + proto "github.com/gogo/protobuf/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// ListAllInterfacesRequest is the request type of the ListAllInterfaces RPC. +type ListAllInterfacesRequest struct { +} + +func (m *ListAllInterfacesRequest) Reset() { *m = ListAllInterfacesRequest{} } +func (m *ListAllInterfacesRequest) String() string { return proto.CompactTextString(m) } +func (*ListAllInterfacesRequest) ProtoMessage() {} +func (*ListAllInterfacesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{0} +} +func (m *ListAllInterfacesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListAllInterfacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListAllInterfacesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListAllInterfacesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListAllInterfacesRequest.Merge(m, src) +} +func (m *ListAllInterfacesRequest) XXX_Size() int { + return m.Size() +} +func (m *ListAllInterfacesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListAllInterfacesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ListAllInterfacesRequest proto.InternalMessageInfo + +// ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC. +type ListAllInterfacesResponse struct { + // interface_names is an array of all the registered interfaces. + InterfaceNames []string `protobuf:"bytes,1,rep,name=interface_names,json=interfaceNames,proto3" json:"interface_names,omitempty"` +} + +func (m *ListAllInterfacesResponse) Reset() { *m = ListAllInterfacesResponse{} } +func (m *ListAllInterfacesResponse) String() string { return proto.CompactTextString(m) } +func (*ListAllInterfacesResponse) ProtoMessage() {} +func (*ListAllInterfacesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{1} +} +func (m *ListAllInterfacesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListAllInterfacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListAllInterfacesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListAllInterfacesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListAllInterfacesResponse.Merge(m, src) +} +func (m *ListAllInterfacesResponse) XXX_Size() int { + return m.Size() +} +func (m *ListAllInterfacesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListAllInterfacesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ListAllInterfacesResponse proto.InternalMessageInfo + +func (m *ListAllInterfacesResponse) GetInterfaceNames() []string { + if m != nil { + return m.InterfaceNames + } + return nil +} + +// ListImplementationsRequest is the request type of the ListImplementations +// RPC. +type ListImplementationsRequest struct { + // interface_name defines the interface to query the implementations for. + InterfaceName string `protobuf:"bytes,1,opt,name=interface_name,json=interfaceName,proto3" json:"interface_name,omitempty"` +} + +func (m *ListImplementationsRequest) Reset() { *m = ListImplementationsRequest{} } +func (m *ListImplementationsRequest) String() string { return proto.CompactTextString(m) } +func (*ListImplementationsRequest) ProtoMessage() {} +func (*ListImplementationsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{2} +} +func (m *ListImplementationsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListImplementationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListImplementationsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListImplementationsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListImplementationsRequest.Merge(m, src) +} +func (m *ListImplementationsRequest) XXX_Size() int { + return m.Size() +} +func (m *ListImplementationsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListImplementationsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ListImplementationsRequest proto.InternalMessageInfo + +func (m *ListImplementationsRequest) GetInterfaceName() string { + if m != nil { + return m.InterfaceName + } + return "" +} + +// ListImplementationsResponse is the response type of the ListImplementations +// RPC. +type ListImplementationsResponse struct { + ImplementationMessageNames []string `protobuf:"bytes,1,rep,name=implementation_message_names,json=implementationMessageNames,proto3" json:"implementation_message_names,omitempty"` +} + +func (m *ListImplementationsResponse) Reset() { *m = ListImplementationsResponse{} } +func (m *ListImplementationsResponse) String() string { return proto.CompactTextString(m) } +func (*ListImplementationsResponse) ProtoMessage() {} +func (*ListImplementationsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d48c054165687f5c, []int{3} +} +func (m *ListImplementationsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListImplementationsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListImplementationsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListImplementationsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListImplementationsResponse.Merge(m, src) +} +func (m *ListImplementationsResponse) XXX_Size() int { + return m.Size() +} +func (m *ListImplementationsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListImplementationsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ListImplementationsResponse proto.InternalMessageInfo + +func (m *ListImplementationsResponse) GetImplementationMessageNames() []string { + if m != nil { + return m.ImplementationMessageNames + } + return nil +} + +func init() { + proto.RegisterType((*ListAllInterfacesRequest)(nil), "cosmos.base.reflection.v1beta1.ListAllInterfacesRequest") + proto.RegisterType((*ListAllInterfacesResponse)(nil), "cosmos.base.reflection.v1beta1.ListAllInterfacesResponse") + proto.RegisterType((*ListImplementationsRequest)(nil), "cosmos.base.reflection.v1beta1.ListImplementationsRequest") + proto.RegisterType((*ListImplementationsResponse)(nil), "cosmos.base.reflection.v1beta1.ListImplementationsResponse") +} + +func init() { + proto.RegisterFile("cosmos/base/reflection/v1beta1/reflection.proto", fileDescriptor_d48c054165687f5c) +} + +var fileDescriptor_d48c054165687f5c = []byte{ + // 395 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4f, 0xce, 0x2f, 0xce, + 0xcd, 0x2f, 0xd6, 0x4f, 0x4a, 0x2c, 0x4e, 0xd5, 0x2f, 0x4a, 0x4d, 0xcb, 0x49, 0x4d, 0x2e, 0xc9, + 0xcc, 0xcf, 0xd3, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0x44, 0x12, 0xd2, 0x2b, 0x28, 0xca, + 0x2f, 0xc9, 0x17, 0x92, 0x83, 0x68, 0xd0, 0x03, 0x69, 0xd0, 0x43, 0x92, 0x85, 0x6a, 0x90, 0x92, + 0x49, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0x4f, 0xcc, 0xcb, 0xcb, 0x2f, + 0x49, 0x04, 0x49, 0x17, 0x43, 0x74, 0x2b, 0x49, 0x71, 0x49, 0xf8, 0x64, 0x16, 0x97, 0x38, 0xe6, + 0xe4, 0x78, 0xe6, 0x95, 0xa4, 0x16, 0xa5, 0x25, 0x26, 0xa7, 0x16, 0x07, 0xa5, 0x16, 0x96, 0xa6, + 0x16, 0x97, 0x28, 0xb9, 0x70, 0x49, 0x62, 0x91, 0x2b, 0x2e, 0xc8, 0xcf, 0x2b, 0x4e, 0x15, 0x52, + 0xe7, 0xe2, 0xcf, 0x84, 0x89, 0xc6, 0xe7, 0x25, 0xe6, 0xa6, 0x16, 0x4b, 0x30, 0x2a, 0x30, 0x6b, + 0x70, 0x06, 0xf1, 0xc1, 0x85, 0xfd, 0x40, 0xa2, 0x4a, 0xce, 0x5c, 0x52, 0x20, 0x53, 0x3c, 0x73, + 0x0b, 0x72, 0x52, 0x73, 0x53, 0xf3, 0xa0, 0xd6, 0x43, 0xed, 0x10, 0x52, 0xe5, 0xe2, 0x43, 0x35, + 0x46, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x88, 0x17, 0xc5, 0x14, 0xa5, 0x78, 0x2e, 0x69, 0xac, + 0x86, 0x40, 0x1d, 0xe3, 0xc0, 0x25, 0x93, 0x89, 0x22, 0x15, 0x9f, 0x9b, 0x5a, 0x5c, 0x9c, 0x98, + 0x8e, 0xea, 0x32, 0x29, 0x54, 0x35, 0xbe, 0x10, 0x25, 0x60, 0x57, 0x1a, 0xed, 0x60, 0xe6, 0x12, + 0x0c, 0x82, 0x07, 0x5e, 0x70, 0x6a, 0x51, 0x59, 0x66, 0x72, 0xaa, 0xd0, 0x1e, 0x46, 0x2e, 0x41, + 0x8c, 0x20, 0x10, 0xb2, 0xd0, 0xc3, 0x1f, 0xe4, 0x7a, 0xb8, 0x42, 0x54, 0xca, 0x92, 0x0c, 0x9d, + 0x10, 0x2f, 0x2a, 0x19, 0x35, 0x5d, 0x7e, 0x32, 0x99, 0x49, 0x47, 0x48, 0x8b, 0x50, 0x02, 0xc9, + 0x44, 0x38, 0xf4, 0x31, 0x23, 0x97, 0x30, 0x96, 0x60, 0x13, 0xb2, 0x22, 0xc6, 0x19, 0xd8, 0x23, + 0x4c, 0xca, 0x9a, 0x2c, 0xbd, 0x50, 0x4f, 0x04, 0x83, 0x3d, 0xe1, 0x2b, 0xe4, 0x4d, 0xbc, 0x27, + 0xf4, 0xab, 0x51, 0xd3, 0x47, 0xad, 0x3e, 0x6a, 0x2c, 0x16, 0x3b, 0xf9, 0x9e, 0x78, 0x24, 0xc7, + 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, + 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x71, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, + 0x7e, 0x2e, 0xcc, 0x42, 0x08, 0xa5, 0x5b, 0x9c, 0x92, 0xad, 0x9f, 0x9c, 0x93, 0x99, 0x9a, 0x57, + 0xa2, 0x9f, 0x5e, 0x54, 0x90, 0x8c, 0xe4, 0x84, 0x24, 0x36, 0x70, 0xc6, 0x30, 0x06, 0x04, 0x00, + 0x00, 0xff, 0xff, 0x32, 0x5b, 0x2b, 0x51, 0x89, 0x03, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// ReflectionServiceClient is the client API for ReflectionService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type ReflectionServiceClient interface { + // ListAllInterfaces lists all the interfaces registered in the interface + // registry. + ListAllInterfaces(ctx context.Context, in *ListAllInterfacesRequest, opts ...grpc.CallOption) (*ListAllInterfacesResponse, error) + // ListImplementations list all the concrete types that implement a given + // interface. + ListImplementations(ctx context.Context, in *ListImplementationsRequest, opts ...grpc.CallOption) (*ListImplementationsResponse, error) +} + +type reflectionServiceClient struct { + cc grpc1.ClientConn +} + +func NewReflectionServiceClient(cc grpc1.ClientConn) ReflectionServiceClient { + return &reflectionServiceClient{cc} +} + +func (c *reflectionServiceClient) ListAllInterfaces(ctx context.Context, in *ListAllInterfacesRequest, opts ...grpc.CallOption) (*ListAllInterfacesResponse, error) { + out := new(ListAllInterfacesResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/ListAllInterfaces", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *reflectionServiceClient) ListImplementations(ctx context.Context, in *ListImplementationsRequest, opts ...grpc.CallOption) (*ListImplementationsResponse, error) { + out := new(ListImplementationsResponse) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/ListImplementations", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ReflectionServiceServer is the server API for ReflectionService service. +type ReflectionServiceServer interface { + // ListAllInterfaces lists all the interfaces registered in the interface + // registry. + ListAllInterfaces(context.Context, *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) + // ListImplementations list all the concrete types that implement a given + // interface. + ListImplementations(context.Context, *ListImplementationsRequest) (*ListImplementationsResponse, error) +} + +// UnimplementedReflectionServiceServer can be embedded to have forward compatible implementations. +type UnimplementedReflectionServiceServer struct { +} + +func (*UnimplementedReflectionServiceServer) ListAllInterfaces(ctx context.Context, req *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAllInterfaces not implemented") +} +func (*UnimplementedReflectionServiceServer) ListImplementations(ctx context.Context, req *ListImplementationsRequest) (*ListImplementationsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListImplementations not implemented") +} + +func RegisterReflectionServiceServer(s grpc1.Server, srv ReflectionServiceServer) { + s.RegisterService(&_ReflectionService_serviceDesc, srv) +} + +func _ReflectionService_ListAllInterfaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListAllInterfacesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReflectionServiceServer).ListAllInterfaces(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/ListAllInterfaces", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReflectionServiceServer).ListAllInterfaces(ctx, req.(*ListAllInterfacesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ReflectionService_ListImplementations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListImplementationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ReflectionServiceServer).ListImplementations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/ListImplementations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ReflectionServiceServer).ListImplementations(ctx, req.(*ListImplementationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _ReflectionService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "cosmos.base.reflection.v1beta1.ReflectionService", + HandlerType: (*ReflectionServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListAllInterfaces", + Handler: _ReflectionService_ListAllInterfaces_Handler, + }, + { + MethodName: "ListImplementations", + Handler: _ReflectionService_ListImplementations_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "cosmos/base/reflection/v1beta1/reflection.proto", +} + +func (m *ListAllInterfacesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListAllInterfacesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListAllInterfacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *ListAllInterfacesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListAllInterfacesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListAllInterfacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.InterfaceNames) > 0 { + for iNdEx := len(m.InterfaceNames) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.InterfaceNames[iNdEx]) + copy(dAtA[i:], m.InterfaceNames[iNdEx]) + i = encodeVarintReflection(dAtA, i, uint64(len(m.InterfaceNames[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *ListImplementationsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListImplementationsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListImplementationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.InterfaceName) > 0 { + i -= len(m.InterfaceName) + copy(dAtA[i:], m.InterfaceName) + i = encodeVarintReflection(dAtA, i, uint64(len(m.InterfaceName))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ListImplementationsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListImplementationsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListImplementationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ImplementationMessageNames) > 0 { + for iNdEx := len(m.ImplementationMessageNames) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ImplementationMessageNames[iNdEx]) + copy(dAtA[i:], m.ImplementationMessageNames[iNdEx]) + i = encodeVarintReflection(dAtA, i, uint64(len(m.ImplementationMessageNames[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintReflection(dAtA []byte, offset int, v uint64) int { + offset -= sovReflection(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *ListAllInterfacesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *ListAllInterfacesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.InterfaceNames) > 0 { + for _, s := range m.InterfaceNames { + l = len(s) + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func (m *ListImplementationsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.InterfaceName) + if l > 0 { + n += 1 + l + sovReflection(uint64(l)) + } + return n +} + +func (m *ListImplementationsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.ImplementationMessageNames) > 0 { + for _, s := range m.ImplementationMessageNames { + l = len(s) + n += 1 + l + sovReflection(uint64(l)) + } + } + return n +} + +func sovReflection(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozReflection(x uint64) (n int) { + return sovReflection(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *ListAllInterfacesRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListAllInterfacesRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListAllInterfacesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListAllInterfacesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListAllInterfacesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListAllInterfacesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InterfaceNames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InterfaceNames = append(m.InterfaceNames, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListImplementationsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListImplementationsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListImplementationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InterfaceName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InterfaceName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListImplementationsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListImplementationsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListImplementationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ImplementationMessageNames", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthReflection + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthReflection + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ImplementationMessageNames = append(m.ImplementationMessageNames, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipReflection(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthReflection + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipReflection(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowReflection + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowReflection + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowReflection + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthReflection + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupReflection + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthReflection + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthReflection = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowReflection = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupReflection = fmt.Errorf("proto: unexpected end of group") +) diff --git a/client/grpc/reflection/reflection.pb.gw.go b/client/grpc/reflection/reflection.pb.gw.go new file mode 100644 index 000000000000..7bb8a5e12836 --- /dev/null +++ b/client/grpc/reflection/reflection.pb.gw.go @@ -0,0 +1,246 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: cosmos/base/reflection/v1beta1/reflection.proto + +/* +Package reflection is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package reflection + +import ( + "context" + "io" + "net/http" + + "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/status" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage + +func request_ReflectionService_ListAllInterfaces_0(ctx context.Context, marshaler runtime.Marshaler, client ReflectionServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListAllInterfacesRequest + var metadata runtime.ServerMetadata + + msg, err := client.ListAllInterfaces(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ReflectionService_ListAllInterfaces_0(ctx context.Context, marshaler runtime.Marshaler, server ReflectionServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListAllInterfacesRequest + var metadata runtime.ServerMetadata + + msg, err := server.ListAllInterfaces(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ReflectionService_ListImplementations_0(ctx context.Context, marshaler runtime.Marshaler, client ReflectionServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListImplementationsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["interface_name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "interface_name") + } + + protoReq.InterfaceName, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "interface_name", err) + } + + msg, err := client.ListImplementations(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ReflectionService_ListImplementations_0(ctx context.Context, marshaler runtime.Marshaler, server ReflectionServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListImplementationsRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["interface_name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "interface_name") + } + + protoReq.InterfaceName, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "interface_name", err) + } + + msg, err := server.ListImplementations(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterReflectionServiceHandlerServer registers the http handlers for service ReflectionService to "mux". +// UnaryRPC :call ReflectionServiceServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features (such as grpc.SendHeader, etc) to stop working. Consider using RegisterReflectionServiceHandlerFromEndpoint instead. +func RegisterReflectionServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ReflectionServiceServer) error { + + mux.Handle("GET", pattern_ReflectionService_ListAllInterfaces_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ReflectionService_ListAllInterfaces_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_ListAllInterfaces_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ReflectionService_ListImplementations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ReflectionService_ListImplementations_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_ListImplementations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterReflectionServiceHandlerFromEndpoint is same as RegisterReflectionServiceHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterReflectionServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterReflectionServiceHandler(ctx, mux, conn) +} + +// RegisterReflectionServiceHandler registers the http handlers for service ReflectionService to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterReflectionServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterReflectionServiceHandlerClient(ctx, mux, NewReflectionServiceClient(conn)) +} + +// RegisterReflectionServiceHandlerClient registers the http handlers for service ReflectionService +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ReflectionServiceClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ReflectionServiceClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "ReflectionServiceClient" to call the correct interceptors. +func RegisterReflectionServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ReflectionServiceClient) error { + + mux.Handle("GET", pattern_ReflectionService_ListAllInterfaces_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ReflectionService_ListAllInterfaces_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_ListAllInterfaces_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_ReflectionService_ListImplementations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ReflectionService_ListImplementations_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ReflectionService_ListImplementations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_ReflectionService_ListAllInterfaces_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "reflection", "v1beta1", "interfaces"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_ReflectionService_ListImplementations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"cosmos", "base", "reflection", "v1beta1", "interfaces", "interface_name", "implementations"}, "", runtime.AssumeColonVerbOpt(false))) +) + +var ( + forward_ReflectionService_ListAllInterfaces_0 = runtime.ForwardResponseMessage + + forward_ReflectionService_ListImplementations_0 = runtime.ForwardResponseMessage +) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index b12a4443139b..22e023eecb1d 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -117,40 +117,44 @@ - [Pairs](#cosmos.base.kv.v1beta1.Pairs) - [cosmos/base/reflection/v1beta1/reflection.proto](#cosmos/base/reflection/v1beta1/reflection.proto) - - [AppDescriptor](#cosmos.base.reflection.v1beta1.AppDescriptor) - - [AuthnDescriptor](#cosmos.base.reflection.v1beta1.AuthnDescriptor) - - [ChainDescriptor](#cosmos.base.reflection.v1beta1.ChainDescriptor) - - [CodecDescriptor](#cosmos.base.reflection.v1beta1.CodecDescriptor) - - [ConfigurationDescriptor](#cosmos.base.reflection.v1beta1.ConfigurationDescriptor) - - [GetAuthnDescriptorRequest](#cosmos.base.reflection.v1beta1.GetAuthnDescriptorRequest) - - [GetAuthnDescriptorResponse](#cosmos.base.reflection.v1beta1.GetAuthnDescriptorResponse) - - [GetChainDescriptorRequest](#cosmos.base.reflection.v1beta1.GetChainDescriptorRequest) - - [GetChainDescriptorResponse](#cosmos.base.reflection.v1beta1.GetChainDescriptorResponse) - - [GetCodecDescriptorRequest](#cosmos.base.reflection.v1beta1.GetCodecDescriptorRequest) - - [GetCodecDescriptorResponse](#cosmos.base.reflection.v1beta1.GetCodecDescriptorResponse) - - [GetConfigurationDescriptorRequest](#cosmos.base.reflection.v1beta1.GetConfigurationDescriptorRequest) - - [GetConfigurationDescriptorResponse](#cosmos.base.reflection.v1beta1.GetConfigurationDescriptorResponse) - - [GetQueryServicesDescriptorRequest](#cosmos.base.reflection.v1beta1.GetQueryServicesDescriptorRequest) - - [GetQueryServicesDescriptorResponse](#cosmos.base.reflection.v1beta1.GetQueryServicesDescriptorResponse) - - [GetTxDescriptorRequest](#cosmos.base.reflection.v1beta1.GetTxDescriptorRequest) - - [GetTxDescriptorResponse](#cosmos.base.reflection.v1beta1.GetTxDescriptorResponse) - - [InterfaceAcceptingMessageDescriptor](#cosmos.base.reflection.v1beta1.InterfaceAcceptingMessageDescriptor) - - [InterfaceDescriptor](#cosmos.base.reflection.v1beta1.InterfaceDescriptor) - - [InterfaceImplementerDescriptor](#cosmos.base.reflection.v1beta1.InterfaceImplementerDescriptor) - [ListAllInterfacesRequest](#cosmos.base.reflection.v1beta1.ListAllInterfacesRequest) - [ListAllInterfacesResponse](#cosmos.base.reflection.v1beta1.ListAllInterfacesResponse) - [ListImplementationsRequest](#cosmos.base.reflection.v1beta1.ListImplementationsRequest) - [ListImplementationsResponse](#cosmos.base.reflection.v1beta1.ListImplementationsResponse) - - [MsgDescriptor](#cosmos.base.reflection.v1beta1.MsgDescriptor) - - [QueryMethodDescriptor](#cosmos.base.reflection.v1beta1.QueryMethodDescriptor) - - [QueryServiceDescriptor](#cosmos.base.reflection.v1beta1.QueryServiceDescriptor) - - [QueryServicesDescriptor](#cosmos.base.reflection.v1beta1.QueryServicesDescriptor) - - [ServiceMsgDescriptor](#cosmos.base.reflection.v1beta1.ServiceMsgDescriptor) - - [SigningModeDescriptor](#cosmos.base.reflection.v1beta1.SigningModeDescriptor) - - [TxDescriptor](#cosmos.base.reflection.v1beta1.TxDescriptor) - [ReflectionService](#cosmos.base.reflection.v1beta1.ReflectionService) +- [cosmos/base/reflection/v2alpha1/reflection.proto](#cosmos/base/reflection/v2alpha1/reflection.proto) + - [AppDescriptor](#cosmos.base.reflection.v2alpha1.AppDescriptor) + - [AuthnDescriptor](#cosmos.base.reflection.v2alpha1.AuthnDescriptor) + - [ChainDescriptor](#cosmos.base.reflection.v2alpha1.ChainDescriptor) + - [CodecDescriptor](#cosmos.base.reflection.v2alpha1.CodecDescriptor) + - [ConfigurationDescriptor](#cosmos.base.reflection.v2alpha1.ConfigurationDescriptor) + - [GetAuthnDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetAuthnDescriptorRequest) + - [GetAuthnDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse) + - [GetChainDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetChainDescriptorRequest) + - [GetChainDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse) + - [GetCodecDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetCodecDescriptorRequest) + - [GetCodecDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse) + - [GetConfigurationDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorRequest) + - [GetConfigurationDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse) + - [GetQueryServicesDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorRequest) + - [GetQueryServicesDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse) + - [GetTxDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetTxDescriptorRequest) + - [GetTxDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse) + - [InterfaceAcceptingMessageDescriptor](#cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor) + - [InterfaceDescriptor](#cosmos.base.reflection.v2alpha1.InterfaceDescriptor) + - [InterfaceImplementerDescriptor](#cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor) + - [MsgDescriptor](#cosmos.base.reflection.v2alpha1.MsgDescriptor) + - [QueryMethodDescriptor](#cosmos.base.reflection.v2alpha1.QueryMethodDescriptor) + - [QueryServiceDescriptor](#cosmos.base.reflection.v2alpha1.QueryServiceDescriptor) + - [QueryServicesDescriptor](#cosmos.base.reflection.v2alpha1.QueryServicesDescriptor) + - [ServiceMsgDescriptor](#cosmos.base.reflection.v2alpha1.ServiceMsgDescriptor) + - [SigningModeDescriptor](#cosmos.base.reflection.v2alpha1.SigningModeDescriptor) + - [TxDescriptor](#cosmos.base.reflection.v2alpha1.TxDescriptor) + + - [ReflectionService](#cosmos.base.reflection.v2alpha1.ReflectionService) + - [cosmos/base/snapshots/v1beta1/snapshot.proto](#cosmos/base/snapshots/v1beta1/snapshot.proto) - [Metadata](#cosmos.base.snapshots.v1beta1.Metadata) - [Snapshot](#cosmos.base.snapshots.v1beta1.Snapshot) @@ -2046,7 +2050,91 @@ Pairs defines a repeated slice of Pair objects. - + + +### ListAllInterfacesRequest +ListAllInterfacesRequest is the request type of the ListAllInterfaces RPC. + + + + + + + + +### ListAllInterfacesResponse +ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `interface_names` | [string](#string) | repeated | interface_names is an array of all the registered interfaces. | + + + + + + + + +### ListImplementationsRequest +ListImplementationsRequest is the request type of the ListImplementations +RPC. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `interface_name` | [string](#string) | | interface_name defines the interface to query the implementations for. | + + + + + + + + +### ListImplementationsResponse +ListImplementationsResponse is the response type of the ListImplementations +RPC. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `implementation_message_names` | [string](#string) | repeated | | + + + + + + + + + + + + + + +### ReflectionService +ReflectionService defines a service for interface reflection. + +| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | +| ----------- | ------------ | ------------- | ------------| ------- | -------- | +| `ListAllInterfaces` | [ListAllInterfacesRequest](#cosmos.base.reflection.v1beta1.ListAllInterfacesRequest) | [ListAllInterfacesResponse](#cosmos.base.reflection.v1beta1.ListAllInterfacesResponse) | ListAllInterfaces lists all the interfaces registered in the interface registry. | GET|/cosmos/base/reflection/v1beta1/interfaces| +| `ListImplementations` | [ListImplementationsRequest](#cosmos.base.reflection.v1beta1.ListImplementationsRequest) | [ListImplementationsResponse](#cosmos.base.reflection.v1beta1.ListImplementationsResponse) | ListImplementations list all the concrete types that implement a given interface. | GET|/cosmos/base/reflection/v1beta1/interfaces/{interface_name}/implementations| + + + + + + +

Top

+ +## cosmos/base/reflection/v2alpha1/reflection.proto + + + + ### AppDescriptor AppDescriptor describes a cosmos-sdk based application @@ -2054,19 +2142,19 @@ AppDescriptor describes a cosmos-sdk based application | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `authn` | [AuthnDescriptor](#cosmos.base.reflection.v1beta1.AuthnDescriptor) | | AuthnDescriptor provides information on how to authenticate transactions on the application NOTE: experimental and subject to change in future releases. | -| `chain` | [ChainDescriptor](#cosmos.base.reflection.v1beta1.ChainDescriptor) | | chain provides the chain descriptor | -| `codec` | [CodecDescriptor](#cosmos.base.reflection.v1beta1.CodecDescriptor) | | codec provides metadata information regarding codec related types | -| `configuration` | [ConfigurationDescriptor](#cosmos.base.reflection.v1beta1.ConfigurationDescriptor) | | configuration provides metadata information regarding the sdk.Config type | -| `query_services` | [QueryServicesDescriptor](#cosmos.base.reflection.v1beta1.QueryServicesDescriptor) | | query_services provides metadata information regarding the available queriable endpoints | -| `tx` | [TxDescriptor](#cosmos.base.reflection.v1beta1.TxDescriptor) | | tx provides metadata information regarding how to send transactions to the given application | +| `authn` | [AuthnDescriptor](#cosmos.base.reflection.v2alpha1.AuthnDescriptor) | | AuthnDescriptor provides information on how to authenticate transactions on the application NOTE: experimental and subject to change in future releases. | +| `chain` | [ChainDescriptor](#cosmos.base.reflection.v2alpha1.ChainDescriptor) | | chain provides the chain descriptor | +| `codec` | [CodecDescriptor](#cosmos.base.reflection.v2alpha1.CodecDescriptor) | | codec provides metadata information regarding codec related types | +| `configuration` | [ConfigurationDescriptor](#cosmos.base.reflection.v2alpha1.ConfigurationDescriptor) | | configuration provides metadata information regarding the sdk.Config type | +| `query_services` | [QueryServicesDescriptor](#cosmos.base.reflection.v2alpha1.QueryServicesDescriptor) | | query_services provides metadata information regarding the available queriable endpoints | +| `tx` | [TxDescriptor](#cosmos.base.reflection.v2alpha1.TxDescriptor) | | tx provides metadata information regarding how to send transactions to the given application | - + ### AuthnDescriptor AuthnDescriptor provides information on how to sign transactions without relying @@ -2075,14 +2163,14 @@ on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `sign_modes` | [SigningModeDescriptor](#cosmos.base.reflection.v1beta1.SigningModeDescriptor) | repeated | sign_modes defines the supported signature algorithm | +| `sign_modes` | [SigningModeDescriptor](#cosmos.base.reflection.v2alpha1.SigningModeDescriptor) | repeated | sign_modes defines the supported signature algorithm | - + ### ChainDescriptor ChainDescriptor describes chain information of the application @@ -2097,7 +2185,7 @@ ChainDescriptor describes chain information of the application - + ### CodecDescriptor CodecDescriptor describes the registered interfaces and provides metadata information on the types @@ -2105,14 +2193,14 @@ CodecDescriptor describes the registered interfaces and provides metadata inform | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `interfaces` | [InterfaceDescriptor](#cosmos.base.reflection.v1beta1.InterfaceDescriptor) | repeated | interfaces is a list of the registerted interfaces descriptors | +| `interfaces` | [InterfaceDescriptor](#cosmos.base.reflection.v2alpha1.InterfaceDescriptor) | repeated | interfaces is a list of the registerted interfaces descriptors | - + ### ConfigurationDescriptor ConfigurationDescriptor contains metadata information on the sdk.Config @@ -2127,7 +2215,7 @@ ConfigurationDescriptor contains metadata information on the sdk.Config - + ### GetAuthnDescriptorRequest GetAuthnDescriptorRequest is the request used for the GetAuthnDescriptor RPC @@ -2137,7 +2225,7 @@ GetAuthnDescriptorRequest is the request used for the GetAuthnDescriptor RPC - + ### GetAuthnDescriptorResponse GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC @@ -2145,14 +2233,14 @@ GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RP | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `authn` | [AuthnDescriptor](#cosmos.base.reflection.v1beta1.AuthnDescriptor) | | authn describes how to authenticate to the application when sending transactions | +| `authn` | [AuthnDescriptor](#cosmos.base.reflection.v2alpha1.AuthnDescriptor) | | authn describes how to authenticate to the application when sending transactions | - + ### GetChainDescriptorRequest GetChainDescriptorRequest is the request used for the GetChainDescriptor RPC @@ -2162,7 +2250,7 @@ GetChainDescriptorRequest is the request used for the GetChainDescriptor RPC - + ### GetChainDescriptorResponse GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC @@ -2170,14 +2258,14 @@ GetChainDescriptorResponse is the response returned by the GetChainDescriptor RP | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `chain` | [ChainDescriptor](#cosmos.base.reflection.v1beta1.ChainDescriptor) | | chain describes application chain information | +| `chain` | [ChainDescriptor](#cosmos.base.reflection.v2alpha1.ChainDescriptor) | | chain describes application chain information | - + ### GetCodecDescriptorRequest GetCodecDescriptorRequest is the request used for the GetCodecDescriptor RPC @@ -2187,7 +2275,7 @@ GetCodecDescriptorRequest is the request used for the GetCodecDescriptor RPC - + ### GetCodecDescriptorResponse GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC @@ -2195,14 +2283,14 @@ GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RP | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `codec` | [CodecDescriptor](#cosmos.base.reflection.v1beta1.CodecDescriptor) | | codec describes the application codec such as registered interfaces and implementations | +| `codec` | [CodecDescriptor](#cosmos.base.reflection.v2alpha1.CodecDescriptor) | | codec describes the application codec such as registered interfaces and implementations | - + ### GetConfigurationDescriptorRequest GetConfigurationDescriptorRequest is the request used for the GetConfigurationDescriptor RPC @@ -2212,7 +2300,7 @@ GetConfigurationDescriptorRequest is the request used for the GetConfigurationDe - + ### GetConfigurationDescriptorResponse GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC @@ -2220,14 +2308,14 @@ GetConfigurationDescriptorResponse is the response returned by the GetConfigurat | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `config` | [ConfigurationDescriptor](#cosmos.base.reflection.v1beta1.ConfigurationDescriptor) | | config describes the application's sdk.Config | +| `config` | [ConfigurationDescriptor](#cosmos.base.reflection.v2alpha1.ConfigurationDescriptor) | | config describes the application's sdk.Config | - + ### GetQueryServicesDescriptorRequest GetQueryServicesDescriptorRequest is the request used for the GetQueryServicesDescriptor RPC @@ -2237,7 +2325,7 @@ GetQueryServicesDescriptorRequest is the request used for the GetQueryServicesDe - + ### GetQueryServicesDescriptorResponse GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC @@ -2245,14 +2333,14 @@ GetQueryServicesDescriptorResponse is the response returned by the GetQueryServi | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `queries` | [QueryServicesDescriptor](#cosmos.base.reflection.v1beta1.QueryServicesDescriptor) | | queries provides information on the available queryable services | +| `queries` | [QueryServicesDescriptor](#cosmos.base.reflection.v2alpha1.QueryServicesDescriptor) | | queries provides information on the available queryable services | - + ### GetTxDescriptorRequest GetTxDescriptorRequest is the request used for the GetTxDescriptor RPC @@ -2262,7 +2350,7 @@ GetTxDescriptorRequest is the request used for the GetTxDescriptor RPC - + ### GetTxDescriptorResponse GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC @@ -2270,14 +2358,14 @@ GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `tx` | [TxDescriptor](#cosmos.base.reflection.v1beta1.TxDescriptor) | | tx provides information on msgs that can be forwarded to the application alongside the accepted transaction protobuf type | +| `tx` | [TxDescriptor](#cosmos.base.reflection.v2alpha1.TxDescriptor) | | tx provides information on msgs that can be forwarded to the application alongside the accepted transaction protobuf type | - + ### InterfaceAcceptingMessageDescriptor InterfaceAcceptingMessageDescriptor describes a protobuf message which contains @@ -2294,7 +2382,7 @@ an interface represented as a google.protobuf.Any - + ### InterfaceDescriptor InterfaceDescriptor describes the implementation of an interface @@ -2303,15 +2391,15 @@ InterfaceDescriptor describes the implementation of an interface | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `fullname` | [string](#string) | | fullname is the name of the interface | -| `interface_accepting_messages` | [InterfaceAcceptingMessageDescriptor](#cosmos.base.reflection.v1beta1.InterfaceAcceptingMessageDescriptor) | repeated | interface_accepting_messages contains information regarding the proto messages which contain the interface as google.protobuf.Any field | -| `interface_implementers` | [InterfaceImplementerDescriptor](#cosmos.base.reflection.v1beta1.InterfaceImplementerDescriptor) | repeated | interface_implementers is a list of the descriptors of the interface implementers | +| `interface_accepting_messages` | [InterfaceAcceptingMessageDescriptor](#cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor) | repeated | interface_accepting_messages contains information regarding the proto messages which contain the interface as google.protobuf.Any field | +| `interface_implementers` | [InterfaceImplementerDescriptor](#cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor) | repeated | interface_implementers is a list of the descriptors of the interface implementers | - + ### InterfaceImplementerDescriptor InterfaceImplementerDescriptor describes an interface implementer @@ -2327,64 +2415,7 @@ InterfaceImplementerDescriptor describes an interface implementer - - -### ListAllInterfacesRequest -ListAllInterfacesRequest is the request type of the ListAllInterfaces RPC. - - - - - - - - -### ListAllInterfacesResponse -ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `interface_names` | [string](#string) | repeated | interface_names is an array of all the registered interfaces. | - - - - - - - - -### ListImplementationsRequest -ListImplementationsRequest is the request type of the ListImplementations -RPC. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `interface_name` | [string](#string) | | interface_name defines the interface to query the implementations for. | - - - - - - - - -### ListImplementationsResponse -ListImplementationsResponse is the response type of the ListImplementations -RPC. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `implementation_message_names` | [string](#string) | repeated | | - - - - - - - + ### MsgDescriptor MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction @@ -2392,14 +2423,14 @@ MsgDescriptor describes a cosmos-sdk message that can be delivered with a transa | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `service_msg` | [ServiceMsgDescriptor](#cosmos.base.reflection.v1beta1.ServiceMsgDescriptor) | | service_msg is used when the message is an sdk.ServiceMsg type | +| `service_msg` | [ServiceMsgDescriptor](#cosmos.base.reflection.v2alpha1.ServiceMsgDescriptor) | | service_msg is used when the message is an sdk.ServiceMsg type | - + ### QueryMethodDescriptor QueryMethodDescriptor describes a queryable method of a query service @@ -2417,7 +2448,7 @@ because it would be redundant with the grpc reflection service - + ### QueryServiceDescriptor QueryServiceDescriptor describes a cosmos-sdk queryable service @@ -2426,14 +2457,15 @@ QueryServiceDescriptor describes a cosmos-sdk queryable service | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `fullname` | [string](#string) | | fullname is the protobuf fullname of the service descriptor | -| `methods` | [QueryMethodDescriptor](#cosmos.base.reflection.v1beta1.QueryMethodDescriptor) | repeated | methods provides a list of query service methods | +| `is_module` | [bool](#bool) | | is_module describes if this service is actually exposed by an application's module | +| `methods` | [QueryMethodDescriptor](#cosmos.base.reflection.v2alpha1.QueryMethodDescriptor) | repeated | methods provides a list of query service methods | - + ### QueryServicesDescriptor QueryServicesDescriptor contains the list of cosmos-sdk queriable services @@ -2441,14 +2473,14 @@ QueryServicesDescriptor contains the list of cosmos-sdk queriable services | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `query_services` | [QueryServiceDescriptor](#cosmos.base.reflection.v1beta1.QueryServiceDescriptor) | repeated | query_services is a list of cosmos-sdk QueryServiceDescriptor | +| `query_services` | [QueryServiceDescriptor](#cosmos.base.reflection.v2alpha1.QueryServiceDescriptor) | repeated | query_services is a list of cosmos-sdk QueryServiceDescriptor | - + ### ServiceMsgDescriptor ServiceMsgDescriptor describes an sdk.ServiceMsg type @@ -2466,7 +2498,7 @@ ServiceMsgDescriptor describes an sdk.ServiceMsg type - + ### SigningModeDescriptor SigningModeDescriptor provides information on a signing flow of the application @@ -2486,7 +2518,7 @@ this another time - + ### TxDescriptor TxDescriptor describes the accepted transaction type @@ -2495,7 +2527,7 @@ TxDescriptor describes the accepted transaction type | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `fullname` | [string](#string) | | fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) it is not meant to support polymorphism of transaction types, it is supposed to be used by reflection clients to understand if they can handle a specific transaction type in an application. | -| `msgs` | [MsgDescriptor](#cosmos.base.reflection.v1beta1.MsgDescriptor) | repeated | msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) NOTE: not to be confused with proto.Message types | +| `msgs` | [MsgDescriptor](#cosmos.base.reflection.v2alpha1.MsgDescriptor) | repeated | msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) NOTE: not to be confused with proto.Message types | @@ -2508,21 +2540,19 @@ TxDescriptor describes the accepted transaction type - + ### ReflectionService ReflectionService defines a service for application reflection. | Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | | ----------- | ------------ | ------------- | ------------| ------- | -------- | -| `GetAuthnDescriptor` | [GetAuthnDescriptorRequest](#cosmos.base.reflection.v1beta1.GetAuthnDescriptorRequest) | [GetAuthnDescriptorResponse](#cosmos.base.reflection.v1beta1.GetAuthnDescriptorResponse) | GetAuthnDescriptor returns information on how to authenticate transactions in the application NOTE: this RPC is still experimental and might be subject to breaking changes or removal in future releases of the cosmos-sdk. | GET|/cosmos/base/reflection/v1beta1/app_descriptor/authn| -| `GetChainDescriptor` | [GetChainDescriptorRequest](#cosmos.base.reflection.v1beta1.GetChainDescriptorRequest) | [GetChainDescriptorResponse](#cosmos.base.reflection.v1beta1.GetChainDescriptorResponse) | GetChainDescriptor returns the description of the chain | GET|/cosmos/base/reflection/v1beta1/app_descriptor/chain| -| `GetCodecDescriptor` | [GetCodecDescriptorRequest](#cosmos.base.reflection.v1beta1.GetCodecDescriptorRequest) | [GetCodecDescriptorResponse](#cosmos.base.reflection.v1beta1.GetCodecDescriptorResponse) | GetCodecDescriptor returns the descriptor of the codec of the application | GET|/cosmos/base/reflection/v1beta1/app_descriptor/codec| -| `GetConfigurationDescriptor` | [GetConfigurationDescriptorRequest](#cosmos.base.reflection.v1beta1.GetConfigurationDescriptorRequest) | [GetConfigurationDescriptorResponse](#cosmos.base.reflection.v1beta1.GetConfigurationDescriptorResponse) | GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application | GET|/cosmos/base/reflection/v1beta1/app_descriptor/configuration| -| `GetQueryServicesDescriptor` | [GetQueryServicesDescriptorRequest](#cosmos.base.reflection.v1beta1.GetQueryServicesDescriptorRequest) | [GetQueryServicesDescriptorResponse](#cosmos.base.reflection.v1beta1.GetQueryServicesDescriptorResponse) | GetQueryServicesDescriptor returns the available gRPC queryable services of the application | GET|/cosmos/base/reflection/v1beta1/app_descriptor/query_services| -| `GetTxDescriptor` | [GetTxDescriptorRequest](#cosmos.base.reflection.v1beta1.GetTxDescriptorRequest) | [GetTxDescriptorResponse](#cosmos.base.reflection.v1beta1.GetTxDescriptorResponse) | GetTxDescriptor returns information on the used transaction object and available msgs that can be used | GET|/cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor| -| `ListAllInterfaces` | [ListAllInterfacesRequest](#cosmos.base.reflection.v1beta1.ListAllInterfacesRequest) | [ListAllInterfacesResponse](#cosmos.base.reflection.v1beta1.ListAllInterfacesResponse) | ListAllInterfaces lists all the interfaces registered in the interface registry. | GET|/cosmos/base/reflection/v1beta1/interfaces| -| `ListImplementations` | [ListImplementationsRequest](#cosmos.base.reflection.v1beta1.ListImplementationsRequest) | [ListImplementationsResponse](#cosmos.base.reflection.v1beta1.ListImplementationsResponse) | ListImplementations list all the concrete types that implement a given interface. | GET|/cosmos/base/reflection/v1beta1/interfaces/{interface_name}/implementations| +| `GetAuthnDescriptor` | [GetAuthnDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetAuthnDescriptorRequest) | [GetAuthnDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse) | GetAuthnDescriptor returns information on how to authenticate transactions in the application NOTE: this RPC is still experimental and might be subject to breaking changes or removal in future releases of the cosmos-sdk. | GET|/cosmos/base/reflection/v1beta1/app_descriptor/authn| +| `GetChainDescriptor` | [GetChainDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetChainDescriptorRequest) | [GetChainDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse) | GetChainDescriptor returns the description of the chain | GET|/cosmos/base/reflection/v1beta1/app_descriptor/chain| +| `GetCodecDescriptor` | [GetCodecDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetCodecDescriptorRequest) | [GetCodecDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse) | GetCodecDescriptor returns the descriptor of the codec of the application | GET|/cosmos/base/reflection/v1beta1/app_descriptor/codec| +| `GetConfigurationDescriptor` | [GetConfigurationDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorRequest) | [GetConfigurationDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse) | GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application | GET|/cosmos/base/reflection/v1beta1/app_descriptor/configuration| +| `GetQueryServicesDescriptor` | [GetQueryServicesDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorRequest) | [GetQueryServicesDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse) | GetQueryServicesDescriptor returns the available gRPC queryable services of the application | GET|/cosmos/base/reflection/v1beta1/app_descriptor/query_services| +| `GetTxDescriptor` | [GetTxDescriptorRequest](#cosmos.base.reflection.v2alpha1.GetTxDescriptorRequest) | [GetTxDescriptorResponse](#cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse) | GetTxDescriptor returns information on the used transaction object and available msgs that can be used | GET|/cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor| diff --git a/proto/cosmos/base/reflection/v1beta1/reflection.proto b/proto/cosmos/base/reflection/v1beta1/reflection.proto index bce0845c6c07..b2baf0a437bb 100644 --- a/proto/cosmos/base/reflection/v1beta1/reflection.proto +++ b/proto/cosmos/base/reflection/v1beta1/reflection.proto @@ -3,161 +3,10 @@ package cosmos.base.reflection.v1beta1; import "google/api/annotations.proto"; -option go_package = "github.com/cosmos/cosmos-sdk/server/grpc/appreflection"; +option go_package = "github.com/cosmos/cosmos-sdk/client/grpc/reflection"; -// AppDescriptor describes a cosmos-sdk based application -message AppDescriptor { - // AuthnDescriptor provides information on how to authenticate transactions on the application - // NOTE: experimental and subject to change in future releases. - AuthnDescriptor authn = 1; - // chain provides the chain descriptor - ChainDescriptor chain = 2; - // codec provides metadata information regarding codec related types - CodecDescriptor codec = 3; - // configuration provides metadata information regarding the sdk.Config type - ConfigurationDescriptor configuration = 4; - // query_services provides metadata information regarding the available queriable endpoints - QueryServicesDescriptor query_services = 5; - // tx provides metadata information regarding how to send transactions to the given application - TxDescriptor tx = 6; -} - -// TxDescriptor describes the accepted transaction type -message TxDescriptor { - // fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) - // it is not meant to support polymorphism of transaction types, it is supposed to be used by - // reflection clients to understand if they can handle a specific transaction type in an application. - string fullname = 1; - // msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) - // NOTE: not to be confused with proto.Message types - repeated MsgDescriptor msgs = 2; -} - -// AuthnDescriptor provides information on how to sign transactions without relying -// on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures -message AuthnDescriptor { - // sign_modes defines the supported signature algorithm - repeated SigningModeDescriptor sign_modes = 1; -} - -// SigningModeDescriptor provides information on a signing flow of the application -// NOTE(fdymylja): here we could go as far as providing an entire flow on how -// to sign a message given a SigningModeDescriptor, but it's better to think about -// this another time -message SigningModeDescriptor { - // name defines the unique name of the signing mode - string name = 1; - // number is the unique int32 identifier for the sign_mode enum - int32 number = 2; - // authn_info_provider_method_fullname defines the fullname of the method to call to get - // the metadata required to authenticate using the provided sign_modes - string authn_info_provider_method_fullname = 3; -} - -// ChainDescriptor describes chain information of the application -message ChainDescriptor { - // id is the chain id - string id = 1; -} - -// CodecDescriptor describes the registered interfaces and provides metadata information on the types -message CodecDescriptor { - // interfaces is a list of the registerted interfaces descriptors - repeated InterfaceDescriptor interfaces = 1; -} - -// InterfaceDescriptor describes the implementation of an interface -message InterfaceDescriptor { - // fullname is the name of the interface - string fullname = 1; - // interface_accepting_messages contains information regarding the proto messages which contain the interface as google.protobuf.Any field - repeated InterfaceAcceptingMessageDescriptor interface_accepting_messages = 2; - // interface_implementers is a list of the descriptors of the interface implementers - repeated InterfaceImplementerDescriptor interface_implementers = 3; -} - -// InterfaceImplementerDescriptor describes an interface implementer -message InterfaceImplementerDescriptor { - // fullname is the protobuf queryable name of the interface implementer - string fullname = 1; - // type_url defines the type URL used when marshalling the type as any - // this is required so we can provide type safe google.protobuf.Any marshalling and - // unmarshalling, making sure that we don't accept just 'any' type - // in our interface fields - string type_url = 2; -} - -// InterfaceAcceptingMessageDescriptor describes a protobuf message which contains -// an interface represented as a google.protobuf.Any -message InterfaceAcceptingMessageDescriptor { - // fullname is the protobuf fullname of the type containing the interface - string fullname = 1; - // field_descriptor_names is a list of the protobuf name (not fullname) of the field - // which contains the interface as google.protobuf.Any (the interface is the same, but - // it can be in multiple fields of the same proto message) - repeated string field_descriptor_names = 2; -} - -// ConfigurationDescriptor contains metadata information on the sdk.Config -message ConfigurationDescriptor { - // bech32_account_address_prefix is the account address prefix - string bech32_account_address_prefix = 1; -} - -// MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction -message MsgDescriptor { - // msg contains a descriptor of sdk.ServiceMsg, note: sdk.Msg is not supported - // as every sdk.Msg is already an sdk.ServiceMsg. It is defined as a oneof in case - // different representation of a msg will be implemented. - oneof msg { - // service_msg is used when the message is an sdk.ServiceMsg type - ServiceMsgDescriptor service_msg = 1; - } -} - -// ServiceMsgDescriptor describes an sdk.ServiceMsg type -message ServiceMsgDescriptor { - // request_fullname is the protobuf fullname of the given sdk.ServiceMsg request - // this is the protobuf message type which should be used as google.protobuf.Any.value - // when delivering the msg to the DeliverTx endpoint - string request_fullname = 1; - // request_route is the sdk.ServiceMsg route, it is equal to type_url - string request_route = 2; - // request_type_url is the identifier that should be used as google.protobuf.Any.type_url - // when delivering the msg to the DeliverTx endpoint - string request_type_url = 3; - // response_fullname is the protobuf fullname of the given sdk.ServiceMsg response - string response_fullname = 4; -} - -// ReflectionService defines a service for application reflection. +// ReflectionService defines a service for interface reflection. service ReflectionService { - // GetAuthnDescriptor returns information on how to authenticate transactions in the application - // NOTE: this RPC is still experimental and might be subject to breaking changes or removal in - // future releases of the cosmos-sdk. - rpc GetAuthnDescriptor(GetAuthnDescriptorRequest) returns (GetAuthnDescriptorResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/authn"; - } - // GetChainDescriptor returns the description of the chain - rpc GetChainDescriptor(GetChainDescriptorRequest) returns (GetChainDescriptorResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/chain"; - }; - // GetCodecDescriptor returns the descriptor of the codec of the application - rpc GetCodecDescriptor(GetCodecDescriptorRequest) returns (GetCodecDescriptorResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/codec"; - } - // GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application - rpc GetConfigurationDescriptor(GetConfigurationDescriptorRequest) returns (GetConfigurationDescriptorResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/configuration"; - } - // GetQueryServicesDescriptor returns the available gRPC queryable services of the application - rpc GetQueryServicesDescriptor(GetQueryServicesDescriptorRequest) returns (GetQueryServicesDescriptorResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/query_services"; - } - // GetTxDescriptor returns information on the used transaction object and available msgs that can be used - rpc GetTxDescriptor(GetTxDescriptorRequest) returns (GetTxDescriptorResponse) { - option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor"; - } // ListAllInterfaces lists all the interfaces registered in the interface // registry. rpc ListAllInterfaces(ListAllInterfacesRequest) returns (ListAllInterfacesResponse) { @@ -172,81 +21,6 @@ service ReflectionService { }; } -// GetAuthnDescriptorRequest is the request used for the GetAuthnDescriptor RPC -message GetAuthnDescriptorRequest {} -// GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC -message GetAuthnDescriptorResponse { - // authn describes how to authenticate to the application when sending transactions - AuthnDescriptor authn = 1; -} - -// GetChainDescriptorRequest is the request used for the GetChainDescriptor RPC -message GetChainDescriptorRequest {} -// GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC -message GetChainDescriptorResponse { - // chain describes application chain information - ChainDescriptor chain = 1; -} - -// GetCodecDescriptorRequest is the request used for the GetCodecDescriptor RPC -message GetCodecDescriptorRequest {} -// GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC -message GetCodecDescriptorResponse { - // codec describes the application codec such as registered interfaces and implementations - CodecDescriptor codec = 1; -} - -// GetConfigurationDescriptorRequest is the request used for the GetConfigurationDescriptor RPC -message GetConfigurationDescriptorRequest {} -// GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC -message GetConfigurationDescriptorResponse { - // config describes the application's sdk.Config - ConfigurationDescriptor config = 1; -} - -// GetQueryServicesDescriptorRequest is the request used for the GetQueryServicesDescriptor RPC -message GetQueryServicesDescriptorRequest {} -// GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC -message GetQueryServicesDescriptorResponse { - // queries provides information on the available queryable services - QueryServicesDescriptor queries = 1; -} - -// GetTxDescriptorRequest is the request used for the GetTxDescriptor RPC -message GetTxDescriptorRequest {} -// GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC -message GetTxDescriptorResponse { - // tx provides information on msgs that can be forwarded to the application - // alongside the accepted transaction protobuf type - TxDescriptor tx = 1; -} - - -// QueryServicesDescriptor contains the list of cosmos-sdk queriable services -message QueryServicesDescriptor { - // query_services is a list of cosmos-sdk QueryServiceDescriptor - repeated QueryServiceDescriptor query_services = 1; -} - -// QueryServiceDescriptor describes a cosmos-sdk queryable service -message QueryServiceDescriptor { - // fullname is the protobuf fullname of the service descriptor - string fullname = 1; - // methods provides a list of query service methods - repeated QueryMethodDescriptor methods = 2; -} - -// QueryMethodDescriptor describes a queryable method of a query service -// no other info is provided beside method name and tendermint queryable path -// because it would be redundant with the grpc reflection service -message QueryMethodDescriptor { - // name is the protobuf name (not fullname) of the method - string name = 1; - // full_query_path is the path that can be used to query - // this method via tendermint abci.Query - string full_query_path = 2; -} - // ListAllInterfacesRequest is the request type of the ListAllInterfaces RPC. message ListAllInterfacesRequest {} @@ -267,4 +41,4 @@ message ListImplementationsRequest { // RPC. message ListImplementationsResponse { repeated string implementation_message_names = 1; -} +} \ No newline at end of file diff --git a/proto/cosmos/base/reflection/v2alpha1/reflection.proto b/proto/cosmos/base/reflection/v2alpha1/reflection.proto new file mode 100644 index 000000000000..f19afc9e5905 --- /dev/null +++ b/proto/cosmos/base/reflection/v2alpha1/reflection.proto @@ -0,0 +1,238 @@ +syntax = "proto3"; +package cosmos.base.reflection.v2alpha1; + +import "google/api/annotations.proto"; + +option go_package = "github.com/cosmos/cosmos-sdk/server/grpc/appreflection/v2alpha1"; + +// AppDescriptor describes a cosmos-sdk based application +message AppDescriptor { + // AuthnDescriptor provides information on how to authenticate transactions on the application + // NOTE: experimental and subject to change in future releases. + AuthnDescriptor authn = 1; + // chain provides the chain descriptor + ChainDescriptor chain = 2; + // codec provides metadata information regarding codec related types + CodecDescriptor codec = 3; + // configuration provides metadata information regarding the sdk.Config type + ConfigurationDescriptor configuration = 4; + // query_services provides metadata information regarding the available queriable endpoints + QueryServicesDescriptor query_services = 5; + // tx provides metadata information regarding how to send transactions to the given application + TxDescriptor tx = 6; +} + +// TxDescriptor describes the accepted transaction type +message TxDescriptor { + // fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type) + // it is not meant to support polymorphism of transaction types, it is supposed to be used by + // reflection clients to understand if they can handle a specific transaction type in an application. + string fullname = 1; + // msgs lists the accepted application messages (sdk.ServiceMsg, sdk.Msg) + // NOTE: not to be confused with proto.Message types + repeated MsgDescriptor msgs = 2; +} + +// AuthnDescriptor provides information on how to sign transactions without relying +// on the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures +message AuthnDescriptor { + // sign_modes defines the supported signature algorithm + repeated SigningModeDescriptor sign_modes = 1; +} + +// SigningModeDescriptor provides information on a signing flow of the application +// NOTE(fdymylja): here we could go as far as providing an entire flow on how +// to sign a message given a SigningModeDescriptor, but it's better to think about +// this another time +message SigningModeDescriptor { + // name defines the unique name of the signing mode + string name = 1; + // number is the unique int32 identifier for the sign_mode enum + int32 number = 2; + // authn_info_provider_method_fullname defines the fullname of the method to call to get + // the metadata required to authenticate using the provided sign_modes + string authn_info_provider_method_fullname = 3; +} + +// ChainDescriptor describes chain information of the application +message ChainDescriptor { + // id is the chain id + string id = 1; +} + +// CodecDescriptor describes the registered interfaces and provides metadata information on the types +message CodecDescriptor { + // interfaces is a list of the registerted interfaces descriptors + repeated InterfaceDescriptor interfaces = 1; +} + +// InterfaceDescriptor describes the implementation of an interface +message InterfaceDescriptor { + // fullname is the name of the interface + string fullname = 1; + // interface_accepting_messages contains information regarding the proto messages which contain the interface as google.protobuf.Any field + repeated InterfaceAcceptingMessageDescriptor interface_accepting_messages = 2; + // interface_implementers is a list of the descriptors of the interface implementers + repeated InterfaceImplementerDescriptor interface_implementers = 3; +} + +// InterfaceImplementerDescriptor describes an interface implementer +message InterfaceImplementerDescriptor { + // fullname is the protobuf queryable name of the interface implementer + string fullname = 1; + // type_url defines the type URL used when marshalling the type as any + // this is required so we can provide type safe google.protobuf.Any marshalling and + // unmarshalling, making sure that we don't accept just 'any' type + // in our interface fields + string type_url = 2; +} + +// InterfaceAcceptingMessageDescriptor describes a protobuf message which contains +// an interface represented as a google.protobuf.Any +message InterfaceAcceptingMessageDescriptor { + // fullname is the protobuf fullname of the type containing the interface + string fullname = 1; + // field_descriptor_names is a list of the protobuf name (not fullname) of the field + // which contains the interface as google.protobuf.Any (the interface is the same, but + // it can be in multiple fields of the same proto message) + repeated string field_descriptor_names = 2; +} + +// ConfigurationDescriptor contains metadata information on the sdk.Config +message ConfigurationDescriptor { + // bech32_account_address_prefix is the account address prefix + string bech32_account_address_prefix = 1; +} + +// MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction +message MsgDescriptor { + // msg contains a descriptor of sdk.ServiceMsg, note: sdk.Msg is not supported + // as every sdk.Msg is already an sdk.ServiceMsg. It is defined as a oneof in case + // different representation of a msg will be implemented. + oneof msg { + // service_msg is used when the message is an sdk.ServiceMsg type + ServiceMsgDescriptor service_msg = 1; + } +} + +// ServiceMsgDescriptor describes an sdk.ServiceMsg type +message ServiceMsgDescriptor { + // request_fullname is the protobuf fullname of the given sdk.ServiceMsg request + // this is the protobuf message type which should be used as google.protobuf.Any.value + // when delivering the msg to the DeliverTx endpoint + string request_fullname = 1; + // request_route is the sdk.ServiceMsg route, it is equal to type_url + string request_route = 2; + // request_type_url is the identifier that should be used as google.protobuf.Any.type_url + // when delivering the msg to the DeliverTx endpoint + string request_type_url = 3; + // response_fullname is the protobuf fullname of the given sdk.ServiceMsg response + string response_fullname = 4; +} + +// ReflectionService defines a service for application reflection. +service ReflectionService { + // GetAuthnDescriptor returns information on how to authenticate transactions in the application + // NOTE: this RPC is still experimental and might be subject to breaking changes or removal in + // future releases of the cosmos-sdk. + rpc GetAuthnDescriptor(GetAuthnDescriptorRequest) returns (GetAuthnDescriptorResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/authn"; + } + // GetChainDescriptor returns the description of the chain + rpc GetChainDescriptor(GetChainDescriptorRequest) returns (GetChainDescriptorResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/chain"; + }; + // GetCodecDescriptor returns the descriptor of the codec of the application + rpc GetCodecDescriptor(GetCodecDescriptorRequest) returns (GetCodecDescriptorResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/codec"; + } + // GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application + rpc GetConfigurationDescriptor(GetConfigurationDescriptorRequest) returns (GetConfigurationDescriptorResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/configuration"; + } + // GetQueryServicesDescriptor returns the available gRPC queryable services of the application + rpc GetQueryServicesDescriptor(GetQueryServicesDescriptorRequest) returns (GetQueryServicesDescriptorResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/query_services"; + } + // GetTxDescriptor returns information on the used transaction object and available msgs that can be used + rpc GetTxDescriptor(GetTxDescriptorRequest) returns (GetTxDescriptorResponse) { + option (google.api.http).get = "/cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor"; + } +} + +// GetAuthnDescriptorRequest is the request used for the GetAuthnDescriptor RPC +message GetAuthnDescriptorRequest {} +// GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC +message GetAuthnDescriptorResponse { + // authn describes how to authenticate to the application when sending transactions + AuthnDescriptor authn = 1; +} + +// GetChainDescriptorRequest is the request used for the GetChainDescriptor RPC +message GetChainDescriptorRequest {} +// GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC +message GetChainDescriptorResponse { + // chain describes application chain information + ChainDescriptor chain = 1; +} + +// GetCodecDescriptorRequest is the request used for the GetCodecDescriptor RPC +message GetCodecDescriptorRequest {} +// GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC +message GetCodecDescriptorResponse { + // codec describes the application codec such as registered interfaces and implementations + CodecDescriptor codec = 1; +} + +// GetConfigurationDescriptorRequest is the request used for the GetConfigurationDescriptor RPC +message GetConfigurationDescriptorRequest {} +// GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC +message GetConfigurationDescriptorResponse { + // config describes the application's sdk.Config + ConfigurationDescriptor config = 1; +} + +// GetQueryServicesDescriptorRequest is the request used for the GetQueryServicesDescriptor RPC +message GetQueryServicesDescriptorRequest {} +// GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC +message GetQueryServicesDescriptorResponse { + // queries provides information on the available queryable services + QueryServicesDescriptor queries = 1; +} + +// GetTxDescriptorRequest is the request used for the GetTxDescriptor RPC +message GetTxDescriptorRequest {} +// GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC +message GetTxDescriptorResponse { + // tx provides information on msgs that can be forwarded to the application + // alongside the accepted transaction protobuf type + TxDescriptor tx = 1; +} + + +// QueryServicesDescriptor contains the list of cosmos-sdk queriable services +message QueryServicesDescriptor { + // query_services is a list of cosmos-sdk QueryServiceDescriptor + repeated QueryServiceDescriptor query_services = 1; +} + +// QueryServiceDescriptor describes a cosmos-sdk queryable service +message QueryServiceDescriptor { + // fullname is the protobuf fullname of the service descriptor + string fullname = 1; + // is_module describes if this service is actually exposed by an application's module + bool is_module = 2; + // methods provides a list of query service methods + repeated QueryMethodDescriptor methods = 3; +} + +// QueryMethodDescriptor describes a queryable method of a query service +// no other info is provided beside method name and tendermint queryable path +// because it would be redundant with the grpc reflection service +message QueryMethodDescriptor { + // name is the protobuf name (not fullname) of the method + string name = 1; + // full_query_path is the path that can be used to query + // this method via tendermint abci.Query + string full_query_path = 2; +} From c71e1861097c10e737ba7b665a316a2a557d3a67 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Fri, 2 Apr 2021 14:56:02 +0200 Subject: [PATCH 23/26] change: add new reflection as v2 --- .../base/reflection/v2alpha1/reflection.proto | 2 +- .../v2alpha1}/reflection.go | 25 +- .../v2alpha1}/reflection.pb.go | 1089 +++-------------- .../v2alpha1}/reflection.pb.gw.go | 166 +-- server/grpc/server.go | 9 +- server/grpc/server_test.go | 17 +- 6 files changed, 219 insertions(+), 1089 deletions(-) rename server/grpc/{appreflection => reflection/v2alpha1}/reflection.go (89%) rename server/grpc/{appreflection => reflection/v2alpha1}/reflection.pb.go (82%) rename server/grpc/{appreflection => reflection/v2alpha1}/reflection.pb.gw.go (75%) diff --git a/proto/cosmos/base/reflection/v2alpha1/reflection.proto b/proto/cosmos/base/reflection/v2alpha1/reflection.proto index f19afc9e5905..fefe2edd4695 100644 --- a/proto/cosmos/base/reflection/v2alpha1/reflection.proto +++ b/proto/cosmos/base/reflection/v2alpha1/reflection.proto @@ -3,7 +3,7 @@ package cosmos.base.reflection.v2alpha1; import "google/api/annotations.proto"; -option go_package = "github.com/cosmos/cosmos-sdk/server/grpc/appreflection/v2alpha1"; +option go_package = "github.com/cosmos/cosmos-sdk/server/grpc/reflection/v2alpha1"; // AppDescriptor describes a cosmos-sdk based application message AppDescriptor { diff --git a/server/grpc/appreflection/reflection.go b/server/grpc/reflection/v2alpha1/reflection.go similarity index 89% rename from server/grpc/appreflection/reflection.go rename to server/grpc/reflection/v2alpha1/reflection.go index 952d11d5ceb4..ec9becf67cf6 100644 --- a/server/grpc/appreflection/reflection.go +++ b/server/grpc/reflection/v2alpha1/reflection.go @@ -1,4 +1,4 @@ -package appreflection +package v2alpha1 import ( "context" @@ -6,8 +6,6 @@ import ( "github.com/gogo/protobuf/proto" "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -34,9 +32,7 @@ func Register(srv *grpc.Server, conf Config) error { } type reflectionServiceServer struct { - desc *AppDescriptor - interfacesList []string - interfaceImplementers map[string][]string + desc *AppDescriptor } func (r reflectionServiceServer) GetAuthnDescriptor(_ context.Context, _ *GetAuthnDescriptorRequest) (*GetAuthnDescriptorResponse, error) { @@ -103,25 +99,10 @@ func newReflectionServiceServer(grpcSrv *grpc.Server, conf Config) (reflectionSe ifaceImplementers[iface.Fullname] = impls } return reflectionServiceServer{ - desc: desc, - interfacesList: ifaceList, - interfaceImplementers: ifaceImplementers, + desc: desc, }, nil } -func (r reflectionServiceServer) ListAllInterfaces(_ context.Context, _ *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) { - return &ListAllInterfacesResponse{InterfaceNames: r.interfacesList}, nil -} - -func (r reflectionServiceServer) ListImplementations(_ context.Context, request *ListImplementationsRequest) (*ListImplementationsResponse, error) { - implementers, ok := r.interfaceImplementers[request.InterfaceName] - if !ok { - return nil, status.Errorf(codes.NotFound, "interface name %s does not exist", request.InterfaceName) - } - - return &ListImplementationsResponse{ImplementationMessageNames: implementers}, nil -} - // newCodecDescriptor describes the codec given the codectypes.InterfaceRegistry func newCodecDescriptor(ir codectypes.InterfaceRegistry) (*CodecDescriptor, error) { registeredInterfaces := ir.ListAllInterfaces() diff --git a/server/grpc/appreflection/reflection.pb.go b/server/grpc/reflection/v2alpha1/reflection.pb.go similarity index 82% rename from server/grpc/appreflection/reflection.pb.go rename to server/grpc/reflection/v2alpha1/reflection.pb.go index 7c77f1a5135e..338d9ce23c30 100644 --- a/server/grpc/appreflection/reflection.pb.go +++ b/server/grpc/reflection/v2alpha1/reflection.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: cosmos/base/reflection/v1beta1/reflection.proto +// source: cosmos/base/reflection/v2alpha1/reflection.proto -package appreflection +package v2alpha1 import ( context "context" @@ -49,7 +49,7 @@ func (m *AppDescriptor) Reset() { *m = AppDescriptor{} } func (m *AppDescriptor) String() string { return proto.CompactTextString(m) } func (*AppDescriptor) ProtoMessage() {} func (*AppDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{0} + return fileDescriptor_15c91f0b8d6bf3d0, []int{0} } func (m *AppDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -135,7 +135,7 @@ func (m *TxDescriptor) Reset() { *m = TxDescriptor{} } func (m *TxDescriptor) String() string { return proto.CompactTextString(m) } func (*TxDescriptor) ProtoMessage() {} func (*TxDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{1} + return fileDescriptor_15c91f0b8d6bf3d0, []int{1} } func (m *TxDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -189,7 +189,7 @@ func (m *AuthnDescriptor) Reset() { *m = AuthnDescriptor{} } func (m *AuthnDescriptor) String() string { return proto.CompactTextString(m) } func (*AuthnDescriptor) ProtoMessage() {} func (*AuthnDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{2} + return fileDescriptor_15c91f0b8d6bf3d0, []int{2} } func (m *AuthnDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -243,7 +243,7 @@ func (m *SigningModeDescriptor) Reset() { *m = SigningModeDescriptor{} } func (m *SigningModeDescriptor) String() string { return proto.CompactTextString(m) } func (*SigningModeDescriptor) ProtoMessage() {} func (*SigningModeDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{3} + return fileDescriptor_15c91f0b8d6bf3d0, []int{3} } func (m *SigningModeDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -303,7 +303,7 @@ func (m *ChainDescriptor) Reset() { *m = ChainDescriptor{} } func (m *ChainDescriptor) String() string { return proto.CompactTextString(m) } func (*ChainDescriptor) ProtoMessage() {} func (*ChainDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{4} + return fileDescriptor_15c91f0b8d6bf3d0, []int{4} } func (m *ChainDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -349,7 +349,7 @@ func (m *CodecDescriptor) Reset() { *m = CodecDescriptor{} } func (m *CodecDescriptor) String() string { return proto.CompactTextString(m) } func (*CodecDescriptor) ProtoMessage() {} func (*CodecDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{5} + return fileDescriptor_15c91f0b8d6bf3d0, []int{5} } func (m *CodecDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -399,7 +399,7 @@ func (m *InterfaceDescriptor) Reset() { *m = InterfaceDescriptor{} } func (m *InterfaceDescriptor) String() string { return proto.CompactTextString(m) } func (*InterfaceDescriptor) ProtoMessage() {} func (*InterfaceDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{6} + return fileDescriptor_15c91f0b8d6bf3d0, []int{6} } func (m *InterfaceDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -464,7 +464,7 @@ func (m *InterfaceImplementerDescriptor) Reset() { *m = InterfaceImpleme func (m *InterfaceImplementerDescriptor) String() string { return proto.CompactTextString(m) } func (*InterfaceImplementerDescriptor) ProtoMessage() {} func (*InterfaceImplementerDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{7} + return fileDescriptor_15c91f0b8d6bf3d0, []int{7} } func (m *InterfaceImplementerDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -522,7 +522,7 @@ func (m *InterfaceAcceptingMessageDescriptor) Reset() { *m = InterfaceAc func (m *InterfaceAcceptingMessageDescriptor) String() string { return proto.CompactTextString(m) } func (*InterfaceAcceptingMessageDescriptor) ProtoMessage() {} func (*InterfaceAcceptingMessageDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{8} + return fileDescriptor_15c91f0b8d6bf3d0, []int{8} } func (m *InterfaceAcceptingMessageDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -575,7 +575,7 @@ func (m *ConfigurationDescriptor) Reset() { *m = ConfigurationDescriptor func (m *ConfigurationDescriptor) String() string { return proto.CompactTextString(m) } func (*ConfigurationDescriptor) ProtoMessage() {} func (*ConfigurationDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{9} + return fileDescriptor_15c91f0b8d6bf3d0, []int{9} } func (m *ConfigurationDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -626,7 +626,7 @@ func (m *MsgDescriptor) Reset() { *m = MsgDescriptor{} } func (m *MsgDescriptor) String() string { return proto.CompactTextString(m) } func (*MsgDescriptor) ProtoMessage() {} func (*MsgDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{10} + return fileDescriptor_15c91f0b8d6bf3d0, []int{10} } func (m *MsgDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -707,7 +707,7 @@ func (m *ServiceMsgDescriptor) Reset() { *m = ServiceMsgDescriptor{} } func (m *ServiceMsgDescriptor) String() string { return proto.CompactTextString(m) } func (*ServiceMsgDescriptor) ProtoMessage() {} func (*ServiceMsgDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{11} + return fileDescriptor_15c91f0b8d6bf3d0, []int{11} } func (m *ServiceMsgDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -772,7 +772,7 @@ func (m *GetAuthnDescriptorRequest) Reset() { *m = GetAuthnDescriptorReq func (m *GetAuthnDescriptorRequest) String() string { return proto.CompactTextString(m) } func (*GetAuthnDescriptorRequest) ProtoMessage() {} func (*GetAuthnDescriptorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{12} + return fileDescriptor_15c91f0b8d6bf3d0, []int{12} } func (m *GetAuthnDescriptorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -811,7 +811,7 @@ func (m *GetAuthnDescriptorResponse) Reset() { *m = GetAuthnDescriptorRe func (m *GetAuthnDescriptorResponse) String() string { return proto.CompactTextString(m) } func (*GetAuthnDescriptorResponse) ProtoMessage() {} func (*GetAuthnDescriptorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{13} + return fileDescriptor_15c91f0b8d6bf3d0, []int{13} } func (m *GetAuthnDescriptorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -855,7 +855,7 @@ func (m *GetChainDescriptorRequest) Reset() { *m = GetChainDescriptorReq func (m *GetChainDescriptorRequest) String() string { return proto.CompactTextString(m) } func (*GetChainDescriptorRequest) ProtoMessage() {} func (*GetChainDescriptorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{14} + return fileDescriptor_15c91f0b8d6bf3d0, []int{14} } func (m *GetChainDescriptorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -894,7 +894,7 @@ func (m *GetChainDescriptorResponse) Reset() { *m = GetChainDescriptorRe func (m *GetChainDescriptorResponse) String() string { return proto.CompactTextString(m) } func (*GetChainDescriptorResponse) ProtoMessage() {} func (*GetChainDescriptorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{15} + return fileDescriptor_15c91f0b8d6bf3d0, []int{15} } func (m *GetChainDescriptorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -938,7 +938,7 @@ func (m *GetCodecDescriptorRequest) Reset() { *m = GetCodecDescriptorReq func (m *GetCodecDescriptorRequest) String() string { return proto.CompactTextString(m) } func (*GetCodecDescriptorRequest) ProtoMessage() {} func (*GetCodecDescriptorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{16} + return fileDescriptor_15c91f0b8d6bf3d0, []int{16} } func (m *GetCodecDescriptorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -977,7 +977,7 @@ func (m *GetCodecDescriptorResponse) Reset() { *m = GetCodecDescriptorRe func (m *GetCodecDescriptorResponse) String() string { return proto.CompactTextString(m) } func (*GetCodecDescriptorResponse) ProtoMessage() {} func (*GetCodecDescriptorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{17} + return fileDescriptor_15c91f0b8d6bf3d0, []int{17} } func (m *GetCodecDescriptorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1021,7 +1021,7 @@ func (m *GetConfigurationDescriptorRequest) Reset() { *m = GetConfigurat func (m *GetConfigurationDescriptorRequest) String() string { return proto.CompactTextString(m) } func (*GetConfigurationDescriptorRequest) ProtoMessage() {} func (*GetConfigurationDescriptorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{18} + return fileDescriptor_15c91f0b8d6bf3d0, []int{18} } func (m *GetConfigurationDescriptorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1060,7 +1060,7 @@ func (m *GetConfigurationDescriptorResponse) Reset() { *m = GetConfigura func (m *GetConfigurationDescriptorResponse) String() string { return proto.CompactTextString(m) } func (*GetConfigurationDescriptorResponse) ProtoMessage() {} func (*GetConfigurationDescriptorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{19} + return fileDescriptor_15c91f0b8d6bf3d0, []int{19} } func (m *GetConfigurationDescriptorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1104,7 +1104,7 @@ func (m *GetQueryServicesDescriptorRequest) Reset() { *m = GetQueryServi func (m *GetQueryServicesDescriptorRequest) String() string { return proto.CompactTextString(m) } func (*GetQueryServicesDescriptorRequest) ProtoMessage() {} func (*GetQueryServicesDescriptorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{20} + return fileDescriptor_15c91f0b8d6bf3d0, []int{20} } func (m *GetQueryServicesDescriptorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1143,7 +1143,7 @@ func (m *GetQueryServicesDescriptorResponse) Reset() { *m = GetQueryServ func (m *GetQueryServicesDescriptorResponse) String() string { return proto.CompactTextString(m) } func (*GetQueryServicesDescriptorResponse) ProtoMessage() {} func (*GetQueryServicesDescriptorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{21} + return fileDescriptor_15c91f0b8d6bf3d0, []int{21} } func (m *GetQueryServicesDescriptorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1187,7 +1187,7 @@ func (m *GetTxDescriptorRequest) Reset() { *m = GetTxDescriptorRequest{} func (m *GetTxDescriptorRequest) String() string { return proto.CompactTextString(m) } func (*GetTxDescriptorRequest) ProtoMessage() {} func (*GetTxDescriptorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{22} + return fileDescriptor_15c91f0b8d6bf3d0, []int{22} } func (m *GetTxDescriptorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1227,7 +1227,7 @@ func (m *GetTxDescriptorResponse) Reset() { *m = GetTxDescriptorResponse func (m *GetTxDescriptorResponse) String() string { return proto.CompactTextString(m) } func (*GetTxDescriptorResponse) ProtoMessage() {} func (*GetTxDescriptorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{23} + return fileDescriptor_15c91f0b8d6bf3d0, []int{23} } func (m *GetTxDescriptorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1273,7 +1273,7 @@ func (m *QueryServicesDescriptor) Reset() { *m = QueryServicesDescriptor func (m *QueryServicesDescriptor) String() string { return proto.CompactTextString(m) } func (*QueryServicesDescriptor) ProtoMessage() {} func (*QueryServicesDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{24} + return fileDescriptor_15c91f0b8d6bf3d0, []int{24} } func (m *QueryServicesDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1313,15 +1313,17 @@ func (m *QueryServicesDescriptor) GetQueryServices() []*QueryServiceDescriptor { type QueryServiceDescriptor struct { // fullname is the protobuf fullname of the service descriptor Fullname string `protobuf:"bytes,1,opt,name=fullname,proto3" json:"fullname,omitempty"` + // is_module describes if this service is actually exposed by an application's module + IsModule bool `protobuf:"varint,2,opt,name=is_module,json=isModule,proto3" json:"is_module,omitempty"` // methods provides a list of query service methods - Methods []*QueryMethodDescriptor `protobuf:"bytes,2,rep,name=methods,proto3" json:"methods,omitempty"` + Methods []*QueryMethodDescriptor `protobuf:"bytes,3,rep,name=methods,proto3" json:"methods,omitempty"` } func (m *QueryServiceDescriptor) Reset() { *m = QueryServiceDescriptor{} } func (m *QueryServiceDescriptor) String() string { return proto.CompactTextString(m) } func (*QueryServiceDescriptor) ProtoMessage() {} func (*QueryServiceDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{25} + return fileDescriptor_15c91f0b8d6bf3d0, []int{25} } func (m *QueryServiceDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1357,6 +1359,13 @@ func (m *QueryServiceDescriptor) GetFullname() string { return "" } +func (m *QueryServiceDescriptor) GetIsModule() bool { + if m != nil { + return m.IsModule + } + return false +} + func (m *QueryServiceDescriptor) GetMethods() []*QueryMethodDescriptor { if m != nil { return m.Methods @@ -1379,7 +1388,7 @@ func (m *QueryMethodDescriptor) Reset() { *m = QueryMethodDescriptor{} } func (m *QueryMethodDescriptor) String() string { return proto.CompactTextString(m) } func (*QueryMethodDescriptor) ProtoMessage() {} func (*QueryMethodDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{26} + return fileDescriptor_15c91f0b8d6bf3d0, []int{26} } func (m *QueryMethodDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1422,308 +1431,120 @@ func (m *QueryMethodDescriptor) GetFullQueryPath() string { return "" } -// ListAllInterfacesRequest is the request type of the ListAllInterfaces RPC. -type ListAllInterfacesRequest struct { -} - -func (m *ListAllInterfacesRequest) Reset() { *m = ListAllInterfacesRequest{} } -func (m *ListAllInterfacesRequest) String() string { return proto.CompactTextString(m) } -func (*ListAllInterfacesRequest) ProtoMessage() {} -func (*ListAllInterfacesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{27} -} -func (m *ListAllInterfacesRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ListAllInterfacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ListAllInterfacesRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ListAllInterfacesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListAllInterfacesRequest.Merge(m, src) -} -func (m *ListAllInterfacesRequest) XXX_Size() int { - return m.Size() -} -func (m *ListAllInterfacesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListAllInterfacesRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListAllInterfacesRequest proto.InternalMessageInfo - -// ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC. -type ListAllInterfacesResponse struct { - // interface_names is an array of all the registered interfaces. - InterfaceNames []string `protobuf:"bytes,1,rep,name=interface_names,json=interfaceNames,proto3" json:"interface_names,omitempty"` -} - -func (m *ListAllInterfacesResponse) Reset() { *m = ListAllInterfacesResponse{} } -func (m *ListAllInterfacesResponse) String() string { return proto.CompactTextString(m) } -func (*ListAllInterfacesResponse) ProtoMessage() {} -func (*ListAllInterfacesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{28} -} -func (m *ListAllInterfacesResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ListAllInterfacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ListAllInterfacesResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ListAllInterfacesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListAllInterfacesResponse.Merge(m, src) -} -func (m *ListAllInterfacesResponse) XXX_Size() int { - return m.Size() -} -func (m *ListAllInterfacesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListAllInterfacesResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListAllInterfacesResponse proto.InternalMessageInfo - -func (m *ListAllInterfacesResponse) GetInterfaceNames() []string { - if m != nil { - return m.InterfaceNames - } - return nil -} - -// ListImplementationsRequest is the request type of the ListImplementations -// RPC. -type ListImplementationsRequest struct { - // interface_name defines the interface to query the implementations for. - InterfaceName string `protobuf:"bytes,1,opt,name=interface_name,json=interfaceName,proto3" json:"interface_name,omitempty"` -} - -func (m *ListImplementationsRequest) Reset() { *m = ListImplementationsRequest{} } -func (m *ListImplementationsRequest) String() string { return proto.CompactTextString(m) } -func (*ListImplementationsRequest) ProtoMessage() {} -func (*ListImplementationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{29} -} -func (m *ListImplementationsRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ListImplementationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ListImplementationsRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ListImplementationsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListImplementationsRequest.Merge(m, src) -} -func (m *ListImplementationsRequest) XXX_Size() int { - return m.Size() -} -func (m *ListImplementationsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListImplementationsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListImplementationsRequest proto.InternalMessageInfo - -func (m *ListImplementationsRequest) GetInterfaceName() string { - if m != nil { - return m.InterfaceName - } - return "" -} - -// ListImplementationsResponse is the response type of the ListImplementations -// RPC. -type ListImplementationsResponse struct { - ImplementationMessageNames []string `protobuf:"bytes,1,rep,name=implementation_message_names,json=implementationMessageNames,proto3" json:"implementation_message_names,omitempty"` -} - -func (m *ListImplementationsResponse) Reset() { *m = ListImplementationsResponse{} } -func (m *ListImplementationsResponse) String() string { return proto.CompactTextString(m) } -func (*ListImplementationsResponse) ProtoMessage() {} -func (*ListImplementationsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d48c054165687f5c, []int{30} -} -func (m *ListImplementationsResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ListImplementationsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ListImplementationsResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ListImplementationsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListImplementationsResponse.Merge(m, src) -} -func (m *ListImplementationsResponse) XXX_Size() int { - return m.Size() -} -func (m *ListImplementationsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListImplementationsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListImplementationsResponse proto.InternalMessageInfo - -func (m *ListImplementationsResponse) GetImplementationMessageNames() []string { - if m != nil { - return m.ImplementationMessageNames - } - return nil -} - func init() { - proto.RegisterType((*AppDescriptor)(nil), "cosmos.base.reflection.v1beta1.AppDescriptor") - proto.RegisterType((*TxDescriptor)(nil), "cosmos.base.reflection.v1beta1.TxDescriptor") - proto.RegisterType((*AuthnDescriptor)(nil), "cosmos.base.reflection.v1beta1.AuthnDescriptor") - proto.RegisterType((*SigningModeDescriptor)(nil), "cosmos.base.reflection.v1beta1.SigningModeDescriptor") - proto.RegisterType((*ChainDescriptor)(nil), "cosmos.base.reflection.v1beta1.ChainDescriptor") - proto.RegisterType((*CodecDescriptor)(nil), "cosmos.base.reflection.v1beta1.CodecDescriptor") - proto.RegisterType((*InterfaceDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceDescriptor") - proto.RegisterType((*InterfaceImplementerDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceImplementerDescriptor") - proto.RegisterType((*InterfaceAcceptingMessageDescriptor)(nil), "cosmos.base.reflection.v1beta1.InterfaceAcceptingMessageDescriptor") - proto.RegisterType((*ConfigurationDescriptor)(nil), "cosmos.base.reflection.v1beta1.ConfigurationDescriptor") - proto.RegisterType((*MsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.MsgDescriptor") - proto.RegisterType((*ServiceMsgDescriptor)(nil), "cosmos.base.reflection.v1beta1.ServiceMsgDescriptor") - proto.RegisterType((*GetAuthnDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetAuthnDescriptorRequest") - proto.RegisterType((*GetAuthnDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetAuthnDescriptorResponse") - proto.RegisterType((*GetChainDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetChainDescriptorRequest") - proto.RegisterType((*GetChainDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetChainDescriptorResponse") - proto.RegisterType((*GetCodecDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetCodecDescriptorRequest") - proto.RegisterType((*GetCodecDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetCodecDescriptorResponse") - proto.RegisterType((*GetConfigurationDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetConfigurationDescriptorRequest") - proto.RegisterType((*GetConfigurationDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetConfigurationDescriptorResponse") - proto.RegisterType((*GetQueryServicesDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetQueryServicesDescriptorRequest") - proto.RegisterType((*GetQueryServicesDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetQueryServicesDescriptorResponse") - proto.RegisterType((*GetTxDescriptorRequest)(nil), "cosmos.base.reflection.v1beta1.GetTxDescriptorRequest") - proto.RegisterType((*GetTxDescriptorResponse)(nil), "cosmos.base.reflection.v1beta1.GetTxDescriptorResponse") - proto.RegisterType((*QueryServicesDescriptor)(nil), "cosmos.base.reflection.v1beta1.QueryServicesDescriptor") - proto.RegisterType((*QueryServiceDescriptor)(nil), "cosmos.base.reflection.v1beta1.QueryServiceDescriptor") - proto.RegisterType((*QueryMethodDescriptor)(nil), "cosmos.base.reflection.v1beta1.QueryMethodDescriptor") - proto.RegisterType((*ListAllInterfacesRequest)(nil), "cosmos.base.reflection.v1beta1.ListAllInterfacesRequest") - proto.RegisterType((*ListAllInterfacesResponse)(nil), "cosmos.base.reflection.v1beta1.ListAllInterfacesResponse") - proto.RegisterType((*ListImplementationsRequest)(nil), "cosmos.base.reflection.v1beta1.ListImplementationsRequest") - proto.RegisterType((*ListImplementationsResponse)(nil), "cosmos.base.reflection.v1beta1.ListImplementationsResponse") + proto.RegisterType((*AppDescriptor)(nil), "cosmos.base.reflection.v2alpha1.AppDescriptor") + proto.RegisterType((*TxDescriptor)(nil), "cosmos.base.reflection.v2alpha1.TxDescriptor") + proto.RegisterType((*AuthnDescriptor)(nil), "cosmos.base.reflection.v2alpha1.AuthnDescriptor") + proto.RegisterType((*SigningModeDescriptor)(nil), "cosmos.base.reflection.v2alpha1.SigningModeDescriptor") + proto.RegisterType((*ChainDescriptor)(nil), "cosmos.base.reflection.v2alpha1.ChainDescriptor") + proto.RegisterType((*CodecDescriptor)(nil), "cosmos.base.reflection.v2alpha1.CodecDescriptor") + proto.RegisterType((*InterfaceDescriptor)(nil), "cosmos.base.reflection.v2alpha1.InterfaceDescriptor") + proto.RegisterType((*InterfaceImplementerDescriptor)(nil), "cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor") + proto.RegisterType((*InterfaceAcceptingMessageDescriptor)(nil), "cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor") + proto.RegisterType((*ConfigurationDescriptor)(nil), "cosmos.base.reflection.v2alpha1.ConfigurationDescriptor") + proto.RegisterType((*MsgDescriptor)(nil), "cosmos.base.reflection.v2alpha1.MsgDescriptor") + proto.RegisterType((*ServiceMsgDescriptor)(nil), "cosmos.base.reflection.v2alpha1.ServiceMsgDescriptor") + proto.RegisterType((*GetAuthnDescriptorRequest)(nil), "cosmos.base.reflection.v2alpha1.GetAuthnDescriptorRequest") + proto.RegisterType((*GetAuthnDescriptorResponse)(nil), "cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse") + proto.RegisterType((*GetChainDescriptorRequest)(nil), "cosmos.base.reflection.v2alpha1.GetChainDescriptorRequest") + proto.RegisterType((*GetChainDescriptorResponse)(nil), "cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse") + proto.RegisterType((*GetCodecDescriptorRequest)(nil), "cosmos.base.reflection.v2alpha1.GetCodecDescriptorRequest") + proto.RegisterType((*GetCodecDescriptorResponse)(nil), "cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse") + proto.RegisterType((*GetConfigurationDescriptorRequest)(nil), "cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorRequest") + proto.RegisterType((*GetConfigurationDescriptorResponse)(nil), "cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse") + proto.RegisterType((*GetQueryServicesDescriptorRequest)(nil), "cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorRequest") + proto.RegisterType((*GetQueryServicesDescriptorResponse)(nil), "cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse") + proto.RegisterType((*GetTxDescriptorRequest)(nil), "cosmos.base.reflection.v2alpha1.GetTxDescriptorRequest") + proto.RegisterType((*GetTxDescriptorResponse)(nil), "cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse") + proto.RegisterType((*QueryServicesDescriptor)(nil), "cosmos.base.reflection.v2alpha1.QueryServicesDescriptor") + proto.RegisterType((*QueryServiceDescriptor)(nil), "cosmos.base.reflection.v2alpha1.QueryServiceDescriptor") + proto.RegisterType((*QueryMethodDescriptor)(nil), "cosmos.base.reflection.v2alpha1.QueryMethodDescriptor") } func init() { - proto.RegisterFile("cosmos/base/reflection/v1beta1/reflection.proto", fileDescriptor_d48c054165687f5c) -} - -var fileDescriptor_d48c054165687f5c = []byte{ - // 1363 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5d, 0x93, 0x13, 0x45, - 0x14, 0xdd, 0x49, 0x76, 0x17, 0xf6, 0x42, 0x36, 0xd0, 0xc0, 0x12, 0x06, 0x8c, 0x30, 0x5b, 0x2a, - 0x2a, 0x64, 0x8a, 0x05, 0x16, 0x41, 0x44, 0xc3, 0x87, 0x48, 0xc9, 0xca, 0x92, 0xc5, 0xa2, 0xca, - 0x12, 0xa7, 0x26, 0x33, 0x9d, 0x49, 0x97, 0x99, 0x0f, 0xa6, 0x67, 0x96, 0x50, 0x96, 0x2f, 0x56, - 0xf1, 0xae, 0xe5, 0x1f, 0xf1, 0x07, 0x68, 0x95, 0x8f, 0xf8, 0x46, 0x95, 0x2f, 0x3e, 0xea, 0xae, - 0x2f, 0xfa, 0x2b, 0xac, 0xe9, 0xee, 0x99, 0xcc, 0x64, 0x27, 0xc9, 0x6c, 0xd6, 0x27, 0x98, 0xbe, - 0xf7, 0x9e, 0x3e, 0xa7, 0xbb, 0xd3, 0xe7, 0xf6, 0x82, 0x6a, 0xb8, 0xd4, 0x76, 0xa9, 0xda, 0xd6, - 0x29, 0x56, 0x7d, 0xdc, 0xe9, 0x61, 0x23, 0x20, 0xae, 0xa3, 0x6e, 0x5e, 0x68, 0xe3, 0x40, 0xbf, - 0x90, 0x1a, 0x6a, 0x78, 0xbe, 0x1b, 0xb8, 0xa8, 0xce, 0x0b, 0x1a, 0x51, 0x41, 0x23, 0x15, 0x15, - 0x05, 0xf2, 0x29, 0xcb, 0x75, 0xad, 0x1e, 0x56, 0x75, 0x8f, 0xa8, 0xba, 0xe3, 0xb8, 0x81, 0x1e, - 0x85, 0x29, 0xaf, 0x56, 0xfe, 0x2a, 0x43, 0xa5, 0xe9, 0x79, 0xb7, 0x31, 0x35, 0x7c, 0xe2, 0x05, - 0xae, 0x8f, 0xee, 0xc0, 0x9c, 0x1e, 0x06, 0x5d, 0xa7, 0x26, 0x9d, 0x96, 0xce, 0x1e, 0x58, 0x51, - 0x1b, 0xe3, 0xf1, 0x1b, 0xcd, 0x28, 0x79, 0x50, 0xdf, 0xe2, 0xd5, 0x11, 0x8c, 0xd1, 0xd5, 0x89, - 0x53, 0x2b, 0x15, 0x83, 0xb9, 0x15, 0x25, 0xa7, 0x61, 0x58, 0x35, 0x83, 0x71, 0x4d, 0x6c, 0xd4, - 0xca, 0x05, 0x61, 0xa2, 0xe4, 0x0c, 0x4c, 0x34, 0x80, 0x9e, 0x40, 0xc5, 0x70, 0x9d, 0x0e, 0xb1, - 0x42, 0x9f, 0xc9, 0xaf, 0xcd, 0x32, 0xb8, 0x2b, 0x93, 0xe1, 0x52, 0x45, 0x29, 0xd8, 0x2c, 0x1a, - 0xfa, 0x0a, 0x16, 0x9f, 0x86, 0xd8, 0x7f, 0xae, 0x51, 0xec, 0x6f, 0x12, 0x03, 0xd3, 0xda, 0x5c, - 0x31, 0xfc, 0x87, 0x51, 0xd5, 0x86, 0x28, 0x4a, 0xe3, 0x3f, 0x4d, 0x07, 0xd0, 0x75, 0x28, 0x05, - 0xfd, 0xda, 0x3c, 0xc3, 0x3c, 0x37, 0x09, 0xf3, 0x51, 0x3f, 0x05, 0x54, 0x0a, 0xfa, 0x8a, 0x0d, - 0x07, 0xd3, 0x63, 0x48, 0x86, 0xfd, 0x9d, 0xb0, 0xd7, 0x73, 0x74, 0x1b, 0xb3, 0x4d, 0x5e, 0x68, - 0x25, 0xdf, 0xa8, 0x09, 0xb3, 0x36, 0xb5, 0x68, 0xad, 0x74, 0xba, 0x7c, 0xf6, 0xc0, 0xca, 0xf9, - 0x49, 0x73, 0xad, 0x51, 0x2b, 0x35, 0x19, 0x2b, 0x55, 0x2c, 0xa8, 0x0e, 0x9d, 0x09, 0xf4, 0x08, - 0x80, 0x12, 0xcb, 0xd1, 0x6c, 0xd7, 0xc4, 0xb4, 0x26, 0x31, 0xec, 0xcb, 0x93, 0xb0, 0x37, 0x88, - 0xe5, 0x10, 0xc7, 0x5a, 0x73, 0x4d, 0x9c, 0x9a, 0x63, 0x21, 0x02, 0x8a, 0xc6, 0xa8, 0xf2, 0x83, - 0x04, 0xc7, 0x72, 0x93, 0x10, 0x82, 0xd9, 0x94, 0x3a, 0xf6, 0x7f, 0xb4, 0x04, 0xf3, 0x4e, 0x68, - 0xb7, 0xb1, 0xcf, 0x4e, 0xe4, 0x5c, 0x4b, 0x7c, 0xa1, 0xfb, 0xb0, 0xcc, 0x4e, 0xac, 0x46, 0x9c, - 0x8e, 0xab, 0x79, 0xbe, 0xbb, 0x49, 0x4c, 0xec, 0x6b, 0x36, 0x0e, 0xba, 0xae, 0xa9, 0x25, 0x0b, - 0x55, 0x66, 0x50, 0xaf, 0xb3, 0xd4, 0x7b, 0x4e, 0xc7, 0x5d, 0x17, 0x89, 0x6b, 0x2c, 0xef, 0x63, - 0x91, 0xa6, 0x9c, 0x81, 0xea, 0xd0, 0x49, 0x46, 0x8b, 0x50, 0x22, 0xa6, 0xa0, 0x52, 0x22, 0xa6, - 0xd2, 0x81, 0xea, 0xd0, 0x29, 0x45, 0x1b, 0x00, 0xc4, 0x09, 0xb0, 0xdf, 0xd1, 0x8d, 0x64, 0x7d, - 0x2e, 0x4e, 0x5a, 0x9f, 0x7b, 0x71, 0x45, 0x6a, 0x75, 0x52, 0x30, 0xca, 0x4f, 0x25, 0x38, 0x92, - 0x93, 0x33, 0x76, 0xfb, 0x5f, 0x48, 0x70, 0x2a, 0x81, 0xd0, 0x74, 0xc3, 0xc0, 0x5e, 0x40, 0x1c, - 0x4b, 0xb3, 0x31, 0xa5, 0xba, 0x85, 0xe3, 0x73, 0x71, 0xab, 0x30, 0xb7, 0x66, 0x0c, 0xb1, 0xc6, - 0x11, 0x52, 0x5c, 0x65, 0x32, 0x2a, 0x89, 0xa2, 0x10, 0x96, 0x06, 0x34, 0x88, 0xed, 0xf5, 0xb0, - 0x8d, 0xa3, 0x6f, 0x5a, 0x2b, 0x33, 0x02, 0x37, 0x0a, 0x13, 0xb8, 0x37, 0x28, 0x4e, 0xcd, 0x7d, - 0x8c, 0xe4, 0xc4, 0xa9, 0xf2, 0x18, 0xea, 0xe3, 0x0b, 0xc7, 0x2e, 0xde, 0x09, 0xd8, 0x1f, 0x3c, - 0xf7, 0xb0, 0x16, 0xfa, 0x3d, 0x76, 0xc6, 0x16, 0x5a, 0xfb, 0xa2, 0xef, 0xcf, 0xfd, 0x9e, 0xf2, - 0x0c, 0x96, 0x0b, 0x2c, 0xc9, 0x58, 0xf4, 0x4b, 0xb0, 0xd4, 0x21, 0xb8, 0x67, 0x6a, 0x66, 0x92, - 0xaf, 0x45, 0x01, 0xbe, 0x27, 0x0b, 0xad, 0xa3, 0x2c, 0x3a, 0x00, 0xfb, 0x2c, 0x8a, 0x29, 0x5f, - 0xc2, 0xf1, 0x11, 0x77, 0x18, 0x6a, 0xc2, 0x6b, 0x6d, 0x6c, 0x74, 0x2f, 0xae, 0x44, 0xfb, 0xec, - 0x86, 0x4e, 0xa0, 0xe9, 0xa6, 0xe9, 0x63, 0x4a, 0x35, 0xcf, 0xc7, 0x1d, 0xd2, 0x17, 0x0c, 0x64, - 0x9e, 0xd4, 0xe4, 0x39, 0x4d, 0x9e, 0xb2, 0xce, 0x32, 0x14, 0x17, 0x2a, 0x99, 0x1b, 0x00, 0x3d, - 0x86, 0x03, 0xe2, 0x0a, 0xd4, 0x6c, 0x6a, 0x09, 0x0b, 0xb9, 0x34, 0xf1, 0x97, 0xce, 0x4b, 0x32, - 0x50, 0x9f, 0xcc, 0xb4, 0x80, 0x26, 0xe3, 0x37, 0xe7, 0xa0, 0x6c, 0x53, 0x4b, 0xf9, 0x45, 0x82, - 0xa3, 0x79, 0xd9, 0xe8, 0x6d, 0x38, 0xe4, 0xe3, 0xa7, 0x21, 0xa6, 0x81, 0x36, 0xb4, 0x82, 0x55, - 0x31, 0x1e, 0xff, 0x44, 0xd1, 0x32, 0x54, 0xe2, 0x54, 0xdf, 0x0d, 0x03, 0x2c, 0xf6, 0xea, 0xa0, - 0x18, 0x6c, 0x45, 0x63, 0xe8, 0xec, 0x00, 0x2f, 0xd9, 0x53, 0x7e, 0x05, 0x2c, 0x8a, 0xf1, 0x47, - 0x7c, 0x6b, 0xd1, 0xbb, 0x70, 0xd8, 0xc7, 0xd4, 0x73, 0x1d, 0x8a, 0x07, 0x53, 0xcf, 0xb2, 0xd4, - 0x43, 0x71, 0x20, 0xb9, 0x1e, 0x4e, 0xc2, 0x89, 0xbb, 0x38, 0x18, 0xb6, 0x4c, 0x0e, 0xa8, 0x18, - 0x20, 0xe7, 0x05, 0x39, 0xc4, 0xff, 0xe4, 0xcb, 0x82, 0xc1, 0xb0, 0xdb, 0x66, 0x18, 0xec, 0x08, - 0x0e, 0x18, 0x70, 0x4b, 0x97, 0xf6, 0x62, 0xe9, 0x31, 0x83, 0x21, 0xa3, 0xce, 0x32, 0x18, 0x0e, - 0xa6, 0x18, 0xb0, 0x6e, 0x40, 0xda, 0x4b, 0x37, 0xa0, 0x2c, 0xc3, 0x19, 0x36, 0x49, 0xbe, 0xb7, - 0x0b, 0x26, 0x21, 0x28, 0xe3, 0x92, 0x04, 0xa3, 0x07, 0x30, 0xcf, 0x5b, 0x01, 0x41, 0x69, 0xea, - 0x8e, 0x42, 0xc0, 0x08, 0x6e, 0xa3, 0xfa, 0x02, 0xc1, 0xed, 0x19, 0xe3, 0x36, 0x32, 0x49, 0x70, - 0x7b, 0x08, 0xfb, 0xa2, 0x36, 0x82, 0x30, 0x4b, 0xd9, 0x53, 0x3b, 0x12, 0xe3, 0x28, 0x35, 0x58, - 0xba, 0x8b, 0x83, 0x4c, 0x87, 0x21, 0x28, 0x3d, 0x86, 0xe3, 0x3b, 0x22, 0x82, 0x07, 0xef, 0x5e, - 0xa4, 0x29, 0xbb, 0x97, 0x3e, 0x1c, 0x1f, 0x41, 0x0b, 0x3d, 0xd9, 0xd1, 0x76, 0x71, 0xeb, 0x5c, - 0xdd, 0x8d, 0xce, 0x91, 0x5d, 0x97, 0xf2, 0x42, 0x82, 0xa5, 0xfc, 0xcc, 0xb1, 0x17, 0xf5, 0x03, - 0xd8, 0xc7, 0x9b, 0x87, 0xd8, 0x2d, 0x2f, 0x17, 0xa2, 0xc3, 0x1b, 0x89, 0xf4, 0xa2, 0x0b, 0x14, - 0x65, 0x03, 0x8e, 0xe5, 0x66, 0xe4, 0xb6, 0x39, 0x6f, 0x42, 0x35, 0x62, 0xa2, 0xf1, 0x85, 0xf1, - 0xf4, 0xa0, 0x2b, 0xee, 0xb7, 0x4a, 0x34, 0xcc, 0x70, 0xd6, 0xf5, 0xa0, 0xab, 0xc8, 0x50, 0xbb, - 0x4f, 0x68, 0xd0, 0xec, 0xf5, 0x12, 0x63, 0xa2, 0xf1, 0x5e, 0xde, 0x86, 0x13, 0x39, 0x31, 0xb1, - 0x9b, 0x6f, 0x41, 0x75, 0x60, 0xcd, 0xdc, 0x80, 0x24, 0x66, 0x40, 0x8b, 0xc9, 0x30, 0xb7, 0x9e, - 0x5b, 0x20, 0x47, 0x28, 0x89, 0x8f, 0xf2, 0x77, 0x87, 0x98, 0x03, 0xbd, 0x01, 0x8b, 0x59, 0x18, - 0xa1, 0xa2, 0x92, 0x41, 0x51, 0x34, 0x38, 0x99, 0x0b, 0x22, 0xc8, 0x7c, 0x04, 0xa7, 0x48, 0x26, - 0x14, 0x77, 0x2a, 0x19, 0x66, 0x72, 0x36, 0x47, 0xf8, 0x2e, 0x63, 0xb9, 0xf2, 0x6b, 0x05, 0x0e, - 0xb7, 0x92, 0x2d, 0x11, 0x3b, 0x8d, 0x7e, 0x93, 0x00, 0xed, 0xbc, 0x8b, 0xd1, 0xd5, 0x49, 0x3b, - 0x39, 0xf2, 0x72, 0x97, 0xaf, 0x4d, 0x53, 0xca, 0x55, 0x2a, 0xd7, 0xbf, 0xfb, 0xfd, 0xef, 0x1f, - 0x4b, 0xab, 0xe8, 0xd2, 0xa4, 0xc7, 0xa1, 0xee, 0x79, 0xa9, 0xf6, 0x40, 0xe5, 0x2f, 0x31, 0xa1, - 0x65, 0xb8, 0x2d, 0x2d, 0xa2, 0x25, 0xdf, 0x26, 0x0a, 0x69, 0x19, 0x61, 0x22, 0x53, 0x6b, 0xe1, - 0xcf, 0xc1, 0x58, 0xcb, 0x50, 0xff, 0x5c, 0x48, 0x4b, 0xae, 0xe1, 0x14, 0xd3, 0x92, 0x6f, 0x47, - 0xd3, 0x6b, 0x61, 0x6f, 0xd2, 0x7f, 0x24, 0xe1, 0x75, 0x23, 0xda, 0xb3, 0x42, 0xc4, 0xc6, 0x59, - 0x98, 0x7c, 0x73, 0x2f, 0x10, 0x42, 0xe3, 0x6d, 0xa6, 0xf1, 0x06, 0xba, 0xbe, 0x6b, 0x8d, 0xe9, - 0x07, 0xf2, 0xbf, 0x5c, 0xeb, 0xa8, 0x8b, 0xbc, 0x88, 0xd6, 0xf1, 0x96, 0x58, 0x48, 0xeb, 0x04, - 0xc3, 0x54, 0xee, 0x30, 0xad, 0x1f, 0xa2, 0x0f, 0x76, 0xa9, 0x35, 0x6b, 0x42, 0xe8, 0xa5, 0x04, - 0xd5, 0x21, 0x2f, 0x44, 0xab, 0x05, 0xe8, 0xe5, 0xd8, 0xaa, 0x7c, 0x65, 0xd7, 0x75, 0x7b, 0xdc, - 0xb7, 0xa0, 0x9f, 0xfa, 0x42, 0x3f, 0x4b, 0x70, 0x78, 0x87, 0x15, 0xa0, 0xf7, 0x26, 0x91, 0x1a, - 0xe5, 0x2c, 0xf2, 0xd5, 0x29, 0x2a, 0x85, 0xa0, 0x15, 0x26, 0xe8, 0x1c, 0x7a, 0x67, 0x92, 0xa0, - 0xc1, 0x13, 0x18, 0x6d, 0x4b, 0x70, 0x24, 0xc7, 0x3e, 0xd0, 0xb5, 0x22, 0x34, 0xf2, 0x8d, 0x4b, - 0x7e, 0x7f, 0xaa, 0x5a, 0x21, 0x62, 0x83, 0x89, 0x58, 0x43, 0x9f, 0x16, 0x17, 0xa1, 0x7e, 0x93, - 0xf5, 0xc9, 0x6f, 0xd5, 0xac, 0x9b, 0xd1, 0x9b, 0xeb, 0x2f, 0xb7, 0xea, 0xd2, 0xab, 0xad, 0xba, - 0xf4, 0xe7, 0x56, 0x5d, 0xfa, 0x7e, 0xbb, 0x3e, 0xf3, 0x6a, 0xbb, 0x3e, 0xf3, 0xc7, 0x76, 0x7d, - 0xe6, 0x8b, 0x55, 0x8b, 0x04, 0xdd, 0xb0, 0xdd, 0x30, 0x5c, 0x3b, 0x9e, 0x90, 0xff, 0x73, 0x9e, - 0x9a, 0x5f, 0xab, 0xd1, 0x81, 0xc5, 0xbe, 0x6a, 0xf9, 0x9e, 0x11, 0x9d, 0x82, 0x01, 0x8b, 0xf6, - 0x3c, 0xfb, 0xe3, 0xe0, 0xc5, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x8e, 0xa2, 0x5d, 0x41, 0x8d, - 0x14, 0x00, 0x00, + proto.RegisterFile("cosmos/base/reflection/v2alpha1/reflection.proto", fileDescriptor_15c91f0b8d6bf3d0) +} + +var fileDescriptor_15c91f0b8d6bf3d0 = []byte{ + // 1245 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xcf, 0x6f, 0x1b, 0xc5, + 0x17, 0xcf, 0xda, 0xf9, 0xf9, 0xd2, 0xc4, 0xed, 0x7c, 0x9b, 0xc4, 0x75, 0xfb, 0x75, 0xdb, 0x8d, + 0x84, 0x82, 0x50, 0xed, 0x26, 0x0d, 0x69, 0x05, 0x2d, 0x91, 0xd3, 0xd0, 0x12, 0x89, 0xa0, 0xe0, + 0xa4, 0xa2, 0x20, 0xd4, 0xd5, 0x7a, 0x77, 0xbc, 0x1e, 0xe1, 0xfd, 0x91, 0x9d, 0xdd, 0xe0, 0x5c, + 0x39, 0x70, 0x06, 0xf1, 0x27, 0x70, 0xe0, 0xce, 0x9d, 0x3b, 0x82, 0x4b, 0x25, 0x2e, 0x1c, 0x51, + 0x82, 0xc4, 0x01, 0xfe, 0x08, 0x34, 0x3f, 0xd6, 0x5e, 0x6f, 0xd6, 0xf6, 0x26, 0xe1, 0xd4, 0xce, + 0xbc, 0xcf, 0xfb, 0xbc, 0xcf, 0x9b, 0x99, 0xbc, 0xf7, 0xd6, 0x70, 0xdf, 0x70, 0xa9, 0xed, 0xd2, + 0x6a, 0x43, 0xa7, 0xb8, 0xea, 0xe3, 0x66, 0x1b, 0x1b, 0x01, 0x71, 0x9d, 0xea, 0xd1, 0x9a, 0xde, + 0xf6, 0x5a, 0xfa, 0x6a, 0x6c, 0xaf, 0xe2, 0xf9, 0x6e, 0xe0, 0xa2, 0xdb, 0xc2, 0xa3, 0xc2, 0x3c, + 0x2a, 0x31, 0x6b, 0xe4, 0x51, 0xba, 0x65, 0xb9, 0xae, 0xd5, 0xc6, 0x55, 0xdd, 0x23, 0x55, 0xdd, + 0x71, 0xdc, 0x40, 0x67, 0x76, 0x2a, 0xdc, 0xd5, 0xbf, 0xf2, 0x30, 0x57, 0xf3, 0xbc, 0x6d, 0x4c, + 0x0d, 0x9f, 0x78, 0x81, 0xeb, 0xa3, 0x67, 0x30, 0xa1, 0x87, 0x41, 0xcb, 0x29, 0x2a, 0x77, 0x94, + 0x95, 0xd9, 0xb5, 0xfb, 0x95, 0x11, 0x01, 0x2a, 0x35, 0x86, 0xee, 0x11, 0xd4, 0x85, 0x3b, 0xe3, + 0x31, 0x5a, 0x3a, 0x71, 0x8a, 0xb9, 0x8c, 0x3c, 0x4f, 0x19, 0x3a, 0xce, 0xc3, 0xdd, 0x39, 0x8f, + 0x6b, 0x62, 0xa3, 0x98, 0xcf, 0xca, 0xc3, 0xd0, 0x7d, 0x3c, 0x6c, 0x03, 0xbd, 0x82, 0x39, 0xc3, + 0x75, 0x9a, 0xc4, 0x0a, 0x7d, 0x7e, 0x02, 0xc5, 0x71, 0xce, 0xf7, 0x28, 0x03, 0x5f, 0xcc, 0x2b, + 0xc6, 0xdb, 0x4f, 0x87, 0x34, 0x98, 0x3f, 0x0c, 0xb1, 0x7f, 0xac, 0x51, 0xec, 0x1f, 0x11, 0x03, + 0xd3, 0xe2, 0x44, 0xc6, 0x00, 0x1f, 0x33, 0xb7, 0x7d, 0xe9, 0x15, 0x0f, 0x70, 0x18, 0x37, 0xa0, + 0x27, 0x90, 0x0b, 0x3a, 0xc5, 0x49, 0x4e, 0x7a, 0x6f, 0x24, 0xe9, 0x41, 0x27, 0xc6, 0x94, 0x0b, + 0x3a, 0xaa, 0x03, 0x57, 0xe2, 0x7b, 0xa8, 0x04, 0xd3, 0xcd, 0xb0, 0xdd, 0x76, 0x74, 0x1b, 0xf3, + 0xab, 0x9e, 0xa9, 0x77, 0xd7, 0x68, 0x0b, 0xc6, 0x6d, 0x6a, 0xd1, 0x62, 0xee, 0x4e, 0x7e, 0x65, + 0x76, 0xad, 0x32, 0x32, 0xd8, 0x2e, 0xb5, 0x62, 0xd1, 0xb8, 0xaf, 0xda, 0x82, 0x42, 0xe2, 0x65, + 0xa0, 0x17, 0x00, 0x94, 0x58, 0x8e, 0x66, 0xbb, 0x26, 0xa6, 0x45, 0x85, 0x93, 0x6f, 0x8c, 0x24, + 0xdf, 0x27, 0x96, 0x43, 0x1c, 0x6b, 0xd7, 0x35, 0x71, 0x2c, 0xc8, 0x0c, 0x63, 0x62, 0x7b, 0x54, + 0xfd, 0x56, 0x81, 0x85, 0x54, 0x10, 0x42, 0x30, 0x1e, 0xcb, 0x8f, 0xff, 0x1f, 0x2d, 0xc2, 0xa4, + 0x13, 0xda, 0x0d, 0xec, 0xf3, 0x87, 0x39, 0x51, 0x97, 0x2b, 0xf4, 0x21, 0x2c, 0xf3, 0x87, 0xab, + 0x11, 0xa7, 0xe9, 0x6a, 0x9e, 0xef, 0x1e, 0x11, 0x13, 0xfb, 0x9a, 0x8d, 0x83, 0x96, 0x6b, 0x6a, + 0xdd, 0xa3, 0xca, 0x73, 0xaa, 0xdb, 0x1c, 0xba, 0xe3, 0x34, 0xdd, 0x3d, 0x09, 0xdc, 0xe5, 0xb8, + 0x67, 0x12, 0xa6, 0xde, 0x85, 0x42, 0xe2, 0x3d, 0xa3, 0x79, 0xc8, 0x11, 0x53, 0x4a, 0xc9, 0x11, + 0x53, 0xb5, 0xa0, 0x90, 0x78, 0xaa, 0xe8, 0x00, 0x80, 0x38, 0x01, 0xf6, 0x9b, 0xba, 0xd1, 0x3d, + 0xa0, 0xf5, 0x91, 0x07, 0xb4, 0x13, 0xb9, 0xc4, 0x8e, 0x27, 0xc6, 0xa3, 0xfe, 0x98, 0x83, 0xff, + 0xa5, 0x60, 0x86, 0xbe, 0x80, 0xaf, 0x15, 0xb8, 0xd5, 0xa5, 0xd0, 0x74, 0xc3, 0xc0, 0x5e, 0x40, + 0x1c, 0x4b, 0xb3, 0x31, 0xa5, 0xba, 0x85, 0xa3, 0xa7, 0xb1, 0x9d, 0x5d, 0x5c, 0x2d, 0xe2, 0xd8, + 0x15, 0x14, 0x31, 0xb1, 0x25, 0x32, 0x08, 0x44, 0xd1, 0x11, 0x2c, 0xf6, 0x74, 0x10, 0xdb, 0x6b, + 0x63, 0x1b, 0xb3, 0x35, 0x2d, 0xe6, 0xb9, 0x82, 0xcd, 0xec, 0x0a, 0x76, 0x7a, 0xde, 0xb1, 0xe0, + 0x0b, 0x24, 0xc5, 0x4e, 0xd5, 0x4f, 0xa0, 0x3c, 0xdc, 0x71, 0xe8, 0xf1, 0xdd, 0x80, 0xe9, 0xe0, + 0xd8, 0xc3, 0x5a, 0xe8, 0xb7, 0xf9, 0x33, 0x9b, 0xa9, 0x4f, 0xb1, 0xf5, 0x0b, 0xbf, 0xad, 0x7e, + 0x09, 0xcb, 0x19, 0xce, 0x64, 0x28, 0xfb, 0x3a, 0x2c, 0x36, 0x09, 0x6e, 0x9b, 0x9a, 0xd9, 0xc5, + 0x6b, 0xcc, 0x20, 0x6e, 0x65, 0xa6, 0x7e, 0x9d, 0x5b, 0x7b, 0x64, 0x1f, 0x31, 0x9b, 0xfa, 0x39, + 0x2c, 0x0d, 0x28, 0x65, 0xa8, 0x06, 0xff, 0x6f, 0x60, 0xa3, 0xf5, 0x60, 0x8d, 0xdd, 0xb4, 0x1b, + 0x3a, 0x81, 0xa6, 0x9b, 0xa6, 0x8f, 0x29, 0xd5, 0x3c, 0x1f, 0x37, 0x49, 0x47, 0x2a, 0x28, 0x09, + 0x50, 0x4d, 0x60, 0x6a, 0x02, 0xb2, 0xc7, 0x11, 0xaa, 0x07, 0x73, 0x7d, 0x55, 0x00, 0xbd, 0x84, + 0x59, 0x59, 0x09, 0x35, 0x9b, 0x5a, 0xb2, 0x9b, 0xbc, 0x3d, 0xfa, 0xaf, 0x5d, 0xf8, 0xf4, 0x71, + 0x7d, 0x30, 0x56, 0x07, 0xda, 0xdd, 0xdf, 0x9a, 0x80, 0xbc, 0x4d, 0x2d, 0xf5, 0x27, 0x05, 0xae, + 0xa7, 0xa1, 0xd1, 0x9b, 0x70, 0xd5, 0xc7, 0x87, 0x21, 0xa6, 0x81, 0x96, 0x38, 0xc2, 0x82, 0xdc, + 0x8f, 0xfe, 0x4c, 0xd1, 0x32, 0xcc, 0x45, 0x50, 0xdf, 0x0d, 0x03, 0x2c, 0x2f, 0xeb, 0x8a, 0xdc, + 0xac, 0xb3, 0x3d, 0xb4, 0xd2, 0xe3, 0xeb, 0x5e, 0xaa, 0x28, 0x03, 0xf3, 0x72, 0xff, 0x40, 0xdc, + 0x2d, 0x7a, 0x0b, 0xae, 0xf9, 0x98, 0x7a, 0xae, 0x43, 0x71, 0x2f, 0xf4, 0x38, 0x87, 0x5e, 0x8d, + 0x0c, 0xdd, 0x12, 0x71, 0x13, 0x6e, 0x3c, 0xc7, 0x41, 0xb2, 0x7b, 0x0a, 0x42, 0xd5, 0x84, 0x52, + 0x9a, 0x51, 0x50, 0xfc, 0x57, 0x3d, 0x5a, 0x4a, 0x48, 0x36, 0xde, 0x3e, 0x09, 0x67, 0x8c, 0x3d, + 0x09, 0xa2, 0xbd, 0x2b, 0x97, 0x6a, 0xef, 0x91, 0x84, 0x44, 0xcf, 0xee, 0x97, 0x90, 0x34, 0xc6, + 0x24, 0xf0, 0xc9, 0x40, 0xb9, 0xd4, 0x64, 0xa0, 0x2e, 0xc3, 0x5d, 0x1e, 0x25, 0xbd, 0xcd, 0x4b, + 0x29, 0x47, 0xa0, 0x0e, 0x03, 0x49, 0x49, 0x7b, 0x30, 0x29, 0xa6, 0x02, 0xa9, 0xe9, 0xe2, 0xd3, + 0x85, 0xe4, 0x91, 0xe2, 0x06, 0x8d, 0x08, 0x52, 0x5c, 0x87, 0x8b, 0x1b, 0x08, 0x92, 0xe2, 0xea, + 0x30, 0xc5, 0x26, 0x0a, 0xc2, 0x5b, 0xcb, 0xe5, 0x46, 0x93, 0x88, 0x48, 0x2d, 0xc2, 0xe2, 0x73, + 0x1c, 0xf4, 0x0d, 0x1b, 0x52, 0xd3, 0x4b, 0x58, 0x3a, 0x63, 0x91, 0x42, 0xc4, 0x24, 0xa3, 0x5c, + 0x74, 0x92, 0x39, 0x86, 0xa5, 0x01, 0xba, 0xd0, 0xab, 0x33, 0x43, 0x98, 0x68, 0xa2, 0x0f, 0xcf, + 0x95, 0xe9, 0xc0, 0x19, 0x4c, 0xfd, 0x5e, 0x81, 0xc5, 0x74, 0xe4, 0xd0, 0x82, 0x7d, 0x13, 0x66, + 0x08, 0x65, 0x63, 0x4f, 0xd8, 0x16, 0x25, 0x66, 0xba, 0x3e, 0x4d, 0xe8, 0x2e, 0x5f, 0xa3, 0x3d, + 0x98, 0x12, 0x43, 0x46, 0xd4, 0xd2, 0x36, 0xb2, 0x89, 0x15, 0x13, 0x47, 0xfc, 0x52, 0x24, 0x8d, + 0xba, 0x0f, 0x0b, 0xa9, 0x88, 0xd4, 0x79, 0xe8, 0x0d, 0x28, 0x30, 0x9d, 0x9a, 0x38, 0x37, 0x4f, + 0x0f, 0x5a, 0xb2, 0x08, 0xce, 0xb1, 0x6d, 0xce, 0xb3, 0xa7, 0x07, 0xad, 0xb5, 0x1f, 0x00, 0xae, + 0xd5, 0xbb, 0x5a, 0x64, 0xfe, 0xe8, 0x57, 0x05, 0xd0, 0xd9, 0x42, 0x85, 0xde, 0x19, 0x99, 0xc2, + 0xc0, 0xd2, 0x57, 0x7a, 0xf7, 0x42, 0xbe, 0xe2, 0x69, 0xa9, 0x8f, 0xbf, 0xfa, 0xed, 0xcf, 0xef, + 0x72, 0x1b, 0x68, 0xbd, 0x3a, 0xe8, 0x4b, 0x6a, 0xb5, 0x81, 0x03, 0x7d, 0xb5, 0xaa, 0x7b, 0x5e, + 0xac, 0x7d, 0x56, 0xc5, 0x37, 0x8b, 0xcc, 0x26, 0x39, 0xb9, 0x65, 0xca, 0x26, 0xbd, 0x8a, 0x66, + 0xcb, 0x66, 0x40, 0x91, 0xbd, 0x70, 0x36, 0xe2, 0xcb, 0x29, 0xca, 0x26, 0x31, 0x64, 0x66, 0xcb, + 0x26, 0xb5, 0x20, 0x67, 0xcc, 0x26, 0xbd, 0x5e, 0x5f, 0x3c, 0x1b, 0xfe, 0xfd, 0xf6, 0xb7, 0x22, + 0x9b, 0x41, 0xfa, 0x08, 0xb3, 0x95, 0x4d, 0xd9, 0xb0, 0x1a, 0x5f, 0x7a, 0x7a, 0x29, 0x0e, 0x99, + 0xe5, 0x36, 0xcf, 0xf2, 0x3d, 0xf4, 0xf8, 0xdc, 0x59, 0xc6, 0xbf, 0x26, 0xff, 0x11, 0xd9, 0x0e, + 0xaa, 0x73, 0x99, 0xb2, 0x1d, 0xde, 0x34, 0xb2, 0x65, 0x3b, 0xa2, 0xa7, 0xa8, 0xef, 0xf3, 0x6c, + 0x37, 0xd1, 0x93, 0x73, 0x66, 0xdb, 0x5f, 0xa5, 0xd1, 0x2f, 0x0a, 0x14, 0x12, 0xdd, 0x02, 0x3d, + 0xcc, 0xa2, 0x2f, 0xa5, 0xf3, 0x94, 0x1e, 0x9d, 0xdf, 0xf1, 0x92, 0x77, 0x17, 0x74, 0x62, 0xab, + 0xad, 0x4f, 0x7f, 0x3e, 0x29, 0x2b, 0xaf, 0x4f, 0xca, 0xca, 0x1f, 0x27, 0x65, 0xe5, 0x9b, 0xd3, + 0xf2, 0xd8, 0xeb, 0xd3, 0xf2, 0xd8, 0xef, 0xa7, 0xe5, 0xb1, 0xcf, 0x36, 0x2d, 0x12, 0xb4, 0xc2, + 0x46, 0xc5, 0x70, 0xed, 0x28, 0x82, 0xf8, 0xe7, 0x1e, 0x35, 0xbf, 0xa8, 0xb2, 0xd3, 0xc0, 0x7e, + 0xd5, 0xf2, 0x3d, 0x83, 0x05, 0x48, 0xf9, 0xf9, 0xa7, 0x31, 0xc9, 0x7f, 0xb5, 0x79, 0xf0, 0x6f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xe3, 0xdd, 0xd8, 0x11, 0x28, 0x12, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1752,12 +1573,6 @@ type ReflectionServiceClient interface { GetQueryServicesDescriptor(ctx context.Context, in *GetQueryServicesDescriptorRequest, opts ...grpc.CallOption) (*GetQueryServicesDescriptorResponse, error) // GetTxDescriptor returns information on the used transaction object and available msgs that can be used GetTxDescriptor(ctx context.Context, in *GetTxDescriptorRequest, opts ...grpc.CallOption) (*GetTxDescriptorResponse, error) - // ListAllInterfaces lists all the interfaces registered in the interface - // registry. - ListAllInterfaces(ctx context.Context, in *ListAllInterfacesRequest, opts ...grpc.CallOption) (*ListAllInterfacesResponse, error) - // ListImplementations list all the concrete types that implement a given - // interface. - ListImplementations(ctx context.Context, in *ListImplementationsRequest, opts ...grpc.CallOption) (*ListImplementationsResponse, error) } type reflectionServiceClient struct { @@ -1770,7 +1585,7 @@ func NewReflectionServiceClient(cc grpc1.ClientConn) ReflectionServiceClient { func (c *reflectionServiceClient) GetAuthnDescriptor(ctx context.Context, in *GetAuthnDescriptorRequest, opts ...grpc.CallOption) (*GetAuthnDescriptorResponse, error) { out := new(GetAuthnDescriptorResponse) - err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetAuthnDescriptor", in, out, opts...) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v2alpha1.ReflectionService/GetAuthnDescriptor", in, out, opts...) if err != nil { return nil, err } @@ -1779,7 +1594,7 @@ func (c *reflectionServiceClient) GetAuthnDescriptor(ctx context.Context, in *Ge func (c *reflectionServiceClient) GetChainDescriptor(ctx context.Context, in *GetChainDescriptorRequest, opts ...grpc.CallOption) (*GetChainDescriptorResponse, error) { out := new(GetChainDescriptorResponse) - err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetChainDescriptor", in, out, opts...) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v2alpha1.ReflectionService/GetChainDescriptor", in, out, opts...) if err != nil { return nil, err } @@ -1788,7 +1603,7 @@ func (c *reflectionServiceClient) GetChainDescriptor(ctx context.Context, in *Ge func (c *reflectionServiceClient) GetCodecDescriptor(ctx context.Context, in *GetCodecDescriptorRequest, opts ...grpc.CallOption) (*GetCodecDescriptorResponse, error) { out := new(GetCodecDescriptorResponse) - err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetCodecDescriptor", in, out, opts...) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v2alpha1.ReflectionService/GetCodecDescriptor", in, out, opts...) if err != nil { return nil, err } @@ -1797,7 +1612,7 @@ func (c *reflectionServiceClient) GetCodecDescriptor(ctx context.Context, in *Ge func (c *reflectionServiceClient) GetConfigurationDescriptor(ctx context.Context, in *GetConfigurationDescriptorRequest, opts ...grpc.CallOption) (*GetConfigurationDescriptorResponse, error) { out := new(GetConfigurationDescriptorResponse) - err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetConfigurationDescriptor", in, out, opts...) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v2alpha1.ReflectionService/GetConfigurationDescriptor", in, out, opts...) if err != nil { return nil, err } @@ -1806,7 +1621,7 @@ func (c *reflectionServiceClient) GetConfigurationDescriptor(ctx context.Context func (c *reflectionServiceClient) GetQueryServicesDescriptor(ctx context.Context, in *GetQueryServicesDescriptorRequest, opts ...grpc.CallOption) (*GetQueryServicesDescriptorResponse, error) { out := new(GetQueryServicesDescriptorResponse) - err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetQueryServicesDescriptor", in, out, opts...) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v2alpha1.ReflectionService/GetQueryServicesDescriptor", in, out, opts...) if err != nil { return nil, err } @@ -1815,25 +1630,7 @@ func (c *reflectionServiceClient) GetQueryServicesDescriptor(ctx context.Context func (c *reflectionServiceClient) GetTxDescriptor(ctx context.Context, in *GetTxDescriptorRequest, opts ...grpc.CallOption) (*GetTxDescriptorResponse, error) { out := new(GetTxDescriptorResponse) - err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/GetTxDescriptor", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *reflectionServiceClient) ListAllInterfaces(ctx context.Context, in *ListAllInterfacesRequest, opts ...grpc.CallOption) (*ListAllInterfacesResponse, error) { - out := new(ListAllInterfacesResponse) - err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/ListAllInterfaces", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *reflectionServiceClient) ListImplementations(ctx context.Context, in *ListImplementationsRequest, opts ...grpc.CallOption) (*ListImplementationsResponse, error) { - out := new(ListImplementationsResponse) - err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v1beta1.ReflectionService/ListImplementations", in, out, opts...) + err := c.cc.Invoke(ctx, "/cosmos.base.reflection.v2alpha1.ReflectionService/GetTxDescriptor", in, out, opts...) if err != nil { return nil, err } @@ -1856,12 +1653,6 @@ type ReflectionServiceServer interface { GetQueryServicesDescriptor(context.Context, *GetQueryServicesDescriptorRequest) (*GetQueryServicesDescriptorResponse, error) // GetTxDescriptor returns information on the used transaction object and available msgs that can be used GetTxDescriptor(context.Context, *GetTxDescriptorRequest) (*GetTxDescriptorResponse, error) - // ListAllInterfaces lists all the interfaces registered in the interface - // registry. - ListAllInterfaces(context.Context, *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) - // ListImplementations list all the concrete types that implement a given - // interface. - ListImplementations(context.Context, *ListImplementationsRequest) (*ListImplementationsResponse, error) } // UnimplementedReflectionServiceServer can be embedded to have forward compatible implementations. @@ -1886,12 +1677,6 @@ func (*UnimplementedReflectionServiceServer) GetQueryServicesDescriptor(ctx cont func (*UnimplementedReflectionServiceServer) GetTxDescriptor(ctx context.Context, req *GetTxDescriptorRequest) (*GetTxDescriptorResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTxDescriptor not implemented") } -func (*UnimplementedReflectionServiceServer) ListAllInterfaces(ctx context.Context, req *ListAllInterfacesRequest) (*ListAllInterfacesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListAllInterfaces not implemented") -} -func (*UnimplementedReflectionServiceServer) ListImplementations(ctx context.Context, req *ListImplementationsRequest) (*ListImplementationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListImplementations not implemented") -} func RegisterReflectionServiceServer(s grpc1.Server, srv ReflectionServiceServer) { s.RegisterService(&_ReflectionService_serviceDesc, srv) @@ -1907,7 +1692,7 @@ func _ReflectionService_GetAuthnDescriptor_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetAuthnDescriptor", + FullMethod: "/cosmos.base.reflection.v2alpha1.ReflectionService/GetAuthnDescriptor", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ReflectionServiceServer).GetAuthnDescriptor(ctx, req.(*GetAuthnDescriptorRequest)) @@ -1925,7 +1710,7 @@ func _ReflectionService_GetChainDescriptor_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetChainDescriptor", + FullMethod: "/cosmos.base.reflection.v2alpha1.ReflectionService/GetChainDescriptor", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ReflectionServiceServer).GetChainDescriptor(ctx, req.(*GetChainDescriptorRequest)) @@ -1943,7 +1728,7 @@ func _ReflectionService_GetCodecDescriptor_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetCodecDescriptor", + FullMethod: "/cosmos.base.reflection.v2alpha1.ReflectionService/GetCodecDescriptor", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ReflectionServiceServer).GetCodecDescriptor(ctx, req.(*GetCodecDescriptorRequest)) @@ -1961,7 +1746,7 @@ func _ReflectionService_GetConfigurationDescriptor_Handler(srv interface{}, ctx } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetConfigurationDescriptor", + FullMethod: "/cosmos.base.reflection.v2alpha1.ReflectionService/GetConfigurationDescriptor", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ReflectionServiceServer).GetConfigurationDescriptor(ctx, req.(*GetConfigurationDescriptorRequest)) @@ -1979,7 +1764,7 @@ func _ReflectionService_GetQueryServicesDescriptor_Handler(srv interface{}, ctx } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetQueryServicesDescriptor", + FullMethod: "/cosmos.base.reflection.v2alpha1.ReflectionService/GetQueryServicesDescriptor", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ReflectionServiceServer).GetQueryServicesDescriptor(ctx, req.(*GetQueryServicesDescriptorRequest)) @@ -1997,7 +1782,7 @@ func _ReflectionService_GetTxDescriptor_Handler(srv interface{}, ctx context.Con } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/GetTxDescriptor", + FullMethod: "/cosmos.base.reflection.v2alpha1.ReflectionService/GetTxDescriptor", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(ReflectionServiceServer).GetTxDescriptor(ctx, req.(*GetTxDescriptorRequest)) @@ -2005,44 +1790,8 @@ func _ReflectionService_GetTxDescriptor_Handler(srv interface{}, ctx context.Con return interceptor(ctx, in, info, handler) } -func _ReflectionService_ListAllInterfaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListAllInterfacesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReflectionServiceServer).ListAllInterfaces(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/ListAllInterfaces", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReflectionServiceServer).ListAllInterfaces(ctx, req.(*ListAllInterfacesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReflectionService_ListImplementations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListImplementationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReflectionServiceServer).ListImplementations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/cosmos.base.reflection.v1beta1.ReflectionService/ListImplementations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReflectionServiceServer).ListImplementations(ctx, req.(*ListImplementationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - var _ReflectionService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "cosmos.base.reflection.v1beta1.ReflectionService", + ServiceName: "cosmos.base.reflection.v2alpha1.ReflectionService", HandlerType: (*ReflectionServiceServer)(nil), Methods: []grpc.MethodDesc{ { @@ -2069,17 +1818,9 @@ var _ReflectionService_serviceDesc = grpc.ServiceDesc{ MethodName: "GetTxDescriptor", Handler: _ReflectionService_GetTxDescriptor_Handler, }, - { - MethodName: "ListAllInterfaces", - Handler: _ReflectionService_ListAllInterfaces_Handler, - }, - { - MethodName: "ListImplementations", - Handler: _ReflectionService_ListImplementations_Handler, - }, }, Streams: []grpc.StreamDesc{}, - Metadata: "cosmos/base/reflection/v1beta1/reflection.proto", + Metadata: "cosmos/base/reflection/v2alpha1/reflection.proto", } func (m *AppDescriptor) Marshal() (dAtA []byte, err error) { @@ -3051,8 +2792,18 @@ func (m *QueryServiceDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) i = encodeVarintReflection(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a + } + } + if m.IsModule { + i-- + if m.IsModule { + dAtA[i] = 1 + } else { + dAtA[i] = 0 } + i-- + dAtA[i] = 0x10 } if len(m.Fullname) > 0 { i -= len(m.Fullname) @@ -3101,123 +2852,6 @@ func (m *QueryMethodDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *ListAllInterfacesRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ListAllInterfacesRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ListAllInterfacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *ListAllInterfacesResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ListAllInterfacesResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ListAllInterfacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.InterfaceNames) > 0 { - for iNdEx := len(m.InterfaceNames) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.InterfaceNames[iNdEx]) - copy(dAtA[i:], m.InterfaceNames[iNdEx]) - i = encodeVarintReflection(dAtA, i, uint64(len(m.InterfaceNames[iNdEx]))) - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *ListImplementationsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ListImplementationsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ListImplementationsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.InterfaceName) > 0 { - i -= len(m.InterfaceName) - copy(dAtA[i:], m.InterfaceName) - i = encodeVarintReflection(dAtA, i, uint64(len(m.InterfaceName))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *ListImplementationsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ListImplementationsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ListImplementationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.ImplementationMessageNames) > 0 { - for iNdEx := len(m.ImplementationMessageNames) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.ImplementationMessageNames[iNdEx]) - copy(dAtA[i:], m.ImplementationMessageNames[iNdEx]) - i = encodeVarintReflection(dAtA, i, uint64(len(m.ImplementationMessageNames[iNdEx]))) - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - func encodeVarintReflection(dAtA []byte, offset int, v uint64) int { offset -= sovReflection(v) base := offset @@ -3624,6 +3258,9 @@ func (m *QueryServiceDescriptor) Size() (n int) { if l > 0 { n += 1 + l + sovReflection(uint64(l)) } + if m.IsModule { + n += 2 + } if len(m.Methods) > 0 { for _, e := range m.Methods { l = e.Size() @@ -3650,60 +3287,8 @@ func (m *QueryMethodDescriptor) Size() (n int) { return n } -func (m *ListAllInterfacesRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *ListAllInterfacesResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.InterfaceNames) > 0 { - for _, s := range m.InterfaceNames { - l = len(s) - n += 1 + l + sovReflection(uint64(l)) - } - } - return n -} - -func (m *ListImplementationsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.InterfaceName) - if l > 0 { - n += 1 + l + sovReflection(uint64(l)) - } - return n -} - -func (m *ListImplementationsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.ImplementationMessageNames) > 0 { - for _, s := range m.ImplementationMessageNames { - l = len(s) - n += 1 + l + sovReflection(uint64(l)) - } - } - return n -} - -func sovReflection(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 +func sovReflection(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 } func sozReflection(x uint64) (n int) { return sovReflection(uint64((x << 1) ^ uint64((int64(x) >> 63)))) @@ -6158,6 +5743,26 @@ func (m *QueryServiceDescriptor) Unmarshal(dAtA []byte) error { m.Fullname = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsModule", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowReflection + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsModule = bool(v != 0) + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Methods", wireType) } @@ -6326,302 +5931,6 @@ func (m *QueryMethodDescriptor) Unmarshal(dAtA []byte) error { } return nil } -func (m *ListAllInterfacesRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListAllInterfacesRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListAllInterfacesRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipReflection(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthReflection - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ListAllInterfacesResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListAllInterfacesResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListAllInterfacesResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InterfaceNames", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.InterfaceNames = append(m.InterfaceNames, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipReflection(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthReflection - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ListImplementationsRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListImplementationsRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListImplementationsRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InterfaceName", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.InterfaceName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipReflection(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthReflection - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ListImplementationsResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListImplementationsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListImplementationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ImplementationMessageNames", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowReflection - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthReflection - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthReflection - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ImplementationMessageNames = append(m.ImplementationMessageNames, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipReflection(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthReflection - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func skipReflection(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/server/grpc/appreflection/reflection.pb.gw.go b/server/grpc/reflection/v2alpha1/reflection.pb.gw.go similarity index 75% rename from server/grpc/appreflection/reflection.pb.gw.go rename to server/grpc/reflection/v2alpha1/reflection.pb.gw.go index cc27bc42a1f9..02cd59b35dbc 100644 --- a/server/grpc/appreflection/reflection.pb.gw.go +++ b/server/grpc/reflection/v2alpha1/reflection.pb.gw.go @@ -1,12 +1,12 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: cosmos/base/reflection/v1beta1/reflection.proto +// source: cosmos/base/reflection/v2alpha1/reflection.proto /* -Package appreflection is a reverse proxy. +Package v2alpha1 is a reverse proxy. It translates gRPC into RESTful JSON APIs. */ -package appreflection +package v2alpha1 import ( "context" @@ -139,78 +139,6 @@ func local_request_ReflectionService_GetTxDescriptor_0(ctx context.Context, mars } -func request_ReflectionService_ListAllInterfaces_0(ctx context.Context, marshaler runtime.Marshaler, client ReflectionServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ListAllInterfacesRequest - var metadata runtime.ServerMetadata - - msg, err := client.ListAllInterfaces(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_ReflectionService_ListAllInterfaces_0(ctx context.Context, marshaler runtime.Marshaler, server ReflectionServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ListAllInterfacesRequest - var metadata runtime.ServerMetadata - - msg, err := server.ListAllInterfaces(ctx, &protoReq) - return msg, metadata, err - -} - -func request_ReflectionService_ListImplementations_0(ctx context.Context, marshaler runtime.Marshaler, client ReflectionServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ListImplementationsRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["interface_name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "interface_name") - } - - protoReq.InterfaceName, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "interface_name", err) - } - - msg, err := client.ListImplementations(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_ReflectionService_ListImplementations_0(ctx context.Context, marshaler runtime.Marshaler, server ReflectionServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ListImplementationsRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["interface_name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "interface_name") - } - - protoReq.InterfaceName, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "interface_name", err) - } - - msg, err := server.ListImplementations(ctx, &protoReq) - return msg, metadata, err - -} - // RegisterReflectionServiceHandlerServer registers the http handlers for service ReflectionService to "mux". // UnaryRPC :call ReflectionServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -337,46 +265,6 @@ func RegisterReflectionServiceHandlerServer(ctx context.Context, mux *runtime.Se }) - mux.Handle("GET", pattern_ReflectionService_ListAllInterfaces_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_ReflectionService_ListAllInterfaces_0(rctx, inboundMarshaler, server, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_ReflectionService_ListAllInterfaces_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_ReflectionService_ListImplementations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_ReflectionService_ListImplementations_0(rctx, inboundMarshaler, server, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_ReflectionService_ListImplementations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - return nil } @@ -538,46 +426,6 @@ func RegisterReflectionServiceHandlerClient(ctx context.Context, mux *runtime.Se }) - mux.Handle("GET", pattern_ReflectionService_ListAllInterfaces_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_ReflectionService_ListAllInterfaces_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_ReflectionService_ListAllInterfaces_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_ReflectionService_ListImplementations_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_ReflectionService_ListImplementations_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_ReflectionService_ListImplementations_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - return nil } @@ -593,10 +441,6 @@ var ( pattern_ReflectionService_GetQueryServicesDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "query_services"}, "", runtime.AssumeColonVerbOpt(false))) pattern_ReflectionService_GetTxDescriptor_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5}, []string{"cosmos", "base", "reflection", "v1beta1", "app_descriptor", "tx_descriptor"}, "", runtime.AssumeColonVerbOpt(false))) - - pattern_ReflectionService_ListAllInterfaces_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"cosmos", "base", "reflection", "v1beta1", "interfaces"}, "", runtime.AssumeColonVerbOpt(false))) - - pattern_ReflectionService_ListImplementations_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"cosmos", "base", "reflection", "v1beta1", "interfaces", "interface_name", "implementations"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( @@ -611,8 +455,4 @@ var ( forward_ReflectionService_GetQueryServicesDescriptor_0 = runtime.ForwardResponseMessage forward_ReflectionService_GetTxDescriptor_0 = runtime.ForwardResponseMessage - - forward_ReflectionService_ListAllInterfaces_0 = runtime.ForwardResponseMessage - - forward_ReflectionService_ListImplementations_0 = runtime.ForwardResponseMessage ) diff --git a/server/grpc/server.go b/server/grpc/server.go index 79138b881141..5bc146d8d12d 100644 --- a/server/grpc/server.go +++ b/server/grpc/server.go @@ -5,23 +5,22 @@ import ( "net" "time" - "github.com/cosmos/cosmos-sdk/server/grpc/appreflection" - sdk "github.com/cosmos/cosmos-sdk/types" - "google.golang.org/grpc" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/server/grpc/gogoreflection" + reflection "github.com/cosmos/cosmos-sdk/server/grpc/reflection/v2alpha1" "github.com/cosmos/cosmos-sdk/server/types" + sdk "github.com/cosmos/cosmos-sdk/types" ) // StartGRPCServer starts a gRPC server on the given address. func StartGRPCServer(clientCtx client.Context, app types.Application, address string) (*grpc.Server, error) { grpcSrv := grpc.NewServer() app.RegisterGRPCServer(clientCtx, grpcSrv) - // cosmosreflection allows consumers to build dynamic clients that can write + // reflection allows consumers to build dynamic clients that can write // to any cosmos-sdk application without relying on application packages at compile time - err := appreflection.Register(grpcSrv, appreflection.Config{ + err := reflection.Register(grpcSrv, reflection.Config{ SigningModes: func() map[string]int32 { modes := make(map[string]int32, len(clientCtx.TxConfig.SignModeHandler().Modes())) for _, m := range clientCtx.TxConfig.SignModeHandler().Modes() { diff --git a/server/grpc/server_test.go b/server/grpc/server_test.go index d735faec9cff..c7bd93982b18 100644 --- a/server/grpc/server_test.go +++ b/server/grpc/server_test.go @@ -8,8 +8,6 @@ import ( "testing" "time" - "github.com/cosmos/cosmos-sdk/server/grpc/appreflection" - "github.com/jhump/protoreflect/grpcreflect" "github.com/stretchr/testify/require" @@ -18,6 +16,8 @@ import ( "google.golang.org/grpc/metadata" rpb "google.golang.org/grpc/reflection/grpc_reflection_v1alpha" + reflectionv1 "github.com/cosmos/cosmos-sdk/client/grpc/reflection" + reflectionv2 "github.com/cosmos/cosmos-sdk/server/grpc/reflection/v2alpha1" "github.com/cosmos/cosmos-sdk/testutil/network" "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" @@ -122,22 +122,23 @@ func (s *IntegrationTestSuite) TestGRPCServer_Reflection() { } } -func (s *IntegrationTestSuite) TestGRPCServer_AppReflection() { - // this tests the application reflection capabilities +func (s *IntegrationTestSuite) TestGRPCServer_InterfaceReflection() { + // this tests the application reflection capabilities and compatibility between v1 and v2 ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) defer cancel() - c := appreflection.NewReflectionServiceClient(s.conn) - codecDesc, err := c.GetCodecDescriptor(ctx, nil) + clientV2 := reflectionv2.NewReflectionServiceClient(s.conn) + clientV1 := reflectionv1.NewReflectionServiceClient(s.conn) + codecDesc, err := clientV2.GetCodecDescriptor(ctx, nil) s.Require().NoError(err) - interfaces, err := c.ListAllInterfaces(ctx, nil) + interfaces, err := clientV1.ListAllInterfaces(ctx, nil) s.Require().NoError(err) s.Require().Equal(len(codecDesc.Codec.Interfaces), len(interfaces.InterfaceNames)) s.Require().Equal(len(s.cfg.InterfaceRegistry.ListAllInterfaces()), len(codecDesc.Codec.Interfaces)) for _, iface := range interfaces.InterfaceNames { - impls, err := c.ListImplementations(ctx, &appreflection.ListImplementationsRequest{InterfaceName: iface}) + impls, err := clientV1.ListImplementations(ctx, &reflectionv1.ListImplementationsRequest{InterfaceName: iface}) s.Require().NoError(err) s.Require().ElementsMatch(impls.ImplementationMessageNames, s.cfg.InterfaceRegistry.ListImplementations(iface)) From 637e4ff3d30ab53073646312728e49a6a6e22f3c Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Fri, 2 Apr 2021 14:59:10 +0200 Subject: [PATCH 24/26] chore: cleanup CHANGELOG.md --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 57f5d09568ea..b1e35c283a31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,14 +37,13 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased] ## Features -* [\#8965](https://github.com/cosmos/cosmos-sdk/pull/8965) cosmos reflection now provides more information on the application such as: deliverable msgs, sdk.Config info etc. +* [\#8965](https://github.com/cosmos/cosmos-sdk/pull/8965) cosmos reflection now provides more information on the application such as: deliverable msgs, sdk.Config info etc (still in alpha stage). * [\#8559](https://github.com/cosmos/cosmos-sdk/pull/8559) Added Protobuf compatible secp256r1 ECDSA signatures. * [\#8786](https://github.com/cosmos/cosmos-sdk/pull/8786) Enabled secp256r1 in x/auth. * (rosetta) [\#8729](https://github.com/cosmos/cosmos-sdk/pull/8729) Data API fully supports balance tracking. Construction API can now construct any message supported by the application. * [\#8754](https://github.com/cosmos/cosmos-sdk/pull/8875) Added support for reverse iteration to pagination. ### Client Breaking Changes -* [\#8965](https://github.com/cosmos/cosmos-sdk/pull/8965) Cosmos reflection import path has changed from `github.com/cosmos/cosmos-sdk/client/grpc/reflection` to `github.com/cosmos/cosmos-sdk/server/grpc/appreflection` * [\#8363](https://github.com/cosmos/cosmos-sdk/pull/8363) Addresses no longer have a fixed 20-byte length. From the SDK modules' point of view, any 1-255 bytes-long byte array is a valid address. * [\#8346](https://github.com/cosmos/cosmos-sdk/pull/8346) All CLI `tx` commands generate ServiceMsgs by default. Graceful Amino support has been added to ServiceMsgs to support signing legacy Msgs. * (crypto/ed25519) [\#8690] Adopt zip1215 ed2559 verification rules. From 29492d0e531b10f3b8ba456682a46cefc04d358e Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Fri, 2 Apr 2021 15:12:09 +0200 Subject: [PATCH 25/26] chore: lint --- x/auth/client/tx.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x/auth/client/tx.go b/x/auth/client/tx.go index fc3a32ac6afe..80debcc1dedf 100644 --- a/x/auth/client/tx.go +++ b/x/auth/client/tx.go @@ -48,7 +48,7 @@ func SignTx(txFactory tx.Factory, clientCtx client.Context, name string, txBuild // Ledger and Multisigs only support LEGACY_AMINO_JSON signing. if txFactory.SignMode() == signing.SignMode_SIGN_MODE_UNSPECIFIED && (info.GetType() == keyring.TypeLedger || info.GetType() == keyring.TypeMulti) { - txFactory = txFactory.WithSignMode(signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) //nolint:staticcheck + txFactory = txFactory.WithSignMode(signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) } addr := sdk.AccAddress(info.GetPubKey().Address()) @@ -74,7 +74,7 @@ func SignTxWithSignerAddress(txFactory tx.Factory, clientCtx client.Context, add name string, txBuilder client.TxBuilder, offline, overwrite bool) (err error) { // Multisigs only support LEGACY_AMINO_JSON signing. if txFactory.SignMode() == signing.SignMode_SIGN_MODE_UNSPECIFIED { - txFactory = txFactory.WithSignMode(signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) //nolint:staticcheck + txFactory = txFactory.WithSignMode(signing.SignMode_SIGN_MODE_LEGACY_AMINO_JSON) } // check whether the address is a signer From 528d0c171a27611910a7d7230bdeb94a62513f20 Mon Sep 17 00:00:00 2001 From: Frojdi Dymylja Date: Sat, 3 Apr 2021 08:13:13 +0200 Subject: [PATCH 26/26] chore: cleanup --- Makefile | 2 +- server/grpc/reflection/v2alpha1/reflection.go | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 4c7582b01eb5..d7b8a1fa8cfd 100644 --- a/Makefile +++ b/Makefile @@ -373,7 +373,7 @@ proto-all: proto-format proto-lint proto-gen proto-gen: @echo "Generating Protobuf files" - docker run --rm -v $(CURDIR):/workspace --workdir /workspace tendermintdev/sdk-proto-gen:v0.1 sh ./scripts/protocgen.sh + $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace tendermintdev/sdk-proto-gen:v0.1 sh ./scripts/protocgen.sh proto-format: @echo "Formatting Protobuf files" diff --git a/server/grpc/reflection/v2alpha1/reflection.go b/server/grpc/reflection/v2alpha1/reflection.go index ec9becf67cf6..728d54ad4bbc 100644 --- a/server/grpc/reflection/v2alpha1/reflection.go +++ b/server/grpc/reflection/v2alpha1/reflection.go @@ -22,7 +22,6 @@ type Config struct { // Register registers the cosmos sdk reflection service // to the provided *grpc.Server given a Config func Register(srv *grpc.Server, conf Config) error { - reflectionServer, err := newReflectionServiceServer(srv, conf) if err != nil { return err @@ -170,10 +169,9 @@ func newTxDescriptor(ir codectypes.InterfaceRegistry) (*TxDescriptor, error) { return nil, fmt.Errorf("unable to get *tx.Tx protobuf name") } // get msgs - msgImplementers := ir.ListImplementations(sdk.MsgInterfaceProtoName) svcMsgImplementers := ir.ListImplementations(sdk.ServiceMsgInterfaceProtoName) - msgsDesc := make([]*MsgDescriptor, 0, len(msgImplementers)+len(svcMsgImplementers)) + msgsDesc := make([]*MsgDescriptor, 0, len(svcMsgImplementers)) // process sdk.ServiceMsg for _, svcMsg := range svcMsgImplementers {