diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/config/octopusConfig.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/config/octopusConfig.go index c219069a..50266d09 100644 --- a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/config/octopusConfig.go +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/config/octopusConfig.go @@ -52,4 +52,9 @@ type OctopusApi struct { DeleteMyModel string DeleteModelVersion string DownloadModelVersion string + GetTrainJob string + DeleteTrainJob string + StopTrainJob string + GetTrainJobEvent string + GetTrainJobMetric string } diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/deletetrainjoblogic.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/deletetrainjoblogic.go new file mode 100644 index 00000000..48367b66 --- /dev/null +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/deletetrainjoblogic.go @@ -0,0 +1,52 @@ +package logic + +import ( + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/common" + "PCM/common/tool" + "context" + + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/svc" + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus" + + "github.com/zeromicro/go-zero/core/logx" +) + +type DeleteTrainJobLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewDeleteTrainJobLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteTrainJobLogic { + return &DeleteTrainJobLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *DeleteTrainJobLogic) DeleteTrainJob(in *octopus.DeleteTrainJobReq) (*octopus.DeleteTrainJobResp, error) { + resp := &octopus.DeleteTrainJobResp{} + + var url_prefix = common.OctopusUrls[in.Platform] + var reqUrl = url_prefix + l.svcCtx.Config.OctopusApi.DeleteTrainJob + + token := common.GetToken(in.Platform) + req := tool.GetACHttpRequest() + + var queryStr string + for _, s := range in.GetJobIds() { + queryStr += "jobIds=" + s + "&" + } + _, err := req. + SetHeader("Authorization", "Bearer "+token). + SetQueryString(queryStr). + SetResult(resp). + Delete(reqUrl) + + if err != nil { + return nil, err + } + + return resp, nil +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/gettrainjobeventlogic.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/gettrainjobeventlogic.go new file mode 100644 index 00000000..c68ac202 --- /dev/null +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/gettrainjobeventlogic.go @@ -0,0 +1,51 @@ +package logic + +import ( + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/common" + "PCM/common/tool" + "context" + "strconv" + + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/svc" + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetTrainJobEventLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewGetTrainJobEventLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetTrainJobEventLogic { + return &GetTrainJobEventLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *GetTrainJobEventLogic) GetTrainJobEvent(in *octopus.GetTrainJobEventReq) (*octopus.GetTrainJobEventResp, error) { + resp := &octopus.GetTrainJobEventResp{} + + var url_prefix = common.OctopusUrls[in.Platform] + var reqUrl = url_prefix + l.svcCtx.Config.OctopusApi.GetTrainJobEvent + + token := common.GetToken(in.Platform) + + req := tool.GetACHttpRequest() + _, err := req. + SetHeader("Authorization", "Bearer "+token). + SetQueryString("id=" + in.Id). + SetQueryString("pageIndex=" + strconv.Itoa(int(in.PageIndex))). + SetQueryString("pageSize=" + strconv.Itoa(int(in.PageSize))). + SetResult(resp). + Get(reqUrl) + + if err != nil { + return nil, err + } + + return resp, nil +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/gettrainjoblogic.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/gettrainjoblogic.go new file mode 100644 index 00000000..c60cbae6 --- /dev/null +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/gettrainjoblogic.go @@ -0,0 +1,47 @@ +package logic + +import ( + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/common" + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/svc" + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus" + "PCM/common/tool" + "context" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetTrainJobLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewGetTrainJobLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetTrainJobLogic { + return &GetTrainJobLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *GetTrainJobLogic) GetTrainJob(in *octopus.GetTrainJobReq) (*octopus.GetTrainJobResp, error) { + resp := &octopus.GetTrainJobResp{} + + var url_prefix = common.OctopusUrls[in.Platform] + var reqUrl = url_prefix + l.svcCtx.Config.OctopusApi.GetTrainJob + + token := common.GetToken(in.Platform) + + req := tool.GetACHttpRequest() + _, err := req. + SetHeader("Authorization", "Bearer "+token). + SetPathParam("id", in.Id). + SetResult(resp). + Get(reqUrl) + + if err != nil { + return nil, err + } + + return resp, nil +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/gettrainjobmetriclogic.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/gettrainjobmetriclogic.go new file mode 100644 index 00000000..aa5c4fe9 --- /dev/null +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/gettrainjobmetriclogic.go @@ -0,0 +1,52 @@ +package logic + +import ( + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/common" + "PCM/common/tool" + "context" + "strconv" + + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/svc" + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetTrainJobMetricLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewGetTrainJobMetricLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetTrainJobMetricLogic { + return &GetTrainJobMetricLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *GetTrainJobMetricLogic) GetTrainJobMetric(in *octopus.GetTrainJobMetricReq) (*octopus.GetTrainJobMetricResp, error) { + resp := &octopus.GetTrainJobMetricResp{} + + var url_prefix = common.OctopusUrls[in.Platform] + var reqUrl = url_prefix + l.svcCtx.Config.OctopusApi.GetTrainJobMetric + + token := common.GetToken(in.Platform) + + req := tool.GetACHttpRequest() + _, err := req. + SetHeader("Authorization", "Bearer "+token). + SetQueryString("id=" + in.Id). + SetQueryString("start=" + strconv.Itoa(int(in.Start))). + SetQueryString("size=" + strconv.Itoa(int(in.Size))). + SetQueryString("step=" + strconv.Itoa(int(in.Step))). + SetResult(resp). + Get(reqUrl) + + if err != nil { + return nil, err + } + + return resp, nil +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/stoptrainjoblogic.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/stoptrainjoblogic.go new file mode 100644 index 00000000..e63c9d22 --- /dev/null +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/logic/stoptrainjoblogic.go @@ -0,0 +1,49 @@ +package logic + +import ( + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/common" + "PCM/common/tool" + "context" + + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/svc" + "PCM/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus" + + "github.com/zeromicro/go-zero/core/logx" +) + +type StopTrainJobLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewStopTrainJobLogic(ctx context.Context, svcCtx *svc.ServiceContext) *StopTrainJobLogic { + return &StopTrainJobLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *StopTrainJobLogic) StopTrainJob(in *octopus.StopTrainJobReq) (*octopus.StopTrainJobResp, error) { + resp := &octopus.StopTrainJobResp{} + + var url_prefix = common.OctopusUrls[in.Platform] + var reqUrl = url_prefix + l.svcCtx.Config.OctopusApi.StopTrainJob + + token := common.GetToken(in.Platform) + + req := tool.GetACHttpRequest() + _, err := req. + SetHeader("Authorization", "Bearer "+token). + SetPathParam("id", in.Id). + SetBody("{}"). + SetResult(resp). + Post(reqUrl) + + if err != nil { + return nil, err + } + + return resp, nil +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/server/octopusserver.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/server/octopusserver.go index 55216da0..cc3a684d 100644 --- a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/server/octopusserver.go +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/internal/server/octopusserver.go @@ -227,3 +227,28 @@ func (s *OctopusServer) GetTrainJobList(ctx context.Context, in *octopus.GetTrai l := logic.NewGetTrainJobListLogic(ctx, s.svcCtx) return l.GetTrainJobList(in) } + +func (s *OctopusServer) GetTrainJob(ctx context.Context, in *octopus.GetTrainJobReq) (*octopus.GetTrainJobResp, error) { + l := logic.NewGetTrainJobLogic(ctx, s.svcCtx) + return l.GetTrainJob(in) +} + +func (s *OctopusServer) DeleteTrainJob(ctx context.Context, in *octopus.DeleteTrainJobReq) (*octopus.DeleteTrainJobResp, error) { + l := logic.NewDeleteTrainJobLogic(ctx, s.svcCtx) + return l.DeleteTrainJob(in) +} + +func (s *OctopusServer) StopTrainJob(ctx context.Context, in *octopus.StopTrainJobReq) (*octopus.StopTrainJobResp, error) { + l := logic.NewStopTrainJobLogic(ctx, s.svcCtx) + return l.StopTrainJob(in) +} + +func (s *OctopusServer) GetTrainJobEvent(ctx context.Context, in *octopus.GetTrainJobEventReq) (*octopus.GetTrainJobEventResp, error) { + l := logic.NewGetTrainJobEventLogic(ctx, s.svcCtx) + return l.GetTrainJobEvent(in) +} + +func (s *OctopusServer) GetTrainJobMetric(ctx context.Context, in *octopus.GetTrainJobMetricReq) (*octopus.GetTrainJobMetricResp, error) { + l := logic.NewGetTrainJobMetricLogic(ctx, s.svcCtx) + return l.GetTrainJobMetric(in) +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus.pb.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus.pb.go index d2c85917..0e5fe050 100644 --- a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus.pb.go +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus.pb.go @@ -8658,6 +8658,974 @@ func (x *Model) GetUserName() string { } // *****************TrainJobService Start************************ +type GetTrainJobReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *GetTrainJobReq) Reset() { + *x = GetTrainJobReq{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTrainJobReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTrainJobReq) ProtoMessage() {} + +func (x *GetTrainJobReq) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[136] + 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 GetTrainJobReq.ProtoReflect.Descriptor instead. +func (*GetTrainJobReq) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{136} +} + +func (x *GetTrainJobReq) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GetTrainJobReq) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type GetTrainJobResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Payload *PayloadGetTrainJob `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Error *Error `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *GetTrainJobResp) Reset() { + *x = GetTrainJobResp{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTrainJobResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTrainJobResp) ProtoMessage() {} + +func (x *GetTrainJobResp) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[137] + 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 GetTrainJobResp.ProtoReflect.Descriptor instead. +func (*GetTrainJobResp) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{137} +} + +func (x *GetTrainJobResp) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *GetTrainJobResp) GetPayload() *PayloadGetTrainJob { + if x != nil { + return x.Payload + } + return nil +} + +func (x *GetTrainJobResp) GetError() *Error { + if x != nil { + return x.Error + } + return nil +} + +type PayloadGetTrainJob struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TrainJob *TrainJob `protobuf:"bytes,1,opt,name=trainJob,proto3" json:"trainJob,omitempty"` +} + +func (x *PayloadGetTrainJob) Reset() { + *x = PayloadGetTrainJob{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[138] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadGetTrainJob) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadGetTrainJob) ProtoMessage() {} + +func (x *PayloadGetTrainJob) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[138] + 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 PayloadGetTrainJob.ProtoReflect.Descriptor instead. +func (*PayloadGetTrainJob) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{138} +} + +func (x *PayloadGetTrainJob) GetTrainJob() *TrainJob { + if x != nil { + return x.TrainJob + } + return nil +} + +type DeleteTrainJobReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` + JobIds []string `protobuf:"bytes,2,rep,name=jobIds,proto3" json:"jobIds,omitempty"` +} + +func (x *DeleteTrainJobReq) Reset() { + *x = DeleteTrainJobReq{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[139] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteTrainJobReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteTrainJobReq) ProtoMessage() {} + +func (x *DeleteTrainJobReq) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[139] + 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 DeleteTrainJobReq.ProtoReflect.Descriptor instead. +func (*DeleteTrainJobReq) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{139} +} + +func (x *DeleteTrainJobReq) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *DeleteTrainJobReq) GetJobIds() []string { + if x != nil { + return x.JobIds + } + return nil +} + +type DeleteTrainJobResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Payload *PayloadDeleteTrainJob `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Error *Error `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *DeleteTrainJobResp) Reset() { + *x = DeleteTrainJobResp{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[140] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteTrainJobResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteTrainJobResp) ProtoMessage() {} + +func (x *DeleteTrainJobResp) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[140] + 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 DeleteTrainJobResp.ProtoReflect.Descriptor instead. +func (*DeleteTrainJobResp) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{140} +} + +func (x *DeleteTrainJobResp) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *DeleteTrainJobResp) GetPayload() *PayloadDeleteTrainJob { + if x != nil { + return x.Payload + } + return nil +} + +func (x *DeleteTrainJobResp) GetError() *Error { + if x != nil { + return x.Error + } + return nil +} + +type PayloadDeleteTrainJob struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DeletedAt int64 `protobuf:"varint,1,opt,name=deletedAt,proto3" json:"deletedAt,omitempty"` +} + +func (x *PayloadDeleteTrainJob) Reset() { + *x = PayloadDeleteTrainJob{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[141] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadDeleteTrainJob) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadDeleteTrainJob) ProtoMessage() {} + +func (x *PayloadDeleteTrainJob) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[141] + 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 PayloadDeleteTrainJob.ProtoReflect.Descriptor instead. +func (*PayloadDeleteTrainJob) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{141} +} + +func (x *PayloadDeleteTrainJob) GetDeletedAt() int64 { + if x != nil { + return x.DeletedAt + } + return 0 +} + +type StopTrainJobReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *StopTrainJobReq) Reset() { + *x = StopTrainJobReq{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[142] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopTrainJobReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopTrainJobReq) ProtoMessage() {} + +func (x *StopTrainJobReq) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[142] + 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 StopTrainJobReq.ProtoReflect.Descriptor instead. +func (*StopTrainJobReq) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{142} +} + +func (x *StopTrainJobReq) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *StopTrainJobReq) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type StopTrainJobResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Payload *PayloadStopTrainJob `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Error *Error `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *StopTrainJobResp) Reset() { + *x = StopTrainJobResp{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[143] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopTrainJobResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopTrainJobResp) ProtoMessage() {} + +func (x *StopTrainJobResp) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[143] + 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 StopTrainJobResp.ProtoReflect.Descriptor instead. +func (*StopTrainJobResp) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{143} +} + +func (x *StopTrainJobResp) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *StopTrainJobResp) GetPayload() *PayloadStopTrainJob { + if x != nil { + return x.Payload + } + return nil +} + +func (x *StopTrainJobResp) GetError() *Error { + if x != nil { + return x.Error + } + return nil +} + +type PayloadStopTrainJob struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StoppedAt int64 `protobuf:"varint,1,opt,name=stoppedAt,proto3" json:"stoppedAt,omitempty"` +} + +func (x *PayloadStopTrainJob) Reset() { + *x = PayloadStopTrainJob{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[144] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadStopTrainJob) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadStopTrainJob) ProtoMessage() {} + +func (x *PayloadStopTrainJob) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[144] + 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 PayloadStopTrainJob.ProtoReflect.Descriptor instead. +func (*PayloadStopTrainJob) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{144} +} + +func (x *PayloadStopTrainJob) GetStoppedAt() int64 { + if x != nil { + return x.StoppedAt + } + return 0 +} + +type GetTrainJobEventReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + PageIndex int32 `protobuf:"varint,3,opt,name=pageIndex,proto3" json:"pageIndex,omitempty"` + PageSize int32 `protobuf:"varint,4,opt,name=pageSize,proto3" json:"pageSize,omitempty"` +} + +func (x *GetTrainJobEventReq) Reset() { + *x = GetTrainJobEventReq{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[145] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTrainJobEventReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTrainJobEventReq) ProtoMessage() {} + +func (x *GetTrainJobEventReq) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[145] + 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 GetTrainJobEventReq.ProtoReflect.Descriptor instead. +func (*GetTrainJobEventReq) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{145} +} + +func (x *GetTrainJobEventReq) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GetTrainJobEventReq) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetTrainJobEventReq) GetPageIndex() int32 { + if x != nil { + return x.PageIndex + } + return 0 +} + +func (x *GetTrainJobEventReq) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +type GetTrainJobEventResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Payload *PayloadGetTrainJobEvent `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Error *Error `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *GetTrainJobEventResp) Reset() { + *x = GetTrainJobEventResp{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[146] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTrainJobEventResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTrainJobEventResp) ProtoMessage() {} + +func (x *GetTrainJobEventResp) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[146] + 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 GetTrainJobEventResp.ProtoReflect.Descriptor instead. +func (*GetTrainJobEventResp) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{146} +} + +func (x *GetTrainJobEventResp) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *GetTrainJobEventResp) GetPayload() *PayloadGetTrainJobEvent { + if x != nil { + return x.Payload + } + return nil +} + +func (x *GetTrainJobEventResp) GetError() *Error { + if x != nil { + return x.Error + } + return nil +} + +type PayloadGetTrainJobEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TotalSize int32 `protobuf:"varint,1,opt,name=totalSize,proto3" json:"totalSize,omitempty"` + JobEvents []*JobEvent `protobuf:"bytes,2,rep,name=jobEvents,proto3" json:"jobEvents,omitempty"` +} + +func (x *PayloadGetTrainJobEvent) Reset() { + *x = PayloadGetTrainJobEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[147] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadGetTrainJobEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadGetTrainJobEvent) ProtoMessage() {} + +func (x *PayloadGetTrainJobEvent) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[147] + 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 PayloadGetTrainJobEvent.ProtoReflect.Descriptor instead. +func (*PayloadGetTrainJobEvent) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{147} +} + +func (x *PayloadGetTrainJobEvent) GetTotalSize() int32 { + if x != nil { + return x.TotalSize + } + return 0 +} + +func (x *PayloadGetTrainJobEvent) GetJobEvents() []*JobEvent { + if x != nil { + return x.JobEvents + } + return nil +} + +type JobEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` + Timestamp string `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` +} + +func (x *JobEvent) Reset() { + *x = JobEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[148] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *JobEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JobEvent) ProtoMessage() {} + +func (x *JobEvent) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[148] + 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 JobEvent.ProtoReflect.Descriptor instead. +func (*JobEvent) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{148} +} + +func (x *JobEvent) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *JobEvent) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *JobEvent) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +func (x *JobEvent) GetTimestamp() string { + if x != nil { + return x.Timestamp + } + return "" +} + +type GetTrainJobMetricReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Start int64 `protobuf:"varint,3,opt,name=start,proto3" json:"start,omitempty"` + Size int32 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` + Step int32 `protobuf:"varint,5,opt,name=step,proto3" json:"step,omitempty"` +} + +func (x *GetTrainJobMetricReq) Reset() { + *x = GetTrainJobMetricReq{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[149] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTrainJobMetricReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTrainJobMetricReq) ProtoMessage() {} + +func (x *GetTrainJobMetricReq) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[149] + 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 GetTrainJobMetricReq.ProtoReflect.Descriptor instead. +func (*GetTrainJobMetricReq) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{149} +} + +func (x *GetTrainJobMetricReq) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GetTrainJobMetricReq) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GetTrainJobMetricReq) GetStart() int64 { + if x != nil { + return x.Start + } + return 0 +} + +func (x *GetTrainJobMetricReq) GetSize() int32 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *GetTrainJobMetricReq) GetStep() int32 { + if x != nil { + return x.Step + } + return 0 +} + +type GetTrainJobMetricResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Payload *PayloadGetTrainJobMetric `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + Error *Error `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` +} + +func (x *GetTrainJobMetricResp) Reset() { + *x = GetTrainJobMetricResp{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[150] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTrainJobMetricResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTrainJobMetricResp) ProtoMessage() {} + +func (x *GetTrainJobMetricResp) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[150] + 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 GetTrainJobMetricResp.ProtoReflect.Descriptor instead. +func (*GetTrainJobMetricResp) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{150} +} + +func (x *GetTrainJobMetricResp) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *GetTrainJobMetricResp) GetPayload() *PayloadGetTrainJobMetric { + if x != nil { + return x.Payload + } + return nil +} + +func (x *GetTrainJobMetricResp) GetError() *Error { + if x != nil { + return x.Error + } + return nil +} + +type PayloadGetTrainJobMetric struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CpuUsage []int64 `protobuf:"varint,1,rep,packed,name=cpuUsage,proto3" json:"cpuUsage,omitempty"` + GpuMemUsage []int64 `protobuf:"varint,2,rep,packed,name=gpuMemUsage,proto3" json:"gpuMemUsage,omitempty"` + GpuUtil []int64 `protobuf:"varint,3,rep,packed,name=gpuUtil,proto3" json:"gpuUtil,omitempty"` + MemUsage []int64 `protobuf:"varint,4,rep,packed,name=memUsage,proto3" json:"memUsage,omitempty"` +} + +func (x *PayloadGetTrainJobMetric) Reset() { + *x = PayloadGetTrainJobMetric{} + if protoimpl.UnsafeEnabled { + mi := &file_octopus_proto_msgTypes[151] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayloadGetTrainJobMetric) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayloadGetTrainJobMetric) ProtoMessage() {} + +func (x *PayloadGetTrainJobMetric) ProtoReflect() protoreflect.Message { + mi := &file_octopus_proto_msgTypes[151] + 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 PayloadGetTrainJobMetric.ProtoReflect.Descriptor instead. +func (*PayloadGetTrainJobMetric) Descriptor() ([]byte, []int) { + return file_octopus_proto_rawDescGZIP(), []int{151} +} + +func (x *PayloadGetTrainJobMetric) GetCpuUsage() []int64 { + if x != nil { + return x.CpuUsage + } + return nil +} + +func (x *PayloadGetTrainJobMetric) GetGpuMemUsage() []int64 { + if x != nil { + return x.GpuMemUsage + } + return nil +} + +func (x *PayloadGetTrainJobMetric) GetGpuUtil() []int64 { + if x != nil { + return x.GpuUtil + } + return nil +} + +func (x *PayloadGetTrainJobMetric) GetMemUsage() []int64 { + if x != nil { + return x.MemUsage + } + return nil +} + type GetTrainJobListReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -8671,7 +9639,7 @@ type GetTrainJobListReq struct { func (x *GetTrainJobListReq) Reset() { *x = GetTrainJobListReq{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[136] + mi := &file_octopus_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8684,7 +9652,7 @@ func (x *GetTrainJobListReq) String() string { func (*GetTrainJobListReq) ProtoMessage() {} func (x *GetTrainJobListReq) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[136] + mi := &file_octopus_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8697,7 +9665,7 @@ func (x *GetTrainJobListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTrainJobListReq.ProtoReflect.Descriptor instead. func (*GetTrainJobListReq) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{136} + return file_octopus_proto_rawDescGZIP(), []int{152} } func (x *GetTrainJobListReq) GetPlatform() string { @@ -8734,7 +9702,7 @@ type GetTrainJobListResp struct { func (x *GetTrainJobListResp) Reset() { *x = GetTrainJobListResp{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[137] + mi := &file_octopus_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8747,7 +9715,7 @@ func (x *GetTrainJobListResp) String() string { func (*GetTrainJobListResp) ProtoMessage() {} func (x *GetTrainJobListResp) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[137] + mi := &file_octopus_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8760,7 +9728,7 @@ func (x *GetTrainJobListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTrainJobListResp.ProtoReflect.Descriptor instead. func (*GetTrainJobListResp) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{137} + return file_octopus_proto_rawDescGZIP(), []int{153} } func (x *GetTrainJobListResp) GetSuccess() bool { @@ -8796,7 +9764,7 @@ type PayloadGetTrainJobList struct { func (x *PayloadGetTrainJobList) Reset() { *x = PayloadGetTrainJobList{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[138] + mi := &file_octopus_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8809,7 +9777,7 @@ func (x *PayloadGetTrainJobList) String() string { func (*PayloadGetTrainJobList) ProtoMessage() {} func (x *PayloadGetTrainJobList) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[138] + mi := &file_octopus_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8822,7 +9790,7 @@ func (x *PayloadGetTrainJobList) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadGetTrainJobList.ProtoReflect.Descriptor instead. func (*PayloadGetTrainJobList) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{138} + return file_octopus_proto_rawDescGZIP(), []int{154} } func (x *PayloadGetTrainJobList) GetTotalSize() int32 { @@ -8873,7 +9841,7 @@ type TrainJob struct { func (x *TrainJob) Reset() { *x = TrainJob{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[139] + mi := &file_octopus_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8886,7 +9854,7 @@ func (x *TrainJob) String() string { func (*TrainJob) ProtoMessage() {} func (x *TrainJob) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[139] + mi := &file_octopus_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8899,7 +9867,7 @@ func (x *TrainJob) ProtoReflect() protoreflect.Message { // Deprecated: Use TrainJob.ProtoReflect.Descriptor instead. func (*TrainJob) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{139} + return file_octopus_proto_rawDescGZIP(), []int{155} } func (x *TrainJob) GetAlgorithmId() string { @@ -9082,7 +10050,7 @@ type CreateTrainJobReq struct { func (x *CreateTrainJobReq) Reset() { *x = CreateTrainJobReq{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[140] + mi := &file_octopus_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9095,7 +10063,7 @@ func (x *CreateTrainJobReq) String() string { func (*CreateTrainJobReq) ProtoMessage() {} func (x *CreateTrainJobReq) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[140] + mi := &file_octopus_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9108,7 +10076,7 @@ func (x *CreateTrainJobReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTrainJobReq.ProtoReflect.Descriptor instead. func (*CreateTrainJobReq) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{140} + return file_octopus_proto_rawDescGZIP(), []int{156} } func (x *CreateTrainJobReq) GetPlatform() string { @@ -9138,7 +10106,7 @@ type CreateTrainJobResp struct { func (x *CreateTrainJobResp) Reset() { *x = CreateTrainJobResp{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[141] + mi := &file_octopus_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9151,7 +10119,7 @@ func (x *CreateTrainJobResp) String() string { func (*CreateTrainJobResp) ProtoMessage() {} func (x *CreateTrainJobResp) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[141] + mi := &file_octopus_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9164,7 +10132,7 @@ func (x *CreateTrainJobResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTrainJobResp.ProtoReflect.Descriptor instead. func (*CreateTrainJobResp) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{141} + return file_octopus_proto_rawDescGZIP(), []int{157} } func (x *CreateTrainJobResp) GetSuccess() bool { @@ -9210,7 +10178,7 @@ type CreateTrainJobParam struct { func (x *CreateTrainJobParam) Reset() { *x = CreateTrainJobParam{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[142] + mi := &file_octopus_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9223,7 +10191,7 @@ func (x *CreateTrainJobParam) String() string { func (*CreateTrainJobParam) ProtoMessage() {} func (x *CreateTrainJobParam) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[142] + mi := &file_octopus_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9236,7 +10204,7 @@ func (x *CreateTrainJobParam) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTrainJobParam.ProtoReflect.Descriptor instead. func (*CreateTrainJobParam) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{142} + return file_octopus_proto_rawDescGZIP(), []int{158} } func (x *CreateTrainJobParam) GetAlgorithmId() string { @@ -9346,7 +10314,7 @@ type Config struct { func (x *Config) Reset() { *x = Config{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[143] + mi := &file_octopus_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9359,7 +10327,7 @@ func (x *Config) String() string { func (*Config) ProtoMessage() {} func (x *Config) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[143] + mi := &file_octopus_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9372,7 +10340,7 @@ func (x *Config) ProtoReflect() protoreflect.Message { // Deprecated: Use Config.ProtoReflect.Descriptor instead. func (*Config) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{143} + return file_octopus_proto_rawDescGZIP(), []int{159} } func (x *Config) GetCommand() string { @@ -9479,7 +10447,7 @@ type Envs struct { func (x *Envs) Reset() { *x = Envs{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[144] + mi := &file_octopus_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9492,7 +10460,7 @@ func (x *Envs) String() string { func (*Envs) ProtoMessage() {} func (x *Envs) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[144] + mi := &file_octopus_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9505,7 +10473,7 @@ func (x *Envs) ProtoReflect() protoreflect.Message { // Deprecated: Use Envs.ProtoReflect.Descriptor instead. func (*Envs) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{144} + return file_octopus_proto_rawDescGZIP(), []int{160} } func (x *Envs) GetAdditionalProp1() string { @@ -9541,7 +10509,7 @@ type Parameters struct { func (x *Parameters) Reset() { *x = Parameters{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[145] + mi := &file_octopus_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9554,7 +10522,7 @@ func (x *Parameters) String() string { func (*Parameters) ProtoMessage() {} func (x *Parameters) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[145] + mi := &file_octopus_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9567,7 +10535,7 @@ func (x *Parameters) ProtoReflect() protoreflect.Message { // Deprecated: Use Parameters.ProtoReflect.Descriptor instead. func (*Parameters) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{145} + return file_octopus_proto_rawDescGZIP(), []int{161} } func (x *Parameters) GetKey() string { @@ -9596,7 +10564,7 @@ type ReplicaStates struct { func (x *ReplicaStates) Reset() { *x = ReplicaStates{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[146] + mi := &file_octopus_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9609,7 +10577,7 @@ func (x *ReplicaStates) String() string { func (*ReplicaStates) ProtoMessage() {} func (x *ReplicaStates) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[146] + mi := &file_octopus_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9622,7 +10590,7 @@ func (x *ReplicaStates) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplicaStates.ProtoReflect.Descriptor instead. func (*ReplicaStates) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{146} + return file_octopus_proto_rawDescGZIP(), []int{162} } func (x *ReplicaStates) GetKey() string { @@ -9653,7 +10621,7 @@ type Mounts struct { func (x *Mounts) Reset() { *x = Mounts{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[147] + mi := &file_octopus_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9666,7 +10634,7 @@ func (x *Mounts) String() string { func (*Mounts) ProtoMessage() {} func (x *Mounts) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[147] + mi := &file_octopus_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9679,7 +10647,7 @@ func (x *Mounts) ProtoReflect() protoreflect.Message { // Deprecated: Use Mounts.ProtoReflect.Descriptor instead. func (*Mounts) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{147} + return file_octopus_proto_rawDescGZIP(), []int{163} } func (x *Mounts) GetContainerPath() string { @@ -9721,7 +10689,7 @@ type PayloadCreateTrainJob struct { func (x *PayloadCreateTrainJob) Reset() { *x = PayloadCreateTrainJob{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[148] + mi := &file_octopus_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9734,7 +10702,7 @@ func (x *PayloadCreateTrainJob) String() string { func (*PayloadCreateTrainJob) ProtoMessage() {} func (x *PayloadCreateTrainJob) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[148] + mi := &file_octopus_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9747,7 +10715,7 @@ func (x *PayloadCreateTrainJob) ProtoReflect() protoreflect.Message { // Deprecated: Use PayloadCreateTrainJob.ProtoReflect.Descriptor instead. func (*PayloadCreateTrainJob) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{148} + return file_octopus_proto_rawDescGZIP(), []int{164} } func (x *PayloadCreateTrainJob) GetJobId() string { @@ -9769,7 +10737,7 @@ type Nfs struct { func (x *Nfs) Reset() { *x = Nfs{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[149] + mi := &file_octopus_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9782,7 +10750,7 @@ func (x *Nfs) String() string { func (*Nfs) ProtoMessage() {} func (x *Nfs) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[149] + mi := &file_octopus_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9795,7 +10763,7 @@ func (x *Nfs) ProtoReflect() protoreflect.Message { // Deprecated: Use Nfs.ProtoReflect.Descriptor instead. func (*Nfs) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{149} + return file_octopus_proto_rawDescGZIP(), []int{165} } func (x *Nfs) GetPath() string { @@ -9824,7 +10792,7 @@ type TrainJobOctopus struct { func (x *TrainJobOctopus) Reset() { *x = TrainJobOctopus{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[150] + mi := &file_octopus_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9837,7 +10805,7 @@ func (x *TrainJobOctopus) String() string { func (*TrainJobOctopus) ProtoMessage() {} func (x *TrainJobOctopus) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[150] + mi := &file_octopus_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9850,7 +10818,7 @@ func (x *TrainJobOctopus) ProtoReflect() protoreflect.Message { // Deprecated: Use TrainJobOctopus.ProtoReflect.Descriptor instead. func (*TrainJobOctopus) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{150} + return file_octopus_proto_rawDescGZIP(), []int{166} } func (x *TrainJobOctopus) GetBucket() string { @@ -9881,7 +10849,7 @@ type Error struct { func (x *Error) Reset() { *x = Error{} if protoimpl.UnsafeEnabled { - mi := &file_octopus_proto_msgTypes[151] + mi := &file_octopus_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9894,7 +10862,7 @@ func (x *Error) String() string { func (*Error) ProtoMessage() {} func (x *Error) ProtoReflect() protoreflect.Message { - mi := &file_octopus_proto_msgTypes[151] + mi := &file_octopus_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9907,7 +10875,7 @@ func (x *Error) ProtoReflect() protoreflect.Message { // Deprecated: Use Error.ProtoReflect.Descriptor instead. func (*Error) Descriptor() ([]byte, []int) { - return file_octopus_proto_rawDescGZIP(), []int{151} + return file_octopus_proto_rawDescGZIP(), []int{167} } func (x *Error) GetCode() int32 { @@ -11022,398 +11990,529 @@ var file_octopus_proto_rawDesc = []byte{ 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6a, 0x0a, - 0x12, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, - 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, - 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x65, - 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x07, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x67, 0x0a, 0x16, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, - 0x6f, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, - 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x09, 0x74, 0x72, 0x61, 0x69, - 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x22, 0xef, 0x05, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, - 0x6f, 0x62, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, - 0x68, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, - 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x67, - 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x6c, - 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x26, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, - 0x22, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x73, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x44, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, - 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x12, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, - 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x53, 0x65, 0x63, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x72, 0x75, 0x6e, 0x53, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x16, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x49, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x34, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, - 0x62, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8e, - 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, - 0x38, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x0f, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x43, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x2d, 0x0a, 0x08, + 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, + 0x62, 0x52, 0x08, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x22, 0x47, 0x0a, 0x11, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, + 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, + 0x62, 0x49, 0x64, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, + 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, + 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, + 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x35, 0x0a, 0x15, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x1c, + 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x3d, 0x0a, 0x0f, + 0x53, 0x74, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x8a, 0x01, 0x0a, 0x10, + 0x53, 0x74, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x36, 0x0a, 0x07, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x6f, + 0x70, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x33, 0x0a, 0x13, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x12, + 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x41, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x41, 0x74, 0x22, 0x7b, 0x0a, + 0x13, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x14, 0x47, + 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3a, 0x0a, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, - 0xa3, 0x03, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, - 0x6f, 0x62, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6c, 0x67, 0x6f, 0x72, - 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6c, - 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x6c, 0x67, - 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1c, - 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, - 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x24, - 0x0a, 0x0d, 0x69, 0x73, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x0a, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x4d, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, - 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x98, 0x04, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x04, 0x65, 0x6e, - 0x76, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x73, 0x52, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x12, 0x1e, 0x0a, - 0x0a, 0x69, 0x73, 0x4d, 0x61, 0x69, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0a, 0x69, 0x73, 0x4d, 0x61, 0x69, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2e, 0x0a, - 0x12, 0x6d, 0x69, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6d, 0x69, 0x6e, 0x46, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, - 0x15, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x54, 0x61, 0x73, - 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6d, 0x69, - 0x6e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x63, - 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x0d, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x0d, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, - 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, - 0x65, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, - 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, - 0x73, 0x75, 0x62, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x22, 0x84, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x76, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x64, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x31, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, - 0x6f, 0x70, 0x31, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x32, 0x12, 0x28, 0x0a, - 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x33, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x33, 0x22, 0x34, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x73, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x37, 0x0a, - 0x0d, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x06, 0x4d, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x61, - 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x03, 0x6e, 0x66, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x4e, - 0x66, 0x73, 0x52, 0x03, 0x6e, 0x66, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x6f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x52, 0x07, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, - 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, - 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x2d, 0x0a, 0x15, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, - 0x12, 0x14, 0x0a, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x31, 0x0a, 0x03, 0x4e, 0x66, 0x73, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x41, 0x0a, 0x0f, 0x54, 0x72, 0x61, - 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x6f, 0x0a, 0x05, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x75, 0x62, 0x63, - 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x73, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x90, 0x19, - 0x0a, 0x07, 0x4f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x12, 0x3a, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x14, + 0x68, 0x0a, 0x17, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, + 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x6a, 0x6f, 0x62, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x4a, 0x6f, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x09, + 0x6a, 0x6f, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x6e, 0x0a, 0x08, 0x4a, 0x6f, 0x62, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x80, 0x01, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, + 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x22, 0x94, 0x01, 0x0a, + 0x15, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x12, 0x3b, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x18, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x47, + 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x03, 0x52, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x67, 0x70, 0x75, 0x4d, 0x65, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x03, 0x52, 0x0b, 0x67, 0x70, 0x75, 0x4d, 0x65, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x67, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, + 0x07, 0x67, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x55, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x55, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x6a, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, + 0x4a, 0x6f, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x22, 0x90, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x22, 0x67, 0x0a, 0x16, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x47, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x74, + 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, + 0x62, 0x52, 0x09, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x22, 0xef, 0x05, 0x0a, + 0x08, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6c, 0x67, + 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x61, + 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x67, + 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, + 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x27, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, + 0x74, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53, + 0x65, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x53, + 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, + 0x73, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x73, + 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0d, 0x69, 0x73, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x53, + 0x65, 0x63, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x75, 0x6e, 0x53, 0x65, 0x63, + 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x17, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, + 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x65, + 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x34, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, + 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0x24, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xa3, 0x03, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, + 0x0a, 0x0b, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x49, 0x64, + 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x67, 0x6f, + 0x72, 0x69, 0x74, 0x68, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, + 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, + 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x61, 0x74, + 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, + 0x18, 0x0a, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x55, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x73, 0x44, 0x69, 0x73, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, + 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x06, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x06, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x98, 0x04, 0x0a, + 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x12, 0x21, 0x0a, 0x04, 0x65, 0x6e, 0x76, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x45, 0x6e, 0x76, 0x73, 0x52, 0x04, + 0x65, 0x6e, 0x76, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x4d, 0x61, 0x69, 0x6e, 0x52, 0x6f, + 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x4d, 0x61, 0x69, 0x6e, + 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x12, 0x6d, 0x69, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x15, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x63, 0x63, 0x65, + 0x65, 0x64, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, + 0x64, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, + 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x73, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x53, 0x70, 0x65, 0x63, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x54, 0x61, + 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x73, + 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x84, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x76, 0x73, + 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, + 0x6f, 0x70, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x31, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x32, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, + 0x72, 0x6f, 0x70, 0x32, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, + 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x33, 0x22, 0x34, + 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 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, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x37, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x9e, 0x01, + 0x0a, 0x06, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1e, + 0x0a, 0x03, 0x6e, 0x66, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x4e, 0x66, 0x73, 0x52, 0x03, 0x6e, 0x66, 0x73, 0x12, 0x32, + 0x0a, 0x07, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, + 0x6f, 0x62, 0x4f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x52, 0x07, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x2d, + 0x0a, 0x15, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x14, 0x0a, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x31, 0x0a, + 0x03, 0x4e, 0x66, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x22, 0x41, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4f, 0x63, 0x74, 0x6f, + 0x70, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x22, 0x6f, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x73, 0x75, 0x62, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x32, 0x87, 0x1c, 0x0a, 0x07, 0x4f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, + 0x12, 0x3a, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x69, 0x6e, 0x67, + 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x14, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x63, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0e, + 0x47, 0x65, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x63, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, - 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x67, 0x69, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, - 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, - 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, - 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x71, - 0x1a, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, - 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x41, 0x70, - 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x19, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x46, 0x72, 0x61, 0x6d, 0x65, - 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x46, - 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, - 0x26, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x67, + 0x69, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x41, 0x6c, + 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, + 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, + 0x72, 0x69, 0x74, 0x68, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x18, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, + 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x22, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, + 0x72, 0x69, 0x74, 0x68, 0x6d, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x6a, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x25, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1d, 0x2e, 0x6f, - 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x41, - 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x63, - 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, - 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x11, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x12, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x71, 0x1a, - 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x52, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, - 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x6f, - 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x0f, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, - 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, + 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, + 0x74, 0x68, 0x6d, 0x12, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, + 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x52, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, + 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, + 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, + 0x74, 0x68, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, + 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1d, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, + 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, + 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x0f, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1b, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, + 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, + 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x61, 0x0a, 0x16, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x12, 0x22, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x61, 0x0a, 0x16, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, 0x72, - 0x69, 0x74, 0x68, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x22, 0x2e, 0x6f, 0x63, - 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x67, 0x6f, - 0x72, 0x69, 0x74, 0x68, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, - 0x23, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x61, 0x74, - 0x61, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, - 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, - 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x19, - 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, - 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0d, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, - 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, - 0x14, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x14, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x58, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, - 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x6f, 0x63, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x4d, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, + 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x44, 0x61, 0x74, + 0x61, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5e, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0d, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x19, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0d, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x12, 0x19, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x14, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x20, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, + 0x61, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x21, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x44, + 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x5b, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, + 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, + 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x53, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, + 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x74, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x58, 0x0a, 0x13, 0x47, + 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, - 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x6f, - 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, - 0x74, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x70, 0x1a, 0x1f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, - 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, - 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, - 0x6f, 0x6b, 0x12, 0x17, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, - 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6f, 0x63, - 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, - 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, - 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x49, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, - 0x6f, 0x6b, 0x12, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x1b, - 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, - 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0d, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x19, 0x2e, 0x6f, - 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x65, - 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x65, 0x62, - 0x6f, 0x6f, 0x6b, 0x12, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x53, 0x74, - 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, - 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x65, - 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x6f, - 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x63, 0x74, - 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, + 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x1a, 0x1f, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x0f, + 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, + 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, + 0x6f, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x47, 0x65, + 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x17, 0x2e, 0x6f, 0x63, 0x74, 0x6f, + 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, + 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, + 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x1a, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, + 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, + 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, + 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x12, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x1a, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, + 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x0c, 0x53, 0x74, + 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x18, 0x2e, 0x6f, 0x63, 0x74, + 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, + 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x53, + 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x4f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x40, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, + 0x17, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x6f, 0x63, 0x74, + 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x12, 0x17, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, - 0x0b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x55, 0x0a, 0x12, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x4d, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x58, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, - 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, - 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0d, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x19, 0x2e, 0x6f, - 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, - 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, - 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, - 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x14, 0x44, 0x6f, - 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, - 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, - 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, - 0x62, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x42, 0x0a, 0x5a, 0x08, 0x2f, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x12, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x12, 0x1e, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x58, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x1f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x1a, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x12, 0x19, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1a, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, + 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x55, 0x0a, 0x12, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1e, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x1a, 0x1f, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x5b, 0x0a, 0x14, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x6f, 0x63, 0x74, 0x6f, + 0x70, 0x75, 0x73, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, + 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, + 0x12, 0x1a, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, + 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4c, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x2e, 0x6f, + 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, + 0x6f, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, 0x63, 0x74, 0x6f, + 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x17, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, + 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, + 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x1a, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, + 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, + 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x69, + 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x18, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x53, + 0x74, 0x6f, 0x70, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x1a, 0x19, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x72, 0x61, + 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x2e, + 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, + 0x4a, 0x6f, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x63, + 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, + 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, + 0x1d, 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, + 0x69, 0x6e, 0x4a, 0x6f, 0x62, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x1a, 0x1e, + 0x2e, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x69, + 0x6e, 0x4a, 0x6f, 0x62, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0a, + 0x5a, 0x08, 0x2f, 0x6f, 0x63, 0x74, 0x6f, 0x70, 0x75, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -11428,7 +12527,7 @@ func file_octopus_proto_rawDescGZIP() []byte { return file_octopus_proto_rawDescData } -var file_octopus_proto_msgTypes = make([]protoimpl.MessageInfo, 152) +var file_octopus_proto_msgTypes = make([]protoimpl.MessageInfo, 168) var file_octopus_proto_goTypes = []interface{}{ (*ResourceReq)(nil), // 0: octopus.resourceReq (*CpResp)(nil), // 1: octopus.cpResp @@ -11566,228 +12665,266 @@ var file_octopus_proto_goTypes = []interface{}{ (*GetMyModelListResp)(nil), // 133: octopus.GetMyModelListResp (*PayloadGetMyModelList)(nil), // 134: octopus.PayloadGetMyModelList (*Model)(nil), // 135: octopus.Model - (*GetTrainJobListReq)(nil), // 136: octopus.GetTrainJobListReq - (*GetTrainJobListResp)(nil), // 137: octopus.GetTrainJobListResp - (*PayloadGetTrainJobList)(nil), // 138: octopus.PayloadGetTrainJobList - (*TrainJob)(nil), // 139: octopus.TrainJob - (*CreateTrainJobReq)(nil), // 140: octopus.CreateTrainJobReq - (*CreateTrainJobResp)(nil), // 141: octopus.CreateTrainJobResp - (*CreateTrainJobParam)(nil), // 142: octopus.CreateTrainJobParam - (*Config)(nil), // 143: octopus.Config - (*Envs)(nil), // 144: octopus.Envs - (*Parameters)(nil), // 145: octopus.Parameters - (*ReplicaStates)(nil), // 146: octopus.ReplicaStates - (*Mounts)(nil), // 147: octopus.Mounts - (*PayloadCreateTrainJob)(nil), // 148: octopus.PayloadCreateTrainJob - (*Nfs)(nil), // 149: octopus.Nfs - (*TrainJobOctopus)(nil), // 150: octopus.TrainJobOctopus - (*Error)(nil), // 151: octopus.Error + (*GetTrainJobReq)(nil), // 136: octopus.GetTrainJobReq + (*GetTrainJobResp)(nil), // 137: octopus.GetTrainJobResp + (*PayloadGetTrainJob)(nil), // 138: octopus.PayloadGetTrainJob + (*DeleteTrainJobReq)(nil), // 139: octopus.DeleteTrainJobReq + (*DeleteTrainJobResp)(nil), // 140: octopus.DeleteTrainJobResp + (*PayloadDeleteTrainJob)(nil), // 141: octopus.PayloadDeleteTrainJob + (*StopTrainJobReq)(nil), // 142: octopus.StopTrainJobReq + (*StopTrainJobResp)(nil), // 143: octopus.StopTrainJobResp + (*PayloadStopTrainJob)(nil), // 144: octopus.PayloadStopTrainJob + (*GetTrainJobEventReq)(nil), // 145: octopus.GetTrainJobEventReq + (*GetTrainJobEventResp)(nil), // 146: octopus.GetTrainJobEventResp + (*PayloadGetTrainJobEvent)(nil), // 147: octopus.PayloadGetTrainJobEvent + (*JobEvent)(nil), // 148: octopus.JobEvent + (*GetTrainJobMetricReq)(nil), // 149: octopus.GetTrainJobMetricReq + (*GetTrainJobMetricResp)(nil), // 150: octopus.GetTrainJobMetricResp + (*PayloadGetTrainJobMetric)(nil), // 151: octopus.PayloadGetTrainJobMetric + (*GetTrainJobListReq)(nil), // 152: octopus.GetTrainJobListReq + (*GetTrainJobListResp)(nil), // 153: octopus.GetTrainJobListResp + (*PayloadGetTrainJobList)(nil), // 154: octopus.PayloadGetTrainJobList + (*TrainJob)(nil), // 155: octopus.TrainJob + (*CreateTrainJobReq)(nil), // 156: octopus.CreateTrainJobReq + (*CreateTrainJobResp)(nil), // 157: octopus.CreateTrainJobResp + (*CreateTrainJobParam)(nil), // 158: octopus.CreateTrainJobParam + (*Config)(nil), // 159: octopus.Config + (*Envs)(nil), // 160: octopus.Envs + (*Parameters)(nil), // 161: octopus.Parameters + (*ReplicaStates)(nil), // 162: octopus.ReplicaStates + (*Mounts)(nil), // 163: octopus.Mounts + (*PayloadCreateTrainJob)(nil), // 164: octopus.PayloadCreateTrainJob + (*Nfs)(nil), // 165: octopus.Nfs + (*TrainJobOctopus)(nil), // 166: octopus.TrainJobOctopus + (*Error)(nil), // 167: octopus.Error } var file_octopus_proto_depIdxs = []int32{ 5, // 0: octopus.GetAlgorithmResp.payload:type_name -> octopus.PayloadGetAlgorithm - 151, // 1: octopus.GetAlgorithmResp.error:type_name -> octopus.Error + 167, // 1: octopus.GetAlgorithmResp.error:type_name -> octopus.Error 25, // 2: octopus.PayloadGetAlgorithm.algorithm:type_name -> octopus.Algorithms 6, // 3: octopus.PayloadGetAlgorithm.versionAccesses:type_name -> octopus.VersionAccesses 9, // 4: octopus.DownloadAlgorithmResp.payload:type_name -> octopus.PayloadDownloadAlgorithm - 151, // 5: octopus.DownloadAlgorithmResp.error:type_name -> octopus.Error + 167, // 5: octopus.DownloadAlgorithmResp.error:type_name -> octopus.Error 11, // 6: octopus.UploadAlgorithmReq.params:type_name -> octopus.UploadAlgorithmParam 13, // 7: octopus.UploadAlgorithmResp.payload:type_name -> octopus.PayloadUploadAlgorithm - 151, // 8: octopus.UploadAlgorithmResp.error:type_name -> octopus.Error + 167, // 8: octopus.UploadAlgorithmResp.error:type_name -> octopus.Error 15, // 9: octopus.UploadAlgorithmConfirmReq.params:type_name -> octopus.UploadAlgorithmConfirmParam 17, // 10: octopus.UploadAlgorithmConfirmResp.payload:type_name -> octopus.PayloadUploadAlgorithmConfirm - 151, // 11: octopus.UploadAlgorithmConfirmResp.error:type_name -> octopus.Error + 167, // 11: octopus.UploadAlgorithmConfirmResp.error:type_name -> octopus.Error 20, // 12: octopus.GetAlgorithmListResp.payload:type_name -> octopus.PayloadAlgorithmList - 151, // 13: octopus.GetAlgorithmListResp.error:type_name -> octopus.Error + 167, // 13: octopus.GetAlgorithmListResp.error:type_name -> octopus.Error 21, // 14: octopus.PayloadAlgorithmList.algorithms:type_name -> octopus.AlgorithmDetail 25, // 15: octopus.AlgorithmDetail.algorithmDetail:type_name -> octopus.Algorithms 24, // 16: octopus.GetMyAlgorithmListResp.payload:type_name -> octopus.PayloadMyAlgorithmList - 151, // 17: octopus.GetMyAlgorithmListResp.error:type_name -> octopus.Error + 167, // 17: octopus.GetMyAlgorithmListResp.error:type_name -> octopus.Error 25, // 18: octopus.PayloadMyAlgorithmList.algorithms:type_name -> octopus.Algorithms 28, // 19: octopus.GetAlgorithmApplyListResp.payload:type_name -> octopus.PayloadGetAlgorithmApplyList - 151, // 20: octopus.GetAlgorithmApplyListResp.error:type_name -> octopus.Error + 167, // 20: octopus.GetAlgorithmApplyListResp.error:type_name -> octopus.Error 32, // 21: octopus.PayloadGetAlgorithmApplyList.lables:type_name -> octopus.Lables 31, // 22: octopus.GetAlgorithmFrameworkListResp.payload:type_name -> octopus.PayloadAlgorithmFrameworkList - 151, // 23: octopus.GetAlgorithmFrameworkListResp.error:type_name -> octopus.Error + 167, // 23: octopus.GetAlgorithmFrameworkListResp.error:type_name -> octopus.Error 32, // 24: octopus.PayloadAlgorithmFrameworkList.lables:type_name -> octopus.Lables 35, // 25: octopus.DeleteMyAlgorithmResp.payload:type_name -> octopus.PayloadDeleteMyAlgorithm - 151, // 26: octopus.DeleteMyAlgorithmResp.error:type_name -> octopus.Error + 167, // 26: octopus.DeleteMyAlgorithmResp.error:type_name -> octopus.Error 38, // 27: octopus.CreateMyAlgorithmReq.createMyAlgorithm:type_name -> octopus.CreateMyAlgorithm 39, // 28: octopus.CreateMyAlgorithmResp.payload:type_name -> octopus.PayloadCreateMyAlgorithm - 151, // 29: octopus.CreateMyAlgorithmResp.error:type_name -> octopus.Error + 167, // 29: octopus.CreateMyAlgorithmResp.error:type_name -> octopus.Error 42, // 30: octopus.GetDatasetVersionListResp.payload:type_name -> octopus.PayloadGetDatasetVersion - 151, // 31: octopus.GetDatasetVersionListResp.error:type_name -> octopus.Error + 167, // 31: octopus.GetDatasetVersionListResp.error:type_name -> octopus.Error 43, // 32: octopus.PayloadGetDatasetVersion.versions:type_name -> octopus.DatasetVersion 46, // 33: octopus.CreateDataSetReq.createDataSet:type_name -> octopus.CreateDataSet 47, // 34: octopus.CreateDataSetResp.payload:type_name -> octopus.PayloadCreateDataSet - 151, // 35: octopus.CreateDataSetResp.error:type_name -> octopus.Error + 167, // 35: octopus.CreateDataSetResp.error:type_name -> octopus.Error 50, // 36: octopus.GetMyDatasetListResp.payload:type_name -> octopus.PayloadMyDatasetList - 151, // 37: octopus.GetMyDatasetListResp.error:type_name -> octopus.Error + 167, // 37: octopus.GetMyDatasetListResp.error:type_name -> octopus.Error 51, // 38: octopus.PayloadMyDatasetList.datasets:type_name -> octopus.Datasets 52, // 39: octopus.Datasets.applies:type_name -> octopus.Applies 55, // 40: octopus.DeleteDataSetResp.payload:type_name -> octopus.PayloadDeleteDataSet - 151, // 41: octopus.DeleteDataSetResp.error:type_name -> octopus.Error + 167, // 41: octopus.DeleteDataSetResp.error:type_name -> octopus.Error 57, // 42: octopus.UploadDataSetReq.params:type_name -> octopus.UploadDataSetParam 59, // 43: octopus.UploadDataSetResp.payload:type_name -> octopus.PayloadUploadDataSet - 151, // 44: octopus.UploadDataSetResp.error:type_name -> octopus.Error + 167, // 44: octopus.UploadDataSetResp.error:type_name -> octopus.Error 61, // 45: octopus.UploadDataSetConfirmReq.params:type_name -> octopus.UploadDataSetConfirmParam 63, // 46: octopus.UploadDataSetConfirmResp.payload:type_name -> octopus.PayloadUploadDataSetConfirm - 151, // 47: octopus.UploadDataSetConfirmResp.error:type_name -> octopus.Error + 167, // 47: octopus.UploadDataSetConfirmResp.error:type_name -> octopus.Error 65, // 48: octopus.CreateDataSetVersionReq.params:type_name -> octopus.CreateDataSetVersionParam 67, // 49: octopus.CreateDataSetVersionResp.payload:type_name -> octopus.PayloadCreateDataSetVersion - 151, // 50: octopus.CreateDataSetVersionResp.error:type_name -> octopus.Error + 167, // 50: octopus.CreateDataSetVersionResp.error:type_name -> octopus.Error 70, // 51: octopus.DeleteDataSetVersionResp.payload:type_name -> octopus.PayloadDeleteDataSetVersion - 151, // 52: octopus.DeleteDataSetVersionResp.error:type_name -> octopus.Error + 167, // 52: octopus.DeleteDataSetVersionResp.error:type_name -> octopus.Error 73, // 53: octopus.GetDatasetApplyListResp.payload:type_name -> octopus.PayloadGetDatasetApplyList - 151, // 54: octopus.GetDatasetApplyListResp.error:type_name -> octopus.Error + 167, // 54: octopus.GetDatasetApplyListResp.error:type_name -> octopus.Error 32, // 55: octopus.PayloadGetDatasetApplyList.lables:type_name -> octopus.Lables 76, // 56: octopus.GetDatasetTypeListResp.payload:type_name -> octopus.PayloadGetDatasetTypeList - 151, // 57: octopus.GetDatasetTypeListResp.error:type_name -> octopus.Error + 167, // 57: octopus.GetDatasetTypeListResp.error:type_name -> octopus.Error 32, // 58: octopus.PayloadGetDatasetTypeList.lables:type_name -> octopus.Lables 78, // 59: octopus.CreateNotebookReq.params:type_name -> octopus.CreateNotebookParam - 144, // 60: octopus.CreateNotebookParam.envs:type_name -> octopus.Envs - 147, // 61: octopus.CreateNotebookParam.mounts:type_name -> octopus.Mounts + 160, // 60: octopus.CreateNotebookParam.envs:type_name -> octopus.Envs + 163, // 61: octopus.CreateNotebookParam.mounts:type_name -> octopus.Mounts 80, // 62: octopus.CreateNotebookResp.payload:type_name -> octopus.PayloadCreateNotebook - 151, // 63: octopus.CreateNotebookResp.error:type_name -> octopus.Error + 167, // 63: octopus.CreateNotebookResp.error:type_name -> octopus.Error 83, // 64: octopus.GetNotebookResp.payload:type_name -> octopus.PayloadGetNotebook - 151, // 65: octopus.GetNotebookResp.error:type_name -> octopus.Error + 167, // 65: octopus.GetNotebookResp.error:type_name -> octopus.Error 90, // 66: octopus.PayloadGetNotebook.notebook:type_name -> octopus.Notebook 86, // 67: octopus.DeleteNotebookResp.payload:type_name -> octopus.PayloadDeleteNotebook - 151, // 68: octopus.DeleteNotebookResp.error:type_name -> octopus.Error + 167, // 68: octopus.DeleteNotebookResp.error:type_name -> octopus.Error 89, // 69: octopus.GetNotebookListResp.payload:type_name -> octopus.PayloadNotebookList - 151, // 70: octopus.GetNotebookListResp.error:type_name -> octopus.Error + 167, // 70: octopus.GetNotebookListResp.error:type_name -> octopus.Error 90, // 71: octopus.PayloadNotebookList.notebooks:type_name -> octopus.Notebook 91, // 72: octopus.Notebook.tasks:type_name -> octopus.Tasks 94, // 73: octopus.StartNotebookResp.payload:type_name -> octopus.PayloadStartNotebook - 151, // 74: octopus.StartNotebookResp.error:type_name -> octopus.Error + 167, // 74: octopus.StartNotebookResp.error:type_name -> octopus.Error 97, // 75: octopus.StopNotebookResp.payload:type_name -> octopus.PayloadStopNotebook - 151, // 76: octopus.StopNotebookResp.error:type_name -> octopus.Error + 167, // 76: octopus.StopNotebookResp.error:type_name -> octopus.Error 100, // 77: octopus.GetUserImageListResp.payload:type_name -> octopus.PayloadUserImageList - 151, // 78: octopus.GetUserImageListResp.error:type_name -> octopus.Error + 167, // 78: octopus.GetUserImageListResp.error:type_name -> octopus.Error 101, // 79: octopus.PayloadUserImageList.images:type_name -> octopus.Images 102, // 80: octopus.Images.image:type_name -> octopus.Image 105, // 81: octopus.DeleteImageResp.payload:type_name -> octopus.PayloadDeleteImage - 151, // 82: octopus.DeleteImageResp.error:type_name -> octopus.Error + 167, // 82: octopus.DeleteImageResp.error:type_name -> octopus.Error 107, // 83: octopus.CreateImageReq.createImage:type_name -> octopus.CreateImage 109, // 84: octopus.CreateImageResp.payload:type_name -> octopus.PayloadCreateImage - 151, // 85: octopus.CreateImageResp.error:type_name -> octopus.Error + 167, // 85: octopus.CreateImageResp.error:type_name -> octopus.Error 111, // 86: octopus.UploadImageReq.params:type_name -> octopus.UploadImageParam 113, // 87: octopus.UploadImageResp.payload:type_name -> octopus.PayloadUploadImage - 151, // 88: octopus.UploadImageResp.error:type_name -> octopus.Error + 167, // 88: octopus.UploadImageResp.error:type_name -> octopus.Error 114, // 89: octopus.PayloadUploadImage.headers:type_name -> octopus.Headers 117, // 90: octopus.UploadImageConfirmResp.payload:type_name -> octopus.PayloadUploadImageConfirm - 151, // 91: octopus.UploadImageConfirmResp.error:type_name -> octopus.Error + 167, // 91: octopus.UploadImageConfirmResp.error:type_name -> octopus.Error 120, // 92: octopus.GetModelVersionListResp.payload:type_name -> octopus.PayloadGetModelVersionList - 151, // 93: octopus.GetModelVersionListResp.error:type_name -> octopus.Error + 167, // 93: octopus.GetModelVersionListResp.error:type_name -> octopus.Error 121, // 94: octopus.PayloadGetModelVersionList.modelVersions:type_name -> octopus.ModelVersion 122, // 95: octopus.ModelVersion.versionDetail:type_name -> octopus.VersionDetail 125, // 96: octopus.DeleteMyModelResp.payload:type_name -> octopus.PayloadDeleteMyModel - 151, // 97: octopus.DeleteMyModelResp.error:type_name -> octopus.Error + 167, // 97: octopus.DeleteMyModelResp.error:type_name -> octopus.Error 128, // 98: octopus.DeleteModelVersionResp.payload:type_name -> octopus.PayloadDeleteModelVersion - 151, // 99: octopus.DeleteModelVersionResp.error:type_name -> octopus.Error + 167, // 99: octopus.DeleteModelVersionResp.error:type_name -> octopus.Error 131, // 100: octopus.DownloadModelVersionResp.payload:type_name -> octopus.PayloadDownloadModelVersion - 151, // 101: octopus.DownloadModelVersionResp.error:type_name -> octopus.Error + 167, // 101: octopus.DownloadModelVersionResp.error:type_name -> octopus.Error 134, // 102: octopus.GetMyModelListResp.payload:type_name -> octopus.PayloadGetMyModelList - 151, // 103: octopus.GetMyModelListResp.error:type_name -> octopus.Error + 167, // 103: octopus.GetMyModelListResp.error:type_name -> octopus.Error 135, // 104: octopus.PayloadGetMyModelList.models:type_name -> octopus.Model - 138, // 105: octopus.GetTrainJobListResp.payload:type_name -> octopus.PayloadGetTrainJobList - 151, // 106: octopus.GetTrainJobListResp.error:type_name -> octopus.Error - 139, // 107: octopus.PayloadGetTrainJobList.trainJobs:type_name -> octopus.TrainJob - 143, // 108: octopus.TrainJob.config:type_name -> octopus.Config - 142, // 109: octopus.CreateTrainJobReq.params:type_name -> octopus.CreateTrainJobParam - 148, // 110: octopus.CreateTrainJobResp.payload:type_name -> octopus.PayloadCreateTrainJob - 151, // 111: octopus.CreateTrainJobResp.error:type_name -> octopus.Error - 143, // 112: octopus.CreateTrainJobParam.config:type_name -> octopus.Config - 147, // 113: octopus.CreateTrainJobParam.mounts:type_name -> octopus.Mounts - 144, // 114: octopus.Config.envs:type_name -> octopus.Envs - 145, // 115: octopus.Config.parameters:type_name -> octopus.Parameters - 146, // 116: octopus.Config.replicaStates:type_name -> octopus.ReplicaStates - 149, // 117: octopus.Mounts.nfs:type_name -> octopus.Nfs - 150, // 118: octopus.Mounts.octopus:type_name -> octopus.TrainJobOctopus - 0, // 119: octopus.Octopus.GetComputingPower:input_type -> octopus.resourceReq - 0, // 120: octopus.Octopus.GetGeneralInfo:input_type -> octopus.resourceReq - 22, // 121: octopus.Octopus.GetMyAlgorithmList:input_type -> octopus.GetMyAlgorithmListReq - 18, // 122: octopus.Octopus.GetAlgorithmList:input_type -> octopus.GetAlgorithmListReq - 3, // 123: octopus.Octopus.GetAlgorithm:input_type -> octopus.GetAlgorithmReq - 26, // 124: octopus.Octopus.GetAlgorithmApplyList:input_type -> octopus.GetAlgorithmApplyListReq - 29, // 125: octopus.Octopus.GetAlgorithmFrameworkList:input_type -> octopus.GetAlgorithmFrameworkListReq - 33, // 126: octopus.Octopus.DeleteMyAlgorithm:input_type -> octopus.DeleteMyAlgorithmReq - 36, // 127: octopus.Octopus.CreateMyAlgorithm:input_type -> octopus.CreateMyAlgorithmReq - 7, // 128: octopus.Octopus.DownloadAlgorithm:input_type -> octopus.DownloadAlgorithmReq - 10, // 129: octopus.Octopus.UploadAlgorithm:input_type -> octopus.UploadAlgorithmReq - 14, // 130: octopus.Octopus.UploadAlgorithmConfirm:input_type -> octopus.UploadAlgorithmConfirmReq - 48, // 131: octopus.Octopus.GetMyDatasetList:input_type -> octopus.GetMyDatasetListReq - 40, // 132: octopus.Octopus.GetDatasetVersionList:input_type -> octopus.GetDatasetVersionListReq - 44, // 133: octopus.Octopus.CreateDataSet:input_type -> octopus.CreateDataSetReq - 53, // 134: octopus.Octopus.DeleteDataSet:input_type -> octopus.DeleteDataSetReq - 56, // 135: octopus.Octopus.UploadDataSet:input_type -> octopus.UploadDataSetReq - 60, // 136: octopus.Octopus.UploadDataSetConfirm:input_type -> octopus.UploadDataSetConfirmReq - 64, // 137: octopus.Octopus.CreateDataSetVersion:input_type -> octopus.CreateDataSetVersionReq - 68, // 138: octopus.Octopus.DeleteDataSetVersion:input_type -> octopus.DeleteDataSetVersionReq - 71, // 139: octopus.Octopus.GetDatasetApplyList:input_type -> octopus.GetDatasetApplyListReq - 74, // 140: octopus.Octopus.GetDatasetTypeList:input_type -> octopus.GetDatasetTypeListRep - 87, // 141: octopus.Octopus.GetNotebookList:input_type -> octopus.GetNotebookListReq - 81, // 142: octopus.Octopus.GetNotebook:input_type -> octopus.GetNotebookReq - 84, // 143: octopus.Octopus.DeleteNotebook:input_type -> octopus.DeleteNotebookReq - 77, // 144: octopus.Octopus.CreateNotebook:input_type -> octopus.CreateNotebookReq - 92, // 145: octopus.Octopus.StartNotebook:input_type -> octopus.StartNotebookReq - 95, // 146: octopus.Octopus.StopNotebook:input_type -> octopus.StopNotebookReq - 98, // 147: octopus.Octopus.GetUserImageList:input_type -> octopus.GetUserImageListReq - 106, // 148: octopus.Octopus.CreateImage:input_type -> octopus.CreateImageReq - 103, // 149: octopus.Octopus.DeleteImage:input_type -> octopus.DeleteImageReq - 110, // 150: octopus.Octopus.UploadImage:input_type -> octopus.UploadImageReq - 115, // 151: octopus.Octopus.UploadImageConfirm:input_type -> octopus.UploadImageConfirmReq - 132, // 152: octopus.Octopus.GetMyModelList:input_type -> octopus.GetMyModelListReq - 118, // 153: octopus.Octopus.GetModelVersionList:input_type -> octopus.GetModelVersionListReq - 123, // 154: octopus.Octopus.DeleteMyModel:input_type -> octopus.DeleteMyModelReq - 126, // 155: octopus.Octopus.DeleteModelVersion:input_type -> octopus.DeleteModelVersionReq - 129, // 156: octopus.Octopus.DownloadModelVersion:input_type -> octopus.DownloadModelVersionReq - 140, // 157: octopus.Octopus.CreateTrainJob:input_type -> octopus.CreateTrainJobReq - 136, // 158: octopus.Octopus.GetTrainJobList:input_type -> octopus.GetTrainJobListReq - 1, // 159: octopus.Octopus.GetComputingPower:output_type -> octopus.cpResp - 2, // 160: octopus.Octopus.GetGeneralInfo:output_type -> octopus.giResp - 23, // 161: octopus.Octopus.GetMyAlgorithmList:output_type -> octopus.GetMyAlgorithmListResp - 19, // 162: octopus.Octopus.GetAlgorithmList:output_type -> octopus.GetAlgorithmListResp - 4, // 163: octopus.Octopus.GetAlgorithm:output_type -> octopus.GetAlgorithmResp - 27, // 164: octopus.Octopus.GetAlgorithmApplyList:output_type -> octopus.GetAlgorithmApplyListResp - 30, // 165: octopus.Octopus.GetAlgorithmFrameworkList:output_type -> octopus.GetAlgorithmFrameworkListResp - 34, // 166: octopus.Octopus.DeleteMyAlgorithm:output_type -> octopus.DeleteMyAlgorithmResp - 37, // 167: octopus.Octopus.CreateMyAlgorithm:output_type -> octopus.CreateMyAlgorithmResp - 8, // 168: octopus.Octopus.DownloadAlgorithm:output_type -> octopus.DownloadAlgorithmResp - 12, // 169: octopus.Octopus.UploadAlgorithm:output_type -> octopus.UploadAlgorithmResp - 16, // 170: octopus.Octopus.UploadAlgorithmConfirm:output_type -> octopus.UploadAlgorithmConfirmResp - 49, // 171: octopus.Octopus.GetMyDatasetList:output_type -> octopus.GetMyDatasetListResp - 41, // 172: octopus.Octopus.GetDatasetVersionList:output_type -> octopus.GetDatasetVersionListResp - 45, // 173: octopus.Octopus.CreateDataSet:output_type -> octopus.CreateDataSetResp - 54, // 174: octopus.Octopus.DeleteDataSet:output_type -> octopus.DeleteDataSetResp - 58, // 175: octopus.Octopus.UploadDataSet:output_type -> octopus.UploadDataSetResp - 62, // 176: octopus.Octopus.UploadDataSetConfirm:output_type -> octopus.UploadDataSetConfirmResp - 66, // 177: octopus.Octopus.CreateDataSetVersion:output_type -> octopus.CreateDataSetVersionResp - 69, // 178: octopus.Octopus.DeleteDataSetVersion:output_type -> octopus.DeleteDataSetVersionResp - 72, // 179: octopus.Octopus.GetDatasetApplyList:output_type -> octopus.GetDatasetApplyListResp - 75, // 180: octopus.Octopus.GetDatasetTypeList:output_type -> octopus.GetDatasetTypeListResp - 88, // 181: octopus.Octopus.GetNotebookList:output_type -> octopus.GetNotebookListResp - 82, // 182: octopus.Octopus.GetNotebook:output_type -> octopus.GetNotebookResp - 85, // 183: octopus.Octopus.DeleteNotebook:output_type -> octopus.DeleteNotebookResp - 79, // 184: octopus.Octopus.CreateNotebook:output_type -> octopus.CreateNotebookResp - 93, // 185: octopus.Octopus.StartNotebook:output_type -> octopus.StartNotebookResp - 96, // 186: octopus.Octopus.StopNotebook:output_type -> octopus.StopNotebookResp - 99, // 187: octopus.Octopus.GetUserImageList:output_type -> octopus.GetUserImageListResp - 108, // 188: octopus.Octopus.CreateImage:output_type -> octopus.CreateImageResp - 104, // 189: octopus.Octopus.DeleteImage:output_type -> octopus.DeleteImageResp - 112, // 190: octopus.Octopus.UploadImage:output_type -> octopus.UploadImageResp - 116, // 191: octopus.Octopus.UploadImageConfirm:output_type -> octopus.UploadImageConfirmResp - 133, // 192: octopus.Octopus.GetMyModelList:output_type -> octopus.GetMyModelListResp - 119, // 193: octopus.Octopus.GetModelVersionList:output_type -> octopus.GetModelVersionListResp - 124, // 194: octopus.Octopus.DeleteMyModel:output_type -> octopus.DeleteMyModelResp - 127, // 195: octopus.Octopus.DeleteModelVersion:output_type -> octopus.DeleteModelVersionResp - 130, // 196: octopus.Octopus.DownloadModelVersion:output_type -> octopus.DownloadModelVersionResp - 141, // 197: octopus.Octopus.CreateTrainJob:output_type -> octopus.CreateTrainJobResp - 137, // 198: octopus.Octopus.GetTrainJobList:output_type -> octopus.GetTrainJobListResp - 159, // [159:199] is the sub-list for method output_type - 119, // [119:159] is the sub-list for method input_type - 119, // [119:119] is the sub-list for extension type_name - 119, // [119:119] is the sub-list for extension extendee - 0, // [0:119] is the sub-list for field type_name + 138, // 105: octopus.GetTrainJobResp.payload:type_name -> octopus.PayloadGetTrainJob + 167, // 106: octopus.GetTrainJobResp.error:type_name -> octopus.Error + 155, // 107: octopus.PayloadGetTrainJob.trainJob:type_name -> octopus.TrainJob + 141, // 108: octopus.DeleteTrainJobResp.payload:type_name -> octopus.PayloadDeleteTrainJob + 167, // 109: octopus.DeleteTrainJobResp.error:type_name -> octopus.Error + 144, // 110: octopus.StopTrainJobResp.payload:type_name -> octopus.PayloadStopTrainJob + 167, // 111: octopus.StopTrainJobResp.error:type_name -> octopus.Error + 147, // 112: octopus.GetTrainJobEventResp.payload:type_name -> octopus.PayloadGetTrainJobEvent + 167, // 113: octopus.GetTrainJobEventResp.error:type_name -> octopus.Error + 148, // 114: octopus.PayloadGetTrainJobEvent.jobEvents:type_name -> octopus.JobEvent + 151, // 115: octopus.GetTrainJobMetricResp.payload:type_name -> octopus.PayloadGetTrainJobMetric + 167, // 116: octopus.GetTrainJobMetricResp.error:type_name -> octopus.Error + 154, // 117: octopus.GetTrainJobListResp.payload:type_name -> octopus.PayloadGetTrainJobList + 167, // 118: octopus.GetTrainJobListResp.error:type_name -> octopus.Error + 155, // 119: octopus.PayloadGetTrainJobList.trainJobs:type_name -> octopus.TrainJob + 159, // 120: octopus.TrainJob.config:type_name -> octopus.Config + 158, // 121: octopus.CreateTrainJobReq.params:type_name -> octopus.CreateTrainJobParam + 164, // 122: octopus.CreateTrainJobResp.payload:type_name -> octopus.PayloadCreateTrainJob + 167, // 123: octopus.CreateTrainJobResp.error:type_name -> octopus.Error + 159, // 124: octopus.CreateTrainJobParam.config:type_name -> octopus.Config + 163, // 125: octopus.CreateTrainJobParam.mounts:type_name -> octopus.Mounts + 160, // 126: octopus.Config.envs:type_name -> octopus.Envs + 161, // 127: octopus.Config.parameters:type_name -> octopus.Parameters + 162, // 128: octopus.Config.replicaStates:type_name -> octopus.ReplicaStates + 165, // 129: octopus.Mounts.nfs:type_name -> octopus.Nfs + 166, // 130: octopus.Mounts.octopus:type_name -> octopus.TrainJobOctopus + 0, // 131: octopus.Octopus.GetComputingPower:input_type -> octopus.resourceReq + 0, // 132: octopus.Octopus.GetGeneralInfo:input_type -> octopus.resourceReq + 22, // 133: octopus.Octopus.GetMyAlgorithmList:input_type -> octopus.GetMyAlgorithmListReq + 18, // 134: octopus.Octopus.GetAlgorithmList:input_type -> octopus.GetAlgorithmListReq + 3, // 135: octopus.Octopus.GetAlgorithm:input_type -> octopus.GetAlgorithmReq + 26, // 136: octopus.Octopus.GetAlgorithmApplyList:input_type -> octopus.GetAlgorithmApplyListReq + 29, // 137: octopus.Octopus.GetAlgorithmFrameworkList:input_type -> octopus.GetAlgorithmFrameworkListReq + 33, // 138: octopus.Octopus.DeleteMyAlgorithm:input_type -> octopus.DeleteMyAlgorithmReq + 36, // 139: octopus.Octopus.CreateMyAlgorithm:input_type -> octopus.CreateMyAlgorithmReq + 7, // 140: octopus.Octopus.DownloadAlgorithm:input_type -> octopus.DownloadAlgorithmReq + 10, // 141: octopus.Octopus.UploadAlgorithm:input_type -> octopus.UploadAlgorithmReq + 14, // 142: octopus.Octopus.UploadAlgorithmConfirm:input_type -> octopus.UploadAlgorithmConfirmReq + 48, // 143: octopus.Octopus.GetMyDatasetList:input_type -> octopus.GetMyDatasetListReq + 40, // 144: octopus.Octopus.GetDatasetVersionList:input_type -> octopus.GetDatasetVersionListReq + 44, // 145: octopus.Octopus.CreateDataSet:input_type -> octopus.CreateDataSetReq + 53, // 146: octopus.Octopus.DeleteDataSet:input_type -> octopus.DeleteDataSetReq + 56, // 147: octopus.Octopus.UploadDataSet:input_type -> octopus.UploadDataSetReq + 60, // 148: octopus.Octopus.UploadDataSetConfirm:input_type -> octopus.UploadDataSetConfirmReq + 64, // 149: octopus.Octopus.CreateDataSetVersion:input_type -> octopus.CreateDataSetVersionReq + 68, // 150: octopus.Octopus.DeleteDataSetVersion:input_type -> octopus.DeleteDataSetVersionReq + 71, // 151: octopus.Octopus.GetDatasetApplyList:input_type -> octopus.GetDatasetApplyListReq + 74, // 152: octopus.Octopus.GetDatasetTypeList:input_type -> octopus.GetDatasetTypeListRep + 87, // 153: octopus.Octopus.GetNotebookList:input_type -> octopus.GetNotebookListReq + 81, // 154: octopus.Octopus.GetNotebook:input_type -> octopus.GetNotebookReq + 84, // 155: octopus.Octopus.DeleteNotebook:input_type -> octopus.DeleteNotebookReq + 77, // 156: octopus.Octopus.CreateNotebook:input_type -> octopus.CreateNotebookReq + 92, // 157: octopus.Octopus.StartNotebook:input_type -> octopus.StartNotebookReq + 95, // 158: octopus.Octopus.StopNotebook:input_type -> octopus.StopNotebookReq + 98, // 159: octopus.Octopus.GetUserImageList:input_type -> octopus.GetUserImageListReq + 106, // 160: octopus.Octopus.CreateImage:input_type -> octopus.CreateImageReq + 103, // 161: octopus.Octopus.DeleteImage:input_type -> octopus.DeleteImageReq + 110, // 162: octopus.Octopus.UploadImage:input_type -> octopus.UploadImageReq + 115, // 163: octopus.Octopus.UploadImageConfirm:input_type -> octopus.UploadImageConfirmReq + 132, // 164: octopus.Octopus.GetMyModelList:input_type -> octopus.GetMyModelListReq + 118, // 165: octopus.Octopus.GetModelVersionList:input_type -> octopus.GetModelVersionListReq + 123, // 166: octopus.Octopus.DeleteMyModel:input_type -> octopus.DeleteMyModelReq + 126, // 167: octopus.Octopus.DeleteModelVersion:input_type -> octopus.DeleteModelVersionReq + 129, // 168: octopus.Octopus.DownloadModelVersion:input_type -> octopus.DownloadModelVersionReq + 156, // 169: octopus.Octopus.CreateTrainJob:input_type -> octopus.CreateTrainJobReq + 152, // 170: octopus.Octopus.GetTrainJobList:input_type -> octopus.GetTrainJobListReq + 136, // 171: octopus.Octopus.GetTrainJob:input_type -> octopus.GetTrainJobReq + 139, // 172: octopus.Octopus.DeleteTrainJob:input_type -> octopus.DeleteTrainJobReq + 142, // 173: octopus.Octopus.StopTrainJob:input_type -> octopus.StopTrainJobReq + 145, // 174: octopus.Octopus.GetTrainJobEvent:input_type -> octopus.GetTrainJobEventReq + 149, // 175: octopus.Octopus.GetTrainJobMetric:input_type -> octopus.GetTrainJobMetricReq + 1, // 176: octopus.Octopus.GetComputingPower:output_type -> octopus.cpResp + 2, // 177: octopus.Octopus.GetGeneralInfo:output_type -> octopus.giResp + 23, // 178: octopus.Octopus.GetMyAlgorithmList:output_type -> octopus.GetMyAlgorithmListResp + 19, // 179: octopus.Octopus.GetAlgorithmList:output_type -> octopus.GetAlgorithmListResp + 4, // 180: octopus.Octopus.GetAlgorithm:output_type -> octopus.GetAlgorithmResp + 27, // 181: octopus.Octopus.GetAlgorithmApplyList:output_type -> octopus.GetAlgorithmApplyListResp + 30, // 182: octopus.Octopus.GetAlgorithmFrameworkList:output_type -> octopus.GetAlgorithmFrameworkListResp + 34, // 183: octopus.Octopus.DeleteMyAlgorithm:output_type -> octopus.DeleteMyAlgorithmResp + 37, // 184: octopus.Octopus.CreateMyAlgorithm:output_type -> octopus.CreateMyAlgorithmResp + 8, // 185: octopus.Octopus.DownloadAlgorithm:output_type -> octopus.DownloadAlgorithmResp + 12, // 186: octopus.Octopus.UploadAlgorithm:output_type -> octopus.UploadAlgorithmResp + 16, // 187: octopus.Octopus.UploadAlgorithmConfirm:output_type -> octopus.UploadAlgorithmConfirmResp + 49, // 188: octopus.Octopus.GetMyDatasetList:output_type -> octopus.GetMyDatasetListResp + 41, // 189: octopus.Octopus.GetDatasetVersionList:output_type -> octopus.GetDatasetVersionListResp + 45, // 190: octopus.Octopus.CreateDataSet:output_type -> octopus.CreateDataSetResp + 54, // 191: octopus.Octopus.DeleteDataSet:output_type -> octopus.DeleteDataSetResp + 58, // 192: octopus.Octopus.UploadDataSet:output_type -> octopus.UploadDataSetResp + 62, // 193: octopus.Octopus.UploadDataSetConfirm:output_type -> octopus.UploadDataSetConfirmResp + 66, // 194: octopus.Octopus.CreateDataSetVersion:output_type -> octopus.CreateDataSetVersionResp + 69, // 195: octopus.Octopus.DeleteDataSetVersion:output_type -> octopus.DeleteDataSetVersionResp + 72, // 196: octopus.Octopus.GetDatasetApplyList:output_type -> octopus.GetDatasetApplyListResp + 75, // 197: octopus.Octopus.GetDatasetTypeList:output_type -> octopus.GetDatasetTypeListResp + 88, // 198: octopus.Octopus.GetNotebookList:output_type -> octopus.GetNotebookListResp + 82, // 199: octopus.Octopus.GetNotebook:output_type -> octopus.GetNotebookResp + 85, // 200: octopus.Octopus.DeleteNotebook:output_type -> octopus.DeleteNotebookResp + 79, // 201: octopus.Octopus.CreateNotebook:output_type -> octopus.CreateNotebookResp + 93, // 202: octopus.Octopus.StartNotebook:output_type -> octopus.StartNotebookResp + 96, // 203: octopus.Octopus.StopNotebook:output_type -> octopus.StopNotebookResp + 99, // 204: octopus.Octopus.GetUserImageList:output_type -> octopus.GetUserImageListResp + 108, // 205: octopus.Octopus.CreateImage:output_type -> octopus.CreateImageResp + 104, // 206: octopus.Octopus.DeleteImage:output_type -> octopus.DeleteImageResp + 112, // 207: octopus.Octopus.UploadImage:output_type -> octopus.UploadImageResp + 116, // 208: octopus.Octopus.UploadImageConfirm:output_type -> octopus.UploadImageConfirmResp + 133, // 209: octopus.Octopus.GetMyModelList:output_type -> octopus.GetMyModelListResp + 119, // 210: octopus.Octopus.GetModelVersionList:output_type -> octopus.GetModelVersionListResp + 124, // 211: octopus.Octopus.DeleteMyModel:output_type -> octopus.DeleteMyModelResp + 127, // 212: octopus.Octopus.DeleteModelVersion:output_type -> octopus.DeleteModelVersionResp + 130, // 213: octopus.Octopus.DownloadModelVersion:output_type -> octopus.DownloadModelVersionResp + 157, // 214: octopus.Octopus.CreateTrainJob:output_type -> octopus.CreateTrainJobResp + 153, // 215: octopus.Octopus.GetTrainJobList:output_type -> octopus.GetTrainJobListResp + 137, // 216: octopus.Octopus.GetTrainJob:output_type -> octopus.GetTrainJobResp + 140, // 217: octopus.Octopus.DeleteTrainJob:output_type -> octopus.DeleteTrainJobResp + 143, // 218: octopus.Octopus.StopTrainJob:output_type -> octopus.StopTrainJobResp + 146, // 219: octopus.Octopus.GetTrainJobEvent:output_type -> octopus.GetTrainJobEventResp + 150, // 220: octopus.Octopus.GetTrainJobMetric:output_type -> octopus.GetTrainJobMetricResp + 176, // [176:221] is the sub-list for method output_type + 131, // [131:176] is the sub-list for method input_type + 131, // [131:131] is the sub-list for extension type_name + 131, // [131:131] is the sub-list for extension extendee + 0, // [0:131] is the sub-list for field type_name } func init() { file_octopus_proto_init() } @@ -13429,7 +14566,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTrainJobListReq); i { + switch v := v.(*GetTrainJobReq); i { case 0: return &v.state case 1: @@ -13441,7 +14578,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTrainJobListResp); i { + switch v := v.(*GetTrainJobResp); i { case 0: return &v.state case 1: @@ -13453,7 +14590,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PayloadGetTrainJobList); i { + switch v := v.(*PayloadGetTrainJob); i { case 0: return &v.state case 1: @@ -13465,7 +14602,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TrainJob); i { + switch v := v.(*DeleteTrainJobReq); i { case 0: return &v.state case 1: @@ -13477,7 +14614,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTrainJobReq); i { + switch v := v.(*DeleteTrainJobResp); i { case 0: return &v.state case 1: @@ -13489,7 +14626,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTrainJobResp); i { + switch v := v.(*PayloadDeleteTrainJob); i { case 0: return &v.state case 1: @@ -13501,7 +14638,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTrainJobParam); i { + switch v := v.(*StopTrainJobReq); i { case 0: return &v.state case 1: @@ -13513,7 +14650,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Config); i { + switch v := v.(*StopTrainJobResp); i { case 0: return &v.state case 1: @@ -13525,7 +14662,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Envs); i { + switch v := v.(*PayloadStopTrainJob); i { case 0: return &v.state case 1: @@ -13537,7 +14674,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Parameters); i { + switch v := v.(*GetTrainJobEventReq); i { case 0: return &v.state case 1: @@ -13549,7 +14686,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReplicaStates); i { + switch v := v.(*GetTrainJobEventResp); i { case 0: return &v.state case 1: @@ -13561,7 +14698,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Mounts); i { + switch v := v.(*PayloadGetTrainJobEvent); i { case 0: return &v.state case 1: @@ -13573,7 +14710,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PayloadCreateTrainJob); i { + switch v := v.(*JobEvent); i { case 0: return &v.state case 1: @@ -13585,7 +14722,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Nfs); i { + switch v := v.(*GetTrainJobMetricReq); i { case 0: return &v.state case 1: @@ -13597,7 +14734,7 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TrainJobOctopus); i { + switch v := v.(*GetTrainJobMetricResp); i { case 0: return &v.state case 1: @@ -13609,6 +14746,198 @@ func file_octopus_proto_init() { } } file_octopus_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PayloadGetTrainJobMetric); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTrainJobListReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTrainJobListResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PayloadGetTrainJobList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TrainJob); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateTrainJobReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateTrainJobResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateTrainJobParam); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Envs); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Parameters); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReplicaStates); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Mounts); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PayloadCreateTrainJob); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Nfs); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TrainJobOctopus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_octopus_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Error); i { case 0: return &v.state @@ -13627,7 +14956,7 @@ func file_octopus_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_octopus_proto_rawDesc, NumEnums: 0, - NumMessages: 152, + NumMessages: 168, NumExtensions: 0, NumServices: 1, }, diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus_grpc.pb.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus_grpc.pb.go index 266558ab..3258a58d 100644 --- a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus_grpc.pb.go +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopus/octopus_grpc.pb.go @@ -68,6 +68,11 @@ type OctopusClient interface { // TrainJobService CreateTrainJob(ctx context.Context, in *CreateTrainJobReq, opts ...grpc.CallOption) (*CreateTrainJobResp, error) GetTrainJobList(ctx context.Context, in *GetTrainJobListReq, opts ...grpc.CallOption) (*GetTrainJobListResp, error) + GetTrainJob(ctx context.Context, in *GetTrainJobReq, opts ...grpc.CallOption) (*GetTrainJobResp, error) + DeleteTrainJob(ctx context.Context, in *DeleteTrainJobReq, opts ...grpc.CallOption) (*DeleteTrainJobResp, error) + StopTrainJob(ctx context.Context, in *StopTrainJobReq, opts ...grpc.CallOption) (*StopTrainJobResp, error) + GetTrainJobEvent(ctx context.Context, in *GetTrainJobEventReq, opts ...grpc.CallOption) (*GetTrainJobEventResp, error) + GetTrainJobMetric(ctx context.Context, in *GetTrainJobMetricReq, opts ...grpc.CallOption) (*GetTrainJobMetricResp, error) } type octopusClient struct { @@ -438,6 +443,51 @@ func (c *octopusClient) GetTrainJobList(ctx context.Context, in *GetTrainJobList return out, nil } +func (c *octopusClient) GetTrainJob(ctx context.Context, in *GetTrainJobReq, opts ...grpc.CallOption) (*GetTrainJobResp, error) { + out := new(GetTrainJobResp) + err := c.cc.Invoke(ctx, "/octopus.Octopus/GetTrainJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *octopusClient) DeleteTrainJob(ctx context.Context, in *DeleteTrainJobReq, opts ...grpc.CallOption) (*DeleteTrainJobResp, error) { + out := new(DeleteTrainJobResp) + err := c.cc.Invoke(ctx, "/octopus.Octopus/DeleteTrainJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *octopusClient) StopTrainJob(ctx context.Context, in *StopTrainJobReq, opts ...grpc.CallOption) (*StopTrainJobResp, error) { + out := new(StopTrainJobResp) + err := c.cc.Invoke(ctx, "/octopus.Octopus/StopTrainJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *octopusClient) GetTrainJobEvent(ctx context.Context, in *GetTrainJobEventReq, opts ...grpc.CallOption) (*GetTrainJobEventResp, error) { + out := new(GetTrainJobEventResp) + err := c.cc.Invoke(ctx, "/octopus.Octopus/GetTrainJobEvent", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *octopusClient) GetTrainJobMetric(ctx context.Context, in *GetTrainJobMetricReq, opts ...grpc.CallOption) (*GetTrainJobMetricResp, error) { + out := new(GetTrainJobMetricResp) + err := c.cc.Invoke(ctx, "/octopus.Octopus/GetTrainJobMetric", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // OctopusServer is the server API for Octopus service. // All implementations must embed UnimplementedOctopusServer // for forward compatibility @@ -488,6 +538,11 @@ type OctopusServer interface { // TrainJobService CreateTrainJob(context.Context, *CreateTrainJobReq) (*CreateTrainJobResp, error) GetTrainJobList(context.Context, *GetTrainJobListReq) (*GetTrainJobListResp, error) + GetTrainJob(context.Context, *GetTrainJobReq) (*GetTrainJobResp, error) + DeleteTrainJob(context.Context, *DeleteTrainJobReq) (*DeleteTrainJobResp, error) + StopTrainJob(context.Context, *StopTrainJobReq) (*StopTrainJobResp, error) + GetTrainJobEvent(context.Context, *GetTrainJobEventReq) (*GetTrainJobEventResp, error) + GetTrainJobMetric(context.Context, *GetTrainJobMetricReq) (*GetTrainJobMetricResp, error) mustEmbedUnimplementedOctopusServer() } @@ -615,6 +670,21 @@ func (UnimplementedOctopusServer) CreateTrainJob(context.Context, *CreateTrainJo func (UnimplementedOctopusServer) GetTrainJobList(context.Context, *GetTrainJobListReq) (*GetTrainJobListResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTrainJobList not implemented") } +func (UnimplementedOctopusServer) GetTrainJob(context.Context, *GetTrainJobReq) (*GetTrainJobResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTrainJob not implemented") +} +func (UnimplementedOctopusServer) DeleteTrainJob(context.Context, *DeleteTrainJobReq) (*DeleteTrainJobResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteTrainJob not implemented") +} +func (UnimplementedOctopusServer) StopTrainJob(context.Context, *StopTrainJobReq) (*StopTrainJobResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method StopTrainJob not implemented") +} +func (UnimplementedOctopusServer) GetTrainJobEvent(context.Context, *GetTrainJobEventReq) (*GetTrainJobEventResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTrainJobEvent not implemented") +} +func (UnimplementedOctopusServer) GetTrainJobMetric(context.Context, *GetTrainJobMetricReq) (*GetTrainJobMetricResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetTrainJobMetric not implemented") +} func (UnimplementedOctopusServer) mustEmbedUnimplementedOctopusServer() {} // UnsafeOctopusServer may be embedded to opt out of forward compatibility for this service. @@ -1348,6 +1418,96 @@ func _Octopus_GetTrainJobList_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Octopus_GetTrainJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTrainJobReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OctopusServer).GetTrainJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/octopus.Octopus/GetTrainJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OctopusServer).GetTrainJob(ctx, req.(*GetTrainJobReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Octopus_DeleteTrainJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteTrainJobReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OctopusServer).DeleteTrainJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/octopus.Octopus/DeleteTrainJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OctopusServer).DeleteTrainJob(ctx, req.(*DeleteTrainJobReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Octopus_StopTrainJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StopTrainJobReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OctopusServer).StopTrainJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/octopus.Octopus/StopTrainJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OctopusServer).StopTrainJob(ctx, req.(*StopTrainJobReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Octopus_GetTrainJobEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTrainJobEventReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OctopusServer).GetTrainJobEvent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/octopus.Octopus/GetTrainJobEvent", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OctopusServer).GetTrainJobEvent(ctx, req.(*GetTrainJobEventReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Octopus_GetTrainJobMetric_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTrainJobMetricReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OctopusServer).GetTrainJobMetric(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/octopus.Octopus/GetTrainJobMetric", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OctopusServer).GetTrainJobMetric(ctx, req.(*GetTrainJobMetricReq)) + } + return interceptor(ctx, in, info, handler) +} + // Octopus_ServiceDesc is the grpc.ServiceDesc for Octopus service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -1515,6 +1675,26 @@ var Octopus_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetTrainJobList", Handler: _Octopus_GetTrainJobList_Handler, }, + { + MethodName: "GetTrainJob", + Handler: _Octopus_GetTrainJob_Handler, + }, + { + MethodName: "DeleteTrainJob", + Handler: _Octopus_DeleteTrainJob_Handler, + }, + { + MethodName: "StopTrainJob", + Handler: _Octopus_StopTrainJob_Handler, + }, + { + MethodName: "GetTrainJobEvent", + Handler: _Octopus_GetTrainJobEvent_Handler, + }, + { + MethodName: "GetTrainJobMetric", + Handler: _Octopus_GetTrainJobMetric_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "octopus.proto", diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopusclient/octopus.go b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopusclient/octopus.go index 48c35ee1..b7ae7d8f 100644 --- a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopusclient/octopus.go +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/octopusclient/octopus.go @@ -52,6 +52,8 @@ type ( DeleteMyModelResp = octopus.DeleteMyModelResp DeleteNotebookReq = octopus.DeleteNotebookReq DeleteNotebookResp = octopus.DeleteNotebookResp + DeleteTrainJobReq = octopus.DeleteTrainJobReq + DeleteTrainJobResp = octopus.DeleteTrainJobResp DownloadAlgorithmReq = octopus.DownloadAlgorithmReq DownloadAlgorithmResp = octopus.DownloadAlgorithmResp DownloadModelVersionReq = octopus.DownloadModelVersionReq @@ -84,14 +86,21 @@ type ( GetNotebookListResp = octopus.GetNotebookListResp GetNotebookReq = octopus.GetNotebookReq GetNotebookResp = octopus.GetNotebookResp + GetTrainJobEventReq = octopus.GetTrainJobEventReq + GetTrainJobEventResp = octopus.GetTrainJobEventResp GetTrainJobListReq = octopus.GetTrainJobListReq GetTrainJobListResp = octopus.GetTrainJobListResp + GetTrainJobMetricReq = octopus.GetTrainJobMetricReq + GetTrainJobMetricResp = octopus.GetTrainJobMetricResp + GetTrainJobReq = octopus.GetTrainJobReq + GetTrainJobResp = octopus.GetTrainJobResp GetUserImageListReq = octopus.GetUserImageListReq GetUserImageListResp = octopus.GetUserImageListResp GiResp = octopus.GiResp Headers = octopus.Headers Image = octopus.Image Images = octopus.Images + JobEvent = octopus.JobEvent Lables = octopus.Lables Model = octopus.Model ModelVersion = octopus.ModelVersion @@ -114,6 +123,7 @@ type ( PayloadDeleteMyAlgorithm = octopus.PayloadDeleteMyAlgorithm PayloadDeleteMyModel = octopus.PayloadDeleteMyModel PayloadDeleteNotebook = octopus.PayloadDeleteNotebook + PayloadDeleteTrainJob = octopus.PayloadDeleteTrainJob PayloadDownloadAlgorithm = octopus.PayloadDownloadAlgorithm PayloadDownloadModelVersion = octopus.PayloadDownloadModelVersion PayloadGetAlgorithm = octopus.PayloadGetAlgorithm @@ -124,12 +134,16 @@ type ( PayloadGetModelVersionList = octopus.PayloadGetModelVersionList PayloadGetMyModelList = octopus.PayloadGetMyModelList PayloadGetNotebook = octopus.PayloadGetNotebook + PayloadGetTrainJob = octopus.PayloadGetTrainJob + PayloadGetTrainJobEvent = octopus.PayloadGetTrainJobEvent PayloadGetTrainJobList = octopus.PayloadGetTrainJobList + PayloadGetTrainJobMetric = octopus.PayloadGetTrainJobMetric PayloadMyAlgorithmList = octopus.PayloadMyAlgorithmList PayloadMyDatasetList = octopus.PayloadMyDatasetList PayloadNotebookList = octopus.PayloadNotebookList PayloadStartNotebook = octopus.PayloadStartNotebook PayloadStopNotebook = octopus.PayloadStopNotebook + PayloadStopTrainJob = octopus.PayloadStopTrainJob PayloadUploadAlgorithm = octopus.PayloadUploadAlgorithm PayloadUploadAlgorithmConfirm = octopus.PayloadUploadAlgorithmConfirm PayloadUploadDataSet = octopus.PayloadUploadDataSet @@ -143,6 +157,8 @@ type ( StartNotebookResp = octopus.StartNotebookResp StopNotebookReq = octopus.StopNotebookReq StopNotebookResp = octopus.StopNotebookResp + StopTrainJobReq = octopus.StopTrainJobReq + StopTrainJobResp = octopus.StopTrainJobResp Tasks = octopus.Tasks TrainJob = octopus.TrainJob TrainJobOctopus = octopus.TrainJobOctopus @@ -213,6 +229,11 @@ type ( // TrainJobService CreateTrainJob(ctx context.Context, in *CreateTrainJobReq, opts ...grpc.CallOption) (*CreateTrainJobResp, error) GetTrainJobList(ctx context.Context, in *GetTrainJobListReq, opts ...grpc.CallOption) (*GetTrainJobListResp, error) + GetTrainJob(ctx context.Context, in *GetTrainJobReq, opts ...grpc.CallOption) (*GetTrainJobResp, error) + DeleteTrainJob(ctx context.Context, in *DeleteTrainJobReq, opts ...grpc.CallOption) (*DeleteTrainJobResp, error) + StopTrainJob(ctx context.Context, in *StopTrainJobReq, opts ...grpc.CallOption) (*StopTrainJobResp, error) + GetTrainJobEvent(ctx context.Context, in *GetTrainJobEventReq, opts ...grpc.CallOption) (*GetTrainJobEventResp, error) + GetTrainJobMetric(ctx context.Context, in *GetTrainJobMetricReq, opts ...grpc.CallOption) (*GetTrainJobMetricResp, error) } defaultOctopus struct { @@ -431,3 +452,28 @@ func (m *defaultOctopus) GetTrainJobList(ctx context.Context, in *GetTrainJobLis client := octopus.NewOctopusClient(m.cli.Conn()) return client.GetTrainJobList(ctx, in, opts...) } + +func (m *defaultOctopus) GetTrainJob(ctx context.Context, in *GetTrainJobReq, opts ...grpc.CallOption) (*GetTrainJobResp, error) { + client := octopus.NewOctopusClient(m.cli.Conn()) + return client.GetTrainJob(ctx, in, opts...) +} + +func (m *defaultOctopus) DeleteTrainJob(ctx context.Context, in *DeleteTrainJobReq, opts ...grpc.CallOption) (*DeleteTrainJobResp, error) { + client := octopus.NewOctopusClient(m.cli.Conn()) + return client.DeleteTrainJob(ctx, in, opts...) +} + +func (m *defaultOctopus) StopTrainJob(ctx context.Context, in *StopTrainJobReq, opts ...grpc.CallOption) (*StopTrainJobResp, error) { + client := octopus.NewOctopusClient(m.cli.Conn()) + return client.StopTrainJob(ctx, in, opts...) +} + +func (m *defaultOctopus) GetTrainJobEvent(ctx context.Context, in *GetTrainJobEventReq, opts ...grpc.CallOption) (*GetTrainJobEventResp, error) { + client := octopus.NewOctopusClient(m.cli.Conn()) + return client.GetTrainJobEvent(ctx, in, opts...) +} + +func (m *defaultOctopus) GetTrainJobMetric(ctx context.Context, in *GetTrainJobMetricReq, opts ...grpc.CallOption) (*GetTrainJobMetricResp, error) { + client := octopus.NewOctopusClient(m.cli.Conn()) + return client.GetTrainJobMetric(ctx, in, opts...) +} diff --git a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/pb/octopus.proto b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/pb/octopus.proto index f466ef9f..c567189e 100644 --- a/adaptor/PCM-AI/PCM-OCTOPUS/rpc/pb/octopus.proto +++ b/adaptor/PCM-AI/PCM-OCTOPUS/rpc/pb/octopus.proto @@ -848,6 +848,97 @@ message Model{ /******************Model End*************************/ /******************TrainJobService Start*************************/ +message GetTrainJobReq{ + string platform =1; + string id =2; +} + +message GetTrainJobResp{ + bool success =1; + PayloadGetTrainJob payload =2; + Error error = 3; +} + +message PayloadGetTrainJob{ + TrainJob trainJob = 1; +} + +message DeleteTrainJobReq{ + string platform =1; + repeated string jobIds = 2; +} + +message DeleteTrainJobResp{ + bool success =1; + PayloadDeleteTrainJob payload =2; + Error error = 3; +} + +message PayloadDeleteTrainJob{ + int64 deletedAt = 1; +} + +message StopTrainJobReq{ + string platform =1; + string id =2; +} + +message StopTrainJobResp{ + bool success =1; + PayloadStopTrainJob payload =2; + Error error = 3; +} + +message PayloadStopTrainJob{ + int64 stoppedAt = 1; +} + +message GetTrainJobEventReq{ + string platform =1; + string id =2; + int32 pageIndex =3; + int32 pageSize =4; +} + +message GetTrainJobEventResp{ + bool success =1; + PayloadGetTrainJobEvent payload =2; + Error error = 3; +} + +message PayloadGetTrainJobEvent{ + int32 totalSize = 1; + repeated JobEvent jobEvents = 2; +} + +message JobEvent{ + string message = 1; + string name = 2; + string reason = 3; + string timestamp = 4; +} + +message GetTrainJobMetricReq{ + string platform =1; + string id =2; + int64 start = 3; + int32 size = 4; + int32 step = 5; +} + +message GetTrainJobMetricResp{ + bool success =1; + PayloadGetTrainJobMetric payload =2; + Error error = 3; +} + +message PayloadGetTrainJobMetric{ + repeated int64 cpuUsage = 1; + repeated int64 gpuMemUsage = 2; + repeated int64 gpuUtil = 3; + repeated int64 memUsage = 4; +} + message GetTrainJobListReq{ string platform =1; int32 pageIndex =2; @@ -1046,5 +1137,14 @@ service Octopus { //TrainJobService rpc CreateTrainJob(CreateTrainJobReq) returns (CreateTrainJobResp); rpc GetTrainJobList(GetTrainJobListReq) returns (GetTrainJobListResp); + rpc GetTrainJob(GetTrainJobReq) returns (GetTrainJobResp); + rpc DeleteTrainJob(DeleteTrainJobReq) returns (DeleteTrainJobResp); + rpc StopTrainJob(StopTrainJobReq) returns (StopTrainJobResp); + rpc GetTrainJobEvent(GetTrainJobEventReq) returns (GetTrainJobEventResp); + rpc GetTrainJobMetric(GetTrainJobMetricReq) returns (GetTrainJobMetricResp); + + + + } \ No newline at end of file