diff --git a/.circleci/config.yml b/.circleci/config.yml index 74a182f9..eab17864 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,31 +11,51 @@ shared_configs: version: 2.1 orbs: - win: circleci/windows@2.2.0 + win: circleci/windows@4.1.1 jobs: build-1-13: working_directory: ~/repo docker: - - image: circleci/golang:1.13 + - image: cimg/go:1.13 steps: *simple_job_steps build-1-14: working_directory: ~/repo docker: - - image: circleci/golang:1.14 + - image: cimg/go:1.14 steps: *simple_job_steps build-1-15: working_directory: ~/repo docker: - - image: circleci/golang:1.15 + - image: cimg/go:1.15 steps: *simple_job_steps build-1-16: working_directory: ~/repo docker: - - image: circleci/golang:1.16 + - image: cimg/go:1.16 + steps: *simple_job_steps + + build-1-17: + working_directory: ~/repo + docker: + - image: cimg/go:1.17 + steps: *simple_job_steps + + build-windows: # as of Feb 2022, Go 1.17 + executor: + name: win/default + steps: + - run: git config --global core.autocrlf false + - checkout + - run: go test ./... + + build-1-18: + working_directory: ~/repo + docker: + - image: cimg/go:1.18 steps: - checkout - restore_cache: @@ -57,24 +77,10 @@ jobs: #- store_test_results: # path: /tmp/test-reports - build-1-16-windows: - executor: - name: win/default - steps: - - run: git config --global core.autocrlf false - - checkout - - run: go test ./... - - build-1-17: - working_directory: ~/repo - docker: - - image: circleci/golang:1.17 - steps: *simple_job_steps - - build-1-17-u: + build-1-18-u: working_directory: ~/repo docker: - - image: circleci/golang:1.17 + - image: cimg/go:1.18 steps: - checkout - run: @@ -93,6 +99,7 @@ workflows: - build-1-14 - build-1-15 - build-1-16 - - build-1-16-windows - build-1-17 - - build-1-17-u + - build-windows + - build-1-18 + - build-1-18-u diff --git a/Makefile b/Makefile index 70ddd472..341030e1 100644 --- a/Makefile +++ b/Makefile @@ -53,7 +53,7 @@ ineffassign: .PHONY: predeclared predeclared: - @go install github.com/nishanths/predeclared@v0.0.0-20200524104333-86fad755b4d3 + @go install github.com/nishanths/predeclared@v0.2.2 predeclared ./... # Intentionally omitted from CI, but target here for ad-hoc reports. @@ -76,7 +76,6 @@ test: .PHONY: generate generate: @go install golang.org/x/tools/cmd/goyacc@v0.0.0-20200717024301-6ddee64345a6 - @go install github.com/golang/protobuf/protoc-gen-go go generate ./... .PHONY: testcover diff --git a/dynamic/msgregistry/message_registry.go b/dynamic/msgregistry/message_registry.go index dc600e0d..d02e129b 100644 --- a/dynamic/msgregistry/message_registry.go +++ b/dynamic/msgregistry/message_registry.go @@ -341,12 +341,12 @@ func (r *MessageRegistry) ResolveApiIntoServiceDescriptor(a *api.Api) (*desc.Ser // UnmarshalAny will unmarshal the value embedded in the given Any value. This will use this // registry to resolve the given value's type URL. Use this instead of ptypes.UnmarshalAny for // cases where the type might not be statically linked into the current program. -func (r *MessageRegistry) UnmarshalAny(any *any.Any) (proto.Message, error) { - return r.unmarshalAny(any, r.FindMessageTypeByUrl) +func (r *MessageRegistry) UnmarshalAny(a *any.Any) (proto.Message, error) { + return r.unmarshalAny(a, r.FindMessageTypeByUrl) } -func (r *MessageRegistry) unmarshalAny(any *any.Any, fetch func(string) (*desc.MessageDescriptor, error)) (proto.Message, error) { - name, err := ptypes.AnyMessageName(any) +func (r *MessageRegistry) unmarshalAny(a *any.Any, fetch func(string) (*desc.MessageDescriptor, error)) (proto.Message, error) { + name, err := ptypes.AnyMessageName(a) if err != nil { return nil, err } @@ -360,16 +360,16 @@ func (r *MessageRegistry) unmarshalAny(any *any.Any, fetch func(string) (*desc.M ktr = r.mf.GetKnownTypeRegistry() } if msg = ktr.CreateIfKnown(name); msg == nil { - if md, err := fetch(any.TypeUrl); err != nil { + if md, err := fetch(a.TypeUrl); err != nil { return nil, err } else if md == nil { - return nil, fmt.Errorf("unknown message type: %s", any.TypeUrl) + return nil, fmt.Errorf("unknown message type: %s", a.TypeUrl) } else { msg = mf.NewDynamicMessage(md) } } - err = proto.Unmarshal(any.Value, msg) + err = proto.Unmarshal(a.Value, msg) if err != nil { return nil, err } else { diff --git a/grpcreflect/client_test.go b/grpcreflect/client_test.go index 5944fc49..3e62018f 100644 --- a/grpcreflect/client_test.go +++ b/grpcreflect/client_test.go @@ -25,7 +25,7 @@ import ( "github.com/jhump/protoreflect/desc" "github.com/jhump/protoreflect/internal" - "github.com/jhump/protoreflect/internal/testprotos" + testprotosgrpc "github.com/jhump/protoreflect/internal/testprotos/grpc" "github.com/jhump/protoreflect/internal/testutil" ) @@ -42,7 +42,7 @@ func TestMain(m *testing.M) { }() svr := grpc.NewServer() - testprotos.RegisterTestServiceServer(svr, testService{}) + testprotosgrpc.RegisterDummyServiceServer(svr, testService{}) reflection.Register(svr) l, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { @@ -203,7 +203,7 @@ func TestListServices(t *testing.T) { testutil.Ok(t, err) sort.Strings(s) - testutil.Eq(t, []string{"grpc.reflection.v1alpha.ServerReflection", "testprotos.TestService"}, s) + testutil.Eq(t, []string{"grpc.reflection.v1alpha.ServerReflection", "testprotos.DummyService"}, s) } func TestReset(t *testing.T) { diff --git a/grpcreflect/server_test.go b/grpcreflect/server_test.go index 7ae61f02..0f82b50a 100644 --- a/grpcreflect/server_test.go +++ b/grpcreflect/server_test.go @@ -5,27 +5,27 @@ import ( "google.golang.org/grpc" - "github.com/jhump/protoreflect/internal/testprotos" + testprotosgrpc "github.com/jhump/protoreflect/internal/testprotos/grpc" "github.com/jhump/protoreflect/internal/testutil" ) type testService struct { - testprotos.TestServiceServer + testprotosgrpc.DummyServiceServer } func TestLoadServiceDescriptors(t *testing.T) { s := grpc.NewServer() - testprotos.RegisterTestServiceServer(s, testService{}) + testprotosgrpc.RegisterDummyServiceServer(s, testService{}) sds, err := LoadServiceDescriptors(s) testutil.Ok(t, err) testutil.Eq(t, 1, len(sds)) - sd := sds["testprotos.TestService"] + sd := sds["testprotos.DummyService"] cases := []struct{ method, request, response string }{ - {"DoSomething", "testprotos.TestRequest", "jhump.protoreflect.desc.Bar"}, - {"DoSomethingElse", "testprotos.TestMessage", "testprotos.TestResponse"}, + {"DoSomething", "testprotos.DummyRequest", "jhump.protoreflect.desc.Bar"}, + {"DoSomethingElse", "testprotos.TestMessage", "testprotos.DummyResponse"}, {"DoSomethingAgain", "jhump.protoreflect.desc.Bar", "testprotos.AnotherTestMessage"}, - {"DoSomethingForever", "testprotos.TestRequest", "testprotos.TestResponse"}, + {"DoSomethingForever", "testprotos.DummyRequest", "testprotos.DummyResponse"}, } testutil.Eq(t, len(cases), len(sd.GetMethods())) @@ -39,14 +39,14 @@ func TestLoadServiceDescriptors(t *testing.T) { } func TestLoadServiceDescriptor(t *testing.T) { - sd, err := LoadServiceDescriptor(testprotos.TestService_ServiceDesc) + sd, err := LoadServiceDescriptor(&testprotosgrpc.DummyService_ServiceDesc) testutil.Ok(t, err) cases := []struct{ method, request, response string }{ - {"DoSomething", "testprotos.TestRequest", "jhump.protoreflect.desc.Bar"}, - {"DoSomethingElse", "testprotos.TestMessage", "testprotos.TestResponse"}, + {"DoSomething", "testprotos.DummyRequest", "jhump.protoreflect.desc.Bar"}, + {"DoSomethingElse", "testprotos.TestMessage", "testprotos.DummyResponse"}, {"DoSomethingAgain", "jhump.protoreflect.desc.Bar", "testprotos.AnotherTestMessage"}, - {"DoSomethingForever", "testprotos.TestRequest", "testprotos.TestResponse"}, + {"DoSomethingForever", "testprotos.DummyRequest", "testprotos.DummyResponse"}, } testutil.Eq(t, len(cases), len(sd.GetMethods())) diff --git a/internal/testprotos/desc_test_comments.pb.go b/internal/testprotos/desc_test_comments.pb.go index c624573e..35243851 100644 --- a/internal/testprotos/desc_test_comments.pb.go +++ b/internal/testprotos/desc_test_comments.pb.go @@ -18,10 +18,6 @@ package testprotos import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -624,159 +620,3 @@ func file_desc_test_comments_proto_init() { file_desc_test_comments_proto_goTypes = nil file_desc_test_comments_proto_depIdxs = nil } - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// 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.SupportPackageIsVersion6 - -// RpcServiceClient is the client API for RpcService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type RpcServiceClient interface { - // Method comment - StreamingRpc(ctx context.Context, opts ...grpc.CallOption) (RpcService_StreamingRpcClient, error) - // Deprecated: Do not use. - UnaryRpc(ctx context.Context, in *Request, opts ...grpc.CallOption) (*emptypb.Empty, error) -} - -type rpcServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewRpcServiceClient(cc grpc.ClientConnInterface) RpcServiceClient { - return &rpcServiceClient{cc} -} - -func (c *rpcServiceClient) StreamingRpc(ctx context.Context, opts ...grpc.CallOption) (RpcService_StreamingRpcClient, error) { - stream, err := c.cc.NewStream(ctx, &_RpcService_serviceDesc.Streams[0], "/foo.bar.RpcService/StreamingRpc", opts...) - if err != nil { - return nil, err - } - x := &rpcServiceStreamingRpcClient{stream} - return x, nil -} - -type RpcService_StreamingRpcClient interface { - Send(*Request) error - CloseAndRecv() (*Request, error) - grpc.ClientStream -} - -type rpcServiceStreamingRpcClient struct { - grpc.ClientStream -} - -func (x *rpcServiceStreamingRpcClient) Send(m *Request) error { - return x.ClientStream.SendMsg(m) -} - -func (x *rpcServiceStreamingRpcClient) CloseAndRecv() (*Request, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(Request) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Deprecated: Do not use. -func (c *rpcServiceClient) UnaryRpc(ctx context.Context, in *Request, opts ...grpc.CallOption) (*emptypb.Empty, error) { - out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, "/foo.bar.RpcService/UnaryRpc", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// RpcServiceServer is the server API for RpcService service. -type RpcServiceServer interface { - // Method comment - StreamingRpc(RpcService_StreamingRpcServer) error - // Deprecated: Do not use. - UnaryRpc(context.Context, *Request) (*emptypb.Empty, error) -} - -// UnimplementedRpcServiceServer can be embedded to have forward compatible implementations. -type UnimplementedRpcServiceServer struct { -} - -func (*UnimplementedRpcServiceServer) StreamingRpc(RpcService_StreamingRpcServer) error { - return status.Errorf(codes.Unimplemented, "method StreamingRpc not implemented") -} -func (*UnimplementedRpcServiceServer) UnaryRpc(context.Context, *Request) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method UnaryRpc not implemented") -} - -func RegisterRpcServiceServer(s *grpc.Server, srv RpcServiceServer) { - s.RegisterService(&_RpcService_serviceDesc, srv) -} - -func _RpcService_StreamingRpc_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(RpcServiceServer).StreamingRpc(&rpcServiceStreamingRpcServer{stream}) -} - -type RpcService_StreamingRpcServer interface { - SendAndClose(*Request) error - Recv() (*Request, error) - grpc.ServerStream -} - -type rpcServiceStreamingRpcServer struct { - grpc.ServerStream -} - -func (x *rpcServiceStreamingRpcServer) SendAndClose(m *Request) error { - return x.ServerStream.SendMsg(m) -} - -func (x *rpcServiceStreamingRpcServer) Recv() (*Request, error) { - m := new(Request) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _RpcService_UnaryRpc_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Request) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RpcServiceServer).UnaryRpc(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/foo.bar.RpcService/UnaryRpc", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RpcServiceServer).UnaryRpc(ctx, req.(*Request)) - } - return interceptor(ctx, in, info, handler) -} - -var _RpcService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "foo.bar.RpcService", - HandlerType: (*RpcServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "UnaryRpc", - Handler: _RpcService_UnaryRpc_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamingRpc", - Handler: _RpcService_StreamingRpc_Handler, - ClientStreams: true, - }, - }, - Metadata: "desc_test_comments.proto", -} diff --git a/internal/testprotos/desc_test_complex.pb.go b/internal/testprotos/desc_test_complex.pb.go index ca1f2a54..590df85b 100644 --- a/internal/testprotos/desc_test_complex.pb.go +++ b/internal/testprotos/desc_test_complex.pb.go @@ -7,10 +7,6 @@ package testprotos import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoiface "google.golang.org/protobuf/runtime/protoiface" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -2792,119 +2788,3 @@ func file_desc_test_complex_proto_init() { file_desc_test_complex_proto_goTypes = nil file_desc_test_complex_proto_depIdxs = nil } - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// 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.SupportPackageIsVersion6 - -// TestTestServiceClient is the client API for TestTestService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type TestTestServiceClient interface { - UserAuth(ctx context.Context, in *Test, opts ...grpc.CallOption) (*Test, error) - Get(ctx context.Context, in *Test, opts ...grpc.CallOption) (*Test, error) -} - -type testTestServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewTestTestServiceClient(cc grpc.ClientConnInterface) TestTestServiceClient { - return &testTestServiceClient{cc} -} - -func (c *testTestServiceClient) UserAuth(ctx context.Context, in *Test, opts ...grpc.CallOption) (*Test, error) { - out := new(Test) - err := c.cc.Invoke(ctx, "/foo.bar.TestTestService/UserAuth", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *testTestServiceClient) Get(ctx context.Context, in *Test, opts ...grpc.CallOption) (*Test, error) { - out := new(Test) - err := c.cc.Invoke(ctx, "/foo.bar.TestTestService/Get", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// TestTestServiceServer is the server API for TestTestService service. -type TestTestServiceServer interface { - UserAuth(context.Context, *Test) (*Test, error) - Get(context.Context, *Test) (*Test, error) -} - -// UnimplementedTestTestServiceServer can be embedded to have forward compatible implementations. -type UnimplementedTestTestServiceServer struct { -} - -func (*UnimplementedTestTestServiceServer) UserAuth(context.Context, *Test) (*Test, error) { - return nil, status.Errorf(codes.Unimplemented, "method UserAuth not implemented") -} -func (*UnimplementedTestTestServiceServer) Get(context.Context, *Test) (*Test, error) { - return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") -} - -func RegisterTestTestServiceServer(s *grpc.Server, srv TestTestServiceServer) { - s.RegisterService(&_TestTestService_serviceDesc, srv) -} - -func _TestTestService_UserAuth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Test) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TestTestServiceServer).UserAuth(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/foo.bar.TestTestService/UserAuth", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TestTestServiceServer).UserAuth(ctx, req.(*Test)) - } - return interceptor(ctx, in, info, handler) -} - -func _TestTestService_Get_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Test) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TestTestServiceServer).Get(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/foo.bar.TestTestService/Get", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TestTestServiceServer).Get(ctx, req.(*Test)) - } - return interceptor(ctx, in, info, handler) -} - -var _TestTestService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "foo.bar.TestTestService", - HandlerType: (*TestTestServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "UserAuth", - Handler: _TestTestService_UserAuth_Handler, - }, - { - MethodName: "Get", - Handler: _TestTestService_Get_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "desc_test_complex.proto", -} diff --git a/internal/testprotos/desc_test_proto3.pb.go b/internal/testprotos/desc_test_proto3.pb.go index 8d709d0c..f9a01f3a 100644 --- a/internal/testprotos/desc_test_proto3.pb.go +++ b/internal/testprotos/desc_test_proto3.pb.go @@ -7,11 +7,7 @@ package testprotos import ( - context "context" pkg "github.com/jhump/protoreflect/internal/testprotos/pkg" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -387,285 +383,3 @@ func file_desc_test_proto3_proto_init() { file_desc_test_proto3_proto_goTypes = nil file_desc_test_proto3_proto_depIdxs = nil } - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// 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.SupportPackageIsVersion6 - -// TestServiceClient is the client API for TestService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type TestServiceClient interface { - DoSomething(ctx context.Context, in *TestRequest, opts ...grpc.CallOption) (*pkg.Bar, error) - DoSomethingElse(ctx context.Context, opts ...grpc.CallOption) (TestService_DoSomethingElseClient, error) - DoSomethingAgain(ctx context.Context, in *pkg.Bar, opts ...grpc.CallOption) (TestService_DoSomethingAgainClient, error) - DoSomethingForever(ctx context.Context, opts ...grpc.CallOption) (TestService_DoSomethingForeverClient, error) -} - -type testServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewTestServiceClient(cc grpc.ClientConnInterface) TestServiceClient { - return &testServiceClient{cc} -} - -func (c *testServiceClient) DoSomething(ctx context.Context, in *TestRequest, opts ...grpc.CallOption) (*pkg.Bar, error) { - out := new(pkg.Bar) - err := c.cc.Invoke(ctx, "/testprotos.TestService/DoSomething", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *testServiceClient) DoSomethingElse(ctx context.Context, opts ...grpc.CallOption) (TestService_DoSomethingElseClient, error) { - stream, err := c.cc.NewStream(ctx, &_TestService_serviceDesc.Streams[0], "/testprotos.TestService/DoSomethingElse", opts...) - if err != nil { - return nil, err - } - x := &testServiceDoSomethingElseClient{stream} - return x, nil -} - -type TestService_DoSomethingElseClient interface { - Send(*TestMessage) error - CloseAndRecv() (*TestResponse, error) - grpc.ClientStream -} - -type testServiceDoSomethingElseClient struct { - grpc.ClientStream -} - -func (x *testServiceDoSomethingElseClient) Send(m *TestMessage) error { - return x.ClientStream.SendMsg(m) -} - -func (x *testServiceDoSomethingElseClient) CloseAndRecv() (*TestResponse, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(TestResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) DoSomethingAgain(ctx context.Context, in *pkg.Bar, opts ...grpc.CallOption) (TestService_DoSomethingAgainClient, error) { - stream, err := c.cc.NewStream(ctx, &_TestService_serviceDesc.Streams[1], "/testprotos.TestService/DoSomethingAgain", opts...) - if err != nil { - return nil, err - } - x := &testServiceDoSomethingAgainClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type TestService_DoSomethingAgainClient interface { - Recv() (*AnotherTestMessage, error) - grpc.ClientStream -} - -type testServiceDoSomethingAgainClient struct { - grpc.ClientStream -} - -func (x *testServiceDoSomethingAgainClient) Recv() (*AnotherTestMessage, error) { - m := new(AnotherTestMessage) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) DoSomethingForever(ctx context.Context, opts ...grpc.CallOption) (TestService_DoSomethingForeverClient, error) { - stream, err := c.cc.NewStream(ctx, &_TestService_serviceDesc.Streams[2], "/testprotos.TestService/DoSomethingForever", opts...) - if err != nil { - return nil, err - } - x := &testServiceDoSomethingForeverClient{stream} - return x, nil -} - -type TestService_DoSomethingForeverClient interface { - Send(*TestRequest) error - Recv() (*TestResponse, error) - grpc.ClientStream -} - -type testServiceDoSomethingForeverClient struct { - grpc.ClientStream -} - -func (x *testServiceDoSomethingForeverClient) Send(m *TestRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *testServiceDoSomethingForeverClient) Recv() (*TestResponse, error) { - m := new(TestResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// TestServiceServer is the server API for TestService service. -type TestServiceServer interface { - DoSomething(context.Context, *TestRequest) (*pkg.Bar, error) - DoSomethingElse(TestService_DoSomethingElseServer) error - DoSomethingAgain(*pkg.Bar, TestService_DoSomethingAgainServer) error - DoSomethingForever(TestService_DoSomethingForeverServer) error -} - -// UnimplementedTestServiceServer can be embedded to have forward compatible implementations. -type UnimplementedTestServiceServer struct { -} - -func (*UnimplementedTestServiceServer) DoSomething(context.Context, *TestRequest) (*pkg.Bar, error) { - return nil, status.Errorf(codes.Unimplemented, "method DoSomething not implemented") -} -func (*UnimplementedTestServiceServer) DoSomethingElse(TestService_DoSomethingElseServer) error { - return status.Errorf(codes.Unimplemented, "method DoSomethingElse not implemented") -} -func (*UnimplementedTestServiceServer) DoSomethingAgain(*pkg.Bar, TestService_DoSomethingAgainServer) error { - return status.Errorf(codes.Unimplemented, "method DoSomethingAgain not implemented") -} -func (*UnimplementedTestServiceServer) DoSomethingForever(TestService_DoSomethingForeverServer) error { - return status.Errorf(codes.Unimplemented, "method DoSomethingForever not implemented") -} - -func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { - s.RegisterService(&_TestService_serviceDesc, srv) -} - -func _TestService_DoSomething_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TestRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TestServiceServer).DoSomething(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/testprotos.TestService/DoSomething", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TestServiceServer).DoSomething(ctx, req.(*TestRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TestService_DoSomethingElse_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).DoSomethingElse(&testServiceDoSomethingElseServer{stream}) -} - -type TestService_DoSomethingElseServer interface { - SendAndClose(*TestResponse) error - Recv() (*TestMessage, error) - grpc.ServerStream -} - -type testServiceDoSomethingElseServer struct { - grpc.ServerStream -} - -func (x *testServiceDoSomethingElseServer) SendAndClose(m *TestResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *testServiceDoSomethingElseServer) Recv() (*TestMessage, error) { - m := new(TestMessage) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _TestService_DoSomethingAgain_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(pkg.Bar) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(TestServiceServer).DoSomethingAgain(m, &testServiceDoSomethingAgainServer{stream}) -} - -type TestService_DoSomethingAgainServer interface { - Send(*AnotherTestMessage) error - grpc.ServerStream -} - -type testServiceDoSomethingAgainServer struct { - grpc.ServerStream -} - -func (x *testServiceDoSomethingAgainServer) Send(m *AnotherTestMessage) error { - return x.ServerStream.SendMsg(m) -} - -func _TestService_DoSomethingForever_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).DoSomethingForever(&testServiceDoSomethingForeverServer{stream}) -} - -type TestService_DoSomethingForeverServer interface { - Send(*TestResponse) error - Recv() (*TestRequest, error) - grpc.ServerStream -} - -type testServiceDoSomethingForeverServer struct { - grpc.ServerStream -} - -func (x *testServiceDoSomethingForeverServer) Send(m *TestResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *testServiceDoSomethingForeverServer) Recv() (*TestRequest, error) { - m := new(TestRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _TestService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "testprotos.TestService", - HandlerType: (*TestServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "DoSomething", - Handler: _TestService_DoSomething_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "DoSomethingElse", - Handler: _TestService_DoSomethingElse_Handler, - ClientStreams: true, - }, - { - StreamName: "DoSomethingAgain", - Handler: _TestService_DoSomethingAgain_Handler, - ServerStreams: true, - }, - { - StreamName: "DoSomethingForever", - Handler: _TestService_DoSomethingForever_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "desc_test_proto3.proto", -} diff --git a/internal/testprotos/gen.go b/internal/testprotos/gen.go index f8f608ab..ab0c5278 100644 --- a/internal/testprotos/gen.go +++ b/internal/testprotos/gen.go @@ -1,5 +1,3 @@ package testprotos //go:generate ./make_protos.sh - -var TestService_ServiceDesc = &_TestService_serviceDesc diff --git a/internal/testprotos/grpc/dummy.pb.go b/internal/testprotos/grpc/dummy.pb.go new file mode 100644 index 00000000..d6737bae --- /dev/null +++ b/internal/testprotos/grpc/dummy.pb.go @@ -0,0 +1,328 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.19.0 +// source: grpc/dummy.proto + +package grpc + +import ( + testprotos "github.com/jhump/protoreflect/internal/testprotos" + pkg "github.com/jhump/protoreflect/internal/testprotos/pkg" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type DummyRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Foo [][]byte `protobuf:"bytes,1,rep,name=foo,proto3" json:"foo,omitempty"` + Bar string `protobuf:"bytes,2,opt,name=bar,proto3" json:"bar,omitempty"` + Baz *testprotos.TestMessage `protobuf:"bytes,3,opt,name=baz,proto3" json:"baz,omitempty"` + Snafu *testprotos.TestMessage_NestedMessage_AnotherNestedMessage `protobuf:"bytes,4,opt,name=snafu,proto3" json:"snafu,omitempty"` + Flags map[string]bool `protobuf:"bytes,5,rep,name=flags,proto3" json:"flags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Others map[string]*testprotos.TestMessage `protobuf:"bytes,6,rep,name=others,proto3" json:"others,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *DummyRequest) Reset() { + *x = DummyRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_grpc_dummy_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DummyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DummyRequest) ProtoMessage() {} + +func (x *DummyRequest) ProtoReflect() protoreflect.Message { + mi := &file_grpc_dummy_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DummyRequest.ProtoReflect.Descriptor instead. +func (*DummyRequest) Descriptor() ([]byte, []int) { + return file_grpc_dummy_proto_rawDescGZIP(), []int{0} +} + +func (x *DummyRequest) GetFoo() [][]byte { + if x != nil { + return x.Foo + } + return nil +} + +func (x *DummyRequest) GetBar() string { + if x != nil { + return x.Bar + } + return "" +} + +func (x *DummyRequest) GetBaz() *testprotos.TestMessage { + if x != nil { + return x.Baz + } + return nil +} + +func (x *DummyRequest) GetSnafu() *testprotos.TestMessage_NestedMessage_AnotherNestedMessage { + if x != nil { + return x.Snafu + } + return nil +} + +func (x *DummyRequest) GetFlags() map[string]bool { + if x != nil { + return x.Flags + } + return nil +} + +func (x *DummyRequest) GetOthers() map[string]*testprotos.TestMessage { + if x != nil { + return x.Others + } + return nil +} + +type DummyResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Atm *testprotos.AnotherTestMessage `protobuf:"bytes,1,opt,name=atm,proto3" json:"atm,omitempty"` + Vs []int32 `protobuf:"varint,2,rep,packed,name=vs,proto3" json:"vs,omitempty"` +} + +func (x *DummyResponse) Reset() { + *x = DummyResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_grpc_dummy_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DummyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DummyResponse) ProtoMessage() {} + +func (x *DummyResponse) ProtoReflect() protoreflect.Message { + mi := &file_grpc_dummy_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DummyResponse.ProtoReflect.Descriptor instead. +func (*DummyResponse) Descriptor() ([]byte, []int) { + return file_grpc_dummy_proto_rawDescGZIP(), []int{1} +} + +func (x *DummyResponse) GetAtm() *testprotos.AnotherTestMessage { + if x != nil { + return x.Atm + } + return nil +} + +func (x *DummyResponse) GetVs() []int32 { + if x != nil { + return x.Vs + } + return nil +} + +var File_grpc_dummy_proto protoreflect.FileDescriptor + +var file_grpc_dummy_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x1a, 0x10, + 0x64, 0x65, 0x73, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x17, 0x70, 0x6b, 0x67, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, + 0x70, 0x6b, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb6, 0x03, 0x0a, 0x0c, 0x44, 0x75, + 0x6d, 0x6d, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, + 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x12, 0x10, 0x0a, 0x03, + 0x62, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, 0x61, 0x72, 0x12, 0x29, + 0x0a, 0x03, 0x62, 0x61, 0x7a, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x03, 0x62, 0x61, 0x7a, 0x12, 0x50, 0x0a, 0x05, 0x73, 0x6e, 0x61, + 0x66, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, + 0x41, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x6e, 0x61, 0x66, 0x75, 0x12, 0x39, 0x0a, 0x05, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x73, 0x2e, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6f, 0x74, + 0x68, 0x65, 0x72, 0x73, 0x1a, 0x38, 0x0a, 0x0a, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x52, + 0x0a, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x51, 0x0a, 0x0d, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x03, 0x61, 0x74, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x41, 0x6e, + 0x6f, 0x74, 0x68, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x03, 0x61, 0x74, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x76, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x02, 0x76, 0x73, 0x32, 0xc1, 0x02, 0x0a, 0x0c, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x45, 0x0a, 0x0b, 0x44, 0x6f, 0x53, 0x6f, 0x6d, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x73, 0x2e, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x6a, 0x68, 0x75, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x72, 0x65, 0x66, + 0x6c, 0x65, 0x63, 0x74, 0x2e, 0x64, 0x65, 0x73, 0x63, 0x2e, 0x42, 0x61, 0x72, 0x12, 0x47, 0x0a, + 0x0f, 0x44, 0x6f, 0x53, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x45, 0x6c, 0x73, 0x65, + 0x12, 0x17, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x54, 0x65, + 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x19, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x52, 0x0a, 0x10, 0x44, 0x6f, 0x53, 0x6f, 0x6d, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x41, 0x67, 0x61, 0x69, 0x6e, 0x12, 0x1c, 0x2e, 0x6a, 0x68, 0x75, + 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x2e, + 0x64, 0x65, 0x73, 0x63, 0x2e, 0x42, 0x61, 0x72, 0x1a, 0x1e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x41, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x54, 0x65, 0x73, + 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x01, 0x12, 0x4d, 0x0a, 0x12, 0x44, 0x6f, + 0x53, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65, 0x76, 0x65, 0x72, + 0x12, 0x18, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x44, 0x75, + 0x6d, 0x6d, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6a, 0x68, 0x75, 0x6d, 0x70, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x67, + 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_grpc_dummy_proto_rawDescOnce sync.Once + file_grpc_dummy_proto_rawDescData = file_grpc_dummy_proto_rawDesc +) + +func file_grpc_dummy_proto_rawDescGZIP() []byte { + file_grpc_dummy_proto_rawDescOnce.Do(func() { + file_grpc_dummy_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_dummy_proto_rawDescData) + }) + return file_grpc_dummy_proto_rawDescData +} + +var file_grpc_dummy_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_grpc_dummy_proto_goTypes = []interface{}{ + (*DummyRequest)(nil), // 0: testprotos.DummyRequest + (*DummyResponse)(nil), // 1: testprotos.DummyResponse + nil, // 2: testprotos.DummyRequest.FlagsEntry + nil, // 3: testprotos.DummyRequest.OthersEntry + (*testprotos.TestMessage)(nil), // 4: testprotos.TestMessage + (*testprotos.TestMessage_NestedMessage_AnotherNestedMessage)(nil), // 5: testprotos.TestMessage.NestedMessage.AnotherNestedMessage + (*testprotos.AnotherTestMessage)(nil), // 6: testprotos.AnotherTestMessage + (*pkg.Bar)(nil), // 7: jhump.protoreflect.desc.Bar +} +var file_grpc_dummy_proto_depIdxs = []int32{ + 4, // 0: testprotos.DummyRequest.baz:type_name -> testprotos.TestMessage + 5, // 1: testprotos.DummyRequest.snafu:type_name -> testprotos.TestMessage.NestedMessage.AnotherNestedMessage + 2, // 2: testprotos.DummyRequest.flags:type_name -> testprotos.DummyRequest.FlagsEntry + 3, // 3: testprotos.DummyRequest.others:type_name -> testprotos.DummyRequest.OthersEntry + 6, // 4: testprotos.DummyResponse.atm:type_name -> testprotos.AnotherTestMessage + 4, // 5: testprotos.DummyRequest.OthersEntry.value:type_name -> testprotos.TestMessage + 0, // 6: testprotos.DummyService.DoSomething:input_type -> testprotos.DummyRequest + 4, // 7: testprotos.DummyService.DoSomethingElse:input_type -> testprotos.TestMessage + 7, // 8: testprotos.DummyService.DoSomethingAgain:input_type -> jhump.protoreflect.desc.Bar + 0, // 9: testprotos.DummyService.DoSomethingForever:input_type -> testprotos.DummyRequest + 7, // 10: testprotos.DummyService.DoSomething:output_type -> jhump.protoreflect.desc.Bar + 1, // 11: testprotos.DummyService.DoSomethingElse:output_type -> testprotos.DummyResponse + 6, // 12: testprotos.DummyService.DoSomethingAgain:output_type -> testprotos.AnotherTestMessage + 1, // 13: testprotos.DummyService.DoSomethingForever:output_type -> testprotos.DummyResponse + 10, // [10:14] is the sub-list for method output_type + 6, // [6:10] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_grpc_dummy_proto_init() } +func file_grpc_dummy_proto_init() { + if File_grpc_dummy_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_grpc_dummy_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DummyRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_grpc_dummy_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DummyResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_grpc_dummy_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_grpc_dummy_proto_goTypes, + DependencyIndexes: file_grpc_dummy_proto_depIdxs, + MessageInfos: file_grpc_dummy_proto_msgTypes, + }.Build() + File_grpc_dummy_proto = out.File + file_grpc_dummy_proto_rawDesc = nil + file_grpc_dummy_proto_goTypes = nil + file_grpc_dummy_proto_depIdxs = nil +} diff --git a/internal/testprotos/grpc/dummy.pb.srcinfo.go b/internal/testprotos/grpc/dummy.pb.srcinfo.go new file mode 100644 index 00000000..3e8c90ed --- /dev/null +++ b/internal/testprotos/grpc/dummy.pb.srcinfo.go @@ -0,0 +1,53 @@ +// Code generated by protoc-gen-gosrcinfo. DO NOT EDIT. +// source: grpc/dummy.proto + +package grpc + +import "github.com/jhump/protoreflect/desc/sourceinfo" + +func init() { + srcInfo := []byte{ + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x6c, 0xd2, 0x5f, 0x6f, 0xd3, 0x3c, + 0x14, 0x06, 0x70, 0xdb, 0xc7, 0xf1, 0xdb, 0xba, 0x5d, 0xbb, 0x9e, 0xa6, 0x5b, 0xdf, 0x36, 0xc9, + 0xbc, 0x09, 0x90, 0x40, 0xac, 0x80, 0x86, 0x10, 0x7f, 0xa4, 0x21, 0x18, 0x13, 0x37, 0x80, 0x10, + 0x4c, 0x42, 0x5c, 0x4d, 0x51, 0xea, 0x95, 0xb0, 0xd0, 0x54, 0x49, 0x36, 0xd8, 0xd7, 0xe5, 0x0b, + 0xf0, 0x15, 0x90, 0x5b, 0x9f, 0x3b, 0xae, 0xea, 0x5f, 0x9f, 0x9e, 0x93, 0xea, 0x89, 0xb5, 0x42, + 0xc9, 0xd8, 0x1e, 0xd7, 0x2d, 0xcd, 0xbb, 0x08, 0x8c, 0xa1, 0x3b, 0xb5, 0x10, 0x04, 0x7b, 0xaf, + 0xdb, 0x5a, 0xb4, 0x3a, 0x9b, 0x63, 0x4b, 0x73, 0x81, 0x20, 0xd9, 0xd0, 0x7d, 0x09, 0x0c, 0x41, + 0xb1, 0xc9, 0xfa, 0xc8, 0x11, 0xfe, 0x63, 0xfb, 0x5a, 0x6b, 0x21, 0x19, 0xca, 0x36, 0xdb, 0xe6, + 0x5a, 0x6b, 0x90, 0x8c, 0x23, 0xb4, 0x5b, 0xa1, 0xee, 0x68, 0x29, 0x99, 0x60, 0x08, 0x5a, 0xfc, + 0xaf, 0xbb, 0x3a, 0x70, 0x90, 0x4e, 0x9a, 0x14, 0x20, 0xe8, 0xce, 0x36, 0x89, 0x23, 0xe8, 0x41, + 0x48, 0x02, 0x04, 0xbd, 0x3b, 0xf6, 0x4b, 0x38, 0x42, 0x47, 0x0c, 0x7c, 0xc4, 0x03, 0xa7, 0x16, + 0xc9, 0x65, 0xed, 0x2e, 0x09, 0x10, 0x3a, 0xfd, 0x6d, 0x3f, 0x26, 0x10, 0xba, 0x62, 0xc7, 0x47, + 0x42, 0x39, 0x6d, 0x91, 0x38, 0x42, 0xb7, 0x47, 0x2b, 0x05, 0x20, 0x74, 0xc3, 0x91, 0x1f, 0x03, + 0x84, 0x2d, 0xf1, 0xc2, 0x47, 0xa0, 0x9c, 0x1e, 0x92, 0x38, 0xc2, 0xd6, 0xa3, 0x27, 0x24, 0xf7, + 0xcb, 0x67, 0xcf, 0xfd, 0x98, 0x44, 0xe8, 0x89, 0xc4, 0x47, 0x52, 0x39, 0x0d, 0x49, 0x1c, 0xa1, + 0x17, 0x52, 0x0b, 0x12, 0x10, 0x7a, 0x51, 0xec, 0xc7, 0x02, 0x84, 0xbe, 0xb8, 0xe3, 0xa3, 0x40, + 0x39, 0x4d, 0x48, 0x1c, 0xa1, 0x3f, 0xdd, 0x27, 0x01, 0x42, 0xff, 0xd6, 0xed, 0x75, 0xdf, 0x1c, + 0x25, 0xb2, 0xd1, 0xa6, 0x6f, 0xd7, 0x00, 0xb6, 0x36, 0x7f, 0x9e, 0xbb, 0xbe, 0x87, 0x22, 0x5e, + 0x8f, 0x70, 0xc1, 0x94, 0x53, 0x48, 0xe2, 0x08, 0xc3, 0xd1, 0x98, 0x04, 0x08, 0xc3, 0x69, 0xe4, + 0xc7, 0x38, 0x42, 0x28, 0x28, 0xe2, 0xd2, 0x49, 0x93, 0x02, 0x84, 0xd0, 0xbf, 0x26, 0xbe, 0xee, + 0x3b, 0x1c, 0x0c, 0x49, 0x80, 0x10, 0xee, 0xec, 0xea, 0x3f, 0x5c, 0x0b, 0xc5, 0x50, 0x4e, 0xd8, + 0x1e, 0x9f, 0xfc, 0xe6, 0xe6, 0x75, 0x5a, 0xe7, 0x59, 0x5a, 0x14, 0x37, 0xa6, 0x28, 0xcb, 0xcb, + 0xda, 0x7c, 0xbf, 0xaa, 0x1b, 0x53, 0xe4, 0x97, 0xd6, 0x9c, 0xd9, 0xba, 0xf9, 0x6c, 0xab, 0xeb, + 0x3c, 0xb3, 0x26, 0x5f, 0x9a, 0x83, 0xd9, 0xec, 0xc1, 0xdc, 0xd6, 0xd9, 0x79, 0x63, 0xeb, 0xe6, + 0x7c, 0x55, 0x95, 0x4d, 0x79, 0x34, 0x5b, 0x7f, 0x1c, 0xcc, 0xcc, 0xe9, 0xaf, 0xcc, 0xae, 0x1a, + 0xf3, 0xd3, 0x9a, 0x72, 0x59, 0xdc, 0x68, 0xb3, 0xb0, 0x4b, 0x5b, 0xa5, 0x8d, 0x35, 0x8b, 0x4f, + 0x1f, 0x4f, 0x0e, 0x2b, 0x5b, 0xa4, 0x8d, 0x9d, 0x9b, 0xac, 0x9c, 0x5b, 0x73, 0x51, 0x56, 0xa6, + 0xf9, 0x96, 0xd7, 0x66, 0x95, 0x66, 0x97, 0xe9, 0xc2, 0xde, 0x37, 0xcb, 0xb2, 0xf1, 0x0f, 0x38, + 0x98, 0x99, 0x33, 0x17, 0x65, 0xe5, 0xea, 0xc6, 0x14, 0xb6, 0xa9, 0xcd, 0x55, 0x6d, 0xdc, 0xf3, + 0x4c, 0x65, 0x2f, 0x0a, 0x9b, 0x35, 0x79, 0xb9, 0xd4, 0xa6, 0xbc, 0xb6, 0x95, 0xa9, 0xd3, 0x7c, + 0xfe, 0xaf, 0xed, 0x55, 0xf9, 0xc3, 0x2c, 0xaa, 0x55, 0xe6, 0x07, 0x66, 0xda, 0x35, 0xaf, 0x5c, + 0xa1, 0x93, 0xcd, 0x4d, 0x57, 0xeb, 0x9b, 0x3e, 0x15, 0x6f, 0x5d, 0x31, 0x6a, 0x73, 0x9b, 0xa7, + 0x6a, 0x40, 0x12, 0x08, 0xd3, 0xe1, 0x1e, 0x09, 0x10, 0xa6, 0xf7, 0x4e, 0xfd, 0x18, 0x47, 0x88, + 0xc4, 0x89, 0x8f, 0x5c, 0xbb, 0x91, 0x1a, 0x91, 0x02, 0x84, 0x68, 0x37, 0x26, 0x09, 0x84, 0x28, + 0xb9, 0x4b, 0x02, 0x84, 0xe8, 0xf1, 0x2b, 0xbf, 0x44, 0x20, 0xc4, 0xe2, 0xab, 0x8f, 0xdc, 0xca, + 0x58, 0xed, 0x90, 0x5c, 0x36, 0x3e, 0x22, 0x29, 0x84, 0xf8, 0xf8, 0x0d, 0x09, 0x10, 0xe2, 0xd3, + 0x2f, 0x7e, 0x09, 0x20, 0x24, 0xe2, 0x83, 0x8f, 0xdc, 0x4d, 0x4f, 0xd4, 0x98, 0x14, 0x20, 0x24, + 0x13, 0x43, 0x12, 0x08, 0xc9, 0xfe, 0x21, 0x49, 0x21, 0x24, 0x4f, 0x8f, 0x49, 0x6e, 0xcb, 0xcb, + 0x77, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x33, 0xef, 0x51, 0x5d, 0x04, 0x00, 0x00, + } + if err := sourceinfo.RegisterEncodedSourceInfo("grpc/dummy.proto", srcInfo); err != nil { + panic(err) + } +} diff --git a/internal/testprotos/grpc/dummy.proto b/internal/testprotos/grpc/dummy.proto new file mode 100644 index 00000000..1653ad5e --- /dev/null +++ b/internal/testprotos/grpc/dummy.proto @@ -0,0 +1,32 @@ +syntax = "proto3"; + +option go_package = "github.com/jhump/protoreflect/internal/testprotos/grpc"; + +package testprotos; + +import "desc_test1.proto"; +import "pkg/desc_test_pkg.proto"; + +message DummyRequest { + repeated bytes foo = 1; + string bar = 2; + TestMessage baz = 3; + TestMessage.NestedMessage.AnotherNestedMessage snafu = 4; + map flags = 5; + map others = 6; +} + +message DummyResponse { + AnotherTestMessage atm = 1; + repeated int32 vs = 2; +} + +// Basically looks just like TestService in "../desc_test_proto3.proto". Except we only +// generate gRPC-related code for this package, not in "..". This copy lets us test reflection +// over said gRPC-related code from grpcreflect. +service DummyService { + rpc DoSomething (DummyRequest) returns (jhump.protoreflect.desc.Bar); + rpc DoSomethingElse (stream TestMessage) returns (DummyResponse); + rpc DoSomethingAgain (jhump.protoreflect.desc.Bar) returns (stream AnotherTestMessage); + rpc DoSomethingForever (stream DummyRequest) returns (stream DummyResponse); +} diff --git a/internal/testprotos/grpc/dummy_grpc.pb.go b/internal/testprotos/grpc/dummy_grpc.pb.go new file mode 100644 index 00000000..72f05641 --- /dev/null +++ b/internal/testprotos/grpc/dummy_grpc.pb.go @@ -0,0 +1,309 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.19.0 +// source: grpc/dummy.proto + +package grpc + +import ( + context "context" + testprotos "github.com/jhump/protoreflect/internal/testprotos" + pkg "github.com/jhump/protoreflect/internal/testprotos/pkg" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// DummyServiceClient is the client API for DummyService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type DummyServiceClient interface { + DoSomething(ctx context.Context, in *DummyRequest, opts ...grpc.CallOption) (*pkg.Bar, error) + DoSomethingElse(ctx context.Context, opts ...grpc.CallOption) (DummyService_DoSomethingElseClient, error) + DoSomethingAgain(ctx context.Context, in *pkg.Bar, opts ...grpc.CallOption) (DummyService_DoSomethingAgainClient, error) + DoSomethingForever(ctx context.Context, opts ...grpc.CallOption) (DummyService_DoSomethingForeverClient, error) +} + +type dummyServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewDummyServiceClient(cc grpc.ClientConnInterface) DummyServiceClient { + return &dummyServiceClient{cc} +} + +func (c *dummyServiceClient) DoSomething(ctx context.Context, in *DummyRequest, opts ...grpc.CallOption) (*pkg.Bar, error) { + out := new(pkg.Bar) + err := c.cc.Invoke(ctx, "/testprotos.DummyService/DoSomething", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *dummyServiceClient) DoSomethingElse(ctx context.Context, opts ...grpc.CallOption) (DummyService_DoSomethingElseClient, error) { + stream, err := c.cc.NewStream(ctx, &DummyService_ServiceDesc.Streams[0], "/testprotos.DummyService/DoSomethingElse", opts...) + if err != nil { + return nil, err + } + x := &dummyServiceDoSomethingElseClient{stream} + return x, nil +} + +type DummyService_DoSomethingElseClient interface { + Send(*testprotos.TestMessage) error + CloseAndRecv() (*DummyResponse, error) + grpc.ClientStream +} + +type dummyServiceDoSomethingElseClient struct { + grpc.ClientStream +} + +func (x *dummyServiceDoSomethingElseClient) Send(m *testprotos.TestMessage) error { + return x.ClientStream.SendMsg(m) +} + +func (x *dummyServiceDoSomethingElseClient) CloseAndRecv() (*DummyResponse, error) { + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + m := new(DummyResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *dummyServiceClient) DoSomethingAgain(ctx context.Context, in *pkg.Bar, opts ...grpc.CallOption) (DummyService_DoSomethingAgainClient, error) { + stream, err := c.cc.NewStream(ctx, &DummyService_ServiceDesc.Streams[1], "/testprotos.DummyService/DoSomethingAgain", opts...) + if err != nil { + return nil, err + } + x := &dummyServiceDoSomethingAgainClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type DummyService_DoSomethingAgainClient interface { + Recv() (*testprotos.AnotherTestMessage, error) + grpc.ClientStream +} + +type dummyServiceDoSomethingAgainClient struct { + grpc.ClientStream +} + +func (x *dummyServiceDoSomethingAgainClient) Recv() (*testprotos.AnotherTestMessage, error) { + m := new(testprotos.AnotherTestMessage) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *dummyServiceClient) DoSomethingForever(ctx context.Context, opts ...grpc.CallOption) (DummyService_DoSomethingForeverClient, error) { + stream, err := c.cc.NewStream(ctx, &DummyService_ServiceDesc.Streams[2], "/testprotos.DummyService/DoSomethingForever", opts...) + if err != nil { + return nil, err + } + x := &dummyServiceDoSomethingForeverClient{stream} + return x, nil +} + +type DummyService_DoSomethingForeverClient interface { + Send(*DummyRequest) error + Recv() (*DummyResponse, error) + grpc.ClientStream +} + +type dummyServiceDoSomethingForeverClient struct { + grpc.ClientStream +} + +func (x *dummyServiceDoSomethingForeverClient) Send(m *DummyRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *dummyServiceDoSomethingForeverClient) Recv() (*DummyResponse, error) { + m := new(DummyResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// DummyServiceServer is the server API for DummyService service. +// All implementations must embed UnimplementedDummyServiceServer +// for forward compatibility +type DummyServiceServer interface { + DoSomething(context.Context, *DummyRequest) (*pkg.Bar, error) + DoSomethingElse(DummyService_DoSomethingElseServer) error + DoSomethingAgain(*pkg.Bar, DummyService_DoSomethingAgainServer) error + DoSomethingForever(DummyService_DoSomethingForeverServer) error + mustEmbedUnimplementedDummyServiceServer() +} + +// UnimplementedDummyServiceServer must be embedded to have forward compatible implementations. +type UnimplementedDummyServiceServer struct { +} + +func (UnimplementedDummyServiceServer) DoSomething(context.Context, *DummyRequest) (*pkg.Bar, error) { + return nil, status.Errorf(codes.Unimplemented, "method DoSomething not implemented") +} +func (UnimplementedDummyServiceServer) DoSomethingElse(DummyService_DoSomethingElseServer) error { + return status.Errorf(codes.Unimplemented, "method DoSomethingElse not implemented") +} +func (UnimplementedDummyServiceServer) DoSomethingAgain(*pkg.Bar, DummyService_DoSomethingAgainServer) error { + return status.Errorf(codes.Unimplemented, "method DoSomethingAgain not implemented") +} +func (UnimplementedDummyServiceServer) DoSomethingForever(DummyService_DoSomethingForeverServer) error { + return status.Errorf(codes.Unimplemented, "method DoSomethingForever not implemented") +} +func (UnimplementedDummyServiceServer) mustEmbedUnimplementedDummyServiceServer() {} + +// UnsafeDummyServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to DummyServiceServer will +// result in compilation errors. +type UnsafeDummyServiceServer interface { + mustEmbedUnimplementedDummyServiceServer() +} + +func RegisterDummyServiceServer(s grpc.ServiceRegistrar, srv DummyServiceServer) { + s.RegisterService(&DummyService_ServiceDesc, srv) +} + +func _DummyService_DoSomething_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DummyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DummyServiceServer).DoSomething(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/testprotos.DummyService/DoSomething", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DummyServiceServer).DoSomething(ctx, req.(*DummyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _DummyService_DoSomethingElse_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(DummyServiceServer).DoSomethingElse(&dummyServiceDoSomethingElseServer{stream}) +} + +type DummyService_DoSomethingElseServer interface { + SendAndClose(*DummyResponse) error + Recv() (*testprotos.TestMessage, error) + grpc.ServerStream +} + +type dummyServiceDoSomethingElseServer struct { + grpc.ServerStream +} + +func (x *dummyServiceDoSomethingElseServer) SendAndClose(m *DummyResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *dummyServiceDoSomethingElseServer) Recv() (*testprotos.TestMessage, error) { + m := new(testprotos.TestMessage) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func _DummyService_DoSomethingAgain_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(pkg.Bar) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(DummyServiceServer).DoSomethingAgain(m, &dummyServiceDoSomethingAgainServer{stream}) +} + +type DummyService_DoSomethingAgainServer interface { + Send(*testprotos.AnotherTestMessage) error + grpc.ServerStream +} + +type dummyServiceDoSomethingAgainServer struct { + grpc.ServerStream +} + +func (x *dummyServiceDoSomethingAgainServer) Send(m *testprotos.AnotherTestMessage) error { + return x.ServerStream.SendMsg(m) +} + +func _DummyService_DoSomethingForever_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(DummyServiceServer).DoSomethingForever(&dummyServiceDoSomethingForeverServer{stream}) +} + +type DummyService_DoSomethingForeverServer interface { + Send(*DummyResponse) error + Recv() (*DummyRequest, error) + grpc.ServerStream +} + +type dummyServiceDoSomethingForeverServer struct { + grpc.ServerStream +} + +func (x *dummyServiceDoSomethingForeverServer) Send(m *DummyResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *dummyServiceDoSomethingForeverServer) Recv() (*DummyRequest, error) { + m := new(DummyRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// DummyService_ServiceDesc is the grpc.ServiceDesc for DummyService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var DummyService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "testprotos.DummyService", + HandlerType: (*DummyServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "DoSomething", + Handler: _DummyService_DoSomething_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "DoSomethingElse", + Handler: _DummyService_DoSomethingElse_Handler, + ClientStreams: true, + }, + { + StreamName: "DoSomethingAgain", + Handler: _DummyService_DoSomethingAgain_Handler, + ServerStreams: true, + }, + { + StreamName: "DoSomethingForever", + Handler: _DummyService_DoSomethingForever_Handler, + ServerStreams: true, + ClientStreams: true, + }, + }, + Metadata: "grpc/dummy.proto", +} diff --git a/internal/testprotos/grpc/test.pb.go b/internal/testprotos/grpc/test.pb.go index e87e7c07..d3ae513e 100644 --- a/internal/testprotos/grpc/test.pb.go +++ b/internal/testprotos/grpc/test.pb.go @@ -1,3 +1,7 @@ +// This file was copied from github.com/grpc/grpc-go/interop/grpc_testing. +// This fork exists because the original source is unstable and has been +// moved/refactored and broken clients. + // Copyright 2017 gRPC authors. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -24,12 +28,9 @@ package grpc import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" reflect "reflect" sync "sync" ) @@ -152,44 +153,6 @@ func (GrpclbRouteType) EnumDescriptor() ([]byte, []int) { return file_grpc_test_proto_rawDescGZIP(), []int{1} } -type Empty struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *Empty) Reset() { - *x = Empty{} - if protoimpl.UnsafeEnabled { - mi := &file_grpc_test_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Empty) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Empty) ProtoMessage() {} - -func (x *Empty) ProtoReflect() protoreflect.Message { - mi := &file_grpc_test_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Empty.ProtoReflect.Descriptor instead. -func (*Empty) Descriptor() ([]byte, []int) { - return file_grpc_test_proto_rawDescGZIP(), []int{0} -} - // A block of data, to simply increase gRPC message size. type Payload struct { state protoimpl.MessageState @@ -205,7 +168,7 @@ type Payload struct { func (x *Payload) Reset() { *x = Payload{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_test_proto_msgTypes[1] + mi := &file_grpc_test_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -218,7 +181,7 @@ func (x *Payload) String() string { func (*Payload) ProtoMessage() {} func (x *Payload) ProtoReflect() protoreflect.Message { - mi := &file_grpc_test_proto_msgTypes[1] + mi := &file_grpc_test_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -231,7 +194,7 @@ func (x *Payload) ProtoReflect() protoreflect.Message { // Deprecated: Use Payload.ProtoReflect.Descriptor instead. func (*Payload) Descriptor() ([]byte, []int) { - return file_grpc_test_proto_rawDescGZIP(), []int{1} + return file_grpc_test_proto_rawDescGZIP(), []int{0} } func (x *Payload) GetType() PayloadType { @@ -262,7 +225,7 @@ type EchoStatus struct { func (x *EchoStatus) Reset() { *x = EchoStatus{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_test_proto_msgTypes[2] + mi := &file_grpc_test_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -275,7 +238,7 @@ func (x *EchoStatus) String() string { func (*EchoStatus) ProtoMessage() {} func (x *EchoStatus) ProtoReflect() protoreflect.Message { - mi := &file_grpc_test_proto_msgTypes[2] + mi := &file_grpc_test_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -288,7 +251,7 @@ func (x *EchoStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use EchoStatus.ProtoReflect.Descriptor instead. func (*EchoStatus) Descriptor() ([]byte, []int) { - return file_grpc_test_proto_rawDescGZIP(), []int{2} + return file_grpc_test_proto_rawDescGZIP(), []int{1} } func (x *EchoStatus) GetCode() int32 { @@ -334,7 +297,7 @@ type SimpleRequest struct { func (x *SimpleRequest) Reset() { *x = SimpleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_test_proto_msgTypes[3] + mi := &file_grpc_test_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -347,7 +310,7 @@ func (x *SimpleRequest) String() string { func (*SimpleRequest) ProtoMessage() {} func (x *SimpleRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_test_proto_msgTypes[3] + mi := &file_grpc_test_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -360,7 +323,7 @@ func (x *SimpleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SimpleRequest.ProtoReflect.Descriptor instead. func (*SimpleRequest) Descriptor() ([]byte, []int) { - return file_grpc_test_proto_rawDescGZIP(), []int{3} + return file_grpc_test_proto_rawDescGZIP(), []int{2} } func (x *SimpleRequest) GetResponseType() PayloadType { @@ -444,7 +407,7 @@ type SimpleResponse struct { func (x *SimpleResponse) Reset() { *x = SimpleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_test_proto_msgTypes[4] + mi := &file_grpc_test_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -457,7 +420,7 @@ func (x *SimpleResponse) String() string { func (*SimpleResponse) ProtoMessage() {} func (x *SimpleResponse) ProtoReflect() protoreflect.Message { - mi := &file_grpc_test_proto_msgTypes[4] + mi := &file_grpc_test_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -470,7 +433,7 @@ func (x *SimpleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SimpleResponse.ProtoReflect.Descriptor instead. func (*SimpleResponse) Descriptor() ([]byte, []int) { - return file_grpc_test_proto_rawDescGZIP(), []int{4} + return file_grpc_test_proto_rawDescGZIP(), []int{3} } func (x *SimpleResponse) GetPayload() *Payload { @@ -528,7 +491,7 @@ type StreamingInputCallRequest struct { func (x *StreamingInputCallRequest) Reset() { *x = StreamingInputCallRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_test_proto_msgTypes[5] + mi := &file_grpc_test_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -541,7 +504,7 @@ func (x *StreamingInputCallRequest) String() string { func (*StreamingInputCallRequest) ProtoMessage() {} func (x *StreamingInputCallRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_test_proto_msgTypes[5] + mi := &file_grpc_test_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -554,7 +517,7 @@ func (x *StreamingInputCallRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingInputCallRequest.ProtoReflect.Descriptor instead. func (*StreamingInputCallRequest) Descriptor() ([]byte, []int) { - return file_grpc_test_proto_rawDescGZIP(), []int{5} + return file_grpc_test_proto_rawDescGZIP(), []int{4} } func (x *StreamingInputCallRequest) GetPayload() *Payload { @@ -577,7 +540,7 @@ type StreamingInputCallResponse struct { func (x *StreamingInputCallResponse) Reset() { *x = StreamingInputCallResponse{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_test_proto_msgTypes[6] + mi := &file_grpc_test_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -590,7 +553,7 @@ func (x *StreamingInputCallResponse) String() string { func (*StreamingInputCallResponse) ProtoMessage() {} func (x *StreamingInputCallResponse) ProtoReflect() protoreflect.Message { - mi := &file_grpc_test_proto_msgTypes[6] + mi := &file_grpc_test_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -603,7 +566,7 @@ func (x *StreamingInputCallResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingInputCallResponse.ProtoReflect.Descriptor instead. func (*StreamingInputCallResponse) Descriptor() ([]byte, []int) { - return file_grpc_test_proto_rawDescGZIP(), []int{6} + return file_grpc_test_proto_rawDescGZIP(), []int{5} } func (x *StreamingInputCallResponse) GetAggregatedPayloadSize() int32 { @@ -630,7 +593,7 @@ type ResponseParameters struct { func (x *ResponseParameters) Reset() { *x = ResponseParameters{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_test_proto_msgTypes[7] + mi := &file_grpc_test_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -643,7 +606,7 @@ func (x *ResponseParameters) String() string { func (*ResponseParameters) ProtoMessage() {} func (x *ResponseParameters) ProtoReflect() protoreflect.Message { - mi := &file_grpc_test_proto_msgTypes[7] + mi := &file_grpc_test_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -656,7 +619,7 @@ func (x *ResponseParameters) ProtoReflect() protoreflect.Message { // Deprecated: Use ResponseParameters.ProtoReflect.Descriptor instead. func (*ResponseParameters) Descriptor() ([]byte, []int) { - return file_grpc_test_proto_rawDescGZIP(), []int{7} + return file_grpc_test_proto_rawDescGZIP(), []int{6} } func (x *ResponseParameters) GetSize() int32 { @@ -695,7 +658,7 @@ type StreamingOutputCallRequest struct { func (x *StreamingOutputCallRequest) Reset() { *x = StreamingOutputCallRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_test_proto_msgTypes[8] + mi := &file_grpc_test_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -708,7 +671,7 @@ func (x *StreamingOutputCallRequest) String() string { func (*StreamingOutputCallRequest) ProtoMessage() {} func (x *StreamingOutputCallRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_test_proto_msgTypes[8] + mi := &file_grpc_test_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -721,7 +684,7 @@ func (x *StreamingOutputCallRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingOutputCallRequest.ProtoReflect.Descriptor instead. func (*StreamingOutputCallRequest) Descriptor() ([]byte, []int) { - return file_grpc_test_proto_rawDescGZIP(), []int{8} + return file_grpc_test_proto_rawDescGZIP(), []int{7} } func (x *StreamingOutputCallRequest) GetResponseType() PayloadType { @@ -765,7 +728,7 @@ type StreamingOutputCallResponse struct { func (x *StreamingOutputCallResponse) Reset() { *x = StreamingOutputCallResponse{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_test_proto_msgTypes[9] + mi := &file_grpc_test_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -778,7 +741,7 @@ func (x *StreamingOutputCallResponse) String() string { func (*StreamingOutputCallResponse) ProtoMessage() {} func (x *StreamingOutputCallResponse) ProtoReflect() protoreflect.Message { - mi := &file_grpc_test_proto_msgTypes[9] + mi := &file_grpc_test_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -791,7 +754,7 @@ func (x *StreamingOutputCallResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamingOutputCallResponse.ProtoReflect.Descriptor instead. func (*StreamingOutputCallResponse) Descriptor() ([]byte, []int) { - return file_grpc_test_proto_rawDescGZIP(), []int{9} + return file_grpc_test_proto_rawDescGZIP(), []int{8} } func (x *StreamingOutputCallResponse) GetPayload() *Payload { @@ -815,7 +778,7 @@ type LoadBalancerStatsRequest struct { func (x *LoadBalancerStatsRequest) Reset() { *x = LoadBalancerStatsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_test_proto_msgTypes[10] + mi := &file_grpc_test_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -828,7 +791,7 @@ func (x *LoadBalancerStatsRequest) String() string { func (*LoadBalancerStatsRequest) ProtoMessage() {} func (x *LoadBalancerStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_grpc_test_proto_msgTypes[10] + mi := &file_grpc_test_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -841,7 +804,7 @@ func (x *LoadBalancerStatsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LoadBalancerStatsRequest.ProtoReflect.Descriptor instead. func (*LoadBalancerStatsRequest) Descriptor() ([]byte, []int) { - return file_grpc_test_proto_rawDescGZIP(), []int{10} + return file_grpc_test_proto_rawDescGZIP(), []int{9} } func (x *LoadBalancerStatsRequest) GetNumRpcs() int32 { @@ -872,7 +835,7 @@ type LoadBalancerStatsResponse struct { func (x *LoadBalancerStatsResponse) Reset() { *x = LoadBalancerStatsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_grpc_test_proto_msgTypes[11] + mi := &file_grpc_test_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -885,7 +848,7 @@ func (x *LoadBalancerStatsResponse) String() string { func (*LoadBalancerStatsResponse) ProtoMessage() {} func (x *LoadBalancerStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_grpc_test_proto_msgTypes[11] + mi := &file_grpc_test_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -898,7 +861,7 @@ func (x *LoadBalancerStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LoadBalancerStatsResponse.ProtoReflect.Descriptor instead. func (*LoadBalancerStatsResponse) Descriptor() ([]byte, []int) { - return file_grpc_test_proto_rawDescGZIP(), []int{11} + return file_grpc_test_proto_rawDescGZIP(), []int{10} } func (x *LoadBalancerStatsResponse) GetRpcsByPeer() map[string]int32 { @@ -919,168 +882,170 @@ var File_grpc_test_proto protoreflect.FileDescriptor var file_grpc_test_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, - 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4c, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x3a, 0x0a, 0x0a, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x22, 0x92, 0x03, 0x0a, 0x0d, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, - 0x6c, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x28, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x63, - 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x4f, - 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0e, - 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x6c, - 0x62, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x6c, 0x47, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x0e, 0x53, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x61, 0x75, 0x74, 0x68, - 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x61, - 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x11, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x5f, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, - 0x47, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0f, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4c, 0x0a, 0x19, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, - 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x54, 0x0a, 0x1a, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x61, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65, - 0x22, 0x49, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x22, 0xa3, 0x02, 0x0a, 0x1a, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, - 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x51, 0x0a, 0x13, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, + 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x1a, + 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4c, 0x0a, 0x07, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x3a, 0x0a, 0x0a, 0x45, 0x63, + 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x92, 0x03, 0x0a, 0x0d, 0x53, 0x69, 0x6d, 0x70, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x41, - 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x4e, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x22, 0x56, 0x0a, 0x18, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, - 0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x70, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x6e, 0x75, 0x6d, 0x52, 0x70, 0x63, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x22, 0xd8, 0x01, 0x0a, 0x19, 0x4c, 0x6f, - 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0c, 0x72, 0x70, 0x63, 0x73, 0x5f, - 0x62, 0x79, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, - 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50, 0x65, 0x65, - 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x72, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50, 0x65, - 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x46, 0x61, 0x69, - 0x6c, 0x75, 0x72, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50, - 0x65, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x3f, 0x0a, 0x0b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x41, - 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x43, 0x4f, 0x4d, 0x50, 0x52, - 0x45, 0x53, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x41, 0x4e, - 0x44, 0x4f, 0x4d, 0x10, 0x02, 0x2a, 0x6f, 0x0a, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x47, 0x52, 0x50, 0x43, - 0x4c, 0x42, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, - 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x47, 0x52, 0x50, 0x43, 0x4c, - 0x42, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x41, 0x4c, - 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x47, 0x52, 0x50, 0x43, 0x4c, - 0x42, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x41, 0x43, - 0x4b, 0x45, 0x4e, 0x44, 0x10, 0x02, 0x32, 0xbb, 0x04, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, - 0x61, 0x6c, 0x6c, 0x12, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, - 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x46, 0x0a, - 0x09, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, - 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, - 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x23, + 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x6f, 0x61, 0x75, 0x74, + 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, + 0x69, 0x6c, 0x6c, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x41, 0x0a, + 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x67, + 0x72, 0x70, 0x63, 0x6c, 0x62, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x6c, 0x47, 0x72, 0x70, 0x63, + 0x6c, 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x0e, + 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, + 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, + 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x11, 0x67, 0x72, 0x70, + 0x63, 0x6c, 0x62, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x4c, 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x54, + 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x17, + 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x53, 0x69, 0x7a, 0x65, 0x22, 0x49, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x22, + 0xa3, 0x02, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, + 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x51, + 0x0a, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x12, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, + 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4e, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, + 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x56, 0x0a, 0x18, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x70, 0x63, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x52, 0x70, 0x63, 0x73, 0x12, 0x1f, 0x0a, 0x0b, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x22, 0xd8, 0x01, + 0x0a, 0x19, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0c, 0x72, + 0x70, 0x63, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x73, 0x42, + 0x79, 0x50, 0x65, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x72, 0x70, 0x63, 0x73, + 0x42, 0x79, 0x50, 0x65, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x75, + 0x6d, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x52, 0x70, 0x63, + 0x73, 0x42, 0x79, 0x50, 0x65, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x3f, 0x0a, 0x0b, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x4d, 0x50, 0x52, + 0x45, 0x53, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x43, + 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, + 0x06, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x02, 0x2a, 0x6f, 0x0a, 0x0f, 0x47, 0x72, 0x70, + 0x63, 0x6c, 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, + 0x47, 0x52, 0x50, 0x43, 0x4c, 0x42, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x47, + 0x52, 0x50, 0x43, 0x4c, 0x42, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x47, + 0x52, 0x50, 0x43, 0x4c, 0x42, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x10, 0x02, 0x32, 0xc1, 0x04, 0x0a, 0x0b, 0x54, + 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x09, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x46, 0x0a, 0x09, 0x55, 0x6e, 0x61, 0x72, 0x79, + 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x6c, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x30, 0x01, 0x12, 0x69, 0x0a, 0x12, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, - 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x69, - 0x0a, 0x0e, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x43, 0x61, 0x6c, 0x6c, - 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, - 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x72, 0x70, + 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x69, 0x0a, + 0x12, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, + 0x61, 0x6c, 0x6c, 0x12, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, + 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x69, 0x0a, 0x0e, 0x46, 0x75, 0x6c, 0x6c, + 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x69, 0x0a, 0x0e, 0x48, 0x61, 0x6c, - 0x66, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x72, - 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, + 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, + 0x01, 0x30, 0x01, 0x12, 0x69, 0x0a, 0x0e, 0x48, 0x61, 0x6c, 0x66, 0x44, 0x75, 0x70, 0x6c, 0x65, + 0x78, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x28, 0x01, 0x30, 0x01, 0x32, 0x55, 0x0a, 0x14, 0x55, 0x6e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x11, - 0x55, 0x6e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x43, 0x61, 0x6c, - 0x6c, 0x12, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0x7f, 0x0a, 0x18, 0x4c, + 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, + 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x32, 0x5b, + 0x0a, 0x14, 0x55, 0x6e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x11, 0x55, 0x6e, 0x69, 0x6d, 0x70, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0x7f, 0x0a, 0x18, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, @@ -1108,54 +1073,54 @@ func file_grpc_test_proto_rawDescGZIP() []byte { } var file_grpc_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_grpc_test_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_grpc_test_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_grpc_test_proto_goTypes = []interface{}{ (PayloadType)(0), // 0: grpc.testing.PayloadType (GrpclbRouteType)(0), // 1: grpc.testing.GrpclbRouteType - (*Empty)(nil), // 2: grpc.testing.Empty - (*Payload)(nil), // 3: grpc.testing.Payload - (*EchoStatus)(nil), // 4: grpc.testing.EchoStatus - (*SimpleRequest)(nil), // 5: grpc.testing.SimpleRequest - (*SimpleResponse)(nil), // 6: grpc.testing.SimpleResponse - (*StreamingInputCallRequest)(nil), // 7: grpc.testing.StreamingInputCallRequest - (*StreamingInputCallResponse)(nil), // 8: grpc.testing.StreamingInputCallResponse - (*ResponseParameters)(nil), // 9: grpc.testing.ResponseParameters - (*StreamingOutputCallRequest)(nil), // 10: grpc.testing.StreamingOutputCallRequest - (*StreamingOutputCallResponse)(nil), // 11: grpc.testing.StreamingOutputCallResponse - (*LoadBalancerStatsRequest)(nil), // 12: grpc.testing.LoadBalancerStatsRequest - (*LoadBalancerStatsResponse)(nil), // 13: grpc.testing.LoadBalancerStatsResponse - nil, // 14: grpc.testing.LoadBalancerStatsResponse.RpcsByPeerEntry + (*Payload)(nil), // 2: grpc.testing.Payload + (*EchoStatus)(nil), // 3: grpc.testing.EchoStatus + (*SimpleRequest)(nil), // 4: grpc.testing.SimpleRequest + (*SimpleResponse)(nil), // 5: grpc.testing.SimpleResponse + (*StreamingInputCallRequest)(nil), // 6: grpc.testing.StreamingInputCallRequest + (*StreamingInputCallResponse)(nil), // 7: grpc.testing.StreamingInputCallResponse + (*ResponseParameters)(nil), // 8: grpc.testing.ResponseParameters + (*StreamingOutputCallRequest)(nil), // 9: grpc.testing.StreamingOutputCallRequest + (*StreamingOutputCallResponse)(nil), // 10: grpc.testing.StreamingOutputCallResponse + (*LoadBalancerStatsRequest)(nil), // 11: grpc.testing.LoadBalancerStatsRequest + (*LoadBalancerStatsResponse)(nil), // 12: grpc.testing.LoadBalancerStatsResponse + nil, // 13: grpc.testing.LoadBalancerStatsResponse.RpcsByPeerEntry + (*emptypb.Empty)(nil), // 14: google.protobuf.Empty } var file_grpc_test_proto_depIdxs = []int32{ 0, // 0: grpc.testing.Payload.type:type_name -> grpc.testing.PayloadType 0, // 1: grpc.testing.SimpleRequest.response_type:type_name -> grpc.testing.PayloadType - 3, // 2: grpc.testing.SimpleRequest.payload:type_name -> grpc.testing.Payload - 4, // 3: grpc.testing.SimpleRequest.response_status:type_name -> grpc.testing.EchoStatus - 3, // 4: grpc.testing.SimpleResponse.payload:type_name -> grpc.testing.Payload + 2, // 2: grpc.testing.SimpleRequest.payload:type_name -> grpc.testing.Payload + 3, // 3: grpc.testing.SimpleRequest.response_status:type_name -> grpc.testing.EchoStatus + 2, // 4: grpc.testing.SimpleResponse.payload:type_name -> grpc.testing.Payload 1, // 5: grpc.testing.SimpleResponse.grpclb_route_type:type_name -> grpc.testing.GrpclbRouteType - 3, // 6: grpc.testing.StreamingInputCallRequest.payload:type_name -> grpc.testing.Payload + 2, // 6: grpc.testing.StreamingInputCallRequest.payload:type_name -> grpc.testing.Payload 0, // 7: grpc.testing.StreamingOutputCallRequest.response_type:type_name -> grpc.testing.PayloadType - 9, // 8: grpc.testing.StreamingOutputCallRequest.response_parameters:type_name -> grpc.testing.ResponseParameters - 3, // 9: grpc.testing.StreamingOutputCallRequest.payload:type_name -> grpc.testing.Payload - 4, // 10: grpc.testing.StreamingOutputCallRequest.response_status:type_name -> grpc.testing.EchoStatus - 3, // 11: grpc.testing.StreamingOutputCallResponse.payload:type_name -> grpc.testing.Payload - 14, // 12: grpc.testing.LoadBalancerStatsResponse.rpcs_by_peer:type_name -> grpc.testing.LoadBalancerStatsResponse.RpcsByPeerEntry - 2, // 13: grpc.testing.TestService.EmptyCall:input_type -> grpc.testing.Empty - 5, // 14: grpc.testing.TestService.UnaryCall:input_type -> grpc.testing.SimpleRequest - 10, // 15: grpc.testing.TestService.StreamingOutputCall:input_type -> grpc.testing.StreamingOutputCallRequest - 7, // 16: grpc.testing.TestService.StreamingInputCall:input_type -> grpc.testing.StreamingInputCallRequest - 10, // 17: grpc.testing.TestService.FullDuplexCall:input_type -> grpc.testing.StreamingOutputCallRequest - 10, // 18: grpc.testing.TestService.HalfDuplexCall:input_type -> grpc.testing.StreamingOutputCallRequest - 2, // 19: grpc.testing.UnimplementedService.UnimplementedCall:input_type -> grpc.testing.Empty - 12, // 20: grpc.testing.LoadBalancerStatsService.GetClientStats:input_type -> grpc.testing.LoadBalancerStatsRequest - 2, // 21: grpc.testing.TestService.EmptyCall:output_type -> grpc.testing.Empty - 6, // 22: grpc.testing.TestService.UnaryCall:output_type -> grpc.testing.SimpleResponse - 11, // 23: grpc.testing.TestService.StreamingOutputCall:output_type -> grpc.testing.StreamingOutputCallResponse - 8, // 24: grpc.testing.TestService.StreamingInputCall:output_type -> grpc.testing.StreamingInputCallResponse - 11, // 25: grpc.testing.TestService.FullDuplexCall:output_type -> grpc.testing.StreamingOutputCallResponse - 11, // 26: grpc.testing.TestService.HalfDuplexCall:output_type -> grpc.testing.StreamingOutputCallResponse - 2, // 27: grpc.testing.UnimplementedService.UnimplementedCall:output_type -> grpc.testing.Empty - 13, // 28: grpc.testing.LoadBalancerStatsService.GetClientStats:output_type -> grpc.testing.LoadBalancerStatsResponse + 8, // 8: grpc.testing.StreamingOutputCallRequest.response_parameters:type_name -> grpc.testing.ResponseParameters + 2, // 9: grpc.testing.StreamingOutputCallRequest.payload:type_name -> grpc.testing.Payload + 3, // 10: grpc.testing.StreamingOutputCallRequest.response_status:type_name -> grpc.testing.EchoStatus + 2, // 11: grpc.testing.StreamingOutputCallResponse.payload:type_name -> grpc.testing.Payload + 13, // 12: grpc.testing.LoadBalancerStatsResponse.rpcs_by_peer:type_name -> grpc.testing.LoadBalancerStatsResponse.RpcsByPeerEntry + 14, // 13: grpc.testing.TestService.EmptyCall:input_type -> google.protobuf.Empty + 4, // 14: grpc.testing.TestService.UnaryCall:input_type -> grpc.testing.SimpleRequest + 9, // 15: grpc.testing.TestService.StreamingOutputCall:input_type -> grpc.testing.StreamingOutputCallRequest + 6, // 16: grpc.testing.TestService.StreamingInputCall:input_type -> grpc.testing.StreamingInputCallRequest + 9, // 17: grpc.testing.TestService.FullDuplexCall:input_type -> grpc.testing.StreamingOutputCallRequest + 9, // 18: grpc.testing.TestService.HalfDuplexCall:input_type -> grpc.testing.StreamingOutputCallRequest + 14, // 19: grpc.testing.UnimplementedService.UnimplementedCall:input_type -> google.protobuf.Empty + 11, // 20: grpc.testing.LoadBalancerStatsService.GetClientStats:input_type -> grpc.testing.LoadBalancerStatsRequest + 14, // 21: grpc.testing.TestService.EmptyCall:output_type -> google.protobuf.Empty + 5, // 22: grpc.testing.TestService.UnaryCall:output_type -> grpc.testing.SimpleResponse + 10, // 23: grpc.testing.TestService.StreamingOutputCall:output_type -> grpc.testing.StreamingOutputCallResponse + 7, // 24: grpc.testing.TestService.StreamingInputCall:output_type -> grpc.testing.StreamingInputCallResponse + 10, // 25: grpc.testing.TestService.FullDuplexCall:output_type -> grpc.testing.StreamingOutputCallResponse + 10, // 26: grpc.testing.TestService.HalfDuplexCall:output_type -> grpc.testing.StreamingOutputCallResponse + 14, // 27: grpc.testing.UnimplementedService.UnimplementedCall:output_type -> google.protobuf.Empty + 12, // 28: grpc.testing.LoadBalancerStatsService.GetClientStats:output_type -> grpc.testing.LoadBalancerStatsResponse 21, // [21:29] is the sub-list for method output_type 13, // [13:21] is the sub-list for method input_type 13, // [13:13] is the sub-list for extension type_name @@ -1170,18 +1135,6 @@ func file_grpc_test_proto_init() { } if !protoimpl.UnsafeEnabled { file_grpc_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Empty); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_grpc_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Payload); i { case 0: return &v.state @@ -1193,7 +1146,7 @@ func file_grpc_test_proto_init() { return nil } } - file_grpc_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_grpc_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EchoStatus); i { case 0: return &v.state @@ -1205,7 +1158,7 @@ func file_grpc_test_proto_init() { return nil } } - file_grpc_test_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_grpc_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SimpleRequest); i { case 0: return &v.state @@ -1217,7 +1170,7 @@ func file_grpc_test_proto_init() { return nil } } - file_grpc_test_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_grpc_test_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SimpleResponse); i { case 0: return &v.state @@ -1229,7 +1182,7 @@ func file_grpc_test_proto_init() { return nil } } - file_grpc_test_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_grpc_test_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StreamingInputCallRequest); i { case 0: return &v.state @@ -1241,7 +1194,7 @@ func file_grpc_test_proto_init() { return nil } } - file_grpc_test_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_grpc_test_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StreamingInputCallResponse); i { case 0: return &v.state @@ -1253,7 +1206,7 @@ func file_grpc_test_proto_init() { return nil } } - file_grpc_test_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_grpc_test_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResponseParameters); i { case 0: return &v.state @@ -1265,7 +1218,7 @@ func file_grpc_test_proto_init() { return nil } } - file_grpc_test_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_grpc_test_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StreamingOutputCallRequest); i { case 0: return &v.state @@ -1277,7 +1230,7 @@ func file_grpc_test_proto_init() { return nil } } - file_grpc_test_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_grpc_test_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StreamingOutputCallResponse); i { case 0: return &v.state @@ -1289,7 +1242,7 @@ func file_grpc_test_proto_init() { return nil } } - file_grpc_test_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_grpc_test_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LoadBalancerStatsRequest); i { case 0: return &v.state @@ -1301,7 +1254,7 @@ func file_grpc_test_proto_init() { return nil } } - file_grpc_test_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_grpc_test_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LoadBalancerStatsResponse); i { case 0: return &v.state @@ -1320,7 +1273,7 @@ func file_grpc_test_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_grpc_test_proto_rawDesc, NumEnums: 2, - NumMessages: 13, + NumMessages: 12, NumExtensions: 0, NumServices: 3, }, @@ -1334,565 +1287,3 @@ func file_grpc_test_proto_init() { file_grpc_test_proto_goTypes = nil file_grpc_test_proto_depIdxs = nil } - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// 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.SupportPackageIsVersion6 - -// TestServiceClient is the client API for TestService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type TestServiceClient interface { - // One empty request followed by one empty response. - EmptyCall(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) - // One request followed by one response. - // The server returns the client payload as-is. - UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error) - // One request followed by a sequence of responses (streamed download). - // The server returns the payload with client desired type and sizes. - StreamingOutputCall(ctx context.Context, in *StreamingOutputCallRequest, opts ...grpc.CallOption) (TestService_StreamingOutputCallClient, error) - // A sequence of requests followed by one response (streamed upload). - // The server returns the aggregated size of client payload as the result. - StreamingInputCall(ctx context.Context, opts ...grpc.CallOption) (TestService_StreamingInputCallClient, error) - // A sequence of requests with each request served by the server immediately. - // As one request could lead to multiple responses, this interface - // demonstrates the idea of full duplexing. - FullDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_FullDuplexCallClient, error) - // A sequence of requests followed by a sequence of responses. - // The server buffers all the client requests and then serves them in order. A - // stream of responses are returned to the client when the server starts with - // first request. - HalfDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_HalfDuplexCallClient, error) -} - -type testServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewTestServiceClient(cc grpc.ClientConnInterface) TestServiceClient { - return &testServiceClient{cc} -} - -func (c *testServiceClient) EmptyCall(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { - out := new(Empty) - err := c.cc.Invoke(ctx, "/grpc.testing.TestService/EmptyCall", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *testServiceClient) UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error) { - out := new(SimpleResponse) - err := c.cc.Invoke(ctx, "/grpc.testing.TestService/UnaryCall", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *testServiceClient) StreamingOutputCall(ctx context.Context, in *StreamingOutputCallRequest, opts ...grpc.CallOption) (TestService_StreamingOutputCallClient, error) { - stream, err := c.cc.NewStream(ctx, &_TestService_serviceDesc.Streams[0], "/grpc.testing.TestService/StreamingOutputCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceStreamingOutputCallClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type TestService_StreamingOutputCallClient interface { - Recv() (*StreamingOutputCallResponse, error) - grpc.ClientStream -} - -type testServiceStreamingOutputCallClient struct { - grpc.ClientStream -} - -func (x *testServiceStreamingOutputCallClient) Recv() (*StreamingOutputCallResponse, error) { - m := new(StreamingOutputCallResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) StreamingInputCall(ctx context.Context, opts ...grpc.CallOption) (TestService_StreamingInputCallClient, error) { - stream, err := c.cc.NewStream(ctx, &_TestService_serviceDesc.Streams[1], "/grpc.testing.TestService/StreamingInputCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceStreamingInputCallClient{stream} - return x, nil -} - -type TestService_StreamingInputCallClient interface { - Send(*StreamingInputCallRequest) error - CloseAndRecv() (*StreamingInputCallResponse, error) - grpc.ClientStream -} - -type testServiceStreamingInputCallClient struct { - grpc.ClientStream -} - -func (x *testServiceStreamingInputCallClient) Send(m *StreamingInputCallRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *testServiceStreamingInputCallClient) CloseAndRecv() (*StreamingInputCallResponse, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(StreamingInputCallResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) FullDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_FullDuplexCallClient, error) { - stream, err := c.cc.NewStream(ctx, &_TestService_serviceDesc.Streams[2], "/grpc.testing.TestService/FullDuplexCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceFullDuplexCallClient{stream} - return x, nil -} - -type TestService_FullDuplexCallClient interface { - Send(*StreamingOutputCallRequest) error - Recv() (*StreamingOutputCallResponse, error) - grpc.ClientStream -} - -type testServiceFullDuplexCallClient struct { - grpc.ClientStream -} - -func (x *testServiceFullDuplexCallClient) Send(m *StreamingOutputCallRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *testServiceFullDuplexCallClient) Recv() (*StreamingOutputCallResponse, error) { - m := new(StreamingOutputCallResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) HalfDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_HalfDuplexCallClient, error) { - stream, err := c.cc.NewStream(ctx, &_TestService_serviceDesc.Streams[3], "/grpc.testing.TestService/HalfDuplexCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceHalfDuplexCallClient{stream} - return x, nil -} - -type TestService_HalfDuplexCallClient interface { - Send(*StreamingOutputCallRequest) error - Recv() (*StreamingOutputCallResponse, error) - grpc.ClientStream -} - -type testServiceHalfDuplexCallClient struct { - grpc.ClientStream -} - -func (x *testServiceHalfDuplexCallClient) Send(m *StreamingOutputCallRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *testServiceHalfDuplexCallClient) Recv() (*StreamingOutputCallResponse, error) { - m := new(StreamingOutputCallResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// TestServiceServer is the server API for TestService service. -type TestServiceServer interface { - // One empty request followed by one empty response. - EmptyCall(context.Context, *Empty) (*Empty, error) - // One request followed by one response. - // The server returns the client payload as-is. - UnaryCall(context.Context, *SimpleRequest) (*SimpleResponse, error) - // One request followed by a sequence of responses (streamed download). - // The server returns the payload with client desired type and sizes. - StreamingOutputCall(*StreamingOutputCallRequest, TestService_StreamingOutputCallServer) error - // A sequence of requests followed by one response (streamed upload). - // The server returns the aggregated size of client payload as the result. - StreamingInputCall(TestService_StreamingInputCallServer) error - // A sequence of requests with each request served by the server immediately. - // As one request could lead to multiple responses, this interface - // demonstrates the idea of full duplexing. - FullDuplexCall(TestService_FullDuplexCallServer) error - // A sequence of requests followed by a sequence of responses. - // The server buffers all the client requests and then serves them in order. A - // stream of responses are returned to the client when the server starts with - // first request. - HalfDuplexCall(TestService_HalfDuplexCallServer) error -} - -// UnimplementedTestServiceServer can be embedded to have forward compatible implementations. -type UnimplementedTestServiceServer struct { -} - -func (*UnimplementedTestServiceServer) EmptyCall(context.Context, *Empty) (*Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method EmptyCall not implemented") -} -func (*UnimplementedTestServiceServer) UnaryCall(context.Context, *SimpleRequest) (*SimpleResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UnaryCall not implemented") -} -func (*UnimplementedTestServiceServer) StreamingOutputCall(*StreamingOutputCallRequest, TestService_StreamingOutputCallServer) error { - return status.Errorf(codes.Unimplemented, "method StreamingOutputCall not implemented") -} -func (*UnimplementedTestServiceServer) StreamingInputCall(TestService_StreamingInputCallServer) error { - return status.Errorf(codes.Unimplemented, "method StreamingInputCall not implemented") -} -func (*UnimplementedTestServiceServer) FullDuplexCall(TestService_FullDuplexCallServer) error { - return status.Errorf(codes.Unimplemented, "method FullDuplexCall not implemented") -} -func (*UnimplementedTestServiceServer) HalfDuplexCall(TestService_HalfDuplexCallServer) error { - return status.Errorf(codes.Unimplemented, "method HalfDuplexCall not implemented") -} - -func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { - s.RegisterService(&_TestService_serviceDesc, srv) -} - -func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TestServiceServer).EmptyCall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.TestService/EmptyCall", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TestServiceServer).EmptyCall(ctx, req.(*Empty)) - } - return interceptor(ctx, in, info, handler) -} - -func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SimpleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TestServiceServer).UnaryCall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.TestService/UnaryCall", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TestServiceServer).UnaryCall(ctx, req.(*SimpleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TestService_StreamingOutputCall_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(StreamingOutputCallRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(TestServiceServer).StreamingOutputCall(m, &testServiceStreamingOutputCallServer{stream}) -} - -type TestService_StreamingOutputCallServer interface { - Send(*StreamingOutputCallResponse) error - grpc.ServerStream -} - -type testServiceStreamingOutputCallServer struct { - grpc.ServerStream -} - -func (x *testServiceStreamingOutputCallServer) Send(m *StreamingOutputCallResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _TestService_StreamingInputCall_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).StreamingInputCall(&testServiceStreamingInputCallServer{stream}) -} - -type TestService_StreamingInputCallServer interface { - SendAndClose(*StreamingInputCallResponse) error - Recv() (*StreamingInputCallRequest, error) - grpc.ServerStream -} - -type testServiceStreamingInputCallServer struct { - grpc.ServerStream -} - -func (x *testServiceStreamingInputCallServer) SendAndClose(m *StreamingInputCallResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *testServiceStreamingInputCallServer) Recv() (*StreamingInputCallRequest, error) { - m := new(StreamingInputCallRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _TestService_FullDuplexCall_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).FullDuplexCall(&testServiceFullDuplexCallServer{stream}) -} - -type TestService_FullDuplexCallServer interface { - Send(*StreamingOutputCallResponse) error - Recv() (*StreamingOutputCallRequest, error) - grpc.ServerStream -} - -type testServiceFullDuplexCallServer struct { - grpc.ServerStream -} - -func (x *testServiceFullDuplexCallServer) Send(m *StreamingOutputCallResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *testServiceFullDuplexCallServer) Recv() (*StreamingOutputCallRequest, error) { - m := new(StreamingOutputCallRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _TestService_HalfDuplexCall_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).HalfDuplexCall(&testServiceHalfDuplexCallServer{stream}) -} - -type TestService_HalfDuplexCallServer interface { - Send(*StreamingOutputCallResponse) error - Recv() (*StreamingOutputCallRequest, error) - grpc.ServerStream -} - -type testServiceHalfDuplexCallServer struct { - grpc.ServerStream -} - -func (x *testServiceHalfDuplexCallServer) Send(m *StreamingOutputCallResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *testServiceHalfDuplexCallServer) Recv() (*StreamingOutputCallRequest, error) { - m := new(StreamingOutputCallRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _TestService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.testing.TestService", - HandlerType: (*TestServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "EmptyCall", - Handler: _TestService_EmptyCall_Handler, - }, - { - MethodName: "UnaryCall", - Handler: _TestService_UnaryCall_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamingOutputCall", - Handler: _TestService_StreamingOutputCall_Handler, - ServerStreams: true, - }, - { - StreamName: "StreamingInputCall", - Handler: _TestService_StreamingInputCall_Handler, - ClientStreams: true, - }, - { - StreamName: "FullDuplexCall", - Handler: _TestService_FullDuplexCall_Handler, - ServerStreams: true, - ClientStreams: true, - }, - { - StreamName: "HalfDuplexCall", - Handler: _TestService_HalfDuplexCall_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "grpc/test.proto", -} - -// UnimplementedServiceClient is the client API for UnimplementedService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type UnimplementedServiceClient interface { - // A call that no server should implement - UnimplementedCall(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) -} - -type unimplementedServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewUnimplementedServiceClient(cc grpc.ClientConnInterface) UnimplementedServiceClient { - return &unimplementedServiceClient{cc} -} - -func (c *unimplementedServiceClient) UnimplementedCall(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { - out := new(Empty) - err := c.cc.Invoke(ctx, "/grpc.testing.UnimplementedService/UnimplementedCall", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// UnimplementedServiceServer is the server API for UnimplementedService service. -type UnimplementedServiceServer interface { - // A call that no server should implement - UnimplementedCall(context.Context, *Empty) (*Empty, error) -} - -// UnimplementedUnimplementedServiceServer can be embedded to have forward compatible implementations. -type UnimplementedUnimplementedServiceServer struct { -} - -func (*UnimplementedUnimplementedServiceServer) UnimplementedCall(context.Context, *Empty) (*Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method UnimplementedCall not implemented") -} - -func RegisterUnimplementedServiceServer(s *grpc.Server, srv UnimplementedServiceServer) { - s.RegisterService(&_UnimplementedService_serviceDesc, srv) -} - -func _UnimplementedService_UnimplementedCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UnimplementedServiceServer).UnimplementedCall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.UnimplementedService/UnimplementedCall", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UnimplementedServiceServer).UnimplementedCall(ctx, req.(*Empty)) - } - return interceptor(ctx, in, info, handler) -} - -var _UnimplementedService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.testing.UnimplementedService", - HandlerType: (*UnimplementedServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "UnimplementedCall", - Handler: _UnimplementedService_UnimplementedCall_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "grpc/test.proto", -} - -// LoadBalancerStatsServiceClient is the client API for LoadBalancerStatsService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type LoadBalancerStatsServiceClient interface { - // Gets the backend distribution for RPCs sent by a test client. - GetClientStats(ctx context.Context, in *LoadBalancerStatsRequest, opts ...grpc.CallOption) (*LoadBalancerStatsResponse, error) -} - -type loadBalancerStatsServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewLoadBalancerStatsServiceClient(cc grpc.ClientConnInterface) LoadBalancerStatsServiceClient { - return &loadBalancerStatsServiceClient{cc} -} - -func (c *loadBalancerStatsServiceClient) GetClientStats(ctx context.Context, in *LoadBalancerStatsRequest, opts ...grpc.CallOption) (*LoadBalancerStatsResponse, error) { - out := new(LoadBalancerStatsResponse) - err := c.cc.Invoke(ctx, "/grpc.testing.LoadBalancerStatsService/GetClientStats", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// LoadBalancerStatsServiceServer is the server API for LoadBalancerStatsService service. -type LoadBalancerStatsServiceServer interface { - // Gets the backend distribution for RPCs sent by a test client. - GetClientStats(context.Context, *LoadBalancerStatsRequest) (*LoadBalancerStatsResponse, error) -} - -// UnimplementedLoadBalancerStatsServiceServer can be embedded to have forward compatible implementations. -type UnimplementedLoadBalancerStatsServiceServer struct { -} - -func (*UnimplementedLoadBalancerStatsServiceServer) GetClientStats(context.Context, *LoadBalancerStatsRequest) (*LoadBalancerStatsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetClientStats not implemented") -} - -func RegisterLoadBalancerStatsServiceServer(s *grpc.Server, srv LoadBalancerStatsServiceServer) { - s.RegisterService(&_LoadBalancerStatsService_serviceDesc, srv) -} - -func _LoadBalancerStatsService_GetClientStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LoadBalancerStatsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LoadBalancerStatsServiceServer).GetClientStats(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.LoadBalancerStatsService/GetClientStats", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LoadBalancerStatsServiceServer).GetClientStats(ctx, req.(*LoadBalancerStatsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _LoadBalancerStatsService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.testing.LoadBalancerStatsService", - HandlerType: (*LoadBalancerStatsServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetClientStats", - Handler: _LoadBalancerStatsService_GetClientStats_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "grpc/test.proto", -} diff --git a/internal/testprotos/grpc/test.pb.srcinfo.go b/internal/testprotos/grpc/test.pb.srcinfo.go index b5e05aab..df38fca7 100644 --- a/internal/testprotos/grpc/test.pb.srcinfo.go +++ b/internal/testprotos/grpc/test.pb.srcinfo.go @@ -7,247 +7,252 @@ import "github.com/jhump/protoreflect/desc/sourceinfo" func init() { srcInfo := []byte{ - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb4, 0x79, 0xed, 0x6f, 0x1c, 0xc7, - 0x7d, 0xff, 0xcd, 0xcc, 0xde, 0xf2, 0x38, 0xd4, 0x03, 0x35, 0x26, 0x29, 0x69, 0x29, 0x8b, 0x5f, - 0x53, 0x4e, 0x24, 0xd9, 0xd4, 0xe9, 0xc9, 0x76, 0x1c, 0x0b, 0x8e, 0x7f, 0x27, 0x8a, 0x3f, 0x8b, - 0x08, 0x2d, 0xaa, 0xa4, 0x54, 0xdb, 0x35, 0x60, 0x61, 0x6e, 0x77, 0xee, 0x6e, 0xa1, 0xbd, 0x9d, - 0xf3, 0xee, 0x2c, 0x1f, 0xea, 0xa2, 0x40, 0xd2, 0x00, 0x2e, 0x0c, 0xb4, 0x45, 0x0d, 0x14, 0x05, - 0x5a, 0xb4, 0x68, 0x81, 0xc0, 0x7d, 0x61, 0xe4, 0x45, 0x81, 0xc6, 0x0d, 0x92, 0x37, 0xc9, 0xab, - 0xb8, 0x2f, 0x82, 0x14, 0x81, 0xe1, 0x22, 0x08, 0x5c, 0x20, 0x70, 0xd2, 0x7f, 0xa1, 0x6f, 0x8b, - 0xef, 0xec, 0xce, 0x1e, 0x49, 0x49, 0x88, 0x9a, 0x22, 0x7a, 0xa5, 0x0f, 0x6f, 0xf7, 0xfb, 0xf8, - 0xf9, 0x3e, 0xcc, 0x2c, 0x9f, 0x10, 0xcd, 0xe9, 0xc6, 0xaf, 0x09, 0xe1, 0xdf, 0x6b, 0x72, 0x72, - 0x48, 0xb0, 0xe9, 0x86, 0x08, 0xb6, 0xa1, 0x93, 0x42, 0x9c, 0x1a, 0xd5, 0xcf, 0xa4, 0x89, 0x75, - 0x0a, 0x46, 0xe5, 0x06, 0x72, 0x95, 0x6d, 0xc5, 0xa1, 0x02, 0x33, 0x90, 0x06, 0x42, 0xbd, 0xa5, - 0xb2, 0x1c, 0x64, 0x92, 0x80, 0x19, 0x28, 0x18, 0x2a, 0x33, 0xd0, 0x11, 0xe4, 0x71, 0x3f, 0x95, - 0xa6, 0xc8, 0x14, 0x8c, 0x54, 0x36, 0x2c, 0x8c, 0x7d, 0x3b, 0xe7, 0xa0, 0x7b, 0x50, 0xa4, 0x32, - 0xdb, 0xbd, 0x98, 0x9b, 0x4c, 0xc9, 0x61, 0x9c, 0xf6, 0x21, 0x53, 0xef, 0x14, 0x2a, 0x37, 0xf9, - 0xc5, 0x4c, 0xe5, 0x23, 0x9d, 0xe6, 0x2a, 0x6f, 0xf3, 0x2b, 0xff, 0xe2, 0xc1, 0xb2, 0x1e, 0xed, - 0x66, 0x71, 0x7f, 0x60, 0xe0, 0xca, 0xa5, 0xcb, 0x5f, 0x81, 0xfe, 0xc6, 0xed, 0x65, 0x90, 0x85, - 0x19, 0xe8, 0x2c, 0x6f, 0x73, 0x0e, 0x6b, 0x71, 0xa8, 0xd2, 0x5c, 0x45, 0x50, 0xa4, 0x91, 0xca, - 0xac, 0xee, 0xce, 0x48, 0x86, 0x03, 0xe5, 0x7e, 0x59, 0x82, 0xdf, 0x57, 0x59, 0x8e, 0x46, 0x5f, - 0x69, 0x5f, 0x82, 0x73, 0xf8, 0xc0, 0x62, 0xf5, 0xd3, 0xe2, 0xf9, 0x6b, 0x1c, 0x76, 0x75, 0x01, - 0x43, 0xb9, 0x0b, 0xa9, 0x36, 0x50, 0xe4, 0xe8, 0x4d, 0x9c, 0x43, 0x2f, 0x4e, 0x14, 0xa8, 0x9d, - 0x50, 0x8d, 0x0c, 0xc4, 0x29, 0x84, 0x7a, 0x38, 0x4a, 0x62, 0x99, 0x86, 0x0a, 0xb6, 0x63, 0x33, - 0xb0, 0x5a, 0x2a, 0x19, 0x6d, 0x0e, 0x6f, 0x56, 0x12, 0x74, 0xd7, 0xc8, 0x38, 0x05, 0x09, 0xa1, - 0x1e, 0xed, 0xa2, 0x8b, 0x7b, 0x1e, 0x03, 0x69, 0x38, 0x07, 0xfc, 0x37, 0x30, 0x66, 0xf4, 0xd2, - 0xc5, 0x8b, 0xdb, 0xdb, 0xdb, 0x6d, 0x69, 0x0d, 0x6d, 0xeb, 0xac, 0x7f, 0x31, 0x29, 0x1f, 0xcb, - 0x2f, 0xae, 0xad, 0x2e, 0xaf, 0xdc, 0xda, 0x5c, 0xb9, 0x70, 0xa5, 0x7d, 0x89, 0x73, 0xb8, 0x9b, - 0x26, 0x2a, 0xcf, 0x6d, 0x6c, 0xe2, 0x4c, 0x45, 0xd0, 0xdd, 0x05, 0x39, 0x1a, 0x25, 0x71, 0x28, - 0xbb, 0x89, 0x82, 0x44, 0x6e, 0x83, 0xce, 0x40, 0xf6, 0x33, 0xa5, 0x22, 0x30, 0x1a, 0x4d, 0xdd, - 0xce, 0x62, 0x13, 0xa7, 0xfd, 0x25, 0xc8, 0x75, 0xcf, 0x6c, 0xcb, 0x4c, 0x71, 0x88, 0xe2, 0xdc, - 0x64, 0x71, 0xb7, 0x30, 0xfb, 0xa2, 0xe4, 0x0c, 0x8b, 0xf3, 0x7d, 0x0f, 0xe8, 0x14, 0x64, 0x0a, - 0x8b, 0x9d, 0x4d, 0x58, 0xdd, 0x5c, 0x84, 0xeb, 0x9d, 0xcd, 0xd5, 0xcd, 0x25, 0x0e, 0xaf, 0xaf, - 0xde, 0xb9, 0xb9, 0x7e, 0xf7, 0x0e, 0xbc, 0xde, 0xd9, 0xd8, 0xe8, 0xdc, 0xba, 0xb3, 0xba, 0xb2, - 0x09, 0xeb, 0x1b, 0xb0, 0xbc, 0x7e, 0xeb, 0xc6, 0xea, 0x9d, 0xd5, 0xf5, 0x5b, 0x9b, 0xb0, 0xfe, - 0xff, 0xa1, 0x73, 0xeb, 0x4d, 0xf8, 0xfa, 0xea, 0xad, 0x1b, 0x4b, 0xa0, 0x62, 0x33, 0x50, 0x19, - 0xa8, 0x9d, 0x51, 0x86, 0xd6, 0xeb, 0x0c, 0x62, 0x8c, 0x9f, 0x8a, 0xda, 0x1c, 0x36, 0x95, 0xda, - 0xa7, 0xbe, 0xa7, 0x4b, 0x73, 0xf2, 0x91, 0x0a, 0xe3, 0x5e, 0x1c, 0x42, 0x22, 0xd3, 0x7e, 0x21, - 0xfb, 0x0a, 0xfa, 0xc8, 0xa8, 0x14, 0xa9, 0x81, 0xdc, 0x89, 0x73, 0xcc, 0x61, 0x0e, 0x32, 0x8d, - 0x38, 0x24, 0xf1, 0x30, 0xae, 0xb8, 0xf4, 0xa0, 0x47, 0x6d, 0xce, 0x5b, 0x9c, 0xb4, 0x04, 0x9b, - 0x69, 0xbc, 0xc6, 0xff, 0x88, 0xd3, 0xd6, 0x94, 0xfd, 0x6f, 0xf0, 0x0e, 0xdc, 0xba, 0xfe, 0x12, - 0x6c, 0x2b, 0x90, 0x99, 0x82, 0xbe, 0x4a, 0x15, 0x72, 0x39, 0xed, 0x43, 0xa2, 0x43, 0x99, 0x24, - 0xbb, 0xc8, 0x6f, 0x5d, 0x66, 0x3f, 0x53, 0x23, 0xcd, 0xf5, 0xc8, 0x32, 0xbd, 0xaf, 0xef, 0x8d, - 0x64, 0x78, 0x1f, 0x0d, 0x7a, 0x19, 0x16, 0xfb, 0x5a, 0xf7, 0x13, 0xd5, 0xee, 0x6b, 0xb4, 0xd2, - 0x26, 0xae, 0x9f, 0x8d, 0xc2, 0x8b, 0x58, 0x1a, 0x99, 0x1e, 0x59, 0x70, 0x0f, 0x6b, 0x23, 0x4e, - 0xfb, 0x8b, 0xd7, 0xac, 0x1d, 0x54, 0xb0, 0xb9, 0xc6, 0x2c, 0x9f, 0xe4, 0xd4, 0x6b, 0x08, 0x76, - 0xa2, 0x31, 0xcd, 0x39, 0x67, 0x5e, 0x83, 0x08, 0x76, 0xa2, 0x75, 0x98, 0xbf, 0xc4, 0x69, 0xb3, - 0x21, 0xbc, 0xf9, 0xc6, 0xd3, 0x24, 0x68, 0xc3, 0x9d, 0x81, 0x02, 0xb3, 0x3b, 0x52, 0xc8, 0x9d, - 0x91, 0xdc, 0x4d, 0xb4, 0x8c, 0xca, 0xe2, 0xca, 0x07, 0xba, 0x48, 0x22, 0xe8, 0x2a, 0xc8, 0x94, - 0x29, 0xb2, 0x14, 0x23, 0x89, 0x72, 0x9a, 0x28, 0x67, 0xbe, 0x39, 0xcd, 0xcf, 0x71, 0xaf, 0xd9, - 0xa0, 0x0d, 0xc1, 0x9e, 0xa4, 0x4f, 0x04, 0xf3, 0xb0, 0xac, 0x87, 0x36, 0xf4, 0x96, 0x25, 0x46, - 0xed, 0x18, 0x0c, 0xf3, 0x50, 0x9a, 0x36, 0xe7, 0x87, 0x78, 0x13, 0x9f, 0x24, 0xf8, 0xe8, 0x11, - 0x87, 0xa8, 0x60, 0x4f, 0x1e, 0x13, 0x7c, 0xc9, 0x4a, 0x21, 0x82, 0x01, 0x9d, 0x0d, 0x16, 0xe0, - 0x6e, 0x1a, 0xee, 0x95, 0xd3, 0x8d, 0xb1, 0x62, 0x0f, 0x4a, 0x22, 0xf6, 0xf1, 0x69, 0x87, 0xa8, - 0x60, 0xf0, 0xc4, 0x0c, 0xff, 0xba, 0x95, 0x44, 0x05, 0x3b, 0x43, 0x0f, 0x07, 0x5f, 0x83, 0x0d, - 0x99, 0x46, 0x7a, 0x98, 0xec, 0x42, 0x38, 0xd0, 0xb9, 0x4a, 0xa1, 0x97, 0xe9, 0xa1, 0x6d, 0x15, - 0xda, 0x12, 0xa5, 0x14, 0x99, 0x43, 0xa4, 0x7a, 0x71, 0xaa, 0x22, 0xa4, 0xb1, 0xcd, 0x83, 0x4a, - 0x8b, 0x61, 0xad, 0x08, 0xed, 0x3a, 0x43, 0x5b, 0x0e, 0xa1, 0xec, 0xa9, 0x43, 0xfc, 0x06, 0xa7, - 0x1e, 0x11, 0xde, 0xd9, 0xc6, 0x12, 0x09, 0x5e, 0x84, 0x0e, 0x74, 0x13, 0x1d, 0xde, 0xc7, 0xf8, - 0x45, 0xd2, 0xc8, 0x25, 0xac, 0x89, 0x1c, 0xb9, 0x87, 0xd9, 0x0d, 0x33, 0x25, 0x73, 0x55, 0x36, - 0x90, 0x21, 0x3a, 0xd5, 0x57, 0x90, 0xc7, 0x7f, 0xa8, 0xca, 0x50, 0x7a, 0xe8, 0xc8, 0xd9, 0xd6, - 0x51, 0x0c, 0xa5, 0x47, 0x30, 0x94, 0xe7, 0xe9, 0xf1, 0x60, 0x7e, 0x5f, 0x4e, 0x50, 0x26, 0x1a, - 0xd7, 0xd5, 0xd1, 0x6e, 0x69, 0x17, 0x3e, 0xe9, 0xe3, 0xa3, 0x87, 0x1d, 0x22, 0x82, 0x9d, 0x3f, - 0x22, 0x1c, 0x62, 0x82, 0x9d, 0x9f, 0x9d, 0xe3, 0xcf, 0x5a, 0x99, 0x44, 0xb0, 0x67, 0xe9, 0xb1, - 0xe0, 0x34, 0xdc, 0xce, 0xe2, 0x21, 0x86, 0x32, 0xd4, 0xa9, 0x51, 0xa9, 0xc9, 0xf7, 0xe4, 0xbb, - 0x16, 0x4b, 0x9a, 0xf8, 0xf4, 0x84, 0x43, 0xf8, 0x6e, 0xeb, 0x90, 0x43, 0x4c, 0xb0, 0x67, 0x8f, - 0x4e, 0xf3, 0xbf, 0x22, 0x9c, 0x7a, 0x54, 0x78, 0x97, 0x1a, 0x57, 0x49, 0xf0, 0xa7, 0x04, 0x3a, - 0x30, 0xca, 0xb4, 0xd1, 0xdd, 0xa2, 0x87, 0x14, 0xce, 0x54, 0xae, 0xd2, 0xb2, 0x4a, 0x6c, 0x95, - 0x21, 0x39, 0x21, 0x37, 0xd2, 0x14, 0x39, 0x52, 0x2d, 0xce, 0xb1, 0xf4, 0x8b, 0xbc, 0xec, 0x2a, - 0x48, 0x5a, 0x0e, 0x61, 0x12, 0x5b, 0x7b, 0x30, 0x6c, 0xb6, 0x1e, 0x77, 0x41, 0x56, 0xaf, 0x94, - 0x44, 0xb4, 0x95, 0xaa, 0xb2, 0x2d, 0x95, 0x39, 0x4e, 0x4a, 0x63, 0xd4, 0x70, 0x64, 0xf0, 0x95, - 0x92, 0x9b, 0x55, 0x38, 0xd1, 0xdb, 0x4b, 0x2d, 0xc1, 0xa7, 0xb8, 0xe7, 0x51, 0x0c, 0xe7, 0x65, - 0x7a, 0xcc, 0x9a, 0x4f, 0x69, 0xa3, 0x89, 0x68, 0xc2, 0x21, 0x22, 0xd8, 0xe5, 0xca, 0x35, 0x6a, - 0x23, 0x76, 0xf9, 0xe8, 0x74, 0xf5, 0x1a, 0x11, 0xec, 0x0a, 0x9d, 0xad, 0x7e, 0xc2, 0x88, 0x5c, - 0x29, 0x09, 0x80, 0x08, 0x7f, 0x9b, 0x9c, 0x76, 0x88, 0x09, 0x76, 0xe5, 0x89, 0x19, 0xfe, 0x3d, - 0xc6, 0x69, 0x93, 0x08, 0xef, 0x5a, 0xe3, 0x3a, 0x09, 0x3e, 0x62, 0xfb, 0xb2, 0x97, 0xe9, 0xc2, - 0x54, 0xc3, 0x4a, 0x56, 0x9e, 0x82, 0xd1, 0xfa, 0x7e, 0x69, 0xba, 0x0c, 0x07, 0xe8, 0x6b, 0xe9, - 0xdb, 0x76, 0x3b, 0x6b, 0x9b, 0xb6, 0xa5, 0xca, 0xda, 0xf5, 0x36, 0xb7, 0x62, 0xaa, 0x9f, 0x86, - 0x45, 0x6e, 0x70, 0x3c, 0x24, 0x48, 0x84, 0xc5, 0x9e, 0x4c, 0x92, 0xae, 0x0c, 0xef, 0x2f, 0x42, - 0xdc, 0x83, 0xd8, 0x40, 0xa4, 0x8c, 0x0a, 0xcd, 0x9e, 0x60, 0x21, 0xd9, 0xac, 0x70, 0x15, 0xf1, - 0xbd, 0xd1, 0xdb, 0x8a, 0xa5, 0x85, 0x8b, 0xa5, 0x0e, 0x18, 0x0b, 0x1a, 0x49, 0x33, 0x58, 0xc2, - 0x36, 0x07, 0x8b, 0xf8, 0x07, 0x95, 0x46, 0x07, 0x84, 0xf3, 0x87, 0x4a, 0x3f, 0x28, 0xdc, 0x09, - 0xae, 0x65, 0xa0, 0x5c, 0x38, 0x17, 0xb7, 0x55, 0xbb, 0x12, 0xd7, 0xd7, 0xa6, 0x34, 0x49, 0x46, - 0x51, 0xd9, 0xa7, 0x7b, 0x65, 0xd9, 0x55, 0x52, 0x6c, 0x91, 0xe2, 0xef, 0x95, 0xa4, 0xea, 0xcf, - 0xd7, 0x65, 0x82, 0x83, 0x70, 0x0d, 0x9b, 0xd3, 0xc6, 0xed, 0xe5, 0xf3, 0x6d, 0x58, 0xd9, 0x91, - 0xa1, 0x49, 0x76, 0x39, 0x0c, 0xf4, 0x76, 0x29, 0xa1, 0xb4, 0x14, 0x89, 0x87, 0x40, 0xa7, 0x76, - 0xca, 0x58, 0xb6, 0xef, 0x18, 0xeb, 0x5a, 0x25, 0x2b, 0x52, 0x23, 0x95, 0x46, 0x32, 0x35, 0x55, - 0x3b, 0xc3, 0xa4, 0x5e, 0x6b, 0xce, 0xf0, 0xd7, 0xb8, 0xd7, 0xb4, 0x35, 0xf8, 0x32, 0x85, 0xe0, - 0xff, 0xc1, 0x66, 0xf5, 0x74, 0x1c, 0xa5, 0x67, 0x5d, 0x18, 0xac, 0x65, 0xbf, 0x39, 0xa5, 0xb1, - 0xeb, 0x54, 0x65, 0x69, 0xbe, 0x4c, 0xe7, 0x1d, 0xa2, 0x82, 0xbd, 0x7c, 0x7a, 0x81, 0xaf, 0x59, - 0x55, 0x44, 0xb0, 0x57, 0xe8, 0x53, 0xc1, 0x2b, 0xb0, 0x9a, 0x46, 0x71, 0x28, 0x8d, 0xca, 0x0f, - 0x48, 0x75, 0x51, 0x96, 0x7b, 0x63, 0x7c, 0x20, 0x77, 0xb5, 0x26, 0x62, 0xc5, 0x9d, 0x72, 0x88, - 0x0a, 0xf6, 0xca, 0x02, 0xf0, 0x0d, 0xab, 0x89, 0x0a, 0xd6, 0xa1, 0x10, 0xac, 0x3c, 0xbe, 0x26, - 0x99, 0x83, 0x53, 0x75, 0xa1, 0x1f, 0x6f, 0xa9, 0xd4, 0xe5, 0xb4, 0xd6, 0x87, 0xe6, 0x77, 0x6a, - 0xcf, 0xac, 0x8a, 0xd3, 0x0b, 0xfc, 0x14, 0xa7, 0x1e, 0x13, 0xde, 0x4a, 0xe3, 0x1e, 0x09, 0xa6, - 0xe1, 0xae, 0x6d, 0xde, 0xd5, 0x92, 0x55, 0xd5, 0x28, 0x23, 0x82, 0xad, 0xb4, 0x66, 0xf9, 0x07, - 0x84, 0x7b, 0x1e, 0xc3, 0x78, 0xdf, 0xa4, 0x10, 0x7c, 0x8b, 0xc0, 0x0d, 0x95, 0xdb, 0x75, 0xa3, - 0x1e, 0x42, 0x58, 0x42, 0xb6, 0x2b, 0xe3, 0x04, 0x2a, 0xd7, 0xb3, 0x31, 0x3f, 0x4a, 0x3b, 0xdb, - 0x1c, 0x56, 0x7b, 0xf5, 0xaf, 0xf7, 0xca, 0x57, 0x72, 0xd8, 0xe8, 0xdc, 0xba, 0xb1, 0xfe, 0xda, - 0x92, 0x73, 0x26, 0xdb, 0x33, 0x09, 0x74, 0xae, 0x72, 0x40, 0x72, 0x58, 0x49, 0xfb, 0x46, 0x41, - 0xd5, 0x06, 0x99, 0xed, 0xae, 0x37, 0xab, 0xee, 0xca, 0x6c, 0x0a, 0x6f, 0x1e, 0x99, 0x77, 0x88, - 0x09, 0x76, 0xf3, 0xf4, 0x82, 0x33, 0x9f, 0x08, 0xb6, 0x46, 0x83, 0x87, 0x99, 0x8f, 0x5d, 0xfe, - 0xb7, 0x34, 0x7f, 0x79, 0xfd, 0xb5, 0xdb, 0x1b, 0x2b, 0x9b, 0x9b, 0x9d, 0xeb, 0x6b, 0x2b, 0x4b, - 0x8e, 0xdc, 0xa9, 0x2e, 0xd3, 0x56, 0xce, 0x0f, 0xe8, 0xaa, 0x9e, 0xce, 0x14, 0xb8, 0x61, 0x19, - 0xeb, 0xb4, 0x36, 0x1f, 0x7b, 0xd6, 0x5a, 0xd5, 0xea, 0x98, 0xe5, 0xc5, 0x5a, 0x6b, 0xd6, 0x21, - 0x26, 0xd8, 0xda, 0x89, 0x93, 0xfc, 0xba, 0xb5, 0x9e, 0x0a, 0xb6, 0x4e, 0xe7, 0x82, 0xe7, 0x61, - 0xdd, 0xee, 0x1d, 0x12, 0xfb, 0xcb, 0xa8, 0x30, 0x63, 0x1f, 0x90, 0x1b, 0x32, 0xd1, 0x69, 0x7f, - 0xbc, 0x82, 0x8e, 0xb3, 0x59, 0x4a, 0xa4, 0x3e, 0x0a, 0x99, 0x74, 0x88, 0x08, 0xb6, 0xce, 0x8f, - 0x39, 0xc4, 0x04, 0x5b, 0x9f, 0x99, 0xe5, 0x5f, 0xb3, 0xda, 0x98, 0x60, 0x1b, 0xf4, 0x64, 0x70, - 0x19, 0x5e, 0x1f, 0x28, 0x1b, 0xf7, 0x4d, 0x9c, 0x92, 0x6a, 0xc3, 0x05, 0xa7, 0x6a, 0xee, 0x71, - 0x1a, 0x26, 0x45, 0xa4, 0x70, 0x4a, 0x64, 0xa9, 0x1c, 0xaa, 0x5a, 0x13, 0x6b, 0xa2, 0x00, 0xdf, - 0x21, 0x22, 0xd8, 0xc6, 0xc4, 0x8c, 0x43, 0x28, 0xfc, 0xf8, 0x09, 0xde, 0xb1, 0x9a, 0x3c, 0xc1, - 0xee, 0xd2, 0x53, 0xc1, 0x73, 0x8f, 0xa9, 0x69, 0xbd, 0x53, 0x98, 0x01, 0xe4, 0xa1, 0x1e, 0x8d, - 0x95, 0x79, 0x4d, 0x94, 0xe1, 0x94, 0x79, 0x44, 0xb0, 0xbb, 0x13, 0xc7, 0x1d, 0x62, 0x82, 0xdd, - 0x0d, 0xe6, 0xf9, 0x4b, 0x56, 0x59, 0x53, 0xb0, 0x37, 0xe8, 0x53, 0xc1, 0x85, 0x5a, 0xd9, 0xfe, - 0x59, 0x55, 0x0e, 0x28, 0xac, 0x26, 0x5b, 0x46, 0xe5, 0x60, 0x73, 0x5a, 0x9a, 0x3e, 0xbe, 0x7c, - 0xc8, 0x21, 0x22, 0xd8, 0x1b, 0x87, 0x4f, 0x39, 0xc4, 0x04, 0x7b, 0x63, 0x01, 0xf8, 0x2b, 0x56, - 0x8b, 0x2f, 0xd8, 0x5b, 0x34, 0x08, 0xae, 0x3c, 0xa6, 0x4b, 0xa5, 0x0d, 0xf7, 0xe2, 0xa8, 0x76, - 0xc8, 0x6f, 0xa2, 0x04, 0xe7, 0x90, 0x4f, 0x04, 0x7b, 0x6b, 0xc2, 0xb1, 0xc2, 0x67, 0x82, 0xbd, - 0x75, 0xe2, 0x24, 0x7f, 0xd5, 0xaa, 0x9a, 0x10, 0xec, 0x6d, 0x7a, 0x26, 0x78, 0xe9, 0x31, 0x55, - 0xe1, 0x88, 0x4f, 0xba, 0xf7, 0x6c, 0x5b, 0xb4, 0x14, 0xae, 0x55, 0x4e, 0x34, 0x51, 0x92, 0x53, - 0x39, 0x41, 0x04, 0x7b, 0x7b, 0xe2, 0x49, 0x87, 0x98, 0x60, 0x6f, 0xc3, 0x22, 0xbf, 0xc6, 0xa9, - 0xe7, 0x09, 0xaf, 0xdb, 0xd8, 0x22, 0xc1, 0xc5, 0xba, 0x61, 0x94, 0x9a, 0x96, 0xb0, 0x0d, 0x85, - 0x3a, 0xed, 0xc5, 0xfd, 0xa2, 0x3a, 0x88, 0xec, 0x67, 0x20, 0xf6, 0x13, 0x4c, 0x4d, 0xb7, 0x35, - 0xc7, 0x2f, 0x71, 0xcf, 0xf3, 0xb0, 0x9d, 0x44, 0x74, 0x2e, 0x38, 0x03, 0xb7, 0x5d, 0x17, 0xd1, - 0xe3, 0x2d, 0xec, 0xc0, 0x02, 0x86, 0x86, 0x78, 0xb6, 0xd8, 0xa3, 0x8a, 0xbf, 0x9e, 0x2d, 0xf6, - 0xa8, 0xe2, 0xaf, 0x67, 0x8b, 0x3d, 0x9a, 0x99, 0xe5, 0x3b, 0x56, 0x36, 0x11, 0x6c, 0x40, 0xe7, - 0x82, 0xfb, 0x76, 0x32, 0x23, 0x3b, 0xf7, 0x5a, 0x03, 0xa1, 0x1c, 0x96, 0xf5, 0xbd, 0x64, 0x17, - 0x9f, 0x2d, 0x95, 0xc5, 0xbd, 0x5d, 0x5c, 0xf5, 0xf1, 0xdc, 0xa8, 0x52, 0x83, 0x7d, 0x17, 0x87, - 0xd3, 0xb6, 0xcc, 0x39, 0xe4, 0x45, 0x18, 0xaa, 0x3c, 0xef, 0x15, 0x09, 0x6c, 0x0f, 0x54, 0xd9, - 0x24, 0xaa, 0x56, 0xac, 0x76, 0x46, 0x2a, 0xc4, 0x43, 0x91, 0x9b, 0x22, 0xa8, 0xb9, 0x89, 0xaa, - 0x5b, 0x0e, 0xa1, 0x21, 0x93, 0xce, 0x46, 0xac, 0xe8, 0xc1, 0xcc, 0x2c, 0x9f, 0xb7, 0x36, 0x52, - 0xc1, 0xee, 0xd3, 0x93, 0xc1, 0x91, 0x87, 0x70, 0xda, 0xa3, 0x48, 0xd5, 0xfb, 0xb5, 0x18, 0xf4, - 0xe7, 0xfe, 0xe4, 0x8c, 0x43, 0x4c, 0xb0, 0xfb, 0xc7, 0x4f, 0xe0, 0x7a, 0x87, 0x72, 0x98, 0x60, - 0x9a, 0x1e, 0x0f, 0xde, 0x23, 0x6e, 0x0e, 0xae, 0xde, 0xa8, 0xf6, 0x37, 0xbb, 0x8b, 0x74, 0x15, - 0x14, 0x69, 0xfc, 0x4e, 0xa1, 0x40, 0x0e, 0xb1, 0x3b, 0x44, 0x71, 0xaf, 0xa7, 0x32, 0x34, 0xbf, - 0x22, 0x7f, 0x9c, 0xe6, 0x06, 0x27, 0x76, 0xbe, 0xc4, 0xa1, 0x5b, 0x54, 0x3b, 0x1c, 0x46, 0x48, - 0x86, 0x99, 0xce, 0xcb, 0x23, 0xfb, 0xc6, 0xed, 0xe5, 0xb3, 0x39, 0x0c, 0x65, 0xa4, 0x30, 0x4b, - 0x12, 0x46, 0x32, 0x33, 0x71, 0x58, 0x24, 0x32, 0x3b, 0x28, 0xa5, 0xf6, 0x00, 0x5b, 0x80, 0xae, - 0x3d, 0xc0, 0x16, 0xa0, 0x27, 0x85, 0x43, 0x68, 0xf3, 0xec, 0x5c, 0x15, 0x08, 0x4f, 0xb0, 0x8c, - 0x9e, 0x0b, 0x8e, 0xb8, 0x79, 0x79, 0x5b, 0x9a, 0x41, 0x2d, 0xc6, 0xf3, 0xf1, 0x57, 0x17, 0x41, - 0x64, 0x50, 0x26, 0xce, 0x38, 0xc4, 0x04, 0xcb, 0xbe, 0x7c, 0x96, 0x2f, 0x58, 0x31, 0x4d, 0xc1, - 0x0a, 0x3a, 0x17, 0x08, 0x17, 0x86, 0x81, 0xce, 0xcd, 0x9e, 0xa6, 0xe4, 0xd1, 0xa6, 0x7d, 0xc2, - 0x59, 0x84, 0x15, 0x5c, 0xd4, 0xa9, 0xc1, 0x0a, 0x2e, 0x66, 0x66, 0xf9, 0x59, 0x8e, 0xed, 0xc4, - 0xdb, 0x6d, 0xfc, 0x31, 0xc1, 0x73, 0x92, 0xcd, 0xf3, 0x85, 0x07, 0x2e, 0x21, 0x2a, 0x3e, 0xa3, - 0x88, 0xdd, 0xd6, 0x53, 0xb6, 0x43, 0x37, 0x91, 0xcf, 0xef, 0xfe, 0xdf, 0x3a, 0x74, 0xd3, 0x32, - 0xfc, 0xdd, 0x8a, 0xe1, 0x4d, 0xcb, 0xf0, 0x77, 0x2b, 0x86, 0x37, 0x2d, 0xc3, 0xdf, 0x9d, 0x99, - 0xe5, 0xcf, 0x70, 0x0c, 0x8a, 0xff, 0x0d, 0xd2, 0xf8, 0x16, 0x21, 0xc1, 0xa9, 0x87, 0x19, 0x59, - 0xd6, 0x64, 0x9b, 0xf3, 0x29, 0xce, 0x3c, 0x9f, 0x08, 0xef, 0x1b, 0xa4, 0xb5, 0xc8, 0x57, 0xb8, - 0xe7, 0xf9, 0xb4, 0x21, 0xbc, 0x3f, 0x21, 0xf4, 0xe9, 0xe0, 0x2b, 0xd0, 0xe9, 0xf7, 0x33, 0xd5, - 0x97, 0x48, 0x60, 0x3b, 0xa7, 0xc6, 0xa7, 0x0c, 0x3c, 0xe2, 0x86, 0x2a, 0xde, 0x52, 0xd1, 0x78, - 0x0c, 0x96, 0x9c, 0x6f, 0x73, 0x7e, 0x98, 0x37, 0x51, 0x4c, 0xd3, 0xca, 0x99, 0x70, 0x90, 0x20, - 0x6c, 0x2d, 0x38, 0xc8, 0x10, 0x2e, 0x9e, 0xe1, 0x2f, 0x72, 0xea, 0x4d, 0x08, 0xff, 0x3d, 0xd2, - 0xf8, 0x0b, 0x42, 0x82, 0x67, 0x60, 0xb9, 0x6a, 0x11, 0xe3, 0x63, 0xc7, 0x3e, 0x32, 0x1d, 0x30, - 0x7d, 0x82, 0x08, 0xef, 0x3d, 0xd2, 0x0a, 0xf8, 0x5f, 0x22, 0xd5, 0x27, 0xd0, 0xf6, 0xf7, 0x09, - 0x3d, 0x16, 0x7c, 0xf3, 0xe1, 0x33, 0x3c, 0xc7, 0x21, 0x5e, 0x5f, 0x0f, 0xfd, 0xae, 0x27, 0x38, - 0x7a, 0x3a, 0x61, 0xe3, 0xf0, 0xbe, 0x8b, 0xc3, 0x84, 0x8d, 0xc3, 0xfb, 0xa4, 0x75, 0xc8, 0x41, - 0x86, 0xf0, 0xe8, 0x34, 0xef, 0x5b, 0xfb, 0x89, 0xf0, 0xfe, 0x9c, 0xd0, 0x13, 0xc1, 0x9b, 0xb5, - 0xf9, 0xf6, 0x66, 0x60, 0x4b, 0x26, 0xd0, 0x55, 0x66, 0x5b, 0xa9, 0x14, 0x7b, 0x68, 0xae, 0xc2, - 0xc2, 0xc4, 0x5b, 0x6a, 0x8f, 0x2b, 0x07, 0x97, 0x93, 0x32, 0xd9, 0x10, 0xa7, 0x1c, 0x86, 0x31, - 0x96, 0xa9, 0x0a, 0x75, 0x1a, 0xe5, 0xb5, 0x55, 0xa4, 0x69, 0x35, 0x39, 0xab, 0x88, 0x55, 0xdc, - 0x7a, 0xc2, 0x41, 0x86, 0x70, 0xee, 0x38, 0x3f, 0xcf, 0xa9, 0xd7, 0x12, 0xfe, 0x07, 0xa4, 0xf1, - 0x8f, 0x04, 0xf9, 0x5e, 0x56, 0xce, 0x43, 0xf9, 0x8e, 0xe9, 0x68, 0x11, 0xe1, 0x7d, 0x80, 0x4c, - 0xfa, 0x02, 0xd3, 0xd1, 0xc2, 0x74, 0xfc, 0x35, 0xa1, 0x10, 0x7c, 0xfa, 0x3b, 0xd9, 0x08, 0xf1, - 0x41, 0x27, 0xce, 0xbe, 0x69, 0x17, 0xf6, 0x5a, 0x58, 0x25, 0xbc, 0xb4, 0x15, 0xc3, 0xd0, 0x1f, - 0xd8, 0x66, 0x87, 0xe7, 0xf0, 0xba, 0xc5, 0xa1, 0xcc, 0x3d, 0xa7, 0xd9, 0xf2, 0xb8, 0x5f, 0x24, - 0xd2, 0x28, 0x90, 0x30, 0x8c, 0x77, 0x54, 0x74, 0xf0, 0x42, 0x85, 0x57, 0x12, 0xab, 0x50, 0xb6, - 0xb0, 0x24, 0xd1, 0xcb, 0xc3, 0x0e, 0x12, 0x84, 0x47, 0xe6, 0x1d, 0x64, 0x08, 0x4f, 0x2f, 0xd8, - 0x6d, 0xa6, 0x85, 0x09, 0xfe, 0x1b, 0x42, 0x5f, 0x08, 0xae, 0x3e, 0x84, 0xe8, 0xd6, 0xfc, 0x7a, - 0x64, 0xd4, 0x7e, 0x54, 0x93, 0xae, 0xd6, 0x47, 0x3c, 0x2b, 0xa3, 0x86, 0x3e, 0xc2, 0xa9, 0x27, - 0x1d, 0xb4, 0x1a, 0x4e, 0x5f, 0x76, 0x90, 0x21, 0x7c, 0xee, 0x79, 0xbe, 0x6c, 0xd5, 0x53, 0xe1, - 0xfd, 0x1d, 0xf9, 0xed, 0x7b, 0x50, 0x29, 0x93, 0xfa, 0x56, 0xca, 0xa4, 0x83, 0x04, 0x21, 0x3f, - 0xe6, 0x20, 0x43, 0x38, 0x33, 0xcb, 0xaf, 0x59, 0x8d, 0x4c, 0x78, 0xff, 0x40, 0xfe, 0xf7, 0x2b, - 0x55, 0x29, 0x8b, 0xf9, 0xf6, 0xed, 0x43, 0x0e, 0x12, 0x84, 0x87, 0x4f, 0x39, 0x68, 0x65, 0x2f, - 0x00, 0x7f, 0x9d, 0x53, 0x6f, 0x52, 0xf8, 0xdf, 0x26, 0x8d, 0x7f, 0x22, 0x24, 0x58, 0x7d, 0x18, - 0x4b, 0x1f, 0x67, 0x09, 0xb1, 0x07, 0xcb, 0x91, 0xcc, 0xe4, 0x50, 0x19, 0x65, 0x2f, 0x87, 0x91, - 0xd3, 0x93, 0x44, 0x78, 0xdf, 0x26, 0xad, 0x33, 0xfc, 0x0a, 0xf7, 0xbc, 0x49, 0xa4, 0xf4, 0x87, - 0x18, 0xc1, 0xa7, 0x1f, 0xba, 0x95, 0x8c, 0xeb, 0xaf, 0x5c, 0x4b, 0xd0, 0xd0, 0x49, 0xcb, 0x90, - 0x0f, 0x5d, 0xc0, 0x26, 0x2d, 0x43, 0x3e, 0x74, 0x01, 0x9b, 0xb4, 0x0c, 0xf9, 0x10, 0x03, 0xf6, - 0x4d, 0xc2, 0xa9, 0xdf, 0x10, 0xfe, 0x47, 0xa4, 0xf1, 0x6f, 0x84, 0x04, 0x06, 0x3a, 0xe5, 0xdd, - 0x93, 0x1a, 0x5f, 0x94, 0xeb, 0xf2, 0xe2, 0x1c, 0x8d, 0xde, 0x92, 0x59, 0xac, 0x8b, 0xbc, 0x64, - 0x30, 0xf2, 0x73, 0xe3, 0xf6, 0xb2, 0xbd, 0xdd, 0xb4, 0x14, 0xca, 0xe2, 0x21, 0x66, 0x12, 0x73, - 0xc8, 0x61, 0xa4, 0x32, 0x7b, 0x2c, 0xaa, 0xaf, 0x9f, 0x1f, 0x78, 0x77, 0x7c, 0x79, 0x34, 0xc5, - 0x99, 0x8f, 0x06, 0x7e, 0x84, 0xdd, 0xa0, 0xc3, 0x3d, 0xbf, 0x81, 0x2e, 0x7f, 0x87, 0xd0, 0xb3, - 0xc1, 0x55, 0x58, 0x4f, 0x15, 0xa8, 0xe1, 0xc8, 0xd4, 0xe7, 0x40, 0xe8, 0xe9, 0x24, 0xd1, 0xdb, - 0x65, 0x28, 0xf5, 0x9e, 0x5f, 0xeb, 0x2e, 0x7d, 0x98, 0x37, 0x7d, 0x7b, 0x5d, 0xe8, 0x7d, 0x87, - 0xf8, 0x47, 0x1d, 0xa4, 0x08, 0xa7, 0x67, 0x1d, 0x64, 0x08, 0xe1, 0x4b, 0x3c, 0xb4, 0xfa, 0x88, - 0xf0, 0xfe, 0x99, 0xd0, 0x17, 0x83, 0xbb, 0x56, 0xdf, 0xa3, 0x34, 0x8d, 0x75, 0xec, 0xbd, 0x5d, - 0x29, 0xe9, 0x94, 0xef, 0x5d, 0xc2, 0x1c, 0xb5, 0x65, 0x7e, 0x21, 0xce, 0x6b, 0x8b, 0x88, 0xd5, - 0x52, 0x5b, 0x44, 0x28, 0xc2, 0xe9, 0x27, 0x1d, 0x64, 0x08, 0xcf, 0xbd, 0xc0, 0xff, 0x96, 0x58, - 0x93, 0xa8, 0xf0, 0xbf, 0x4b, 0xe8, 0xc7, 0xe4, 0x6a, 0xf0, 0x3e, 0x79, 0xa4, 0x55, 0x78, 0xe0, - 0x7e, 0xa7, 0x50, 0x18, 0x65, 0xdd, 0xdb, 0xd3, 0x9b, 0xcf, 0x95, 0x44, 0x54, 0x11, 0x44, 0x7a, - 0x3b, 0x45, 0x5b, 0xce, 0x3f, 0xda, 0x68, 0x67, 0xad, 0xcd, 0x53, 0xe5, 0x41, 0x54, 0xf5, 0x4e, - 0xdb, 0x89, 0xec, 0xed, 0x07, 0xce, 0xb2, 0xda, 0x15, 0x0c, 0xd8, 0x77, 0x89, 0x7f, 0xd2, 0x41, - 0x8a, 0x30, 0x78, 0xce, 0x41, 0x5f, 0x78, 0x1f, 0x93, 0xa3, 0x2e, 0xd6, 0x58, 0x90, 0x1f, 0x93, - 0xb9, 0xcb, 0xfc, 0xef, 0x4b, 0xcf, 0x98, 0xf0, 0xbf, 0x4f, 0xe8, 0x0f, 0xc8, 0xb3, 0xc1, 0x9f, - 0x11, 0x24, 0xdc, 0x3e, 0x0f, 0xca, 0x0f, 0x2a, 0x8f, 0x0c, 0xfd, 0x1e, 0xcf, 0x8a, 0xd1, 0x6f, - 0xf0, 0x4b, 0x3e, 0xb8, 0x4b, 0x3c, 0x90, 0x1f, 0x37, 0x0c, 0x8a, 0xc4, 0xd4, 0xce, 0x61, 0xcd, - 0x7f, 0x9f, 0xf8, 0x27, 0x1c, 0x6c, 0x22, 0x3c, 0xb9, 0xe0, 0x20, 0x45, 0x08, 0x5f, 0x75, 0x90, - 0x09, 0xef, 0x07, 0xe4, 0xe8, 0x79, 0xfe, 0x49, 0xe9, 0x9c, 0x27, 0xfc, 0x1f, 0x12, 0xfa, 0x23, - 0x72, 0x35, 0xf8, 0xd7, 0x47, 0x3a, 0x67, 0x03, 0x5d, 0x4d, 0x8e, 0x32, 0xa7, 0xd6, 0xfa, 0xba, - 0x39, 0xb8, 0xf5, 0x75, 0x38, 0x54, 0x51, 0x2c, 0x8d, 0x4a, 0x76, 0xdb, 0x1c, 0x3a, 0x79, 0x15, - 0x88, 0xea, 0xbc, 0x60, 0x5b, 0x59, 0xa2, 0xca, 0x6e, 0x30, 0x2c, 0x12, 0x13, 0x63, 0xd9, 0xd6, - 0x14, 0xa8, 0xd6, 0x06, 0x3b, 0xcb, 0x7b, 0x32, 0x54, 0x1c, 0x22, 0x35, 0xd4, 0x69, 0x6e, 0x32, - 0xe9, 0xd6, 0x88, 0x38, 0x52, 0x12, 0xed, 0xea, 0x15, 0x49, 0x02, 0x51, 0x31, 0x4a, 0xd4, 0x4e, - 0x9c, 0xf6, 0xeb, 0x30, 0x78, 0x44, 0x78, 0x3f, 0x24, 0xfe, 0x8c, 0x83, 0x4d, 0x84, 0xb3, 0xf3, - 0x0e, 0x52, 0x84, 0xa7, 0x5e, 0x70, 0xd0, 0x17, 0xde, 0x8f, 0xc6, 0x29, 0xf7, 0x18, 0xc2, 0xb9, - 0xcb, 0xfc, 0xbf, 0xcb, 0xa8, 0x34, 0x85, 0xff, 0x63, 0x42, 0x3f, 0x21, 0x57, 0x83, 0xff, 0x7a, - 0xac, 0x94, 0x3f, 0x82, 0xd7, 0xfb, 0x73, 0xdd, 0x2d, 0x70, 0xa4, 0x8e, 0xbf, 0xdf, 0xd5, 0x97, - 0x51, 0x95, 0x40, 0xa4, 0x2d, 0x9e, 0x9d, 0xca, 0xe7, 0xad, 0xcf, 0xb8, 0x9e, 0x80, 0xce, 0x22, - 0x95, 0xb5, 0xa1, 0xe3, 0xc6, 0xea, 0xfe, 0xd2, 0x91, 0xd9, 0xf8, 0x8b, 0x85, 0xed, 0x7e, 0x63, - 0xc9, 0xf5, 0x59, 0xcb, 0xcd, 0x13, 0x23, 0xb3, 0x2a, 0x9d, 0x1c, 0x7a, 0x71, 0x96, 0x9b, 0xfd, - 0x83, 0x0b, 0x1d, 0x27, 0xc2, 0xfb, 0xf1, 0x38, 0x88, 0xcd, 0x26, 0xc2, 0x3a, 0x88, 0x4d, 0x8a, - 0xb0, 0x0e, 0x62, 0xd3, 0x17, 0xde, 0x27, 0xe3, 0x20, 0x36, 0x19, 0xc2, 0xb9, 0xcb, 0xfc, 0x1e, - 0xc7, 0x03, 0xb7, 0xff, 0x13, 0xd2, 0xf8, 0x77, 0x42, 0x82, 0xdf, 0x7b, 0xb0, 0x49, 0xdf, 0x5a, - 0xbf, 0x63, 0x3f, 0x57, 0x29, 0xec, 0xc0, 0x2a, 0x02, 0xe9, 0x0e, 0x52, 0x39, 0xe4, 0xba, 0xbe, - 0x21, 0x0f, 0x65, 0xf5, 0x11, 0xb4, 0xa7, 0xb3, 0xea, 0x42, 0x36, 0x94, 0x6e, 0xaf, 0xf5, 0xb1, - 0x3b, 0xfd, 0x84, 0xb4, 0x4e, 0xf1, 0x17, 0xb8, 0xe7, 0x13, 0xec, 0xc0, 0x3f, 0x25, 0x74, 0x35, - 0x38, 0x07, 0x1d, 0x08, 0xcb, 0x08, 0x4b, 0x03, 0xa9, 0x3e, 0x30, 0x4b, 0x6b, 0xad, 0xa5, 0xc3, - 0xf6, 0xc6, 0xd2, 0xfb, 0x29, 0xf1, 0x8f, 0x3b, 0x48, 0x11, 0x9e, 0x78, 0xc6, 0x41, 0x86, 0xf0, - 0xf9, 0x57, 0xf9, 0x21, 0x4e, 0x3d, 0x2e, 0xfc, 0x9f, 0x91, 0xc6, 0x7f, 0x10, 0x62, 0x87, 0x1e, - 0x27, 0xc2, 0xfb, 0x19, 0x69, 0x81, 0x5d, 0x1b, 0x38, 0xea, 0xff, 0x94, 0xd0, 0xd9, 0xe0, 0x79, - 0xd8, 0x70, 0x35, 0x62, 0xa4, 0x65, 0x49, 0x79, 0x6e, 0x4e, 0xd5, 0x8e, 0x81, 0xb4, 0x18, 0xde, - 0xcb, 0x46, 0x61, 0x5e, 0xee, 0x10, 0xdd, 0xdd, 0xfd, 0x07, 0x02, 0x6e, 0x17, 0xe1, 0x4f, 0xdd, - 0xca, 0xc9, 0xad, 0x6d, 0x9f, 0x92, 0xd6, 0xb4, 0x83, 0x0c, 0xe1, 0x13, 0x33, 0xfc, 0x0f, 0xac, - 0x46, 0x22, 0xbc, 0xcf, 0x70, 0x11, 0x5e, 0xc3, 0x0d, 0xb0, 0x96, 0x3c, 0x90, 0x5b, 0xca, 0x7e, - 0x67, 0xb5, 0xdf, 0x53, 0x15, 0x46, 0x17, 0xf3, 0x8d, 0x9b, 0x5e, 0x3c, 0x54, 0xba, 0x30, 0xf7, - 0x72, 0x15, 0x2e, 0xb9, 0x9d, 0xc2, 0x1e, 0x1b, 0x64, 0x52, 0x75, 0x94, 0xbc, 0x36, 0x04, 0x77, - 0xdf, 0xcf, 0xc6, 0x86, 0x10, 0xab, 0xab, 0xda, 0x7d, 0xb9, 0x6d, 0xfd, 0x9f, 0xe1, 0xee, 0x8b, - 0x51, 0x99, 0x12, 0xfe, 0xcf, 0x49, 0xe3, 0x3f, 0xab, 0xa8, 0x4c, 0x11, 0xe1, 0xfd, 0x9c, 0xb4, - 0x9e, 0xb2, 0xab, 0xcd, 0x14, 0x46, 0xe5, 0x17, 0x84, 0x7e, 0x39, 0xb8, 0x60, 0xeb, 0x20, 0x2d, - 0x86, 0x5d, 0x95, 0xd9, 0xbe, 0x56, 0x1b, 0x67, 0x47, 0x72, 0xbd, 0xda, 0x8d, 0x14, 0xae, 0xb4, - 0x56, 0xcd, 0x94, 0xdd, 0x09, 0x7e, 0x41, 0xe8, 0x8c, 0x83, 0x04, 0xe1, 0xec, 0x53, 0x0e, 0x32, - 0x84, 0x4f, 0x7f, 0xc9, 0xde, 0xe2, 0x4c, 0x61, 0x34, 0x3e, 0x27, 0xf4, 0x64, 0xf0, 0xd5, 0x03, - 0x9a, 0xac, 0x7c, 0xcb, 0x85, 0x9e, 0x8c, 0x93, 0xb2, 0x44, 0x32, 0x15, 0xea, 0x2c, 0x02, 0x09, - 0x99, 0x1a, 0x6a, 0xa3, 0xf6, 0x6b, 0x45, 0xd7, 0x3f, 0x77, 0xae, 0x4f, 0x59, 0xd7, 0x3f, 0x27, - 0x2d, 0x67, 0x04, 0xba, 0xfe, 0x39, 0x39, 0x7e, 0x82, 0xaf, 0x72, 0xea, 0x53, 0xe1, 0xff, 0x92, - 0x34, 0x7e, 0x4d, 0x48, 0x70, 0xcd, 0x36, 0x89, 0x92, 0xdc, 0xf6, 0x73, 0x8f, 0xd1, 0xee, 0x53, - 0xf5, 0x98, 0x06, 0xe3, 0x3b, 0x92, 0xb5, 0xeb, 0xd0, 0x55, 0x03, 0xb9, 0x15, 0xeb, 0xac, 0x62, - 0x33, 0xda, 0xff, 0x4b, 0x64, 0xd3, 0x3a, 0xf7, 0x7c, 0x4a, 0x1b, 0xc2, 0xff, 0x82, 0xd0, 0x5f, - 0x91, 0xa5, 0xe0, 0x15, 0x78, 0x55, 0x99, 0xb2, 0xff, 0x55, 0x57, 0xd2, 0xe3, 0x4f, 0xc9, 0x6e, - 0x2b, 0xb6, 0x3e, 0x3a, 0x4a, 0xc9, 0xb2, 0x66, 0xf6, 0x32, 0xcb, 0xb7, 0x5f, 0x80, 0xbc, 0x2f, - 0x5c, 0x5d, 0x53, 0x4b, 0xf3, 0x2f, 0xc8, 0xec, 0x05, 0x07, 0x99, 0xf0, 0x7e, 0x45, 0x8e, 0x9e, - 0xfb, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x86, 0xe4, 0x62, 0x35, 0x99, 0x20, 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb4, 0x79, 0x5b, 0x88, 0x24, 0xd7, + 0x79, 0x7f, 0x9f, 0x73, 0xaa, 0x6b, 0x7a, 0xce, 0xde, 0x8f, 0x66, 0xf6, 0x52, 0xbb, 0xda, 0xf9, + 0x76, 0x24, 0x59, 0x23, 0x6b, 0xa6, 0x67, 0xb5, 0xd2, 0xae, 0x64, 0x89, 0xbf, 0xf5, 0xef, 0x9d, + 0x1d, 0x2b, 0x83, 0x47, 0x3b, 0x93, 0x99, 0x5d, 0x89, 0x0d, 0x82, 0xe1, 0x74, 0xd5, 0xe9, 0xee, + 0x62, 0xab, 0xeb, 0xb4, 0xaa, 0x4e, 0xcd, 0xc5, 0xc4, 0x08, 0x44, 0x8c, 0x4d, 0x4c, 0x04, 0x71, + 0x88, 0x5f, 0x0c, 0x86, 0x40, 0x02, 0x46, 0x7e, 0x30, 0x86, 0xdc, 0xec, 0x07, 0xfb, 0xc5, 0x82, + 0x80, 0x9d, 0x07, 0x63, 0x63, 0x84, 0x82, 0x31, 0x4a, 0x70, 0x64, 0x3f, 0xe6, 0x29, 0xaf, 0xe1, + 0x3b, 0x55, 0xa7, 0x7a, 0x66, 0x76, 0x16, 0x6f, 0x1c, 0xac, 0x07, 0xb1, 0xbf, 0xe9, 0xaa, 0xef, + 0xfa, 0xfb, 0x2e, 0xe7, 0x14, 0x9f, 0x10, 0xcd, 0xa9, 0xc6, 0x6f, 0x09, 0xe1, 0xff, 0xe5, 0x73, + 0x72, 0x5c, 0xb0, 0xa9, 0x86, 0x08, 0x76, 0xa0, 0x93, 0x42, 0x9c, 0x1a, 0xd5, 0xcf, 0xa4, 0x89, + 0x75, 0x0a, 0x46, 0xe5, 0x06, 0x72, 0x95, 0x6d, 0xc7, 0xa1, 0x02, 0x33, 0x90, 0x06, 0x42, 0xbd, + 0xad, 0xb2, 0x1c, 0x64, 0x92, 0x80, 0x19, 0x28, 0x18, 0x2a, 0x33, 0xd0, 0x11, 0xe4, 0x71, 0x3f, + 0x95, 0xa6, 0xc8, 0x14, 0x8c, 0x54, 0x36, 0x2c, 0x8c, 0x7d, 0x3b, 0xe7, 0xa0, 0x7b, 0x50, 0xa4, + 0x32, 0xdb, 0x5b, 0xcc, 0x4d, 0xa6, 0xe4, 0x30, 0x4e, 0xfb, 0x90, 0xa9, 0xb7, 0x0b, 0x95, 0x9b, + 0x7c, 0x31, 0x53, 0xf9, 0x48, 0xa7, 0xb9, 0xca, 0xdb, 0xfc, 0xda, 0x3f, 0x12, 0xb8, 0x33, 0x88, + 0x73, 0xe8, 0xc5, 0x89, 0x82, 0x1d, 0x99, 0x43, 0xa8, 0x47, 0xb1, 0x8a, 0xa0, 0x97, 0xe9, 0x21, + 0xf4, 0x63, 0x33, 0x28, 0xba, 0xed, 0x50, 0x0f, 0x17, 0xfb, 0xd9, 0x28, 0xb4, 0xff, 0x5b, 0xe8, + 0xeb, 0x45, 0x34, 0x34, 0xd3, 0x23, 0x8b, 0xb7, 0xd0, 0xd2, 0x38, 0xed, 0xb7, 0x79, 0x25, 0x48, + 0x67, 0xf7, 0x41, 0xed, 0xc6, 0xb9, 0xc9, 0xa1, 0xab, 0x42, 0x59, 0xe4, 0xca, 0xda, 0xab, 0xb3, + 0xb8, 0x1f, 0xa7, 0x32, 0x81, 0x5c, 0x17, 0x59, 0xa8, 0x20, 0xce, 0xa1, 0x48, 0x73, 0x23, 0xbb, + 0x89, 0x02, 0x99, 0x46, 0x30, 0x90, 0xf8, 0xbc, 0x4a, 0x39, 0x0c, 0xf5, 0xb6, 0x8a, 0x16, 0x33, + 0xd5, 0x93, 0xa1, 0xd1, 0x99, 0x8a, 0xec, 0xcf, 0xdd, 0x4c, 0xdf, 0x57, 0x29, 0x84, 0x49, 0xac, + 0x52, 0x83, 0x86, 0xff, 0xbd, 0x07, 0x4b, 0x7a, 0xb4, 0x97, 0xc5, 0xfd, 0x81, 0x81, 0x6b, 0x57, + 0x9f, 0x7b, 0x11, 0xfa, 0x1b, 0xeb, 0x4b, 0x20, 0x0b, 0x33, 0xd0, 0x59, 0xde, 0xe6, 0x1c, 0x56, + 0xe3, 0x50, 0xa5, 0xb9, 0x8a, 0xa0, 0x48, 0x23, 0x95, 0x59, 0x23, 0x3a, 0x23, 0x19, 0x0e, 0x94, + 0xfb, 0x65, 0x1e, 0xde, 0x50, 0x59, 0x8e, 0xd1, 0xbe, 0xd6, 0xbe, 0x0a, 0x73, 0xf8, 0xc0, 0x6c, + 0xf5, 0xd3, 0xec, 0x33, 0xaf, 0x70, 0xd8, 0xd3, 0x05, 0x0c, 0xe5, 0x1e, 0xa4, 0xda, 0x40, 0xe9, + 0x86, 0x0b, 0x94, 0xda, 0x0d, 0xd5, 0xc8, 0x40, 0x9c, 0x42, 0xa8, 0x87, 0xa3, 0x24, 0x96, 0x69, + 0xa8, 0x60, 0x27, 0x36, 0x03, 0xab, 0xa5, 0x92, 0xd1, 0xe6, 0x70, 0xaf, 0x92, 0xa0, 0xbb, 0x46, + 0xc6, 0x29, 0x48, 0x8c, 0xee, 0x1e, 0xe6, 0x66, 0xdf, 0x63, 0x20, 0x0d, 0xe7, 0x80, 0xff, 0x0d, + 0x8c, 0x19, 0xbd, 0xbc, 0xb8, 0xb8, 0xb3, 0xb3, 0xd3, 0x96, 0xd6, 0xd0, 0xb6, 0xce, 0xfa, 0x8b, + 0x49, 0xf9, 0x58, 0xbe, 0xb8, 0xba, 0xb2, 0xb4, 0x7c, 0x7b, 0x73, 0x79, 0xe1, 0x5a, 0xfb, 0x2a, + 0xe7, 0x70, 0x37, 0x4d, 0x54, 0x9e, 0xdb, 0xa4, 0xc6, 0x18, 0xa4, 0xee, 0x1e, 0xc8, 0xd1, 0x28, + 0x89, 0x43, 0x1b, 0xd1, 0x44, 0xee, 0x80, 0xce, 0x40, 0xf6, 0x33, 0xa5, 0x22, 0x30, 0x1a, 0x4d, + 0xdd, 0xc9, 0x62, 0x4c, 0xd4, 0x3c, 0xe4, 0xba, 0x67, 0x76, 0x64, 0xa6, 0x38, 0x44, 0x71, 0x6e, + 0xb2, 0xb8, 0x5b, 0x98, 0x03, 0x51, 0x72, 0x86, 0xc5, 0xf9, 0x81, 0x07, 0x74, 0x0a, 0x32, 0x85, + 0xd9, 0xce, 0x26, 0xac, 0x6c, 0xce, 0xc2, 0xcd, 0xce, 0xe6, 0xca, 0xe6, 0x3c, 0x87, 0x37, 0x57, + 0xee, 0xfc, 0xd1, 0xda, 0xdd, 0x3b, 0xf0, 0x66, 0x67, 0x63, 0xa3, 0x73, 0xfb, 0xce, 0xca, 0xf2, + 0x26, 0xac, 0x6d, 0xc0, 0xd2, 0xda, 0xed, 0x5b, 0x2b, 0x77, 0x56, 0xd6, 0x6e, 0x6f, 0xc2, 0xda, + 0xe7, 0xa0, 0x73, 0xfb, 0x1e, 0x7c, 0x7e, 0xe5, 0xf6, 0xad, 0x79, 0x50, 0xb1, 0x19, 0xa8, 0x0c, + 0xd4, 0xee, 0x28, 0x43, 0xeb, 0x75, 0x06, 0x31, 0xc6, 0x4f, 0x45, 0x6d, 0x0e, 0x9b, 0x4a, 0x1d, + 0x50, 0xdf, 0xd3, 0xa5, 0x39, 0xf9, 0x48, 0x85, 0x71, 0x2f, 0x0e, 0x21, 0x91, 0x69, 0xbf, 0x90, + 0x7d, 0x05, 0x7d, 0x2c, 0x85, 0x14, 0x39, 0x8d, 0xa4, 0x8f, 0x73, 0xcc, 0x61, 0x8e, 0x34, 0xe1, + 0x90, 0xc4, 0xc3, 0xb8, 0x2a, 0x82, 0x07, 0x3d, 0x6a, 0x73, 0xde, 0xe2, 0xa4, 0x25, 0xd8, 0xf9, + 0xc6, 0xeb, 0xfc, 0x4f, 0x39, 0x6d, 0x1d, 0xb3, 0xff, 0x0c, 0xde, 0x86, 0xdb, 0x37, 0x5f, 0x86, + 0x1d, 0x05, 0x32, 0x53, 0xd0, 0x57, 0xa9, 0xc2, 0x22, 0x4c, 0xfb, 0x90, 0xe8, 0x50, 0x26, 0xc9, + 0x1e, 0x16, 0xa6, 0x2e, 0xb3, 0x9f, 0xa9, 0x91, 0xe6, 0x7a, 0x64, 0x4b, 0xb4, 0xaf, 0xb7, 0x46, + 0x32, 0xbc, 0x8f, 0x06, 0xfd, 0x3f, 0x98, 0xed, 0x6b, 0xdd, 0x4f, 0x54, 0xbb, 0xaf, 0xd1, 0x4a, + 0x9b, 0x38, 0x5b, 0x32, 0x47, 0x95, 0xca, 0xec, 0x2b, 0xd6, 0x0e, 0x2a, 0x58, 0xd0, 0x98, 0xe6, + 0x93, 0x9c, 0xb2, 0x86, 0x60, 0x97, 0x1a, 0x4f, 0xf1, 0x97, 0x39, 0x6d, 0x36, 0x84, 0x37, 0xd3, + 0x98, 0x23, 0x41, 0x1b, 0xee, 0x0c, 0x14, 0x98, 0xbd, 0x91, 0x42, 0xbe, 0x8c, 0xe4, 0x5e, 0xa2, + 0x65, 0x54, 0x76, 0x82, 0x7c, 0xa0, 0x8b, 0x24, 0x82, 0xae, 0x82, 0x4c, 0x99, 0x22, 0x4b, 0x31, + 0x7a, 0x9c, 0x73, 0xd6, 0x6c, 0x10, 0xc1, 0x66, 0x9a, 0xa7, 0xf9, 0x1c, 0xf7, 0x9a, 0x0d, 0xda, + 0x10, 0xec, 0x0a, 0x7d, 0x2c, 0xb8, 0x08, 0x4b, 0x7a, 0x68, 0xc3, 0x6d, 0x99, 0x61, 0xd4, 0xae, + 0xc1, 0xd0, 0x0e, 0xa5, 0x69, 0x73, 0x7e, 0x9c, 0x37, 0xf1, 0x49, 0x82, 0x8f, 0x9e, 0x74, 0x88, + 0x0a, 0x76, 0xe5, 0x8c, 0xe0, 0xf3, 0x56, 0x0a, 0x11, 0xec, 0x49, 0x3a, 0x1d, 0xcc, 0xc0, 0xdd, + 0x34, 0xdc, 0x2f, 0xa7, 0x1b, 0x63, 0x7b, 0x39, 0x2c, 0x89, 0xd8, 0xc7, 0x4f, 0x3b, 0x44, 0x05, + 0x7b, 0xf2, 0xb1, 0x29, 0xfe, 0x79, 0x2b, 0x89, 0x0a, 0xf6, 0x34, 0x3d, 0x11, 0x7c, 0x16, 0x36, + 0x64, 0x1a, 0xe9, 0x61, 0xb2, 0x07, 0xe1, 0x40, 0xe7, 0x2a, 0x2d, 0x7b, 0x0d, 0xf6, 0x35, 0x6d, + 0xc9, 0x51, 0x8a, 0xcc, 0x21, 0x52, 0xbd, 0x38, 0x55, 0x11, 0x52, 0xd7, 0xc6, 0x5e, 0xa5, 0xc5, + 0xb0, 0x56, 0x84, 0x76, 0x3d, 0x4d, 0x5b, 0x0e, 0xa1, 0xec, 0x63, 0xc7, 0xf9, 0x2d, 0x4e, 0xbd, + 0x86, 0xf0, 0x9e, 0x6d, 0x5c, 0x25, 0xc1, 0x4b, 0xd0, 0x81, 0x6e, 0xa2, 0xc3, 0xfb, 0x18, 0xbf, + 0x48, 0x1a, 0x39, 0x8f, 0x75, 0x90, 0x23, 0xdf, 0x30, 0xa3, 0x61, 0xa6, 0x64, 0xae, 0xca, 0xa6, + 0x31, 0x44, 0xa7, 0xfa, 0x0a, 0xf2, 0xf8, 0x0b, 0xaa, 0x0c, 0xa5, 0x87, 0x21, 0x79, 0xb6, 0x75, + 0x0a, 0x43, 0xe9, 0xd9, 0x50, 0x2e, 0xd0, 0x73, 0xc1, 0xc5, 0x03, 0x39, 0x41, 0x99, 0x68, 0x5c, + 0x57, 0x47, 0x7b, 0xa5, 0x5d, 0xf8, 0xa4, 0x8f, 0x8f, 0x9e, 0x70, 0x88, 0x08, 0xb6, 0x70, 0x52, + 0x38, 0xc4, 0x04, 0x5b, 0x98, 0x3e, 0xcb, 0x9f, 0xb5, 0x32, 0x89, 0x60, 0x8b, 0xf4, 0x4c, 0x70, + 0x19, 0xd6, 0xb3, 0x78, 0x88, 0xa1, 0x0c, 0x75, 0x6a, 0xb0, 0xb9, 0xed, 0xcb, 0x77, 0x2d, 0x96, + 0x34, 0xf1, 0xe9, 0x09, 0x87, 0xf0, 0xdd, 0xd6, 0x71, 0x87, 0x98, 0x60, 0x8b, 0xa7, 0x4e, 0xf3, + 0xbf, 0x26, 0x9c, 0x7a, 0x44, 0x78, 0x2f, 0x34, 0x5e, 0x24, 0xc1, 0x57, 0x08, 0x74, 0x60, 0x94, + 0x69, 0xa3, 0xbb, 0x45, 0x0f, 0x69, 0x9b, 0xa9, 0x5c, 0xa5, 0x65, 0x65, 0xd8, 0xca, 0x42, 0x42, + 0x42, 0x6e, 0xa4, 0x29, 0xf2, 0x76, 0xd9, 0xb9, 0xb1, 0x23, 0xe7, 0x65, 0x27, 0x41, 0xa2, 0x72, + 0xd7, 0x6c, 0x6d, 0xd8, 0x6c, 0x0d, 0xee, 0x81, 0xac, 0x5e, 0x29, 0x89, 0x68, 0xab, 0x53, 0x65, + 0xdb, 0x2a, 0x73, 0x9c, 0x94, 0xc6, 0xa8, 0xe1, 0xc8, 0xe0, 0x2b, 0x25, 0x37, 0xab, 0x70, 0xa2, + 0xc5, 0x2f, 0xb4, 0x04, 0x3f, 0xc6, 0x3d, 0x8f, 0x60, 0x38, 0xaf, 0xd3, 0x33, 0xd6, 0x7c, 0x42, + 0x1b, 0x4d, 0x44, 0x13, 0x0e, 0x11, 0xc1, 0xae, 0x57, 0xae, 0x11, 0x1b, 0xb1, 0xeb, 0xa7, 0x4e, + 0x57, 0xaf, 0x11, 0xc1, 0x6e, 0xd0, 0xe9, 0xea, 0x27, 0x8c, 0xc8, 0x8d, 0x92, 0x00, 0x88, 0xf0, + 0xb7, 0xc9, 0xd3, 0x0e, 0x31, 0xc1, 0x6e, 0x3c, 0x36, 0xc5, 0xff, 0x99, 0x71, 0xda, 0x24, 0xc2, + 0x7b, 0xb5, 0xf1, 0x39, 0x12, 0x7c, 0x9b, 0x1d, 0xc8, 0x5e, 0xa6, 0x0b, 0x53, 0x4d, 0x56, 0x59, + 0x79, 0x0a, 0x46, 0xeb, 0xfb, 0xa5, 0xe9, 0x32, 0x1c, 0xa0, 0xaf, 0xa5, 0x6f, 0x3b, 0xed, 0xac, + 0x6d, 0xda, 0x96, 0x2a, 0xab, 0x37, 0xed, 0x9c, 0xab, 0xdd, 0x1e, 0x16, 0xb9, 0xc1, 0x91, 0x90, + 0x20, 0x11, 0x66, 0x7b, 0x32, 0x49, 0xba, 0x32, 0xbc, 0x3f, 0x0b, 0x71, 0x0f, 0x62, 0x03, 0x91, + 0x32, 0x2a, 0x34, 0xfb, 0x82, 0x85, 0x64, 0xb3, 0xc2, 0x55, 0xc4, 0xf7, 0x47, 0x6f, 0x3b, 0x96, + 0x16, 0xce, 0x96, 0x3a, 0x60, 0x2c, 0x68, 0x24, 0xcd, 0x60, 0xde, 0x4e, 0xc0, 0x59, 0xfc, 0x83, + 0x4a, 0xa3, 0x43, 0xc2, 0xf9, 0x91, 0xd2, 0x0f, 0x0b, 0x77, 0x82, 0x6b, 0x19, 0x28, 0x17, 0xe6, + 0xe2, 0xb6, 0x6a, 0x57, 0xe2, 0xfa, 0xda, 0x94, 0x26, 0xc9, 0x28, 0x2a, 0x7b, 0x73, 0xaf, 0x2c, + 0xbb, 0x4a, 0x8a, 0x2d, 0x52, 0xfc, 0xbd, 0x92, 0x54, 0xfd, 0xf9, 0xa6, 0x4c, 0x70, 0xf8, 0xad, + 0x62, 0x73, 0xda, 0x58, 0x5f, 0x7a, 0xa6, 0x0d, 0xcb, 0xbb, 0x32, 0x34, 0xc9, 0x1e, 0x87, 0x81, + 0xde, 0x29, 0x25, 0x94, 0x96, 0x22, 0xf1, 0x10, 0xe8, 0xd4, 0x4e, 0x16, 0xcb, 0xf6, 0x5d, 0x63, + 0x5d, 0xab, 0x64, 0x45, 0x6a, 0xa4, 0xd2, 0x48, 0xa6, 0xa6, 0x6a, 0x67, 0x98, 0xd4, 0x57, 0x9b, + 0x53, 0xfc, 0x75, 0xee, 0x35, 0x2d, 0x69, 0x3a, 0x14, 0x82, 0xff, 0x0f, 0x9b, 0xd5, 0xd3, 0x71, + 0x94, 0x3e, 0xed, 0xc2, 0x60, 0x2d, 0xfb, 0xdd, 0x29, 0x8d, 0x5d, 0xa7, 0x2a, 0x89, 0xd6, 0xa1, + 0x17, 0x1d, 0xa2, 0x82, 0x75, 0x2e, 0xcf, 0xf0, 0x55, 0xab, 0x8a, 0x08, 0xb6, 0x44, 0xaf, 0x04, + 0xaf, 0xc2, 0x4a, 0x1a, 0xc5, 0xa1, 0x34, 0x2a, 0x3f, 0x24, 0xd5, 0x45, 0x59, 0xee, 0x8f, 0xf1, + 0xa1, 0xdc, 0xd5, 0x9a, 0x88, 0x15, 0x77, 0xc9, 0x21, 0x2a, 0xd8, 0xd2, 0x0c, 0xf0, 0x0d, 0xab, + 0x89, 0x0a, 0xb6, 0x4c, 0x21, 0x58, 0x7e, 0x74, 0x4d, 0x32, 0x07, 0xa7, 0x6a, 0xa1, 0x1f, 0x6f, + 0xab, 0xd4, 0xe5, 0xb4, 0xd6, 0x87, 0xe6, 0x2f, 0xd7, 0x9e, 0x59, 0x15, 0x97, 0x67, 0xf8, 0x25, + 0x4e, 0x3d, 0x2a, 0xbc, 0x95, 0x46, 0x48, 0x82, 0xd3, 0x70, 0xd7, 0x36, 0xef, 0x6a, 0x23, 0xac, + 0x6a, 0x14, 0xdf, 0x5b, 0x69, 0x4d, 0xf3, 0xaf, 0x11, 0xee, 0x79, 0x14, 0xe3, 0xbd, 0x4a, 0x21, + 0xf8, 0x33, 0x02, 0xb7, 0x54, 0x6e, 0x57, 0x8c, 0x7a, 0x08, 0x61, 0x09, 0xd9, 0xae, 0x8c, 0x13, + 0xa8, 0xdc, 0x25, 0xc7, 0xfc, 0x28, 0xed, 0x6c, 0x73, 0x58, 0xe9, 0xd5, 0xbf, 0x6e, 0x95, 0xaf, + 0xe4, 0xb0, 0xd1, 0xb9, 0x7d, 0x6b, 0xed, 0xf5, 0x79, 0xe7, 0x4c, 0xb6, 0x6f, 0x12, 0xe8, 0x5c, + 0xe5, 0x80, 0xe4, 0xb0, 0x92, 0x0e, 0x8c, 0x82, 0xaa, 0x0d, 0x52, 0xdb, 0x5d, 0x57, 0xab, 0xee, + 0x4a, 0x6d, 0x0a, 0x57, 0x4f, 0x5e, 0x74, 0x88, 0x09, 0xb6, 0x7a, 0x79, 0xc6, 0x99, 0x4f, 0x04, + 0x5b, 0xa7, 0xc1, 0x51, 0xe6, 0x63, 0x97, 0xff, 0x3d, 0xcd, 0x5f, 0x5a, 0x7b, 0x7d, 0x7d, 0x63, + 0x79, 0x73, 0xb3, 0x73, 0x73, 0x75, 0x79, 0xde, 0x91, 0x3b, 0xd5, 0x65, 0xda, 0xca, 0xf9, 0x01, + 0x5d, 0xd5, 0xd3, 0x99, 0x02, 0x37, 0x2c, 0x63, 0x9d, 0xd6, 0xe6, 0x63, 0xcf, 0x5a, 0xaf, 0x5a, + 0x1d, 0xb5, 0xbc, 0x58, 0x6f, 0x4d, 0x3b, 0xc4, 0x04, 0x5b, 0x3f, 0x7f, 0x81, 0xdf, 0xb4, 0xd6, + 0x53, 0xc1, 0x36, 0xe9, 0xd9, 0xe0, 0x3a, 0xac, 0xd9, 0x5d, 0x43, 0x62, 0x7f, 0x19, 0x15, 0x66, + 0xec, 0x03, 0x72, 0x43, 0x26, 0x3a, 0xed, 0x8f, 0xd7, 0xce, 0x71, 0x36, 0x4b, 0x89, 0xd4, 0x47, + 0x21, 0x93, 0x0e, 0x11, 0xc1, 0x36, 0xf9, 0x19, 0x87, 0x98, 0x60, 0x9b, 0x53, 0xd3, 0xfc, 0xb3, + 0x56, 0x1b, 0x13, 0xec, 0x0d, 0x7a, 0x21, 0x78, 0x0e, 0xde, 0x1c, 0x28, 0x1b, 0xf7, 0x4d, 0x9c, + 0x92, 0x6a, 0xc3, 0x05, 0xa7, 0x6a, 0xee, 0x71, 0x1a, 0x26, 0x45, 0xa4, 0x70, 0x4a, 0x64, 0xa9, + 0x1c, 0xaa, 0x5a, 0x13, 0x6b, 0xa2, 0x00, 0xdf, 0x21, 0x22, 0xd8, 0x1b, 0x13, 0x53, 0x0e, 0xa1, + 0xf0, 0x73, 0xe7, 0x79, 0xc7, 0x6a, 0xf2, 0x04, 0xbb, 0x47, 0x2f, 0x05, 0x2f, 0x3c, 0xa2, 0xa6, + 0xb5, 0x4e, 0x61, 0x06, 0x90, 0x87, 0x7a, 0x34, 0x56, 0xe6, 0x35, 0x51, 0x86, 0x53, 0xe6, 0x11, + 0xc1, 0xee, 0x4d, 0x9c, 0x73, 0x88, 0x09, 0x76, 0x2f, 0xb8, 0xc8, 0x5f, 0xb6, 0xca, 0x9a, 0x82, + 0xbd, 0x45, 0xaf, 0x04, 0x0b, 0xb5, 0xb2, 0x83, 0xb3, 0xaa, 0x1c, 0x50, 0x58, 0x4d, 0xb6, 0x8c, + 0xca, 0xc1, 0xe6, 0xb4, 0x34, 0x7d, 0x7c, 0xf9, 0xb8, 0x43, 0x44, 0xb0, 0xb7, 0x4e, 0x5c, 0x72, + 0x88, 0x09, 0xf6, 0xd6, 0x0c, 0xf0, 0x57, 0xad, 0x16, 0x5f, 0xb0, 0x2d, 0x1a, 0x04, 0xd7, 0x1e, + 0xd1, 0xa5, 0xd2, 0x86, 0xad, 0x38, 0xaa, 0x1d, 0xf2, 0x9b, 0x28, 0xc1, 0x39, 0xe4, 0x13, 0xc1, + 0xb6, 0x26, 0x1c, 0x2b, 0x7c, 0x26, 0xd8, 0xd6, 0xf9, 0x0b, 0xfc, 0x35, 0xab, 0x6a, 0x42, 0xb0, + 0x2e, 0x7d, 0x22, 0x78, 0xf9, 0x11, 0x55, 0xe1, 0x88, 0x4f, 0xba, 0x5b, 0xb6, 0x2d, 0x5a, 0x0a, + 0xd7, 0x2a, 0x27, 0x9a, 0x28, 0xc9, 0xa9, 0x9c, 0x20, 0x82, 0x75, 0x27, 0x1e, 0x77, 0x88, 0x09, + 0xd6, 0x85, 0x59, 0xfe, 0x0a, 0xc7, 0x70, 0x7a, 0xbd, 0xc6, 0x17, 0x48, 0xb0, 0x58, 0x37, 0x8c, + 0x52, 0xd3, 0x3c, 0xd8, 0x93, 0x62, 0xda, 0x8b, 0xfb, 0x45, 0x75, 0xf8, 0x38, 0xc8, 0x40, 0xec, + 0x27, 0xc8, 0x83, 0x5e, 0xeb, 0x2c, 0xbf, 0xca, 0x3d, 0x8f, 0x61, 0x3b, 0x19, 0xd0, 0xb3, 0xc1, + 0x13, 0xb0, 0xee, 0xba, 0x88, 0x1e, 0x6f, 0x61, 0x87, 0x16, 0x30, 0x34, 0x84, 0xd9, 0x62, 0x1f, + 0x54, 0xfc, 0x65, 0xb6, 0xd8, 0x07, 0x15, 0x7f, 0x99, 0x2d, 0xf6, 0xc1, 0xd4, 0x34, 0xdf, 0xb5, + 0xb2, 0x89, 0x60, 0x09, 0x3d, 0x1b, 0xdc, 0xb7, 0x93, 0x19, 0xd9, 0xb9, 0xdf, 0x1a, 0x08, 0xe5, + 0xb0, 0xac, 0xef, 0x79, 0xbb, 0xf8, 0x6c, 0xab, 0x2c, 0xee, 0xed, 0xe1, 0x7a, 0x8f, 0x67, 0x45, + 0x95, 0x1a, 0xec, 0xbb, 0x38, 0x9c, 0x76, 0x64, 0xce, 0x21, 0x2f, 0xc2, 0x50, 0xe5, 0x79, 0xaf, + 0x48, 0x60, 0x67, 0xa0, 0xca, 0x26, 0x51, 0xb5, 0x62, 0xb5, 0x3b, 0x52, 0x21, 0x1e, 0x84, 0xdc, + 0x14, 0x41, 0xcd, 0x4d, 0x54, 0xdd, 0x72, 0x08, 0x0d, 0x99, 0x74, 0x36, 0x62, 0x45, 0x27, 0x53, + 0xd3, 0xfc, 0xa2, 0xb5, 0x91, 0x0a, 0xa6, 0xe9, 0x85, 0xe0, 0xe4, 0x11, 0x9c, 0x66, 0x96, 0xaa, + 0xba, 0x16, 0x83, 0xfe, 0xe8, 0xc9, 0x29, 0x87, 0x98, 0x60, 0xfa, 0xdc, 0x79, 0x5c, 0xef, 0x50, + 0x0e, 0x13, 0x2c, 0xa7, 0xe7, 0x82, 0x2f, 0x13, 0x37, 0x07, 0x57, 0x6e, 0x55, 0xfb, 0x9b, 0xdd, + 0x45, 0xba, 0x0a, 0x8a, 0x34, 0x7e, 0xbb, 0x50, 0x20, 0x87, 0xd8, 0x1d, 0xa2, 0xb8, 0xd7, 0x53, + 0x19, 0x9a, 0x5f, 0x91, 0x3f, 0xc6, 0x43, 0x77, 0x1a, 0xaa, 0x7c, 0x9e, 0x43, 0xb7, 0xa8, 0x76, + 0x38, 0x8c, 0x90, 0x0c, 0x33, 0x9d, 0x97, 0xf7, 0x0b, 0x1b, 0xeb, 0x4b, 0x4f, 0xe7, 0x30, 0x94, + 0x91, 0xc2, 0x2c, 0x49, 0x18, 0xc9, 0xcc, 0xc4, 0x61, 0x91, 0xc8, 0xec, 0xb0, 0x94, 0xda, 0x03, + 0x6c, 0x01, 0x79, 0xed, 0x01, 0xa6, 0x3e, 0x9f, 0x14, 0x0e, 0xa1, 0xcd, 0xd3, 0x67, 0xab, 0x40, + 0x78, 0x82, 0x6d, 0xd3, 0xb9, 0xe0, 0xa4, 0x9b, 0x97, 0xeb, 0xd2, 0x0c, 0x6a, 0x31, 0x9e, 0x8f, + 0xbf, 0xba, 0x08, 0x62, 0x71, 0x6f, 0x8b, 0x27, 0x1c, 0x62, 0x82, 0x6d, 0x7f, 0xea, 0x69, 0x3e, + 0x63, 0xc5, 0x34, 0x05, 0xdb, 0xa3, 0x67, 0x03, 0xe1, 0xc2, 0x30, 0xd0, 0xb9, 0xd9, 0xd7, 0x94, + 0x18, 0x6d, 0xda, 0x27, 0x9c, 0x45, 0x58, 0xc1, 0x7b, 0x75, 0x6a, 0xb0, 0x82, 0xf7, 0xa6, 0xa6, + 0xf9, 0x1c, 0xa7, 0x9e, 0x27, 0x9a, 0x5f, 0x6c, 0xbc, 0x4b, 0x08, 0x1e, 0x94, 0x6c, 0xa2, 0x17, + 0x1e, 0xb8, 0x32, 0xa9, 0x08, 0x8d, 0xe6, 0x7c, 0xb1, 0x75, 0xc5, 0xb6, 0x68, 0x0f, 0x09, 0xfd, + 0xce, 0xff, 0xad, 0x45, 0x7b, 0x96, 0xe2, 0xef, 0x54, 0x14, 0xf7, 0x2c, 0xc5, 0xdf, 0xa9, 0x28, + 0xee, 0x59, 0x8a, 0xbf, 0x33, 0x35, 0xcd, 0x3f, 0xcd, 0xb1, 0xe5, 0xf9, 0x5f, 0x22, 0x8d, 0xaf, + 0x10, 0x12, 0x5c, 0x3a, 0xca, 0xc8, 0xb2, 0x28, 0xdb, 0x9c, 0x1f, 0xe3, 0xcc, 0xc3, 0x85, 0xf7, + 0x4b, 0xa4, 0x35, 0xcb, 0x97, 0xb9, 0xe7, 0x35, 0x69, 0x43, 0x78, 0x5f, 0x26, 0xf4, 0xc9, 0xe0, + 0x45, 0xe8, 0xf4, 0xfb, 0x99, 0xea, 0x4b, 0x64, 0xb0, 0x1d, 0x54, 0xe3, 0x63, 0x06, 0x9e, 0x6b, + 0x43, 0x15, 0x6f, 0xbb, 0x7b, 0x9f, 0x31, 0xe9, 0xdb, 0x9c, 0x9f, 0xe0, 0x4d, 0x14, 0xd3, 0xb4, + 0x72, 0x26, 0x1c, 0x24, 0x08, 0x5b, 0x33, 0x0e, 0x32, 0x84, 0xb3, 0x4f, 0xf0, 0x97, 0x38, 0xa6, + 0xd0, 0xff, 0x2a, 0x69, 0xfc, 0x15, 0x21, 0xc1, 0xa7, 0x61, 0xa9, 0xea, 0x11, 0xe3, 0x73, 0xc7, + 0x01, 0x36, 0x1d, 0x32, 0xdd, 0x27, 0xc2, 0xfb, 0x2a, 0x69, 0x05, 0xfc, 0x2f, 0x91, 0xeb, 0x3e, + 0xda, 0xfe, 0x1e, 0xa1, 0x67, 0x82, 0x77, 0x8f, 0x1e, 0xe2, 0x39, 0x4e, 0xf1, 0xfa, 0x32, 0xeb, + 0x0f, 0x3d, 0xc2, 0xd1, 0x53, 0xdf, 0xc6, 0xe1, 0x3d, 0x17, 0x07, 0xdf, 0xc6, 0xe1, 0x3d, 0xd2, + 0x3a, 0xee, 0x20, 0x43, 0x78, 0xea, 0x34, 0xef, 0x5b, 0xfb, 0x89, 0xf0, 0xbe, 0x46, 0xe8, 0xf9, + 0xe0, 0x5e, 0x6d, 0xbe, 0xbd, 0x0e, 0xd8, 0x96, 0x09, 0x74, 0x95, 0xd9, 0x51, 0x2a, 0xc5, 0x26, + 0x9a, 0xab, 0xb0, 0x30, 0xf1, 0xb6, 0xda, 0xe7, 0xca, 0xe1, 0xed, 0xa4, 0x4c, 0x36, 0xc4, 0x29, + 0x87, 0x61, 0x8c, 0x75, 0xaa, 0x42, 0x9d, 0x46, 0x79, 0x6d, 0x15, 0x69, 0x5a, 0x4d, 0xce, 0x2a, + 0x62, 0x15, 0xb7, 0x1e, 0x73, 0x90, 0x21, 0x3c, 0x7b, 0x8e, 0x3f, 0xc3, 0xa9, 0x37, 0x21, 0xfc, + 0xaf, 0x93, 0xc6, 0xdf, 0x59, 0xbe, 0x97, 0xa5, 0x73, 0x24, 0xdf, 0x31, 0x1d, 0x13, 0x44, 0x78, + 0x5f, 0x47, 0x26, 0xfd, 0x07, 0xa6, 0x63, 0x02, 0xd3, 0xf1, 0x0d, 0x42, 0x21, 0xf8, 0xf9, 0x1f, + 0x64, 0x25, 0xc4, 0x07, 0x9d, 0x38, 0xfb, 0xa6, 0xdd, 0xd8, 0x6b, 0x61, 0x95, 0xf0, 0xd2, 0x56, + 0x0c, 0x43, 0x7f, 0x60, 0xbb, 0x1d, 0x1e, 0xc4, 0xeb, 0x1e, 0x87, 0x32, 0xf7, 0x1d, 0x67, 0xcb, + 0xf3, 0x7e, 0x91, 0x48, 0xa3, 0x40, 0xc2, 0x30, 0xde, 0x55, 0xd1, 0xe1, 0x1b, 0x15, 0x5e, 0x49, + 0xac, 0x42, 0x39, 0x81, 0x25, 0x89, 0x5e, 0x9e, 0x70, 0x90, 0x20, 0x3c, 0x79, 0xd1, 0x41, 0x86, + 0xf0, 0xf2, 0x8c, 0x5d, 0x67, 0x26, 0x30, 0xc1, 0xdf, 0x24, 0xf4, 0x46, 0xf0, 0xfc, 0x11, 0x44, + 0xb7, 0xe6, 0xd7, 0x33, 0xa3, 0xf6, 0xa3, 0x1a, 0x75, 0xb5, 0x3e, 0xe2, 0x59, 0x19, 0x35, 0xf4, + 0x11, 0x1e, 0x7b, 0xdc, 0x41, 0xab, 0xe1, 0xf2, 0x73, 0x0e, 0x32, 0x84, 0x2f, 0x5c, 0xe7, 0x4b, + 0x56, 0x3d, 0x15, 0xde, 0xdf, 0x90, 0xdf, 0xbf, 0x07, 0x95, 0x32, 0xa9, 0x6f, 0xa5, 0x4c, 0x3a, + 0x48, 0x10, 0xf2, 0x33, 0x0e, 0x32, 0x84, 0x53, 0xd3, 0xfc, 0x15, 0xab, 0x91, 0x09, 0xef, 0x6f, + 0xc9, 0xff, 0x7e, 0xa7, 0x2a, 0x65, 0x31, 0xdf, 0xbe, 0x7d, 0xdc, 0x41, 0x82, 0xf0, 0xc4, 0x25, + 0x07, 0xad, 0xec, 0x19, 0xe0, 0x6f, 0x72, 0xea, 0xb5, 0x84, 0xff, 0x2d, 0xd2, 0xf8, 0x36, 0x21, + 0xc1, 0xca, 0x51, 0x2c, 0x7d, 0x94, 0x2d, 0xc4, 0x9e, 0x2c, 0x47, 0x32, 0x93, 0x43, 0x65, 0x94, + 0xbd, 0x11, 0x46, 0x4e, 0xb7, 0x88, 0xf0, 0xbe, 0x45, 0x5a, 0x4f, 0xf0, 0x6b, 0xdc, 0xf3, 0x5a, + 0x48, 0xe9, 0xf7, 0x31, 0x82, 0x4f, 0x1e, 0xb9, 0x96, 0x8c, 0xeb, 0xaf, 0xdc, 0x4b, 0xd0, 0xd0, + 0x96, 0x65, 0xc8, 0xfb, 0x2e, 0x60, 0x2d, 0xcb, 0x90, 0xf7, 0x5d, 0xc0, 0x5a, 0x96, 0x21, 0xef, + 0x63, 0xc0, 0xde, 0x25, 0x9c, 0xfa, 0x0d, 0xe1, 0x7f, 0x87, 0x34, 0xfe, 0x95, 0x90, 0xc0, 0x40, + 0xa7, 0xbc, 0x7c, 0x52, 0xe3, 0x6b, 0x7d, 0x5d, 0x5e, 0xf3, 0xa3, 0xd1, 0xdb, 0x32, 0x8b, 0x75, + 0x91, 0x97, 0x0c, 0x46, 0x7e, 0x6e, 0xac, 0x2f, 0xd9, 0x2b, 0x4d, 0x4b, 0xa1, 0x2c, 0x1e, 0x62, + 0x26, 0x31, 0x87, 0x1c, 0x46, 0x2a, 0xb3, 0xe7, 0xa2, 0xfa, 0xce, 0xf9, 0x81, 0x77, 0xc7, 0xb7, + 0x47, 0xc7, 0x38, 0xf3, 0xd1, 0xc0, 0xef, 0x60, 0x37, 0xe8, 0x70, 0xcf, 0x6f, 0xa0, 0xcb, 0xdf, + 0x25, 0xf4, 0xb5, 0xe0, 0x79, 0x58, 0x4b, 0x15, 0xa8, 0xe1, 0xc8, 0xd4, 0x07, 0x41, 0xe8, 0xe9, + 0x24, 0xd1, 0x3b, 0x65, 0x28, 0xf5, 0xbe, 0x5f, 0xeb, 0x2e, 0x7d, 0x82, 0x37, 0x7d, 0x7b, 0xad, + 0xe5, 0x7d, 0x97, 0xf8, 0xa7, 0x1c, 0xa4, 0x08, 0x4f, 0x3f, 0xe5, 0x20, 0x43, 0x78, 0x75, 0x99, + 0x87, 0x56, 0x1f, 0x11, 0xde, 0x3f, 0x10, 0xfa, 0x52, 0x70, 0xd7, 0xea, 0x7b, 0x98, 0xa6, 0xb1, + 0x8e, 0xfd, 0xd7, 0x2b, 0x25, 0x9d, 0xf2, 0xfd, 0x5b, 0x98, 0xa3, 0xb6, 0xcc, 0x17, 0xe2, 0xbc, + 0xb6, 0x88, 0x58, 0x2d, 0xb5, 0x45, 0x84, 0x22, 0x3c, 0xfd, 0xb8, 0x83, 0x0c, 0xe1, 0xdc, 0x0d, + 0xfe, 0x0d, 0x62, 0x4d, 0xa2, 0xc2, 0xff, 0x1e, 0xa1, 0xdf, 0x27, 0xcf, 0x07, 0x7f, 0x4e, 0x1e, + 0x6a, 0x15, 0x9e, 0xb8, 0xdf, 0x2e, 0x14, 0x46, 0x59, 0xf7, 0xf6, 0xf5, 0xe6, 0xb9, 0x92, 0x88, + 0x2a, 0x82, 0x48, 0xef, 0xa4, 0x68, 0xcb, 0x33, 0x0f, 0x37, 0xda, 0x59, 0x6b, 0xf3, 0x54, 0x79, + 0x10, 0x55, 0xbd, 0xd3, 0x76, 0x22, 0x7b, 0xfd, 0x81, 0xb3, 0xac, 0x76, 0x05, 0x03, 0xf6, 0x3d, + 0xe2, 0x5f, 0x70, 0x90, 0x22, 0x0c, 0x5e, 0x70, 0xd0, 0x17, 0xde, 0xf7, 0xc9, 0xa9, 0x69, 0x07, + 0x19, 0xc2, 0xb3, 0xcf, 0xf1, 0x6f, 0x96, 0x9e, 0x31, 0xe1, 0xff, 0x80, 0xd0, 0x1f, 0x92, 0x67, + 0x83, 0xbf, 0x20, 0x48, 0xb8, 0x03, 0x1e, 0x94, 0x9f, 0x7f, 0x1e, 0x1a, 0xfa, 0x7d, 0x9e, 0x15, + 0xa3, 0xdf, 0xe1, 0x97, 0x7c, 0x70, 0x97, 0x78, 0x20, 0x3f, 0x6e, 0x18, 0x14, 0x89, 0xa9, 0x9d, + 0xc3, 0x9a, 0xff, 0x01, 0xf1, 0xcf, 0x3b, 0xd8, 0x44, 0x78, 0x61, 0xc6, 0x41, 0x8a, 0x10, 0x3e, + 0xe3, 0x20, 0x13, 0xde, 0x0f, 0xc9, 0xa9, 0x67, 0xf8, 0xbf, 0x94, 0xce, 0x79, 0xc2, 0xff, 0x11, + 0xa1, 0x1f, 0x90, 0xe7, 0x83, 0x7f, 0x7a, 0xa8, 0x73, 0x36, 0xd0, 0xd5, 0xe4, 0x28, 0x73, 0x6a, + 0xad, 0xaf, 0x9b, 0x83, 0xdb, 0x5f, 0x87, 0x43, 0x15, 0xc5, 0xd2, 0xa8, 0x64, 0xaf, 0xcd, 0xa1, + 0x93, 0x57, 0x81, 0xa8, 0x0e, 0x0c, 0xb6, 0x95, 0x25, 0xaa, 0xec, 0x06, 0xc3, 0x22, 0x31, 0x31, + 0x96, 0x6d, 0x4d, 0x81, 0x6a, 0x6d, 0xb0, 0xb3, 0xbc, 0x27, 0x43, 0xc5, 0x21, 0x52, 0x43, 0x9d, + 0xe6, 0x26, 0x93, 0x6e, 0x8d, 0x88, 0x23, 0x25, 0xd1, 0xae, 0x5e, 0x91, 0x24, 0x10, 0x15, 0xa3, + 0x44, 0xed, 0xda, 0x6f, 0x64, 0x95, 0x67, 0x1e, 0x11, 0xde, 0x8f, 0x88, 0x3f, 0xe5, 0x60, 0x13, + 0xe1, 0xf4, 0x45, 0x07, 0x29, 0xc2, 0x4b, 0x37, 0x1c, 0xf4, 0x85, 0xf7, 0xc1, 0x38, 0xe5, 0x78, + 0x28, 0xfb, 0x00, 0x53, 0xfe, 0xdf, 0x65, 0x54, 0x9a, 0xc2, 0xff, 0x31, 0xa1, 0x3f, 0x21, 0xcf, + 0x07, 0xff, 0xf9, 0x48, 0x29, 0x7f, 0x08, 0xaf, 0x0f, 0xe6, 0xba, 0x5b, 0xe0, 0x48, 0x1d, 0x7f, + 0x6d, 0xac, 0x6f, 0xa3, 0x2a, 0x81, 0x48, 0x5b, 0x3c, 0x3c, 0x95, 0xcf, 0x5b, 0x9f, 0x71, 0x3d, + 0x01, 0x9d, 0x45, 0x2a, 0x6b, 0x43, 0xc7, 0x8d, 0xd5, 0x83, 0xa5, 0x23, 0xb3, 0xf1, 0x27, 0x0b, + 0xdb, 0xfd, 0xc6, 0x92, 0xeb, 0xc3, 0x96, 0x9b, 0x27, 0x46, 0x66, 0x55, 0x3a, 0x39, 0xf4, 0xe2, + 0x2c, 0x37, 0x07, 0x07, 0x17, 0x3a, 0x4e, 0x84, 0xf7, 0xe3, 0x71, 0x10, 0x9b, 0x4d, 0x84, 0x75, + 0x10, 0x9b, 0x14, 0x61, 0x1d, 0xc4, 0xa6, 0x2f, 0xbc, 0x9f, 0x8c, 0x83, 0xd8, 0x64, 0x08, 0xcf, + 0x3e, 0xc7, 0xb7, 0x38, 0x9e, 0xb8, 0xfd, 0x9f, 0x92, 0xc6, 0xcf, 0x09, 0x09, 0xfe, 0xf8, 0xc1, + 0x26, 0x7d, 0x7b, 0xed, 0x8e, 0xfd, 0x46, 0xa5, 0xb0, 0x03, 0xab, 0x08, 0xa4, 0x3b, 0x49, 0xe5, + 0x90, 0xeb, 0xfa, 0x8a, 0x3c, 0x94, 0xd5, 0x27, 0xdb, 0x9e, 0xce, 0xaa, 0x1b, 0xd9, 0x50, 0xba, + 0xbd, 0xd6, 0xc7, 0xee, 0xf4, 0x53, 0xd2, 0xba, 0xc4, 0x6f, 0x70, 0xcf, 0x27, 0xd8, 0x81, 0x7f, + 0x46, 0xe8, 0x5a, 0x30, 0x07, 0x1d, 0x08, 0xcb, 0x08, 0x4b, 0x03, 0xa9, 0x3e, 0x34, 0x4b, 0x6b, + 0xad, 0xa5, 0xc3, 0xf6, 0xca, 0xd2, 0xfb, 0x19, 0xf1, 0xcf, 0x39, 0x48, 0x11, 0x9e, 0x5f, 0x70, + 0x90, 0x21, 0x7c, 0xe9, 0x75, 0x7e, 0x9c, 0x53, 0x6f, 0x52, 0xf8, 0xbf, 0x20, 0x8d, 0x7f, 0x23, + 0xc4, 0x0e, 0xbd, 0x49, 0x22, 0xbc, 0x5f, 0x90, 0x16, 0xd8, 0xb5, 0x61, 0x12, 0xf5, 0x7f, 0x48, + 0xe8, 0x74, 0x70, 0x1d, 0x36, 0x5c, 0x8d, 0x18, 0x69, 0x59, 0x52, 0x1e, 0x9c, 0x53, 0xb5, 0x6b, + 0x20, 0x2d, 0x86, 0x5b, 0xd9, 0x28, 0xcc, 0xcb, 0x1d, 0xa2, 0xbb, 0x77, 0xf0, 0x40, 0x30, 0x69, + 0x17, 0xe1, 0x0f, 0xdd, 0xca, 0x39, 0x69, 0x6d, 0xfb, 0x90, 0xb4, 0x4e, 0x3b, 0xc8, 0x10, 0x3e, + 0x36, 0xc5, 0xff, 0xc4, 0x6a, 0x24, 0xc2, 0xfb, 0x08, 0x17, 0xe1, 0x55, 0xdc, 0x00, 0x6b, 0xc9, + 0x03, 0xb9, 0xad, 0xec, 0xc7, 0x55, 0xfb, 0x11, 0x55, 0x61, 0x74, 0x31, 0xdf, 0xb8, 0xe9, 0xc5, + 0x43, 0xa5, 0x0b, 0xb3, 0x95, 0xab, 0x70, 0xde, 0xed, 0x14, 0xf6, 0xd8, 0x20, 0x93, 0xaa, 0xa3, + 0xe4, 0xb5, 0x21, 0xb8, 0xfb, 0x7e, 0x34, 0x36, 0x84, 0x58, 0x5d, 0xd5, 0xee, 0x3b, 0x69, 0x5b, + 0xff, 0x47, 0xb8, 0xfb, 0x62, 0x54, 0xb8, 0xf0, 0x7f, 0x49, 0x1a, 0xff, 0x5e, 0x45, 0x85, 0x13, + 0xe1, 0xfd, 0x92, 0xb4, 0xae, 0xd8, 0xd5, 0x86, 0x63, 0x54, 0x7e, 0x45, 0xe8, 0xa7, 0x82, 0x05, + 0x5b, 0x07, 0x69, 0x31, 0xec, 0xaa, 0xcc, 0xf6, 0xb5, 0xda, 0x38, 0x3b, 0x92, 0xeb, 0xd5, 0x6e, + 0xa4, 0x70, 0xa5, 0xb5, 0x6a, 0xb8, 0xdd, 0x09, 0x7e, 0x45, 0xe8, 0x94, 0x83, 0x04, 0xe1, 0xf4, + 0x15, 0x07, 0x19, 0xc2, 0x27, 0x9f, 0xb2, 0xd7, 0x38, 0x1c, 0xa3, 0xf1, 0x31, 0xa1, 0x17, 0x82, + 0xcf, 0x1c, 0xd2, 0x64, 0xe5, 0x5b, 0x2e, 0xf4, 0x64, 0x9c, 0x94, 0x25, 0x92, 0xa9, 0x50, 0x67, + 0x11, 0x48, 0xc8, 0xd4, 0x50, 0x1b, 0x75, 0x50, 0x2b, 0xba, 0xfe, 0xb1, 0x73, 0x9d, 0x5b, 0xd7, + 0x3f, 0x26, 0x2d, 0x67, 0x04, 0xba, 0xfe, 0x31, 0x39, 0x77, 0x9e, 0xaf, 0x70, 0xea, 0x53, 0xe1, + 0xff, 0x9a, 0x34, 0x7e, 0x4b, 0x48, 0xf0, 0x8a, 0x6d, 0x12, 0x25, 0xb9, 0xed, 0xf7, 0x1e, 0xa3, + 0xdd, 0xf7, 0xe9, 0x31, 0x0d, 0xc6, 0x97, 0x24, 0xab, 0x37, 0xa1, 0xab, 0x06, 0x72, 0x3b, 0xd6, + 0x59, 0xc5, 0x66, 0xb4, 0xff, 0xd7, 0xc8, 0xa6, 0x35, 0xee, 0xf9, 0x94, 0x36, 0x84, 0xff, 0x09, + 0xa1, 0xbf, 0x21, 0xf3, 0xc1, 0xab, 0xf0, 0x9a, 0x32, 0x65, 0xff, 0xab, 0xee, 0xa4, 0xc7, 0xdf, + 0x8f, 0xdd, 0x56, 0x6c, 0x7d, 0x74, 0x94, 0x92, 0x65, 0xcd, 0xec, 0x67, 0x96, 0x6f, 0xaf, 0x75, + 0xbd, 0x4f, 0x5c, 0x5d, 0x53, 0x4b, 0xf3, 0x4f, 0xc8, 0xf4, 0x82, 0x83, 0x4c, 0x78, 0xbf, 0x21, + 0xa7, 0xe6, 0xfe, 0x27, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x18, 0x72, 0xa1, 0x47, 0x21, 0x00, 0x00, } if err := sourceinfo.RegisterEncodedSourceInfo("grpc/test.proto", srcInfo); err != nil { panic(err) diff --git a/internal/testprotos/grpc/test.proto b/internal/testprotos/grpc/test.proto index b007b64c..02fa2c85 100644 --- a/internal/testprotos/grpc/test.proto +++ b/internal/testprotos/grpc/test.proto @@ -1,3 +1,7 @@ +// This file was copied from github.com/grpc/grpc-go/interop/grpc_testing. +// This fork exists because the original source is unstable and has been +// moved/refactored and broken clients. + // Copyright 2017 gRPC authors. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -22,7 +26,7 @@ option go_package = "github.com/jhump/protoreflect/internal/testprotos/grpc"; package grpc.testing; -message Empty {} +import "google/protobuf/empty.proto"; // The type of payload that should be returned. enum PayloadType { @@ -171,7 +175,7 @@ message StreamingOutputCallResponse { // performance with various types of payload. service TestService { // One empty request followed by one empty response. - rpc EmptyCall(Empty) returns (Empty); + rpc EmptyCall(google.protobuf.Empty) returns (google.protobuf.Empty); // One request followed by one response. // The server returns the client payload as-is. @@ -205,7 +209,7 @@ service TestService { // that case. service UnimplementedService { // A call that no server should implement - rpc UnimplementedCall(grpc.testing.Empty) returns (grpc.testing.Empty); + rpc UnimplementedCall(google.protobuf.Empty) returns (google.protobuf.Empty); } message LoadBalancerStatsRequest { diff --git a/internal/testprotos/grpc/test_grpc.pb.go b/internal/testprotos/grpc/test_grpc.pb.go new file mode 100644 index 00000000..123cddfb --- /dev/null +++ b/internal/testprotos/grpc/test_grpc.pb.go @@ -0,0 +1,617 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.19.0 +// source: grpc/test.proto + +package grpc + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// TestServiceClient is the client API for TestService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type TestServiceClient interface { + // One empty request followed by one empty response. + EmptyCall(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) + // One request followed by one response. + // The server returns the client payload as-is. + UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error) + // One request followed by a sequence of responses (streamed download). + // The server returns the payload with client desired type and sizes. + StreamingOutputCall(ctx context.Context, in *StreamingOutputCallRequest, opts ...grpc.CallOption) (TestService_StreamingOutputCallClient, error) + // A sequence of requests followed by one response (streamed upload). + // The server returns the aggregated size of client payload as the result. + StreamingInputCall(ctx context.Context, opts ...grpc.CallOption) (TestService_StreamingInputCallClient, error) + // A sequence of requests with each request served by the server immediately. + // As one request could lead to multiple responses, this interface + // demonstrates the idea of full duplexing. + FullDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_FullDuplexCallClient, error) + // A sequence of requests followed by a sequence of responses. + // The server buffers all the client requests and then serves them in order. A + // stream of responses are returned to the client when the server starts with + // first request. + HalfDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_HalfDuplexCallClient, error) +} + +type testServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewTestServiceClient(cc grpc.ClientConnInterface) TestServiceClient { + return &testServiceClient{cc} +} + +func (c *testServiceClient) EmptyCall(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/grpc.testing.TestService/EmptyCall", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *testServiceClient) UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error) { + out := new(SimpleResponse) + err := c.cc.Invoke(ctx, "/grpc.testing.TestService/UnaryCall", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *testServiceClient) StreamingOutputCall(ctx context.Context, in *StreamingOutputCallRequest, opts ...grpc.CallOption) (TestService_StreamingOutputCallClient, error) { + stream, err := c.cc.NewStream(ctx, &TestService_ServiceDesc.Streams[0], "/grpc.testing.TestService/StreamingOutputCall", opts...) + if err != nil { + return nil, err + } + x := &testServiceStreamingOutputCallClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type TestService_StreamingOutputCallClient interface { + Recv() (*StreamingOutputCallResponse, error) + grpc.ClientStream +} + +type testServiceStreamingOutputCallClient struct { + grpc.ClientStream +} + +func (x *testServiceStreamingOutputCallClient) Recv() (*StreamingOutputCallResponse, error) { + m := new(StreamingOutputCallResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *testServiceClient) StreamingInputCall(ctx context.Context, opts ...grpc.CallOption) (TestService_StreamingInputCallClient, error) { + stream, err := c.cc.NewStream(ctx, &TestService_ServiceDesc.Streams[1], "/grpc.testing.TestService/StreamingInputCall", opts...) + if err != nil { + return nil, err + } + x := &testServiceStreamingInputCallClient{stream} + return x, nil +} + +type TestService_StreamingInputCallClient interface { + Send(*StreamingInputCallRequest) error + CloseAndRecv() (*StreamingInputCallResponse, error) + grpc.ClientStream +} + +type testServiceStreamingInputCallClient struct { + grpc.ClientStream +} + +func (x *testServiceStreamingInputCallClient) Send(m *StreamingInputCallRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *testServiceStreamingInputCallClient) CloseAndRecv() (*StreamingInputCallResponse, error) { + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + m := new(StreamingInputCallResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *testServiceClient) FullDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_FullDuplexCallClient, error) { + stream, err := c.cc.NewStream(ctx, &TestService_ServiceDesc.Streams[2], "/grpc.testing.TestService/FullDuplexCall", opts...) + if err != nil { + return nil, err + } + x := &testServiceFullDuplexCallClient{stream} + return x, nil +} + +type TestService_FullDuplexCallClient interface { + Send(*StreamingOutputCallRequest) error + Recv() (*StreamingOutputCallResponse, error) + grpc.ClientStream +} + +type testServiceFullDuplexCallClient struct { + grpc.ClientStream +} + +func (x *testServiceFullDuplexCallClient) Send(m *StreamingOutputCallRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *testServiceFullDuplexCallClient) Recv() (*StreamingOutputCallResponse, error) { + m := new(StreamingOutputCallResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *testServiceClient) HalfDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_HalfDuplexCallClient, error) { + stream, err := c.cc.NewStream(ctx, &TestService_ServiceDesc.Streams[3], "/grpc.testing.TestService/HalfDuplexCall", opts...) + if err != nil { + return nil, err + } + x := &testServiceHalfDuplexCallClient{stream} + return x, nil +} + +type TestService_HalfDuplexCallClient interface { + Send(*StreamingOutputCallRequest) error + Recv() (*StreamingOutputCallResponse, error) + grpc.ClientStream +} + +type testServiceHalfDuplexCallClient struct { + grpc.ClientStream +} + +func (x *testServiceHalfDuplexCallClient) Send(m *StreamingOutputCallRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *testServiceHalfDuplexCallClient) Recv() (*StreamingOutputCallResponse, error) { + m := new(StreamingOutputCallResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// TestServiceServer is the server API for TestService service. +// All implementations must embed UnimplementedTestServiceServer +// for forward compatibility +type TestServiceServer interface { + // One empty request followed by one empty response. + EmptyCall(context.Context, *emptypb.Empty) (*emptypb.Empty, error) + // One request followed by one response. + // The server returns the client payload as-is. + UnaryCall(context.Context, *SimpleRequest) (*SimpleResponse, error) + // One request followed by a sequence of responses (streamed download). + // The server returns the payload with client desired type and sizes. + StreamingOutputCall(*StreamingOutputCallRequest, TestService_StreamingOutputCallServer) error + // A sequence of requests followed by one response (streamed upload). + // The server returns the aggregated size of client payload as the result. + StreamingInputCall(TestService_StreamingInputCallServer) error + // A sequence of requests with each request served by the server immediately. + // As one request could lead to multiple responses, this interface + // demonstrates the idea of full duplexing. + FullDuplexCall(TestService_FullDuplexCallServer) error + // A sequence of requests followed by a sequence of responses. + // The server buffers all the client requests and then serves them in order. A + // stream of responses are returned to the client when the server starts with + // first request. + HalfDuplexCall(TestService_HalfDuplexCallServer) error + mustEmbedUnimplementedTestServiceServer() +} + +// UnimplementedTestServiceServer must be embedded to have forward compatible implementations. +type UnimplementedTestServiceServer struct { +} + +func (UnimplementedTestServiceServer) EmptyCall(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method EmptyCall not implemented") +} +func (UnimplementedTestServiceServer) UnaryCall(context.Context, *SimpleRequest) (*SimpleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnaryCall not implemented") +} +func (UnimplementedTestServiceServer) StreamingOutputCall(*StreamingOutputCallRequest, TestService_StreamingOutputCallServer) error { + return status.Errorf(codes.Unimplemented, "method StreamingOutputCall not implemented") +} +func (UnimplementedTestServiceServer) StreamingInputCall(TestService_StreamingInputCallServer) error { + return status.Errorf(codes.Unimplemented, "method StreamingInputCall not implemented") +} +func (UnimplementedTestServiceServer) FullDuplexCall(TestService_FullDuplexCallServer) error { + return status.Errorf(codes.Unimplemented, "method FullDuplexCall not implemented") +} +func (UnimplementedTestServiceServer) HalfDuplexCall(TestService_HalfDuplexCallServer) error { + return status.Errorf(codes.Unimplemented, "method HalfDuplexCall not implemented") +} +func (UnimplementedTestServiceServer) mustEmbedUnimplementedTestServiceServer() {} + +// UnsafeTestServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to TestServiceServer will +// result in compilation errors. +type UnsafeTestServiceServer interface { + mustEmbedUnimplementedTestServiceServer() +} + +func RegisterTestServiceServer(s grpc.ServiceRegistrar, srv TestServiceServer) { + s.RegisterService(&TestService_ServiceDesc, srv) +} + +func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TestServiceServer).EmptyCall(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/grpc.testing.TestService/EmptyCall", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TestServiceServer).EmptyCall(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SimpleRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TestServiceServer).UnaryCall(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/grpc.testing.TestService/UnaryCall", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TestServiceServer).UnaryCall(ctx, req.(*SimpleRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TestService_StreamingOutputCall_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(StreamingOutputCallRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(TestServiceServer).StreamingOutputCall(m, &testServiceStreamingOutputCallServer{stream}) +} + +type TestService_StreamingOutputCallServer interface { + Send(*StreamingOutputCallResponse) error + grpc.ServerStream +} + +type testServiceStreamingOutputCallServer struct { + grpc.ServerStream +} + +func (x *testServiceStreamingOutputCallServer) Send(m *StreamingOutputCallResponse) error { + return x.ServerStream.SendMsg(m) +} + +func _TestService_StreamingInputCall_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(TestServiceServer).StreamingInputCall(&testServiceStreamingInputCallServer{stream}) +} + +type TestService_StreamingInputCallServer interface { + SendAndClose(*StreamingInputCallResponse) error + Recv() (*StreamingInputCallRequest, error) + grpc.ServerStream +} + +type testServiceStreamingInputCallServer struct { + grpc.ServerStream +} + +func (x *testServiceStreamingInputCallServer) SendAndClose(m *StreamingInputCallResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *testServiceStreamingInputCallServer) Recv() (*StreamingInputCallRequest, error) { + m := new(StreamingInputCallRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func _TestService_FullDuplexCall_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(TestServiceServer).FullDuplexCall(&testServiceFullDuplexCallServer{stream}) +} + +type TestService_FullDuplexCallServer interface { + Send(*StreamingOutputCallResponse) error + Recv() (*StreamingOutputCallRequest, error) + grpc.ServerStream +} + +type testServiceFullDuplexCallServer struct { + grpc.ServerStream +} + +func (x *testServiceFullDuplexCallServer) Send(m *StreamingOutputCallResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *testServiceFullDuplexCallServer) Recv() (*StreamingOutputCallRequest, error) { + m := new(StreamingOutputCallRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func _TestService_HalfDuplexCall_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(TestServiceServer).HalfDuplexCall(&testServiceHalfDuplexCallServer{stream}) +} + +type TestService_HalfDuplexCallServer interface { + Send(*StreamingOutputCallResponse) error + Recv() (*StreamingOutputCallRequest, error) + grpc.ServerStream +} + +type testServiceHalfDuplexCallServer struct { + grpc.ServerStream +} + +func (x *testServiceHalfDuplexCallServer) Send(m *StreamingOutputCallResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *testServiceHalfDuplexCallServer) Recv() (*StreamingOutputCallRequest, error) { + m := new(StreamingOutputCallRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// TestService_ServiceDesc is the grpc.ServiceDesc for TestService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var TestService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "grpc.testing.TestService", + HandlerType: (*TestServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "EmptyCall", + Handler: _TestService_EmptyCall_Handler, + }, + { + MethodName: "UnaryCall", + Handler: _TestService_UnaryCall_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "StreamingOutputCall", + Handler: _TestService_StreamingOutputCall_Handler, + ServerStreams: true, + }, + { + StreamName: "StreamingInputCall", + Handler: _TestService_StreamingInputCall_Handler, + ClientStreams: true, + }, + { + StreamName: "FullDuplexCall", + Handler: _TestService_FullDuplexCall_Handler, + ServerStreams: true, + ClientStreams: true, + }, + { + StreamName: "HalfDuplexCall", + Handler: _TestService_HalfDuplexCall_Handler, + ServerStreams: true, + ClientStreams: true, + }, + }, + Metadata: "grpc/test.proto", +} + +// UnimplementedServiceClient is the client API for UnimplementedService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type UnimplementedServiceClient interface { + // A call that no server should implement + UnimplementedCall(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type unimplementedServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewUnimplementedServiceClient(cc grpc.ClientConnInterface) UnimplementedServiceClient { + return &unimplementedServiceClient{cc} +} + +func (c *unimplementedServiceClient) UnimplementedCall(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/grpc.testing.UnimplementedService/UnimplementedCall", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// UnimplementedServiceServer is the server API for UnimplementedService service. +// All implementations must embed UnimplementedUnimplementedServiceServer +// for forward compatibility +type UnimplementedServiceServer interface { + // A call that no server should implement + UnimplementedCall(context.Context, *emptypb.Empty) (*emptypb.Empty, error) + mustEmbedUnimplementedUnimplementedServiceServer() +} + +// UnimplementedUnimplementedServiceServer must be embedded to have forward compatible implementations. +type UnimplementedUnimplementedServiceServer struct { +} + +func (UnimplementedUnimplementedServiceServer) UnimplementedCall(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnimplementedCall not implemented") +} +func (UnimplementedUnimplementedServiceServer) mustEmbedUnimplementedUnimplementedServiceServer() {} + +// UnsafeUnimplementedServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to UnimplementedServiceServer will +// result in compilation errors. +type UnsafeUnimplementedServiceServer interface { + mustEmbedUnimplementedUnimplementedServiceServer() +} + +func RegisterUnimplementedServiceServer(s grpc.ServiceRegistrar, srv UnimplementedServiceServer) { + s.RegisterService(&UnimplementedService_ServiceDesc, srv) +} + +func _UnimplementedService_UnimplementedCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UnimplementedServiceServer).UnimplementedCall(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/grpc.testing.UnimplementedService/UnimplementedCall", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UnimplementedServiceServer).UnimplementedCall(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +// UnimplementedService_ServiceDesc is the grpc.ServiceDesc for UnimplementedService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var UnimplementedService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "grpc.testing.UnimplementedService", + HandlerType: (*UnimplementedServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "UnimplementedCall", + Handler: _UnimplementedService_UnimplementedCall_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "grpc/test.proto", +} + +// LoadBalancerStatsServiceClient is the client API for LoadBalancerStatsService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type LoadBalancerStatsServiceClient interface { + // Gets the backend distribution for RPCs sent by a test client. + GetClientStats(ctx context.Context, in *LoadBalancerStatsRequest, opts ...grpc.CallOption) (*LoadBalancerStatsResponse, error) +} + +type loadBalancerStatsServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewLoadBalancerStatsServiceClient(cc grpc.ClientConnInterface) LoadBalancerStatsServiceClient { + return &loadBalancerStatsServiceClient{cc} +} + +func (c *loadBalancerStatsServiceClient) GetClientStats(ctx context.Context, in *LoadBalancerStatsRequest, opts ...grpc.CallOption) (*LoadBalancerStatsResponse, error) { + out := new(LoadBalancerStatsResponse) + err := c.cc.Invoke(ctx, "/grpc.testing.LoadBalancerStatsService/GetClientStats", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// LoadBalancerStatsServiceServer is the server API for LoadBalancerStatsService service. +// All implementations must embed UnimplementedLoadBalancerStatsServiceServer +// for forward compatibility +type LoadBalancerStatsServiceServer interface { + // Gets the backend distribution for RPCs sent by a test client. + GetClientStats(context.Context, *LoadBalancerStatsRequest) (*LoadBalancerStatsResponse, error) + mustEmbedUnimplementedLoadBalancerStatsServiceServer() +} + +// UnimplementedLoadBalancerStatsServiceServer must be embedded to have forward compatible implementations. +type UnimplementedLoadBalancerStatsServiceServer struct { +} + +func (UnimplementedLoadBalancerStatsServiceServer) GetClientStats(context.Context, *LoadBalancerStatsRequest) (*LoadBalancerStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetClientStats not implemented") +} +func (UnimplementedLoadBalancerStatsServiceServer) mustEmbedUnimplementedLoadBalancerStatsServiceServer() { +} + +// UnsafeLoadBalancerStatsServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to LoadBalancerStatsServiceServer will +// result in compilation errors. +type UnsafeLoadBalancerStatsServiceServer interface { + mustEmbedUnimplementedLoadBalancerStatsServiceServer() +} + +func RegisterLoadBalancerStatsServiceServer(s grpc.ServiceRegistrar, srv LoadBalancerStatsServiceServer) { + s.RegisterService(&LoadBalancerStatsService_ServiceDesc, srv) +} + +func _LoadBalancerStatsService_GetClientStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LoadBalancerStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LoadBalancerStatsServiceServer).GetClientStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/grpc.testing.LoadBalancerStatsService/GetClientStats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LoadBalancerStatsServiceServer).GetClientStats(ctx, req.(*LoadBalancerStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// LoadBalancerStatsService_ServiceDesc is the grpc.ServiceDesc for LoadBalancerStatsService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var LoadBalancerStatsService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "grpc.testing.LoadBalancerStatsService", + HandlerType: (*LoadBalancerStatsServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetClientStats", + Handler: _LoadBalancerStatsService_GetClientStats_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "grpc/test.proto", +} diff --git a/internal/testprotos/make_protos.sh b/internal/testprotos/make_protos.sh index 2463a769..02218010 100755 --- a/internal/testprotos/make_protos.sh +++ b/internal/testprotos/make_protos.sh @@ -30,16 +30,16 @@ if [[ "$(${PROTOC} --version 2>/dev/null)" != "libprotoc ${PROTOC_VERSION}" ]]; cd ./protoc && unzip protoc.zip && cd .. fi -go install github.com/golang/protobuf/protoc-gen-go +go install google.golang.org/protobuf/cmd/protoc-gen-go +go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0 go install github.com/jhump/protoreflect/desc/sourceinfo/cmd/protoc-gen-gosrcinfo # Output directory will effectively be GOPATH/src. -outdir="../../../../.." -# TODO: use new protoc-gen-go and protoc-gen-go_grpc plugins -${PROTOC} "--go_out=plugins=grpc:$outdir" "--gosrcinfo_out=debug:$outdir" -I. *.proto -${PROTOC} "--go_out=plugins=grpc:$outdir" "--gosrcinfo_out=debug:$outdir" -I. nopkg/*.proto -${PROTOC} "--go_out=plugins=grpc:$outdir" "--gosrcinfo_out=debug:$outdir" -I. pkg/*.proto -${PROTOC} "--go_out=plugins=grpc:$outdir" "--gosrcinfo_out=debug:$outdir" -I. grpc/*.proto +outdir="." +${PROTOC} "--go_out=paths=source_relative:$outdir" "--gosrcinfo_out=paths=source_relative,debug:$outdir" -I. *.proto +${PROTOC} "--go_out=paths=source_relative:$outdir" "--gosrcinfo_out=paths=source_relative,debug:$outdir" -I. nopkg/*.proto +${PROTOC} "--go_out=paths=source_relative:$outdir" "--gosrcinfo_out=paths=source_relative,debug:$outdir" -I. pkg/*.proto +${PROTOC} "--go_out=paths=source_relative:$outdir" "--go-grpc_out=paths=source_relative:$outdir" "--gosrcinfo_out=paths=source_relative,debug:$outdir" -I. grpc/*.proto # And make descriptor set (with source info) for several files ${PROTOC} --descriptor_set_out=./desc_test1.protoset --include_source_info --include_imports -I. desc_test1.proto diff --git a/internal/testutil/testservice.go b/internal/testutil/testservice.go index bc642887..413fe787 100644 --- a/internal/testutil/testservice.go +++ b/internal/testutil/testservice.go @@ -4,15 +4,19 @@ import ( "context" "io" + "google.golang.org/protobuf/types/known/emptypb" + grpc_testing "github.com/jhump/protoreflect/internal/testprotos/grpc" ) // TestService is a very simple test service that just echos back request payloads -type TestService struct{} +type TestService struct { + grpc_testing.UnimplementedTestServiceServer +} // EmptyCall satisfies the grpc_testing.TestServiceServer interface. It always succeeds. -func (TestService) EmptyCall(context.Context, *grpc_testing.Empty) (*grpc_testing.Empty, error) { - return &grpc_testing.Empty{}, nil +func (TestService) EmptyCall(context.Context, *emptypb.Empty) (*emptypb.Empty, error) { + return &emptypb.Empty{}, nil } // UnaryCall satisfies the grpc_testing.TestServiceServer interface. It always succeeds, echoing