blob: 494e440290039d84e44d1ea31f4c6e10bc43b451 [file] [log] [blame]
// Copyright 2023 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.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
// protoc v4.25.3
// source: google/cloud/securitycentermanagement/v1/security_center_management.proto
package securitycentermanagementpb
import (
context "context"
reflect "reflect"
sync "sync"
iampb "cloud.google.com/go/iam/apiv1/iampb"
_ "google.golang.org/genproto/googleapis/api/annotations"
status "google.golang.org/genproto/googleapis/rpc/status"
expr "google.golang.org/genproto/googleapis/type/expr"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status1 "google.golang.org/grpc/status"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
emptypb "google.golang.org/protobuf/types/known/emptypb"
fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
structpb "google.golang.org/protobuf/types/known/structpb"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// The enablement state of the module.
type EffectiveSecurityHealthAnalyticsCustomModule_EnablementState int32
const (
// Unspecified enablement state.
EffectiveSecurityHealthAnalyticsCustomModule_ENABLEMENT_STATE_UNSPECIFIED EffectiveSecurityHealthAnalyticsCustomModule_EnablementState = 0
// The module is enabled at the given level.
EffectiveSecurityHealthAnalyticsCustomModule_ENABLED EffectiveSecurityHealthAnalyticsCustomModule_EnablementState = 1
// The module is disabled at the given level.
EffectiveSecurityHealthAnalyticsCustomModule_DISABLED EffectiveSecurityHealthAnalyticsCustomModule_EnablementState = 2
)
// Enum value maps for EffectiveSecurityHealthAnalyticsCustomModule_EnablementState.
var (
EffectiveSecurityHealthAnalyticsCustomModule_EnablementState_name = map[int32]string{
0: "ENABLEMENT_STATE_UNSPECIFIED",
1: "ENABLED",
2: "DISABLED",
}
EffectiveSecurityHealthAnalyticsCustomModule_EnablementState_value = map[string]int32{
"ENABLEMENT_STATE_UNSPECIFIED": 0,
"ENABLED": 1,
"DISABLED": 2,
}
)
func (x EffectiveSecurityHealthAnalyticsCustomModule_EnablementState) Enum() *EffectiveSecurityHealthAnalyticsCustomModule_EnablementState {
p := new(EffectiveSecurityHealthAnalyticsCustomModule_EnablementState)
*p = x
return p
}
func (x EffectiveSecurityHealthAnalyticsCustomModule_EnablementState) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (EffectiveSecurityHealthAnalyticsCustomModule_EnablementState) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[0].Descriptor()
}
func (EffectiveSecurityHealthAnalyticsCustomModule_EnablementState) Type() protoreflect.EnumType {
return &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[0]
}
func (x EffectiveSecurityHealthAnalyticsCustomModule_EnablementState) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use EffectiveSecurityHealthAnalyticsCustomModule_EnablementState.Descriptor instead.
func (EffectiveSecurityHealthAnalyticsCustomModule_EnablementState) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{0, 0}
}
// Possible enablement states of a custom module.
type SecurityHealthAnalyticsCustomModule_EnablementState int32
const (
// Unspecified enablement state.
SecurityHealthAnalyticsCustomModule_ENABLEMENT_STATE_UNSPECIFIED SecurityHealthAnalyticsCustomModule_EnablementState = 0
// The module is enabled at the given CRM resource.
SecurityHealthAnalyticsCustomModule_ENABLED SecurityHealthAnalyticsCustomModule_EnablementState = 1
// The module is disabled at the given CRM resource.
SecurityHealthAnalyticsCustomModule_DISABLED SecurityHealthAnalyticsCustomModule_EnablementState = 2
// State is inherited from an ancestor module. The module will either
// be effectively ENABLED or DISABLED based on its closest non-inherited
// ancestor module in the CRM hierarchy. Attempting to set a top level
// module (module with no parent) to the INHERITED state will result in an
// INVALID_ARGUMENT error.
SecurityHealthAnalyticsCustomModule_INHERITED SecurityHealthAnalyticsCustomModule_EnablementState = 3
)
// Enum value maps for SecurityHealthAnalyticsCustomModule_EnablementState.
var (
SecurityHealthAnalyticsCustomModule_EnablementState_name = map[int32]string{
0: "ENABLEMENT_STATE_UNSPECIFIED",
1: "ENABLED",
2: "DISABLED",
3: "INHERITED",
}
SecurityHealthAnalyticsCustomModule_EnablementState_value = map[string]int32{
"ENABLEMENT_STATE_UNSPECIFIED": 0,
"ENABLED": 1,
"DISABLED": 2,
"INHERITED": 3,
}
)
func (x SecurityHealthAnalyticsCustomModule_EnablementState) Enum() *SecurityHealthAnalyticsCustomModule_EnablementState {
p := new(SecurityHealthAnalyticsCustomModule_EnablementState)
*p = x
return p
}
func (x SecurityHealthAnalyticsCustomModule_EnablementState) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SecurityHealthAnalyticsCustomModule_EnablementState) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[1].Descriptor()
}
func (SecurityHealthAnalyticsCustomModule_EnablementState) Type() protoreflect.EnumType {
return &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[1]
}
func (x SecurityHealthAnalyticsCustomModule_EnablementState) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use SecurityHealthAnalyticsCustomModule_EnablementState.Descriptor instead.
func (SecurityHealthAnalyticsCustomModule_EnablementState) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{4, 0}
}
// Defines the valid value options for the severity of a finding.
type CustomConfig_Severity int32
const (
// Unspecified severity.
CustomConfig_SEVERITY_UNSPECIFIED CustomConfig_Severity = 0
// Critical severity.
CustomConfig_CRITICAL CustomConfig_Severity = 1
// High severity.
CustomConfig_HIGH CustomConfig_Severity = 2
// Medium severity.
CustomConfig_MEDIUM CustomConfig_Severity = 3
// Low severity.
CustomConfig_LOW CustomConfig_Severity = 4
)
// Enum value maps for CustomConfig_Severity.
var (
CustomConfig_Severity_name = map[int32]string{
0: "SEVERITY_UNSPECIFIED",
1: "CRITICAL",
2: "HIGH",
3: "MEDIUM",
4: "LOW",
}
CustomConfig_Severity_value = map[string]int32{
"SEVERITY_UNSPECIFIED": 0,
"CRITICAL": 1,
"HIGH": 2,
"MEDIUM": 3,
"LOW": 4,
}
)
func (x CustomConfig_Severity) Enum() *CustomConfig_Severity {
p := new(CustomConfig_Severity)
*p = x
return p
}
func (x CustomConfig_Severity) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (CustomConfig_Severity) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[2].Descriptor()
}
func (CustomConfig_Severity) Type() protoreflect.EnumType {
return &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[2]
}
func (x CustomConfig_Severity) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use CustomConfig_Severity.Descriptor instead.
func (CustomConfig_Severity) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{5, 0}
}
// The state of the finding.
type SimulatedFinding_State int32
const (
// Unspecified state.
SimulatedFinding_STATE_UNSPECIFIED SimulatedFinding_State = 0
// The finding requires attention and has not been addressed yet.
SimulatedFinding_ACTIVE SimulatedFinding_State = 1
// The finding has been fixed, triaged as a non-issue or otherwise addressed
// and is no longer active.
SimulatedFinding_INACTIVE SimulatedFinding_State = 2
)
// Enum value maps for SimulatedFinding_State.
var (
SimulatedFinding_State_name = map[int32]string{
0: "STATE_UNSPECIFIED",
1: "ACTIVE",
2: "INACTIVE",
}
SimulatedFinding_State_value = map[string]int32{
"STATE_UNSPECIFIED": 0,
"ACTIVE": 1,
"INACTIVE": 2,
}
)
func (x SimulatedFinding_State) Enum() *SimulatedFinding_State {
p := new(SimulatedFinding_State)
*p = x
return p
}
func (x SimulatedFinding_State) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SimulatedFinding_State) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[3].Descriptor()
}
func (SimulatedFinding_State) Type() protoreflect.EnumType {
return &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[3]
}
func (x SimulatedFinding_State) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use SimulatedFinding_State.Descriptor instead.
func (SimulatedFinding_State) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{15, 0}
}
// The severity of the finding.
type SimulatedFinding_Severity int32
const (
// This value is used for findings when a source doesn't write a severity
// value.
SimulatedFinding_SEVERITY_UNSPECIFIED SimulatedFinding_Severity = 0
// Vulnerability:
// A critical vulnerability is easily discoverable by an external actor,
// exploitable, and results in the direct ability to execute arbitrary code,
// exfiltrate data, and otherwise gain additional access and privileges to
// cloud resources and workloads. Examples include publicly accessible
// unprotected user data and public SSH access with weak or no
// passwords.
//
// Threat:
// Indicates a threat that is able to access, modify, or delete data or
// execute unauthorized code within existing resources.
SimulatedFinding_CRITICAL SimulatedFinding_Severity = 1
// Vulnerability:
// A high risk vulnerability can be easily discovered and exploited in
// combination with other vulnerabilities in order to gain direct access and
// the ability to execute arbitrary code, exfiltrate data, and otherwise
// gain additional access and privileges to cloud resources and workloads.
// An example is a database with weak or no passwords that is only
// accessible internally. This database could easily be compromised by an
// actor that had access to the internal network.
//
// Threat:
// Indicates a threat that is able to create new computational resources in
// an environment but not able to access data or execute code in existing
// resources.
SimulatedFinding_HIGH SimulatedFinding_Severity = 2
// Vulnerability:
// A medium risk vulnerability could be used by an actor to gain access to
// resources or privileges that enable them to eventually (through multiple
// steps or a complex exploit) gain access and the ability to execute
// arbitrary code or exfiltrate data. An example is a service account with
// access to more projects than it should have. If an actor gains access to
// the service account, they could potentially use that access to manipulate
// a project the service account was not intended to.
//
// Threat:
// Indicates a threat that is able to cause operational impact but may not
// access data or execute unauthorized code.
SimulatedFinding_MEDIUM SimulatedFinding_Severity = 3
// Vulnerability:
// A low risk vulnerability hampers a security organization's ability to
// detect vulnerabilities or active threats in their deployment, or prevents
// the root cause investigation of security issues. An example is monitoring
// and logs being disabled for resource configurations and access.
//
// Threat:
// Indicates a threat that has obtained minimal access to an environment but
// is not able to access data, execute code, or create resources.
SimulatedFinding_LOW SimulatedFinding_Severity = 4
)
// Enum value maps for SimulatedFinding_Severity.
var (
SimulatedFinding_Severity_name = map[int32]string{
0: "SEVERITY_UNSPECIFIED",
1: "CRITICAL",
2: "HIGH",
3: "MEDIUM",
4: "LOW",
}
SimulatedFinding_Severity_value = map[string]int32{
"SEVERITY_UNSPECIFIED": 0,
"CRITICAL": 1,
"HIGH": 2,
"MEDIUM": 3,
"LOW": 4,
}
)
func (x SimulatedFinding_Severity) Enum() *SimulatedFinding_Severity {
p := new(SimulatedFinding_Severity)
*p = x
return p
}
func (x SimulatedFinding_Severity) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SimulatedFinding_Severity) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[4].Descriptor()
}
func (SimulatedFinding_Severity) Type() protoreflect.EnumType {
return &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[4]
}
func (x SimulatedFinding_Severity) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use SimulatedFinding_Severity.Descriptor instead.
func (SimulatedFinding_Severity) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{15, 1}
}
// Represents what kind of Finding it is.
type SimulatedFinding_FindingClass int32
const (
// Unspecified finding class.
SimulatedFinding_FINDING_CLASS_UNSPECIFIED SimulatedFinding_FindingClass = 0
// Describes unwanted or malicious activity.
SimulatedFinding_THREAT SimulatedFinding_FindingClass = 1
// Describes a potential weakness in software that increases risk to
// Confidentiality & Integrity & Availability.
SimulatedFinding_VULNERABILITY SimulatedFinding_FindingClass = 2
// Describes a potential weakness in cloud resource/asset configuration that
// increases risk.
SimulatedFinding_MISCONFIGURATION SimulatedFinding_FindingClass = 3
// Describes a security observation that is for informational purposes.
SimulatedFinding_OBSERVATION SimulatedFinding_FindingClass = 4
// Describes an error that prevents some SCC functionality.
SimulatedFinding_SCC_ERROR SimulatedFinding_FindingClass = 5
// Describes a potential security risk due to a change in the security
// posture.
SimulatedFinding_POSTURE_VIOLATION SimulatedFinding_FindingClass = 6
)
// Enum value maps for SimulatedFinding_FindingClass.
var (
SimulatedFinding_FindingClass_name = map[int32]string{
0: "FINDING_CLASS_UNSPECIFIED",
1: "THREAT",
2: "VULNERABILITY",
3: "MISCONFIGURATION",
4: "OBSERVATION",
5: "SCC_ERROR",
6: "POSTURE_VIOLATION",
}
SimulatedFinding_FindingClass_value = map[string]int32{
"FINDING_CLASS_UNSPECIFIED": 0,
"THREAT": 1,
"VULNERABILITY": 2,
"MISCONFIGURATION": 3,
"OBSERVATION": 4,
"SCC_ERROR": 5,
"POSTURE_VIOLATION": 6,
}
)
func (x SimulatedFinding_FindingClass) Enum() *SimulatedFinding_FindingClass {
p := new(SimulatedFinding_FindingClass)
*p = x
return p
}
func (x SimulatedFinding_FindingClass) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (SimulatedFinding_FindingClass) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[5].Descriptor()
}
func (SimulatedFinding_FindingClass) Type() protoreflect.EnumType {
return &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[5]
}
func (x SimulatedFinding_FindingClass) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use SimulatedFinding_FindingClass.Descriptor instead.
func (SimulatedFinding_FindingClass) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{15, 2}
}
// The enablement state of the module.
type EffectiveEventThreatDetectionCustomModule_EnablementState int32
const (
// Unspecified enablement state.
EffectiveEventThreatDetectionCustomModule_ENABLEMENT_STATE_UNSPECIFIED EffectiveEventThreatDetectionCustomModule_EnablementState = 0
// The module is enabled at the given level.
EffectiveEventThreatDetectionCustomModule_ENABLED EffectiveEventThreatDetectionCustomModule_EnablementState = 1
// The module is disabled at the given level.
EffectiveEventThreatDetectionCustomModule_DISABLED EffectiveEventThreatDetectionCustomModule_EnablementState = 2
)
// Enum value maps for EffectiveEventThreatDetectionCustomModule_EnablementState.
var (
EffectiveEventThreatDetectionCustomModule_EnablementState_name = map[int32]string{
0: "ENABLEMENT_STATE_UNSPECIFIED",
1: "ENABLED",
2: "DISABLED",
}
EffectiveEventThreatDetectionCustomModule_EnablementState_value = map[string]int32{
"ENABLEMENT_STATE_UNSPECIFIED": 0,
"ENABLED": 1,
"DISABLED": 2,
}
)
func (x EffectiveEventThreatDetectionCustomModule_EnablementState) Enum() *EffectiveEventThreatDetectionCustomModule_EnablementState {
p := new(EffectiveEventThreatDetectionCustomModule_EnablementState)
*p = x
return p
}
func (x EffectiveEventThreatDetectionCustomModule_EnablementState) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (EffectiveEventThreatDetectionCustomModule_EnablementState) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[6].Descriptor()
}
func (EffectiveEventThreatDetectionCustomModule_EnablementState) Type() protoreflect.EnumType {
return &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[6]
}
func (x EffectiveEventThreatDetectionCustomModule_EnablementState) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use EffectiveEventThreatDetectionCustomModule_EnablementState.Descriptor instead.
func (EffectiveEventThreatDetectionCustomModule_EnablementState) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{17, 0}
}
// The enablement state of the module.
type EventThreatDetectionCustomModule_EnablementState int32
const (
// Unspecified enablement state.
EventThreatDetectionCustomModule_ENABLEMENT_STATE_UNSPECIFIED EventThreatDetectionCustomModule_EnablementState = 0
// The module is enabled at the given level.
EventThreatDetectionCustomModule_ENABLED EventThreatDetectionCustomModule_EnablementState = 1
// The module is disabled at the given level.
EventThreatDetectionCustomModule_DISABLED EventThreatDetectionCustomModule_EnablementState = 2
// State is inherited from an ancestor module. The module will either
// be effectively ENABLED or DISABLED based on its closest non-inherited
// ancestor module in the CRM hierarchy. Attempting to set a top level
// module (module with no parent) to the INHERITED state will result in an
// error.
EventThreatDetectionCustomModule_INHERITED EventThreatDetectionCustomModule_EnablementState = 3
)
// Enum value maps for EventThreatDetectionCustomModule_EnablementState.
var (
EventThreatDetectionCustomModule_EnablementState_name = map[int32]string{
0: "ENABLEMENT_STATE_UNSPECIFIED",
1: "ENABLED",
2: "DISABLED",
3: "INHERITED",
}
EventThreatDetectionCustomModule_EnablementState_value = map[string]int32{
"ENABLEMENT_STATE_UNSPECIFIED": 0,
"ENABLED": 1,
"DISABLED": 2,
"INHERITED": 3,
}
)
func (x EventThreatDetectionCustomModule_EnablementState) Enum() *EventThreatDetectionCustomModule_EnablementState {
p := new(EventThreatDetectionCustomModule_EnablementState)
*p = x
return p
}
func (x EventThreatDetectionCustomModule_EnablementState) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (EventThreatDetectionCustomModule_EnablementState) Descriptor() protoreflect.EnumDescriptor {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[7].Descriptor()
}
func (EventThreatDetectionCustomModule_EnablementState) Type() protoreflect.EnumType {
return &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes[7]
}
func (x EventThreatDetectionCustomModule_EnablementState) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use EventThreatDetectionCustomModule_EnablementState.Descriptor instead.
func (EventThreatDetectionCustomModule_EnablementState) EnumDescriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{21, 0}
}
// An EffectiveSecurityHealthAnalyticsCustomModule is the representation of
// a Security Health Analytics custom module at a specified level of the
// resource hierarchy: organization, folder, or project. If a custom module is
// inherited from a parent organization or folder, the value of the
// `enablementState` property in EffectiveSecurityHealthAnalyticsCustomModule is
// set to the value that is effective in the parent, instead of `INHERITED`.
// For example, if the module is enabled in a parent organization or folder, the
// effective enablement_state for the module in all child folders or projects is
// also `enabled`. EffectiveSecurityHealthAnalyticsCustomModule is read-only.
type EffectiveSecurityHealthAnalyticsCustomModule struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Identifier. The resource name of the custom module.
// Its format is
// "organizations/{organization}/locations/{location}/effectiveSecurityHealthAnalyticsCustomModules/{effective_security_health_analytics_custom_module}",
// or
// "folders/{folder}/locations/{location}/effectiveSecurityHealthAnalyticsCustomModules/{effective_security_health_analytics_custom_module}",
// or
// "projects/{project}/locations/{location}/effectiveSecurityHealthAnalyticsCustomModules/{effective_security_health_analytics_custom_module}"
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Output only. The user-specified configuration for the module.
CustomConfig *CustomConfig `protobuf:"bytes,2,opt,name=custom_config,json=customConfig,proto3" json:"custom_config,omitempty"`
// Output only. The effective state of enablement for the module at the given
// level of the hierarchy.
EnablementState EffectiveSecurityHealthAnalyticsCustomModule_EnablementState `protobuf:"varint,3,opt,name=enablement_state,json=enablementState,proto3,enum=google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule_EnablementState" json:"enablement_state,omitempty"`
// Output only. The display name for the custom module. The name must be
// between 1 and 128 characters, start with a lowercase letter, and contain
// alphanumeric characters or underscores only.
DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
}
func (x *EffectiveSecurityHealthAnalyticsCustomModule) Reset() {
*x = EffectiveSecurityHealthAnalyticsCustomModule{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EffectiveSecurityHealthAnalyticsCustomModule) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EffectiveSecurityHealthAnalyticsCustomModule) ProtoMessage() {}
func (x *EffectiveSecurityHealthAnalyticsCustomModule) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use EffectiveSecurityHealthAnalyticsCustomModule.ProtoReflect.Descriptor instead.
func (*EffectiveSecurityHealthAnalyticsCustomModule) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{0}
}
func (x *EffectiveSecurityHealthAnalyticsCustomModule) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *EffectiveSecurityHealthAnalyticsCustomModule) GetCustomConfig() *CustomConfig {
if x != nil {
return x.CustomConfig
}
return nil
}
func (x *EffectiveSecurityHealthAnalyticsCustomModule) GetEnablementState() EffectiveSecurityHealthAnalyticsCustomModule_EnablementState {
if x != nil {
return x.EnablementState
}
return EffectiveSecurityHealthAnalyticsCustomModule_ENABLEMENT_STATE_UNSPECIFIED
}
func (x *EffectiveSecurityHealthAnalyticsCustomModule) GetDisplayName() string {
if x != nil {
return x.DisplayName
}
return ""
}
// Request message for listing effective Security Health Analytics custom
// modules.
type ListEffectiveSecurityHealthAnalyticsCustomModulesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Name of parent to list effective custom modules. Its format is
// "organizations/{organization}/locations/{location}",
// "folders/{folder}/locations/{location}",
// or
// "projects/{project}/locations/{location}"
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Optional. The maximum number of results to return in a single response.
// Default is 10, minimum is 1, maximum is 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. The value returned by the last call indicating a continuation.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *ListEffectiveSecurityHealthAnalyticsCustomModulesRequest) Reset() {
*x = ListEffectiveSecurityHealthAnalyticsCustomModulesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListEffectiveSecurityHealthAnalyticsCustomModulesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListEffectiveSecurityHealthAnalyticsCustomModulesRequest) ProtoMessage() {}
func (x *ListEffectiveSecurityHealthAnalyticsCustomModulesRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListEffectiveSecurityHealthAnalyticsCustomModulesRequest.ProtoReflect.Descriptor instead.
func (*ListEffectiveSecurityHealthAnalyticsCustomModulesRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{1}
}
func (x *ListEffectiveSecurityHealthAnalyticsCustomModulesRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListEffectiveSecurityHealthAnalyticsCustomModulesRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListEffectiveSecurityHealthAnalyticsCustomModulesRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// Response message for listing effective Security Health Analytics custom
// modules.
type ListEffectiveSecurityHealthAnalyticsCustomModulesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The list of EffectiveSecurityHealthAnalyticsCustomModule
EffectiveSecurityHealthAnalyticsCustomModules []*EffectiveSecurityHealthAnalyticsCustomModule `protobuf:"bytes,1,rep,name=effective_security_health_analytics_custom_modules,json=effectiveSecurityHealthAnalyticsCustomModules,proto3" json:"effective_security_health_analytics_custom_modules,omitempty"`
// A token identifying a page of results the server should return.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListEffectiveSecurityHealthAnalyticsCustomModulesResponse) Reset() {
*x = ListEffectiveSecurityHealthAnalyticsCustomModulesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListEffectiveSecurityHealthAnalyticsCustomModulesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListEffectiveSecurityHealthAnalyticsCustomModulesResponse) ProtoMessage() {}
func (x *ListEffectiveSecurityHealthAnalyticsCustomModulesResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.ProtoReflect.Descriptor instead.
func (*ListEffectiveSecurityHealthAnalyticsCustomModulesResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{2}
}
func (x *ListEffectiveSecurityHealthAnalyticsCustomModulesResponse) GetEffectiveSecurityHealthAnalyticsCustomModules() []*EffectiveSecurityHealthAnalyticsCustomModule {
if x != nil {
return x.EffectiveSecurityHealthAnalyticsCustomModules
}
return nil
}
func (x *ListEffectiveSecurityHealthAnalyticsCustomModulesResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// Message for getting a EffectiveSecurityHealthAnalyticsCustomModule
type GetEffectiveSecurityHealthAnalyticsCustomModuleRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the SHA custom module.
//
// Its format is:
//
// - "organizations/{organization}/locations/{location}/effectiveSecurityHealthAnalyticsCustomModules/{module_id}".
// - "folders/{folder}/locations/{location}/effectiveSecurityHealthAnalyticsCustomModules/{module_id}".
// - "projects/{project}/locations/{location}/effectiveSecurityHealthAnalyticsCustomModules/{module_id}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetEffectiveSecurityHealthAnalyticsCustomModuleRequest) Reset() {
*x = GetEffectiveSecurityHealthAnalyticsCustomModuleRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetEffectiveSecurityHealthAnalyticsCustomModuleRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetEffectiveSecurityHealthAnalyticsCustomModuleRequest) ProtoMessage() {}
func (x *GetEffectiveSecurityHealthAnalyticsCustomModuleRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetEffectiveSecurityHealthAnalyticsCustomModuleRequest.ProtoReflect.Descriptor instead.
func (*GetEffectiveSecurityHealthAnalyticsCustomModuleRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{3}
}
func (x *GetEffectiveSecurityHealthAnalyticsCustomModuleRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// Represents an instance of a Security Health Analytics custom module,
// including its full module name, display name, enablement state, and last
// updated time. You can create a custom module at the organization, folder, or
// project level. Custom modules that you create at the organization or folder
// level are inherited by the child folders and projects.
type SecurityHealthAnalyticsCustomModule struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Identifier. The resource name of the custom module.
// Its format is
// "organizations/{organization}/locations/{location}/securityHealthAnalyticsCustomModules/{security_health_analytics_custom_module}",
// or
// "folders/{folder}/locations/{location}/securityHealthAnalyticsCustomModules/{security_health_analytics_custom_module}",
// or
// "projects/{project}/locations/{location}/securityHealthAnalyticsCustomModules/{security_health_analytics_custom_module}"
//
// The id {customModule} is server-generated and is not user settable.
// It will be a numeric id containing 1-20 digits.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Optional. The display name of the Security Health Analytics custom module.
// This display name becomes the finding category for all findings that are
// returned by this custom module. The display name must be between 1 and
// 128 characters, start with a lowercase letter, and contain alphanumeric
// characters or underscores only.
DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// Optional. The enablement state of the custom module.
EnablementState SecurityHealthAnalyticsCustomModule_EnablementState `protobuf:"varint,3,opt,name=enablement_state,json=enablementState,proto3,enum=google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule_EnablementState" json:"enablement_state,omitempty"`
// Output only. The time at which the custom module was last updated.
UpdateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
// Output only. The editor that last updated the custom module.
LastEditor string `protobuf:"bytes,5,opt,name=last_editor,json=lastEditor,proto3" json:"last_editor,omitempty"`
// Output only. Specifies the organization or folder from which the custom
// module is inherited. If empty, indicates that the custom module was created
// in the organization, folder, or project in which you are viewing the custom
// module.
AncestorModule string `protobuf:"bytes,6,opt,name=ancestor_module,json=ancestorModule,proto3" json:"ancestor_module,omitempty"`
// Optional. The user specified custom configuration for the module.
CustomConfig *CustomConfig `protobuf:"bytes,7,opt,name=custom_config,json=customConfig,proto3" json:"custom_config,omitempty"`
}
func (x *SecurityHealthAnalyticsCustomModule) Reset() {
*x = SecurityHealthAnalyticsCustomModule{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SecurityHealthAnalyticsCustomModule) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SecurityHealthAnalyticsCustomModule) ProtoMessage() {}
func (x *SecurityHealthAnalyticsCustomModule) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SecurityHealthAnalyticsCustomModule.ProtoReflect.Descriptor instead.
func (*SecurityHealthAnalyticsCustomModule) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{4}
}
func (x *SecurityHealthAnalyticsCustomModule) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *SecurityHealthAnalyticsCustomModule) GetDisplayName() string {
if x != nil {
return x.DisplayName
}
return ""
}
func (x *SecurityHealthAnalyticsCustomModule) GetEnablementState() SecurityHealthAnalyticsCustomModule_EnablementState {
if x != nil {
return x.EnablementState
}
return SecurityHealthAnalyticsCustomModule_ENABLEMENT_STATE_UNSPECIFIED
}
func (x *SecurityHealthAnalyticsCustomModule) GetUpdateTime() *timestamppb.Timestamp {
if x != nil {
return x.UpdateTime
}
return nil
}
func (x *SecurityHealthAnalyticsCustomModule) GetLastEditor() string {
if x != nil {
return x.LastEditor
}
return ""
}
func (x *SecurityHealthAnalyticsCustomModule) GetAncestorModule() string {
if x != nil {
return x.AncestorModule
}
return ""
}
func (x *SecurityHealthAnalyticsCustomModule) GetCustomConfig() *CustomConfig {
if x != nil {
return x.CustomConfig
}
return nil
}
// Defines the properties in a custom module configuration for Security
// Health Analytics. Use the custom module configuration to create custom
// detectors that generate custom findings for resources that you specify.
type CustomConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Optional. The CEL expression to evaluate to produce findings. When the
// expression evaluates to true against a resource, a finding is generated.
Predicate *expr.Expr `protobuf:"bytes,1,opt,name=predicate,proto3" json:"predicate,omitempty"`
// Optional. Custom output properties.
CustomOutput *CustomConfig_CustomOutputSpec `protobuf:"bytes,2,opt,name=custom_output,json=customOutput,proto3" json:"custom_output,omitempty"`
// Optional. The Cloud Asset Inventory resource types that the custom module
// operates on. For information about resource types, see [Supported asset
// types](https://cloud.google.com/asset-inventory/docs/supported-asset-types).
// Each custom module can specify up to 5 resource types.
ResourceSelector *CustomConfig_ResourceSelector `protobuf:"bytes,3,opt,name=resource_selector,json=resourceSelector,proto3" json:"resource_selector,omitempty"`
// Optional. The severity to assign to findings generated by the module.
Severity CustomConfig_Severity `protobuf:"varint,4,opt,name=severity,proto3,enum=google.cloud.securitycentermanagement.v1.CustomConfig_Severity" json:"severity,omitempty"`
// Optional. Text that describes the vulnerability or misconfiguration that
// the custom module detects. This explanation is returned with each finding
// instance to help investigators understand the detected issue. The text must
// be enclosed in quotation marks.
Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
// Optional. An explanation of the recommended steps that security teams can
// take to resolve the detected issue. This explanation is returned with each
// finding generated by this module in the `nextSteps` property of the finding
// JSON.
Recommendation string `protobuf:"bytes,6,opt,name=recommendation,proto3" json:"recommendation,omitempty"`
}
func (x *CustomConfig) Reset() {
*x = CustomConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CustomConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CustomConfig) ProtoMessage() {}
func (x *CustomConfig) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CustomConfig.ProtoReflect.Descriptor instead.
func (*CustomConfig) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{5}
}
func (x *CustomConfig) GetPredicate() *expr.Expr {
if x != nil {
return x.Predicate
}
return nil
}
func (x *CustomConfig) GetCustomOutput() *CustomConfig_CustomOutputSpec {
if x != nil {
return x.CustomOutput
}
return nil
}
func (x *CustomConfig) GetResourceSelector() *CustomConfig_ResourceSelector {
if x != nil {
return x.ResourceSelector
}
return nil
}
func (x *CustomConfig) GetSeverity() CustomConfig_Severity {
if x != nil {
return x.Severity
}
return CustomConfig_SEVERITY_UNSPECIFIED
}
func (x *CustomConfig) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *CustomConfig) GetRecommendation() string {
if x != nil {
return x.Recommendation
}
return ""
}
// Request message for listing Security Health Analytics custom modules.
type ListSecurityHealthAnalyticsCustomModulesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Name of parent to list custom modules. Its format is
// "organizations/{organization}/locations/{location}",
// "folders/{folder}/locations/{location}",
// or
// "projects/{project}/locations/{location}"
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Optional. The maximum number of results to return in a single response.
// Default is 10, minimum is 1, maximum is 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. A token identifying a page of results the server should return.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *ListSecurityHealthAnalyticsCustomModulesRequest) Reset() {
*x = ListSecurityHealthAnalyticsCustomModulesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListSecurityHealthAnalyticsCustomModulesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListSecurityHealthAnalyticsCustomModulesRequest) ProtoMessage() {}
func (x *ListSecurityHealthAnalyticsCustomModulesRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListSecurityHealthAnalyticsCustomModulesRequest.ProtoReflect.Descriptor instead.
func (*ListSecurityHealthAnalyticsCustomModulesRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{6}
}
func (x *ListSecurityHealthAnalyticsCustomModulesRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListSecurityHealthAnalyticsCustomModulesRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListSecurityHealthAnalyticsCustomModulesRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// Response message for listing Security Health Analytics custom modules.
type ListSecurityHealthAnalyticsCustomModulesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The list of SecurityHealthAnalyticsCustomModules
SecurityHealthAnalyticsCustomModules []*SecurityHealthAnalyticsCustomModule `protobuf:"bytes,1,rep,name=security_health_analytics_custom_modules,json=securityHealthAnalyticsCustomModules,proto3" json:"security_health_analytics_custom_modules,omitempty"`
// A token identifying a page of results the server should return.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListSecurityHealthAnalyticsCustomModulesResponse) Reset() {
*x = ListSecurityHealthAnalyticsCustomModulesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListSecurityHealthAnalyticsCustomModulesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListSecurityHealthAnalyticsCustomModulesResponse) ProtoMessage() {}
func (x *ListSecurityHealthAnalyticsCustomModulesResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListSecurityHealthAnalyticsCustomModulesResponse.ProtoReflect.Descriptor instead.
func (*ListSecurityHealthAnalyticsCustomModulesResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{7}
}
func (x *ListSecurityHealthAnalyticsCustomModulesResponse) GetSecurityHealthAnalyticsCustomModules() []*SecurityHealthAnalyticsCustomModule {
if x != nil {
return x.SecurityHealthAnalyticsCustomModules
}
return nil
}
func (x *ListSecurityHealthAnalyticsCustomModulesResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// Request message for listing descendant Security Health Analytics custom
// modules.
type ListDescendantSecurityHealthAnalyticsCustomModulesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Name of parent to list custom modules. Its format is
// "organizations/{organization}/locations/{location}",
// "folders/{folder}/locations/{location}",
// or
// "projects/{project}/locations/{location}"
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Optional. The maximum number of results to return in a single response.
// Default is 10, minimum is 1, maximum is 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. A token identifying a page of results the server should return.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *ListDescendantSecurityHealthAnalyticsCustomModulesRequest) Reset() {
*x = ListDescendantSecurityHealthAnalyticsCustomModulesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDescendantSecurityHealthAnalyticsCustomModulesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDescendantSecurityHealthAnalyticsCustomModulesRequest) ProtoMessage() {}
func (x *ListDescendantSecurityHealthAnalyticsCustomModulesRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListDescendantSecurityHealthAnalyticsCustomModulesRequest.ProtoReflect.Descriptor instead.
func (*ListDescendantSecurityHealthAnalyticsCustomModulesRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{8}
}
func (x *ListDescendantSecurityHealthAnalyticsCustomModulesRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListDescendantSecurityHealthAnalyticsCustomModulesRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListDescendantSecurityHealthAnalyticsCustomModulesRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// Response message for listing descendant Security Health Analytics custom
// modules.
type ListDescendantSecurityHealthAnalyticsCustomModulesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The list of SecurityHealthAnalyticsCustomModules
SecurityHealthAnalyticsCustomModules []*SecurityHealthAnalyticsCustomModule `protobuf:"bytes,1,rep,name=security_health_analytics_custom_modules,json=securityHealthAnalyticsCustomModules,proto3" json:"security_health_analytics_custom_modules,omitempty"`
// A token identifying a page of results the server should return.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListDescendantSecurityHealthAnalyticsCustomModulesResponse) Reset() {
*x = ListDescendantSecurityHealthAnalyticsCustomModulesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDescendantSecurityHealthAnalyticsCustomModulesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDescendantSecurityHealthAnalyticsCustomModulesResponse) ProtoMessage() {}
func (x *ListDescendantSecurityHealthAnalyticsCustomModulesResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListDescendantSecurityHealthAnalyticsCustomModulesResponse.ProtoReflect.Descriptor instead.
func (*ListDescendantSecurityHealthAnalyticsCustomModulesResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{9}
}
func (x *ListDescendantSecurityHealthAnalyticsCustomModulesResponse) GetSecurityHealthAnalyticsCustomModules() []*SecurityHealthAnalyticsCustomModule {
if x != nil {
return x.SecurityHealthAnalyticsCustomModules
}
return nil
}
func (x *ListDescendantSecurityHealthAnalyticsCustomModulesResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// Message for getting a SecurityHealthAnalyticsCustomModule
type GetSecurityHealthAnalyticsCustomModuleRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Name of the resource
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetSecurityHealthAnalyticsCustomModuleRequest) Reset() {
*x = GetSecurityHealthAnalyticsCustomModuleRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetSecurityHealthAnalyticsCustomModuleRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetSecurityHealthAnalyticsCustomModuleRequest) ProtoMessage() {}
func (x *GetSecurityHealthAnalyticsCustomModuleRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetSecurityHealthAnalyticsCustomModuleRequest.ProtoReflect.Descriptor instead.
func (*GetSecurityHealthAnalyticsCustomModuleRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{10}
}
func (x *GetSecurityHealthAnalyticsCustomModuleRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// Message for creating a SecurityHealthAnalyticsCustomModule
type CreateSecurityHealthAnalyticsCustomModuleRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Name of the parent for the module. Its format is
// "organizations/{organization}/locations/{location}",
// "folders/{folder}/locations/{location}",
// or
// "projects/{project}/locations/{location}"
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Required. The resource being created
SecurityHealthAnalyticsCustomModule *SecurityHealthAnalyticsCustomModule `protobuf:"bytes,2,opt,name=security_health_analytics_custom_module,json=securityHealthAnalyticsCustomModule,proto3" json:"security_health_analytics_custom_module,omitempty"`
// Optional. When set to true, only validations (including IAM checks) will
// done for the request (no module will be created). An OK response indicates
// the request is valid while an error response indicates the request is
// invalid. Note that a subsequent request to actually create the module could
// still fail because:
// 1. the state could have changed (e.g. IAM permission lost) or
// 2. A failure occurred during creation of the module.
//
// Defaults to false.
ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}
func (x *CreateSecurityHealthAnalyticsCustomModuleRequest) Reset() {
*x = CreateSecurityHealthAnalyticsCustomModuleRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreateSecurityHealthAnalyticsCustomModuleRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreateSecurityHealthAnalyticsCustomModuleRequest) ProtoMessage() {}
func (x *CreateSecurityHealthAnalyticsCustomModuleRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CreateSecurityHealthAnalyticsCustomModuleRequest.ProtoReflect.Descriptor instead.
func (*CreateSecurityHealthAnalyticsCustomModuleRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{11}
}
func (x *CreateSecurityHealthAnalyticsCustomModuleRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *CreateSecurityHealthAnalyticsCustomModuleRequest) GetSecurityHealthAnalyticsCustomModule() *SecurityHealthAnalyticsCustomModule {
if x != nil {
return x.SecurityHealthAnalyticsCustomModule
}
return nil
}
func (x *CreateSecurityHealthAnalyticsCustomModuleRequest) GetValidateOnly() bool {
if x != nil {
return x.ValidateOnly
}
return false
}
// Message for updating a SecurityHealthAnalyticsCustomModule
type UpdateSecurityHealthAnalyticsCustomModuleRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The list of fields to be updated. The only fields that can be
// updated are `enablement_state` and `custom_config`. If empty or set to the
// wildcard value `*`, both `enablement_state` and `custom_config` are
// updated.
UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,1,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
// Required. The resource being updated
SecurityHealthAnalyticsCustomModule *SecurityHealthAnalyticsCustomModule `protobuf:"bytes,2,opt,name=security_health_analytics_custom_module,json=securityHealthAnalyticsCustomModule,proto3" json:"security_health_analytics_custom_module,omitempty"`
// Optional. When set to true, only validations (including IAM checks) will
// done for the request (module will not be updated). An OK response indicates
// the request is valid while an error response indicates the request is
// invalid. Note that a subsequent request to actually update the module could
// still fail because 1. the state could have changed (e.g. IAM permission
// lost) or
// 2. A failure occurred while trying to update the module.
ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}
func (x *UpdateSecurityHealthAnalyticsCustomModuleRequest) Reset() {
*x = UpdateSecurityHealthAnalyticsCustomModuleRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateSecurityHealthAnalyticsCustomModuleRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateSecurityHealthAnalyticsCustomModuleRequest) ProtoMessage() {}
func (x *UpdateSecurityHealthAnalyticsCustomModuleRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UpdateSecurityHealthAnalyticsCustomModuleRequest.ProtoReflect.Descriptor instead.
func (*UpdateSecurityHealthAnalyticsCustomModuleRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{12}
}
func (x *UpdateSecurityHealthAnalyticsCustomModuleRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
if x != nil {
return x.UpdateMask
}
return nil
}
func (x *UpdateSecurityHealthAnalyticsCustomModuleRequest) GetSecurityHealthAnalyticsCustomModule() *SecurityHealthAnalyticsCustomModule {
if x != nil {
return x.SecurityHealthAnalyticsCustomModule
}
return nil
}
func (x *UpdateSecurityHealthAnalyticsCustomModuleRequest) GetValidateOnly() bool {
if x != nil {
return x.ValidateOnly
}
return false
}
// Message for deleting a SecurityHealthAnalyticsCustomModule
type DeleteSecurityHealthAnalyticsCustomModuleRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the SHA custom module.
//
// Its format is:
//
// - "organizations/{organization}/locations/{location}/securityHealthAnalyticsCustomModules/{security_health_analytics_custom_module}".
// - "folders/{folder}/locations/{location}/securityHealthAnalyticsCustomModules/{security_health_analytics_custom_module}".
// - "projects/{project}/locations/{location}/securityHealthAnalyticsCustomModules/{security_health_analytics_custom_module}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Optional. When set to true, only validations (including IAM checks) will
// done for the request (module will not be deleted). An OK response indicates
// the request is valid while an error response indicates the request is
// invalid. Note that a subsequent request to actually delete the module could
// still fail because 1. the state could have changed (e.g. IAM permission
// lost) or
// 2. A failure occurred while trying to delete the module.
ValidateOnly bool `protobuf:"varint,2,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}
func (x *DeleteSecurityHealthAnalyticsCustomModuleRequest) Reset() {
*x = DeleteSecurityHealthAnalyticsCustomModuleRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeleteSecurityHealthAnalyticsCustomModuleRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeleteSecurityHealthAnalyticsCustomModuleRequest) ProtoMessage() {}
func (x *DeleteSecurityHealthAnalyticsCustomModuleRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DeleteSecurityHealthAnalyticsCustomModuleRequest.ProtoReflect.Descriptor instead.
func (*DeleteSecurityHealthAnalyticsCustomModuleRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{13}
}
func (x *DeleteSecurityHealthAnalyticsCustomModuleRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DeleteSecurityHealthAnalyticsCustomModuleRequest) GetValidateOnly() bool {
if x != nil {
return x.ValidateOnly
}
return false
}
// Request message to simulate a CustomConfig against a given test resource.
// Maximum size of the request is 4 MB by default.
type SimulateSecurityHealthAnalyticsCustomModuleRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The relative resource name of the organization, project, or
// folder. For more information about relative resource names, see [Relative
// Resource
// Name](https://cloud.google.com/apis/design/resource_names#relative_resource_name)
// Example: `organizations/{organization_id}`.
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Required. The custom configuration that you need to test.
CustomConfig *CustomConfig `protobuf:"bytes,2,opt,name=custom_config,json=customConfig,proto3" json:"custom_config,omitempty"`
// Required. Resource data to simulate custom module against.
Resource *SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource `protobuf:"bytes,3,opt,name=resource,proto3" json:"resource,omitempty"`
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleRequest) Reset() {
*x = SimulateSecurityHealthAnalyticsCustomModuleRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SimulateSecurityHealthAnalyticsCustomModuleRequest) ProtoMessage() {}
func (x *SimulateSecurityHealthAnalyticsCustomModuleRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SimulateSecurityHealthAnalyticsCustomModuleRequest.ProtoReflect.Descriptor instead.
func (*SimulateSecurityHealthAnalyticsCustomModuleRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{14}
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleRequest) GetCustomConfig() *CustomConfig {
if x != nil {
return x.CustomConfig
}
return nil
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleRequest) GetResource() *SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource {
if x != nil {
return x.Resource
}
return nil
}
// A subset of the fields of the Security Center Finding proto. The minimum set
// of fields needed to represent a simulated finding from a SHA custom module.
type SimulatedFinding struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Identifier. The [relative resource
// name](https://cloud.google.com/apis/design/resource_names#relative_resource_name)
// of the finding. Example:
// "organizations/{organization_id}/sources/{source_id}/findings/{finding_id}",
// "folders/{folder_id}/sources/{source_id}/findings/{finding_id}",
// "projects/{project_id}/sources/{source_id}/findings/{finding_id}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// The relative resource name of the source the finding belongs to. See:
// https://cloud.google.com/apis/design/resource_names#relative_resource_name
// This field is immutable after creation time.
// For example:
// "organizations/{organization_id}/sources/{source_id}"
Parent string `protobuf:"bytes,2,opt,name=parent,proto3" json:"parent,omitempty"`
// For findings on Google Cloud resources, the full resource
// name of the Google Cloud resource this finding is for. See:
// https://cloud.google.com/apis/design/resource_names#full_resource_name
// When the finding is for a non-Google Cloud resource, the resourceName can
// be a customer or partner defined string. This field is immutable after
// creation time.
ResourceName string `protobuf:"bytes,3,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"`
// The additional taxonomy group within findings from a given source.
// This field is immutable after creation time.
// Example: "XSS_FLASH_INJECTION"
Category string `protobuf:"bytes,4,opt,name=category,proto3" json:"category,omitempty"`
// Output only. The state of the finding.
State SimulatedFinding_State `protobuf:"varint,5,opt,name=state,proto3,enum=google.cloud.securitycentermanagement.v1.SimulatedFinding_State" json:"state,omitempty"`
// Source specific properties. These properties are managed by the source
// that writes the finding. The key names in the source_properties map must be
// between 1 and 255 characters, and must start with a letter and contain
// alphanumeric characters or underscores only.
SourceProperties map[string]*structpb.Value `protobuf:"bytes,6,rep,name=source_properties,json=sourceProperties,proto3" json:"source_properties,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// The time the finding was first detected. If an existing finding is updated,
// then this is the time the update occurred.
// For example, if the finding represents an open firewall, this property
// captures the time the detector believes the firewall became open. The
// accuracy is determined by the detector. If the finding is later resolved,
// then this time reflects when the finding was resolved. This must not
// be set to a value greater than the current timestamp.
EventTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=event_time,json=eventTime,proto3" json:"event_time,omitempty"`
// The severity of the finding. This field is managed by the source that
// writes the finding.
Severity SimulatedFinding_Severity `protobuf:"varint,8,opt,name=severity,proto3,enum=google.cloud.securitycentermanagement.v1.SimulatedFinding_Severity" json:"severity,omitempty"`
// The class of the finding.
FindingClass SimulatedFinding_FindingClass `protobuf:"varint,9,opt,name=finding_class,json=findingClass,proto3,enum=google.cloud.securitycentermanagement.v1.SimulatedFinding_FindingClass" json:"finding_class,omitempty"`
}
func (x *SimulatedFinding) Reset() {
*x = SimulatedFinding{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SimulatedFinding) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SimulatedFinding) ProtoMessage() {}
func (x *SimulatedFinding) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SimulatedFinding.ProtoReflect.Descriptor instead.
func (*SimulatedFinding) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{15}
}
func (x *SimulatedFinding) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *SimulatedFinding) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *SimulatedFinding) GetResourceName() string {
if x != nil {
return x.ResourceName
}
return ""
}
func (x *SimulatedFinding) GetCategory() string {
if x != nil {
return x.Category
}
return ""
}
func (x *SimulatedFinding) GetState() SimulatedFinding_State {
if x != nil {
return x.State
}
return SimulatedFinding_STATE_UNSPECIFIED
}
func (x *SimulatedFinding) GetSourceProperties() map[string]*structpb.Value {
if x != nil {
return x.SourceProperties
}
return nil
}
func (x *SimulatedFinding) GetEventTime() *timestamppb.Timestamp {
if x != nil {
return x.EventTime
}
return nil
}
func (x *SimulatedFinding) GetSeverity() SimulatedFinding_Severity {
if x != nil {
return x.Severity
}
return SimulatedFinding_SEVERITY_UNSPECIFIED
}
func (x *SimulatedFinding) GetFindingClass() SimulatedFinding_FindingClass {
if x != nil {
return x.FindingClass
}
return SimulatedFinding_FINDING_CLASS_UNSPECIFIED
}
// Response message for simulating a `SecurityHealthAnalyticsCustomModule`
// against a given resource.
type SimulateSecurityHealthAnalyticsCustomModuleResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Result for test case in the corresponding request.
Result *SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleResponse) Reset() {
*x = SimulateSecurityHealthAnalyticsCustomModuleResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SimulateSecurityHealthAnalyticsCustomModuleResponse) ProtoMessage() {}
func (x *SimulateSecurityHealthAnalyticsCustomModuleResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SimulateSecurityHealthAnalyticsCustomModuleResponse.ProtoReflect.Descriptor instead.
func (*SimulateSecurityHealthAnalyticsCustomModuleResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{16}
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleResponse) GetResult() *SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult {
if x != nil {
return x.Result
}
return nil
}
// An EffectiveEventThreatDetectionCustomModule is the representation of
// EventThreatDetectionCustomModule at a given level taking hierarchy into
// account and resolving various fields accordingly. e.g. if the module is
// enabled at the ancestor level, effective modules at all descendant levels
// will have enablement_state set to ENABLED. Similarly, if module.inherited is
// set, then effective module's config will contain the ancestor's config
// details. EffectiveEventThreatDetectionCustomModule is read-only.
type EffectiveEventThreatDetectionCustomModule struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Identifier. The resource name of the ETD custom module.
//
// Its format is:
//
// - "organizations/{organization}/locations/{location}/effectiveEventThreatDetectionCustomModules/{effective_event_threat_detection_custom_module}".
// - "folders/{folder}/locations/{location}/effectiveEventThreatDetectionCustomModules/{effective_event_threat_detection_custom_module}".
// - "projects/{project}/locations/{location}/effectiveEventThreatDetectionCustomModules/{effective_event_threat_detection_custom_module}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Output only. Config for the effective module.
Config *structpb.Struct `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"`
// Output only. The effective state of enablement for the module at the given
// level of the hierarchy.
EnablementState EffectiveEventThreatDetectionCustomModule_EnablementState `protobuf:"varint,3,opt,name=enablement_state,json=enablementState,proto3,enum=google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule_EnablementState" json:"enablement_state,omitempty"`
// Output only. Type for the module. e.g. CONFIGURABLE_BAD_IP.
Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"`
// Output only. The human readable name to be displayed for the module.
DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// Output only. The description for the module.
Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"`
}
func (x *EffectiveEventThreatDetectionCustomModule) Reset() {
*x = EffectiveEventThreatDetectionCustomModule{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EffectiveEventThreatDetectionCustomModule) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EffectiveEventThreatDetectionCustomModule) ProtoMessage() {}
func (x *EffectiveEventThreatDetectionCustomModule) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use EffectiveEventThreatDetectionCustomModule.ProtoReflect.Descriptor instead.
func (*EffectiveEventThreatDetectionCustomModule) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{17}
}
func (x *EffectiveEventThreatDetectionCustomModule) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *EffectiveEventThreatDetectionCustomModule) GetConfig() *structpb.Struct {
if x != nil {
return x.Config
}
return nil
}
func (x *EffectiveEventThreatDetectionCustomModule) GetEnablementState() EffectiveEventThreatDetectionCustomModule_EnablementState {
if x != nil {
return x.EnablementState
}
return EffectiveEventThreatDetectionCustomModule_ENABLEMENT_STATE_UNSPECIFIED
}
func (x *EffectiveEventThreatDetectionCustomModule) GetType() string {
if x != nil {
return x.Type
}
return ""
}
func (x *EffectiveEventThreatDetectionCustomModule) GetDisplayName() string {
if x != nil {
return x.DisplayName
}
return ""
}
func (x *EffectiveEventThreatDetectionCustomModule) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
// Request message for listing effective Event Threat Detection custom
// modules.
type ListEffectiveEventThreatDetectionCustomModulesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Name of parent to list effective custom modules. Its format is
// "organizations/{organization}/locations/{location}",
// "folders/{folder}/locations/{location}",
// or
// "projects/{project}/locations/{location}"
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Optional. The maximum number of results to return in a single response.
// Default is 10, minimum is 1, maximum is 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. The value returned by the last call indicating a continuation
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *ListEffectiveEventThreatDetectionCustomModulesRequest) Reset() {
*x = ListEffectiveEventThreatDetectionCustomModulesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListEffectiveEventThreatDetectionCustomModulesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListEffectiveEventThreatDetectionCustomModulesRequest) ProtoMessage() {}
func (x *ListEffectiveEventThreatDetectionCustomModulesRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListEffectiveEventThreatDetectionCustomModulesRequest.ProtoReflect.Descriptor instead.
func (*ListEffectiveEventThreatDetectionCustomModulesRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{18}
}
func (x *ListEffectiveEventThreatDetectionCustomModulesRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListEffectiveEventThreatDetectionCustomModulesRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListEffectiveEventThreatDetectionCustomModulesRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// Response message for listing effective Event Threat Detection custom
// modules.
type ListEffectiveEventThreatDetectionCustomModulesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The list of EffectiveEventThreatDetectionCustomModules
EffectiveEventThreatDetectionCustomModules []*EffectiveEventThreatDetectionCustomModule `protobuf:"bytes,1,rep,name=effective_event_threat_detection_custom_modules,json=effectiveEventThreatDetectionCustomModules,proto3" json:"effective_event_threat_detection_custom_modules,omitempty"`
// A token identifying a page of results the server should return.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListEffectiveEventThreatDetectionCustomModulesResponse) Reset() {
*x = ListEffectiveEventThreatDetectionCustomModulesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListEffectiveEventThreatDetectionCustomModulesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListEffectiveEventThreatDetectionCustomModulesResponse) ProtoMessage() {}
func (x *ListEffectiveEventThreatDetectionCustomModulesResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListEffectiveEventThreatDetectionCustomModulesResponse.ProtoReflect.Descriptor instead.
func (*ListEffectiveEventThreatDetectionCustomModulesResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{19}
}
func (x *ListEffectiveEventThreatDetectionCustomModulesResponse) GetEffectiveEventThreatDetectionCustomModules() []*EffectiveEventThreatDetectionCustomModule {
if x != nil {
return x.EffectiveEventThreatDetectionCustomModules
}
return nil
}
func (x *ListEffectiveEventThreatDetectionCustomModulesResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// Message for getting a EffectiveEventThreatDetectionCustomModule
type GetEffectiveEventThreatDetectionCustomModuleRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the ETD custom module.
//
// Its format is:
//
// - "organizations/{organization}/locations/{location}/effectiveEventThreatDetectionCustomModules/{effective_event_threat_detection_custom_module}".
// - "folders/{folder}/locations/{location}/effectiveEventThreatDetectionCustomModules/{effective_event_threat_detection_custom_module}".
// - "projects/{project}/locations/{location}/effectiveEventThreatDetectionCustomModules/{effective_event_threat_detection_custom_module}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetEffectiveEventThreatDetectionCustomModuleRequest) Reset() {
*x = GetEffectiveEventThreatDetectionCustomModuleRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetEffectiveEventThreatDetectionCustomModuleRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetEffectiveEventThreatDetectionCustomModuleRequest) ProtoMessage() {}
func (x *GetEffectiveEventThreatDetectionCustomModuleRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetEffectiveEventThreatDetectionCustomModuleRequest.ProtoReflect.Descriptor instead.
func (*GetEffectiveEventThreatDetectionCustomModuleRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{20}
}
func (x *GetEffectiveEventThreatDetectionCustomModuleRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// An event threat detection custom module is a Cloud SCC resource that contains
// the configuration and enablement state of a custom module, which enables ETD
// to write certain findings to Cloud SCC.
type EventThreatDetectionCustomModule struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Identifier. The resource name of the ETD custom module.
//
// Its format is:
//
// - "organizations/{organization}/locations/{location}/eventThreatDetectionCustomModules/{event_threat_detection_custom_module}".
// - "folders/{folder}/locations/{location}/eventThreatDetectionCustomModules/{event_threat_detection_custom_module}".
// - "projects/{project}/locations/{location}/eventThreatDetectionCustomModules/{event_threat_detection_custom_module}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Optional. Config for the module. For the resident module, its config value
// is defined at this level. For the inherited module, its config value is
// inherited from the ancestor module.
Config *structpb.Struct `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"`
// Output only. The closest ancestor module that this module inherits the
// enablement state from. If empty, indicates that the custom module was
// created in the requesting parent organization, folder, or project. The
// format is the same as the EventThreatDetectionCustomModule resource name.
AncestorModule string `protobuf:"bytes,3,opt,name=ancestor_module,json=ancestorModule,proto3" json:"ancestor_module,omitempty"`
// Optional. The state of enablement for the module at the given level of the
// hierarchy.
EnablementState EventThreatDetectionCustomModule_EnablementState `protobuf:"varint,4,opt,name=enablement_state,json=enablementState,proto3,enum=google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule_EnablementState" json:"enablement_state,omitempty"`
// Optional. Type for the module. e.g. CONFIGURABLE_BAD_IP.
Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"`
// Optional. The human readable name to be displayed for the module.
DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
// Optional. The description for the module.
Description string `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"`
// Output only. The time the module was last updated.
UpdateTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
// Output only. The editor the module was last updated by.
LastEditor string `protobuf:"bytes,9,opt,name=last_editor,json=lastEditor,proto3" json:"last_editor,omitempty"`
}
func (x *EventThreatDetectionCustomModule) Reset() {
*x = EventThreatDetectionCustomModule{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EventThreatDetectionCustomModule) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EventThreatDetectionCustomModule) ProtoMessage() {}
func (x *EventThreatDetectionCustomModule) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use EventThreatDetectionCustomModule.ProtoReflect.Descriptor instead.
func (*EventThreatDetectionCustomModule) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{21}
}
func (x *EventThreatDetectionCustomModule) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *EventThreatDetectionCustomModule) GetConfig() *structpb.Struct {
if x != nil {
return x.Config
}
return nil
}
func (x *EventThreatDetectionCustomModule) GetAncestorModule() string {
if x != nil {
return x.AncestorModule
}
return ""
}
func (x *EventThreatDetectionCustomModule) GetEnablementState() EventThreatDetectionCustomModule_EnablementState {
if x != nil {
return x.EnablementState
}
return EventThreatDetectionCustomModule_ENABLEMENT_STATE_UNSPECIFIED
}
func (x *EventThreatDetectionCustomModule) GetType() string {
if x != nil {
return x.Type
}
return ""
}
func (x *EventThreatDetectionCustomModule) GetDisplayName() string {
if x != nil {
return x.DisplayName
}
return ""
}
func (x *EventThreatDetectionCustomModule) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *EventThreatDetectionCustomModule) GetUpdateTime() *timestamppb.Timestamp {
if x != nil {
return x.UpdateTime
}
return nil
}
func (x *EventThreatDetectionCustomModule) GetLastEditor() string {
if x != nil {
return x.LastEditor
}
return ""
}
// Request message for listing Event Threat Detection custom modules.
type ListEventThreatDetectionCustomModulesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Name of parent to list custom modules. Its format is
// "organizations/{organization}/locations/{location}",
// "folders/{folder}/locations/{location}",
// or
// "projects/{project}/locations/{location}"
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Optional. The maximum number of modules to return. The service may return
// fewer than this value. If unspecified, at most 10 configs will be returned.
// The maximum value is 1000; values above 1000 will be coerced to 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. A page token, received from a previous
// `ListEventThreatDetectionCustomModules` call. Provide this to retrieve the
// subsequent page.
//
// When paginating, all other parameters provided to
// `ListEventThreatDetectionCustomModules` must match the call that provided
// the page token.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *ListEventThreatDetectionCustomModulesRequest) Reset() {
*x = ListEventThreatDetectionCustomModulesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListEventThreatDetectionCustomModulesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListEventThreatDetectionCustomModulesRequest) ProtoMessage() {}
func (x *ListEventThreatDetectionCustomModulesRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListEventThreatDetectionCustomModulesRequest.ProtoReflect.Descriptor instead.
func (*ListEventThreatDetectionCustomModulesRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{22}
}
func (x *ListEventThreatDetectionCustomModulesRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListEventThreatDetectionCustomModulesRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListEventThreatDetectionCustomModulesRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// Response message for listing Event Threat Detection custom modules.
type ListEventThreatDetectionCustomModulesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The list of EventThreatDetectionCustomModules
EventThreatDetectionCustomModules []*EventThreatDetectionCustomModule `protobuf:"bytes,1,rep,name=event_threat_detection_custom_modules,json=eventThreatDetectionCustomModules,proto3" json:"event_threat_detection_custom_modules,omitempty"`
// A token identifying a page of results the server should return.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListEventThreatDetectionCustomModulesResponse) Reset() {
*x = ListEventThreatDetectionCustomModulesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListEventThreatDetectionCustomModulesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListEventThreatDetectionCustomModulesResponse) ProtoMessage() {}
func (x *ListEventThreatDetectionCustomModulesResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListEventThreatDetectionCustomModulesResponse.ProtoReflect.Descriptor instead.
func (*ListEventThreatDetectionCustomModulesResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{23}
}
func (x *ListEventThreatDetectionCustomModulesResponse) GetEventThreatDetectionCustomModules() []*EventThreatDetectionCustomModule {
if x != nil {
return x.EventThreatDetectionCustomModules
}
return nil
}
func (x *ListEventThreatDetectionCustomModulesResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// Request message for listing descendant Event Threat Detection custom
// modules.
type ListDescendantEventThreatDetectionCustomModulesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Name of parent to list custom modules. Its format is
// "organizations/{organization}/locations/{location}",
// "folders/{folder}/locations/{location}",
// or
// "projects/{project}/locations/{location}"
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Optional. The maximum number of modules to return. The service may return
// fewer than this value. If unspecified, at most 10 configs will be returned.
// The maximum value is 1000; values above 1000 will be coerced to 1000.
PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// Optional. A token identifying a page of results the server should return.
PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
}
func (x *ListDescendantEventThreatDetectionCustomModulesRequest) Reset() {
*x = ListDescendantEventThreatDetectionCustomModulesRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDescendantEventThreatDetectionCustomModulesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDescendantEventThreatDetectionCustomModulesRequest) ProtoMessage() {}
func (x *ListDescendantEventThreatDetectionCustomModulesRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListDescendantEventThreatDetectionCustomModulesRequest.ProtoReflect.Descriptor instead.
func (*ListDescendantEventThreatDetectionCustomModulesRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{24}
}
func (x *ListDescendantEventThreatDetectionCustomModulesRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ListDescendantEventThreatDetectionCustomModulesRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListDescendantEventThreatDetectionCustomModulesRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
// Response message for listing descendant Event Threat Detection custom
// modules.
type ListDescendantEventThreatDetectionCustomModulesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The list of EventThreatDetectionCustomModules
EventThreatDetectionCustomModules []*EventThreatDetectionCustomModule `protobuf:"bytes,1,rep,name=event_threat_detection_custom_modules,json=eventThreatDetectionCustomModules,proto3" json:"event_threat_detection_custom_modules,omitempty"`
// A token identifying a page of results the server should return.
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListDescendantEventThreatDetectionCustomModulesResponse) Reset() {
*x = ListDescendantEventThreatDetectionCustomModulesResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListDescendantEventThreatDetectionCustomModulesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListDescendantEventThreatDetectionCustomModulesResponse) ProtoMessage() {}
func (x *ListDescendantEventThreatDetectionCustomModulesResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[25]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListDescendantEventThreatDetectionCustomModulesResponse.ProtoReflect.Descriptor instead.
func (*ListDescendantEventThreatDetectionCustomModulesResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{25}
}
func (x *ListDescendantEventThreatDetectionCustomModulesResponse) GetEventThreatDetectionCustomModules() []*EventThreatDetectionCustomModule {
if x != nil {
return x.EventThreatDetectionCustomModules
}
return nil
}
func (x *ListDescendantEventThreatDetectionCustomModulesResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
// Message for getting a EventThreatDetectionCustomModule
type GetEventThreatDetectionCustomModuleRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the ETD custom module.
//
// Its format is:
//
// - "organizations/{organization}/locations/{location}/eventThreatDetectionCustomModules/{event_threat_detection_custom_module}".
// - "folders/{folder}/locations/{location}/eventThreatDetectionCustomModules/{event_threat_detection_custom_module}".
// - "projects/{project}/locations/{location}/eventThreatDetectionCustomModules/{event_threat_detection_custom_module}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetEventThreatDetectionCustomModuleRequest) Reset() {
*x = GetEventThreatDetectionCustomModuleRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetEventThreatDetectionCustomModuleRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetEventThreatDetectionCustomModuleRequest) ProtoMessage() {}
func (x *GetEventThreatDetectionCustomModuleRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[26]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetEventThreatDetectionCustomModuleRequest.ProtoReflect.Descriptor instead.
func (*GetEventThreatDetectionCustomModuleRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{26}
}
func (x *GetEventThreatDetectionCustomModuleRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// Message for creating a EventThreatDetectionCustomModule
type CreateEventThreatDetectionCustomModuleRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Name of parent for the module. Its format is
// "organizations/{organization}/locations/{location}",
// "folders/{folder}/locations/{location}",
// or
// "projects/{project}/locations/{location}"
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Required. The module to create. The
// event_threat_detection_custom_module.name will be ignored and server
// generated.
EventThreatDetectionCustomModule *EventThreatDetectionCustomModule `protobuf:"bytes,3,opt,name=event_threat_detection_custom_module,json=eventThreatDetectionCustomModule,proto3" json:"event_threat_detection_custom_module,omitempty"`
// Optional. When set to true, only validations (including IAM checks) will
// done for the request (no module will be created). An OK response indicates
// the request is valid while an error response indicates the request is
// invalid. Note that a subsequent request to actually create the module could
// still fail because 1. the state could have changed (e.g. IAM permission
// lost) or
// 2. A failure occurred during creation of the module.
ValidateOnly bool `protobuf:"varint,4,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}
func (x *CreateEventThreatDetectionCustomModuleRequest) Reset() {
*x = CreateEventThreatDetectionCustomModuleRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CreateEventThreatDetectionCustomModuleRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CreateEventThreatDetectionCustomModuleRequest) ProtoMessage() {}
func (x *CreateEventThreatDetectionCustomModuleRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[27]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CreateEventThreatDetectionCustomModuleRequest.ProtoReflect.Descriptor instead.
func (*CreateEventThreatDetectionCustomModuleRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{27}
}
func (x *CreateEventThreatDetectionCustomModuleRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *CreateEventThreatDetectionCustomModuleRequest) GetEventThreatDetectionCustomModule() *EventThreatDetectionCustomModule {
if x != nil {
return x.EventThreatDetectionCustomModule
}
return nil
}
func (x *CreateEventThreatDetectionCustomModuleRequest) GetValidateOnly() bool {
if x != nil {
return x.ValidateOnly
}
return false
}
// Message for updating a EventThreatDetectionCustomModule
type UpdateEventThreatDetectionCustomModuleRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Field mask is used to specify the fields to be overwritten in the
// EventThreatDetectionCustomModule resource by the update.
// The fields specified in the update_mask are relative to the resource, not
// the full request. A field will be overwritten if it is in the mask. If the
// user does not provide a mask then all fields will be overwritten.
UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,1,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
// Required. The module being updated
EventThreatDetectionCustomModule *EventThreatDetectionCustomModule `protobuf:"bytes,2,opt,name=event_threat_detection_custom_module,json=eventThreatDetectionCustomModule,proto3" json:"event_threat_detection_custom_module,omitempty"`
// Optional. When set to true, only validations (including IAM checks) will
// done for the request (module will not be updated). An OK response indicates
// the request is valid while an error response indicates the request is
// invalid. Note that a subsequent request to actually update the module could
// still fail because 1. the state could have changed (e.g. IAM permission
// lost) or
// 2. A failure occurred while trying to update the module.
ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}
func (x *UpdateEventThreatDetectionCustomModuleRequest) Reset() {
*x = UpdateEventThreatDetectionCustomModuleRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateEventThreatDetectionCustomModuleRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateEventThreatDetectionCustomModuleRequest) ProtoMessage() {}
func (x *UpdateEventThreatDetectionCustomModuleRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[28]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UpdateEventThreatDetectionCustomModuleRequest.ProtoReflect.Descriptor instead.
func (*UpdateEventThreatDetectionCustomModuleRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{28}
}
func (x *UpdateEventThreatDetectionCustomModuleRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
if x != nil {
return x.UpdateMask
}
return nil
}
func (x *UpdateEventThreatDetectionCustomModuleRequest) GetEventThreatDetectionCustomModule() *EventThreatDetectionCustomModule {
if x != nil {
return x.EventThreatDetectionCustomModule
}
return nil
}
func (x *UpdateEventThreatDetectionCustomModuleRequest) GetValidateOnly() bool {
if x != nil {
return x.ValidateOnly
}
return false
}
// Message for deleting a EventThreatDetectionCustomModule
type DeleteEventThreatDetectionCustomModuleRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The resource name of the ETD custom module.
//
// Its format is:
//
// - "organizations/{organization}/locations/{location}/eventThreatDetectionCustomModules/{event_threat_detection_custom_module}".
// - "folders/{folder}/locations/{location}/eventThreatDetectionCustomModules/{event_threat_detection_custom_module}".
// - "projects/{project}/locations/{location}/eventThreatDetectionCustomModules/{event_threat_detection_custom_module}".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Optional. When set to true, only validations (including IAM checks) will
// done for the request (module will not be deleted). An OK response indicates
// the request is valid while an error response indicates the request is
// invalid. Note that a subsequent request to actually delete the module could
// still fail because 1. the state could have changed (e.g. IAM permission
// lost) or
// 2. A failure occurred while trying to delete the module.
ValidateOnly bool `protobuf:"varint,2,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"`
}
func (x *DeleteEventThreatDetectionCustomModuleRequest) Reset() {
*x = DeleteEventThreatDetectionCustomModuleRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *DeleteEventThreatDetectionCustomModuleRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DeleteEventThreatDetectionCustomModuleRequest) ProtoMessage() {}
func (x *DeleteEventThreatDetectionCustomModuleRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[29]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DeleteEventThreatDetectionCustomModuleRequest.ProtoReflect.Descriptor instead.
func (*DeleteEventThreatDetectionCustomModuleRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{29}
}
func (x *DeleteEventThreatDetectionCustomModuleRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DeleteEventThreatDetectionCustomModuleRequest) GetValidateOnly() bool {
if x != nil {
return x.ValidateOnly
}
return false
}
// Request to validate an Event Threat Detection custom module.
type ValidateEventThreatDetectionCustomModuleRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Resource name of the parent to validate the Custom Module under.
//
// Its format is:
//
// - "organizations/{organization}/locations/{location}".
Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// Required. The raw text of the module's contents. Used to generate error
// messages.
RawText string `protobuf:"bytes,2,opt,name=raw_text,json=rawText,proto3" json:"raw_text,omitempty"`
// Required. The type of the module (e.g. CONFIGURABLE_BAD_IP).
Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`
}
func (x *ValidateEventThreatDetectionCustomModuleRequest) Reset() {
*x = ValidateEventThreatDetectionCustomModuleRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ValidateEventThreatDetectionCustomModuleRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ValidateEventThreatDetectionCustomModuleRequest) ProtoMessage() {}
func (x *ValidateEventThreatDetectionCustomModuleRequest) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[30]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ValidateEventThreatDetectionCustomModuleRequest.ProtoReflect.Descriptor instead.
func (*ValidateEventThreatDetectionCustomModuleRequest) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{30}
}
func (x *ValidateEventThreatDetectionCustomModuleRequest) GetParent() string {
if x != nil {
return x.Parent
}
return ""
}
func (x *ValidateEventThreatDetectionCustomModuleRequest) GetRawText() string {
if x != nil {
return x.RawText
}
return ""
}
func (x *ValidateEventThreatDetectionCustomModuleRequest) GetType() string {
if x != nil {
return x.Type
}
return ""
}
// Response to validating an Event Threat Detection custom module.
type ValidateEventThreatDetectionCustomModuleResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A list of errors returned by the validator. If the list is empty, there
// were no errors.
Errors []*ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError `protobuf:"bytes,2,rep,name=errors,proto3" json:"errors,omitempty"`
}
func (x *ValidateEventThreatDetectionCustomModuleResponse) Reset() {
*x = ValidateEventThreatDetectionCustomModuleResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ValidateEventThreatDetectionCustomModuleResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ValidateEventThreatDetectionCustomModuleResponse) ProtoMessage() {}
func (x *ValidateEventThreatDetectionCustomModuleResponse) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[31]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ValidateEventThreatDetectionCustomModuleResponse.ProtoReflect.Descriptor instead.
func (*ValidateEventThreatDetectionCustomModuleResponse) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{31}
}
func (x *ValidateEventThreatDetectionCustomModuleResponse) GetErrors() []*ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError {
if x != nil {
return x.Errors
}
return nil
}
// A set of optional name-value pairs that define custom source properties to
// return with each finding that is generated by the custom module. The custom
// source properties that are defined here are included in the finding JSON
// under `sourceProperties`.
type CustomConfig_CustomOutputSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Optional. A list of custom output properties to add to the finding.
Properties []*CustomConfig_CustomOutputSpec_Property `protobuf:"bytes,1,rep,name=properties,proto3" json:"properties,omitempty"`
}
func (x *CustomConfig_CustomOutputSpec) Reset() {
*x = CustomConfig_CustomOutputSpec{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CustomConfig_CustomOutputSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CustomConfig_CustomOutputSpec) ProtoMessage() {}
func (x *CustomConfig_CustomOutputSpec) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[32]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CustomConfig_CustomOutputSpec.ProtoReflect.Descriptor instead.
func (*CustomConfig_CustomOutputSpec) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{5, 0}
}
func (x *CustomConfig_CustomOutputSpec) GetProperties() []*CustomConfig_CustomOutputSpec_Property {
if x != nil {
return x.Properties
}
return nil
}
// Resource for selecting resource type.
type CustomConfig_ResourceSelector struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Optional. The resource types to run the detector on.
ResourceTypes []string `protobuf:"bytes,1,rep,name=resource_types,json=resourceTypes,proto3" json:"resource_types,omitempty"`
}
func (x *CustomConfig_ResourceSelector) Reset() {
*x = CustomConfig_ResourceSelector{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CustomConfig_ResourceSelector) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CustomConfig_ResourceSelector) ProtoMessage() {}
func (x *CustomConfig_ResourceSelector) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[33]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CustomConfig_ResourceSelector.ProtoReflect.Descriptor instead.
func (*CustomConfig_ResourceSelector) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{5, 1}
}
func (x *CustomConfig_ResourceSelector) GetResourceTypes() []string {
if x != nil {
return x.ResourceTypes
}
return nil
}
// An individual name-value pair that defines a custom source property.
type CustomConfig_CustomOutputSpec_Property struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Optional. Name of the property for the custom output.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Optional. The CEL expression for the custom output. A resource property
// can be specified to return the value of the property or a text string
// enclosed in quotation marks.
ValueExpression *expr.Expr `protobuf:"bytes,2,opt,name=value_expression,json=valueExpression,proto3" json:"value_expression,omitempty"`
}
func (x *CustomConfig_CustomOutputSpec_Property) Reset() {
*x = CustomConfig_CustomOutputSpec_Property{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CustomConfig_CustomOutputSpec_Property) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CustomConfig_CustomOutputSpec_Property) ProtoMessage() {}
func (x *CustomConfig_CustomOutputSpec_Property) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[34]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CustomConfig_CustomOutputSpec_Property.ProtoReflect.Descriptor instead.
func (*CustomConfig_CustomOutputSpec_Property) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{5, 0, 0}
}
func (x *CustomConfig_CustomOutputSpec_Property) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *CustomConfig_CustomOutputSpec_Property) GetValueExpression() *expr.Expr {
if x != nil {
return x.ValueExpression
}
return nil
}
// Manually constructed resource name. If the custom module evaluates against
// only the resource data, you can omit the `iam_policy_data` field. If it
// evaluates only the `iam_policy_data` field, you can omit the resource data.
type SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. The type of the resource, for example,
// `compute.googleapis.com/Disk`.
ResourceType string `protobuf:"bytes,1,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"`
// Optional. A representation of the Google Cloud resource. Should match the
// Google Cloud resource JSON format.
ResourceData *structpb.Struct `protobuf:"bytes,2,opt,name=resource_data,json=resourceData,proto3" json:"resource_data,omitempty"`
// Optional. A representation of the IAM policy.
IamPolicyData *iampb.Policy `protobuf:"bytes,3,opt,name=iam_policy_data,json=iamPolicyData,proto3" json:"iam_policy_data,omitempty"`
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource) Reset() {
*x = SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource) ProtoMessage() {}
func (x *SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[35]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource.ProtoReflect.Descriptor instead.
func (*SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{14, 0}
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource) GetResourceType() string {
if x != nil {
return x.ResourceType
}
return ""
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource) GetResourceData() *structpb.Struct {
if x != nil {
return x.ResourceData
}
return nil
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource) GetIamPolicyData() *iampb.Policy {
if x != nil {
return x.IamPolicyData
}
return nil
}
// Possible test result.
type SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Types that are assignable to Result:
//
// *SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Finding
// *SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_NoViolation
// *SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Error
Result isSimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Result `protobuf_oneof:"result"`
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult) Reset() {
*x = SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult) ProtoMessage() {}
func (x *SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[37]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult.ProtoReflect.Descriptor instead.
func (*SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{16, 0}
}
func (m *SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult) GetResult() isSimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Result {
if m != nil {
return m.Result
}
return nil
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult) GetFinding() *SimulatedFinding {
if x, ok := x.GetResult().(*SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Finding); ok {
return x.Finding
}
return nil
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult) GetNoViolation() *emptypb.Empty {
if x, ok := x.GetResult().(*SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_NoViolation); ok {
return x.NoViolation
}
return nil
}
func (x *SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult) GetError() *status.Status {
if x, ok := x.GetResult().(*SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Error); ok {
return x.Error
}
return nil
}
type isSimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Result interface {
isSimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Result()
}
type SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Finding struct {
// Finding that would be published for the test case,
// if a violation is detected.
Finding *SimulatedFinding `protobuf:"bytes,1,opt,name=finding,proto3,oneof"`
}
type SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_NoViolation struct {
// Indicates that the test case does not trigger any violation.
NoViolation *emptypb.Empty `protobuf:"bytes,2,opt,name=no_violation,json=noViolation,proto3,oneof"`
}
type SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Error struct {
// Error encountered during the test.
Error *status.Status `protobuf:"bytes,3,opt,name=error,proto3,oneof"`
}
func (*SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Finding) isSimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Result() {
}
func (*SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_NoViolation) isSimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Result() {
}
func (*SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Error) isSimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Result() {
}
// An error encountered while validating the uploaded configuration of an
// Event Threat Detection Custom Module.
type ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A description of the error, suitable for human consumption. Required.
Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"`
// The path, in RFC 8901 JSON Pointer format, to the field that failed
// validation. This may be left empty if no specific field is affected.
FieldPath string `protobuf:"bytes,2,opt,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"`
// The initial position of the error in the uploaded text version of the
// module. This field may be omitted if no specific position applies, or if
// one could not be computed.
Start *ValidateEventThreatDetectionCustomModuleResponse_Position `protobuf:"bytes,3,opt,name=start,proto3,oneof" json:"start,omitempty"`
// The end position of the error in the uploaded text version of the
// module. This field may be omitted if no specific position applies, or if
// one could not be computed..
End *ValidateEventThreatDetectionCustomModuleResponse_Position `protobuf:"bytes,4,opt,name=end,proto3,oneof" json:"end,omitempty"`
}
func (x *ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError) Reset() {
*x = ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[38]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError) ProtoMessage() {}
func (x *ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[38]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError.ProtoReflect.Descriptor instead.
func (*ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{31, 0}
}
func (x *ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError) GetFieldPath() string {
if x != nil {
return x.FieldPath
}
return ""
}
func (x *ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError) GetStart() *ValidateEventThreatDetectionCustomModuleResponse_Position {
if x != nil {
return x.Start
}
return nil
}
func (x *ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError) GetEnd() *ValidateEventThreatDetectionCustomModuleResponse_Position {
if x != nil {
return x.End
}
return nil
}
// A position in the uploaded text version of a module.
type ValidateEventThreatDetectionCustomModuleResponse_Position struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The line position in the text
LineNumber int32 `protobuf:"varint,1,opt,name=line_number,json=lineNumber,proto3" json:"line_number,omitempty"`
// The column position in the line
ColumnNumber int32 `protobuf:"varint,2,opt,name=column_number,json=columnNumber,proto3" json:"column_number,omitempty"`
}
func (x *ValidateEventThreatDetectionCustomModuleResponse_Position) Reset() {
*x = ValidateEventThreatDetectionCustomModuleResponse_Position{}
if protoimpl.UnsafeEnabled {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[39]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ValidateEventThreatDetectionCustomModuleResponse_Position) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ValidateEventThreatDetectionCustomModuleResponse_Position) ProtoMessage() {}
func (x *ValidateEventThreatDetectionCustomModuleResponse_Position) ProtoReflect() protoreflect.Message {
mi := &file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[39]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ValidateEventThreatDetectionCustomModuleResponse_Position.ProtoReflect.Descriptor instead.
func (*ValidateEventThreatDetectionCustomModuleResponse_Position) Descriptor() ([]byte, []int) {
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP(), []int{31, 1}
}
func (x *ValidateEventThreatDetectionCustomModuleResponse_Position) GetLineNumber() int32 {
if x != nil {
return x.LineNumber
}
return 0
}
func (x *ValidateEventThreatDetectionCustomModuleResponse_Position) GetColumnNumber() int32 {
if x != nil {
return x.ColumnNumber
}
return 0
}
var File_google_cloud_securitycentermanagement_v1_security_center_management_proto protoreflect.FileDescriptor
var file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDesc = []byte{
0x0a, 0x49, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x73,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e,
0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x28, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70,
0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62,
0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73,
0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x65, 0x78, 0x70, 0x72, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x22, 0xa0, 0x08, 0x0a, 0x2c, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76,
0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x60, 0x0a,
0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e,
0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41,
0x03, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
0x96, 0x01, 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73,
0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x66, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61,
0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x6d,
0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70,
0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
0xe0, 0x41, 0x03, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65,
0x22, 0x4e, 0x0a, 0x0f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74,
0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x4d, 0x45, 0x4e,
0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44,
0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02,
0x3a, 0xe3, 0x04, 0xea, 0x41, 0xdf, 0x04, 0x0a, 0x54, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e,
0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63,
0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x93, 0x01,
0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f,
0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x7d, 0x2f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f,
0x7b, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x7d, 0x12, 0x89, 0x01, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b,
0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x66,
0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x66, 0x66,
0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f,
0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73,
0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x7d, 0x12,
0x87, 0x01, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x6c, 0x64, 0x65,
0x72, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76,
0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65,
0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68,
0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x7d, 0x2a, 0x2d, 0x65, 0x66, 0x66, 0x65, 0x63,
0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c,
0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x32, 0x2c, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74,
0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0xf6, 0x01, 0x0a, 0x38, 0x4c, 0x69, 0x73, 0x74, 0x45,
0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x74, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x42, 0x5c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x56, 0x12, 0x54, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c,
0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67,
0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41,
0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70,
0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42,
0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22,
0xa7, 0x02, 0x0a, 0x39, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76,
0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xc1, 0x01,
0x0a, 0x32, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c,
0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64,
0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x56, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x52, 0x2d, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74,
0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74,
0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xaa, 0x01, 0x0a, 0x36, 0x47, 0x65,
0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63,
0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x70, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x42, 0x5c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x56, 0x0a, 0x54, 0x73, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xad, 0x09, 0x0a, 0x23, 0x53, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x17,
0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c,
0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12,
0x8d, 0x01, 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73,
0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x5d, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65,
0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f,
0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 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,
0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
0x65, 0x12, 0x24, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72,
0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x6c, 0x61, 0x73,
0x74, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x7c, 0x0a, 0x0f, 0x61, 0x6e, 0x63, 0x65, 0x73,
0x74, 0x6f, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
0x42, 0x53, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x4d, 0x0a, 0x4b, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d,
0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x0e, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x4d,
0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x60, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f,
0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x5d, 0x0a, 0x0f, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x45, 0x4e,
0x41, 0x42, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55,
0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07,
0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53,
0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x48, 0x45, 0x52,
0x49, 0x54, 0x45, 0x44, 0x10, 0x03, 0x3a, 0x8d, 0x04, 0xea, 0x41, 0x89, 0x04, 0x0a, 0x4b, 0x73,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e,
0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x80, 0x01, 0x6f, 0x72, 0x67,
0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61,
0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65,
0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x63,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x7d, 0x12, 0x76, 0x70,
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61,
0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x7d, 0x12, 0x74, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b,
0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x73, 0x2f, 0x7b, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c,
0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x7d, 0x2a, 0x24, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x73, 0x32, 0x23, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0xef, 0x06, 0x0a, 0x0c, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69,
0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x42, 0x03, 0xe0,
0x41, 0x01, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x71, 0x0a,
0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e,
0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0,
0x41, 0x01, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74,
0x12, 0x79, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x6c,
0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65,
0x63, 0x74, 0x6f, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75,
0x72, 0x63, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x60, 0x0a, 0x08, 0x73,
0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x42, 0x03,
0xe0, 0x41, 0x01, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x25, 0x0a,
0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01,
0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
0x01, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x1a, 0xf1, 0x01, 0x0a, 0x10, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4f, 0x75, 0x74, 0x70,
0x75, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x75, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72,
0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53,
0x70, 0x65, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x42, 0x03, 0xe0, 0x41,
0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x66, 0x0a,
0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x12, 0x41, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72,
0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x42,
0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x78, 0x70, 0x72, 0x65,
0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x3e, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x0e, 0x72, 0x65, 0x73,
0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x51, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74,
0x79, 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, 0x0c, 0x0a, 0x08, 0x43,
0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47,
0x48, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x03, 0x12,
0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x04, 0x22, 0xe4, 0x01, 0x0a, 0x2f, 0x4c, 0x69, 0x73,
0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6b, 0x0a, 0x06,
0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x53, 0xe0, 0x41,
0x02, 0xfa, 0x41, 0x4d, 0x12, 0x4b, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65,
0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c,
0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67,
0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41,
0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70,
0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42,
0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22,
0x82, 0x02, 0x0a, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa5, 0x01, 0x0a, 0x28, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
0x63, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63,
0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x24, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f,
0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54,
0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xee, 0x01, 0x0a, 0x39, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x73,
0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x6b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x42, 0x53, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x4d, 0x12, 0x4b, 0x73, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c,
0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65,
0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8c, 0x02, 0x0a, 0x3a, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65,
0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa5, 0x01, 0x0a, 0x28, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
0x63, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63,
0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x24, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f,
0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54,
0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x98, 0x01, 0x0a, 0x2d, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74,
0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x67, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x42, 0x53, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x4d, 0x0a, 0x4b, 0x73, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61,
0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65,
0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22,
0xf4, 0x02, 0x0a, 0x30, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63,
0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x6b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x42, 0x53, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x4d, 0x12, 0x4b, 0x73, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61,
0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65,
0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e,
0x74, 0x12, 0xa8, 0x01, 0x0a, 0x27, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f,
0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x23, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73,
0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x0d,
0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20,
0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xc9, 0x02, 0x0a, 0x30, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41,
0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0xa8, 0x01,
0x0a, 0x27, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e,
0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x03,
0xe0, 0x41, 0x02, 0x52, 0x23, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61,
0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69,
0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42,
0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e,
0x6c, 0x79, 0x22, 0xc5, 0x01, 0x0a, 0x30, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x67, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x53, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x4d, 0x0a, 0x4b, 0x73,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e,
0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c,
0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61,
0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x8c, 0x04, 0x0a, 0x32, 0x53,
0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x60,
0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e,
0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31,
0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0,
0x41, 0x02, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
0x12, 0x8f, 0x01, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53,
0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75,
0x72, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
0x63, 0x65, 0x1a, 0xc4, 0x01, 0x0a, 0x11, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64,
0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79,
0x70, 0x65, 0x12, 0x41, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64,
0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75,
0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x42, 0x0a, 0x0f, 0x69, 0x61, 0x6d, 0x5f, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x69, 0x61, 0x6d, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x61, 0x74, 0x61, 0x22, 0xe1, 0x09, 0x0a, 0x10, 0x53, 0x69,
0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x17,
0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e,
0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79,
0x12, 0x5b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e,
0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c,
0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74,
0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x7d, 0x0a,
0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69,
0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6e,
0x64, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65,
0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72,
0x63, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a,
0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x76,
0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5f, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72,
0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e,
0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69,
0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08,
0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x6c, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x64,
0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e,
0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c,
0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x69, 0x6e, 0x64,
0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0c, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e,
0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x1a, 0x5b, 0x0a, 0x15, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
0x02, 0x38, 0x01, 0x22, 0x38, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11,
0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12,
0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x22, 0x51, 0x0a,
0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 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, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10,
0x01, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4d,
0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, 0x04,
0x22, 0x99, 0x01, 0x0a, 0x0c, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73,
0x73, 0x12, 0x1d, 0x0a, 0x19, 0x46, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41,
0x53, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
0x12, 0x0a, 0x0a, 0x06, 0x54, 0x48, 0x52, 0x45, 0x41, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d,
0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x02, 0x12,
0x14, 0x0a, 0x10, 0x4d, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54,
0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x42, 0x53, 0x45, 0x52, 0x56, 0x41,
0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x43, 0x43, 0x5f, 0x45, 0x52,
0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x4f, 0x53, 0x54, 0x55, 0x52, 0x45,
0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x3a, 0xee, 0x01, 0xea,
0x41, 0xea, 0x01, 0x0a, 0x25, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e,
0x74, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63,
0x6f, 0x6d, 0x2f, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x40, 0x6f, 0x72, 0x67, 0x61,
0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e,
0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
0x2f, 0x7b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x7d, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e,
0x67, 0x73, 0x2f, 0x7b, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x7d, 0x12, 0x34, 0x66, 0x6f,
0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x73,
0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x7d, 0x2f,
0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e,
0x67, 0x7d, 0x12, 0x36, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72,
0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x7b,
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x7d, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73,
0x2f, 0x7b, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x7d, 0x2a, 0x08, 0x66, 0x69, 0x6e, 0x64,
0x69, 0x6e, 0x67, 0x73, 0x32, 0x07, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x9c, 0x03,
0x0a, 0x33, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63,
0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65,
0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76,
0x31, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63,
0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0xdc, 0x01,
0x0a, 0x0f, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x12, 0x56, 0x0a, 0x07, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69,
0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x00,
0x52, 0x07, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x0c, 0x6e, 0x6f, 0x5f,
0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x6f, 0x56, 0x69, 0x6f,
0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72,
0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72,
0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x93, 0x08, 0x0a,
0x29, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54,
0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41,
0x03, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x93, 0x01, 0x0a, 0x10, 0x65, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x63, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e,
0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68,
0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f,
0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
0x17, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
0x41, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70,
0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
0xe0, 0x41, 0x03, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65,
0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63,
0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4e, 0x0a, 0x0f, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x45, 0x4e,
0x41, 0x42, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55,
0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07,
0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53,
0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x3a, 0xc8, 0x04, 0xea, 0x41, 0xc4, 0x04, 0x0a, 0x51,
0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61,
0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76,
0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x12, 0x8d, 0x01, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d,
0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73,
0x2f, 0x7b, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e,
0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x7d, 0x12, 0x83, 0x01, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72,
0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x66, 0x66, 0x65,
0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74,
0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d,
0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76,
0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64,
0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f,
0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x7d, 0x12, 0x81, 0x01, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72,
0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f,
0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68,
0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x66, 0x66, 0x65,
0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65,
0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x7d, 0x2a, 0x2a, 0x65, 0x66, 0x66,
0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61,
0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x32, 0x29, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69,
0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x35, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63,
0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44,
0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x71, 0x0a, 0x06,
0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x59, 0xe0, 0x41,
0x02, 0xfa, 0x41, 0x53, 0x12, 0x51, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65,
0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x66,
0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65,
0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12,
0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65,
0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9b, 0x02, 0x0a, 0x36, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x66,
0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65,
0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0xb8, 0x01, 0x0a, 0x2f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65,
0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64,
0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52,
0x2a, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54,
0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f,
0x6b, 0x65, 0x6e, 0x22, 0xa4, 0x01, 0x0a, 0x33, 0x47, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63,
0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44,
0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6d, 0x0a, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x59, 0xe0, 0x41, 0x02, 0xfa, 0x41,
0x53, 0x0a, 0x51, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x66, 0x66, 0x65, 0x63,
0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44,
0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9c, 0x09, 0x0a, 0x20, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12,
0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63,
0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x79,
0x0a, 0x0f, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x4a, 0x0a,
0x48, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d,
0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68,
0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x0e, 0x61, 0x6e, 0x63, 0x65, 0x73,
0x74, 0x6f, 0x72, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x10, 0x65, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x5a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e,
0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65,
0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05,
0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70,
0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40,
0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 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, 0x42,
0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65,
0x12, 0x24, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x18,
0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74,
0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x22, 0x5d, 0x0a, 0x0f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x45, 0x4e, 0x41,
0x42, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e,
0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x45,
0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41,
0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x48, 0x45, 0x52, 0x49,
0x54, 0x45, 0x44, 0x10, 0x03, 0x3a, 0xf1, 0x03, 0xea, 0x41, 0xed, 0x03, 0x0a, 0x48, 0x73, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61,
0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61,
0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x7a, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b,
0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54,
0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x76, 0x65,
0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x7d, 0x12, 0x70, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72,
0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x76, 0x65, 0x6e,
0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x65,
0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64,
0x75, 0x6c, 0x65, 0x7d, 0x12, 0x6e, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x66,
0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x76, 0x65, 0x6e,
0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x65,
0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64,
0x75, 0x6c, 0x65, 0x7d, 0x2a, 0x21, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61,
0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x32, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68,
0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0xde, 0x01, 0x0a, 0x2c, 0x4c, 0x69,
0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x06, 0x70, 0x61,
0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0xe0, 0x41, 0x02, 0xfa,
0x41, 0x4a, 0x12, 0x48, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x76, 0x65, 0x6e,
0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x70, 0x61,
0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61,
0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74,
0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52,
0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xf6, 0x01, 0x0a, 0x2d, 0x4c,
0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65,
0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64,
0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9c, 0x01, 0x0a,
0x25, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64, 0x65,
0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d,
0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72,
0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x21, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54,
0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f,
0x6b, 0x65, 0x6e, 0x22, 0xe8, 0x01, 0x0a, 0x36, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x73, 0x63,
0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61,
0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68,
0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50,
0xe0, 0x41, 0x02, 0xfa, 0x41, 0x4a, 0x12, 0x48, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65,
0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01,
0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61,
0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x80,
0x02, 0x0a, 0x37, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e,
0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9c, 0x01, 0x0a, 0x25, 0x65,
0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64,
0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61,
0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x21, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72,
0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78,
0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65,
0x6e, 0x22, 0x92, 0x01, 0x0a, 0x2a, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68,
0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x64, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50,
0xe0, 0x41, 0x02, 0xfa, 0x41, 0x4a, 0x0a, 0x48, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe5, 0x02, 0x0a, 0x2d, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65,
0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x4a,
0x12, 0x48, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54,
0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65,
0x6e, 0x74, 0x12, 0x9f, 0x01, 0x0a, 0x24, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72,
0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d,
0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x03, 0xe0,
0x41, 0x02, 0x52, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44,
0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,
0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01,
0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xbd,
0x02, 0x0a, 0x2d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68,
0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73,
0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61,
0x73, 0x6b, 0x12, 0x9f, 0x01, 0x0a, 0x24, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72,
0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d,
0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x03, 0xe0,
0x41, 0x02, 0x52, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44,
0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,
0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01,
0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xbf,
0x01, 0x0a, 0x2d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68,
0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x64, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x50,
0xe0, 0x41, 0x02, 0xfa, 0x41, 0x4a, 0x0a, 0x48, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0,
0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79,
0x22, 0xd4, 0x01, 0x0a, 0x2f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x42, 0x50, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x4a, 0x12, 0x48, 0x73, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61,
0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61,
0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1e,
0x0a, 0x08, 0x72, 0x61, 0x77, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x72, 0x61, 0x77, 0x54, 0x65, 0x78, 0x74, 0x12, 0x17,
0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x84, 0x05, 0x0a, 0x30, 0x56, 0x61, 0x6c, 0x69,
0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44,
0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8e, 0x01, 0x0a,
0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x76, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0xec, 0x02,
0x0a, 0x1b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x56, 0x61,
0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x20, 0x0a,
0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12,
0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61, 0x74, 0x68, 0x12, 0x7e,
0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x63, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69,
0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x7a,
0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x63, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
0x48, 0x01, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73,
0x74, 0x61, 0x72, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x65, 0x6e, 0x64, 0x1a, 0x50, 0x0a, 0x08,
0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x6e, 0x65,
0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c,
0x69, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c,
0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0xa1,
0x4b, 0x0a, 0x18, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x90, 0x04, 0x0a, 0x31,
0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x73, 0x12, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d,
0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63,
0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x63, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e,
0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31,
0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c,
0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x91, 0x02, 0xda, 0x41, 0x06,
0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x81, 0x02, 0x5a, 0x52, 0x12,
0x50, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c,
0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x73, 0x5a, 0x58, 0x12, 0x56, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a,
0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x66,
0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x51, 0x2f, 0x76, 0x31,
0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d,
0x2f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63,
0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0xfd,
0x03, 0x0a, 0x2f, 0x47, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x12, 0x60, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63,
0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x56, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e,
0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73,
0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x8f, 0x02, 0xda,
0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x81, 0x02, 0x5a, 0x52, 0x12,
0x50, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65,
0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a,
0x2f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63,
0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a,
0x7d, 0x5a, 0x58, 0x12, 0x56, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f,
0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x66, 0x66, 0x65, 0x63,
0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c,
0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x51, 0x2f, 0x76, 0x31,
0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x66,
0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xda,
0x03, 0x0a, 0x28, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x59, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x5a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65,
0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76,
0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65,
0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x22, 0xf6, 0x01, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3,
0xe4, 0x93, 0x02, 0xe6, 0x01, 0x5a, 0x49, 0x12, 0x47, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61,
0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74,
0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73,
0x5a, 0x4f, 0x12, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d,
0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f,
0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x73, 0x12, 0x48, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70,
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0xa5, 0x04, 0x0a, 0x32,
0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x53, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c,
0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x73, 0x12, 0x63, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
0x73, 0x74, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74,
0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63,
0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e,
0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa3, 0x02,
0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x93, 0x02,
0x5a, 0x58, 0x12, 0x56, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d,
0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x6c, 0x69, 0x73, 0x74,
0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x5a, 0x5e, 0x12, 0x5c, 0x2f, 0x76,
0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69,
0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x6c, 0x69, 0x73, 0x74,
0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x12, 0x57, 0x2f, 0x76, 0x31, 0x2f,
0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f,
0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e,
0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64,
0x75, 0x6c, 0x65, 0x73, 0x3a, 0x6c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64,
0x61, 0x6e, 0x74, 0x12, 0xc7, 0x03, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x57,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61,
0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63,
0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0xf4, 0x01, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x82, 0xd3, 0xe4, 0x93, 0x02, 0xe6, 0x01, 0x5a, 0x49, 0x12, 0x47, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f,
0x2a, 0x7d, 0x5a, 0x4f, 0x12, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f,
0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74,
0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73,
0x2f, 0x2a, 0x7d, 0x12, 0x48, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70,
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65,
0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xf2, 0x04,
0x0a, 0x29, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x5a, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63,
0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x99, 0x03, 0xda, 0x41, 0x2e, 0x70, 0x61, 0x72, 0x65,
0x6e, 0x74, 0x2c, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c,
0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xe1,
0x02, 0x3a, 0x27, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c,
0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5a, 0x72, 0x3a, 0x27, 0x73, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e,
0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d,
0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x47, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65,
0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63,
0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5a, 0x78,
0x3a, 0x27, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c,
0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x48, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70,
0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c,
0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x73, 0x12, 0xf1, 0x05, 0x0a, 0x29, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x12, 0x5a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61,
0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61,
0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d,
0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4d, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x98, 0x04, 0xda, 0x41,
0x33, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68,
0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f,
0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdb, 0x03, 0x3a, 0x27, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61,
0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x5a, 0x9a, 0x01, 0x3a, 0x27, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
0x63, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x32, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f,
0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73,
0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x6e,
0x61, 0x6d, 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63,
0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a,
0x7d, 0x5a, 0xa0, 0x01, 0x3a, 0x27, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68,
0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f,
0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x32, 0x75, 0x2f,
0x76, 0x31, 0x2f, 0x7b, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61,
0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65,
0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a,
0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x73, 0x2f, 0x2a, 0x7d, 0x32, 0x70, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x73, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61,
0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x96, 0x03, 0x0a, 0x29, 0x44, 0x65, 0x6c, 0x65, 0x74,
0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x12, 0x5a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65,
0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xf4, 0x01, 0xda, 0x41, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xe6, 0x01, 0x5a, 0x49, 0x2a, 0x47, 0x2f, 0x76, 0x31,
0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a,
0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79,
0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x4f, 0x2a, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d,
0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c,
0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2a, 0x48, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65,
0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12,
0x9e, 0x04, 0x0a, 0x2b, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74,
0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12,
0x5c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e,
0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c,
0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x5d, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74,
0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb1, 0x02, 0xda,
0x41, 0x1d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f,
0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x82,
0xd3, 0xe4, 0x93, 0x02, 0x8a, 0x02, 0x3a, 0x01, 0x2a, 0x5a, 0x55, 0x3a, 0x01, 0x2a, 0x22, 0x50,
0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c, 0x64,
0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
0x2a, 0x7d, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65,
0x5a, 0x5b, 0x3a, 0x01, 0x2a, 0x22, 0x56, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65,
0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f,
0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e,
0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64,
0x75, 0x6c, 0x65, 0x73, 0x3a, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x51, 0x2f,
0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
0x2a, 0x7d, 0x2f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65,
0x12, 0xfe, 0x03, 0x0a, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69,
0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x73, 0x12, 0x5f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e,
0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x60, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e,
0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x02, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65,
0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xf8, 0x01, 0x5a, 0x4f, 0x12, 0x4d, 0x2f, 0x76, 0x31,
0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73,
0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f,
0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68,
0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5a, 0x55, 0x12, 0x53, 0x2f, 0x76,
0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69,
0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65,
0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x73, 0x12, 0x4e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70,
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65,
0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x73, 0x12, 0xeb, 0x03, 0x0a, 0x2c, 0x47, 0x65, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69,
0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x12, 0x5d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54,
0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x53, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d,
0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x66, 0x66,
0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61,
0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x86, 0x02, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x82, 0xd3, 0xe4, 0x93, 0x02, 0xf8, 0x01, 0x5a, 0x4f, 0x12, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x66, 0x66, 0x65, 0x63,
0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44,
0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x55, 0x12, 0x53, 0x2f, 0x76, 0x31, 0x2f,
0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
0x2a, 0x2f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74,
0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12,
0x4e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
0x2a, 0x2f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74,
0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12,
0xc8, 0x03, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72,
0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x56, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e,
0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68,
0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x57, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d,
0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xed, 0x01, 0xda, 0x41, 0x06,
0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdd, 0x01, 0x5a, 0x46, 0x12,
0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c,
0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44,
0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x73, 0x5a, 0x4c, 0x12, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61,
0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a,
0x7d, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x73, 0x12, 0x45, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68,
0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x93, 0x04, 0x0a, 0x2f, 0x4c,
0x69, 0x73, 0x74, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x60,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61,
0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65,
0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72,
0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x61, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61,
0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54,
0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x9a, 0x02, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82,
0xd3, 0xe4, 0x93, 0x02, 0x8a, 0x02, 0x5a, 0x55, 0x12, 0x53, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70,
0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f,
0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x76, 0x65,
0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x6c,
0x69, 0x73, 0x74, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x5a, 0x5b, 0x12,
0x59, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67,
0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54,
0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x6c, 0x69, 0x73, 0x74,
0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74, 0x12, 0x54, 0x2f, 0x76, 0x31, 0x2f,
0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f,
0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65,
0x73, 0x3a, 0x6c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x74,
0x12, 0xb5, 0x03, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72,
0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x54, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65,
0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4a,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61,
0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54,
0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0xeb, 0x01, 0xda, 0x41, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdd, 0x01, 0x5a, 0x46, 0x12, 0x44, 0x2f,
0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73,
0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65,
0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73,
0x2f, 0x2a, 0x7d, 0x5a, 0x4c, 0x12, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65,
0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a,
0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x76, 0x65,
0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a,
0x7d, 0x12, 0x45, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f,
0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44,
0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f,
0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd4, 0x04, 0x0a, 0x26, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65,
0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64,
0x75, 0x6c, 0x65, 0x12, 0x57, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74,
0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d,
0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4a, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72,
0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x84, 0x03, 0xda, 0x41, 0x2b, 0x70, 0x61,
0x72, 0x65, 0x6e, 0x74, 0x2c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61,
0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xcf, 0x02,
0x3a, 0x24, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64,
0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f,
0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5a, 0x6c, 0x3a, 0x24, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f,
0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x44,
0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c, 0x64,
0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
0x2a, 0x7d, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65,
0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64,
0x75, 0x6c, 0x65, 0x73, 0x5a, 0x72, 0x3a, 0x24, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68,
0x72, 0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x4a, 0x2f, 0x76,
0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69,
0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65,
0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x45, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70,
0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x76,
0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12,
0xca, 0x05, 0x0a, 0x26, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54,
0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x57, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e,
0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x22,
0xfa, 0x03, 0xda, 0x41, 0x30, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61,
0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xc0, 0x03, 0x3a, 0x24, 0x65, 0x76,
0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x5a, 0x91, 0x01, 0x3a, 0x24, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72,
0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x32, 0x69, 0x2f, 0x76, 0x31,
0x2f, 0x7b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64,
0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f,
0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64,
0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
0x2a, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x97, 0x01, 0x3a, 0x24, 0x65, 0x76, 0x65, 0x6e, 0x74,
0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x32,
0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65,
0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f,
0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x76, 0x65, 0x6e,
0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d,
0x32, 0x6a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x68, 0x72,
0x65, 0x61, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65,
0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72,
0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x87, 0x03, 0x0a,
0x26, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65,
0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x57, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63,
0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68,
0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xeb, 0x01, 0xda, 0x41, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdd, 0x01, 0x5a, 0x46, 0x2a, 0x44, 0x2f, 0x76, 0x31,
0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a,
0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x76, 0x65,
0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a,
0x7d, 0x5a, 0x4c, 0x2a, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f,
0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74,
0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2a,
0x45, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
0x2a, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xec, 0x03, 0x0a, 0x28, 0x56, 0x61, 0x6c, 0x69, 0x64,
0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65,
0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64,
0x75, 0x6c, 0x65, 0x12, 0x59, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65,
0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56,
0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65,
0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x5a,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61,
0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75,
0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x02, 0x82, 0xd3, 0xe4,
0x93, 0x02, 0x81, 0x02, 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x76,
0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72,
0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d,
0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
0x65, 0x73, 0x3a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5a, 0x58, 0x3a, 0x01, 0x2a,
0x22, 0x53, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72,
0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74,
0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x76, 0x61, 0x6c,
0x69, 0x64, 0x61, 0x74, 0x65, 0x22, 0x4e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65,
0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74,
0x54, 0x68, 0x72, 0x65, 0x61, 0x74, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x3a, 0x76, 0x61, 0x6c,
0x69, 0x64, 0x61, 0x74, 0x65, 0x1a, 0x5b, 0xca, 0x41, 0x27, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61,
0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x42, 0x93, 0x04, 0xea, 0x41, 0x71, 0x0a, 0x3c, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f,
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b,
0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0xea, 0x41, 0x5f, 0x0a, 0x36, 0x73, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61,
0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x4c, 0x6f, 0x63, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x66,
0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x0a, 0x2c, 0x63, 0x6f, 0x6d,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65,
0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61,
0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x1d, 0x53, 0x65, 0x63, 0x75, 0x72,
0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x68, 0x63, 0x6c, 0x6f, 0x75,
0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f,
0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61,
0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x73,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e,
0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x3b, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x74, 0x79, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x70, 0x62, 0xaa, 0x02, 0x28, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c,
0x6f, 0x75, 0x64, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74,
0x65, 0x72, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0xca,
0x02, 0x28, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x6e,
0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x2b, 0x47, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x53, 0x65, 0x63, 0x75,
0x72, 0x69, 0x74, 0x79, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65,
0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescOnce sync.Once
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescData = file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDesc
)
func file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescGZIP() []byte {
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescOnce.Do(func() {
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescData)
})
return file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDescData
}
var file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes = make([]protoimpl.EnumInfo, 8)
var file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes = make([]protoimpl.MessageInfo, 40)
var file_google_cloud_securitycentermanagement_v1_security_center_management_proto_goTypes = []interface{}{
(EffectiveSecurityHealthAnalyticsCustomModule_EnablementState)(0), // 0: google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule.EnablementState
(SecurityHealthAnalyticsCustomModule_EnablementState)(0), // 1: google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.EnablementState
(CustomConfig_Severity)(0), // 2: google.cloud.securitycentermanagement.v1.CustomConfig.Severity
(SimulatedFinding_State)(0), // 3: google.cloud.securitycentermanagement.v1.SimulatedFinding.State
(SimulatedFinding_Severity)(0), // 4: google.cloud.securitycentermanagement.v1.SimulatedFinding.Severity
(SimulatedFinding_FindingClass)(0), // 5: google.cloud.securitycentermanagement.v1.SimulatedFinding.FindingClass
(EffectiveEventThreatDetectionCustomModule_EnablementState)(0), // 6: google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule.EnablementState
(EventThreatDetectionCustomModule_EnablementState)(0), // 7: google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.EnablementState
(*EffectiveSecurityHealthAnalyticsCustomModule)(nil), // 8: google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule
(*ListEffectiveSecurityHealthAnalyticsCustomModulesRequest)(nil), // 9: google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesRequest
(*ListEffectiveSecurityHealthAnalyticsCustomModulesResponse)(nil), // 10: google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesResponse
(*GetEffectiveSecurityHealthAnalyticsCustomModuleRequest)(nil), // 11: google.cloud.securitycentermanagement.v1.GetEffectiveSecurityHealthAnalyticsCustomModuleRequest
(*SecurityHealthAnalyticsCustomModule)(nil), // 12: google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule
(*CustomConfig)(nil), // 13: google.cloud.securitycentermanagement.v1.CustomConfig
(*ListSecurityHealthAnalyticsCustomModulesRequest)(nil), // 14: google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesRequest
(*ListSecurityHealthAnalyticsCustomModulesResponse)(nil), // 15: google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesResponse
(*ListDescendantSecurityHealthAnalyticsCustomModulesRequest)(nil), // 16: google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesRequest
(*ListDescendantSecurityHealthAnalyticsCustomModulesResponse)(nil), // 17: google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesResponse
(*GetSecurityHealthAnalyticsCustomModuleRequest)(nil), // 18: google.cloud.securitycentermanagement.v1.GetSecurityHealthAnalyticsCustomModuleRequest
(*CreateSecurityHealthAnalyticsCustomModuleRequest)(nil), // 19: google.cloud.securitycentermanagement.v1.CreateSecurityHealthAnalyticsCustomModuleRequest
(*UpdateSecurityHealthAnalyticsCustomModuleRequest)(nil), // 20: google.cloud.securitycentermanagement.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest
(*DeleteSecurityHealthAnalyticsCustomModuleRequest)(nil), // 21: google.cloud.securitycentermanagement.v1.DeleteSecurityHealthAnalyticsCustomModuleRequest
(*SimulateSecurityHealthAnalyticsCustomModuleRequest)(nil), // 22: google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest
(*SimulatedFinding)(nil), // 23: google.cloud.securitycentermanagement.v1.SimulatedFinding
(*SimulateSecurityHealthAnalyticsCustomModuleResponse)(nil), // 24: google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse
(*EffectiveEventThreatDetectionCustomModule)(nil), // 25: google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule
(*ListEffectiveEventThreatDetectionCustomModulesRequest)(nil), // 26: google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesRequest
(*ListEffectiveEventThreatDetectionCustomModulesResponse)(nil), // 27: google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesResponse
(*GetEffectiveEventThreatDetectionCustomModuleRequest)(nil), // 28: google.cloud.securitycentermanagement.v1.GetEffectiveEventThreatDetectionCustomModuleRequest
(*EventThreatDetectionCustomModule)(nil), // 29: google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule
(*ListEventThreatDetectionCustomModulesRequest)(nil), // 30: google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesRequest
(*ListEventThreatDetectionCustomModulesResponse)(nil), // 31: google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesResponse
(*ListDescendantEventThreatDetectionCustomModulesRequest)(nil), // 32: google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesRequest
(*ListDescendantEventThreatDetectionCustomModulesResponse)(nil), // 33: google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesResponse
(*GetEventThreatDetectionCustomModuleRequest)(nil), // 34: google.cloud.securitycentermanagement.v1.GetEventThreatDetectionCustomModuleRequest
(*CreateEventThreatDetectionCustomModuleRequest)(nil), // 35: google.cloud.securitycentermanagement.v1.CreateEventThreatDetectionCustomModuleRequest
(*UpdateEventThreatDetectionCustomModuleRequest)(nil), // 36: google.cloud.securitycentermanagement.v1.UpdateEventThreatDetectionCustomModuleRequest
(*DeleteEventThreatDetectionCustomModuleRequest)(nil), // 37: google.cloud.securitycentermanagement.v1.DeleteEventThreatDetectionCustomModuleRequest
(*ValidateEventThreatDetectionCustomModuleRequest)(nil), // 38: google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleRequest
(*ValidateEventThreatDetectionCustomModuleResponse)(nil), // 39: google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse
(*CustomConfig_CustomOutputSpec)(nil), // 40: google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec
(*CustomConfig_ResourceSelector)(nil), // 41: google.cloud.securitycentermanagement.v1.CustomConfig.ResourceSelector
(*CustomConfig_CustomOutputSpec_Property)(nil), // 42: google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property
(*SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource)(nil), // 43: google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource
nil, // 44: google.cloud.securitycentermanagement.v1.SimulatedFinding.SourcePropertiesEntry
(*SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult)(nil), // 45: google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult
(*ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError)(nil), // 46: google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError
(*ValidateEventThreatDetectionCustomModuleResponse_Position)(nil), // 47: google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position
(*timestamppb.Timestamp)(nil), // 48: google.protobuf.Timestamp
(*expr.Expr)(nil), // 49: google.type.Expr
(*fieldmaskpb.FieldMask)(nil), // 50: google.protobuf.FieldMask
(*structpb.Struct)(nil), // 51: google.protobuf.Struct
(*iampb.Policy)(nil), // 52: google.iam.v1.Policy
(*structpb.Value)(nil), // 53: google.protobuf.Value
(*emptypb.Empty)(nil), // 54: google.protobuf.Empty
(*status.Status)(nil), // 55: google.rpc.Status
}
var file_google_cloud_securitycentermanagement_v1_security_center_management_proto_depIdxs = []int32{
13, // 0: google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule.custom_config:type_name -> google.cloud.securitycentermanagement.v1.CustomConfig
0, // 1: google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule.enablement_state:type_name -> google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule.EnablementState
8, // 2: google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.effective_security_health_analytics_custom_modules:type_name -> google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule
1, // 3: google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.enablement_state:type_name -> google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.EnablementState
48, // 4: google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.update_time:type_name -> google.protobuf.Timestamp
13, // 5: google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.custom_config:type_name -> google.cloud.securitycentermanagement.v1.CustomConfig
49, // 6: google.cloud.securitycentermanagement.v1.CustomConfig.predicate:type_name -> google.type.Expr
40, // 7: google.cloud.securitycentermanagement.v1.CustomConfig.custom_output:type_name -> google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec
41, // 8: google.cloud.securitycentermanagement.v1.CustomConfig.resource_selector:type_name -> google.cloud.securitycentermanagement.v1.CustomConfig.ResourceSelector
2, // 9: google.cloud.securitycentermanagement.v1.CustomConfig.severity:type_name -> google.cloud.securitycentermanagement.v1.CustomConfig.Severity
12, // 10: google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesResponse.security_health_analytics_custom_modules:type_name -> google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule
12, // 11: google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesResponse.security_health_analytics_custom_modules:type_name -> google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule
12, // 12: google.cloud.securitycentermanagement.v1.CreateSecurityHealthAnalyticsCustomModuleRequest.security_health_analytics_custom_module:type_name -> google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule
50, // 13: google.cloud.securitycentermanagement.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest.update_mask:type_name -> google.protobuf.FieldMask
12, // 14: google.cloud.securitycentermanagement.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest.security_health_analytics_custom_module:type_name -> google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule
13, // 15: google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.custom_config:type_name -> google.cloud.securitycentermanagement.v1.CustomConfig
43, // 16: google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.resource:type_name -> google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource
3, // 17: google.cloud.securitycentermanagement.v1.SimulatedFinding.state:type_name -> google.cloud.securitycentermanagement.v1.SimulatedFinding.State
44, // 18: google.cloud.securitycentermanagement.v1.SimulatedFinding.source_properties:type_name -> google.cloud.securitycentermanagement.v1.SimulatedFinding.SourcePropertiesEntry
48, // 19: google.cloud.securitycentermanagement.v1.SimulatedFinding.event_time:type_name -> google.protobuf.Timestamp
4, // 20: google.cloud.securitycentermanagement.v1.SimulatedFinding.severity:type_name -> google.cloud.securitycentermanagement.v1.SimulatedFinding.Severity
5, // 21: google.cloud.securitycentermanagement.v1.SimulatedFinding.finding_class:type_name -> google.cloud.securitycentermanagement.v1.SimulatedFinding.FindingClass
45, // 22: google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.result:type_name -> google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult
51, // 23: google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule.config:type_name -> google.protobuf.Struct
6, // 24: google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule.enablement_state:type_name -> google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule.EnablementState
25, // 25: google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesResponse.effective_event_threat_detection_custom_modules:type_name -> google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule
51, // 26: google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.config:type_name -> google.protobuf.Struct
7, // 27: google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.enablement_state:type_name -> google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.EnablementState
48, // 28: google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.update_time:type_name -> google.protobuf.Timestamp
29, // 29: google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesResponse.event_threat_detection_custom_modules:type_name -> google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule
29, // 30: google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesResponse.event_threat_detection_custom_modules:type_name -> google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule
29, // 31: google.cloud.securitycentermanagement.v1.CreateEventThreatDetectionCustomModuleRequest.event_threat_detection_custom_module:type_name -> google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule
50, // 32: google.cloud.securitycentermanagement.v1.UpdateEventThreatDetectionCustomModuleRequest.update_mask:type_name -> google.protobuf.FieldMask
29, // 33: google.cloud.securitycentermanagement.v1.UpdateEventThreatDetectionCustomModuleRequest.event_threat_detection_custom_module:type_name -> google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule
46, // 34: google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.errors:type_name -> google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError
42, // 35: google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.properties:type_name -> google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property
49, // 36: google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property.value_expression:type_name -> google.type.Expr
51, // 37: google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.resource_data:type_name -> google.protobuf.Struct
52, // 38: google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.iam_policy_data:type_name -> google.iam.v1.Policy
53, // 39: google.cloud.securitycentermanagement.v1.SimulatedFinding.SourcePropertiesEntry.value:type_name -> google.protobuf.Value
23, // 40: google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.finding:type_name -> google.cloud.securitycentermanagement.v1.SimulatedFinding
54, // 41: google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.no_violation:type_name -> google.protobuf.Empty
55, // 42: google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.error:type_name -> google.rpc.Status
47, // 43: google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError.start:type_name -> google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position
47, // 44: google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError.end:type_name -> google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position
9, // 45: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ListEffectiveSecurityHealthAnalyticsCustomModules:input_type -> google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesRequest
11, // 46: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.GetEffectiveSecurityHealthAnalyticsCustomModule:input_type -> google.cloud.securitycentermanagement.v1.GetEffectiveSecurityHealthAnalyticsCustomModuleRequest
14, // 47: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ListSecurityHealthAnalyticsCustomModules:input_type -> google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesRequest
16, // 48: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ListDescendantSecurityHealthAnalyticsCustomModules:input_type -> google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesRequest
18, // 49: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.GetSecurityHealthAnalyticsCustomModule:input_type -> google.cloud.securitycentermanagement.v1.GetSecurityHealthAnalyticsCustomModuleRequest
19, // 50: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.CreateSecurityHealthAnalyticsCustomModule:input_type -> google.cloud.securitycentermanagement.v1.CreateSecurityHealthAnalyticsCustomModuleRequest
20, // 51: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.UpdateSecurityHealthAnalyticsCustomModule:input_type -> google.cloud.securitycentermanagement.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest
21, // 52: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.DeleteSecurityHealthAnalyticsCustomModule:input_type -> google.cloud.securitycentermanagement.v1.DeleteSecurityHealthAnalyticsCustomModuleRequest
22, // 53: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.SimulateSecurityHealthAnalyticsCustomModule:input_type -> google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest
26, // 54: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ListEffectiveEventThreatDetectionCustomModules:input_type -> google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesRequest
28, // 55: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.GetEffectiveEventThreatDetectionCustomModule:input_type -> google.cloud.securitycentermanagement.v1.GetEffectiveEventThreatDetectionCustomModuleRequest
30, // 56: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ListEventThreatDetectionCustomModules:input_type -> google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesRequest
32, // 57: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ListDescendantEventThreatDetectionCustomModules:input_type -> google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesRequest
34, // 58: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.GetEventThreatDetectionCustomModule:input_type -> google.cloud.securitycentermanagement.v1.GetEventThreatDetectionCustomModuleRequest
35, // 59: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.CreateEventThreatDetectionCustomModule:input_type -> google.cloud.securitycentermanagement.v1.CreateEventThreatDetectionCustomModuleRequest
36, // 60: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.UpdateEventThreatDetectionCustomModule:input_type -> google.cloud.securitycentermanagement.v1.UpdateEventThreatDetectionCustomModuleRequest
37, // 61: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.DeleteEventThreatDetectionCustomModule:input_type -> google.cloud.securitycentermanagement.v1.DeleteEventThreatDetectionCustomModuleRequest
38, // 62: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ValidateEventThreatDetectionCustomModule:input_type -> google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleRequest
10, // 63: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ListEffectiveSecurityHealthAnalyticsCustomModules:output_type -> google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesResponse
8, // 64: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.GetEffectiveSecurityHealthAnalyticsCustomModule:output_type -> google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule
15, // 65: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ListSecurityHealthAnalyticsCustomModules:output_type -> google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesResponse
17, // 66: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ListDescendantSecurityHealthAnalyticsCustomModules:output_type -> google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesResponse
12, // 67: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.GetSecurityHealthAnalyticsCustomModule:output_type -> google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule
12, // 68: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.CreateSecurityHealthAnalyticsCustomModule:output_type -> google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule
12, // 69: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.UpdateSecurityHealthAnalyticsCustomModule:output_type -> google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule
54, // 70: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.DeleteSecurityHealthAnalyticsCustomModule:output_type -> google.protobuf.Empty
24, // 71: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.SimulateSecurityHealthAnalyticsCustomModule:output_type -> google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse
27, // 72: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ListEffectiveEventThreatDetectionCustomModules:output_type -> google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesResponse
25, // 73: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.GetEffectiveEventThreatDetectionCustomModule:output_type -> google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule
31, // 74: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ListEventThreatDetectionCustomModules:output_type -> google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesResponse
33, // 75: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ListDescendantEventThreatDetectionCustomModules:output_type -> google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesResponse
29, // 76: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.GetEventThreatDetectionCustomModule:output_type -> google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule
29, // 77: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.CreateEventThreatDetectionCustomModule:output_type -> google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule
29, // 78: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.UpdateEventThreatDetectionCustomModule:output_type -> google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule
54, // 79: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.DeleteEventThreatDetectionCustomModule:output_type -> google.protobuf.Empty
39, // 80: google.cloud.securitycentermanagement.v1.SecurityCenterManagement.ValidateEventThreatDetectionCustomModule:output_type -> google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse
63, // [63:81] is the sub-list for method output_type
45, // [45:63] is the sub-list for method input_type
45, // [45:45] is the sub-list for extension type_name
45, // [45:45] is the sub-list for extension extendee
0, // [0:45] is the sub-list for field type_name
}
func init() { file_google_cloud_securitycentermanagement_v1_security_center_management_proto_init() }
func file_google_cloud_securitycentermanagement_v1_security_center_management_proto_init() {
if File_google_cloud_securitycentermanagement_v1_security_center_management_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EffectiveSecurityHealthAnalyticsCustomModule); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListEffectiveSecurityHealthAnalyticsCustomModulesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListEffectiveSecurityHealthAnalyticsCustomModulesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetEffectiveSecurityHealthAnalyticsCustomModuleRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SecurityHealthAnalyticsCustomModule); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CustomConfig); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListSecurityHealthAnalyticsCustomModulesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListSecurityHealthAnalyticsCustomModulesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDescendantSecurityHealthAnalyticsCustomModulesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDescendantSecurityHealthAnalyticsCustomModulesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetSecurityHealthAnalyticsCustomModuleRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateSecurityHealthAnalyticsCustomModuleRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateSecurityHealthAnalyticsCustomModuleRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteSecurityHealthAnalyticsCustomModuleRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SimulateSecurityHealthAnalyticsCustomModuleRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SimulatedFinding); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SimulateSecurityHealthAnalyticsCustomModuleResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EffectiveEventThreatDetectionCustomModule); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListEffectiveEventThreatDetectionCustomModulesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListEffectiveEventThreatDetectionCustomModulesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetEffectiveEventThreatDetectionCustomModuleRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EventThreatDetectionCustomModule); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListEventThreatDetectionCustomModulesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListEventThreatDetectionCustomModulesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDescendantEventThreatDetectionCustomModulesRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListDescendantEventThreatDetectionCustomModulesResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetEventThreatDetectionCustomModuleRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CreateEventThreatDetectionCustomModuleRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateEventThreatDetectionCustomModuleRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteEventThreatDetectionCustomModuleRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ValidateEventThreatDetectionCustomModuleRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ValidateEventThreatDetectionCustomModuleResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CustomConfig_CustomOutputSpec); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CustomConfig_ResourceSelector); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CustomConfig_CustomOutputSpec_Property); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SimulateSecurityHealthAnalyticsCustomModuleRequest_SimulatedResource); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ValidateEventThreatDetectionCustomModuleResponse_CustomModuleValidationError); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ValidateEventThreatDetectionCustomModuleResponse_Position); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[37].OneofWrappers = []interface{}{
(*SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Finding)(nil),
(*SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_NoViolation)(nil),
(*SimulateSecurityHealthAnalyticsCustomModuleResponse_SimulatedResult_Error)(nil),
}
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes[38].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDesc,
NumEnums: 8,
NumMessages: 40,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_google_cloud_securitycentermanagement_v1_security_center_management_proto_goTypes,
DependencyIndexes: file_google_cloud_securitycentermanagement_v1_security_center_management_proto_depIdxs,
EnumInfos: file_google_cloud_securitycentermanagement_v1_security_center_management_proto_enumTypes,
MessageInfos: file_google_cloud_securitycentermanagement_v1_security_center_management_proto_msgTypes,
}.Build()
File_google_cloud_securitycentermanagement_v1_security_center_management_proto = out.File
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_rawDesc = nil
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_goTypes = nil
file_google_cloud_securitycentermanagement_v1_security_center_management_proto_depIdxs = nil
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6
// SecurityCenterManagementClient is the client API for SecurityCenterManagement service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type SecurityCenterManagementClient interface {
// Returns a list of all EffectiveSecurityHealthAnalyticsCustomModules for the
// given parent. This includes resident modules defined at the scope of the
// parent, and inherited modules, inherited from CRM ancestors (no
// descendants).
ListEffectiveSecurityHealthAnalyticsCustomModules(ctx context.Context, in *ListEffectiveSecurityHealthAnalyticsCustomModulesRequest, opts ...grpc.CallOption) (*ListEffectiveSecurityHealthAnalyticsCustomModulesResponse, error)
// Gets details of a single EffectiveSecurityHealthAnalyticsCustomModule.
GetEffectiveSecurityHealthAnalyticsCustomModule(ctx context.Context, in *GetEffectiveSecurityHealthAnalyticsCustomModuleRequest, opts ...grpc.CallOption) (*EffectiveSecurityHealthAnalyticsCustomModule, error)
// Returns a list of all SecurityHealthAnalyticsCustomModules for the given
// parent. This includes resident modules defined at the scope of the parent,
// and inherited modules, inherited from CRM ancestors (no descendants).
ListSecurityHealthAnalyticsCustomModules(ctx context.Context, in *ListSecurityHealthAnalyticsCustomModulesRequest, opts ...grpc.CallOption) (*ListSecurityHealthAnalyticsCustomModulesResponse, error)
// Returns a list of all resident SecurityHealthAnalyticsCustomModules under
// the given CRM parent and all of the parent's CRM descendants.
ListDescendantSecurityHealthAnalyticsCustomModules(ctx context.Context, in *ListDescendantSecurityHealthAnalyticsCustomModulesRequest, opts ...grpc.CallOption) (*ListDescendantSecurityHealthAnalyticsCustomModulesResponse, error)
// Retrieves a SecurityHealthAnalyticsCustomModule.
GetSecurityHealthAnalyticsCustomModule(ctx context.Context, in *GetSecurityHealthAnalyticsCustomModuleRequest, opts ...grpc.CallOption) (*SecurityHealthAnalyticsCustomModule, error)
// Creates a resident SecurityHealthAnalyticsCustomModule at the scope of the
// given CRM parent, and also creates inherited
// SecurityHealthAnalyticsCustomModules for all CRM descendants of the given
// parent. These modules are enabled by default.
CreateSecurityHealthAnalyticsCustomModule(ctx context.Context, in *CreateSecurityHealthAnalyticsCustomModuleRequest, opts ...grpc.CallOption) (*SecurityHealthAnalyticsCustomModule, error)
// Updates the SecurityHealthAnalyticsCustomModule under the given name based
// on the given update mask. Updating the enablement state is supported on
// both resident and inherited modules (though resident modules cannot have an
// enablement state of "inherited"). Updating the display name and custom
// config of a module is supported on resident modules only.
UpdateSecurityHealthAnalyticsCustomModule(ctx context.Context, in *UpdateSecurityHealthAnalyticsCustomModuleRequest, opts ...grpc.CallOption) (*SecurityHealthAnalyticsCustomModule, error)
// Deletes the specified SecurityHealthAnalyticsCustomModule and all of its
// descendants in the CRM hierarchy. This method is only supported for
// resident custom modules.
DeleteSecurityHealthAnalyticsCustomModule(ctx context.Context, in *DeleteSecurityHealthAnalyticsCustomModuleRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
// Simulates a given SecurityHealthAnalyticsCustomModule and Resource.
SimulateSecurityHealthAnalyticsCustomModule(ctx context.Context, in *SimulateSecurityHealthAnalyticsCustomModuleRequest, opts ...grpc.CallOption) (*SimulateSecurityHealthAnalyticsCustomModuleResponse, error)
// Lists all effective Event Threat Detection custom modules for the
// given parent. This includes resident modules defined at the scope of the
// parent along with modules inherited from its ancestors.
ListEffectiveEventThreatDetectionCustomModules(ctx context.Context, in *ListEffectiveEventThreatDetectionCustomModulesRequest, opts ...grpc.CallOption) (*ListEffectiveEventThreatDetectionCustomModulesResponse, error)
// Gets an effective ETD custom module. Retrieves the effective module at the
// given level. The difference between an EffectiveCustomModule and a
// CustomModule is that the fields for an EffectiveCustomModule are computed
// from ancestors if needed. For example, the enablement_state for a
// CustomModule can be either ENABLED, DISABLED, or INHERITED. Where as the
// enablement_state for an EffectiveCustomModule is always computed to ENABLED
// or DISABLED (the effective enablement_state).
GetEffectiveEventThreatDetectionCustomModule(ctx context.Context, in *GetEffectiveEventThreatDetectionCustomModuleRequest, opts ...grpc.CallOption) (*EffectiveEventThreatDetectionCustomModule, error)
// Lists all Event Threat Detection custom modules for the given
// Resource Manager parent. This includes resident modules defined at the
// scope of the parent along with modules inherited from ancestors.
ListEventThreatDetectionCustomModules(ctx context.Context, in *ListEventThreatDetectionCustomModulesRequest, opts ...grpc.CallOption) (*ListEventThreatDetectionCustomModulesResponse, error)
// Lists all resident Event Threat Detection custom modules under the
// given Resource Manager parent and its descendants.
ListDescendantEventThreatDetectionCustomModules(ctx context.Context, in *ListDescendantEventThreatDetectionCustomModulesRequest, opts ...grpc.CallOption) (*ListDescendantEventThreatDetectionCustomModulesResponse, error)
// Gets an Event Threat Detection custom module.
GetEventThreatDetectionCustomModule(ctx context.Context, in *GetEventThreatDetectionCustomModuleRequest, opts ...grpc.CallOption) (*EventThreatDetectionCustomModule, error)
// Creates a resident Event Threat Detection custom module at the scope of the
// given Resource Manager parent, and also creates inherited custom modules
// for all descendants of the given parent. These modules are enabled by
// default.
CreateEventThreatDetectionCustomModule(ctx context.Context, in *CreateEventThreatDetectionCustomModuleRequest, opts ...grpc.CallOption) (*EventThreatDetectionCustomModule, error)
// Updates the Event Threat Detection custom module with the given name based
// on the given update mask. Updating the enablement state is supported for
// both resident and inherited modules (though resident modules cannot have an
// enablement state of "inherited"). Updating the display name or
// configuration of a module is supported for resident modules only. The type
// of a module cannot be changed.
UpdateEventThreatDetectionCustomModule(ctx context.Context, in *UpdateEventThreatDetectionCustomModuleRequest, opts ...grpc.CallOption) (*EventThreatDetectionCustomModule, error)
// Deletes the specified Event Threat Detection custom module and all of its
// descendants in the Resource Manager hierarchy. This method is only
// supported for resident custom modules.
DeleteEventThreatDetectionCustomModule(ctx context.Context, in *DeleteEventThreatDetectionCustomModuleRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
// Validates the given Event Threat Detection custom module.
ValidateEventThreatDetectionCustomModule(ctx context.Context, in *ValidateEventThreatDetectionCustomModuleRequest, opts ...grpc.CallOption) (*ValidateEventThreatDetectionCustomModuleResponse, error)
}
type securityCenterManagementClient struct {
cc grpc.ClientConnInterface
}
func NewSecurityCenterManagementClient(cc grpc.ClientConnInterface) SecurityCenterManagementClient {
return &securityCenterManagementClient{cc}
}
func (c *securityCenterManagementClient) ListEffectiveSecurityHealthAnalyticsCustomModules(ctx context.Context, in *ListEffectiveSecurityHealthAnalyticsCustomModulesRequest, opts ...grpc.CallOption) (*ListEffectiveSecurityHealthAnalyticsCustomModulesResponse, error) {
out := new(ListEffectiveSecurityHealthAnalyticsCustomModulesResponse)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ListEffectiveSecurityHealthAnalyticsCustomModules", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) GetEffectiveSecurityHealthAnalyticsCustomModule(ctx context.Context, in *GetEffectiveSecurityHealthAnalyticsCustomModuleRequest, opts ...grpc.CallOption) (*EffectiveSecurityHealthAnalyticsCustomModule, error) {
out := new(EffectiveSecurityHealthAnalyticsCustomModule)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/GetEffectiveSecurityHealthAnalyticsCustomModule", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) ListSecurityHealthAnalyticsCustomModules(ctx context.Context, in *ListSecurityHealthAnalyticsCustomModulesRequest, opts ...grpc.CallOption) (*ListSecurityHealthAnalyticsCustomModulesResponse, error) {
out := new(ListSecurityHealthAnalyticsCustomModulesResponse)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ListSecurityHealthAnalyticsCustomModules", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) ListDescendantSecurityHealthAnalyticsCustomModules(ctx context.Context, in *ListDescendantSecurityHealthAnalyticsCustomModulesRequest, opts ...grpc.CallOption) (*ListDescendantSecurityHealthAnalyticsCustomModulesResponse, error) {
out := new(ListDescendantSecurityHealthAnalyticsCustomModulesResponse)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ListDescendantSecurityHealthAnalyticsCustomModules", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) GetSecurityHealthAnalyticsCustomModule(ctx context.Context, in *GetSecurityHealthAnalyticsCustomModuleRequest, opts ...grpc.CallOption) (*SecurityHealthAnalyticsCustomModule, error) {
out := new(SecurityHealthAnalyticsCustomModule)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/GetSecurityHealthAnalyticsCustomModule", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) CreateSecurityHealthAnalyticsCustomModule(ctx context.Context, in *CreateSecurityHealthAnalyticsCustomModuleRequest, opts ...grpc.CallOption) (*SecurityHealthAnalyticsCustomModule, error) {
out := new(SecurityHealthAnalyticsCustomModule)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/CreateSecurityHealthAnalyticsCustomModule", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) UpdateSecurityHealthAnalyticsCustomModule(ctx context.Context, in *UpdateSecurityHealthAnalyticsCustomModuleRequest, opts ...grpc.CallOption) (*SecurityHealthAnalyticsCustomModule, error) {
out := new(SecurityHealthAnalyticsCustomModule)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/UpdateSecurityHealthAnalyticsCustomModule", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) DeleteSecurityHealthAnalyticsCustomModule(ctx context.Context, in *DeleteSecurityHealthAnalyticsCustomModuleRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/DeleteSecurityHealthAnalyticsCustomModule", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) SimulateSecurityHealthAnalyticsCustomModule(ctx context.Context, in *SimulateSecurityHealthAnalyticsCustomModuleRequest, opts ...grpc.CallOption) (*SimulateSecurityHealthAnalyticsCustomModuleResponse, error) {
out := new(SimulateSecurityHealthAnalyticsCustomModuleResponse)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/SimulateSecurityHealthAnalyticsCustomModule", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) ListEffectiveEventThreatDetectionCustomModules(ctx context.Context, in *ListEffectiveEventThreatDetectionCustomModulesRequest, opts ...grpc.CallOption) (*ListEffectiveEventThreatDetectionCustomModulesResponse, error) {
out := new(ListEffectiveEventThreatDetectionCustomModulesResponse)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ListEffectiveEventThreatDetectionCustomModules", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) GetEffectiveEventThreatDetectionCustomModule(ctx context.Context, in *GetEffectiveEventThreatDetectionCustomModuleRequest, opts ...grpc.CallOption) (*EffectiveEventThreatDetectionCustomModule, error) {
out := new(EffectiveEventThreatDetectionCustomModule)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/GetEffectiveEventThreatDetectionCustomModule", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) ListEventThreatDetectionCustomModules(ctx context.Context, in *ListEventThreatDetectionCustomModulesRequest, opts ...grpc.CallOption) (*ListEventThreatDetectionCustomModulesResponse, error) {
out := new(ListEventThreatDetectionCustomModulesResponse)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ListEventThreatDetectionCustomModules", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) ListDescendantEventThreatDetectionCustomModules(ctx context.Context, in *ListDescendantEventThreatDetectionCustomModulesRequest, opts ...grpc.CallOption) (*ListDescendantEventThreatDetectionCustomModulesResponse, error) {
out := new(ListDescendantEventThreatDetectionCustomModulesResponse)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ListDescendantEventThreatDetectionCustomModules", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) GetEventThreatDetectionCustomModule(ctx context.Context, in *GetEventThreatDetectionCustomModuleRequest, opts ...grpc.CallOption) (*EventThreatDetectionCustomModule, error) {
out := new(EventThreatDetectionCustomModule)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/GetEventThreatDetectionCustomModule", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) CreateEventThreatDetectionCustomModule(ctx context.Context, in *CreateEventThreatDetectionCustomModuleRequest, opts ...grpc.CallOption) (*EventThreatDetectionCustomModule, error) {
out := new(EventThreatDetectionCustomModule)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/CreateEventThreatDetectionCustomModule", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) UpdateEventThreatDetectionCustomModule(ctx context.Context, in *UpdateEventThreatDetectionCustomModuleRequest, opts ...grpc.CallOption) (*EventThreatDetectionCustomModule, error) {
out := new(EventThreatDetectionCustomModule)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/UpdateEventThreatDetectionCustomModule", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) DeleteEventThreatDetectionCustomModule(ctx context.Context, in *DeleteEventThreatDetectionCustomModuleRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/DeleteEventThreatDetectionCustomModule", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *securityCenterManagementClient) ValidateEventThreatDetectionCustomModule(ctx context.Context, in *ValidateEventThreatDetectionCustomModuleRequest, opts ...grpc.CallOption) (*ValidateEventThreatDetectionCustomModuleResponse, error) {
out := new(ValidateEventThreatDetectionCustomModuleResponse)
err := c.cc.Invoke(ctx, "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ValidateEventThreatDetectionCustomModule", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// SecurityCenterManagementServer is the server API for SecurityCenterManagement service.
type SecurityCenterManagementServer interface {
// Returns a list of all EffectiveSecurityHealthAnalyticsCustomModules for the
// given parent. This includes resident modules defined at the scope of the
// parent, and inherited modules, inherited from CRM ancestors (no
// descendants).
ListEffectiveSecurityHealthAnalyticsCustomModules(context.Context, *ListEffectiveSecurityHealthAnalyticsCustomModulesRequest) (*ListEffectiveSecurityHealthAnalyticsCustomModulesResponse, error)
// Gets details of a single EffectiveSecurityHealthAnalyticsCustomModule.
GetEffectiveSecurityHealthAnalyticsCustomModule(context.Context, *GetEffectiveSecurityHealthAnalyticsCustomModuleRequest) (*EffectiveSecurityHealthAnalyticsCustomModule, error)
// Returns a list of all SecurityHealthAnalyticsCustomModules for the given
// parent. This includes resident modules defined at the scope of the parent,
// and inherited modules, inherited from CRM ancestors (no descendants).
ListSecurityHealthAnalyticsCustomModules(context.Context, *ListSecurityHealthAnalyticsCustomModulesRequest) (*ListSecurityHealthAnalyticsCustomModulesResponse, error)
// Returns a list of all resident SecurityHealthAnalyticsCustomModules under
// the given CRM parent and all of the parent's CRM descendants.
ListDescendantSecurityHealthAnalyticsCustomModules(context.Context, *ListDescendantSecurityHealthAnalyticsCustomModulesRequest) (*ListDescendantSecurityHealthAnalyticsCustomModulesResponse, error)
// Retrieves a SecurityHealthAnalyticsCustomModule.
GetSecurityHealthAnalyticsCustomModule(context.Context, *GetSecurityHealthAnalyticsCustomModuleRequest) (*SecurityHealthAnalyticsCustomModule, error)
// Creates a resident SecurityHealthAnalyticsCustomModule at the scope of the
// given CRM parent, and also creates inherited
// SecurityHealthAnalyticsCustomModules for all CRM descendants of the given
// parent. These modules are enabled by default.
CreateSecurityHealthAnalyticsCustomModule(context.Context, *CreateSecurityHealthAnalyticsCustomModuleRequest) (*SecurityHealthAnalyticsCustomModule, error)
// Updates the SecurityHealthAnalyticsCustomModule under the given name based
// on the given update mask. Updating the enablement state is supported on
// both resident and inherited modules (though resident modules cannot have an
// enablement state of "inherited"). Updating the display name and custom
// config of a module is supported on resident modules only.
UpdateSecurityHealthAnalyticsCustomModule(context.Context, *UpdateSecurityHealthAnalyticsCustomModuleRequest) (*SecurityHealthAnalyticsCustomModule, error)
// Deletes the specified SecurityHealthAnalyticsCustomModule and all of its
// descendants in the CRM hierarchy. This method is only supported for
// resident custom modules.
DeleteSecurityHealthAnalyticsCustomModule(context.Context, *DeleteSecurityHealthAnalyticsCustomModuleRequest) (*emptypb.Empty, error)
// Simulates a given SecurityHealthAnalyticsCustomModule and Resource.
SimulateSecurityHealthAnalyticsCustomModule(context.Context, *SimulateSecurityHealthAnalyticsCustomModuleRequest) (*SimulateSecurityHealthAnalyticsCustomModuleResponse, error)
// Lists all effective Event Threat Detection custom modules for the
// given parent. This includes resident modules defined at the scope of the
// parent along with modules inherited from its ancestors.
ListEffectiveEventThreatDetectionCustomModules(context.Context, *ListEffectiveEventThreatDetectionCustomModulesRequest) (*ListEffectiveEventThreatDetectionCustomModulesResponse, error)
// Gets an effective ETD custom module. Retrieves the effective module at the
// given level. The difference between an EffectiveCustomModule and a
// CustomModule is that the fields for an EffectiveCustomModule are computed
// from ancestors if needed. For example, the enablement_state for a
// CustomModule can be either ENABLED, DISABLED, or INHERITED. Where as the
// enablement_state for an EffectiveCustomModule is always computed to ENABLED
// or DISABLED (the effective enablement_state).
GetEffectiveEventThreatDetectionCustomModule(context.Context, *GetEffectiveEventThreatDetectionCustomModuleRequest) (*EffectiveEventThreatDetectionCustomModule, error)
// Lists all Event Threat Detection custom modules for the given
// Resource Manager parent. This includes resident modules defined at the
// scope of the parent along with modules inherited from ancestors.
ListEventThreatDetectionCustomModules(context.Context, *ListEventThreatDetectionCustomModulesRequest) (*ListEventThreatDetectionCustomModulesResponse, error)
// Lists all resident Event Threat Detection custom modules under the
// given Resource Manager parent and its descendants.
ListDescendantEventThreatDetectionCustomModules(context.Context, *ListDescendantEventThreatDetectionCustomModulesRequest) (*ListDescendantEventThreatDetectionCustomModulesResponse, error)
// Gets an Event Threat Detection custom module.
GetEventThreatDetectionCustomModule(context.Context, *GetEventThreatDetectionCustomModuleRequest) (*EventThreatDetectionCustomModule, error)
// Creates a resident Event Threat Detection custom module at the scope of the
// given Resource Manager parent, and also creates inherited custom modules
// for all descendants of the given parent. These modules are enabled by
// default.
CreateEventThreatDetectionCustomModule(context.Context, *CreateEventThreatDetectionCustomModuleRequest) (*EventThreatDetectionCustomModule, error)
// Updates the Event Threat Detection custom module with the given name based
// on the given update mask. Updating the enablement state is supported for
// both resident and inherited modules (though resident modules cannot have an
// enablement state of "inherited"). Updating the display name or
// configuration of a module is supported for resident modules only. The type
// of a module cannot be changed.
UpdateEventThreatDetectionCustomModule(context.Context, *UpdateEventThreatDetectionCustomModuleRequest) (*EventThreatDetectionCustomModule, error)
// Deletes the specified Event Threat Detection custom module and all of its
// descendants in the Resource Manager hierarchy. This method is only
// supported for resident custom modules.
DeleteEventThreatDetectionCustomModule(context.Context, *DeleteEventThreatDetectionCustomModuleRequest) (*emptypb.Empty, error)
// Validates the given Event Threat Detection custom module.
ValidateEventThreatDetectionCustomModule(context.Context, *ValidateEventThreatDetectionCustomModuleRequest) (*ValidateEventThreatDetectionCustomModuleResponse, error)
}
// UnimplementedSecurityCenterManagementServer can be embedded to have forward compatible implementations.
type UnimplementedSecurityCenterManagementServer struct {
}
func (*UnimplementedSecurityCenterManagementServer) ListEffectiveSecurityHealthAnalyticsCustomModules(context.Context, *ListEffectiveSecurityHealthAnalyticsCustomModulesRequest) (*ListEffectiveSecurityHealthAnalyticsCustomModulesResponse, error) {
return nil, status1.Errorf(codes.Unimplemented, "method ListEffectiveSecurityHealthAnalyticsCustomModules not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) GetEffectiveSecurityHealthAnalyticsCustomModule(context.Context, *GetEffectiveSecurityHealthAnalyticsCustomModuleRequest) (*EffectiveSecurityHealthAnalyticsCustomModule, error) {
return nil, status1.Errorf(codes.Unimplemented, "method GetEffectiveSecurityHealthAnalyticsCustomModule not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) ListSecurityHealthAnalyticsCustomModules(context.Context, *ListSecurityHealthAnalyticsCustomModulesRequest) (*ListSecurityHealthAnalyticsCustomModulesResponse, error) {
return nil, status1.Errorf(codes.Unimplemented, "method ListSecurityHealthAnalyticsCustomModules not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) ListDescendantSecurityHealthAnalyticsCustomModules(context.Context, *ListDescendantSecurityHealthAnalyticsCustomModulesRequest) (*ListDescendantSecurityHealthAnalyticsCustomModulesResponse, error) {
return nil, status1.Errorf(codes.Unimplemented, "method ListDescendantSecurityHealthAnalyticsCustomModules not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) GetSecurityHealthAnalyticsCustomModule(context.Context, *GetSecurityHealthAnalyticsCustomModuleRequest) (*SecurityHealthAnalyticsCustomModule, error) {
return nil, status1.Errorf(codes.Unimplemented, "method GetSecurityHealthAnalyticsCustomModule not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) CreateSecurityHealthAnalyticsCustomModule(context.Context, *CreateSecurityHealthAnalyticsCustomModuleRequest) (*SecurityHealthAnalyticsCustomModule, error) {
return nil, status1.Errorf(codes.Unimplemented, "method CreateSecurityHealthAnalyticsCustomModule not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) UpdateSecurityHealthAnalyticsCustomModule(context.Context, *UpdateSecurityHealthAnalyticsCustomModuleRequest) (*SecurityHealthAnalyticsCustomModule, error) {
return nil, status1.Errorf(codes.Unimplemented, "method UpdateSecurityHealthAnalyticsCustomModule not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) DeleteSecurityHealthAnalyticsCustomModule(context.Context, *DeleteSecurityHealthAnalyticsCustomModuleRequest) (*emptypb.Empty, error) {
return nil, status1.Errorf(codes.Unimplemented, "method DeleteSecurityHealthAnalyticsCustomModule not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) SimulateSecurityHealthAnalyticsCustomModule(context.Context, *SimulateSecurityHealthAnalyticsCustomModuleRequest) (*SimulateSecurityHealthAnalyticsCustomModuleResponse, error) {
return nil, status1.Errorf(codes.Unimplemented, "method SimulateSecurityHealthAnalyticsCustomModule not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) ListEffectiveEventThreatDetectionCustomModules(context.Context, *ListEffectiveEventThreatDetectionCustomModulesRequest) (*ListEffectiveEventThreatDetectionCustomModulesResponse, error) {
return nil, status1.Errorf(codes.Unimplemented, "method ListEffectiveEventThreatDetectionCustomModules not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) GetEffectiveEventThreatDetectionCustomModule(context.Context, *GetEffectiveEventThreatDetectionCustomModuleRequest) (*EffectiveEventThreatDetectionCustomModule, error) {
return nil, status1.Errorf(codes.Unimplemented, "method GetEffectiveEventThreatDetectionCustomModule not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) ListEventThreatDetectionCustomModules(context.Context, *ListEventThreatDetectionCustomModulesRequest) (*ListEventThreatDetectionCustomModulesResponse, error) {
return nil, status1.Errorf(codes.Unimplemented, "method ListEventThreatDetectionCustomModules not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) ListDescendantEventThreatDetectionCustomModules(context.Context, *ListDescendantEventThreatDetectionCustomModulesRequest) (*ListDescendantEventThreatDetectionCustomModulesResponse, error) {
return nil, status1.Errorf(codes.Unimplemented, "method ListDescendantEventThreatDetectionCustomModules not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) GetEventThreatDetectionCustomModule(context.Context, *GetEventThreatDetectionCustomModuleRequest) (*EventThreatDetectionCustomModule, error) {
return nil, status1.Errorf(codes.Unimplemented, "method GetEventThreatDetectionCustomModule not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) CreateEventThreatDetectionCustomModule(context.Context, *CreateEventThreatDetectionCustomModuleRequest) (*EventThreatDetectionCustomModule, error) {
return nil, status1.Errorf(codes.Unimplemented, "method CreateEventThreatDetectionCustomModule not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) UpdateEventThreatDetectionCustomModule(context.Context, *UpdateEventThreatDetectionCustomModuleRequest) (*EventThreatDetectionCustomModule, error) {
return nil, status1.Errorf(codes.Unimplemented, "method UpdateEventThreatDetectionCustomModule not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) DeleteEventThreatDetectionCustomModule(context.Context, *DeleteEventThreatDetectionCustomModuleRequest) (*emptypb.Empty, error) {
return nil, status1.Errorf(codes.Unimplemented, "method DeleteEventThreatDetectionCustomModule not implemented")
}
func (*UnimplementedSecurityCenterManagementServer) ValidateEventThreatDetectionCustomModule(context.Context, *ValidateEventThreatDetectionCustomModuleRequest) (*ValidateEventThreatDetectionCustomModuleResponse, error) {
return nil, status1.Errorf(codes.Unimplemented, "method ValidateEventThreatDetectionCustomModule not implemented")
}
func RegisterSecurityCenterManagementServer(s *grpc.Server, srv SecurityCenterManagementServer) {
s.RegisterService(&_SecurityCenterManagement_serviceDesc, srv)
}
func _SecurityCenterManagement_ListEffectiveSecurityHealthAnalyticsCustomModules_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListEffectiveSecurityHealthAnalyticsCustomModulesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).ListEffectiveSecurityHealthAnalyticsCustomModules(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ListEffectiveSecurityHealthAnalyticsCustomModules",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).ListEffectiveSecurityHealthAnalyticsCustomModules(ctx, req.(*ListEffectiveSecurityHealthAnalyticsCustomModulesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_GetEffectiveSecurityHealthAnalyticsCustomModule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetEffectiveSecurityHealthAnalyticsCustomModuleRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).GetEffectiveSecurityHealthAnalyticsCustomModule(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/GetEffectiveSecurityHealthAnalyticsCustomModule",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).GetEffectiveSecurityHealthAnalyticsCustomModule(ctx, req.(*GetEffectiveSecurityHealthAnalyticsCustomModuleRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_ListSecurityHealthAnalyticsCustomModules_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListSecurityHealthAnalyticsCustomModulesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).ListSecurityHealthAnalyticsCustomModules(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ListSecurityHealthAnalyticsCustomModules",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).ListSecurityHealthAnalyticsCustomModules(ctx, req.(*ListSecurityHealthAnalyticsCustomModulesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_ListDescendantSecurityHealthAnalyticsCustomModules_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListDescendantSecurityHealthAnalyticsCustomModulesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).ListDescendantSecurityHealthAnalyticsCustomModules(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ListDescendantSecurityHealthAnalyticsCustomModules",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).ListDescendantSecurityHealthAnalyticsCustomModules(ctx, req.(*ListDescendantSecurityHealthAnalyticsCustomModulesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_GetSecurityHealthAnalyticsCustomModule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetSecurityHealthAnalyticsCustomModuleRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).GetSecurityHealthAnalyticsCustomModule(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/GetSecurityHealthAnalyticsCustomModule",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).GetSecurityHealthAnalyticsCustomModule(ctx, req.(*GetSecurityHealthAnalyticsCustomModuleRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_CreateSecurityHealthAnalyticsCustomModule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateSecurityHealthAnalyticsCustomModuleRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).CreateSecurityHealthAnalyticsCustomModule(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/CreateSecurityHealthAnalyticsCustomModule",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).CreateSecurityHealthAnalyticsCustomModule(ctx, req.(*CreateSecurityHealthAnalyticsCustomModuleRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_UpdateSecurityHealthAnalyticsCustomModule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateSecurityHealthAnalyticsCustomModuleRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).UpdateSecurityHealthAnalyticsCustomModule(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/UpdateSecurityHealthAnalyticsCustomModule",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).UpdateSecurityHealthAnalyticsCustomModule(ctx, req.(*UpdateSecurityHealthAnalyticsCustomModuleRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_DeleteSecurityHealthAnalyticsCustomModule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteSecurityHealthAnalyticsCustomModuleRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).DeleteSecurityHealthAnalyticsCustomModule(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/DeleteSecurityHealthAnalyticsCustomModule",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).DeleteSecurityHealthAnalyticsCustomModule(ctx, req.(*DeleteSecurityHealthAnalyticsCustomModuleRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_SimulateSecurityHealthAnalyticsCustomModule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SimulateSecurityHealthAnalyticsCustomModuleRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).SimulateSecurityHealthAnalyticsCustomModule(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/SimulateSecurityHealthAnalyticsCustomModule",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).SimulateSecurityHealthAnalyticsCustomModule(ctx, req.(*SimulateSecurityHealthAnalyticsCustomModuleRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_ListEffectiveEventThreatDetectionCustomModules_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListEffectiveEventThreatDetectionCustomModulesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).ListEffectiveEventThreatDetectionCustomModules(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ListEffectiveEventThreatDetectionCustomModules",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).ListEffectiveEventThreatDetectionCustomModules(ctx, req.(*ListEffectiveEventThreatDetectionCustomModulesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_GetEffectiveEventThreatDetectionCustomModule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetEffectiveEventThreatDetectionCustomModuleRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).GetEffectiveEventThreatDetectionCustomModule(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/GetEffectiveEventThreatDetectionCustomModule",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).GetEffectiveEventThreatDetectionCustomModule(ctx, req.(*GetEffectiveEventThreatDetectionCustomModuleRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_ListEventThreatDetectionCustomModules_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListEventThreatDetectionCustomModulesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).ListEventThreatDetectionCustomModules(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ListEventThreatDetectionCustomModules",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).ListEventThreatDetectionCustomModules(ctx, req.(*ListEventThreatDetectionCustomModulesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_ListDescendantEventThreatDetectionCustomModules_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListDescendantEventThreatDetectionCustomModulesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).ListDescendantEventThreatDetectionCustomModules(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ListDescendantEventThreatDetectionCustomModules",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).ListDescendantEventThreatDetectionCustomModules(ctx, req.(*ListDescendantEventThreatDetectionCustomModulesRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_GetEventThreatDetectionCustomModule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetEventThreatDetectionCustomModuleRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).GetEventThreatDetectionCustomModule(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/GetEventThreatDetectionCustomModule",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).GetEventThreatDetectionCustomModule(ctx, req.(*GetEventThreatDetectionCustomModuleRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_CreateEventThreatDetectionCustomModule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateEventThreatDetectionCustomModuleRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).CreateEventThreatDetectionCustomModule(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/CreateEventThreatDetectionCustomModule",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).CreateEventThreatDetectionCustomModule(ctx, req.(*CreateEventThreatDetectionCustomModuleRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_UpdateEventThreatDetectionCustomModule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateEventThreatDetectionCustomModuleRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).UpdateEventThreatDetectionCustomModule(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/UpdateEventThreatDetectionCustomModule",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).UpdateEventThreatDetectionCustomModule(ctx, req.(*UpdateEventThreatDetectionCustomModuleRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_DeleteEventThreatDetectionCustomModule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteEventThreatDetectionCustomModuleRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).DeleteEventThreatDetectionCustomModule(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/DeleteEventThreatDetectionCustomModule",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).DeleteEventThreatDetectionCustomModule(ctx, req.(*DeleteEventThreatDetectionCustomModuleRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SecurityCenterManagement_ValidateEventThreatDetectionCustomModule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ValidateEventThreatDetectionCustomModuleRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SecurityCenterManagementServer).ValidateEventThreatDetectionCustomModule(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/google.cloud.securitycentermanagement.v1.SecurityCenterManagement/ValidateEventThreatDetectionCustomModule",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SecurityCenterManagementServer).ValidateEventThreatDetectionCustomModule(ctx, req.(*ValidateEventThreatDetectionCustomModuleRequest))
}
return interceptor(ctx, in, info, handler)
}
var _SecurityCenterManagement_serviceDesc = grpc.ServiceDesc{
ServiceName: "google.cloud.securitycentermanagement.v1.SecurityCenterManagement",
HandlerType: (*SecurityCenterManagementServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "ListEffectiveSecurityHealthAnalyticsCustomModules",
Handler: _SecurityCenterManagement_ListEffectiveSecurityHealthAnalyticsCustomModules_Handler,
},
{
MethodName: "GetEffectiveSecurityHealthAnalyticsCustomModule",
Handler: _SecurityCenterManagement_GetEffectiveSecurityHealthAnalyticsCustomModule_Handler,
},
{
MethodName: "ListSecurityHealthAnalyticsCustomModules",
Handler: _SecurityCenterManagement_ListSecurityHealthAnalyticsCustomModules_Handler,
},
{
MethodName: "ListDescendantSecurityHealthAnalyticsCustomModules",
Handler: _SecurityCenterManagement_ListDescendantSecurityHealthAnalyticsCustomModules_Handler,
},
{
MethodName: "GetSecurityHealthAnalyticsCustomModule",
Handler: _SecurityCenterManagement_GetSecurityHealthAnalyticsCustomModule_Handler,
},
{
MethodName: "CreateSecurityHealthAnalyticsCustomModule",
Handler: _SecurityCenterManagement_CreateSecurityHealthAnalyticsCustomModule_Handler,
},
{
MethodName: "UpdateSecurityHealthAnalyticsCustomModule",
Handler: _SecurityCenterManagement_UpdateSecurityHealthAnalyticsCustomModule_Handler,
},
{
MethodName: "DeleteSecurityHealthAnalyticsCustomModule",
Handler: _SecurityCenterManagement_DeleteSecurityHealthAnalyticsCustomModule_Handler,
},
{
MethodName: "SimulateSecurityHealthAnalyticsCustomModule",
Handler: _SecurityCenterManagement_SimulateSecurityHealthAnalyticsCustomModule_Handler,
},
{
MethodName: "ListEffectiveEventThreatDetectionCustomModules",
Handler: _SecurityCenterManagement_ListEffectiveEventThreatDetectionCustomModules_Handler,
},
{
MethodName: "GetEffectiveEventThreatDetectionCustomModule",
Handler: _SecurityCenterManagement_GetEffectiveEventThreatDetectionCustomModule_Handler,
},
{
MethodName: "ListEventThreatDetectionCustomModules",
Handler: _SecurityCenterManagement_ListEventThreatDetectionCustomModules_Handler,
},
{
MethodName: "ListDescendantEventThreatDetectionCustomModules",
Handler: _SecurityCenterManagement_ListDescendantEventThreatDetectionCustomModules_Handler,
},
{
MethodName: "GetEventThreatDetectionCustomModule",
Handler: _SecurityCenterManagement_GetEventThreatDetectionCustomModule_Handler,
},
{
MethodName: "CreateEventThreatDetectionCustomModule",
Handler: _SecurityCenterManagement_CreateEventThreatDetectionCustomModule_Handler,
},
{
MethodName: "UpdateEventThreatDetectionCustomModule",
Handler: _SecurityCenterManagement_UpdateEventThreatDetectionCustomModule_Handler,
},
{
MethodName: "DeleteEventThreatDetectionCustomModule",
Handler: _SecurityCenterManagement_DeleteEventThreatDetectionCustomModule_Handler,
},
{
MethodName: "ValidateEventThreatDetectionCustomModule",
Handler: _SecurityCenterManagement_ValidateEventThreatDetectionCustomModule_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "google/cloud/securitycentermanagement/v1/security_center_management.proto",
}