diff --git a/binary/proto/scan_result.proto b/binary/proto/scan_result.proto index e3ddafecd..cd762bcd9 100644 --- a/binary/proto/scan_result.proto +++ b/binary/proto/scan_result.proto @@ -682,6 +682,7 @@ message SecretData { github_fine_grained_personal_access_token = 29; GithubAppUserToServerToken github_app_user_to_server_token = 30; GithubOAuthToken github_oauth_token = 31; + OpenRouterAPIKey openrouter_api_key = 32; } message GCPSAK { @@ -761,6 +762,10 @@ message SecretData { string key = 1; } + message OpenRouterAPIKey { + string key = 1; + } + message DigitalOceanAPIToken { string key = 1; } diff --git a/binary/proto/scan_result_go_proto/scan_result.pb.go b/binary/proto/scan_result_go_proto/scan_result.pb.go index 01b5e4039..25fbb6e5d 100644 --- a/binary/proto/scan_result_go_proto/scan_result.pb.go +++ b/binary/proto/scan_result_go_proto/scan_result.pb.go @@ -15,8 +15,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 -// protoc v6.32.0 +// protoc-gen-go v1.36.9 +// protoc v3.21.12 // source: proto/scan_result.proto package scan_result_go_proto @@ -27,6 +27,7 @@ import ( timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -333,10 +334,7 @@ func (SecretStatus_SecretStatusEnum) EnumDescriptor() ([]byte, []int) { // The results of a scan incl. scan status and artifacts found. type ScanResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` @@ -351,6 +349,8 @@ type ScanResult struct { // Deprecated: Marked as deprecated in proto/scan_result.proto. FindingsDeprecated []*GenericFinding `protobuf:"bytes,7,rep,name=findings_deprecated,json=findingsDeprecated,proto3" json:"findings_deprecated,omitempty"` Inventory *Inventory `protobuf:"bytes,8,opt,name=inventory,proto3" json:"inventory,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ScanResult) Reset() { @@ -443,14 +443,13 @@ func (x *ScanResult) GetInventory() *Inventory { // The artifacts (e.g. software inventory, security findings) that a scan found. type Inventory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Packages []*Package `protobuf:"bytes,1,rep,name=packages,proto3" json:"packages,omitempty"` GenericFindings []*GenericFinding `protobuf:"bytes,2,rep,name=generic_findings,json=genericFindings,proto3" json:"generic_findings,omitempty"` Secrets []*Secret `protobuf:"bytes,3,rep,name=secrets,proto3" json:"secrets,omitempty"` ContainerImageMetadata []*ContainerImageMetadata `protobuf:"bytes,5,rep,name=container_image_metadata,json=containerImageMetadata,proto3" json:"container_image_metadata,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Inventory) Reset() { @@ -512,12 +511,11 @@ func (x *Inventory) GetContainerImageMetadata() []*ContainerImageMetadata { } type ScanStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Status ScanStatus_ScanStatusEnum `protobuf:"varint,1,opt,name=status,proto3,enum=scalibr.ScanStatus_ScanStatusEnum" json:"status,omitempty"` FailureReason string `protobuf:"bytes,2,opt,name=failure_reason,json=failureReason,proto3" json:"failure_reason,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ScanStatus) Reset() { @@ -565,13 +563,12 @@ func (x *ScanStatus) GetFailureReason() string { } type PluginStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version int32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` + Status *ScanStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version int32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` - Status *ScanStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PluginStatus) Reset() { @@ -628,10 +625,7 @@ func (x *PluginStatus) GetStatus() *ScanStatus { // A software package or library found by an extractor. // PURL or CPE needs to be set, maybe both. type Package struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Human-readable name of the software, to be used for things like logging. // For vuln matching, use the name from metadata. Name string `protobuf:"bytes,11,opt,name=name,proto3" json:"name,omitempty"` @@ -654,8 +648,9 @@ type Package struct { // core library. Plugins []string `protobuf:"bytes,49,rep,name=plugins,proto3" json:"plugins,omitempty"` // The additional data found in the package. + // LINT.IfChange // - // Types that are assignable to Metadata: + // Types that are valid to be assigned to Metadata: // // *Package_PythonMetadata // *Package_JavascriptMetadata @@ -704,6 +699,8 @@ type Package struct { // Software licenses information Licenses []string `protobuf:"bytes,52,rep,name=licenses,proto3" json:"licenses,omitempty"` ContainerImageMetadataIndexes *Package_ContainerImageMetadataIndexes `protobuf:"bytes,57,opt,name=container_image_metadata_indexes,json=containerImageMetadataIndexes,proto3,oneof" json:"container_image_metadata_indexes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Package) Reset() { @@ -793,254 +790,324 @@ func (x *Package) GetPlugins() []string { return nil } -func (m *Package) GetMetadata() isPackage_Metadata { - if m != nil { - return m.Metadata +func (x *Package) GetMetadata() isPackage_Metadata { + if x != nil { + return x.Metadata } return nil } func (x *Package) GetPythonMetadata() *PythonPackageMetadata { - if x, ok := x.GetMetadata().(*Package_PythonMetadata); ok { - return x.PythonMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_PythonMetadata); ok { + return x.PythonMetadata + } } return nil } func (x *Package) GetJavascriptMetadata() *JavascriptPackageJSONMetadata { - if x, ok := x.GetMetadata().(*Package_JavascriptMetadata); ok { - return x.JavascriptMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_JavascriptMetadata); ok { + return x.JavascriptMetadata + } } return nil } func (x *Package) GetApkMetadata() *APKPackageMetadata { - if x, ok := x.GetMetadata().(*Package_ApkMetadata); ok { - return x.ApkMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_ApkMetadata); ok { + return x.ApkMetadata + } } return nil } func (x *Package) GetDpkgMetadata() *DPKGPackageMetadata { - if x, ok := x.GetMetadata().(*Package_DpkgMetadata); ok { - return x.DpkgMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_DpkgMetadata); ok { + return x.DpkgMetadata + } } return nil } func (x *Package) GetRpmMetadata() *RPMPackageMetadata { - if x, ok := x.GetMetadata().(*Package_RpmMetadata); ok { - return x.RpmMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_RpmMetadata); ok { + return x.RpmMetadata + } } return nil } func (x *Package) GetCosMetadata() *COSPackageMetadata { - if x, ok := x.GetMetadata().(*Package_CosMetadata); ok { - return x.CosMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_CosMetadata); ok { + return x.CosMetadata + } } return nil } func (x *Package) GetDepsjsonMetadata() *DEPSJSONMetadata { - if x, ok := x.GetMetadata().(*Package_DepsjsonMetadata); ok { - return x.DepsjsonMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_DepsjsonMetadata); ok { + return x.DepsjsonMetadata + } } return nil } func (x *Package) GetSpdxMetadata() *SPDXPackageMetadata { - if x, ok := x.GetMetadata().(*Package_SpdxMetadata); ok { - return x.SpdxMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_SpdxMetadata); ok { + return x.SpdxMetadata + } } return nil } func (x *Package) GetJavaArchiveMetadata() *JavaArchiveMetadata { - if x, ok := x.GetMetadata().(*Package_JavaArchiveMetadata); ok { - return x.JavaArchiveMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_JavaArchiveMetadata); ok { + return x.JavaArchiveMetadata + } } return nil } func (x *Package) GetJavaLockfileMetadata() *JavaLockfileMetadata { - if x, ok := x.GetMetadata().(*Package_JavaLockfileMetadata); ok { - return x.JavaLockfileMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_JavaLockfileMetadata); ok { + return x.JavaLockfileMetadata + } } return nil } func (x *Package) GetPacmanMetadata() *PACMANPackageMetadata { - if x, ok := x.GetMetadata().(*Package_PacmanMetadata); ok { - return x.PacmanMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_PacmanMetadata); ok { + return x.PacmanMetadata + } } return nil } func (x *Package) GetNixMetadata() *NixPackageMetadata { - if x, ok := x.GetMetadata().(*Package_NixMetadata); ok { - return x.NixMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_NixMetadata); ok { + return x.NixMetadata + } } return nil } func (x *Package) GetKernelModuleMetadata() *KernelModuleMetadata { - if x, ok := x.GetMetadata().(*Package_KernelModuleMetadata); ok { - return x.KernelModuleMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_KernelModuleMetadata); ok { + return x.KernelModuleMetadata + } } return nil } func (x *Package) GetVmlinuzMetadata() *VmlinuzMetadata { - if x, ok := x.GetMetadata().(*Package_VmlinuzMetadata); ok { - return x.VmlinuzMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_VmlinuzMetadata); ok { + return x.VmlinuzMetadata + } } return nil } func (x *Package) GetPortageMetadata() *PortagePackageMetadata { - if x, ok := x.GetMetadata().(*Package_PortageMetadata); ok { - return x.PortageMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_PortageMetadata); ok { + return x.PortageMetadata + } } return nil } func (x *Package) GetOsvMetadata() *OSVPackageMetadata { - if x, ok := x.GetMetadata().(*Package_OsvMetadata); ok { - return x.OsvMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_OsvMetadata); ok { + return x.OsvMetadata + } } return nil } func (x *Package) GetNetportsMetadata() *NetportsMetadata { - if x, ok := x.GetMetadata().(*Package_NetportsMetadata); ok { - return x.NetportsMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_NetportsMetadata); ok { + return x.NetportsMetadata + } } return nil } func (x *Package) GetPythonRequirementsMetadata() *PythonRequirementsMetadata { - if x, ok := x.GetMetadata().(*Package_PythonRequirementsMetadata); ok { - return x.PythonRequirementsMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_PythonRequirementsMetadata); ok { + return x.PythonRequirementsMetadata + } } return nil } func (x *Package) GetPythonSetupMetadata() *PythonSetupMetadata { - if x, ok := x.GetMetadata().(*Package_PythonSetupMetadata); ok { - return x.PythonSetupMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_PythonSetupMetadata); ok { + return x.PythonSetupMetadata + } } return nil } func (x *Package) GetContainerdContainerMetadata() *ContainerdContainerMetadata { - if x, ok := x.GetMetadata().(*Package_ContainerdContainerMetadata); ok { - return x.ContainerdContainerMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_ContainerdContainerMetadata); ok { + return x.ContainerdContainerMetadata + } } return nil } func (x *Package) GetSnapMetadata() *SNAPPackageMetadata { - if x, ok := x.GetMetadata().(*Package_SnapMetadata); ok { - return x.SnapMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_SnapMetadata); ok { + return x.SnapMetadata + } } return nil } func (x *Package) GetFlatpakMetadata() *FlatpakPackageMetadata { - if x, ok := x.GetMetadata().(*Package_FlatpakMetadata); ok { - return x.FlatpakMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_FlatpakMetadata); ok { + return x.FlatpakMetadata + } } return nil } func (x *Package) GetMacAppsMetadata() *MacAppsMetadata { - if x, ok := x.GetMetadata().(*Package_MacAppsMetadata); ok { - return x.MacAppsMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_MacAppsMetadata); ok { + return x.MacAppsMetadata + } } return nil } func (x *Package) GetContainerdRuntimeContainerMetadata() *ContainerdRuntimeContainerMetadata { - if x, ok := x.GetMetadata().(*Package_ContainerdRuntimeContainerMetadata); ok { - return x.ContainerdRuntimeContainerMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_ContainerdRuntimeContainerMetadata); ok { + return x.ContainerdRuntimeContainerMetadata + } } return nil } func (x *Package) GetCdxMetadata() *CDXPackageMetadata { - if x, ok := x.GetMetadata().(*Package_CdxMetadata); ok { - return x.CdxMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_CdxMetadata); ok { + return x.CdxMetadata + } } return nil } func (x *Package) GetWindowsOsVersionMetadata() *WindowsOSVersion { - if x, ok := x.GetMetadata().(*Package_WindowsOsVersionMetadata); ok { - return x.WindowsOsVersionMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_WindowsOsVersionMetadata); ok { + return x.WindowsOsVersionMetadata + } } return nil } func (x *Package) GetHomebrewMetadata() *HomebrewPackageMetadata { - if x, ok := x.GetMetadata().(*Package_HomebrewMetadata); ok { - return x.HomebrewMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_HomebrewMetadata); ok { + return x.HomebrewMetadata + } } return nil } func (x *Package) GetChromeExtensionsMetadata() *ChromeExtensionsMetadata { - if x, ok := x.GetMetadata().(*Package_ChromeExtensionsMetadata); ok { - return x.ChromeExtensionsMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_ChromeExtensionsMetadata); ok { + return x.ChromeExtensionsMetadata + } } return nil } func (x *Package) GetVscodeExtensionsMetadata() *VSCodeExtensionsMetadata { - if x, ok := x.GetMetadata().(*Package_VscodeExtensionsMetadata); ok { - return x.VscodeExtensionsMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_VscodeExtensionsMetadata); ok { + return x.VscodeExtensionsMetadata + } } return nil } func (x *Package) GetPodmanMetadata() *PodmanMetadata { - if x, ok := x.GetMetadata().(*Package_PodmanMetadata); ok { - return x.PodmanMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_PodmanMetadata); ok { + return x.PodmanMetadata + } } return nil } func (x *Package) GetDockerContainersMetadata() *DockerContainersMetadata { - if x, ok := x.GetMetadata().(*Package_DockerContainersMetadata); ok { - return x.DockerContainersMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_DockerContainersMetadata); ok { + return x.DockerContainersMetadata + } } return nil } func (x *Package) GetMacportsMetadata() *MacportsPackageMetadata { - if x, ok := x.GetMetadata().(*Package_MacportsMetadata); ok { - return x.MacportsMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_MacportsMetadata); ok { + return x.MacportsMetadata + } } return nil } func (x *Package) GetWingetMetadata() *WingetPackageMetadata { - if x, ok := x.GetMetadata().(*Package_WingetMetadata); ok { - return x.WingetMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_WingetMetadata); ok { + return x.WingetMetadata + } } return nil } func (x *Package) GetAsdfMetadata() *AsdfMetadata { - if x, ok := x.GetMetadata().(*Package_AsdfMetadata); ok { - return x.AsdfMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_AsdfMetadata); ok { + return x.AsdfMetadata + } } return nil } func (x *Package) GetNvmMetadata() *NvmMetadata { - if x, ok := x.GetMetadata().(*Package_NvmMetadata); ok { - return x.NvmMetadata + if x != nil { + if x, ok := x.Metadata.(*Package_NvmMetadata); ok { + return x.NvmMetadata + } } return nil } @@ -1290,12 +1357,11 @@ func (*Package_NvmMetadata) isPackage_Metadata() {} // Additional identifiers for source code software packages (e.g. NPM). type SourceCodeIdentifier struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"` + Commit string `protobuf:"bytes,2,opt,name=commit,proto3" json:"commit,omitempty"` unknownFields protoimpl.UnknownFields - - Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"` - Commit string `protobuf:"bytes,2,opt,name=commit,proto3" json:"commit,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SourceCodeIdentifier) Reset() { @@ -1344,10 +1410,7 @@ func (x *SourceCodeIdentifier) GetCommit() string { // Details about the layer a package was found in. type LayerDetails struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The index of the layer in the container image. Index int32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` // The diff ID (typically a sha256 hash) of the layer in the container image. @@ -1359,7 +1422,9 @@ type LayerDetails struct { // found in all layers depending on how the container image is built. Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` // Denotes whether the layer is in the base image. - InBaseImage bool `protobuf:"varint,4,opt,name=in_base_image,json=inBaseImage,proto3" json:"in_base_image,omitempty"` + InBaseImage bool `protobuf:"varint,4,opt,name=in_base_image,json=inBaseImage,proto3" json:"in_base_image,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LayerDetails) Reset() { @@ -1430,19 +1495,18 @@ func (x *LayerDetails) GetInBaseImage() bool { // PackageExploitabilitySignal is used to indicate that specific vulnerabilities // are not applicable to a given package. type PackageExploitabilitySignal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the plugin (e.g. Annotator) that added this signal. Plugin string `protobuf:"bytes,1,opt,name=plugin,proto3" json:"plugin,omitempty"` // Reason for exclusion. Justification VexJustification `protobuf:"varint,2,opt,name=justification,proto3,enum=scalibr.VexJustification" json:"justification,omitempty"` - // Types that are assignable to VulnFilter: + // Types that are valid to be assigned to VulnFilter: // // *PackageExploitabilitySignal_VulnIdentifiers // *PackageExploitabilitySignal_MatchesAllVulns - VulnFilter isPackageExploitabilitySignal_VulnFilter `protobuf_oneof:"vuln_filter"` + VulnFilter isPackageExploitabilitySignal_VulnFilter `protobuf_oneof:"vuln_filter"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PackageExploitabilitySignal) Reset() { @@ -1489,23 +1553,27 @@ func (x *PackageExploitabilitySignal) GetJustification() VexJustification { return VexJustification_VEX_JUSTIFICATION_UNSPECIFIED } -func (m *PackageExploitabilitySignal) GetVulnFilter() isPackageExploitabilitySignal_VulnFilter { - if m != nil { - return m.VulnFilter +func (x *PackageExploitabilitySignal) GetVulnFilter() isPackageExploitabilitySignal_VulnFilter { + if x != nil { + return x.VulnFilter } return nil } func (x *PackageExploitabilitySignal) GetVulnIdentifiers() *VulnIdentifiers { - if x, ok := x.GetVulnFilter().(*PackageExploitabilitySignal_VulnIdentifiers); ok { - return x.VulnIdentifiers + if x != nil { + if x, ok := x.VulnFilter.(*PackageExploitabilitySignal_VulnIdentifiers); ok { + return x.VulnIdentifiers + } } return nil } func (x *PackageExploitabilitySignal) GetMatchesAllVulns() bool { - if x, ok := x.GetVulnFilter().(*PackageExploitabilitySignal_MatchesAllVulns); ok { - return x.MatchesAllVulns + if x != nil { + if x, ok := x.VulnFilter.(*PackageExploitabilitySignal_MatchesAllVulns); ok { + return x.MatchesAllVulns + } } return false } @@ -1531,11 +1599,10 @@ func (*PackageExploitabilitySignal_VulnIdentifiers) isPackageExploitabilitySigna func (*PackageExploitabilitySignal_MatchesAllVulns) isPackageExploitabilitySignal_VulnFilter() {} type VulnIdentifiers struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Identifiers []string `protobuf:"bytes,1,rep,name=identifiers,proto3" json:"identifiers,omitempty"` unknownFields protoimpl.UnknownFields - - Identifiers []string `protobuf:"bytes,1,rep,name=identifiers,proto3" json:"identifiers,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VulnIdentifiers) Reset() { @@ -1578,14 +1645,13 @@ func (x *VulnIdentifiers) GetIdentifiers() []string { // FindingExploitabilitySignal is used to indicate that a finding is not // exploitable. type FindingExploitabilitySignal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the plugin (e.g. Annotator) that added this signal. Plugin string `protobuf:"bytes,1,opt,name=plugin,proto3" json:"plugin,omitempty"` // Reason for exclusion. Justification VexJustification `protobuf:"varint,2,opt,name=justification,proto3,enum=scalibr.VexJustification" json:"justification,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FindingExploitabilitySignal) Reset() { @@ -1634,10 +1700,7 @@ func (x *FindingExploitabilitySignal) GetJustification() VexJustification { // Package URL, see https://github.com/package-url/purl-spec type Purl struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // String representation. Purl string `protobuf:"bytes,1,opt,name=purl,proto3" json:"purl,omitempty"` // Package type, e.g. "maven, npm, pypi". @@ -1651,7 +1714,9 @@ type Purl struct { // Extra qualifying data for a package such as an OS, architecture, etc. Qualifiers []*Qualifier `protobuf:"bytes,6,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"` // Extra subpath within a package, relative to the package root. - Subpath string `protobuf:"bytes,7,opt,name=subpath,proto3" json:"subpath,omitempty"` + Subpath string `protobuf:"bytes,7,opt,name=subpath,proto3" json:"subpath,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Purl) Reset() { @@ -1734,12 +1799,11 @@ func (x *Purl) GetSubpath() string { } type Qualifier struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Qualifier) Reset() { @@ -1789,10 +1853,7 @@ func (x *Qualifier) GetValue() string { // Describes generic security findings not associated with any // specific package, e.g. weak credentials. type GenericFinding struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Info specific to the finding. Should always be the same for the same type // of finding. Adv *GenericFindingAdvisory `protobuf:"bytes,1,opt,name=adv,proto3" json:"adv,omitempty"` @@ -1802,6 +1863,8 @@ type GenericFinding struct { Plugins []string `protobuf:"bytes,4,rep,name=plugins,proto3" json:"plugins,omitempty"` // Signals that indicate this finding is not exploitable. ExploitabilitySignals []*FindingExploitabilitySignal `protobuf:"bytes,5,rep,name=exploitability_signals,json=exploitabilitySignals,proto3" json:"exploitability_signals,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GenericFinding) Reset() { @@ -1866,10 +1929,7 @@ func (x *GenericFinding) GetExploitabilitySignals() []*FindingExploitabilitySign // contain any information specific to the target (e.g. which files were // found vulnerable). type GenericFindingAdvisory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // A unique ID for the finding. Id *AdvisoryId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"` @@ -1877,6 +1937,8 @@ type GenericFindingAdvisory struct { // Remediation instructions, e.g. "update to latest version". Recommendation string `protobuf:"bytes,5,opt,name=recommendation,proto3" json:"recommendation,omitempty"` Sev SeverityEnum `protobuf:"varint,7,opt,name=sev,proto3,enum=scalibr.SeverityEnum" json:"sev,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GenericFindingAdvisory) Reset() { @@ -1946,12 +2008,11 @@ func (x *GenericFindingAdvisory) GetSev() SeverityEnum { // A unique identifier per advisory. type AdvisoryId struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Publisher string `protobuf:"bytes,1,opt,name=publisher,proto3" json:"publisher,omitempty"` // e.g. "CVE". + Reference string `protobuf:"bytes,2,opt,name=reference,proto3" json:"reference,omitempty"` // e.g. "CVE-2023-1234". unknownFields protoimpl.UnknownFields - - Publisher string `protobuf:"bytes,1,opt,name=publisher,proto3" json:"publisher,omitempty"` // e.g. "CVE". - Reference string `protobuf:"bytes,2,opt,name=reference,proto3" json:"reference,omitempty"` // e.g. "CVE-2023-1234". + sizeCache protoimpl.SizeCache } func (x *AdvisoryId) Reset() { @@ -2000,12 +2061,11 @@ func (x *AdvisoryId) GetReference() string { // Instance-specific details about the generic security finding. type GenericFindingTargetDetails struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Free-text info. - Extra string `protobuf:"bytes,4,opt,name=extra,proto3" json:"extra,omitempty"` + Extra string `protobuf:"bytes,4,opt,name=extra,proto3" json:"extra,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GenericFindingTargetDetails) Reset() { @@ -2047,12 +2107,11 @@ func (x *GenericFindingTargetDetails) GetExtra() string { // The additional data found in python packages. type PythonPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` + AuthorEmail string `protobuf:"bytes,2,opt,name=author_email,json=authorEmail,proto3" json:"author_email,omitempty"` unknownFields protoimpl.UnknownFields - - Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` - AuthorEmail string `protobuf:"bytes,2,opt,name=author_email,json=authorEmail,proto3" json:"author_email,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PythonPackageMetadata) Reset() { @@ -2101,14 +2160,13 @@ func (x *PythonPackageMetadata) GetAuthorEmail() string { // The additional data found in npm packages. type JavascriptPackageJSONMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` - Maintainers []string `protobuf:"bytes,2,rep,name=maintainers,proto3" json:"maintainers,omitempty"` - Contributors []string `protobuf:"bytes,3,rep,name=contributors,proto3" json:"contributors,omitempty"` - FromNpmRepository bool `protobuf:"varint,4,opt,name=from_npm_repository,json=fromNpmRepository,proto3" json:"from_npm_repository,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Author string `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"` + Maintainers []string `protobuf:"bytes,2,rep,name=maintainers,proto3" json:"maintainers,omitempty"` + Contributors []string `protobuf:"bytes,3,rep,name=contributors,proto3" json:"contributors,omitempty"` + FromNpmRepository bool `protobuf:"varint,4,opt,name=from_npm_repository,json=fromNpmRepository,proto3" json:"from_npm_repository,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *JavascriptPackageJSONMetadata) Reset() { @@ -2171,16 +2229,15 @@ func (x *JavascriptPackageJSONMetadata) GetFromNpmRepository() bool { // The additional data found in APK packages. type APKPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + OriginName string `protobuf:"bytes,2,opt,name=origin_name,json=originName,proto3" json:"origin_name,omitempty"` + OsId string `protobuf:"bytes,3,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionId string `protobuf:"bytes,4,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + Maintainer string `protobuf:"bytes,5,opt,name=maintainer,proto3" json:"maintainer,omitempty"` + Architecture string `protobuf:"bytes,6,opt,name=architecture,proto3" json:"architecture,omitempty"` unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - OriginName string `protobuf:"bytes,2,opt,name=origin_name,json=originName,proto3" json:"origin_name,omitempty"` - OsId string `protobuf:"bytes,3,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionId string `protobuf:"bytes,4,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - Maintainer string `protobuf:"bytes,5,opt,name=maintainer,proto3" json:"maintainer,omitempty"` - Architecture string `protobuf:"bytes,6,opt,name=architecture,proto3" json:"architecture,omitempty"` + sizeCache protoimpl.SizeCache } func (x *APKPackageMetadata) Reset() { @@ -2258,20 +2315,19 @@ func (x *APKPackageMetadata) GetArchitecture() string { // The additional data found in DPKG packages. // Next ID: 11 type DPKGPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - SourceName string `protobuf:"bytes,2,opt,name=source_name,json=sourceName,proto3" json:"source_name,omitempty"` - SourceVersion string `protobuf:"bytes,3,opt,name=source_version,json=sourceVersion,proto3" json:"source_version,omitempty"` - PackageVersion string `protobuf:"bytes,4,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - OsId string `protobuf:"bytes,5,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionCodename string `protobuf:"bytes,6,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` - OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - Maintainer string `protobuf:"bytes,8,opt,name=maintainer,proto3" json:"maintainer,omitempty"` - Architecture string `protobuf:"bytes,9,opt,name=architecture,proto3" json:"architecture,omitempty"` - Status string `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + SourceName string `protobuf:"bytes,2,opt,name=source_name,json=sourceName,proto3" json:"source_name,omitempty"` + SourceVersion string `protobuf:"bytes,3,opt,name=source_version,json=sourceVersion,proto3" json:"source_version,omitempty"` + PackageVersion string `protobuf:"bytes,4,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + OsId string `protobuf:"bytes,5,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionCodename string `protobuf:"bytes,6,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` + OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + Maintainer string `protobuf:"bytes,8,opt,name=maintainer,proto3" json:"maintainer,omitempty"` + Architecture string `protobuf:"bytes,9,opt,name=architecture,proto3" json:"architecture,omitempty"` + Status string `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DPKGPackageMetadata) Reset() { @@ -2376,19 +2432,18 @@ func (x *DPKGPackageMetadata) GetStatus() string { // The additional data found in RPM packages. type RPMPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + SourceRpm string `protobuf:"bytes,2,opt,name=source_rpm,json=sourceRpm,proto3" json:"source_rpm,omitempty"` + Epoch int32 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + OsId string `protobuf:"bytes,4,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionId string `protobuf:"bytes,5,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + OsBuildId string `protobuf:"bytes,6,opt,name=os_build_id,json=osBuildId,proto3" json:"os_build_id,omitempty"` + OsName string `protobuf:"bytes,7,opt,name=os_name,json=osName,proto3" json:"os_name,omitempty"` + Vendor string `protobuf:"bytes,8,opt,name=vendor,proto3" json:"vendor,omitempty"` + Architecture string `protobuf:"bytes,9,opt,name=architecture,proto3" json:"architecture,omitempty"` unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - SourceRpm string `protobuf:"bytes,2,opt,name=source_rpm,json=sourceRpm,proto3" json:"source_rpm,omitempty"` - Epoch int32 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` - OsId string `protobuf:"bytes,4,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionId string `protobuf:"bytes,5,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - OsBuildId string `protobuf:"bytes,6,opt,name=os_build_id,json=osBuildId,proto3" json:"os_build_id,omitempty"` - OsName string `protobuf:"bytes,7,opt,name=os_name,json=osName,proto3" json:"os_name,omitempty"` - Vendor string `protobuf:"bytes,8,opt,name=vendor,proto3" json:"vendor,omitempty"` - Architecture string `protobuf:"bytes,9,opt,name=architecture,proto3" json:"architecture,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RPMPackageMetadata) Reset() { @@ -2486,16 +2541,15 @@ func (x *RPMPackageMetadata) GetArchitecture() string { // The additional data found in COS packages. type COSPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category,omitempty"` + OsVersion string `protobuf:"bytes,4,opt,name=os_version,json=osVersion,proto3" json:"os_version,omitempty"` + OsVersionId string `protobuf:"bytes,5,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + EbuildVersion string `protobuf:"bytes,6,opt,name=ebuild_version,json=ebuildVersion,proto3" json:"ebuild_version,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category,omitempty"` - OsVersion string `protobuf:"bytes,4,opt,name=os_version,json=osVersion,proto3" json:"os_version,omitempty"` - OsVersionId string `protobuf:"bytes,5,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - EbuildVersion string `protobuf:"bytes,6,opt,name=ebuild_version,json=ebuildVersion,proto3" json:"ebuild_version,omitempty"` + sizeCache protoimpl.SizeCache } func (x *COSPackageMetadata) Reset() { @@ -2572,16 +2626,15 @@ func (x *COSPackageMetadata) GetEbuildVersion() string { // The additional data found in PACMAN packages. type PACMANPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - OsId string `protobuf:"bytes,3,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionId string `protobuf:"bytes,4,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - PackageDescription string `protobuf:"bytes,5,opt,name=package_description,json=packageDescription,proto3" json:"package_description,omitempty"` - PackageDependencies string `protobuf:"bytes,6,opt,name=package_dependencies,json=packageDependencies,proto3" json:"package_dependencies,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + OsId string `protobuf:"bytes,3,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionId string `protobuf:"bytes,4,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + PackageDescription string `protobuf:"bytes,5,opt,name=package_description,json=packageDescription,proto3" json:"package_description,omitempty"` + PackageDependencies string `protobuf:"bytes,6,opt,name=package_dependencies,json=packageDependencies,proto3" json:"package_dependencies,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PACMANPackageMetadata) Reset() { @@ -2658,17 +2711,16 @@ func (x *PACMANPackageMetadata) GetPackageDependencies() string { // The additional data found in Nix packages. type NixPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - PackageHash string `protobuf:"bytes,3,opt,name=package_hash,json=packageHash,proto3" json:"package_hash,omitempty"` - PackageOutput string `protobuf:"bytes,4,opt,name=package_output,json=packageOutput,proto3" json:"package_output,omitempty"` - OsId string `protobuf:"bytes,5,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionCodename string `protobuf:"bytes,6,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` - OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + PackageHash string `protobuf:"bytes,3,opt,name=package_hash,json=packageHash,proto3" json:"package_hash,omitempty"` + PackageOutput string `protobuf:"bytes,4,opt,name=package_output,json=packageOutput,proto3" json:"package_output,omitempty"` + OsId string `protobuf:"bytes,5,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionCodename string `protobuf:"bytes,6,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` + OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NixPackageMetadata) Reset() { @@ -2752,13 +2804,12 @@ func (x *NixPackageMetadata) GetOsVersionId() string { // The additional data found in .NET deps json packages. type DEPSJSONMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DEPSJSONMetadata) Reset() { @@ -2814,18 +2865,17 @@ func (x *DEPSJSONMetadata) GetType() string { // The additional data found in SNAP packages. type SNAPPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Grade string `protobuf:"bytes,3,opt,name=grade,proto3" json:"grade,omitempty"` - Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` - Architectures []string `protobuf:"bytes,5,rep,name=architectures,proto3" json:"architectures,omitempty"` - OsId string `protobuf:"bytes,6,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionCodename string `protobuf:"bytes,7,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` - OsVersionId string `protobuf:"bytes,8,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Grade string `protobuf:"bytes,3,opt,name=grade,proto3" json:"grade,omitempty"` + Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` + Architectures []string `protobuf:"bytes,5,rep,name=architectures,proto3" json:"architectures,omitempty"` + OsId string `protobuf:"bytes,6,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionCodename string `protobuf:"bytes,7,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` + OsVersionId string `protobuf:"bytes,8,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SNAPPackageMetadata) Reset() { @@ -2916,14 +2966,13 @@ func (x *SNAPPackageMetadata) GetOsVersionId() string { // The additional data found in portage packages. type PortagePackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - OsId string `protobuf:"bytes,3,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionId string `protobuf:"bytes,4,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + OsId string `protobuf:"bytes,3,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionId string `protobuf:"bytes,4,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PortagePackageMetadata) Reset() { @@ -2986,19 +3035,18 @@ func (x *PortagePackageMetadata) GetOsVersionId() string { // The additional data found in Flatpak packages. type FlatpakPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageId string `protobuf:"bytes,2,opt,name=package_id,json=packageId,proto3" json:"package_id,omitempty"` - PackageVersion string `protobuf:"bytes,3,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - ReleaseDate string `protobuf:"bytes,4,opt,name=release_date,json=releaseDate,proto3" json:"release_date,omitempty"` - OsName string `protobuf:"bytes,5,opt,name=os_name,json=osName,proto3" json:"os_name,omitempty"` - OsId string `protobuf:"bytes,6,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - OsBuildId string `protobuf:"bytes,8,opt,name=os_build_id,json=osBuildId,proto3" json:"os_build_id,omitempty"` - Developer string `protobuf:"bytes,9,opt,name=developer,proto3" json:"developer,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageId string `protobuf:"bytes,2,opt,name=package_id,json=packageId,proto3" json:"package_id,omitempty"` + PackageVersion string `protobuf:"bytes,3,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + ReleaseDate string `protobuf:"bytes,4,opt,name=release_date,json=releaseDate,proto3" json:"release_date,omitempty"` + OsName string `protobuf:"bytes,5,opt,name=os_name,json=osName,proto3" json:"os_name,omitempty"` + OsId string `protobuf:"bytes,6,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + OsBuildId string `protobuf:"bytes,8,opt,name=os_build_id,json=osBuildId,proto3" json:"os_build_id,omitempty"` + Developer string `protobuf:"bytes,9,opt,name=developer,proto3" json:"developer,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FlatpakPackageMetadata) Reset() { @@ -3096,18 +3144,17 @@ func (x *FlatpakPackageMetadata) GetDeveloper() string { // The additional data found in MODULE packages. type KernelModuleMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - PackageVermagic string `protobuf:"bytes,3,opt,name=package_vermagic,json=packageVermagic,proto3" json:"package_vermagic,omitempty"` - PackageSourceVersionIdentifier string `protobuf:"bytes,4,opt,name=package_source_version_identifier,json=packageSourceVersionIdentifier,proto3" json:"package_source_version_identifier,omitempty"` - OsId string `protobuf:"bytes,5,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionCodename string `protobuf:"bytes,6,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` - OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - PackageAuthor string `protobuf:"bytes,8,opt,name=package_author,json=packageAuthor,proto3" json:"package_author,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + PackageVermagic string `protobuf:"bytes,3,opt,name=package_vermagic,json=packageVermagic,proto3" json:"package_vermagic,omitempty"` + PackageSourceVersionIdentifier string `protobuf:"bytes,4,opt,name=package_source_version_identifier,json=packageSourceVersionIdentifier,proto3" json:"package_source_version_identifier,omitempty"` + OsId string `protobuf:"bytes,5,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionCodename string `protobuf:"bytes,6,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` + OsVersionId string `protobuf:"bytes,7,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + PackageAuthor string `protobuf:"bytes,8,opt,name=package_author,json=packageAuthor,proto3" json:"package_author,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *KernelModuleMetadata) Reset() { @@ -3198,22 +3245,21 @@ func (x *KernelModuleMetadata) GetPackageAuthor() string { // The additional data found in Vmlinuz packages. type VmlinuzMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Architecture string `protobuf:"bytes,3,opt,name=architecture,proto3" json:"architecture,omitempty"` - ExtendedVersion string `protobuf:"bytes,4,opt,name=extended_version,json=extendedVersion,proto3" json:"extended_version,omitempty"` - Format string `protobuf:"bytes,5,opt,name=format,proto3" json:"format,omitempty"` - SwapDevice int32 `protobuf:"varint,6,opt,name=swap_device,json=swapDevice,proto3" json:"swap_device,omitempty"` - RootDevice int32 `protobuf:"varint,7,opt,name=root_device,json=rootDevice,proto3" json:"root_device,omitempty"` - VideoMode string `protobuf:"bytes,8,opt,name=video_mode,json=videoMode,proto3" json:"video_mode,omitempty"` - OsId string `protobuf:"bytes,9,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` - OsVersionCodename string `protobuf:"bytes,10,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` - OsVersionId string `protobuf:"bytes,11,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` - RwRootFs bool `protobuf:"varint,12,opt,name=rw_root_fs,json=rwRootFs,proto3" json:"rw_root_fs,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Architecture string `protobuf:"bytes,3,opt,name=architecture,proto3" json:"architecture,omitempty"` + ExtendedVersion string `protobuf:"bytes,4,opt,name=extended_version,json=extendedVersion,proto3" json:"extended_version,omitempty"` + Format string `protobuf:"bytes,5,opt,name=format,proto3" json:"format,omitempty"` + SwapDevice int32 `protobuf:"varint,6,opt,name=swap_device,json=swapDevice,proto3" json:"swap_device,omitempty"` + RootDevice int32 `protobuf:"varint,7,opt,name=root_device,json=rootDevice,proto3" json:"root_device,omitempty"` + VideoMode string `protobuf:"bytes,8,opt,name=video_mode,json=videoMode,proto3" json:"video_mode,omitempty"` + OsId string `protobuf:"bytes,9,opt,name=os_id,json=osId,proto3" json:"os_id,omitempty"` + OsVersionCodename string `protobuf:"bytes,10,opt,name=os_version_codename,json=osVersionCodename,proto3" json:"os_version_codename,omitempty"` + OsVersionId string `protobuf:"bytes,11,opt,name=os_version_id,json=osVersionId,proto3" json:"os_version_id,omitempty"` + RwRootFs bool `protobuf:"varint,12,opt,name=rw_root_fs,json=rwRootFs,proto3" json:"rw_root_fs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VmlinuzMetadata) Reset() { @@ -3332,20 +3378,19 @@ func (x *VmlinuzMetadata) GetRwRootFs() bool { // The additional data found in Mac Applications. type MacAppsMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BundleDisplayName string `protobuf:"bytes,1,opt,name=bundle_display_name,json=bundleDisplayName,proto3" json:"bundle_display_name,omitempty"` - BundleIdentifier string `protobuf:"bytes,2,opt,name=bundle_identifier,json=bundleIdentifier,proto3" json:"bundle_identifier,omitempty"` - BundleShortVersionString string `protobuf:"bytes,3,opt,name=bundle_short_version_string,json=bundleShortVersionString,proto3" json:"bundle_short_version_string,omitempty"` - BundleExecutable string `protobuf:"bytes,4,opt,name=bundle_executable,json=bundleExecutable,proto3" json:"bundle_executable,omitempty"` - BundleName string `protobuf:"bytes,5,opt,name=bundle_name,json=bundleName,proto3" json:"bundle_name,omitempty"` - BundlePackageType string `protobuf:"bytes,6,opt,name=bundle_package_type,json=bundlePackageType,proto3" json:"bundle_package_type,omitempty"` - BundleSignature string `protobuf:"bytes,7,opt,name=bundle_signature,json=bundleSignature,proto3" json:"bundle_signature,omitempty"` - BundleVersion string `protobuf:"bytes,8,opt,name=bundle_version,json=bundleVersion,proto3" json:"bundle_version,omitempty"` - ProductId string `protobuf:"bytes,9,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"` - UpdateUrl string `protobuf:"bytes,10,opt,name=update_url,json=updateUrl,proto3" json:"update_url,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BundleDisplayName string `protobuf:"bytes,1,opt,name=bundle_display_name,json=bundleDisplayName,proto3" json:"bundle_display_name,omitempty"` + BundleIdentifier string `protobuf:"bytes,2,opt,name=bundle_identifier,json=bundleIdentifier,proto3" json:"bundle_identifier,omitempty"` + BundleShortVersionString string `protobuf:"bytes,3,opt,name=bundle_short_version_string,json=bundleShortVersionString,proto3" json:"bundle_short_version_string,omitempty"` + BundleExecutable string `protobuf:"bytes,4,opt,name=bundle_executable,json=bundleExecutable,proto3" json:"bundle_executable,omitempty"` + BundleName string `protobuf:"bytes,5,opt,name=bundle_name,json=bundleName,proto3" json:"bundle_name,omitempty"` + BundlePackageType string `protobuf:"bytes,6,opt,name=bundle_package_type,json=bundlePackageType,proto3" json:"bundle_package_type,omitempty"` + BundleSignature string `protobuf:"bytes,7,opt,name=bundle_signature,json=bundleSignature,proto3" json:"bundle_signature,omitempty"` + BundleVersion string `protobuf:"bytes,8,opt,name=bundle_version,json=bundleVersion,proto3" json:"bundle_version,omitempty"` + ProductId string `protobuf:"bytes,9,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"` + UpdateUrl string `protobuf:"bytes,10,opt,name=update_url,json=updateUrl,proto3" json:"update_url,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MacAppsMetadata) Reset() { @@ -3450,13 +3495,12 @@ func (x *MacAppsMetadata) GetUpdateUrl() string { // The additional data found in Macports packages. type MacportsPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` - PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` - PackageRevision string `protobuf:"bytes,3,opt,name=package_revision,json=packageRevision,proto3" json:"package_revision,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + PackageVersion string `protobuf:"bytes,2,opt,name=package_version,json=packageVersion,proto3" json:"package_version,omitempty"` + PackageRevision string `protobuf:"bytes,3,opt,name=package_revision,json=packageRevision,proto3" json:"package_revision,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MacportsPackageMetadata) Reset() { @@ -3512,12 +3556,11 @@ func (x *MacportsPackageMetadata) GetPackageRevision() string { // The additional data for packages extracted from SPDX files. type SPDXPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Purl *Purl `protobuf:"bytes,1,opt,name=purl,proto3" json:"purl,omitempty"` + Cpes []string `protobuf:"bytes,2,rep,name=cpes,proto3" json:"cpes,omitempty"` unknownFields protoimpl.UnknownFields - - Purl *Purl `protobuf:"bytes,1,opt,name=purl,proto3" json:"purl,omitempty"` - Cpes []string `protobuf:"bytes,2,rep,name=cpes,proto3" json:"cpes,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SPDXPackageMetadata) Reset() { @@ -3566,12 +3609,11 @@ func (x *SPDXPackageMetadata) GetCpes() []string { // The additional data for packages extracted from CDX files. type CDXPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Purl *Purl `protobuf:"bytes,1,opt,name=purl,proto3" json:"purl,omitempty"` + Cpes []string `protobuf:"bytes,2,rep,name=cpes,proto3" json:"cpes,omitempty"` unknownFields protoimpl.UnknownFields - - Purl *Purl `protobuf:"bytes,1,opt,name=purl,proto3" json:"purl,omitempty"` - Cpes []string `protobuf:"bytes,2,rep,name=cpes,proto3" json:"cpes,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CDXPackageMetadata) Reset() { @@ -3620,13 +3662,12 @@ func (x *CDXPackageMetadata) GetCpes() []string { // The additional data found in Java JAR packages. type JavaArchiveMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ArtifactId string `protobuf:"bytes,2,opt,name=artifact_id,json=artifactId,proto3" json:"artifact_id,omitempty"` + GroupId string `protobuf:"bytes,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + Sha1 string `protobuf:"bytes,4,opt,name=sha1,proto3" json:"sha1,omitempty"` unknownFields protoimpl.UnknownFields - - ArtifactId string `protobuf:"bytes,2,opt,name=artifact_id,json=artifactId,proto3" json:"artifact_id,omitempty"` - GroupId string `protobuf:"bytes,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` - Sha1 string `protobuf:"bytes,4,opt,name=sha1,proto3" json:"sha1,omitempty"` + sizeCache protoimpl.SizeCache } func (x *JavaArchiveMetadata) Reset() { @@ -3682,14 +3723,13 @@ func (x *JavaArchiveMetadata) GetSha1() string { // The additional data found in Java lockfiles. type JavaLockfileMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ArtifactId string `protobuf:"bytes,1,opt,name=artifact_id,json=artifactId,proto3" json:"artifact_id,omitempty"` + GroupId string `protobuf:"bytes,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` + DepGroupVals []string `protobuf:"bytes,3,rep,name=dep_group_vals,json=depGroupVals,proto3" json:"dep_group_vals,omitempty"` + IsTransitive bool `protobuf:"varint,4,opt,name=is_transitive,json=isTransitive,proto3" json:"is_transitive,omitempty"` unknownFields protoimpl.UnknownFields - - ArtifactId string `protobuf:"bytes,1,opt,name=artifact_id,json=artifactId,proto3" json:"artifact_id,omitempty"` - GroupId string `protobuf:"bytes,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` - DepGroupVals []string `protobuf:"bytes,3,rep,name=dep_group_vals,json=depGroupVals,proto3" json:"dep_group_vals,omitempty"` - IsTransitive bool `protobuf:"varint,4,opt,name=is_transitive,json=isTransitive,proto3" json:"is_transitive,omitempty"` + sizeCache protoimpl.SizeCache } func (x *JavaLockfileMetadata) Reset() { @@ -3752,14 +3792,13 @@ func (x *JavaLockfileMetadata) GetIsTransitive() bool { // The additional data for packages extracted by an OSV extractor wrapper. type OSVPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PurlType string `protobuf:"bytes,1,opt,name=purl_type,json=purlType,proto3" json:"purl_type,omitempty"` + Commit string `protobuf:"bytes,2,opt,name=commit,proto3" json:"commit,omitempty"` + Ecosystem string `protobuf:"bytes,3,opt,name=ecosystem,proto3" json:"ecosystem,omitempty"` + CompareAs string `protobuf:"bytes,4,opt,name=compare_as,json=compareAs,proto3" json:"compare_as,omitempty"` unknownFields protoimpl.UnknownFields - - PurlType string `protobuf:"bytes,1,opt,name=purl_type,json=purlType,proto3" json:"purl_type,omitempty"` - Commit string `protobuf:"bytes,2,opt,name=commit,proto3" json:"commit,omitempty"` - Ecosystem string `protobuf:"bytes,3,opt,name=ecosystem,proto3" json:"ecosystem,omitempty"` - CompareAs string `protobuf:"bytes,4,opt,name=compare_as,json=compareAs,proto3" json:"compare_as,omitempty"` + sizeCache protoimpl.SizeCache } func (x *OSVPackageMetadata) Reset() { @@ -3821,13 +3860,12 @@ func (x *OSVPackageMetadata) GetCompareAs() string { } type PythonRequirementsMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HashCheckingModeValues []string `protobuf:"bytes,1,rep,name=hash_checking_mode_values,json=hashCheckingModeValues,proto3" json:"hash_checking_mode_values,omitempty"` - VersionComparator string `protobuf:"bytes,2,opt,name=version_comparator,json=versionComparator,proto3" json:"version_comparator,omitempty"` - Requirement string `protobuf:"bytes,3,opt,name=requirement,proto3" json:"requirement,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + HashCheckingModeValues []string `protobuf:"bytes,1,rep,name=hash_checking_mode_values,json=hashCheckingModeValues,proto3" json:"hash_checking_mode_values,omitempty"` + VersionComparator string `protobuf:"bytes,2,opt,name=version_comparator,json=versionComparator,proto3" json:"version_comparator,omitempty"` + Requirement string `protobuf:"bytes,3,opt,name=requirement,proto3" json:"requirement,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PythonRequirementsMetadata) Reset() { @@ -3882,11 +3920,10 @@ func (x *PythonRequirementsMetadata) GetRequirement() string { } type PythonSetupMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - VersionComparator string `protobuf:"bytes,2,opt,name=version_comparator,json=versionComparator,proto3" json:"version_comparator,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + VersionComparator string `protobuf:"bytes,2,opt,name=version_comparator,json=versionComparator,proto3" json:"version_comparator,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PythonSetupMetadata) Reset() { @@ -3928,13 +3965,12 @@ func (x *PythonSetupMetadata) GetVersionComparator() string { // Used to report open ports on a system. type NetportsMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Port uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"` + Protocol string `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` + CommandLine string `protobuf:"bytes,3,opt,name=command_line,json=commandLine,proto3" json:"command_line,omitempty"` unknownFields protoimpl.UnknownFields - - Port uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"` - Protocol string `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` - CommandLine string `protobuf:"bytes,3,opt,name=command_line,json=commandLine,proto3" json:"command_line,omitempty"` + sizeCache protoimpl.SizeCache } func (x *NetportsMetadata) Reset() { @@ -3989,23 +4025,22 @@ func (x *NetportsMetadata) GetCommandLine() string { } type ContainerdContainerMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + NamespaceName string `protobuf:"bytes,1,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` + ImageName string `protobuf:"bytes,2,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` + ImageDigest string `protobuf:"bytes,3,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` + Runtime string `protobuf:"bytes,4,opt,name=runtime,proto3" json:"runtime,omitempty"` + Pid int32 `protobuf:"varint,5,opt,name=pid,proto3" json:"pid,omitempty"` + Snapshotter string `protobuf:"bytes,6,opt,name=snapshotter,proto3" json:"snapshotter,omitempty"` + SnapshotKey string `protobuf:"bytes,7,opt,name=snapshot_key,json=snapshotKey,proto3" json:"snapshot_key,omitempty"` + LowerDir string `protobuf:"bytes,8,opt,name=lower_dir,json=lowerDir,proto3" json:"lower_dir,omitempty"` + UpperDir string `protobuf:"bytes,9,opt,name=upper_dir,json=upperDir,proto3" json:"upper_dir,omitempty"` + WorkDir string `protobuf:"bytes,10,opt,name=work_dir,json=workDir,proto3" json:"work_dir,omitempty"` + Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` + PodName string `protobuf:"bytes,12,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"` + PodNamespace string `protobuf:"bytes,13,opt,name=pod_namespace,json=podNamespace,proto3" json:"pod_namespace,omitempty"` unknownFields protoimpl.UnknownFields - - NamespaceName string `protobuf:"bytes,1,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` - ImageName string `protobuf:"bytes,2,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` - ImageDigest string `protobuf:"bytes,3,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` - Runtime string `protobuf:"bytes,4,opt,name=runtime,proto3" json:"runtime,omitempty"` - Pid int32 `protobuf:"varint,5,opt,name=pid,proto3" json:"pid,omitempty"` - Snapshotter string `protobuf:"bytes,6,opt,name=snapshotter,proto3" json:"snapshotter,omitempty"` - SnapshotKey string `protobuf:"bytes,7,opt,name=snapshot_key,json=snapshotKey,proto3" json:"snapshot_key,omitempty"` - LowerDir string `protobuf:"bytes,8,opt,name=lower_dir,json=lowerDir,proto3" json:"lower_dir,omitempty"` - UpperDir string `protobuf:"bytes,9,opt,name=upper_dir,json=upperDir,proto3" json:"upper_dir,omitempty"` - WorkDir string `protobuf:"bytes,10,opt,name=work_dir,json=workDir,proto3" json:"work_dir,omitempty"` - Id string `protobuf:"bytes,11,opt,name=id,proto3" json:"id,omitempty"` - PodName string `protobuf:"bytes,12,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"` - PodNamespace string `protobuf:"bytes,13,opt,name=pod_namespace,json=podNamespace,proto3" json:"pod_namespace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ContainerdContainerMetadata) Reset() { @@ -4130,17 +4165,16 @@ func (x *ContainerdContainerMetadata) GetPodNamespace() string { } type ContainerdRuntimeContainerMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + NamespaceName string `protobuf:"bytes,1,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` + ImageName string `protobuf:"bytes,2,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` + ImageDigest string `protobuf:"bytes,3,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` + Runtime string `protobuf:"bytes,4,opt,name=runtime,proto3" json:"runtime,omitempty"` + Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"` + Pid int32 `protobuf:"varint,6,opt,name=pid,proto3" json:"pid,omitempty"` + RootfsPath string `protobuf:"bytes,7,opt,name=rootfs_path,json=rootfsPath,proto3" json:"rootfs_path,omitempty"` unknownFields protoimpl.UnknownFields - - NamespaceName string `protobuf:"bytes,1,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` - ImageName string `protobuf:"bytes,2,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` - ImageDigest string `protobuf:"bytes,3,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` - Runtime string `protobuf:"bytes,4,opt,name=runtime,proto3" json:"runtime,omitempty"` - Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"` - Pid int32 `protobuf:"varint,6,opt,name=pid,proto3" json:"pid,omitempty"` - RootfsPath string `protobuf:"bytes,7,opt,name=rootfs_path,json=rootfsPath,proto3" json:"rootfs_path,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ContainerdRuntimeContainerMetadata) Reset() { @@ -4223,12 +4257,11 @@ func (x *ContainerdRuntimeContainerMetadata) GetRootfsPath() string { } type WindowsOSVersion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Product string `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"` + FullVersion string `protobuf:"bytes,2,opt,name=full_version,json=fullVersion,proto3" json:"full_version,omitempty"` unknownFields protoimpl.UnknownFields - - Product string `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"` - FullVersion string `protobuf:"bytes,2,opt,name=full_version,json=fullVersion,proto3" json:"full_version,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WindowsOSVersion) Reset() { @@ -4277,9 +4310,9 @@ func (x *WindowsOSVersion) GetFullVersion() string { // The additional data found in Homebrew packages. type HomebrewPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HomebrewPackageMetadata) Reset() { @@ -4314,18 +4347,17 @@ func (*HomebrewPackageMetadata) Descriptor() ([]byte, []int) { // The additional data found in Chrome extensions. type ChromeExtensionsMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` - AuthorEmail string `protobuf:"bytes,3,opt,name=author_email,json=authorEmail,proto3" json:"author_email,omitempty"` - HostPermissions []string `protobuf:"bytes,4,rep,name=host_permissions,json=hostPermissions,proto3" json:"host_permissions,omitempty"` - ManifestVersion int32 `protobuf:"varint,5,opt,name=manifest_version,json=manifestVersion,proto3" json:"manifest_version,omitempty"` - MinimumChromeVersion string `protobuf:"bytes,6,opt,name=minimum_chrome_version,json=minimumChromeVersion,proto3" json:"minimum_chrome_version,omitempty"` - Permissions []string `protobuf:"bytes,7,rep,name=permissions,proto3" json:"permissions,omitempty"` - UpdateUrl string `protobuf:"bytes,8,opt,name=update_url,json=updateUrl,proto3" json:"update_url,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + AuthorEmail string `protobuf:"bytes,3,opt,name=author_email,json=authorEmail,proto3" json:"author_email,omitempty"` + HostPermissions []string `protobuf:"bytes,4,rep,name=host_permissions,json=hostPermissions,proto3" json:"host_permissions,omitempty"` + ManifestVersion int32 `protobuf:"varint,5,opt,name=manifest_version,json=manifestVersion,proto3" json:"manifest_version,omitempty"` + MinimumChromeVersion string `protobuf:"bytes,6,opt,name=minimum_chrome_version,json=minimumChromeVersion,proto3" json:"minimum_chrome_version,omitempty"` + Permissions []string `protobuf:"bytes,7,rep,name=permissions,proto3" json:"permissions,omitempty"` + UpdateUrl string `protobuf:"bytes,8,opt,name=update_url,json=updateUrl,proto3" json:"update_url,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ChromeExtensionsMetadata) Reset() { @@ -4416,17 +4448,16 @@ func (x *ChromeExtensionsMetadata) GetUpdateUrl() string { // The additional data found in VSCode extensions. type VSCodeExtensionsMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - PublisherId string `protobuf:"bytes,2,opt,name=publisher_id,json=publisherId,proto3" json:"publisher_id,omitempty"` - PublisherDisplayName string `protobuf:"bytes,3,opt,name=publisher_display_name,json=publisherDisplayName,proto3" json:"publisher_display_name,omitempty"` - TargetPlatform string `protobuf:"bytes,4,opt,name=target_platform,json=targetPlatform,proto3" json:"target_platform,omitempty"` - Updated bool `protobuf:"varint,5,opt,name=updated,proto3" json:"updated,omitempty"` - IsPreReleaseVersion bool `protobuf:"varint,6,opt,name=is_pre_release_version,json=isPreReleaseVersion,proto3" json:"is_pre_release_version,omitempty"` - InstalledTimestamp int64 `protobuf:"varint,7,opt,name=installed_timestamp,json=installedTimestamp,proto3" json:"installed_timestamp,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + PublisherId string `protobuf:"bytes,2,opt,name=publisher_id,json=publisherId,proto3" json:"publisher_id,omitempty"` + PublisherDisplayName string `protobuf:"bytes,3,opt,name=publisher_display_name,json=publisherDisplayName,proto3" json:"publisher_display_name,omitempty"` + TargetPlatform string `protobuf:"bytes,4,opt,name=target_platform,json=targetPlatform,proto3" json:"target_platform,omitempty"` + Updated bool `protobuf:"varint,5,opt,name=updated,proto3" json:"updated,omitempty"` + IsPreReleaseVersion bool `protobuf:"varint,6,opt,name=is_pre_release_version,json=isPreReleaseVersion,proto3" json:"is_pre_release_version,omitempty"` + InstalledTimestamp int64 `protobuf:"varint,7,opt,name=installed_timestamp,json=installedTimestamp,proto3" json:"installed_timestamp,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VSCodeExtensionsMetadata) Reset() { @@ -4510,11 +4541,8 @@ func (x *VSCodeExtensionsMetadata) GetInstalledTimestamp() int64 { // The additional data found in Podman containers. type PodmanMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ExposedPorts map[uint32]*Protocol `protobuf:"bytes,1,rep,name=exposed_ports,json=exposedPorts,proto3" json:"exposed_ports,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + ExposedPorts map[uint32]*Protocol `protobuf:"bytes,1,rep,name=exposed_ports,json=exposedPorts,proto3" json:"exposed_ports,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` Pid int32 `protobuf:"varint,2,opt,name=pid,proto3" json:"pid,omitempty"` NamespaceName string `protobuf:"bytes,3,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` StartedTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=started_time,json=startedTime,proto3" json:"started_time,omitempty"` @@ -4522,6 +4550,8 @@ type PodmanMetadata struct { Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` ExitCode int32 `protobuf:"varint,7,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` Exited bool `protobuf:"varint,8,opt,name=exited,proto3" json:"exited,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PodmanMetadata) Reset() { @@ -4611,11 +4641,10 @@ func (x *PodmanMetadata) GetExited() bool { } type Protocol struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` unknownFields protoimpl.UnknownFields - - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Protocol) Reset() { @@ -4656,14 +4685,13 @@ func (x *Protocol) GetNames() []string { } type DockerContainersMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ImageName string `protobuf:"bytes,1,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` + ImageDigest string `protobuf:"bytes,2,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` + Ports []*DockerPort `protobuf:"bytes,4,rep,name=ports,proto3" json:"ports,omitempty"` unknownFields protoimpl.UnknownFields - - ImageName string `protobuf:"bytes,1,opt,name=image_name,json=imageName,proto3" json:"image_name,omitempty"` - ImageDigest string `protobuf:"bytes,2,opt,name=image_digest,json=imageDigest,proto3" json:"image_digest,omitempty"` - Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` - Ports []*DockerPort `protobuf:"bytes,4,rep,name=ports,proto3" json:"ports,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DockerContainersMetadata) Reset() { @@ -4725,12 +4753,11 @@ func (x *DockerContainersMetadata) GetPorts() []*DockerPort { } type AsdfMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ToolName string `protobuf:"bytes,1,opt,name=tool_name,json=toolName,proto3" json:"tool_name,omitempty"` + ToolVersion string `protobuf:"bytes,2,opt,name=tool_version,json=toolVersion,proto3" json:"tool_version,omitempty"` unknownFields protoimpl.UnknownFields - - ToolName string `protobuf:"bytes,1,opt,name=tool_name,json=toolName,proto3" json:"tool_name,omitempty"` - ToolVersion string `protobuf:"bytes,2,opt,name=tool_version,json=toolVersion,proto3" json:"tool_version,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AsdfMetadata) Reset() { @@ -4778,11 +4805,10 @@ func (x *AsdfMetadata) GetToolVersion() string { } type NvmMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + NodejsVersion string `protobuf:"bytes,2,opt,name=nodejs_version,json=nodejsVersion,proto3" json:"nodejs_version,omitempty"` unknownFields protoimpl.UnknownFields - - NodejsVersion string `protobuf:"bytes,2,opt,name=nodejs_version,json=nodejsVersion,proto3" json:"nodejs_version,omitempty"` + sizeCache protoimpl.SizeCache } func (x *NvmMetadata) Reset() { @@ -4823,14 +4849,13 @@ func (x *NvmMetadata) GetNodejsVersion() string { } type DockerPort struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` + PrivatePort uint32 `protobuf:"varint,2,opt,name=private_port,json=privatePort,proto3" json:"private_port,omitempty"` + PublicPort uint32 `protobuf:"varint,3,opt,name=public_port,json=publicPort,proto3" json:"public_port,omitempty"` + Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` unknownFields protoimpl.UnknownFields - - Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` - PrivatePort uint32 `protobuf:"varint,2,opt,name=private_port,json=privatePort,proto3" json:"private_port,omitempty"` - PublicPort uint32 `protobuf:"varint,3,opt,name=public_port,json=publicPort,proto3" json:"public_port,omitempty"` - Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DockerPort) Reset() { @@ -4893,17 +4918,16 @@ func (x *DockerPort) GetType() string { // The additional data found in Windows Package Manager (Winget) packages. type WingetPackageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + Moniker string `protobuf:"bytes,4,opt,name=moniker,proto3" json:"moniker,omitempty"` + Channel string `protobuf:"bytes,5,opt,name=channel,proto3" json:"channel,omitempty"` + Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` + Commands []string `protobuf:"bytes,7,rep,name=commands,proto3" json:"commands,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - Moniker string `protobuf:"bytes,4,opt,name=moniker,proto3" json:"moniker,omitempty"` - Channel string `protobuf:"bytes,5,opt,name=channel,proto3" json:"channel,omitempty"` - Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"` - Commands []string `protobuf:"bytes,7,rep,name=commands,proto3" json:"commands,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WingetPackageMetadata) Reset() { @@ -4987,13 +5011,12 @@ func (x *WingetPackageMetadata) GetCommands() []string { // A secret (i.e. credential) found by Veles secret scanning. type Secret struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Secret *SecretData `protobuf:"bytes,1,opt,name=secret,proto3" json:"secret,omitempty"` + Status *SecretStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + Locations []*Location `protobuf:"bytes,3,rep,name=locations,proto3" json:"locations,omitempty"` unknownFields protoimpl.UnknownFields - - Secret *SecretData `protobuf:"bytes,1,opt,name=secret,proto3" json:"secret,omitempty"` - Status *SecretStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` - Locations []*Location `protobuf:"bytes,3,rep,name=locations,proto3" json:"locations,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Secret) Reset() { @@ -5048,11 +5071,8 @@ func (x *Secret) GetLocations() []*Location { } type SecretData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Secret: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Secret: // // *SecretData_Gcpsak // *SecretData_AnthropicWorkspaceApiKey @@ -5085,7 +5105,10 @@ type SecretData struct { // *SecretData_GithubFineGrainedPersonalAccessToken_ // *SecretData_GithubAppUserToServerToken_ // *SecretData_GithubOauthToken - Secret isSecretData_Secret `protobuf_oneof:"secret"` + // *SecretData_OpenrouterApiKey + Secret isSecretData_Secret `protobuf_oneof:"secret"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SecretData) Reset() { @@ -5118,226 +5141,297 @@ func (*SecretData) Descriptor() ([]byte, []int) { return file_proto_scan_result_proto_rawDescGZIP(), []int{54} } -func (m *SecretData) GetSecret() isSecretData_Secret { - if m != nil { - return m.Secret +func (x *SecretData) GetSecret() isSecretData_Secret { + if x != nil { + return x.Secret } return nil } func (x *SecretData) GetGcpsak() *SecretData_GCPSAK { - if x, ok := x.GetSecret().(*SecretData_Gcpsak); ok { - return x.Gcpsak + if x != nil { + if x, ok := x.Secret.(*SecretData_Gcpsak); ok { + return x.Gcpsak + } } return nil } func (x *SecretData) GetAnthropicWorkspaceApiKey() *SecretData_AnthropicWorkspaceAPIKey { - if x, ok := x.GetSecret().(*SecretData_AnthropicWorkspaceApiKey); ok { - return x.AnthropicWorkspaceApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_AnthropicWorkspaceApiKey); ok { + return x.AnthropicWorkspaceApiKey + } } return nil } func (x *SecretData) GetAnthropicModelApiKey() *SecretData_AnthropicModelAPIKey { - if x, ok := x.GetSecret().(*SecretData_AnthropicModelApiKey); ok { - return x.AnthropicModelApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_AnthropicModelApiKey); ok { + return x.AnthropicModelApiKey + } } return nil } func (x *SecretData) GetPerplexity() *SecretData_PerplexityAPIKey { - if x, ok := x.GetSecret().(*SecretData_Perplexity); ok { - return x.Perplexity + if x != nil { + if x, ok := x.Secret.(*SecretData_Perplexity); ok { + return x.Perplexity + } } return nil } func (x *SecretData) GetPrivateKey() *SecretData_PrivateKey { - if x, ok := x.GetSecret().(*SecretData_PrivateKey_); ok { - return x.PrivateKey + if x != nil { + if x, ok := x.Secret.(*SecretData_PrivateKey_); ok { + return x.PrivateKey + } } return nil } func (x *SecretData) GetGrokXaiApiKey() *SecretData_GrokXAIAPIKey { - if x, ok := x.GetSecret().(*SecretData_GrokXaiApiKey); ok { - return x.GrokXaiApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_GrokXaiApiKey); ok { + return x.GrokXaiApiKey + } } return nil } func (x *SecretData) GetGrokXaiManagementApiKey() *SecretData_GrokXAIManagementAPIKey { - if x, ok := x.GetSecret().(*SecretData_GrokXaiManagementApiKey); ok { - return x.GrokXaiManagementApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_GrokXaiManagementApiKey); ok { + return x.GrokXaiManagementApiKey + } } return nil } func (x *SecretData) GetDockerHubPat() *SecretData_DockerHubPat { - if x, ok := x.GetSecret().(*SecretData_DockerHubPat_); ok { - return x.DockerHubPat + if x != nil { + if x, ok := x.Secret.(*SecretData_DockerHubPat_); ok { + return x.DockerHubPat + } } return nil } func (x *SecretData) GetDigitalocean() *SecretData_DigitalOceanAPIToken { - if x, ok := x.GetSecret().(*SecretData_Digitalocean); ok { - return x.Digitalocean + if x != nil { + if x, ok := x.Secret.(*SecretData_Digitalocean); ok { + return x.Digitalocean + } } return nil } func (x *SecretData) GetOpenaiApiKey() *SecretData_OpenAIAPIKey { - if x, ok := x.GetSecret().(*SecretData_OpenaiApiKey); ok { - return x.OpenaiApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_OpenaiApiKey); ok { + return x.OpenaiApiKey + } } return nil } func (x *SecretData) GetPostmanApiKey() *SecretData_PostmanAPIKey { - if x, ok := x.GetSecret().(*SecretData_PostmanApiKey); ok { - return x.PostmanApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_PostmanApiKey); ok { + return x.PostmanApiKey + } } return nil } func (x *SecretData) GetPostmanCollectionAccessToken() *SecretData_PostmanCollectionAccessToken { - if x, ok := x.GetSecret().(*SecretData_PostmanCollectionAccessToken_); ok { - return x.PostmanCollectionAccessToken + if x != nil { + if x, ok := x.Secret.(*SecretData_PostmanCollectionAccessToken_); ok { + return x.PostmanCollectionAccessToken + } } return nil } func (x *SecretData) GetAzureAccessToken() *SecretData_AzureAccessToken { - if x, ok := x.GetSecret().(*SecretData_AzureAccessToken_); ok { - return x.AzureAccessToken + if x != nil { + if x, ok := x.Secret.(*SecretData_AzureAccessToken_); ok { + return x.AzureAccessToken + } } return nil } func (x *SecretData) GetAzureIdentityToken() *SecretData_AzureIdentityToken { - if x, ok := x.GetSecret().(*SecretData_AzureIdentityToken_); ok { - return x.AzureIdentityToken + if x != nil { + if x, ok := x.Secret.(*SecretData_AzureIdentityToken_); ok { + return x.AzureIdentityToken + } } return nil } func (x *SecretData) GetTinkKeyset() *SecretData_TinkKeyset { - if x, ok := x.GetSecret().(*SecretData_TinkKeyset_); ok { - return x.TinkKeyset + if x != nil { + if x, ok := x.Secret.(*SecretData_TinkKeyset_); ok { + return x.TinkKeyset + } } return nil } func (x *SecretData) GetGitlabPat() *SecretData_GitlabPat { - if x, ok := x.GetSecret().(*SecretData_GitlabPat_); ok { - return x.GitlabPat + if x != nil { + if x, ok := x.Secret.(*SecretData_GitlabPat_); ok { + return x.GitlabPat + } } return nil } func (x *SecretData) GetHashicorpVaultToken() *SecretData_HashiCorpVaultToken { - if x, ok := x.GetSecret().(*SecretData_HashicorpVaultToken); ok { - return x.HashicorpVaultToken + if x != nil { + if x, ok := x.Secret.(*SecretData_HashicorpVaultToken); ok { + return x.HashicorpVaultToken + } } return nil } func (x *SecretData) GetHashicorpVaultAppRoleCredentials() *SecretData_HashiCorpVaultAppRoleCredentials { - if x, ok := x.GetSecret().(*SecretData_HashicorpVaultAppRoleCredentials); ok { - return x.HashicorpVaultAppRoleCredentials + if x != nil { + if x, ok := x.Secret.(*SecretData_HashicorpVaultAppRoleCredentials); ok { + return x.HashicorpVaultAppRoleCredentials + } } return nil } func (x *SecretData) GetGcpApiKey() *SecretData_GCPAPIKey { - if x, ok := x.GetSecret().(*SecretData_GcpApiKey); ok { - return x.GcpApiKey + if x != nil { + if x, ok := x.Secret.(*SecretData_GcpApiKey); ok { + return x.GcpApiKey + } } return nil } func (x *SecretData) GetHugginface() *SecretData_HuggingfaceAPIKey { - if x, ok := x.GetSecret().(*SecretData_Hugginface); ok { - return x.Hugginface + if x != nil { + if x, ok := x.Secret.(*SecretData_Hugginface); ok { + return x.Hugginface + } } return nil } func (x *SecretData) GetGithubAppRefreshToken() *SecretData_GithubAppRefreshToken { - if x, ok := x.GetSecret().(*SecretData_GithubAppRefreshToken_); ok { - return x.GithubAppRefreshToken + if x != nil { + if x, ok := x.Secret.(*SecretData_GithubAppRefreshToken_); ok { + return x.GithubAppRefreshToken + } } return nil } func (x *SecretData) GetStripeSecretKey() *SecretData_StripeSecretKey { - if x, ok := x.GetSecret().(*SecretData_StripeSecretKey_); ok { - return x.StripeSecretKey + if x != nil { + if x, ok := x.Secret.(*SecretData_StripeSecretKey_); ok { + return x.StripeSecretKey + } } return nil } func (x *SecretData) GetStripeRestrictedKey() *SecretData_StripeRestrictedKey { - if x, ok := x.GetSecret().(*SecretData_StripeRestrictedKey_); ok { - return x.StripeRestrictedKey + if x != nil { + if x, ok := x.Secret.(*SecretData_StripeRestrictedKey_); ok { + return x.StripeRestrictedKey + } } return nil } func (x *SecretData) GetStripeWebhookSecret() *SecretData_StripeWebhookSecret { - if x, ok := x.GetSecret().(*SecretData_StripeWebhookSecret_); ok { - return x.StripeWebhookSecret + if x != nil { + if x, ok := x.Secret.(*SecretData_StripeWebhookSecret_); ok { + return x.StripeWebhookSecret + } } return nil } func (x *SecretData) GetGcpOauth2ClientCredentials() *SecretData_GCPOAuth2ClientCredentials { - if x, ok := x.GetSecret().(*SecretData_GcpOauth2ClientCredentials); ok { - return x.GcpOauth2ClientCredentials + if x != nil { + if x, ok := x.Secret.(*SecretData_GcpOauth2ClientCredentials); ok { + return x.GcpOauth2ClientCredentials + } } return nil } func (x *SecretData) GetGcpOauth2AccessToken() *SecretData_GCPOAuth2AccessToken { - if x, ok := x.GetSecret().(*SecretData_GcpOauth2AccessToken); ok { - return x.GcpOauth2AccessToken + if x != nil { + if x, ok := x.Secret.(*SecretData_GcpOauth2AccessToken); ok { + return x.GcpOauth2AccessToken + } } return nil } func (x *SecretData) GetGithubAppServerToServerToken() *SecretData_GithubAppServerToServerToken { - if x, ok := x.GetSecret().(*SecretData_GithubAppServerToServerToken_); ok { - return x.GithubAppServerToServerToken + if x != nil { + if x, ok := x.Secret.(*SecretData_GithubAppServerToServerToken_); ok { + return x.GithubAppServerToServerToken + } } return nil } func (x *SecretData) GetGithubClassicPersonalAccessToken() *SecretData_GithubClassicPersonalAccessToken { - if x, ok := x.GetSecret().(*SecretData_GithubClassicPersonalAccessToken_); ok { - return x.GithubClassicPersonalAccessToken + if x != nil { + if x, ok := x.Secret.(*SecretData_GithubClassicPersonalAccessToken_); ok { + return x.GithubClassicPersonalAccessToken + } } return nil } func (x *SecretData) GetGithubFineGrainedPersonalAccessToken() *SecretData_GithubFineGrainedPersonalAccessToken { - if x, ok := x.GetSecret().(*SecretData_GithubFineGrainedPersonalAccessToken_); ok { - return x.GithubFineGrainedPersonalAccessToken + if x != nil { + if x, ok := x.Secret.(*SecretData_GithubFineGrainedPersonalAccessToken_); ok { + return x.GithubFineGrainedPersonalAccessToken + } } return nil } func (x *SecretData) GetGithubAppUserToServerToken() *SecretData_GithubAppUserToServerToken { - if x, ok := x.GetSecret().(*SecretData_GithubAppUserToServerToken_); ok { - return x.GithubAppUserToServerToken + if x != nil { + if x, ok := x.Secret.(*SecretData_GithubAppUserToServerToken_); ok { + return x.GithubAppUserToServerToken + } } return nil } func (x *SecretData) GetGithubOauthToken() *SecretData_GithubOAuthToken { - if x, ok := x.GetSecret().(*SecretData_GithubOauthToken); ok { - return x.GithubOauthToken + if x != nil { + if x, ok := x.Secret.(*SecretData_GithubOauthToken); ok { + return x.GithubOauthToken + } + } + return nil +} + +func (x *SecretData) GetOpenrouterApiKey() *SecretData_OpenRouterAPIKey { + if x != nil { + if x, ok := x.Secret.(*SecretData_OpenrouterApiKey); ok { + return x.OpenrouterApiKey + } } return nil } @@ -5470,6 +5564,10 @@ type SecretData_GithubOauthToken struct { GithubOauthToken *SecretData_GithubOAuthToken `protobuf:"bytes,31,opt,name=github_oauth_token,json=githubOauthToken,proto3,oneof"` } +type SecretData_OpenrouterApiKey struct { + OpenrouterApiKey *SecretData_OpenRouterAPIKey `protobuf:"bytes,32,opt,name=openrouter_api_key,json=openrouterApiKey,proto3,oneof"` +} + func (*SecretData_Gcpsak) isSecretData_Secret() {} func (*SecretData_AnthropicWorkspaceApiKey) isSecretData_Secret() {} @@ -5532,13 +5630,14 @@ func (*SecretData_GithubAppUserToServerToken_) isSecretData_Secret() {} func (*SecretData_GithubOauthToken) isSecretData_Secret() {} +func (*SecretData_OpenrouterApiKey) isSecretData_Secret() {} + type SecretStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status SecretStatus_SecretStatusEnum `protobuf:"varint,1,opt,name=status,proto3,enum=scalibr.SecretStatus_SecretStatusEnum" json:"status,omitempty"` + LastUpdated *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` unknownFields protoimpl.UnknownFields - - Status SecretStatus_SecretStatusEnum `protobuf:"varint,1,opt,name=status,proto3,enum=scalibr.SecretStatus_SecretStatusEnum" json:"status,omitempty"` - LastUpdated *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretStatus) Reset() { @@ -5586,17 +5685,16 @@ func (x *SecretStatus) GetLastUpdated() *timestamppb.Timestamp { } type Location struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Location: + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Location: // // *Location_Filepath // *Location_FilepathWithLayerDetails // *Location_EnvironmentVariable // *Location_ContainerCommand - Location isLocation_Location `protobuf_oneof:"location"` + Location isLocation_Location `protobuf_oneof:"location"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Location) Reset() { @@ -5629,37 +5727,45 @@ func (*Location) Descriptor() ([]byte, []int) { return file_proto_scan_result_proto_rawDescGZIP(), []int{56} } -func (m *Location) GetLocation() isLocation_Location { - if m != nil { - return m.Location +func (x *Location) GetLocation() isLocation_Location { + if x != nil { + return x.Location } return nil } func (x *Location) GetFilepath() *Filepath { - if x, ok := x.GetLocation().(*Location_Filepath); ok { - return x.Filepath + if x != nil { + if x, ok := x.Location.(*Location_Filepath); ok { + return x.Filepath + } } return nil } func (x *Location) GetFilepathWithLayerDetails() *FilepathWithLayerDetails { - if x, ok := x.GetLocation().(*Location_FilepathWithLayerDetails); ok { - return x.FilepathWithLayerDetails + if x != nil { + if x, ok := x.Location.(*Location_FilepathWithLayerDetails); ok { + return x.FilepathWithLayerDetails + } } return nil } func (x *Location) GetEnvironmentVariable() *EnvironmentVariable { - if x, ok := x.GetLocation().(*Location_EnvironmentVariable); ok { - return x.EnvironmentVariable + if x != nil { + if x, ok := x.Location.(*Location_EnvironmentVariable); ok { + return x.EnvironmentVariable + } } return nil } func (x *Location) GetContainerCommand() *ContainerCommand { - if x, ok := x.GetLocation().(*Location_ContainerCommand); ok { - return x.ContainerCommand + if x != nil { + if x, ok := x.Location.(*Location_ContainerCommand); ok { + return x.ContainerCommand + } } return nil } @@ -5693,11 +5799,10 @@ func (*Location_EnvironmentVariable) isLocation_Location() {} func (*Location_ContainerCommand) isLocation_Location() {} type Filepath struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` unknownFields protoimpl.UnknownFields - - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Filepath) Reset() { @@ -5738,12 +5843,11 @@ func (x *Filepath) GetPath() string { } type FilepathWithLayerDetails struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + LayerDetails *LayerDetails `protobuf:"bytes,2,opt,name=layer_details,json=layerDetails,proto3" json:"layer_details,omitempty"` unknownFields protoimpl.UnknownFields - - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - LayerDetails *LayerDetails `protobuf:"bytes,2,opt,name=layer_details,json=layerDetails,proto3" json:"layer_details,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FilepathWithLayerDetails) Reset() { @@ -5791,11 +5895,10 @@ func (x *FilepathWithLayerDetails) GetLayerDetails() *LayerDetails { } type EnvironmentVariable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EnvironmentVariable) Reset() { @@ -5836,11 +5939,10 @@ func (x *EnvironmentVariable) GetName() string { } type ContainerCommand struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"` unknownFields protoimpl.UnknownFields - - Command string `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ContainerCommand) Reset() { @@ -5881,11 +5983,8 @@ func (x *ContainerCommand) GetCommand() string { } type ContainerImageMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Index int32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Index int32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` // Layers are ordered from the earliest to the latest. LayerMetadata []*LayerMetadata `protobuf:"bytes,2,rep,name=layer_metadata,json=layerMetadata,proto3" json:"layer_metadata,omitempty"` // The base images that make up the chain. @@ -5896,6 +5995,8 @@ type ContainerImageMetadata struct { // The base images are ordered from the biggest base image containing all base // images to the smallest. e.g. [empty, postgresql, alpine] BaseImageChains []*BaseImageChain `protobuf:"bytes,3,rep,name=base_image_chains,json=baseImageChains,proto3" json:"base_image_chains,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ContainerImageMetadata) Reset() { @@ -5950,14 +6051,13 @@ func (x *ContainerImageMetadata) GetBaseImageChains() []*BaseImageChain { } type BaseImageChain struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // List of potential base images (repositories that have a matching ChainID). BaseImages []*BaseImageDetails `protobuf:"bytes,1,rep,name=base_images,json=baseImages,proto3" json:"base_images,omitempty"` // Chain ID of the last layer in the image. - ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BaseImageChain) Reset() { @@ -6005,16 +6105,15 @@ func (x *BaseImageChain) GetChainId() string { } type BaseImageDetails struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Name of the image. (e.g. `debian`, `circleci/node`) Repository string `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // Name of the registry. (e.g. `docker.io`, `ghcr.io`) Registry string `protobuf:"bytes,2,opt,name=registry,proto3" json:"registry,omitempty"` // Name of the plugin used to extract the base image. - Plugin string `protobuf:"bytes,3,opt,name=plugin,proto3" json:"plugin,omitempty"` + Plugin string `protobuf:"bytes,3,opt,name=plugin,proto3" json:"plugin,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BaseImageDetails) Reset() { @@ -6069,10 +6168,7 @@ func (x *BaseImageDetails) GetPlugin() string { } type LayerMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The index of the layer within the ContainerImageMetadata.layer_metadata // field. Index int32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` @@ -6085,6 +6181,8 @@ type LayerMetadata struct { // The index of the base image match within the // ContainerImageMetadata.base_image_chains field. BaseImageIndex int32 `protobuf:"varint,6,opt,name=base_image_index,json=baseImageIndex,proto3" json:"base_image_index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LayerMetadata) Reset() { @@ -6160,15 +6258,14 @@ func (x *LayerMetadata) GetBaseImageIndex() int32 { } type Package_ContainerImageMetadataIndexes struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The index of ContainerImageMetadata in Inventory.ContainerImageMetadata // list. ContainerImageIndex int32 `protobuf:"varint,1,opt,name=container_image_index,json=containerImageIndex,proto3" json:"container_image_index,omitempty"` // The index of LayerMetadata in ContainerImageMetadata.LayerMetadata list. - LayerIndex int32 `protobuf:"varint,2,opt,name=layer_index,json=layerIndex,proto3" json:"layer_index,omitempty"` + LayerIndex int32 `protobuf:"varint,2,opt,name=layer_index,json=layerIndex,proto3" json:"layer_index,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Package_ContainerImageMetadataIndexes) Reset() { @@ -6216,10 +6313,7 @@ func (x *Package_ContainerImageMetadataIndexes) GetLayerIndex() int32 { } type SecretData_GCPSAK struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Always filled. PrivateKeyId string `protobuf:"bytes,1,opt,name=private_key_id,json=privateKeyId,proto3" json:"private_key_id,omitempty"` ClientEmail string `protobuf:"bytes,2,opt,name=client_email,json=clientEmail,proto3" json:"client_email,omitempty"` @@ -6235,7 +6329,9 @@ type SecretData_GCPSAK struct { UniverseDomain string `protobuf:"bytes,11,opt,name=universe_domain,json=universeDomain,proto3" json:"universe_domain,omitempty"` // Should not be filled out unless very explicitly requested accepting the // risk that this might accidentally leak the key. - PrivateKey string `protobuf:"bytes,12,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` + PrivateKey string `protobuf:"bytes,12,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SecretData_GCPSAK) Reset() { @@ -6353,12 +6449,11 @@ func (x *SecretData_GCPSAK) GetPrivateKey() string { } type SecretData_AnthropicWorkspaceAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The Anthropic Workspace API key (contains "admin01"). - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SecretData_AnthropicWorkspaceAPIKey) Reset() { @@ -6399,12 +6494,11 @@ func (x *SecretData_AnthropicWorkspaceAPIKey) GetKey() string { } type SecretData_AnthropicModelAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The Anthropic Model API key (regular API key for model access). - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SecretData_AnthropicModelAPIKey) Reset() { @@ -6445,11 +6539,10 @@ func (x *SecretData_AnthropicModelAPIKey) GetKey() string { } type SecretData_PerplexityAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_PerplexityAPIKey) Reset() { @@ -6490,11 +6583,10 @@ func (x *SecretData_PerplexityAPIKey) GetKey() string { } type SecretData_GrokXAIAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GrokXAIAPIKey) Reset() { @@ -6535,11 +6627,10 @@ func (x *SecretData_GrokXAIAPIKey) GetKey() string { } type SecretData_GrokXAIManagementAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GrokXAIManagementAPIKey) Reset() { @@ -6580,12 +6671,11 @@ func (x *SecretData_GrokXAIManagementAPIKey) GetKey() string { } type SecretData_PrivateKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Block string `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` // PEM/OpenSSH private key block + Der []byte `protobuf:"bytes,2,opt,name=der,proto3" json:"der,omitempty"` // DER-encoded key material unknownFields protoimpl.UnknownFields - - Block string `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"` // PEM/OpenSSH private key block - Der []byte `protobuf:"bytes,2,opt,name=der,proto3" json:"der,omitempty"` // DER-encoded key material + sizeCache protoimpl.SizeCache } func (x *SecretData_PrivateKey) Reset() { @@ -6633,11 +6723,10 @@ func (x *SecretData_PrivateKey) GetDer() []byte { } type SecretData_AzureAccessToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_AzureAccessToken) Reset() { @@ -6678,11 +6767,10 @@ func (x *SecretData_AzureAccessToken) GetToken() string { } type SecretData_AzureIdentityToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_AzureIdentityToken) Reset() { @@ -6723,11 +6811,10 @@ func (x *SecretData_AzureIdentityToken) GetToken() string { } type SecretData_OpenAIAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_OpenAIAPIKey) Reset() { @@ -6768,12 +6855,11 @@ func (x *SecretData_OpenAIAPIKey) GetKey() string { } type SecretData_DockerHubPat struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Pat string `protobuf:"bytes,1,opt,name=pat,proto3" json:"pat,omitempty"` + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` unknownFields protoimpl.UnknownFields - - Pat string `protobuf:"bytes,1,opt,name=pat,proto3" json:"pat,omitempty"` - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_DockerHubPat) Reset() { @@ -6821,11 +6907,10 @@ func (x *SecretData_DockerHubPat) GetUsername() string { } type SecretData_GitlabPat struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Pat string `protobuf:"bytes,1,opt,name=pat,proto3" json:"pat,omitempty"` unknownFields protoimpl.UnknownFields - - Pat string `protobuf:"bytes,1,opt,name=pat,proto3" json:"pat,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GitlabPat) Reset() { @@ -6866,11 +6951,10 @@ func (x *SecretData_GitlabPat) GetPat() string { } type SecretData_PostmanAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_PostmanAPIKey) Reset() { @@ -6911,11 +6995,10 @@ func (x *SecretData_PostmanAPIKey) GetKey() string { } type SecretData_PostmanCollectionAccessToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_PostmanCollectionAccessToken) Reset() { @@ -6955,17 +7038,60 @@ func (x *SecretData_PostmanCollectionAccessToken) GetKey() string { return "" } -type SecretData_DigitalOceanAPIToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +type SecretData_OpenRouterAPIKey struct { + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` +func (x *SecretData_OpenRouterAPIKey) Reset() { + *x = SecretData_OpenRouterAPIKey{} + mi := &file_proto_scan_result_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SecretData_OpenRouterAPIKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecretData_OpenRouterAPIKey) ProtoMessage() {} + +func (x *SecretData_OpenRouterAPIKey) ProtoReflect() protoreflect.Message { + mi := &file_proto_scan_result_proto_msgTypes[81] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecretData_OpenRouterAPIKey.ProtoReflect.Descriptor instead. +func (*SecretData_OpenRouterAPIKey) Descriptor() ([]byte, []int) { + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 14} +} + +func (x *SecretData_OpenRouterAPIKey) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +type SecretData_DigitalOceanAPIToken struct { + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SecretData_DigitalOceanAPIToken) Reset() { *x = SecretData_DigitalOceanAPIToken{} - mi := &file_proto_scan_result_proto_msgTypes[81] + mi := &file_proto_scan_result_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6977,7 +7103,7 @@ func (x *SecretData_DigitalOceanAPIToken) String() string { func (*SecretData_DigitalOceanAPIToken) ProtoMessage() {} func (x *SecretData_DigitalOceanAPIToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[81] + mi := &file_proto_scan_result_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6990,7 +7116,7 @@ func (x *SecretData_DigitalOceanAPIToken) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_DigitalOceanAPIToken.ProtoReflect.Descriptor instead. func (*SecretData_DigitalOceanAPIToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 14} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 15} } func (x *SecretData_DigitalOceanAPIToken) GetKey() string { @@ -7001,16 +7127,15 @@ func (x *SecretData_DigitalOceanAPIToken) GetKey() string { } type SecretData_GithubAppRefreshToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GithubAppRefreshToken) Reset() { *x = SecretData_GithubAppRefreshToken{} - mi := &file_proto_scan_result_proto_msgTypes[82] + mi := &file_proto_scan_result_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7022,7 +7147,7 @@ func (x *SecretData_GithubAppRefreshToken) String() string { func (*SecretData_GithubAppRefreshToken) ProtoMessage() {} func (x *SecretData_GithubAppRefreshToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[82] + mi := &file_proto_scan_result_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7035,7 +7160,7 @@ func (x *SecretData_GithubAppRefreshToken) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_GithubAppRefreshToken.ProtoReflect.Descriptor instead. func (*SecretData_GithubAppRefreshToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 15} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 16} } func (x *SecretData_GithubAppRefreshToken) GetToken() string { @@ -7046,16 +7171,15 @@ func (x *SecretData_GithubAppRefreshToken) GetToken() string { } type SecretData_GithubAppServerToServerToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GithubAppServerToServerToken) Reset() { *x = SecretData_GithubAppServerToServerToken{} - mi := &file_proto_scan_result_proto_msgTypes[83] + mi := &file_proto_scan_result_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7067,7 +7191,7 @@ func (x *SecretData_GithubAppServerToServerToken) String() string { func (*SecretData_GithubAppServerToServerToken) ProtoMessage() {} func (x *SecretData_GithubAppServerToServerToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[83] + mi := &file_proto_scan_result_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7080,7 +7204,7 @@ func (x *SecretData_GithubAppServerToServerToken) ProtoReflect() protoreflect.Me // Deprecated: Use SecretData_GithubAppServerToServerToken.ProtoReflect.Descriptor instead. func (*SecretData_GithubAppServerToServerToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 16} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 17} } func (x *SecretData_GithubAppServerToServerToken) GetToken() string { @@ -7091,16 +7215,15 @@ func (x *SecretData_GithubAppServerToServerToken) GetToken() string { } type SecretData_GithubClassicPersonalAccessToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GithubClassicPersonalAccessToken) Reset() { *x = SecretData_GithubClassicPersonalAccessToken{} - mi := &file_proto_scan_result_proto_msgTypes[84] + mi := &file_proto_scan_result_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7112,7 +7235,7 @@ func (x *SecretData_GithubClassicPersonalAccessToken) String() string { func (*SecretData_GithubClassicPersonalAccessToken) ProtoMessage() {} func (x *SecretData_GithubClassicPersonalAccessToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[84] + mi := &file_proto_scan_result_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7125,7 +7248,7 @@ func (x *SecretData_GithubClassicPersonalAccessToken) ProtoReflect() protoreflec // Deprecated: Use SecretData_GithubClassicPersonalAccessToken.ProtoReflect.Descriptor instead. func (*SecretData_GithubClassicPersonalAccessToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 17} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 18} } func (x *SecretData_GithubClassicPersonalAccessToken) GetToken() string { @@ -7136,16 +7259,15 @@ func (x *SecretData_GithubClassicPersonalAccessToken) GetToken() string { } type SecretData_GithubFineGrainedPersonalAccessToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GithubFineGrainedPersonalAccessToken) Reset() { *x = SecretData_GithubFineGrainedPersonalAccessToken{} - mi := &file_proto_scan_result_proto_msgTypes[85] + mi := &file_proto_scan_result_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7157,7 +7279,7 @@ func (x *SecretData_GithubFineGrainedPersonalAccessToken) String() string { func (*SecretData_GithubFineGrainedPersonalAccessToken) ProtoMessage() {} func (x *SecretData_GithubFineGrainedPersonalAccessToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[85] + mi := &file_proto_scan_result_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7170,7 +7292,7 @@ func (x *SecretData_GithubFineGrainedPersonalAccessToken) ProtoReflect() protore // Deprecated: Use SecretData_GithubFineGrainedPersonalAccessToken.ProtoReflect.Descriptor instead. func (*SecretData_GithubFineGrainedPersonalAccessToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 18} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 19} } func (x *SecretData_GithubFineGrainedPersonalAccessToken) GetToken() string { @@ -7181,16 +7303,15 @@ func (x *SecretData_GithubFineGrainedPersonalAccessToken) GetToken() string { } type SecretData_GithubOAuthToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GithubOAuthToken) Reset() { *x = SecretData_GithubOAuthToken{} - mi := &file_proto_scan_result_proto_msgTypes[86] + mi := &file_proto_scan_result_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7202,7 +7323,7 @@ func (x *SecretData_GithubOAuthToken) String() string { func (*SecretData_GithubOAuthToken) ProtoMessage() {} func (x *SecretData_GithubOAuthToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[86] + mi := &file_proto_scan_result_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7215,7 +7336,7 @@ func (x *SecretData_GithubOAuthToken) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_GithubOAuthToken.ProtoReflect.Descriptor instead. func (*SecretData_GithubOAuthToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 19} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 20} } func (x *SecretData_GithubOAuthToken) GetToken() string { @@ -7226,16 +7347,15 @@ func (x *SecretData_GithubOAuthToken) GetToken() string { } type SecretData_GithubAppUserToServerToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GithubAppUserToServerToken) Reset() { *x = SecretData_GithubAppUserToServerToken{} - mi := &file_proto_scan_result_proto_msgTypes[87] + mi := &file_proto_scan_result_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7247,7 +7367,7 @@ func (x *SecretData_GithubAppUserToServerToken) String() string { func (*SecretData_GithubAppUserToServerToken) ProtoMessage() {} func (x *SecretData_GithubAppUserToServerToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[87] + mi := &file_proto_scan_result_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7260,7 +7380,7 @@ func (x *SecretData_GithubAppUserToServerToken) ProtoReflect() protoreflect.Mess // Deprecated: Use SecretData_GithubAppUserToServerToken.ProtoReflect.Descriptor instead. func (*SecretData_GithubAppUserToServerToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 20} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 21} } func (x *SecretData_GithubAppUserToServerToken) GetToken() string { @@ -7271,16 +7391,15 @@ func (x *SecretData_GithubAppUserToServerToken) GetToken() string { } type SecretData_TinkKeyset struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` // JSON encoded Tink keyset unknownFields protoimpl.UnknownFields - - Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` // JSON encoded Tink keyset + sizeCache protoimpl.SizeCache } func (x *SecretData_TinkKeyset) Reset() { *x = SecretData_TinkKeyset{} - mi := &file_proto_scan_result_proto_msgTypes[88] + mi := &file_proto_scan_result_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7292,7 +7411,7 @@ func (x *SecretData_TinkKeyset) String() string { func (*SecretData_TinkKeyset) ProtoMessage() {} func (x *SecretData_TinkKeyset) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[88] + mi := &file_proto_scan_result_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7305,7 +7424,7 @@ func (x *SecretData_TinkKeyset) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_TinkKeyset.ProtoReflect.Descriptor instead. func (*SecretData_TinkKeyset) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 21} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 22} } func (x *SecretData_TinkKeyset) GetContent() string { @@ -7316,16 +7435,15 @@ func (x *SecretData_TinkKeyset) GetContent() string { } type SecretData_HashiCorpVaultToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_HashiCorpVaultToken) Reset() { *x = SecretData_HashiCorpVaultToken{} - mi := &file_proto_scan_result_proto_msgTypes[89] + mi := &file_proto_scan_result_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7337,7 +7455,7 @@ func (x *SecretData_HashiCorpVaultToken) String() string { func (*SecretData_HashiCorpVaultToken) ProtoMessage() {} func (x *SecretData_HashiCorpVaultToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[89] + mi := &file_proto_scan_result_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7350,7 +7468,7 @@ func (x *SecretData_HashiCorpVaultToken) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_HashiCorpVaultToken.ProtoReflect.Descriptor instead. func (*SecretData_HashiCorpVaultToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 22} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 23} } func (x *SecretData_HashiCorpVaultToken) GetToken() string { @@ -7361,18 +7479,17 @@ func (x *SecretData_HashiCorpVaultToken) GetToken() string { } type SecretData_HashiCorpVaultAppRoleCredentials struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + RoleId string `protobuf:"bytes,1,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + SecretId string `protobuf:"bytes,2,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` // General ID field for uncertain UUID types when context is unclear unknownFields protoimpl.UnknownFields - - RoleId string `protobuf:"bytes,1,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` - SecretId string `protobuf:"bytes,2,opt,name=secret_id,json=secretId,proto3" json:"secret_id,omitempty"` - Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` // General ID field for uncertain UUID types when context is unclear + sizeCache protoimpl.SizeCache } func (x *SecretData_HashiCorpVaultAppRoleCredentials) Reset() { *x = SecretData_HashiCorpVaultAppRoleCredentials{} - mi := &file_proto_scan_result_proto_msgTypes[90] + mi := &file_proto_scan_result_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7384,7 +7501,7 @@ func (x *SecretData_HashiCorpVaultAppRoleCredentials) String() string { func (*SecretData_HashiCorpVaultAppRoleCredentials) ProtoMessage() {} func (x *SecretData_HashiCorpVaultAppRoleCredentials) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[90] + mi := &file_proto_scan_result_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7397,7 +7514,7 @@ func (x *SecretData_HashiCorpVaultAppRoleCredentials) ProtoReflect() protoreflec // Deprecated: Use SecretData_HashiCorpVaultAppRoleCredentials.ProtoReflect.Descriptor instead. func (*SecretData_HashiCorpVaultAppRoleCredentials) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 23} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 24} } func (x *SecretData_HashiCorpVaultAppRoleCredentials) GetRoleId() string { @@ -7422,16 +7539,15 @@ func (x *SecretData_HashiCorpVaultAppRoleCredentials) GetId() string { } type SecretData_GCPAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GCPAPIKey) Reset() { *x = SecretData_GCPAPIKey{} - mi := &file_proto_scan_result_proto_msgTypes[91] + mi := &file_proto_scan_result_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7443,7 +7559,7 @@ func (x *SecretData_GCPAPIKey) String() string { func (*SecretData_GCPAPIKey) ProtoMessage() {} func (x *SecretData_GCPAPIKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[91] + mi := &file_proto_scan_result_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7456,7 +7572,7 @@ func (x *SecretData_GCPAPIKey) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_GCPAPIKey.ProtoReflect.Descriptor instead. func (*SecretData_GCPAPIKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 24} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 25} } func (x *SecretData_GCPAPIKey) GetKey() string { @@ -7467,18 +7583,17 @@ func (x *SecretData_GCPAPIKey) GetKey() string { } type SecretData_HuggingfaceAPIKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` - FineGrainedScope []string `protobuf:"bytes,3,rep,name=fine_grained_scope,json=fineGrainedScope,proto3" json:"fine_grained_scope,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + FineGrainedScope []string `protobuf:"bytes,3,rep,name=fine_grained_scope,json=fineGrainedScope,proto3" json:"fine_grained_scope,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SecretData_HuggingfaceAPIKey) Reset() { *x = SecretData_HuggingfaceAPIKey{} - mi := &file_proto_scan_result_proto_msgTypes[92] + mi := &file_proto_scan_result_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7490,7 +7605,7 @@ func (x *SecretData_HuggingfaceAPIKey) String() string { func (*SecretData_HuggingfaceAPIKey) ProtoMessage() {} func (x *SecretData_HuggingfaceAPIKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[92] + mi := &file_proto_scan_result_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7503,7 +7618,7 @@ func (x *SecretData_HuggingfaceAPIKey) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_HuggingfaceAPIKey.ProtoReflect.Descriptor instead. func (*SecretData_HuggingfaceAPIKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 25} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 26} } func (x *SecretData_HuggingfaceAPIKey) GetKey() string { @@ -7528,16 +7643,15 @@ func (x *SecretData_HuggingfaceAPIKey) GetFineGrainedScope() []string { } type SecretData_StripeSecretKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_StripeSecretKey) Reset() { *x = SecretData_StripeSecretKey{} - mi := &file_proto_scan_result_proto_msgTypes[93] + mi := &file_proto_scan_result_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7549,7 +7663,7 @@ func (x *SecretData_StripeSecretKey) String() string { func (*SecretData_StripeSecretKey) ProtoMessage() {} func (x *SecretData_StripeSecretKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[93] + mi := &file_proto_scan_result_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7562,7 +7676,7 @@ func (x *SecretData_StripeSecretKey) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_StripeSecretKey.ProtoReflect.Descriptor instead. func (*SecretData_StripeSecretKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 26} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 27} } func (x *SecretData_StripeSecretKey) GetKey() string { @@ -7573,16 +7687,15 @@ func (x *SecretData_StripeSecretKey) GetKey() string { } type SecretData_StripeRestrictedKey struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_StripeRestrictedKey) Reset() { *x = SecretData_StripeRestrictedKey{} - mi := &file_proto_scan_result_proto_msgTypes[94] + mi := &file_proto_scan_result_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7594,7 +7707,7 @@ func (x *SecretData_StripeRestrictedKey) String() string { func (*SecretData_StripeRestrictedKey) ProtoMessage() {} func (x *SecretData_StripeRestrictedKey) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[94] + mi := &file_proto_scan_result_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7607,7 +7720,7 @@ func (x *SecretData_StripeRestrictedKey) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_StripeRestrictedKey.ProtoReflect.Descriptor instead. func (*SecretData_StripeRestrictedKey) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 27} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 28} } func (x *SecretData_StripeRestrictedKey) GetKey() string { @@ -7618,16 +7731,15 @@ func (x *SecretData_StripeRestrictedKey) GetKey() string { } type SecretData_StripeWebhookSecret struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_StripeWebhookSecret) Reset() { *x = SecretData_StripeWebhookSecret{} - mi := &file_proto_scan_result_proto_msgTypes[95] + mi := &file_proto_scan_result_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7639,7 +7751,7 @@ func (x *SecretData_StripeWebhookSecret) String() string { func (*SecretData_StripeWebhookSecret) ProtoMessage() {} func (x *SecretData_StripeWebhookSecret) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[95] + mi := &file_proto_scan_result_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7652,7 +7764,7 @@ func (x *SecretData_StripeWebhookSecret) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_StripeWebhookSecret.ProtoReflect.Descriptor instead. func (*SecretData_StripeWebhookSecret) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 28} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 29} } func (x *SecretData_StripeWebhookSecret) GetKey() string { @@ -7663,21 +7775,20 @@ func (x *SecretData_StripeWebhookSecret) GetKey() string { } type SecretData_GCPOAuth2ClientCredentials struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // GCP OAuth2 client ID in format: // `12345678901-abcdefghijklmnopqrstuvwxyz.apps.googleusercontent.com` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // GCP OAuth2 client secret, typically 24+ character alphanumeric string // prefixed with `GOCSPX-` - Secret string `protobuf:"bytes,2,opt,name=secret,proto3" json:"secret,omitempty"` + Secret string `protobuf:"bytes,2,opt,name=secret,proto3" json:"secret,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SecretData_GCPOAuth2ClientCredentials) Reset() { *x = SecretData_GCPOAuth2ClientCredentials{} - mi := &file_proto_scan_result_proto_msgTypes[96] + mi := &file_proto_scan_result_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7689,7 +7800,7 @@ func (x *SecretData_GCPOAuth2ClientCredentials) String() string { func (*SecretData_GCPOAuth2ClientCredentials) ProtoMessage() {} func (x *SecretData_GCPOAuth2ClientCredentials) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[96] + mi := &file_proto_scan_result_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7702,7 +7813,7 @@ func (x *SecretData_GCPOAuth2ClientCredentials) ProtoReflect() protoreflect.Mess // Deprecated: Use SecretData_GCPOAuth2ClientCredentials.ProtoReflect.Descriptor instead. func (*SecretData_GCPOAuth2ClientCredentials) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 29} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 30} } func (x *SecretData_GCPOAuth2ClientCredentials) GetId() string { @@ -7720,17 +7831,17 @@ func (x *SecretData_GCPOAuth2ClientCredentials) GetSecret() string { } type SecretData_GCPOAuth2AccessToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + // GCP OAuth2 access token, typically in format: + // "ya29.[alphanumeric_string]" + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` unknownFields protoimpl.UnknownFields - - // GCP OAuth2 access token, typically in format: "ya29.[alphanumeric_string]" - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SecretData_GCPOAuth2AccessToken) Reset() { *x = SecretData_GCPOAuth2AccessToken{} - mi := &file_proto_scan_result_proto_msgTypes[97] + mi := &file_proto_scan_result_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7742,7 +7853,7 @@ func (x *SecretData_GCPOAuth2AccessToken) String() string { func (*SecretData_GCPOAuth2AccessToken) ProtoMessage() {} func (x *SecretData_GCPOAuth2AccessToken) ProtoReflect() protoreflect.Message { - mi := &file_proto_scan_result_proto_msgTypes[97] + mi := &file_proto_scan_result_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7755,7 +7866,7 @@ func (x *SecretData_GCPOAuth2AccessToken) ProtoReflect() protoreflect.Message { // Deprecated: Use SecretData_GCPOAuth2AccessToken.ProtoReflect.Descriptor instead. func (*SecretData_GCPOAuth2AccessToken) Descriptor() ([]byte, []int) { - return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 30} + return file_proto_scan_result_proto_rawDescGZIP(), []int{54, 31} } func (x *SecretData_GCPOAuth2AccessToken) GetToken() string { @@ -7767,1311 +7878,627 @@ func (x *SecretData_GCPOAuth2AccessToken) GetToken() string { var File_proto_scan_result_proto protoreflect.FileDescriptor -var file_proto_scan_result_proto_rawDesc = []byte{ - 0x0a, 0x17, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x73, 0x63, 0x61, 0x6c, 0x69, - 0x62, 0x72, 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, 0xce, 0x03, 0x0a, 0x0a, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, - 0x73, 0x74, 0x61, 0x72, 0x74, 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, 0x09, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 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, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2b, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3a, 0x0a, 0x0d, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4b, 0x0a, 0x16, 0x69, 0x6e, 0x76, 0x65, 0x6e, - 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, - 0x72, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x15, 0x69, - 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x12, 0x4c, 0x0a, 0x13, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, - 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x69, 0x63, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, - 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, - 0x65, 0x64, 0x12, 0x30, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x65, 0x6e, - 0x74, 0x6f, 0x72, 0x79, 0x22, 0x83, 0x02, 0x0a, 0x09, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, - 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, - 0x12, 0x42, 0x0a, 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x66, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, - 0x59, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x52, 0x16, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc6, 0x01, 0x0a, 0x0a, 0x53, - 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x63, 0x61, 0x6c, - 0x69, 0x62, 0x72, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, - 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x55, 0x0a, 0x0e, - 0x53, 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x01, 0x12, 0x17, - 0x0a, 0x13, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, 0x4c, 0x59, 0x5f, 0x53, 0x55, 0x43, 0x43, - 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, - 0x44, 0x10, 0x03, 0x22, 0x69, 0x0a, 0x0c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x63, 0x61, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xfd, - 0x1c, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, - 0x64, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, - 0x2e, 0x50, 0x75, 0x72, 0x6c, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x65, - 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x65, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x14, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x13, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x31, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x70, 0x79, 0x74, 0x68, - 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x79, 0x74, 0x68, - 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x59, 0x0a, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4a, 0x61, 0x76, 0x61, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4a, 0x53, 0x4f, 0x4e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x12, 0x6a, 0x61, 0x76, 0x61, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, - 0x0a, 0x0c, 0x61, 0x70, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x41, - 0x50, 0x4b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x70, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x43, 0x0a, 0x0d, 0x64, 0x70, 0x6b, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, - 0x72, 0x2e, 0x44, 0x50, 0x4b, 0x47, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x70, 0x6b, 0x67, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0c, 0x72, 0x70, 0x6d, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x63, - 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x52, 0x50, 0x4d, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x70, 0x6d, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0c, 0x63, 0x6f, 0x73, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x43, 0x4f, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6f, - 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x48, 0x0a, 0x11, 0x64, 0x65, 0x70, - 0x73, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x28, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x44, - 0x45, 0x50, 0x53, 0x4a, 0x53, 0x4f, 0x4e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x10, 0x64, 0x65, 0x70, 0x73, 0x6a, 0x73, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x70, 0x64, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x50, 0x44, 0x58, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x70, 0x64, 0x78, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x52, 0x0a, 0x15, 0x6a, 0x61, 0x76, 0x61, - 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, - 0x72, 0x2e, 0x4a, 0x61, 0x76, 0x61, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x41, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x55, 0x0a, 0x16, - 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4a, 0x61, 0x76, 0x61, 0x4c, 0x6f, 0x63, 0x6b, 0x66, - 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x14, 0x6a, - 0x61, 0x76, 0x61, 0x4c, 0x6f, 0x63, 0x6b, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x49, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6d, 0x61, 0x6e, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x41, 0x43, 0x4d, 0x41, 0x4e, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0e, - 0x70, 0x61, 0x63, 0x6d, 0x61, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, - 0x0a, 0x0c, 0x6e, 0x69, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x25, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4e, - 0x69, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x69, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x55, 0x0a, 0x16, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4b, 0x65, 0x72, 0x6e, 0x65, - 0x6c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x14, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x45, 0x0a, 0x10, 0x76, 0x6d, 0x6c, 0x69, 0x6e, - 0x75, 0x7a, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x27, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x56, 0x6d, 0x6c, 0x69, - 0x6e, 0x75, 0x7a, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0f, 0x76, - 0x6d, 0x6c, 0x69, 0x6e, 0x75, 0x7a, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4c, - 0x0a, 0x10, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, - 0x62, 0x72, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x6f, 0x72, - 0x74, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0c, - 0x6f, 0x73, 0x76, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4f, 0x53, 0x56, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x0b, 0x6f, 0x73, 0x76, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x48, - 0x0a, 0x11, 0x6e, 0x65, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x61, 0x6c, - 0x69, 0x62, 0x72, 0x2e, 0x4e, 0x65, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x10, 0x6e, 0x65, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x73, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x67, 0x0a, 0x1c, 0x70, 0x79, 0x74, 0x68, - 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x1a, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x52, 0x0a, 0x15, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x75, - 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, - 0x52, 0x13, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x75, 0x70, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x6a, 0x0a, 0x1d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x48, 0x00, 0x52, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x6e, 0x61, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, - 0x62, 0x72, 0x2e, 0x53, 0x4e, 0x41, 0x50, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x6e, 0x61, 0x70, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4c, 0x0a, 0x10, 0x66, 0x6c, 0x61, 0x74, 0x70, 0x61, - 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x46, 0x6c, 0x61, 0x74, 0x70, - 0x61, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x0f, 0x66, 0x6c, 0x61, 0x74, 0x70, 0x61, 0x6b, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x11, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x70, 0x70, 0x73, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4d, 0x61, 0x63, 0x41, 0x70, 0x70, - 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x63, - 0x41, 0x70, 0x70, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x80, 0x01, 0x0a, - 0x25, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x5f, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x64, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x22, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x40, 0x0a, 0x0c, 0x63, 0x64, 0x78, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x43, 0x44, 0x58, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x64, 0x78, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x5a, 0x0a, 0x1b, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x5f, 0x6f, 0x73, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, - 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x4f, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x18, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x4f, 0x73, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4f, 0x0a, - 0x11, 0x68, 0x6f, 0x6d, 0x65, 0x62, 0x72, 0x65, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, - 0x62, 0x72, 0x2e, 0x48, 0x6f, 0x6d, 0x65, 0x62, 0x72, 0x65, 0x77, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x10, 0x68, 0x6f, - 0x6d, 0x65, 0x62, 0x72, 0x65, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x61, - 0x0a, 0x1a, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x2f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x18, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x61, 0x0a, 0x1a, 0x76, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x56, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x18, 0x76, 0x73, 0x63, 0x6f, - 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x0f, 0x70, 0x6f, 0x64, 0x6d, 0x61, 0x6e, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x6f, 0x64, 0x6d, 0x61, 0x6e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x6f, 0x64, 0x6d, 0x61, 0x6e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x61, 0x0a, 0x1a, 0x64, 0x6f, 0x63, 0x6b, - 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, - 0x00, 0x52, 0x18, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4f, 0x0a, 0x11, 0x6d, - 0x61, 0x63, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, - 0x2e, 0x4d, 0x61, 0x63, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x10, 0x6d, 0x61, 0x63, 0x70, - 0x6f, 0x72, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x49, 0x0a, 0x0f, - 0x77, 0x69, 0x6e, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x57, 0x69, 0x6e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0e, 0x77, 0x69, 0x6e, 0x67, 0x65, 0x74, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x0d, 0x61, 0x73, 0x64, 0x66, 0x5f, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x41, 0x73, 0x64, 0x66, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x73, 0x64, 0x66, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0c, 0x6e, 0x76, 0x6d, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x63, - 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4e, 0x76, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x76, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x5a, 0x0a, 0x16, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, - 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0e, - 0x32, 0x1f, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, - 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x15, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x5b, 0x0a, 0x16, - 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x45, 0x78, - 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x52, 0x15, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x63, - 0x65, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x34, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x69, 0x63, - 0x65, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x7c, 0x0a, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2e, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x48, - 0x01, 0x52, 0x1d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, - 0x88, 0x01, 0x01, 0x1a, 0x74, 0x0a, 0x1d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x60, 0x0a, 0x0e, 0x41, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, - 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x15, - 0x0a, 0x11, 0x49, 0x4e, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x4f, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, - 0x41, 0x47, 0x45, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x53, 0x49, 0x44, 0x45, 0x5f, - 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x44, 0x49, 0x52, 0x10, 0x03, 0x42, 0x0a, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x03, - 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x23, 0x10, 0x24, 0x22, 0x42, - 0x0a, 0x14, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x0c, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x69, 0x66, - 0x66, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x66, 0x66, - 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x62, 0x61, - 0x73, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, - 0x69, 0x6e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0xfa, 0x01, 0x0a, 0x1b, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x56, 0x65, 0x78, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x10, 0x76, 0x75, 0x6c, 0x6e, 0x5f, 0x69, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x56, 0x75, 0x6c, 0x6e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x76, 0x75, 0x6c, 0x6e, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x75, 0x6c, 0x6e, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x73, 0x41, 0x6c, 0x6c, 0x56, 0x75, 0x6c, 0x6e, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x76, 0x75, 0x6c, - 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x33, 0x0a, 0x0f, 0x56, 0x75, 0x6c, 0x6e, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0b, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x22, 0x76, 0x0a, - 0x1b, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x73, 0x63, - 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x56, 0x65, 0x78, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc8, 0x01, 0x0a, 0x04, 0x50, 0x75, 0x72, 0x6c, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x75, - 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, - 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x71, 0x75, 0x61, 0x6c, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x70, 0x61, 0x74, 0x68, - 0x22, 0x33, 0x0a, 0x09, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xfe, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, - 0x63, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x31, 0x0a, 0x03, 0x61, 0x64, 0x76, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x64, - 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x52, 0x03, 0x61, 0x64, 0x76, 0x12, 0x3c, 0x0a, 0x06, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x63, - 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x46, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x73, 0x12, 0x5b, 0x0a, 0x16, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x46, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x69, 0x74, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x15, 0x65, 0x78, 0x70, 0x6c, 0x6f, - 0x69, 0x74, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x73, - 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xd2, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, - 0x79, 0x12, 0x23, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, - 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, - 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, - 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x03, 0x73, 0x65, 0x76, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, - 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x03, 0x73, 0x65, 0x76, 0x4a, - 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x48, 0x0a, 0x0a, 0x41, - 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x45, 0x0a, 0x1b, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, - 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x52, 0x0a, 0x15, - 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x21, 0x0a, - 0x0c, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, - 0x22, 0xad, 0x01, 0x0a, 0x1d, 0x4a, 0x61, 0x76, 0x61, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4a, 0x53, 0x4f, 0x4e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, - 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0b, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0c, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x73, - 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6e, 0x70, 0x6d, 0x5f, 0x72, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x66, - 0x72, 0x6f, 0x6d, 0x4e, 0x70, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x22, 0xe4, 0x01, 0x0a, 0x12, 0x41, 0x50, 0x4b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x72, - 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x6f, - 0x73, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, - 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, - 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x52, 0x07, - 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x22, 0xee, 0x02, 0x0a, 0x13, 0x44, 0x50, 0x4b, 0x47, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x73, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, - 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa9, 0x02, 0x0a, 0x12, 0x52, 0x50, 0x4d, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x70, 0x6d, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x70, - 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, - 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x1e, 0x0a, 0x0b, 0x6f, 0x73, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x73, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x6f, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6f, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x6e, - 0x64, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x65, 0x6e, 0x64, 0x6f, - 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x52, 0x07, 0x6c, 0x69, 0x63, - 0x65, 0x6e, 0x73, 0x65, 0x22, 0xc8, 0x01, 0x0a, 0x12, 0x43, 0x4f, 0x53, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x73, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x80, 0x02, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4d, 0x41, 0x4e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2f, - 0x0a, 0x13, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x31, 0x0a, 0x14, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, - 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, - 0x65, 0x73, 0x22, 0x93, 0x02, 0x0a, 0x12, 0x4e, 0x69, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, - 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6f, 0x73, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x72, 0x0a, 0x10, 0x44, 0x45, 0x50, 0x53, - 0x4a, 0x53, 0x4f, 0x4e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, - 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xfc, 0x01, 0x0a, - 0x13, 0x53, 0x4e, 0x41, 0x50, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x73, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x16, - 0x50, 0x6f, 0x72, 0x74, 0x61, 0x67, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb6, 0x02, 0x0a, 0x16, - 0x46, 0x6c, 0x61, 0x74, 0x70, 0x61, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x61, 0x74, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x44, 0x61, 0x74, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6f, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x13, 0x0a, - 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x73, - 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x6f, 0x73, 0x5f, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x73, 0x42, - 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, - 0x70, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, - 0x6f, 0x70, 0x65, 0x72, 0x22, 0xe8, 0x02, 0x0a, 0x14, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4d, - 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, - 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x6d, - 0x61, 0x67, 0x69, 0x63, 0x12, 0x49, 0x0a, 0x21, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x1e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, - 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6f, 0x73, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x22, - 0x8e, 0x03, 0x0a, 0x0f, 0x56, 0x6d, 0x6c, 0x69, 0x6e, 0x75, 0x7a, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, - 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x77, 0x61, 0x70, - 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, - 0x77, 0x61, 0x70, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, - 0x74, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x72, 0x6f, 0x6f, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x6f, 0x73, 0x5f, - 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x73, 0x49, 0x64, 0x12, 0x2e, - 0x0a, 0x13, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x73, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, - 0x0a, 0x0d, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x72, 0x77, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x66, 0x73, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x77, 0x52, 0x6f, 0x6f, 0x74, 0x46, 0x73, - 0x22, 0xbb, 0x03, 0x0a, 0x0f, 0x4d, 0x61, 0x63, 0x41, 0x70, 0x70, 0x73, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x2e, 0x0a, 0x13, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x64, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x12, 0x3d, 0x0a, 0x1b, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x73, 0x68, 0x6f, 0x72, - 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x68, - 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, - 0x0a, 0x13, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, - 0x0a, 0x10, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x22, 0x90, - 0x01, 0x0a, 0x17, 0x4d, 0x61, 0x63, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, - 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0x4c, 0x0a, 0x13, 0x53, 0x50, 0x44, 0x58, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, - 0x2e, 0x50, 0x75, 0x72, 0x6c, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x63, - 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x70, 0x65, 0x73, 0x22, - 0x4b, 0x0a, 0x12, 0x43, 0x44, 0x58, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x75, - 0x72, 0x6c, 0x52, 0x04, 0x70, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x70, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x70, 0x65, 0x73, 0x22, 0x65, 0x0a, 0x13, - 0x4a, 0x61, 0x76, 0x61, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x73, 0x68, 0x61, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, - 0x68, 0x61, 0x31, 0x22, 0x9d, 0x01, 0x0a, 0x14, 0x4a, 0x61, 0x76, 0x61, 0x4c, 0x6f, 0x63, 0x6b, - 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, - 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, - 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0c, 0x64, 0x65, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x61, 0x6c, 0x73, 0x12, 0x23, - 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x76, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x12, 0x4f, 0x53, 0x56, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x75, - 0x72, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x75, 0x72, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x65, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x65, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1d, 0x0a, - 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x5f, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x41, 0x73, 0x22, 0xa8, 0x01, 0x0a, - 0x1a, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x19, 0x68, - 0x61, 0x73, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, - 0x68, 0x61, 0x73, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, - 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x44, 0x0a, 0x13, 0x50, 0x79, 0x74, 0x68, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2d, - 0x0a, 0x12, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x65, 0x0a, - 0x10, 0x4e, 0x65, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x6c, 0x69, 0x6e, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x4c, 0x69, 0x6e, 0x65, 0x22, 0x9c, 0x03, 0x0a, 0x1b, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x73, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1b, - 0x0a, 0x09, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x44, 0x69, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x75, - 0x70, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x75, 0x70, 0x70, 0x65, 0x72, 0x44, 0x69, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b, - 0x5f, 0x64, 0x69, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, - 0x44, 0x69, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, - 0x0a, 0x0d, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x22, 0xea, 0x01, 0x0a, 0x22, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x64, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x69, 0x67, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x70, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, - 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x66, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x6f, 0x74, 0x66, 0x73, 0x50, 0x61, 0x74, 0x68, - 0x22, 0x4f, 0x0a, 0x10, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x4f, 0x53, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x21, - 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0x19, 0x0a, 0x17, 0x48, 0x6f, 0x6d, 0x65, 0x62, 0x72, 0x65, 0x77, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc0, 0x02, 0x0a, - 0x18, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x21, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x45, 0x6d, 0x61, - 0x69, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x68, 0x6f, - 0x73, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x0a, - 0x10, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x6d, 0x69, 0x6e, 0x69, - 0x6d, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, - 0x6d, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, - 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x22, - 0xac, 0x02, 0x0a, 0x18, 0x56, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x34, 0x0a, 0x16, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x14, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, - 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, - 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x69, 0x73, 0x5f, 0x70, - 0x72, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x69, 0x73, 0x50, 0x72, 0x65, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, - 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xba, - 0x03, 0x0a, 0x0e, 0x50, 0x6f, 0x64, 0x6d, 0x61, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x4e, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, - 0x62, 0x72, 0x2e, 0x50, 0x6f, 0x64, 0x6d, 0x61, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x70, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x73, 0x74, - 0x61, 0x72, 0x74, 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, 0x0b, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x66, 0x69, 0x6e, - 0x69, 0x73, 0x68, 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, 0x0c, 0x66, 0x69, - 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x74, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x65, 0x78, 0x69, 0x74, 0x65, 0x64, 0x1a, 0x52, 0x0a, 0x11, 0x45, 0x78, 0x70, 0x6f, 0x73, - 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x27, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x20, 0x0a, 0x08, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x97, 0x01, - 0x0a, 0x18, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x05, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, - 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, - 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x22, 0x4e, 0x0a, 0x0c, 0x41, 0x73, 0x64, 0x66, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x6f, 0x6c, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x6f, 0x6c, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x34, 0x0a, 0x0b, 0x4e, 0x76, 0x6d, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x6a, 0x73, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x6e, 0x6f, 0x64, 0x65, 0x6a, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x74, 0x0a, - 0x0a, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1f, - 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x15, 0x57, 0x69, 0x6e, 0x67, 0x65, 0x74, 0x50, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, - 0x6f, 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, - 0x6e, 0x69, 0x6b, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x61, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x22, - 0x95, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x61, - 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, - 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x63, 0x61, 0x6c, - 0x69, 0x62, 0x72, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe7, 0x25, 0x0a, 0x0a, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x06, 0x67, 0x63, 0x70, 0x73, 0x61, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, - 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x50, 0x53, - 0x41, 0x4b, 0x48, 0x00, 0x52, 0x06, 0x67, 0x63, 0x70, 0x73, 0x61, 0x6b, 0x12, 0x6d, 0x0a, 0x1b, - 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, - 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, - 0x00, 0x52, 0x18, 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x61, 0x0a, 0x17, 0x61, - 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x61, - 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x2e, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x14, 0x61, 0x6e, 0x74, 0x68, 0x72, 0x6f, - 0x70, 0x69, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x46, - 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x65, 0x72, 0x70, 0x6c, 0x65, 0x78, 0x69, - 0x74, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x70, - 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, - 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x10, 0x67, 0x72, 0x6f, - 0x6b, 0x5f, 0x78, 0x61, 0x69, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x72, 0x6f, 0x6b, 0x58, 0x41, 0x49, - 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x6b, 0x58, 0x61, - 0x69, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x6b, 0x0a, 0x1b, 0x67, 0x72, 0x6f, 0x6b, 0x5f, - 0x78, 0x61, 0x69, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, - 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x2e, 0x47, 0x72, 0x6f, 0x6b, 0x58, 0x41, 0x49, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x17, 0x67, 0x72, 0x6f, - 0x6b, 0x58, 0x61, 0x69, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x70, - 0x69, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x0e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x5f, 0x68, - 0x75, 0x62, 0x5f, 0x70, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x2e, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x48, 0x75, 0x62, 0x50, 0x61, 0x74, 0x48, 0x00, - 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x48, 0x75, 0x62, 0x50, 0x61, 0x74, 0x12, 0x4e, - 0x0a, 0x0c, 0x64, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x6f, 0x63, 0x65, 0x61, 0x6e, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x69, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x4f, 0x63, 0x65, 0x61, 0x6e, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, - 0x52, 0x0c, 0x64, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x6f, 0x63, 0x65, 0x61, 0x6e, 0x12, 0x48, - 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x69, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, - 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4f, 0x70, 0x65, 0x6e, - 0x41, 0x49, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, - 0x61, 0x69, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x0f, 0x70, 0x6f, 0x73, 0x74, - 0x6d, 0x61, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, 0x41, 0x50, - 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, 0x41, - 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x79, 0x0a, 0x1f, 0x70, 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, - 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, - 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x48, 0x00, 0x52, 0x1c, 0x70, 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x54, 0x0a, 0x12, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x5a, 0x0a, 0x14, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, - 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x12, - 0x61, 0x7a, 0x75, 0x72, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x41, 0x0a, 0x0b, 0x74, 0x69, 0x6e, 0x6b, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x65, - 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, - 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x69, 0x6e, - 0x6b, 0x4b, 0x65, 0x79, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x69, 0x6e, 0x6b, 0x4b, - 0x65, 0x79, 0x73, 0x65, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x5f, - 0x70, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x63, 0x61, 0x6c, - 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, - 0x69, 0x74, 0x6c, 0x61, 0x62, 0x50, 0x61, 0x74, 0x48, 0x00, 0x52, 0x09, 0x67, 0x69, 0x74, 0x6c, - 0x61, 0x62, 0x50, 0x61, 0x74, 0x12, 0x5d, 0x0a, 0x15, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, - 0x72, 0x70, 0x5f, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x69, 0x43, - 0x6f, 0x72, 0x70, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, - 0x13, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x86, 0x01, 0x0a, 0x24, 0x68, 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, - 0x72, 0x70, 0x5f, 0x76, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x72, 0x6f, 0x6c, - 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x12, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x69, 0x43, 0x6f, - 0x72, 0x70, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x70, 0x70, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x20, 0x68, 0x61, 0x73, - 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x70, 0x70, 0x52, 0x6f, - 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3f, 0x0a, - 0x0b, 0x67, 0x63, 0x70, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x13, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x50, 0x41, 0x50, 0x49, 0x4b, 0x65, - 0x79, 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, 0x70, 0x41, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x47, - 0x0a, 0x0a, 0x68, 0x75, 0x67, 0x67, 0x69, 0x6e, 0x66, 0x61, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x48, 0x75, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x66, - 0x61, 0x63, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x75, 0x67, - 0x67, 0x69, 0x6e, 0x66, 0x61, 0x63, 0x65, 0x12, 0x64, 0x0a, 0x18, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x63, 0x61, 0x6c, - 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x41, 0x70, 0x70, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x41, 0x70, - 0x70, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x51, 0x0a, - 0x11, 0x73, 0x74, 0x72, 0x69, 0x70, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, - 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x70, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, - 0x0f, 0x73, 0x74, 0x72, 0x69, 0x70, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, - 0x12, 0x5d, 0x0a, 0x15, 0x73, 0x74, 0x72, 0x69, 0x70, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, - 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, - 0x69, 0x63, 0x74, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x13, 0x73, 0x74, 0x72, 0x69, - 0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x12, - 0x5d, 0x0a, 0x15, 0x73, 0x74, 0x72, 0x69, 0x70, 0x65, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x70, 0x65, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x13, 0x73, 0x74, 0x72, 0x69, 0x70, - 0x65, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x73, - 0x0a, 0x1d, 0x67, 0x63, 0x70, 0x5f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x5f, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, - 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x50, 0x4f, 0x41, - 0x75, 0x74, 0x68, 0x32, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x67, 0x63, 0x70, 0x4f, 0x61, 0x75, 0x74, - 0x68, 0x32, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x17, 0x67, 0x63, 0x70, 0x5f, 0x6f, 0x61, 0x75, 0x74, 0x68, - 0x32, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x1a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x43, 0x50, 0x4f, 0x41, 0x75, - 0x74, 0x68, 0x32, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, - 0x52, 0x14, 0x67, 0x63, 0x70, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x7b, 0x0a, 0x21, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x41, 0x70, 0x70, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x1c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x41, 0x70, 0x70, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x86, 0x01, 0x0a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x63, - 0x6c, 0x61, 0x73, 0x73, 0x69, 0x63, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x1c, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x69, 0x63, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x20, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x63, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, - 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x93, 0x01, 0x0a, - 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x67, 0x72, 0x61, - 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x38, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x46, 0x69, 0x6e, 0x65, - 0x47, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x24, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x46, 0x69, 0x6e, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x50, - 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x75, 0x0a, 0x1f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x61, 0x70, 0x70, - 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x63, - 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x2e, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x41, 0x70, 0x70, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x1a, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x41, 0x70, 0x70, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x54, 0x0a, 0x12, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x5f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x4f, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, - 0xb0, 0x03, 0x0a, 0x06, 0x47, 0x43, 0x50, 0x53, 0x41, 0x4b, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x49, 0x64, - 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x6d, - 0x61, 0x69, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x55, 0x72, 0x69, 0x12, 0x1b, 0x0a, 0x09, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x72, 0x69, 0x12, 0x3c, 0x0a, 0x1b, 0x61, 0x75, 0x74, - 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x78, 0x35, 0x30, 0x39, 0x5f, - 0x63, 0x65, 0x72, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, - 0x61, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x58, 0x35, 0x30, 0x39, - 0x43, 0x65, 0x72, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x5f, 0x78, 0x35, 0x30, 0x39, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x58, 0x35, 0x30, - 0x39, 0x43, 0x65, 0x72, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x6e, 0x69, 0x76, - 0x65, 0x72, 0x73, 0x65, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x75, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, - 0x65, 0x79, 0x1a, 0x2c, 0x0a, 0x18, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x1a, 0x28, 0x0a, 0x14, 0x41, 0x6e, 0x74, 0x68, 0x72, 0x6f, 0x70, 0x69, 0x63, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x24, 0x0a, 0x10, 0x50, 0x65, - 0x72, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x74, 0x79, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x1a, 0x21, 0x0a, 0x0d, 0x47, 0x72, 0x6f, 0x6b, 0x58, 0x41, 0x49, 0x41, 0x50, 0x49, 0x4b, 0x65, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x1a, 0x2b, 0x0a, 0x17, 0x47, 0x72, 0x6f, 0x6b, 0x58, 0x41, 0x49, 0x4d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x1a, 0x34, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x03, 0x64, 0x65, 0x72, 0x1a, 0x28, 0x0a, 0x10, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x1a, 0x2a, 0x0a, 0x12, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x20, 0x0a, 0x0c, - 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x49, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x3c, - 0x0a, 0x0c, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x48, 0x75, 0x62, 0x50, 0x61, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x70, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x61, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x1d, 0x0a, 0x09, - 0x47, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x50, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x61, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x61, 0x74, 0x1a, 0x21, 0x0a, 0x0d, 0x50, - 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x30, - 0x0a, 0x1c, 0x50, 0x6f, 0x73, 0x74, 0x6d, 0x61, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x1a, 0x28, 0x0a, 0x14, 0x44, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x4f, 0x63, 0x65, 0x61, 0x6e, - 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x2d, 0x0a, 0x15, 0x47, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x41, 0x70, 0x70, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x34, 0x0a, 0x1c, 0x47, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x41, 0x70, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, - 0x38, 0x0a, 0x20, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x63, - 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x3c, 0x0a, 0x24, 0x47, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x46, 0x69, 0x6e, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x50, 0x65, - 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x28, 0x0a, 0x10, 0x47, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x1a, 0x32, 0x0a, 0x1a, 0x47, 0x69, 0x74, 0x68, 0x75, 0x62, 0x41, 0x70, 0x70, 0x55, 0x73, - 0x65, 0x72, 0x54, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x26, 0x0a, 0x0a, 0x54, 0x69, 0x6e, 0x6b, 0x4b, 0x65, 0x79, - 0x73, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x2b, 0x0a, - 0x13, 0x48, 0x61, 0x73, 0x68, 0x69, 0x43, 0x6f, 0x72, 0x70, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x68, 0x0a, 0x20, 0x48, 0x61, - 0x73, 0x68, 0x69, 0x43, 0x6f, 0x72, 0x70, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x70, 0x70, 0x52, - 0x6f, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x17, - 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x1a, 0x1d, 0x0a, 0x09, 0x47, 0x43, 0x50, 0x41, 0x50, 0x49, 0x4b, 0x65, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x1a, 0x67, 0x0a, 0x11, 0x48, 0x75, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x66, 0x61, - 0x63, 0x65, 0x41, 0x50, 0x49, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x2c, - 0x0a, 0x12, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x73, - 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x66, 0x69, 0x6e, 0x65, - 0x47, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x1a, 0x23, 0x0a, 0x0f, - 0x53, 0x74, 0x72, 0x69, 0x70, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x1a, 0x27, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x69, 0x70, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, - 0x69, 0x63, 0x74, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x1a, 0x27, 0x0a, 0x13, 0x53, 0x74, - 0x72, 0x69, 0x70, 0x65, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x1a, 0x44, 0x0a, 0x1a, 0x47, 0x43, 0x50, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x1a, 0x2c, 0x0a, 0x14, 0x47, 0x43, 0x50, - 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x22, 0xf8, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 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, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x22, 0x69, 0x0a, 0x10, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, - 0x4e, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, - 0x49, 0x44, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x03, 0x12, - 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x04, - 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x22, 0xc8, 0x02, 0x0a, - 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x08, 0x66, 0x69, 0x6c, - 0x65, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x63, - 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x48, 0x00, - 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x12, 0x62, 0x0a, 0x1b, 0x66, 0x69, - 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x70, 0x61, - 0x74, 0x68, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x48, 0x00, 0x52, 0x18, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x57, 0x69, - 0x74, 0x68, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x51, - 0x0a, 0x14, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x13, 0x65, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x48, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, - 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1e, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x70, - 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x6a, 0x0a, 0x18, 0x46, 0x69, 0x6c, 0x65, 0x70, - 0x61, 0x74, 0x68, 0x57, 0x69, 0x74, 0x68, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x3a, 0x0a, 0x0d, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0c, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x22, 0x29, 0x0a, 0x13, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2c, - 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0xb2, 0x01, 0x0a, - 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x3d, 0x0a, - 0x0e, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2e, - 0x4c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x43, 0x0a, 0x11, - 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, - 0x72, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x52, 0x0f, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x73, 0x22, 0x67, 0x0a, 0x0e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x12, 0x3a, 0x0a, 0x0b, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x69, - 0x62, 0x72, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x52, 0x0a, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, - 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x10, 0x42, 0x61, - 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1e, - 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1a, - 0x0a, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x22, 0xb8, 0x01, 0x0a, 0x0d, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x69, - 0x66, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x66, - 0x66, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, - 0x6d, 0x70, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x62, - 0x61, 0x73, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x2a, 0xf7, 0x01, - 0x0a, 0x10, 0x56, 0x65, 0x78, 0x4a, 0x75, 0x73, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x45, 0x58, 0x5f, 0x4a, 0x55, 0x53, 0x54, 0x49, 0x46, - 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x4e, 0x45, - 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x01, - 0x12, 0x1f, 0x0a, 0x1b, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, - 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x10, - 0x02, 0x12, 0x27, 0x0a, 0x23, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x45, 0x58, 0x45, 0x43, - 0x55, 0x54, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x10, 0x03, 0x12, 0x35, 0x0a, 0x31, 0x56, 0x55, - 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x41, - 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x42, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, - 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x53, 0x41, 0x52, 0x59, 0x10, - 0x04, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x4d, 0x49, 0x54, 0x49, - 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x45, - 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x05, 0x2a, 0x62, 0x0a, 0x0c, 0x53, 0x65, 0x76, 0x65, 0x72, - 0x69, 0x74, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x45, 0x56, 0x45, 0x52, - 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x07, - 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x44, 0x49, 0x55, - 0x4d, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x04, 0x12, 0x0c, 0x0a, - 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x05, 0x42, 0x3f, 0x50, 0x01, 0x5a, - 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x62, 0x72, 0x2f, 0x62, 0x69, 0x6e, 0x61, 0x72, - 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x5f, 0x67, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} +const file_proto_scan_result_proto_rawDesc = "" + + "\n" + + "\x17proto/scan_result.proto\x12\ascalibr\x1a\x1fgoogle/protobuf/timestamp.proto\"\xce\x03\n" + + "\n" + + "ScanResult\x12\x18\n" + + "\aversion\x18\x01 \x01(\tR\aversion\x129\n" + + "\n" + + "start_time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tstartTime\x125\n" + + "\bend_time\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\aendTime\x12+\n" + + "\x06status\x18\x04 \x01(\v2\x13.scalibr.ScanStatusR\x06status\x12:\n" + + "\rplugin_status\x18\x05 \x03(\v2\x15.scalibr.PluginStatusR\fpluginStatus\x12K\n" + + "\x16inventories_deprecated\x18\x06 \x03(\v2\x10.scalibr.PackageB\x02\x18\x01R\x15inventoriesDeprecated\x12L\n" + + "\x13findings_deprecated\x18\a \x03(\v2\x17.scalibr.GenericFindingB\x02\x18\x01R\x12findingsDeprecated\x120\n" + + "\tinventory\x18\b \x01(\v2\x12.scalibr.InventoryR\tinventory\"\x83\x02\n" + + "\tInventory\x12,\n" + + "\bpackages\x18\x01 \x03(\v2\x10.scalibr.PackageR\bpackages\x12B\n" + + "\x10generic_findings\x18\x02 \x03(\v2\x17.scalibr.GenericFindingR\x0fgenericFindings\x12)\n" + + "\asecrets\x18\x03 \x03(\v2\x0f.scalibr.SecretR\asecrets\x12Y\n" + + "\x18container_image_metadata\x18\x05 \x03(\v2\x1f.scalibr.ContainerImageMetadataR\x16containerImageMetadata\"\xc6\x01\n" + + "\n" + + "ScanStatus\x12:\n" + + "\x06status\x18\x01 \x01(\x0e2\".scalibr.ScanStatus.ScanStatusEnumR\x06status\x12%\n" + + "\x0efailure_reason\x18\x02 \x01(\tR\rfailureReason\"U\n" + + "\x0eScanStatusEnum\x12\x0f\n" + + "\vUNSPECIFIED\x10\x00\x12\r\n" + + "\tSUCCEEDED\x10\x01\x12\x17\n" + + "\x13PARTIALLY_SUCCEEDED\x10\x02\x12\n" + + "\n" + + "\x06FAILED\x10\x03\"i\n" + + "\fPluginStatus\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x02 \x01(\x05R\aversion\x12+\n" + + "\x06status\x18\x03 \x01(\v2\x13.scalibr.ScanStatusR\x06status\"\xfd\x1c\n" + + "\aPackage\x12\x12\n" + + "\x04name\x18\v \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\f \x01(\tR\aversion\x12>\n" + + "\vsource_code\x18\x1a \x01(\v2\x1d.scalibr.SourceCodeIdentifierR\n" + + "sourceCode\x12!\n" + + "\x04purl\x18\x01 \x01(\v2\r.scalibr.PurlR\x04purl\x12\x1c\n" + + "\tecosystem\x18\x1b \x01(\tR\tecosystem\x12\x1c\n" + + "\tlocations\x18\x02 \x03(\tR\tlocations\x125\n" + + "\x14extractor_deprecated\x18\n" + + " \x01(\tB\x02\x18\x01R\x13extractorDeprecated\x12\x18\n" + + "\aplugins\x181 \x03(\tR\aplugins\x12I\n" + + "\x0fpython_metadata\x18\x05 \x01(\v2\x1e.scalibr.PythonPackageMetadataH\x00R\x0epythonMetadata\x12Y\n" + + "\x13javascript_metadata\x18\x06 \x01(\v2&.scalibr.JavascriptPackageJSONMetadataH\x00R\x12javascriptMetadata\x12@\n" + + "\fapk_metadata\x18\a \x01(\v2\x1b.scalibr.APKPackageMetadataH\x00R\vapkMetadata\x12C\n" + + "\rdpkg_metadata\x18\b \x01(\v2\x1c.scalibr.DPKGPackageMetadataH\x00R\fdpkgMetadata\x12@\n" + + "\frpm_metadata\x18\t \x01(\v2\x1b.scalibr.RPMPackageMetadataH\x00R\vrpmMetadata\x12@\n" + + "\fcos_metadata\x18\r \x01(\v2\x1b.scalibr.COSPackageMetadataH\x00R\vcosMetadata\x12H\n" + + "\x11depsjson_metadata\x18( \x01(\v2\x19.scalibr.DEPSJSONMetadataH\x00R\x10depsjsonMetadata\x12C\n" + + "\rspdx_metadata\x18\x0e \x01(\v2\x1c.scalibr.SPDXPackageMetadataH\x00R\fspdxMetadata\x12R\n" + + "\x15java_archive_metadata\x18\x0f \x01(\v2\x1c.scalibr.JavaArchiveMetadataH\x00R\x13javaArchiveMetadata\x12U\n" + + "\x16java_lockfile_metadata\x18\x1f \x01(\v2\x1d.scalibr.JavaLockfileMetadataH\x00R\x14javaLockfileMetadata\x12I\n" + + "\x0fpacman_metadata\x18$ \x01(\v2\x1e.scalibr.PACMANPackageMetadataH\x00R\x0epacmanMetadata\x12@\n" + + "\fnix_metadata\x18% \x01(\v2\x1b.scalibr.NixPackageMetadataH\x00R\vnixMetadata\x12U\n" + + "\x16kernel_module_metadata\x18& \x01(\v2\x1d.scalibr.KernelModuleMetadataH\x00R\x14kernelModuleMetadata\x12E\n" + + "\x10vmlinuz_metadata\x18' \x01(\v2\x18.scalibr.VmlinuzMetadataH\x00R\x0fvmlinuzMetadata\x12L\n" + + "\x10portage_metadata\x18) \x01(\v2\x1f.scalibr.PortagePackageMetadataH\x00R\x0fportageMetadata\x12@\n" + + "\fosv_metadata\x18\x10 \x01(\v2\x1b.scalibr.OSVPackageMetadataH\x00R\vosvMetadata\x12H\n" + + "\x11netports_metadata\x18- \x01(\v2\x19.scalibr.NetportsMetadataH\x00R\x10netportsMetadata\x12g\n" + + "\x1cpython_requirements_metadata\x18\x15 \x01(\v2#.scalibr.PythonRequirementsMetadataH\x00R\x1apythonRequirementsMetadata\x12R\n" + + "\x15python_setup_metadata\x18, \x01(\v2\x1c.scalibr.PythonSetupMetadataH\x00R\x13pythonSetupMetadata\x12j\n" + + "\x1dcontainerd_container_metadata\x18\x16 \x01(\v2$.scalibr.ContainerdContainerMetadataH\x00R\x1bcontainerdContainerMetadata\x12C\n" + + "\rsnap_metadata\x18\x17 \x01(\v2\x1c.scalibr.SNAPPackageMetadataH\x00R\fsnapMetadata\x12L\n" + + "\x10flatpak_metadata\x18\x18 \x01(\v2\x1f.scalibr.FlatpakPackageMetadataH\x00R\x0fflatpakMetadata\x12F\n" + + "\x11mac_apps_metadata\x18\" \x01(\v2\x18.scalibr.MacAppsMetadataH\x00R\x0fmacAppsMetadata\x12\x80\x01\n" + + "%containerd_runtime_container_metadata\x18\x19 \x01(\v2+.scalibr.ContainerdRuntimeContainerMetadataH\x00R\"containerdRuntimeContainerMetadata\x12@\n" + + "\fcdx_metadata\x18\x1e \x01(\v2\x1b.scalibr.CDXPackageMetadataH\x00R\vcdxMetadata\x12Z\n" + + "\x1bwindows_os_version_metadata\x18! \x01(\v2\x19.scalibr.WindowsOSVersionH\x00R\x18windowsOsVersionMetadata\x12O\n" + + "\x11homebrew_metadata\x18* \x01(\v2 .scalibr.HomebrewPackageMetadataH\x00R\x10homebrewMetadata\x12a\n" + + "\x1achrome_extensions_metadata\x18/ \x01(\v2!.scalibr.ChromeExtensionsMetadataH\x00R\x18chromeExtensionsMetadata\x12a\n" + + "\x1avscode_extensions_metadata\x18. \x01(\v2!.scalibr.VSCodeExtensionsMetadataH\x00R\x18vscodeExtensionsMetadata\x12B\n" + + "\x0fpodman_metadata\x182 \x01(\v2\x17.scalibr.PodmanMetadataH\x00R\x0epodmanMetadata\x12a\n" + + "\x1adocker_containers_metadata\x180 \x01(\v2!.scalibr.DockerContainersMetadataH\x00R\x18dockerContainersMetadata\x12O\n" + + "\x11macports_metadata\x185 \x01(\v2 .scalibr.MacportsPackageMetadataH\x00R\x10macportsMetadata\x12I\n" + + "\x0fwinget_metadata\x186 \x01(\v2\x1e.scalibr.WingetPackageMetadataH\x00R\x0ewingetMetadata\x12<\n" + + "\rasdf_metadata\x187 \x01(\v2\x15.scalibr.AsdfMetadataH\x00R\fasdfMetadata\x129\n" + + "\fnvm_metadata\x188 \x01(\v2\x14.scalibr.NvmMetadataH\x00R\vnvmMetadata\x12Z\n" + + "\x16annotations_deprecated\x18\x1c \x03(\x0e2\x1f.scalibr.Package.AnnotationEnumB\x02\x18\x01R\x15annotationsDeprecated\x12[\n" + + "\x16exploitability_signals\x183 \x03(\v2$.scalibr.PackageExploitabilitySignalR\x15exploitabilitySignals\x12\x1a\n" + + "\blicenses\x184 \x03(\tR\blicenses\x12|\n" + + " container_image_metadata_indexes\x189 \x01(\v2..scalibr.Package.ContainerImageMetadataIndexesH\x01R\x1dcontainerImageMetadataIndexes\x88\x01\x01\x1at\n" + + "\x1dContainerImageMetadataIndexes\x122\n" + + "\x15container_image_index\x18\x01 \x01(\x05R\x13containerImageIndex\x12\x1f\n" + + "\vlayer_index\x18\x02 \x01(\x05R\n" + + "layerIndex\"`\n" + + "\x0eAnnotationEnum\x12\x0f\n" + + "\vUNSPECIFIED\x10\x00\x12\x10\n" + + "\fTRANSITIONAL\x10\x01\x12\x15\n" + + "\x11INSIDE_OS_PACKAGE\x10\x02\x12\x14\n" + + "\x10INSIDE_CACHE_DIR\x10\x03B\n" + + "\n" + + "\bmetadataB#\n" + + "!_container_image_metadata_indexesJ\x04\b\x03\x10\x04J\x04\b\x04\x10\x05J\x04\b#\x10$\"B\n" + + "\x14SourceCodeIdentifier\x12\x12\n" + + "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" + + "\x06commit\x18\x02 \x01(\tR\x06commit\"\x96\x01\n" + + "\fLayerDetails\x12\x14\n" + + "\x05index\x18\x01 \x01(\x05R\x05index\x12\x17\n" + + "\adiff_id\x18\x02 \x01(\tR\x06diffId\x12\x19\n" + + "\bchain_id\x18\x05 \x01(\tR\achainId\x12\x18\n" + + "\acommand\x18\x03 \x01(\tR\acommand\x12\"\n" + + "\rin_base_image\x18\x04 \x01(\bR\vinBaseImage\"\xfa\x01\n" + + "\x1bPackageExploitabilitySignal\x12\x16\n" + + "\x06plugin\x18\x01 \x01(\tR\x06plugin\x12?\n" + + "\rjustification\x18\x02 \x01(\x0e2\x19.scalibr.VexJustificationR\rjustification\x12E\n" + + "\x10vuln_identifiers\x18\x03 \x01(\v2\x18.scalibr.VulnIdentifiersH\x00R\x0fvulnIdentifiers\x12,\n" + + "\x11matches_all_vulns\x18\x04 \x01(\bH\x00R\x0fmatchesAllVulnsB\r\n" + + "\vvuln_filter\"3\n" + + "\x0fVulnIdentifiers\x12 \n" + + "\videntifiers\x18\x01 \x03(\tR\videntifiers\"v\n" + + "\x1bFindingExploitabilitySignal\x12\x16\n" + + "\x06plugin\x18\x01 \x01(\tR\x06plugin\x12?\n" + + "\rjustification\x18\x02 \x01(\x0e2\x19.scalibr.VexJustificationR\rjustification\"\xc8\x01\n" + + "\x04Purl\x12\x12\n" + + "\x04purl\x18\x01 \x01(\tR\x04purl\x12\x12\n" + + "\x04type\x18\x02 \x01(\tR\x04type\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x04 \x01(\tR\aversion\x12\x1c\n" + + "\tnamespace\x18\x05 \x01(\tR\tnamespace\x122\n" + + "\n" + + "qualifiers\x18\x06 \x03(\v2\x12.scalibr.QualifierR\n" + + "qualifiers\x12\x18\n" + + "\asubpath\x18\a \x01(\tR\asubpath\"3\n" + + "\tQualifier\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value\"\xfe\x01\n" + + "\x0eGenericFinding\x121\n" + + "\x03adv\x18\x01 \x01(\v2\x1f.scalibr.GenericFindingAdvisoryR\x03adv\x12<\n" + + "\x06target\x18\x02 \x01(\v2$.scalibr.GenericFindingTargetDetailsR\x06target\x12\x18\n" + + "\aplugins\x18\x04 \x03(\tR\aplugins\x12[\n" + + "\x16exploitability_signals\x18\x05 \x03(\v2$.scalibr.FindingExploitabilitySignalR\x15exploitabilitySignalsJ\x04\b\x03\x10\x04\"\xd2\x01\n" + + "\x16GenericFindingAdvisory\x12#\n" + + "\x02id\x18\x01 \x01(\v2\x13.scalibr.AdvisoryIdR\x02id\x12\x14\n" + + "\x05title\x18\x03 \x01(\tR\x05title\x12 \n" + + "\vdescription\x18\x04 \x01(\tR\vdescription\x12&\n" + + "\x0erecommendation\x18\x05 \x01(\tR\x0erecommendation\x12'\n" + + "\x03sev\x18\a \x01(\x0e2\x15.scalibr.SeverityEnumR\x03sevJ\x04\b\x02\x10\x03J\x04\b\x06\x10\a\"H\n" + + "\n" + + "AdvisoryId\x12\x1c\n" + + "\tpublisher\x18\x01 \x01(\tR\tpublisher\x12\x1c\n" + + "\treference\x18\x02 \x01(\tR\treference\"E\n" + + "\x1bGenericFindingTargetDetails\x12\x14\n" + + "\x05extra\x18\x04 \x01(\tR\x05extraJ\x04\b\x01\x10\x02J\x04\b\x02\x10\x03J\x04\b\x03\x10\x04\"R\n" + + "\x15PythonPackageMetadata\x12\x16\n" + + "\x06author\x18\x01 \x01(\tR\x06author\x12!\n" + + "\fauthor_email\x18\x02 \x01(\tR\vauthorEmail\"\xad\x01\n" + + "\x1dJavascriptPackageJSONMetadata\x12\x16\n" + + "\x06author\x18\x01 \x01(\tR\x06author\x12 \n" + + "\vmaintainers\x18\x02 \x03(\tR\vmaintainers\x12\"\n" + + "\fcontributors\x18\x03 \x03(\tR\fcontributors\x12.\n" + + "\x13from_npm_repository\x18\x04 \x01(\bR\x11fromNpmRepository\"\xe4\x01\n" + + "\x12APKPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12\x1f\n" + + "\vorigin_name\x18\x02 \x01(\tR\n" + + "originName\x12\x13\n" + + "\x05os_id\x18\x03 \x01(\tR\x04osId\x12\"\n" + + "\ros_version_id\x18\x04 \x01(\tR\vosVersionId\x12\x1e\n" + + "\n" + + "maintainer\x18\x05 \x01(\tR\n" + + "maintainer\x12\"\n" + + "\farchitecture\x18\x06 \x01(\tR\farchitectureJ\x04\b\a\x10\bR\alicense\"\xee\x02\n" + + "\x13DPKGPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12\x1f\n" + + "\vsource_name\x18\x02 \x01(\tR\n" + + "sourceName\x12%\n" + + "\x0esource_version\x18\x03 \x01(\tR\rsourceVersion\x12'\n" + + "\x0fpackage_version\x18\x04 \x01(\tR\x0epackageVersion\x12\x13\n" + + "\x05os_id\x18\x05 \x01(\tR\x04osId\x12.\n" + + "\x13os_version_codename\x18\x06 \x01(\tR\x11osVersionCodename\x12\"\n" + + "\ros_version_id\x18\a \x01(\tR\vosVersionId\x12\x1e\n" + + "\n" + + "maintainer\x18\b \x01(\tR\n" + + "maintainer\x12\"\n" + + "\farchitecture\x18\t \x01(\tR\farchitecture\x12\x16\n" + + "\x06status\x18\n" + + " \x01(\tR\x06status\"\xa9\x02\n" + + "\x12RPMPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12\x1d\n" + + "\n" + + "source_rpm\x18\x02 \x01(\tR\tsourceRpm\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x05R\x05epoch\x12\x13\n" + + "\x05os_id\x18\x04 \x01(\tR\x04osId\x12\"\n" + + "\ros_version_id\x18\x05 \x01(\tR\vosVersionId\x12\x1e\n" + + "\vos_build_id\x18\x06 \x01(\tR\tosBuildId\x12\x17\n" + + "\aos_name\x18\a \x01(\tR\x06osName\x12\x16\n" + + "\x06vendor\x18\b \x01(\tR\x06vendor\x12\"\n" + + "\farchitecture\x18\t \x01(\tR\farchitectureJ\x04\b\n" + + "\x10\vR\alicense\"\xc8\x01\n" + + "\x12COSPackageMetadata\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12\x1a\n" + + "\bcategory\x18\x03 \x01(\tR\bcategory\x12\x1d\n" + + "\n" + + "os_version\x18\x04 \x01(\tR\tosVersion\x12\"\n" + + "\ros_version_id\x18\x05 \x01(\tR\vosVersionId\x12%\n" + + "\x0eebuild_version\x18\x06 \x01(\tR\rebuildVersion\"\x80\x02\n" + + "\x15PACMANPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12'\n" + + "\x0fpackage_version\x18\x02 \x01(\tR\x0epackageVersion\x12\x13\n" + + "\x05os_id\x18\x03 \x01(\tR\x04osId\x12\"\n" + + "\ros_version_id\x18\x04 \x01(\tR\vosVersionId\x12/\n" + + "\x13package_description\x18\x05 \x01(\tR\x12packageDescription\x121\n" + + "\x14package_dependencies\x18\x06 \x01(\tR\x13packageDependencies\"\x93\x02\n" + + "\x12NixPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12'\n" + + "\x0fpackage_version\x18\x02 \x01(\tR\x0epackageVersion\x12!\n" + + "\fpackage_hash\x18\x03 \x01(\tR\vpackageHash\x12%\n" + + "\x0epackage_output\x18\x04 \x01(\tR\rpackageOutput\x12\x13\n" + + "\x05os_id\x18\x05 \x01(\tR\x04osId\x12.\n" + + "\x13os_version_codename\x18\x06 \x01(\tR\x11osVersionCodename\x12\"\n" + + "\ros_version_id\x18\a \x01(\tR\vosVersionId\"r\n" + + "\x10DEPSJSONMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12'\n" + + "\x0fpackage_version\x18\x02 \x01(\tR\x0epackageVersion\x12\x12\n" + + "\x04type\x18\x03 \x01(\tR\x04type\"\xfc\x01\n" + + "\x13SNAPPackageMetadata\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12\x14\n" + + "\x05grade\x18\x03 \x01(\tR\x05grade\x12\x12\n" + + "\x04type\x18\x04 \x01(\tR\x04type\x12$\n" + + "\rarchitectures\x18\x05 \x03(\tR\rarchitectures\x12\x13\n" + + "\x05os_id\x18\x06 \x01(\tR\x04osId\x12.\n" + + "\x13os_version_codename\x18\a \x01(\tR\x11osVersionCodename\x12\"\n" + + "\ros_version_id\x18\b \x01(\tR\vosVersionId\"\x9d\x01\n" + + "\x16PortagePackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12'\n" + + "\x0fpackage_version\x18\x02 \x01(\tR\x0epackageVersion\x12\x13\n" + + "\x05os_id\x18\x03 \x01(\tR\x04osId\x12\"\n" + + "\ros_version_id\x18\x04 \x01(\tR\vosVersionId\"\xb6\x02\n" + + "\x16FlatpakPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12\x1d\n" + + "\n" + + "package_id\x18\x02 \x01(\tR\tpackageId\x12'\n" + + "\x0fpackage_version\x18\x03 \x01(\tR\x0epackageVersion\x12!\n" + + "\frelease_date\x18\x04 \x01(\tR\vreleaseDate\x12\x17\n" + + "\aos_name\x18\x05 \x01(\tR\x06osName\x12\x13\n" + + "\x05os_id\x18\x06 \x01(\tR\x04osId\x12\"\n" + + "\ros_version_id\x18\a \x01(\tR\vosVersionId\x12\x1e\n" + + "\vos_build_id\x18\b \x01(\tR\tosBuildId\x12\x1c\n" + + "\tdeveloper\x18\t \x01(\tR\tdeveloper\"\xe8\x02\n" + + "\x14KernelModuleMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12'\n" + + "\x0fpackage_version\x18\x02 \x01(\tR\x0epackageVersion\x12)\n" + + "\x10package_vermagic\x18\x03 \x01(\tR\x0fpackageVermagic\x12I\n" + + "!package_source_version_identifier\x18\x04 \x01(\tR\x1epackageSourceVersionIdentifier\x12\x13\n" + + "\x05os_id\x18\x05 \x01(\tR\x04osId\x12.\n" + + "\x13os_version_codename\x18\x06 \x01(\tR\x11osVersionCodename\x12\"\n" + + "\ros_version_id\x18\a \x01(\tR\vosVersionId\x12%\n" + + "\x0epackage_author\x18\b \x01(\tR\rpackageAuthor\"\x8e\x03\n" + + "\x0fVmlinuzMetadata\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12\"\n" + + "\farchitecture\x18\x03 \x01(\tR\farchitecture\x12)\n" + + "\x10extended_version\x18\x04 \x01(\tR\x0fextendedVersion\x12\x16\n" + + "\x06format\x18\x05 \x01(\tR\x06format\x12\x1f\n" + + "\vswap_device\x18\x06 \x01(\x05R\n" + + "swapDevice\x12\x1f\n" + + "\vroot_device\x18\a \x01(\x05R\n" + + "rootDevice\x12\x1d\n" + + "\n" + + "video_mode\x18\b \x01(\tR\tvideoMode\x12\x13\n" + + "\x05os_id\x18\t \x01(\tR\x04osId\x12.\n" + + "\x13os_version_codename\x18\n" + + " \x01(\tR\x11osVersionCodename\x12\"\n" + + "\ros_version_id\x18\v \x01(\tR\vosVersionId\x12\x1c\n" + + "\n" + + "rw_root_fs\x18\f \x01(\bR\brwRootFs\"\xbb\x03\n" + + "\x0fMacAppsMetadata\x12.\n" + + "\x13bundle_display_name\x18\x01 \x01(\tR\x11bundleDisplayName\x12+\n" + + "\x11bundle_identifier\x18\x02 \x01(\tR\x10bundleIdentifier\x12=\n" + + "\x1bbundle_short_version_string\x18\x03 \x01(\tR\x18bundleShortVersionString\x12+\n" + + "\x11bundle_executable\x18\x04 \x01(\tR\x10bundleExecutable\x12\x1f\n" + + "\vbundle_name\x18\x05 \x01(\tR\n" + + "bundleName\x12.\n" + + "\x13bundle_package_type\x18\x06 \x01(\tR\x11bundlePackageType\x12)\n" + + "\x10bundle_signature\x18\a \x01(\tR\x0fbundleSignature\x12%\n" + + "\x0ebundle_version\x18\b \x01(\tR\rbundleVersion\x12\x1d\n" + + "\n" + + "product_id\x18\t \x01(\tR\tproductId\x12\x1d\n" + + "\n" + + "update_url\x18\n" + + " \x01(\tR\tupdateUrl\"\x90\x01\n" + + "\x17MacportsPackageMetadata\x12!\n" + + "\fpackage_name\x18\x01 \x01(\tR\vpackageName\x12'\n" + + "\x0fpackage_version\x18\x02 \x01(\tR\x0epackageVersion\x12)\n" + + "\x10package_revision\x18\x03 \x01(\tR\x0fpackageRevision\"L\n" + + "\x13SPDXPackageMetadata\x12!\n" + + "\x04purl\x18\x01 \x01(\v2\r.scalibr.PurlR\x04purl\x12\x12\n" + + "\x04cpes\x18\x02 \x03(\tR\x04cpes\"K\n" + + "\x12CDXPackageMetadata\x12!\n" + + "\x04purl\x18\x01 \x01(\v2\r.scalibr.PurlR\x04purl\x12\x12\n" + + "\x04cpes\x18\x02 \x03(\tR\x04cpes\"e\n" + + "\x13JavaArchiveMetadata\x12\x1f\n" + + "\vartifact_id\x18\x02 \x01(\tR\n" + + "artifactId\x12\x19\n" + + "\bgroup_id\x18\x03 \x01(\tR\agroupId\x12\x12\n" + + "\x04sha1\x18\x04 \x01(\tR\x04sha1\"\x9d\x01\n" + + "\x14JavaLockfileMetadata\x12\x1f\n" + + "\vartifact_id\x18\x01 \x01(\tR\n" + + "artifactId\x12\x19\n" + + "\bgroup_id\x18\x02 \x01(\tR\agroupId\x12$\n" + + "\x0edep_group_vals\x18\x03 \x03(\tR\fdepGroupVals\x12#\n" + + "\ris_transitive\x18\x04 \x01(\bR\fisTransitive\"\x86\x01\n" + + "\x12OSVPackageMetadata\x12\x1b\n" + + "\tpurl_type\x18\x01 \x01(\tR\bpurlType\x12\x16\n" + + "\x06commit\x18\x02 \x01(\tR\x06commit\x12\x1c\n" + + "\tecosystem\x18\x03 \x01(\tR\tecosystem\x12\x1d\n" + + "\n" + + "compare_as\x18\x04 \x01(\tR\tcompareAs\"\xa8\x01\n" + + "\x1aPythonRequirementsMetadata\x129\n" + + "\x19hash_checking_mode_values\x18\x01 \x03(\tR\x16hashCheckingModeValues\x12-\n" + + "\x12version_comparator\x18\x02 \x01(\tR\x11versionComparator\x12 \n" + + "\vrequirement\x18\x03 \x01(\tR\vrequirement\"D\n" + + "\x13PythonSetupMetadata\x12-\n" + + "\x12version_comparator\x18\x02 \x01(\tR\x11versionComparator\"e\n" + + "\x10NetportsMetadata\x12\x12\n" + + "\x04port\x18\x01 \x01(\rR\x04port\x12\x1a\n" + + "\bprotocol\x18\x02 \x01(\tR\bprotocol\x12!\n" + + "\fcommand_line\x18\x03 \x01(\tR\vcommandLine\"\x9c\x03\n" + + "\x1bContainerdContainerMetadata\x12%\n" + + "\x0enamespace_name\x18\x01 \x01(\tR\rnamespaceName\x12\x1d\n" + + "\n" + + "image_name\x18\x02 \x01(\tR\timageName\x12!\n" + + "\fimage_digest\x18\x03 \x01(\tR\vimageDigest\x12\x18\n" + + "\aruntime\x18\x04 \x01(\tR\aruntime\x12\x10\n" + + "\x03pid\x18\x05 \x01(\x05R\x03pid\x12 \n" + + "\vsnapshotter\x18\x06 \x01(\tR\vsnapshotter\x12!\n" + + "\fsnapshot_key\x18\a \x01(\tR\vsnapshotKey\x12\x1b\n" + + "\tlower_dir\x18\b \x01(\tR\blowerDir\x12\x1b\n" + + "\tupper_dir\x18\t \x01(\tR\bupperDir\x12\x19\n" + + "\bwork_dir\x18\n" + + " \x01(\tR\aworkDir\x12\x0e\n" + + "\x02id\x18\v \x01(\tR\x02id\x12\x19\n" + + "\bpod_name\x18\f \x01(\tR\apodName\x12#\n" + + "\rpod_namespace\x18\r \x01(\tR\fpodNamespace\"\xea\x01\n" + + "\"ContainerdRuntimeContainerMetadata\x12%\n" + + "\x0enamespace_name\x18\x01 \x01(\tR\rnamespaceName\x12\x1d\n" + + "\n" + + "image_name\x18\x02 \x01(\tR\timageName\x12!\n" + + "\fimage_digest\x18\x03 \x01(\tR\vimageDigest\x12\x18\n" + + "\aruntime\x18\x04 \x01(\tR\aruntime\x12\x0e\n" + + "\x02id\x18\x05 \x01(\tR\x02id\x12\x10\n" + + "\x03pid\x18\x06 \x01(\x05R\x03pid\x12\x1f\n" + + "\vrootfs_path\x18\a \x01(\tR\n" + + "rootfsPath\"O\n" + + "\x10WindowsOSVersion\x12\x18\n" + + "\aproduct\x18\x01 \x01(\tR\aproduct\x12!\n" + + "\ffull_version\x18\x02 \x01(\tR\vfullVersion\"\x19\n" + + "\x17HomebrewPackageMetadata\"\xc0\x02\n" + + "\x18ChromeExtensionsMetadata\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12 \n" + + "\vdescription\x18\x02 \x01(\tR\vdescription\x12!\n" + + "\fauthor_email\x18\x03 \x01(\tR\vauthorEmail\x12)\n" + + "\x10host_permissions\x18\x04 \x03(\tR\x0fhostPermissions\x12)\n" + + "\x10manifest_version\x18\x05 \x01(\x05R\x0fmanifestVersion\x124\n" + + "\x16minimum_chrome_version\x18\x06 \x01(\tR\x14minimumChromeVersion\x12 \n" + + "\vpermissions\x18\a \x03(\tR\vpermissions\x12\x1d\n" + + "\n" + + "update_url\x18\b \x01(\tR\tupdateUrl\"\xac\x02\n" + + "\x18VSCodeExtensionsMetadata\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12!\n" + + "\fpublisher_id\x18\x02 \x01(\tR\vpublisherId\x124\n" + + "\x16publisher_display_name\x18\x03 \x01(\tR\x14publisherDisplayName\x12'\n" + + "\x0ftarget_platform\x18\x04 \x01(\tR\x0etargetPlatform\x12\x18\n" + + "\aupdated\x18\x05 \x01(\bR\aupdated\x123\n" + + "\x16is_pre_release_version\x18\x06 \x01(\bR\x13isPreReleaseVersion\x12/\n" + + "\x13installed_timestamp\x18\a \x01(\x03R\x12installedTimestamp\"\xba\x03\n" + + "\x0ePodmanMetadata\x12N\n" + + "\rexposed_ports\x18\x01 \x03(\v2).scalibr.PodmanMetadata.ExposedPortsEntryR\fexposedPorts\x12\x10\n" + + "\x03pid\x18\x02 \x01(\x05R\x03pid\x12%\n" + + "\x0enamespace_name\x18\x03 \x01(\tR\rnamespaceName\x12=\n" + + "\fstarted_time\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\vstartedTime\x12?\n" + + "\rfinished_time\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\ffinishedTime\x12\x16\n" + + "\x06status\x18\x06 \x01(\tR\x06status\x12\x1b\n" + + "\texit_code\x18\a \x01(\x05R\bexitCode\x12\x16\n" + + "\x06exited\x18\b \x01(\bR\x06exited\x1aR\n" + + "\x11ExposedPortsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\rR\x03key\x12'\n" + + "\x05value\x18\x02 \x01(\v2\x11.scalibr.ProtocolR\x05value:\x028\x01\" \n" + + "\bProtocol\x12\x14\n" + + "\x05names\x18\x01 \x03(\tR\x05names\"\x97\x01\n" + + "\x18DockerContainersMetadata\x12\x1d\n" + + "\n" + + "image_name\x18\x01 \x01(\tR\timageName\x12!\n" + + "\fimage_digest\x18\x02 \x01(\tR\vimageDigest\x12\x0e\n" + + "\x02id\x18\x03 \x01(\tR\x02id\x12)\n" + + "\x05ports\x18\x04 \x03(\v2\x13.scalibr.DockerPortR\x05ports\"N\n" + + "\fAsdfMetadata\x12\x1b\n" + + "\ttool_name\x18\x01 \x01(\tR\btoolName\x12!\n" + + "\ftool_version\x18\x02 \x01(\tR\vtoolVersion\"4\n" + + "\vNvmMetadata\x12%\n" + + "\x0enodejs_version\x18\x02 \x01(\tR\rnodejsVersion\"t\n" + + "\n" + + "DockerPort\x12\x0e\n" + + "\x02ip\x18\x01 \x01(\tR\x02ip\x12!\n" + + "\fprivate_port\x18\x02 \x01(\rR\vprivatePort\x12\x1f\n" + + "\vpublic_port\x18\x03 \x01(\rR\n" + + "publicPort\x12\x12\n" + + "\x04type\x18\x04 \x01(\tR\x04type\"\xb9\x01\n" + + "\x15WingetPackageMetadata\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x0e\n" + + "\x02id\x18\x02 \x01(\tR\x02id\x12\x18\n" + + "\aversion\x18\x03 \x01(\tR\aversion\x12\x18\n" + + "\amoniker\x18\x04 \x01(\tR\amoniker\x12\x18\n" + + "\achannel\x18\x05 \x01(\tR\achannel\x12\x12\n" + + "\x04tags\x18\x06 \x03(\tR\x04tags\x12\x1a\n" + + "\bcommands\x18\a \x03(\tR\bcommands\"\x95\x01\n" + + "\x06Secret\x12+\n" + + "\x06secret\x18\x01 \x01(\v2\x13.scalibr.SecretDataR\x06secret\x12-\n" + + "\x06status\x18\x02 \x01(\v2\x15.scalibr.SecretStatusR\x06status\x12/\n" + + "\tlocations\x18\x03 \x03(\v2\x11.scalibr.LocationR\tlocations\"\xe3&\n" + + "\n" + + "SecretData\x124\n" + + "\x06gcpsak\x18\x01 \x01(\v2\x1a.scalibr.SecretData.GCPSAKH\x00R\x06gcpsak\x12m\n" + + "\x1banthropic_workspace_api_key\x18\x02 \x01(\v2,.scalibr.SecretData.AnthropicWorkspaceAPIKeyH\x00R\x18anthropicWorkspaceApiKey\x12a\n" + + "\x17anthropic_model_api_key\x18\x03 \x01(\v2(.scalibr.SecretData.AnthropicModelAPIKeyH\x00R\x14anthropicModelApiKey\x12F\n" + + "\n" + + "perplexity\x18\x04 \x01(\v2$.scalibr.SecretData.PerplexityAPIKeyH\x00R\n" + + "perplexity\x12A\n" + + "\vprivate_key\x18\x05 \x01(\v2\x1e.scalibr.SecretData.PrivateKeyH\x00R\n" + + "privateKey\x12L\n" + + "\x10grok_xai_api_key\x18\x06 \x01(\v2!.scalibr.SecretData.GrokXAIAPIKeyH\x00R\rgrokXaiApiKey\x12k\n" + + "\x1bgrok_xai_management_api_key\x18\a \x01(\v2+.scalibr.SecretData.GrokXAIManagementAPIKeyH\x00R\x17grokXaiManagementApiKey\x12H\n" + + "\x0edocker_hub_pat\x18\b \x01(\v2 .scalibr.SecretData.DockerHubPatH\x00R\fdockerHubPat\x12N\n" + + "\fdigitalocean\x18\t \x01(\v2(.scalibr.SecretData.DigitalOceanAPITokenH\x00R\fdigitalocean\x12H\n" + + "\x0eopenai_api_key\x18\n" + + " \x01(\v2 .scalibr.SecretData.OpenAIAPIKeyH\x00R\fopenaiApiKey\x12K\n" + + "\x0fpostman_api_key\x18\v \x01(\v2!.scalibr.SecretData.PostmanAPIKeyH\x00R\rpostmanApiKey\x12y\n" + + "\x1fpostman_collection_access_token\x18\f \x01(\v20.scalibr.SecretData.PostmanCollectionAccessTokenH\x00R\x1cpostmanCollectionAccessToken\x12T\n" + + "\x12azure_access_token\x18\r \x01(\v2$.scalibr.SecretData.AzureAccessTokenH\x00R\x10azureAccessToken\x12Z\n" + + "\x14azure_identity_token\x18\x0e \x01(\v2&.scalibr.SecretData.AzureIdentityTokenH\x00R\x12azureIdentityToken\x12A\n" + + "\vtink_keyset\x18\x0f \x01(\v2\x1e.scalibr.SecretData.TinkKeysetH\x00R\n" + + "tinkKeyset\x12>\n" + + "\n" + + "gitlab_pat\x18\x10 \x01(\v2\x1d.scalibr.SecretData.GitlabPatH\x00R\tgitlabPat\x12]\n" + + "\x15hashicorp_vault_token\x18\x11 \x01(\v2'.scalibr.SecretData.HashiCorpVaultTokenH\x00R\x13hashicorpVaultToken\x12\x86\x01\n" + + "$hashicorp_vault_app_role_credentials\x18\x12 \x01(\v24.scalibr.SecretData.HashiCorpVaultAppRoleCredentialsH\x00R hashicorpVaultAppRoleCredentials\x12?\n" + + "\vgcp_api_key\x18\x13 \x01(\v2\x1d.scalibr.SecretData.GCPAPIKeyH\x00R\tgcpApiKey\x12G\n" + + "\n" + + "hugginface\x18\x14 \x01(\v2%.scalibr.SecretData.HuggingfaceAPIKeyH\x00R\n" + + "hugginface\x12d\n" + + "\x18github_app_refresh_token\x18\x15 \x01(\v2).scalibr.SecretData.GithubAppRefreshTokenH\x00R\x15githubAppRefreshToken\x12Q\n" + + "\x11stripe_secret_key\x18\x16 \x01(\v2#.scalibr.SecretData.StripeSecretKeyH\x00R\x0fstripeSecretKey\x12]\n" + + "\x15stripe_restricted_key\x18\x17 \x01(\v2'.scalibr.SecretData.StripeRestrictedKeyH\x00R\x13stripeRestrictedKey\x12]\n" + + "\x15stripe_webhook_secret\x18\x18 \x01(\v2'.scalibr.SecretData.StripeWebhookSecretH\x00R\x13stripeWebhookSecret\x12s\n" + + "\x1dgcp_oauth2_client_credentials\x18\x19 \x01(\v2..scalibr.SecretData.GCPOAuth2ClientCredentialsH\x00R\x1agcpOauth2ClientCredentials\x12a\n" + + "\x17gcp_oauth2_access_token\x18\x1a \x01(\v2(.scalibr.SecretData.GCPOAuth2AccessTokenH\x00R\x14gcpOauth2AccessToken\x12{\n" + + "!github_app_server_to_server_token\x18\x1b \x01(\v20.scalibr.SecretData.GithubAppServerToServerTokenH\x00R\x1cgithubAppServerToServerToken\x12\x86\x01\n" + + "$github_classic_personal_access_token\x18\x1c \x01(\v24.scalibr.SecretData.GithubClassicPersonalAccessTokenH\x00R githubClassicPersonalAccessToken\x12\x93\x01\n" + + ")github_fine_grained_personal_access_token\x18\x1d \x01(\v28.scalibr.SecretData.GithubFineGrainedPersonalAccessTokenH\x00R$githubFineGrainedPersonalAccessToken\x12u\n" + + "\x1fgithub_app_user_to_server_token\x18\x1e \x01(\v2..scalibr.SecretData.GithubAppUserToServerTokenH\x00R\x1agithubAppUserToServerToken\x12T\n" + + "\x12github_oauth_token\x18\x1f \x01(\v2$.scalibr.SecretData.GithubOAuthTokenH\x00R\x10githubOauthToken\x12T\n" + + "\x12openrouter_api_key\x18 \x01(\v2$.scalibr.SecretData.OpenRouterAPIKeyH\x00R\x10openrouterApiKey\x1a\xb0\x03\n" + + "\x06GCPSAK\x12$\n" + + "\x0eprivate_key_id\x18\x01 \x01(\tR\fprivateKeyId\x12!\n" + + "\fclient_email\x18\x02 \x01(\tR\vclientEmail\x12\x1c\n" + + "\tsignature\x18\x03 \x01(\fR\tsignature\x12\x12\n" + + "\x04type\x18\x04 \x01(\tR\x04type\x12\x1d\n" + + "\n" + + "project_id\x18\x05 \x01(\tR\tprojectId\x12\x1b\n" + + "\tclient_id\x18\x06 \x01(\tR\bclientId\x12\x19\n" + + "\bauth_uri\x18\a \x01(\tR\aauthUri\x12\x1b\n" + + "\ttoken_uri\x18\b \x01(\tR\btokenUri\x12<\n" + + "\x1bauth_provider_x509_cert_url\x18\t \x01(\tR\x17authProviderX509CertUrl\x12/\n" + + "\x14client_x509_cert_url\x18\n" + + " \x01(\tR\x11clientX509CertUrl\x12'\n" + + "\x0funiverse_domain\x18\v \x01(\tR\x0euniverseDomain\x12\x1f\n" + + "\vprivate_key\x18\f \x01(\tR\n" + + "privateKey\x1a,\n" + + "\x18AnthropicWorkspaceAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a(\n" + + "\x14AnthropicModelAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a$\n" + + "\x10PerplexityAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a!\n" + + "\rGrokXAIAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a+\n" + + "\x17GrokXAIManagementAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a4\n" + + "\n" + + "PrivateKey\x12\x14\n" + + "\x05block\x18\x01 \x01(\tR\x05block\x12\x10\n" + + "\x03der\x18\x02 \x01(\fR\x03der\x1a(\n" + + "\x10AzureAccessToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\x1a*\n" + + "\x12AzureIdentityToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\x1a \n" + + "\fOpenAIAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a<\n" + + "\fDockerHubPat\x12\x10\n" + + "\x03pat\x18\x01 \x01(\tR\x03pat\x12\x1a\n" + + "\busername\x18\x02 \x01(\tR\busername\x1a\x1d\n" + + "\tGitlabPat\x12\x10\n" + + "\x03pat\x18\x01 \x01(\tR\x03pat\x1a!\n" + + "\rPostmanAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a0\n" + + "\x1cPostmanCollectionAccessToken\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a$\n" + + "\x10OpenRouterAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a(\n" + + "\x14DigitalOceanAPIToken\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a-\n" + + "\x15GithubAppRefreshToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\x1a4\n" + + "\x1cGithubAppServerToServerToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\x1a8\n" + + " GithubClassicPersonalAccessToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\x1a<\n" + + "$GithubFineGrainedPersonalAccessToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\x1a(\n" + + "\x10GithubOAuthToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\x1a2\n" + + "\x1aGithubAppUserToServerToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\x1a&\n" + + "\n" + + "TinkKeyset\x12\x18\n" + + "\acontent\x18\x01 \x01(\tR\acontent\x1a+\n" + + "\x13HashiCorpVaultToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\x1ah\n" + + " HashiCorpVaultAppRoleCredentials\x12\x17\n" + + "\arole_id\x18\x01 \x01(\tR\x06roleId\x12\x1b\n" + + "\tsecret_id\x18\x02 \x01(\tR\bsecretId\x12\x0e\n" + + "\x02id\x18\x03 \x01(\tR\x02id\x1a\x1d\n" + + "\tGCPAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1ag\n" + + "\x11HuggingfaceAPIKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x12\n" + + "\x04role\x18\x02 \x01(\tR\x04role\x12,\n" + + "\x12fine_grained_scope\x18\x03 \x03(\tR\x10fineGrainedScope\x1a#\n" + + "\x0fStripeSecretKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a'\n" + + "\x13StripeRestrictedKey\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1a'\n" + + "\x13StripeWebhookSecret\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x1aD\n" + + "\x1aGCPOAuth2ClientCredentials\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" + + "\x06secret\x18\x02 \x01(\tR\x06secret\x1a,\n" + + "\x14GCPOAuth2AccessToken\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05tokenB\b\n" + + "\x06secret\"\xf8\x01\n" + + "\fSecretStatus\x12>\n" + + "\x06status\x18\x01 \x01(\x0e2&.scalibr.SecretStatus.SecretStatusEnumR\x06status\x12=\n" + + "\flast_updated\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\vlastUpdated\"i\n" + + "\x10SecretStatusEnum\x12\x0f\n" + + "\vUNSPECIFIED\x10\x00\x12\x0f\n" + + "\aUNKNOWN\x10\x01\x1a\x02\b\x01\x12\v\n" + + "\aINVALID\x10\x02\x12\t\n" + + "\x05VALID\x10\x03\x12\x0f\n" + + "\vUNSUPPORTED\x10\x04\x12\n" + + "\n" + + "\x06FAILED\x10\x05\"\xc8\x02\n" + + "\bLocation\x12/\n" + + "\bfilepath\x18\x01 \x01(\v2\x11.scalibr.FilepathH\x00R\bfilepath\x12b\n" + + "\x1bfilepath_with_layer_details\x18\x02 \x01(\v2!.scalibr.FilepathWithLayerDetailsH\x00R\x18filepathWithLayerDetails\x12Q\n" + + "\x14environment_variable\x18\x03 \x01(\v2\x1c.scalibr.EnvironmentVariableH\x00R\x13environmentVariable\x12H\n" + + "\x11container_command\x18\x04 \x01(\v2\x19.scalibr.ContainerCommandH\x00R\x10containerCommandB\n" + + "\n" + + "\blocation\"\x1e\n" + + "\bFilepath\x12\x12\n" + + "\x04path\x18\x01 \x01(\tR\x04path\"j\n" + + "\x18FilepathWithLayerDetails\x12\x12\n" + + "\x04path\x18\x01 \x01(\tR\x04path\x12:\n" + + "\rlayer_details\x18\x02 \x01(\v2\x15.scalibr.LayerDetailsR\flayerDetails\")\n" + + "\x13EnvironmentVariable\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\",\n" + + "\x10ContainerCommand\x12\x18\n" + + "\acommand\x18\x01 \x01(\tR\acommand\"\xb2\x01\n" + + "\x16ContainerImageMetadata\x12\x14\n" + + "\x05index\x18\x01 \x01(\x05R\x05index\x12=\n" + + "\x0elayer_metadata\x18\x02 \x03(\v2\x16.scalibr.LayerMetadataR\rlayerMetadata\x12C\n" + + "\x11base_image_chains\x18\x03 \x03(\v2\x17.scalibr.BaseImageChainR\x0fbaseImageChains\"g\n" + + "\x0eBaseImageChain\x12:\n" + + "\vbase_images\x18\x01 \x03(\v2\x19.scalibr.BaseImageDetailsR\n" + + "baseImages\x12\x19\n" + + "\bchain_id\x18\x02 \x01(\tR\achainId\"f\n" + + "\x10BaseImageDetails\x12\x1e\n" + + "\n" + + "repository\x18\x01 \x01(\tR\n" + + "repository\x12\x1a\n" + + "\bregistry\x18\x02 \x01(\tR\bregistry\x12\x16\n" + + "\x06plugin\x18\x03 \x01(\tR\x06plugin\"\xb8\x01\n" + + "\rLayerMetadata\x12\x14\n" + + "\x05index\x18\x01 \x01(\x05R\x05index\x12\x17\n" + + "\adiff_id\x18\x02 \x01(\tR\x06diffId\x12\x19\n" + + "\bchain_id\x18\x03 \x01(\tR\achainId\x12\x18\n" + + "\acommand\x18\x04 \x01(\tR\acommand\x12\x19\n" + + "\bis_empty\x18\x05 \x01(\bR\aisEmpty\x12(\n" + + "\x10base_image_index\x18\x06 \x01(\x05R\x0ebaseImageIndex*\xf7\x01\n" + + "\x10VexJustification\x12!\n" + + "\x1dVEX_JUSTIFICATION_UNSPECIFIED\x10\x00\x12\x19\n" + + "\x15COMPONENT_NOT_PRESENT\x10\x01\x12\x1f\n" + + "\x1bVULNERABLE_CODE_NOT_PRESENT\x10\x02\x12'\n" + + "#VULNERABLE_CODE_NOT_IN_EXECUTE_PATH\x10\x03\x125\n" + + "1VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY\x10\x04\x12$\n" + + " INLINE_MITIGATION_ALREADY_EXISTS\x10\x05*b\n" + + "\fSeverityEnum\x12\x18\n" + + "\x14SEVERITY_UNSPECIFIED\x10\x00\x12\v\n" + + "\aMINIMAL\x10\x01\x12\a\n" + + "\x03LOW\x10\x02\x12\n" + + "\n" + + "\x06MEDIUM\x10\x03\x12\b\n" + + "\x04HIGH\x10\x04\x12\f\n" + + "\bCRITICAL\x10\x05B?P\x01Z;github.com/google/scalibr/binary/proto/scan_result_go_protob\x06proto3" var ( file_proto_scan_result_proto_rawDescOnce sync.Once - file_proto_scan_result_proto_rawDescData = file_proto_scan_result_proto_rawDesc + file_proto_scan_result_proto_rawDescData []byte ) func file_proto_scan_result_proto_rawDescGZIP() []byte { file_proto_scan_result_proto_rawDescOnce.Do(func() { - file_proto_scan_result_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_scan_result_proto_rawDescData) + file_proto_scan_result_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_scan_result_proto_rawDesc), len(file_proto_scan_result_proto_rawDesc))) }) return file_proto_scan_result_proto_rawDescData } var file_proto_scan_result_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_proto_scan_result_proto_msgTypes = make([]protoimpl.MessageInfo, 98) +var file_proto_scan_result_proto_msgTypes = make([]protoimpl.MessageInfo, 99) var file_proto_scan_result_proto_goTypes = []any{ (VexJustification)(0), // 0: scalibr.VexJustification (SeverityEnum)(0), // 1: scalibr.SeverityEnum @@ -9159,28 +8586,29 @@ var file_proto_scan_result_proto_goTypes = []any{ (*SecretData_GitlabPat)(nil), // 83: scalibr.SecretData.GitlabPat (*SecretData_PostmanAPIKey)(nil), // 84: scalibr.SecretData.PostmanAPIKey (*SecretData_PostmanCollectionAccessToken)(nil), // 85: scalibr.SecretData.PostmanCollectionAccessToken - (*SecretData_DigitalOceanAPIToken)(nil), // 86: scalibr.SecretData.DigitalOceanAPIToken - (*SecretData_GithubAppRefreshToken)(nil), // 87: scalibr.SecretData.GithubAppRefreshToken - (*SecretData_GithubAppServerToServerToken)(nil), // 88: scalibr.SecretData.GithubAppServerToServerToken - (*SecretData_GithubClassicPersonalAccessToken)(nil), // 89: scalibr.SecretData.GithubClassicPersonalAccessToken - (*SecretData_GithubFineGrainedPersonalAccessToken)(nil), // 90: scalibr.SecretData.GithubFineGrainedPersonalAccessToken - (*SecretData_GithubOAuthToken)(nil), // 91: scalibr.SecretData.GithubOAuthToken - (*SecretData_GithubAppUserToServerToken)(nil), // 92: scalibr.SecretData.GithubAppUserToServerToken - (*SecretData_TinkKeyset)(nil), // 93: scalibr.SecretData.TinkKeyset - (*SecretData_HashiCorpVaultToken)(nil), // 94: scalibr.SecretData.HashiCorpVaultToken - (*SecretData_HashiCorpVaultAppRoleCredentials)(nil), // 95: scalibr.SecretData.HashiCorpVaultAppRoleCredentials - (*SecretData_GCPAPIKey)(nil), // 96: scalibr.SecretData.GCPAPIKey - (*SecretData_HuggingfaceAPIKey)(nil), // 97: scalibr.SecretData.HuggingfaceAPIKey - (*SecretData_StripeSecretKey)(nil), // 98: scalibr.SecretData.StripeSecretKey - (*SecretData_StripeRestrictedKey)(nil), // 99: scalibr.SecretData.StripeRestrictedKey - (*SecretData_StripeWebhookSecret)(nil), // 100: scalibr.SecretData.StripeWebhookSecret - (*SecretData_GCPOAuth2ClientCredentials)(nil), // 101: scalibr.SecretData.GCPOAuth2ClientCredentials - (*SecretData_GCPOAuth2AccessToken)(nil), // 102: scalibr.SecretData.GCPOAuth2AccessToken - (*timestamppb.Timestamp)(nil), // 103: google.protobuf.Timestamp + (*SecretData_OpenRouterAPIKey)(nil), // 86: scalibr.SecretData.OpenRouterAPIKey + (*SecretData_DigitalOceanAPIToken)(nil), // 87: scalibr.SecretData.DigitalOceanAPIToken + (*SecretData_GithubAppRefreshToken)(nil), // 88: scalibr.SecretData.GithubAppRefreshToken + (*SecretData_GithubAppServerToServerToken)(nil), // 89: scalibr.SecretData.GithubAppServerToServerToken + (*SecretData_GithubClassicPersonalAccessToken)(nil), // 90: scalibr.SecretData.GithubClassicPersonalAccessToken + (*SecretData_GithubFineGrainedPersonalAccessToken)(nil), // 91: scalibr.SecretData.GithubFineGrainedPersonalAccessToken + (*SecretData_GithubOAuthToken)(nil), // 92: scalibr.SecretData.GithubOAuthToken + (*SecretData_GithubAppUserToServerToken)(nil), // 93: scalibr.SecretData.GithubAppUserToServerToken + (*SecretData_TinkKeyset)(nil), // 94: scalibr.SecretData.TinkKeyset + (*SecretData_HashiCorpVaultToken)(nil), // 95: scalibr.SecretData.HashiCorpVaultToken + (*SecretData_HashiCorpVaultAppRoleCredentials)(nil), // 96: scalibr.SecretData.HashiCorpVaultAppRoleCredentials + (*SecretData_GCPAPIKey)(nil), // 97: scalibr.SecretData.GCPAPIKey + (*SecretData_HuggingfaceAPIKey)(nil), // 98: scalibr.SecretData.HuggingfaceAPIKey + (*SecretData_StripeSecretKey)(nil), // 99: scalibr.SecretData.StripeSecretKey + (*SecretData_StripeRestrictedKey)(nil), // 100: scalibr.SecretData.StripeRestrictedKey + (*SecretData_StripeWebhookSecret)(nil), // 101: scalibr.SecretData.StripeWebhookSecret + (*SecretData_GCPOAuth2ClientCredentials)(nil), // 102: scalibr.SecretData.GCPOAuth2ClientCredentials + (*SecretData_GCPOAuth2AccessToken)(nil), // 103: scalibr.SecretData.GCPOAuth2AccessToken + (*timestamppb.Timestamp)(nil), // 104: google.protobuf.Timestamp } var file_proto_scan_result_proto_depIdxs = []int32{ - 103, // 0: scalibr.ScanResult.start_time:type_name -> google.protobuf.Timestamp - 103, // 1: scalibr.ScanResult.end_time:type_name -> google.protobuf.Timestamp + 104, // 0: scalibr.ScanResult.start_time:type_name -> google.protobuf.Timestamp + 104, // 1: scalibr.ScanResult.end_time:type_name -> google.protobuf.Timestamp 7, // 2: scalibr.ScanResult.status:type_name -> scalibr.ScanStatus 8, // 3: scalibr.ScanResult.plugin_status:type_name -> scalibr.PluginStatus 9, // 4: scalibr.ScanResult.inventories_deprecated:type_name -> scalibr.Package @@ -9244,8 +8672,8 @@ var file_proto_scan_result_proto_depIdxs = []int32{ 15, // 62: scalibr.SPDXPackageMetadata.purl:type_name -> scalibr.Purl 15, // 63: scalibr.CDXPackageMetadata.purl:type_name -> scalibr.Purl 71, // 64: scalibr.PodmanMetadata.exposed_ports:type_name -> scalibr.PodmanMetadata.ExposedPortsEntry - 103, // 65: scalibr.PodmanMetadata.started_time:type_name -> google.protobuf.Timestamp - 103, // 66: scalibr.PodmanMetadata.finished_time:type_name -> google.protobuf.Timestamp + 104, // 65: scalibr.PodmanMetadata.started_time:type_name -> google.protobuf.Timestamp + 104, // 66: scalibr.PodmanMetadata.finished_time:type_name -> google.protobuf.Timestamp 56, // 67: scalibr.DockerContainersMetadata.ports:type_name -> scalibr.DockerPort 59, // 68: scalibr.Secret.secret:type_name -> scalibr.SecretData 60, // 69: scalibr.Secret.status:type_name -> scalibr.SecretStatus @@ -9258,45 +8686,46 @@ var file_proto_scan_result_proto_depIdxs = []int32{ 76, // 76: scalibr.SecretData.grok_xai_api_key:type_name -> scalibr.SecretData.GrokXAIAPIKey 77, // 77: scalibr.SecretData.grok_xai_management_api_key:type_name -> scalibr.SecretData.GrokXAIManagementAPIKey 82, // 78: scalibr.SecretData.docker_hub_pat:type_name -> scalibr.SecretData.DockerHubPat - 86, // 79: scalibr.SecretData.digitalocean:type_name -> scalibr.SecretData.DigitalOceanAPIToken + 87, // 79: scalibr.SecretData.digitalocean:type_name -> scalibr.SecretData.DigitalOceanAPIToken 81, // 80: scalibr.SecretData.openai_api_key:type_name -> scalibr.SecretData.OpenAIAPIKey 84, // 81: scalibr.SecretData.postman_api_key:type_name -> scalibr.SecretData.PostmanAPIKey 85, // 82: scalibr.SecretData.postman_collection_access_token:type_name -> scalibr.SecretData.PostmanCollectionAccessToken 79, // 83: scalibr.SecretData.azure_access_token:type_name -> scalibr.SecretData.AzureAccessToken 80, // 84: scalibr.SecretData.azure_identity_token:type_name -> scalibr.SecretData.AzureIdentityToken - 93, // 85: scalibr.SecretData.tink_keyset:type_name -> scalibr.SecretData.TinkKeyset + 94, // 85: scalibr.SecretData.tink_keyset:type_name -> scalibr.SecretData.TinkKeyset 83, // 86: scalibr.SecretData.gitlab_pat:type_name -> scalibr.SecretData.GitlabPat - 94, // 87: scalibr.SecretData.hashicorp_vault_token:type_name -> scalibr.SecretData.HashiCorpVaultToken - 95, // 88: scalibr.SecretData.hashicorp_vault_app_role_credentials:type_name -> scalibr.SecretData.HashiCorpVaultAppRoleCredentials - 96, // 89: scalibr.SecretData.gcp_api_key:type_name -> scalibr.SecretData.GCPAPIKey - 97, // 90: scalibr.SecretData.hugginface:type_name -> scalibr.SecretData.HuggingfaceAPIKey - 87, // 91: scalibr.SecretData.github_app_refresh_token:type_name -> scalibr.SecretData.GithubAppRefreshToken - 98, // 92: scalibr.SecretData.stripe_secret_key:type_name -> scalibr.SecretData.StripeSecretKey - 99, // 93: scalibr.SecretData.stripe_restricted_key:type_name -> scalibr.SecretData.StripeRestrictedKey - 100, // 94: scalibr.SecretData.stripe_webhook_secret:type_name -> scalibr.SecretData.StripeWebhookSecret - 101, // 95: scalibr.SecretData.gcp_oauth2_client_credentials:type_name -> scalibr.SecretData.GCPOAuth2ClientCredentials - 102, // 96: scalibr.SecretData.gcp_oauth2_access_token:type_name -> scalibr.SecretData.GCPOAuth2AccessToken - 88, // 97: scalibr.SecretData.github_app_server_to_server_token:type_name -> scalibr.SecretData.GithubAppServerToServerToken - 89, // 98: scalibr.SecretData.github_classic_personal_access_token:type_name -> scalibr.SecretData.GithubClassicPersonalAccessToken - 90, // 99: scalibr.SecretData.github_fine_grained_personal_access_token:type_name -> scalibr.SecretData.GithubFineGrainedPersonalAccessToken - 92, // 100: scalibr.SecretData.github_app_user_to_server_token:type_name -> scalibr.SecretData.GithubAppUserToServerToken - 91, // 101: scalibr.SecretData.github_oauth_token:type_name -> scalibr.SecretData.GithubOAuthToken - 4, // 102: scalibr.SecretStatus.status:type_name -> scalibr.SecretStatus.SecretStatusEnum - 103, // 103: scalibr.SecretStatus.last_updated:type_name -> google.protobuf.Timestamp - 62, // 104: scalibr.Location.filepath:type_name -> scalibr.Filepath - 63, // 105: scalibr.Location.filepath_with_layer_details:type_name -> scalibr.FilepathWithLayerDetails - 64, // 106: scalibr.Location.environment_variable:type_name -> scalibr.EnvironmentVariable - 65, // 107: scalibr.Location.container_command:type_name -> scalibr.ContainerCommand - 11, // 108: scalibr.FilepathWithLayerDetails.layer_details:type_name -> scalibr.LayerDetails - 69, // 109: scalibr.ContainerImageMetadata.layer_metadata:type_name -> scalibr.LayerMetadata - 67, // 110: scalibr.ContainerImageMetadata.base_image_chains:type_name -> scalibr.BaseImageChain - 68, // 111: scalibr.BaseImageChain.base_images:type_name -> scalibr.BaseImageDetails - 52, // 112: scalibr.PodmanMetadata.ExposedPortsEntry.value:type_name -> scalibr.Protocol - 113, // [113:113] is the sub-list for method output_type - 113, // [113:113] is the sub-list for method input_type - 113, // [113:113] is the sub-list for extension type_name - 113, // [113:113] is the sub-list for extension extendee - 0, // [0:113] is the sub-list for field type_name + 95, // 87: scalibr.SecretData.hashicorp_vault_token:type_name -> scalibr.SecretData.HashiCorpVaultToken + 96, // 88: scalibr.SecretData.hashicorp_vault_app_role_credentials:type_name -> scalibr.SecretData.HashiCorpVaultAppRoleCredentials + 97, // 89: scalibr.SecretData.gcp_api_key:type_name -> scalibr.SecretData.GCPAPIKey + 98, // 90: scalibr.SecretData.hugginface:type_name -> scalibr.SecretData.HuggingfaceAPIKey + 88, // 91: scalibr.SecretData.github_app_refresh_token:type_name -> scalibr.SecretData.GithubAppRefreshToken + 99, // 92: scalibr.SecretData.stripe_secret_key:type_name -> scalibr.SecretData.StripeSecretKey + 100, // 93: scalibr.SecretData.stripe_restricted_key:type_name -> scalibr.SecretData.StripeRestrictedKey + 101, // 94: scalibr.SecretData.stripe_webhook_secret:type_name -> scalibr.SecretData.StripeWebhookSecret + 102, // 95: scalibr.SecretData.gcp_oauth2_client_credentials:type_name -> scalibr.SecretData.GCPOAuth2ClientCredentials + 103, // 96: scalibr.SecretData.gcp_oauth2_access_token:type_name -> scalibr.SecretData.GCPOAuth2AccessToken + 89, // 97: scalibr.SecretData.github_app_server_to_server_token:type_name -> scalibr.SecretData.GithubAppServerToServerToken + 90, // 98: scalibr.SecretData.github_classic_personal_access_token:type_name -> scalibr.SecretData.GithubClassicPersonalAccessToken + 91, // 99: scalibr.SecretData.github_fine_grained_personal_access_token:type_name -> scalibr.SecretData.GithubFineGrainedPersonalAccessToken + 93, // 100: scalibr.SecretData.github_app_user_to_server_token:type_name -> scalibr.SecretData.GithubAppUserToServerToken + 92, // 101: scalibr.SecretData.github_oauth_token:type_name -> scalibr.SecretData.GithubOAuthToken + 86, // 102: scalibr.SecretData.openrouter_api_key:type_name -> scalibr.SecretData.OpenRouterAPIKey + 4, // 103: scalibr.SecretStatus.status:type_name -> scalibr.SecretStatus.SecretStatusEnum + 104, // 104: scalibr.SecretStatus.last_updated:type_name -> google.protobuf.Timestamp + 62, // 105: scalibr.Location.filepath:type_name -> scalibr.Filepath + 63, // 106: scalibr.Location.filepath_with_layer_details:type_name -> scalibr.FilepathWithLayerDetails + 64, // 107: scalibr.Location.environment_variable:type_name -> scalibr.EnvironmentVariable + 65, // 108: scalibr.Location.container_command:type_name -> scalibr.ContainerCommand + 11, // 109: scalibr.FilepathWithLayerDetails.layer_details:type_name -> scalibr.LayerDetails + 69, // 110: scalibr.ContainerImageMetadata.layer_metadata:type_name -> scalibr.LayerMetadata + 67, // 111: scalibr.ContainerImageMetadata.base_image_chains:type_name -> scalibr.BaseImageChain + 68, // 112: scalibr.BaseImageChain.base_images:type_name -> scalibr.BaseImageDetails + 52, // 113: scalibr.PodmanMetadata.ExposedPortsEntry.value:type_name -> scalibr.Protocol + 114, // [114:114] is the sub-list for method output_type + 114, // [114:114] is the sub-list for method input_type + 114, // [114:114] is the sub-list for extension type_name + 114, // [114:114] is the sub-list for extension extendee + 0, // [0:114] is the sub-list for field type_name } func init() { file_proto_scan_result_proto_init() } @@ -9377,6 +8806,7 @@ func file_proto_scan_result_proto_init() { (*SecretData_GithubFineGrainedPersonalAccessToken_)(nil), (*SecretData_GithubAppUserToServerToken_)(nil), (*SecretData_GithubOauthToken)(nil), + (*SecretData_OpenrouterApiKey)(nil), } file_proto_scan_result_proto_msgTypes[56].OneofWrappers = []any{ (*Location_Filepath)(nil), @@ -9388,9 +8818,9 @@ func file_proto_scan_result_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_proto_scan_result_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_scan_result_proto_rawDesc), len(file_proto_scan_result_proto_rawDesc)), NumEnums: 5, - NumMessages: 98, + NumMessages: 99, NumExtensions: 0, NumServices: 0, }, @@ -9400,7 +8830,6 @@ func file_proto_scan_result_proto_init() { MessageInfos: file_proto_scan_result_proto_msgTypes, }.Build() File_proto_scan_result_proto = out.File - file_proto_scan_result_proto_rawDesc = nil file_proto_scan_result_proto_goTypes = nil file_proto_scan_result_proto_depIdxs = nil } diff --git a/binary/proto/secret.go b/binary/proto/secret.go index 4c9c9c78f..23854bd5d 100644 --- a/binary/proto/secret.go +++ b/binary/proto/secret.go @@ -34,6 +34,7 @@ import ( veleshashicorpvault "github.com/google/osv-scalibr/veles/secrets/hashicorpvault" "github.com/google/osv-scalibr/veles/secrets/huggingfaceapikey" velesopenai "github.com/google/osv-scalibr/veles/secrets/openai" + velesopenrouter "github.com/google/osv-scalibr/veles/secrets/openrouter" velesperplexity "github.com/google/osv-scalibr/veles/secrets/perplexityapikey" velespostmanapikey "github.com/google/osv-scalibr/veles/secrets/postmanapikey" velesprivatekey "github.com/google/osv-scalibr/veles/secrets/privatekey" @@ -142,6 +143,8 @@ func velesSecretToProto(s veles.Secret) (*spb.SecretData, error) { return tinkKeysetToProto(t), nil case velesopenai.APIKey: return openaiAPIKeyToProto(t.Key), nil + case velesopenrouter.APIKey: + return openrouterAPIKeyToProto(t.Key), nil case velespostmanapikey.PostmanAPIKey: return postmanAPIKeyToProto(t), nil case velespostmanapikey.PostmanCollectionToken: @@ -773,3 +776,13 @@ func hashicorpVaultAppRoleCredentialsToStruct(credsPB *spb.SecretData_HashiCorpV ID: credsPB.GetId(), } } + +func openrouterAPIKeyToProto(key string) *spb.SecretData { + return &spb.SecretData{ + Secret: &spb.SecretData_OpenrouterApiKey{ + OpenrouterApiKey: &spb.SecretData_OpenRouterAPIKey{ + Key: key, + }, + }, + } +} diff --git a/enricher/enricherlist/list.go b/enricher/enricherlist/list.go index 01c48ab4e..4572bd759 100644 --- a/enricher/enricherlist/list.go +++ b/enricher/enricherlist/list.go @@ -41,6 +41,7 @@ import ( "github.com/google/osv-scalibr/veles/secrets/hashicorpvault" "github.com/google/osv-scalibr/veles/secrets/huggingfaceapikey" "github.com/google/osv-scalibr/veles/secrets/openai" + "github.com/google/osv-scalibr/veles/secrets/openrouter" "github.com/google/osv-scalibr/veles/secrets/perplexityapikey" "github.com/google/osv-scalibr/veles/secrets/postmanapikey" "github.com/google/osv-scalibr/veles/secrets/stripeapikeys" @@ -89,6 +90,7 @@ var ( fromVeles(hashicorpvault.NewAppRoleValidator(), "secrets/hashicorpvaultapprolevalidate", 0), fromVeles(huggingfaceapikey.NewValidator(), "secrets/huggingfaceapikeyvalidate", 0), fromVeles(openai.NewProjectValidator(), "secrets/openaivalidate", 0), + fromVeles(openrouter.NewAPIKeyValidator(), "secrets/openroutervalidate", 0), fromVeles(perplexityapikey.NewValidator(), "secrets/perplexityapikeyvalidate", 0), fromVeles(postmanapikey.NewAPIValidator(), "secrets/postmanapikeyvalidate", 0), fromVeles(postmanapikey.NewCollectionValidator(), "secrets/postmancollectiontokenvalidate", 0), diff --git a/enricher/secrets/secrets.go b/enricher/secrets/secrets.go index 14360863a..589aa71de 100644 --- a/enricher/secrets/secrets.go +++ b/enricher/secrets/secrets.go @@ -94,4 +94,4 @@ func (e *Enricher) Enrich(ctx context.Context, _ *enricher.ScanInput, inv *inven } } return nil -} +} \ No newline at end of file diff --git a/extractor/filesystem/list/list.go b/extractor/filesystem/list/list.go index a460c3ea1..ff36b6759 100644 --- a/extractor/filesystem/list/list.go +++ b/extractor/filesystem/list/list.go @@ -105,6 +105,7 @@ import ( "github.com/google/osv-scalibr/veles/secrets/hashicorpvault" "github.com/google/osv-scalibr/veles/secrets/huggingfaceapikey" "github.com/google/osv-scalibr/veles/secrets/openai" + "github.com/google/osv-scalibr/veles/secrets/openrouter" "github.com/google/osv-scalibr/veles/secrets/perplexityapikey" "github.com/google/osv-scalibr/veles/secrets/postmanapikey" "github.com/google/osv-scalibr/veles/secrets/privatekey" @@ -269,6 +270,7 @@ var ( {hashicorpvault.NewAppRoleDetector(), "secrets/hashicorpvaultapprole", 0}, {huggingfaceapikey.NewDetector(), "secrets/huggingfaceapikey", 0}, {openai.NewDetector(), "secrets/openai", 0}, + {openrouter.NewDetector(), "secrets/openrouter", 0}, {perplexityapikey.NewDetector(), "secrets/perplexityapikey", 0}, {postmanapikey.NewAPIKeyDetector(), "secrets/postmanapikey", 0}, {postmanapikey.NewCollectionTokenDetector(), "secrets/postmancollectiontoken", 0}, diff --git a/veles/secrets/openrouter/detector.go b/veles/secrets/openrouter/detector.go new file mode 100644 index 000000000..54d5a412f --- /dev/null +++ b/veles/secrets/openrouter/detector.go @@ -0,0 +1,41 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package openrouter + +import ( + "regexp" + + "github.com/google/osv-scalibr/veles" + "github.com/google/osv-scalibr/veles/secrets/common/simpletoken" +) + +// maxTokenLength is the maximum size of an OpenRouter API key. +const maxTokenLength = 100 + +// keyRe is a regular expression that matches OpenRouter API keys. +// OpenRouter API keys typically start with "sk-or-" followed by alphanumeric characters, +// underscores, and hyphens. The regex is designed to be specific enough to avoid false positives. +var keyRe = regexp.MustCompile(`sk-or-v1-[A-Za-z0-9_-]{20,}`) + +// NewDetector returns a new simpletoken.Detector that matches OpenRouter API keys. +func NewDetector() veles.Detector { + return simpletoken.Detector{ + MaxLen: maxTokenLength, + Re: keyRe, + FromMatch: func(b []byte) (veles.Secret, bool) { + return APIKey{Key: string(b)}, true + }, + } +} diff --git a/veles/secrets/openrouter/detector_test.go b/veles/secrets/openrouter/detector_test.go new file mode 100644 index 000000000..c308647f4 --- /dev/null +++ b/veles/secrets/openrouter/detector_test.go @@ -0,0 +1,182 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package openrouter + +import ( + "strings" + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/google/osv-scalibr/veles" +) + +const ( + validAPIKey = "sk-or-v1-abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr" +) + +func TestDetector(t *testing.T) { + engine, err := veles.NewDetectionEngine([]veles.Detector{NewDetector()}) + if err != nil { + t.Fatal(err) + } + + cases := []struct { + name string + input string + want []veles.Secret + }{{ + name: "valid_openrouter_key", + input: validAPIKey, + want: []veles.Secret{ + APIKey{Key: validAPIKey}, + }, + }, { + name: "openrouter_key_in_config", + input: "OPENROUTER_API_KEY=" + validAPIKey, + want: []veles.Secret{ + APIKey{Key: validAPIKey}, + }, + }, { + name: "openrouter_key_in_env", + input: "export OPENROUTER_KEY=\"" + validAPIKey + "\"", + want: []veles.Secret{ + APIKey{Key: validAPIKey}, + }, + }, { + name: "multiple_openrouter_keys", + input: validAPIKey + "\n" + + "sk-or-v1-zyxwvutsrqponmlkjihgfedcba0987654321zyxwvutsrqponmlkjihg", + want: []veles.Secret{ + APIKey{Key: validAPIKey}, + APIKey{Key: "sk-or-v1-zyxwvutsrqponmlkjihgfedcba0987654321zyxwvutsrqponmlkjihg"}, + }, + }, { + name: "openrouter_key_with_special_chars", + input: "sk-or-v1-test_AbC_DeF-GhIjKlMnOpQrStUvWxYzAbCdEfGhIjKlMnOpQrStUvWxYzAbCdEfGh", + want: []veles.Secret{ + APIKey{Key: "sk-or-v1-test_AbC_DeF-GhIjKlMnOpQrStUvWxYzAbCdEfGhIjKlMnOpQrStUvWxYzAbCdEfGh"}, + }, + }} + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + got, err := engine.Detect(t.Context(), strings.NewReader(tc.input)) + if err != nil { + t.Errorf("Detect() error: %v, want nil", err) + } + if diff := cmp.Diff(tc.want, got, cmpopts.EquateEmpty()); diff != "" { + t.Errorf("Detect() diff (-want +got):\n%s", diff) + } + }) + } +} + +func TestDetector_NoMatches(t *testing.T) { + engine, err := veles.NewDetectionEngine([]veles.Detector{NewDetector()}) + if err != nil { + t.Fatal(err) + } + + cases := []struct { + name string + input string + }{{ + name: "too_short", + input: "sk-or-v1-tooshort", + }, { + name: "wrong_prefix", + input: "sk-openai-abcdefghijklmnopqrstuvwxyz1234567890", + }, { + name: "missing_sk_prefix", + input: "or-v1-abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr", + }, { + name: "wrong_or_format", + input: "sk-orv1-abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr", + }, { + name: "openai_key_format", + input: "sk-proj-abcdefghij1234567890T3BlbkFJklmnopqrstuvwxyz098765432109876", + }, { + name: "no_secrets", + input: "This is just regular text with no secrets", + }, { + name: "sk_prefix_but_not_key", + input: "skeleton key is not an API key", + }, { + name: "or_prefix_but_not_key", + input: "or something else entirely", + }} + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + got, err := engine.Detect(t.Context(), strings.NewReader(tc.input)) + if err != nil { + t.Errorf("Detect() error: %v, want nil", err) + } + if len(got) != 0 { + t.Errorf("Detect() got %v secrets, want 0", len(got)) + } + }) + } +} + +func TestOpenRouterKeyValidation(t *testing.T) { + testCases := []struct { + name string + key string + isValid bool + }{{ + name: "valid_openrouter_key", + key: validAPIKey, + isValid: true, + }, { + name: "not_a_key", + key: "not-a-key", + isValid: false, + }, { + name: "empty_string", + key: "", + isValid: false, + }, { + name: "openai_key_format", + key: "sk-proj-123456789012345678901234567890123456789012345678", + isValid: false, + }, { + name: "too_short_openrouter_key", + key: "sk-or-v1-short", + isValid: false, + }} + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + // Test by trying to detect the key + engine, err := veles.NewDetectionEngine([]veles.Detector{NewDetector()}) + if err != nil { + t.Fatal(err) + } + + got, err := engine.Detect(t.Context(), strings.NewReader(tc.key)) + if err != nil { + t.Errorf("Detect() error: %v, want nil", err) + } + + isDetected := len(got) > 0 + if isDetected != tc.isValid { + t.Errorf("Key %q detected=%v, want valid=%v", + tc.key, isDetected, tc.isValid) + } + }) + } +} diff --git a/veles/secrets/openrouter/openrouter.go b/veles/secrets/openrouter/openrouter.go new file mode 100644 index 000000000..857277296 --- /dev/null +++ b/veles/secrets/openrouter/openrouter.go @@ -0,0 +1,23 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package openrouter contains Veles Secret types and Detectors for +// OpenRouter API keys. +package openrouter + +// APIKey is a Veles Secret that holds relevant information for an +// OpenRouter API key. +type APIKey struct { + Key string +} diff --git a/veles/secrets/openrouter/validator.go b/veles/secrets/openrouter/validator.go new file mode 100644 index 000000000..9921b4e68 --- /dev/null +++ b/veles/secrets/openrouter/validator.go @@ -0,0 +1,156 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package openrouter + +import ( + "context" + "errors" + "fmt" + "net/http" + "time" + + "github.com/google/osv-scalibr/veles" +) + +const ( + // OpenRouter API base URL + openRouterAPIBaseURL = "https://openrouter.ai/api" + // Timeout for API validation requests + validationTimeout = 10 * time.Second +) + +// ValidationConfig holds configuration for API validation +type ValidationConfig struct { + HTTPClient *http.Client + OpenRouterAPIURL string +} + +// NewValidationConfig creates a new ValidationConfig with default values +func NewValidationConfig() *ValidationConfig { + return &ValidationConfig{ + HTTPClient: &http.Client{ + Timeout: validationTimeout, + }, + OpenRouterAPIURL: openRouterAPIBaseURL, + } +} + +// WithHTTPClient configures the http.Client for validation +func (c *ValidationConfig) WithHTTPClient( + client *http.Client) *ValidationConfig { + c.HTTPClient = client + return c +} + +// WithAPIURL configures the OpenRouter API URL for validation +func (c *ValidationConfig) WithAPIURL(url string) *ValidationConfig { + c.OpenRouterAPIURL = url + return c +} + +var _ veles.Validator[APIKey] = &APIKeyValidator{} + +// APIKeyValidator is a Veles Validator for OpenRouter API keys. +// It validates API keys by making a test request to the OpenRouter API. +type APIKeyValidator struct { + config *ValidationConfig +} + +// ValidatorOption configures an APIKeyValidator when creating it via +// NewAPIKeyValidator. +type ValidatorOption func(*APIKeyValidator) + +// WithHTTPClient configures the http.Client that the APIKeyValidator uses. +// +// By default it uses http.DefaultClient with a timeout. +func WithHTTPClient(c *http.Client) ValidatorOption { + return func(v *APIKeyValidator) { + v.config.WithHTTPClient(c) + } +} + +// WithAPIURL configures the OpenRouter API URL that the APIKeyValidator uses. +// +// By default it uses the production OpenRouter API URL. +// This is useful for testing with mock servers. +func WithAPIURL(url string) ValidatorOption { + return func(v *APIKeyValidator) { + v.config.WithAPIURL(url) + } +} + +// NewAPIKeyValidator creates a new APIKeyValidator with the given +// ValidatorOptions. +func NewAPIKeyValidator(opts ...ValidatorOption) *APIKeyValidator { + v := &APIKeyValidator{ + config: NewValidationConfig(), + } + for _, opt := range opts { + opt(v) + } + return v +} + +// Validate checks whether the given APIKey is valid. +// +// It makes a request to the /v1/auth/key endpoint which is specifically +// designed for API key validation and authentication checking. +func (v *APIKeyValidator) Validate(ctx context.Context, + key APIKey) (veles.ValidationStatus, error) { + // Check for empty key + if key.Key == "" { + return veles.ValidationFailed, errors.New("empty API key") + } + + // Create HTTP request to the /v1/auth/key endpoint + req, err := http.NewRequestWithContext(ctx, http.MethodGet, + v.config.OpenRouterAPIURL+"/v1/auth/key", nil) + if err != nil { + return veles.ValidationFailed, + fmt.Errorf("unable to create HTTP request: %w", err) + } + + // Set Authorization header with Bearer token (OpenRouter format) + req.Header.Set("Authorization", "Bearer "+key.Key) + + // Make the request + res, err := v.config.HTTPClient.Do(req) + if err != nil { + return veles.ValidationFailed, + fmt.Errorf("unable to validate API key: %w", err) + } + defer res.Body.Close() + + // Check response status + switch res.StatusCode { + case http.StatusOK: + // Key is valid + return veles.ValidationValid, nil + case http.StatusUnauthorized: + // Key is invalid + return veles.ValidationInvalid, nil + case http.StatusTooManyRequests: + // Rate limited - key is likely valid but we're being throttled. + // StatusTooManyRequests indicates that the key successfully + // authenticates against the OpenRouter API and that this account + // is rate limited: https://openrouter.ai/docs/api-reference/errors + return veles.ValidationValid, nil + default: + // Other status codes indicate an error in our validation process + return veles.ValidationFailed, + fmt.Errorf("unexpected HTTP status %d during validation", + res.StatusCode) + } +} diff --git a/veles/secrets/openrouter/validator_test.go b/veles/secrets/openrouter/validator_test.go new file mode 100644 index 000000000..e3e82b605 --- /dev/null +++ b/veles/secrets/openrouter/validator_test.go @@ -0,0 +1,146 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package openrouter_test + +import ( + "context" + "net/http" + "net/http/httptest" + "testing" + + "github.com/google/osv-scalibr/veles" + "github.com/google/osv-scalibr/veles/secrets/openrouter" +) + +const ( + validatorTestKey = "sk-or-v1-abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr" +) + +// mockOpenRouterServer creates a mock OpenRouter API server for testing API keys +func mockOpenRouterServer(t *testing.T, expectedKey string, statusCode int) *httptest.Server { + t.Helper() + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, + r *http.Request) { + // Check if it's a GET request to the auth/key endpoint + if r.Method != http.MethodGet || r.URL.Path != "/v1/auth/key" { + t.Errorf("unexpected request: %s %s, expected: GET /v1/auth/key", + r.Method, r.URL.Path) + http.Error(w, "not found", http.StatusNotFound) + return + } + + // Check Authorization header (Bearer token format) + expectedAuth := "Bearer " + expectedKey + if r.Header.Get("Authorization") != expectedAuth { + t.Errorf("expected Authorization: %s, got: %s", + expectedAuth, r.Header.Get("Authorization")) + } + + // Set response + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(statusCode) + })) + + return server +} + +func TestAPIKeyValidator(t *testing.T) { + cases := []struct { + name string + statusCode int + want veles.ValidationStatus + expectError bool + }{ + { + name: "valid_key", + statusCode: http.StatusOK, + want: veles.ValidationValid, + }, + { + name: "invalid_key_unauthorized", + statusCode: http.StatusUnauthorized, + want: veles.ValidationInvalid, + }, + { + name: "forbidden_but_likely_valid", + statusCode: http.StatusForbidden, + want: veles.ValidationFailed, + expectError: true, + }, + { + name: "rate_limited_but_likely_valid", + statusCode: http.StatusTooManyRequests, + want: veles.ValidationValid, + }, + { + name: "server_error", + statusCode: http.StatusInternalServerError, + want: veles.ValidationFailed, + expectError: true, + }, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + // Create mock server + server := mockOpenRouterServer(t, validatorTestKey, + tc.statusCode) + defer server.Close() + + // Create validator with mock client and server URL + validator := openrouter.NewAPIKeyValidator( + openrouter.WithHTTPClient(server.Client()), + openrouter.WithAPIURL(server.URL), + ) + + // Create test key + key := openrouter.APIKey{Key: validatorTestKey} + + // Test validation + got, err := validator.Validate(context.Background(), key) + + // Check error expectation + if tc.expectError { + if err == nil { + t.Errorf("Validate() expected error, got nil") + } + } else { + if err != nil { + t.Errorf("Validate() unexpected error: %v", err) + } + } + + // Check validation status + if got != tc.want { + t.Errorf("Validate() = %v, want %v", got, tc.want) + } + }) + } +} + +func TestAPIKeyValidator_EmptyKey(t *testing.T) { + validator := openrouter.NewAPIKeyValidator() + key := openrouter.APIKey{Key: ""} + + got, err := validator.Validate(context.Background(), key) + + if err == nil { + t.Errorf("Validate() expected error for empty key, got nil") + } + if got != veles.ValidationFailed { + t.Errorf("Validate() = %v, want %v", got, veles.ValidationFailed) + } +}