Repository: akuity/kargo

Issue:
feat: there's currently nowhere to view or edit the ProjectConfiguration CR


Discussion:
@krancour: Closed by #4036

Solution patch:
diff --git a/api/service/v1alpha1/service.pb.go b/api/service/v1alpha1/service.pb.go
index 2f9153d3..e0d88f17 100644
--- a/api/service/v1alpha1/service.pb.go
+++ b/api/service/v1alpha1/service.pb.go
@@ -2817,6 +2817,142 @@ func (*DeleteProjectResponse) Descriptor() ([]byte, []int) {
 	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{49}
 }
 
+type GetProjectConfigRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name   string    `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Format RawFormat `protobuf:"varint,2,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"`
+}
+
+func (x *GetProjectConfigRequest) Reset() {
+	*x = GetProjectConfigRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[50]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetProjectConfigRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetProjectConfigRequest) ProtoMessage() {}
+
+func (x *GetProjectConfigRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[50]
+	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 GetProjectConfigRequest.ProtoReflect.Descriptor instead.
+func (*GetProjectConfigRequest) Descriptor() ([]byte, []int) {
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{50}
+}
+
+func (x *GetProjectConfigRequest) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
+}
+
+func (x *GetProjectConfigRequest) GetFormat() RawFormat {
+	if x != nil {
+		return x.Format
+	}
+	return RawFormat_RAW_FORMAT_UNSPECIFIED
+}
+
+type GetProjectConfigResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Result:
+	//
+	//	*GetProjectConfigResponse_ProjectConfig
+	//	*GetProjectConfigResponse_Raw
+	Result isGetProjectConfigResponse_Result `protobuf_oneof:"result"`
+}
+
+func (x *GetProjectConfigResponse) Reset() {
+	*x = GetProjectConfigResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[51]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetProjectConfigResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetProjectConfigResponse) ProtoMessage() {}
+
+func (x *GetProjectConfigResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[51]
+	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 GetProjectConfigResponse.ProtoReflect.Descriptor instead.
+func (*GetProjectConfigResponse) Descriptor() ([]byte, []int) {
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{51}
+}
+
+func (m *GetProjectConfigResponse) GetResult() isGetProjectConfigResponse_Result {
+	if m != nil {
+		return m.Result
+	}
+	return nil
+}
+
+func (x *GetProjectConfigResponse) GetProjectConfig() *v1alpha1.ProjectConfig {
+	if x, ok := x.GetResult().(*GetProjectConfigResponse_ProjectConfig); ok {
+		return x.ProjectConfig
+	}
+	return nil
+}
+
+func (x *GetProjectConfigResponse) GetRaw() []byte {
+	if x, ok := x.GetResult().(*GetProjectConfigResponse_Raw); ok {
+		return x.Raw
+	}
+	return nil
+}
+
+type isGetProjectConfigResponse_Result interface {
+	isGetProjectConfigResponse_Result()
+}
+
+type GetProjectConfigResponse_ProjectConfig struct {
+	ProjectConfig *v1alpha1.ProjectConfig `protobuf:"bytes,1,opt,name=project_config,json=projectConfig,proto3,oneof"`
+}
+
+type GetProjectConfigResponse_Raw struct {
+	Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"`
+}
+
+func (*GetProjectConfigResponse_ProjectConfig) isGetProjectConfigResponse_Result() {}
+
+func (*GetProjectConfigResponse_Raw) isGetProjectConfigResponse_Result() {}
+
 type GetProjectRequest struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -2829,7 +2965,7 @@ type GetProjectRequest struct {
 func (x *GetProjectRequest) Reset() {
 	*x = GetProjectRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[50]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[52]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -2842,7 +2978,7 @@ func (x *GetProjectRequest) String() string {
 func (*GetProjectRequest) ProtoMessage() {}
 
 func (x *GetProjectRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[50]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[52]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2855,7 +2991,7 @@ func (x *GetProjectRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetProjectRequest.ProtoReflect.Descriptor instead.
 func (*GetProjectRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{50}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{52}
 }
 
 func (x *GetProjectRequest) GetName() string {
@@ -2887,7 +3023,7 @@ type GetProjectResponse struct {
 func (x *GetProjectResponse) Reset() {
 	*x = GetProjectResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[51]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[53]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -2900,7 +3036,7 @@ func (x *GetProjectResponse) String() string {
 func (*GetProjectResponse) ProtoMessage() {}
 
 func (x *GetProjectResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[51]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[53]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2913,7 +3049,7 @@ func (x *GetProjectResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetProjectResponse.ProtoReflect.Descriptor instead.
 func (*GetProjectResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{51}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{53}
 }
 
 func (m *GetProjectResponse) GetResult() isGetProjectResponse_Result {
@@ -2966,7 +3102,7 @@ type ListProjectsRequest struct {
 func (x *ListProjectsRequest) Reset() {
 	*x = ListProjectsRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[52]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[54]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -2979,7 +3115,7 @@ func (x *ListProjectsRequest) String() string {
 func (*ListProjectsRequest) ProtoMessage() {}
 
 func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[52]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[54]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2992,7 +3128,7 @@ func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListProjectsRequest.ProtoReflect.Descriptor instead.
 func (*ListProjectsRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{52}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{54}
 }
 
 func (x *ListProjectsRequest) GetPageSize() int32 {
@@ -3028,7 +3164,7 @@ type ListProjectsResponse struct {
 func (x *ListProjectsResponse) Reset() {
 	*x = ListProjectsResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[53]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[55]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3041,7 +3177,7 @@ func (x *ListProjectsResponse) String() string {
 func (*ListProjectsResponse) ProtoMessage() {}
 
 func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[53]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[55]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3054,7 +3190,7 @@ func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListProjectsResponse.ProtoReflect.Descriptor instead.
 func (*ListProjectsResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{53}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{55}
 }
 
 func (x *ListProjectsResponse) GetProjects() []*v1alpha1.Project {
@@ -3085,7 +3221,7 @@ type ApproveFreightRequest struct {
 func (x *ApproveFreightRequest) Reset() {
 	*x = ApproveFreightRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[54]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[56]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3098,7 +3234,7 @@ func (x *ApproveFreightRequest) String() string {
 func (*ApproveFreightRequest) ProtoMessage() {}
 
 func (x *ApproveFreightRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[54]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[56]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3111,7 +3247,7 @@ func (x *ApproveFreightRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ApproveFreightRequest.ProtoReflect.Descriptor instead.
 func (*ApproveFreightRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{54}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{56}
 }
 
 func (x *ApproveFreightRequest) GetProject() string {
@@ -3151,7 +3287,7 @@ type ApproveFreightResponse struct {
 func (x *ApproveFreightResponse) Reset() {
 	*x = ApproveFreightResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[55]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[57]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3164,7 +3300,7 @@ func (x *ApproveFreightResponse) String() string {
 func (*ApproveFreightResponse) ProtoMessage() {}
 
 func (x *ApproveFreightResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[55]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[57]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3177,7 +3313,7 @@ func (x *ApproveFreightResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ApproveFreightResponse.ProtoReflect.Descriptor instead.
 func (*ApproveFreightResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{55}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{57}
 }
 
 type DeleteFreightRequest struct {
@@ -3193,7 +3329,7 @@ type DeleteFreightRequest struct {
 func (x *DeleteFreightRequest) Reset() {
 	*x = DeleteFreightRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[56]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[58]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3206,7 +3342,7 @@ func (x *DeleteFreightRequest) String() string {
 func (*DeleteFreightRequest) ProtoMessage() {}
 
 func (x *DeleteFreightRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[56]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[58]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3219,7 +3355,7 @@ func (x *DeleteFreightRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DeleteFreightRequest.ProtoReflect.Descriptor instead.
 func (*DeleteFreightRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{56}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{58}
 }
 
 func (x *DeleteFreightRequest) GetProject() string {
@@ -3252,7 +3388,7 @@ type DeleteFreightResponse struct {
 func (x *DeleteFreightResponse) Reset() {
 	*x = DeleteFreightResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[57]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[59]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3265,7 +3401,7 @@ func (x *DeleteFreightResponse) String() string {
 func (*DeleteFreightResponse) ProtoMessage() {}
 
 func (x *DeleteFreightResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[57]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[59]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3278,7 +3414,7 @@ func (x *DeleteFreightResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DeleteFreightResponse.ProtoReflect.Descriptor instead.
 func (*DeleteFreightResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{57}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{59}
 }
 
 type GetFreightRequest struct {
@@ -3295,7 +3431,7 @@ type GetFreightRequest struct {
 func (x *GetFreightRequest) Reset() {
 	*x = GetFreightRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[58]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[60]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3308,7 +3444,7 @@ func (x *GetFreightRequest) String() string {
 func (*GetFreightRequest) ProtoMessage() {}
 
 func (x *GetFreightRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[58]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[60]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3321,7 +3457,7 @@ func (x *GetFreightRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetFreightRequest.ProtoReflect.Descriptor instead.
 func (*GetFreightRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{58}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{60}
 }
 
 func (x *GetFreightRequest) GetProject() string {
@@ -3367,7 +3503,7 @@ type GetFreightResponse struct {
 func (x *GetFreightResponse) Reset() {
 	*x = GetFreightResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[59]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[61]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3380,7 +3516,7 @@ func (x *GetFreightResponse) String() string {
 func (*GetFreightResponse) ProtoMessage() {}
 
 func (x *GetFreightResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[59]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[61]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3393,7 +3529,7 @@ func (x *GetFreightResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetFreightResponse.ProtoReflect.Descriptor instead.
 func (*GetFreightResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{59}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{61}
 }
 
 func (m *GetFreightResponse) GetResult() isGetFreightResponse_Result {
@@ -3447,7 +3583,7 @@ type PromoteToStageRequest struct {
 func (x *PromoteToStageRequest) Reset() {
 	*x = PromoteToStageRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[60]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[62]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3460,7 +3596,7 @@ func (x *PromoteToStageRequest) String() string {
 func (*PromoteToStageRequest) ProtoMessage() {}
 
 func (x *PromoteToStageRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[60]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[62]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3473,7 +3609,7 @@ func (x *PromoteToStageRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use PromoteToStageRequest.ProtoReflect.Descriptor instead.
 func (*PromoteToStageRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{60}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{62}
 }
 
 func (x *PromoteToStageRequest) GetProject() string {
@@ -3515,7 +3651,7 @@ type PromoteToStageResponse struct {
 func (x *PromoteToStageResponse) Reset() {
 	*x = PromoteToStageResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[61]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[63]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3528,7 +3664,7 @@ func (x *PromoteToStageResponse) String() string {
 func (*PromoteToStageResponse) ProtoMessage() {}
 
 func (x *PromoteToStageResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[61]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[63]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3541,7 +3677,7 @@ func (x *PromoteToStageResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use PromoteToStageResponse.ProtoReflect.Descriptor instead.
 func (*PromoteToStageResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{61}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{63}
 }
 
 func (x *PromoteToStageResponse) GetPromotion() *v1alpha1.Promotion {
@@ -3565,7 +3701,7 @@ type PromoteDownstreamRequest struct {
 func (x *PromoteDownstreamRequest) Reset() {
 	*x = PromoteDownstreamRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[62]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[64]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3578,7 +3714,7 @@ func (x *PromoteDownstreamRequest) String() string {
 func (*PromoteDownstreamRequest) ProtoMessage() {}
 
 func (x *PromoteDownstreamRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[62]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[64]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3591,7 +3727,7 @@ func (x *PromoteDownstreamRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use PromoteDownstreamRequest.ProtoReflect.Descriptor instead.
 func (*PromoteDownstreamRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{62}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{64}
 }
 
 func (x *PromoteDownstreamRequest) GetProject() string {
@@ -3633,7 +3769,7 @@ type PromoteDownstreamResponse struct {
 func (x *PromoteDownstreamResponse) Reset() {
 	*x = PromoteDownstreamResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[63]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[65]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3646,7 +3782,7 @@ func (x *PromoteDownstreamResponse) String() string {
 func (*PromoteDownstreamResponse) ProtoMessage() {}
 
 func (x *PromoteDownstreamResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[63]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[65]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3659,7 +3795,7 @@ func (x *PromoteDownstreamResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use PromoteDownstreamResponse.ProtoReflect.Descriptor instead.
 func (*PromoteDownstreamResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{63}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{65}
 }
 
 func (x *PromoteDownstreamResponse) GetPromotions() []*v1alpha1.Promotion {
@@ -3686,7 +3822,7 @@ type QueryFreightRequest struct {
 func (x *QueryFreightRequest) Reset() {
 	*x = QueryFreightRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[64]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[66]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3699,7 +3835,7 @@ func (x *QueryFreightRequest) String() string {
 func (*QueryFreightRequest) ProtoMessage() {}
 
 func (x *QueryFreightRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[64]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[66]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3712,7 +3848,7 @@ func (x *QueryFreightRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use QueryFreightRequest.ProtoReflect.Descriptor instead.
 func (*QueryFreightRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{64}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{66}
 }
 
 func (x *QueryFreightRequest) GetProject() string {
@@ -3775,7 +3911,7 @@ type QueryFreightResponse struct {
 func (x *QueryFreightResponse) Reset() {
 	*x = QueryFreightResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[65]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[67]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3788,7 +3924,7 @@ func (x *QueryFreightResponse) String() string {
 func (*QueryFreightResponse) ProtoMessage() {}
 
 func (x *QueryFreightResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[65]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[67]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3801,7 +3937,7 @@ func (x *QueryFreightResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use QueryFreightResponse.ProtoReflect.Descriptor instead.
 func (*QueryFreightResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{65}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{67}
 }
 
 func (x *QueryFreightResponse) GetGroups() map[string]*FreightList {
@@ -3822,7 +3958,7 @@ type FreightList struct {
 func (x *FreightList) Reset() {
 	*x = FreightList{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[66]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[68]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3835,7 +3971,7 @@ func (x *FreightList) String() string {
 func (*FreightList) ProtoMessage() {}
 
 func (x *FreightList) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[66]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[68]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3848,7 +3984,7 @@ func (x *FreightList) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use FreightList.ProtoReflect.Descriptor instead.
 func (*FreightList) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{66}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{68}
 }
 
 func (x *FreightList) GetFreight() []*v1alpha1.Freight {
@@ -3872,7 +4008,7 @@ type UpdateFreightAliasRequest struct {
 func (x *UpdateFreightAliasRequest) Reset() {
 	*x = UpdateFreightAliasRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[67]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[69]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3885,7 +4021,7 @@ func (x *UpdateFreightAliasRequest) String() string {
 func (*UpdateFreightAliasRequest) ProtoMessage() {}
 
 func (x *UpdateFreightAliasRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[67]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[69]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3898,7 +4034,7 @@ func (x *UpdateFreightAliasRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use UpdateFreightAliasRequest.ProtoReflect.Descriptor instead.
 func (*UpdateFreightAliasRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{67}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{69}
 }
 
 func (x *UpdateFreightAliasRequest) GetProject() string {
@@ -3938,7 +4074,7 @@ type UpdateFreightAliasResponse struct {
 func (x *UpdateFreightAliasResponse) Reset() {
 	*x = UpdateFreightAliasResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[68]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[70]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3951,7 +4087,7 @@ func (x *UpdateFreightAliasResponse) String() string {
 func (*UpdateFreightAliasResponse) ProtoMessage() {}
 
 func (x *UpdateFreightAliasResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[68]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[70]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -3964,7 +4100,7 @@ func (x *UpdateFreightAliasResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use UpdateFreightAliasResponse.ProtoReflect.Descriptor instead.
 func (*UpdateFreightAliasResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{68}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{70}
 }
 
 type ReverifyRequest struct {
@@ -3979,7 +4115,7 @@ type ReverifyRequest struct {
 func (x *ReverifyRequest) Reset() {
 	*x = ReverifyRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[69]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[71]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -3992,7 +4128,7 @@ func (x *ReverifyRequest) String() string {
 func (*ReverifyRequest) ProtoMessage() {}
 
 func (x *ReverifyRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[69]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[71]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4005,7 +4141,7 @@ func (x *ReverifyRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ReverifyRequest.ProtoReflect.Descriptor instead.
 func (*ReverifyRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{69}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{71}
 }
 
 func (x *ReverifyRequest) GetProject() string {
@@ -4031,7 +4167,7 @@ type ReverifyResponse struct {
 func (x *ReverifyResponse) Reset() {
 	*x = ReverifyResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[70]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[72]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4044,7 +4180,7 @@ func (x *ReverifyResponse) String() string {
 func (*ReverifyResponse) ProtoMessage() {}
 
 func (x *ReverifyResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[70]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[72]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4057,7 +4193,7 @@ func (x *ReverifyResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ReverifyResponse.ProtoReflect.Descriptor instead.
 func (*ReverifyResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{70}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{72}
 }
 
 type AbortVerificationRequest struct {
@@ -4072,7 +4208,7 @@ type AbortVerificationRequest struct {
 func (x *AbortVerificationRequest) Reset() {
 	*x = AbortVerificationRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[71]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[73]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4085,7 +4221,7 @@ func (x *AbortVerificationRequest) String() string {
 func (*AbortVerificationRequest) ProtoMessage() {}
 
 func (x *AbortVerificationRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[71]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[73]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4098,7 +4234,7 @@ func (x *AbortVerificationRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use AbortVerificationRequest.ProtoReflect.Descriptor instead.
 func (*AbortVerificationRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{71}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{73}
 }
 
 func (x *AbortVerificationRequest) GetProject() string {
@@ -4124,7 +4260,7 @@ type AbortVerificationResponse struct {
 func (x *AbortVerificationResponse) Reset() {
 	*x = AbortVerificationResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[72]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[74]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4137,7 +4273,7 @@ func (x *AbortVerificationResponse) String() string {
 func (*AbortVerificationResponse) ProtoMessage() {}
 
 func (x *AbortVerificationResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[72]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[74]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4150,7 +4286,7 @@ func (x *AbortVerificationResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use AbortVerificationResponse.ProtoReflect.Descriptor instead.
 func (*AbortVerificationResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{72}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{74}
 }
 
 type ListWarehousesRequest struct {
@@ -4164,7 +4300,7 @@ type ListWarehousesRequest struct {
 func (x *ListWarehousesRequest) Reset() {
 	*x = ListWarehousesRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[73]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[75]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4177,7 +4313,7 @@ func (x *ListWarehousesRequest) String() string {
 func (*ListWarehousesRequest) ProtoMessage() {}
 
 func (x *ListWarehousesRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[73]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[75]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4190,7 +4326,7 @@ func (x *ListWarehousesRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListWarehousesRequest.ProtoReflect.Descriptor instead.
 func (*ListWarehousesRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{73}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{75}
 }
 
 func (x *ListWarehousesRequest) GetProject() string {
@@ -4211,7 +4347,7 @@ type ListWarehousesResponse struct {
 func (x *ListWarehousesResponse) Reset() {
 	*x = ListWarehousesResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[74]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[76]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4224,7 +4360,7 @@ func (x *ListWarehousesResponse) String() string {
 func (*ListWarehousesResponse) ProtoMessage() {}
 
 func (x *ListWarehousesResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[74]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[76]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4237,7 +4373,7 @@ func (x *ListWarehousesResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListWarehousesResponse.ProtoReflect.Descriptor instead.
 func (*ListWarehousesResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{74}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{76}
 }
 
 func (x *ListWarehousesResponse) GetWarehouses() []*v1alpha1.Warehouse {
@@ -4260,7 +4396,7 @@ type GetWarehouseRequest struct {
 func (x *GetWarehouseRequest) Reset() {
 	*x = GetWarehouseRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[75]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[77]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4273,7 +4409,7 @@ func (x *GetWarehouseRequest) String() string {
 func (*GetWarehouseRequest) ProtoMessage() {}
 
 func (x *GetWarehouseRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[75]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[77]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4286,7 +4422,7 @@ func (x *GetWarehouseRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetWarehouseRequest.ProtoReflect.Descriptor instead.
 func (*GetWarehouseRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{75}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{77}
 }
 
 func (x *GetWarehouseRequest) GetProject() string {
@@ -4325,7 +4461,7 @@ type GetWarehouseResponse struct {
 func (x *GetWarehouseResponse) Reset() {
 	*x = GetWarehouseResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[76]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[78]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4338,7 +4474,7 @@ func (x *GetWarehouseResponse) String() string {
 func (*GetWarehouseResponse) ProtoMessage() {}
 
 func (x *GetWarehouseResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[76]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[78]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4351,7 +4487,7 @@ func (x *GetWarehouseResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetWarehouseResponse.ProtoReflect.Descriptor instead.
 func (*GetWarehouseResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{76}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{78}
 }
 
 func (m *GetWarehouseResponse) GetResult() isGetWarehouseResponse_Result {
@@ -4403,7 +4539,7 @@ type WatchWarehousesRequest struct {
 func (x *WatchWarehousesRequest) Reset() {
 	*x = WatchWarehousesRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[77]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[79]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4416,7 +4552,7 @@ func (x *WatchWarehousesRequest) String() string {
 func (*WatchWarehousesRequest) ProtoMessage() {}
 
 func (x *WatchWarehousesRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[77]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[79]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4429,7 +4565,7 @@ func (x *WatchWarehousesRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use WatchWarehousesRequest.ProtoReflect.Descriptor instead.
 func (*WatchWarehousesRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{77}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{79}
 }
 
 func (x *WatchWarehousesRequest) GetProject() string {
@@ -4458,7 +4594,7 @@ type WatchWarehousesResponse struct {
 func (x *WatchWarehousesResponse) Reset() {
 	*x = WatchWarehousesResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[78]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[80]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4471,7 +4607,7 @@ func (x *WatchWarehousesResponse) String() string {
 func (*WatchWarehousesResponse) ProtoMessage() {}
 
 func (x *WatchWarehousesResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[78]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[80]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4484,7 +4620,7 @@ func (x *WatchWarehousesResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use WatchWarehousesResponse.ProtoReflect.Descriptor instead.
 func (*WatchWarehousesResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{78}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{80}
 }
 
 func (x *WatchWarehousesResponse) GetWarehouse() *v1alpha1.Warehouse {
@@ -4513,7 +4649,7 @@ type DeleteWarehouseRequest struct {
 func (x *DeleteWarehouseRequest) Reset() {
 	*x = DeleteWarehouseRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[79]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[81]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4526,7 +4662,7 @@ func (x *DeleteWarehouseRequest) String() string {
 func (*DeleteWarehouseRequest) ProtoMessage() {}
 
 func (x *DeleteWarehouseRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[79]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[81]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4539,7 +4675,7 @@ func (x *DeleteWarehouseRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DeleteWarehouseRequest.ProtoReflect.Descriptor instead.
 func (*DeleteWarehouseRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{79}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{81}
 }
 
 func (x *DeleteWarehouseRequest) GetProject() string {
@@ -4565,7 +4701,7 @@ type DeleteWarehouseResponse struct {
 func (x *DeleteWarehouseResponse) Reset() {
 	*x = DeleteWarehouseResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[80]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[82]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4578,7 +4714,7 @@ func (x *DeleteWarehouseResponse) String() string {
 func (*DeleteWarehouseResponse) ProtoMessage() {}
 
 func (x *DeleteWarehouseResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[80]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[82]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4591,7 +4727,7 @@ func (x *DeleteWarehouseResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DeleteWarehouseResponse.ProtoReflect.Descriptor instead.
 func (*DeleteWarehouseResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{80}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{82}
 }
 
 type RefreshWarehouseRequest struct {
@@ -4606,7 +4742,7 @@ type RefreshWarehouseRequest struct {
 func (x *RefreshWarehouseRequest) Reset() {
 	*x = RefreshWarehouseRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[81]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[83]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4619,7 +4755,7 @@ func (x *RefreshWarehouseRequest) String() string {
 func (*RefreshWarehouseRequest) ProtoMessage() {}
 
 func (x *RefreshWarehouseRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[81]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[83]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4632,7 +4768,7 @@ func (x *RefreshWarehouseRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use RefreshWarehouseRequest.ProtoReflect.Descriptor instead.
 func (*RefreshWarehouseRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{81}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{83}
 }
 
 func (x *RefreshWarehouseRequest) GetProject() string {
@@ -4660,7 +4796,7 @@ type RefreshWarehouseResponse struct {
 func (x *RefreshWarehouseResponse) Reset() {
 	*x = RefreshWarehouseResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[82]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[84]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4673,7 +4809,7 @@ func (x *RefreshWarehouseResponse) String() string {
 func (*RefreshWarehouseResponse) ProtoMessage() {}
 
 func (x *RefreshWarehouseResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[82]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[84]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4686,7 +4822,7 @@ func (x *RefreshWarehouseResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use RefreshWarehouseResponse.ProtoReflect.Descriptor instead.
 func (*RefreshWarehouseResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{82}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{84}
 }
 
 func (x *RefreshWarehouseResponse) GetWarehouse() *v1alpha1.Warehouse {
@@ -4707,7 +4843,7 @@ type ListProjectSecretsRequest struct {
 func (x *ListProjectSecretsRequest) Reset() {
 	*x = ListProjectSecretsRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[83]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[85]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4720,7 +4856,7 @@ func (x *ListProjectSecretsRequest) String() string {
 func (*ListProjectSecretsRequest) ProtoMessage() {}
 
 func (x *ListProjectSecretsRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[83]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[85]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4733,7 +4869,7 @@ func (x *ListProjectSecretsRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListProjectSecretsRequest.ProtoReflect.Descriptor instead.
 func (*ListProjectSecretsRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{83}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{85}
 }
 
 func (x *ListProjectSecretsRequest) GetProject() string {
@@ -4754,7 +4890,7 @@ type ListProjectSecretsResponse struct {
 func (x *ListProjectSecretsResponse) Reset() {
 	*x = ListProjectSecretsResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[84]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[86]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4767,7 +4903,7 @@ func (x *ListProjectSecretsResponse) String() string {
 func (*ListProjectSecretsResponse) ProtoMessage() {}
 
 func (x *ListProjectSecretsResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[84]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[86]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4780,7 +4916,7 @@ func (x *ListProjectSecretsResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListProjectSecretsResponse.ProtoReflect.Descriptor instead.
 func (*ListProjectSecretsResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{84}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{86}
 }
 
 func (x *ListProjectSecretsResponse) GetSecrets() []*v1.Secret {
@@ -4804,7 +4940,7 @@ type CreateProjectSecretRequest struct {
 func (x *CreateProjectSecretRequest) Reset() {
 	*x = CreateProjectSecretRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[85]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[87]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4817,7 +4953,7 @@ func (x *CreateProjectSecretRequest) String() string {
 func (*CreateProjectSecretRequest) ProtoMessage() {}
 
 func (x *CreateProjectSecretRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[85]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[87]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4830,7 +4966,7 @@ func (x *CreateProjectSecretRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use CreateProjectSecretRequest.ProtoReflect.Descriptor instead.
 func (*CreateProjectSecretRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{85}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{87}
 }
 
 func (x *CreateProjectSecretRequest) GetProject() string {
@@ -4872,7 +5008,7 @@ type CreateProjectSecretResponse struct {
 func (x *CreateProjectSecretResponse) Reset() {
 	*x = CreateProjectSecretResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[86]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[88]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4885,7 +5021,7 @@ func (x *CreateProjectSecretResponse) String() string {
 func (*CreateProjectSecretResponse) ProtoMessage() {}
 
 func (x *CreateProjectSecretResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[86]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[88]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4898,7 +5034,7 @@ func (x *CreateProjectSecretResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use CreateProjectSecretResponse.ProtoReflect.Descriptor instead.
 func (*CreateProjectSecretResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{86}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{88}
 }
 
 func (x *CreateProjectSecretResponse) GetSecret() *v1.Secret {
@@ -4922,7 +5058,7 @@ type UpdateProjectSecretRequest struct {
 func (x *UpdateProjectSecretRequest) Reset() {
 	*x = UpdateProjectSecretRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[87]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[89]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -4935,7 +5071,7 @@ func (x *UpdateProjectSecretRequest) String() string {
 func (*UpdateProjectSecretRequest) ProtoMessage() {}
 
 func (x *UpdateProjectSecretRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[87]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[89]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -4948,7 +5084,7 @@ func (x *UpdateProjectSecretRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use UpdateProjectSecretRequest.ProtoReflect.Descriptor instead.
 func (*UpdateProjectSecretRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{87}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{89}
 }
 
 func (x *UpdateProjectSecretRequest) GetProject() string {
@@ -4990,7 +5126,7 @@ type UpdateProjectSecretResponse struct {
 func (x *UpdateProjectSecretResponse) Reset() {
 	*x = UpdateProjectSecretResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[88]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[90]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5003,7 +5139,7 @@ func (x *UpdateProjectSecretResponse) String() string {
 func (*UpdateProjectSecretResponse) ProtoMessage() {}
 
 func (x *UpdateProjectSecretResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[88]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[90]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5016,7 +5152,7 @@ func (x *UpdateProjectSecretResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use UpdateProjectSecretResponse.ProtoReflect.Descriptor instead.
 func (*UpdateProjectSecretResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{88}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{90}
 }
 
 func (x *UpdateProjectSecretResponse) GetSecret() *v1.Secret {
@@ -5038,7 +5174,7 @@ type DeleteProjectSecretRequest struct {
 func (x *DeleteProjectSecretRequest) Reset() {
 	*x = DeleteProjectSecretRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[89]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[91]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5051,7 +5187,7 @@ func (x *DeleteProjectSecretRequest) String() string {
 func (*DeleteProjectSecretRequest) ProtoMessage() {}
 
 func (x *DeleteProjectSecretRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[89]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[91]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5064,7 +5200,7 @@ func (x *DeleteProjectSecretRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DeleteProjectSecretRequest.ProtoReflect.Descriptor instead.
 func (*DeleteProjectSecretRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{89}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{91}
 }
 
 func (x *DeleteProjectSecretRequest) GetProject() string {
@@ -5090,7 +5226,7 @@ type DeleteProjectSecretResponse struct {
 func (x *DeleteProjectSecretResponse) Reset() {
 	*x = DeleteProjectSecretResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[90]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[92]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5103,7 +5239,7 @@ func (x *DeleteProjectSecretResponse) String() string {
 func (*DeleteProjectSecretResponse) ProtoMessage() {}
 
 func (x *DeleteProjectSecretResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[90]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[92]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5116,7 +5252,7 @@ func (x *DeleteProjectSecretResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DeleteProjectSecretResponse.ProtoReflect.Descriptor instead.
 func (*DeleteProjectSecretResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{90}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{92}
 }
 
 type CreateCredentialsRequest struct {
@@ -5138,7 +5274,7 @@ type CreateCredentialsRequest struct {
 func (x *CreateCredentialsRequest) Reset() {
 	*x = CreateCredentialsRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[91]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[93]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5151,7 +5287,7 @@ func (x *CreateCredentialsRequest) String() string {
 func (*CreateCredentialsRequest) ProtoMessage() {}
 
 func (x *CreateCredentialsRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[91]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[93]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5164,7 +5300,7 @@ func (x *CreateCredentialsRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use CreateCredentialsRequest.ProtoReflect.Descriptor instead.
 func (*CreateCredentialsRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{91}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{93}
 }
 
 func (x *CreateCredentialsRequest) GetProject() string {
@@ -5234,7 +5370,7 @@ type CreateCredentialsResponse struct {
 func (x *CreateCredentialsResponse) Reset() {
 	*x = CreateCredentialsResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[92]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[94]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5247,7 +5383,7 @@ func (x *CreateCredentialsResponse) String() string {
 func (*CreateCredentialsResponse) ProtoMessage() {}
 
 func (x *CreateCredentialsResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[92]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[94]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5260,7 +5396,7 @@ func (x *CreateCredentialsResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use CreateCredentialsResponse.ProtoReflect.Descriptor instead.
 func (*CreateCredentialsResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{92}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{94}
 }
 
 func (x *CreateCredentialsResponse) GetCredentials() *v1.Secret {
@@ -5282,7 +5418,7 @@ type DeleteCredentialsRequest struct {
 func (x *DeleteCredentialsRequest) Reset() {
 	*x = DeleteCredentialsRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[93]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[95]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5295,7 +5431,7 @@ func (x *DeleteCredentialsRequest) String() string {
 func (*DeleteCredentialsRequest) ProtoMessage() {}
 
 func (x *DeleteCredentialsRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[93]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[95]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5308,7 +5444,7 @@ func (x *DeleteCredentialsRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DeleteCredentialsRequest.ProtoReflect.Descriptor instead.
 func (*DeleteCredentialsRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{93}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{95}
 }
 
 func (x *DeleteCredentialsRequest) GetProject() string {
@@ -5334,7 +5470,7 @@ type DeleteCredentialsResponse struct {
 func (x *DeleteCredentialsResponse) Reset() {
 	*x = DeleteCredentialsResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[94]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[96]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5347,7 +5483,7 @@ func (x *DeleteCredentialsResponse) String() string {
 func (*DeleteCredentialsResponse) ProtoMessage() {}
 
 func (x *DeleteCredentialsResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[94]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[96]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5360,7 +5496,7 @@ func (x *DeleteCredentialsResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DeleteCredentialsResponse.ProtoReflect.Descriptor instead.
 func (*DeleteCredentialsResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{94}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{96}
 }
 
 type GetCredentialsRequest struct {
@@ -5376,7 +5512,7 @@ type GetCredentialsRequest struct {
 func (x *GetCredentialsRequest) Reset() {
 	*x = GetCredentialsRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[95]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[97]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5389,7 +5525,7 @@ func (x *GetCredentialsRequest) String() string {
 func (*GetCredentialsRequest) ProtoMessage() {}
 
 func (x *GetCredentialsRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[95]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[97]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5402,7 +5538,7 @@ func (x *GetCredentialsRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetCredentialsRequest.ProtoReflect.Descriptor instead.
 func (*GetCredentialsRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{95}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{97}
 }
 
 func (x *GetCredentialsRequest) GetProject() string {
@@ -5441,7 +5577,7 @@ type GetCredentialsResponse struct {
 func (x *GetCredentialsResponse) Reset() {
 	*x = GetCredentialsResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[96]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[98]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5454,7 +5590,7 @@ func (x *GetCredentialsResponse) String() string {
 func (*GetCredentialsResponse) ProtoMessage() {}
 
 func (x *GetCredentialsResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[96]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[98]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5467,7 +5603,7 @@ func (x *GetCredentialsResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetCredentialsResponse.ProtoReflect.Descriptor instead.
 func (*GetCredentialsResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{96}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{98}
 }
 
 func (m *GetCredentialsResponse) GetResult() isGetCredentialsResponse_Result {
@@ -5518,7 +5654,7 @@ type ListCredentialsRequest struct {
 func (x *ListCredentialsRequest) Reset() {
 	*x = ListCredentialsRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[97]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[99]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5531,7 +5667,7 @@ func (x *ListCredentialsRequest) String() string {
 func (*ListCredentialsRequest) ProtoMessage() {}
 
 func (x *ListCredentialsRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[97]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[99]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5544,7 +5680,7 @@ func (x *ListCredentialsRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListCredentialsRequest.ProtoReflect.Descriptor instead.
 func (*ListCredentialsRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{97}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{99}
 }
 
 func (x *ListCredentialsRequest) GetProject() string {
@@ -5565,7 +5701,7 @@ type ListCredentialsResponse struct {
 func (x *ListCredentialsResponse) Reset() {
 	*x = ListCredentialsResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[98]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[100]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5578,7 +5714,7 @@ func (x *ListCredentialsResponse) String() string {
 func (*ListCredentialsResponse) ProtoMessage() {}
 
 func (x *ListCredentialsResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[98]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[100]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5591,7 +5727,7 @@ func (x *ListCredentialsResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListCredentialsResponse.ProtoReflect.Descriptor instead.
 func (*ListCredentialsResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{98}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{100}
 }
 
 func (x *ListCredentialsResponse) GetCredentials() []*v1.Secret {
@@ -5619,7 +5755,7 @@ type UpdateCredentialsRequest struct {
 func (x *UpdateCredentialsRequest) Reset() {
 	*x = UpdateCredentialsRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[99]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[101]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5632,7 +5768,7 @@ func (x *UpdateCredentialsRequest) String() string {
 func (*UpdateCredentialsRequest) ProtoMessage() {}
 
 func (x *UpdateCredentialsRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[99]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[101]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5645,7 +5781,7 @@ func (x *UpdateCredentialsRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use UpdateCredentialsRequest.ProtoReflect.Descriptor instead.
 func (*UpdateCredentialsRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{99}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{101}
 }
 
 func (x *UpdateCredentialsRequest) GetProject() string {
@@ -5715,7 +5851,7 @@ type UpdateCredentialsResponse struct {
 func (x *UpdateCredentialsResponse) Reset() {
 	*x = UpdateCredentialsResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[100]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[102]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5728,7 +5864,7 @@ func (x *UpdateCredentialsResponse) String() string {
 func (*UpdateCredentialsResponse) ProtoMessage() {}
 
 func (x *UpdateCredentialsResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[100]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[102]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5741,7 +5877,7 @@ func (x *UpdateCredentialsResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use UpdateCredentialsResponse.ProtoReflect.Descriptor instead.
 func (*UpdateCredentialsResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{100}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{102}
 }
 
 func (x *UpdateCredentialsResponse) GetCredentials() *v1.Secret {
@@ -5762,7 +5898,7 @@ type ListAnalysisTemplatesRequest struct {
 func (x *ListAnalysisTemplatesRequest) Reset() {
 	*x = ListAnalysisTemplatesRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[101]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[103]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5775,7 +5911,7 @@ func (x *ListAnalysisTemplatesRequest) String() string {
 func (*ListAnalysisTemplatesRequest) ProtoMessage() {}
 
 func (x *ListAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[101]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[103]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5788,7 +5924,7 @@ func (x *ListAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListAnalysisTemplatesRequest.ProtoReflect.Descriptor instead.
 func (*ListAnalysisTemplatesRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{101}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{103}
 }
 
 func (x *ListAnalysisTemplatesRequest) GetProject() string {
@@ -5809,7 +5945,7 @@ type ListAnalysisTemplatesResponse struct {
 func (x *ListAnalysisTemplatesResponse) Reset() {
 	*x = ListAnalysisTemplatesResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[102]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[104]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5822,7 +5958,7 @@ func (x *ListAnalysisTemplatesResponse) String() string {
 func (*ListAnalysisTemplatesResponse) ProtoMessage() {}
 
 func (x *ListAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[102]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[104]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5835,7 +5971,7 @@ func (x *ListAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListAnalysisTemplatesResponse.ProtoReflect.Descriptor instead.
 func (*ListAnalysisTemplatesResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{102}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{104}
 }
 
 func (x *ListAnalysisTemplatesResponse) GetAnalysisTemplates() []*v1alpha11.AnalysisTemplate {
@@ -5856,7 +5992,7 @@ type ListPromotionTasksRequest struct {
 func (x *ListPromotionTasksRequest) Reset() {
 	*x = ListPromotionTasksRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[103]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[105]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5869,7 +6005,7 @@ func (x *ListPromotionTasksRequest) String() string {
 func (*ListPromotionTasksRequest) ProtoMessage() {}
 
 func (x *ListPromotionTasksRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[103]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[105]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5882,7 +6018,7 @@ func (x *ListPromotionTasksRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListPromotionTasksRequest.ProtoReflect.Descriptor instead.
 func (*ListPromotionTasksRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{103}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{105}
 }
 
 func (x *ListPromotionTasksRequest) GetProject() string {
@@ -5903,7 +6039,7 @@ type ListPromotionTasksResponse struct {
 func (x *ListPromotionTasksResponse) Reset() {
 	*x = ListPromotionTasksResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[104]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[106]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5916,7 +6052,7 @@ func (x *ListPromotionTasksResponse) String() string {
 func (*ListPromotionTasksResponse) ProtoMessage() {}
 
 func (x *ListPromotionTasksResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[104]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[106]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5929,7 +6065,7 @@ func (x *ListPromotionTasksResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListPromotionTasksResponse.ProtoReflect.Descriptor instead.
 func (*ListPromotionTasksResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{104}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{106}
 }
 
 func (x *ListPromotionTasksResponse) GetPromotionTasks() []*v1alpha1.PromotionTask {
@@ -5948,7 +6084,7 @@ type ListClusterPromotionTasksRequest struct {
 func (x *ListClusterPromotionTasksRequest) Reset() {
 	*x = ListClusterPromotionTasksRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[105]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[107]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -5961,7 +6097,7 @@ func (x *ListClusterPromotionTasksRequest) String() string {
 func (*ListClusterPromotionTasksRequest) ProtoMessage() {}
 
 func (x *ListClusterPromotionTasksRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[105]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[107]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -5974,7 +6110,7 @@ func (x *ListClusterPromotionTasksRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListClusterPromotionTasksRequest.ProtoReflect.Descriptor instead.
 func (*ListClusterPromotionTasksRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{105}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{107}
 }
 
 type ListClusterPromotionTasksResponse struct {
@@ -5988,7 +6124,7 @@ type ListClusterPromotionTasksResponse struct {
 func (x *ListClusterPromotionTasksResponse) Reset() {
 	*x = ListClusterPromotionTasksResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[106]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[108]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6001,7 +6137,7 @@ func (x *ListClusterPromotionTasksResponse) String() string {
 func (*ListClusterPromotionTasksResponse) ProtoMessage() {}
 
 func (x *ListClusterPromotionTasksResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[106]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[108]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6014,7 +6150,7 @@ func (x *ListClusterPromotionTasksResponse) ProtoReflect() protoreflect.Message
 
 // Deprecated: Use ListClusterPromotionTasksResponse.ProtoReflect.Descriptor instead.
 func (*ListClusterPromotionTasksResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{106}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{108}
 }
 
 func (x *ListClusterPromotionTasksResponse) GetClusterPromotionTasks() []*v1alpha1.ClusterPromotionTask {
@@ -6037,7 +6173,7 @@ type GetAnalysisTemplateRequest struct {
 func (x *GetAnalysisTemplateRequest) Reset() {
 	*x = GetAnalysisTemplateRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[107]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[109]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6050,7 +6186,7 @@ func (x *GetAnalysisTemplateRequest) String() string {
 func (*GetAnalysisTemplateRequest) ProtoMessage() {}
 
 func (x *GetAnalysisTemplateRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[107]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[109]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6063,7 +6199,7 @@ func (x *GetAnalysisTemplateRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetAnalysisTemplateRequest.ProtoReflect.Descriptor instead.
 func (*GetAnalysisTemplateRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{107}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{109}
 }
 
 func (x *GetAnalysisTemplateRequest) GetProject() string {
@@ -6102,7 +6238,7 @@ type GetAnalysisTemplateResponse struct {
 func (x *GetAnalysisTemplateResponse) Reset() {
 	*x = GetAnalysisTemplateResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[108]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[110]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6115,7 +6251,7 @@ func (x *GetAnalysisTemplateResponse) String() string {
 func (*GetAnalysisTemplateResponse) ProtoMessage() {}
 
 func (x *GetAnalysisTemplateResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[108]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[110]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6128,7 +6264,7 @@ func (x *GetAnalysisTemplateResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetAnalysisTemplateResponse.ProtoReflect.Descriptor instead.
 func (*GetAnalysisTemplateResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{108}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{110}
 }
 
 func (m *GetAnalysisTemplateResponse) GetResult() isGetAnalysisTemplateResponse_Result {
@@ -6181,7 +6317,7 @@ type GetPromotionTaskRequest struct {
 func (x *GetPromotionTaskRequest) Reset() {
 	*x = GetPromotionTaskRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[109]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[111]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6194,7 +6330,7 @@ func (x *GetPromotionTaskRequest) String() string {
 func (*GetPromotionTaskRequest) ProtoMessage() {}
 
 func (x *GetPromotionTaskRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[109]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[111]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6207,7 +6343,7 @@ func (x *GetPromotionTaskRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetPromotionTaskRequest.ProtoReflect.Descriptor instead.
 func (*GetPromotionTaskRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{109}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{111}
 }
 
 func (x *GetPromotionTaskRequest) GetProject() string {
@@ -6246,7 +6382,7 @@ type GetPromotionTaskResponse struct {
 func (x *GetPromotionTaskResponse) Reset() {
 	*x = GetPromotionTaskResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[110]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[112]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6259,7 +6395,7 @@ func (x *GetPromotionTaskResponse) String() string {
 func (*GetPromotionTaskResponse) ProtoMessage() {}
 
 func (x *GetPromotionTaskResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[110]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[112]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6272,7 +6408,7 @@ func (x *GetPromotionTaskResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetPromotionTaskResponse.ProtoReflect.Descriptor instead.
 func (*GetPromotionTaskResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{110}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{112}
 }
 
 func (m *GetPromotionTaskResponse) GetResult() isGetPromotionTaskResponse_Result {
@@ -6324,7 +6460,7 @@ type GetClusterPromotionTaskRequest struct {
 func (x *GetClusterPromotionTaskRequest) Reset() {
 	*x = GetClusterPromotionTaskRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[111]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[113]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6337,7 +6473,7 @@ func (x *GetClusterPromotionTaskRequest) String() string {
 func (*GetClusterPromotionTaskRequest) ProtoMessage() {}
 
 func (x *GetClusterPromotionTaskRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[111]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[113]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6350,7 +6486,7 @@ func (x *GetClusterPromotionTaskRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetClusterPromotionTaskRequest.ProtoReflect.Descriptor instead.
 func (*GetClusterPromotionTaskRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{111}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{113}
 }
 
 func (x *GetClusterPromotionTaskRequest) GetName() string {
@@ -6382,7 +6518,7 @@ type GetClusterPromotionTaskResponse struct {
 func (x *GetClusterPromotionTaskResponse) Reset() {
 	*x = GetClusterPromotionTaskResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[112]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[114]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6395,7 +6531,7 @@ func (x *GetClusterPromotionTaskResponse) String() string {
 func (*GetClusterPromotionTaskResponse) ProtoMessage() {}
 
 func (x *GetClusterPromotionTaskResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[112]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[114]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6408,7 +6544,7 @@ func (x *GetClusterPromotionTaskResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetClusterPromotionTaskResponse.ProtoReflect.Descriptor instead.
 func (*GetClusterPromotionTaskResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{112}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{114}
 }
 
 func (m *GetClusterPromotionTaskResponse) GetResult() isGetClusterPromotionTaskResponse_Result {
@@ -6457,7 +6593,7 @@ type ListClusterAnalysisTemplatesRequest struct {
 func (x *ListClusterAnalysisTemplatesRequest) Reset() {
 	*x = ListClusterAnalysisTemplatesRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[113]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[115]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6470,7 +6606,7 @@ func (x *ListClusterAnalysisTemplatesRequest) String() string {
 func (*ListClusterAnalysisTemplatesRequest) ProtoMessage() {}
 
 func (x *ListClusterAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[113]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[115]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6483,7 +6619,7 @@ func (x *ListClusterAnalysisTemplatesRequest) ProtoReflect() protoreflect.Messag
 
 // Deprecated: Use ListClusterAnalysisTemplatesRequest.ProtoReflect.Descriptor instead.
 func (*ListClusterAnalysisTemplatesRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{113}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{115}
 }
 
 type ListClusterAnalysisTemplatesResponse struct {
@@ -6497,7 +6633,7 @@ type ListClusterAnalysisTemplatesResponse struct {
 func (x *ListClusterAnalysisTemplatesResponse) Reset() {
 	*x = ListClusterAnalysisTemplatesResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[114]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[116]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6510,7 +6646,7 @@ func (x *ListClusterAnalysisTemplatesResponse) String() string {
 func (*ListClusterAnalysisTemplatesResponse) ProtoMessage() {}
 
 func (x *ListClusterAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[114]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[116]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6523,7 +6659,7 @@ func (x *ListClusterAnalysisTemplatesResponse) ProtoReflect() protoreflect.Messa
 
 // Deprecated: Use ListClusterAnalysisTemplatesResponse.ProtoReflect.Descriptor instead.
 func (*ListClusterAnalysisTemplatesResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{114}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{116}
 }
 
 func (x *ListClusterAnalysisTemplatesResponse) GetClusterAnalysisTemplates() []*v1alpha11.ClusterAnalysisTemplate {
@@ -6545,7 +6681,7 @@ type GetClusterAnalysisTemplateRequest struct {
 func (x *GetClusterAnalysisTemplateRequest) Reset() {
 	*x = GetClusterAnalysisTemplateRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[115]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[117]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6558,7 +6694,7 @@ func (x *GetClusterAnalysisTemplateRequest) String() string {
 func (*GetClusterAnalysisTemplateRequest) ProtoMessage() {}
 
 func (x *GetClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[115]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[117]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6571,7 +6707,7 @@ func (x *GetClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message
 
 // Deprecated: Use GetClusterAnalysisTemplateRequest.ProtoReflect.Descriptor instead.
 func (*GetClusterAnalysisTemplateRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{115}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{117}
 }
 
 func (x *GetClusterAnalysisTemplateRequest) GetName() string {
@@ -6603,7 +6739,7 @@ type GetClusterAnalysisTemplateResponse struct {
 func (x *GetClusterAnalysisTemplateResponse) Reset() {
 	*x = GetClusterAnalysisTemplateResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[116]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[118]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6616,7 +6752,7 @@ func (x *GetClusterAnalysisTemplateResponse) String() string {
 func (*GetClusterAnalysisTemplateResponse) ProtoMessage() {}
 
 func (x *GetClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[116]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[118]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6629,7 +6765,7 @@ func (x *GetClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message
 
 // Deprecated: Use GetClusterAnalysisTemplateResponse.ProtoReflect.Descriptor instead.
 func (*GetClusterAnalysisTemplateResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{116}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{118}
 }
 
 func (m *GetClusterAnalysisTemplateResponse) GetResult() isGetClusterAnalysisTemplateResponse_Result {
@@ -6683,7 +6819,7 @@ type GetAnalysisRunRequest struct {
 func (x *GetAnalysisRunRequest) Reset() {
 	*x = GetAnalysisRunRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[117]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[119]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6696,7 +6832,7 @@ func (x *GetAnalysisRunRequest) String() string {
 func (*GetAnalysisRunRequest) ProtoMessage() {}
 
 func (x *GetAnalysisRunRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[117]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[119]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6709,7 +6845,7 @@ func (x *GetAnalysisRunRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetAnalysisRunRequest.ProtoReflect.Descriptor instead.
 func (*GetAnalysisRunRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{117}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{119}
 }
 
 func (x *GetAnalysisRunRequest) GetNamespace() string {
@@ -6748,7 +6884,7 @@ type GetAnalysisRunResponse struct {
 func (x *GetAnalysisRunResponse) Reset() {
 	*x = GetAnalysisRunResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[118]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[120]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6761,7 +6897,7 @@ func (x *GetAnalysisRunResponse) String() string {
 func (*GetAnalysisRunResponse) ProtoMessage() {}
 
 func (x *GetAnalysisRunResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[118]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[120]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6774,7 +6910,7 @@ func (x *GetAnalysisRunResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetAnalysisRunResponse.ProtoReflect.Descriptor instead.
 func (*GetAnalysisRunResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{118}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{120}
 }
 
 func (m *GetAnalysisRunResponse) GetResult() isGetAnalysisRunResponse_Result {
@@ -6828,7 +6964,7 @@ type GetAnalysisRunLogsRequest struct {
 func (x *GetAnalysisRunLogsRequest) Reset() {
 	*x = GetAnalysisRunLogsRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[119]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[121]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6841,7 +6977,7 @@ func (x *GetAnalysisRunLogsRequest) String() string {
 func (*GetAnalysisRunLogsRequest) ProtoMessage() {}
 
 func (x *GetAnalysisRunLogsRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[119]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[121]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6854,7 +6990,7 @@ func (x *GetAnalysisRunLogsRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetAnalysisRunLogsRequest.ProtoReflect.Descriptor instead.
 func (*GetAnalysisRunLogsRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{119}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{121}
 }
 
 func (x *GetAnalysisRunLogsRequest) GetNamespace() string {
@@ -6896,7 +7032,7 @@ type GetAnalysisRunLogsResponse struct {
 func (x *GetAnalysisRunLogsResponse) Reset() {
 	*x = GetAnalysisRunLogsResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[120]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[122]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6909,7 +7045,7 @@ func (x *GetAnalysisRunLogsResponse) String() string {
 func (*GetAnalysisRunLogsResponse) ProtoMessage() {}
 
 func (x *GetAnalysisRunLogsResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[120]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[122]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6922,7 +7058,7 @@ func (x *GetAnalysisRunLogsResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetAnalysisRunLogsResponse.ProtoReflect.Descriptor instead.
 func (*GetAnalysisRunLogsResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{120}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{122}
 }
 
 func (x *GetAnalysisRunLogsResponse) GetChunk() string {
@@ -6944,7 +7080,7 @@ type DeleteAnalysisTemplateRequest struct {
 func (x *DeleteAnalysisTemplateRequest) Reset() {
 	*x = DeleteAnalysisTemplateRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[121]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[123]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -6957,7 +7093,7 @@ func (x *DeleteAnalysisTemplateRequest) String() string {
 func (*DeleteAnalysisTemplateRequest) ProtoMessage() {}
 
 func (x *DeleteAnalysisTemplateRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[121]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[123]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -6970,7 +7106,7 @@ func (x *DeleteAnalysisTemplateRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DeleteAnalysisTemplateRequest.ProtoReflect.Descriptor instead.
 func (*DeleteAnalysisTemplateRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{121}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{123}
 }
 
 func (x *DeleteAnalysisTemplateRequest) GetProject() string {
@@ -6996,7 +7132,7 @@ type DeleteAnalysisTemplateResponse struct {
 func (x *DeleteAnalysisTemplateResponse) Reset() {
 	*x = DeleteAnalysisTemplateResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[122]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[124]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7009,7 +7145,7 @@ func (x *DeleteAnalysisTemplateResponse) String() string {
 func (*DeleteAnalysisTemplateResponse) ProtoMessage() {}
 
 func (x *DeleteAnalysisTemplateResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[122]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[124]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7022,7 +7158,7 @@ func (x *DeleteAnalysisTemplateResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DeleteAnalysisTemplateResponse.ProtoReflect.Descriptor instead.
 func (*DeleteAnalysisTemplateResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{122}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{124}
 }
 
 type DeleteClusterAnalysisTemplateRequest struct {
@@ -7036,7 +7172,7 @@ type DeleteClusterAnalysisTemplateRequest struct {
 func (x *DeleteClusterAnalysisTemplateRequest) Reset() {
 	*x = DeleteClusterAnalysisTemplateRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[123]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[125]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7049,7 +7185,7 @@ func (x *DeleteClusterAnalysisTemplateRequest) String() string {
 func (*DeleteClusterAnalysisTemplateRequest) ProtoMessage() {}
 
 func (x *DeleteClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[123]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[125]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7062,7 +7198,7 @@ func (x *DeleteClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Messa
 
 // Deprecated: Use DeleteClusterAnalysisTemplateRequest.ProtoReflect.Descriptor instead.
 func (*DeleteClusterAnalysisTemplateRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{123}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{125}
 }
 
 func (x *DeleteClusterAnalysisTemplateRequest) GetName() string {
@@ -7081,7 +7217,7 @@ type DeleteClusterAnalysisTemplateResponse struct {
 func (x *DeleteClusterAnalysisTemplateResponse) Reset() {
 	*x = DeleteClusterAnalysisTemplateResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[124]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[126]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7094,7 +7230,7 @@ func (x *DeleteClusterAnalysisTemplateResponse) String() string {
 func (*DeleteClusterAnalysisTemplateResponse) ProtoMessage() {}
 
 func (x *DeleteClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[124]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[126]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7107,7 +7243,7 @@ func (x *DeleteClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Mess
 
 // Deprecated: Use DeleteClusterAnalysisTemplateResponse.ProtoReflect.Descriptor instead.
 func (*DeleteClusterAnalysisTemplateResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{124}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{126}
 }
 
 type ListProjectEventsRequest struct {
@@ -7121,7 +7257,7 @@ type ListProjectEventsRequest struct {
 func (x *ListProjectEventsRequest) Reset() {
 	*x = ListProjectEventsRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[125]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[127]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7134,7 +7270,7 @@ func (x *ListProjectEventsRequest) String() string {
 func (*ListProjectEventsRequest) ProtoMessage() {}
 
 func (x *ListProjectEventsRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[125]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[127]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7147,7 +7283,7 @@ func (x *ListProjectEventsRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListProjectEventsRequest.ProtoReflect.Descriptor instead.
 func (*ListProjectEventsRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{125}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{127}
 }
 
 func (x *ListProjectEventsRequest) GetProject() string {
@@ -7168,7 +7304,7 @@ type ListProjectEventsResponse struct {
 func (x *ListProjectEventsResponse) Reset() {
 	*x = ListProjectEventsResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[126]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[128]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7181,7 +7317,7 @@ func (x *ListProjectEventsResponse) String() string {
 func (*ListProjectEventsResponse) ProtoMessage() {}
 
 func (x *ListProjectEventsResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[126]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[128]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7194,7 +7330,7 @@ func (x *ListProjectEventsResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListProjectEventsResponse.ProtoReflect.Descriptor instead.
 func (*ListProjectEventsResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{126}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{128}
 }
 
 func (x *ListProjectEventsResponse) GetEvents() []*v1.Event {
@@ -7215,7 +7351,7 @@ type CreateRoleRequest struct {
 func (x *CreateRoleRequest) Reset() {
 	*x = CreateRoleRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[127]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[129]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7228,7 +7364,7 @@ func (x *CreateRoleRequest) String() string {
 func (*CreateRoleRequest) ProtoMessage() {}
 
 func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[127]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[129]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7241,7 +7377,7 @@ func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use CreateRoleRequest.ProtoReflect.Descriptor instead.
 func (*CreateRoleRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{127}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{129}
 }
 
 func (x *CreateRoleRequest) GetRole() *v1alpha12.Role {
@@ -7262,7 +7398,7 @@ type CreateRoleResponse struct {
 func (x *CreateRoleResponse) Reset() {
 	*x = CreateRoleResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[128]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[130]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7275,7 +7411,7 @@ func (x *CreateRoleResponse) String() string {
 func (*CreateRoleResponse) ProtoMessage() {}
 
 func (x *CreateRoleResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[128]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[130]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7288,7 +7424,7 @@ func (x *CreateRoleResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use CreateRoleResponse.ProtoReflect.Descriptor instead.
 func (*CreateRoleResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{128}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{130}
 }
 
 func (x *CreateRoleResponse) GetRole() *v1alpha12.Role {
@@ -7310,7 +7446,7 @@ type DeleteRoleRequest struct {
 func (x *DeleteRoleRequest) Reset() {
 	*x = DeleteRoleRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[129]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[131]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7323,7 +7459,7 @@ func (x *DeleteRoleRequest) String() string {
 func (*DeleteRoleRequest) ProtoMessage() {}
 
 func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[129]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[131]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7336,7 +7472,7 @@ func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DeleteRoleRequest.ProtoReflect.Descriptor instead.
 func (*DeleteRoleRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{129}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{131}
 }
 
 func (x *DeleteRoleRequest) GetProject() string {
@@ -7362,7 +7498,7 @@ type DeleteRoleResponse struct {
 func (x *DeleteRoleResponse) Reset() {
 	*x = DeleteRoleResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[130]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[132]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7375,7 +7511,7 @@ func (x *DeleteRoleResponse) String() string {
 func (*DeleteRoleResponse) ProtoMessage() {}
 
 func (x *DeleteRoleResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[130]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[132]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7388,7 +7524,7 @@ func (x *DeleteRoleResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DeleteRoleResponse.ProtoReflect.Descriptor instead.
 func (*DeleteRoleResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{130}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{132}
 }
 
 type GetRoleRequest struct {
@@ -7405,7 +7541,7 @@ type GetRoleRequest struct {
 func (x *GetRoleRequest) Reset() {
 	*x = GetRoleRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[131]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[133]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7418,7 +7554,7 @@ func (x *GetRoleRequest) String() string {
 func (*GetRoleRequest) ProtoMessage() {}
 
 func (x *GetRoleRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[131]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[133]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7431,7 +7567,7 @@ func (x *GetRoleRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetRoleRequest.ProtoReflect.Descriptor instead.
 func (*GetRoleRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{131}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{133}
 }
 
 func (x *GetRoleRequest) GetProject() string {
@@ -7478,7 +7614,7 @@ type GetRoleResponse struct {
 func (x *GetRoleResponse) Reset() {
 	*x = GetRoleResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[132]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[134]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7491,7 +7627,7 @@ func (x *GetRoleResponse) String() string {
 func (*GetRoleResponse) ProtoMessage() {}
 
 func (x *GetRoleResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[132]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[134]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7504,7 +7640,7 @@ func (x *GetRoleResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GetRoleResponse.ProtoReflect.Descriptor instead.
 func (*GetRoleResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{132}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{134}
 }
 
 func (m *GetRoleResponse) GetResult() isGetRoleResponse_Result {
@@ -7569,7 +7705,7 @@ type Claims struct {
 func (x *Claims) Reset() {
 	*x = Claims{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[133]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[135]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7582,7 +7718,7 @@ func (x *Claims) String() string {
 func (*Claims) ProtoMessage() {}
 
 func (x *Claims) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[133]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[135]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7595,7 +7731,7 @@ func (x *Claims) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use Claims.ProtoReflect.Descriptor instead.
 func (*Claims) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{133}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{135}
 }
 
 func (x *Claims) GetClaims() []*v1alpha12.Claim {
@@ -7622,7 +7758,7 @@ type GrantRequest struct {
 func (x *GrantRequest) Reset() {
 	*x = GrantRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[134]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[136]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7635,7 +7771,7 @@ func (x *GrantRequest) String() string {
 func (*GrantRequest) ProtoMessage() {}
 
 func (x *GrantRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[134]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[136]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7648,7 +7784,7 @@ func (x *GrantRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GrantRequest.ProtoReflect.Descriptor instead.
 func (*GrantRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{134}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{136}
 }
 
 func (x *GrantRequest) GetProject() string {
@@ -7713,7 +7849,7 @@ type GrantResponse struct {
 func (x *GrantResponse) Reset() {
 	*x = GrantResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[135]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[137]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7726,7 +7862,7 @@ func (x *GrantResponse) String() string {
 func (*GrantResponse) ProtoMessage() {}
 
 func (x *GrantResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[135]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[137]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7739,7 +7875,7 @@ func (x *GrantResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use GrantResponse.ProtoReflect.Descriptor instead.
 func (*GrantResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{135}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{137}
 }
 
 func (x *GrantResponse) GetRole() *v1alpha12.Role {
@@ -7761,7 +7897,7 @@ type ListRolesRequest struct {
 func (x *ListRolesRequest) Reset() {
 	*x = ListRolesRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[136]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[138]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7774,7 +7910,7 @@ func (x *ListRolesRequest) String() string {
 func (*ListRolesRequest) ProtoMessage() {}
 
 func (x *ListRolesRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[136]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[138]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7787,7 +7923,7 @@ func (x *ListRolesRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListRolesRequest.ProtoReflect.Descriptor instead.
 func (*ListRolesRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{136}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{138}
 }
 
 func (x *ListRolesRequest) GetProject() string {
@@ -7817,7 +7953,7 @@ type ListRolesResponse struct {
 func (x *ListRolesResponse) Reset() {
 	*x = ListRolesResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[137]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[139]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7830,7 +7966,7 @@ func (x *ListRolesResponse) String() string {
 func (*ListRolesResponse) ProtoMessage() {}
 
 func (x *ListRolesResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[137]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[139]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7843,7 +7979,7 @@ func (x *ListRolesResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ListRolesResponse.ProtoReflect.Descriptor instead.
 func (*ListRolesResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{137}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{139}
 }
 
 func (x *ListRolesResponse) GetRoles() []*v1alpha12.Role {
@@ -7877,7 +8013,7 @@ type RevokeRequest struct {
 func (x *RevokeRequest) Reset() {
 	*x = RevokeRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[138]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[140]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7890,7 +8026,7 @@ func (x *RevokeRequest) String() string {
 func (*RevokeRequest) ProtoMessage() {}
 
 func (x *RevokeRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[138]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[140]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7903,7 +8039,7 @@ func (x *RevokeRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use RevokeRequest.ProtoReflect.Descriptor instead.
 func (*RevokeRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{138}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{140}
 }
 
 func (x *RevokeRequest) GetProject() string {
@@ -7968,7 +8104,7 @@ type RevokeResponse struct {
 func (x *RevokeResponse) Reset() {
 	*x = RevokeResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[139]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[141]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -7981,7 +8117,7 @@ func (x *RevokeResponse) String() string {
 func (*RevokeResponse) ProtoMessage() {}
 
 func (x *RevokeResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[139]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[141]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -7994,7 +8130,7 @@ func (x *RevokeResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use RevokeResponse.ProtoReflect.Descriptor instead.
 func (*RevokeResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{139}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{141}
 }
 
 func (x *RevokeResponse) GetRole() *v1alpha12.Role {
@@ -8015,7 +8151,7 @@ type UpdateRoleRequest struct {
 func (x *UpdateRoleRequest) Reset() {
 	*x = UpdateRoleRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[140]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[142]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -8028,7 +8164,7 @@ func (x *UpdateRoleRequest) String() string {
 func (*UpdateRoleRequest) ProtoMessage() {}
 
 func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[140]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[142]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -8041,7 +8177,7 @@ func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use UpdateRoleRequest.ProtoReflect.Descriptor instead.
 func (*UpdateRoleRequest) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{140}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{142}
 }
 
 func (x *UpdateRoleRequest) GetRole() *v1alpha12.Role {
@@ -8062,7 +8198,7 @@ type UpdateRoleResponse struct {
 func (x *UpdateRoleResponse) Reset() {
 	*x = UpdateRoleResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_api_service_v1alpha1_service_proto_msgTypes[141]
+		mi := &file_api_service_v1alpha1_service_proto_msgTypes[143]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -8075,7 +8211,7 @@ func (x *UpdateRoleResponse) String() string {
 func (*UpdateRoleResponse) ProtoMessage() {}
 
 func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_api_service_v1alpha1_service_proto_msgTypes[141]
+	mi := &file_api_service_v1alpha1_service_proto_msgTypes[143]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -8088,7 +8224,7 @@ func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use UpdateRoleResponse.ProtoReflect.Descriptor instead.
 func (*UpdateRoleResponse) Descriptor() ([]byte, []int) {
-	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{141}
+	return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{143}
 }
 
 func (x *UpdateRoleResponse) GetRole() *v1alpha12.Role {
@@ -8435,273 +8571,343 @@ var file_api_service_v1alpha1_service_proto_rawDesc = []byte{
 	0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
 	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
 	0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72,
-	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a,
-	0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72,
-	0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47,
-	0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e,
-	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63,
-	0x74, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x03,
-	0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77,
-	0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x13, 0x4c,
-	0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
-	0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x05, 0x48, 0x01, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a,
-	0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52,
-	0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70,
-	0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x67,
-	0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x77, 0x0a, 0x14,
-	0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
-	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
+	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x72, 0x0a,
+	0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+	0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06,
+	0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61,
+	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61,
+	0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c,
+	0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
 	0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
 	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72,
-	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12,
-	0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
-	0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x71, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65,
-	0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18,
-	0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05,
-	0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69,
-	0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x72,
-	0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69,
+	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x70,
+	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03,
+	0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77,
+	0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x6c, 0x0a, 0x11, 0x47, 0x65,
+	0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+	0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
+	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74,
+	0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50,
+	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49,
+	0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75,
+	0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00,
+	0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a,
+	0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74,
+	0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01,
+	0x01, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48,
+	0x01, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69,
+	0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x66, 0x69,
+	0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x61, 0x67, 0x65,
+	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x42, 0x09,
+	0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x77, 0x0a, 0x14, 0x4c, 0x69, 0x73,
+	0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x49, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
+	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70,
+	0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65,
+	0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05,
+	0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74,
+	0x61, 0x6c, 0x22, 0x71, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65,
+	0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70,
+	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72,
+	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69,
+	0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12,
+	0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+	0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65,
+	0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+	0x5a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65,
+	0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
+	0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44,
+	0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69,
 	0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72,
 	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f,
 	0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
 	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61,
-	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x17,
-	0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46,
-	0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a,
-	0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
-	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61,
-	0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61,
-	0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06,
-	0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65,
-	0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07,
-	0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e,
-	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
-	0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x48, 0x00, 0x52, 0x07,
-	0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72,
-	0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
-	0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
-	0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61,
-	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12,
-	0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65,
-	0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x67,
-	0x0a, 0x16, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d,
-	0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69,
-	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72,
-	0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x6d,
-	0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14,
-	0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73,
-	0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23,
-	0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c,
-	0x69, 0x61, 0x73, 0x22, 0x6c, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f,
-	0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
-	0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61,
-	0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d,
-	0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67,
-	0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f,
-	0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a,
-	0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f,
-	0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f,
-	0x75, 0x70, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72,
-	0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72,
-	0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x12,
-	0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x14, 0x51, 0x75,
-	0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x5a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
-	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67,
-	0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70,
-	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x68,
-	0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
-	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
-	0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d,
+	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x43,
+	0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b,
 	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
 	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x0b, 0x46, 0x72, 0x65, 0x69,
-	0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67,
-	0x68, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75,
+	0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72,
+	0x6d, 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68,
+	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x66, 0x72, 0x65,
+	0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74,
+	0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b,
+	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x48, 0x00, 0x52, 0x07, 0x66, 0x72, 0x65,
+	0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75,
+	0x6c, 0x74, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f,
+	0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07,
+	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70,
+	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07,
+	0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66,
+	0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68,
+	0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66,
+	0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x67, 0x0a, 0x16, 0x50,
+	0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69,
+	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75,
 	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72,
 	0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
-	0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74,
-	0x22, 0x83, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67,
-	0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18,
-	0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09,
-	0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x6f, 0x6c, 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77,
-	0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65,
-	0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
-	0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x0f, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65,
-	0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
-	0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x65, 0x72,
-	0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, 0x41,
-	0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65,
-	0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
-	0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x41, 0x62, 0x6f, 0x72, 0x74,
-	0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65,
-	0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a,
-	0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
-	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57,
-	0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x18,
-	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
+	0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f,
+	0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65,
+	0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73,
+	0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67,
+	0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66,
+	0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73,
+	0x22, 0x6c, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73,
+	0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a,
+	0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61,
+	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69,
+	0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc5,
+	0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
+	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+	0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
+	0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42,
+	0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72,
+	0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72,
+	0x42, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x18, 0x06, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07,
+	0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f,
+	0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79,
+	0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x5a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x68, 0x0a, 0x0b, 0x47,
+	0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b,
+	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46,
+	0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x0b, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74,
+	0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18,
+	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
 	0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
-	0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72,
-	0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73,
-	0x65, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f,
-	0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72,
+	0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65,
+	0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x83, 0x01,
+	0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41,
+	0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70,
+	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72,
+	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x6c, 0x64,
+	0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x6c,
+	0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6c,
+	0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x41, 0x6c,
+	0x69, 0x61, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65,
+	0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x22, 0x41, 0x0a, 0x0f, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14,
+	0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73,
+	0x74, 0x61, 0x67, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, 0x41, 0x62, 0x6f, 0x72,
+	0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14,
+	0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73,
+	0x74, 0x61, 0x67, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72,
+	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x22, 0x31, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75,
+	0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72,
 	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f,
-	0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d,
-	0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
-	0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
-	0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46,
-	0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, 0x01,
-	0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f,
-	0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68,
-	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, 0x77, 0x61,
-	0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72,
-	0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x46, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61,
-	0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
-	0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7c, 0x0a,
-	0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65,
-	0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69,
-	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x09, 0x77, 0x61,
-	0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x16, 0x44,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12,
-	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
-	0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72,
-	0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47,
-	0x0a, 0x17, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75,
-	0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f,
-	0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a,
-	0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x69, 0x0a, 0x18, 0x52, 0x65, 0x66, 0x72, 0x65,
-	0x73, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65,
+	0x6a, 0x65, 0x63, 0x74, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65,
+	0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f,
+	0x0a, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e,
+	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f,
+	0x75, 0x73, 0x65, 0x52, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x22,
+	0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65,
+	0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
+	0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
+	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d,
+	0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47,
+	0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65,
 	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
 	0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
 	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61,
-	0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75,
-	0x73, 0x65, 0x22, 0x35, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63,
-	0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
-	0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x52, 0x0a, 0x1a, 0x4c, 0x69, 0x73,
-	0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65,
-	0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69,
-	0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
-	0x63, 0x72, 0x65, 0x74, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x81, 0x02,
-	0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53,
-	0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07,
+	0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68,
+	0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75,
+	0x6c, 0x74, 0x22, 0x46, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68,
+	0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07,
 	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70,
 	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65,
-	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x04,
-	0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x61, 0x6b, 0x75,
-	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72,
-	0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65,
-	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
-	0x01, 0x22, 0x51, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65,
-	0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x32, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f,
-	0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x06, 0x73, 0x65,
-	0x63, 0x72, 0x65, 0x74, 0x22, 0x81, 0x02, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50,
-	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a,
-	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
-	0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65,
-	0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e,
-	0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a,
-	0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x51, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61,
-	0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65,
-	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f,
-	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63,
-	0x72, 0x65, 0x74, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x4a, 0x0a, 0x1a, 0x44,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7c, 0x0a, 0x17, 0x57, 0x61,
+	0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75,
+	0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75,
+	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72,
+	0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68,
+	0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65,
+	0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04,
+	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+	0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f,
+	0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x0a, 0x17, 0x52,
+	0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
+	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+	0x6e, 0x61, 0x6d, 0x65, 0x22, 0x69, 0x0a, 0x18, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57,
+	0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x4d, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
+	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70,
+	0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68,
+	0x6f, 0x75, 0x73, 0x65, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x22,
+	0x35, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65,
+	0x63, 0x72, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07,
+	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70,
+	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x52, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72,
+	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18,
+	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61,
+	0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65,
+	0x74, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x81, 0x02, 0x0a, 0x1a, 0x43,
+	0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72,
 	0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f,
 	0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a,
 	0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74,
+	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
+	0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65,
+	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x04, 0x64, 0x61, 0x74,
+	0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
+	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
 	0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+	0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x51,
+	0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53,
+	0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a,
+	0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+	0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e,
+	0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65,
+	0x74, 0x22, 0x81, 0x02, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a,
+	0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20,
+	0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x12, 0x5a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46,
+	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
+	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53,
+	0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74,
+	0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x37, 0x0a, 0x09,
+	0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x51, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50,
+	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70,
+	0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
+	0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x4a, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65,
+	0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
+	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+	0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72,
+	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72,
+	0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20,
+	0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+	0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12,
+	0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72,
+	0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f,
+	0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73,
+	0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73,
+	0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
+	0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
+	0x72, 0x64, 0x22, 0x59, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64,
+	0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70,
+	0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
+	0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x48, 0x0a,
+	0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61,
+	0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f,
+	0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a,
+	0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74,
+	0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64,
+	0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18,
+	0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06,
+	0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61,
+	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61,
+	0x74, 0x22, 0x76, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69,
+	0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63,
+	0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f,
+	0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b,
+	0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72,
+	0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42,
+	0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x32, 0x0a, 0x16, 0x4c, 0x69, 0x73,
+	0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x57, 0x0a,
+	0x17, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64,
+	0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+	0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e,
+	0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65,
+	0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xfc, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74,
 	0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75,
 	0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01,
 	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a,
@@ -8717,103 +8923,70 @@ var file_api_service_v1alpha1_service_proto_rawDesc = []byte{
 	0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
 	0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73,
 	0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73,
-	0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x59, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43,
+	0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x59, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43,
 	0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
 	0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c,
 	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f,
 	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63,
 	0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73,
-	0x22, 0x48, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e,
-	0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07,
-	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70,
-	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x44, 0x65,
-	0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43,
-	0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e,
-	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
-	0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
-	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f,
-	0x72, 0x6d, 0x61, 0x74, 0x22, 0x76, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65,
-	0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e,
-	0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69,
-	0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48,
-	0x00, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x12,
-	0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72,
-	0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x32, 0x0a, 0x16,
-	0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
-	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
-	0x22, 0x57, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69,
-	0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63,
-	0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f,
-	0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72,
-	0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xfc, 0x01, 0x0a, 0x18, 0x55, 0x70,
-	0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
-	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
-	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
-	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
-	0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65,
-	0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65,
-	0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72,
-	0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78,
-	0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08,
-	0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
-	0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x59, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61,
-	0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74,
-	0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73,
-	0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e,
-	0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69,
-	0x61, 0x6c, 0x73, 0x22, 0x38, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79,
-	0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x95, 0x01,
-	0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65,
-	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
-	0x74, 0x0a, 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70,
-	0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69,
-	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e,
-	0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
-	0x74, 0x65, 0x52, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70,
-	0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x35, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f,
-	0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x22, 0x38, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
+	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x1d, 0x4c,
+	0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c,
+	0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x12,
+	0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
+	0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75,
+	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72,
+	0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c,
+	0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41,
+	0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52,
+	0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
+	0x65, 0x73, 0x22, 0x35, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
+	0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x7a, 0x0a, 0x1a, 0x4c, 0x69, 0x73,
+	0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6d, 0x6f,
+	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b,
+	0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f,
+	0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e,
+	0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x22, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75,
+	0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73,
+	0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x21, 0x4c, 0x69,
+	0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69,
+	0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x72, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f,
+	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b,
+	0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50,
+	0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x15, 0x63, 0x6c,
+	0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61,
+	0x73, 0x6b, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79,
+	0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
 	0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x7a, 0x0a, 0x1a,
-	0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73,
-	0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x70, 0x72,
-	0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
-	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70,
-	0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f,
-	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
-	0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x22, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74,
-	0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e,
-	0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a,
-	0x21, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d,
-	0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x72, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x72,
-	0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
-	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70,
-	0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74,
-	0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52,
-	0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f,
-	0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e,
-	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65,
+	0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04,
+	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+	0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
+	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66,
+	0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xb1, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61,
+	0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
+	0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b,
+	0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73,
+	0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54,
+	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x10, 0x61, 0x6e, 0x61, 0x6c, 0x79,
+	0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72,
+	0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42,
+	0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x47, 0x65,
+	0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65,
 	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
 	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12,
 	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
@@ -8821,228 +8994,170 @@ var file_api_service_v1alpha1_service_proto_rawDesc = []byte{
 	0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
 	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
 	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74,
-	0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xb1, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74,
-	0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x11, 0x61, 0x6e, 0x61, 0x6c,
-	0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
-	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70,
-	0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
-	0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x10, 0x61, 0x6e,
-	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12,
-	0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72,
-	0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x8c, 0x01, 0x0a,
-	0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73,
-	0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a,
-	0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65,
-	0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72,
-	0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18,
-	0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d,
-	0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b,
-	0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f,
-	0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69,
-	0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65,
-	0x73, 0x75, 0x6c, 0x74, 0x22, 0x79, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74,
-	0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f,
-	0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75,
-	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61,
-	0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22,
-	0xab, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72,
-	0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e,
-	0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69,
-	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
-	0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x14, 0x63, 0x6c, 0x75, 0x73, 0x74,
-	0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12,
-	0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03,
-	0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x25, 0x0a,
-	0x23, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c,
-	0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75,
+	0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74,
+	0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69,
+	0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e,
+	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
+	0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61,
+	0x73, 0x6b, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54,
+	0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
+	0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c,
+	0x74, 0x22, 0x79, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50,
+	0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61,
+	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
+	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f,
+	0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xab, 0x01, 0x0a,
+	0x1f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f,
+	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x6a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61,
+	0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75,
+	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72,
+	0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e,
+	0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x14, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50,
+	0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03,
+	0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77,
+	0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x25, 0x0a, 0x23, 0x4c, 0x69,
+	0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
+	0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x22, 0xb3, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
+	0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
+	0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1a, 0x63,
+	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f,
+	0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75,
+	0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74,
+	0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61,
+	0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x18, 0x63,
+	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65,
+	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x7c, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, 0x6c,
+	0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d,
+	0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
+	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+	0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
+	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66,
+	0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xcf, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75,
 	0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70,
-	0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01,
-	0x0a, 0x1a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73,
-	0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e,
-	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69,
-	0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
-	0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
-	0x52, 0x18, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
-	0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x7c, 0x0a, 0x21, 0x47, 0x65,
-	0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
-	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a,
+	0x19, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
+	0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b,
+	0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73,
+	0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e,
+	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00,
+	0x52, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
+	0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a,
+	0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x8e, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41,
+	0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
 	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
 	0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20,
 	0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
 	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
 	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74,
-	0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xcf, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74,
-	0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54,
-	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
-	0x8a, 0x01, 0x0a, 0x19, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c,
-	0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
+	0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74,
+	0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f,
+	0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x69, 0x74, 0x68,
+	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61,
+	0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f,
+	0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61,
+	0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61,
+	0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08,
+	0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74,
+	0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+	0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+	0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72,
+	0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d,
+	0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e,
+	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
+	0x22, 0x32, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52,
+	0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14,
+	0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63,
+	0x68, 0x75, 0x6e, 0x6b, 0x22, 0x4d, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e,
+	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12,
+	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+	0x61, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61,
+	0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43,
+	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65,
+	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
+	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+	0x65, 0x22, 0x27, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74,
+	0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
+	0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x0a, 0x18, 0x4c, 0x69,
+	0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
+	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+	0x22, 0x4e, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45,
+	0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a,
+	0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+	0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e,
+	0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73,
+	0x22, 0x58, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
 	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70,
-	0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
-	0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
-	0x65, 0x48, 0x00, 0x52, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c,
-	0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03,
-	0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77,
-	0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x8e, 0x01, 0x0a, 0x15, 0x47,
-	0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
-	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
-	0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72,
-	0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x16,
-	0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73,
-	0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67,
-	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
-	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73,
-	0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x48, 0x00,
-	0x52, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x12, 0x0a,
-	0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61,
-	0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x19,
-	0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f,
-	0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d,
-	0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61,
-	0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d,
-	0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e,
-	0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e,
-	0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
-	0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x4d, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74,
-	0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
-	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a,
-	0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65,
-	0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
-	0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
-	0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
-	0x6e, 0x61, 0x6d, 0x65, 0x22, 0x27, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c,
-	0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d,
-	0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x0a,
-	0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e,
-	0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f,
-	0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a,
-	0x65, 0x63, 0x74, 0x22, 0x4e, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65,
-	0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x31, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x19, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f,
-	0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65,
-	0x6e, 0x74, 0x73, 0x22, 0x58, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c,
-	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
-	0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
-	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a,
-	0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61,
-	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e,
-	0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f,
-	0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a,
-	0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
-	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x22, 0xa6, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12,
-	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
-	0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
-	0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f,
-	0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
-	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d,
-	0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xd0, 0x01, 0x0a, 0x0f, 0x47,
-	0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45,
-	0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67,
-	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
-	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x48, 0x00, 0x52,
-	0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
-	0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75,
-	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72,
-	0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
-	0x65, 0x73, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12,
-	0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03,
-	0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x52, 0x0a,
-	0x06, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d,
-	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
-	0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67,
-	0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d,
-	0x73, 0x22, 0xfd, 0x01, 0x0a, 0x0c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04,
-	0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65,
-	0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
-	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48,
-	0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, 0x0a,
-	0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c,
-	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
-	0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67,
-	0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61,
-	0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44,
-	0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x22, 0x54, 0x0a, 0x0d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b,
-	0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72,
-	0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c,
-	0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x4f, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52,
-	0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70,
-	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72,
-	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f,
-	0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52,
-	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73,
-	0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45,
-	0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
-	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
-	0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05,
-	0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
-	0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75,
-	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72,
-	0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
-	0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xfe, 0x01,
-	0x0a, 0x0d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+	0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x43, 0x72,
+	0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
+	0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69,
+	0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61,
+	0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52,
+	0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52,
+	0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72,
+	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f,
+	0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65,
+	0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa6,
+	0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+	0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
+	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52,
+	0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xd0, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52,
+	0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x72,
+	0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68,
+	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61,
+	0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x04, 0x72, 0x6f,
+	0x6c, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
+	0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
+	0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x48,
+	0x00, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x03,
+	0x72, 0x61, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77,
+	0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x52, 0x0a, 0x06, 0x43, 0x6c,
+	0x61, 0x69, 0x6d, 0x73, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x01,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
+	0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61,
+	0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x22, 0xfd,
+	0x01, 0x0a, 0x0c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
 	0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
 	0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c,
 	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x4b, 0x0a,
@@ -9057,601 +9172,648 @@ var file_api_service_v1alpha1_service_proto_rawDesc = []byte{
 	0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
 	0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
 	0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61,
-	0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x55,
-	0x0a, 0x0e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
-	0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69,
-	0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61,
-	0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52,
-	0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x58, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
-	0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f,
-	0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75,
-	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72,
-	0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22,
-	0x59, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
-	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70,
-	0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
-	0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x2a, 0x51, 0x0a, 0x09, 0x52, 0x61,
-	0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x41, 0x57, 0x5f, 0x46,
-	0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
-	0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41,
-	0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f,
-	0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x02, 0x32, 0xa1, 0x45,
-	0x0a, 0x0c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x83,
-	0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66,
-	0x6f, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49,
-	0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75,
-	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65,
-	0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69,
-	0x67, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
-	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66,
-	0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x47,
-	0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38,
+	0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x54,
+	0x0a, 0x0d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
+	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
+	0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04,
+	0x72, 0x6f, 0x6c, 0x65, 0x22, 0x4f, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65,
+	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a,
+	0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65,
+	0x63, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f,
+	0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f,
+	0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72,
+	0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74,
+	0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b,
+	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c,
+	0x65, 0x73, 0x12, 0x56, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18,
+	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
+	0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
+	0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52,
+	0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x0d, 0x52,
+	0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07,
+	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70,
+	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73,
+	0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65,
+	0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75,
+	0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61,
+	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+	0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65,
+	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52,
+	0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
+	0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x0e, 0x52,
+	0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a,
+	0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69,
+	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
+	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f,
+	0x6c, 0x65, 0x22, 0x58, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
+	0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
+	0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12,
+	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b,
+	0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72,
+	0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c,
+	0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x2a, 0x51, 0x0a, 0x09, 0x52, 0x61, 0x77, 0x46, 0x6f,
+	0x72, 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d,
+	0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
+	0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a,
+	0x53, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52,
+	0x4d, 0x41, 0x54, 0x5f, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x02, 0x32, 0xad, 0x46, 0x0a, 0x0c, 0x4b,
+	0x61, 0x72, 0x67, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e,
+	0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x37,
 	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
 	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69,
-	0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
-	0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
-	0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50,
-	0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69,
-	0x6e, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c,
-	0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a,
-	0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12,
-	0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
-	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
-	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
-	0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
-	0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
-	0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55,
-	0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3f, 0x2e,
-	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
-	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52,
-	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40,
+	0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
+	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65,
+	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x74, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32,
 	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
 	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
-	0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x83, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75,
-	0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
+	0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
+	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50,
+	0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x2e, 0x61, 0x6b,
+	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47,
+	0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
+	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c,
+	0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x77, 0x0a, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x33,
+	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
+	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
 	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73,
-	0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69,
+	0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72,
+	0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61,
 	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73,
 	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
-	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74,
-	0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69,
-	0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
-	0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c,
-	0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
-	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f,
-	0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a,
-	0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75,
+	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
+	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52,
+	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x9b, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61,
+	0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75,
 	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69,
-	0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
-	0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72,
+	0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f,
+	0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b,
+	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43,
+	0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73,
+	0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01,
+	0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
+	0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
+	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
+	0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69,
+	0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
+	0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64,
+	0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65,
+	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
+	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+	0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
 	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61,
-	0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
-	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65,
-	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
-	0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
-	0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
-	0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71,
-	0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75,
+	0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73,
+	0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
+	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53,
+	0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61,
+	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73,
+	0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
+	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
+	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61,
+	0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x47,
+	0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
+	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74,
+	0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75,
 	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
 	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65,
-	0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e,
+	0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c,
+	0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, 0x2e,
 	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
 	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x12, 0x7c, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73,
-	0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
-	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53,
-	0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12,
-	0x7a, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x34,
-	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
-	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
-	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74,
-	0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x52,
-	0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x35, 0x2e, 0x61, 0x6b,
+	0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
+	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67,
+	0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7a, 0x0a, 0x0b,
+	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x61, 0x6b,
 	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52,
-	0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
-	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61,
-	0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c,
-	0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x2e,
-	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
-	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72,
-	0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
-	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f,
-	0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39,
-	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
-	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x0c, 0x47,
-	0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x61, 0x6b,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44,
+	0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
+	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72,
+	0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
+	0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
+	0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72,
+	0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74,
+	0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75,
+	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69,
+	0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
+	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01,
+	0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
+	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b,
 	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47,
-	0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
-	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69,
-	0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x0e, 0x57,
-	0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e,
-	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
-	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50,
-	0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d,
-	0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
-	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72,
-	0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38,
-	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
-	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c,
-	0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57,
+	0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50,
+	0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
+	0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
+	0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50,
+	0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x0e, 0x57, 0x61, 0x74, 0x63,
+	0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75,
 	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65,
-	0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
+	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61,
+	0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
+	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d,
+	0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12,
+	0x83, 0x01, 0x0a, 0x0e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69,
+	0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
 	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a,
-	0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47,
-	0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69,
-	0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
-	0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74,
-	0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34,
-	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
-	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a,
-	0x65, 0x63, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
-	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a,
-	0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f,
+	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b,
 	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c,
-	0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46,
-	0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41,
+	0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+	0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
+	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
+	0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50,
+	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
 	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76,
-	0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
-	0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f,
+	0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b,
+	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47,
+	0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+	0x73, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
+	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
+	0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
+	0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
+	0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
+	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a,
+	0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
+	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f,
+	0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a,
+	0x0e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12,
+	0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
 	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
 	0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68,
-	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65,
-	0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b,
-	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
+	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
+	0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
+	0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72,
+	0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65,
+	0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
+	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72,
+	0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61,
+	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69,
+	0x67, 0x68, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
 	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65,
-	0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a,
-	0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75,
-	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65,
-	0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
-	0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
-	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
-	0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
-	0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68,
+	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
 	0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
-	0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d,
-	0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
+	0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46,
+	0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83,
+	0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67,
+	0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
 	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
 	0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74,
-	0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11,
-	0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61,
-	0x6d, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e,
-	0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e,
-	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
-	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65,
-	0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x51, 0x75,
-	0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75,
+	0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75,
+	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72,
+	0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65,
+	0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75,
+	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72,
+	0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
+	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
+	0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69,
+	0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
+	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69,
+	0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75,
 	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
 	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75,
-	0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68,
-	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x55, 0x70,
-	0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73,
-	0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
+	0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65,
+	0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69,
+	0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
+	0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64,
+	0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
+	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+	0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79,
+	0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
 	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68,
-	0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e,
+	0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
+	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x41, 0x62, 0x6f, 0x72,
+	0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e,
 	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
 	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c,
-	0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x52,
-	0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
-	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
-	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72,
-	0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75,
-	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65,
-	0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c,
-	0x01, 0x0a, 0x11, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
-	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72,
-	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
-	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01,
-	0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73,
-	0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
-	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73,
-	0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69,
+	0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69,
+	0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
+	0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f,
+	0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x57,
+	0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69,
 	0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
 	0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73,
-	0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f,
-	0x75, 0x73, 0x65, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
+	0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
+	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f,
+	0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c,
+	0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x35, 0x2e, 0x61,
+	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
 	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
 	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f,
-	0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75,
+	0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f,
+	0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12,
+	0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73,
+	0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69,
+	0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
+	0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74,
+	0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74,
+	0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75,
 	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65,
-	0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65,
-	0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57,
-	0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
-	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75,
-	0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x86, 0x01,
-	0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73,
-	0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68,
-	0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b,
-	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x72, 0x65,
-	0x73, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x39, 0x2e, 0x61, 0x6b,
-	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52,
-	0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73,
-	0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65,
-	0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
-	0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
-	0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
-	0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
+	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65,
+	0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
 	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72,
-	0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64,
-	0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
-	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
-	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
-	0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
-	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65,
-	0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69,
-	0x61, 0x6c, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
-	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e,
-	0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61,
+	0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x89, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68,
+	0x6f, 0x75, 0x73, 0x65, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
+	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57,
+	0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f,
+	0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11,
+	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c,
+	0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
+	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65,
+	0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e,
+	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
+	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61,
+	0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x44,
+	0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73,
+	0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
+	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e,
+	0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61,
+	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
+	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c,
+	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65,
+	0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x37, 0x2e, 0x61,
 	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73,
 	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
 	0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43,
-	0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75,
-	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69,
-	0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
-	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64,
-	0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
-	0x8c, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e,
-	0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
-	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43,
-	0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65,
-	0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f,
-	0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65,
-	0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
 	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f,
-	0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
-	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63,
-	0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x92, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65,
-	0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
-	0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
-	0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
-	0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
-	0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
-	0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x3c, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64,
+	0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x86, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69,
+	0x61, 0x6c, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
+	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65,
+	0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e,
 	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
 	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65,
-	0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b,
+	0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64,
+	0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3a,
+	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
+	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69,
+	0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75,
+	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70,
+	0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74,
+	0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x3b,
+	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
+	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63,
+	0x72, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b,
 	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55,
-	0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72,
-	0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c,
+	0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
+	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x43, 0x72,
+	0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65,
+	0x74, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
+	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65,
+	0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+	0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92,
+	0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
+	0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
+	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+	0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
+	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72,
+	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72,
+	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x3c, 0x2e, 0x61, 0x6b,
+	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44,
 	0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72,
-	0x65, 0x74, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
-	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a,
-	0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
-	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63,
-	0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
-	0x98, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
-	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69,
+	0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69,
 	0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
-	0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73,
-	0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
-	0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69,
-	0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
-	0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73,
+	0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c,
+	0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73,
 	0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
-	0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x47,
-	0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
-	0x74, 0x65, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
+	0x65, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
 	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
-	0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
-	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54,
-	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
-	0x9b, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
-	0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75,
-	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65,
-	0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70,
-	0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
+	0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
+	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
+	0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79,
+	0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x61, 0x6b,
 	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d,
-	0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xad, 0x01,
-	0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61,
-	0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x45,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47,
+	0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
+	0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69,
+	0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
+	0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74,
+	0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c,
+	0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c,
+	0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
+	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61,
+	0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
+	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e,
+	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xad, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43,
+	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65,
+	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x45, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
+	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43,
+	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65,
+	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x46,
 	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
 	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
 	0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61,
 	0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa7, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c,
+	0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d,
+	0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
 	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75,
-	0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70,
-	0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa7, 0x01,
-	0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c,
-	0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x2e, 0x61,
-	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73,
-	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
-	0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
-	0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x1a, 0x44, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41,
-	0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
-	0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69,
-	0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
-	0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c,
-	0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
-	0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x1a, 0x47, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74,
-	0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
-	0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47,
-	0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x37, 0x2e,
-	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
-	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61,
-	0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x91, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
-	0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
-	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
-	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e,
-	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
-	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79,
-	0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f,
-	0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73,
+	0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c,
+	0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x61, 0x6b, 0x75,
 	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69,
-	0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72,
-	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d,
-	0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75,
+	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65,
+	0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
+	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0xb0, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74,
+	0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
+	0x74, 0x65, 0x12, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
+	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73,
+	0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c,
+	0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x47, 0x2e, 0x61, 0x6b, 0x75,
 	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69,
-	0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
-	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
-	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50,
-	0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa4, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c,
-	0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61,
-	0x73, 0x6b, 0x73, 0x12, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
-	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
-	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74,
-	0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
-	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
-	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43,
-	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54,
-	0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a,
-	0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73,
-	0x6b, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f,
-	0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61,
-	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73,
-	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
-	0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74,
-	0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e,
-	0x54, 0x61, 0x73, 0x6b, 0x12, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
-	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74,
-	0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
+	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65,
+	0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79,
+	0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79,
+	0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
 	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75,
-	0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73,
-	0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x43, 0x72, 0x65,
-	0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
-	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
-	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
-	0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61,
+	0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75,
+	0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x47, 0x65,
+	0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73,
+	0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
+	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52,
+	0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e,
+	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
+	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c,
+	0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x8c, 0x01,
+	0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65,
+	0x6e, 0x74, 0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
+	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65,
+	0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76,
+	0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a,
+	0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61,
+	0x73, 0x6b, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e,
+	0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f,
+	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
+	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f,
+	0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa4,
+	0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72,
+	0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x42, 0x2e, 0x61,
 	0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73,
 	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
-	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65,
+	0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f,
+	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x1a, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
+	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50,
+	0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f,
+	0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75,
+	0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65,
+	0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
+	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d,
+	0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x9e, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+	0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x40, 0x2e,
+	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
+	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f,
+	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f,
+	0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65,
 	0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
 	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65,
+	0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65,
 	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
 	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52,
-	0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x07, 0x47,
-	0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c,
-	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74,
-	0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
-	0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52,
-	0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x05, 0x47,
-	0x72, 0x61, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
-	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
-	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c,
-	0x65, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b,
-	0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f,
-	0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x06, 0x52,
-	0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69,
-	0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61,
-	0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e,
-	0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
-	0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52,
+	0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x44,
+	0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69,
+	0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76,
+	0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c,
+	0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34,
+	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
+	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12,
+	0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61,
+	0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x2e, 0x2e,
+	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
+	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e,
+	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e,
+	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74,
+	0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x6b,
 	0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55,
-	0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x42, 0x93, 0x02, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79,
-	0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
-	0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76,
-	0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68,
-	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2f, 0x6b, 0x61,
-	0x72, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f,
-	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x73, 0x76, 0x63, 0x76, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x04, 0x41, 0x49, 0x4b, 0x53, 0xaa, 0x02, 0x20, 0x41, 0x6b,
-	0x75, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x6f, 0x2e, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x53, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02,
-	0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f,
-	0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
-	0x31, 0xe2, 0x02, 0x2c, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61,
-	0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c,
-	0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
-	0xea, 0x02, 0x24, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x3a, 0x3a, 0x49, 0x6f, 0x3a, 0x3a, 0x4b,
-	0x61, 0x72, 0x67, 0x6f, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x3a, 0x56,
-	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c,
+	0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x06, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x2f,
+	0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f,
+	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x77, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12,
+	0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67,
+	0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f,
+	0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f,
+	0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x93, 0x02, 0x0a, 0x24, 0x63,
+	0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72,
+	0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74,
+	0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
+	0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2f, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69,
+	0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x31, 0x3b, 0x73, 0x76, 0x63, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x04,
+	0x41, 0x49, 0x4b, 0x53, 0xaa, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x6f,
+	0x2e, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79,
+	0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x2c, 0x41, 0x6b, 0x75,
+	0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50,
+	0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x24, 0x41, 0x6b, 0x75, 0x69,
+	0x74, 0x79, 0x3a, 0x3a, 0x49, 0x6f, 0x3a, 0x3a, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x3a, 0x3a, 0x53,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -9667,7 +9829,7 @@ func file_api_service_v1alpha1_service_proto_rawDescGZIP() []byte {
 }
 
 var file_api_service_v1alpha1_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_api_service_v1alpha1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 149)
+var file_api_service_v1alpha1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 151)
 var file_api_service_v1alpha1_service_proto_goTypes = []interface{}{
 	(RawFormat)(0),                                // 0: akuity.io.kargo.service.v1alpha1.RawFormat
 	(*ComponentVersions)(nil),                     // 1: akuity.io.kargo.service.v1alpha1.ComponentVersions
@@ -9720,341 +9882,348 @@ var file_api_service_v1alpha1_service_proto_goTypes = []interface{}{
 	(*AbortPromotionResponse)(nil),                // 48: akuity.io.kargo.service.v1alpha1.AbortPromotionResponse
 	(*DeleteProjectRequest)(nil),                  // 49: akuity.io.kargo.service.v1alpha1.DeleteProjectRequest
 	(*DeleteProjectResponse)(nil),                 // 50: akuity.io.kargo.service.v1alpha1.DeleteProjectResponse
-	(*GetProjectRequest)(nil),                     // 51: akuity.io.kargo.service.v1alpha1.GetProjectRequest
-	(*GetProjectResponse)(nil),                    // 52: akuity.io.kargo.service.v1alpha1.GetProjectResponse
-	(*ListProjectsRequest)(nil),                   // 53: akuity.io.kargo.service.v1alpha1.ListProjectsRequest
-	(*ListProjectsResponse)(nil),                  // 54: akuity.io.kargo.service.v1alpha1.ListProjectsResponse
-	(*ApproveFreightRequest)(nil),                 // 55: akuity.io.kargo.service.v1alpha1.ApproveFreightRequest
-	(*ApproveFreightResponse)(nil),                // 56: akuity.io.kargo.service.v1alpha1.ApproveFreightResponse
-	(*DeleteFreightRequest)(nil),                  // 57: akuity.io.kargo.service.v1alpha1.DeleteFreightRequest
-	(*DeleteFreightResponse)(nil),                 // 58: akuity.io.kargo.service.v1alpha1.DeleteFreightResponse
-	(*GetFreightRequest)(nil),                     // 59: akuity.io.kargo.service.v1alpha1.GetFreightRequest
-	(*GetFreightResponse)(nil),                    // 60: akuity.io.kargo.service.v1alpha1.GetFreightResponse
-	(*PromoteToStageRequest)(nil),                 // 61: akuity.io.kargo.service.v1alpha1.PromoteToStageRequest
-	(*PromoteToStageResponse)(nil),                // 62: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse
-	(*PromoteDownstreamRequest)(nil),              // 63: akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest
-	(*PromoteDownstreamResponse)(nil),             // 64: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse
-	(*QueryFreightRequest)(nil),                   // 65: akuity.io.kargo.service.v1alpha1.QueryFreightRequest
-	(*QueryFreightResponse)(nil),                  // 66: akuity.io.kargo.service.v1alpha1.QueryFreightResponse
-	(*FreightList)(nil),                           // 67: akuity.io.kargo.service.v1alpha1.FreightList
-	(*UpdateFreightAliasRequest)(nil),             // 68: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest
-	(*UpdateFreightAliasResponse)(nil),            // 69: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse
-	(*ReverifyRequest)(nil),                       // 70: akuity.io.kargo.service.v1alpha1.ReverifyRequest
-	(*ReverifyResponse)(nil),                      // 71: akuity.io.kargo.service.v1alpha1.ReverifyResponse
-	(*AbortVerificationRequest)(nil),              // 72: akuity.io.kargo.service.v1alpha1.AbortVerificationRequest
-	(*AbortVerificationResponse)(nil),             // 73: akuity.io.kargo.service.v1alpha1.AbortVerificationResponse
-	(*ListWarehousesRequest)(nil),                 // 74: akuity.io.kargo.service.v1alpha1.ListWarehousesRequest
-	(*ListWarehousesResponse)(nil),                // 75: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse
-	(*GetWarehouseRequest)(nil),                   // 76: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest
-	(*GetWarehouseResponse)(nil),                  // 77: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse
-	(*WatchWarehousesRequest)(nil),                // 78: akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest
-	(*WatchWarehousesResponse)(nil),               // 79: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse
-	(*DeleteWarehouseRequest)(nil),                // 80: akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest
-	(*DeleteWarehouseResponse)(nil),               // 81: akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse
-	(*RefreshWarehouseRequest)(nil),               // 82: akuity.io.kargo.service.v1alpha1.RefreshWarehouseRequest
-	(*RefreshWarehouseResponse)(nil),              // 83: akuity.io.kargo.service.v1alpha1.RefreshWarehouseResponse
-	(*ListProjectSecretsRequest)(nil),             // 84: akuity.io.kargo.service.v1alpha1.ListProjectSecretsRequest
-	(*ListProjectSecretsResponse)(nil),            // 85: akuity.io.kargo.service.v1alpha1.ListProjectSecretsResponse
-	(*CreateProjectSecretRequest)(nil),            // 86: akuity.io.kargo.service.v1alpha1.CreateProjectSecretRequest
-	(*CreateProjectSecretResponse)(nil),           // 87: akuity.io.kargo.service.v1alpha1.CreateProjectSecretResponse
-	(*UpdateProjectSecretRequest)(nil),            // 88: akuity.io.kargo.service.v1alpha1.UpdateProjectSecretRequest
-	(*UpdateProjectSecretResponse)(nil),           // 89: akuity.io.kargo.service.v1alpha1.UpdateProjectSecretResponse
-	(*DeleteProjectSecretRequest)(nil),            // 90: akuity.io.kargo.service.v1alpha1.DeleteProjectSecretRequest
-	(*DeleteProjectSecretResponse)(nil),           // 91: akuity.io.kargo.service.v1alpha1.DeleteProjectSecretResponse
-	(*CreateCredentialsRequest)(nil),              // 92: akuity.io.kargo.service.v1alpha1.CreateCredentialsRequest
-	(*CreateCredentialsResponse)(nil),             // 93: akuity.io.kargo.service.v1alpha1.CreateCredentialsResponse
-	(*DeleteCredentialsRequest)(nil),              // 94: akuity.io.kargo.service.v1alpha1.DeleteCredentialsRequest
-	(*DeleteCredentialsResponse)(nil),             // 95: akuity.io.kargo.service.v1alpha1.DeleteCredentialsResponse
-	(*GetCredentialsRequest)(nil),                 // 96: akuity.io.kargo.service.v1alpha1.GetCredentialsRequest
-	(*GetCredentialsResponse)(nil),                // 97: akuity.io.kargo.service.v1alpha1.GetCredentialsResponse
-	(*ListCredentialsRequest)(nil),                // 98: akuity.io.kargo.service.v1alpha1.ListCredentialsRequest
-	(*ListCredentialsResponse)(nil),               // 99: akuity.io.kargo.service.v1alpha1.ListCredentialsResponse
-	(*UpdateCredentialsRequest)(nil),              // 100: akuity.io.kargo.service.v1alpha1.UpdateCredentialsRequest
-	(*UpdateCredentialsResponse)(nil),             // 101: akuity.io.kargo.service.v1alpha1.UpdateCredentialsResponse
-	(*ListAnalysisTemplatesRequest)(nil),          // 102: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest
-	(*ListAnalysisTemplatesResponse)(nil),         // 103: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse
-	(*ListPromotionTasksRequest)(nil),             // 104: akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest
-	(*ListPromotionTasksResponse)(nil),            // 105: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse
-	(*ListClusterPromotionTasksRequest)(nil),      // 106: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest
-	(*ListClusterPromotionTasksResponse)(nil),     // 107: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse
-	(*GetAnalysisTemplateRequest)(nil),            // 108: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest
-	(*GetAnalysisTemplateResponse)(nil),           // 109: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse
-	(*GetPromotionTaskRequest)(nil),               // 110: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest
-	(*GetPromotionTaskResponse)(nil),              // 111: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse
-	(*GetClusterPromotionTaskRequest)(nil),        // 112: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest
-	(*GetClusterPromotionTaskResponse)(nil),       // 113: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse
-	(*ListClusterAnalysisTemplatesRequest)(nil),   // 114: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest
-	(*ListClusterAnalysisTemplatesResponse)(nil),  // 115: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse
-	(*GetClusterAnalysisTemplateRequest)(nil),     // 116: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest
-	(*GetClusterAnalysisTemplateResponse)(nil),    // 117: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse
-	(*GetAnalysisRunRequest)(nil),                 // 118: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest
-	(*GetAnalysisRunResponse)(nil),                // 119: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse
-	(*GetAnalysisRunLogsRequest)(nil),             // 120: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest
-	(*GetAnalysisRunLogsResponse)(nil),            // 121: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse
-	(*DeleteAnalysisTemplateRequest)(nil),         // 122: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest
-	(*DeleteAnalysisTemplateResponse)(nil),        // 123: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse
-	(*DeleteClusterAnalysisTemplateRequest)(nil),  // 124: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest
-	(*DeleteClusterAnalysisTemplateResponse)(nil), // 125: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse
-	(*ListProjectEventsRequest)(nil),              // 126: akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest
-	(*ListProjectEventsResponse)(nil),             // 127: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse
-	(*CreateRoleRequest)(nil),                     // 128: akuity.io.kargo.service.v1alpha1.CreateRoleRequest
-	(*CreateRoleResponse)(nil),                    // 129: akuity.io.kargo.service.v1alpha1.CreateRoleResponse
-	(*DeleteRoleRequest)(nil),                     // 130: akuity.io.kargo.service.v1alpha1.DeleteRoleRequest
-	(*DeleteRoleResponse)(nil),                    // 131: akuity.io.kargo.service.v1alpha1.DeleteRoleResponse
-	(*GetRoleRequest)(nil),                        // 132: akuity.io.kargo.service.v1alpha1.GetRoleRequest
-	(*GetRoleResponse)(nil),                       // 133: akuity.io.kargo.service.v1alpha1.GetRoleResponse
-	(*Claims)(nil),                                // 134: akuity.io.kargo.service.v1alpha1.Claims
-	(*GrantRequest)(nil),                          // 135: akuity.io.kargo.service.v1alpha1.GrantRequest
-	(*GrantResponse)(nil),                         // 136: akuity.io.kargo.service.v1alpha1.GrantResponse
-	(*ListRolesRequest)(nil),                      // 137: akuity.io.kargo.service.v1alpha1.ListRolesRequest
-	(*ListRolesResponse)(nil),                     // 138: akuity.io.kargo.service.v1alpha1.ListRolesResponse
-	(*RevokeRequest)(nil),                         // 139: akuity.io.kargo.service.v1alpha1.RevokeRequest
-	(*RevokeResponse)(nil),                        // 140: akuity.io.kargo.service.v1alpha1.RevokeResponse
-	(*UpdateRoleRequest)(nil),                     // 141: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest
-	(*UpdateRoleResponse)(nil),                    // 142: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse
-	nil,                                           // 143: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry
-	nil,                                           // 144: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry
-	nil,                                           // 145: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry
-	nil,                                           // 146: akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry
-	nil,                                           // 147: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry
-	nil,                                           // 148: akuity.io.kargo.service.v1alpha1.CreateProjectSecretRequest.DataEntry
-	nil,                                           // 149: akuity.io.kargo.service.v1alpha1.UpdateProjectSecretRequest.DataEntry
-	(*timestamppb.Timestamp)(nil),                 // 150: google.protobuf.Timestamp
-	(*v1alpha1.Stage)(nil),                        // 151: github.com.akuity.kargo.api.v1alpha1.Stage
-	(*v1alpha1.Promotion)(nil),                    // 152: github.com.akuity.kargo.api.v1alpha1.Promotion
-	(*v1alpha1.Project)(nil),                      // 153: github.com.akuity.kargo.api.v1alpha1.Project
-	(*v1alpha1.Freight)(nil),                      // 154: github.com.akuity.kargo.api.v1alpha1.Freight
-	(*v1alpha1.Warehouse)(nil),                    // 155: github.com.akuity.kargo.api.v1alpha1.Warehouse
-	(*v1.Secret)(nil),                             // 156: k8s.io.api.core.v1.Secret
-	(*v1alpha11.AnalysisTemplate)(nil),            // 157: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate
-	(*v1alpha1.PromotionTask)(nil),                // 158: github.com.akuity.kargo.api.v1alpha1.PromotionTask
-	(*v1alpha1.ClusterPromotionTask)(nil),         // 159: github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask
-	(*v1alpha11.ClusterAnalysisTemplate)(nil),     // 160: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate
-	(*v1alpha11.AnalysisRun)(nil),                 // 161: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun
-	(*v1.Event)(nil),                              // 162: k8s.io.api.core.v1.Event
-	(*v1alpha12.Role)(nil),                        // 163: github.com.akuity.kargo.api.rbac.v1alpha1.Role
-	(*v1alpha12.RoleResources)(nil),               // 164: github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources
-	(*v1alpha12.Claim)(nil),                       // 165: github.com.akuity.kargo.api.rbac.v1alpha1.Claim
-	(*v1alpha12.ResourceDetails)(nil),             // 166: github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails
+	(*GetProjectConfigRequest)(nil),               // 51: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest
+	(*GetProjectConfigResponse)(nil),              // 52: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse
+	(*GetProjectRequest)(nil),                     // 53: akuity.io.kargo.service.v1alpha1.GetProjectRequest
+	(*GetProjectResponse)(nil),                    // 54: akuity.io.kargo.service.v1alpha1.GetProjectResponse
+	(*ListProjectsRequest)(nil),                   // 55: akuity.io.kargo.service.v1alpha1.ListProjectsRequest
+	(*ListProjectsResponse)(nil),                  // 56: akuity.io.kargo.service.v1alpha1.ListProjectsResponse
+	(*ApproveFreightRequest)(nil),                 // 57: akuity.io.kargo.service.v1alpha1.ApproveFreightRequest
+	(*ApproveFreightResponse)(nil),                // 58: akuity.io.kargo.service.v1alpha1.ApproveFreightResponse
+	(*DeleteFreightRequest)(nil),                  // 59: akuity.io.kargo.service.v1alpha1.DeleteFreightRequest
+	(*DeleteFreightResponse)(nil),                 // 60: akuity.io.kargo.service.v1alpha1.DeleteFreightResponse
+	(*GetFreightRequest)(nil),                     // 61: akuity.io.kargo.service.v1alpha1.GetFreightRequest
+	(*GetFreightResponse)(nil),                    // 62: akuity.io.kargo.service.v1alpha1.GetFreightResponse
+	(*PromoteToStageRequest)(nil),                 // 63: akuity.io.kargo.service.v1alpha1.PromoteToStageRequest
+	(*PromoteToStageResponse)(nil),                // 64: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse
+	(*PromoteDownstreamRequest)(nil),              // 65: akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest
+	(*PromoteDownstreamResponse)(nil),             // 66: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse
+	(*QueryFreightRequest)(nil),                   // 67: akuity.io.kargo.service.v1alpha1.QueryFreightRequest
+	(*QueryFreightResponse)(nil),                  // 68: akuity.io.kargo.service.v1alpha1.QueryFreightResponse
+	(*FreightList)(nil),                           // 69: akuity.io.kargo.service.v1alpha1.FreightList
+	(*UpdateFreightAliasRequest)(nil),             // 70: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest
+	(*UpdateFreightAliasResponse)(nil),            // 71: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse
+	(*ReverifyRequest)(nil),                       // 72: akuity.io.kargo.service.v1alpha1.ReverifyRequest
+	(*ReverifyResponse)(nil),                      // 73: akuity.io.kargo.service.v1alpha1.ReverifyResponse
+	(*AbortVerificationRequest)(nil),              // 74: akuity.io.kargo.service.v1alpha1.AbortVerificationRequest
+	(*AbortVerificationResponse)(nil),             // 75: akuity.io.kargo.service.v1alpha1.AbortVerificationResponse
+	(*ListWarehousesRequest)(nil),                 // 76: akuity.io.kargo.service.v1alpha1.ListWarehousesRequest
+	(*ListWarehousesResponse)(nil),                // 77: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse
+	(*GetWarehouseRequest)(nil),                   // 78: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest
+	(*GetWarehouseResponse)(nil),                  // 79: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse
+	(*WatchWarehousesRequest)(nil),                // 80: akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest
+	(*WatchWarehousesResponse)(nil),               // 81: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse
+	(*DeleteWarehouseRequest)(nil),                // 82: akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest
+	(*DeleteWarehouseResponse)(nil),               // 83: akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse
+	(*RefreshWarehouseRequest)(nil),               // 84: akuity.io.kargo.service.v1alpha1.RefreshWarehouseRequest
+	(*RefreshWarehouseResponse)(nil),              // 85: akuity.io.kargo.service.v1alpha1.RefreshWarehouseResponse
+	(*ListProjectSecretsRequest)(nil),             // 86: akuity.io.kargo.service.v1alpha1.ListProjectSecretsRequest
+	(*ListProjectSecretsResponse)(nil),            // 87: akuity.io.kargo.service.v1alpha1.ListProjectSecretsResponse
+	(*CreateProjectSecretRequest)(nil),            // 88: akuity.io.kargo.service.v1alpha1.CreateProjectSecretRequest
+	(*CreateProjectSecretResponse)(nil),           // 89: akuity.io.kargo.service.v1alpha1.CreateProjectSecretResponse
+	(*UpdateProjectSecretRequest)(nil),            // 90: akuity.io.kargo.service.v1alpha1.UpdateProjectSecretRequest
+	(*UpdateProjectSecretResponse)(nil),           // 91: akuity.io.kargo.service.v1alpha1.UpdateProjectSecretResponse
+	(*DeleteProjectSecretRequest)(nil),            // 92: akuity.io.kargo.service.v1alpha1.DeleteProjectSecretRequest
+	(*DeleteProjectSecretResponse)(nil),           // 93: akuity.io.kargo.service.v1alpha1.DeleteProjectSecretResponse
+	(*CreateCredentialsRequest)(nil),              // 94: akuity.io.kargo.service.v1alpha1.CreateCredentialsRequest
+	(*CreateCredentialsResponse)(nil),             // 95: akuity.io.kargo.service.v1alpha1.CreateCredentialsResponse
+	(*DeleteCredentialsRequest)(nil),              // 96: akuity.io.kargo.service.v1alpha1.DeleteCredentialsRequest
+	(*DeleteCredentialsResponse)(nil),             // 97: akuity.io.kargo.service.v1alpha1.DeleteCredentialsResponse
+	(*GetCredentialsRequest)(nil),                 // 98: akuity.io.kargo.service.v1alpha1.GetCredentialsRequest
+	(*GetCredentialsResponse)(nil),                // 99: akuity.io.kargo.service.v1alpha1.GetCredentialsResponse
+	(*ListCredentialsRequest)(nil),                // 100: akuity.io.kargo.service.v1alpha1.ListCredentialsRequest
+	(*ListCredentialsResponse)(nil),               // 101: akuity.io.kargo.service.v1alpha1.ListCredentialsResponse
+	(*UpdateCredentialsRequest)(nil),              // 102: akuity.io.kargo.service.v1alpha1.UpdateCredentialsRequest
+	(*UpdateCredentialsResponse)(nil),             // 103: akuity.io.kargo.service.v1alpha1.UpdateCredentialsResponse
+	(*ListAnalysisTemplatesRequest)(nil),          // 104: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest
+	(*ListAnalysisTemplatesResponse)(nil),         // 105: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse
+	(*ListPromotionTasksRequest)(nil),             // 106: akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest
+	(*ListPromotionTasksResponse)(nil),            // 107: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse
+	(*ListClusterPromotionTasksRequest)(nil),      // 108: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest
+	(*ListClusterPromotionTasksResponse)(nil),     // 109: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse
+	(*GetAnalysisTemplateRequest)(nil),            // 110: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest
+	(*GetAnalysisTemplateResponse)(nil),           // 111: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse
+	(*GetPromotionTaskRequest)(nil),               // 112: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest
+	(*GetPromotionTaskResponse)(nil),              // 113: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse
+	(*GetClusterPromotionTaskRequest)(nil),        // 114: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest
+	(*GetClusterPromotionTaskResponse)(nil),       // 115: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse
+	(*ListClusterAnalysisTemplatesRequest)(nil),   // 116: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest
+	(*ListClusterAnalysisTemplatesResponse)(nil),  // 117: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse
+	(*GetClusterAnalysisTemplateRequest)(nil),     // 118: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest
+	(*GetClusterAnalysisTemplateResponse)(nil),    // 119: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse
+	(*GetAnalysisRunRequest)(nil),                 // 120: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest
+	(*GetAnalysisRunResponse)(nil),                // 121: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse
+	(*GetAnalysisRunLogsRequest)(nil),             // 122: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest
+	(*GetAnalysisRunLogsResponse)(nil),            // 123: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse
+	(*DeleteAnalysisTemplateRequest)(nil),         // 124: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest
+	(*DeleteAnalysisTemplateResponse)(nil),        // 125: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse
+	(*DeleteClusterAnalysisTemplateRequest)(nil),  // 126: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest
+	(*DeleteClusterAnalysisTemplateResponse)(nil), // 127: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse
+	(*ListProjectEventsRequest)(nil),              // 128: akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest
+	(*ListProjectEventsResponse)(nil),             // 129: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse
+	(*CreateRoleRequest)(nil),                     // 130: akuity.io.kargo.service.v1alpha1.CreateRoleRequest
+	(*CreateRoleResponse)(nil),                    // 131: akuity.io.kargo.service.v1alpha1.CreateRoleResponse
+	(*DeleteRoleRequest)(nil),                     // 132: akuity.io.kargo.service.v1alpha1.DeleteRoleRequest
+	(*DeleteRoleResponse)(nil),                    // 133: akuity.io.kargo.service.v1alpha1.DeleteRoleResponse
+	(*GetRoleRequest)(nil),                        // 134: akuity.io.kargo.service.v1alpha1.GetRoleRequest
+	(*GetRoleResponse)(nil),                       // 135: akuity.io.kargo.service.v1alpha1.GetRoleResponse
+	(*Claims)(nil),                                // 136: akuity.io.kargo.service.v1alpha1.Claims
+	(*GrantRequest)(nil),                          // 137: akuity.io.kargo.service.v1alpha1.GrantRequest
+	(*GrantResponse)(nil),                         // 138: akuity.io.kargo.service.v1alpha1.GrantResponse
+	(*ListRolesRequest)(nil),                      // 139: akuity.io.kargo.service.v1alpha1.ListRolesRequest
+	(*ListRolesResponse)(nil),                     // 140: akuity.io.kargo.service.v1alpha1.ListRolesResponse
+	(*RevokeRequest)(nil),                         // 141: akuity.io.kargo.service.v1alpha1.RevokeRequest
+	(*RevokeResponse)(nil),                        // 142: akuity.io.kargo.service.v1alpha1.RevokeResponse
+	(*UpdateRoleRequest)(nil),                     // 143: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest
+	(*UpdateRoleResponse)(nil),                    // 144: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse
+	nil,                                           // 145: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry
+	nil,                                           // 146: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry
+	nil,                                           // 147: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry
+	nil,                                           // 148: akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry
+	nil,                                           // 149: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry
+	nil,                                           // 150: akuity.io.kargo.service.v1alpha1.CreateProjectSecretRequest.DataEntry
+	nil,                                           // 151: akuity.io.kargo.service.v1alpha1.UpdateProjectSecretRequest.DataEntry
+	(*timestamppb.Timestamp)(nil),                 // 152: google.protobuf.Timestamp
+	(*v1alpha1.Stage)(nil),                        // 153: github.com.akuity.kargo.api.v1alpha1.Stage
+	(*v1alpha1.Promotion)(nil),                    // 154: github.com.akuity.kargo.api.v1alpha1.Promotion
+	(*v1alpha1.ProjectConfig)(nil),                // 155: github.com.akuity.kargo.api.v1alpha1.ProjectConfig
+	(*v1alpha1.Project)(nil),                      // 156: github.com.akuity.kargo.api.v1alpha1.Project
+	(*v1alpha1.Freight)(nil),                      // 157: github.com.akuity.kargo.api.v1alpha1.Freight
+	(*v1alpha1.Warehouse)(nil),                    // 158: github.com.akuity.kargo.api.v1alpha1.Warehouse
+	(*v1.Secret)(nil),                             // 159: k8s.io.api.core.v1.Secret
+	(*v1alpha11.AnalysisTemplate)(nil),            // 160: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate
+	(*v1alpha1.PromotionTask)(nil),                // 161: github.com.akuity.kargo.api.v1alpha1.PromotionTask
+	(*v1alpha1.ClusterPromotionTask)(nil),         // 162: github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask
+	(*v1alpha11.ClusterAnalysisTemplate)(nil),     // 163: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate
+	(*v1alpha11.AnalysisRun)(nil),                 // 164: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun
+	(*v1.Event)(nil),                              // 165: k8s.io.api.core.v1.Event
+	(*v1alpha12.Role)(nil),                        // 166: github.com.akuity.kargo.api.rbac.v1alpha1.Role
+	(*v1alpha12.RoleResources)(nil),               // 167: github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources
+	(*v1alpha12.Claim)(nil),                       // 168: github.com.akuity.kargo.api.rbac.v1alpha1.Claim
+	(*v1alpha12.ResourceDetails)(nil),             // 169: github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails
 }
 var file_api_service_v1alpha1_service_proto_depIdxs = []int32{
 	2,   // 0: akuity.io.kargo.service.v1alpha1.ComponentVersions.server:type_name -> akuity.io.kargo.service.v1alpha1.VersionInfo
 	2,   // 1: akuity.io.kargo.service.v1alpha1.ComponentVersions.cli:type_name -> akuity.io.kargo.service.v1alpha1.VersionInfo
-	150, // 2: akuity.io.kargo.service.v1alpha1.VersionInfo.build_time:type_name -> google.protobuf.Timestamp
+	152, // 2: akuity.io.kargo.service.v1alpha1.VersionInfo.build_time:type_name -> google.protobuf.Timestamp
 	2,   // 3: akuity.io.kargo.service.v1alpha1.GetVersionInfoResponse.version_info:type_name -> akuity.io.kargo.service.v1alpha1.VersionInfo
-	143, // 4: akuity.io.kargo.service.v1alpha1.GetConfigResponse.argocd_shards:type_name -> akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry
+	145, // 4: akuity.io.kargo.service.v1alpha1.GetConfigResponse.argocd_shards:type_name -> akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry
 	10,  // 5: akuity.io.kargo.service.v1alpha1.GetPublicConfigResponse.oidc_config:type_name -> akuity.io.kargo.service.v1alpha1.OIDCConfig
 	14,  // 6: akuity.io.kargo.service.v1alpha1.CreateResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.CreateResourceResult
 	17,  // 7: akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResult
 	20,  // 8: akuity.io.kargo.service.v1alpha1.UpdateResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.UpdateResourceResult
 	23,  // 9: akuity.io.kargo.service.v1alpha1.DeleteResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.DeleteResourceResult
-	151, // 10: akuity.io.kargo.service.v1alpha1.ListStagesResponse.stages:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage
-	144, // 11: akuity.io.kargo.service.v1alpha1.ListImagesResponse.images:type_name -> akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry
-	145, // 12: akuity.io.kargo.service.v1alpha1.TagMap.tags:type_name -> akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry
-	146, // 13: akuity.io.kargo.service.v1alpha1.ImageStageMap.stages:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry
+	153, // 10: akuity.io.kargo.service.v1alpha1.ListStagesResponse.stages:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage
+	146, // 11: akuity.io.kargo.service.v1alpha1.ListImagesResponse.images:type_name -> akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry
+	147, // 12: akuity.io.kargo.service.v1alpha1.TagMap.tags:type_name -> akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry
+	148, // 13: akuity.io.kargo.service.v1alpha1.ImageStageMap.stages:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry
 	0,   // 14: akuity.io.kargo.service.v1alpha1.GetStageRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
-	151, // 15: akuity.io.kargo.service.v1alpha1.GetStageResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage
-	151, // 16: akuity.io.kargo.service.v1alpha1.WatchStagesResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage
-	151, // 17: akuity.io.kargo.service.v1alpha1.RefreshStageResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage
-	152, // 18: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion
-	152, // 19: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion
+	153, // 15: akuity.io.kargo.service.v1alpha1.GetStageResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage
+	153, // 16: akuity.io.kargo.service.v1alpha1.WatchStagesResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage
+	153, // 17: akuity.io.kargo.service.v1alpha1.RefreshStageResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage
+	154, // 18: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion
+	154, // 19: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion
 	0,   // 20: akuity.io.kargo.service.v1alpha1.GetPromotionRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
-	152, // 21: akuity.io.kargo.service.v1alpha1.GetPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion
-	152, // 22: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion
-	0,   // 23: akuity.io.kargo.service.v1alpha1.GetProjectRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
-	153, // 24: akuity.io.kargo.service.v1alpha1.GetProjectResponse.project:type_name -> github.com.akuity.kargo.api.v1alpha1.Project
-	153, // 25: akuity.io.kargo.service.v1alpha1.ListProjectsResponse.projects:type_name -> github.com.akuity.kargo.api.v1alpha1.Project
-	0,   // 26: akuity.io.kargo.service.v1alpha1.GetFreightRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
-	154, // 27: akuity.io.kargo.service.v1alpha1.GetFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight
-	152, // 28: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion
-	152, // 29: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion
-	147, // 30: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.groups:type_name -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry
-	154, // 31: akuity.io.kargo.service.v1alpha1.FreightList.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight
-	155, // 32: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse.warehouses:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse
-	0,   // 33: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
-	155, // 34: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse
-	155, // 35: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse
-	155, // 36: akuity.io.kargo.service.v1alpha1.RefreshWarehouseResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse
-	156, // 37: akuity.io.kargo.service.v1alpha1.ListProjectSecretsResponse.secrets:type_name -> k8s.io.api.core.v1.Secret
-	148, // 38: akuity.io.kargo.service.v1alpha1.CreateProjectSecretRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateProjectSecretRequest.DataEntry
-	156, // 39: akuity.io.kargo.service.v1alpha1.CreateProjectSecretResponse.secret:type_name -> k8s.io.api.core.v1.Secret
-	149, // 40: akuity.io.kargo.service.v1alpha1.UpdateProjectSecretRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateProjectSecretRequest.DataEntry
-	156, // 41: akuity.io.kargo.service.v1alpha1.UpdateProjectSecretResponse.secret:type_name -> k8s.io.api.core.v1.Secret
-	156, // 42: akuity.io.kargo.service.v1alpha1.CreateCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret
-	0,   // 43: akuity.io.kargo.service.v1alpha1.GetCredentialsRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
-	156, // 44: akuity.io.kargo.service.v1alpha1.GetCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret
-	156, // 45: akuity.io.kargo.service.v1alpha1.ListCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret
-	156, // 46: akuity.io.kargo.service.v1alpha1.UpdateCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret
-	157, // 47: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse.analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate
-	158, // 48: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse.promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask
-	159, // 49: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse.cluster_promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask
-	0,   // 50: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
-	157, // 51: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse.analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate
-	0,   // 52: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
-	158, // 53: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask
-	0,   // 54: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
-	159, // 55: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask
-	160, // 56: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse.cluster_analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate
-	0,   // 57: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
-	160, // 58: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse.cluster_analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate
-	0,   // 59: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
-	161, // 60: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse.analysis_run:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun
-	162, // 61: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse.events:type_name -> k8s.io.api.core.v1.Event
-	163, // 62: akuity.io.kargo.service.v1alpha1.CreateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
-	163, // 63: akuity.io.kargo.service.v1alpha1.CreateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
-	0,   // 64: akuity.io.kargo.service.v1alpha1.GetRoleRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
-	163, // 65: akuity.io.kargo.service.v1alpha1.GetRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
-	164, // 66: akuity.io.kargo.service.v1alpha1.GetRoleResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources
-	165, // 67: akuity.io.kargo.service.v1alpha1.Claims.claims:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Claim
-	134, // 68: akuity.io.kargo.service.v1alpha1.GrantRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims
-	166, // 69: akuity.io.kargo.service.v1alpha1.GrantRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails
-	163, // 70: akuity.io.kargo.service.v1alpha1.GrantResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
-	163, // 71: akuity.io.kargo.service.v1alpha1.ListRolesResponse.roles:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
-	164, // 72: akuity.io.kargo.service.v1alpha1.ListRolesResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources
-	134, // 73: akuity.io.kargo.service.v1alpha1.RevokeRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims
-	166, // 74: akuity.io.kargo.service.v1alpha1.RevokeRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails
-	163, // 75: akuity.io.kargo.service.v1alpha1.RevokeResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
-	163, // 76: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
-	163, // 77: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
-	6,   // 78: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ArgoCDShard
-	29,  // 79: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.TagMap
-	30,  // 80: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap
-	67,  // 81: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.FreightList
-	3,   // 82: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:input_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoRequest
-	5,   // 83: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigRequest
-	8,   // 84: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigRequest
-	11,  // 85: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:input_type -> akuity.io.kargo.service.v1alpha1.AdminLoginRequest
-	13,  // 86: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateResourceRequest
-	16,  // 87: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceRequest
-	19,  // 88: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceRequest
-	22,  // 89: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:input_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceRequest
-	25,  // 90: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:input_type -> akuity.io.kargo.service.v1alpha1.ListStagesRequest
-	27,  // 91: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:input_type -> akuity.io.kargo.service.v1alpha1.ListImagesRequest
-	31,  // 92: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:input_type -> akuity.io.kargo.service.v1alpha1.GetStageRequest
-	33,  // 93: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:input_type -> akuity.io.kargo.service.v1alpha1.WatchStagesRequest
-	35,  // 94: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:input_type -> akuity.io.kargo.service.v1alpha1.DeleteStageRequest
-	37,  // 95: akuity.io.kargo.service.v1alpha1.KargoService.RefreshStage:input_type -> akuity.io.kargo.service.v1alpha1.RefreshStageRequest
-	39,  // 96: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsRequest
-	41,  // 97: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest
-	43,  // 98: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionRequest
-	45,  // 99: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionRequest
-	47,  // 100: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:input_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionRequest
-	49,  // 101: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectRequest
-	51,  // 102: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectRequest
-	53,  // 103: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectsRequest
-	55,  // 104: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:input_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightRequest
-	57,  // 105: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:input_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightRequest
-	59,  // 106: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:input_type -> akuity.io.kargo.service.v1alpha1.GetFreightRequest
-	61,  // 107: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:input_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageRequest
-	63,  // 108: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:input_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest
-	65,  // 109: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:input_type -> akuity.io.kargo.service.v1alpha1.QueryFreightRequest
-	68,  // 110: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:input_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest
-	70,  // 111: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:input_type -> akuity.io.kargo.service.v1alpha1.ReverifyRequest
-	72,  // 112: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:input_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationRequest
-	74,  // 113: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesRequest
-	76,  // 114: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseRequest
-	78,  // 115: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest
-	80,  // 116: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest
-	82,  // 117: akuity.io.kargo.service.v1alpha1.KargoService.RefreshWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.RefreshWarehouseRequest
-	92,  // 118: akuity.io.kargo.service.v1alpha1.KargoService.CreateCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateCredentialsRequest
-	94,  // 119: akuity.io.kargo.service.v1alpha1.KargoService.DeleteCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteCredentialsRequest
-	96,  // 120: akuity.io.kargo.service.v1alpha1.KargoService.GetCredentials:input_type -> akuity.io.kargo.service.v1alpha1.GetCredentialsRequest
-	98,  // 121: akuity.io.kargo.service.v1alpha1.KargoService.ListCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListCredentialsRequest
-	100, // 122: akuity.io.kargo.service.v1alpha1.KargoService.UpdateCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateCredentialsRequest
-	84,  // 123: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectSecrets:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectSecretsRequest
-	86,  // 124: akuity.io.kargo.service.v1alpha1.KargoService.CreateProjectSecret:input_type -> akuity.io.kargo.service.v1alpha1.CreateProjectSecretRequest
-	88,  // 125: akuity.io.kargo.service.v1alpha1.KargoService.UpdateProjectSecret:input_type -> akuity.io.kargo.service.v1alpha1.UpdateProjectSecretRequest
-	90,  // 126: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectSecret:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectSecretRequest
-	102, // 127: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest
-	108, // 128: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest
-	122, // 129: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest
-	114, // 130: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest
-	116, // 131: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest
-	124, // 132: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest
-	118, // 133: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest
-	120, // 134: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest
-	126, // 135: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest
-	104, // 136: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest
-	106, // 137: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest
-	110, // 138: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest
-	112, // 139: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest
-	128, // 140: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:input_type -> akuity.io.kargo.service.v1alpha1.CreateRoleRequest
-	130, // 141: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleRequest
-	132, // 142: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:input_type -> akuity.io.kargo.service.v1alpha1.GetRoleRequest
-	135, // 143: akuity.io.kargo.service.v1alpha1.KargoService.Grant:input_type -> akuity.io.kargo.service.v1alpha1.GrantRequest
-	137, // 144: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:input_type -> akuity.io.kargo.service.v1alpha1.ListRolesRequest
-	139, // 145: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:input_type -> akuity.io.kargo.service.v1alpha1.RevokeRequest
-	141, // 146: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleRequest
-	4,   // 147: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:output_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoResponse
-	7,   // 148: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigResponse
-	9,   // 149: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigResponse
-	12,  // 150: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:output_type -> akuity.io.kargo.service.v1alpha1.AdminLoginResponse
-	15,  // 151: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateResourceResponse
-	18,  // 152: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResponse
-	21,  // 153: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceResponse
-	24,  // 154: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:output_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceResponse
-	26,  // 155: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:output_type -> akuity.io.kargo.service.v1alpha1.ListStagesResponse
-	28,  // 156: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:output_type -> akuity.io.kargo.service.v1alpha1.ListImagesResponse
-	32,  // 157: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:output_type -> akuity.io.kargo.service.v1alpha1.GetStageResponse
-	34,  // 158: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:output_type -> akuity.io.kargo.service.v1alpha1.WatchStagesResponse
-	36,  // 159: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:output_type -> akuity.io.kargo.service.v1alpha1.DeleteStageResponse
-	38,  // 160: akuity.io.kargo.service.v1alpha1.KargoService.RefreshStage:output_type -> akuity.io.kargo.service.v1alpha1.RefreshStageResponse
-	40,  // 161: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsResponse
-	42,  // 162: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse
-	44,  // 163: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionResponse
-	46,  // 164: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionResponse
-	48,  // 165: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:output_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionResponse
-	50,  // 166: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectResponse
-	52,  // 167: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectResponse
-	54,  // 168: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectsResponse
-	56,  // 169: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:output_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightResponse
-	58,  // 170: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:output_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightResponse
-	60,  // 171: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:output_type -> akuity.io.kargo.service.v1alpha1.GetFreightResponse
-	62,  // 172: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:output_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageResponse
-	64,  // 173: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:output_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse
-	66,  // 174: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:output_type -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse
-	69,  // 175: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:output_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse
-	71,  // 176: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:output_type -> akuity.io.kargo.service.v1alpha1.ReverifyResponse
-	73,  // 177: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:output_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationResponse
-	75,  // 178: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesResponse
-	77,  // 179: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseResponse
-	79,  // 180: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse
-	81,  // 181: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse
-	83,  // 182: akuity.io.kargo.service.v1alpha1.KargoService.RefreshWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.RefreshWarehouseResponse
-	93,  // 183: akuity.io.kargo.service.v1alpha1.KargoService.CreateCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateCredentialsResponse
-	95,  // 184: akuity.io.kargo.service.v1alpha1.KargoService.DeleteCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteCredentialsResponse
-	97,  // 185: akuity.io.kargo.service.v1alpha1.KargoService.GetCredentials:output_type -> akuity.io.kargo.service.v1alpha1.GetCredentialsResponse
-	99,  // 186: akuity.io.kargo.service.v1alpha1.KargoService.ListCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListCredentialsResponse
-	101, // 187: akuity.io.kargo.service.v1alpha1.KargoService.UpdateCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateCredentialsResponse
-	85,  // 188: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectSecrets:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectSecretsResponse
-	87,  // 189: akuity.io.kargo.service.v1alpha1.KargoService.CreateProjectSecret:output_type -> akuity.io.kargo.service.v1alpha1.CreateProjectSecretResponse
-	89,  // 190: akuity.io.kargo.service.v1alpha1.KargoService.UpdateProjectSecret:output_type -> akuity.io.kargo.service.v1alpha1.UpdateProjectSecretResponse
-	91,  // 191: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectSecret:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectSecretResponse
-	103, // 192: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse
-	109, // 193: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse
-	123, // 194: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse
-	115, // 195: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse
-	117, // 196: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse
-	125, // 197: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse
-	119, // 198: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse
-	121, // 199: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse
-	127, // 200: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse
-	105, // 201: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse
-	107, // 202: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse
-	111, // 203: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse
-	113, // 204: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse
-	129, // 205: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:output_type -> akuity.io.kargo.service.v1alpha1.CreateRoleResponse
-	131, // 206: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleResponse
-	133, // 207: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:output_type -> akuity.io.kargo.service.v1alpha1.GetRoleResponse
-	136, // 208: akuity.io.kargo.service.v1alpha1.KargoService.Grant:output_type -> akuity.io.kargo.service.v1alpha1.GrantResponse
-	138, // 209: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:output_type -> akuity.io.kargo.service.v1alpha1.ListRolesResponse
-	140, // 210: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:output_type -> akuity.io.kargo.service.v1alpha1.RevokeResponse
-	142, // 211: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleResponse
-	147, // [147:212] is the sub-list for method output_type
-	82,  // [82:147] is the sub-list for method input_type
-	82,  // [82:82] is the sub-list for extension type_name
-	82,  // [82:82] is the sub-list for extension extendee
-	0,   // [0:82] is the sub-list for field type_name
+	154, // 21: akuity.io.kargo.service.v1alpha1.GetPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion
+	154, // 22: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion
+	0,   // 23: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
+	155, // 24: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse.project_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ProjectConfig
+	0,   // 25: akuity.io.kargo.service.v1alpha1.GetProjectRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
+	156, // 26: akuity.io.kargo.service.v1alpha1.GetProjectResponse.project:type_name -> github.com.akuity.kargo.api.v1alpha1.Project
+	156, // 27: akuity.io.kargo.service.v1alpha1.ListProjectsResponse.projects:type_name -> github.com.akuity.kargo.api.v1alpha1.Project
+	0,   // 28: akuity.io.kargo.service.v1alpha1.GetFreightRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
+	157, // 29: akuity.io.kargo.service.v1alpha1.GetFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight
+	154, // 30: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion
+	154, // 31: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion
+	149, // 32: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.groups:type_name -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry
+	157, // 33: akuity.io.kargo.service.v1alpha1.FreightList.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight
+	158, // 34: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse.warehouses:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse
+	0,   // 35: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
+	158, // 36: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse
+	158, // 37: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse
+	158, // 38: akuity.io.kargo.service.v1alpha1.RefreshWarehouseResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse
+	159, // 39: akuity.io.kargo.service.v1alpha1.ListProjectSecretsResponse.secrets:type_name -> k8s.io.api.core.v1.Secret
+	150, // 40: akuity.io.kargo.service.v1alpha1.CreateProjectSecretRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateProjectSecretRequest.DataEntry
+	159, // 41: akuity.io.kargo.service.v1alpha1.CreateProjectSecretResponse.secret:type_name -> k8s.io.api.core.v1.Secret
+	151, // 42: akuity.io.kargo.service.v1alpha1.UpdateProjectSecretRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateProjectSecretRequest.DataEntry
+	159, // 43: akuity.io.kargo.service.v1alpha1.UpdateProjectSecretResponse.secret:type_name -> k8s.io.api.core.v1.Secret
+	159, // 44: akuity.io.kargo.service.v1alpha1.CreateCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret
+	0,   // 45: akuity.io.kargo.service.v1alpha1.GetCredentialsRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
+	159, // 46: akuity.io.kargo.service.v1alpha1.GetCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret
+	159, // 47: akuity.io.kargo.service.v1alpha1.ListCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret
+	159, // 48: akuity.io.kargo.service.v1alpha1.UpdateCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret
+	160, // 49: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse.analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate
+	161, // 50: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse.promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask
+	162, // 51: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse.cluster_promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask
+	0,   // 52: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
+	160, // 53: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse.analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate
+	0,   // 54: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
+	161, // 55: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask
+	0,   // 56: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
+	162, // 57: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask
+	163, // 58: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse.cluster_analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate
+	0,   // 59: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
+	163, // 60: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse.cluster_analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate
+	0,   // 61: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
+	164, // 62: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse.analysis_run:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun
+	165, // 63: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse.events:type_name -> k8s.io.api.core.v1.Event
+	166, // 64: akuity.io.kargo.service.v1alpha1.CreateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
+	166, // 65: akuity.io.kargo.service.v1alpha1.CreateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
+	0,   // 66: akuity.io.kargo.service.v1alpha1.GetRoleRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat
+	166, // 67: akuity.io.kargo.service.v1alpha1.GetRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
+	167, // 68: akuity.io.kargo.service.v1alpha1.GetRoleResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources
+	168, // 69: akuity.io.kargo.service.v1alpha1.Claims.claims:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Claim
+	136, // 70: akuity.io.kargo.service.v1alpha1.GrantRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims
+	169, // 71: akuity.io.kargo.service.v1alpha1.GrantRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails
+	166, // 72: akuity.io.kargo.service.v1alpha1.GrantResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
+	166, // 73: akuity.io.kargo.service.v1alpha1.ListRolesResponse.roles:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
+	167, // 74: akuity.io.kargo.service.v1alpha1.ListRolesResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources
+	136, // 75: akuity.io.kargo.service.v1alpha1.RevokeRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims
+	169, // 76: akuity.io.kargo.service.v1alpha1.RevokeRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails
+	166, // 77: akuity.io.kargo.service.v1alpha1.RevokeResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
+	166, // 78: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
+	166, // 79: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role
+	6,   // 80: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ArgoCDShard
+	29,  // 81: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.TagMap
+	30,  // 82: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap
+	69,  // 83: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.FreightList
+	3,   // 84: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:input_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoRequest
+	5,   // 85: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigRequest
+	8,   // 86: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigRequest
+	11,  // 87: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:input_type -> akuity.io.kargo.service.v1alpha1.AdminLoginRequest
+	13,  // 88: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateResourceRequest
+	16,  // 89: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceRequest
+	19,  // 90: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceRequest
+	22,  // 91: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:input_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceRequest
+	25,  // 92: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:input_type -> akuity.io.kargo.service.v1alpha1.ListStagesRequest
+	27,  // 93: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:input_type -> akuity.io.kargo.service.v1alpha1.ListImagesRequest
+	31,  // 94: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:input_type -> akuity.io.kargo.service.v1alpha1.GetStageRequest
+	33,  // 95: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:input_type -> akuity.io.kargo.service.v1alpha1.WatchStagesRequest
+	35,  // 96: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:input_type -> akuity.io.kargo.service.v1alpha1.DeleteStageRequest
+	37,  // 97: akuity.io.kargo.service.v1alpha1.KargoService.RefreshStage:input_type -> akuity.io.kargo.service.v1alpha1.RefreshStageRequest
+	39,  // 98: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsRequest
+	41,  // 99: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest
+	43,  // 100: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionRequest
+	45,  // 101: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionRequest
+	47,  // 102: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:input_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionRequest
+	49,  // 103: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectRequest
+	53,  // 104: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectRequest
+	55,  // 105: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectsRequest
+	51,  // 106: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest
+	57,  // 107: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:input_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightRequest
+	59,  // 108: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:input_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightRequest
+	61,  // 109: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:input_type -> akuity.io.kargo.service.v1alpha1.GetFreightRequest
+	63,  // 110: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:input_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageRequest
+	65,  // 111: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:input_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest
+	67,  // 112: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:input_type -> akuity.io.kargo.service.v1alpha1.QueryFreightRequest
+	70,  // 113: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:input_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest
+	72,  // 114: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:input_type -> akuity.io.kargo.service.v1alpha1.ReverifyRequest
+	74,  // 115: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:input_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationRequest
+	76,  // 116: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesRequest
+	78,  // 117: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseRequest
+	80,  // 118: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest
+	82,  // 119: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest
+	84,  // 120: akuity.io.kargo.service.v1alpha1.KargoService.RefreshWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.RefreshWarehouseRequest
+	94,  // 121: akuity.io.kargo.service.v1alpha1.KargoService.CreateCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateCredentialsRequest
+	96,  // 122: akuity.io.kargo.service.v1alpha1.KargoService.DeleteCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteCredentialsRequest
+	98,  // 123: akuity.io.kargo.service.v1alpha1.KargoService.GetCredentials:input_type -> akuity.io.kargo.service.v1alpha1.GetCredentialsRequest
+	100, // 124: akuity.io.kargo.service.v1alpha1.KargoService.ListCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListCredentialsRequest
+	102, // 125: akuity.io.kargo.service.v1alpha1.KargoService.UpdateCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateCredentialsRequest
+	86,  // 126: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectSecrets:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectSecretsRequest
+	88,  // 127: akuity.io.kargo.service.v1alpha1.KargoService.CreateProjectSecret:input_type -> akuity.io.kargo.service.v1alpha1.CreateProjectSecretRequest
+	90,  // 128: akuity.io.kargo.service.v1alpha1.KargoService.UpdateProjectSecret:input_type -> akuity.io.kargo.service.v1alpha1.UpdateProjectSecretRequest
+	92,  // 129: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectSecret:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectSecretRequest
+	104, // 130: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest
+	110, // 131: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest
+	124, // 132: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest
+	116, // 133: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest
+	118, // 134: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest
+	126, // 135: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest
+	120, // 136: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest
+	122, // 137: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest
+	128, // 138: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest
+	106, // 139: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest
+	108, // 140: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest
+	112, // 141: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest
+	114, // 142: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest
+	130, // 143: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:input_type -> akuity.io.kargo.service.v1alpha1.CreateRoleRequest
+	132, // 144: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleRequest
+	134, // 145: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:input_type -> akuity.io.kargo.service.v1alpha1.GetRoleRequest
+	137, // 146: akuity.io.kargo.service.v1alpha1.KargoService.Grant:input_type -> akuity.io.kargo.service.v1alpha1.GrantRequest
+	139, // 147: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:input_type -> akuity.io.kargo.service.v1alpha1.ListRolesRequest
+	141, // 148: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:input_type -> akuity.io.kargo.service.v1alpha1.RevokeRequest
+	143, // 149: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleRequest
+	4,   // 150: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:output_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoResponse
+	7,   // 151: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigResponse
+	9,   // 152: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigResponse
+	12,  // 153: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:output_type -> akuity.io.kargo.service.v1alpha1.AdminLoginResponse
+	15,  // 154: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateResourceResponse
+	18,  // 155: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResponse
+	21,  // 156: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceResponse
+	24,  // 157: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:output_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceResponse
+	26,  // 158: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:output_type -> akuity.io.kargo.service.v1alpha1.ListStagesResponse
+	28,  // 159: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:output_type -> akuity.io.kargo.service.v1alpha1.ListImagesResponse
+	32,  // 160: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:output_type -> akuity.io.kargo.service.v1alpha1.GetStageResponse
+	34,  // 161: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:output_type -> akuity.io.kargo.service.v1alpha1.WatchStagesResponse
+	36,  // 162: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:output_type -> akuity.io.kargo.service.v1alpha1.DeleteStageResponse
+	38,  // 163: akuity.io.kargo.service.v1alpha1.KargoService.RefreshStage:output_type -> akuity.io.kargo.service.v1alpha1.RefreshStageResponse
+	40,  // 164: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsResponse
+	42,  // 165: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse
+	44,  // 166: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionResponse
+	46,  // 167: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionResponse
+	48,  // 168: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:output_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionResponse
+	50,  // 169: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectResponse
+	54,  // 170: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectResponse
+	56,  // 171: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectsResponse
+	52,  // 172: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse
+	58,  // 173: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:output_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightResponse
+	60,  // 174: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:output_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightResponse
+	62,  // 175: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:output_type -> akuity.io.kargo.service.v1alpha1.GetFreightResponse
+	64,  // 176: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:output_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageResponse
+	66,  // 177: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:output_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse
+	68,  // 178: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:output_type -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse
+	71,  // 179: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:output_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse
+	73,  // 180: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:output_type -> akuity.io.kargo.service.v1alpha1.ReverifyResponse
+	75,  // 181: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:output_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationResponse
+	77,  // 182: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesResponse
+	79,  // 183: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseResponse
+	81,  // 184: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse
+	83,  // 185: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse
+	85,  // 186: akuity.io.kargo.service.v1alpha1.KargoService.RefreshWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.RefreshWarehouseResponse
+	95,  // 187: akuity.io.kargo.service.v1alpha1.KargoService.CreateCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateCredentialsResponse
+	97,  // 188: akuity.io.kargo.service.v1alpha1.KargoService.DeleteCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteCredentialsResponse
+	99,  // 189: akuity.io.kargo.service.v1alpha1.KargoService.GetCredentials:output_type -> akuity.io.kargo.service.v1alpha1.GetCredentialsResponse
+	101, // 190: akuity.io.kargo.service.v1alpha1.KargoService.ListCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListCredentialsResponse
+	103, // 191: akuity.io.kargo.service.v1alpha1.KargoService.UpdateCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateCredentialsResponse
+	87,  // 192: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectSecrets:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectSecretsResponse
+	89,  // 193: akuity.io.kargo.service.v1alpha1.KargoService.CreateProjectSecret:output_type -> akuity.io.kargo.service.v1alpha1.CreateProjectSecretResponse
+	91,  // 194: akuity.io.kargo.service.v1alpha1.KargoService.UpdateProjectSecret:output_type -> akuity.io.kargo.service.v1alpha1.UpdateProjectSecretResponse
+	93,  // 195: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectSecret:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectSecretResponse
+	105, // 196: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse
+	111, // 197: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse
+	125, // 198: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse
+	117, // 199: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse
+	119, // 200: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse
+	127, // 201: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse
+	121, // 202: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse
+	123, // 203: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse
+	129, // 204: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse
+	107, // 205: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse
+	109, // 206: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse
+	113, // 207: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse
+	115, // 208: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse
+	131, // 209: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:output_type -> akuity.io.kargo.service.v1alpha1.CreateRoleResponse
+	133, // 210: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleResponse
+	135, // 211: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:output_type -> akuity.io.kargo.service.v1alpha1.GetRoleResponse
+	138, // 212: akuity.io.kargo.service.v1alpha1.KargoService.Grant:output_type -> akuity.io.kargo.service.v1alpha1.GrantResponse
+	140, // 213: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:output_type -> akuity.io.kargo.service.v1alpha1.ListRolesResponse
+	142, // 214: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:output_type -> akuity.io.kargo.service.v1alpha1.RevokeResponse
+	144, // 215: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleResponse
+	150, // [150:216] is the sub-list for method output_type
+	84,  // [84:150] is the sub-list for method input_type
+	84,  // [84:84] is the sub-list for extension type_name
+	84,  // [84:84] is the sub-list for extension extendee
+	0,   // [0:84] is the sub-list for field type_name
 }
 
 func init() { file_api_service_v1alpha1_service_proto_init() }
@@ -10664,7 +10833,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetProjectRequest); i {
+			switch v := v.(*GetProjectConfigRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10676,7 +10845,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetProjectResponse); i {
+			switch v := v.(*GetProjectConfigResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10688,7 +10857,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListProjectsRequest); i {
+			switch v := v.(*GetProjectRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10700,7 +10869,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListProjectsResponse); i {
+			switch v := v.(*GetProjectResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10712,7 +10881,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ApproveFreightRequest); i {
+			switch v := v.(*ListProjectsRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10724,7 +10893,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ApproveFreightResponse); i {
+			switch v := v.(*ListProjectsResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10736,7 +10905,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteFreightRequest); i {
+			switch v := v.(*ApproveFreightRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10748,7 +10917,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteFreightResponse); i {
+			switch v := v.(*ApproveFreightResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10760,7 +10929,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetFreightRequest); i {
+			switch v := v.(*DeleteFreightRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10772,7 +10941,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetFreightResponse); i {
+			switch v := v.(*DeleteFreightResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10784,7 +10953,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PromoteToStageRequest); i {
+			switch v := v.(*GetFreightRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10796,7 +10965,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PromoteToStageResponse); i {
+			switch v := v.(*GetFreightResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10808,7 +10977,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PromoteDownstreamRequest); i {
+			switch v := v.(*PromoteToStageRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10820,7 +10989,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PromoteDownstreamResponse); i {
+			switch v := v.(*PromoteToStageResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10832,7 +11001,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*QueryFreightRequest); i {
+			switch v := v.(*PromoteDownstreamRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10844,7 +11013,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*QueryFreightResponse); i {
+			switch v := v.(*PromoteDownstreamResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10856,7 +11025,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FreightList); i {
+			switch v := v.(*QueryFreightRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10868,7 +11037,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UpdateFreightAliasRequest); i {
+			switch v := v.(*QueryFreightResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10880,7 +11049,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UpdateFreightAliasResponse); i {
+			switch v := v.(*FreightList); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10892,7 +11061,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ReverifyRequest); i {
+			switch v := v.(*UpdateFreightAliasRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10904,7 +11073,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ReverifyResponse); i {
+			switch v := v.(*UpdateFreightAliasResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10916,7 +11085,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AbortVerificationRequest); i {
+			switch v := v.(*ReverifyRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10928,7 +11097,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AbortVerificationResponse); i {
+			switch v := v.(*ReverifyResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10940,7 +11109,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListWarehousesRequest); i {
+			switch v := v.(*AbortVerificationRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10952,7 +11121,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListWarehousesResponse); i {
+			switch v := v.(*AbortVerificationResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10964,7 +11133,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetWarehouseRequest); i {
+			switch v := v.(*ListWarehousesRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10976,7 +11145,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetWarehouseResponse); i {
+			switch v := v.(*ListWarehousesResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -10988,7 +11157,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WatchWarehousesRequest); i {
+			switch v := v.(*GetWarehouseRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11000,7 +11169,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WatchWarehousesResponse); i {
+			switch v := v.(*GetWarehouseResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11012,7 +11181,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteWarehouseRequest); i {
+			switch v := v.(*WatchWarehousesRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11024,7 +11193,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteWarehouseResponse); i {
+			switch v := v.(*WatchWarehousesResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11036,7 +11205,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RefreshWarehouseRequest); i {
+			switch v := v.(*DeleteWarehouseRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11048,7 +11217,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RefreshWarehouseResponse); i {
+			switch v := v.(*DeleteWarehouseResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11060,7 +11229,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListProjectSecretsRequest); i {
+			switch v := v.(*RefreshWarehouseRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11072,7 +11241,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListProjectSecretsResponse); i {
+			switch v := v.(*RefreshWarehouseResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11084,7 +11253,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CreateProjectSecretRequest); i {
+			switch v := v.(*ListProjectSecretsRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11096,7 +11265,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CreateProjectSecretResponse); i {
+			switch v := v.(*ListProjectSecretsResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11108,7 +11277,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UpdateProjectSecretRequest); i {
+			switch v := v.(*CreateProjectSecretRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11120,7 +11289,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UpdateProjectSecretResponse); i {
+			switch v := v.(*CreateProjectSecretResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11132,7 +11301,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteProjectSecretRequest); i {
+			switch v := v.(*UpdateProjectSecretRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11144,7 +11313,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteProjectSecretResponse); i {
+			switch v := v.(*UpdateProjectSecretResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11156,7 +11325,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CreateCredentialsRequest); i {
+			switch v := v.(*DeleteProjectSecretRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11168,7 +11337,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CreateCredentialsResponse); i {
+			switch v := v.(*DeleteProjectSecretResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11180,7 +11349,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteCredentialsRequest); i {
+			switch v := v.(*CreateCredentialsRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11192,7 +11361,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteCredentialsResponse); i {
+			switch v := v.(*CreateCredentialsResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11204,7 +11373,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetCredentialsRequest); i {
+			switch v := v.(*DeleteCredentialsRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11216,7 +11385,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetCredentialsResponse); i {
+			switch v := v.(*DeleteCredentialsResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11228,7 +11397,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListCredentialsRequest); i {
+			switch v := v.(*GetCredentialsRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11240,7 +11409,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListCredentialsResponse); i {
+			switch v := v.(*GetCredentialsResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11252,7 +11421,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UpdateCredentialsRequest); i {
+			switch v := v.(*ListCredentialsRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11264,7 +11433,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UpdateCredentialsResponse); i {
+			switch v := v.(*ListCredentialsResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11276,7 +11445,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListAnalysisTemplatesRequest); i {
+			switch v := v.(*UpdateCredentialsRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11288,7 +11457,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListAnalysisTemplatesResponse); i {
+			switch v := v.(*UpdateCredentialsResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11300,7 +11469,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListPromotionTasksRequest); i {
+			switch v := v.(*ListAnalysisTemplatesRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11312,7 +11481,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListPromotionTasksResponse); i {
+			switch v := v.(*ListAnalysisTemplatesResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11324,7 +11493,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListClusterPromotionTasksRequest); i {
+			switch v := v.(*ListPromotionTasksRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11336,7 +11505,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListClusterPromotionTasksResponse); i {
+			switch v := v.(*ListPromotionTasksResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11348,7 +11517,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetAnalysisTemplateRequest); i {
+			switch v := v.(*ListClusterPromotionTasksRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11360,7 +11529,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetAnalysisTemplateResponse); i {
+			switch v := v.(*ListClusterPromotionTasksResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11372,7 +11541,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetPromotionTaskRequest); i {
+			switch v := v.(*GetAnalysisTemplateRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11384,7 +11553,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetPromotionTaskResponse); i {
+			switch v := v.(*GetAnalysisTemplateResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11396,7 +11565,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetClusterPromotionTaskRequest); i {
+			switch v := v.(*GetPromotionTaskRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11408,7 +11577,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetClusterPromotionTaskResponse); i {
+			switch v := v.(*GetPromotionTaskResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11420,7 +11589,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListClusterAnalysisTemplatesRequest); i {
+			switch v := v.(*GetClusterPromotionTaskRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11432,7 +11601,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListClusterAnalysisTemplatesResponse); i {
+			switch v := v.(*GetClusterPromotionTaskResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11444,7 +11613,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetClusterAnalysisTemplateRequest); i {
+			switch v := v.(*ListClusterAnalysisTemplatesRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11456,7 +11625,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetClusterAnalysisTemplateResponse); i {
+			switch v := v.(*ListClusterAnalysisTemplatesResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11468,7 +11637,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetAnalysisRunRequest); i {
+			switch v := v.(*GetClusterAnalysisTemplateRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11480,7 +11649,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetAnalysisRunResponse); i {
+			switch v := v.(*GetClusterAnalysisTemplateResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11492,7 +11661,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetAnalysisRunLogsRequest); i {
+			switch v := v.(*GetAnalysisRunRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11504,7 +11673,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetAnalysisRunLogsResponse); i {
+			switch v := v.(*GetAnalysisRunResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11516,7 +11685,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteAnalysisTemplateRequest); i {
+			switch v := v.(*GetAnalysisRunLogsRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11528,7 +11697,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteAnalysisTemplateResponse); i {
+			switch v := v.(*GetAnalysisRunLogsResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11540,7 +11709,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteClusterAnalysisTemplateRequest); i {
+			switch v := v.(*DeleteAnalysisTemplateRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11552,7 +11721,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteClusterAnalysisTemplateResponse); i {
+			switch v := v.(*DeleteAnalysisTemplateResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11564,7 +11733,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListProjectEventsRequest); i {
+			switch v := v.(*DeleteClusterAnalysisTemplateRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11576,7 +11745,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListProjectEventsResponse); i {
+			switch v := v.(*DeleteClusterAnalysisTemplateResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11588,7 +11757,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CreateRoleRequest); i {
+			switch v := v.(*ListProjectEventsRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11600,7 +11769,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CreateRoleResponse); i {
+			switch v := v.(*ListProjectEventsResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11612,7 +11781,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteRoleRequest); i {
+			switch v := v.(*CreateRoleRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11624,7 +11793,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteRoleResponse); i {
+			switch v := v.(*CreateRoleResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11636,7 +11805,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetRoleRequest); i {
+			switch v := v.(*DeleteRoleRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11648,7 +11817,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetRoleResponse); i {
+			switch v := v.(*DeleteRoleResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11660,7 +11829,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Claims); i {
+			switch v := v.(*GetRoleRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11672,7 +11841,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GrantRequest); i {
+			switch v := v.(*GetRoleResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11684,7 +11853,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GrantResponse); i {
+			switch v := v.(*Claims); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11696,7 +11865,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListRolesRequest); i {
+			switch v := v.(*GrantRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11708,7 +11877,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListRolesResponse); i {
+			switch v := v.(*GrantResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11720,7 +11889,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RevokeRequest); i {
+			switch v := v.(*ListRolesRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11732,7 +11901,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RevokeResponse); i {
+			switch v := v.(*ListRolesResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11744,7 +11913,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UpdateRoleRequest); i {
+			switch v := v.(*RevokeRequest); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -11756,6 +11925,30 @@ func file_api_service_v1alpha1_service_proto_init() {
 			}
 		}
 		file_api_service_v1alpha1_service_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RevokeResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_api_service_v1alpha1_service_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UpdateRoleRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_api_service_v1alpha1_service_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*UpdateRoleResponse); i {
 			case 0:
 				return &v.state
@@ -11797,52 +11990,56 @@ func file_api_service_v1alpha1_service_proto_init() {
 		(*GetPromotionResponse_Raw)(nil),
 	}
 	file_api_service_v1alpha1_service_proto_msgTypes[51].OneofWrappers = []interface{}{
+		(*GetProjectConfigResponse_ProjectConfig)(nil),
+		(*GetProjectConfigResponse_Raw)(nil),
+	}
+	file_api_service_v1alpha1_service_proto_msgTypes[53].OneofWrappers = []interface{}{
 		(*GetProjectResponse_Project)(nil),
 		(*GetProjectResponse_Raw)(nil),
 	}
-	file_api_service_v1alpha1_service_proto_msgTypes[52].OneofWrappers = []interface{}{}
-	file_api_service_v1alpha1_service_proto_msgTypes[59].OneofWrappers = []interface{}{
+	file_api_service_v1alpha1_service_proto_msgTypes[54].OneofWrappers = []interface{}{}
+	file_api_service_v1alpha1_service_proto_msgTypes[61].OneofWrappers = []interface{}{
 		(*GetFreightResponse_Freight)(nil),
 		(*GetFreightResponse_Raw)(nil),
 	}
-	file_api_service_v1alpha1_service_proto_msgTypes[76].OneofWrappers = []interface{}{
+	file_api_service_v1alpha1_service_proto_msgTypes[78].OneofWrappers = []interface{}{
 		(*GetWarehouseResponse_Warehouse)(nil),
 		(*GetWarehouseResponse_Raw)(nil),
 	}
-	file_api_service_v1alpha1_service_proto_msgTypes[96].OneofWrappers = []interface{}{
+	file_api_service_v1alpha1_service_proto_msgTypes[98].OneofWrappers = []interface{}{
 		(*GetCredentialsResponse_Credentials)(nil),
 		(*GetCredentialsResponse_Raw)(nil),
 	}
-	file_api_service_v1alpha1_service_proto_msgTypes[108].OneofWrappers = []interface{}{
+	file_api_service_v1alpha1_service_proto_msgTypes[110].OneofWrappers = []interface{}{
 		(*GetAnalysisTemplateResponse_AnalysisTemplate)(nil),
 		(*GetAnalysisTemplateResponse_Raw)(nil),
 	}
-	file_api_service_v1alpha1_service_proto_msgTypes[110].OneofWrappers = []interface{}{
+	file_api_service_v1alpha1_service_proto_msgTypes[112].OneofWrappers = []interface{}{
 		(*GetPromotionTaskResponse_PromotionTask)(nil),
 		(*GetPromotionTaskResponse_Raw)(nil),
 	}
-	file_api_service_v1alpha1_service_proto_msgTypes[112].OneofWrappers = []interface{}{
+	file_api_service_v1alpha1_service_proto_msgTypes[114].OneofWrappers = []interface{}{
 		(*GetClusterPromotionTaskResponse_PromotionTask)(nil),
 		(*GetClusterPromotionTaskResponse_Raw)(nil),
 	}
-	file_api_service_v1alpha1_service_proto_msgTypes[116].OneofWrappers = []interface{}{
+	file_api_service_v1alpha1_service_proto_msgTypes[118].OneofWrappers = []interface{}{
 		(*GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate)(nil),
 		(*GetClusterAnalysisTemplateResponse_Raw)(nil),
 	}
-	file_api_service_v1alpha1_service_proto_msgTypes[118].OneofWrappers = []interface{}{
+	file_api_service_v1alpha1_service_proto_msgTypes[120].OneofWrappers = []interface{}{
 		(*GetAnalysisRunResponse_AnalysisRun)(nil),
 		(*GetAnalysisRunResponse_Raw)(nil),
 	}
-	file_api_service_v1alpha1_service_proto_msgTypes[132].OneofWrappers = []interface{}{
+	file_api_service_v1alpha1_service_proto_msgTypes[134].OneofWrappers = []interface{}{
 		(*GetRoleResponse_Role)(nil),
 		(*GetRoleResponse_Resources)(nil),
 		(*GetRoleResponse_Raw)(nil),
 	}
-	file_api_service_v1alpha1_service_proto_msgTypes[134].OneofWrappers = []interface{}{
+	file_api_service_v1alpha1_service_proto_msgTypes[136].OneofWrappers = []interface{}{
 		(*GrantRequest_UserClaims)(nil),
 		(*GrantRequest_ResourceDetails)(nil),
 	}
-	file_api_service_v1alpha1_service_proto_msgTypes[138].OneofWrappers = []interface{}{
+	file_api_service_v1alpha1_service_proto_msgTypes[140].OneofWrappers = []interface{}{
 		(*RevokeRequest_UserClaims)(nil),
 		(*RevokeRequest_ResourceDetails)(nil),
 	}
@@ -11852,7 +12049,7 @@ func file_api_service_v1alpha1_service_proto_init() {
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_api_service_v1alpha1_service_proto_rawDesc,
 			NumEnums:      1,
-			NumMessages:   149,
+			NumMessages:   151,
 			NumExtensions: 0,
 			NumServices:   1,
 		},
diff --git a/api/service/v1alpha1/service.proto b/api/service/v1alpha1/service.proto
index 8b0939aa..4d88f00e 100644
--- a/api/service/v1alpha1/service.proto
+++ b/api/service/v1alpha1/service.proto
@@ -53,6 +53,7 @@ service KargoService {
   rpc DeleteProject(DeleteProjectRequest) returns (DeleteProjectResponse);
   rpc GetProject(GetProjectRequest) returns (GetProjectResponse);
   rpc ListProjects(ListProjectsRequest) returns (ListProjectsResponse);
+  rpc GetProjectConfig(GetProjectConfigRequest) returns (GetProjectConfigResponse);
 
   /* Freight APIs */
 
@@ -369,6 +370,18 @@ message DeleteProjectResponse {
   /* explicitly empty */
 }
 
+message GetProjectConfigRequest {
+  string name = 1;
+  RawFormat format = 2;
+}
+
+message GetProjectConfigResponse {
+  oneof result {
+    github.com.akuity.kargo.api.v1alpha1.ProjectConfig project_config = 1;
+    bytes raw = 2;
+  }
+}
+
 message GetProjectRequest {
   string name = 1;
   RawFormat format = 2;
diff --git a/api/service/v1alpha1/svcv1alpha1connect/service.connect.go b/api/service/v1alpha1/svcv1alpha1connect/service.connect.go
index aa8095bd..e59e914e 100644
--- a/api/service/v1alpha1/svcv1alpha1connect/service.connect.go
+++ b/api/service/v1alpha1/svcv1alpha1connect/service.connect.go
@@ -93,6 +93,9 @@ const (
 	// KargoServiceListProjectsProcedure is the fully-qualified name of the KargoService's ListProjects
 	// RPC.
 	KargoServiceListProjectsProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ListProjects"
+	// KargoServiceGetProjectConfigProcedure is the fully-qualified name of the KargoService's
+	// GetProjectConfig RPC.
+	KargoServiceGetProjectConfigProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/GetProjectConfig"
 	// KargoServiceApproveFreightProcedure is the fully-qualified name of the KargoService's
 	// ApproveFreight RPC.
 	KargoServiceApproveFreightProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ApproveFreight"
@@ -240,6 +243,7 @@ var (
 	kargoServiceDeleteProjectMethodDescriptor                 = kargoServiceServiceDescriptor.Methods().ByName("DeleteProject")
 	kargoServiceGetProjectMethodDescriptor                    = kargoServiceServiceDescriptor.Methods().ByName("GetProject")
 	kargoServiceListProjectsMethodDescriptor                  = kargoServiceServiceDescriptor.Methods().ByName("ListProjects")
+	kargoServiceGetProjectConfigMethodDescriptor              = kargoServiceServiceDescriptor.Methods().ByName("GetProjectConfig")
 	kargoServiceApproveFreightMethodDescriptor                = kargoServiceServiceDescriptor.Methods().ByName("ApproveFreight")
 	kargoServiceDeleteFreightMethodDescriptor                 = kargoServiceServiceDescriptor.Methods().ByName("DeleteFreight")
 	kargoServiceGetFreightMethodDescriptor                    = kargoServiceServiceDescriptor.Methods().ByName("GetFreight")
@@ -311,6 +315,7 @@ type KargoServiceClient interface {
 	DeleteProject(context.Context, *connect.Request[v1alpha1.DeleteProjectRequest]) (*connect.Response[v1alpha1.DeleteProjectResponse], error)
 	GetProject(context.Context, *connect.Request[v1alpha1.GetProjectRequest]) (*connect.Response[v1alpha1.GetProjectResponse], error)
 	ListProjects(context.Context, *connect.Request[v1alpha1.ListProjectsRequest]) (*connect.Response[v1alpha1.ListProjectsResponse], error)
+	GetProjectConfig(context.Context, *connect.Request[v1alpha1.GetProjectConfigRequest]) (*connect.Response[v1alpha1.GetProjectConfigResponse], error)
 	ApproveFreight(context.Context, *connect.Request[v1alpha1.ApproveFreightRequest]) (*connect.Response[v1alpha1.ApproveFreightResponse], error)
 	DeleteFreight(context.Context, *connect.Request[v1alpha1.DeleteFreightRequest]) (*connect.Response[v1alpha1.DeleteFreightResponse], error)
 	GetFreight(context.Context, *connect.Request[v1alpha1.GetFreightRequest]) (*connect.Response[v1alpha1.GetFreightResponse], error)
@@ -498,6 +503,12 @@ func NewKargoServiceClient(httpClient connect.HTTPClient, baseURL string, opts .
 			connect.WithSchema(kargoServiceListProjectsMethodDescriptor),
 			connect.WithClientOptions(opts...),
 		),
+		getProjectConfig: connect.NewClient[v1alpha1.GetProjectConfigRequest, v1alpha1.GetProjectConfigResponse](
+			httpClient,
+			baseURL+KargoServiceGetProjectConfigProcedure,
+			connect.WithSchema(kargoServiceGetProjectConfigMethodDescriptor),
+			connect.WithClientOptions(opts...),
+		),
 		approveFreight: connect.NewClient[v1alpha1.ApproveFreightRequest, v1alpha1.ApproveFreightResponse](
 			httpClient,
 			baseURL+KargoServiceApproveFreightProcedure,
@@ -783,6 +794,7 @@ type kargoServiceClient struct {
 	deleteProject                 *connect.Client[v1alpha1.DeleteProjectRequest, v1alpha1.DeleteProjectResponse]
 	getProject                    *connect.Client[v1alpha1.GetProjectRequest, v1alpha1.GetProjectResponse]
 	listProjects                  *connect.Client[v1alpha1.ListProjectsRequest, v1alpha1.ListProjectsResponse]
+	getProjectConfig              *connect.Client[v1alpha1.GetProjectConfigRequest, v1alpha1.GetProjectConfigResponse]
 	approveFreight                *connect.Client[v1alpha1.ApproveFreightRequest, v1alpha1.ApproveFreightResponse]
 	deleteFreight                 *connect.Client[v1alpha1.DeleteFreightRequest, v1alpha1.DeleteFreightResponse]
 	getFreight                    *connect.Client[v1alpha1.GetFreightRequest, v1alpha1.GetFreightResponse]
@@ -939,6 +951,11 @@ func (c *kargoServiceClient) ListProjects(ctx context.Context, req *connect.Requ
 	return c.listProjects.CallUnary(ctx, req)
 }
 
+// GetProjectConfig calls akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig.
+func (c *kargoServiceClient) GetProjectConfig(ctx context.Context, req *connect.Request[v1alpha1.GetProjectConfigRequest]) (*connect.Response[v1alpha1.GetProjectConfigResponse], error) {
+	return c.getProjectConfig.CallUnary(ctx, req)
+}
+
 // ApproveFreight calls akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight.
 func (c *kargoServiceClient) ApproveFreight(ctx context.Context, req *connect.Request[v1alpha1.ApproveFreightRequest]) (*connect.Response[v1alpha1.ApproveFreightResponse], error) {
 	return c.approveFreight.CallUnary(ctx, req)
@@ -1187,6 +1204,7 @@ type KargoServiceHandler interface {
 	DeleteProject(context.Context, *connect.Request[v1alpha1.DeleteProjectRequest]) (*connect.Response[v1alpha1.DeleteProjectResponse], error)
 	GetProject(context.Context, *connect.Request[v1alpha1.GetProjectRequest]) (*connect.Response[v1alpha1.GetProjectResponse], error)
 	ListProjects(context.Context, *connect.Request[v1alpha1.ListProjectsRequest]) (*connect.Response[v1alpha1.ListProjectsResponse], error)
+	GetProjectConfig(context.Context, *connect.Request[v1alpha1.GetProjectConfigRequest]) (*connect.Response[v1alpha1.GetProjectConfigResponse], error)
 	ApproveFreight(context.Context, *connect.Request[v1alpha1.ApproveFreightRequest]) (*connect.Response[v1alpha1.ApproveFreightResponse], error)
 	DeleteFreight(context.Context, *connect.Request[v1alpha1.DeleteFreightRequest]) (*connect.Response[v1alpha1.DeleteFreightResponse], error)
 	GetFreight(context.Context, *connect.Request[v1alpha1.GetFreightRequest]) (*connect.Response[v1alpha1.GetFreightResponse], error)
@@ -1370,6 +1388,12 @@ func NewKargoServiceHandler(svc KargoServiceHandler, opts ...connect.HandlerOpti
 		connect.WithSchema(kargoServiceListProjectsMethodDescriptor),
 		connect.WithHandlerOptions(opts...),
 	)
+	kargoServiceGetProjectConfigHandler := connect.NewUnaryHandler(
+		KargoServiceGetProjectConfigProcedure,
+		svc.GetProjectConfig,
+		connect.WithSchema(kargoServiceGetProjectConfigMethodDescriptor),
+		connect.WithHandlerOptions(opts...),
+	)
 	kargoServiceApproveFreightHandler := connect.NewUnaryHandler(
 		KargoServiceApproveFreightProcedure,
 		svc.ApproveFreight,
@@ -1674,6 +1698,8 @@ func NewKargoServiceHandler(svc KargoServiceHandler, opts ...connect.HandlerOpti
 			kargoServiceGetProjectHandler.ServeHTTP(w, r)
 		case KargoServiceListProjectsProcedure:
 			kargoServiceListProjectsHandler.ServeHTTP(w, r)
+		case KargoServiceGetProjectConfigProcedure:
+			kargoServiceGetProjectConfigHandler.ServeHTTP(w, r)
 		case KargoServiceApproveFreightProcedure:
 			kargoServiceApproveFreightHandler.ServeHTTP(w, r)
 		case KargoServiceDeleteFreightProcedure:
@@ -1857,6 +1883,10 @@ func (UnimplementedKargoServiceHandler) ListProjects(context.Context, *connect.R
 	return nil, connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.ListProjects is not implemented"))
 }
 
+func (UnimplementedKargoServiceHandler) GetProjectConfig(context.Context, *connect.Request[v1alpha1.GetProjectConfigRequest]) (*connect.Response[v1alpha1.GetProjectConfigResponse], error) {
+	return nil, connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig is not implemented"))
+}
+
 func (UnimplementedKargoServiceHandler) ApproveFreight(context.Context, *connect.Request[v1alpha1.ApproveFreightRequest]) (*connect.Response[v1alpha1.ApproveFreightResponse], error) {
 	return nil, connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight is not implemented"))
 }
diff --git a/charts/kargo/templates/api/cluster-role.yaml b/charts/kargo/templates/api/cluster-role.yaml
index 2f51b917..69f8e1e1 100644
--- a/charts/kargo/templates/api/cluster-role.yaml
+++ b/charts/kargo/templates/api/cluster-role.yaml
@@ -65,6 +65,7 @@ rules:
       - promotiontasks
       - stages
       - warehouses
+      - projectconfigs
     verbs:
       - "*"
   - apiGroups:
diff --git a/internal/server/get_project_config_v1alpha1.go b/internal/server/get_project_config_v1alpha1.go
new file mode 100644
index 00000000..a9567668
--- /dev/null
+++ b/internal/server/get_project_config_v1alpha1.go
@@ -0,0 +1,68 @@
+package server
+
+import (
+	"context"
+	"fmt"
+
+	"connectrpc.com/connect"
+	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+	"k8s.io/apimachinery/pkg/runtime"
+	"sigs.k8s.io/controller-runtime/pkg/client"
+
+	svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1"
+	kargoapi "github.com/akuity/kargo/api/v1alpha1"
+)
+
+func (s *server) GetProjectConfig(
+	ctx context.Context,
+	req *connect.Request[svcv1alpha1.GetProjectConfigRequest],
+) (*connect.Response[svcv1alpha1.GetProjectConfigResponse], error) {
+	name := req.Msg.GetName()
+	if err := validateFieldNotEmpty("name", name); err != nil {
+		return nil, err
+	}
+
+	// Get the ProjectConfig from the Kubernetes API as an unstructured object.
+	// Using an unstructured object allows us to return the object _as presented
+	// by the API_ if a raw format is requested.
+	u := unstructured.Unstructured{
+		Object: map[string]any{
+			"apiVersion": kargoapi.GroupVersion.String(),
+			"kind":       "ProjectConfig",
+		},
+	}
+	if err := s.client.Get(ctx, client.ObjectKey{Name: name, Namespace: name}, &u); err != nil {
+		if client.IgnoreNotFound(err) == nil {
+			err = fmt.Errorf("ProjectConfig %q not found", name)
+			return nil, connect.NewError(connect.CodeNotFound, err)
+		}
+		return nil, err
+	}
+
+	switch req.Msg.GetFormat() {
+	case svcv1alpha1.RawFormat_RAW_FORMAT_JSON, svcv1alpha1.RawFormat_RAW_FORMAT_YAML:
+		_, raw, err := objectOrRaw(&u, req.Msg.GetFormat())
+		if err != nil {
+			return nil, connect.NewError(connect.CodeInternal, err)
+		}
+		return connect.NewResponse(&svcv1alpha1.GetProjectConfigResponse{
+			Result: &svcv1alpha1.GetProjectConfigResponse_Raw{
+				Raw: raw,
+			},
+		}), nil
+	default:
+		p := kargoapi.ProjectConfig{}
+		if err := runtime.DefaultUnstructuredConverter.FromUnstructured(u.Object, &p); err != nil {
+			return nil, connect.NewError(connect.CodeInternal, err)
+		}
+		obj, _, err := objectOrRaw(&p, req.Msg.GetFormat())
+		if err != nil {
+			return nil, connect.NewError(connect.CodeInternal, err)
+		}
+		return connect.NewResponse(&svcv1alpha1.GetProjectConfigResponse{
+			Result: &svcv1alpha1.GetProjectConfigResponse_ProjectConfig{
+				ProjectConfig: obj,
+			},
+		}), nil
+	}
+}
diff --git a/ui/src/config/transport.ts b/ui/src/config/transport.ts
index 3cb56d5e..519ac315 100644
--- a/ui/src/config/transport.ts
+++ b/ui/src/config/transport.ts
@@ -65,15 +65,15 @@ export const newErrorHandler = (handler: (err: ConnectError) => void): Intercept
     });
 };
 
-const defaultErrorHandler = newErrorHandler((err) => {
+export const defaultErrorHandler = (err: ConnectError) => {
   const errorMessage = err instanceof ConnectError ? err.rawMessage : 'Unexpected API error';
   notification.error({ message: errorMessage, placement: 'bottomRight' });
-});
+};
 
 export const transport = createConnectTransport({
   baseUrl: '',
   useBinaryFormat: true,
-  interceptors: [defaultErrorHandler]
+  interceptors: [newErrorHandler(defaultErrorHandler)]
 });
 
 export const newTransportWithAuth = (errorHandler: Interceptor) =>
@@ -83,4 +83,4 @@ export const newTransportWithAuth = (errorHandler: Interceptor) =>
     interceptors: [authHandler, errorHandler]
   });
 
-export const transportWithAuth = newTransportWithAuth(defaultErrorHandler);
+export const transportWithAuth = newTransportWithAuth(newErrorHandler(defaultErrorHandler));
diff --git a/ui/src/features/common/code-editor/yaml-editor-lazy.tsx b/ui/src/features/common/code-editor/yaml-editor-lazy.tsx
index c69b5f73..d4e382de 100644
--- a/ui/src/features/common/code-editor/yaml-editor-lazy.tsx
+++ b/ui/src/features/common/code-editor/yaml-editor-lazy.tsx
@@ -184,7 +184,7 @@ const YamlEditor: FC<YamlEditorProps> = (props) => {
 
         {placeholder && (
           <p
-            className={`${styles.placeholderWrapper} font-mono`}
+            className={`${styles.placeholderWrapper} font-mono mt-9`}
             onClick={() => {
               editorRef.current?.focus?.();
             }}
diff --git a/ui/src/features/project/list/utils/project-yaml-example.ts b/ui/src/features/project/list/utils/project-yaml-example.ts
index 8d5ea78b..2cad9200 100644
--- a/ui/src/features/project/list/utils/project-yaml-example.ts
+++ b/ui/src/features/project/list/utils/project-yaml-example.ts
@@ -5,3 +5,12 @@ export const projectYAMLExample = {
     name: 'kargo-demo'
   }
 };
+
+export const projectConfigYAMLExample = {
+  apiVersion: 'kargo.akuity.io/v1alpha1',
+  kind: 'ProjectConfig',
+  metadata: {
+    name: 'kargo-demo',
+    namespace: 'kargo-demo'
+  }
+};
diff --git a/ui/src/features/project/settings/project-settings.tsx b/ui/src/features/project/settings/project-settings.tsx
index f432f328..54df5231 100644
--- a/ui/src/features/project/settings/project-settings.tsx
+++ b/ui/src/features/project/settings/project-settings.tsx
@@ -3,6 +3,7 @@ import {
   faAsterisk,
   faChartBar,
   faGear,
+  faGears,
   faPeopleGroup,
   faTasks
 } from '@fortawesome/free-solid-svg-icons';
@@ -19,6 +20,7 @@ import { useProjectBreadcrumbs } from '../project-utils';
 import { AnalysisTemplatesSettings } from './views/analysis-templates/analysis-templates';
 import { CredentialsSettings } from './views/credentials/credentials';
 import { GeneralSettings } from './views/general/general-settings';
+import { ProjectConfig } from './views/project-config/project-config';
 import { PromotionTasks } from './views/promotion-tasks/promotion-tasks';
 import { RolesSettings } from './views/roles/roles';
 
@@ -35,6 +37,12 @@ export const ProjectSettings = () => {
         path: 'general',
         component: GeneralSettings
       },
+      projectConfig: {
+        label: 'ProjectConfig',
+        icon: faGears,
+        path: 'project-config',
+        component: ProjectConfig
+      },
       analysisTemplates: {
         label: 'Analysis Templates',
         icon: faChartBar,
diff --git a/ui/src/features/project/settings/views/general/general-settings.tsx b/ui/src/features/project/settings/views/general/general-settings.tsx
index 76cd9a1d..7813a053 100644
--- a/ui/src/features/project/settings/views/general/general-settings.tsx
+++ b/ui/src/features/project/settings/views/general/general-settings.tsx
@@ -9,6 +9,7 @@ import { z } from 'zod';
 
 import { YamlEditor } from '@ui/features/common/code-editor/yaml-editor';
 import { FieldContainer } from '@ui/features/common/form/field-container';
+import { projectYAMLExample } from '@ui/features/project/list/utils/project-yaml-example';
 import {
   getProject,
   updateResource
@@ -21,7 +22,6 @@ import { zodValidators } from '@ui/utils/validators';
 const formSchema = z.object({
   value: zodValidators.requiredString
 });
-import { projectYAMLExample } from '../../../list/utils/project-yaml-example';
 
 import { DeleteProject } from './delete-project-modal';
 
diff --git a/ui/src/features/project/settings/views/project-config/project-config.tsx b/ui/src/features/project/settings/views/project-config/project-config.tsx
new file mode 100644
index 00000000..d94f4370
--- /dev/null
+++ b/ui/src/features/project/settings/views/project-config/project-config.tsx
@@ -0,0 +1,93 @@
+import { useMutation, useQuery } from '@connectrpc/connect-query';
+import { zodResolver } from '@hookform/resolvers/zod';
+import { Button, Card, Flex, message } from 'antd';
+import type { JSONSchema4 } from 'json-schema';
+import { useForm } from 'react-hook-form';
+import { useParams } from 'react-router-dom';
+import yaml from 'yaml';
+import { z } from 'zod';
+
+import { YamlEditor } from '@ui/features/common/code-editor/yaml-editor';
+import { FieldContainer } from '@ui/features/common/form/field-container';
+import { projectConfigYAMLExample } from '@ui/features/project/list/utils/project-yaml-example';
+import {
+  createOrUpdateResource,
+  getProjectConfig
+} from '@ui/gen/api/service/v1alpha1/service-KargoService_connectquery';
+import { RawFormat } from '@ui/gen/api/service/v1alpha1/service_pb';
+import projectConfigSchema from '@ui/gen/schema/projectconfigs.kargo.akuity.io_v1alpha1.json';
+import { decodeRawData } from '@ui/utils/decode-raw-data';
+import { zodValidators } from '@ui/utils/validators';
+
+import { projectConfigTransport } from './transport';
+
+const formSchema = z.object({
+  value: zodValidators.requiredString
+});
+
+export const ProjectConfig = () => {
+  const { name } = useParams();
+
+  const projectConfigQuery = useQuery(
+    getProjectConfig,
+    { name, format: RawFormat.YAML },
+    {
+      transport: projectConfigTransport
+    }
+  );
+
+  const projectConfigYAML = decodeRawData(projectConfigQuery.data);
+
+  const creation = !projectConfigYAML;
+
+  const projectConfigForm = useForm({
+    values: {
+      value: projectConfigYAML
+    },
+    resolver: zodResolver(formSchema)
+  });
+
+  const createOrUpdateMutation = useMutation(createOrUpdateResource, {
+    onSuccess: () => {
+      message.success({ content: `ProjectConfig has been ${creation ? 'created' : 'updated'}` });
+      projectConfigQuery.refetch();
+    }
+  });
+
+  const onSubmitConfig = projectConfigForm.handleSubmit(async (data) => {
+    const textEncoder = new TextEncoder();
+    await createOrUpdateMutation.mutateAsync({
+      manifest: textEncoder.encode(data.value)
+    });
+  });
+
+  return (
+    <Flex gap={16} vertical>
+      <Card title='ProjectConfig' type='inner'>
+        <FieldContainer control={projectConfigForm.control} name='value'>
+          {({ field }) => (
+            <YamlEditor
+              label='YAML'
+              isLoading={projectConfigQuery.isLoading}
+              height='500px'
+              value={field.value}
+              onChange={(e) => field.onChange(e || '')}
+              placeholder={yaml.stringify(projectConfigYAMLExample)}
+              schema={projectConfigSchema as JSONSchema4}
+              isHideManagedFieldsDisplayed
+            />
+          )}
+        </FieldContainer>
+        <Flex justify='flex-end'>
+          <Button
+            type='primary'
+            onClick={onSubmitConfig}
+            loading={createOrUpdateMutation.isPending}
+          >
+            {creation ? 'Create' : 'Update'}
+          </Button>
+        </Flex>
+      </Card>
+    </Flex>
+  );
+};
diff --git a/ui/src/features/project/settings/views/project-config/transport.ts b/ui/src/features/project/settings/views/project-config/transport.ts
new file mode 100644
index 00000000..67fe42b7
--- /dev/null
+++ b/ui/src/features/project/settings/views/project-config/transport.ts
@@ -0,0 +1,15 @@
+import { Code } from '@connectrpc/connect';
+
+import { defaultErrorHandler, newErrorHandler, newTransportWithAuth } from '@ui/config/transport';
+
+export const projectConfigTransport = newTransportWithAuth(
+  newErrorHandler((err) => {
+    if (err.code === Code.NotFound) {
+      // ignore 404 because ProjectConfig may not be created when we create a new Project
+      // and we need to ignore the error
+      return;
+    }
+
+    defaultErrorHandler(err);
+  })
+);
diff --git a/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts b/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts
index 08c5a1f3..0a34466b 100644
--- a/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts
+++ b/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts
@@ -102,6 +102,11 @@ export const getProject = KargoService.method.getProject;
  */
 export const listProjects = KargoService.method.listProjects;
 
+/**
+ * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig
+ */
+export const getProjectConfig = KargoService.method.getProjectConfig;
+
 /**
  * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight
  */
diff --git a/ui/src/gen/api/service/v1alpha1/service_pb.ts b/ui/src/gen/api/service/v1alpha1/service_pb.ts
index dccb8741..745083fe 100644
--- a/ui/src/gen/api/service/v1alpha1/service_pb.ts
+++ b/ui/src/gen/api/service/v1alpha1/service_pb.ts
@@ -6,7 +6,7 @@ import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobu
 import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1";
 import type { Timestamp } from "@bufbuild/protobuf/wkt";
 import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
-import type { ClusterPromotionTask, Freight, Project, Promotion, PromotionTask, Stage, Warehouse } from "../../v1alpha1/generated_pb";
+import type { ClusterPromotionTask, Freight, Project, ProjectConfig, Promotion, PromotionTask, Stage, Warehouse } from "../../v1alpha1/generated_pb";
 import { file_api_v1alpha1_generated } from "../../v1alpha1/generated_pb";
 import type { Event, Secret } from "../../../k8s.io/api/core/v1/generated_pb";
 import { file_k8s_io_api_core_v1_generated } from "../../../k8s.io/api/core/v1/generated_pb";
@@ -20,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf";
  * Describes the file api/service/v1alpha1/service.proto.
  */
 export const file_api_service_v1alpha1_service: GenFile = /*@__PURE__*/
-  fileDesc("CiJhcGkvc2VydmljZS92MWFscGhhMS9zZXJ2aWNlLnByb3RvEiBha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMSKrAQoRQ29tcG9uZW50VmVyc2lvbnMSQgoGc2VydmVyGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm9IAIgBARI/CgNjbGkYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5WZXJzaW9uSW5mb0gBiAEBQgkKB19zZXJ2ZXJCBgoEX2NsaSKyAQoLVmVyc2lvbkluZm8SDwoHdmVyc2lvbhgBIAEoCRISCgpnaXRfY29tbWl0GAIgASgJEhYKDmdpdF90cmVlX2RpcnR5GAMgASgIEi4KCmJ1aWxkX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdvX3ZlcnNpb24YBSABKAkSEAoIY29tcGlsZXIYBiABKAkSEAoIcGxhdGZvcm0YByABKAkiFwoVR2V0VmVyc2lvbkluZm9SZXF1ZXN0Il0KFkdldFZlcnNpb25JbmZvUmVzcG9uc2USQwoMdmVyc2lvbl9pbmZvGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm8iEgoQR2V0Q29uZmlnUmVxdWVzdCItCgtBcmdvQ0RTaGFyZBILCgN1cmwYASABKAkSEQoJbmFtZXNwYWNlGAIgASgJIvgBChFHZXRDb25maWdSZXNwb25zZRJcCg1hcmdvY2Rfc2hhcmRzGAEgAygLMkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UuQXJnb2NkU2hhcmRzRW50cnkSIQoZc2VjcmV0X21hbmFnZW1lbnRfZW5hYmxlZBgCIAEoCBpiChFBcmdvY2RTaGFyZHNFbnRyeRILCgNrZXkYASABKAkSPAoFdmFsdWUYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BcmdvQ0RTaGFyZDoCOAEiGAoWR2V0UHVibGljQ29uZmlnUmVxdWVzdCKOAQoXR2V0UHVibGljQ29uZmlnUmVzcG9uc2USQQoLb2lkY19jb25maWcYASABKAsyLC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5PSURDQ29uZmlnEh0KFWFkbWluX2FjY291bnRfZW5hYmxlZBgCIAEoCBIRCglza2lwX2F1dGgYAyABKAgiWgoKT0lEQ0NvbmZpZxISCgppc3N1ZXJfdXJsGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCRIOCgZzY29wZXMYAyADKAkSFQoNY2xpX2NsaWVudF9pZBgEIAEoCSIlChFBZG1pbkxvZ2luUmVxdWVzdBIQCghwYXNzd29yZBgBIAEoCSImChJBZG1pbkxvZ2luUmVzcG9uc2USEAoIaWRfdG9rZW4YASABKAkiKQoVQ3JlYXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIlYKFENyZWF0ZVJlc291cmNlUmVzdWx0EiMKGWNyZWF0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIPCgVlcnJvchgCIAEoCUgAQggKBnJlc3VsdCJhChZDcmVhdGVSZXNvdXJjZVJlc3BvbnNlEkcKB3Jlc3VsdHMYASADKAsyNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXNvdXJjZVJlc3VsdCIxCh1DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCKDAQocQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3VsdBIjChljcmVhdGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASIwoZdXBkYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgCIAEoDEgAEg8KBWVycm9yGAMgASgJSABCCAoGcmVzdWx0InEKHkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXNwb25zZRJPCgdyZXN1bHRzGAEgAygLMj4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3VsdCIpChVVcGRhdGVSZXNvdXJjZVJlcXVlc3QSEAoIbWFuaWZlc3QYASABKAwiVgoUVXBkYXRlUmVzb3VyY2VSZXN1bHQSIwoZdXBkYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgBIAEoDEgAEg8KBWVycm9yGAIgASgJSABCCAoGcmVzdWx0ImEKFlVwZGF0ZVJlc291cmNlUmVzcG9uc2USRwoHcmVzdWx0cxgBIAMoCzI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlc291cmNlUmVzdWx0IikKFURlbGV0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCJWChREZWxldGVSZXNvdXJjZVJlc3VsdBIjChlkZWxldGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASDwoFZXJyb3IYAiABKAlIAEIICgZyZXN1bHQiYQoWRGVsZXRlUmVzb3VyY2VSZXNwb25zZRJHCgdyZXN1bHRzGAEgAygLMjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVzb3VyY2VSZXN1bHQiJAoRTGlzdFN0YWdlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJRChJMaXN0U3RhZ2VzUmVzcG9uc2USOwoGc3RhZ2VzGAEgAygLMisuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlN0YWdlIiQKEUxpc3RJbWFnZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkivwEKEkxpc3RJbWFnZXNSZXNwb25zZRJQCgZpbWFnZXMYAiADKAsyQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0SW1hZ2VzUmVzcG9uc2UuSW1hZ2VzRW50cnkaVwoLSW1hZ2VzRW50cnkSCwoDa2V5GAEgASgJEjcKBXZhbHVlGAIgASgLMiguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVGFnTWFwOgI4ASKoAQoGVGFnTWFwEkAKBHRhZ3MYASADKAsyMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5UYWdNYXAuVGFnc0VudHJ5GlwKCVRhZ3NFbnRyeRILCgNrZXkYASABKAkSPgoFdmFsdWUYAiABKAsyLy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5JbWFnZVN0YWdlTWFwOgI4ASKLAQoNSW1hZ2VTdGFnZU1hcBJLCgZzdGFnZXMYASADKAsyOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5JbWFnZVN0YWdlTWFwLlN0YWdlc0VudHJ5Gi0KC1N0YWdlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBToCOAEibQoPR2V0U3RhZ2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiaQoQR2V0U3RhZ2VSZXNwb25zZRI8CgVzdGFnZRgBIAEoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5TdGFnZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCIzChJXYXRjaFN0YWdlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIl8KE1dhdGNoU3RhZ2VzUmVzcG9uc2USOgoFc3RhZ2UYASABKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2USDAoEdHlwZRgCIAEoCSIzChJEZWxldGVTdGFnZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhUKE0RlbGV0ZVN0YWdlUmVzcG9uc2UiNAoTUmVmcmVzaFN0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiUgoUUmVmcmVzaFN0YWdlUmVzcG9uc2USOgoFc3RhZ2UYASABKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2UiRgoVTGlzdFByb21vdGlvbnNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSEgoFc3RhZ2UYAiABKAlIAIgBAUIICgZfc3RhZ2UiXQoWTGlzdFByb21vdGlvbnNSZXNwb25zZRJDCgpwcm9tb3Rpb25zGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbiJHChZXYXRjaFByb21vdGlvbnNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSEgoFc3RhZ2UYAiABKAlIAIgBAUIICgZfc3RhZ2UiawoXV2F0Y2hQcm9tb3Rpb25zUmVzcG9uc2USQgoJcHJvbW90aW9uGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbhIMCgR0eXBlGAIgASgJInEKE0dldFByb21vdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJ1ChRHZXRQcm9tb3Rpb25SZXNwb25zZRJECglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjYKFVdhdGNoUHJvbW90aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiagoWV2F0Y2hQcm9tb3Rpb25SZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uEgwKBHR5cGUYAiABKAkiNgoVQWJvcnRQcm9tb3Rpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIYChZBYm9ydFByb21vdGlvblJlc3BvbnNlIiQKFERlbGV0ZVByb2plY3RSZXF1ZXN0EgwKBG5hbWUYASABKAkiFwoVRGVsZXRlUHJvamVjdFJlc3BvbnNlIl4KEUdldFByb2plY3RSZXF1ZXN0EgwKBG5hbWUYASABKAkSOwoGZm9ybWF0GAIgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0Im8KEkdldFByb2plY3RSZXNwb25zZRJACgdwcm9qZWN0GAEgASgLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQidwoTTGlzdFByb2plY3RzUmVxdWVzdBIWCglwYWdlX3NpemUYASABKAVIAIgBARIRCgRwYWdlGAIgASgFSAGIAQESEwoGZmlsdGVyGAMgASgJSAKIAQFCDAoKX3BhZ2Vfc2l6ZUIHCgVfcGFnZUIJCgdfZmlsdGVyImYKFExpc3RQcm9qZWN0c1Jlc3BvbnNlEj8KCHByb2plY3RzGAEgAygLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3QSDQoFdG90YWwYAiABKAUiVAoVQXBwcm92ZUZyZWlnaHRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRINCgVhbGlhcxgDIAEoCRINCgVzdGFnZRgEIAEoCSIYChZBcHByb3ZlRnJlaWdodFJlc3BvbnNlIkQKFERlbGV0ZUZyZWlnaHRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRINCgVhbGlhcxgDIAEoCSIXChVEZWxldGVGcmVpZ2h0UmVzcG9uc2UifgoRR2V0RnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJEjsKBmZvcm1hdBgEIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJvChJHZXRGcmVpZ2h0UmVzcG9uc2USQAoHZnJlaWdodBgBIAEoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0SAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0Il8KFVByb21vdGVUb1N0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJEg8KB2ZyZWlnaHQYAyABKAkSFQoNZnJlaWdodF9hbGlhcxgEIAEoCSJcChZQcm9tb3RlVG9TdGFnZVJlc3BvbnNlEkIKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24iYgoYUHJvbW90ZURvd25zdHJlYW1SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkSDwoHZnJlaWdodBgDIAEoCRIVCg1mcmVpZ2h0X2FsaWFzGAQgASgJImAKGVByb21vdGVEb3duc3RyZWFtUmVzcG9uc2USQwoKcHJvbW90aW9ucxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24iigEKE1F1ZXJ5RnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCRIQCghncm91cF9ieRgDIAEoCRINCgVncm91cBgEIAEoCRIQCghvcmRlcl9ieRgFIAEoCRIPCgdyZXZlcnNlGAYgASgIEg8KB29yaWdpbnMYByADKAkiyAEKFFF1ZXJ5RnJlaWdodFJlc3BvbnNlElIKBmdyb3VwcxgBIAMoCzJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlc3BvbnNlLkdyb3Vwc0VudHJ5GlwKC0dyb3Vwc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkZyZWlnaHRMaXN0OgI4ASJNCgtGcmVpZ2h0TGlzdBI+CgdmcmVpZ2h0GAEgAygLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHQiYAoZVXBkYXRlRnJlaWdodEFsaWFzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEQoJb2xkX2FsaWFzGAMgASgJEhEKCW5ld19hbGlhcxgEIAEoCSIcChpVcGRhdGVGcmVpZ2h0QWxpYXNSZXNwb25zZSIxCg9SZXZlcmlmeVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCSISChBSZXZlcmlmeVJlc3BvbnNlIjoKGEFib3J0VmVyaWZpY2F0aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJIhsKGUFib3J0VmVyaWZpY2F0aW9uUmVzcG9uc2UiKAoVTGlzdFdhcmVob3VzZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiXQoWTGlzdFdhcmVob3VzZXNSZXNwb25zZRJDCgp3YXJlaG91c2VzGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZSJxChNHZXRXYXJlaG91c2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQidQoUR2V0V2FyZWhvdXNlUmVzcG9uc2USRAoJd2FyZWhvdXNlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI3ChZXYXRjaFdhcmVob3VzZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJrChdXYXRjaFdhcmVob3VzZXNSZXNwb25zZRJCCgl3YXJlaG91c2UYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlEgwKBHR5cGUYAiABKAkiNwoWRGVsZXRlV2FyZWhvdXNlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiGQoXRGVsZXRlV2FyZWhvdXNlUmVzcG9uc2UiOAoXUmVmcmVzaFdhcmVob3VzZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIl4KGFJlZnJlc2hXYXJlaG91c2VSZXNwb25zZRJCCgl3YXJlaG91c2UYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlIiwKGUxpc3RQcm9qZWN0U2VjcmV0c1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJJChpMaXN0UHJvamVjdFNlY3JldHNSZXNwb25zZRIrCgdzZWNyZXRzGAEgAygLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCLTAQoaQ3JlYXRlUHJvamVjdFNlY3JldFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJElQKBGRhdGEYBCADKAsyRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVQcm9qZWN0U2VjcmV0UmVxdWVzdC5EYXRhRW50cnkaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiSQobQ3JlYXRlUHJvamVjdFNlY3JldFJlc3BvbnNlEioKBnNlY3JldBgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQi0wEKGlVwZGF0ZVByb2plY3RTZWNyZXRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRJUCgRkYXRhGAQgAygLMkYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUHJvamVjdFNlY3JldFJlcXVlc3QuRGF0YUVudHJ5GisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkkKG1VwZGF0ZVByb2plY3RTZWNyZXRSZXNwb25zZRIqCgZzZWNyZXQYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IjsKGkRlbGV0ZVByb2plY3RTZWNyZXRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIdChtEZWxldGVQcm9qZWN0U2VjcmV0UmVzcG9uc2UixgEKGENyZWF0ZUNyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YCCABKAkSDAoEdHlwZRgDIAEoCRIZCghyZXBvX3VybBgEIAEoCVIHcmVwb1VSTBIpChFyZXBvX3VybF9pc19yZWdleBgFIAEoCFIOcmVwb1VSTElzUmVnZXgSEAoIdXNlcm5hbWUYBiABKAkSEAoIcGFzc3dvcmQYByABKAkiTAoZQ3JlYXRlQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiOQoYRGVsZXRlQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIbChlEZWxldGVDcmVkZW50aWFsc1Jlc3BvbnNlInMKFUdldENyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImQKFkdldENyZWRlbnRpYWxzUmVzcG9uc2USMQoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0SAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IikKFkxpc3RDcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJKChdMaXN0Q3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAMoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQixgEKGFVwZGF0ZUNyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YCCABKAkSDAoEdHlwZRgDIAEoCRIZCghyZXBvX3VybBgEIAEoCVIHcmVwb1VSTBIpChFyZXBvX3VybF9pc19yZWdleBgFIAEoCFIOcmVwb1VSTElzUmVnZXgSEAoIdXNlcm5hbWUYBiABKAkSEAoIcGFzc3dvcmQYByABKAkiTAoZVXBkYXRlQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiLwocTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIoIBCh1MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRJhChJhbmFseXNpc190ZW1wbGF0ZXMYASADKAsyRS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNUZW1wbGF0ZSIsChlMaXN0UHJvbW90aW9uVGFza3NSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiagoaTGlzdFByb21vdGlvblRhc2tzUmVzcG9uc2USTAoPcHJvbW90aW9uX3Rhc2tzGAEgAygLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblRhc2siIgogTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1JlcXVlc3QigAEKIUxpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXNwb25zZRJbChdjbHVzdGVyX3Byb21vdGlvbl90YXNrcxgBIAMoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyUHJvbW90aW9uVGFzayJ4ChpHZXRBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IpoBChtHZXRBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USYgoRYW5hbHlzaXNfdGVtcGxhdGUYASABKAsyRS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNUZW1wbGF0ZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJ1ChdHZXRQcm9tb3Rpb25UYXNrUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IoIBChhHZXRQcm9tb3Rpb25UYXNrUmVzcG9uc2USTQoOcHJvbW90aW9uX3Rhc2sYASABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGFza0gAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJrCh5HZXRDbHVzdGVyUHJvbW90aW9uVGFza1JlcXVlc3QSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQipgEKH0dldENsdXN0ZXJQcm9tb3Rpb25UYXNrUmVzcG9uc2USagoOcHJvbW90aW9uX3Rhc2sYASABKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQ2x1c3RlclByb21vdGlvblRhc2tIAFIUY2x1c3RlclByb21vdGlvblRhc2sSDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IiUKI0xpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0IrMBCiRMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USigEKGmNsdXN0ZXJfYW5hbHlzaXNfdGVtcGxhdGVzGAEgAygLMkwuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUhhjbHVzdGVyYW5hbHlzaXNUZW1wbGF0ZXMibgohR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0EgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IrABCiJHZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEnEKGWNsdXN0ZXJfYW5hbHlzaXNfdGVtcGxhdGUYASABKAsyTC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQidQoVR2V0QW5hbHlzaXNSdW5SZXF1ZXN0EhEKCW5hbWVzcGFjZRgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKLAQoWR2V0QW5hbHlzaXNSdW5SZXNwb25zZRJYCgxhbmFseXNpc19ydW4YASABKAsyQC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNSdW5IABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiaQoZR2V0QW5hbHlzaXNSdW5Mb2dzUmVxdWVzdBIRCgluYW1lc3BhY2UYASABKAkSDAoEbmFtZRgCIAEoCRITCgttZXRyaWNfbmFtZRgDIAEoCRIWCg5jb250YWluZXJfbmFtZRgEIAEoCSIrChpHZXRBbmFseXNpc1J1bkxvZ3NSZXNwb25zZRINCgVjaHVuaxgBIAEoCSI+Ch1EZWxldGVBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiIAoeRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlIjQKJERlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIMCgRuYW1lGAIgASgJIicKJURlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2UiKwoYTGlzdFByb2plY3RFdmVudHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiRgoZTGlzdFByb2plY3RFdmVudHNSZXNwb25zZRIpCgZldmVudHMYASADKAsyGS5rOHMuaW8uYXBpLmNvcmUudjEuRXZlbnQiUgoRQ3JlYXRlUm9sZVJlcXVlc3QSPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiUwoSQ3JlYXRlUm9sZVJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIjIKEURlbGV0ZVJvbGVSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIUChJEZWxldGVSb2xlUmVzcG9uc2UiggEKDkdldFJvbGVSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRIUCgxhc19yZXNvdXJjZXMYAyABKAgSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IroBCg9HZXRSb2xlUmVzcG9uc2USPwoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGVIABJNCglyZXNvdXJjZXMYAiABKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlUmVzb3VyY2VzSAASDQoDcmF3GAMgASgMSABCCAoGcmVzdWx0IkoKBkNsYWltcxJACgZjbGFpbXMYASADKAsyMC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5DbGFpbSLRAQoMR3JhbnRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEcm9sZRgCIAEoCRI/Cgt1c2VyX2NsYWltcxgDIAEoCzIoLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNsYWltc0gAElYKEHJlc291cmNlX2RldGFpbHMYBCABKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5SZXNvdXJjZURldGFpbHNIAEIJCgdyZXF1ZXN0Ik4KDUdyYW50UmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiOQoQTGlzdFJvbGVzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEhQKDGFzX3Jlc291cmNlcxgCIAEoCCKgAQoRTGlzdFJvbGVzUmVzcG9uc2USPgoFcm9sZXMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlEksKCXJlc291cmNlcxgCIAMoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGVSZXNvdXJjZXMi0gEKDVJldm9rZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRyb2xlGAIgASgJEj8KC3VzZXJfY2xhaW1zGAMgASgLMiguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ2xhaW1zSAASVgoQcmVzb3VyY2VfZGV0YWlscxgEIAEoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJlc291cmNlRGV0YWlsc0gAQgkKB3JlcXVlc3QiTwoOUmV2b2tlUmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiUgoRVXBkYXRlUm9sZVJlcXVlc3QSPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiUwoSVXBkYXRlUm9sZVJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlKlEKCVJhd0Zvcm1hdBIaChZSQVdfRk9STUFUX1VOU1BFQ0lGSUVEEAASEwoPUkFXX0ZPUk1BVF9KU09OEAESEwoPUkFXX0ZPUk1BVF9ZQU1MEAIyoUUKDEthcmdvU2VydmljZRKDAQoOR2V0VmVyc2lvbkluZm8SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRWZXJzaW9uSW5mb1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlEnQKCUdldENvbmZpZxIyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ1JlcXVlc3QaMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdSZXNwb25zZRKGAQoPR2V0UHVibGljQ29uZmlnEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHVibGljQ29uZmlnUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFB1YmxpY0NvbmZpZ1Jlc3BvbnNlEncKCkFkbWluTG9naW4SMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BZG1pbkxvZ2luUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFkbWluTG9naW5SZXNwb25zZRKDAQoOQ3JlYXRlUmVzb3VyY2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXNvdXJjZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXNvdXJjZVJlc3BvbnNlEpsBChZDcmVhdGVPclVwZGF0ZVJlc291cmNlEj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlcXVlc3QaQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzcG9uc2USgwEKDlVwZGF0ZVJlc291cmNlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXNwb25zZRKDAQoORGVsZXRlUmVzb3VyY2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3BvbnNlEncKCkxpc3RTdGFnZXMSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VzUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RTdGFnZXNSZXNwb25zZRJ3CgpMaXN0SW1hZ2VzEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1JlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0SW1hZ2VzUmVzcG9uc2UScQoIR2V0U3RhZ2USMS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlcXVlc3QaMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlc3BvbnNlEnwKC1dhdGNoU3RhZ2VzEjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hTdGFnZXNSZXF1ZXN0GjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hTdGFnZXNSZXNwb25zZTABEnoKC0RlbGV0ZVN0YWdlEjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlU3RhZ2VSZXF1ZXN0GjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlU3RhZ2VSZXNwb25zZRJ9CgxSZWZyZXNoU3RhZ2USNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZWZyZXNoU3RhZ2VSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmVmcmVzaFN0YWdlUmVzcG9uc2USgwEKDkxpc3RQcm9tb3Rpb25zEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvbnNSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvbnNSZXNwb25zZRKIAQoPV2F0Y2hQcm9tb3Rpb25zEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25zUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uc1Jlc3BvbnNlMAESfQoMR2V0UHJvbW90aW9uEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb21vdGlvblJlc3BvbnNlEoUBCg5XYXRjaFByb21vdGlvbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uUmVzcG9uc2UwARKDAQoOQWJvcnRQcm9tb3Rpb24SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFByb21vdGlvblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFByb21vdGlvblJlc3BvbnNlEoABCg1EZWxldGVQcm9qZWN0EjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdFJlcXVlc3QaNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0UmVzcG9uc2USdwoKR2V0UHJvamVjdBIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdFJlc3BvbnNlEn0KDExpc3RQcm9qZWN0cxI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0c1JlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvamVjdHNSZXNwb25zZRKDAQoOQXBwcm92ZUZyZWlnaHQSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BcHByb3ZlRnJlaWdodFJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BcHByb3ZlRnJlaWdodFJlc3BvbnNlEoABCg1EZWxldGVGcmVpZ2h0EjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlRnJlaWdodFJlcXVlc3QaNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVGcmVpZ2h0UmVzcG9uc2USdwoKR2V0RnJlaWdodBIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEZyZWlnaHRSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0RnJlaWdodFJlc3BvbnNlEoMBCg5Qcm9tb3RlVG9TdGFnZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVUb1N0YWdlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVUb1N0YWdlUmVzcG9uc2USjAEKEVByb21vdGVEb3duc3RyZWFtEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZURvd25zdHJlYW1SZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZURvd25zdHJlYW1SZXNwb25zZRJ9CgxRdWVyeUZyZWlnaHQSNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5RdWVyeUZyZWlnaHRSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUXVlcnlGcmVpZ2h0UmVzcG9uc2USjwEKElVwZGF0ZUZyZWlnaHRBbGlhcxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUZyZWlnaHRBbGlhc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVGcmVpZ2h0QWxpYXNSZXNwb25zZRJxCghSZXZlcmlmeRIxLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldmVyaWZ5UmVxdWVzdBoyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldmVyaWZ5UmVzcG9uc2USjAEKEUFib3J0VmVyaWZpY2F0aW9uEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWJvcnRWZXJpZmljYXRpb25SZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWJvcnRWZXJpZmljYXRpb25SZXNwb25zZRKDAQoOTGlzdFdhcmVob3VzZXMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0V2FyZWhvdXNlc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0V2FyZWhvdXNlc1Jlc3BvbnNlEn0KDEdldFdhcmVob3VzZRI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFdhcmVob3VzZVJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRXYXJlaG91c2VSZXNwb25zZRKIAQoPV2F0Y2hXYXJlaG91c2VzEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hXYXJlaG91c2VzUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoV2FyZWhvdXNlc1Jlc3BvbnNlMAEShgEKD0RlbGV0ZVdhcmVob3VzZRI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVdhcmVob3VzZVJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVXYXJlaG91c2VSZXNwb25zZRKJAQoQUmVmcmVzaFdhcmVob3VzZRI5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJlZnJlc2hXYXJlaG91c2VSZXF1ZXN0GjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmVmcmVzaFdhcmVob3VzZVJlc3BvbnNlEowBChFDcmVhdGVDcmVkZW50aWFscxI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUNyZWRlbnRpYWxzUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUNyZWRlbnRpYWxzUmVzcG9uc2USjAEKEURlbGV0ZUNyZWRlbnRpYWxzEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ3JlZGVudGlhbHNSZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ3JlZGVudGlhbHNSZXNwb25zZRKDAQoOR2V0Q3JlZGVudGlhbHMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDcmVkZW50aWFsc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDcmVkZW50aWFsc1Jlc3BvbnNlEoYBCg9MaXN0Q3JlZGVudGlhbHMSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q3JlZGVudGlhbHNSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENyZWRlbnRpYWxzUmVzcG9uc2USjAEKEVVwZGF0ZUNyZWRlbnRpYWxzEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ3JlZGVudGlhbHNSZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ3JlZGVudGlhbHNSZXNwb25zZRKPAQoSTGlzdFByb2plY3RTZWNyZXRzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RTZWNyZXRzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0U2VjcmV0c1Jlc3BvbnNlEpIBChNDcmVhdGVQcm9qZWN0U2VjcmV0EjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUHJvamVjdFNlY3JldFJlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVQcm9qZWN0U2VjcmV0UmVzcG9uc2USkgEKE1VwZGF0ZVByb2plY3RTZWNyZXQSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVQcm9qZWN0U2VjcmV0UmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVByb2plY3RTZWNyZXRSZXNwb25zZRKSAQoTRGVsZXRlUHJvamVjdFNlY3JldBI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVByb2plY3RTZWNyZXRSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdFNlY3JldFJlc3BvbnNlEpgBChVMaXN0QW5hbHlzaXNUZW1wbGF0ZXMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USkgEKE0dldEFuYWx5c2lzVGVtcGxhdGUSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKbAQoWRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZRI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEq0BChxMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzEkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QaRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USpwEKGkdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlEkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKwAQodRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGUSRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaRy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEoMBCg5HZXRBbmFseXNpc1J1bhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVzcG9uc2USkQEKEkdldEFuYWx5c2lzUnVuTG9ncxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuTG9nc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1J1bkxvZ3NSZXNwb25zZTABEowBChFMaXN0UHJvamVjdEV2ZW50cxI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVzcG9uc2USjwEKEkxpc3RQcm9tb3Rpb25UYXNrcxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25UYXNrc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uVGFza3NSZXNwb25zZRKkAQoZTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrcxJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXF1ZXN0GkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEokBChBHZXRQcm9tb3Rpb25UYXNrEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uVGFza1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25UYXNrUmVzcG9uc2USngEKF0dldENsdXN0ZXJQcm9tb3Rpb25UYXNrEkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXF1ZXN0GkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXNwb25zZRJ3CgpDcmVhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSb2xlUmVzcG9uc2USdwoKRGVsZXRlUm9sZRIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJvbGVSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUm9sZVJlc3BvbnNlEm4KB0dldFJvbGUSMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRSb2xlUmVxdWVzdBoxLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJvbGVSZXNwb25zZRJoCgVHcmFudBIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVxdWVzdBovLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVzcG9uc2USdAoJTGlzdFJvbGVzEjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJvbGVzUmVxdWVzdBozLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RSb2xlc1Jlc3BvbnNlEmsKBlJldm9rZRIvLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldm9rZVJlcXVlc3QaMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZva2VSZXNwb25zZRJ3CgpVcGRhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSb2xlUmVzcG9uc2VCkwIKJGNvbS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMUIMU2VydmljZVByb3RvUAFaOGdpdGh1Yi5jb20vYWt1aXR5L2thcmdvL2FwaS9zZXJ2aWNlL3YxYWxwaGExO3N2Y3YxYWxwaGExogIEQUlLU6oCIEFrdWl0eS5Jby5LYXJnby5TZXJ2aWNlLlYxYWxwaGExygIgQWt1aXR5XElvXEthcmdvXFNlcnZpY2VcVjFhbHBoYTHiAixBa3VpdHlcSW9cS2FyZ29cU2VydmljZVxWMWFscGhhMVxHUEJNZXRhZGF0YeoCJEFrdWl0eTo6SW86OkthcmdvOjpTZXJ2aWNlOjpWMWFscGhhMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_api_v1alpha1_generated, file_k8s_io_api_core_v1_generated, file_api_stubs_rollouts_v1alpha1_generated, file_api_rbac_v1alpha1_generated]);
+  fileDesc("CiJhcGkvc2VydmljZS92MWFscGhhMS9zZXJ2aWNlLnByb3RvEiBha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMSKrAQoRQ29tcG9uZW50VmVyc2lvbnMSQgoGc2VydmVyGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm9IAIgBARI/CgNjbGkYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5WZXJzaW9uSW5mb0gBiAEBQgkKB19zZXJ2ZXJCBgoEX2NsaSKyAQoLVmVyc2lvbkluZm8SDwoHdmVyc2lvbhgBIAEoCRISCgpnaXRfY29tbWl0GAIgASgJEhYKDmdpdF90cmVlX2RpcnR5GAMgASgIEi4KCmJ1aWxkX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdvX3ZlcnNpb24YBSABKAkSEAoIY29tcGlsZXIYBiABKAkSEAoIcGxhdGZvcm0YByABKAkiFwoVR2V0VmVyc2lvbkluZm9SZXF1ZXN0Il0KFkdldFZlcnNpb25JbmZvUmVzcG9uc2USQwoMdmVyc2lvbl9pbmZvGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm8iEgoQR2V0Q29uZmlnUmVxdWVzdCItCgtBcmdvQ0RTaGFyZBILCgN1cmwYASABKAkSEQoJbmFtZXNwYWNlGAIgASgJIvgBChFHZXRDb25maWdSZXNwb25zZRJcCg1hcmdvY2Rfc2hhcmRzGAEgAygLMkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UuQXJnb2NkU2hhcmRzRW50cnkSIQoZc2VjcmV0X21hbmFnZW1lbnRfZW5hYmxlZBgCIAEoCBpiChFBcmdvY2RTaGFyZHNFbnRyeRILCgNrZXkYASABKAkSPAoFdmFsdWUYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BcmdvQ0RTaGFyZDoCOAEiGAoWR2V0UHVibGljQ29uZmlnUmVxdWVzdCKOAQoXR2V0UHVibGljQ29uZmlnUmVzcG9uc2USQQoLb2lkY19jb25maWcYASABKAsyLC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5PSURDQ29uZmlnEh0KFWFkbWluX2FjY291bnRfZW5hYmxlZBgCIAEoCBIRCglza2lwX2F1dGgYAyABKAgiWgoKT0lEQ0NvbmZpZxISCgppc3N1ZXJfdXJsGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCRIOCgZzY29wZXMYAyADKAkSFQoNY2xpX2NsaWVudF9pZBgEIAEoCSIlChFBZG1pbkxvZ2luUmVxdWVzdBIQCghwYXNzd29yZBgBIAEoCSImChJBZG1pbkxvZ2luUmVzcG9uc2USEAoIaWRfdG9rZW4YASABKAkiKQoVQ3JlYXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIlYKFENyZWF0ZVJlc291cmNlUmVzdWx0EiMKGWNyZWF0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIPCgVlcnJvchgCIAEoCUgAQggKBnJlc3VsdCJhChZDcmVhdGVSZXNvdXJjZVJlc3BvbnNlEkcKB3Jlc3VsdHMYASADKAsyNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXNvdXJjZVJlc3VsdCIxCh1DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCKDAQocQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3VsdBIjChljcmVhdGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASIwoZdXBkYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgCIAEoDEgAEg8KBWVycm9yGAMgASgJSABCCAoGcmVzdWx0InEKHkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXNwb25zZRJPCgdyZXN1bHRzGAEgAygLMj4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3VsdCIpChVVcGRhdGVSZXNvdXJjZVJlcXVlc3QSEAoIbWFuaWZlc3QYASABKAwiVgoUVXBkYXRlUmVzb3VyY2VSZXN1bHQSIwoZdXBkYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgBIAEoDEgAEg8KBWVycm9yGAIgASgJSABCCAoGcmVzdWx0ImEKFlVwZGF0ZVJlc291cmNlUmVzcG9uc2USRwoHcmVzdWx0cxgBIAMoCzI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlc291cmNlUmVzdWx0IikKFURlbGV0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCJWChREZWxldGVSZXNvdXJjZVJlc3VsdBIjChlkZWxldGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASDwoFZXJyb3IYAiABKAlIAEIICgZyZXN1bHQiYQoWRGVsZXRlUmVzb3VyY2VSZXNwb25zZRJHCgdyZXN1bHRzGAEgAygLMjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVzb3VyY2VSZXN1bHQiJAoRTGlzdFN0YWdlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJRChJMaXN0U3RhZ2VzUmVzcG9uc2USOwoGc3RhZ2VzGAEgAygLMisuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlN0YWdlIiQKEUxpc3RJbWFnZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkivwEKEkxpc3RJbWFnZXNSZXNwb25zZRJQCgZpbWFnZXMYAiADKAsyQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0SW1hZ2VzUmVzcG9uc2UuSW1hZ2VzRW50cnkaVwoLSW1hZ2VzRW50cnkSCwoDa2V5GAEgASgJEjcKBXZhbHVlGAIgASgLMiguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVGFnTWFwOgI4ASKoAQoGVGFnTWFwEkAKBHRhZ3MYASADKAsyMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5UYWdNYXAuVGFnc0VudHJ5GlwKCVRhZ3NFbnRyeRILCgNrZXkYASABKAkSPgoFdmFsdWUYAiABKAsyLy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5JbWFnZVN0YWdlTWFwOgI4ASKLAQoNSW1hZ2VTdGFnZU1hcBJLCgZzdGFnZXMYASADKAsyOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5JbWFnZVN0YWdlTWFwLlN0YWdlc0VudHJ5Gi0KC1N0YWdlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBToCOAEibQoPR2V0U3RhZ2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiaQoQR2V0U3RhZ2VSZXNwb25zZRI8CgVzdGFnZRgBIAEoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5TdGFnZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCIzChJXYXRjaFN0YWdlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIl8KE1dhdGNoU3RhZ2VzUmVzcG9uc2USOgoFc3RhZ2UYASABKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2USDAoEdHlwZRgCIAEoCSIzChJEZWxldGVTdGFnZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhUKE0RlbGV0ZVN0YWdlUmVzcG9uc2UiNAoTUmVmcmVzaFN0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiUgoUUmVmcmVzaFN0YWdlUmVzcG9uc2USOgoFc3RhZ2UYASABKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2UiRgoVTGlzdFByb21vdGlvbnNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSEgoFc3RhZ2UYAiABKAlIAIgBAUIICgZfc3RhZ2UiXQoWTGlzdFByb21vdGlvbnNSZXNwb25zZRJDCgpwcm9tb3Rpb25zGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbiJHChZXYXRjaFByb21vdGlvbnNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSEgoFc3RhZ2UYAiABKAlIAIgBAUIICgZfc3RhZ2UiawoXV2F0Y2hQcm9tb3Rpb25zUmVzcG9uc2USQgoJcHJvbW90aW9uGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbhIMCgR0eXBlGAIgASgJInEKE0dldFByb21vdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJ1ChRHZXRQcm9tb3Rpb25SZXNwb25zZRJECglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjYKFVdhdGNoUHJvbW90aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiagoWV2F0Y2hQcm9tb3Rpb25SZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uEgwKBHR5cGUYAiABKAkiNgoVQWJvcnRQcm9tb3Rpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIYChZBYm9ydFByb21vdGlvblJlc3BvbnNlIiQKFERlbGV0ZVByb2plY3RSZXF1ZXN0EgwKBG5hbWUYASABKAkiFwoVRGVsZXRlUHJvamVjdFJlc3BvbnNlImQKF0dldFByb2plY3RDb25maWdSZXF1ZXN0EgwKBG5hbWUYASABKAkSOwoGZm9ybWF0GAIgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IoIBChhHZXRQcm9qZWN0Q29uZmlnUmVzcG9uc2USTQoOcHJvamVjdF9jb25maWcYASABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdENvbmZpZ0gAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJeChFHZXRQcm9qZWN0UmVxdWVzdBIMCgRuYW1lGAEgASgJEjsKBmZvcm1hdBgCIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJvChJHZXRQcm9qZWN0UmVzcG9uc2USQAoHcHJvamVjdBgBIAEoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9qZWN0SAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IncKE0xpc3RQcm9qZWN0c1JlcXVlc3QSFgoJcGFnZV9zaXplGAEgASgFSACIAQESEQoEcGFnZRgCIAEoBUgBiAEBEhMKBmZpbHRlchgDIAEoCUgCiAEBQgwKCl9wYWdlX3NpemVCBwoFX3BhZ2VCCQoHX2ZpbHRlciJmChRMaXN0UHJvamVjdHNSZXNwb25zZRI/Cghwcm9qZWN0cxgBIAMoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9qZWN0Eg0KBXRvdGFsGAIgASgFIlQKFUFwcHJvdmVGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSDQoFYWxpYXMYAyABKAkSDQoFc3RhZ2UYBCABKAkiGAoWQXBwcm92ZUZyZWlnaHRSZXNwb25zZSJEChREZWxldGVGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSDQoFYWxpYXMYAyABKAkiFwoVRGVsZXRlRnJlaWdodFJlc3BvbnNlIn4KEUdldEZyZWlnaHRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRINCgVhbGlhcxgDIAEoCRI7CgZmb3JtYXQYBCABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQibwoSR2V0RnJlaWdodFJlc3BvbnNlEkAKB2ZyZWlnaHQYASABKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJfChVQcm9tb3RlVG9TdGFnZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCRIPCgdmcmVpZ2h0GAMgASgJEhUKDWZyZWlnaHRfYWxpYXMYBCABKAkiXAoWUHJvbW90ZVRvU3RhZ2VSZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uImIKGFByb21vdGVEb3duc3RyZWFtUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJEg8KB2ZyZWlnaHQYAyABKAkSFQoNZnJlaWdodF9hbGlhcxgEIAEoCSJgChlQcm9tb3RlRG93bnN0cmVhbVJlc3BvbnNlEkMKCnByb21vdGlvbnMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uIooBChNRdWVyeUZyZWlnaHRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkSEAoIZ3JvdXBfYnkYAyABKAkSDQoFZ3JvdXAYBCABKAkSEAoIb3JkZXJfYnkYBSABKAkSDwoHcmV2ZXJzZRgGIAEoCBIPCgdvcmlnaW5zGAcgAygJIsgBChRRdWVyeUZyZWlnaHRSZXNwb25zZRJSCgZncm91cHMYASADKAsyQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5RdWVyeUZyZWlnaHRSZXNwb25zZS5Hcm91cHNFbnRyeRpcCgtHcm91cHNFbnRyeRILCgNrZXkYASABKAkSPAoFdmFsdWUYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5GcmVpZ2h0TGlzdDoCOAEiTQoLRnJlaWdodExpc3QSPgoHZnJlaWdodBgBIAMoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0ImAKGVVwZGF0ZUZyZWlnaHRBbGlhc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCW9sZF9hbGlhcxgDIAEoCRIRCgluZXdfYWxpYXMYBCABKAkiHAoaVXBkYXRlRnJlaWdodEFsaWFzUmVzcG9uc2UiMQoPUmV2ZXJpZnlSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkiEgoQUmV2ZXJpZnlSZXNwb25zZSI6ChhBYm9ydFZlcmlmaWNhdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCSIbChlBYm9ydFZlcmlmaWNhdGlvblJlc3BvbnNlIigKFUxpc3RXYXJlaG91c2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIl0KFkxpc3RXYXJlaG91c2VzUmVzcG9uc2USQwoKd2FyZWhvdXNlcxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5XYXJlaG91c2UicQoTR2V0V2FyZWhvdXNlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0InUKFEdldFdhcmVob3VzZVJlc3BvbnNlEkQKCXdhcmVob3VzZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5XYXJlaG91c2VIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNwoWV2F0Y2hXYXJlaG91c2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiawoXV2F0Y2hXYXJlaG91c2VzUmVzcG9uc2USQgoJd2FyZWhvdXNlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZRIMCgR0eXBlGAIgASgJIjcKFkRlbGV0ZVdhcmVob3VzZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhkKF0RlbGV0ZVdhcmVob3VzZVJlc3BvbnNlIjgKF1JlZnJlc2hXYXJlaG91c2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJeChhSZWZyZXNoV2FyZWhvdXNlUmVzcG9uc2USQgoJd2FyZWhvdXNlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZSIsChlMaXN0UHJvamVjdFNlY3JldHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiSQoaTGlzdFByb2plY3RTZWNyZXRzUmVzcG9uc2USKwoHc2VjcmV0cxgBIAMoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQi0wEKGkNyZWF0ZVByb2plY3RTZWNyZXRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRJUCgRkYXRhGAQgAygLMkYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUHJvamVjdFNlY3JldFJlcXVlc3QuRGF0YUVudHJ5GisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkkKG0NyZWF0ZVByb2plY3RTZWNyZXRSZXNwb25zZRIqCgZzZWNyZXQYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0ItMBChpVcGRhdGVQcm9qZWN0U2VjcmV0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSVAoEZGF0YRgEIAMoCzJGLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVByb2plY3RTZWNyZXRSZXF1ZXN0LkRhdGFFbnRyeRorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJJChtVcGRhdGVQcm9qZWN0U2VjcmV0UmVzcG9uc2USKgoGc2VjcmV0GAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCI7ChpEZWxldGVQcm9qZWN0U2VjcmV0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiHQobRGVsZXRlUHJvamVjdFNlY3JldFJlc3BvbnNlIsYBChhDcmVhdGVDcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAggASgJEgwKBHR5cGUYAyABKAkSGQoIcmVwb191cmwYBCABKAlSB3JlcG9VUkwSKQoRcmVwb191cmxfaXNfcmVnZXgYBSABKAhSDnJlcG9VUkxJc1JlZ2V4EhAKCHVzZXJuYW1lGAYgASgJEhAKCHBhc3N3b3JkGAcgASgJIkwKGUNyZWF0ZUNyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IjkKGERlbGV0ZUNyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiGwoZRGVsZXRlQ3JlZGVudGlhbHNSZXNwb25zZSJzChVHZXRDcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJkChZHZXRDcmVkZW50aWFsc1Jlc3BvbnNlEjEKC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCIpChZMaXN0Q3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiSgoXTGlzdENyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASADKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IsYBChhVcGRhdGVDcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAggASgJEgwKBHR5cGUYAyABKAkSGQoIcmVwb191cmwYBCABKAlSB3JlcG9VUkwSKQoRcmVwb191cmxfaXNfcmVnZXgYBSABKAhSDnJlcG9VUkxJc1JlZ2V4EhAKCHVzZXJuYW1lGAYgASgJEhAKCHBhc3N3b3JkGAcgASgJIkwKGVVwZGF0ZUNyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0Ii8KHExpc3RBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSKCAQodTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USYQoSYW5hbHlzaXNfdGVtcGxhdGVzGAEgAygLMkUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkFuYWx5c2lzVGVtcGxhdGUiLAoZTGlzdFByb21vdGlvblRhc2tzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJImoKGkxpc3RQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEkwKD3Byb21vdGlvbl90YXNrcxgBIAMoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25UYXNrIiIKIExpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXF1ZXN0IoABCiFMaXN0Q2x1c3RlclByb21vdGlvblRhc2tzUmVzcG9uc2USWwoXY2x1c3Rlcl9wcm9tb3Rpb25fdGFza3MYASADKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQ2x1c3RlclByb21vdGlvblRhc2sieAoaR2V0QW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKaAQobR2V0QW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEmIKEWFuYWx5c2lzX3RlbXBsYXRlGAEgASgLMkUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkFuYWx5c2lzVGVtcGxhdGVIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQidQoXR2V0UHJvbW90aW9uVGFza1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKCAQoYR2V0UHJvbW90aW9uVGFza1Jlc3BvbnNlEk0KDnByb21vdGlvbl90YXNrGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblRhc2tIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiawoeR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXF1ZXN0EgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IqYBCh9HZXRDbHVzdGVyUHJvbW90aW9uVGFza1Jlc3BvbnNlEmoKDnByb21vdGlvbl90YXNrGAEgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJQcm9tb3Rpb25UYXNrSABSFGNsdXN0ZXJQcm9tb3Rpb25UYXNrEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCIlCiNMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdCKzAQokTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1Jlc3BvbnNlEooBChpjbHVzdGVyX2FuYWx5c2lzX3RlbXBsYXRlcxgBIAMoCzJMLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5DbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVIYY2x1c3RlcmFuYWx5c2lzVGVtcGxhdGVzIm4KIUdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKwAQoiR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRJxChljbHVzdGVyX2FuYWx5c2lzX3RlbXBsYXRlGAEgASgLMkwuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0InUKFUdldEFuYWx5c2lzUnVuUmVxdWVzdBIRCgluYW1lc3BhY2UYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiiwEKFkdldEFuYWx5c2lzUnVuUmVzcG9uc2USWAoMYW5hbHlzaXNfcnVuGAEgASgLMkAuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkFuYWx5c2lzUnVuSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0ImkKGUdldEFuYWx5c2lzUnVuTG9nc1JlcXVlc3QSEQoJbmFtZXNwYWNlGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLbWV0cmljX25hbWUYAyABKAkSFgoOY29udGFpbmVyX25hbWUYBCABKAkiKwoaR2V0QW5hbHlzaXNSdW5Mb2dzUmVzcG9uc2USDQoFY2h1bmsYASABKAkiPgodRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIiAKHkRlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZSI0CiREZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDAoEbmFtZRgCIAEoCSInCiVEZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlIisKGExpc3RQcm9qZWN0RXZlbnRzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIkYKGUxpc3RQcm9qZWN0RXZlbnRzUmVzcG9uc2USKQoGZXZlbnRzGAEgAygLMhkuazhzLmlvLmFwaS5jb3JlLnYxLkV2ZW50IlIKEUNyZWF0ZVJvbGVSZXF1ZXN0Ej0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIlMKEkNyZWF0ZVJvbGVSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSIyChFEZWxldGVSb2xlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiFAoSRGVsZXRlUm9sZVJlc3BvbnNlIoIBCg5HZXRSb2xlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSFAoMYXNfcmVzb3VyY2VzGAMgASgIEjsKBmZvcm1hdBgEIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCK6AQoPR2V0Um9sZVJlc3BvbnNlEj8KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlSAASTQoJcmVzb3VyY2VzGAIgASgLMjguZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZVJlc291cmNlc0gAEg0KA3JhdxgDIAEoDEgAQggKBnJlc3VsdCJKCgZDbGFpbXMSQAoGY2xhaW1zGAEgAygLMjAuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuQ2xhaW0i0QEKDEdyYW50UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBHJvbGUYAiABKAkSPwoLdXNlcl9jbGFpbXMYAyABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DbGFpbXNIABJWChByZXNvdXJjZV9kZXRhaWxzGAQgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUmVzb3VyY2VEZXRhaWxzSABCCQoHcmVxdWVzdCJOCg1HcmFudFJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIjkKEExpc3RSb2xlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIUCgxhc19yZXNvdXJjZXMYAiABKAgioAEKEUxpc3RSb2xlc1Jlc3BvbnNlEj4KBXJvbGVzGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZRJLCglyZXNvdXJjZXMYAiADKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlUmVzb3VyY2VzItIBCg1SZXZva2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEcm9sZRgCIAEoCRI/Cgt1c2VyX2NsYWltcxgDIAEoCzIoLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNsYWltc0gAElYKEHJlc291cmNlX2RldGFpbHMYBCABKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5SZXNvdXJjZURldGFpbHNIAEIJCgdyZXF1ZXN0Ik8KDlJldm9rZVJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIlIKEVVwZGF0ZVJvbGVSZXF1ZXN0Ej0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIlMKElVwZGF0ZVJvbGVSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSpRCglSYXdGb3JtYXQSGgoWUkFXX0ZPUk1BVF9VTlNQRUNJRklFRBAAEhMKD1JBV19GT1JNQVRfSlNPThABEhMKD1JBV19GT1JNQVRfWUFNTBACMq1GCgxLYXJnb1NlcnZpY2USgwEKDkdldFZlcnNpb25JbmZvEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0VmVyc2lvbkluZm9SZXNwb25zZRJ0CglHZXRDb25maWcSMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdSZXF1ZXN0GjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UShgEKD0dldFB1YmxpY0NvbmZpZxI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFB1YmxpY0NvbmZpZ1JlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQdWJsaWNDb25maWdSZXNwb25zZRJ3CgpBZG1pbkxvZ2luEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWRtaW5Mb2dpblJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BZG1pbkxvZ2luUmVzcG9uc2USgwEKDkNyZWF0ZVJlc291cmNlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVzb3VyY2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVzb3VyY2VSZXNwb25zZRKbAQoWQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZRI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEoMBCg5VcGRhdGVSZXNvdXJjZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlc291cmNlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlc291cmNlUmVzcG9uc2USgwEKDkRlbGV0ZVJlc291cmNlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVzb3VyY2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVzb3VyY2VSZXNwb25zZRJ3CgpMaXN0U3RhZ2VzEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFN0YWdlc1JlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VzUmVzcG9uc2USdwoKTGlzdEltYWdlcxIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RJbWFnZXNSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1Jlc3BvbnNlEnEKCEdldFN0YWdlEjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VSZXF1ZXN0GjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VSZXNwb25zZRJ8CgtXYXRjaFN0YWdlcxI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoU3RhZ2VzUmVxdWVzdBo1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoU3RhZ2VzUmVzcG9uc2UwARJ6CgtEZWxldGVTdGFnZRI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVN0YWdlUmVxdWVzdBo1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVN0YWdlUmVzcG9uc2USfQoMUmVmcmVzaFN0YWdlEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmVmcmVzaFN0YWdlUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJlZnJlc2hTdGFnZVJlc3BvbnNlEoMBCg5MaXN0UHJvbW90aW9ucxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25zUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25zUmVzcG9uc2USiAEKD1dhdGNoUHJvbW90aW9ucxI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uc1JlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb21vdGlvbnNSZXNwb25zZTABEn0KDEdldFByb21vdGlvbhI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb21vdGlvblJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25SZXNwb25zZRKFAQoOV2F0Y2hQcm9tb3Rpb24SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb21vdGlvblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb21vdGlvblJlc3BvbnNlMAESgwEKDkFib3J0UHJvbW90aW9uEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWJvcnRQcm9tb3Rpb25SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWJvcnRQcm9tb3Rpb25SZXNwb25zZRKAAQoNRGVsZXRlUHJvamVjdBI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVByb2plY3RSZXF1ZXN0GjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdFJlc3BvbnNlEncKCkdldFByb2plY3QSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9qZWN0UmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RSZXNwb25zZRJ9CgxMaXN0UHJvamVjdHMSNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvamVjdHNSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RzUmVzcG9uc2USiQEKEEdldFByb2plY3RDb25maWcSOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9qZWN0Q29uZmlnUmVxdWVzdBo6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RDb25maWdSZXNwb25zZRKDAQoOQXBwcm92ZUZyZWlnaHQSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BcHByb3ZlRnJlaWdodFJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BcHByb3ZlRnJlaWdodFJlc3BvbnNlEoABCg1EZWxldGVGcmVpZ2h0EjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlRnJlaWdodFJlcXVlc3QaNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVGcmVpZ2h0UmVzcG9uc2USdwoKR2V0RnJlaWdodBIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEZyZWlnaHRSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0RnJlaWdodFJlc3BvbnNlEoMBCg5Qcm9tb3RlVG9TdGFnZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVUb1N0YWdlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVUb1N0YWdlUmVzcG9uc2USjAEKEVByb21vdGVEb3duc3RyZWFtEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZURvd25zdHJlYW1SZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZURvd25zdHJlYW1SZXNwb25zZRJ9CgxRdWVyeUZyZWlnaHQSNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5RdWVyeUZyZWlnaHRSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUXVlcnlGcmVpZ2h0UmVzcG9uc2USjwEKElVwZGF0ZUZyZWlnaHRBbGlhcxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUZyZWlnaHRBbGlhc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVGcmVpZ2h0QWxpYXNSZXNwb25zZRJxCghSZXZlcmlmeRIxLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldmVyaWZ5UmVxdWVzdBoyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldmVyaWZ5UmVzcG9uc2USjAEKEUFib3J0VmVyaWZpY2F0aW9uEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWJvcnRWZXJpZmljYXRpb25SZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWJvcnRWZXJpZmljYXRpb25SZXNwb25zZRKDAQoOTGlzdFdhcmVob3VzZXMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0V2FyZWhvdXNlc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0V2FyZWhvdXNlc1Jlc3BvbnNlEn0KDEdldFdhcmVob3VzZRI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFdhcmVob3VzZVJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRXYXJlaG91c2VSZXNwb25zZRKIAQoPV2F0Y2hXYXJlaG91c2VzEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hXYXJlaG91c2VzUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoV2FyZWhvdXNlc1Jlc3BvbnNlMAEShgEKD0RlbGV0ZVdhcmVob3VzZRI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVdhcmVob3VzZVJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVXYXJlaG91c2VSZXNwb25zZRKJAQoQUmVmcmVzaFdhcmVob3VzZRI5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJlZnJlc2hXYXJlaG91c2VSZXF1ZXN0GjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmVmcmVzaFdhcmVob3VzZVJlc3BvbnNlEowBChFDcmVhdGVDcmVkZW50aWFscxI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUNyZWRlbnRpYWxzUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUNyZWRlbnRpYWxzUmVzcG9uc2USjAEKEURlbGV0ZUNyZWRlbnRpYWxzEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ3JlZGVudGlhbHNSZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ3JlZGVudGlhbHNSZXNwb25zZRKDAQoOR2V0Q3JlZGVudGlhbHMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDcmVkZW50aWFsc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDcmVkZW50aWFsc1Jlc3BvbnNlEoYBCg9MaXN0Q3JlZGVudGlhbHMSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q3JlZGVudGlhbHNSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENyZWRlbnRpYWxzUmVzcG9uc2USjAEKEVVwZGF0ZUNyZWRlbnRpYWxzEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ3JlZGVudGlhbHNSZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ3JlZGVudGlhbHNSZXNwb25zZRKPAQoSTGlzdFByb2plY3RTZWNyZXRzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RTZWNyZXRzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0U2VjcmV0c1Jlc3BvbnNlEpIBChNDcmVhdGVQcm9qZWN0U2VjcmV0EjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUHJvamVjdFNlY3JldFJlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVQcm9qZWN0U2VjcmV0UmVzcG9uc2USkgEKE1VwZGF0ZVByb2plY3RTZWNyZXQSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVQcm9qZWN0U2VjcmV0UmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVByb2plY3RTZWNyZXRSZXNwb25zZRKSAQoTRGVsZXRlUHJvamVjdFNlY3JldBI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVByb2plY3RTZWNyZXRSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdFNlY3JldFJlc3BvbnNlEpgBChVMaXN0QW5hbHlzaXNUZW1wbGF0ZXMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USkgEKE0dldEFuYWx5c2lzVGVtcGxhdGUSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKbAQoWRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZRI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEq0BChxMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzEkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QaRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USpwEKGkdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlEkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKwAQodRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGUSRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaRy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEoMBCg5HZXRBbmFseXNpc1J1bhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVzcG9uc2USkQEKEkdldEFuYWx5c2lzUnVuTG9ncxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuTG9nc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1J1bkxvZ3NSZXNwb25zZTABEowBChFMaXN0UHJvamVjdEV2ZW50cxI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVzcG9uc2USjwEKEkxpc3RQcm9tb3Rpb25UYXNrcxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25UYXNrc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uVGFza3NSZXNwb25zZRKkAQoZTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrcxJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXF1ZXN0GkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEokBChBHZXRQcm9tb3Rpb25UYXNrEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uVGFza1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25UYXNrUmVzcG9uc2USngEKF0dldENsdXN0ZXJQcm9tb3Rpb25UYXNrEkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXF1ZXN0GkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXNwb25zZRJ3CgpDcmVhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSb2xlUmVzcG9uc2USdwoKRGVsZXRlUm9sZRIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJvbGVSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUm9sZVJlc3BvbnNlEm4KB0dldFJvbGUSMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRSb2xlUmVxdWVzdBoxLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJvbGVSZXNwb25zZRJoCgVHcmFudBIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVxdWVzdBovLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVzcG9uc2USdAoJTGlzdFJvbGVzEjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJvbGVzUmVxdWVzdBozLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RSb2xlc1Jlc3BvbnNlEmsKBlJldm9rZRIvLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldm9rZVJlcXVlc3QaMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZva2VSZXNwb25zZRJ3CgpVcGRhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSb2xlUmVzcG9uc2VCkwIKJGNvbS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMUIMU2VydmljZVByb3RvUAFaOGdpdGh1Yi5jb20vYWt1aXR5L2thcmdvL2FwaS9zZXJ2aWNlL3YxYWxwaGExO3N2Y3YxYWxwaGExogIEQUlLU6oCIEFrdWl0eS5Jby5LYXJnby5TZXJ2aWNlLlYxYWxwaGExygIgQWt1aXR5XElvXEthcmdvXFNlcnZpY2VcVjFhbHBoYTHiAixBa3VpdHlcSW9cS2FyZ29cU2VydmljZVxWMWFscGhhMVxHUEJNZXRhZGF0YeoCJEFrdWl0eTo6SW86OkthcmdvOjpTZXJ2aWNlOjpWMWFscGhhMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_api_v1alpha1_generated, file_k8s_io_api_core_v1_generated, file_api_stubs_rollouts_v1alpha1_generated, file_api_rbac_v1alpha1_generated]);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ComponentVersions
@@ -1078,6 +1078,57 @@ export type DeleteProjectResponse = Message<"akuity.io.kargo.service.v1alpha1.De
 export const DeleteProjectResponseSchema: GenMessage<DeleteProjectResponse> = /*@__PURE__*/
   messageDesc(file_api_service_v1alpha1_service, 49);
 
+/**
+ * @generated from message akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest
+ */
+export type GetProjectConfigRequest = Message<"akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest"> & {
+  /**
+   * @generated from field: string name = 1;
+   */
+  name: string;
+
+  /**
+   * @generated from field: akuity.io.kargo.service.v1alpha1.RawFormat format = 2;
+   */
+  format: RawFormat;
+};
+
+/**
+ * Describes the message akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest.
+ * Use `create(GetProjectConfigRequestSchema)` to create a new message.
+ */
+export const GetProjectConfigRequestSchema: GenMessage<GetProjectConfigRequest> = /*@__PURE__*/
+  messageDesc(file_api_service_v1alpha1_service, 50);
+
+/**
+ * @generated from message akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse
+ */
+export type GetProjectConfigResponse = Message<"akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse"> & {
+  /**
+   * @generated from oneof akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse.result
+   */
+  result: {
+    /**
+     * @generated from field: github.com.akuity.kargo.api.v1alpha1.ProjectConfig project_config = 1;
+     */
+    value: ProjectConfig;
+    case: "projectConfig";
+  } | {
+    /**
+     * @generated from field: bytes raw = 2;
+     */
+    value: Uint8Array;
+    case: "raw";
+  } | { case: undefined; value?: undefined };
+};
+
+/**
+ * Describes the message akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse.
+ * Use `create(GetProjectConfigResponseSchema)` to create a new message.
+ */
+export const GetProjectConfigResponseSchema: GenMessage<GetProjectConfigResponse> = /*@__PURE__*/
+  messageDesc(file_api_service_v1alpha1_service, 51);
+
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetProjectRequest
  */
@@ -1098,7 +1149,7 @@ export type GetProjectRequest = Message<"akuity.io.kargo.service.v1alpha1.GetPro
  * Use `create(GetProjectRequestSchema)` to create a new message.
  */
 export const GetProjectRequestSchema: GenMessage<GetProjectRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 50);
+  messageDesc(file_api_service_v1alpha1_service, 52);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetProjectResponse
@@ -1127,7 +1178,7 @@ export type GetProjectResponse = Message<"akuity.io.kargo.service.v1alpha1.GetPr
  * Use `create(GetProjectResponseSchema)` to create a new message.
  */
 export const GetProjectResponseSchema: GenMessage<GetProjectResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 51);
+  messageDesc(file_api_service_v1alpha1_service, 53);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListProjectsRequest
@@ -1154,7 +1205,7 @@ export type ListProjectsRequest = Message<"akuity.io.kargo.service.v1alpha1.List
  * Use `create(ListProjectsRequestSchema)` to create a new message.
  */
 export const ListProjectsRequestSchema: GenMessage<ListProjectsRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 52);
+  messageDesc(file_api_service_v1alpha1_service, 54);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListProjectsResponse
@@ -1176,7 +1227,7 @@ export type ListProjectsResponse = Message<"akuity.io.kargo.service.v1alpha1.Lis
  * Use `create(ListProjectsResponseSchema)` to create a new message.
  */
 export const ListProjectsResponseSchema: GenMessage<ListProjectsResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 53);
+  messageDesc(file_api_service_v1alpha1_service, 55);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ApproveFreightRequest
@@ -1208,7 +1259,7 @@ export type ApproveFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Ap
  * Use `create(ApproveFreightRequestSchema)` to create a new message.
  */
 export const ApproveFreightRequestSchema: GenMessage<ApproveFreightRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 54);
+  messageDesc(file_api_service_v1alpha1_service, 56);
 
 /**
  * explicitly empty 
@@ -1223,7 +1274,7 @@ export type ApproveFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.A
  * Use `create(ApproveFreightResponseSchema)` to create a new message.
  */
 export const ApproveFreightResponseSchema: GenMessage<ApproveFreightResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 55);
+  messageDesc(file_api_service_v1alpha1_service, 57);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.DeleteFreightRequest
@@ -1250,7 +1301,7 @@ export type DeleteFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Del
  * Use `create(DeleteFreightRequestSchema)` to create a new message.
  */
 export const DeleteFreightRequestSchema: GenMessage<DeleteFreightRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 56);
+  messageDesc(file_api_service_v1alpha1_service, 58);
 
 /**
  * explicitly empty 
@@ -1265,7 +1316,7 @@ export type DeleteFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.De
  * Use `create(DeleteFreightResponseSchema)` to create a new message.
  */
 export const DeleteFreightResponseSchema: GenMessage<DeleteFreightResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 57);
+  messageDesc(file_api_service_v1alpha1_service, 59);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetFreightRequest
@@ -1297,7 +1348,7 @@ export type GetFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.GetFre
  * Use `create(GetFreightRequestSchema)` to create a new message.
  */
 export const GetFreightRequestSchema: GenMessage<GetFreightRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 58);
+  messageDesc(file_api_service_v1alpha1_service, 60);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetFreightResponse
@@ -1326,7 +1377,7 @@ export type GetFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.GetFr
  * Use `create(GetFreightResponseSchema)` to create a new message.
  */
 export const GetFreightResponseSchema: GenMessage<GetFreightResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 59);
+  messageDesc(file_api_service_v1alpha1_service, 61);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.PromoteToStageRequest
@@ -1358,7 +1409,7 @@ export type PromoteToStageRequest = Message<"akuity.io.kargo.service.v1alpha1.Pr
  * Use `create(PromoteToStageRequestSchema)` to create a new message.
  */
 export const PromoteToStageRequestSchema: GenMessage<PromoteToStageRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 60);
+  messageDesc(file_api_service_v1alpha1_service, 62);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.PromoteToStageResponse
@@ -1375,7 +1426,7 @@ export type PromoteToStageResponse = Message<"akuity.io.kargo.service.v1alpha1.P
  * Use `create(PromoteToStageResponseSchema)` to create a new message.
  */
 export const PromoteToStageResponseSchema: GenMessage<PromoteToStageResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 61);
+  messageDesc(file_api_service_v1alpha1_service, 63);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest
@@ -1407,7 +1458,7 @@ export type PromoteDownstreamRequest = Message<"akuity.io.kargo.service.v1alpha1
  * Use `create(PromoteDownstreamRequestSchema)` to create a new message.
  */
 export const PromoteDownstreamRequestSchema: GenMessage<PromoteDownstreamRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 62);
+  messageDesc(file_api_service_v1alpha1_service, 64);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse
@@ -1424,7 +1475,7 @@ export type PromoteDownstreamResponse = Message<"akuity.io.kargo.service.v1alpha
  * Use `create(PromoteDownstreamResponseSchema)` to create a new message.
  */
 export const PromoteDownstreamResponseSchema: GenMessage<PromoteDownstreamResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 63);
+  messageDesc(file_api_service_v1alpha1_service, 65);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.QueryFreightRequest
@@ -1471,7 +1522,7 @@ export type QueryFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Quer
  * Use `create(QueryFreightRequestSchema)` to create a new message.
  */
 export const QueryFreightRequestSchema: GenMessage<QueryFreightRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 64);
+  messageDesc(file_api_service_v1alpha1_service, 66);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.QueryFreightResponse
@@ -1488,7 +1539,7 @@ export type QueryFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.Que
  * Use `create(QueryFreightResponseSchema)` to create a new message.
  */
 export const QueryFreightResponseSchema: GenMessage<QueryFreightResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 65);
+  messageDesc(file_api_service_v1alpha1_service, 67);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.FreightList
@@ -1505,7 +1556,7 @@ export type FreightList = Message<"akuity.io.kargo.service.v1alpha1.FreightList"
  * Use `create(FreightListSchema)` to create a new message.
  */
 export const FreightListSchema: GenMessage<FreightList> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 66);
+  messageDesc(file_api_service_v1alpha1_service, 68);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest
@@ -1537,7 +1588,7 @@ export type UpdateFreightAliasRequest = Message<"akuity.io.kargo.service.v1alpha
  * Use `create(UpdateFreightAliasRequestSchema)` to create a new message.
  */
 export const UpdateFreightAliasRequestSchema: GenMessage<UpdateFreightAliasRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 67);
+  messageDesc(file_api_service_v1alpha1_service, 69);
 
 /**
  * explicitly empty 
@@ -1552,7 +1603,7 @@ export type UpdateFreightAliasResponse = Message<"akuity.io.kargo.service.v1alph
  * Use `create(UpdateFreightAliasResponseSchema)` to create a new message.
  */
 export const UpdateFreightAliasResponseSchema: GenMessage<UpdateFreightAliasResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 68);
+  messageDesc(file_api_service_v1alpha1_service, 70);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ReverifyRequest
@@ -1574,7 +1625,7 @@ export type ReverifyRequest = Message<"akuity.io.kargo.service.v1alpha1.Reverify
  * Use `create(ReverifyRequestSchema)` to create a new message.
  */
 export const ReverifyRequestSchema: GenMessage<ReverifyRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 69);
+  messageDesc(file_api_service_v1alpha1_service, 71);
 
 /**
  * explicitly empty 
@@ -1589,7 +1640,7 @@ export type ReverifyResponse = Message<"akuity.io.kargo.service.v1alpha1.Reverif
  * Use `create(ReverifyResponseSchema)` to create a new message.
  */
 export const ReverifyResponseSchema: GenMessage<ReverifyResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 70);
+  messageDesc(file_api_service_v1alpha1_service, 72);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.AbortVerificationRequest
@@ -1611,7 +1662,7 @@ export type AbortVerificationRequest = Message<"akuity.io.kargo.service.v1alpha1
  * Use `create(AbortVerificationRequestSchema)` to create a new message.
  */
 export const AbortVerificationRequestSchema: GenMessage<AbortVerificationRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 71);
+  messageDesc(file_api_service_v1alpha1_service, 73);
 
 /**
  * explicitly empty 
@@ -1626,7 +1677,7 @@ export type AbortVerificationResponse = Message<"akuity.io.kargo.service.v1alpha
  * Use `create(AbortVerificationResponseSchema)` to create a new message.
  */
 export const AbortVerificationResponseSchema: GenMessage<AbortVerificationResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 72);
+  messageDesc(file_api_service_v1alpha1_service, 74);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListWarehousesRequest
@@ -1643,7 +1694,7 @@ export type ListWarehousesRequest = Message<"akuity.io.kargo.service.v1alpha1.Li
  * Use `create(ListWarehousesRequestSchema)` to create a new message.
  */
 export const ListWarehousesRequestSchema: GenMessage<ListWarehousesRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 73);
+  messageDesc(file_api_service_v1alpha1_service, 75);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListWarehousesResponse
@@ -1660,7 +1711,7 @@ export type ListWarehousesResponse = Message<"akuity.io.kargo.service.v1alpha1.L
  * Use `create(ListWarehousesResponseSchema)` to create a new message.
  */
 export const ListWarehousesResponseSchema: GenMessage<ListWarehousesResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 74);
+  messageDesc(file_api_service_v1alpha1_service, 76);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetWarehouseRequest
@@ -1687,7 +1738,7 @@ export type GetWarehouseRequest = Message<"akuity.io.kargo.service.v1alpha1.GetW
  * Use `create(GetWarehouseRequestSchema)` to create a new message.
  */
 export const GetWarehouseRequestSchema: GenMessage<GetWarehouseRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 75);
+  messageDesc(file_api_service_v1alpha1_service, 77);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetWarehouseResponse
@@ -1716,7 +1767,7 @@ export type GetWarehouseResponse = Message<"akuity.io.kargo.service.v1alpha1.Get
  * Use `create(GetWarehouseResponseSchema)` to create a new message.
  */
 export const GetWarehouseResponseSchema: GenMessage<GetWarehouseResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 76);
+  messageDesc(file_api_service_v1alpha1_service, 78);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest
@@ -1738,7 +1789,7 @@ export type WatchWarehousesRequest = Message<"akuity.io.kargo.service.v1alpha1.W
  * Use `create(WatchWarehousesRequestSchema)` to create a new message.
  */
 export const WatchWarehousesRequestSchema: GenMessage<WatchWarehousesRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 77);
+  messageDesc(file_api_service_v1alpha1_service, 79);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse
@@ -1760,7 +1811,7 @@ export type WatchWarehousesResponse = Message<"akuity.io.kargo.service.v1alpha1.
  * Use `create(WatchWarehousesResponseSchema)` to create a new message.
  */
 export const WatchWarehousesResponseSchema: GenMessage<WatchWarehousesResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 78);
+  messageDesc(file_api_service_v1alpha1_service, 80);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest
@@ -1782,7 +1833,7 @@ export type DeleteWarehouseRequest = Message<"akuity.io.kargo.service.v1alpha1.D
  * Use `create(DeleteWarehouseRequestSchema)` to create a new message.
  */
 export const DeleteWarehouseRequestSchema: GenMessage<DeleteWarehouseRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 79);
+  messageDesc(file_api_service_v1alpha1_service, 81);
 
 /**
  * explicitly empty 
@@ -1797,7 +1848,7 @@ export type DeleteWarehouseResponse = Message<"akuity.io.kargo.service.v1alpha1.
  * Use `create(DeleteWarehouseResponseSchema)` to create a new message.
  */
 export const DeleteWarehouseResponseSchema: GenMessage<DeleteWarehouseResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 80);
+  messageDesc(file_api_service_v1alpha1_service, 82);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.RefreshWarehouseRequest
@@ -1819,7 +1870,7 @@ export type RefreshWarehouseRequest = Message<"akuity.io.kargo.service.v1alpha1.
  * Use `create(RefreshWarehouseRequestSchema)` to create a new message.
  */
 export const RefreshWarehouseRequestSchema: GenMessage<RefreshWarehouseRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 81);
+  messageDesc(file_api_service_v1alpha1_service, 83);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.RefreshWarehouseResponse
@@ -1836,7 +1887,7 @@ export type RefreshWarehouseResponse = Message<"akuity.io.kargo.service.v1alpha1
  * Use `create(RefreshWarehouseResponseSchema)` to create a new message.
  */
 export const RefreshWarehouseResponseSchema: GenMessage<RefreshWarehouseResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 82);
+  messageDesc(file_api_service_v1alpha1_service, 84);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListProjectSecretsRequest
@@ -1853,7 +1904,7 @@ export type ListProjectSecretsRequest = Message<"akuity.io.kargo.service.v1alpha
  * Use `create(ListProjectSecretsRequestSchema)` to create a new message.
  */
 export const ListProjectSecretsRequestSchema: GenMessage<ListProjectSecretsRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 83);
+  messageDesc(file_api_service_v1alpha1_service, 85);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListProjectSecretsResponse
@@ -1870,7 +1921,7 @@ export type ListProjectSecretsResponse = Message<"akuity.io.kargo.service.v1alph
  * Use `create(ListProjectSecretsResponseSchema)` to create a new message.
  */
 export const ListProjectSecretsResponseSchema: GenMessage<ListProjectSecretsResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 84);
+  messageDesc(file_api_service_v1alpha1_service, 86);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.CreateProjectSecretRequest
@@ -1902,7 +1953,7 @@ export type CreateProjectSecretRequest = Message<"akuity.io.kargo.service.v1alph
  * Use `create(CreateProjectSecretRequestSchema)` to create a new message.
  */
 export const CreateProjectSecretRequestSchema: GenMessage<CreateProjectSecretRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 85);
+  messageDesc(file_api_service_v1alpha1_service, 87);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.CreateProjectSecretResponse
@@ -1919,7 +1970,7 @@ export type CreateProjectSecretResponse = Message<"akuity.io.kargo.service.v1alp
  * Use `create(CreateProjectSecretResponseSchema)` to create a new message.
  */
 export const CreateProjectSecretResponseSchema: GenMessage<CreateProjectSecretResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 86);
+  messageDesc(file_api_service_v1alpha1_service, 88);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.UpdateProjectSecretRequest
@@ -1951,7 +2002,7 @@ export type UpdateProjectSecretRequest = Message<"akuity.io.kargo.service.v1alph
  * Use `create(UpdateProjectSecretRequestSchema)` to create a new message.
  */
 export const UpdateProjectSecretRequestSchema: GenMessage<UpdateProjectSecretRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 87);
+  messageDesc(file_api_service_v1alpha1_service, 89);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.UpdateProjectSecretResponse
@@ -1968,7 +2019,7 @@ export type UpdateProjectSecretResponse = Message<"akuity.io.kargo.service.v1alp
  * Use `create(UpdateProjectSecretResponseSchema)` to create a new message.
  */
 export const UpdateProjectSecretResponseSchema: GenMessage<UpdateProjectSecretResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 88);
+  messageDesc(file_api_service_v1alpha1_service, 90);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.DeleteProjectSecretRequest
@@ -1990,7 +2041,7 @@ export type DeleteProjectSecretRequest = Message<"akuity.io.kargo.service.v1alph
  * Use `create(DeleteProjectSecretRequestSchema)` to create a new message.
  */
 export const DeleteProjectSecretRequestSchema: GenMessage<DeleteProjectSecretRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 89);
+  messageDesc(file_api_service_v1alpha1_service, 91);
 
 /**
  * explicitly empty 
@@ -2005,7 +2056,7 @@ export type DeleteProjectSecretResponse = Message<"akuity.io.kargo.service.v1alp
  * Use `create(DeleteProjectSecretResponseSchema)` to create a new message.
  */
 export const DeleteProjectSecretResponseSchema: GenMessage<DeleteProjectSecretResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 90);
+  messageDesc(file_api_service_v1alpha1_service, 92);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.CreateCredentialsRequest
@@ -2059,7 +2110,7 @@ export type CreateCredentialsRequest = Message<"akuity.io.kargo.service.v1alpha1
  * Use `create(CreateCredentialsRequestSchema)` to create a new message.
  */
 export const CreateCredentialsRequestSchema: GenMessage<CreateCredentialsRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 91);
+  messageDesc(file_api_service_v1alpha1_service, 93);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.CreateCredentialsResponse
@@ -2076,7 +2127,7 @@ export type CreateCredentialsResponse = Message<"akuity.io.kargo.service.v1alpha
  * Use `create(CreateCredentialsResponseSchema)` to create a new message.
  */
 export const CreateCredentialsResponseSchema: GenMessage<CreateCredentialsResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 92);
+  messageDesc(file_api_service_v1alpha1_service, 94);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.DeleteCredentialsRequest
@@ -2098,7 +2149,7 @@ export type DeleteCredentialsRequest = Message<"akuity.io.kargo.service.v1alpha1
  * Use `create(DeleteCredentialsRequestSchema)` to create a new message.
  */
 export const DeleteCredentialsRequestSchema: GenMessage<DeleteCredentialsRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 93);
+  messageDesc(file_api_service_v1alpha1_service, 95);
 
 /**
  * explicitly empty 
@@ -2113,7 +2164,7 @@ export type DeleteCredentialsResponse = Message<"akuity.io.kargo.service.v1alpha
  * Use `create(DeleteCredentialsResponseSchema)` to create a new message.
  */
 export const DeleteCredentialsResponseSchema: GenMessage<DeleteCredentialsResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 94);
+  messageDesc(file_api_service_v1alpha1_service, 96);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetCredentialsRequest
@@ -2140,7 +2191,7 @@ export type GetCredentialsRequest = Message<"akuity.io.kargo.service.v1alpha1.Ge
  * Use `create(GetCredentialsRequestSchema)` to create a new message.
  */
 export const GetCredentialsRequestSchema: GenMessage<GetCredentialsRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 95);
+  messageDesc(file_api_service_v1alpha1_service, 97);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetCredentialsResponse
@@ -2169,7 +2220,7 @@ export type GetCredentialsResponse = Message<"akuity.io.kargo.service.v1alpha1.G
  * Use `create(GetCredentialsResponseSchema)` to create a new message.
  */
 export const GetCredentialsResponseSchema: GenMessage<GetCredentialsResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 96);
+  messageDesc(file_api_service_v1alpha1_service, 98);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListCredentialsRequest
@@ -2186,7 +2237,7 @@ export type ListCredentialsRequest = Message<"akuity.io.kargo.service.v1alpha1.L
  * Use `create(ListCredentialsRequestSchema)` to create a new message.
  */
 export const ListCredentialsRequestSchema: GenMessage<ListCredentialsRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 97);
+  messageDesc(file_api_service_v1alpha1_service, 99);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListCredentialsResponse
@@ -2203,7 +2254,7 @@ export type ListCredentialsResponse = Message<"akuity.io.kargo.service.v1alpha1.
  * Use `create(ListCredentialsResponseSchema)` to create a new message.
  */
 export const ListCredentialsResponseSchema: GenMessage<ListCredentialsResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 98);
+  messageDesc(file_api_service_v1alpha1_service, 100);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.UpdateCredentialsRequest
@@ -2255,7 +2306,7 @@ export type UpdateCredentialsRequest = Message<"akuity.io.kargo.service.v1alpha1
  * Use `create(UpdateCredentialsRequestSchema)` to create a new message.
  */
 export const UpdateCredentialsRequestSchema: GenMessage<UpdateCredentialsRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 99);
+  messageDesc(file_api_service_v1alpha1_service, 101);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.UpdateCredentialsResponse
@@ -2272,7 +2323,7 @@ export type UpdateCredentialsResponse = Message<"akuity.io.kargo.service.v1alpha
  * Use `create(UpdateCredentialsResponseSchema)` to create a new message.
  */
 export const UpdateCredentialsResponseSchema: GenMessage<UpdateCredentialsResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 100);
+  messageDesc(file_api_service_v1alpha1_service, 102);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest
@@ -2289,7 +2340,7 @@ export type ListAnalysisTemplatesRequest = Message<"akuity.io.kargo.service.v1al
  * Use `create(ListAnalysisTemplatesRequestSchema)` to create a new message.
  */
 export const ListAnalysisTemplatesRequestSchema: GenMessage<ListAnalysisTemplatesRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 101);
+  messageDesc(file_api_service_v1alpha1_service, 103);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse
@@ -2306,7 +2357,7 @@ export type ListAnalysisTemplatesResponse = Message<"akuity.io.kargo.service.v1a
  * Use `create(ListAnalysisTemplatesResponseSchema)` to create a new message.
  */
 export const ListAnalysisTemplatesResponseSchema: GenMessage<ListAnalysisTemplatesResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 102);
+  messageDesc(file_api_service_v1alpha1_service, 104);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest
@@ -2323,7 +2374,7 @@ export type ListPromotionTasksRequest = Message<"akuity.io.kargo.service.v1alpha
  * Use `create(ListPromotionTasksRequestSchema)` to create a new message.
  */
 export const ListPromotionTasksRequestSchema: GenMessage<ListPromotionTasksRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 103);
+  messageDesc(file_api_service_v1alpha1_service, 105);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse
@@ -2340,7 +2391,7 @@ export type ListPromotionTasksResponse = Message<"akuity.io.kargo.service.v1alph
  * Use `create(ListPromotionTasksResponseSchema)` to create a new message.
  */
 export const ListPromotionTasksResponseSchema: GenMessage<ListPromotionTasksResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 104);
+  messageDesc(file_api_service_v1alpha1_service, 106);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest
@@ -2353,7 +2404,7 @@ export type ListClusterPromotionTasksRequest = Message<"akuity.io.kargo.service.
  * Use `create(ListClusterPromotionTasksRequestSchema)` to create a new message.
  */
 export const ListClusterPromotionTasksRequestSchema: GenMessage<ListClusterPromotionTasksRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 105);
+  messageDesc(file_api_service_v1alpha1_service, 107);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse
@@ -2370,7 +2421,7 @@ export type ListClusterPromotionTasksResponse = Message<"akuity.io.kargo.service
  * Use `create(ListClusterPromotionTasksResponseSchema)` to create a new message.
  */
 export const ListClusterPromotionTasksResponseSchema: GenMessage<ListClusterPromotionTasksResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 106);
+  messageDesc(file_api_service_v1alpha1_service, 108);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest
@@ -2397,7 +2448,7 @@ export type GetAnalysisTemplateRequest = Message<"akuity.io.kargo.service.v1alph
  * Use `create(GetAnalysisTemplateRequestSchema)` to create a new message.
  */
 export const GetAnalysisTemplateRequestSchema: GenMessage<GetAnalysisTemplateRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 107);
+  messageDesc(file_api_service_v1alpha1_service, 109);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse
@@ -2426,7 +2477,7 @@ export type GetAnalysisTemplateResponse = Message<"akuity.io.kargo.service.v1alp
  * Use `create(GetAnalysisTemplateResponseSchema)` to create a new message.
  */
 export const GetAnalysisTemplateResponseSchema: GenMessage<GetAnalysisTemplateResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 108);
+  messageDesc(file_api_service_v1alpha1_service, 110);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest
@@ -2453,7 +2504,7 @@ export type GetPromotionTaskRequest = Message<"akuity.io.kargo.service.v1alpha1.
  * Use `create(GetPromotionTaskRequestSchema)` to create a new message.
  */
 export const GetPromotionTaskRequestSchema: GenMessage<GetPromotionTaskRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 109);
+  messageDesc(file_api_service_v1alpha1_service, 111);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse
@@ -2482,7 +2533,7 @@ export type GetPromotionTaskResponse = Message<"akuity.io.kargo.service.v1alpha1
  * Use `create(GetPromotionTaskResponseSchema)` to create a new message.
  */
 export const GetPromotionTaskResponseSchema: GenMessage<GetPromotionTaskResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 110);
+  messageDesc(file_api_service_v1alpha1_service, 112);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest
@@ -2504,7 +2555,7 @@ export type GetClusterPromotionTaskRequest = Message<"akuity.io.kargo.service.v1
  * Use `create(GetClusterPromotionTaskRequestSchema)` to create a new message.
  */
 export const GetClusterPromotionTaskRequestSchema: GenMessage<GetClusterPromotionTaskRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 111);
+  messageDesc(file_api_service_v1alpha1_service, 113);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse
@@ -2533,7 +2584,7 @@ export type GetClusterPromotionTaskResponse = Message<"akuity.io.kargo.service.v
  * Use `create(GetClusterPromotionTaskResponseSchema)` to create a new message.
  */
 export const GetClusterPromotionTaskResponseSchema: GenMessage<GetClusterPromotionTaskResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 112);
+  messageDesc(file_api_service_v1alpha1_service, 114);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest
@@ -2546,7 +2597,7 @@ export type ListClusterAnalysisTemplatesRequest = Message<"akuity.io.kargo.servi
  * Use `create(ListClusterAnalysisTemplatesRequestSchema)` to create a new message.
  */
 export const ListClusterAnalysisTemplatesRequestSchema: GenMessage<ListClusterAnalysisTemplatesRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 113);
+  messageDesc(file_api_service_v1alpha1_service, 115);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse
@@ -2563,7 +2614,7 @@ export type ListClusterAnalysisTemplatesResponse = Message<"akuity.io.kargo.serv
  * Use `create(ListClusterAnalysisTemplatesResponseSchema)` to create a new message.
  */
 export const ListClusterAnalysisTemplatesResponseSchema: GenMessage<ListClusterAnalysisTemplatesResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 114);
+  messageDesc(file_api_service_v1alpha1_service, 116);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest
@@ -2585,7 +2636,7 @@ export type GetClusterAnalysisTemplateRequest = Message<"akuity.io.kargo.service
  * Use `create(GetClusterAnalysisTemplateRequestSchema)` to create a new message.
  */
 export const GetClusterAnalysisTemplateRequestSchema: GenMessage<GetClusterAnalysisTemplateRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 115);
+  messageDesc(file_api_service_v1alpha1_service, 117);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse
@@ -2614,7 +2665,7 @@ export type GetClusterAnalysisTemplateResponse = Message<"akuity.io.kargo.servic
  * Use `create(GetClusterAnalysisTemplateResponseSchema)` to create a new message.
  */
 export const GetClusterAnalysisTemplateResponseSchema: GenMessage<GetClusterAnalysisTemplateResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 116);
+  messageDesc(file_api_service_v1alpha1_service, 118);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest
@@ -2641,7 +2692,7 @@ export type GetAnalysisRunRequest = Message<"akuity.io.kargo.service.v1alpha1.Ge
  * Use `create(GetAnalysisRunRequestSchema)` to create a new message.
  */
 export const GetAnalysisRunRequestSchema: GenMessage<GetAnalysisRunRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 117);
+  messageDesc(file_api_service_v1alpha1_service, 119);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse
@@ -2670,7 +2721,7 @@ export type GetAnalysisRunResponse = Message<"akuity.io.kargo.service.v1alpha1.G
  * Use `create(GetAnalysisRunResponseSchema)` to create a new message.
  */
 export const GetAnalysisRunResponseSchema: GenMessage<GetAnalysisRunResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 118);
+  messageDesc(file_api_service_v1alpha1_service, 120);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest
@@ -2702,7 +2753,7 @@ export type GetAnalysisRunLogsRequest = Message<"akuity.io.kargo.service.v1alpha
  * Use `create(GetAnalysisRunLogsRequestSchema)` to create a new message.
  */
 export const GetAnalysisRunLogsRequestSchema: GenMessage<GetAnalysisRunLogsRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 119);
+  messageDesc(file_api_service_v1alpha1_service, 121);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse
@@ -2719,7 +2770,7 @@ export type GetAnalysisRunLogsResponse = Message<"akuity.io.kargo.service.v1alph
  * Use `create(GetAnalysisRunLogsResponseSchema)` to create a new message.
  */
 export const GetAnalysisRunLogsResponseSchema: GenMessage<GetAnalysisRunLogsResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 120);
+  messageDesc(file_api_service_v1alpha1_service, 122);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest
@@ -2741,7 +2792,7 @@ export type DeleteAnalysisTemplateRequest = Message<"akuity.io.kargo.service.v1a
  * Use `create(DeleteAnalysisTemplateRequestSchema)` to create a new message.
  */
 export const DeleteAnalysisTemplateRequestSchema: GenMessage<DeleteAnalysisTemplateRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 121);
+  messageDesc(file_api_service_v1alpha1_service, 123);
 
 /**
  * explicitly empty 
@@ -2756,7 +2807,7 @@ export type DeleteAnalysisTemplateResponse = Message<"akuity.io.kargo.service.v1
  * Use `create(DeleteAnalysisTemplateResponseSchema)` to create a new message.
  */
 export const DeleteAnalysisTemplateResponseSchema: GenMessage<DeleteAnalysisTemplateResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 122);
+  messageDesc(file_api_service_v1alpha1_service, 124);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest
@@ -2773,7 +2824,7 @@ export type DeleteClusterAnalysisTemplateRequest = Message<"akuity.io.kargo.serv
  * Use `create(DeleteClusterAnalysisTemplateRequestSchema)` to create a new message.
  */
 export const DeleteClusterAnalysisTemplateRequestSchema: GenMessage<DeleteClusterAnalysisTemplateRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 123);
+  messageDesc(file_api_service_v1alpha1_service, 125);
 
 /**
  * explicitly empty 
@@ -2788,7 +2839,7 @@ export type DeleteClusterAnalysisTemplateResponse = Message<"akuity.io.kargo.ser
  * Use `create(DeleteClusterAnalysisTemplateResponseSchema)` to create a new message.
  */
 export const DeleteClusterAnalysisTemplateResponseSchema: GenMessage<DeleteClusterAnalysisTemplateResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 124);
+  messageDesc(file_api_service_v1alpha1_service, 126);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest
@@ -2805,7 +2856,7 @@ export type ListProjectEventsRequest = Message<"akuity.io.kargo.service.v1alpha1
  * Use `create(ListProjectEventsRequestSchema)` to create a new message.
  */
 export const ListProjectEventsRequestSchema: GenMessage<ListProjectEventsRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 125);
+  messageDesc(file_api_service_v1alpha1_service, 127);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse
@@ -2822,7 +2873,7 @@ export type ListProjectEventsResponse = Message<"akuity.io.kargo.service.v1alpha
  * Use `create(ListProjectEventsResponseSchema)` to create a new message.
  */
 export const ListProjectEventsResponseSchema: GenMessage<ListProjectEventsResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 126);
+  messageDesc(file_api_service_v1alpha1_service, 128);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.CreateRoleRequest
@@ -2839,7 +2890,7 @@ export type CreateRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.Create
  * Use `create(CreateRoleRequestSchema)` to create a new message.
  */
 export const CreateRoleRequestSchema: GenMessage<CreateRoleRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 127);
+  messageDesc(file_api_service_v1alpha1_service, 129);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.CreateRoleResponse
@@ -2856,7 +2907,7 @@ export type CreateRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.Creat
  * Use `create(CreateRoleResponseSchema)` to create a new message.
  */
 export const CreateRoleResponseSchema: GenMessage<CreateRoleResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 128);
+  messageDesc(file_api_service_v1alpha1_service, 130);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.DeleteRoleRequest
@@ -2878,7 +2929,7 @@ export type DeleteRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.Delete
  * Use `create(DeleteRoleRequestSchema)` to create a new message.
  */
 export const DeleteRoleRequestSchema: GenMessage<DeleteRoleRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 129);
+  messageDesc(file_api_service_v1alpha1_service, 131);
 
 /**
  * explicitly empty 
@@ -2893,7 +2944,7 @@ export type DeleteRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.Delet
  * Use `create(DeleteRoleResponseSchema)` to create a new message.
  */
 export const DeleteRoleResponseSchema: GenMessage<DeleteRoleResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 130);
+  messageDesc(file_api_service_v1alpha1_service, 132);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetRoleRequest
@@ -2925,7 +2976,7 @@ export type GetRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.GetRoleRe
  * Use `create(GetRoleRequestSchema)` to create a new message.
  */
 export const GetRoleRequestSchema: GenMessage<GetRoleRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 131);
+  messageDesc(file_api_service_v1alpha1_service, 133);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GetRoleResponse
@@ -2960,7 +3011,7 @@ export type GetRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.GetRoleR
  * Use `create(GetRoleResponseSchema)` to create a new message.
  */
 export const GetRoleResponseSchema: GenMessage<GetRoleResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 132);
+  messageDesc(file_api_service_v1alpha1_service, 134);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.Claims
@@ -2979,7 +3030,7 @@ export type Claims = Message<"akuity.io.kargo.service.v1alpha1.Claims"> & {
  * Use `create(ClaimsSchema)` to create a new message.
  */
 export const ClaimsSchema: GenMessage<Claims> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 133);
+  messageDesc(file_api_service_v1alpha1_service, 135);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GrantRequest
@@ -3018,7 +3069,7 @@ export type GrantRequest = Message<"akuity.io.kargo.service.v1alpha1.GrantReques
  * Use `create(GrantRequestSchema)` to create a new message.
  */
 export const GrantRequestSchema: GenMessage<GrantRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 134);
+  messageDesc(file_api_service_v1alpha1_service, 136);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.GrantResponse
@@ -3035,7 +3086,7 @@ export type GrantResponse = Message<"akuity.io.kargo.service.v1alpha1.GrantRespo
  * Use `create(GrantResponseSchema)` to create a new message.
  */
 export const GrantResponseSchema: GenMessage<GrantResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 135);
+  messageDesc(file_api_service_v1alpha1_service, 137);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListRolesRequest
@@ -3057,7 +3108,7 @@ export type ListRolesRequest = Message<"akuity.io.kargo.service.v1alpha1.ListRol
  * Use `create(ListRolesRequestSchema)` to create a new message.
  */
 export const ListRolesRequestSchema: GenMessage<ListRolesRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 136);
+  messageDesc(file_api_service_v1alpha1_service, 138);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.ListRolesResponse
@@ -3081,7 +3132,7 @@ export type ListRolesResponse = Message<"akuity.io.kargo.service.v1alpha1.ListRo
  * Use `create(ListRolesResponseSchema)` to create a new message.
  */
 export const ListRolesResponseSchema: GenMessage<ListRolesResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 137);
+  messageDesc(file_api_service_v1alpha1_service, 139);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.RevokeRequest
@@ -3120,7 +3171,7 @@ export type RevokeRequest = Message<"akuity.io.kargo.service.v1alpha1.RevokeRequ
  * Use `create(RevokeRequestSchema)` to create a new message.
  */
 export const RevokeRequestSchema: GenMessage<RevokeRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 138);
+  messageDesc(file_api_service_v1alpha1_service, 140);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.RevokeResponse
@@ -3137,7 +3188,7 @@ export type RevokeResponse = Message<"akuity.io.kargo.service.v1alpha1.RevokeRes
  * Use `create(RevokeResponseSchema)` to create a new message.
  */
 export const RevokeResponseSchema: GenMessage<RevokeResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 139);
+  messageDesc(file_api_service_v1alpha1_service, 141);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.UpdateRoleRequest
@@ -3154,7 +3205,7 @@ export type UpdateRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.Update
  * Use `create(UpdateRoleRequestSchema)` to create a new message.
  */
 export const UpdateRoleRequestSchema: GenMessage<UpdateRoleRequest> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 140);
+  messageDesc(file_api_service_v1alpha1_service, 142);
 
 /**
  * @generated from message akuity.io.kargo.service.v1alpha1.UpdateRoleResponse
@@ -3171,7 +3222,7 @@ export type UpdateRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.Updat
  * Use `create(UpdateRoleResponseSchema)` to create a new message.
  */
 export const UpdateRoleResponseSchema: GenMessage<UpdateRoleResponse> = /*@__PURE__*/
-  messageDesc(file_api_service_v1alpha1_service, 141);
+  messageDesc(file_api_service_v1alpha1_service, 143);
 
 /**
  * @generated from enum akuity.io.kargo.service.v1alpha1.RawFormat
@@ -3382,6 +3433,14 @@ export const KargoService: GenService<{
     input: typeof ListProjectsRequestSchema;
     output: typeof ListProjectsResponseSchema;
   },
+  /**
+   * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig
+   */
+  getProjectConfig: {
+    methodKind: "unary";
+    input: typeof GetProjectConfigRequestSchema;
+    output: typeof GetProjectConfigResponseSchema;
+  },
   /**
    * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight
    */
diff --git a/ui/src/utils/decode-raw-data.ts b/ui/src/utils/decode-raw-data.ts
index fdeb3994..3c097017 100644
--- a/ui/src/utils/decode-raw-data.ts
+++ b/ui/src/utils/decode-raw-data.ts
@@ -12,7 +12,8 @@ type Data = {
           | 'clusterAnalysisTemplate'
           | 'warehouse'
           | 'promotionTask'
-          | 'promotion';
+          | 'promotion'
+          | 'projectConfig';
       }
     | {
         value: Uint8Array;



Test patch:
diff --git a/internal/server/get_project_config_v1alpha1_test.go b/internal/server/get_project_config_v1alpha1_test.go
new file mode 100644
index 00000000..1294712f
--- /dev/null
+++ b/internal/server/get_project_config_v1alpha1_test.go
@@ -0,0 +1,221 @@
+package server
+
+import (
+	"context"
+	"testing"
+
+	"connectrpc.com/connect"
+	"github.com/stretchr/testify/require"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/apimachinery/pkg/runtime/serializer"
+	"k8s.io/client-go/rest"
+	"sigs.k8s.io/controller-runtime/pkg/client"
+	"sigs.k8s.io/controller-runtime/pkg/client/fake"
+	"sigs.k8s.io/controller-runtime/pkg/client/interceptor"
+
+	svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1"
+	kargoapi "github.com/akuity/kargo/api/v1alpha1"
+	"github.com/akuity/kargo/internal/server/kubernetes"
+)
+
+func TestGetProjectConfig(t *testing.T) {
+	testCases := map[string]struct {
+		req         *svcv1alpha1.GetProjectConfigRequest
+		objects     []client.Object
+		interceptor interceptor.Funcs
+		assertions  func(*testing.T, *connect.Response[svcv1alpha1.GetProjectConfigResponse], error)
+	}{
+		"empty name": {
+			req: &svcv1alpha1.GetProjectConfigRequest{
+				Name: "",
+			},
+			objects: []client.Object{
+				&kargoapi.ProjectConfig{
+					ObjectMeta: metav1.ObjectMeta{
+						Name: "kargo-demo",
+					},
+				},
+			},
+			assertions: func(t *testing.T, r *connect.Response[svcv1alpha1.GetProjectConfigResponse], err error) {
+				require.Error(t, err)
+				require.Equal(t, connect.CodeInvalidArgument, connect.CodeOf(err))
+				require.Nil(t, r)
+			},
+		},
+		"non-existing ProjectConfig": {
+			req: &svcv1alpha1.GetProjectConfigRequest{
+				Name: "kargo-x",
+			},
+			objects: []client.Object{},
+			assertions: func(t *testing.T, r *connect.Response[svcv1alpha1.GetProjectConfigResponse], err error) {
+				require.Error(t, err)
+				require.Equal(t, connect.CodeNotFound, connect.CodeOf(err))
+				require.Nil(t, r)
+			},
+		},
+		"existing ProjectConfig": {
+			req: &svcv1alpha1.GetProjectConfigRequest{
+				Name: "kargo-demo",
+			},
+			objects: []client.Object{
+				&kargoapi.ProjectConfig{
+					ObjectMeta: metav1.ObjectMeta{
+						Name:      "kargo-demo",
+						Namespace: "kargo-demo",
+					},
+				},
+			},
+			assertions: func(t *testing.T, r *connect.Response[svcv1alpha1.GetProjectConfigResponse], err error) {
+				require.NoError(t, err)
+
+				require.NotNil(t, r)
+				require.Nil(t, r.Msg.GetRaw())
+
+				require.NotNil(t, r.Msg.GetProjectConfig())
+				require.Equal(t, "kargo-demo", r.Msg.GetProjectConfig().Name)
+			},
+		},
+		"raw format JSON": {
+			req: &svcv1alpha1.GetProjectConfigRequest{
+				Name:   "kargo-demo",
+				Format: svcv1alpha1.RawFormat_RAW_FORMAT_JSON,
+			},
+			objects: []client.Object{
+				&kargoapi.ProjectConfig{
+					TypeMeta: metav1.TypeMeta{
+						Kind:       "ProjectConfig",
+						APIVersion: kargoapi.GroupVersion.String(),
+					},
+					ObjectMeta: metav1.ObjectMeta{
+						Name:      "kargo-demo",
+						Namespace: "kargo-demo",
+					},
+					Spec: kargoapi.ProjectConfigSpec{
+						PromotionPolicies: []kargoapi.PromotionPolicy{
+							{
+								AutoPromotionEnabled: true,
+								StageSelector: &kargoapi.PromotionPolicySelector{
+									Name: "foo",
+								},
+							},
+						},
+					},
+				},
+			},
+			assertions: func(t *testing.T, r *connect.Response[svcv1alpha1.GetProjectConfigResponse], err error) {
+				require.NoError(t, err)
+
+				require.NotNil(t, r)
+				require.Nil(t, r.Msg.GetProjectConfig())
+				require.NotNil(t, r.Msg.GetRaw())
+
+				scheme := runtime.NewScheme()
+				require.NoError(t, kargoapi.AddToScheme(scheme))
+
+				obj, _, err := serializer.NewCodecFactory(scheme).UniversalDeserializer().Decode(
+					r.Msg.GetRaw(),
+					nil,
+					nil,
+				)
+
+				require.NoError(t, err)
+				tObj, ok := obj.(*kargoapi.ProjectConfig)
+				require.True(t, ok)
+				require.Equal(t, "kargo-demo", tObj.Name)
+				require.Equal(t, "kargo-demo", tObj.Namespace)
+				require.Equal(t, 1, len(tObj.Spec.PromotionPolicies))
+				require.Equal(t, true, tObj.Spec.PromotionPolicies[0].AutoPromotionEnabled)
+				require.Equal(t, "foo", tObj.Spec.PromotionPolicies[0].StageSelector.Name)
+			},
+		},
+		"raw format YAML": {
+			req: &svcv1alpha1.GetProjectConfigRequest{
+				Name:   "kargo-demo",
+				Format: svcv1alpha1.RawFormat_RAW_FORMAT_YAML,
+			},
+			objects: []client.Object{
+				&kargoapi.ProjectConfig{
+					TypeMeta: metav1.TypeMeta{
+						Kind:       "ProjectConfig",
+						APIVersion: kargoapi.GroupVersion.String(),
+					},
+					ObjectMeta: metav1.ObjectMeta{
+						Name:      "kargo-demo",
+						Namespace: "kargo-demo",
+					},
+					Spec: kargoapi.ProjectConfigSpec{
+						PromotionPolicies: []kargoapi.PromotionPolicy{
+							{
+								AutoPromotionEnabled: true,
+								StageSelector: &kargoapi.PromotionPolicySelector{
+									Name: "foo",
+								},
+							},
+						},
+					},
+				},
+			},
+			assertions: func(t *testing.T, c *connect.Response[svcv1alpha1.GetProjectConfigResponse], err error) {
+				require.NoError(t, err)
+
+				require.NotNil(t, c)
+				require.Nil(t, c.Msg.GetProjectConfig())
+				require.NotNil(t, c.Msg.GetRaw())
+
+				scheme := runtime.NewScheme()
+				require.NoError(t, kargoapi.AddToScheme(scheme))
+
+				obj, _, err := serializer.NewCodecFactory(scheme).UniversalDeserializer().Decode(
+					c.Msg.GetRaw(),
+					nil,
+					nil,
+				)
+				require.NoError(t, err)
+				tObj, ok := obj.(*kargoapi.ProjectConfig)
+				require.True(t, ok)
+				require.Equal(t, "kargo-demo", tObj.Name)
+				require.Equal(t, "kargo-demo", tObj.Namespace)
+				require.Equal(t, 1, len(tObj.Spec.PromotionPolicies))
+				require.Equal(t, true, tObj.Spec.PromotionPolicies[0].AutoPromotionEnabled)
+				require.Equal(t, "foo", tObj.Spec.PromotionPolicies[0].StageSelector.Name)
+			},
+		},
+	}
+
+	for name, testCase := range testCases {
+		t.Run(name, func(t *testing.T) {
+			t.Parallel()
+
+			ctx := context.Background()
+
+			client, err := kubernetes.NewClient(
+				ctx,
+				&rest.Config{},
+				kubernetes.ClientOptions{
+					SkipAuthorization: true,
+					NewInternalClient: func(
+						_ context.Context,
+						_ *rest.Config,
+						scheme *runtime.Scheme,
+					) (client.Client, error) {
+						c := fake.NewClientBuilder().WithScheme(scheme).WithInterceptorFuncs(testCase.interceptor)
+						if len(testCase.objects) > 0 {
+							c.WithObjects(testCase.objects...)
+						}
+						return c.Build(), nil
+					},
+				},
+			)
+
+			require.NoError(t, err)
+
+			svr := &server{
+				client: client,
+			}
+
+			res, err := (svr).GetProjectConfig(ctx, connect.NewRequest(testCase.req))
+			testCase.assertions(t, res, err)
+		})
+	}
+}