// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.34.2
// 	protoc        (unknown)
// source: bff/cluster_management/v1beta1/services.proto

package cluster_managementv1beta1

import (
	_ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options"
	v1beta1 "github.com/tidbcloud/tidb-management-service/api/spec/tidb_cloud_open_api/dedicated/v1beta1"
	v1beta11 "github.com/tidbcloud/tidb-management-service/api/spec/tidb_cloud_open_api/serverless/v1beta1"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type Cluster_ClusterType int32

const (
	Cluster_CLUSTER_TYPE_UNSPECIFIED Cluster_ClusterType = 0
	Cluster_DEDICATED                Cluster_ClusterType = 1
	Cluster_SERVERLESS               Cluster_ClusterType = 2
)

// Enum value maps for Cluster_ClusterType.
var (
	Cluster_ClusterType_name = map[int32]string{
		0: "CLUSTER_TYPE_UNSPECIFIED",
		1: "DEDICATED",
		2: "SERVERLESS",
	}
	Cluster_ClusterType_value = map[string]int32{
		"CLUSTER_TYPE_UNSPECIFIED": 0,
		"DEDICATED":                1,
		"SERVERLESS":               2,
	}
)

func (x Cluster_ClusterType) Enum() *Cluster_ClusterType {
	p := new(Cluster_ClusterType)
	*p = x
	return p
}

func (x Cluster_ClusterType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Cluster_ClusterType) Descriptor() protoreflect.EnumDescriptor {
	return file_bff_cluster_management_v1beta1_services_proto_enumTypes[0].Descriptor()
}

func (Cluster_ClusterType) Type() protoreflect.EnumType {
	return &file_bff_cluster_management_v1beta1_services_proto_enumTypes[0]
}

func (x Cluster_ClusterType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Cluster_ClusterType.Descriptor instead.
func (Cluster_ClusterType) EnumDescriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{0, 0}
}

type Cluster struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterType Cluster_ClusterType `protobuf:"varint,1,opt,name=cluster_type,json=clusterType,proto3,enum=bff.cluster_management.v1beta1.Cluster_ClusterType" json:"cluster_type,omitempty"`
	// Types that are assignable to Cluster:
	//
	//	*Cluster_DedicatedCluster
	//	*Cluster_ServerlessCluster
	Cluster isCluster_Cluster `protobuf_oneof:"cluster"`
}

func (x *Cluster) Reset() {
	*x = Cluster{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Cluster) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Cluster) ProtoMessage() {}

func (x *Cluster) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Cluster.ProtoReflect.Descriptor instead.
func (*Cluster) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{0}
}

func (x *Cluster) GetClusterType() Cluster_ClusterType {
	if x != nil {
		return x.ClusterType
	}
	return Cluster_CLUSTER_TYPE_UNSPECIFIED
}

func (m *Cluster) GetCluster() isCluster_Cluster {
	if m != nil {
		return m.Cluster
	}
	return nil
}

func (x *Cluster) GetDedicatedCluster() *v1beta1.Cluster {
	if x, ok := x.GetCluster().(*Cluster_DedicatedCluster); ok {
		return x.DedicatedCluster
	}
	return nil
}

func (x *Cluster) GetServerlessCluster() *v1beta11.Cluster {
	if x, ok := x.GetCluster().(*Cluster_ServerlessCluster); ok {
		return x.ServerlessCluster
	}
	return nil
}

type isCluster_Cluster interface {
	isCluster_Cluster()
}

type Cluster_DedicatedCluster struct {
	DedicatedCluster *v1beta1.Cluster `protobuf:"bytes,2,opt,name=dedicated_cluster,json=dedicatedCluster,proto3,oneof"`
}

type Cluster_ServerlessCluster struct {
	ServerlessCluster *v1beta11.Cluster `protobuf:"bytes,3,opt,name=serverless_cluster,json=serverlessCluster,proto3,oneof"`
}

func (*Cluster_DedicatedCluster) isCluster_Cluster() {}

func (*Cluster_ServerlessCluster) isCluster_Cluster() {}

type GetClusterRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
}

func (x *GetClusterRequest) Reset() {
	*x = GetClusterRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetClusterRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetClusterRequest) ProtoMessage() {}

func (x *GetClusterRequest) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetClusterRequest.ProtoReflect.Descriptor instead.
func (*GetClusterRequest) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{1}
}

func (x *GetClusterRequest) GetClusterId() string {
	if x != nil {
		return x.ClusterId
	}
	return ""
}

type ListClustersRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If unspecified, the project ID of default project is used.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// if unspecified, all clusters are returned.
	ClusterType Cluster_ClusterType `protobuf:"varint,2,opt,name=cluster_type,json=clusterType,proto3,enum=bff.cluster_management.v1beta1.Cluster_ClusterType" json:"cluster_type,omitempty"`
	// Only for dedicated clusters.
	// If ture, only clusters annotated with "tidb.cloud/insufficient-resource" will be returned.
	OnlyResourceInsufficient *bool `protobuf:"varint,3,opt,name=only_resource_insufficient,json=onlyResourceInsufficient,proto3,oneof" json:"only_resource_insufficient,omitempty"`
	// If specified, only clusters with the specified name will be returned.
	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	// The maximum number of clusters to return. The service may return fewer than this value.
	// If unspecified, at most X clusters will be returned.
	// The maximum value is X; values above X will be coerced to X.
	PageSize int32 `protobuf:"varint,100,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// A page token, received from a previous `ListClusters` call.
	// Provide this to retrieve the subsequent page.
	//
	// When paginating, all other parameters provided to `ListClusters` must match
	// the call that provided the page token.
	PageToken string `protobuf:"bytes,101,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	// The number of individual resources to skip before starting to return results.
	// If the skip value causes the cursor to move past the end of the collection,
	// the response will be 200 OK with an empty result set and no next_page_token.
	Skip int32 `protobuf:"varint,102,opt,name=skip,proto3" json:"skip,omitempty"`
}

func (x *ListClustersRequest) Reset() {
	*x = ListClustersRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListClustersRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListClustersRequest) ProtoMessage() {}

func (x *ListClustersRequest) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[2]
	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 ListClustersRequest.ProtoReflect.Descriptor instead.
func (*ListClustersRequest) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{2}
}

func (x *ListClustersRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *ListClustersRequest) GetClusterType() Cluster_ClusterType {
	if x != nil {
		return x.ClusterType
	}
	return Cluster_CLUSTER_TYPE_UNSPECIFIED
}

func (x *ListClustersRequest) GetOnlyResourceInsufficient() bool {
	if x != nil && x.OnlyResourceInsufficient != nil {
		return *x.OnlyResourceInsufficient
	}
	return false
}

func (x *ListClustersRequest) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *ListClustersRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *ListClustersRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

func (x *ListClustersRequest) GetSkip() int32 {
	if x != nil {
		return x.Skip
	}
	return 0
}

type ListClustersResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"`
	// The total number of clusters that matched the query.
	TotalSize int32 `protobuf:"varint,100,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"`
	// A token, which can be sent as `page_token` to retrieve the next page.
	// If this field is omitted, there are no subsequent pages.
	NextPageToken string `protobuf:"bytes,101,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *ListClustersResponse) Reset() {
	*x = ListClustersResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ListClustersResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListClustersResponse) ProtoMessage() {}

func (x *ListClustersResponse) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListClustersResponse.ProtoReflect.Descriptor instead.
func (*ListClustersResponse) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{3}
}

func (x *ListClustersResponse) GetClusters() []*Cluster {
	if x != nil {
		return x.Clusters
	}
	return nil
}

func (x *ListClustersResponse) GetTotalSize() int32 {
	if x != nil {
		return x.TotalSize
	}
	return 0
}

func (x *ListClustersResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

type AdvancedModifyDedicatedClusterRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Cluster *AdvancedModifyDedicatedClusterRequest_Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
}

func (x *AdvancedModifyDedicatedClusterRequest) Reset() {
	*x = AdvancedModifyDedicatedClusterRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AdvancedModifyDedicatedClusterRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AdvancedModifyDedicatedClusterRequest) ProtoMessage() {}

func (x *AdvancedModifyDedicatedClusterRequest) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AdvancedModifyDedicatedClusterRequest.ProtoReflect.Descriptor instead.
func (*AdvancedModifyDedicatedClusterRequest) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{4}
}

func (x *AdvancedModifyDedicatedClusterRequest) GetCluster() *AdvancedModifyDedicatedClusterRequest_Cluster {
	if x != nil {
		return x.Cluster
	}
	return nil
}

type CheckModificationRisksRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Cluster *AdvancedModifyDedicatedClusterRequest_Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
}

func (x *CheckModificationRisksRequest) Reset() {
	*x = CheckModificationRisksRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CheckModificationRisksRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CheckModificationRisksRequest) ProtoMessage() {}

func (x *CheckModificationRisksRequest) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[5]
	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 CheckModificationRisksRequest.ProtoReflect.Descriptor instead.
func (*CheckModificationRisksRequest) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{5}
}

func (x *CheckModificationRisksRequest) GetCluster() *AdvancedModifyDedicatedClusterRequest_Cluster {
	if x != nil {
		return x.Cluster
	}
	return nil
}

type CheckModificationRisksResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Risked bool                                   `protobuf:"varint,1,opt,name=risked,proto3" json:"risked,omitempty"`
	Risks  []*CheckModificationRisksResponse_Risk `protobuf:"bytes,2,rep,name=risks,proto3" json:"risks,omitempty"`
}

func (x *CheckModificationRisksResponse) Reset() {
	*x = CheckModificationRisksResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CheckModificationRisksResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CheckModificationRisksResponse) ProtoMessage() {}

func (x *CheckModificationRisksResponse) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CheckModificationRisksResponse.ProtoReflect.Descriptor instead.
func (*CheckModificationRisksResponse) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{6}
}

func (x *CheckModificationRisksResponse) GetRisked() bool {
	if x != nil {
		return x.Risked
	}
	return false
}

func (x *CheckModificationRisksResponse) GetRisks() []*CheckModificationRisksResponse_Risk {
	if x != nil {
		return x.Risks
	}
	return nil
}

type EstimatePriceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If not specified, the project ID of the default project will be used.
	ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Format: {cloud_provider}-{region_code}
	RegionId string `protobuf:"bytes,2,opt,name=region_id,json=regionId,proto3" json:"region_id,omitempty"`
	// Format: {digits}s
	// If duration is not specified, the default duration is 3600s (1h).
	Duration           *durationpb.Duration                `protobuf:"bytes,3,opt,name=duration,proto3" json:"duration,omitempty"`
	TidbNodeSetting    *v1beta1.Cluster_TidbNodeSetting    `protobuf:"bytes,4,opt,name=tidb_node_setting,json=tidbNodeSetting,proto3" json:"tidb_node_setting,omitempty"`
	TikvNodeSetting    *v1beta1.Cluster_StorageNodeSetting `protobuf:"bytes,5,opt,name=tikv_node_setting,json=tikvNodeSetting,proto3" json:"tikv_node_setting,omitempty"`
	TiflashNodeSetting *v1beta1.Cluster_StorageNodeSetting `protobuf:"bytes,6,opt,name=tiflash_node_setting,json=tiflashNodeSetting,proto3" json:"tiflash_node_setting,omitempty"`
	// If specified, the price will be estimated based on cluster keep paused during the duration interval.
	Paused bool `protobuf:"varint,7,opt,name=paused,proto3" json:"paused,omitempty"`
	// [https://pingcap.feishu.cn/wiki/SWfnwtCBZid1bdk5a7FcamQcn5g#share-E8Uddcpw2onjx1xnUVuc9pcanSh](price promotion until 2025/May)
	Promoted bool `protobuf:"varint,8,opt,name=promoted,proto3" json:"promoted,omitempty"`
}

func (x *EstimatePriceRequest) Reset() {
	*x = EstimatePriceRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *EstimatePriceRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EstimatePriceRequest) ProtoMessage() {}

func (x *EstimatePriceRequest) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use EstimatePriceRequest.ProtoReflect.Descriptor instead.
func (*EstimatePriceRequest) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{7}
}

func (x *EstimatePriceRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *EstimatePriceRequest) GetRegionId() string {
	if x != nil {
		return x.RegionId
	}
	return ""
}

func (x *EstimatePriceRequest) GetDuration() *durationpb.Duration {
	if x != nil {
		return x.Duration
	}
	return nil
}

func (x *EstimatePriceRequest) GetTidbNodeSetting() *v1beta1.Cluster_TidbNodeSetting {
	if x != nil {
		return x.TidbNodeSetting
	}
	return nil
}

func (x *EstimatePriceRequest) GetTikvNodeSetting() *v1beta1.Cluster_StorageNodeSetting {
	if x != nil {
		return x.TikvNodeSetting
	}
	return nil
}

func (x *EstimatePriceRequest) GetTiflashNodeSetting() *v1beta1.Cluster_StorageNodeSetting {
	if x != nil {
		return x.TiflashNodeSetting
	}
	return nil
}

func (x *EstimatePriceRequest) GetPaused() bool {
	if x != nil {
		return x.Paused
	}
	return false
}

func (x *EstimatePriceRequest) GetPromoted() bool {
	if x != nil {
		return x.Promoted
	}
	return false
}

type EstimatePriceResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Prices []*EstimatePriceResponse_Price `protobuf:"bytes,1,rep,name=prices,proto3" json:"prices,omitempty"`
}

func (x *EstimatePriceResponse) Reset() {
	*x = EstimatePriceResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *EstimatePriceResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EstimatePriceResponse) ProtoMessage() {}

func (x *EstimatePriceResponse) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[8]
	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 EstimatePriceResponse.ProtoReflect.Descriptor instead.
func (*EstimatePriceResponse) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{8}
}

func (x *EstimatePriceResponse) GetPrices() []*EstimatePriceResponse_Price {
	if x != nil {
		return x.Prices
	}
	return nil
}

type AdvancedModifyDedicatedClusterRequest_Cluster struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClusterId          string                                                 `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
	TidbNodeSetting    *AdvancedModifyDedicatedClusterRequest_TidbNodeSetting `protobuf:"bytes,2,opt,name=tidb_node_setting,json=tidbNodeSetting,proto3" json:"tidb_node_setting,omitempty"`
	TikvNodeSetting    *v1beta1.UpdateClusterRequest_StorageNodeSetting       `protobuf:"bytes,3,opt,name=tikv_node_setting,json=tikvNodeSetting,proto3" json:"tikv_node_setting,omitempty"`
	TiflashNodeSetting *v1beta1.UpdateClusterRequest_StorageNodeSetting       `protobuf:"bytes,4,opt,name=tiflash_node_setting,json=tiflashNodeSetting,proto3" json:"tiflash_node_setting,omitempty"`
	DisplayName        string                                                 `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
}

func (x *AdvancedModifyDedicatedClusterRequest_Cluster) Reset() {
	*x = AdvancedModifyDedicatedClusterRequest_Cluster{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AdvancedModifyDedicatedClusterRequest_Cluster) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AdvancedModifyDedicatedClusterRequest_Cluster) ProtoMessage() {}

func (x *AdvancedModifyDedicatedClusterRequest_Cluster) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[9]
	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 AdvancedModifyDedicatedClusterRequest_Cluster.ProtoReflect.Descriptor instead.
func (*AdvancedModifyDedicatedClusterRequest_Cluster) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{4, 0}
}

func (x *AdvancedModifyDedicatedClusterRequest_Cluster) GetClusterId() string {
	if x != nil {
		return x.ClusterId
	}
	return ""
}

func (x *AdvancedModifyDedicatedClusterRequest_Cluster) GetTidbNodeSetting() *AdvancedModifyDedicatedClusterRequest_TidbNodeSetting {
	if x != nil {
		return x.TidbNodeSetting
	}
	return nil
}

func (x *AdvancedModifyDedicatedClusterRequest_Cluster) GetTikvNodeSetting() *v1beta1.UpdateClusterRequest_StorageNodeSetting {
	if x != nil {
		return x.TikvNodeSetting
	}
	return nil
}

func (x *AdvancedModifyDedicatedClusterRequest_Cluster) GetTiflashNodeSetting() *v1beta1.UpdateClusterRequest_StorageNodeSetting {
	if x != nil {
		return x.TiflashNodeSetting
	}
	return nil
}

func (x *AdvancedModifyDedicatedClusterRequest_Cluster) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

type AdvancedModifyDedicatedClusterRequest_TidbNodeSetting struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The homogeneous node spec key for all TiDB nodes in the cluster. If specified, all TiDB nodes across different groups in the cluster will update to the same node spec.
	NodeSpecKey            string                                                       `protobuf:"bytes,1,opt,name=node_spec_key,json=nodeSpecKey,proto3" json:"node_spec_key,omitempty"`
	CreateTidbNodeGroups   []*AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate `protobuf:"bytes,2,rep,name=create_tidb_node_groups,json=createTidbNodeGroups,proto3" json:"create_tidb_node_groups,omitempty"`
	UpdateTidbNodeGroups   []*AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate `protobuf:"bytes,3,rep,name=update_tidb_node_groups,json=updateTidbNodeGroups,proto3" json:"update_tidb_node_groups,omitempty"`
	DeleteTidbNodeGroupIds []string                                                     `protobuf:"bytes,4,rep,name=delete_tidb_node_group_ids,json=deleteTidbNodeGroupIds,proto3" json:"delete_tidb_node_group_ids,omitempty"`
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeSetting) Reset() {
	*x = AdvancedModifyDedicatedClusterRequest_TidbNodeSetting{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeSetting) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AdvancedModifyDedicatedClusterRequest_TidbNodeSetting) ProtoMessage() {}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeSetting) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[10]
	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 AdvancedModifyDedicatedClusterRequest_TidbNodeSetting.ProtoReflect.Descriptor instead.
func (*AdvancedModifyDedicatedClusterRequest_TidbNodeSetting) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{4, 1}
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeSetting) GetNodeSpecKey() string {
	if x != nil {
		return x.NodeSpecKey
	}
	return ""
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeSetting) GetCreateTidbNodeGroups() []*AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate {
	if x != nil {
		return x.CreateTidbNodeGroups
	}
	return nil
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeSetting) GetUpdateTidbNodeGroups() []*AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate {
	if x != nil {
		return x.UpdateTidbNodeGroups
	}
	return nil
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeSetting) GetDeleteTidbNodeGroupIds() []string {
	if x != nil {
		return x.DeleteTidbNodeGroupIds
	}
	return nil
}

type AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The display name of the TiDB group.
	DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// The number of TiDB nodes in the TiDB group.
	NodeCount      int32                                 `protobuf:"varint,2,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"`
	TiproxySetting *v1beta1.TidbNodeGroup_TiProxySetting `protobuf:"bytes,3,opt,name=tiproxy_setting,json=tiproxySetting,proto3" json:"tiproxy_setting,omitempty"`
	// The heterogeneous node spec key for TiDB nodes in this TiDB group. If specified, only the TiDB nodes in this TiDB group will update to the specified node spec, while other TiDB groups in the cluster remain unchanged. Only takes effect when homogeneous `node_spec_key` in `tidb_node_setting` is not set.
	NodeSpecKey string `protobuf:"bytes,4,opt,name=node_spec_key,json=nodeSpecKey,proto3" json:"node_spec_key,omitempty"`
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate) Reset() {
	*x = AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate) ProtoMessage() {}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[11]
	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 AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate.ProtoReflect.Descriptor instead.
func (*AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{4, 2}
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate) GetNodeCount() int32 {
	if x != nil {
		return x.NodeCount
	}
	return 0
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate) GetTiproxySetting() *v1beta1.TidbNodeGroup_TiProxySetting {
	if x != nil {
		return x.TiproxySetting
	}
	return nil
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate) GetNodeSpecKey() string {
	if x != nil {
		return x.NodeSpecKey
	}
	return ""
}

type AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TidbNodeGroupId string `protobuf:"bytes,1,opt,name=tidb_node_group_id,json=tidbNodeGroupId,proto3" json:"tidb_node_group_id,omitempty"`
	// The number of TiDB nodes in the TiDB group.
	NodeCount      int32                                 `protobuf:"varint,2,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"`
	TiproxySetting *v1beta1.TidbNodeGroup_TiProxySetting `protobuf:"bytes,3,opt,name=tiproxy_setting,json=tiproxySetting,proto3" json:"tiproxy_setting,omitempty"`
	// The heterogeneous node spec key for TiDB nodes in this TiDB group. If specified, only the TiDB nodes in this TiDB group will update to the specified node spec, while other TiDB groups in the cluster remain unchanged. Only takes effect when homogeneous `node_spec_key` in `tidb_node_setting` is not set.
	NodeSpecKey string `protobuf:"bytes,4,opt,name=node_spec_key,json=nodeSpecKey,proto3" json:"node_spec_key,omitempty"`
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate) Reset() {
	*x = AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate) ProtoMessage() {}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[12]
	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 AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate.ProtoReflect.Descriptor instead.
func (*AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{4, 3}
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate) GetTidbNodeGroupId() string {
	if x != nil {
		return x.TidbNodeGroupId
	}
	return ""
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate) GetNodeCount() int32 {
	if x != nil {
		return x.NodeCount
	}
	return 0
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate) GetTiproxySetting() *v1beta1.TidbNodeGroup_TiProxySetting {
	if x != nil {
		return x.TiproxySetting
	}
	return nil
}

func (x *AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate) GetNodeSpecKey() string {
	if x != nil {
		return x.NodeSpecKey
	}
	return ""
}

type CheckModificationRisksResponse_Risk struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ComponentType v1beta1.ComponentType `protobuf:"varint,1,opt,name=component_type,json=componentType,proto3,enum=tidb_cloud_open_api.dedicated.v1beta1.ComponentType" json:"component_type,omitempty"`
	BizCode       int64                 `protobuf:"varint,2,opt,name=biz_code,json=bizCode,proto3" json:"biz_code,omitempty"`
	Description   string                `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
}

func (x *CheckModificationRisksResponse_Risk) Reset() {
	*x = CheckModificationRisksResponse_Risk{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CheckModificationRisksResponse_Risk) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CheckModificationRisksResponse_Risk) ProtoMessage() {}

func (x *CheckModificationRisksResponse_Risk) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[13]
	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 CheckModificationRisksResponse_Risk.ProtoReflect.Descriptor instead.
func (*CheckModificationRisksResponse_Risk) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{6, 0}
}

func (x *CheckModificationRisksResponse_Risk) GetComponentType() v1beta1.ComponentType {
	if x != nil {
		return x.ComponentType
	}
	return v1beta1.ComponentType(0)
}

func (x *CheckModificationRisksResponse_Risk) GetBizCode() int64 {
	if x != nil {
		return x.BizCode
	}
	return 0
}

func (x *CheckModificationRisksResponse_Risk) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

type EstimatePriceResponse_Price struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ComponentType          v1beta1.ComponentType `protobuf:"varint,1,opt,name=component_type,json=componentType,proto3,enum=tidb_cloud_open_api.dedicated.v1beta1.ComponentType" json:"component_type,omitempty"`
	ComputeOriginalPrice   float64               `protobuf:"fixed64,2,opt,name=compute_original_price,json=computeOriginalPrice,proto3" json:"compute_original_price,omitempty"`
	ComputeDiscountedPrice float64               `protobuf:"fixed64,3,opt,name=compute_discounted_price,json=computeDiscountedPrice,proto3" json:"compute_discounted_price,omitempty"`
	StorageOriginalPrice   float64               `protobuf:"fixed64,4,opt,name=storage_original_price,json=storageOriginalPrice,proto3" json:"storage_original_price,omitempty"`
	StorageDiscountedPrice float64               `protobuf:"fixed64,5,opt,name=storage_discounted_price,json=storageDiscountedPrice,proto3" json:"storage_discounted_price,omitempty"`
}

func (x *EstimatePriceResponse_Price) Reset() {
	*x = EstimatePriceResponse_Price{}
	if protoimpl.UnsafeEnabled {
		mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *EstimatePriceResponse_Price) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EstimatePriceResponse_Price) ProtoMessage() {}

func (x *EstimatePriceResponse_Price) ProtoReflect() protoreflect.Message {
	mi := &file_bff_cluster_management_v1beta1_services_proto_msgTypes[14]
	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 EstimatePriceResponse_Price.ProtoReflect.Descriptor instead.
func (*EstimatePriceResponse_Price) Descriptor() ([]byte, []int) {
	return file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP(), []int{8, 0}
}

func (x *EstimatePriceResponse_Price) GetComponentType() v1beta1.ComponentType {
	if x != nil {
		return x.ComponentType
	}
	return v1beta1.ComponentType(0)
}

func (x *EstimatePriceResponse_Price) GetComputeOriginalPrice() float64 {
	if x != nil {
		return x.ComputeOriginalPrice
	}
	return 0
}

func (x *EstimatePriceResponse_Price) GetComputeDiscountedPrice() float64 {
	if x != nil {
		return x.ComputeDiscountedPrice
	}
	return 0
}

func (x *EstimatePriceResponse_Price) GetStorageOriginalPrice() float64 {
	if x != nil {
		return x.StorageOriginalPrice
	}
	return 0
}

func (x *EstimatePriceResponse_Price) GetStorageDiscountedPrice() float64 {
	if x != nil {
		return x.StorageDiscountedPrice
	}
	return 0
}

var File_bff_cluster_management_v1beta1_services_proto protoreflect.FileDescriptor

var file_bff_cluster_management_v1beta1_services_proto_rawDesc = []byte{
	0x0a, 0x2d, 0x62, 0x66, 0x66, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61,
	0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
	0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
	0x1e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e,
	0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a,
	0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
	0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
	0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61,
	0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e,
	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x35,
	0x74, 0x69, 0x64, 0x62, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f,
	0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x2f, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x65, 0x64, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x72,
	0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x36, 0x74, 0x69, 0x64,
	0x62, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x70, 0x69,
	0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x22, 0xf9, 0x02, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12,
	0x56, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5d, 0x0a, 0x11, 0x64, 0x65, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f,
	0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74,
	0x65, 0x64, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74,
	0x65, 0x72, 0x48, 0x00, 0x52, 0x10, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x60, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
	0x6c, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f,
	0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c,
	0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73,
	0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x4a, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4c, 0x55, 0x53, 0x54,
	0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
	0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x44, 0x49, 0x43, 0x41, 0x54,
	0x45, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x4c, 0x45,
	0x53, 0x53, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22,
	0x37, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x63,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x22, 0xf5, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73,
	0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65,
	0x63, 0x74, 0x49, 0x64, 0x12, 0x5b, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x62, 0x66, 0x66,
	0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
	0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42,
	0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x46, 0x0a, 0x1a, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x18, 0x6f, 0x6e,
	0x6c, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x75, 0x66, 0x66,
	0x69, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
	0x64, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65,
	0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b,
	0x65, 0x6e, 0x18, 0x65, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70,
	0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70,
	0x18, 0x66, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x73, 0x6b, 0x69,
	0x70, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x74,
	0x22, 0xa2, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x63, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x66,
	0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
	0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d,
	0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x64, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a,
	0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
	0x18, 0x65, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65,
	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xc0, 0x0e, 0x0a, 0x25, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63,
	0x65, 0x64, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x44, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65,
	0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x6c, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x4d, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d,
	0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
	0x31, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79,
	0x44, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0xe7, 0x03,
	0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x86, 0x01,
	0x0a, 0x11, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74,
	0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x55, 0x2e, 0x62, 0x66, 0x66, 0x2e,
	0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
	0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e,
	0x63, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x44, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74,
	0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x2e, 0x54, 0x69, 0x64, 0x62, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
	0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x74, 0x69, 0x64, 0x62, 0x4e, 0x6f, 0x64, 0x65, 0x53,
	0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x7f, 0x0a, 0x11, 0x74, 0x69, 0x6b, 0x76, 0x5f, 0x6e,
	0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x4e, 0x2e, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6f,
	0x70, 0x65, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65,
	0x64, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
	0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53,
	0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
	0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x74, 0x69, 0x6b, 0x76, 0x4e, 0x6f, 0x64, 0x65,
	0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x85, 0x01, 0x0a, 0x14, 0x74, 0x69, 0x66, 0x6c,
	0x61, 0x73, 0x68, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55,
	0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x53,
	0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x12, 0x74, 0x69, 0x66,
	0x6c, 0x61, 0x73, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12,
	0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70,
	0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0xab, 0x03, 0x0a, 0x0f, 0x54, 0x69, 0x64, 0x62,
	0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x27, 0x0a, 0x0d, 0x6e,
	0x6f, 0x64, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x70, 0x65,
	0x63, 0x4b, 0x65, 0x79, 0x12, 0x95, 0x01, 0x0a, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f,
	0x74, 0x69, 0x64, 0x62, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x59, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64,
	0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x44, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x69,
	0x64, 0x62, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69,
	0x64, 0x62, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x95, 0x01, 0x0a,
	0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x6e, 0x6f, 0x64,
	0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x59,
	0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e,
	0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
	0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x44, 0x65,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x69, 0x64, 0x62, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x14,
	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x64, 0x62, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x73, 0x12, 0x3f, 0x0a, 0x1a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74,
	0x69, 0x64, 0x62, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69,
	0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x16, 0x64,
	0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x64, 0x62, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x49, 0x64, 0x73, 0x1a, 0xbe, 0x03, 0x0a, 0x13, 0x54, 0x69, 0x64, 0x62, 0x4e, 0x6f,
	0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a,
	0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61,
	0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09,
	0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xe9, 0x01, 0x0a, 0x0f, 0x74, 0x69,
	0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, 0x64, 0x62,
	0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x54, 0x69, 0x50, 0x72, 0x6f, 0x78,
	0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x7b, 0x92, 0x41, 0x75, 0x2a, 0x0e, 0x54,
	0x69, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x32, 0x63, 0x54,
	0x68, 0x65, 0x20, 0x54, 0x69, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69,
	0x6e, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x54, 0x69, 0x44, 0x42, 0x20,
	0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x70,
	0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66,
	0x61, 0x75, 0x6c, 0x74, 0x20, 0x54, 0x69, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x20, 0x73, 0x65, 0x74,
	0x74, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65,
	0x64, 0x2e, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x74, 0x69, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65,
	0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x6f, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x70,
	0x65, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4b, 0x92, 0x41,
	0x45, 0x32, 0x3a, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63,
	0x20, 0x6b, 0x65, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x54, 0x69, 0x44, 0x42,
	0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6d,
	0x70, 0x6c, 0x65, 0x2c, 0x20, 0x60, 0x38, 0x43, 0x33, 0x32, 0x47, 0x60, 0x2e, 0x4a, 0x07, 0x22,
	0x38, 0x43, 0x33, 0x32, 0x47, 0x22, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x53,
	0x70, 0x65, 0x63, 0x4b, 0x65, 0x79, 0x1a, 0xcf, 0x02, 0x0a, 0x13, 0x54, 0x69, 0x64, 0x62, 0x4e,
	0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x30,
	0x0a, 0x12, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x0f, 0x74, 0x69, 0x64, 0x62, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64,
	0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x71, 0x0a, 0x0f, 0x74, 0x69, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f,
	0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e,
	0x74, 0x69, 0x64, 0x62, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f,
	0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, 0x64, 0x62, 0x4e, 0x6f, 0x64, 0x65, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x2e, 0x54, 0x69, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69,
	0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x74, 0x69, 0x70, 0x72, 0x6f, 0x78, 0x79,
	0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x6f, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f,
	0x73, 0x70, 0x65, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4b,
	0x92, 0x41, 0x45, 0x32, 0x3a, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x20, 0x73, 0x70,
	0x65, 0x63, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x54, 0x69,
	0x44, 0x42, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x65, 0x78,
	0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2c, 0x20, 0x60, 0x38, 0x43, 0x33, 0x32, 0x47, 0x60, 0x2e, 0x4a,
	0x07, 0x22, 0x38, 0x43, 0x33, 0x32, 0x47, 0x22, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x6e, 0x6f, 0x64,
	0x65, 0x53, 0x70, 0x65, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x8d, 0x01, 0x0a, 0x1d, 0x43, 0x68, 0x65,
	0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x69,
	0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6c, 0x0a, 0x07, 0x63, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x62, 0x66,
	0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
	0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x76,
	0x61, 0x6e, 0x63, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x44, 0x65, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0xb6, 0x02, 0x0a, 0x1e, 0x43, 0x68, 0x65,
	0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x69,
	0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72,
	0x69, 0x73, 0x6b, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x69, 0x73,
	0x6b, 0x65, 0x64, 0x12, 0x59, 0x0a, 0x05, 0x72, 0x69, 0x73, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x43, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x69, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x52, 0x05, 0x72, 0x69, 0x73, 0x6b, 0x73, 0x1a, 0xa0,
	0x01, 0x0a, 0x04, 0x52, 0x69, 0x73, 0x6b, 0x12, 0x5b, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f,
	0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x34, 0x2e, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6f, 0x70, 0x65,
	0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x2e,
	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e,
	0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x69, 0x7a, 0x5f, 0x63, 0x6f, 0x64, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x69, 0x7a, 0x43, 0x6f, 0x64, 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, 0x22, 0xb5, 0x04, 0x0a, 0x14, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x72,
	0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72,
	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
	0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x20,
	0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64,
	0x12, 0x3a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0,
	0x41, 0x01, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6f, 0x0a, 0x11,
	0x74, 0x69, 0x64, 0x62, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e,
	0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
	0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x69, 0x64, 0x62, 0x4e, 0x6f, 0x64, 0x65,
	0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x74, 0x69,
	0x64, 0x62, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x72, 0x0a,
	0x11, 0x74, 0x69, 0x6b, 0x76, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69,
	0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x74, 0x69, 0x64, 0x62, 0x5f,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x64,
	0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
	0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
	0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01,
	0x52, 0x0f, 0x74, 0x69, 0x6b, 0x76, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
	0x67, 0x12, 0x78, 0x0a, 0x14, 0x74, 0x69, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6e, 0x6f, 0x64,
	0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x41, 0x2e, 0x74, 0x69, 0x64, 0x62, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6f, 0x70, 0x65,
	0x6e, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x2e,
	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e,
	0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69,
	0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x12, 0x74, 0x69, 0x66, 0x6c, 0x61, 0x73, 0x68,
	0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x06, 0x70,
	0x61, 0x75, 0x73, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01,
	0x52, 0x06, 0x70, 0x61, 0x75, 0x73, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6d,
	0x6f, 0x74, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52,
	0x08, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x22, 0xb3, 0x03, 0x0a, 0x15, 0x45, 0x73,
	0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,
	0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69,
	0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65,
	0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x73, 0x1a, 0xc4, 0x02, 0x0a, 0x05, 0x50, 0x72, 0x69,
	0x63, 0x65, 0x12, 0x5b, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x74, 0x69, 0x64,
	0x62, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x61, 0x70, 0x69,
	0x2e, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
	0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65,
	0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x34, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69,
	0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52,
	0x14, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c,
	0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65,
	0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x16, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65,
	0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12,
	0x34, 0x0a, 0x16, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69,
	0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52,
	0x14, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c,
	0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
	0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63,
	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x16, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
	0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x32,
	0xfb, 0x07, 0x0a, 0x0e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69,
	0x63, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74,
	0x65, 0x72, 0x73, 0x12, 0x33, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,
	0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63,
	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e,
	0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c,
	0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x73, 0x12, 0x88, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x12, 0x31, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d,
	0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
	0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,
	0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0x1e, 0x82, 0xd3,
	0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f,
	0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd9, 0x01, 0x0a,
	0x1e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x44,
	0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12,
	0x45, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61,
	0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
	0x2e, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x44,
	0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22,
	0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x22, 0x36, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d,
	0x3a, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x41, 0x64, 0x76, 0x61, 0x6e, 0x63,
	0x65, 0x64, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x12, 0xa1, 0x02, 0x0a, 0x16, 0x43, 0x68, 0x65,
	0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x69,
	0x73, 0x6b, 0x73, 0x12, 0x3d, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62,
	0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x69, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
	0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x69, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x87, 0x01, 0x92, 0x41, 0x44, 0x12, 0x42, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20,
	0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20,
	0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x66,
	0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x22, 0x35, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73,
	0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x69, 0x66,
	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x69, 0x73, 0x6b, 0x73, 0x12, 0xce, 0x01, 0x0a,
	0x0d, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x34,
	0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e,
	0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
	0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74,
	0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x72,
	0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x92, 0x41, 0x2b,
	0x12, 0x29, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70,
	0x72, 0x69, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, 0x6e,
	0x74, 0x65, 0x64, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x3a,
	0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x42, 0x8a, 0x03,
	0x92, 0x41, 0x4e, 0x0a, 0x03, 0x32, 0x2e, 0x30, 0x12, 0x3a, 0x0a, 0x16, 0x54, 0x69, 0x44, 0x42,
	0x20, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x20, 0x41,
	0x50, 0x49, 0x12, 0x17, 0x54, 0x69, 0x44, 0x42, 0x20, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x20, 0x43,
	0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x20, 0x41, 0x50, 0x49, 0x2e, 0x32, 0x07, 0x76, 0x31, 0x62,
	0x65, 0x74, 0x61, 0x31, 0x22, 0x08, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2a, 0x01,
	0x02, 0x0a, 0x22, 0x63, 0x6f, 0x6d, 0x2e, 0x62, 0x66, 0x66, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74,
	0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x50,
	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x6e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
	0x6f, 0x6d, 0x2f, 0x74, 0x69, 0x64, 0x62, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x74, 0x69, 0x64,
	0x62, 0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2d, 0x73, 0x65, 0x72,
	0x76, 0x69, 0x63, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x2f, 0x62, 0x66,
	0x66, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
	0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x63, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x42, 0x43, 0x58, 0xaa, 0x02, 0x1d, 0x42,
	0x66, 0x66, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65,
	0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1d, 0x42,
	0x66, 0x66, 0x5c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65,
	0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x29, 0x42,
	0x66, 0x66, 0x5c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65,
	0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42,
	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1f, 0x42, 0x66, 0x66, 0x3a, 0x3a,
	0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e,
	0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x33,
}

var (
	file_bff_cluster_management_v1beta1_services_proto_rawDescOnce sync.Once
	file_bff_cluster_management_v1beta1_services_proto_rawDescData = file_bff_cluster_management_v1beta1_services_proto_rawDesc
)

func file_bff_cluster_management_v1beta1_services_proto_rawDescGZIP() []byte {
	file_bff_cluster_management_v1beta1_services_proto_rawDescOnce.Do(func() {
		file_bff_cluster_management_v1beta1_services_proto_rawDescData = protoimpl.X.CompressGZIP(file_bff_cluster_management_v1beta1_services_proto_rawDescData)
	})
	return file_bff_cluster_management_v1beta1_services_proto_rawDescData
}

var file_bff_cluster_management_v1beta1_services_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_bff_cluster_management_v1beta1_services_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
var file_bff_cluster_management_v1beta1_services_proto_goTypes = []any{
	(Cluster_ClusterType)(0),                                          // 0: bff.cluster_management.v1beta1.Cluster.ClusterType
	(*Cluster)(nil),                                                   // 1: bff.cluster_management.v1beta1.Cluster
	(*GetClusterRequest)(nil),                                         // 2: bff.cluster_management.v1beta1.GetClusterRequest
	(*ListClustersRequest)(nil),                                       // 3: bff.cluster_management.v1beta1.ListClustersRequest
	(*ListClustersResponse)(nil),                                      // 4: bff.cluster_management.v1beta1.ListClustersResponse
	(*AdvancedModifyDedicatedClusterRequest)(nil),                     // 5: bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest
	(*CheckModificationRisksRequest)(nil),                             // 6: bff.cluster_management.v1beta1.CheckModificationRisksRequest
	(*CheckModificationRisksResponse)(nil),                            // 7: bff.cluster_management.v1beta1.CheckModificationRisksResponse
	(*EstimatePriceRequest)(nil),                                      // 8: bff.cluster_management.v1beta1.EstimatePriceRequest
	(*EstimatePriceResponse)(nil),                                     // 9: bff.cluster_management.v1beta1.EstimatePriceResponse
	(*AdvancedModifyDedicatedClusterRequest_Cluster)(nil),             // 10: bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.Cluster
	(*AdvancedModifyDedicatedClusterRequest_TidbNodeSetting)(nil),     // 11: bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.TidbNodeSetting
	(*AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate)(nil), // 12: bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.TidbNodeGroupCreate
	(*AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate)(nil), // 13: bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.TidbNodeGroupUpdate
	(*CheckModificationRisksResponse_Risk)(nil),                       // 14: bff.cluster_management.v1beta1.CheckModificationRisksResponse.Risk
	(*EstimatePriceResponse_Price)(nil),                               // 15: bff.cluster_management.v1beta1.EstimatePriceResponse.Price
	(*v1beta1.Cluster)(nil),                                           // 16: tidb_cloud_open_api.dedicated.v1beta1.Cluster
	(*v1beta11.Cluster)(nil),                                          // 17: tidb_cloud_open_api.serverless.v1beta1.Cluster
	(*durationpb.Duration)(nil),                                       // 18: google.protobuf.Duration
	(*v1beta1.Cluster_TidbNodeSetting)(nil),                           // 19: tidb_cloud_open_api.dedicated.v1beta1.Cluster.TidbNodeSetting
	(*v1beta1.Cluster_StorageNodeSetting)(nil),                        // 20: tidb_cloud_open_api.dedicated.v1beta1.Cluster.StorageNodeSetting
	(*v1beta1.UpdateClusterRequest_StorageNodeSetting)(nil),           // 21: tidb_cloud_open_api.dedicated.v1beta1.UpdateClusterRequest.StorageNodeSetting
	(*v1beta1.TidbNodeGroup_TiProxySetting)(nil),                      // 22: tidb_cloud_open_api.dedicated.v1beta1.TidbNodeGroup.TiProxySetting
	(v1beta1.ComponentType)(0),                                        // 23: tidb_cloud_open_api.dedicated.v1beta1.ComponentType
}
var file_bff_cluster_management_v1beta1_services_proto_depIdxs = []int32{
	0,  // 0: bff.cluster_management.v1beta1.Cluster.cluster_type:type_name -> bff.cluster_management.v1beta1.Cluster.ClusterType
	16, // 1: bff.cluster_management.v1beta1.Cluster.dedicated_cluster:type_name -> tidb_cloud_open_api.dedicated.v1beta1.Cluster
	17, // 2: bff.cluster_management.v1beta1.Cluster.serverless_cluster:type_name -> tidb_cloud_open_api.serverless.v1beta1.Cluster
	0,  // 3: bff.cluster_management.v1beta1.ListClustersRequest.cluster_type:type_name -> bff.cluster_management.v1beta1.Cluster.ClusterType
	1,  // 4: bff.cluster_management.v1beta1.ListClustersResponse.clusters:type_name -> bff.cluster_management.v1beta1.Cluster
	10, // 5: bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.cluster:type_name -> bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.Cluster
	10, // 6: bff.cluster_management.v1beta1.CheckModificationRisksRequest.cluster:type_name -> bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.Cluster
	14, // 7: bff.cluster_management.v1beta1.CheckModificationRisksResponse.risks:type_name -> bff.cluster_management.v1beta1.CheckModificationRisksResponse.Risk
	18, // 8: bff.cluster_management.v1beta1.EstimatePriceRequest.duration:type_name -> google.protobuf.Duration
	19, // 9: bff.cluster_management.v1beta1.EstimatePriceRequest.tidb_node_setting:type_name -> tidb_cloud_open_api.dedicated.v1beta1.Cluster.TidbNodeSetting
	20, // 10: bff.cluster_management.v1beta1.EstimatePriceRequest.tikv_node_setting:type_name -> tidb_cloud_open_api.dedicated.v1beta1.Cluster.StorageNodeSetting
	20, // 11: bff.cluster_management.v1beta1.EstimatePriceRequest.tiflash_node_setting:type_name -> tidb_cloud_open_api.dedicated.v1beta1.Cluster.StorageNodeSetting
	15, // 12: bff.cluster_management.v1beta1.EstimatePriceResponse.prices:type_name -> bff.cluster_management.v1beta1.EstimatePriceResponse.Price
	11, // 13: bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.Cluster.tidb_node_setting:type_name -> bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.TidbNodeSetting
	21, // 14: bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.Cluster.tikv_node_setting:type_name -> tidb_cloud_open_api.dedicated.v1beta1.UpdateClusterRequest.StorageNodeSetting
	21, // 15: bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.Cluster.tiflash_node_setting:type_name -> tidb_cloud_open_api.dedicated.v1beta1.UpdateClusterRequest.StorageNodeSetting
	12, // 16: bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.TidbNodeSetting.create_tidb_node_groups:type_name -> bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.TidbNodeGroupCreate
	13, // 17: bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.TidbNodeSetting.update_tidb_node_groups:type_name -> bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.TidbNodeGroupUpdate
	22, // 18: bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.TidbNodeGroupCreate.tiproxy_setting:type_name -> tidb_cloud_open_api.dedicated.v1beta1.TidbNodeGroup.TiProxySetting
	22, // 19: bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest.TidbNodeGroupUpdate.tiproxy_setting:type_name -> tidb_cloud_open_api.dedicated.v1beta1.TidbNodeGroup.TiProxySetting
	23, // 20: bff.cluster_management.v1beta1.CheckModificationRisksResponse.Risk.component_type:type_name -> tidb_cloud_open_api.dedicated.v1beta1.ComponentType
	23, // 21: bff.cluster_management.v1beta1.EstimatePriceResponse.Price.component_type:type_name -> tidb_cloud_open_api.dedicated.v1beta1.ComponentType
	3,  // 22: bff.cluster_management.v1beta1.ClusterService.ListClusters:input_type -> bff.cluster_management.v1beta1.ListClustersRequest
	2,  // 23: bff.cluster_management.v1beta1.ClusterService.GetCluster:input_type -> bff.cluster_management.v1beta1.GetClusterRequest
	5,  // 24: bff.cluster_management.v1beta1.ClusterService.AdvancedModifyDedicatedCluster:input_type -> bff.cluster_management.v1beta1.AdvancedModifyDedicatedClusterRequest
	6,  // 25: bff.cluster_management.v1beta1.ClusterService.CheckModificationRisks:input_type -> bff.cluster_management.v1beta1.CheckModificationRisksRequest
	8,  // 26: bff.cluster_management.v1beta1.ClusterService.EstimatePrice:input_type -> bff.cluster_management.v1beta1.EstimatePriceRequest
	4,  // 27: bff.cluster_management.v1beta1.ClusterService.ListClusters:output_type -> bff.cluster_management.v1beta1.ListClustersResponse
	1,  // 28: bff.cluster_management.v1beta1.ClusterService.GetCluster:output_type -> bff.cluster_management.v1beta1.Cluster
	1,  // 29: bff.cluster_management.v1beta1.ClusterService.AdvancedModifyDedicatedCluster:output_type -> bff.cluster_management.v1beta1.Cluster
	7,  // 30: bff.cluster_management.v1beta1.ClusterService.CheckModificationRisks:output_type -> bff.cluster_management.v1beta1.CheckModificationRisksResponse
	9,  // 31: bff.cluster_management.v1beta1.ClusterService.EstimatePrice:output_type -> bff.cluster_management.v1beta1.EstimatePriceResponse
	27, // [27:32] is the sub-list for method output_type
	22, // [22:27] is the sub-list for method input_type
	22, // [22:22] is the sub-list for extension type_name
	22, // [22:22] is the sub-list for extension extendee
	0,  // [0:22] is the sub-list for field type_name
}

func init() { file_bff_cluster_management_v1beta1_services_proto_init() }
func file_bff_cluster_management_v1beta1_services_proto_init() {
	if File_bff_cluster_management_v1beta1_services_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[0].Exporter = func(v any, i int) any {
			switch v := v.(*Cluster); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[1].Exporter = func(v any, i int) any {
			switch v := v.(*GetClusterRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[2].Exporter = func(v any, i int) any {
			switch v := v.(*ListClustersRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[3].Exporter = func(v any, i int) any {
			switch v := v.(*ListClustersResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[4].Exporter = func(v any, i int) any {
			switch v := v.(*AdvancedModifyDedicatedClusterRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[5].Exporter = func(v any, i int) any {
			switch v := v.(*CheckModificationRisksRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[6].Exporter = func(v any, i int) any {
			switch v := v.(*CheckModificationRisksResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[7].Exporter = func(v any, i int) any {
			switch v := v.(*EstimatePriceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[8].Exporter = func(v any, i int) any {
			switch v := v.(*EstimatePriceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[9].Exporter = func(v any, i int) any {
			switch v := v.(*AdvancedModifyDedicatedClusterRequest_Cluster); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[10].Exporter = func(v any, i int) any {
			switch v := v.(*AdvancedModifyDedicatedClusterRequest_TidbNodeSetting); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[11].Exporter = func(v any, i int) any {
			switch v := v.(*AdvancedModifyDedicatedClusterRequest_TidbNodeGroupCreate); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[12].Exporter = func(v any, i int) any {
			switch v := v.(*AdvancedModifyDedicatedClusterRequest_TidbNodeGroupUpdate); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[13].Exporter = func(v any, i int) any {
			switch v := v.(*CheckModificationRisksResponse_Risk); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_bff_cluster_management_v1beta1_services_proto_msgTypes[14].Exporter = func(v any, i int) any {
			switch v := v.(*EstimatePriceResponse_Price); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_bff_cluster_management_v1beta1_services_proto_msgTypes[0].OneofWrappers = []any{
		(*Cluster_DedicatedCluster)(nil),
		(*Cluster_ServerlessCluster)(nil),
	}
	file_bff_cluster_management_v1beta1_services_proto_msgTypes[2].OneofWrappers = []any{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_bff_cluster_management_v1beta1_services_proto_rawDesc,
			NumEnums:      1,
			NumMessages:   15,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_bff_cluster_management_v1beta1_services_proto_goTypes,
		DependencyIndexes: file_bff_cluster_management_v1beta1_services_proto_depIdxs,
		EnumInfos:         file_bff_cluster_management_v1beta1_services_proto_enumTypes,
		MessageInfos:      file_bff_cluster_management_v1beta1_services_proto_msgTypes,
	}.Build()
	File_bff_cluster_management_v1beta1_services_proto = out.File
	file_bff_cluster_management_v1beta1_services_proto_rawDesc = nil
	file_bff_cluster_management_v1beta1_services_proto_goTypes = nil
	file_bff_cluster_management_v1beta1_services_proto_depIdxs = nil
}
