// Copyright (c) 2025 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 (unknown) // source: gitpod/v1/workspace.proto package v1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" 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) ) // Admission level describes who can access a workspace instance and its ports. type AdmissionLevel int32 const ( AdmissionLevel_ADMISSION_LEVEL_UNSPECIFIED AdmissionLevel = 0 // ADMISSION_LEVEL_OWNER_ONLY means the workspace can only be accessed using // the owner token AdmissionLevel_ADMISSION_LEVEL_OWNER_ONLY AdmissionLevel = 1 // ADMISSION_LEVEL_EVERYONE means the workspace (including ports) can be // accessed by everyone. AdmissionLevel_ADMISSION_LEVEL_EVERYONE AdmissionLevel = 2 ) // Enum value maps for AdmissionLevel. var ( AdmissionLevel_name = map[int32]string{ 0: "ADMISSION_LEVEL_UNSPECIFIED", 1: "ADMISSION_LEVEL_OWNER_ONLY", 2: "ADMISSION_LEVEL_EVERYONE", } AdmissionLevel_value = map[string]int32{ "ADMISSION_LEVEL_UNSPECIFIED": 0, "ADMISSION_LEVEL_OWNER_ONLY": 1, "ADMISSION_LEVEL_EVERYONE": 2, } ) 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_gitpod_v1_workspace_proto_enumTypes[0].Descriptor() } func (AdmissionLevel) Type() protoreflect.EnumType { return &file_gitpod_v1_workspace_proto_enumTypes[0] } func (x AdmissionLevel) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use AdmissionLevel.Descriptor instead. func (AdmissionLevel) EnumDescriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{0} } type GetWorkspaceDefaultImageResponse_Source int32 const ( GetWorkspaceDefaultImageResponse_SOURCE_UNSPECIFIED GetWorkspaceDefaultImageResponse_Source = 0 GetWorkspaceDefaultImageResponse_SOURCE_INSTALLATION GetWorkspaceDefaultImageResponse_Source = 1 GetWorkspaceDefaultImageResponse_SOURCE_ORGANIZATION GetWorkspaceDefaultImageResponse_Source = 2 ) // Enum value maps for GetWorkspaceDefaultImageResponse_Source. var ( GetWorkspaceDefaultImageResponse_Source_name = map[int32]string{ 0: "SOURCE_UNSPECIFIED", 1: "SOURCE_INSTALLATION", 2: "SOURCE_ORGANIZATION", } GetWorkspaceDefaultImageResponse_Source_value = map[string]int32{ "SOURCE_UNSPECIFIED": 0, "SOURCE_INSTALLATION": 1, "SOURCE_ORGANIZATION": 2, } ) func (x GetWorkspaceDefaultImageResponse_Source) Enum() *GetWorkspaceDefaultImageResponse_Source { p := new(GetWorkspaceDefaultImageResponse_Source) *p = x return p } func (x GetWorkspaceDefaultImageResponse_Source) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (GetWorkspaceDefaultImageResponse_Source) Descriptor() protoreflect.EnumDescriptor { return file_gitpod_v1_workspace_proto_enumTypes[1].Descriptor() } func (GetWorkspaceDefaultImageResponse_Source) Type() protoreflect.EnumType { return &file_gitpod_v1_workspace_proto_enumTypes[1] } func (x GetWorkspaceDefaultImageResponse_Source) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use GetWorkspaceDefaultImageResponse_Source.Descriptor instead. func (GetWorkspaceDefaultImageResponse_Source) EnumDescriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{15, 0} } // WorkspaceType specifies the purpose/use of a workspace. Different workspace // types are handled differently by all parts of the system. type WorkspaceSpec_WorkspaceType int32 const ( WorkspaceSpec_WORKSPACE_TYPE_UNSPECIFIED WorkspaceSpec_WorkspaceType = 0 // Regular workspaces are your off-the-mill workspaces intended for users. // They are directly user-facing and hence are most important. WorkspaceSpec_WORKSPACE_TYPE_REGULAR WorkspaceSpec_WorkspaceType = 1 // Prebuild workspaces are workspaces used to pre-build the content of other // workspaces. They run headless and have no direct user-interaction. WorkspaceSpec_WORKSPACE_TYPE_PREBUILD WorkspaceSpec_WorkspaceType = 2 ) // Enum value maps for WorkspaceSpec_WorkspaceType. var ( WorkspaceSpec_WorkspaceType_name = map[int32]string{ 0: "WORKSPACE_TYPE_UNSPECIFIED", 1: "WORKSPACE_TYPE_REGULAR", 2: "WORKSPACE_TYPE_PREBUILD", } WorkspaceSpec_WorkspaceType_value = map[string]int32{ "WORKSPACE_TYPE_UNSPECIFIED": 0, "WORKSPACE_TYPE_REGULAR": 1, "WORKSPACE_TYPE_PREBUILD": 2, } ) func (x WorkspaceSpec_WorkspaceType) Enum() *WorkspaceSpec_WorkspaceType { p := new(WorkspaceSpec_WorkspaceType) *p = x return p } func (x WorkspaceSpec_WorkspaceType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (WorkspaceSpec_WorkspaceType) Descriptor() protoreflect.EnumDescriptor { return file_gitpod_v1_workspace_proto_enumTypes[2].Descriptor() } func (WorkspaceSpec_WorkspaceType) Type() protoreflect.EnumType { return &file_gitpod_v1_workspace_proto_enumTypes[2] } func (x WorkspaceSpec_WorkspaceType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use WorkspaceSpec_WorkspaceType.Descriptor instead. func (WorkspaceSpec_WorkspaceType) EnumDescriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{24, 0} } type WorkspaceStatus_WorkspaceConditions_FailedReason int32 const ( WorkspaceStatus_WorkspaceConditions_FAILED_REASON_UNSPECIFIED WorkspaceStatus_WorkspaceConditions_FailedReason = 0 WorkspaceStatus_WorkspaceConditions_FAILED_REASON_CONTENT_INITIALIZATION_FAILED WorkspaceStatus_WorkspaceConditions_FailedReason = 1 WorkspaceStatus_WorkspaceConditions_FAILED_REASON_BACKUP_FAILED WorkspaceStatus_WorkspaceConditions_FailedReason = 2 WorkspaceStatus_WorkspaceConditions_FAILED_REASON_IMAGE_PULL_FAILURE WorkspaceStatus_WorkspaceConditions_FailedReason = 3 WorkspaceStatus_WorkspaceConditions_FAILED_REASON_UNEXPECTED_TERMINATION WorkspaceStatus_WorkspaceConditions_FailedReason = 4 ) // Enum value maps for WorkspaceStatus_WorkspaceConditions_FailedReason. var ( WorkspaceStatus_WorkspaceConditions_FailedReason_name = map[int32]string{ 0: "FAILED_REASON_UNSPECIFIED", 1: "FAILED_REASON_CONTENT_INITIALIZATION_FAILED", 2: "FAILED_REASON_BACKUP_FAILED", 3: "FAILED_REASON_IMAGE_PULL_FAILURE", 4: "FAILED_REASON_UNEXPECTED_TERMINATION", } WorkspaceStatus_WorkspaceConditions_FailedReason_value = map[string]int32{ "FAILED_REASON_UNSPECIFIED": 0, "FAILED_REASON_CONTENT_INITIALIZATION_FAILED": 1, "FAILED_REASON_BACKUP_FAILED": 2, "FAILED_REASON_IMAGE_PULL_FAILURE": 3, "FAILED_REASON_UNEXPECTED_TERMINATION": 4, } ) func (x WorkspaceStatus_WorkspaceConditions_FailedReason) Enum() *WorkspaceStatus_WorkspaceConditions_FailedReason { p := new(WorkspaceStatus_WorkspaceConditions_FailedReason) *p = x return p } func (x WorkspaceStatus_WorkspaceConditions_FailedReason) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (WorkspaceStatus_WorkspaceConditions_FailedReason) Descriptor() protoreflect.EnumDescriptor { return file_gitpod_v1_workspace_proto_enumTypes[3].Descriptor() } func (WorkspaceStatus_WorkspaceConditions_FailedReason) Type() protoreflect.EnumType { return &file_gitpod_v1_workspace_proto_enumTypes[3] } func (x WorkspaceStatus_WorkspaceConditions_FailedReason) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use WorkspaceStatus_WorkspaceConditions_FailedReason.Descriptor instead. func (WorkspaceStatus_WorkspaceConditions_FailedReason) EnumDescriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{25, 0, 0} } // Protocol defines the backend protocol of port type WorkspacePort_Protocol int32 const ( WorkspacePort_PROTOCOL_UNSPECIFIED WorkspacePort_Protocol = 0 // Http means the port backend is http WorkspacePort_PROTOCOL_HTTP WorkspacePort_Protocol = 1 // Https means the port backend is https WorkspacePort_PROTOCOL_HTTPS WorkspacePort_Protocol = 2 ) // Enum value maps for WorkspacePort_Protocol. var ( WorkspacePort_Protocol_name = map[int32]string{ 0: "PROTOCOL_UNSPECIFIED", 1: "PROTOCOL_HTTP", 2: "PROTOCOL_HTTPS", } WorkspacePort_Protocol_value = map[string]int32{ "PROTOCOL_UNSPECIFIED": 0, "PROTOCOL_HTTP": 1, "PROTOCOL_HTTPS": 2, } ) func (x WorkspacePort_Protocol) Enum() *WorkspacePort_Protocol { p := new(WorkspacePort_Protocol) *p = x return p } func (x WorkspacePort_Protocol) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (WorkspacePort_Protocol) Descriptor() protoreflect.EnumDescriptor { return file_gitpod_v1_workspace_proto_enumTypes[4].Descriptor() } func (WorkspacePort_Protocol) Type() protoreflect.EnumType { return &file_gitpod_v1_workspace_proto_enumTypes[4] } func (x WorkspacePort_Protocol) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use WorkspacePort_Protocol.Descriptor instead. func (WorkspacePort_Protocol) EnumDescriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{26, 0} } type WorkspacePhase_Phase 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_PHASE_UNSPECIFIED WorkspacePhase_Phase = 0 // Preparing means that we haven't actually started the workspace instance // just yet, but rather are still preparing for launch. WorkspacePhase_PHASE_PREPARING WorkspacePhase_Phase = 1 // ImageBuild indicates that there's an image build running for this // workspace. WorkspacePhase_PHASE_IMAGEBUILD WorkspacePhase_Phase = 2 // 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 accommodate the workspace, the // workspace will be in Pending state until that happened. WorkspacePhase_PHASE_PENDING WorkspacePhase_Phase = 3 // 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_PHASE_CREATING WorkspacePhase_Phase = 4 // 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_PHASE_INITIALIZING WorkspacePhase_Phase = 5 // Running means the workspace is able to actively perform work, either by // serving a user through Theia, or as a headless workspace. WorkspacePhase_PHASE_RUNNING WorkspacePhase_Phase = 6 // 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_PHASE_INTERRUPTED WorkspacePhase_Phase = 7 // Paused means the workspace is currently unavailable, akin to stopped, // but faster to wake up. WorkspacePhase_PHASE_PAUSED WorkspacePhase_Phase = 8 // Stopping means that the workspace is currently shutting down. It could go // to stopped every moment. WorkspacePhase_PHASE_STOPPING WorkspacePhase_Phase = 9 // Stopped means the workspace ended regularly because it was shut down. WorkspacePhase_PHASE_STOPPED WorkspacePhase_Phase = 10 ) // Enum value maps for WorkspacePhase_Phase. var ( WorkspacePhase_Phase_name = map[int32]string{ 0: "PHASE_UNSPECIFIED", 1: "PHASE_PREPARING", 2: "PHASE_IMAGEBUILD", 3: "PHASE_PENDING", 4: "PHASE_CREATING", 5: "PHASE_INITIALIZING", 6: "PHASE_RUNNING", 7: "PHASE_INTERRUPTED", 8: "PHASE_PAUSED", 9: "PHASE_STOPPING", 10: "PHASE_STOPPED", } WorkspacePhase_Phase_value = map[string]int32{ "PHASE_UNSPECIFIED": 0, "PHASE_PREPARING": 1, "PHASE_IMAGEBUILD": 2, "PHASE_PENDING": 3, "PHASE_CREATING": 4, "PHASE_INITIALIZING": 5, "PHASE_RUNNING": 6, "PHASE_INTERRUPTED": 7, "PHASE_PAUSED": 8, "PHASE_STOPPING": 9, "PHASE_STOPPED": 10, } ) func (x WorkspacePhase_Phase) Enum() *WorkspacePhase_Phase { p := new(WorkspacePhase_Phase) *p = x return p } func (x WorkspacePhase_Phase) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (WorkspacePhase_Phase) Descriptor() protoreflect.EnumDescriptor { return file_gitpod_v1_workspace_proto_enumTypes[5].Descriptor() } func (WorkspacePhase_Phase) Type() protoreflect.EnumType { return &file_gitpod_v1_workspace_proto_enumTypes[5] } func (x WorkspacePhase_Phase) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use WorkspacePhase_Phase.Descriptor instead. func (WorkspacePhase_Phase) EnumDescriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{28, 0} } // CloneTargetMode is the target state in which we want to leave a // GitWorkspace type GitInitializer_CloneTargetMode int32 const ( GitInitializer_CLONE_TARGET_MODE_UNSPECIFIED GitInitializer_CloneTargetMode = 0 // REMOTE_HEAD has the local WS point at the remote branch head GitInitializer_CLONE_TARGET_MODE_REMOTE_HEAD GitInitializer_CloneTargetMode = 1 // REMOTE_COMMIT has the local WS point at a specific commit GitInitializer_CLONE_TARGET_MODE_REMOTE_COMMIT GitInitializer_CloneTargetMode = 2 // REMOTE_BRANCH has the local WS point at a remote branch GitInitializer_CLONE_TARGET_MODE_REMOTE_BRANCH GitInitializer_CloneTargetMode = 3 // LOCAL_BRANCH creates a local branch in the workspace GitInitializer_CLONE_TARGET_MODE_LOCAL_BRANCH GitInitializer_CloneTargetMode = 4 ) // Enum value maps for GitInitializer_CloneTargetMode. var ( GitInitializer_CloneTargetMode_name = map[int32]string{ 0: "CLONE_TARGET_MODE_UNSPECIFIED", 1: "CLONE_TARGET_MODE_REMOTE_HEAD", 2: "CLONE_TARGET_MODE_REMOTE_COMMIT", 3: "CLONE_TARGET_MODE_REMOTE_BRANCH", 4: "CLONE_TARGET_MODE_LOCAL_BRANCH", } GitInitializer_CloneTargetMode_value = map[string]int32{ "CLONE_TARGET_MODE_UNSPECIFIED": 0, "CLONE_TARGET_MODE_REMOTE_HEAD": 1, "CLONE_TARGET_MODE_REMOTE_COMMIT": 2, "CLONE_TARGET_MODE_REMOTE_BRANCH": 3, "CLONE_TARGET_MODE_LOCAL_BRANCH": 4, } ) func (x GitInitializer_CloneTargetMode) Enum() *GitInitializer_CloneTargetMode { p := new(GitInitializer_CloneTargetMode) *p = x return p } func (x GitInitializer_CloneTargetMode) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (GitInitializer_CloneTargetMode) Descriptor() protoreflect.EnumDescriptor { return file_gitpod_v1_workspace_proto_enumTypes[6].Descriptor() } func (GitInitializer_CloneTargetMode) Type() protoreflect.EnumType { return &file_gitpod_v1_workspace_proto_enumTypes[6] } func (x GitInitializer_CloneTargetMode) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use GitInitializer_CloneTargetMode.Descriptor instead. func (GitInitializer_CloneTargetMode) EnumDescriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{30, 0} } // AuthMethod is the means of authentication used during clone type GitInitializer_AuthMethod int32 const ( // NO_AUTH disables authentication during clone GitInitializer_AUTH_METHOD_UNSPECIFIED GitInitializer_AuthMethod = 0 // BASIC_AUTH uses HTTP basic auth during clone (fails if repo is not cloned // through http) GitInitializer_AUTH_METHOD_BASIC_AUTH GitInitializer_AuthMethod = 1 // BASIC_AUTH_OTS uses HTTP basic auth during the clone with the secrets // coming from the OTS URL. Fails if either the OTS download or the clone // fail. GitInitializer_AUTH_METHOD_BASIC_AUTH_OTS GitInitializer_AuthMethod = 2 ) // Enum value maps for GitInitializer_AuthMethod. var ( GitInitializer_AuthMethod_name = map[int32]string{ 0: "AUTH_METHOD_UNSPECIFIED", 1: "AUTH_METHOD_BASIC_AUTH", 2: "AUTH_METHOD_BASIC_AUTH_OTS", } GitInitializer_AuthMethod_value = map[string]int32{ "AUTH_METHOD_UNSPECIFIED": 0, "AUTH_METHOD_BASIC_AUTH": 1, "AUTH_METHOD_BASIC_AUTH_OTS": 2, } ) func (x GitInitializer_AuthMethod) Enum() *GitInitializer_AuthMethod { p := new(GitInitializer_AuthMethod) *p = x return p } func (x GitInitializer_AuthMethod) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (GitInitializer_AuthMethod) Descriptor() protoreflect.EnumDescriptor { return file_gitpod_v1_workspace_proto_enumTypes[7].Descriptor() } func (GitInitializer_AuthMethod) Type() protoreflect.EnumType { return &file_gitpod_v1_workspace_proto_enumTypes[7] } func (x GitInitializer_AuthMethod) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use GitInitializer_AuthMethod.Descriptor instead. func (GitInitializer_AuthMethod) EnumDescriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{30, 1} } type WorkspaceSession_WorkspaceContext_RefType int32 const ( WorkspaceSession_WorkspaceContext_REF_TYPE_UNSPECIFIED WorkspaceSession_WorkspaceContext_RefType = 0 WorkspaceSession_WorkspaceContext_REF_TYPE_BRANCH WorkspaceSession_WorkspaceContext_RefType = 1 WorkspaceSession_WorkspaceContext_REF_TYPE_TAG WorkspaceSession_WorkspaceContext_RefType = 2 WorkspaceSession_WorkspaceContext_REF_TYPE_REVISION WorkspaceSession_WorkspaceContext_RefType = 3 ) // Enum value maps for WorkspaceSession_WorkspaceContext_RefType. var ( WorkspaceSession_WorkspaceContext_RefType_name = map[int32]string{ 0: "REF_TYPE_UNSPECIFIED", 1: "REF_TYPE_BRANCH", 2: "REF_TYPE_TAG", 3: "REF_TYPE_REVISION", } WorkspaceSession_WorkspaceContext_RefType_value = map[string]int32{ "REF_TYPE_UNSPECIFIED": 0, "REF_TYPE_BRANCH": 1, "REF_TYPE_TAG": 2, "REF_TYPE_REVISION": 3, } ) func (x WorkspaceSession_WorkspaceContext_RefType) Enum() *WorkspaceSession_WorkspaceContext_RefType { p := new(WorkspaceSession_WorkspaceContext_RefType) *p = x return p } func (x WorkspaceSession_WorkspaceContext_RefType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (WorkspaceSession_WorkspaceContext_RefType) Descriptor() protoreflect.EnumDescriptor { return file_gitpod_v1_workspace_proto_enumTypes[8].Descriptor() } func (WorkspaceSession_WorkspaceContext_RefType) Type() protoreflect.EnumType { return &file_gitpod_v1_workspace_proto_enumTypes[8] } func (x WorkspaceSession_WorkspaceContext_RefType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use WorkspaceSession_WorkspaceContext_RefType.Descriptor instead. func (WorkspaceSession_WorkspaceContext_RefType) EnumDescriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{51, 1, 0} } type UpdateWorkspacePortRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // workspace_id specifies the workspace to update port // // +required WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` // port number // // +required Port uint64 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` // admission controls the policy of this port Admission *AdmissionLevel `protobuf:"varint,3,opt,name=admission,proto3,enum=gitpod.v1.AdmissionLevel,oneof" json:"admission,omitempty"` // backend protocol of this port Protocol *WorkspacePort_Protocol `protobuf:"varint,4,opt,name=protocol,proto3,enum=gitpod.v1.WorkspacePort_Protocol,oneof" json:"protocol,omitempty"` } func (x *UpdateWorkspacePortRequest) Reset() { *x = UpdateWorkspacePortRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateWorkspacePortRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateWorkspacePortRequest) ProtoMessage() {} func (x *UpdateWorkspacePortRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 UpdateWorkspacePortRequest.ProtoReflect.Descriptor instead. func (*UpdateWorkspacePortRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{0} } func (x *UpdateWorkspacePortRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *UpdateWorkspacePortRequest) GetPort() uint64 { if x != nil { return x.Port } return 0 } func (x *UpdateWorkspacePortRequest) GetAdmission() AdmissionLevel { if x != nil && x.Admission != nil { return *x.Admission } return AdmissionLevel_ADMISSION_LEVEL_UNSPECIFIED } func (x *UpdateWorkspacePortRequest) GetProtocol() WorkspacePort_Protocol { if x != nil && x.Protocol != nil { return *x.Protocol } return WorkspacePort_PROTOCOL_UNSPECIFIED } type UpdateWorkspacePortResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateWorkspacePortResponse) Reset() { *x = UpdateWorkspacePortResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateWorkspacePortResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateWorkspacePortResponse) ProtoMessage() {} func (x *UpdateWorkspacePortResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 UpdateWorkspacePortResponse.ProtoReflect.Descriptor instead. func (*UpdateWorkspacePortResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{1} } type GetWorkspaceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // workspace_id specifies the workspace to get // // +required WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` } func (x *GetWorkspaceRequest) Reset() { *x = GetWorkspaceRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWorkspaceRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWorkspaceRequest) ProtoMessage() {} func (x *GetWorkspaceRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 GetWorkspaceRequest.ProtoReflect.Descriptor instead. func (*GetWorkspaceRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{2} } func (x *GetWorkspaceRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } type GetWorkspaceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Workspace *Workspace `protobuf:"bytes,1,opt,name=workspace,proto3" json:"workspace,omitempty"` } func (x *GetWorkspaceResponse) Reset() { *x = GetWorkspaceResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWorkspaceResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWorkspaceResponse) ProtoMessage() {} func (x *GetWorkspaceResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 GetWorkspaceResponse.ProtoReflect.Descriptor instead. func (*GetWorkspaceResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{3} } func (x *GetWorkspaceResponse) GetWorkspace() *Workspace { if x != nil { return x.Workspace } return nil } type WatchWorkspaceStatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // workspace_id specifies the workspace to watch // // +optional if empty then watch all workspaces WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` } func (x *WatchWorkspaceStatusRequest) Reset() { *x = WatchWorkspaceStatusRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WatchWorkspaceStatusRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*WatchWorkspaceStatusRequest) ProtoMessage() {} func (x *WatchWorkspaceStatusRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 WatchWorkspaceStatusRequest.ProtoReflect.Descriptor instead. func (*WatchWorkspaceStatusRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{4} } func (x *WatchWorkspaceStatusRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } type WatchWorkspaceStatusResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // workspace_id is the ID of the workspace that has status updated WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` // status is the updated status of workspace Status *WorkspaceStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` } func (x *WatchWorkspaceStatusResponse) Reset() { *x = WatchWorkspaceStatusResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WatchWorkspaceStatusResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*WatchWorkspaceStatusResponse) ProtoMessage() {} func (x *WatchWorkspaceStatusResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 WatchWorkspaceStatusResponse.ProtoReflect.Descriptor instead. func (*WatchWorkspaceStatusResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{5} } func (x *WatchWorkspaceStatusResponse) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *WatchWorkspaceStatusResponse) GetStatus() *WorkspaceStatus { if x != nil { return x.Status } return nil } type ListWorkspacesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // pagination contains the pagination options for listing workspaces Pagination *PaginationRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` // organization_id is the ID of the organization that contains the workspaces // // +required OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` // pinned indicates whether to list only pinned workspaces Pinned bool `protobuf:"varint,3,opt,name=pinned,proto3" json:"pinned,omitempty"` // search_term is a search term to filter workspaces by name SearchTerm string `protobuf:"bytes,4,opt,name=search_term,json=searchTerm,proto3" json:"search_term,omitempty"` } func (x *ListWorkspacesRequest) Reset() { *x = ListWorkspacesRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListWorkspacesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListWorkspacesRequest) ProtoMessage() {} func (x *ListWorkspacesRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 ListWorkspacesRequest.ProtoReflect.Descriptor instead. func (*ListWorkspacesRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{6} } func (x *ListWorkspacesRequest) GetPagination() *PaginationRequest { if x != nil { return x.Pagination } return nil } func (x *ListWorkspacesRequest) GetOrganizationId() string { if x != nil { return x.OrganizationId } return "" } func (x *ListWorkspacesRequest) GetPinned() bool { if x != nil { return x.Pinned } return false } func (x *ListWorkspacesRequest) GetSearchTerm() string { if x != nil { return x.SearchTerm } return "" } type ListWorkspacesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // pagination contains the pagination options for listing workspaces Pagination *PaginationResponse `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` // workspaces are the workspaces that matched the query Workspaces []*Workspace `protobuf:"bytes,2,rep,name=workspaces,proto3" json:"workspaces,omitempty"` } func (x *ListWorkspacesResponse) Reset() { *x = ListWorkspacesResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListWorkspacesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListWorkspacesResponse) ProtoMessage() {} func (x *ListWorkspacesResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 ListWorkspacesResponse.ProtoReflect.Descriptor instead. func (*ListWorkspacesResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{7} } func (x *ListWorkspacesResponse) GetPagination() *PaginationResponse { if x != nil { return x.Pagination } return nil } func (x *ListWorkspacesResponse) GetWorkspaces() []*Workspace { if x != nil { return x.Workspaces } return nil } type ListWorkspaceSessionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // pagination contains the pagination options for listing workspaces Pagination *PaginationRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` // organization_id is the ID of the organization that contains the workspaces // // +required OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` // from specifies the starting time range for this request. // All sessions which existed starting at from will be returned. From *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=from,proto3" json:"from,omitempty"` // to specifies the end time range for this request. // All sessions which existed ending at to will be returned. To *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=to,proto3" json:"to,omitempty"` } func (x *ListWorkspaceSessionsRequest) Reset() { *x = ListWorkspaceSessionsRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListWorkspaceSessionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListWorkspaceSessionsRequest) ProtoMessage() {} func (x *ListWorkspaceSessionsRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 ListWorkspaceSessionsRequest.ProtoReflect.Descriptor instead. func (*ListWorkspaceSessionsRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{8} } func (x *ListWorkspaceSessionsRequest) GetPagination() *PaginationRequest { if x != nil { return x.Pagination } return nil } func (x *ListWorkspaceSessionsRequest) GetOrganizationId() string { if x != nil { return x.OrganizationId } return "" } func (x *ListWorkspaceSessionsRequest) GetFrom() *timestamppb.Timestamp { if x != nil { return x.From } return nil } func (x *ListWorkspaceSessionsRequest) GetTo() *timestamppb.Timestamp { if x != nil { return x.To } return nil } type ListWorkspaceSessionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // pagination contains the pagination options for listing workspaces Pagination *PaginationResponse `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` // workspaces are the workspaces that matched the query WorkspaceSessions []*WorkspaceSession `protobuf:"bytes,2,rep,name=workspace_sessions,json=workspaceSessions,proto3" json:"workspace_sessions,omitempty"` } func (x *ListWorkspaceSessionsResponse) Reset() { *x = ListWorkspaceSessionsResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListWorkspaceSessionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListWorkspaceSessionsResponse) ProtoMessage() {} func (x *ListWorkspaceSessionsResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 ListWorkspaceSessionsResponse.ProtoReflect.Descriptor instead. func (*ListWorkspaceSessionsResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{9} } func (x *ListWorkspaceSessionsResponse) GetPagination() *PaginationResponse { if x != nil { return x.Pagination } return nil } func (x *ListWorkspaceSessionsResponse) GetWorkspaceSessions() []*WorkspaceSession { if x != nil { return x.WorkspaceSessions } return nil } // Required fields: // - metadata.organization_id // - metadata.configuration_id type CreateAndStartWorkspaceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // metadata is data associated with this workspace that's required for other // parts of Gitpod to function Metadata *WorkspaceMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` // Types that are assignable to Source: // // *CreateAndStartWorkspaceRequest_ContextUrl // *CreateAndStartWorkspaceRequest_Spec Source isCreateAndStartWorkspaceRequest_Source `protobuf_oneof:"source"` // force_default_config indicates that the workspace should be created with // the default configuration instead of the configuration provided in // `.gitpod.yml` file // // Deprecated: Do not use. ForceDefaultConfig bool `protobuf:"varint,4,opt,name=force_default_config,json=forceDefaultConfig,proto3" json:"force_default_config,omitempty"` } func (x *CreateAndStartWorkspaceRequest) Reset() { *x = CreateAndStartWorkspaceRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateAndStartWorkspaceRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateAndStartWorkspaceRequest) ProtoMessage() {} func (x *CreateAndStartWorkspaceRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 CreateAndStartWorkspaceRequest.ProtoReflect.Descriptor instead. func (*CreateAndStartWorkspaceRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{10} } func (x *CreateAndStartWorkspaceRequest) GetMetadata() *WorkspaceMetadata { if x != nil { return x.Metadata } return nil } func (m *CreateAndStartWorkspaceRequest) GetSource() isCreateAndStartWorkspaceRequest_Source { if m != nil { return m.Source } return nil } func (x *CreateAndStartWorkspaceRequest) GetContextUrl() *CreateAndStartWorkspaceRequest_ContextURL { if x, ok := x.GetSource().(*CreateAndStartWorkspaceRequest_ContextUrl); ok { return x.ContextUrl } return nil } func (x *CreateAndStartWorkspaceRequest) GetSpec() *WorkspaceSpec { if x, ok := x.GetSource().(*CreateAndStartWorkspaceRequest_Spec); ok { return x.Spec } return nil } // Deprecated: Do not use. func (x *CreateAndStartWorkspaceRequest) GetForceDefaultConfig() bool { if x != nil { return x.ForceDefaultConfig } return false } type isCreateAndStartWorkspaceRequest_Source interface { isCreateAndStartWorkspaceRequest_Source() } type CreateAndStartWorkspaceRequest_ContextUrl struct { // context_url is the URL from which the workspace is created ContextUrl *CreateAndStartWorkspaceRequest_ContextURL `protobuf:"bytes,2,opt,name=context_url,json=contextUrl,proto3,oneof"` } type CreateAndStartWorkspaceRequest_Spec struct { // spec is the configuration of the workspace that's required for the to // start the workspace Spec *WorkspaceSpec `protobuf:"bytes,3,opt,name=spec,proto3,oneof"` } func (*CreateAndStartWorkspaceRequest_ContextUrl) isCreateAndStartWorkspaceRequest_Source() {} func (*CreateAndStartWorkspaceRequest_Spec) isCreateAndStartWorkspaceRequest_Source() {} type CreateAndStartWorkspaceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Workspace *Workspace `protobuf:"bytes,1,opt,name=workspace,proto3" json:"workspace,omitempty"` } func (x *CreateAndStartWorkspaceResponse) Reset() { *x = CreateAndStartWorkspaceResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateAndStartWorkspaceResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateAndStartWorkspaceResponse) ProtoMessage() {} func (x *CreateAndStartWorkspaceResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 CreateAndStartWorkspaceResponse.ProtoReflect.Descriptor instead. func (*CreateAndStartWorkspaceResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{11} } func (x *CreateAndStartWorkspaceResponse) GetWorkspace() *Workspace { if x != nil { return x.Workspace } return nil } type StartWorkspaceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // workspace_id specifies the workspace that is going to start // // +required WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` // Deprecated: Do not use. ForceDefaultConfig bool `protobuf:"varint,2,opt,name=force_default_config,json=forceDefaultConfig,proto3" json:"force_default_config,omitempty"` } func (x *StartWorkspaceRequest) Reset() { *x = StartWorkspaceRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[12] 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_gitpod_v1_workspace_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 StartWorkspaceRequest.ProtoReflect.Descriptor instead. func (*StartWorkspaceRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{12} } func (x *StartWorkspaceRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } // Deprecated: Do not use. func (x *StartWorkspaceRequest) GetForceDefaultConfig() bool { if x != nil { return x.ForceDefaultConfig } return false } type StartWorkspaceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Workspace *Workspace `protobuf:"bytes,1,opt,name=workspace,proto3" json:"workspace,omitempty"` } func (x *StartWorkspaceResponse) Reset() { *x = StartWorkspaceResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[13] 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_gitpod_v1_workspace_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 StartWorkspaceResponse.ProtoReflect.Descriptor instead. func (*StartWorkspaceResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{13} } func (x *StartWorkspaceResponse) GetWorkspace() *Workspace { if x != nil { return x.Workspace } return nil } type GetWorkspaceDefaultImageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // workspace_id specifies the workspace to get default image WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` } func (x *GetWorkspaceDefaultImageRequest) Reset() { *x = GetWorkspaceDefaultImageRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWorkspaceDefaultImageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWorkspaceDefaultImageRequest) ProtoMessage() {} func (x *GetWorkspaceDefaultImageRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 GetWorkspaceDefaultImageRequest.ProtoReflect.Descriptor instead. func (*GetWorkspaceDefaultImageRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{14} } func (x *GetWorkspaceDefaultImageRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } type GetWorkspaceDefaultImageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DefaultWorkspaceImage string `protobuf:"bytes,1,opt,name=default_workspace_image,json=defaultWorkspaceImage,proto3" json:"default_workspace_image,omitempty"` Source GetWorkspaceDefaultImageResponse_Source `protobuf:"varint,2,opt,name=source,proto3,enum=gitpod.v1.GetWorkspaceDefaultImageResponse_Source" json:"source,omitempty"` } func (x *GetWorkspaceDefaultImageResponse) Reset() { *x = GetWorkspaceDefaultImageResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWorkspaceDefaultImageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWorkspaceDefaultImageResponse) ProtoMessage() {} func (x *GetWorkspaceDefaultImageResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 GetWorkspaceDefaultImageResponse.ProtoReflect.Descriptor instead. func (*GetWorkspaceDefaultImageResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{15} } func (x *GetWorkspaceDefaultImageResponse) GetDefaultWorkspaceImage() string { if x != nil { return x.DefaultWorkspaceImage } return "" } func (x *GetWorkspaceDefaultImageResponse) GetSource() GetWorkspaceDefaultImageResponse_Source { if x != nil { return x.Source } return GetWorkspaceDefaultImageResponse_SOURCE_UNSPECIFIED } type SendHeartBeatRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // workspace_id specifies the workspace to send heartbeat // // +required WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` // disconnected indicates if the editor connection is disconnected. // If set to true, the workspace will be stopped after Timeout.disconnected. Disconnected bool `protobuf:"varint,2,opt,name=disconnected,proto3" json:"disconnected,omitempty"` } func (x *SendHeartBeatRequest) Reset() { *x = SendHeartBeatRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SendHeartBeatRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SendHeartBeatRequest) ProtoMessage() {} func (x *SendHeartBeatRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 SendHeartBeatRequest.ProtoReflect.Descriptor instead. func (*SendHeartBeatRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{16} } func (x *SendHeartBeatRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *SendHeartBeatRequest) GetDisconnected() bool { if x != nil { return x.Disconnected } return false } type SendHeartBeatResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SendHeartBeatResponse) Reset() { *x = SendHeartBeatResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SendHeartBeatResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SendHeartBeatResponse) ProtoMessage() {} func (x *SendHeartBeatResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 SendHeartBeatResponse.ProtoReflect.Descriptor instead. func (*SendHeartBeatResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{17} } type GetWorkspaceOwnerTokenRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` } func (x *GetWorkspaceOwnerTokenRequest) Reset() { *x = GetWorkspaceOwnerTokenRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWorkspaceOwnerTokenRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWorkspaceOwnerTokenRequest) ProtoMessage() {} func (x *GetWorkspaceOwnerTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 GetWorkspaceOwnerTokenRequest.ProtoReflect.Descriptor instead. func (*GetWorkspaceOwnerTokenRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{18} } func (x *GetWorkspaceOwnerTokenRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } type GetWorkspaceOwnerTokenResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OwnerToken string `protobuf:"bytes,1,opt,name=owner_token,json=ownerToken,proto3" json:"owner_token,omitempty"` } func (x *GetWorkspaceOwnerTokenResponse) Reset() { *x = GetWorkspaceOwnerTokenResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWorkspaceOwnerTokenResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWorkspaceOwnerTokenResponse) ProtoMessage() {} func (x *GetWorkspaceOwnerTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 GetWorkspaceOwnerTokenResponse.ProtoReflect.Descriptor instead. func (*GetWorkspaceOwnerTokenResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{19} } func (x *GetWorkspaceOwnerTokenResponse) GetOwnerToken() string { if x != nil { return x.OwnerToken } return "" } type GetWorkspaceEditorCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` } func (x *GetWorkspaceEditorCredentialsRequest) Reset() { *x = GetWorkspaceEditorCredentialsRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWorkspaceEditorCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWorkspaceEditorCredentialsRequest) ProtoMessage() {} func (x *GetWorkspaceEditorCredentialsRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 GetWorkspaceEditorCredentialsRequest.ProtoReflect.Descriptor instead. func (*GetWorkspaceEditorCredentialsRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{20} } func (x *GetWorkspaceEditorCredentialsRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } type GetWorkspaceEditorCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields EditorCredentials string `protobuf:"bytes,1,opt,name=editor_credentials,json=editorCredentials,proto3" json:"editor_credentials,omitempty"` } func (x *GetWorkspaceEditorCredentialsResponse) Reset() { *x = GetWorkspaceEditorCredentialsResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWorkspaceEditorCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWorkspaceEditorCredentialsResponse) ProtoMessage() {} func (x *GetWorkspaceEditorCredentialsResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 GetWorkspaceEditorCredentialsResponse.ProtoReflect.Descriptor instead. func (*GetWorkspaceEditorCredentialsResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{21} } func (x *GetWorkspaceEditorCredentialsResponse) GetEditorCredentials() string { if x != nil { return x.EditorCredentials } return "" } // +resource get workspace type Workspace 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"` // 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 configuration of the workspace that's required for the // ws-manager to start the workspace Spec *WorkspaceSpec `protobuf:"bytes,3,opt,name=spec,proto3" json:"spec,omitempty"` // Status is the current status of the workspace Status *WorkspaceStatus `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` } func (x *Workspace) Reset() { *x = Workspace{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Workspace) String() string { return protoimpl.X.MessageStringOf(x) } func (*Workspace) ProtoMessage() {} func (x *Workspace) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 Workspace.ProtoReflect.Descriptor instead. func (*Workspace) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{22} } func (x *Workspace) GetId() string { if x != nil { return x.Id } return "" } func (x *Workspace) GetMetadata() *WorkspaceMetadata { if x != nil { return x.Metadata } return nil } func (x *Workspace) GetSpec() *WorkspaceSpec { if x != nil { return x.Spec } return nil } func (x *Workspace) GetStatus() *WorkspaceStatus { if x != nil { return x.Status } return nil } // 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_id is the ID of the Gitpod user to whom we'll bill this workspace and // who we consider responsible for its content OwnerId string `protobuf:"bytes,1,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"` // organization_id is the ID of the organization that contains the workspace OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` // configuration_id is the ID of the configuration used by this workspace ConfigurationId string `protobuf:"bytes,3,opt,name=configuration_id,json=configurationId,proto3" json:"configuration_id,omitempty"` // annotations are key/value pairs that gets attached to the workspace. // +internal - not yet implemented 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"` // name is the name of the workspace as specified by the user Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` // pinned indicates whether the workspace is pinned Pinned bool `protobuf:"varint,6,opt,name=pinned,proto3" json:"pinned,omitempty"` // original_context_url is the normalized URL from which the workspace was // created OriginalContextUrl string `protobuf:"bytes,7,opt,name=original_context_url,json=originalContextUrl,proto3" json:"original_context_url,omitempty"` // warnings are user-facing warnings that should be displayed to the user when trying to start the workspace Warnings []string `protobuf:"bytes,8,rep,name=warnings,proto3" json:"warnings,omitempty"` } func (x *WorkspaceMetadata) Reset() { *x = WorkspaceMetadata{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[23] 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_gitpod_v1_workspace_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 WorkspaceMetadata.ProtoReflect.Descriptor instead. func (*WorkspaceMetadata) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{23} } func (x *WorkspaceMetadata) GetOwnerId() string { if x != nil { return x.OwnerId } return "" } func (x *WorkspaceMetadata) GetOrganizationId() string { if x != nil { return x.OrganizationId } return "" } func (x *WorkspaceMetadata) GetConfigurationId() string { if x != nil { return x.ConfigurationId } return "" } func (x *WorkspaceMetadata) GetAnnotations() map[string]string { if x != nil { return x.Annotations } return nil } func (x *WorkspaceMetadata) GetName() string { if x != nil { return x.Name } return "" } func (x *WorkspaceMetadata) GetPinned() bool { if x != nil { return x.Pinned } return false } func (x *WorkspaceMetadata) GetOriginalContextUrl() string { if x != nil { return x.OriginalContextUrl } return "" } func (x *WorkspaceMetadata) GetWarnings() []string { if x != nil { return x.Warnings } return nil } // WorkspaceSpec specifies the configuration of a workspace for a workspace // start type WorkspaceSpec struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // initializer configures how the workspace is to be initialized Initializer *WorkspaceInitializer `protobuf:"bytes,1,opt,name=initializer,proto3" json:"initializer,omitempty"` // Type denotes the kind of workspace we ought to start Type WorkspaceSpec_WorkspaceType `protobuf:"varint,2,opt,name=type,proto3,enum=gitpod.v1.WorkspaceSpec_WorkspaceType" json:"type,omitempty"` // ports is the set of ports which ought to be exposed to the internet Ports []*WorkspacePort `protobuf:"bytes,3,rep,name=ports,proto3" json:"ports,omitempty"` // envvars are user-defined environment variables which ought to be available // in the workspace (shim'ed environment) EnvironmentVariables []*EnvironmentVariable `protobuf:"bytes,4,rep,name=environment_variables,json=environmentVariables,proto3" json:"environment_variables,omitempty"` // Git configures the Git user in the workspace Git *WorkspaceSpec_GitSpec `protobuf:"bytes,5,opt,name=git,proto3" json:"git,omitempty"` // Timeout configures the workspace timeout Timeout *WorkspaceSpec_Timeout `protobuf:"bytes,6,opt,name=timeout,proto3" json:"timeout,omitempty"` // admission controls who can access the workspace and its ports. Admission AdmissionLevel `protobuf:"varint,7,opt,name=admission,proto3,enum=gitpod.v1.AdmissionLevel" json:"admission,omitempty"` // Class denotes the class of the workspace we ought to start Class string `protobuf:"bytes,8,opt,name=class,proto3" json:"class,omitempty"` // ssh_public_keys is user's uploaded ssh public keys SshPublicKeys []string `protobuf:"bytes,9,rep,name=ssh_public_keys,json=sshPublicKeys,proto3" json:"ssh_public_keys,omitempty"` // subassembly_references is a list of workspace IDs that this workspace // depends on. For example: // // index.docker.io/gitpod-io/subassmeblies/code:latest SubassemblyReferences []string `protobuf:"bytes,10,rep,name=subassembly_references,json=subassemblyReferences,proto3" json:"subassembly_references,omitempty"` // last_user_activity is the time when the user last interacted with the // workspace LastUserActivity *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=last_user_activity,json=lastUserActivity,proto3" json:"last_user_activity,omitempty"` // log_url is the URL where we stream the workspace's logs to. // Can be changed when the workspace is PENDING or STOPPED. LogUrl string `protobuf:"bytes,12,opt,name=log_url,json=logUrl,proto3" json:"log_url,omitempty"` Editor *EditorReference `protobuf:"bytes,13,opt,name=editor,proto3" json:"editor,omitempty"` } func (x *WorkspaceSpec) Reset() { *x = WorkspaceSpec{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[24] 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_gitpod_v1_workspace_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 WorkspaceSpec.ProtoReflect.Descriptor instead. func (*WorkspaceSpec) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{24} } func (x *WorkspaceSpec) GetInitializer() *WorkspaceInitializer { if x != nil { return x.Initializer } return nil } func (x *WorkspaceSpec) GetType() WorkspaceSpec_WorkspaceType { if x != nil { return x.Type } return WorkspaceSpec_WORKSPACE_TYPE_UNSPECIFIED } func (x *WorkspaceSpec) GetPorts() []*WorkspacePort { if x != nil { return x.Ports } return nil } func (x *WorkspaceSpec) GetEnvironmentVariables() []*EnvironmentVariable { if x != nil { return x.EnvironmentVariables } return nil } func (x *WorkspaceSpec) GetGit() *WorkspaceSpec_GitSpec { if x != nil { return x.Git } return nil } func (x *WorkspaceSpec) GetTimeout() *WorkspaceSpec_Timeout { if x != nil { return x.Timeout } return nil } func (x *WorkspaceSpec) GetAdmission() AdmissionLevel { if x != nil { return x.Admission } return AdmissionLevel_ADMISSION_LEVEL_UNSPECIFIED } func (x *WorkspaceSpec) GetClass() string { if x != nil { return x.Class } return "" } func (x *WorkspaceSpec) GetSshPublicKeys() []string { if x != nil { return x.SshPublicKeys } return nil } func (x *WorkspaceSpec) GetSubassemblyReferences() []string { if x != nil { return x.SubassemblyReferences } return nil } func (x *WorkspaceSpec) GetLastUserActivity() *timestamppb.Timestamp { if x != nil { return x.LastUserActivity } return nil } func (x *WorkspaceSpec) GetLogUrl() string { if x != nil { return x.LogUrl } return "" } func (x *WorkspaceSpec) GetEditor() *EditorReference { if x != nil { return x.Editor } return nil } // WorkspaceStatus describes a workspace status type WorkspaceStatus struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // version of the status update. Workspace instances themselves are // unversioned, but their status has different versions. The value of this // field has no semantic meaning (e.g. don't interpret it as as a timestamp), // 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,1,opt,name=status_version,json=statusVersion,proto3" json:"status_version,omitempty"` // the phase of a workspace is a simple, high-level summary of where the // workspace is in its lifecycle Phase *WorkspacePhase `protobuf:"bytes,2,opt,name=phase,proto3" json:"phase,omitempty"` // workspace_url contains the URL at which the workspace can be accessed. // This field is only set if the workspace is running. WorkspaceUrl string `protobuf:"bytes,3,opt,name=workspace_url,json=workspaceUrl,proto3" json:"workspace_url,omitempty"` // conditions detail the current state of the workspace Conditions *WorkspaceStatus_WorkspaceConditions `protobuf:"bytes,4,opt,name=conditions,proto3" json:"conditions,omitempty"` // prebuild_result contains the result of a prebuild. Only if the workspace is PrebuildResult *WorkspaceStatus_PrebuildResult `protobuf:"bytes,5,opt,name=prebuild_result,json=prebuildResult,proto3" json:"prebuild_result,omitempty"` // git_status 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. GitStatus *WorkspaceGitStatus `protobuf:"bytes,6,opt,name=git_status,json=gitStatus,proto3" json:"git_status,omitempty"` // instance_id is the ID of the workspace instance - do not use, interpret or // rely on this field unless you know what you're doing. // // Deprecated: Do not use. InstanceId string `protobuf:"bytes,7,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` } func (x *WorkspaceStatus) Reset() { *x = WorkspaceStatus{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[25] 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_gitpod_v1_workspace_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 WorkspaceStatus.ProtoReflect.Descriptor instead. func (*WorkspaceStatus) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{25} } func (x *WorkspaceStatus) GetStatusVersion() uint64 { if x != nil { return x.StatusVersion } return 0 } func (x *WorkspaceStatus) GetPhase() *WorkspacePhase { if x != nil { return x.Phase } return nil } func (x *WorkspaceStatus) GetWorkspaceUrl() string { if x != nil { return x.WorkspaceUrl } return "" } func (x *WorkspaceStatus) GetConditions() *WorkspaceStatus_WorkspaceConditions { if x != nil { return x.Conditions } return nil } func (x *WorkspaceStatus) GetPrebuildResult() *WorkspaceStatus_PrebuildResult { if x != nil { return x.PrebuildResult } return nil } func (x *WorkspaceStatus) GetGitStatus() *WorkspaceGitStatus { if x != nil { return x.GitStatus } return nil } // Deprecated: Do not use. func (x *WorkspaceStatus) GetInstanceId() string { if x != nil { return x.InstanceId } return "" } type WorkspacePort struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // port number Port uint64 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"` // policy of this port Admission AdmissionLevel `protobuf:"varint,2,opt,name=admission,proto3,enum=gitpod.v1.AdmissionLevel" json:"admission,omitempty"` // url that can be used to access the port Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` // backend protocol of this port Protocol WorkspacePort_Protocol `protobuf:"varint,4,opt,name=protocol,proto3,enum=gitpod.v1.WorkspacePort_Protocol" json:"protocol,omitempty"` } func (x *WorkspacePort) Reset() { *x = WorkspacePort{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspacePort) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspacePort) ProtoMessage() {} func (x *WorkspacePort) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 WorkspacePort.ProtoReflect.Descriptor instead. func (*WorkspacePort) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{26} } func (x *WorkspacePort) GetPort() uint64 { if x != nil { return x.Port } return 0 } func (x *WorkspacePort) GetAdmission() AdmissionLevel { if x != nil { return x.Admission } return AdmissionLevel_ADMISSION_LEVEL_UNSPECIFIED } func (x *WorkspacePort) GetUrl() string { if x != nil { return x.Url } return "" } func (x *WorkspacePort) GetProtocol() WorkspacePort_Protocol { if x != nil { return x.Protocol } return WorkspacePort_PROTOCOL_UNSPECIFIED } type WorkspaceGitStatus struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // clone_url is the repository url as you would pass it to "git clone". // Only HTTPS clone URLs are supported. CloneUrl string `protobuf:"bytes,1,opt,name=clone_url,json=cloneUrl,proto3" json:"clone_url,omitempty"` // branch is branch we're currently on Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"` // latest_commit is the most recent commit on the current branch LatestCommit string `protobuf:"bytes,3,opt,name=latest_commit,json=latestCommit,proto3" json:"latest_commit,omitempty"` // uncommited_files is an array of uncommitted files, possibly truncated UncommitedFiles []string `protobuf:"bytes,4,rep,name=uncommited_files,json=uncommitedFiles,proto3" json:"uncommited_files,omitempty"` // the total number of uncommited files TotalUncommitedFiles int32 `protobuf:"varint,5,opt,name=total_uncommited_files,json=totalUncommitedFiles,proto3" json:"total_uncommited_files,omitempty"` // untracked_files is an array of untracked files in the workspace, possibly // truncated UntrackedFiles []string `protobuf:"bytes,6,rep,name=untracked_files,json=untrackedFiles,proto3" json:"untracked_files,omitempty"` // the total number of untracked files TotalUntrackedFiles int32 `protobuf:"varint,7,opt,name=total_untracked_files,json=totalUntrackedFiles,proto3" json:"total_untracked_files,omitempty"` // unpushed_commits is an array of unpushed changes in the workspace, possibly // truncated UnpushedCommits []string `protobuf:"bytes,8,rep,name=unpushed_commits,json=unpushedCommits,proto3" json:"unpushed_commits,omitempty"` // the total number of unpushed changes TotalUnpushedCommits int32 `protobuf:"varint,9,opt,name=total_unpushed_commits,json=totalUnpushedCommits,proto3" json:"total_unpushed_commits,omitempty"` } func (x *WorkspaceGitStatus) Reset() { *x = WorkspaceGitStatus{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceGitStatus) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceGitStatus) ProtoMessage() {} func (x *WorkspaceGitStatus) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 WorkspaceGitStatus.ProtoReflect.Descriptor instead. func (*WorkspaceGitStatus) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{27} } func (x *WorkspaceGitStatus) GetCloneUrl() string { if x != nil { return x.CloneUrl } return "" } func (x *WorkspaceGitStatus) GetBranch() string { if x != nil { return x.Branch } return "" } func (x *WorkspaceGitStatus) GetLatestCommit() string { if x != nil { return x.LatestCommit } return "" } func (x *WorkspaceGitStatus) GetUncommitedFiles() []string { if x != nil { return x.UncommitedFiles } return nil } func (x *WorkspaceGitStatus) GetTotalUncommitedFiles() int32 { if x != nil { return x.TotalUncommitedFiles } return 0 } func (x *WorkspaceGitStatus) GetUntrackedFiles() []string { if x != nil { return x.UntrackedFiles } return nil } func (x *WorkspaceGitStatus) GetTotalUntrackedFiles() int32 { if x != nil { return x.TotalUntrackedFiles } return 0 } func (x *WorkspaceGitStatus) GetUnpushedCommits() []string { if x != nil { return x.UnpushedCommits } return nil } func (x *WorkspaceGitStatus) GetTotalUnpushedCommits() int32 { if x != nil { return x.TotalUnpushedCommits } return 0 } type WorkspacePhase struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name WorkspacePhase_Phase `protobuf:"varint,1,opt,name=name,proto3,enum=gitpod.v1.WorkspacePhase_Phase" json:"name,omitempty"` LastTransitionTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` } func (x *WorkspacePhase) Reset() { *x = WorkspacePhase{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspacePhase) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspacePhase) ProtoMessage() {} func (x *WorkspacePhase) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 WorkspacePhase.ProtoReflect.Descriptor instead. func (*WorkspacePhase) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{28} } func (x *WorkspacePhase) GetName() WorkspacePhase_Phase { if x != nil { return x.Name } return WorkspacePhase_PHASE_UNSPECIFIED } func (x *WorkspacePhase) GetLastTransitionTime() *timestamppb.Timestamp { if x != nil { return x.LastTransitionTime } return nil } // WorkspaceInitializer specifies how a workspace is to be initialized type WorkspaceInitializer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Specs []*WorkspaceInitializer_Spec `protobuf:"bytes,1,rep,name=specs,proto3" json:"specs,omitempty"` } func (x *WorkspaceInitializer) Reset() { *x = WorkspaceInitializer{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceInitializer) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceInitializer) ProtoMessage() {} func (x *WorkspaceInitializer) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 WorkspaceInitializer.ProtoReflect.Descriptor instead. func (*WorkspaceInitializer) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{29} } func (x *WorkspaceInitializer) GetSpecs() []*WorkspaceInitializer_Spec { if x != nil { return x.Specs } return nil } type GitInitializer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // remote_uri is the Git remote origin RemoteUri string `protobuf:"bytes,1,opt,name=remote_uri,json=remoteUri,proto3" json:"remote_uri,omitempty"` // upstream_Remote_uri is the fork upstream of a repository UpstreamRemoteUri string `protobuf:"bytes,2,opt,name=upstream_remote_uri,json=upstreamRemoteUri,proto3" json:"upstream_remote_uri,omitempty"` // the target mode determines what gets checked out TargetMode GitInitializer_CloneTargetMode `protobuf:"varint,3,opt,name=target_mode,json=targetMode,proto3,enum=gitpod.v1.GitInitializer_CloneTargetMode" json:"target_mode,omitempty"` // the value for the clone target mode - use depends on the target mode CloneTarget string `protobuf:"bytes,4,opt,name=clone_target,json=cloneTarget,proto3" json:"clone_target,omitempty"` // a path relative to the workspace root in which the code will be checked out // to CheckoutLocation string `protobuf:"bytes,5,opt,name=checkout_location,json=checkoutLocation,proto3" json:"checkout_location,omitempty"` // config specifies the Git configuration for this workspace Config *GitInitializer_GitConfig `protobuf:"bytes,6,opt,name=config,proto3" json:"config,omitempty"` } func (x *GitInitializer) Reset() { *x = GitInitializer{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GitInitializer) String() string { return protoimpl.X.MessageStringOf(x) } func (*GitInitializer) ProtoMessage() {} func (x *GitInitializer) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 GitInitializer.ProtoReflect.Descriptor instead. func (*GitInitializer) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{30} } func (x *GitInitializer) GetRemoteUri() string { if x != nil { return x.RemoteUri } return "" } func (x *GitInitializer) GetUpstreamRemoteUri() string { if x != nil { return x.UpstreamRemoteUri } return "" } func (x *GitInitializer) GetTargetMode() GitInitializer_CloneTargetMode { if x != nil { return x.TargetMode } return GitInitializer_CLONE_TARGET_MODE_UNSPECIFIED } func (x *GitInitializer) GetCloneTarget() string { if x != nil { return x.CloneTarget } return "" } func (x *GitInitializer) GetCheckoutLocation() string { if x != nil { return x.CheckoutLocation } return "" } func (x *GitInitializer) GetConfig() *GitInitializer_GitConfig { if x != nil { return x.Config } return nil } type SnapshotInitializer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // reference of the snapshot to restore SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` } func (x *SnapshotInitializer) Reset() { *x = SnapshotInitializer{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SnapshotInitializer) String() string { return protoimpl.X.MessageStringOf(x) } func (*SnapshotInitializer) ProtoMessage() {} func (x *SnapshotInitializer) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 SnapshotInitializer.ProtoReflect.Descriptor instead. func (*SnapshotInitializer) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{31} } func (x *SnapshotInitializer) GetSnapshotId() string { if x != nil { return x.SnapshotId } return "" } type PrebuildInitializer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // reference of the prebuild to restore PrebuildId string `protobuf:"bytes,1,opt,name=prebuild_id,json=prebuildId,proto3" json:"prebuild_id,omitempty"` } func (x *PrebuildInitializer) Reset() { *x = PrebuildInitializer{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PrebuildInitializer) String() string { return protoimpl.X.MessageStringOf(x) } func (*PrebuildInitializer) ProtoMessage() {} func (x *PrebuildInitializer) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 PrebuildInitializer.ProtoReflect.Descriptor instead. func (*PrebuildInitializer) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{32} } func (x *PrebuildInitializer) GetPrebuildId() string { if x != nil { return x.PrebuildId } return "" } // FileDownloadInitializer downloads files and uses them as workspace content. type FileDownloadInitializer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Files []*FileDownloadInitializer_FileInfo `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"` TargetLocation string `protobuf:"bytes,2,opt,name=target_location,json=targetLocation,proto3" json:"target_location,omitempty"` } func (x *FileDownloadInitializer) Reset() { *x = FileDownloadInitializer{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FileDownloadInitializer) String() string { return protoimpl.X.MessageStringOf(x) } func (*FileDownloadInitializer) ProtoMessage() {} func (x *FileDownloadInitializer) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 FileDownloadInitializer.ProtoReflect.Descriptor instead. func (*FileDownloadInitializer) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{33} } func (x *FileDownloadInitializer) GetFiles() []*FileDownloadInitializer_FileInfo { if x != nil { return x.Files } return nil } func (x *FileDownloadInitializer) GetTargetLocation() string { if x != nil { return x.TargetLocation } return "" } // GitStatus describes the current Git working copy status, akin to a // combination of "git status" and "git branch" type GitStatus struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // branch is branch we're currently on Branch string `protobuf:"bytes,1,opt,name=branch,proto3" json:"branch,omitempty"` // latest_commit is the most recent commit on the current branch LatestCommit string `protobuf:"bytes,2,opt,name=latest_commit,json=latestCommit,proto3" json:"latest_commit,omitempty"` // uncommited_files is the number of uncommitted files, possibly truncated UncommitedFiles []string `protobuf:"bytes,3,rep,name=uncommited_files,json=uncommitedFiles,proto3" json:"uncommited_files,omitempty"` // the total number of uncommited files TotalUncommitedFiles int64 `protobuf:"varint,6,opt,name=total_uncommited_files,json=totalUncommitedFiles,proto3" json:"total_uncommited_files,omitempty"` // untracked_files is the number of untracked files in the workspace, possibly // truncated UntrackedFiles []string `protobuf:"bytes,4,rep,name=untracked_files,json=untrackedFiles,proto3" json:"untracked_files,omitempty"` // the total number of untracked files TotalUntrackedFiles int64 `protobuf:"varint,7,opt,name=total_untracked_files,json=totalUntrackedFiles,proto3" json:"total_untracked_files,omitempty"` // unpushed_commits is the number of unpushed changes in the workspace, // possibly truncated UnpushedCommits []string `protobuf:"bytes,5,rep,name=unpushed_commits,json=unpushedCommits,proto3" json:"unpushed_commits,omitempty"` // the total number of unpushed changes TotalUnpushedCommits int64 `protobuf:"varint,8,opt,name=total_unpushed_commits,json=totalUnpushedCommits,proto3" json:"total_unpushed_commits,omitempty"` } func (x *GitStatus) Reset() { *x = GitStatus{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GitStatus) String() string { return protoimpl.X.MessageStringOf(x) } func (*GitStatus) ProtoMessage() {} func (x *GitStatus) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 GitStatus.ProtoReflect.Descriptor instead. func (*GitStatus) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{34} } func (x *GitStatus) GetBranch() string { if x != nil { return x.Branch } return "" } func (x *GitStatus) GetLatestCommit() string { if x != nil { return x.LatestCommit } return "" } func (x *GitStatus) GetUncommitedFiles() []string { if x != nil { return x.UncommitedFiles } return nil } func (x *GitStatus) GetTotalUncommitedFiles() int64 { if x != nil { return x.TotalUncommitedFiles } return 0 } func (x *GitStatus) GetUntrackedFiles() []string { if x != nil { return x.UntrackedFiles } return nil } func (x *GitStatus) GetTotalUntrackedFiles() int64 { if x != nil { return x.TotalUntrackedFiles } return 0 } func (x *GitStatus) GetUnpushedCommits() []string { if x != nil { return x.UnpushedCommits } return nil } func (x *GitStatus) GetTotalUnpushedCommits() int64 { if x != nil { return x.TotalUnpushedCommits } return 0 } type UpdateWorkspaceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // workspace_id specifies the workspace to update // // +required WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` // metadata is data associated with this workspace that's required for other // parts of Gitpod to function Metadata *UpdateWorkspaceRequest_UpdateWorkspaceMetadata `protobuf:"bytes,2,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"` // spec is the configuration of the workspace that's required for the // ws-manager to start the workspace Spec *UpdateWorkspaceRequest_UpdateWorkspaceSpec `protobuf:"bytes,3,opt,name=spec,proto3,oneof" json:"spec,omitempty"` // git_status updates the git status of the workspace - this is only here // during the migration // // Deprecated: Do not use. GitStatus *WorkspaceGitStatus `protobuf:"bytes,4,opt,name=git_status,json=gitStatus,proto3,oneof" json:"git_status,omitempty"` } func (x *UpdateWorkspaceRequest) Reset() { *x = UpdateWorkspaceRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateWorkspaceRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateWorkspaceRequest) ProtoMessage() {} func (x *UpdateWorkspaceRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 UpdateWorkspaceRequest.ProtoReflect.Descriptor instead. func (*UpdateWorkspaceRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{35} } func (x *UpdateWorkspaceRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *UpdateWorkspaceRequest) GetMetadata() *UpdateWorkspaceRequest_UpdateWorkspaceMetadata { if x != nil { return x.Metadata } return nil } func (x *UpdateWorkspaceRequest) GetSpec() *UpdateWorkspaceRequest_UpdateWorkspaceSpec { if x != nil { return x.Spec } return nil } // Deprecated: Do not use. func (x *UpdateWorkspaceRequest) GetGitStatus() *WorkspaceGitStatus { if x != nil { return x.GitStatus } return nil } type UpdateWorkspaceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Workspace *Workspace `protobuf:"bytes,1,opt,name=workspace,proto3" json:"workspace,omitempty"` } func (x *UpdateWorkspaceResponse) Reset() { *x = UpdateWorkspaceResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateWorkspaceResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateWorkspaceResponse) ProtoMessage() {} func (x *UpdateWorkspaceResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 UpdateWorkspaceResponse.ProtoReflect.Descriptor instead. func (*UpdateWorkspaceResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{36} } func (x *UpdateWorkspaceResponse) GetWorkspace() *Workspace { if x != nil { return x.Workspace } return nil } type StopWorkspaceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // workspace_id specifies which workspace should be stopped. // // +required WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` } func (x *StopWorkspaceRequest) Reset() { *x = StopWorkspaceRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[37] 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_gitpod_v1_workspace_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 StopWorkspaceRequest.ProtoReflect.Descriptor instead. func (*StopWorkspaceRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{37} } func (x *StopWorkspaceRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } type StopWorkspaceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *StopWorkspaceResponse) Reset() { *x = StopWorkspaceResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[38] 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_gitpod_v1_workspace_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 StopWorkspaceResponse.ProtoReflect.Descriptor instead. func (*StopWorkspaceResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{38} } type DeleteWorkspaceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // workspace_id specifies the workspace that is going to delete. // // +required WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` } func (x *DeleteWorkspaceRequest) Reset() { *x = DeleteWorkspaceRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteWorkspaceRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteWorkspaceRequest) ProtoMessage() {} func (x *DeleteWorkspaceRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 DeleteWorkspaceRequest.ProtoReflect.Descriptor instead. func (*DeleteWorkspaceRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{39} } func (x *DeleteWorkspaceRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } type DeleteWorkspaceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteWorkspaceResponse) Reset() { *x = DeleteWorkspaceResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteWorkspaceResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteWorkspaceResponse) ProtoMessage() {} func (x *DeleteWorkspaceResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 DeleteWorkspaceResponse.ProtoReflect.Descriptor instead. func (*DeleteWorkspaceResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{40} } type ListWorkspaceClassesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pagination *PaginationRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` } func (x *ListWorkspaceClassesRequest) Reset() { *x = ListWorkspaceClassesRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListWorkspaceClassesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListWorkspaceClassesRequest) ProtoMessage() {} func (x *ListWorkspaceClassesRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 ListWorkspaceClassesRequest.ProtoReflect.Descriptor instead. func (*ListWorkspaceClassesRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{41} } func (x *ListWorkspaceClassesRequest) GetPagination() *PaginationRequest { if x != nil { return x.Pagination } return nil } type ListWorkspaceClassesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pagination *PaginationResponse `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` WorkspaceClasses []*WorkspaceClass `protobuf:"bytes,2,rep,name=workspace_classes,json=workspaceClasses,proto3" json:"workspace_classes,omitempty"` } func (x *ListWorkspaceClassesResponse) Reset() { *x = ListWorkspaceClassesResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListWorkspaceClassesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListWorkspaceClassesResponse) ProtoMessage() {} func (x *ListWorkspaceClassesResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 ListWorkspaceClassesResponse.ProtoReflect.Descriptor instead. func (*ListWorkspaceClassesResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{42} } func (x *ListWorkspaceClassesResponse) GetPagination() *PaginationResponse { if x != nil { return x.Pagination } return nil } func (x *ListWorkspaceClassesResponse) GetWorkspaceClasses() []*WorkspaceClass { if x != nil { return x.WorkspaceClasses } return nil } type ParseContextURLRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // context_url is the URL to parse ContextUrl string `protobuf:"bytes,1,opt,name=context_url,json=contextUrl,proto3" json:"context_url,omitempty"` // configuration_id is the ID of the configuration to use ConfigurationId string `protobuf:"bytes,2,opt,name=configuration_id,json=configurationId,proto3" json:"configuration_id,omitempty"` } func (x *ParseContextURLRequest) Reset() { *x = ParseContextURLRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ParseContextURLRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ParseContextURLRequest) ProtoMessage() {} func (x *ParseContextURLRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 ParseContextURLRequest.ProtoReflect.Descriptor instead. func (*ParseContextURLRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{43} } func (x *ParseContextURLRequest) GetContextUrl() string { if x != nil { return x.ContextUrl } return "" } func (x *ParseContextURLRequest) GetConfigurationId() string { if x != nil { return x.ConfigurationId } return "" } type ParseContextURLResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Metadata *WorkspaceMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` Spec *WorkspaceSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` } func (x *ParseContextURLResponse) Reset() { *x = ParseContextURLResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ParseContextURLResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ParseContextURLResponse) ProtoMessage() {} func (x *ParseContextURLResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[44] 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 ParseContextURLResponse.ProtoReflect.Descriptor instead. func (*ParseContextURLResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{44} } func (x *ParseContextURLResponse) GetMetadata() *WorkspaceMetadata { if x != nil { return x.Metadata } return nil } func (x *ParseContextURLResponse) GetSpec() *WorkspaceSpec { if x != nil { return x.Spec } return nil } type WorkspaceClass struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // id is the unique identifier of the workspace class Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // display_name is the human readable name of the workspace class DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // description is a human readable description of the workspace class Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // is_default indicates if this workspace class is the default one IsDefault bool `protobuf:"varint,4,opt,name=is_default,json=isDefault,proto3" json:"is_default,omitempty"` } func (x *WorkspaceClass) Reset() { *x = WorkspaceClass{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[45] 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_gitpod_v1_workspace_proto_msgTypes[45] 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_gitpod_v1_workspace_proto_rawDescGZIP(), []int{45} } func (x *WorkspaceClass) GetId() string { if x != nil { return x.Id } return "" } func (x *WorkspaceClass) GetDisplayName() string { if x != nil { return x.DisplayName } return "" } func (x *WorkspaceClass) GetDescription() string { if x != nil { return x.Description } return "" } func (x *WorkspaceClass) GetIsDefault() bool { if x != nil { return x.IsDefault } return false } type CreateWorkspaceSnapshotRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // workspace_id specifies the workspace to create snapshot // // +required WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` } func (x *CreateWorkspaceSnapshotRequest) Reset() { *x = CreateWorkspaceSnapshotRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateWorkspaceSnapshotRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateWorkspaceSnapshotRequest) ProtoMessage() {} func (x *CreateWorkspaceSnapshotRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[46] 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 CreateWorkspaceSnapshotRequest.ProtoReflect.Descriptor instead. func (*CreateWorkspaceSnapshotRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{46} } func (x *CreateWorkspaceSnapshotRequest) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } type CreateWorkspaceSnapshotResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Snapshot *WorkspaceSnapshot `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` } func (x *CreateWorkspaceSnapshotResponse) Reset() { *x = CreateWorkspaceSnapshotResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateWorkspaceSnapshotResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateWorkspaceSnapshotResponse) ProtoMessage() {} func (x *CreateWorkspaceSnapshotResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_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 CreateWorkspaceSnapshotResponse.ProtoReflect.Descriptor instead. func (*CreateWorkspaceSnapshotResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{47} } func (x *CreateWorkspaceSnapshotResponse) GetSnapshot() *WorkspaceSnapshot { if x != nil { return x.Snapshot } return nil } type WaitForWorkspaceSnapshotRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // snapshot_id specifies the snapshot to wait for // // +required SnapshotId string `protobuf:"bytes,1,opt,name=snapshot_id,json=snapshotId,proto3" json:"snapshot_id,omitempty"` } func (x *WaitForWorkspaceSnapshotRequest) Reset() { *x = WaitForWorkspaceSnapshotRequest{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WaitForWorkspaceSnapshotRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*WaitForWorkspaceSnapshotRequest) ProtoMessage() {} func (x *WaitForWorkspaceSnapshotRequest) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[48] 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 WaitForWorkspaceSnapshotRequest.ProtoReflect.Descriptor instead. func (*WaitForWorkspaceSnapshotRequest) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{48} } func (x *WaitForWorkspaceSnapshotRequest) GetSnapshotId() string { if x != nil { return x.SnapshotId } return "" } type WaitForWorkspaceSnapshotResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *WaitForWorkspaceSnapshotResponse) Reset() { *x = WaitForWorkspaceSnapshotResponse{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WaitForWorkspaceSnapshotResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*WaitForWorkspaceSnapshotResponse) ProtoMessage() {} func (x *WaitForWorkspaceSnapshotResponse) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[49] 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 WaitForWorkspaceSnapshotResponse.ProtoReflect.Descriptor instead. func (*WaitForWorkspaceSnapshotResponse) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{49} } type WorkspaceSnapshot struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // id is the unique identifier of the snapshot Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // workspace_id is the source workspace id of snapshot WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` CreationTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"` } func (x *WorkspaceSnapshot) Reset() { *x = WorkspaceSnapshot{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceSnapshot) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceSnapshot) ProtoMessage() {} func (x *WorkspaceSnapshot) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WorkspaceSnapshot.ProtoReflect.Descriptor instead. func (*WorkspaceSnapshot) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{50} } func (x *WorkspaceSnapshot) GetId() string { if x != nil { return x.Id } return "" } func (x *WorkspaceSnapshot) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *WorkspaceSnapshot) GetCreationTime() *timestamppb.Timestamp { if x != nil { return x.CreationTime } return nil } type WorkspaceSession struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Workspace *Workspace `protobuf:"bytes,2,opt,name=workspace,proto3" json:"workspace,omitempty"` CreationTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"` DeployedTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=deployed_time,json=deployedTime,proto3" json:"deployed_time,omitempty"` StartedTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=started_time,json=startedTime,proto3" json:"started_time,omitempty"` StoppingTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=stopping_time,json=stoppingTime,proto3" json:"stopping_time,omitempty"` StoppedTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=stopped_time,json=stoppedTime,proto3" json:"stopped_time,omitempty"` Metrics *WorkspaceSession_Metrics `protobuf:"bytes,8,opt,name=metrics,proto3" json:"metrics,omitempty"` Owner *WorkspaceSession_Owner `protobuf:"bytes,9,opt,name=owner,proto3" json:"owner,omitempty"` Context *WorkspaceSession_WorkspaceContext `protobuf:"bytes,10,opt,name=context,proto3" json:"context,omitempty"` } func (x *WorkspaceSession) Reset() { *x = WorkspaceSession{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceSession) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceSession) ProtoMessage() {} func (x *WorkspaceSession) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WorkspaceSession.ProtoReflect.Descriptor instead. func (*WorkspaceSession) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{51} } func (x *WorkspaceSession) GetId() string { if x != nil { return x.Id } return "" } func (x *WorkspaceSession) GetWorkspace() *Workspace { if x != nil { return x.Workspace } return nil } func (x *WorkspaceSession) GetCreationTime() *timestamppb.Timestamp { if x != nil { return x.CreationTime } return nil } func (x *WorkspaceSession) GetDeployedTime() *timestamppb.Timestamp { if x != nil { return x.DeployedTime } return nil } func (x *WorkspaceSession) GetStartedTime() *timestamppb.Timestamp { if x != nil { return x.StartedTime } return nil } func (x *WorkspaceSession) GetStoppingTime() *timestamppb.Timestamp { if x != nil { return x.StoppingTime } return nil } func (x *WorkspaceSession) GetStoppedTime() *timestamppb.Timestamp { if x != nil { return x.StoppedTime } return nil } func (x *WorkspaceSession) GetMetrics() *WorkspaceSession_Metrics { if x != nil { return x.Metrics } return nil } func (x *WorkspaceSession) GetOwner() *WorkspaceSession_Owner { if x != nil { return x.Owner } return nil } func (x *WorkspaceSession) GetContext() *WorkspaceSession_WorkspaceContext { if x != nil { return x.Context } return nil } type CreateAndStartWorkspaceRequest_ContextURL struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // url is the URL from which the workspace is created Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` // workspace_class is the class of the workspace we ought to start WorkspaceClass string `protobuf:"bytes,2,opt,name=workspace_class,json=workspaceClass,proto3" json:"workspace_class,omitempty"` // editor specifies the editor that will be used with this workspace. Editor *EditorReference `protobuf:"bytes,3,opt,name=editor,proto3" json:"editor,omitempty"` } func (x *CreateAndStartWorkspaceRequest_ContextURL) Reset() { *x = CreateAndStartWorkspaceRequest_ContextURL{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateAndStartWorkspaceRequest_ContextURL) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateAndStartWorkspaceRequest_ContextURL) ProtoMessage() {} func (x *CreateAndStartWorkspaceRequest_ContextURL) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[52] 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 CreateAndStartWorkspaceRequest_ContextURL.ProtoReflect.Descriptor instead. func (*CreateAndStartWorkspaceRequest_ContextURL) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{10, 0} } func (x *CreateAndStartWorkspaceRequest_ContextURL) GetUrl() string { if x != nil { return x.Url } return "" } func (x *CreateAndStartWorkspaceRequest_ContextURL) GetWorkspaceClass() string { if x != nil { return x.WorkspaceClass } return "" } func (x *CreateAndStartWorkspaceRequest_ContextURL) GetEditor() *EditorReference { if x != nil { return x.Editor } return nil } // Timeout configures the workspace timeout type WorkspaceSpec_Timeout struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // inactivity is the maximum time of inactivity before the workspace is // stopped or paused Inactivity *durationpb.Duration `protobuf:"bytes,1,opt,name=inactivity,proto3" json:"inactivity,omitempty"` // disconnected is the maximum time of disconnection before the workspace is // stopped or paused set to zero to disable. Disconnected *durationpb.Duration `protobuf:"bytes,2,opt,name=disconnected,proto3" json:"disconnected,omitempty"` // maximum lifetime of the workspace MaximumLifetime *durationpb.Duration `protobuf:"bytes,3,opt,name=maximum_lifetime,json=maximumLifetime,proto3" json:"maximum_lifetime,omitempty"` } func (x *WorkspaceSpec_Timeout) Reset() { *x = WorkspaceSpec_Timeout{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceSpec_Timeout) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceSpec_Timeout) ProtoMessage() {} func (x *WorkspaceSpec_Timeout) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[54] 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_Timeout.ProtoReflect.Descriptor instead. func (*WorkspaceSpec_Timeout) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{24, 0} } func (x *WorkspaceSpec_Timeout) GetInactivity() *durationpb.Duration { if x != nil { return x.Inactivity } return nil } func (x *WorkspaceSpec_Timeout) GetDisconnected() *durationpb.Duration { if x != nil { return x.Disconnected } return nil } func (x *WorkspaceSpec_Timeout) GetMaximumLifetime() *durationpb.Duration { if x != nil { return x.MaximumLifetime } return nil } // GitSpec configures the Git available within the workspace type WorkspaceSpec_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 *WorkspaceSpec_GitSpec) Reset() { *x = WorkspaceSpec_GitSpec{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceSpec_GitSpec) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceSpec_GitSpec) ProtoMessage() {} func (x *WorkspaceSpec_GitSpec) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[55] 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_GitSpec.ProtoReflect.Descriptor instead. func (*WorkspaceSpec_GitSpec) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{24, 1} } func (x *WorkspaceSpec_GitSpec) GetUsername() string { if x != nil { return x.Username } return "" } func (x *WorkspaceSpec_GitSpec) GetEmail() string { if x != nil { return x.Email } 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 WorkspaceStatus_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"` // failed_reason contains the reason the workspace failed to operate. // This field is only set if the workspace has failed. FailedReason WorkspaceStatus_WorkspaceConditions_FailedReason `protobuf:"varint,2,opt,name=failed_reason,json=failedReason,proto3,enum=gitpod.v1.WorkspaceStatus_WorkspaceConditions_FailedReason" json:"failed_reason,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,3,opt,name=timeout,proto3" json:"timeout,omitempty"` } func (x *WorkspaceStatus_WorkspaceConditions) Reset() { *x = WorkspaceStatus_WorkspaceConditions{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceStatus_WorkspaceConditions) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceStatus_WorkspaceConditions) ProtoMessage() {} func (x *WorkspaceStatus_WorkspaceConditions) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[56] 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_WorkspaceConditions.ProtoReflect.Descriptor instead. func (*WorkspaceStatus_WorkspaceConditions) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{25, 0} } func (x *WorkspaceStatus_WorkspaceConditions) GetFailed() string { if x != nil { return x.Failed } return "" } func (x *WorkspaceStatus_WorkspaceConditions) GetFailedReason() WorkspaceStatus_WorkspaceConditions_FailedReason { if x != nil { return x.FailedReason } return WorkspaceStatus_WorkspaceConditions_FAILED_REASON_UNSPECIFIED } func (x *WorkspaceStatus_WorkspaceConditions) GetTimeout() string { if x != nil { return x.Timeout } return "" } type WorkspaceStatus_PrebuildResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Snapshot points to the content of the prebuild. This string is opaque to // the cluster manager, and must be returned unaltered. Snapshot string `protobuf:"bytes,1,opt,name=snapshot,proto3" json:"snapshot,omitempty"` // The prebuild's error message ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` } func (x *WorkspaceStatus_PrebuildResult) Reset() { *x = WorkspaceStatus_PrebuildResult{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceStatus_PrebuildResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceStatus_PrebuildResult) ProtoMessage() {} func (x *WorkspaceStatus_PrebuildResult) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[57] 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_PrebuildResult.ProtoReflect.Descriptor instead. func (*WorkspaceStatus_PrebuildResult) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{25, 1} } func (x *WorkspaceStatus_PrebuildResult) GetSnapshot() string { if x != nil { return x.Snapshot } return "" } func (x *WorkspaceStatus_PrebuildResult) GetErrorMessage() string { if x != nil { return x.ErrorMessage } return "" } type WorkspaceInitializer_Spec struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Spec: // // *WorkspaceInitializer_Spec_Git // *WorkspaceInitializer_Spec_Snapshot // *WorkspaceInitializer_Spec_Prebuild // *WorkspaceInitializer_Spec_Download Spec isWorkspaceInitializer_Spec_Spec `protobuf_oneof:"spec"` } func (x *WorkspaceInitializer_Spec) Reset() { *x = WorkspaceInitializer_Spec{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceInitializer_Spec) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceInitializer_Spec) ProtoMessage() {} func (x *WorkspaceInitializer_Spec) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[58] 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 WorkspaceInitializer_Spec.ProtoReflect.Descriptor instead. func (*WorkspaceInitializer_Spec) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{29, 0} } func (m *WorkspaceInitializer_Spec) GetSpec() isWorkspaceInitializer_Spec_Spec { if m != nil { return m.Spec } return nil } func (x *WorkspaceInitializer_Spec) GetGit() *GitInitializer { if x, ok := x.GetSpec().(*WorkspaceInitializer_Spec_Git); ok { return x.Git } return nil } func (x *WorkspaceInitializer_Spec) GetSnapshot() *SnapshotInitializer { if x, ok := x.GetSpec().(*WorkspaceInitializer_Spec_Snapshot); ok { return x.Snapshot } return nil } func (x *WorkspaceInitializer_Spec) GetPrebuild() *PrebuildInitializer { if x, ok := x.GetSpec().(*WorkspaceInitializer_Spec_Prebuild); ok { return x.Prebuild } return nil } func (x *WorkspaceInitializer_Spec) GetDownload() *FileDownloadInitializer { if x, ok := x.GetSpec().(*WorkspaceInitializer_Spec_Download); ok { return x.Download } return nil } type isWorkspaceInitializer_Spec_Spec interface { isWorkspaceInitializer_Spec_Spec() } type WorkspaceInitializer_Spec_Git struct { Git *GitInitializer `protobuf:"bytes,1,opt,name=git,proto3,oneof"` } type WorkspaceInitializer_Spec_Snapshot struct { Snapshot *SnapshotInitializer `protobuf:"bytes,2,opt,name=snapshot,proto3,oneof"` } type WorkspaceInitializer_Spec_Prebuild struct { Prebuild *PrebuildInitializer `protobuf:"bytes,3,opt,name=prebuild,proto3,oneof"` } type WorkspaceInitializer_Spec_Download struct { Download *FileDownloadInitializer `protobuf:"bytes,4,opt,name=download,proto3,oneof"` } func (*WorkspaceInitializer_Spec_Git) isWorkspaceInitializer_Spec_Spec() {} func (*WorkspaceInitializer_Spec_Snapshot) isWorkspaceInitializer_Spec_Spec() {} func (*WorkspaceInitializer_Spec_Prebuild) isWorkspaceInitializer_Spec_Spec() {} func (*WorkspaceInitializer_Spec_Download) isWorkspaceInitializer_Spec_Spec() {} type GitInitializer_GitConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // custom config values to be set on clone provided through `.gitpod.yml` CustomConfig map[string]string `protobuf:"bytes,1,rep,name=custom_config,json=customConfig,proto3" json:"custom_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // authentication method Authentication GitInitializer_AuthMethod `protobuf:"varint,2,opt,name=authentication,proto3,enum=gitpod.v1.GitInitializer_AuthMethod" json:"authentication,omitempty"` // auth_user is the username used to authenticate the clone AuthUser string `protobuf:"bytes,3,opt,name=auth_user,json=authUser,proto3" json:"auth_user,omitempty"` // auth_password is the password used to authenticate the clone (can also be // an API token) AuthPassword string `protobuf:"bytes,4,opt,name=auth_password,json=authPassword,proto3" json:"auth_password,omitempty"` // auth_ots is a URL where one can download the authentication secret // (:) using a GET request. AuthOts string `protobuf:"bytes,5,opt,name=auth_ots,json=authOts,proto3" json:"auth_ots,omitempty"` } func (x *GitInitializer_GitConfig) Reset() { *x = GitInitializer_GitConfig{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GitInitializer_GitConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*GitInitializer_GitConfig) ProtoMessage() {} func (x *GitInitializer_GitConfig) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[59] 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 GitInitializer_GitConfig.ProtoReflect.Descriptor instead. func (*GitInitializer_GitConfig) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{30, 0} } func (x *GitInitializer_GitConfig) GetCustomConfig() map[string]string { if x != nil { return x.CustomConfig } return nil } func (x *GitInitializer_GitConfig) GetAuthentication() GitInitializer_AuthMethod { if x != nil { return x.Authentication } return GitInitializer_AUTH_METHOD_UNSPECIFIED } func (x *GitInitializer_GitConfig) GetAuthUser() string { if x != nil { return x.AuthUser } return "" } func (x *GitInitializer_GitConfig) GetAuthPassword() string { if x != nil { return x.AuthPassword } return "" } func (x *GitInitializer_GitConfig) GetAuthOts() string { if x != nil { return x.AuthOts } return "" } type FileDownloadInitializer_FileInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` // file_path is relative to the target_location, e.g. if target_location is // in `/workspace/myrepo` a file_path of `foobar/file` would produce a file // in `/workspace/myrepo/foobar/file`. file_path must include the filename. // The FileDownloadInitializer will create any parent directories necessary // to place the file. FilePath string `protobuf:"bytes,2,opt,name=file_path,json=filePath,proto3" json:"file_path,omitempty"` // digest is a hash of the file content in the OCI digest format (see // https://github.com/opencontainers/image-spec/blob/master/descriptor.md#digests). // This information is used to compute subsequent // content versions, and to validate the file content was downloaded // correctly. Digest string `protobuf:"bytes,3,opt,name=digest,proto3" json:"digest,omitempty"` } func (x *FileDownloadInitializer_FileInfo) Reset() { *x = FileDownloadInitializer_FileInfo{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FileDownloadInitializer_FileInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*FileDownloadInitializer_FileInfo) ProtoMessage() {} func (x *FileDownloadInitializer_FileInfo) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[61] 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 FileDownloadInitializer_FileInfo.ProtoReflect.Descriptor instead. func (*FileDownloadInitializer_FileInfo) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{33, 0} } func (x *FileDownloadInitializer_FileInfo) GetUrl() string { if x != nil { return x.Url } return "" } func (x *FileDownloadInitializer_FileInfo) GetFilePath() string { if x != nil { return x.FilePath } return "" } func (x *FileDownloadInitializer_FileInfo) GetDigest() string { if x != nil { return x.Digest } return "" } type UpdateWorkspaceRequest_UpdateWorkspaceMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // name is the name of the workspace as specified by the user Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` // pinned indicates whether the workspace is pinned Pinned *bool `protobuf:"varint,2,opt,name=pinned,proto3,oneof" json:"pinned,omitempty"` } func (x *UpdateWorkspaceRequest_UpdateWorkspaceMetadata) Reset() { *x = UpdateWorkspaceRequest_UpdateWorkspaceMetadata{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateWorkspaceRequest_UpdateWorkspaceMetadata) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateWorkspaceRequest_UpdateWorkspaceMetadata) ProtoMessage() {} func (x *UpdateWorkspaceRequest_UpdateWorkspaceMetadata) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[62] 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 UpdateWorkspaceRequest_UpdateWorkspaceMetadata.ProtoReflect.Descriptor instead. func (*UpdateWorkspaceRequest_UpdateWorkspaceMetadata) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{35, 0} } func (x *UpdateWorkspaceRequest_UpdateWorkspaceMetadata) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *UpdateWorkspaceRequest_UpdateWorkspaceMetadata) GetPinned() bool { if x != nil && x.Pinned != nil { return *x.Pinned } return false } type UpdateWorkspaceRequest_UpdateTimeout struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // inacitivity is the maximum time of inactivity before the workspace is // stopped or paused Inactivity *durationpb.Duration `protobuf:"bytes,1,opt,name=inactivity,proto3,oneof" json:"inactivity,omitempty"` // inacitivity is the maximum time of disconnection before the workspace is // stopped or paused Disconnected *durationpb.Duration `protobuf:"bytes,2,opt,name=disconnected,proto3,oneof" json:"disconnected,omitempty"` } func (x *UpdateWorkspaceRequest_UpdateTimeout) Reset() { *x = UpdateWorkspaceRequest_UpdateTimeout{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateWorkspaceRequest_UpdateTimeout) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateWorkspaceRequest_UpdateTimeout) ProtoMessage() {} func (x *UpdateWorkspaceRequest_UpdateTimeout) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[63] 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 UpdateWorkspaceRequest_UpdateTimeout.ProtoReflect.Descriptor instead. func (*UpdateWorkspaceRequest_UpdateTimeout) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{35, 1} } func (x *UpdateWorkspaceRequest_UpdateTimeout) GetInactivity() *durationpb.Duration { if x != nil { return x.Inactivity } return nil } func (x *UpdateWorkspaceRequest_UpdateTimeout) GetDisconnected() *durationpb.Duration { if x != nil { return x.Disconnected } return nil } type UpdateWorkspaceRequest_UpdateWorkspaceSpec struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // timeout configures the workspace timeout Timeout *UpdateWorkspaceRequest_UpdateTimeout `protobuf:"bytes,1,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"` // admission controls who can access the workspace and its ports. Admission *AdmissionLevel `protobuf:"varint,2,opt,name=admission,proto3,enum=gitpod.v1.AdmissionLevel,oneof" json:"admission,omitempty"` // Note(cw): repeated fields have implicit presence. There's a difference // between passing an empty list or nothing. SshPublicKeys []string `protobuf:"bytes,3,rep,name=ssh_public_keys,json=sshPublicKeys,proto3" json:"ssh_public_keys,omitempty"` } func (x *UpdateWorkspaceRequest_UpdateWorkspaceSpec) Reset() { *x = UpdateWorkspaceRequest_UpdateWorkspaceSpec{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateWorkspaceRequest_UpdateWorkspaceSpec) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateWorkspaceRequest_UpdateWorkspaceSpec) ProtoMessage() {} func (x *UpdateWorkspaceRequest_UpdateWorkspaceSpec) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[64] 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 UpdateWorkspaceRequest_UpdateWorkspaceSpec.ProtoReflect.Descriptor instead. func (*UpdateWorkspaceRequest_UpdateWorkspaceSpec) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{35, 2} } func (x *UpdateWorkspaceRequest_UpdateWorkspaceSpec) GetTimeout() *UpdateWorkspaceRequest_UpdateTimeout { if x != nil { return x.Timeout } return nil } func (x *UpdateWorkspaceRequest_UpdateWorkspaceSpec) GetAdmission() AdmissionLevel { if x != nil && x.Admission != nil { return *x.Admission } return AdmissionLevel_ADMISSION_LEVEL_UNSPECIFIED } func (x *UpdateWorkspaceRequest_UpdateWorkspaceSpec) GetSshPublicKeys() []string { if x != nil { return x.SshPublicKeys } return nil } type WorkspaceSession_Owner struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // id is the ID of the user who created the workspace Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // name is the full name of the user who created the workspace Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // avatar_url is the URL of the user's avatar AvatarUrl string `protobuf:"bytes,3,opt,name=avatar_url,json=avatarUrl,proto3" json:"avatar_url,omitempty"` } func (x *WorkspaceSession_Owner) Reset() { *x = WorkspaceSession_Owner{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceSession_Owner) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceSession_Owner) ProtoMessage() {} func (x *WorkspaceSession_Owner) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[65] 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 WorkspaceSession_Owner.ProtoReflect.Descriptor instead. func (*WorkspaceSession_Owner) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{51, 0} } func (x *WorkspaceSession_Owner) GetId() string { if x != nil { return x.Id } return "" } func (x *WorkspaceSession_Owner) GetName() string { if x != nil { return x.Name } return "" } func (x *WorkspaceSession_Owner) GetAvatarUrl() string { if x != nil { return x.AvatarUrl } return "" } // WorkspaceContext is the git context from which the workspace is created type WorkspaceSession_WorkspaceContext struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // path is the path of the context (the path following the base repository URL) Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` // ref is the branch or tag name of the repository Ref string `protobuf:"bytes,2,opt,name=ref,proto3" json:"ref,omitempty"` // ref_type is the type of the ref RefType WorkspaceSession_WorkspaceContext_RefType `protobuf:"varint,3,opt,name=ref_type,json=refType,proto3,enum=gitpod.v1.WorkspaceSession_WorkspaceContext_RefType" json:"ref_type,omitempty"` // revision is the commit hash of the context Revision string `protobuf:"bytes,4,opt,name=revision,proto3" json:"revision,omitempty"` // repository is the repository of the context Repository *WorkspaceSession_WorkspaceContext_Repository `protobuf:"bytes,5,opt,name=repository,proto3" json:"repository,omitempty"` } func (x *WorkspaceSession_WorkspaceContext) Reset() { *x = WorkspaceSession_WorkspaceContext{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceSession_WorkspaceContext) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceSession_WorkspaceContext) ProtoMessage() {} func (x *WorkspaceSession_WorkspaceContext) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[66] 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 WorkspaceSession_WorkspaceContext.ProtoReflect.Descriptor instead. func (*WorkspaceSession_WorkspaceContext) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{51, 1} } func (x *WorkspaceSession_WorkspaceContext) GetPath() string { if x != nil { return x.Path } return "" } func (x *WorkspaceSession_WorkspaceContext) GetRef() string { if x != nil { return x.Ref } return "" } func (x *WorkspaceSession_WorkspaceContext) GetRefType() WorkspaceSession_WorkspaceContext_RefType { if x != nil { return x.RefType } return WorkspaceSession_WorkspaceContext_REF_TYPE_UNSPECIFIED } func (x *WorkspaceSession_WorkspaceContext) GetRevision() string { if x != nil { return x.Revision } return "" } func (x *WorkspaceSession_WorkspaceContext) GetRepository() *WorkspaceSession_WorkspaceContext_Repository { if x != nil { return x.Repository } return nil } type WorkspaceSession_Metrics struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // workspace_image_size is the size of the workspace image in bytes WorkspaceImageSize int64 `protobuf:"varint,1,opt,name=workspace_image_size,json=workspaceImageSize,proto3" json:"workspace_image_size,omitempty"` // total_image_size is the total size of the image in bytes (includes Gitpod-specific layers like IDE) TotalImageSize int64 `protobuf:"varint,2,opt,name=total_image_size,json=totalImageSize,proto3" json:"total_image_size,omitempty"` // initializer_metrics are all metrics exported from the content initializer on workspace start InitializerMetrics *WorkspaceSession_InitializerMetrics `protobuf:"bytes,3,opt,name=initializer_metrics,json=initializerMetrics,proto3" json:"initializer_metrics,omitempty"` } func (x *WorkspaceSession_Metrics) Reset() { *x = WorkspaceSession_Metrics{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceSession_Metrics) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceSession_Metrics) ProtoMessage() {} func (x *WorkspaceSession_Metrics) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[67] 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 WorkspaceSession_Metrics.ProtoReflect.Descriptor instead. func (*WorkspaceSession_Metrics) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{51, 2} } func (x *WorkspaceSession_Metrics) GetWorkspaceImageSize() int64 { if x != nil { return x.WorkspaceImageSize } return 0 } func (x *WorkspaceSession_Metrics) GetTotalImageSize() int64 { if x != nil { return x.TotalImageSize } return 0 } func (x *WorkspaceSession_Metrics) GetInitializerMetrics() *WorkspaceSession_InitializerMetrics { if x != nil { return x.InitializerMetrics } return nil } // Add these new message definitions type WorkspaceSession_InitializerMetric struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // duration in seconds Duration *durationpb.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"` // size in bytes Size uint64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` } func (x *WorkspaceSession_InitializerMetric) Reset() { *x = WorkspaceSession_InitializerMetric{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceSession_InitializerMetric) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceSession_InitializerMetric) ProtoMessage() {} func (x *WorkspaceSession_InitializerMetric) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[68] 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 WorkspaceSession_InitializerMetric.ProtoReflect.Descriptor instead. func (*WorkspaceSession_InitializerMetric) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{51, 3} } func (x *WorkspaceSession_InitializerMetric) GetDuration() *durationpb.Duration { if x != nil { return x.Duration } return nil } func (x *WorkspaceSession_InitializerMetric) GetSize() uint64 { if x != nil { return x.Size } return 0 } type WorkspaceSession_InitializerMetrics struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // git contains metrics for the git initializer step // This is set whenever a `git clone` is issued (mostly on first workspace start) Git *WorkspaceSession_InitializerMetric `protobuf:"bytes,1,opt,name=git,proto3" json:"git,omitempty"` // file_download contains metrics for the file download initializer step // This is set for injecting "additionalFiles" into the workspace. FileDownload *WorkspaceSession_InitializerMetric `protobuf:"bytes,2,opt,name=file_download,json=fileDownload,proto3" json:"file_download,omitempty"` // snapshot contains metrics for the snapshot initializer step // This used for workspaces started from snapshots. Snapshot *WorkspaceSession_InitializerMetric `protobuf:"bytes,3,opt,name=snapshot,proto3" json:"snapshot,omitempty"` // backup contains metrics for the backup initializer step // This is set on subsequent workspace starts, when the file system is restored from backup. Backup *WorkspaceSession_InitializerMetric `protobuf:"bytes,4,opt,name=backup,proto3" json:"backup,omitempty"` // prebuild contains metrics for the prebuild initializer step // This is set if the workspace is based on a prebuild. Prebuild *WorkspaceSession_InitializerMetric `protobuf:"bytes,5,opt,name=prebuild,proto3" json:"prebuild,omitempty"` // composite contains metrics for the composite initializer step // This reports the total if multiple steps are run to initialize the workspace content. // Examples are: // - "additionalFiles" injected into the workspace // - "additionalRepositories" configured // - incremental Prebuilds Composite *WorkspaceSession_InitializerMetric `protobuf:"bytes,6,opt,name=composite,proto3" json:"composite,omitempty"` } func (x *WorkspaceSession_InitializerMetrics) Reset() { *x = WorkspaceSession_InitializerMetrics{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceSession_InitializerMetrics) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceSession_InitializerMetrics) ProtoMessage() {} func (x *WorkspaceSession_InitializerMetrics) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[69] 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 WorkspaceSession_InitializerMetrics.ProtoReflect.Descriptor instead. func (*WorkspaceSession_InitializerMetrics) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{51, 4} } func (x *WorkspaceSession_InitializerMetrics) GetGit() *WorkspaceSession_InitializerMetric { if x != nil { return x.Git } return nil } func (x *WorkspaceSession_InitializerMetrics) GetFileDownload() *WorkspaceSession_InitializerMetric { if x != nil { return x.FileDownload } return nil } func (x *WorkspaceSession_InitializerMetrics) GetSnapshot() *WorkspaceSession_InitializerMetric { if x != nil { return x.Snapshot } return nil } func (x *WorkspaceSession_InitializerMetrics) GetBackup() *WorkspaceSession_InitializerMetric { if x != nil { return x.Backup } return nil } func (x *WorkspaceSession_InitializerMetrics) GetPrebuild() *WorkspaceSession_InitializerMetric { if x != nil { return x.Prebuild } return nil } func (x *WorkspaceSession_InitializerMetrics) GetComposite() *WorkspaceSession_InitializerMetric { if x != nil { return x.Composite } return nil } type WorkspaceSession_WorkspaceContext_Repository struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // clone_url is the repository url as you would pass it to "git clone". CloneUrl string `protobuf:"bytes,1,opt,name=clone_url,json=cloneUrl,proto3" json:"clone_url,omitempty"` // host is the host of the SCM Host string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"` // owner is the owner of the repository Owner string `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` // name is the name of the repository Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` } func (x *WorkspaceSession_WorkspaceContext_Repository) Reset() { *x = WorkspaceSession_WorkspaceContext_Repository{} if protoimpl.UnsafeEnabled { mi := &file_gitpod_v1_workspace_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WorkspaceSession_WorkspaceContext_Repository) String() string { return protoimpl.X.MessageStringOf(x) } func (*WorkspaceSession_WorkspaceContext_Repository) ProtoMessage() {} func (x *WorkspaceSession_WorkspaceContext_Repository) ProtoReflect() protoreflect.Message { mi := &file_gitpod_v1_workspace_proto_msgTypes[70] 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 WorkspaceSession_WorkspaceContext_Repository.ProtoReflect.Descriptor instead. func (*WorkspaceSession_WorkspaceContext_Repository) Descriptor() ([]byte, []int) { return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{51, 1, 0} } func (x *WorkspaceSession_WorkspaceContext_Repository) GetCloneUrl() string { if x != nil { return x.CloneUrl } return "" } func (x *WorkspaceSession_WorkspaceContext_Repository) GetHost() string { if x != nil { return x.Host } return "" } func (x *WorkspaceSession_WorkspaceContext_Repository) GetOwner() string { if x != nil { return x.Owner } return "" } func (x *WorkspaceSession_WorkspaceContext_Repository) GetName() string { if x != nil { return x.Name } return "" } var File_gitpod_v1_workspace_proto protoreflect.FileDescriptor var file_gitpod_v1_workspace_proto_rawDesc = []byte{ 0x0a, 0x19, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x16, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x76, 0x76, 0x61, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 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, 0xf0, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x1d, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x40, 0x0a, 0x1b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x75, 0x0a, 0x1c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0xb7, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x65, 0x72, 0x6d, 0x22, 0x8d, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, 0xe1, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 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, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x2a, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x04, 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, 0x02, 0x74, 0x6f, 0x22, 0xaa, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa0, 0x03, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x57, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x52, 0x4c, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x34, 0x0a, 0x14, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x7b, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x52, 0x4c, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x55, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x70, 0x0a, 0x15, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x14, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x4c, 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, 0x32, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x44, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0xfa, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x52, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x22, 0x5d, 0x0a, 0x14, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x49, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x09, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x2c, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x8d, 0x03, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 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, 0xbb, 0x08, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x41, 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x15, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x14, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x03, 0x67, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x47, 0x69, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x67, 0x69, 0x74, 0x12, 0x3a, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x73, 0x68, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x73, 0x68, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x16, 0x73, 0x75, 0x62, 0x61, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x73, 0x75, 0x62, 0x61, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x0b, 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, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x6c, 0x6f, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x1a, 0xc9, 0x01, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x4c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x1a, 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, 0x68, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x55, 0x4c, 0x41, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x02, 0x22, 0xe6, 0x06, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x4e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 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, 0x52, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x67, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x1a, 0xfb, 0x02, 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, 0x60, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xcf, 0x01, 0x0a, 0x0c, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2f, 0x0a, 0x2b, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x55, 0x4c, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x1a, 0x51, 0x0a, 0x0e, 0x50, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xfa, 0x01, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x4b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x53, 0x10, 0x02, 0x22, 0x8d, 0x03, 0x0a, 0x12, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x81, 0x03, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 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, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xeb, 0x01, 0x0a, 0x05, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x50, 0x41, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, 0x54, 0x45, 0x44, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x0a, 0x22, 0xd0, 0x02, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x2e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x73, 0x70, 0x65, 0x63, 0x73, 0x1a, 0xfb, 0x01, 0x0a, 0x04, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x03, 0x67, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x48, 0x00, 0x52, 0x03, 0x67, 0x69, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x40, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xbd, 0x07, 0x0a, 0x0e, 0x47, 0x69, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x55, 0x72, 0x69, 0x12, 0x2e, 0x0a, 0x13, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x55, 0x72, 0x69, 0x12, 0x4a, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xd3, 0x02, 0x0a, 0x09, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5a, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4c, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6f, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x4f, 0x74, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0xc5, 0x01, 0x0a, 0x0f, 0x43, 0x6c, 0x6f, 0x6e, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4c, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4c, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x4c, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x4c, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x42, 0x52, 0x41, 0x4e, 0x43, 0x48, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4c, 0x4f, 0x4e, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x52, 0x41, 0x4e, 0x43, 0x48, 0x10, 0x04, 0x22, 0x65, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x42, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x4f, 0x54, 0x53, 0x10, 0x02, 0x22, 0x36, 0x0a, 0x13, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x22, 0x36, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0xd8, 0x01, 0x0a, 0x17, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x51, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x22, 0xe7, 0x02, 0x0a, 0x09, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x22, 0xd6, 0x06, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x01, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x02, 0x18, 0x01, 0x48, 0x02, 0x52, 0x09, 0x67, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x63, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x1a, 0xb3, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x1a, 0xe5, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4e, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x00, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x01, 0x52, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x73, 0x68, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x73, 0x68, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4d, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x39, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 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, 0x3b, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa5, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x64, 0x0a, 0x16, 0x50, 0x61, 0x72, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x81, 0x01, 0x0a, 0x17, 0x50, 0x61, 0x72, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x2c, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x84, 0x01, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x43, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x22, 0x42, 0x0a, 0x1f, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x22, 0x22, 0x0a, 0x20, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xef, 0x0e, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 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, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 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, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 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, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 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, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 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, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x37, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x1a, 0x4a, 0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x1a, 0xca, 0x03, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x4f, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x52, 0x65, 0x66, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x72, 0x65, 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x1a, 0x67, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x61, 0x0a, 0x07, 0x52, 0x65, 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x46, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x46, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x52, 0x41, 0x4e, 0x43, 0x48, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x45, 0x46, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x46, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x1a, 0xc6, 0x01, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x5f, 0x0a, 0x13, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x12, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x5e, 0x0a, 0x11, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x1a, 0xd3, 0x03, 0x0a, 0x12, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x3f, 0x0a, 0x03, 0x67, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x03, 0x67, 0x69, 0x74, 0x12, 0x52, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x49, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x4b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x2a, 0x6f, 0x0a, 0x0e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x32, 0xd3, 0x0e, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 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, 0x57, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x5a, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 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, 0x5a, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x52, 0x4c, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x0d, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x51, 0x0a, 0x16, 0x69, 0x6f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x5a, 0x37, 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, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_gitpod_v1_workspace_proto_rawDescOnce sync.Once file_gitpod_v1_workspace_proto_rawDescData = file_gitpod_v1_workspace_proto_rawDesc ) func file_gitpod_v1_workspace_proto_rawDescGZIP() []byte { file_gitpod_v1_workspace_proto_rawDescOnce.Do(func() { file_gitpod_v1_workspace_proto_rawDescData = protoimpl.X.CompressGZIP(file_gitpod_v1_workspace_proto_rawDescData) }) return file_gitpod_v1_workspace_proto_rawDescData } var file_gitpod_v1_workspace_proto_enumTypes = make([]protoimpl.EnumInfo, 9) var file_gitpod_v1_workspace_proto_msgTypes = make([]protoimpl.MessageInfo, 71) var file_gitpod_v1_workspace_proto_goTypes = []interface{}{ (AdmissionLevel)(0), // 0: gitpod.v1.AdmissionLevel (GetWorkspaceDefaultImageResponse_Source)(0), // 1: gitpod.v1.GetWorkspaceDefaultImageResponse.Source (WorkspaceSpec_WorkspaceType)(0), // 2: gitpod.v1.WorkspaceSpec.WorkspaceType (WorkspaceStatus_WorkspaceConditions_FailedReason)(0), // 3: gitpod.v1.WorkspaceStatus.WorkspaceConditions.FailedReason (WorkspacePort_Protocol)(0), // 4: gitpod.v1.WorkspacePort.Protocol (WorkspacePhase_Phase)(0), // 5: gitpod.v1.WorkspacePhase.Phase (GitInitializer_CloneTargetMode)(0), // 6: gitpod.v1.GitInitializer.CloneTargetMode (GitInitializer_AuthMethod)(0), // 7: gitpod.v1.GitInitializer.AuthMethod (WorkspaceSession_WorkspaceContext_RefType)(0), // 8: gitpod.v1.WorkspaceSession.WorkspaceContext.RefType (*UpdateWorkspacePortRequest)(nil), // 9: gitpod.v1.UpdateWorkspacePortRequest (*UpdateWorkspacePortResponse)(nil), // 10: gitpod.v1.UpdateWorkspacePortResponse (*GetWorkspaceRequest)(nil), // 11: gitpod.v1.GetWorkspaceRequest (*GetWorkspaceResponse)(nil), // 12: gitpod.v1.GetWorkspaceResponse (*WatchWorkspaceStatusRequest)(nil), // 13: gitpod.v1.WatchWorkspaceStatusRequest (*WatchWorkspaceStatusResponse)(nil), // 14: gitpod.v1.WatchWorkspaceStatusResponse (*ListWorkspacesRequest)(nil), // 15: gitpod.v1.ListWorkspacesRequest (*ListWorkspacesResponse)(nil), // 16: gitpod.v1.ListWorkspacesResponse (*ListWorkspaceSessionsRequest)(nil), // 17: gitpod.v1.ListWorkspaceSessionsRequest (*ListWorkspaceSessionsResponse)(nil), // 18: gitpod.v1.ListWorkspaceSessionsResponse (*CreateAndStartWorkspaceRequest)(nil), // 19: gitpod.v1.CreateAndStartWorkspaceRequest (*CreateAndStartWorkspaceResponse)(nil), // 20: gitpod.v1.CreateAndStartWorkspaceResponse (*StartWorkspaceRequest)(nil), // 21: gitpod.v1.StartWorkspaceRequest (*StartWorkspaceResponse)(nil), // 22: gitpod.v1.StartWorkspaceResponse (*GetWorkspaceDefaultImageRequest)(nil), // 23: gitpod.v1.GetWorkspaceDefaultImageRequest (*GetWorkspaceDefaultImageResponse)(nil), // 24: gitpod.v1.GetWorkspaceDefaultImageResponse (*SendHeartBeatRequest)(nil), // 25: gitpod.v1.SendHeartBeatRequest (*SendHeartBeatResponse)(nil), // 26: gitpod.v1.SendHeartBeatResponse (*GetWorkspaceOwnerTokenRequest)(nil), // 27: gitpod.v1.GetWorkspaceOwnerTokenRequest (*GetWorkspaceOwnerTokenResponse)(nil), // 28: gitpod.v1.GetWorkspaceOwnerTokenResponse (*GetWorkspaceEditorCredentialsRequest)(nil), // 29: gitpod.v1.GetWorkspaceEditorCredentialsRequest (*GetWorkspaceEditorCredentialsResponse)(nil), // 30: gitpod.v1.GetWorkspaceEditorCredentialsResponse (*Workspace)(nil), // 31: gitpod.v1.Workspace (*WorkspaceMetadata)(nil), // 32: gitpod.v1.WorkspaceMetadata (*WorkspaceSpec)(nil), // 33: gitpod.v1.WorkspaceSpec (*WorkspaceStatus)(nil), // 34: gitpod.v1.WorkspaceStatus (*WorkspacePort)(nil), // 35: gitpod.v1.WorkspacePort (*WorkspaceGitStatus)(nil), // 36: gitpod.v1.WorkspaceGitStatus (*WorkspacePhase)(nil), // 37: gitpod.v1.WorkspacePhase (*WorkspaceInitializer)(nil), // 38: gitpod.v1.WorkspaceInitializer (*GitInitializer)(nil), // 39: gitpod.v1.GitInitializer (*SnapshotInitializer)(nil), // 40: gitpod.v1.SnapshotInitializer (*PrebuildInitializer)(nil), // 41: gitpod.v1.PrebuildInitializer (*FileDownloadInitializer)(nil), // 42: gitpod.v1.FileDownloadInitializer (*GitStatus)(nil), // 43: gitpod.v1.GitStatus (*UpdateWorkspaceRequest)(nil), // 44: gitpod.v1.UpdateWorkspaceRequest (*UpdateWorkspaceResponse)(nil), // 45: gitpod.v1.UpdateWorkspaceResponse (*StopWorkspaceRequest)(nil), // 46: gitpod.v1.StopWorkspaceRequest (*StopWorkspaceResponse)(nil), // 47: gitpod.v1.StopWorkspaceResponse (*DeleteWorkspaceRequest)(nil), // 48: gitpod.v1.DeleteWorkspaceRequest (*DeleteWorkspaceResponse)(nil), // 49: gitpod.v1.DeleteWorkspaceResponse (*ListWorkspaceClassesRequest)(nil), // 50: gitpod.v1.ListWorkspaceClassesRequest (*ListWorkspaceClassesResponse)(nil), // 51: gitpod.v1.ListWorkspaceClassesResponse (*ParseContextURLRequest)(nil), // 52: gitpod.v1.ParseContextURLRequest (*ParseContextURLResponse)(nil), // 53: gitpod.v1.ParseContextURLResponse (*WorkspaceClass)(nil), // 54: gitpod.v1.WorkspaceClass (*CreateWorkspaceSnapshotRequest)(nil), // 55: gitpod.v1.CreateWorkspaceSnapshotRequest (*CreateWorkspaceSnapshotResponse)(nil), // 56: gitpod.v1.CreateWorkspaceSnapshotResponse (*WaitForWorkspaceSnapshotRequest)(nil), // 57: gitpod.v1.WaitForWorkspaceSnapshotRequest (*WaitForWorkspaceSnapshotResponse)(nil), // 58: gitpod.v1.WaitForWorkspaceSnapshotResponse (*WorkspaceSnapshot)(nil), // 59: gitpod.v1.WorkspaceSnapshot (*WorkspaceSession)(nil), // 60: gitpod.v1.WorkspaceSession (*CreateAndStartWorkspaceRequest_ContextURL)(nil), // 61: gitpod.v1.CreateAndStartWorkspaceRequest.ContextURL nil, // 62: gitpod.v1.WorkspaceMetadata.AnnotationsEntry (*WorkspaceSpec_Timeout)(nil), // 63: gitpod.v1.WorkspaceSpec.Timeout (*WorkspaceSpec_GitSpec)(nil), // 64: gitpod.v1.WorkspaceSpec.GitSpec (*WorkspaceStatus_WorkspaceConditions)(nil), // 65: gitpod.v1.WorkspaceStatus.WorkspaceConditions (*WorkspaceStatus_PrebuildResult)(nil), // 66: gitpod.v1.WorkspaceStatus.PrebuildResult (*WorkspaceInitializer_Spec)(nil), // 67: gitpod.v1.WorkspaceInitializer.Spec (*GitInitializer_GitConfig)(nil), // 68: gitpod.v1.GitInitializer.GitConfig nil, // 69: gitpod.v1.GitInitializer.GitConfig.CustomConfigEntry (*FileDownloadInitializer_FileInfo)(nil), // 70: gitpod.v1.FileDownloadInitializer.FileInfo (*UpdateWorkspaceRequest_UpdateWorkspaceMetadata)(nil), // 71: gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceMetadata (*UpdateWorkspaceRequest_UpdateTimeout)(nil), // 72: gitpod.v1.UpdateWorkspaceRequest.UpdateTimeout (*UpdateWorkspaceRequest_UpdateWorkspaceSpec)(nil), // 73: gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceSpec (*WorkspaceSession_Owner)(nil), // 74: gitpod.v1.WorkspaceSession.Owner (*WorkspaceSession_WorkspaceContext)(nil), // 75: gitpod.v1.WorkspaceSession.WorkspaceContext (*WorkspaceSession_Metrics)(nil), // 76: gitpod.v1.WorkspaceSession.Metrics (*WorkspaceSession_InitializerMetric)(nil), // 77: gitpod.v1.WorkspaceSession.InitializerMetric (*WorkspaceSession_InitializerMetrics)(nil), // 78: gitpod.v1.WorkspaceSession.InitializerMetrics (*WorkspaceSession_WorkspaceContext_Repository)(nil), // 79: gitpod.v1.WorkspaceSession.WorkspaceContext.Repository (*PaginationRequest)(nil), // 80: gitpod.v1.PaginationRequest (*PaginationResponse)(nil), // 81: gitpod.v1.PaginationResponse (*timestamppb.Timestamp)(nil), // 82: google.protobuf.Timestamp (*EnvironmentVariable)(nil), // 83: gitpod.v1.EnvironmentVariable (*EditorReference)(nil), // 84: gitpod.v1.EditorReference (*durationpb.Duration)(nil), // 85: google.protobuf.Duration } var file_gitpod_v1_workspace_proto_depIdxs = []int32{ 0, // 0: gitpod.v1.UpdateWorkspacePortRequest.admission:type_name -> gitpod.v1.AdmissionLevel 4, // 1: gitpod.v1.UpdateWorkspacePortRequest.protocol:type_name -> gitpod.v1.WorkspacePort.Protocol 31, // 2: gitpod.v1.GetWorkspaceResponse.workspace:type_name -> gitpod.v1.Workspace 34, // 3: gitpod.v1.WatchWorkspaceStatusResponse.status:type_name -> gitpod.v1.WorkspaceStatus 80, // 4: gitpod.v1.ListWorkspacesRequest.pagination:type_name -> gitpod.v1.PaginationRequest 81, // 5: gitpod.v1.ListWorkspacesResponse.pagination:type_name -> gitpod.v1.PaginationResponse 31, // 6: gitpod.v1.ListWorkspacesResponse.workspaces:type_name -> gitpod.v1.Workspace 80, // 7: gitpod.v1.ListWorkspaceSessionsRequest.pagination:type_name -> gitpod.v1.PaginationRequest 82, // 8: gitpod.v1.ListWorkspaceSessionsRequest.from:type_name -> google.protobuf.Timestamp 82, // 9: gitpod.v1.ListWorkspaceSessionsRequest.to:type_name -> google.protobuf.Timestamp 81, // 10: gitpod.v1.ListWorkspaceSessionsResponse.pagination:type_name -> gitpod.v1.PaginationResponse 60, // 11: gitpod.v1.ListWorkspaceSessionsResponse.workspace_sessions:type_name -> gitpod.v1.WorkspaceSession 32, // 12: gitpod.v1.CreateAndStartWorkspaceRequest.metadata:type_name -> gitpod.v1.WorkspaceMetadata 61, // 13: gitpod.v1.CreateAndStartWorkspaceRequest.context_url:type_name -> gitpod.v1.CreateAndStartWorkspaceRequest.ContextURL 33, // 14: gitpod.v1.CreateAndStartWorkspaceRequest.spec:type_name -> gitpod.v1.WorkspaceSpec 31, // 15: gitpod.v1.CreateAndStartWorkspaceResponse.workspace:type_name -> gitpod.v1.Workspace 31, // 16: gitpod.v1.StartWorkspaceResponse.workspace:type_name -> gitpod.v1.Workspace 1, // 17: gitpod.v1.GetWorkspaceDefaultImageResponse.source:type_name -> gitpod.v1.GetWorkspaceDefaultImageResponse.Source 32, // 18: gitpod.v1.Workspace.metadata:type_name -> gitpod.v1.WorkspaceMetadata 33, // 19: gitpod.v1.Workspace.spec:type_name -> gitpod.v1.WorkspaceSpec 34, // 20: gitpod.v1.Workspace.status:type_name -> gitpod.v1.WorkspaceStatus 62, // 21: gitpod.v1.WorkspaceMetadata.annotations:type_name -> gitpod.v1.WorkspaceMetadata.AnnotationsEntry 38, // 22: gitpod.v1.WorkspaceSpec.initializer:type_name -> gitpod.v1.WorkspaceInitializer 2, // 23: gitpod.v1.WorkspaceSpec.type:type_name -> gitpod.v1.WorkspaceSpec.WorkspaceType 35, // 24: gitpod.v1.WorkspaceSpec.ports:type_name -> gitpod.v1.WorkspacePort 83, // 25: gitpod.v1.WorkspaceSpec.environment_variables:type_name -> gitpod.v1.EnvironmentVariable 64, // 26: gitpod.v1.WorkspaceSpec.git:type_name -> gitpod.v1.WorkspaceSpec.GitSpec 63, // 27: gitpod.v1.WorkspaceSpec.timeout:type_name -> gitpod.v1.WorkspaceSpec.Timeout 0, // 28: gitpod.v1.WorkspaceSpec.admission:type_name -> gitpod.v1.AdmissionLevel 82, // 29: gitpod.v1.WorkspaceSpec.last_user_activity:type_name -> google.protobuf.Timestamp 84, // 30: gitpod.v1.WorkspaceSpec.editor:type_name -> gitpod.v1.EditorReference 37, // 31: gitpod.v1.WorkspaceStatus.phase:type_name -> gitpod.v1.WorkspacePhase 65, // 32: gitpod.v1.WorkspaceStatus.conditions:type_name -> gitpod.v1.WorkspaceStatus.WorkspaceConditions 66, // 33: gitpod.v1.WorkspaceStatus.prebuild_result:type_name -> gitpod.v1.WorkspaceStatus.PrebuildResult 36, // 34: gitpod.v1.WorkspaceStatus.git_status:type_name -> gitpod.v1.WorkspaceGitStatus 0, // 35: gitpod.v1.WorkspacePort.admission:type_name -> gitpod.v1.AdmissionLevel 4, // 36: gitpod.v1.WorkspacePort.protocol:type_name -> gitpod.v1.WorkspacePort.Protocol 5, // 37: gitpod.v1.WorkspacePhase.name:type_name -> gitpod.v1.WorkspacePhase.Phase 82, // 38: gitpod.v1.WorkspacePhase.last_transition_time:type_name -> google.protobuf.Timestamp 67, // 39: gitpod.v1.WorkspaceInitializer.specs:type_name -> gitpod.v1.WorkspaceInitializer.Spec 6, // 40: gitpod.v1.GitInitializer.target_mode:type_name -> gitpod.v1.GitInitializer.CloneTargetMode 68, // 41: gitpod.v1.GitInitializer.config:type_name -> gitpod.v1.GitInitializer.GitConfig 70, // 42: gitpod.v1.FileDownloadInitializer.files:type_name -> gitpod.v1.FileDownloadInitializer.FileInfo 71, // 43: gitpod.v1.UpdateWorkspaceRequest.metadata:type_name -> gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceMetadata 73, // 44: gitpod.v1.UpdateWorkspaceRequest.spec:type_name -> gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceSpec 36, // 45: gitpod.v1.UpdateWorkspaceRequest.git_status:type_name -> gitpod.v1.WorkspaceGitStatus 31, // 46: gitpod.v1.UpdateWorkspaceResponse.workspace:type_name -> gitpod.v1.Workspace 80, // 47: gitpod.v1.ListWorkspaceClassesRequest.pagination:type_name -> gitpod.v1.PaginationRequest 81, // 48: gitpod.v1.ListWorkspaceClassesResponse.pagination:type_name -> gitpod.v1.PaginationResponse 54, // 49: gitpod.v1.ListWorkspaceClassesResponse.workspace_classes:type_name -> gitpod.v1.WorkspaceClass 32, // 50: gitpod.v1.ParseContextURLResponse.metadata:type_name -> gitpod.v1.WorkspaceMetadata 33, // 51: gitpod.v1.ParseContextURLResponse.spec:type_name -> gitpod.v1.WorkspaceSpec 59, // 52: gitpod.v1.CreateWorkspaceSnapshotResponse.snapshot:type_name -> gitpod.v1.WorkspaceSnapshot 82, // 53: gitpod.v1.WorkspaceSnapshot.creation_time:type_name -> google.protobuf.Timestamp 31, // 54: gitpod.v1.WorkspaceSession.workspace:type_name -> gitpod.v1.Workspace 82, // 55: gitpod.v1.WorkspaceSession.creation_time:type_name -> google.protobuf.Timestamp 82, // 56: gitpod.v1.WorkspaceSession.deployed_time:type_name -> google.protobuf.Timestamp 82, // 57: gitpod.v1.WorkspaceSession.started_time:type_name -> google.protobuf.Timestamp 82, // 58: gitpod.v1.WorkspaceSession.stopping_time:type_name -> google.protobuf.Timestamp 82, // 59: gitpod.v1.WorkspaceSession.stopped_time:type_name -> google.protobuf.Timestamp 76, // 60: gitpod.v1.WorkspaceSession.metrics:type_name -> gitpod.v1.WorkspaceSession.Metrics 74, // 61: gitpod.v1.WorkspaceSession.owner:type_name -> gitpod.v1.WorkspaceSession.Owner 75, // 62: gitpod.v1.WorkspaceSession.context:type_name -> gitpod.v1.WorkspaceSession.WorkspaceContext 84, // 63: gitpod.v1.CreateAndStartWorkspaceRequest.ContextURL.editor:type_name -> gitpod.v1.EditorReference 85, // 64: gitpod.v1.WorkspaceSpec.Timeout.inactivity:type_name -> google.protobuf.Duration 85, // 65: gitpod.v1.WorkspaceSpec.Timeout.disconnected:type_name -> google.protobuf.Duration 85, // 66: gitpod.v1.WorkspaceSpec.Timeout.maximum_lifetime:type_name -> google.protobuf.Duration 3, // 67: gitpod.v1.WorkspaceStatus.WorkspaceConditions.failed_reason:type_name -> gitpod.v1.WorkspaceStatus.WorkspaceConditions.FailedReason 39, // 68: gitpod.v1.WorkspaceInitializer.Spec.git:type_name -> gitpod.v1.GitInitializer 40, // 69: gitpod.v1.WorkspaceInitializer.Spec.snapshot:type_name -> gitpod.v1.SnapshotInitializer 41, // 70: gitpod.v1.WorkspaceInitializer.Spec.prebuild:type_name -> gitpod.v1.PrebuildInitializer 42, // 71: gitpod.v1.WorkspaceInitializer.Spec.download:type_name -> gitpod.v1.FileDownloadInitializer 69, // 72: gitpod.v1.GitInitializer.GitConfig.custom_config:type_name -> gitpod.v1.GitInitializer.GitConfig.CustomConfigEntry 7, // 73: gitpod.v1.GitInitializer.GitConfig.authentication:type_name -> gitpod.v1.GitInitializer.AuthMethod 85, // 74: gitpod.v1.UpdateWorkspaceRequest.UpdateTimeout.inactivity:type_name -> google.protobuf.Duration 85, // 75: gitpod.v1.UpdateWorkspaceRequest.UpdateTimeout.disconnected:type_name -> google.protobuf.Duration 72, // 76: gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceSpec.timeout:type_name -> gitpod.v1.UpdateWorkspaceRequest.UpdateTimeout 0, // 77: gitpod.v1.UpdateWorkspaceRequest.UpdateWorkspaceSpec.admission:type_name -> gitpod.v1.AdmissionLevel 8, // 78: gitpod.v1.WorkspaceSession.WorkspaceContext.ref_type:type_name -> gitpod.v1.WorkspaceSession.WorkspaceContext.RefType 79, // 79: gitpod.v1.WorkspaceSession.WorkspaceContext.repository:type_name -> gitpod.v1.WorkspaceSession.WorkspaceContext.Repository 78, // 80: gitpod.v1.WorkspaceSession.Metrics.initializer_metrics:type_name -> gitpod.v1.WorkspaceSession.InitializerMetrics 85, // 81: gitpod.v1.WorkspaceSession.InitializerMetric.duration:type_name -> google.protobuf.Duration 77, // 82: gitpod.v1.WorkspaceSession.InitializerMetrics.git:type_name -> gitpod.v1.WorkspaceSession.InitializerMetric 77, // 83: gitpod.v1.WorkspaceSession.InitializerMetrics.file_download:type_name -> gitpod.v1.WorkspaceSession.InitializerMetric 77, // 84: gitpod.v1.WorkspaceSession.InitializerMetrics.snapshot:type_name -> gitpod.v1.WorkspaceSession.InitializerMetric 77, // 85: gitpod.v1.WorkspaceSession.InitializerMetrics.backup:type_name -> gitpod.v1.WorkspaceSession.InitializerMetric 77, // 86: gitpod.v1.WorkspaceSession.InitializerMetrics.prebuild:type_name -> gitpod.v1.WorkspaceSession.InitializerMetric 77, // 87: gitpod.v1.WorkspaceSession.InitializerMetrics.composite:type_name -> gitpod.v1.WorkspaceSession.InitializerMetric 11, // 88: gitpod.v1.WorkspaceService.GetWorkspace:input_type -> gitpod.v1.GetWorkspaceRequest 13, // 89: gitpod.v1.WorkspaceService.WatchWorkspaceStatus:input_type -> gitpod.v1.WatchWorkspaceStatusRequest 15, // 90: gitpod.v1.WorkspaceService.ListWorkspaces:input_type -> gitpod.v1.ListWorkspacesRequest 17, // 91: gitpod.v1.WorkspaceService.ListWorkspaceSessions:input_type -> gitpod.v1.ListWorkspaceSessionsRequest 19, // 92: gitpod.v1.WorkspaceService.CreateAndStartWorkspace:input_type -> gitpod.v1.CreateAndStartWorkspaceRequest 21, // 93: gitpod.v1.WorkspaceService.StartWorkspace:input_type -> gitpod.v1.StartWorkspaceRequest 44, // 94: gitpod.v1.WorkspaceService.UpdateWorkspace:input_type -> gitpod.v1.UpdateWorkspaceRequest 46, // 95: gitpod.v1.WorkspaceService.StopWorkspace:input_type -> gitpod.v1.StopWorkspaceRequest 48, // 96: gitpod.v1.WorkspaceService.DeleteWorkspace:input_type -> gitpod.v1.DeleteWorkspaceRequest 50, // 97: gitpod.v1.WorkspaceService.ListWorkspaceClasses:input_type -> gitpod.v1.ListWorkspaceClassesRequest 52, // 98: gitpod.v1.WorkspaceService.ParseContextURL:input_type -> gitpod.v1.ParseContextURLRequest 23, // 99: gitpod.v1.WorkspaceService.GetWorkspaceDefaultImage:input_type -> gitpod.v1.GetWorkspaceDefaultImageRequest 25, // 100: gitpod.v1.WorkspaceService.SendHeartBeat:input_type -> gitpod.v1.SendHeartBeatRequest 27, // 101: gitpod.v1.WorkspaceService.GetWorkspaceOwnerToken:input_type -> gitpod.v1.GetWorkspaceOwnerTokenRequest 29, // 102: gitpod.v1.WorkspaceService.GetWorkspaceEditorCredentials:input_type -> gitpod.v1.GetWorkspaceEditorCredentialsRequest 55, // 103: gitpod.v1.WorkspaceService.CreateWorkspaceSnapshot:input_type -> gitpod.v1.CreateWorkspaceSnapshotRequest 57, // 104: gitpod.v1.WorkspaceService.WaitForWorkspaceSnapshot:input_type -> gitpod.v1.WaitForWorkspaceSnapshotRequest 9, // 105: gitpod.v1.WorkspaceService.UpdateWorkspacePort:input_type -> gitpod.v1.UpdateWorkspacePortRequest 12, // 106: gitpod.v1.WorkspaceService.GetWorkspace:output_type -> gitpod.v1.GetWorkspaceResponse 14, // 107: gitpod.v1.WorkspaceService.WatchWorkspaceStatus:output_type -> gitpod.v1.WatchWorkspaceStatusResponse 16, // 108: gitpod.v1.WorkspaceService.ListWorkspaces:output_type -> gitpod.v1.ListWorkspacesResponse 18, // 109: gitpod.v1.WorkspaceService.ListWorkspaceSessions:output_type -> gitpod.v1.ListWorkspaceSessionsResponse 20, // 110: gitpod.v1.WorkspaceService.CreateAndStartWorkspace:output_type -> gitpod.v1.CreateAndStartWorkspaceResponse 22, // 111: gitpod.v1.WorkspaceService.StartWorkspace:output_type -> gitpod.v1.StartWorkspaceResponse 45, // 112: gitpod.v1.WorkspaceService.UpdateWorkspace:output_type -> gitpod.v1.UpdateWorkspaceResponse 47, // 113: gitpod.v1.WorkspaceService.StopWorkspace:output_type -> gitpod.v1.StopWorkspaceResponse 49, // 114: gitpod.v1.WorkspaceService.DeleteWorkspace:output_type -> gitpod.v1.DeleteWorkspaceResponse 51, // 115: gitpod.v1.WorkspaceService.ListWorkspaceClasses:output_type -> gitpod.v1.ListWorkspaceClassesResponse 53, // 116: gitpod.v1.WorkspaceService.ParseContextURL:output_type -> gitpod.v1.ParseContextURLResponse 24, // 117: gitpod.v1.WorkspaceService.GetWorkspaceDefaultImage:output_type -> gitpod.v1.GetWorkspaceDefaultImageResponse 26, // 118: gitpod.v1.WorkspaceService.SendHeartBeat:output_type -> gitpod.v1.SendHeartBeatResponse 28, // 119: gitpod.v1.WorkspaceService.GetWorkspaceOwnerToken:output_type -> gitpod.v1.GetWorkspaceOwnerTokenResponse 30, // 120: gitpod.v1.WorkspaceService.GetWorkspaceEditorCredentials:output_type -> gitpod.v1.GetWorkspaceEditorCredentialsResponse 56, // 121: gitpod.v1.WorkspaceService.CreateWorkspaceSnapshot:output_type -> gitpod.v1.CreateWorkspaceSnapshotResponse 58, // 122: gitpod.v1.WorkspaceService.WaitForWorkspaceSnapshot:output_type -> gitpod.v1.WaitForWorkspaceSnapshotResponse 10, // 123: gitpod.v1.WorkspaceService.UpdateWorkspacePort:output_type -> gitpod.v1.UpdateWorkspacePortResponse 106, // [106:124] is the sub-list for method output_type 88, // [88:106] is the sub-list for method input_type 88, // [88:88] is the sub-list for extension type_name 88, // [88:88] is the sub-list for extension extendee 0, // [0:88] is the sub-list for field type_name } func init() { file_gitpod_v1_workspace_proto_init() } func file_gitpod_v1_workspace_proto_init() { if File_gitpod_v1_workspace_proto != nil { return } file_gitpod_v1_editor_proto_init() file_gitpod_v1_envvar_proto_init() file_gitpod_v1_pagination_proto_init() if !protoimpl.UnsafeEnabled { file_gitpod_v1_workspace_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateWorkspacePortRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateWorkspacePortResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkspaceRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkspaceResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchWorkspaceStatusRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchWorkspaceStatusResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWorkspacesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWorkspacesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWorkspaceSessionsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWorkspaceSessionsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAndStartWorkspaceRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAndStartWorkspaceResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[12].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_gitpod_v1_workspace_proto_msgTypes[13].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_gitpod_v1_workspace_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkspaceDefaultImageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkspaceDefaultImageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendHeartBeatRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendHeartBeatResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkspaceOwnerTokenRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkspaceOwnerTokenResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkspaceEditorCredentialsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkspaceEditorCredentialsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Workspace); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[23].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_gitpod_v1_workspace_proto_msgTypes[24].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_gitpod_v1_workspace_proto_msgTypes[25].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_gitpod_v1_workspace_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspacePort); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceGitStatus); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspacePhase); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceInitializer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GitInitializer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SnapshotInitializer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrebuildInitializer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileDownloadInitializer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GitStatus); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateWorkspaceRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateWorkspaceResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[37].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_gitpod_v1_workspace_proto_msgTypes[38].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_gitpod_v1_workspace_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteWorkspaceRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteWorkspaceResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWorkspaceClassesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWorkspaceClassesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ParseContextURLRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ParseContextURLResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[45].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_gitpod_v1_workspace_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateWorkspaceSnapshotRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateWorkspaceSnapshotResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WaitForWorkspaceSnapshotRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WaitForWorkspaceSnapshotResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceSnapshot); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceSession); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAndStartWorkspaceRequest_ContextURL); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceSpec_Timeout); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceSpec_GitSpec); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceStatus_WorkspaceConditions); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceStatus_PrebuildResult); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceInitializer_Spec); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GitInitializer_GitConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FileDownloadInitializer_FileInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateWorkspaceRequest_UpdateWorkspaceMetadata); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateWorkspaceRequest_UpdateTimeout); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateWorkspaceRequest_UpdateWorkspaceSpec); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceSession_Owner); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceSession_WorkspaceContext); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceSession_Metrics); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceSession_InitializerMetric); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceSession_InitializerMetrics); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gitpod_v1_workspace_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceSession_WorkspaceContext_Repository); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_gitpod_v1_workspace_proto_msgTypes[0].OneofWrappers = []interface{}{} file_gitpod_v1_workspace_proto_msgTypes[10].OneofWrappers = []interface{}{ (*CreateAndStartWorkspaceRequest_ContextUrl)(nil), (*CreateAndStartWorkspaceRequest_Spec)(nil), } file_gitpod_v1_workspace_proto_msgTypes[35].OneofWrappers = []interface{}{} file_gitpod_v1_workspace_proto_msgTypes[58].OneofWrappers = []interface{}{ (*WorkspaceInitializer_Spec_Git)(nil), (*WorkspaceInitializer_Spec_Snapshot)(nil), (*WorkspaceInitializer_Spec_Prebuild)(nil), (*WorkspaceInitializer_Spec_Download)(nil), } file_gitpod_v1_workspace_proto_msgTypes[62].OneofWrappers = []interface{}{} file_gitpod_v1_workspace_proto_msgTypes[63].OneofWrappers = []interface{}{} file_gitpod_v1_workspace_proto_msgTypes[64].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gitpod_v1_workspace_proto_rawDesc, NumEnums: 9, NumMessages: 71, NumExtensions: 0, NumServices: 1, }, GoTypes: file_gitpod_v1_workspace_proto_goTypes, DependencyIndexes: file_gitpod_v1_workspace_proto_depIdxs, EnumInfos: file_gitpod_v1_workspace_proto_enumTypes, MessageInfos: file_gitpod_v1_workspace_proto_msgTypes, }.Build() File_gitpod_v1_workspace_proto = out.File file_gitpod_v1_workspace_proto_rawDesc = nil file_gitpod_v1_workspace_proto_goTypes = nil file_gitpod_v1_workspace_proto_depIdxs = nil }