// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License.AGPL.txt in the project root for license information.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.28.1
// 	protoc        v3.20.1
// source: core.proto

package api

import (
	api "github.com/gitpod-io/gitpod/content-service/api"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	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 StopWorkspacePolicy int32

const (
	StopWorkspacePolicy_NORMALLY    StopWorkspacePolicy = 0
	StopWorkspacePolicy_IMMEDIATELY StopWorkspacePolicy = 1
	StopWorkspacePolicy_ABORT       StopWorkspacePolicy = 2
)

// Enum value maps for StopWorkspacePolicy.
var (
	StopWorkspacePolicy_name = map[int32]string{
		0: "NORMALLY",
		1: "IMMEDIATELY",
		2: "ABORT",
	}
	StopWorkspacePolicy_value = map[string]int32{
		"NORMALLY":    0,
		"IMMEDIATELY": 1,
		"ABORT":       2,
	}
)

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

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

func (StopWorkspacePolicy) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[0].Descriptor()
}

func (StopWorkspacePolicy) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[0]
}

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

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

type AdmissionLevel int32

const (
	// WORKSPACE_ADMIT_OWNER_ONLY means the workspace can only be accessed using the owner token
	AdmissionLevel_ADMIT_OWNER_ONLY AdmissionLevel = 0
	// WORKSPACE_ADMIT_EVERYONE means the workspace (including ports) can be accessed by everyone.
	AdmissionLevel_ADMIT_EVERYONE AdmissionLevel = 1
)

// Enum value maps for AdmissionLevel.
var (
	AdmissionLevel_name = map[int32]string{
		0: "ADMIT_OWNER_ONLY",
		1: "ADMIT_EVERYONE",
	}
	AdmissionLevel_value = map[string]int32{
		"ADMIT_OWNER_ONLY": 0,
		"ADMIT_EVERYONE":   1,
	}
)

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

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

func (AdmissionLevel) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[1].Descriptor()
}

func (AdmissionLevel) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[1]
}

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

// Deprecated: Use AdmissionLevel.Descriptor instead.
func (AdmissionLevel) EnumDescriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{1}
}

// PortVisibility defines who may access a workspace port which is guarded by an authentication in the proxy
type PortVisibility int32

const (
	// private (default) means the port is accessible by the workspace owner only, unless the workspace's admission is
	// set to everyone.
	PortVisibility_PORT_VISIBILITY_PRIVATE PortVisibility = 0
	// public means the port is accessible by everybody using the workspace port URL
	PortVisibility_PORT_VISIBILITY_PUBLIC PortVisibility = 1
)

// Enum value maps for PortVisibility.
var (
	PortVisibility_name = map[int32]string{
		0: "PORT_VISIBILITY_PRIVATE",
		1: "PORT_VISIBILITY_PUBLIC",
	}
	PortVisibility_value = map[string]int32{
		"PORT_VISIBILITY_PRIVATE": 0,
		"PORT_VISIBILITY_PUBLIC":  1,
	}
)

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

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

func (PortVisibility) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[2].Descriptor()
}

func (PortVisibility) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[2]
}

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

// Deprecated: Use PortVisibility.Descriptor instead.
func (PortVisibility) EnumDescriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{2}
}

// WorkspaceConditionBool is a trinary bool: true/false/empty
type WorkspaceConditionBool int32

const (
	WorkspaceConditionBool_FALSE WorkspaceConditionBool = 0
	WorkspaceConditionBool_TRUE  WorkspaceConditionBool = 1
	WorkspaceConditionBool_EMPTY WorkspaceConditionBool = 2
)

// Enum value maps for WorkspaceConditionBool.
var (
	WorkspaceConditionBool_name = map[int32]string{
		0: "FALSE",
		1: "TRUE",
		2: "EMPTY",
	}
	WorkspaceConditionBool_value = map[string]int32{
		"FALSE": 0,
		"TRUE":  1,
		"EMPTY": 2,
	}
)

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

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

func (WorkspaceConditionBool) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[3].Descriptor()
}

func (WorkspaceConditionBool) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[3]
}

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

// Deprecated: Use WorkspaceConditionBool.Descriptor instead.
func (WorkspaceConditionBool) EnumDescriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{3}
}

// WorkspacePhase is a simple, high-level summary of where the workspace is in its lifecycle.
// The phase is not intended to be a comprehensive rollup of observations of the workspace state,
// nor is it intended to be a comprehensive state machine.
// (based on  https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase)
type WorkspacePhase int32

const (
	// Unknown indicates an issue within the workspace manager in that it cannot determine the actual phase of
	// a workspace. This phase is usually accompanied by an error.
	WorkspacePhase_UNKNOWN WorkspacePhase = 0
	// Pending means the workspace does not yet consume resources in the cluster, but rather is looking for
	// some space within the cluster. If for example the cluster needs to scale up to accomodate the
	// workspace, the workspace will be in Pending state until that happened.
	WorkspacePhase_PENDING WorkspacePhase = 1
	// Creating means the workspace is currently being created. That includes downloading the images required
	// to run the workspace over the network. The time spent in this phase varies widely and depends on the current
	// network speed, image size and cache states.
	WorkspacePhase_CREATING WorkspacePhase = 2
	// Initializing is the phase in which the workspace is executing the appropriate workspace initializer (e.g. Git
	// clone or backup download). After this phase one can expect the workspace to either be Running or Failed.
	WorkspacePhase_INITIALIZING WorkspacePhase = 3
	// Running means the workspace is able to actively perform work, either by serving a user through Theia,
	// or as a headless workspace.
	WorkspacePhase_RUNNING WorkspacePhase = 4
	// Interrupted is an exceptional state where the container should be running but is temporarily unavailable.
	// When in this state, we expect it to become running or stopping anytime soon.
	WorkspacePhase_INTERRUPTED WorkspacePhase = 7
	// Stopping means that the workspace is currently shutting down. It could go to stopped every moment.
	WorkspacePhase_STOPPING WorkspacePhase = 5
	// Stopped means the workspace ended regularly because it was shut down.
	WorkspacePhase_STOPPED WorkspacePhase = 6
)

// Enum value maps for WorkspacePhase.
var (
	WorkspacePhase_name = map[int32]string{
		0: "UNKNOWN",
		1: "PENDING",
		2: "CREATING",
		3: "INITIALIZING",
		4: "RUNNING",
		7: "INTERRUPTED",
		5: "STOPPING",
		6: "STOPPED",
	}
	WorkspacePhase_value = map[string]int32{
		"UNKNOWN":      0,
		"PENDING":      1,
		"CREATING":     2,
		"INITIALIZING": 3,
		"RUNNING":      4,
		"INTERRUPTED":  7,
		"STOPPING":     5,
		"STOPPED":      6,
	}
)

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

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

func (WorkspacePhase) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[4].Descriptor()
}

func (WorkspacePhase) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[4]
}

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

// Deprecated: Use WorkspacePhase.Descriptor instead.
func (WorkspacePhase) EnumDescriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{4}
}

// WorkspaceFeatureFlag enable non-standard behaviour in workspaces
type WorkspaceFeatureFlag int32

const (
	// NOOP feature flag is just here because I don't want privileged to be 0
	WorkspaceFeatureFlag_NOOP WorkspaceFeatureFlag = 0
	// FullWorkspaceBackup does away with the /workspace host mount. All workspace content lives
	// in the ephemeral container storage. We initlialize workspaces using content layer served by
	// the registry facade and back them up using regular "hardlink backups".
	WorkspaceFeatureFlag_FULL_WORKSPACE_BACKUP WorkspaceFeatureFlag = 4
	// PERSISTENT_VOLUME_CLAIM feature flag for enabling PVC\Snapshot feature support
	WorkspaceFeatureFlag_PERSISTENT_VOLUME_CLAIM WorkspaceFeatureFlag = 7
	// WORKSPACE_CLASS_LIMITING feature flag for enabling resuorce limiting based on workspace class
	WorkspaceFeatureFlag_WORKSPACE_CLASS_LIMITING WorkspaceFeatureFlag = 9
	// WORKSPACE_CONNECTION_LIMITING feature flag for enabling network connection rate limiting
	WorkspaceFeatureFlag_WORKSPACE_CONNECTION_LIMITING WorkspaceFeatureFlag = 10
	// WORKSPACE_PSI feature flag for enabling pressure stall information for workspaces
	WorkspaceFeatureFlag_WORKSPACE_PSI WorkspaceFeatureFlag = 11
)

// Enum value maps for WorkspaceFeatureFlag.
var (
	WorkspaceFeatureFlag_name = map[int32]string{
		0:  "NOOP",
		4:  "FULL_WORKSPACE_BACKUP",
		7:  "PERSISTENT_VOLUME_CLAIM",
		9:  "WORKSPACE_CLASS_LIMITING",
		10: "WORKSPACE_CONNECTION_LIMITING",
		11: "WORKSPACE_PSI",
	}
	WorkspaceFeatureFlag_value = map[string]int32{
		"NOOP":                          0,
		"FULL_WORKSPACE_BACKUP":         4,
		"PERSISTENT_VOLUME_CLAIM":       7,
		"WORKSPACE_CLASS_LIMITING":      9,
		"WORKSPACE_CONNECTION_LIMITING": 10,
		"WORKSPACE_PSI":                 11,
	}
)

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

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

func (WorkspaceFeatureFlag) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[5].Descriptor()
}

func (WorkspaceFeatureFlag) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[5]
}

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

// Deprecated: Use WorkspaceFeatureFlag.Descriptor instead.
func (WorkspaceFeatureFlag) EnumDescriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{5}
}

// WorkspaceType specifies the purpose/use of a workspace. Different workspace types are handled differently by all parts of the system.
type WorkspaceType int32

const (
	// Regular workspaces are your off-the-mill workspaces intended for users. They are directly user-facing and hence are most important.
	WorkspaceType_REGULAR WorkspaceType = 0
	// Prebuild workspaces are workspaces used to pre-build the content of other workspaces. They run headless and have no direct user-interaction.
	WorkspaceType_PREBUILD WorkspaceType = 1
	// Imagebuild workspaces build a workspace, incl. their Gitpod layer. They run headless and have no direct user-interaction.
	WorkspaceType_IMAGEBUILD WorkspaceType = 4
)

// Enum value maps for WorkspaceType.
var (
	WorkspaceType_name = map[int32]string{
		0: "REGULAR",
		1: "PREBUILD",
		4: "IMAGEBUILD",
	}
	WorkspaceType_value = map[string]int32{
		"REGULAR":    0,
		"PREBUILD":   1,
		"IMAGEBUILD": 4,
	}
)

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

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

func (WorkspaceType) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[6].Descriptor()
}

func (WorkspaceType) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[6]
}

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

// Deprecated: Use WorkspaceType.Descriptor instead.
func (WorkspaceType) EnumDescriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{6}
}

// MetadataFilter describes conditions for matching a set of workspaces.
// The values of the fields have to match exactly, and set values must match.
type MetadataFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// owner is the ID of the Gitpod user to whom we'll bill this workspace and who we consider responsible for its content
	Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"`
	// meta_id is the workspace ID of this currently running workspace instance on the "meta pool" side
	MetaId string `protobuf:"bytes,2,opt,name=meta_id,json=metaId,proto3" json:"meta_id,omitempty"`
	// annotations must be a subset of the annotations of a workspace's metadata
	Annotations map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*MetadataFilter) ProtoMessage() {}

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

func (x *MetadataFilter) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *MetadataFilter) GetMetaId() string {
	if x != nil {
		return x.MetaId
	}
	return ""
}

func (x *MetadataFilter) GetAnnotations() map[string]string {
	if x != nil {
		return x.Annotations
	}
	return nil
}

// GetWorkspacesRequest requests a list of running workspaces
type GetWorkspacesRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// MustMatch can specify an exactly matching filter for listing workspaces.
	// If not set, or all fields are empty, all workspaces are returned.
	MustMatch *MetadataFilter `protobuf:"bytes,1,opt,name=must_match,json=mustMatch,proto3" json:"must_match,omitempty"`
}

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

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

func (*GetWorkspacesRequest) ProtoMessage() {}

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

func (x *GetWorkspacesRequest) GetMustMatch() *MetadataFilter {
	if x != nil {
		return x.MustMatch
	}
	return nil
}

// GetWorkspacesResponse is the response to a get w
type GetWorkspacesResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// status are the status of all running workspaces
	Status []*WorkspaceStatus `protobuf:"bytes,1,rep,name=status,proto3" json:"status,omitempty"`
}

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

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

func (*GetWorkspacesResponse) ProtoMessage() {}

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

func (x *GetWorkspacesResponse) GetStatus() []*WorkspaceStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

// StartWorkspaceRequest requests that the workspace manager starts a workspace in its cluster
type StartWorkspaceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is a unique identifier of this workspace. No other workspace with the same name must be managed by this workspace manager
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// service_prefix is the unique ID/name that's prepended before the services associated with a workspace.
	// For example if the service_prefix is foobar there will be the services foobar-theia and foobar-ports.
	// If this field is empty the workspace ID becomes the service prefix.
	ServicePrefix string `protobuf:"bytes,2,opt,name=service_prefix,json=servicePrefix,proto3" json:"service_prefix,omitempty"`
	// Metadata is data associated with this workspace that's required for other parts of Gitpod to function
	Metadata *WorkspaceMetadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
	// Spec is the configuration of the workspace that's required for the ws-manager to start the workspace
	Spec *StartWorkspaceSpec `protobuf:"bytes,4,opt,name=spec,proto3" json:"spec,omitempty"`
	// Type denots the kind of workspace we ought to start
	Type WorkspaceType `protobuf:"varint,6,opt,name=type,proto3,enum=wsman.WorkspaceType" json:"type,omitempty"`
}

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

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

func (*StartWorkspaceRequest) ProtoMessage() {}

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

func (x *StartWorkspaceRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *StartWorkspaceRequest) GetServicePrefix() string {
	if x != nil {
		return x.ServicePrefix
	}
	return ""
}

func (x *StartWorkspaceRequest) GetMetadata() *WorkspaceMetadata {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *StartWorkspaceRequest) GetSpec() *StartWorkspaceSpec {
	if x != nil {
		return x.Spec
	}
	return nil
}

func (x *StartWorkspaceRequest) GetType() WorkspaceType {
	if x != nil {
		return x.Type
	}
	return WorkspaceType_REGULAR
}

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

	// URL is the external URL of the workspace
	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
	// OwnerToken is the token of the workspace owner used for authentication
	OwnerToken string `protobuf:"bytes,2,opt,name=owner_token,json=ownerToken,proto3" json:"owner_token,omitempty"`
}

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

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

func (*StartWorkspaceResponse) ProtoMessage() {}

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

func (x *StartWorkspaceResponse) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *StartWorkspaceResponse) GetOwnerToken() string {
	if x != nil {
		return x.OwnerToken
	}
	return ""
}

// StopWorkspaceRequest requests that the workspace manager stops a workspace
type StopWorkspaceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace to stop
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Policy determines how quickly a workspace will be stopped
	Policy StopWorkspacePolicy `protobuf:"varint,2,opt,name=policy,proto3,enum=wsman.StopWorkspacePolicy" json:"policy,omitempty"`
}

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

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

func (*StopWorkspaceRequest) ProtoMessage() {}

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

func (x *StopWorkspaceRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *StopWorkspaceRequest) GetPolicy() StopWorkspacePolicy {
	if x != nil {
		return x.Policy
	}
	return StopWorkspacePolicy_NORMALLY
}

// StopWorkspaceResponse is the answer to a stop workspace request
type StopWorkspaceResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*StopWorkspaceResponse) ProtoMessage() {}

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

// DescribeWorkspaceRequest requests the status of a workspace
type DescribeWorkspaceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace to describe
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*DescribeWorkspaceRequest) ProtoMessage() {}

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

func (x *DescribeWorkspaceRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

// DescribeWorkspaceResponse is the answer to a workspace description request
type DescribeWorkspaceResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Status *WorkspaceStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
	// LastActivity is the time when the workspace was last marked active - ISO8601 formated
	LastActivity string `protobuf:"bytes,2,opt,name=lastActivity,proto3" json:"lastActivity,omitempty"`
}

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

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

func (*DescribeWorkspaceResponse) ProtoMessage() {}

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

func (x *DescribeWorkspaceResponse) GetStatus() *WorkspaceStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *DescribeWorkspaceResponse) GetLastActivity() string {
	if x != nil {
		return x.LastActivity
	}
	return ""
}

// SubscribeRequest requests to be notified whenever the workspace status changes
type SubscribeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// MustMatch can specify an exactly matching filter for listening to workspaces.
	// If not set, or all fields are empty, all workspace status updates or log output are returned.
	MustMatch *MetadataFilter `protobuf:"bytes,1,opt,name=must_match,json=mustMatch,proto3" json:"must_match,omitempty"`
}

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

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

func (*SubscribeRequest) ProtoMessage() {}

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

func (x *SubscribeRequest) GetMustMatch() *MetadataFilter {
	if x != nil {
		return x.MustMatch
	}
	return nil
}

// SubscribeResponse notifies a client when a workspace's status changes
type SubscribeResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Status *WorkspaceStatus  `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
	Header map[string]string `protobuf:"bytes,3,rep,name=header,proto3" json:"header,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*SubscribeResponse) ProtoMessage() {}

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

func (x *SubscribeResponse) GetStatus() *WorkspaceStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *SubscribeResponse) GetHeader() map[string]string {
	if x != nil {
		return x.Header
	}
	return nil
}

// MarkActiveRequest marks a workspace as still in use
type MarkActiveRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// id is the ID of the workspace
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// closed marks a workspace as closed which will shorten its timeout
	Closed bool `protobuf:"varint,2,opt,name=closed,proto3" json:"closed,omitempty"`
	// ignore_if_active only marks active when user never mark active, otherwise it will ignore
	IgnoreIfActive bool `protobuf:"varint,3,opt,name=ignore_if_active,json=ignoreIfActive,proto3" json:"ignore_if_active,omitempty"`
}

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

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

func (*MarkActiveRequest) ProtoMessage() {}

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

func (x *MarkActiveRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *MarkActiveRequest) GetClosed() bool {
	if x != nil {
		return x.Closed
	}
	return false
}

func (x *MarkActiveRequest) GetIgnoreIfActive() bool {
	if x != nil {
		return x.IgnoreIfActive
	}
	return false
}

// MarkActiveResponse is the answer to a mark workspace active request
type MarkActiveResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*MarkActiveResponse) ProtoMessage() {}

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

// SetTimeoutRequest configures the timeout of a workspace
type SetTimeoutRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// id is the ID of the workspace
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// duration is the new timeout duration. Must be a valid Go duration (see https://golang.org/pkg/time/#ParseDuration)
	Duration string `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"`
}

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

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

func (*SetTimeoutRequest) ProtoMessage() {}

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

func (x *SetTimeoutRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *SetTimeoutRequest) GetDuration() string {
	if x != nil {
		return x.Duration
	}
	return ""
}

// SetTimeoutResponse is the answer to a set timeout request
type SetTimeoutResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*SetTimeoutResponse) ProtoMessage() {}

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

// ControlPortRequest exposes or un-exposes networking ports of a workspace
type ControlPortRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace whose port to control
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// expose controls whether to make the port publicly available or bar if from being accessible outside of the worksapce.
	// If true, the port will become publicly available, if false it will become inaccessible from outside the workspace.
	Expose bool `protobuf:"varint,2,opt,name=expose,proto3" json:"expose,omitempty"`
	// spec defines the port under control
	Spec *PortSpec `protobuf:"bytes,3,opt,name=spec,proto3" json:"spec,omitempty"`
}

func (x *ControlPortRequest) Reset() {
	*x = ControlPortRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ControlPortRequest) ProtoMessage() {}

func (x *ControlPortRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[15]
	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 ControlPortRequest.ProtoReflect.Descriptor instead.
func (*ControlPortRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{15}
}

func (x *ControlPortRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ControlPortRequest) GetExpose() bool {
	if x != nil {
		return x.Expose
	}
	return false
}

func (x *ControlPortRequest) GetSpec() *PortSpec {
	if x != nil {
		return x.Spec
	}
	return nil
}

// ControlPortResponse is the answer to a workspace port control request
type ControlPortResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *ControlPortResponse) Reset() {
	*x = ControlPortResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ControlPortResponse) ProtoMessage() {}

func (x *ControlPortResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[16]
	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 ControlPortResponse.ProtoReflect.Descriptor instead.
func (*ControlPortResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{16}
}

// TakeSnapshotRequest creates a copy of the workspace content. This copy can be used to initialize a new workspace.
type TakeSnapshotRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace of which to take a snapshot
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// return_immediately means we're not waiting until the snapshot is done but return immediately after starting it
	ReturnImmediately bool `protobuf:"varint,2,opt,name=return_immediately,json=returnImmediately,proto3" json:"return_immediately,omitempty"`
}

func (x *TakeSnapshotRequest) Reset() {
	*x = TakeSnapshotRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TakeSnapshotRequest) ProtoMessage() {}

func (x *TakeSnapshotRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[17]
	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 TakeSnapshotRequest.ProtoReflect.Descriptor instead.
func (*TakeSnapshotRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{17}
}

func (x *TakeSnapshotRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *TakeSnapshotRequest) GetReturnImmediately() bool {
	if x != nil {
		return x.ReturnImmediately
	}
	return false
}

// TakeSnapshotResponse is the answer to a take snapshot request
type TakeSnapshotResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// URL is the location of the snapshot encoded such that it can be passed back to a snapshot initializer.
	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
}

func (x *TakeSnapshotResponse) Reset() {
	*x = TakeSnapshotResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TakeSnapshotResponse) ProtoMessage() {}

func (x *TakeSnapshotResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[18]
	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 TakeSnapshotResponse.ProtoReflect.Descriptor instead.
func (*TakeSnapshotResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{18}
}

func (x *TakeSnapshotResponse) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

// ControlAdmissionRequest controls the admission of users to a workspace
type ControlAdmissionRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace whoose admission to control
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// level is the new workspace admission level
	Level AdmissionLevel `protobuf:"varint,2,opt,name=level,proto3,enum=wsman.AdmissionLevel" json:"level,omitempty"`
}

func (x *ControlAdmissionRequest) Reset() {
	*x = ControlAdmissionRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ControlAdmissionRequest) ProtoMessage() {}

func (x *ControlAdmissionRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[19]
	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 ControlAdmissionRequest.ProtoReflect.Descriptor instead.
func (*ControlAdmissionRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{19}
}

func (x *ControlAdmissionRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ControlAdmissionRequest) GetLevel() AdmissionLevel {
	if x != nil {
		return x.Level
	}
	return AdmissionLevel_ADMIT_OWNER_ONLY
}

type ControlAdmissionResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *ControlAdmissionResponse) Reset() {
	*x = ControlAdmissionResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ControlAdmissionResponse) ProtoMessage() {}

func (x *ControlAdmissionResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[20]
	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 ControlAdmissionResponse.ProtoReflect.Descriptor instead.
func (*ControlAdmissionResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{20}
}

// DeleteVolumeSnapshotRequest deletes volume snapshot from the cluster and cloud provider
type DeleteVolumeSnapshotRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the name of volume snapshot, which is equal to instance id of workspace it was taken from
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// volume_handle is a unique string that is used to restore volume handle in k8s from cloud provider backend
	VolumeHandle string `protobuf:"bytes,2,opt,name=volume_handle,json=volumeHandle,proto3" json:"volume_handle,omitempty"`
	// soft_delete controls whether manager should attempt to restore volume snapshot from handle if it doesn't exist in the cluster yet
	SoftDelete bool `protobuf:"varint,3,opt,name=soft_delete,json=softDelete,proto3" json:"soft_delete,omitempty"`
	// ws_type is the type of workspace (prebuild or regular) to which this volume snapshot belongs
	WsType WorkspaceType `protobuf:"varint,4,opt,name=ws_type,json=wsType,proto3,enum=wsman.WorkspaceType" json:"ws_type,omitempty"`
}

func (x *DeleteVolumeSnapshotRequest) Reset() {
	*x = DeleteVolumeSnapshotRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeleteVolumeSnapshotRequest) ProtoMessage() {}

func (x *DeleteVolumeSnapshotRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[21]
	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 DeleteVolumeSnapshotRequest.ProtoReflect.Descriptor instead.
func (*DeleteVolumeSnapshotRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{21}
}

func (x *DeleteVolumeSnapshotRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *DeleteVolumeSnapshotRequest) GetVolumeHandle() string {
	if x != nil {
		return x.VolumeHandle
	}
	return ""
}

func (x *DeleteVolumeSnapshotRequest) GetSoftDelete() bool {
	if x != nil {
		return x.SoftDelete
	}
	return false
}

func (x *DeleteVolumeSnapshotRequest) GetWsType() WorkspaceType {
	if x != nil {
		return x.WsType
	}
	return WorkspaceType_REGULAR
}

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

	// was_deleted will be true if we were able to delete volume snapshot from the cluster
	WasDeleted bool `protobuf:"varint,1,opt,name=was_deleted,json=wasDeleted,proto3" json:"was_deleted,omitempty"`
}

func (x *DeleteVolumeSnapshotResponse) Reset() {
	*x = DeleteVolumeSnapshotResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeleteVolumeSnapshotResponse) ProtoMessage() {}

func (x *DeleteVolumeSnapshotResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[22]
	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 DeleteVolumeSnapshotResponse.ProtoReflect.Descriptor instead.
func (*DeleteVolumeSnapshotResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{22}
}

func (x *DeleteVolumeSnapshotResponse) GetWasDeleted() bool {
	if x != nil {
		return x.WasDeleted
	}
	return false
}

// BackupWorkspaceRequest backs up a running workspace
type BackupWorkspaceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace of which to take a backup
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *BackupWorkspaceRequest) Reset() {
	*x = BackupWorkspaceRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*BackupWorkspaceRequest) ProtoMessage() {}

func (x *BackupWorkspaceRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[23]
	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 BackupWorkspaceRequest.ProtoReflect.Descriptor instead.
func (*BackupWorkspaceRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{23}
}

func (x *BackupWorkspaceRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

// BackupWorkspaceResponse is the answer to a backup workspace request
type BackupWorkspaceResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// URL is the location of the backup
	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
}

func (x *BackupWorkspaceResponse) Reset() {
	*x = BackupWorkspaceResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*BackupWorkspaceResponse) ProtoMessage() {}

func (x *BackupWorkspaceResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[24]
	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 BackupWorkspaceResponse.ProtoReflect.Descriptor instead.
func (*BackupWorkspaceResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{24}
}

func (x *BackupWorkspaceResponse) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

// UpdateSSHKeyRequest update ssh public key
type UpdateSSHKeyRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// keys is a set of authorized_keys
	Keys []string `protobuf:"bytes,2,rep,name=keys,proto3" json:"keys,omitempty"`
}

func (x *UpdateSSHKeyRequest) Reset() {
	*x = UpdateSSHKeyRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*UpdateSSHKeyRequest) ProtoMessage() {}

func (x *UpdateSSHKeyRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[25]
	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 UpdateSSHKeyRequest.ProtoReflect.Descriptor instead.
func (*UpdateSSHKeyRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{25}
}

func (x *UpdateSSHKeyRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UpdateSSHKeyRequest) GetKeys() []string {
	if x != nil {
		return x.Keys
	}
	return nil
}

// UpdateSSHKeyResponse is the answer to a upload ssh key request
type UpdateSSHKeyResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *UpdateSSHKeyResponse) Reset() {
	*x = UpdateSSHKeyResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*UpdateSSHKeyResponse) ProtoMessage() {}

func (x *UpdateSSHKeyResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[26]
	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 UpdateSSHKeyResponse.ProtoReflect.Descriptor instead.
func (*UpdateSSHKeyResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{26}
}

// WorkspaceStatus describes a workspace status
type WorkspaceStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// version of the status update. Workspace instances themselves are unversioned,
	// but their statuus has different versions.
	// The value of this field has no semantic meaning (e.g. don't interpret it as
	// as a timestemp), but it can be used to impose a partial order.
	// If a.status_version < b.status_version then a was the status before b.
	StatusVersion uint64 `protobuf:"varint,10,opt,name=status_version,json=statusVersion,proto3" json:"status_version,omitempty"`
	// Metadata is data associated with this workspace that's required for other parts of Gitpod to function
	Metadata *WorkspaceMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
	// Spec is the workspace spec during runtime
	Spec *WorkspaceSpec `protobuf:"bytes,3,opt,name=spec,proto3" json:"spec,omitempty"`
	// the phase of a workspace is a simple, high-level summary of where the workspace is in its lifecycle
	Phase WorkspacePhase `protobuf:"varint,4,opt,name=phase,proto3,enum=wsman.WorkspacePhase" json:"phase,omitempty"`
	// conditions detail the current state of the workspace
	Conditions *WorkspaceConditions `protobuf:"bytes,5,opt,name=conditions,proto3" json:"conditions,omitempty"`
	// message is an optional human-readable message detailing the current phase
	Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"`
	// repo details the Git working copy status of the workspace.
	// Note: this is a best-effort field and more often than not will not be present. Its absence does not
	// indicate the absence of a working copy.
	Repo *api.GitStatus `protobuf:"bytes,7,opt,name=repo,proto3" json:"repo,omitempty"`
	// runtime contains information about the workspace's runtime environment
	Runtime *WorkspaceRuntimeInfo `protobuf:"bytes,8,opt,name=runtime,proto3" json:"runtime,omitempty"`
	// auth provides authentication information about the workspace. This info is primarily used by ws-proxy.
	Auth *WorkspaceAuthentication `protobuf:"bytes,9,opt,name=auth,proto3" json:"auth,omitempty"`
}

func (x *WorkspaceStatus) Reset() {
	*x = WorkspaceStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WorkspaceStatus) ProtoMessage() {}

func (x *WorkspaceStatus) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[27]
	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 WorkspaceStatus.ProtoReflect.Descriptor instead.
func (*WorkspaceStatus) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{27}
}

func (x *WorkspaceStatus) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *WorkspaceStatus) GetStatusVersion() uint64 {
	if x != nil {
		return x.StatusVersion
	}
	return 0
}

func (x *WorkspaceStatus) GetMetadata() *WorkspaceMetadata {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *WorkspaceStatus) GetSpec() *WorkspaceSpec {
	if x != nil {
		return x.Spec
	}
	return nil
}

func (x *WorkspaceStatus) GetPhase() WorkspacePhase {
	if x != nil {
		return x.Phase
	}
	return WorkspacePhase_UNKNOWN
}

func (x *WorkspaceStatus) GetConditions() *WorkspaceConditions {
	if x != nil {
		return x.Conditions
	}
	return nil
}

func (x *WorkspaceStatus) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *WorkspaceStatus) GetRepo() *api.GitStatus {
	if x != nil {
		return x.Repo
	}
	return nil
}

func (x *WorkspaceStatus) GetRuntime() *WorkspaceRuntimeInfo {
	if x != nil {
		return x.Runtime
	}
	return nil
}

func (x *WorkspaceStatus) GetAuth() *WorkspaceAuthentication {
	if x != nil {
		return x.Auth
	}
	return nil
}

// IDEImage configures the IDE images a workspace will use
type IDEImage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// web_ref is a reference to an OCI image used for serving the web-based IDE
	WebRef string `protobuf:"bytes,1,opt,name=web_ref,json=webRef,proto3" json:"web_ref,omitempty"`
	// DEPRECATED desktop_ref is an optional reference to an OCI image used for serving desktop IDEs
	DesktopRef string `protobuf:"bytes,2,opt,name=desktop_ref,json=desktopRef,proto3" json:"desktop_ref,omitempty"`
	// supervisor_ref is a reference to an OCI image used as supervisor
	SupervisorRef string `protobuf:"bytes,3,opt,name=supervisor_ref,json=supervisorRef,proto3" json:"supervisor_ref,omitempty"`
	// DEPRECATED desktop_plugin_ref is an optional reference to an OCI image used for serving desktop IDE plugin
	DesktopPluginRef string `protobuf:"bytes,4,opt,name=desktop_plugin_ref,json=desktopPluginRef,proto3" json:"desktop_plugin_ref,omitempty"`
}

func (x *IDEImage) Reset() {
	*x = IDEImage{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*IDEImage) ProtoMessage() {}

func (x *IDEImage) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[28]
	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 IDEImage.ProtoReflect.Descriptor instead.
func (*IDEImage) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{28}
}

func (x *IDEImage) GetWebRef() string {
	if x != nil {
		return x.WebRef
	}
	return ""
}

func (x *IDEImage) GetDesktopRef() string {
	if x != nil {
		return x.DesktopRef
	}
	return ""
}

func (x *IDEImage) GetSupervisorRef() string {
	if x != nil {
		return x.SupervisorRef
	}
	return ""
}

func (x *IDEImage) GetDesktopPluginRef() string {
	if x != nil {
		return x.DesktopPluginRef
	}
	return ""
}

// WorkspaceSpec is the specification of a workspace at runtime
type WorkspaceSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// workspace_image is the name of the Docker image this workspace runs
	WorkspaceImage string `protobuf:"bytes,1,opt,name=workspace_image,json=workspaceImage,proto3" json:"workspace_image,omitempty"`
	// deprecated_ide_image is a field present for backwards compatibility and the same
	// as IDEImage.web_ref. If both fields are present, IDEImage.web_ref takes precedence.
	DeprecatedIdeImage string `protobuf:"bytes,2,opt,name=deprecated_ide_image,json=deprecatedIdeImage,proto3" json:"deprecated_ide_image,omitempty"`
	// headless marks this workspace a headless one - headless workspaces are not intended for users but for automation
	Headless bool `protobuf:"varint,3,opt,name=headless,proto3" json:"headless,omitempty"`
	// URL is the external URL of the workspace
	Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"`
	// exposed_ports lists all ports which this workspace has exposed to the outside world
	ExposedPorts []*PortSpec `protobuf:"bytes,5,rep,name=exposed_ports,json=exposedPorts,proto3" json:"exposed_ports,omitempty"`
	// workspace type denotes what kind of workspace this is, e.g. if it's user-facing, prebuilding content or probing the service
	Type WorkspaceType `protobuf:"varint,6,opt,name=type,proto3,enum=wsman.WorkspaceType" json:"type,omitempty"`
	// The intervals in which a heartbeat must be received for the workspace not to time out
	Timeout string `protobuf:"bytes,7,opt,name=timeout,proto3" json:"timeout,omitempty"`
	// ide_image is the name of the Docker image used as IDE
	IdeImage *IDEImage `protobuf:"bytes,8,opt,name=ide_image,json=ideImage,proto3" json:"ide_image,omitempty"`
	// class names the class of this workspace
	Class string `protobuf:"bytes,9,opt,name=class,proto3" json:"class,omitempty"`
	// ide_image_layers are contains the images needed for the ide to run,
	// including ide-desktop, desktop-plugin and so on
	IdeImageLayers []string `protobuf:"bytes,10,rep,name=ide_image_layers,json=ideImageLayers,proto3" json:"ide_image_layers,omitempty"`
}

func (x *WorkspaceSpec) Reset() {
	*x = WorkspaceSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WorkspaceSpec) ProtoMessage() {}

func (x *WorkspaceSpec) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[29]
	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 WorkspaceSpec.ProtoReflect.Descriptor instead.
func (*WorkspaceSpec) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{29}
}

func (x *WorkspaceSpec) GetWorkspaceImage() string {
	if x != nil {
		return x.WorkspaceImage
	}
	return ""
}

func (x *WorkspaceSpec) GetDeprecatedIdeImage() string {
	if x != nil {
		return x.DeprecatedIdeImage
	}
	return ""
}

func (x *WorkspaceSpec) GetHeadless() bool {
	if x != nil {
		return x.Headless
	}
	return false
}

func (x *WorkspaceSpec) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *WorkspaceSpec) GetExposedPorts() []*PortSpec {
	if x != nil {
		return x.ExposedPorts
	}
	return nil
}

func (x *WorkspaceSpec) GetType() WorkspaceType {
	if x != nil {
		return x.Type
	}
	return WorkspaceType_REGULAR
}

func (x *WorkspaceSpec) GetTimeout() string {
	if x != nil {
		return x.Timeout
	}
	return ""
}

func (x *WorkspaceSpec) GetIdeImage() *IDEImage {
	if x != nil {
		return x.IdeImage
	}
	return nil
}

func (x *WorkspaceSpec) GetClass() string {
	if x != nil {
		return x.Class
	}
	return ""
}

func (x *WorkspaceSpec) GetIdeImageLayers() []string {
	if x != nil {
		return x.IdeImageLayers
	}
	return nil
}

// PortSpec describes a networking port exposed on a workspace
type PortSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// port is the outward-facing port
	Port uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
	// visibility defines the visibility of the port
	Visibility PortVisibility `protobuf:"varint,3,opt,name=visibility,proto3,enum=wsman.PortVisibility" json:"visibility,omitempty"`
	// url is the public-facing URL this port is available at
	Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"`
}

func (x *PortSpec) Reset() {
	*x = PortSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PortSpec) ProtoMessage() {}

func (x *PortSpec) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[30]
	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 PortSpec.ProtoReflect.Descriptor instead.
func (*PortSpec) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{30}
}

func (x *PortSpec) GetPort() uint32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *PortSpec) GetVisibility() PortVisibility {
	if x != nil {
		return x.Visibility
	}
	return PortVisibility_PORT_VISIBILITY_PRIVATE
}

func (x *PortSpec) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

// VolumeSnapshotInfo defines volume snapshot information
type VolumeSnapshotInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// volume_snapshot_name is the name of volume snapshot
	VolumeSnapshotName string `protobuf:"bytes,1,opt,name=volume_snapshot_name,json=volumeSnapshotName,proto3" json:"volume_snapshot_name,omitempty"`
	// volume_snapshot_handle is a handle that is used to restore volume snapshot
	VolumeSnapshotHandle string `protobuf:"bytes,2,opt,name=volume_snapshot_handle,json=volumeSnapshotHandle,proto3" json:"volume_snapshot_handle,omitempty"`
}

func (x *VolumeSnapshotInfo) Reset() {
	*x = VolumeSnapshotInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*VolumeSnapshotInfo) ProtoMessage() {}

func (x *VolumeSnapshotInfo) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[31]
	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 VolumeSnapshotInfo.ProtoReflect.Descriptor instead.
func (*VolumeSnapshotInfo) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{31}
}

func (x *VolumeSnapshotInfo) GetVolumeSnapshotName() string {
	if x != nil {
		return x.VolumeSnapshotName
	}
	return ""
}

func (x *VolumeSnapshotInfo) GetVolumeSnapshotHandle() string {
	if x != nil {
		return x.VolumeSnapshotHandle
	}
	return ""
}

// WorkspaceCondition gives more detailed information as to the state of the workspace. Which condition actually
// has a value depends on the phase the workspace is in.
type WorkspaceConditions struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// failed contains the reason the workspace failed to operate. If this field is empty, the workspace has not failed.
	Failed string `protobuf:"bytes,1,opt,name=failed,proto3" json:"failed,omitempty"`
	// timeout contains the reason the workspace has timed out. If this field is empty, the workspace has not timed out.
	Timeout string `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
	// pulling_images marks if the workspace is currently pulling its images. This condition can only be set during PhaseCreating
	PullingImages WorkspaceConditionBool `protobuf:"varint,3,opt,name=pulling_images,json=pullingImages,proto3,enum=wsman.WorkspaceConditionBool" json:"pulling_images,omitempty"`
	// snapshot contains a snapshot URL if a snapshot was produced prior to shutting the workspace down. This condition is only used for headless workspaces.
	Snapshot string `protobuf:"bytes,5,opt,name=snapshot,proto3" json:"snapshot,omitempty"`
	// final_backup_complete determines if the last state of the workspace has been backed up to remote storage.
	// Once this is true, a new workspace with the same ID will be able to use this backup.
	FinalBackupComplete WorkspaceConditionBool `protobuf:"varint,6,opt,name=final_backup_complete,json=finalBackupComplete,proto3,enum=wsman.WorkspaceConditionBool" json:"final_backup_complete,omitempty"`
	// deployed indicates if a workspace container is currently deployed. If this condition is false, there is no means for the user to alter the workspace content.
	Deployed WorkspaceConditionBool `protobuf:"varint,7,opt,name=deployed,proto3,enum=wsman.WorkspaceConditionBool" json:"deployed,omitempty"`
	// network_not_ready indicates if a workspace container is currently experiencing a network problem.
	NetworkNotReady WorkspaceConditionBool `protobuf:"varint,8,opt,name=network_not_ready,json=networkNotReady,proto3,enum=wsman.WorkspaceConditionBool" json:"network_not_ready,omitempty"`
	// first_user_activity is the time when MarkActive was first called on the workspace
	FirstUserActivity *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=first_user_activity,json=firstUserActivity,proto3" json:"first_user_activity,omitempty"`
	// headless_task_failed indicates that a headless workspace task failed
	HeadlessTaskFailed string `protobuf:"bytes,10,opt,name=headless_task_failed,json=headlessTaskFailed,proto3" json:"headless_task_failed,omitempty"`
	// stopped_by_request is true if the workspace was stopped using a StopWorkspace call
	StoppedByRequest WorkspaceConditionBool `protobuf:"varint,11,opt,name=stopped_by_request,json=stoppedByRequest,proto3,enum=wsman.WorkspaceConditionBool" json:"stopped_by_request,omitempty"`
	// volume_snapshot contains info about volume snapshot that was used to save persistent volume
	VolumeSnapshot *VolumeSnapshotInfo `protobuf:"bytes,12,opt,name=volume_snapshot,json=volumeSnapshot,proto3" json:"volume_snapshot,omitempty"`
	// aborted is true if StopWorkspace was called with StopWorkspacePolicy set to ABORT
	Aborted WorkspaceConditionBool `protobuf:"varint,13,opt,name=aborted,proto3,enum=wsman.WorkspaceConditionBool" json:"aborted,omitempty"`
}

func (x *WorkspaceConditions) Reset() {
	*x = WorkspaceConditions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WorkspaceConditions) ProtoMessage() {}

func (x *WorkspaceConditions) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[32]
	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 WorkspaceConditions.ProtoReflect.Descriptor instead.
func (*WorkspaceConditions) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{32}
}

func (x *WorkspaceConditions) GetFailed() string {
	if x != nil {
		return x.Failed
	}
	return ""
}

func (x *WorkspaceConditions) GetTimeout() string {
	if x != nil {
		return x.Timeout
	}
	return ""
}

func (x *WorkspaceConditions) GetPullingImages() WorkspaceConditionBool {
	if x != nil {
		return x.PullingImages
	}
	return WorkspaceConditionBool_FALSE
}

func (x *WorkspaceConditions) GetSnapshot() string {
	if x != nil {
		return x.Snapshot
	}
	return ""
}

func (x *WorkspaceConditions) GetFinalBackupComplete() WorkspaceConditionBool {
	if x != nil {
		return x.FinalBackupComplete
	}
	return WorkspaceConditionBool_FALSE
}

func (x *WorkspaceConditions) GetDeployed() WorkspaceConditionBool {
	if x != nil {
		return x.Deployed
	}
	return WorkspaceConditionBool_FALSE
}

func (x *WorkspaceConditions) GetNetworkNotReady() WorkspaceConditionBool {
	if x != nil {
		return x.NetworkNotReady
	}
	return WorkspaceConditionBool_FALSE
}

func (x *WorkspaceConditions) GetFirstUserActivity() *timestamppb.Timestamp {
	if x != nil {
		return x.FirstUserActivity
	}
	return nil
}

func (x *WorkspaceConditions) GetHeadlessTaskFailed() string {
	if x != nil {
		return x.HeadlessTaskFailed
	}
	return ""
}

func (x *WorkspaceConditions) GetStoppedByRequest() WorkspaceConditionBool {
	if x != nil {
		return x.StoppedByRequest
	}
	return WorkspaceConditionBool_FALSE
}

func (x *WorkspaceConditions) GetVolumeSnapshot() *VolumeSnapshotInfo {
	if x != nil {
		return x.VolumeSnapshot
	}
	return nil
}

func (x *WorkspaceConditions) GetAborted() WorkspaceConditionBool {
	if x != nil {
		return x.Aborted
	}
	return WorkspaceConditionBool_FALSE
}

// WorkspaceMetadata is data associated with a workspace that's required for other parts of the system to function
type WorkspaceMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// owner is the ID of the Gitpod user to whom we'll bill this workspace and who we consider responsible for its content
	Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"`
	// meta_id is the workspace ID of this currently running workspace instance on the "meta pool" side
	MetaId string `protobuf:"bytes,2,opt,name=meta_id,json=metaId,proto3" json:"meta_id,omitempty"`
	// started_at is the time when this workspace was started. Consider this field read-only, i.e. setting in a request will have no effect.
	StartedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
	// Annotations are key/value pairs that gets attached to the workspace.
	// This is primarily intended for annotating headless workspace loads.
	Annotations map[string]string `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// team the workspace belongs to, if the workspace is not associated with a team, this property will be empty
	Team *string `protobuf:"bytes,5,opt,name=team,proto3,oneof" json:"team,omitempty"`
	// project the workspace belongs to, if the workspace is not associated with a project, this property will be empty
	Project *string `protobuf:"bytes,6,opt,name=project,proto3,oneof" json:"project,omitempty"`
}

func (x *WorkspaceMetadata) Reset() {
	*x = WorkspaceMetadata{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WorkspaceMetadata) ProtoMessage() {}

func (x *WorkspaceMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[33]
	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 WorkspaceMetadata.ProtoReflect.Descriptor instead.
func (*WorkspaceMetadata) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{33}
}

func (x *WorkspaceMetadata) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *WorkspaceMetadata) GetMetaId() string {
	if x != nil {
		return x.MetaId
	}
	return ""
}

func (x *WorkspaceMetadata) GetStartedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.StartedAt
	}
	return nil
}

func (x *WorkspaceMetadata) GetAnnotations() map[string]string {
	if x != nil {
		return x.Annotations
	}
	return nil
}

func (x *WorkspaceMetadata) GetTeam() string {
	if x != nil && x.Team != nil {
		return *x.Team
	}
	return ""
}

func (x *WorkspaceMetadata) GetProject() string {
	if x != nil && x.Project != nil {
		return *x.Project
	}
	return ""
}

// WorkspaceRuntimeInfo details the workspace's runtime, e.g. executing system, node other information
// about the environment the workspace runs in. This information serves a diangostic purpose only and
// should not be directly acted upon.
type WorkspaceRuntimeInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// node_name is the name of the node the workspace runs on
	NodeName string `protobuf:"bytes,1,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"`
	// pod_name is the name of the pod the workspace runs in
	PodName string `protobuf:"bytes,2,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"`
	// node_ip is the IP of the node the workspace runs on
	NodeIp string `protobuf:"bytes,3,opt,name=node_ip,json=nodeIp,proto3" json:"node_ip,omitempty"`
}

func (x *WorkspaceRuntimeInfo) Reset() {
	*x = WorkspaceRuntimeInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WorkspaceRuntimeInfo) ProtoMessage() {}

func (x *WorkspaceRuntimeInfo) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[34]
	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 WorkspaceRuntimeInfo.ProtoReflect.Descriptor instead.
func (*WorkspaceRuntimeInfo) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{34}
}

func (x *WorkspaceRuntimeInfo) GetNodeName() string {
	if x != nil {
		return x.NodeName
	}
	return ""
}

func (x *WorkspaceRuntimeInfo) GetPodName() string {
	if x != nil {
		return x.PodName
	}
	return ""
}

func (x *WorkspaceRuntimeInfo) GetNodeIp() string {
	if x != nil {
		return x.NodeIp
	}
	return ""
}

// WorkspaceAuthentication contains authentication information used by ws-proxy to allow/deny access to
// workspaces and their ports.
type WorkspaceAuthentication struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Admission describes who can access the workspace and its ports.
	Admission AdmissionLevel `protobuf:"varint,1,opt,name=admission,proto3,enum=wsman.AdmissionLevel" json:"admission,omitempty"`
	// Owner token is the token one needs to access the workspace. Its presence is checked by ws-proxy.
	OwnerToken string `protobuf:"bytes,2,opt,name=owner_token,json=ownerToken,proto3" json:"owner_token,omitempty"`
}

func (x *WorkspaceAuthentication) Reset() {
	*x = WorkspaceAuthentication{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WorkspaceAuthentication) ProtoMessage() {}

func (x *WorkspaceAuthentication) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[35]
	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 WorkspaceAuthentication.ProtoReflect.Descriptor instead.
func (*WorkspaceAuthentication) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{35}
}

func (x *WorkspaceAuthentication) GetAdmission() AdmissionLevel {
	if x != nil {
		return x.Admission
	}
	return AdmissionLevel_ADMIT_OWNER_ONLY
}

func (x *WorkspaceAuthentication) GetOwnerToken() string {
	if x != nil {
		return x.OwnerToken
	}
	return ""
}

// StartWorkspaceSpec specifies the configuration of a workspace for a workspace start
type StartWorkspaceSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// workspace_image is the Docker image name of the workspace container
	WorkspaceImage string `protobuf:"bytes,1,opt,name=workspace_image,json=workspaceImage,proto3" json:"workspace_image,omitempty"`
	// deprecated_ide_image is a field present for backwards compatibility and the same
	// as IDEImage.web_ref. If both fields are present, IDEImage.web_ref takes precedence.
	DeprecatedIdeImage string `protobuf:"bytes,2,opt,name=deprecated_ide_image,json=deprecatedIdeImage,proto3" json:"deprecated_ide_image,omitempty"`
	// feature_flags provide a means for starting variants of workspaces (e.g. a privileged one)
	FeatureFlags []WorkspaceFeatureFlag `protobuf:"varint,3,rep,packed,name=feature_flags,json=featureFlags,proto3,enum=wsman.WorkspaceFeatureFlag" json:"feature_flags,omitempty"`
	// initializer configures how the workspace is to be initialized
	Initializer *api.WorkspaceInitializer `protobuf:"bytes,4,opt,name=initializer,proto3" json:"initializer,omitempty"`
	// ports is the set of ports which ought to be exposed to the internet
	Ports []*PortSpec `protobuf:"bytes,5,rep,name=ports,proto3" json:"ports,omitempty"`
	// envvars are user-defined environment variables which ought to be available in the workspace
	Envvars []*EnvironmentVariable `protobuf:"bytes,6,rep,name=envvars,proto3" json:"envvars,omitempty"`
	// workspace_location describes where the workspace root of Theia will be
	WorkspaceLocation string `protobuf:"bytes,8,opt,name=workspace_location,json=workspaceLocation,proto3" json:"workspace_location,omitempty"`
	// Git configures the Git user in the workspace
	Git *GitSpec `protobuf:"bytes,9,opt,name=git,proto3" json:"git,omitempty"`
	// timeout optionally sets a custom workspace timeout
	Timeout string `protobuf:"bytes,10,opt,name=timeout,proto3" json:"timeout,omitempty"`
	// admission controlls who can access the workspace and its ports.
	Admission AdmissionLevel `protobuf:"varint,11,opt,name=admission,proto3,enum=wsman.AdmissionLevel" json:"admission,omitempty"`
	// ide_image is the Docker image name of the IDE image
	IdeImage *IDEImage `protobuf:"bytes,12,opt,name=ide_image,json=ideImage,proto3" json:"ide_image,omitempty"`
	// Class denotes the class of the workspace we ought to start
	Class string `protobuf:"bytes,13,opt,name=class,proto3" json:"class,omitempty"`
	// volume_snapshot to use to restore PVC from, if set
	VolumeSnapshot *VolumeSnapshotInfo `protobuf:"bytes,14,opt,name=volume_snapshot,json=volumeSnapshot,proto3" json:"volume_snapshot,omitempty"`
	// ssh_public_keys is user's uploaded ssh public keys
	SshPublicKeys []string `protobuf:"bytes,15,rep,name=ssh_public_keys,json=sshPublicKeys,proto3" json:"ssh_public_keys,omitempty"`
	// sys_envvars are system level environment variables which ought to be available in the workspace
	SysEnvvars []*EnvironmentVariable `protobuf:"bytes,16,rep,name=sys_envvars,json=sysEnvvars,proto3" json:"sys_envvars,omitempty"`
	// ide_image_layers are contains the images needed for the ide to run,
	// including ide-desktop, desktop-plugin and so on
	IdeImageLayers []string `protobuf:"bytes,17,rep,name=ide_image_layers,json=ideImageLayers,proto3" json:"ide_image_layers,omitempty"`
}

func (x *StartWorkspaceSpec) Reset() {
	*x = StartWorkspaceSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StartWorkspaceSpec) ProtoMessage() {}

func (x *StartWorkspaceSpec) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[36]
	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 StartWorkspaceSpec.ProtoReflect.Descriptor instead.
func (*StartWorkspaceSpec) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{36}
}

func (x *StartWorkspaceSpec) GetWorkspaceImage() string {
	if x != nil {
		return x.WorkspaceImage
	}
	return ""
}

func (x *StartWorkspaceSpec) GetDeprecatedIdeImage() string {
	if x != nil {
		return x.DeprecatedIdeImage
	}
	return ""
}

func (x *StartWorkspaceSpec) GetFeatureFlags() []WorkspaceFeatureFlag {
	if x != nil {
		return x.FeatureFlags
	}
	return nil
}

func (x *StartWorkspaceSpec) GetInitializer() *api.WorkspaceInitializer {
	if x != nil {
		return x.Initializer
	}
	return nil
}

func (x *StartWorkspaceSpec) GetPorts() []*PortSpec {
	if x != nil {
		return x.Ports
	}
	return nil
}

func (x *StartWorkspaceSpec) GetEnvvars() []*EnvironmentVariable {
	if x != nil {
		return x.Envvars
	}
	return nil
}

func (x *StartWorkspaceSpec) GetWorkspaceLocation() string {
	if x != nil {
		return x.WorkspaceLocation
	}
	return ""
}

func (x *StartWorkspaceSpec) GetGit() *GitSpec {
	if x != nil {
		return x.Git
	}
	return nil
}

func (x *StartWorkspaceSpec) GetTimeout() string {
	if x != nil {
		return x.Timeout
	}
	return ""
}

func (x *StartWorkspaceSpec) GetAdmission() AdmissionLevel {
	if x != nil {
		return x.Admission
	}
	return AdmissionLevel_ADMIT_OWNER_ONLY
}

func (x *StartWorkspaceSpec) GetIdeImage() *IDEImage {
	if x != nil {
		return x.IdeImage
	}
	return nil
}

func (x *StartWorkspaceSpec) GetClass() string {
	if x != nil {
		return x.Class
	}
	return ""
}

func (x *StartWorkspaceSpec) GetVolumeSnapshot() *VolumeSnapshotInfo {
	if x != nil {
		return x.VolumeSnapshot
	}
	return nil
}

func (x *StartWorkspaceSpec) GetSshPublicKeys() []string {
	if x != nil {
		return x.SshPublicKeys
	}
	return nil
}

func (x *StartWorkspaceSpec) GetSysEnvvars() []*EnvironmentVariable {
	if x != nil {
		return x.SysEnvvars
	}
	return nil
}

func (x *StartWorkspaceSpec) GetIdeImageLayers() []string {
	if x != nil {
		return x.IdeImageLayers
	}
	return nil
}

// GitSpec configures the Git available within the workspace
type GitSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The Git username
	Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
	// The Git email address
	Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"`
}

func (x *GitSpec) Reset() {
	*x = GitSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GitSpec) ProtoMessage() {}

func (x *GitSpec) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[37]
	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 GitSpec.ProtoReflect.Descriptor instead.
func (*GitSpec) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{37}
}

func (x *GitSpec) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

func (x *GitSpec) GetEmail() string {
	if x != nil {
		return x.Email
	}
	return ""
}

// EnvironmentVariable describes an env var as key/value pair
type EnvironmentVariable struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name  string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// Pulls the value from a secret in the cluster.
	// Use this field with great caution: if the name is wrong or Kubernetes cannot find the secret,
	// your workspace will not start. Value takes precedence over this field.
	Secret *EnvironmentVariable_SecretKeyRef `protobuf:"bytes,3,opt,name=secret,proto3" json:"secret,omitempty"`
}

func (x *EnvironmentVariable) Reset() {
	*x = EnvironmentVariable{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*EnvironmentVariable) ProtoMessage() {}

func (x *EnvironmentVariable) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[38]
	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 EnvironmentVariable.ProtoReflect.Descriptor instead.
func (*EnvironmentVariable) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{38}
}

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

func (x *EnvironmentVariable) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

func (x *EnvironmentVariable) GetSecret() *EnvironmentVariable_SecretKeyRef {
	if x != nil {
		return x.Secret
	}
	return nil
}

// ExposedPorts describes the exposed ports of a workspace
type ExposedPorts struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ports is the set of ports which ought to be exposed to the internet
	Ports []*PortSpec `protobuf:"bytes,1,rep,name=ports,proto3" json:"ports,omitempty"`
}

func (x *ExposedPorts) Reset() {
	*x = ExposedPorts{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ExposedPorts) ProtoMessage() {}

func (x *ExposedPorts) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[39]
	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 ExposedPorts.ProtoReflect.Descriptor instead.
func (*ExposedPorts) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{39}
}

func (x *ExposedPorts) GetPorts() []*PortSpec {
	if x != nil {
		return x.Ports
	}
	return nil
}

// SSHPublicKeys describes the user's uploaded ssh public keys, it will be used only in annotations.
type SSHPublicKeys struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// keys is the set of ssh public key
	Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"`
}

func (x *SSHPublicKeys) Reset() {
	*x = SSHPublicKeys{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SSHPublicKeys) ProtoMessage() {}

func (x *SSHPublicKeys) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[40]
	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 SSHPublicKeys.ProtoReflect.Descriptor instead.
func (*SSHPublicKeys) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{40}
}

func (x *SSHPublicKeys) GetKeys() []string {
	if x != nil {
		return x.Keys
	}
	return nil
}

// DescribeClusterRequest requests information about the cluster
type DescribeClusterRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *DescribeClusterRequest) Reset() {
	*x = DescribeClusterRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DescribeClusterRequest) ProtoMessage() {}

func (x *DescribeClusterRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[41]
	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 DescribeClusterRequest.ProtoReflect.Descriptor instead.
func (*DescribeClusterRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{41}
}

// DescribeClusterResponse is the answer to a DescribeClusterRequest
type DescribeClusterResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// workspace classes that are supported by the cluster
	WorkspaceClasses []*WorkspaceClass `protobuf:"bytes,1,rep,name=WorkspaceClasses,proto3" json:"WorkspaceClasses,omitempty"`
}

func (x *DescribeClusterResponse) Reset() {
	*x = DescribeClusterResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DescribeClusterResponse) ProtoMessage() {}

func (x *DescribeClusterResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[42]
	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 DescribeClusterResponse.ProtoReflect.Descriptor instead.
func (*DescribeClusterResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{42}
}

func (x *DescribeClusterResponse) GetWorkspaceClasses() []*WorkspaceClass {
	if x != nil {
		return x.WorkspaceClasses
	}
	return nil
}

// WorkspaceClass describes a workspace class that is supported by the cluster
type WorkspaceClass struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id          string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id,omitempty"`
	DisplayName string `protobuf:"bytes,2,opt,name=DisplayName,proto3" json:"DisplayName,omitempty"`
}

func (x *WorkspaceClass) Reset() {
	*x = WorkspaceClass{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WorkspaceClass) ProtoMessage() {}

func (x *WorkspaceClass) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[43]
	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 WorkspaceClass.ProtoReflect.Descriptor instead.
func (*WorkspaceClass) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{43}
}

func (x *WorkspaceClass) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

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

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

	SecretName string `protobuf:"bytes,1,opt,name=secret_name,json=secretName,proto3" json:"secret_name,omitempty"`
	Key        string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
}

func (x *EnvironmentVariable_SecretKeyRef) Reset() {
	*x = EnvironmentVariable_SecretKeyRef{}
	if protoimpl.UnsafeEnabled {
		mi := &file_core_proto_msgTypes[47]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*EnvironmentVariable_SecretKeyRef) ProtoMessage() {}

func (x *EnvironmentVariable_SecretKeyRef) ProtoReflect() protoreflect.Message {
	mi := &file_core_proto_msgTypes[47]
	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 EnvironmentVariable_SecretKeyRef.ProtoReflect.Descriptor instead.
func (*EnvironmentVariable_SecretKeyRef) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{38, 0}
}

func (x *EnvironmentVariable_SecretKeyRef) GetSecretName() string {
	if x != nil {
		return x.SecretName
	}
	return ""
}

func (x *EnvironmentVariable_SecretKeyRef) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

var File_core_proto protoreflect.FileDescriptor

var file_core_proto_rawDesc = []byte{
	0x0a, 0x0a, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x77, 0x73,
	0x6d, 0x61, 0x6e, 0x1a, 0x25, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x73, 0x65, 0x72,
	0x76, 0x69, 0x63, 0x65, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c,
	0x69, 0x7a, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc9, 0x01, 0x0a, 0x0e,
	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14,
	0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f,
	0x77, 0x6e, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x69, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x61, 0x49, 0x64, 0x12, 0x48, 0x0a,
	0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x26, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f,
	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x6f,
	0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x34, 0x0a, 0x0a, 0x6d, 0x75, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x09, 0x6d, 0x75, 0x73, 0x74,
	0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x47, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e,
	0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16,
	0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe3,
	0x01, 0x0a, 0x15, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76,
	0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12,
	0x34, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x18, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
	0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x72,
	0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04,
	0x73, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x14, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73,
	0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x4a, 0x04,
	0x08, 0x05, 0x10, 0x06, 0x22, 0x4b, 0x0a, 0x16, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72,
	0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10,
	0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c,
	0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65,
	0x6e, 0x22, 0x5a, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x6f, 0x6c,
	0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x77, 0x73, 0x6d, 0x61,
	0x6e, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50,
	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x17, 0x0a,
	0x15, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x18, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
	0x62, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
	0x69, 0x64, 0x22, 0x6f, 0x0a, 0x19, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x57, 0x6f,
	0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x16, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
	0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
	0x22, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76,
	0x69, 0x74, 0x79, 0x22, 0x48, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0a, 0x6d, 0x75, 0x73, 0x74, 0x5f,
	0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x73,
	0x6d, 0x61, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x52, 0x09, 0x6d, 0x75, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xc2, 0x01,
	0x0a, 0x11, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73,
	0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x65,
	0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65,
	0x72, 0x1a, 0x39, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79,
	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x02,
	0x10, 0x03, 0x22, 0x65, 0x0a, 0x11, 0x4d, 0x61, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65,
	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x12,
	0x28, 0x0a, 0x10, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x61, 0x63, 0x74,
	0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x67, 0x6e, 0x6f, 0x72,
	0x65, 0x49, 0x66, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x4d, 0x61, 0x72,
	0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x3f, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x22, 0x14, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06,
	0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78,
	0x70, 0x6f, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53,
	0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x15, 0x0a, 0x13, 0x43, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x54, 0x0a, 0x13, 0x54, 0x61, 0x6b, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x74, 0x75, 0x72,
	0x6e, 0x5f, 0x69, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6c, 0x79, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x11, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x49, 0x6d, 0x6d, 0x65, 0x64,
	0x69, 0x61, 0x74, 0x65, 0x6c, 0x79, 0x22, 0x28, 0x0a, 0x14, 0x54, 0x61, 0x6b, 0x65, 0x53, 0x6e,
	0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10,
	0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c,
	0x22, 0x56, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x05, 0x6c,
	0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x73, 0x6d,
	0x61, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65,
	0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x1a, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56,
	0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x68,
	0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x6f, 0x6c,
	0x75, 0x6d, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x66,
	0x74, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
	0x73, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x77, 0x73,
	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x77, 0x73,
	0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70,
	0x65, 0x52, 0x06, 0x77, 0x73, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3f, 0x0a, 0x1c, 0x44, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x61, 0x73,
	0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
	0x77, 0x61, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x28, 0x0a, 0x16, 0x42, 0x61,
	0x63, 0x6b, 0x75, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x17, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x57, 0x6f,
	0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72,
	0x6c, 0x22, 0x39, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65,
	0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x16, 0x0a, 0x14,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc5, 0x03, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
	0x34, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x18, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
	0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12,
	0x2b, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15,
	0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
	0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0a,
	0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x63, 0x6f,
	0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
	0x65, 0x2e, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x04, 0x72, 0x65, 0x70,
	0x6f, 0x12, 0x35, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73,
	0x70, 0x61, 0x63, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52,
	0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57,
	0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x22, 0x99, 0x01, 0x0a,
	0x08, 0x49, 0x44, 0x45, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x77, 0x65, 0x62,
	0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x77, 0x65, 0x62, 0x52,
	0x65, 0x66, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x5f, 0x72, 0x65,
	0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70,
	0x52, 0x65, 0x66, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6f,
	0x72, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x70,
	0x65, 0x72, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x65,
	0x73, 0x6b, 0x74, 0x6f, 0x70, 0x5f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x66,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x50,
	0x6c, 0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x66, 0x22, 0x80, 0x03, 0x0a, 0x0d, 0x57, 0x6f, 0x72,
	0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f,
	0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d,
	0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65,
	0x64, 0x5f, 0x69, 0x64, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x12, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65,
	0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73,
	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x68, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73,
	0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x75, 0x72, 0x6c, 0x12, 0x34, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70,
	0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x73, 0x6d,
	0x61, 0x6e, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0c, 0x65, 0x78, 0x70,
	0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e,
	0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74,
	0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x2c, 0x0a,
	0x09, 0x69, 0x64, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x49, 0x44, 0x45, 0x49, 0x6d, 0x61, 0x67,
	0x65, 0x52, 0x08, 0x69, 0x64, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63,
	0x6c, 0x61, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73,
	0x73, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c,
	0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x64, 0x65,
	0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x6d, 0x0a, 0x08, 0x50,
	0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x76,
	0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x15, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x56, 0x69, 0x73, 0x69,
	0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69,
	0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x75, 0x72, 0x6c, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x22, 0x7c, 0x0a, 0x12, 0x56, 0x6f,
	0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f,
	0x12, 0x30, 0x0a, 0x14, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73,
	0x68, 0x6f, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12,
	0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x6e, 0x61,
	0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x14, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68,
	0x6f, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0xd0, 0x05, 0x0a, 0x13, 0x57, 0x6f, 0x72,
	0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65,
	0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f,
	0x75, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x75, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6d,
	0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d,
	0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64,
	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x0d, 0x70, 0x75, 0x6c, 0x6c, 0x69,
	0x6e, 0x67, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70,
	0x73, 0x68, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70,
	0x73, 0x68, 0x6f, 0x74, 0x12, 0x51, 0x0a, 0x15, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x61,
	0x63, 0x6b, 0x75, 0x70, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f,
	0x6f, 0x6c, 0x52, 0x13, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43,
	0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6c, 0x6f,
	0x79, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61,
	0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79,
	0x65, 0x64, 0x12, 0x49, 0x0a, 0x11, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x6f,
	0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e,
	0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43,
	0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x0f, 0x6e, 0x65,
	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x6f, 0x74, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x4a, 0x0a,
	0x13, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69,
	0x76, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x55, 0x73, 0x65,
	0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x68, 0x65, 0x61,
	0x64, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65,
	0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x68, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73,
	0x73, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x4b, 0x0a, 0x12, 0x73,
	0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e,
	0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
	0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x42,
	0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75,
	0x6d, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x19, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65,
	0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x76, 0x6f,
	0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x07,
	0x61, 0x62, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e,
	0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43,
	0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x07, 0x61, 0x62,
	0x6f, 0x72, 0x74, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0xd7, 0x02, 0x0a, 0x11,
	0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x61, 0x5f,
	0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x61, 0x49, 0x64,
	0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
	0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x61,
	0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x29, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x6e, 0x6e,
	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x88, 0x01,
	0x01, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01,
	0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x72,
	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x67, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a,
	0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f,
	0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f,
	0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x70,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x70, 0x22, 0x6f,
	0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65,
	0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x64, 0x6d,
	0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77,
	0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65,
	0x76, 0x65, 0x6c, 0x52, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f,
	0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22,
	0x93, 0x06, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70,
	0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12,
	0x30, 0x0a, 0x14, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x64,
	0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64,
	0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x49, 0x64, 0x65, 0x49, 0x6d, 0x61, 0x67,
	0x65, 0x12, 0x40, 0x0a, 0x0d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61,
	0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e,
	0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c,
	0x61, 0x67, 0x73, 0x12, 0x46, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a,
	0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
	0x61, 0x63, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x0b,
	0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x05, 0x70,
	0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x73, 0x6d,
	0x61, 0x6e, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x70, 0x6f, 0x72,
	0x74, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x76, 0x76, 0x61, 0x72, 0x73, 0x18, 0x06, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x45, 0x6e, 0x76, 0x69,
	0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52,
	0x07, 0x65, 0x6e, 0x76, 0x76, 0x61, 0x72, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x03, 0x67, 0x69, 0x74, 0x18, 0x09,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x47, 0x69, 0x74,
	0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x67, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d,
	0x65, 0x6f, 0x75, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65,
	0x6f, 0x75, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
	0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x41,
	0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x61,
	0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x09, 0x69, 0x64, 0x65, 0x5f,
	0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x73,
	0x6d, 0x61, 0x6e, 0x2e, 0x49, 0x44, 0x45, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x08, 0x69, 0x64,
	0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18,
	0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x42, 0x0a, 0x0f,
	0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18,
	0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x56, 0x6f,
	0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f,
	0x52, 0x0e, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
	0x12, 0x26, 0x0a, 0x0f, 0x73, 0x73, 0x68, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b,
	0x65, 0x79, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x73, 0x68, 0x50, 0x75,
	0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x5f,
	0x65, 0x6e, 0x76, 0x76, 0x61, 0x72, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
	0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
	0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0a, 0x73, 0x79, 0x73, 0x45, 0x6e,
	0x76, 0x76, 0x61, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x5f, 0x69, 0x6d, 0x61,
	0x67, 0x65, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x0e, 0x69, 0x64, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x4a,
	0x04, 0x08, 0x07, 0x10, 0x08, 0x22, 0x3b, 0x0a, 0x07, 0x47, 0x69, 0x74, 0x53, 0x70, 0x65, 0x63,
	0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05,
	0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61,
	0x69, 0x6c, 0x22, 0xc3, 0x01, 0x0a, 0x13, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65,
	0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x45, 0x6e, 0x76,
	0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
	0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x66, 0x52, 0x06, 0x73,
	0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x41, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b,
	0x65, 0x79, 0x52, 0x65, 0x66, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x63, 0x72,
	0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x35, 0x0a, 0x0c, 0x45, 0x78, 0x70, 0x6f,
	0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e,
	0x50, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x22,
	0x23, 0x0a, 0x0d, 0x53, 0x53, 0x48, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73,
	0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
	0x6b, 0x65, 0x79, 0x73, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
	0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5c,
	0x0a, 0x17, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
	0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x10, 0x57, 0x6f, 0x72,
	0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x10, 0x57, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x0e,
	0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x0e,
	0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x12, 0x20,
	0x0a, 0x0b, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65,
	0x2a, 0x3f, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
	0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, 0x52, 0x4d, 0x41,
	0x4c, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4d, 0x4d, 0x45, 0x44, 0x49, 0x41,
	0x54, 0x45, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x10,
	0x02, 0x2a, 0x3a, 0x0a, 0x0e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65,
	0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x4d, 0x49, 0x54, 0x5f, 0x4f, 0x57, 0x4e,
	0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x44, 0x4d,
	0x49, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x2a, 0x49, 0x0a,
	0x0e, 0x50, 0x6f, 0x72, 0x74, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12,
	0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49,
	0x54, 0x59, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16,
	0x50, 0x4f, 0x52, 0x54, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f,
	0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x01, 0x2a, 0x38, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f,
	0x6f, 0x6c, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a,
	0x04, 0x54, 0x52, 0x55, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x50, 0x54, 0x59,
	0x10, 0x02, 0x2a, 0x83, 0x01, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
	0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
	0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12,
	0x0c, 0x0a, 0x08, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x10, 0x0a,
	0x0c, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12,
	0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b,
	0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, 0x54, 0x45, 0x44, 0x10, 0x07, 0x12, 0x0c, 0x0a,
	0x08, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53,
	0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x06, 0x2a, 0xd0, 0x01, 0x0a, 0x14, 0x57, 0x6f, 0x72,
	0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61,
	0x67, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x46,
	0x55, 0x4c, 0x4c, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x42, 0x41,
	0x43, 0x4b, 0x55, 0x50, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x45, 0x52, 0x53, 0x49, 0x53,
	0x54, 0x45, 0x4e, 0x54, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x49,
	0x4d, 0x10, 0x07, 0x12, 0x1c, 0x0a, 0x18, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45,
	0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x10,
	0x09, 0x12, 0x21, 0x0a, 0x1d, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x43,
	0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x49,
	0x4e, 0x47, 0x10, 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43,
	0x45, 0x5f, 0x50, 0x53, 0x49, 0x10, 0x0b, 0x22, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x04, 0x08,
	0x02, 0x10, 0x02, 0x22, 0x04, 0x08, 0x03, 0x10, 0x03, 0x22, 0x04, 0x08, 0x05, 0x10, 0x05, 0x22,
	0x04, 0x08, 0x06, 0x10, 0x06, 0x22, 0x04, 0x08, 0x08, 0x10, 0x08, 0x2a, 0x46, 0x0a, 0x0d, 0x57,
	0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07,
	0x52, 0x45, 0x47, 0x55, 0x4c, 0x41, 0x52, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x45,
	0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x4d, 0x41, 0x47, 0x45,
	0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x04, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, 0x22, 0x04, 0x08,
	0x03, 0x10, 0x03, 0x32, 0xe7, 0x08, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
	0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x57,
	0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61,
	0x6e, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x47,
	0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57,
	0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e,
	0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53,
	0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x57,
	0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e,
	0x2e, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74,
	0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x11, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62,
	0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x77, 0x73, 0x6d,
	0x61, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73,
	0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x77, 0x73,
	0x6d, 0x61, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x57, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
	0x52, 0x0a, 0x0f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x12, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75,
	0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x1e, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70,
	0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
	0x12, 0x17, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
	0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x77, 0x73, 0x6d, 0x61,
	0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x43, 0x0a, 0x0a, 0x4d, 0x61, 0x72, 0x6b, 0x41,
	0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x18, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x4d, 0x61,
	0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x19, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69,
	0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0a,
	0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x18, 0x2e, 0x77, 0x73, 0x6d,
	0x61, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x65, 0x74,
	0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x00, 0x12, 0x46, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x72, 0x74,
	0x12, 0x19, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x77, 0x73,
	0x6d, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x72, 0x74, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0c, 0x54, 0x61, 0x6b,
	0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1a, 0x2e, 0x77, 0x73, 0x6d, 0x61,
	0x6e, 0x2e, 0x54, 0x61, 0x6b, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x54, 0x61,
	0x6b, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41,
	0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e,
	0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e,
	0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x14, 0x44,
	0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73,
	0x68, 0x6f, 0x74, 0x12, 0x22, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6e, 0x61, 0x70,
	0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49,
	0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x12, 0x1a,
	0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x53, 0x48,
	0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x77, 0x73, 0x6d,
	0x61, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0f, 0x44, 0x65, 0x73,
	0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x77,
	0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6c, 0x75,
	0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x77, 0x73,
	0x6d, 0x61, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x43, 0x6c, 0x75, 0x73,
	0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2c, 0x5a,
	0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70,
	0x6f, 0x64, 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x77, 0x73, 0x2d,
	0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x33,
}

var (
	file_core_proto_rawDescOnce sync.Once
	file_core_proto_rawDescData = file_core_proto_rawDesc
)

func file_core_proto_rawDescGZIP() []byte {
	file_core_proto_rawDescOnce.Do(func() {
		file_core_proto_rawDescData = protoimpl.X.CompressGZIP(file_core_proto_rawDescData)
	})
	return file_core_proto_rawDescData
}

var file_core_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
var file_core_proto_msgTypes = make([]protoimpl.MessageInfo, 48)
var file_core_proto_goTypes = []interface{}{
	(StopWorkspacePolicy)(0),                 // 0: wsman.StopWorkspacePolicy
	(AdmissionLevel)(0),                      // 1: wsman.AdmissionLevel
	(PortVisibility)(0),                      // 2: wsman.PortVisibility
	(WorkspaceConditionBool)(0),              // 3: wsman.WorkspaceConditionBool
	(WorkspacePhase)(0),                      // 4: wsman.WorkspacePhase
	(WorkspaceFeatureFlag)(0),                // 5: wsman.WorkspaceFeatureFlag
	(WorkspaceType)(0),                       // 6: wsman.WorkspaceType
	(*MetadataFilter)(nil),                   // 7: wsman.MetadataFilter
	(*GetWorkspacesRequest)(nil),             // 8: wsman.GetWorkspacesRequest
	(*GetWorkspacesResponse)(nil),            // 9: wsman.GetWorkspacesResponse
	(*StartWorkspaceRequest)(nil),            // 10: wsman.StartWorkspaceRequest
	(*StartWorkspaceResponse)(nil),           // 11: wsman.StartWorkspaceResponse
	(*StopWorkspaceRequest)(nil),             // 12: wsman.StopWorkspaceRequest
	(*StopWorkspaceResponse)(nil),            // 13: wsman.StopWorkspaceResponse
	(*DescribeWorkspaceRequest)(nil),         // 14: wsman.DescribeWorkspaceRequest
	(*DescribeWorkspaceResponse)(nil),        // 15: wsman.DescribeWorkspaceResponse
	(*SubscribeRequest)(nil),                 // 16: wsman.SubscribeRequest
	(*SubscribeResponse)(nil),                // 17: wsman.SubscribeResponse
	(*MarkActiveRequest)(nil),                // 18: wsman.MarkActiveRequest
	(*MarkActiveResponse)(nil),               // 19: wsman.MarkActiveResponse
	(*SetTimeoutRequest)(nil),                // 20: wsman.SetTimeoutRequest
	(*SetTimeoutResponse)(nil),               // 21: wsman.SetTimeoutResponse
	(*ControlPortRequest)(nil),               // 22: wsman.ControlPortRequest
	(*ControlPortResponse)(nil),              // 23: wsman.ControlPortResponse
	(*TakeSnapshotRequest)(nil),              // 24: wsman.TakeSnapshotRequest
	(*TakeSnapshotResponse)(nil),             // 25: wsman.TakeSnapshotResponse
	(*ControlAdmissionRequest)(nil),          // 26: wsman.ControlAdmissionRequest
	(*ControlAdmissionResponse)(nil),         // 27: wsman.ControlAdmissionResponse
	(*DeleteVolumeSnapshotRequest)(nil),      // 28: wsman.DeleteVolumeSnapshotRequest
	(*DeleteVolumeSnapshotResponse)(nil),     // 29: wsman.DeleteVolumeSnapshotResponse
	(*BackupWorkspaceRequest)(nil),           // 30: wsman.BackupWorkspaceRequest
	(*BackupWorkspaceResponse)(nil),          // 31: wsman.BackupWorkspaceResponse
	(*UpdateSSHKeyRequest)(nil),              // 32: wsman.UpdateSSHKeyRequest
	(*UpdateSSHKeyResponse)(nil),             // 33: wsman.UpdateSSHKeyResponse
	(*WorkspaceStatus)(nil),                  // 34: wsman.WorkspaceStatus
	(*IDEImage)(nil),                         // 35: wsman.IDEImage
	(*WorkspaceSpec)(nil),                    // 36: wsman.WorkspaceSpec
	(*PortSpec)(nil),                         // 37: wsman.PortSpec
	(*VolumeSnapshotInfo)(nil),               // 38: wsman.VolumeSnapshotInfo
	(*WorkspaceConditions)(nil),              // 39: wsman.WorkspaceConditions
	(*WorkspaceMetadata)(nil),                // 40: wsman.WorkspaceMetadata
	(*WorkspaceRuntimeInfo)(nil),             // 41: wsman.WorkspaceRuntimeInfo
	(*WorkspaceAuthentication)(nil),          // 42: wsman.WorkspaceAuthentication
	(*StartWorkspaceSpec)(nil),               // 43: wsman.StartWorkspaceSpec
	(*GitSpec)(nil),                          // 44: wsman.GitSpec
	(*EnvironmentVariable)(nil),              // 45: wsman.EnvironmentVariable
	(*ExposedPorts)(nil),                     // 46: wsman.ExposedPorts
	(*SSHPublicKeys)(nil),                    // 47: wsman.SSHPublicKeys
	(*DescribeClusterRequest)(nil),           // 48: wsman.DescribeClusterRequest
	(*DescribeClusterResponse)(nil),          // 49: wsman.DescribeClusterResponse
	(*WorkspaceClass)(nil),                   // 50: wsman.WorkspaceClass
	nil,                                      // 51: wsman.MetadataFilter.AnnotationsEntry
	nil,                                      // 52: wsman.SubscribeResponse.HeaderEntry
	nil,                                      // 53: wsman.WorkspaceMetadata.AnnotationsEntry
	(*EnvironmentVariable_SecretKeyRef)(nil), // 54: wsman.EnvironmentVariable.SecretKeyRef
	(*api.GitStatus)(nil),                    // 55: contentservice.GitStatus
	(*timestamppb.Timestamp)(nil),            // 56: google.protobuf.Timestamp
	(*api.WorkspaceInitializer)(nil),         // 57: contentservice.WorkspaceInitializer
}
var file_core_proto_depIdxs = []int32{
	51, // 0: wsman.MetadataFilter.annotations:type_name -> wsman.MetadataFilter.AnnotationsEntry
	7,  // 1: wsman.GetWorkspacesRequest.must_match:type_name -> wsman.MetadataFilter
	34, // 2: wsman.GetWorkspacesResponse.status:type_name -> wsman.WorkspaceStatus
	40, // 3: wsman.StartWorkspaceRequest.metadata:type_name -> wsman.WorkspaceMetadata
	43, // 4: wsman.StartWorkspaceRequest.spec:type_name -> wsman.StartWorkspaceSpec
	6,  // 5: wsman.StartWorkspaceRequest.type:type_name -> wsman.WorkspaceType
	0,  // 6: wsman.StopWorkspaceRequest.policy:type_name -> wsman.StopWorkspacePolicy
	34, // 7: wsman.DescribeWorkspaceResponse.status:type_name -> wsman.WorkspaceStatus
	7,  // 8: wsman.SubscribeRequest.must_match:type_name -> wsman.MetadataFilter
	34, // 9: wsman.SubscribeResponse.status:type_name -> wsman.WorkspaceStatus
	52, // 10: wsman.SubscribeResponse.header:type_name -> wsman.SubscribeResponse.HeaderEntry
	37, // 11: wsman.ControlPortRequest.spec:type_name -> wsman.PortSpec
	1,  // 12: wsman.ControlAdmissionRequest.level:type_name -> wsman.AdmissionLevel
	6,  // 13: wsman.DeleteVolumeSnapshotRequest.ws_type:type_name -> wsman.WorkspaceType
	40, // 14: wsman.WorkspaceStatus.metadata:type_name -> wsman.WorkspaceMetadata
	36, // 15: wsman.WorkspaceStatus.spec:type_name -> wsman.WorkspaceSpec
	4,  // 16: wsman.WorkspaceStatus.phase:type_name -> wsman.WorkspacePhase
	39, // 17: wsman.WorkspaceStatus.conditions:type_name -> wsman.WorkspaceConditions
	55, // 18: wsman.WorkspaceStatus.repo:type_name -> contentservice.GitStatus
	41, // 19: wsman.WorkspaceStatus.runtime:type_name -> wsman.WorkspaceRuntimeInfo
	42, // 20: wsman.WorkspaceStatus.auth:type_name -> wsman.WorkspaceAuthentication
	37, // 21: wsman.WorkspaceSpec.exposed_ports:type_name -> wsman.PortSpec
	6,  // 22: wsman.WorkspaceSpec.type:type_name -> wsman.WorkspaceType
	35, // 23: wsman.WorkspaceSpec.ide_image:type_name -> wsman.IDEImage
	2,  // 24: wsman.PortSpec.visibility:type_name -> wsman.PortVisibility
	3,  // 25: wsman.WorkspaceConditions.pulling_images:type_name -> wsman.WorkspaceConditionBool
	3,  // 26: wsman.WorkspaceConditions.final_backup_complete:type_name -> wsman.WorkspaceConditionBool
	3,  // 27: wsman.WorkspaceConditions.deployed:type_name -> wsman.WorkspaceConditionBool
	3,  // 28: wsman.WorkspaceConditions.network_not_ready:type_name -> wsman.WorkspaceConditionBool
	56, // 29: wsman.WorkspaceConditions.first_user_activity:type_name -> google.protobuf.Timestamp
	3,  // 30: wsman.WorkspaceConditions.stopped_by_request:type_name -> wsman.WorkspaceConditionBool
	38, // 31: wsman.WorkspaceConditions.volume_snapshot:type_name -> wsman.VolumeSnapshotInfo
	3,  // 32: wsman.WorkspaceConditions.aborted:type_name -> wsman.WorkspaceConditionBool
	56, // 33: wsman.WorkspaceMetadata.started_at:type_name -> google.protobuf.Timestamp
	53, // 34: wsman.WorkspaceMetadata.annotations:type_name -> wsman.WorkspaceMetadata.AnnotationsEntry
	1,  // 35: wsman.WorkspaceAuthentication.admission:type_name -> wsman.AdmissionLevel
	5,  // 36: wsman.StartWorkspaceSpec.feature_flags:type_name -> wsman.WorkspaceFeatureFlag
	57, // 37: wsman.StartWorkspaceSpec.initializer:type_name -> contentservice.WorkspaceInitializer
	37, // 38: wsman.StartWorkspaceSpec.ports:type_name -> wsman.PortSpec
	45, // 39: wsman.StartWorkspaceSpec.envvars:type_name -> wsman.EnvironmentVariable
	44, // 40: wsman.StartWorkspaceSpec.git:type_name -> wsman.GitSpec
	1,  // 41: wsman.StartWorkspaceSpec.admission:type_name -> wsman.AdmissionLevel
	35, // 42: wsman.StartWorkspaceSpec.ide_image:type_name -> wsman.IDEImage
	38, // 43: wsman.StartWorkspaceSpec.volume_snapshot:type_name -> wsman.VolumeSnapshotInfo
	45, // 44: wsman.StartWorkspaceSpec.sys_envvars:type_name -> wsman.EnvironmentVariable
	54, // 45: wsman.EnvironmentVariable.secret:type_name -> wsman.EnvironmentVariable.SecretKeyRef
	37, // 46: wsman.ExposedPorts.ports:type_name -> wsman.PortSpec
	50, // 47: wsman.DescribeClusterResponse.WorkspaceClasses:type_name -> wsman.WorkspaceClass
	8,  // 48: wsman.WorkspaceManager.GetWorkspaces:input_type -> wsman.GetWorkspacesRequest
	10, // 49: wsman.WorkspaceManager.StartWorkspace:input_type -> wsman.StartWorkspaceRequest
	12, // 50: wsman.WorkspaceManager.StopWorkspace:input_type -> wsman.StopWorkspaceRequest
	14, // 51: wsman.WorkspaceManager.DescribeWorkspace:input_type -> wsman.DescribeWorkspaceRequest
	30, // 52: wsman.WorkspaceManager.BackupWorkspace:input_type -> wsman.BackupWorkspaceRequest
	16, // 53: wsman.WorkspaceManager.Subscribe:input_type -> wsman.SubscribeRequest
	18, // 54: wsman.WorkspaceManager.MarkActive:input_type -> wsman.MarkActiveRequest
	20, // 55: wsman.WorkspaceManager.SetTimeout:input_type -> wsman.SetTimeoutRequest
	22, // 56: wsman.WorkspaceManager.ControlPort:input_type -> wsman.ControlPortRequest
	24, // 57: wsman.WorkspaceManager.TakeSnapshot:input_type -> wsman.TakeSnapshotRequest
	26, // 58: wsman.WorkspaceManager.ControlAdmission:input_type -> wsman.ControlAdmissionRequest
	28, // 59: wsman.WorkspaceManager.DeleteVolumeSnapshot:input_type -> wsman.DeleteVolumeSnapshotRequest
	32, // 60: wsman.WorkspaceManager.UpdateSSHKey:input_type -> wsman.UpdateSSHKeyRequest
	48, // 61: wsman.WorkspaceManager.DescribeCluster:input_type -> wsman.DescribeClusterRequest
	9,  // 62: wsman.WorkspaceManager.GetWorkspaces:output_type -> wsman.GetWorkspacesResponse
	11, // 63: wsman.WorkspaceManager.StartWorkspace:output_type -> wsman.StartWorkspaceResponse
	13, // 64: wsman.WorkspaceManager.StopWorkspace:output_type -> wsman.StopWorkspaceResponse
	15, // 65: wsman.WorkspaceManager.DescribeWorkspace:output_type -> wsman.DescribeWorkspaceResponse
	31, // 66: wsman.WorkspaceManager.BackupWorkspace:output_type -> wsman.BackupWorkspaceResponse
	17, // 67: wsman.WorkspaceManager.Subscribe:output_type -> wsman.SubscribeResponse
	19, // 68: wsman.WorkspaceManager.MarkActive:output_type -> wsman.MarkActiveResponse
	21, // 69: wsman.WorkspaceManager.SetTimeout:output_type -> wsman.SetTimeoutResponse
	23, // 70: wsman.WorkspaceManager.ControlPort:output_type -> wsman.ControlPortResponse
	25, // 71: wsman.WorkspaceManager.TakeSnapshot:output_type -> wsman.TakeSnapshotResponse
	27, // 72: wsman.WorkspaceManager.ControlAdmission:output_type -> wsman.ControlAdmissionResponse
	29, // 73: wsman.WorkspaceManager.DeleteVolumeSnapshot:output_type -> wsman.DeleteVolumeSnapshotResponse
	33, // 74: wsman.WorkspaceManager.UpdateSSHKey:output_type -> wsman.UpdateSSHKeyResponse
	49, // 75: wsman.WorkspaceManager.DescribeCluster:output_type -> wsman.DescribeClusterResponse
	62, // [62:76] is the sub-list for method output_type
	48, // [48:62] is the sub-list for method input_type
	48, // [48:48] is the sub-list for extension type_name
	48, // [48:48] is the sub-list for extension extendee
	0,  // [0:48] is the sub-list for field type_name
}

func init() { file_core_proto_init() }
func file_core_proto_init() {
	if File_core_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_core_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MetadataFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetWorkspacesRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetWorkspacesResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StartWorkspaceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StartWorkspaceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StopWorkspaceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StopWorkspaceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DescribeWorkspaceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DescribeWorkspaceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SubscribeRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SubscribeResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MarkActiveRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MarkActiveResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetTimeoutRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetTimeoutResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ControlPortRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ControlPortResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TakeSnapshotRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TakeSnapshotResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ControlAdmissionRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ControlAdmissionResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteVolumeSnapshotRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteVolumeSnapshotResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BackupWorkspaceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BackupWorkspaceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateSSHKeyRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateSSHKeyResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IDEImage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PortSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*VolumeSnapshotInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceConditions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceRuntimeInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceAuthentication); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StartWorkspaceSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GitSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EnvironmentVariable); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ExposedPorts); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SSHPublicKeys); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DescribeClusterRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DescribeClusterResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceClass); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EnvironmentVariable_SecretKeyRef); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_core_proto_msgTypes[33].OneofWrappers = []interface{}{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_core_proto_rawDesc,
			NumEnums:      7,
			NumMessages:   48,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_core_proto_goTypes,
		DependencyIndexes: file_core_proto_depIdxs,
		EnumInfos:         file_core_proto_enumTypes,
		MessageInfos:      file_core_proto_msgTypes,
	}.Build()
	File_core_proto = out.File
	file_core_proto_rawDesc = nil
	file_core_proto_goTypes = nil
	file_core_proto_depIdxs = nil
}
