diff --git a/api/gen/proto/go/usageevents/v1/usageevents.pb.go b/api/gen/proto/go/usageevents/v1/usageevents.pb.go index baa599d6cb1..1be6d06806f 100644 --- a/api/gen/proto/go/usageevents/v1/usageevents.pb.go +++ b/api/gen/proto/go/usageevents/v1/usageevents.pb.go @@ -327,6 +327,9 @@ const ( IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_GITHUB_REPO_ACCESS IntegrationEnrollKind = 27 IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_MACHINE_ID_ARGOCD IntegrationEnrollKind = 28 IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_MACHINE_ID_GITHUB_ACTIONS_KUBERNETES IntegrationEnrollKind = 29 + IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_AWS_CLOUD IntegrationEnrollKind = 30 + IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_AZURE_CLOUD IntegrationEnrollKind = 31 + IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_GOOGLE_CLOUD IntegrationEnrollKind = 32 ) var IntegrationEnrollKind_name = map[int32]string{ @@ -360,6 +363,9 @@ var IntegrationEnrollKind_name = map[int32]string{ 27: "INTEGRATION_ENROLL_KIND_GITHUB_REPO_ACCESS", 28: "INTEGRATION_ENROLL_KIND_MACHINE_ID_ARGOCD", 29: "INTEGRATION_ENROLL_KIND_MACHINE_ID_GITHUB_ACTIONS_KUBERNETES", + 30: "INTEGRATION_ENROLL_KIND_AWS_CLOUD", + 31: "INTEGRATION_ENROLL_KIND_AZURE_CLOUD", + 32: "INTEGRATION_ENROLL_KIND_GOOGLE_CLOUD", } var IntegrationEnrollKind_value = map[string]int32{ @@ -393,6 +399,9 @@ var IntegrationEnrollKind_value = map[string]int32{ "INTEGRATION_ENROLL_KIND_GITHUB_REPO_ACCESS": 27, "INTEGRATION_ENROLL_KIND_MACHINE_ID_ARGOCD": 28, "INTEGRATION_ENROLL_KIND_MACHINE_ID_GITHUB_ACTIONS_KUBERNETES": 29, + "INTEGRATION_ENROLL_KIND_AWS_CLOUD": 30, + "INTEGRATION_ENROLL_KIND_AZURE_CLOUD": 31, + "INTEGRATION_ENROLL_KIND_GOOGLE_CLOUD": 32, } func (x IntegrationEnrollKind) String() string { @@ -424,6 +433,8 @@ const ( IntegrationEnrollStep_INTEGRATION_ENROLL_STEP_MWIGHAK8S_CONFIGURE_ACCESS IntegrationEnrollStep = 10 IntegrationEnrollStep_INTEGRATION_ENROLL_STEP_MWIGHAK8S_SETUP_WORKFLOW IntegrationEnrollStep = 11 IntegrationEnrollStep_INTEGRATION_ENROLL_STEP_MWIGHAK8S_WELCOME IntegrationEnrollStep = 12 + // General integration setup steps. + IntegrationEnrollStep_INTEGRATION_ENROLL_STEP_VERIFY_INTEGRATION IntegrationEnrollStep = 13 ) var IntegrationEnrollStep_name = map[int32]string{ @@ -440,6 +451,7 @@ var IntegrationEnrollStep_name = map[int32]string{ 10: "INTEGRATION_ENROLL_STEP_MWIGHAK8S_CONFIGURE_ACCESS", 11: "INTEGRATION_ENROLL_STEP_MWIGHAK8S_SETUP_WORKFLOW", 12: "INTEGRATION_ENROLL_STEP_MWIGHAK8S_WELCOME", + 13: "INTEGRATION_ENROLL_STEP_VERIFY_INTEGRATION", } var IntegrationEnrollStep_value = map[string]int32{ @@ -456,6 +468,7 @@ var IntegrationEnrollStep_value = map[string]int32{ "INTEGRATION_ENROLL_STEP_MWIGHAK8S_CONFIGURE_ACCESS": 10, "INTEGRATION_ENROLL_STEP_MWIGHAK8S_SETUP_WORKFLOW": 11, "INTEGRATION_ENROLL_STEP_MWIGHAK8S_WELCOME": 12, + "INTEGRATION_ENROLL_STEP_VERIFY_INTEGRATION": 13, } func (x IntegrationEnrollStep) String() string { @@ -4649,10 +4662,13 @@ type ResourceCreateEvent struct { // if resource_origin == "cloud". CloudProvider string `protobuf:"bytes,3,opt,name=cloud_provider,json=cloudProvider,proto3" json:"cloud_provider,omitempty"` // database contains additional database information if resource_type == "db". - Database *DiscoveredDatabaseMetadata `protobuf:"bytes,4,opt,name=database,proto3" json:"database,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Database *DiscoveredDatabaseMetadata `protobuf:"bytes,4,opt,name=database,proto3" json:"database,omitempty"` + // discovery_config_name is the name of the DiscoveryConfig that triggered discovery. + // Empty for teleport.yaml matcher configuration. + DiscoveryConfigName string `protobuf:"bytes,5,opt,name=discovery_config_name,json=discoveryConfigName,proto3" json:"discovery_config_name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ResourceCreateEvent) Reset() { *m = ResourceCreateEvent{} } @@ -4716,6 +4732,13 @@ func (m *ResourceCreateEvent) GetDatabase() *DiscoveredDatabaseMetadata { return nil } +func (m *ResourceCreateEvent) GetDiscoveryConfigName() string { + if m != nil { + return m.DiscoveryConfigName + } + return "" +} + // DiscoveredDatabaseMetadata contains additional database information. type DiscoveredDatabaseMetadata struct { // database type. @@ -6323,414 +6346,417 @@ func init() { } var fileDescriptor_94cf2ca1c69fd564 = []byte{ - // 6507 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x5b, 0x6c, 0x1c, 0xc9, - 0x75, 0xe8, 0xf4, 0x90, 0x94, 0xc8, 0x92, 0x44, 0xb5, 0x5a, 0x12, 0x35, 0x22, 0x45, 0x3d, 0x46, - 0x6f, 0xee, 0x2e, 0xb5, 0xd2, 0x6a, 0xbd, 0xda, 0x87, 0xbd, 0xdb, 0xec, 0x69, 0xce, 0xb4, 0x38, - 0x33, 0x3d, 0x5b, 0xdd, 0x23, 0x9a, 0x6b, 0x18, 0x75, 0x9b, 0xd3, 0x45, 0xb2, 0x2f, 0x87, 0xd3, - 0xe3, 0xee, 0x1e, 0x72, 0x89, 0x0b, 0xc3, 0xbe, 0xbe, 0xf7, 0x1a, 0x17, 0xd7, 0xf6, 0xb5, 0x03, - 0x24, 0x46, 0x80, 0x0d, 0xf2, 0x40, 0x1e, 0x08, 0xe0, 0x00, 0xf9, 0x32, 0xfc, 0x95, 0x8f, 0xfc, - 0x05, 0x48, 0x3e, 0x02, 0x04, 0xc8, 0x47, 0xf2, 0x13, 0xf8, 0x2b, 0x7f, 0xfe, 0x4a, 0x80, 0xc4, - 0x79, 0xa1, 0x1e, 0x3d, 0xd3, 0x33, 0xd3, 0x3d, 0xdd, 0xda, 0x68, 0x63, 0x43, 0xfb, 0xc7, 0xa9, - 0x3a, 0xaf, 0x3a, 0x75, 0xea, 0x9c, 0x53, 0x55, 0xa7, 0x9a, 0xe0, 0x7e, 0x80, 0xdb, 0xb8, 0xeb, - 0x7a, 0xc1, 0x83, 0x9e, 0x6f, 0xed, 0x62, 0x7c, 0x88, 0x3b, 0x81, 0xff, 0xe0, 0xf0, 0x61, 0xf4, - 0xe7, 0x6a, 0xd7, 0x73, 0x03, 0x57, 0xba, 0x14, 0x82, 0xae, 0x46, 0xfb, 0x0e, 0x1f, 0x2e, 0xde, - 0xed, 0xd3, 0xb0, 0x5a, 0x2d, 0xec, 0xfb, 0x6d, 0xc7, 0x0f, 0x08, 0x89, 0xc1, 0x2f, 0x46, 0xa1, - 0xb8, 0x02, 0xa4, 0xa6, 0xb6, 0x66, 0x75, 0x3a, 0xd8, 0x53, 0xda, 0x4e, 0x6b, 0x5f, 0x25, 0x24, - 0xa4, 0x0b, 0x60, 0xc6, 0x6a, 0x63, 0x2f, 0x28, 0x08, 0xd7, 0x85, 0x7b, 0x73, 0x90, 0xfd, 0x28, - 0xae, 0x83, 0x7b, 0x4d, 0x4d, 0xef, 0x6c, 0xbb, 0x96, 0x67, 0x2b, 0xee, 0x41, 0xb7, 0x8d, 0x03, - 0x5c, 0x76, 0x4d, 0xb7, 0x64, 0xf9, 0x7b, 0xac, 0x71, 0x40, 0x61, 0x11, 0xcc, 0xf6, 0x7c, 0xec, - 0x75, 0xac, 0x03, 0xcc, 0x89, 0xf4, 0x7f, 0x17, 0x6f, 0x83, 0x9b, 0x7d, 0x3a, 0xb2, 0x6d, 0xaf, - 0x3b, 0x9e, 0x1f, 0x40, 0xec, 0xbb, 0x3d, 0xaf, 0x85, 0x07, 0x24, 0x8a, 0x2b, 0x11, 0x76, 0xa3, - 0x60, 0x55, 0x2b, 0x88, 0x0a, 0x5c, 0x7c, 0x1f, 0xdc, 0xe8, 0xc3, 0x1a, 0x38, 0x50, 0x3c, 0x6c, - 0xe3, 0x4e, 0xe0, 0x58, 0x6d, 0xa3, 0xb7, 0x7d, 0xe0, 0x04, 0xe9, 0x32, 0x45, 0x09, 0x7c, 0xd8, - 0xc3, 0x7e, 0xe0, 0xb8, 0x9d, 0x8e, 0xe5, 0x78, 0x38, 0x2b, 0x81, 0xaf, 0x83, 0xdb, 0x7d, 0x02, - 0x10, 0xef, 0x3a, 0x3e, 0x11, 0x70, 0xcf, 0x6a, 0xb7, 0x71, 0x67, 0x37, 0x2b, 0x11, 0xe9, 0x32, - 0x98, 0x3d, 0xd8, 0xb1, 0x50, 0x70, 0xdc, 0xc5, 0x85, 0x3c, 0xed, 0x3b, 0x79, 0xb0, 0x63, 0x99, - 0xc7, 0x5d, 0x2c, 0x2d, 0x03, 0xd0, 0x76, 0x77, 0x9d, 0x0e, 0xda, 0x69, 0xbb, 0x47, 0x85, 0x29, - 0xda, 0x39, 0x47, 0x5b, 0xd6, 0xdb, 0xee, 0x11, 0x93, 0x1f, 0xe2, 0x96, 0x7b, 0x88, 0xbd, 0x63, - 0xc5, 0xb5, 0xb1, 0xaf, 0xb8, 0x9d, 0xc0, 0xe9, 0xf4, 0x70, 0xc6, 0x49, 0x79, 0x17, 0x2c, 0x8f, - 0x11, 0xe8, 0x1e, 0x67, 0x44, 0x7e, 0x0f, 0x5c, 0x1d, 0x41, 0x6e, 0x78, 0x4e, 0x27, 0xc8, 0x88, - 0x5d, 0x04, 0x62, 0xc9, 0xf1, 0x29, 0x72, 0x0d, 0x07, 0x96, 0x6d, 0x05, 0x96, 0x34, 0x0f, 0xf2, - 0x8e, 0xcd, 0x21, 0xf3, 0x8e, 0x5d, 0xb4, 0x40, 0x21, 0x84, 0x09, 0x6d, 0xa0, 0x0f, 0xab, 0x82, - 0x59, 0x8f, 0xb7, 0x51, 0x8c, 0xf9, 0x47, 0xf7, 0x57, 0x13, 0x16, 0xc6, 0xea, 0x28, 0x11, 0xd8, - 0x47, 0x2d, 0xee, 0x03, 0x29, 0xec, 0x35, 0x02, 0xdc, 0x35, 0x02, 0x2b, 0xe8, 0xf9, 0xd2, 0xfb, - 0xe0, 0x84, 0x4f, 0xff, 0xe2, 0xa4, 0xef, 0xa6, 0x92, 0x66, 0x88, 0x90, 0xa3, 0x91, 0xb5, 0x84, - 0x3d, 0xcf, 0xf5, 0xf8, 0x84, 0xb2, 0x1f, 0xc5, 0xdf, 0x13, 0xc0, 0x42, 0x53, 0x8b, 0xa0, 0x78, - 0x01, 0xb6, 0x99, 0xaa, 0x54, 0x30, 0x7b, 0xc0, 0x87, 0x46, 0x79, 0x9e, 0xca, 0x30, 0x9c, 0x50, - 0x17, 0xb0, 0x8f, 0x2a, 0x29, 0x7d, 0xc1, 0xf3, 0x94, 0xc8, 0x2b, 0x19, 0x04, 0x0f, 0x47, 0x1d, - 0x0a, 0x5f, 0xfc, 0x57, 0x01, 0x5c, 0x1f, 0x88, 0x19, 0x2a, 0xcd, 0xc0, 0x6d, 0xdc, 0x22, 0x2b, - 0xe4, 0x85, 0x0a, 0x5c, 0x8b, 0x4c, 0x23, 0x13, 0xf9, 0x61, 0xe6, 0x69, 0x1c, 0x90, 0x0b, 0x49, - 0x44, 0xc6, 0x3f, 0xf5, 0xe9, 0xc7, 0xff, 0x7f, 0xf2, 0xc4, 0x09, 0x85, 0x00, 0x5a, 0x27, 0xc0, - 0xbb, 0x9e, 0x45, 0x46, 0x2e, 0x6f, 0x1a, 0xba, 0x56, 0x52, 0x14, 0xb7, 0xd3, 0xc1, 0xad, 0xe0, - 0xa5, 0xd7, 0xc3, 0x4f, 0xf2, 0x51, 0x3b, 0x28, 0x59, 0x81, 0xb5, 0x6d, 0xf9, 0x18, 0x96, 0x0c, - 0xb5, 0xe3, 0xb9, 0xed, 0xf6, 0xcb, 0x3e, 0x7e, 0xe9, 0x09, 0x28, 0xf8, 0xd4, 0xe8, 0xb1, 0x8d, - 0x42, 0xca, 0x3e, 0x6a, 0xb9, 0xbd, 0x4e, 0x50, 0x98, 0xbe, 0x2e, 0xdc, 0x9b, 0x82, 0x0b, 0x61, - 0x7f, 0x28, 0x8a, 0xaf, 0x90, 0xde, 0xe2, 0x3f, 0x09, 0xe0, 0xca, 0x40, 0x73, 0x1b, 0xbd, 0x6d, - 0xac, 0x6e, 0x7c, 0x4e, 0xb4, 0x56, 0x7c, 0x0a, 0x0a, 0x4d, 0x4d, 0xb1, 0xda, 0x6d, 0xd3, 0x95, - 0xa9, 0xbf, 0x88, 0x04, 0x84, 0x55, 0x30, 0xd5, 0xe2, 0x23, 0x9e, 0x7f, 0x74, 0x25, 0x91, 0xba, - 0x62, 0xca, 0x90, 0x00, 0x16, 0xbf, 0x37, 0x13, 0xd5, 0x63, 0x09, 0x77, 0xdb, 0xee, 0xb1, 0x81, - 0xbd, 0x43, 0xa7, 0x85, 0x5f, 0x7a, 0xeb, 0xdb, 0x05, 0x67, 0x6c, 0x3a, 0x60, 0x74, 0x80, 0x83, - 0x3d, 0xd7, 0xa6, 0x26, 0x37, 0xff, 0x68, 0x2d, 0x91, 0xd6, 0x24, 0x45, 0xad, 0xb2, 0xa6, 0x1a, - 0xa5, 0x04, 0x4f, 0xdb, 0x91, 0x5f, 0x92, 0x05, 0x4e, 0x71, 0x46, 0x34, 0x05, 0x99, 0xa1, 0x6c, - 0x3e, 0xf8, 0xcf, 0xb0, 0x21, 0xb9, 0x0b, 0x04, 0x76, 0xff, 0xef, 0x22, 0x02, 0xa7, 0xa3, 0x02, - 0x48, 0xcb, 0xe0, 0x72, 0x49, 0x6d, 0x54, 0xf5, 0x2d, 0x54, 0x53, 0xcd, 0x8a, 0x5e, 0x42, 0xcd, - 0xba, 0xd1, 0x50, 0x15, 0x6d, 0x5d, 0x53, 0x4b, 0x62, 0x4e, 0x5a, 0x00, 0xd2, 0x70, 0xb7, 0xdc, - 0x34, 0x75, 0x51, 0x90, 0x0a, 0xe0, 0xc2, 0x70, 0x7b, 0x4d, 0xae, 0x37, 0xe5, 0xaa, 0x98, 0x2f, - 0x62, 0x00, 0x06, 0xac, 0xa5, 0x25, 0x70, 0x89, 0xc3, 0x99, 0x5b, 0x0d, 0x75, 0x84, 0xf8, 0x55, - 0xb0, 0x18, 0xed, 0xd4, 0xea, 0x86, 0x29, 0x57, 0xab, 0xc8, 0x50, 0xa0, 0xd6, 0x30, 0x45, 0x41, - 0x5a, 0x04, 0x0b, 0xd1, 0x7e, 0xb9, 0x26, 0x7f, 0xa4, 0xd7, 0x91, 0xaa, 0x18, 0x62, 0xbe, 0xf8, - 0xc9, 0x34, 0xb8, 0x35, 0x18, 0xbf, 0xe2, 0x61, 0x2b, 0xc0, 0xe1, 0xaf, 0x63, 0xc5, 0xed, 0xec, - 0x38, 0xbb, 0x2f, 0xbd, 0x5d, 0xba, 0xe0, 0x4c, 0x8b, 0x8e, 0x74, 0xd8, 0x2e, 0x9f, 0x66, 0x30, - 0x98, 0x64, 0x85, 0xad, 0xb2, 0xbf, 0x43, 0xfb, 0x6c, 0x45, 0x7e, 0x15, 0xff, 0x40, 0x00, 0xa7, - 0xa3, 0xdd, 0xc4, 0x7a, 0x14, 0xbd, 0xbe, 0xae, 0x95, 0xe3, 0xad, 0x67, 0xac, 0x5b, 0xde, 0x34, - 0x90, 0xaa, 0x3c, 0x42, 0x86, 0x51, 0x13, 0x05, 0x32, 0xff, 0xf1, 0xdd, 0xaa, 0xa6, 0xa8, 0x62, - 0x3e, 0x1e, 0x1d, 0x96, 0x0c, 0x6a, 0x02, 0x53, 0xd2, 0x65, 0x70, 0x31, 0x06, 0x7d, 0xc3, 0x10, - 0xa7, 0x8b, 0xff, 0x22, 0x80, 0x6b, 0x31, 0xf1, 0x92, 0xef, 0x0b, 0x5e, 0x7a, 0xc7, 0xff, 0x3f, - 0xf3, 0xd1, 0xc5, 0x11, 0x0e, 0x9f, 0xcd, 0x5c, 0xcf, 0xc3, 0x35, 0xb3, 0x6a, 0xbc, 0xf4, 0x3a, - 0xf8, 0xff, 0x79, 0xf0, 0x30, 0xea, 0x20, 0xfd, 0xfd, 0xc0, 0xed, 0x92, 0x30, 0x78, 0x88, 0x4b, - 0x8e, 0x87, 0x5b, 0x81, 0xeb, 0x1d, 0x9b, 0xae, 0xdb, 0xf6, 0xb5, 0x8e, 0x1f, 0x58, 0x9f, 0x83, - 0x6c, 0xe0, 0x3b, 0x79, 0xb0, 0x9a, 0xa6, 0x90, 0xbe, 0x89, 0xbc, 0xf4, 0xda, 0xf8, 0xa3, 0x3c, - 0xb8, 0x33, 0xd0, 0x86, 0xdc, 0x0b, 0xdc, 0xf0, 0xef, 0x48, 0x0a, 0xf9, 0xd2, 0x47, 0x90, 0xbb, - 0xe0, 0x6c, 0x7c, 0x3a, 0x3d, 0xef, 0x0d, 0xa7, 0xd1, 0xdf, 0xcc, 0x83, 0x9b, 0x03, 0x75, 0xa9, - 0xca, 0x23, 0xba, 0x6a, 0x3a, 0x9f, 0xa7, 0xbd, 0xe8, 0x3f, 0x0a, 0xe0, 0xf2, 0x68, 0xc6, 0x45, - 0x02, 0xd5, 0xe7, 0x6c, 0xe0, 0x2c, 0x73, 0xa8, 0xbb, 0xf6, 0xcb, 0xef, 0x23, 0x7e, 0x2e, 0x80, - 0xab, 0xa3, 0x03, 0x97, 0xbb, 0x5d, 0x92, 0x66, 0x7f, 0x0e, 0x92, 0x88, 0x6f, 0xe7, 0xc1, 0xfd, - 0x09, 0x49, 0x84, 0x26, 0xd7, 0x1a, 0x6e, 0xdb, 0x69, 0x1d, 0xbf, 0xf4, 0x8a, 0xf8, 0x77, 0x01, - 0x14, 0x07, 0x8a, 0x68, 0x78, 0x4e, 0xa7, 0xe5, 0x74, 0xad, 0xb6, 0xff, 0xf9, 0x09, 0x96, 0xff, - 0x2c, 0x80, 0xe5, 0x81, 0x06, 0x4c, 0xec, 0x07, 0xfc, 0xe0, 0xed, 0xf3, 0xe0, 0xf7, 0xff, 0x41, - 0x00, 0x85, 0x88, 0x17, 0xe0, 0x17, 0x2f, 0xf6, 0x4b, 0x3f, 0xee, 0x25, 0xe2, 0xf5, 0xb9, 0xb7, - 0xc7, 0x47, 0xd0, 0x6d, 0x47, 0x2f, 0x87, 0xfe, 0x82, 0x5a, 0xc4, 0x50, 0xaf, 0x61, 0x1d, 0x46, - 0x2f, 0x3b, 0x6e, 0x82, 0x33, 0x24, 0x43, 0xb0, 0x2d, 0xcf, 0x46, 0x3d, 0x1f, 0xb3, 0xcb, 0x84, - 0x59, 0x78, 0x3a, 0x6c, 0x6c, 0xfa, 0xd8, 0x96, 0x96, 0xc0, 0xdc, 0xb1, 0x75, 0xd0, 0x66, 0x00, - 0x79, 0x0a, 0x30, 0x4b, 0x1a, 0x68, 0xe7, 0x1d, 0x70, 0xf6, 0xc0, 0xb5, 0x31, 0x3a, 0xda, 0xc3, - 0x1d, 0xe4, 0x5b, 0x87, 0xd8, 0xe6, 0xf7, 0x2e, 0x67, 0x48, 0xf3, 0xe6, 0x1e, 0xee, 0x10, 0x96, - 0xb6, 0x24, 0x83, 0xe5, 0x1d, 0x07, 0xb7, 0x6d, 0x1f, 0x1d, 0x39, 0xc1, 0x1e, 0x6a, 0xb9, 0x9d, - 0x43, 0xec, 0xf9, 0x8e, 0xdb, 0x41, 0xf4, 0xac, 0xdf, 0x2f, 0x4c, 0x5f, 0x9f, 0xba, 0x37, 0x07, - 0x17, 0x19, 0xd0, 0xa6, 0x13, 0xec, 0x29, 0x7d, 0x10, 0x95, 0x42, 0x14, 0x6f, 0x90, 0xed, 0xe2, - 0xf0, 0x58, 0x49, 0x72, 0xd3, 0x8e, 0x8c, 0xf8, 0x55, 0xb0, 0x32, 0x02, 0xf2, 0xcc, 0xc1, 0x47, - 0x25, 0xb7, 0xd5, 0x3b, 0xc0, 0x9d, 0xc0, 0x1a, 0x3e, 0x5e, 0x2b, 0xfe, 0x58, 0x00, 0x17, 0x65, - 0xdf, 0x77, 0xc8, 0x4a, 0xa1, 0x06, 0xd3, 0x5f, 0x29, 0x77, 0xc1, 0x59, 0x2e, 0x21, 0xc5, 0x41, - 0xfd, 0x6b, 0x96, 0xf9, 0x68, 0xb3, 0x66, 0x4b, 0x37, 0xc0, 0xe9, 0xc0, 0x0d, 0xac, 0x36, 0x0a, - 0xdc, 0x7d, 0xdc, 0x61, 0xd7, 0x08, 0x53, 0xf0, 0x14, 0x6d, 0x33, 0x69, 0x13, 0xd1, 0x71, 0xd7, - 0x73, 0x0f, 0xba, 0x41, 0x08, 0x33, 0x45, 0x61, 0x4e, 0xb3, 0x46, 0x0e, 0xf4, 0x0a, 0x38, 0xd7, - 0xea, 0xcb, 0x10, 0x02, 0xb2, 0x2c, 0x4f, 0x1c, 0x74, 0x30, 0xe0, 0xe2, 0x5f, 0x09, 0xe0, 0x02, - 0x93, 0x5b, 0xfd, 0x18, 0xb7, 0x7a, 0x9f, 0x42, 0xec, 0x65, 0x00, 0x3a, 0x64, 0xd6, 0x58, 0x36, - 0xc9, 0x84, 0x9e, 0x23, 0x2d, 0x34, 0x91, 0x1c, 0x1b, 0xd5, 0x54, 0x86, 0x51, 0x4d, 0x67, 0x1d, - 0xd5, 0x4c, 0xc2, 0xa8, 0x9e, 0x80, 0x45, 0x36, 0xa8, 0x3a, 0x3e, 0x52, 0x22, 0xe2, 0xf6, 0xef, - 0xc6, 0x5a, 0x56, 0x80, 0x77, 0x5d, 0xef, 0x38, 0xbc, 0x1b, 0x0b, 0x7f, 0x17, 0xff, 0x58, 0x00, - 0xe7, 0x19, 0xaa, 0x4c, 0xaf, 0x6e, 0x21, 0xfe, 0x5a, 0x0f, 0xfb, 0xd4, 0xba, 0xc3, 0xd5, 0xc6, - 0xce, 0xea, 0x18, 0xe2, 0xe9, 0xb0, 0x91, 0x1e, 0x7e, 0xfd, 0x42, 0x66, 0xf0, 0x13, 0x01, 0x9c, - 0x0e, 0x25, 0x26, 0xcd, 0xd2, 0x02, 0x38, 0x61, 0xd1, 0xbf, 0xb8, 0x8c, 0xfc, 0xd7, 0x2f, 0x46, - 0xba, 0x5b, 0x40, 0x62, 0x8a, 0xac, 0x3a, 0x7e, 0x90, 0x78, 0xdb, 0xf8, 0x0d, 0x50, 0x88, 0x42, - 0x1d, 0x6c, 0x47, 0x6e, 0x26, 0x25, 0x30, 0x1d, 0xb9, 0xc5, 0xa4, 0x7f, 0x4b, 0x3a, 0x38, 0x7b, - 0x40, 0xa1, 0xfc, 0x3d, 0xa7, 0x8b, 0xf6, 0x9d, 0x0e, 0x73, 0x26, 0xf3, 0x8f, 0xee, 0x0c, 0x1c, - 0x5f, 0xe4, 0xea, 0xfd, 0xf0, 0xe1, 0x6a, 0xad, 0x0f, 0xbe, 0xe1, 0x74, 0x6c, 0x38, 0x7f, 0x30, - 0xf4, 0xbb, 0xf8, 0x15, 0x20, 0x0e, 0x04, 0x60, 0x8b, 0x5e, 0x2a, 0x8f, 0xb9, 0xfa, 0x64, 0xb7, - 0x3a, 0x3e, 0xc6, 0x81, 0xb3, 0x1f, 0x26, 0xde, 0xec, 0xda, 0x9f, 0x1d, 0xf1, 0x12, 0x26, 0xa1, - 0xea, 0xc5, 0x11, 0xff, 0x13, 0x01, 0x2c, 0x8c, 0x4e, 0xcc, 0x0b, 0xd6, 0x8e, 0xf4, 0x51, 0x38, - 0x97, 0xa8, 0x4f, 0x2f, 0x2d, 0x22, 0x26, 0xd9, 0x4a, 0x38, 0xad, 0xb5, 0x49, 0xf2, 0xbf, 0xe0, - 0x09, 0xf8, 0x2f, 0x97, 0xff, 0x05, 0xcf, 0xf1, 0x67, 0x2a, 0xff, 0x6f, 0xe5, 0xa3, 0xf2, 0x97, - 0x3d, 0xab, 0x13, 0xf8, 0xa6, 0xdb, 0xf4, 0xb1, 0x27, 0xad, 0x82, 0xf3, 0x34, 0x62, 0x20, 0xcf, - 0x6d, 0x63, 0x1f, 0xed, 0x92, 0x3e, 0x9e, 0x34, 0xcc, 0xc0, 0x73, 0xb4, 0x8b, 0xc4, 0x5c, 0xbf, - 0xcc, 0x3a, 0x48, 0xd0, 0x67, 0xf0, 0x4e, 0x67, 0x0f, 0x7b, 0x0e, 0xbd, 0x18, 0x1c, 0xc2, 0x9c, - 0xa2, 0x98, 0x8b, 0x14, 0x48, 0x0b, 0x61, 0x86, 0x48, 0xbc, 0x0e, 0x2e, 0x30, 0x12, 0x81, 0x67, - 0x39, 0xc1, 0x00, 0x33, 0x4f, 0x31, 0x25, 0xda, 0x67, 0xd2, 0xae, 0x10, 0x43, 0x01, 0x57, 0x47, - 0x99, 0x8e, 0xe0, 0x4e, 0x53, 0xdc, 0xa5, 0x61, 0xae, 0xc3, 0x44, 0x96, 0xc0, 0x5c, 0xcf, 0xc7, - 0x1e, 0xa2, 0x5e, 0x6c, 0x66, 0x50, 0x8b, 0x51, 0xb7, 0x0e, 0x70, 0xf1, 0x87, 0x53, 0x51, 0x0d, - 0x41, 0x7c, 0xe8, 0xe0, 0xa3, 0x17, 0xbd, 0xc2, 0x9e, 0x80, 0xcb, 0xb6, 0x75, 0xec, 0xa3, 0xae, - 0xe5, 0x07, 0xa8, 0x83, 0x3f, 0x0e, 0x90, 0xd5, 0xb3, 0x9d, 0x00, 0x91, 0x75, 0xc0, 0x07, 0x7f, - 0x91, 0x00, 0x34, 0x2c, 0x12, 0x30, 0x3f, 0x0e, 0x64, 0xd2, 0x5b, 0x22, 0x22, 0xac, 0x83, 0x6b, - 0x11, 0x3f, 0xeb, 0xe1, 0xaf, 0xf5, 0x1c, 0x0f, 0x93, 0xf4, 0xc7, 0x47, 0xad, 0x3d, 0xab, 0xb3, - 0xcb, 0xd5, 0x3e, 0x0b, 0x97, 0x07, 0x60, 0x30, 0x02, 0xa5, 0x30, 0x20, 0xe9, 0x09, 0x28, 0x78, - 0x74, 0x68, 0x68, 0x87, 0x10, 0xc1, 0x9d, 0xd6, 0x71, 0x9f, 0xc0, 0x34, 0x25, 0xb0, 0xc0, 0xfa, - 0xd7, 0xc3, 0xee, 0x10, 0xf3, 0x3d, 0xb0, 0xc4, 0x31, 0x6d, 0xeb, 0x18, 0xb9, 0x3b, 0xe8, 0xc0, - 0xed, 0x90, 0x9c, 0x8f, 0x23, 0xcf, 0x50, 0xe4, 0x4b, 0x0c, 0xa4, 0x64, 0x1d, 0xeb, 0x3b, 0x35, - 0xd2, 0x1f, 0x62, 0xbf, 0x0d, 0x2e, 0x77, 0x7a, 0xd4, 0xb6, 0xdd, 0x1d, 0xe4, 0xe1, 0x03, 0xf7, - 0x10, 0xdb, 0x88, 0x8b, 0x5a, 0x38, 0x41, 0x47, 0xbe, 0xc0, 0x00, 0xf4, 0x1d, 0xc8, 0xba, 0x79, - 0xa0, 0x28, 0xfe, 0xaa, 0x30, 0x3e, 0x31, 0x2f, 0x7a, 0xe9, 0x3d, 0x04, 0x17, 0x59, 0x94, 0x42, - 0x24, 0x4c, 0x21, 0x3e, 0x50, 0xc7, 0xe6, 0xa5, 0x2b, 0x92, 0x35, 0xc2, 0x5f, 0xb3, 0x8b, 0xdf, - 0x15, 0xc0, 0xe5, 0x48, 0x59, 0x04, 0xbb, 0xd8, 0x4e, 0x8a, 0xab, 0xd2, 0x1a, 0x98, 0x8e, 0x04, - 0xc7, 0xd5, 0x44, 0x29, 0xc7, 0x28, 0xd2, 0x20, 0x49, 0x71, 0x87, 0xcd, 0x77, 0x6a, 0xc4, 0x7c, - 0x5d, 0xb2, 0x2b, 0x18, 0xc3, 0xa6, 0xe5, 0x35, 0x2c, 0xd7, 0xaa, 0x8f, 0xe9, 0xea, 0x51, 0x76, - 0x29, 0x62, 0x22, 0x92, 0x07, 0xae, 0xc7, 0x30, 0x0c, 0x37, 0x69, 0x9f, 0x0d, 0xcf, 0xaf, 0x83, - 0xa5, 0x98, 0x21, 0xf6, 0x2b, 0x96, 0x2a, 0x60, 0xba, 0xe5, 0xda, 0x61, 0x29, 0xd4, 0xe3, 0xec, - 0xac, 0x18, 0xbe, 0xe2, 0xda, 0x18, 0x52, 0x0a, 0x09, 0xa5, 0x4b, 0xdf, 0xcc, 0x83, 0x2b, 0xb1, - 0x4a, 0xc6, 0xdd, 0xcf, 0x64, 0xbc, 0xc4, 0x6a, 0xfc, 0x00, 0x77, 0x9f, 0xdf, 0x6a, 0x88, 0x48, - 0x90, 0xe2, 0x4a, 0xd5, 0x91, 0x1d, 0xe9, 0xe3, 0xe7, 0xa3, 0x32, 0x7e, 0x34, 0x75, 0x33, 0x4e, - 0x05, 0xec, 0x44, 0x42, 0xef, 0xe2, 0xce, 0x2f, 0xaf, 0x26, 0x36, 0xc0, 0x49, 0x9f, 0xc9, 0x49, - 0x55, 0x31, 0x3f, 0x21, 0xae, 0x26, 0x0d, 0x10, 0x86, 0x14, 0x8a, 0xdf, 0xca, 0x83, 0xdb, 0x31, - 0x8a, 0x58, 0x27, 0x3b, 0xdd, 0xcf, 0x74, 0x11, 0xbc, 0x10, 0x55, 0xa8, 0x60, 0x86, 0xee, 0xc9, - 0xb9, 0x22, 0x1e, 0x64, 0x27, 0x42, 0x07, 0x08, 0x19, 0x76, 0xf1, 0xdf, 0x84, 0x04, 0x27, 0x40, - 0xf6, 0x9c, 0xdd, 0xe3, 0x5f, 0xde, 0xf1, 0xaf, 0x83, 0x69, 0xba, 0x77, 0x64, 0xc3, 0x7f, 0x0e, - 0x79, 0xc8, 0xd0, 0x68, 0x65, 0x07, 0xc5, 0x2f, 0xfe, 0xb9, 0x00, 0x6e, 0xc4, 0x28, 0xa0, 0xea, - 0x74, 0xf6, 0x23, 0x07, 0x32, 0xbf, 0x8c, 0x1a, 0x90, 0xc0, 0x74, 0xdb, 0xe9, 0xec, 0xf3, 0x38, - 0x42, 0xff, 0x2e, 0xfe, 0xad, 0x00, 0xce, 0xf7, 0xcb, 0x91, 0x69, 0xea, 0xd3, 0x3f, 0x50, 0x4a, - 0xdf, 0x72, 0x47, 0x2e, 0xb4, 0x90, 0xeb, 0x39, 0xbb, 0x4e, 0x87, 0x3b, 0xcf, 0xfe, 0x85, 0x96, - 0x4e, 0x5b, 0xa5, 0xdb, 0x60, 0xbe, 0xd5, 0x76, 0x7b, 0x36, 0xea, 0x7a, 0xee, 0xa1, 0x63, 0x63, - 0x2f, 0x3c, 0x5b, 0xa2, 0xad, 0x0d, 0xde, 0x28, 0xe9, 0x60, 0xd6, 0xe6, 0x27, 0xdf, 0x34, 0x33, - 0x39, 0xf5, 0xe8, 0x8d, 0xd4, 0xb3, 0x34, 0x6c, 0x87, 0x87, 0xe5, 0x03, 0xad, 0x85, 0x44, 0x8a, - 0xcf, 0xc0, 0x62, 0x32, 0x9c, 0x74, 0x09, 0x9c, 0xb4, 0xb7, 0xa3, 0xa3, 0x3b, 0x61, 0x6f, 0xd3, - 0x71, 0x5d, 0x03, 0xa7, 0xec, 0x6d, 0x44, 0x6b, 0xc6, 0x5b, 0x6e, 0x9b, 0x8f, 0x09, 0xd8, 0xdb, - 0x0d, 0xde, 0x52, 0xfc, 0x99, 0x00, 0x16, 0xd7, 0xb1, 0x15, 0xf4, 0x3c, 0x0c, 0x71, 0xcb, 0x3d, - 0x38, 0xc0, 0x1d, 0x3b, 0x72, 0xc6, 0x31, 0x14, 0xb5, 0x85, 0xe1, 0xa8, 0x2d, 0xbd, 0x03, 0x4e, - 0xee, 0x30, 0x54, 0x3e, 0x99, 0xd7, 0x13, 0xc7, 0x18, 0xb2, 0x08, 0x11, 0xa4, 0x8f, 0xc1, 0x32, - 0xff, 0x13, 0x79, 0x43, 0x7c, 0x51, 0xc4, 0xdf, 0x4f, 0x0a, 0x83, 0xb1, 0x42, 0x73, 0x7f, 0xbf, - 0xb4, 0x93, 0xdc, 0x59, 0x3c, 0x02, 0x17, 0x4c, 0xb9, 0xcc, 0x8e, 0xa9, 0xf0, 0x87, 0x3d, 0xec, - 0xf1, 0x95, 0x7e, 0x0d, 0xb0, 0x33, 0x0c, 0xd4, 0x71, 0x6d, 0xcc, 0xca, 0x86, 0xa7, 0x20, 0xa0, - 0x4d, 0x75, 0xd2, 0x32, 0x00, 0xc0, 0xf6, 0x2e, 0x0e, 0xcf, 0x3d, 0x18, 0x80, 0x4a, 0x5a, 0xa4, - 0x65, 0x00, 0x1c, 0x1f, 0xf9, 0x3d, 0x9a, 0x6e, 0xf1, 0x8c, 0x76, 0xce, 0xf1, 0x0d, 0xd6, 0x50, - 0xfc, 0xfb, 0x29, 0x70, 0x89, 0xe5, 0x71, 0x65, 0xcf, 0xea, 0xee, 0xc9, 0x9b, 0x86, 0xd1, 0xb2, - 0x3a, 0x61, 0x59, 0xdd, 0x79, 0x4e, 0xbb, 0xf5, 0x08, 0x39, 0xfc, 0x8e, 0x94, 0x09, 0x31, 0x0d, - 0xcf, 0x31, 0x1e, 0xad, 0xfe, 0xe5, 0x69, 0x44, 0x16, 0x32, 0x19, 0x4c, 0x96, 0x69, 0x2e, 0x0b, - 0xd9, 0x16, 0xf9, 0x83, 0x53, 0x9a, 0x5d, 0xcf, 0xed, 0x75, 0x99, 0x34, 0xd3, 0xfc, 0x94, 0xa6, - 0x4c, 0x9b, 0x06, 0x34, 0xe8, 0x06, 0x88, 0x9a, 0x69, 0x48, 0x83, 0xee, 0x77, 0x88, 0xad, 0x33, - 0x80, 0xae, 0xdb, 0x76, 0x5a, 0x0e, 0x66, 0x07, 0x65, 0xd3, 0xf0, 0x0c, 0x6d, 0x6d, 0xf0, 0x46, - 0xe9, 0x55, 0x20, 0x71, 0xd9, 0xf7, 0x7d, 0xd4, 0x6a, 0xf7, 0xfc, 0x20, 0x4c, 0x8b, 0xa7, 0xa1, - 0xc8, 0x44, 0xdf, 0xf7, 0x15, 0xde, 0x3e, 0x18, 0xa9, 0x67, 0xfb, 0x91, 0x91, 0x9e, 0x8c, 0x8c, - 0x14, 0xda, 0xfe, 0x60, 0xa4, 0xf7, 0x00, 0xa3, 0x81, 0xfc, 0x37, 0xd0, 0x76, 0xaf, 0xb5, 0x8f, - 0x03, 0xbf, 0x30, 0x4b, 0x81, 0x99, 0x70, 0xc6, 0x1b, 0x6b, 0xac, 0x95, 0xec, 0xcb, 0x38, 0xa4, - 0x75, 0xd0, 0xee, 0xaf, 0x4f, 0xbf, 0x30, 0x47, 0xa1, 0x99, 0x8c, 0x86, 0x75, 0xd0, 0x0e, 0x17, - 0x69, 0x04, 0xc3, 0x75, 0xec, 0x56, 0x04, 0x03, 0x44, 0x30, 0x74, 0xc7, 0x6e, 0x0d, 0x30, 0xfa, - 0x2a, 0xb1, 0x5a, 0x74, 0xaf, 0xe6, 0x17, 0x4e, 0x45, 0x54, 0x22, 0xf3, 0xc6, 0xe2, 0x0f, 0x05, - 0x70, 0xab, 0xa9, 0x45, 0x26, 0x5b, 0xf1, 0xdc, 0xa3, 0xce, 0x53, 0x7c, 0x84, 0xdb, 0x25, 0x67, - 0x67, 0xe7, 0x99, 0x83, 0x8f, 0xd8, 0xbc, 0x3f, 0x01, 0x05, 0x6b, 0x67, 0x67, 0xb8, 0x40, 0x15, - 0x45, 0x6a, 0xe2, 0xe7, 0xe0, 0x42, 0xd8, 0xdf, 0xaf, 0xe2, 0x66, 0x67, 0xf5, 0x8f, 0xc1, 0xc2, - 0x38, 0x66, 0xe4, 0x05, 0xc2, 0x85, 0x51, 0x3c, 0x5a, 0xc6, 0xb7, 0x0e, 0xae, 0x18, 0xb8, 0xd5, - 0xf3, 0x9c, 0xe0, 0x18, 0xd2, 0x65, 0x55, 0xc6, 0x01, 0xc4, 0x7e, 0xaf, 0xcd, 0xf3, 0xec, 0xb8, - 0x53, 0x32, 0x09, 0x4c, 0x93, 0x6d, 0x1d, 0xdf, 0xe2, 0xd1, 0xbf, 0x8b, 0x16, 0x38, 0xdf, 0x2f, - 0x02, 0x5b, 0xc7, 0x41, 0x6b, 0x8f, 0xa1, 0x8f, 0x7b, 0x47, 0x21, 0xce, 0x3b, 0x8e, 0xb9, 0xe4, - 0xfc, 0xb8, 0x4b, 0x2e, 0x7e, 0x5f, 0x00, 0x12, 0xb1, 0x65, 0xd3, 0xf2, 0xf7, 0xc9, 0xd2, 0xc5, - 0x7d, 0x8f, 0x14, 0x58, 0xfe, 0x7e, 0xd4, 0xd9, 0xcd, 0x92, 0x86, 0xf0, 0xb5, 0x85, 0xe3, 0xfb, - 0xbd, 0x21, 0xaa, 0x73, 0xb4, 0x85, 0x76, 0x5f, 0x00, 0x33, 0xc4, 0xbb, 0x84, 0xfb, 0x0f, 0xf6, - 0x83, 0xf8, 0xfe, 0xbe, 0x1d, 0x46, 0x8a, 0x19, 0x66, 0xe0, 0x7c, 0xbf, 0x99, 0x15, 0x33, 0xfc, - 0xc6, 0x07, 0xe0, 0x6c, 0x93, 0x78, 0x21, 0x2a, 0x89, 0xde, 0xc1, 0xfa, 0x8e, 0xd4, 0x04, 0x67, - 0x7b, 0x0e, 0xda, 0xa6, 0x2f, 0x71, 0x50, 0x8b, 0x44, 0xcd, 0xd4, 0xbd, 0xdc, 0xf8, 0xc3, 0x9d, - 0x4a, 0x0e, 0x9e, 0xe9, 0x39, 0x91, 0x56, 0xe9, 0x13, 0x01, 0xdc, 0xef, 0x39, 0xc8, 0x65, 0x0f, - 0x53, 0x10, 0x3f, 0x0f, 0xc5, 0x68, 0xd7, 0x45, 0x81, 0x8b, 0xec, 0xf0, 0xe5, 0x0e, 0xe7, 0xc8, - 0x72, 0x63, 0x79, 0x02, 0xc7, 0x6c, 0xcf, 0x7f, 0x2a, 0x39, 0x78, 0xb3, 0xe7, 0xa4, 0xc2, 0x4a, - 0xdf, 0x11, 0xc0, 0xcd, 0x88, 0x74, 0x96, 0x6d, 0xa3, 0x1d, 0xc7, 0xa3, 0x5b, 0x4f, 0x3e, 0xab, - 0x4c, 0x2e, 0x16, 0xf9, 0xde, 0x4b, 0x97, 0x2b, 0xf9, 0x39, 0x51, 0x25, 0x07, 0xaf, 0xf6, 0x45, - 0x8a, 0x05, 0x1b, 0xd5, 0x55, 0x8c, 0x34, 0x6d, 0x2b, 0xe8, 0xcf, 0xce, 0x4c, 0x56, 0x5d, 0xa5, - 0xbc, 0x5d, 0x1a, 0xd2, 0x55, 0x32, 0xac, 0xf4, 0xbf, 0x05, 0x70, 0x3d, 0x22, 0x9d, 0x8f, 0x03, - 0xd4, 0xea, 0x3f, 0x73, 0x42, 0x3e, 0x7d, 0x61, 0x44, 0x9d, 0xe5, 0xa9, 0x47, 0xef, 0xa4, 0x0b, - 0x95, 0xf4, 0x48, 0xaa, 0x92, 0x83, 0x57, 0xfa, 0xd2, 0xc4, 0x00, 0x49, 0x3f, 0x10, 0xc0, 0xad, - 0x88, 0x18, 0x1e, 0x2f, 0x69, 0x44, 0xad, 0xf0, 0xad, 0x53, 0x28, 0xca, 0x49, 0x2a, 0xca, 0x97, - 0xd2, 0x45, 0x99, 0xf4, 0x5a, 0xaa, 0x92, 0x83, 0xd7, 0xfb, 0xe2, 0x24, 0x00, 0x86, 0x9a, 0xf1, - 0xf8, 0xfb, 0x23, 0x44, 0xf6, 0xae, 0x64, 0x01, 0xb2, 0xf7, 0x4f, 0x7c, 0xba, 0x66, 0x53, 0x35, - 0x93, 0xf2, 0x7a, 0x8a, 0x69, 0x26, 0x19, 0x48, 0xfa, 0x18, 0x5c, 0x89, 0x93, 0xa2, 0x7b, 0xcc, - 0x25, 0x98, 0xa3, 0x12, 0x7c, 0x21, 0xbb, 0x04, 0xd1, 0xe7, 0x57, 0x95, 0x1c, 0x2c, 0x8c, 0x71, - 0xe7, 0x00, 0xd2, 0xff, 0x00, 0xcb, 0xe3, 0x9c, 0xbb, 0x9e, 0xd3, 0x09, 0x38, 0x6b, 0x40, 0x59, - 0xbf, 0x95, 0x95, 0xf5, 0xc8, 0xe3, 0xad, 0x4a, 0x0e, 0x5e, 0x1e, 0xe1, 0x3d, 0x80, 0x90, 0xda, - 0xe0, 0x72, 0xcf, 0x41, 0x36, 0x77, 0xe2, 0x24, 0xeb, 0xf2, 0x48, 0x28, 0xa1, 0xc4, 0x69, 0x50, - 0x3b, 0x35, 0x61, 0x63, 0x15, 0xff, 0x04, 0xaa, 0x92, 0x83, 0x0b, 0x3d, 0x27, 0xf6, 0x71, 0xd4, - 0x77, 0x98, 0xf9, 0xf5, 0xd9, 0x0d, 0x62, 0x5d, 0x58, 0x07, 0xc6, 0x39, 0x9f, 0xa6, 0x9c, 0xdf, - 0xce, 0xc0, 0x39, 0xfe, 0x55, 0x13, 0xb3, 0xbc, 0x94, 0x97, 0x4f, 0xdf, 0xa0, 0x86, 0xd7, 0x17, - 0x86, 0xd7, 0xce, 0xfb, 0xac, 0x0c, 0x9e, 0x0b, 0x72, 0x86, 0x0a, 0xf2, 0xe6, 0xa7, 0x2a, 0xa2, - 0x67, 0x36, 0x37, 0xe1, 0xd1, 0xc3, 0xff, 0x65, 0x0e, 0x74, 0x20, 0x01, 0x4f, 0xe8, 0x07, 0xeb, - 0x92, 0x09, 0x31, 0x4f, 0x85, 0x78, 0x92, 0x45, 0x88, 0xb8, 0x5a, 0xe5, 0x4a, 0x0e, 0x5e, 0x8b, - 0xc8, 0x11, 0x5b, 0xce, 0xfc, 0xeb, 0xcc, 0x7b, 0x8e, 0x8b, 0xd2, 0x0a, 0xcb, 0x54, 0xd0, 0x41, - 0xd0, 0xf6, 0xb9, 0x40, 0x67, 0xa9, 0x40, 0x5f, 0x7c, 0x0e, 0x81, 0xc6, 0xab, 0x87, 0x2b, 0x39, - 0x78, 0x6b, 0x5c, 0xaa, 0x01, 0x5c, 0xd0, 0xe6, 0x05, 0x94, 0x7f, 0x2a, 0x80, 0x27, 0xc3, 0xf3, - 0x44, 0x6b, 0x4f, 0x91, 0x45, 0x8b, 0x4f, 0x91, 0x1d, 0x56, 0x9f, 0xa2, 0xc0, 0x75, 0xdb, 0x3c, - 0x99, 0x6c, 0xb7, 0xb9, 0xa4, 0x22, 0x95, 0xf4, 0x69, 0xa6, 0xf9, 0xcb, 0x54, 0xe3, 0x5b, 0xc9, - 0xc1, 0x87, 0xd1, 0x49, 0xcd, 0x56, 0x18, 0xfc, 0x13, 0x01, 0x3c, 0xce, 0x34, 0x86, 0x81, 0xba, - 0x99, 0xfc, 0xe7, 0xa8, 0xfc, 0xe5, 0x4f, 0x2d, 0xff, 0x70, 0x95, 0x51, 0x25, 0x07, 0x57, 0xd3, - 0x84, 0x1f, 0xa9, 0x4b, 0xfa, 0x4d, 0x01, 0xbc, 0x12, 0x95, 0xdc, 0xea, 0x91, 0xcc, 0xa3, 0xbf, - 0x07, 0x8d, 0xbc, 0xa7, 0x62, 0x02, 0x4b, 0x54, 0xe0, 0xf7, 0x33, 0x08, 0x3c, 0xa9, 0x6a, 0xb6, - 0x92, 0x83, 0x77, 0x06, 0x82, 0x4e, 0xac, 0xaf, 0xfd, 0x43, 0x01, 0x3c, 0x48, 0xb1, 0x5c, 0xc7, - 0x3a, 0x60, 0x9b, 0x97, 0x63, 0x2e, 0xe4, 0x79, 0x2a, 0xe4, 0xda, 0xa7, 0xb1, 0xdf, 0xe1, 0xc2, - 0xb5, 0x4a, 0x0e, 0xde, 0x9f, 0x60, 0xc4, 0x9a, 0x75, 0x10, 0xad, 0x72, 0xfb, 0x15, 0x01, 0xdc, - 0x89, 0x8a, 0xda, 0xed, 0x17, 0x83, 0x8d, 0xcd, 0xfb, 0x05, 0x2a, 0xe1, 0xbb, 0x19, 0x24, 0x4c, - 0xaa, 0x28, 0xab, 0xe4, 0x60, 0x71, 0x20, 0x5a, 0x62, 0xdd, 0xd9, 0xb7, 0x04, 0x70, 0x23, 0x2a, - 0x53, 0x80, 0xfd, 0x80, 0x48, 0xd3, 0x19, 0xf2, 0xc7, 0x17, 0x53, 0xa3, 0xdf, 0x84, 0xf2, 0xae, - 0x4a, 0x0e, 0x2e, 0x0f, 0x24, 0x89, 0xab, 0xff, 0xf2, 0xc0, 0x52, 0x54, 0x86, 0x30, 0xcf, 0x0d, - 0xe3, 0xd0, 0x42, 0xca, 0x0d, 0x62, 0x52, 0x7d, 0x15, 0x0b, 0xbb, 0x09, 0xb5, 0x57, 0x6d, 0x50, - 0xe8, 0x39, 0x24, 0x09, 0xb3, 0x02, 0x8c, 0x3a, 0xf8, 0x88, 0xee, 0x7f, 0x79, 0xc4, 0xbd, 0x94, - 0x72, 0xc0, 0x95, 0x58, 0xd9, 0x54, 0xc9, 0xc1, 0x0b, 0x3d, 0x67, 0xbc, 0x53, 0x3a, 0xa6, 0x41, - 0x7e, 0x94, 0x9b, 0x6f, 0x1d, 0x86, 0x2c, 0x0b, 0xa9, 0x1a, 0x9e, 0x50, 0x2e, 0xc5, 0x06, 0x1a, - 0x0f, 0x20, 0x7d, 0x03, 0x5c, 0x8b, 0x1b, 0x28, 0xad, 0x50, 0xe2, 0xcc, 0x2f, 0xa7, 0x06, 0x98, - 0x89, 0xd5, 0x4d, 0x95, 0x1c, 0x5c, 0x1c, 0x1d, 0xf5, 0x00, 0x44, 0xfa, 0x1d, 0xe6, 0x42, 0x46, - 0x25, 0x60, 0xf7, 0x70, 0xd1, 0x0a, 0x28, 0x2e, 0xcd, 0x22, 0x95, 0x46, 0xc9, 0x2a, 0xcd, 0x84, - 0x42, 0xaa, 0x4a, 0x0e, 0xde, 0x1e, 0x11, 0x2c, 0x1e, 0x5a, 0xfa, 0x7d, 0x01, 0xac, 0x46, 0x4d, - 0xd0, 0x19, 0x1c, 0x3b, 0x22, 0xeb, 0xc8, 0x67, 0x47, 0x03, 0x7c, 0x59, 0x70, 0xab, 0x5c, 0x4a, - 0xdd, 0x42, 0x64, 0x7b, 0x79, 0x5c, 0xc9, 0xc1, 0x7b, 0x03, 0x2b, 0x8d, 0xc2, 0x1e, 0xf9, 0xba, - 0x63, 0xb7, 0x86, 0x5e, 0x29, 0x7f, 0x57, 0x00, 0xb7, 0xe3, 0x53, 0x06, 0xdb, 0x47, 0x98, 0x1e, - 0x90, 0x72, 0xf1, 0xae, 0x64, 0x4e, 0xa1, 0xe2, 0x1f, 0x04, 0x0f, 0xa7, 0x50, 0x7d, 0x18, 0xdb, - 0x8f, 0x3e, 0x7f, 0x0d, 0x98, 0x59, 0x93, 0x78, 0x1b, 0xb8, 0x88, 0x95, 0x06, 0xb1, 0x59, 0xe4, - 0x52, 0x2c, 0xa7, 0x2e, 0xdd, 0xf8, 0x17, 0xa6, 0xdc, 0xa2, 0xe3, 0x5f, 0x9f, 0x7e, 0x15, 0x9c, - 0xb3, 0x68, 0x8d, 0x12, 0x1a, 0x54, 0x08, 0x15, 0xae, 0x52, 0x4e, 0xc9, 0x07, 0xc9, 0xb1, 0xf5, - 0x74, 0x95, 0x1c, 0x14, 0xad, 0x91, 0x8e, 0xd0, 0x25, 0x46, 0x4d, 0x80, 0x6b, 0x96, 0xa6, 0xc7, - 0x7c, 0x64, 0xd7, 0x52, 0x17, 0xec, 0x84, 0x9b, 0x4c, 0xe6, 0x12, 0x27, 0x5d, 0x75, 0xf2, 0x54, - 0x39, 0x46, 0x88, 0xfe, 0x29, 0x00, 0x93, 0xe3, 0x7a, 0xea, 0x3c, 0x4f, 0xbe, 0xe0, 0x64, 0xf3, - 0x9c, 0x72, 0x09, 0xfa, 0xbf, 0x04, 0xea, 0x44, 0xc2, 0x7d, 0xe3, 0xd7, 0xa2, 0xdf, 0xd8, 0x08, - 0xb7, 0x8c, 0x37, 0xb2, 0xee, 0x5e, 0x93, 0xbe, 0xd0, 0x31, 0xb4, 0x7b, 0x8d, 0x01, 0x92, 0x3e, - 0x02, 0x7c, 0xb2, 0x10, 0x0e, 0xcb, 0x0b, 0x0b, 0x45, 0xca, 0xf5, 0xb5, 0x94, 0x69, 0x1f, 0x2e, - 0x47, 0xac, 0xe4, 0xe0, 0x59, 0x6b, 0xb8, 0x5d, 0x3a, 0x00, 0x97, 0x38, 0x6d, 0xe2, 0xa0, 0xa2, - 0x55, 0x89, 0x85, 0x9b, 0x29, 0x27, 0xf7, 0xc9, 0xc5, 0x81, 0x95, 0x1c, 0xbc, 0x68, 0xc5, 0xf5, - 0x4a, 0xdb, 0xe0, 0xe2, 0xe0, 0x94, 0x84, 0x39, 0x46, 0x36, 0x9d, 0xb7, 0x28, 0xb3, 0x57, 0x13, - 0x99, 0xc5, 0xdc, 0x6d, 0x54, 0x72, 0xf0, 0xbc, 0x17, 0x73, 0xe5, 0x71, 0x04, 0xae, 0x24, 0x1c, - 0xae, 0x33, 0x56, 0xb7, 0x53, 0xc6, 0x95, 0x7c, 0x21, 0x40, 0x1c, 0xfe, 0x4e, 0xf2, 0x75, 0xc1, - 0x36, 0xe0, 0xa3, 0x46, 0xbc, 0x20, 0xc1, 0x63, 0x75, 0x8f, 0x85, 0x3b, 0x29, 0x83, 0x8b, 0xa9, - 0x95, 0x24, 0x83, 0xb3, 0x62, 0x4a, 0x28, 0xab, 0xe0, 0x4c, 0x9f, 0x07, 0x9d, 0xa5, 0xbb, 0x94, - 0xf6, 0xed, 0x54, 0xda, 0x04, 0xb8, 0x92, 0x83, 0xa7, 0xad, 0x68, 0x95, 0xe3, 0x16, 0x90, 0xa2, - 0xb5, 0x13, 0x6c, 0x46, 0x0a, 0xf7, 0x52, 0x4a, 0xb2, 0x47, 0x8b, 0xfc, 0xa8, 0x37, 0x19, 0x2d, - 0xfc, 0x1b, 0x21, 0xdd, 0xa3, 0x05, 0x63, 0x85, 0xfb, 0x99, 0x49, 0xb3, 0x0a, 0xb3, 0x61, 0xd2, - 0xbc, 0xea, 0x6c, 0x84, 0xb4, 0x4d, 0x0b, 0x4a, 0x0a, 0x2b, 0x99, 0x49, 0xb3, 0x0a, 0x94, 0x61, - 0xd2, 0xbc, 0x2a, 0xa5, 0x0d, 0x2e, 0x47, 0x49, 0xf3, 0x9a, 0x2e, 0xae, 0x97, 0x57, 0x52, 0xce, - 0x05, 0xe2, 0x8b, 0xfc, 0x2a, 0x39, 0xb8, 0x60, 0xc5, 0x97, 0xff, 0xc5, 0x73, 0xe3, 0xaa, 0x7a, - 0xf5, 0x39, 0xb9, 0xf5, 0x15, 0x36, 0xc6, 0x8d, 0xab, 0x2d, 0x9e, 0x1b, 0xd7, 0xde, 0x6b, 0xcf, - 0xc9, 0xad, 0xaf, 0xc3, 0x31, 0x6e, 0x5c, 0x93, 0x07, 0x60, 0x31, 0xca, 0x8d, 0x96, 0x7a, 0xf9, - 0x24, 0x5a, 0xf6, 0x7c, 0xec, 0x15, 0x56, 0x33, 0xb3, 0x8b, 0xd6, 0xbb, 0x0d, 0xb3, 0x1b, 0xaa, - 0x84, 0xfb, 0x7f, 0x02, 0x28, 0x46, 0x13, 0x84, 0xe8, 0x4d, 0xd2, 0xe0, 0x98, 0xa5, 0xf0, 0x20, - 0xf5, 0x4c, 0x36, 0xf5, 0xb5, 0x1e, 0x3b, 0x93, 0xed, 0x83, 0xb5, 0xc6, 0xc1, 0xa4, 0x7d, 0x70, - 0x29, 0xe6, 0x84, 0x05, 0x3b, 0x2d, 0x5c, 0x78, 0x3d, 0x35, 0xc5, 0x4e, 0x78, 0x2b, 0xc7, 0x52, - 0xec, 0x91, 0x4e, 0xa7, 0x85, 0x47, 0x99, 0x85, 0xe9, 0xa6, 0x6b, 0xe3, 0xc2, 0xc3, 0xcc, 0xcc, - 0x46, 0xde, 0xa7, 0x0d, 0x33, 0x1b, 0x74, 0x4a, 0x5f, 0x01, 0xe7, 0x02, 0x6b, 0x97, 0xc7, 0x21, - 0x4c, 0x02, 0xa2, 0x77, 0x5c, 0x78, 0x94, 0x12, 0x8b, 0xe2, 0x2e, 0x1c, 0x49, 0x2c, 0x0a, 0xac, - 0xdd, 0x68, 0xbb, 0x14, 0x80, 0x45, 0x9f, 0x5f, 0xcf, 0x20, 0x8f, 0x52, 0x42, 0xbb, 0x98, 0x1e, - 0x64, 0xf7, 0xda, 0x41, 0xe1, 0x8d, 0x94, 0x23, 0xa9, 0x49, 0x37, 0x3b, 0x95, 0x1c, 0xbc, 0xe4, - 0xc7, 0xf7, 0x8f, 0x2e, 0x0b, 0x5e, 0x3f, 0xc6, 0x97, 0xfc, 0xe3, 0xcc, 0x76, 0x1a, 0xad, 0x3a, - 0x1c, 0xb6, 0xd3, 0xa1, 0x7a, 0xc4, 0x78, 0x6e, 0x7c, 0x11, 0xbe, 0xf9, 0x9c, 0xdc, 0xe2, 0x16, - 0xe1, 0x50, 0x91, 0xdd, 0x36, 0xb8, 0x18, 0x1a, 0xc6, 0x31, 0xda, 0xc1, 0x41, 0x6b, 0x8f, 0xc7, - 0xc0, 0x2f, 0xa4, 0x44, 0xa4, 0x98, 0xeb, 0x2d, 0x12, 0x91, 0xec, 0x98, 0x5b, 0xaf, 0xef, 0x8d, - 0x9c, 0xe6, 0x71, 0x03, 0x1c, 0xf0, 0x65, 0x7b, 0xfc, 0xc2, 0x5b, 0x99, 0x0f, 0xcf, 0x92, 0x3f, - 0xb3, 0x30, 0x7c, 0xa4, 0x17, 0x0b, 0x27, 0x7d, 0x73, 0x64, 0x67, 0xbf, 0xdf, 0xdb, 0xc6, 0xf4, - 0x72, 0x76, 0x68, 0x9b, 0xf0, 0x24, 0xf3, 0x01, 0xe7, 0xf8, 0xd7, 0x6f, 0x86, 0x0f, 0x38, 0x69, - 0xff, 0xfe, 0xd0, 0xf6, 0xe0, 0xdb, 0xf1, 0x2a, 0xb1, 0xba, 0x5d, 0x7a, 0xcc, 0xda, 0x3f, 0xe0, - 0x7c, 0x3b, 0xf5, 0x84, 0x7b, 0xd2, 0x33, 0xca, 0x61, 0x47, 0x14, 0xfb, 0xd0, 0xb2, 0x0b, 0x96, - 0xb8, 0xb5, 0xed, 0x7a, 0x56, 0x77, 0x8f, 0x6e, 0xe9, 0xfc, 0x96, 0x15, 0x66, 0x42, 0xef, 0x50, - 0xfe, 0xaf, 0xa7, 0xd8, 0xdb, 0xd8, 0x7d, 0x3d, 0x59, 0x4d, 0x56, 0xa4, 0xeb, 0xc8, 0x1f, 0x5c, - 0xe5, 0x7f, 0x9f, 0x6d, 0xd4, 0x86, 0xb8, 0xb6, 0x3c, 0xf7, 0xa8, 0x83, 0xfe, 0x3b, 0x3e, 0xc2, - 0x6d, 0x64, 0x3b, 0x3b, 0x3b, 0x74, 0x0b, 0x5c, 0x78, 0x37, 0xd5, 0x1e, 0xd2, 0x6f, 0x90, 0x99, - 0x3d, 0x4c, 0x84, 0x93, 0xfe, 0x1b, 0xb8, 0x48, 0x8b, 0x38, 0xe8, 0xbd, 0x29, 0xbd, 0xf3, 0xe4, - 0xa3, 0x7f, 0x2f, 0xed, 0xa6, 0x72, 0xec, 0xfa, 0xb5, 0x92, 0x83, 0x52, 0x6f, 0xfc, 0x52, 0x96, - 0x1d, 0xa8, 0xc7, 0xee, 0x9b, 0x70, 0x97, 0x33, 0xfb, 0x62, 0xaa, 0xbd, 0x25, 0xd7, 0x26, 0x32, - 0x7b, 0x9b, 0x50, 0xbb, 0xf8, 0x6b, 0x02, 0xb8, 0x97, 0x20, 0x01, 0x3f, 0xce, 0x72, 0xbb, 0x38, - 0x9c, 0xf4, 0x2f, 0xa5, 0x86, 0xc0, 0xd4, 0x12, 0x41, 0x76, 0xfb, 0x97, 0x5e, 0x49, 0xf8, 0x89, - 0x00, 0x56, 0xe2, 0xe5, 0xa2, 0x35, 0x68, 0xa3, 0x5b, 0xba, 0xf7, 0x53, 0x2f, 0xdf, 0x32, 0xd4, - 0xec, 0xb1, 0xb3, 0x8f, 0x2c, 0xc5, 0x7d, 0xfc, 0x4c, 0x21, 0x76, 0xab, 0x49, 0x9f, 0x62, 0x75, - 0xc3, 0x73, 0xd3, 0x0f, 0x3e, 0xcd, 0x5e, 0x33, 0x52, 0x47, 0x97, 0xb8, 0xd7, 0x8c, 0xd6, 0xda, - 0x7d, 0x9f, 0x9d, 0x92, 0xc6, 0x88, 0xd3, 0x76, 0x3a, 0xfb, 0x43, 0xa7, 0x0b, 0x72, 0xea, 0x96, - 0x33, 0xa5, 0xac, 0xad, 0x92, 0x83, 0x37, 0x62, 0x04, 0x1a, 0x06, 0x5a, 0x3b, 0x09, 0x66, 0x28, - 0xcd, 0xa7, 0xd3, 0xb3, 0x79, 0x71, 0x8a, 0xd8, 0x60, 0x7f, 0x27, 0x4c, 0xe2, 0x72, 0x78, 0x69, - 0x46, 0x25, 0x5b, 0xf9, 0x91, 0x38, 0xf8, 0x20, 0x62, 0xb8, 0x59, 0x93, 0x6e, 0x80, 0xe5, 0x92, - 0x66, 0x28, 0xfa, 0x33, 0x15, 0x22, 0xa8, 0x1a, 0x7a, 0x13, 0x2a, 0xa3, 0x9f, 0x33, 0xba, 0x02, - 0x0a, 0xe3, 0x20, 0x86, 0x0a, 0x9f, 0xa9, 0x50, 0x14, 0xa4, 0xeb, 0xe0, 0xca, 0x78, 0xef, 0x46, - 0x73, 0x4d, 0x85, 0x75, 0xd5, 0x54, 0x0d, 0x31, 0x2f, 0xbd, 0x01, 0x1e, 0x8c, 0x43, 0x94, 0x64, - 0x53, 0x5e, 0x93, 0x0d, 0x15, 0x35, 0x74, 0xc3, 0x2c, 0x43, 0xd5, 0x40, 0x86, 0x5a, 0x5d, 0x47, - 0x15, 0xdd, 0x30, 0xd5, 0x92, 0x38, 0x25, 0xbd, 0x0e, 0x5e, 0x9d, 0x80, 0x54, 0xdb, 0x32, 0x3e, - 0xac, 0x0e, 0x61, 0x4c, 0x4b, 0x8f, 0xc0, 0xea, 0x24, 0x0c, 0xbd, 0x5e, 0xd6, 0x4b, 0x6b, 0x43, - 0x38, 0x33, 0xd2, 0x2b, 0xe0, 0x6e, 0x16, 0xd1, 0x60, 0xc9, 0x10, 0x4f, 0x48, 0xf7, 0xc0, 0xad, - 0x54, 0x91, 0x08, 0xe4, 0x49, 0xe9, 0x0e, 0x28, 0x8e, 0x43, 0xca, 0x8d, 0x46, 0x55, 0x53, 0x64, - 0x53, 0xd3, 0xeb, 0xa8, 0x62, 0x9a, 0x0d, 0x71, 0x56, 0xba, 0x0d, 0x6e, 0x4c, 0x86, 0x33, 0x95, - 0x86, 0x38, 0x17, 0x0f, 0xb6, 0xa9, 0xd5, 0x4b, 0xfa, 0xa6, 0x81, 0x4a, 0xaa, 0xb1, 0x61, 0xea, - 0x0d, 0x11, 0x48, 0xaf, 0x82, 0x7b, 0x13, 0xe4, 0x33, 0x3e, 0xac, 0xb2, 0x39, 0xa3, 0x32, 0x9e, - 0x4a, 0x51, 0xf0, 0x60, 0xe8, 0x6a, 0xc9, 0xa8, 0x68, 0xeb, 0xa6, 0x78, 0x5a, 0x7a, 0x0c, 0x5e, - 0xcf, 0x44, 0x3f, 0xaa, 0xe2, 0x33, 0x29, 0x7c, 0xa0, 0x5a, 0xd2, 0x86, 0xa7, 0x7e, 0x3e, 0xeb, - 0xa4, 0x94, 0x95, 0x86, 0x78, 0x36, 0xd3, 0xa4, 0x10, 0x48, 0x31, 0xb3, 0x7a, 0x08, 0xf4, 0x39, - 0xe9, 0x5d, 0xf0, 0xd6, 0xf3, 0xa8, 0x87, 0xaf, 0x87, 0xaa, 0x6a, 0x18, 0xa2, 0x24, 0xbd, 0x06, - 0xee, 0x67, 0x41, 0x96, 0x3f, 0x6a, 0x42, 0x55, 0x3c, 0x2f, 0xdd, 0x05, 0x37, 0x27, 0x80, 0x97, - 0xb6, 0xea, 0x72, 0x4d, 0x2f, 0xad, 0x89, 0x17, 0x52, 0x4c, 0x5c, 0x91, 0x0d, 0x43, 0xae, 0x97, - 0xa0, 0x8c, 0x36, 0xd4, 0x2d, 0xa3, 0x21, 0x2b, 0xaa, 0x21, 0x5e, 0x4c, 0x99, 0xb5, 0x01, 0x4e, - 0x74, 0x0e, 0x16, 0xa4, 0x27, 0xe0, 0xf1, 0x04, 0x2c, 0xb5, 0x2a, 0x1b, 0xa6, 0xa6, 0x18, 0xaa, - 0x0c, 0x95, 0xca, 0x10, 0xe6, 0xa5, 0x4c, 0xf3, 0xcd, 0xf1, 0x65, 0xa5, 0xa2, 0x8a, 0x85, 0x14, - 0x6d, 0x31, 0x8c, 0x9a, 0x5a, 0xd3, 0xe1, 0x56, 0x69, 0x4d, 0xbc, 0x9c, 0x89, 0x01, 0xd5, 0x2c, - 0x62, 0x0c, 0x16, 0x53, 0x06, 0xc3, 0x30, 0x94, 0x6a, 0xd3, 0x30, 0x47, 0x8c, 0x77, 0x49, 0x5a, - 0x01, 0x77, 0x52, 0xad, 0x8b, 0xcd, 0xe2, 0x15, 0x69, 0x15, 0xac, 0x64, 0xb2, 0x2f, 0x06, 0xbf, - 0x9c, 0x32, 0x99, 0x03, 0xf8, 0x9a, 0xa6, 0x40, 0xdd, 0xd0, 0xd7, 0x4d, 0xf1, 0xaa, 0xf4, 0x05, - 0xf0, 0x68, 0xd2, 0x64, 0xea, 0xca, 0x06, 0xd4, 0x65, 0xa5, 0x32, 0xe2, 0xe7, 0xae, 0xa5, 0xd8, - 0x7e, 0xe8, 0x1b, 0x65, 0xb3, 0x2a, 0x1b, 0xe2, 0xf5, 0x94, 0x35, 0x65, 0xd4, 0xf5, 0xcd, 0xf5, - 0xaa, 0xbc, 0xa1, 0x8a, 0x37, 0x12, 0xe8, 0xea, 0x4a, 0x44, 0xbb, 0x25, 0x03, 0x35, 0xa0, 0xfe, - 0xe5, 0x2d, 0xb1, 0x98, 0x60, 0x8a, 0x51, 0xe8, 0x8a, 0x56, 0xae, 0x20, 0xf9, 0x99, 0xac, 0x55, - 0xe5, 0x35, 0xad, 0xaa, 0x99, 0x5b, 0xe2, 0x4d, 0xe9, 0x2d, 0xf0, 0x46, 0x0a, 0x16, 0x5d, 0x21, - 0x9a, 0x82, 0xa0, 0x5a, 0xd6, 0x0c, 0x13, 0x52, 0xd7, 0x29, 0xde, 0x8a, 0xf7, 0xc2, 0x86, 0x5c, - 0xab, 0x46, 0x5d, 0xac, 0x78, 0x5b, 0x2a, 0x82, 0xab, 0xe3, 0x70, 0xaa, 0xf2, 0x88, 0x7d, 0xb8, - 0xaf, 0xae, 0xa8, 0xe2, 0x9d, 0x04, 0xa3, 0xd3, 0x95, 0x51, 0x37, 0x8c, 0xea, 0x7a, 0x1d, 0xc9, - 0x25, 0xf1, 0xae, 0x74, 0x0b, 0x5c, 0x9f, 0x14, 0x17, 0xe9, 0x07, 0xdd, 0xee, 0xc5, 0xdb, 0x7e, - 0x34, 0x02, 0xc8, 0x9b, 0x06, 0x52, 0xf4, 0xba, 0xa1, 0x57, 0x55, 0xf1, 0xbe, 0x74, 0x0d, 0x2c, - 0x8d, 0x83, 0xd7, 0x94, 0x06, 0x32, 0xcc, 0x92, 0xa6, 0x8b, 0x2b, 0xf4, 0xb3, 0x87, 0xf1, 0x00, - 0x86, 0x2a, 0xbe, 0x22, 0xdd, 0x07, 0xb7, 0x93, 0xf0, 0xa1, 0x2a, 0xd7, 0xe4, 0xb5, 0xaa, 0xca, - 0x62, 0xd3, 0xab, 0x2b, 0xbf, 0x2b, 0x80, 0xf9, 0xe1, 0x4f, 0x0f, 0x0f, 0x71, 0x37, 0x4c, 0xd9, - 0x6c, 0x1a, 0x23, 0x99, 0xc2, 0x12, 0xb8, 0x34, 0x0a, 0x60, 0x34, 0x15, 0x85, 0x38, 0x45, 0x21, - 0xb6, 0x73, 0x43, 0x6b, 0x34, 0xd4, 0x92, 0x98, 0x97, 0x2e, 0x83, 0x8b, 0xa3, 0x9d, 0x2a, 0x84, - 0x3a, 0x14, 0xa7, 0xe2, 0xf0, 0xe4, 0x35, 0x1d, 0xd2, 0xa0, 0xbf, 0xf2, 0xb3, 0x3c, 0x98, 0x52, - 0x4c, 0x59, 0x3a, 0x0f, 0xce, 0x2a, 0xa6, 0x3c, 0xfe, 0x91, 0x47, 0xd2, 0x28, 0x37, 0xcd, 0x0a, - 0xd1, 0x61, 0x5d, 0x55, 0x4c, 0x9d, 0xa4, 0x2c, 0x97, 0xc0, 0x79, 0xda, 0xae, 0x98, 0xda, 0x33, - 0x92, 0xc9, 0x18, 0x86, 0xa6, 0xd7, 0x49, 0xa6, 0xd2, 0xef, 0x20, 0x22, 0x23, 0xa8, 0x7e, 0xd8, - 0x54, 0x0d, 0xd3, 0x10, 0xa7, 0xc2, 0x8e, 0x06, 0x54, 0x6b, 0x5a, 0xb3, 0x86, 0x8c, 0x66, 0xa3, - 0xa1, 0x43, 0x53, 0x9c, 0x0e, 0x3b, 0x4c, 0x48, 0xbc, 0x47, 0x09, 0x95, 0xd4, 0x67, 0x1a, 0x71, - 0xbb, 0x33, 0x21, 0xef, 0x66, 0xa3, 0x0c, 0xe5, 0x92, 0x8a, 0xd6, 0xe4, 0x7a, 0x5d, 0x85, 0xe2, - 0x89, 0x10, 0x61, 0x4d, 0xab, 0x56, 0xb5, 0x7a, 0x19, 0x19, 0xcd, 0x5a, 0x4d, 0x86, 0x5b, 0xe2, - 0xc9, 0x70, 0x04, 0x9c, 0x77, 0x55, 0x33, 0x4c, 0x71, 0x96, 0x7e, 0x0a, 0x70, 0xd0, 0x58, 0xd3, - 0xeb, 0x9a, 0xa9, 0x43, 0xad, 0x5e, 0x16, 0xe7, 0xe8, 0x47, 0x06, 0x4d, 0x19, 0xa9, 0x5f, 0x36, - 0x55, 0x58, 0x97, 0xab, 0x48, 0x6e, 0x96, 0x34, 0x13, 0x19, 0xa6, 0x0e, 0xe5, 0xb2, 0x2a, 0x82, - 0x50, 0x00, 0x7d, 0x83, 0x48, 0x61, 0x10, 0xdd, 0x6d, 0xd5, 0x15, 0xf1, 0x94, 0x24, 0x82, 0xd3, - 0x14, 0xaf, 0x6e, 0x42, 0x19, 0x69, 0x25, 0xf1, 0xb4, 0x74, 0x0e, 0x9c, 0xe9, 0x43, 0x1a, 0x8a, - 0x56, 0x13, 0xcf, 0x84, 0x7c, 0xb5, 0x92, 0x5a, 0x37, 0x35, 0x73, 0x0b, 0x19, 0xaa, 0xd2, 0x84, - 0x64, 0x39, 0xce, 0xaf, 0xfc, 0x18, 0x80, 0x8b, 0xb1, 0xef, 0xe8, 0x48, 0x18, 0xd3, 0xea, 0xa6, - 0x5a, 0x66, 0x0b, 0x10, 0xa9, 0x75, 0xa8, 0x57, 0xab, 0x68, 0x43, 0xab, 0x8f, 0x7e, 0x3e, 0xf1, - 0x06, 0x58, 0x4e, 0x02, 0x34, 0xaa, 0xb2, 0xb2, 0x21, 0x0a, 0x64, 0xf5, 0x24, 0x81, 0x90, 0x15, - 0xa1, 0x6b, 0x25, 0x45, 0xcc, 0x93, 0xc4, 0x28, 0x09, 0xaa, 0x21, 0x97, 0x55, 0x58, 0x6a, 0x9a, - 0x5b, 0xe2, 0xd4, 0x24, 0x7e, 0x6a, 0x4d, 0xd6, 0xaa, 0xe2, 0x34, 0xc9, 0x62, 0x93, 0x40, 0x9e, - 0x6a, 0x50, 0x16, 0x67, 0xa4, 0x9b, 0xe0, 0x5a, 0x12, 0x04, 0x35, 0x4f, 0x58, 0x12, 0x4f, 0x10, - 0x97, 0x93, 0x04, 0x54, 0x93, 0x4d, 0x53, 0x85, 0x35, 0xdd, 0x30, 0xc5, 0x93, 0x93, 0x86, 0x57, - 0x33, 0x90, 0xa9, 0xca, 0x35, 0x43, 0x9c, 0x9d, 0x04, 0xa5, 0x37, 0x8c, 0xb2, 0x5a, 0xd7, 0x54, - 0x71, 0x6e, 0x92, 0xe8, 0x64, 0x4a, 0x45, 0x30, 0x71, 0x70, 0x72, 0x6d, 0x5d, 0x3c, 0x35, 0x59, - 0x6e, 0xa5, 0xa2, 0xd5, 0x55, 0x66, 0x2a, 0x6f, 0x82, 0x87, 0xe9, 0x70, 0xa8, 0xac, 0x99, 0x95, - 0xe6, 0x1a, 0x5d, 0x5f, 0x64, 0x5d, 0x9d, 0x91, 0x1e, 0x80, 0x57, 0x32, 0xa0, 0x29, 0x1a, 0x54, - 0xaa, 0xaa, 0xa2, 0x89, 0xf3, 0xc4, 0x2d, 0x66, 0xe3, 0x53, 0x95, 0xd7, 0xc4, 0xb3, 0x24, 0xf4, - 0x66, 0x00, 0x7f, 0xaa, 0xd6, 0x37, 0xb4, 0xba, 0x21, 0x8a, 0x19, 0xe1, 0xe5, 0xba, 0xa1, 0xad, - 0x55, 0x55, 0xf1, 0xdc, 0x24, 0xf5, 0x90, 0x20, 0xad, 0x29, 0x6a, 0x5d, 0xdf, 0x14, 0xa5, 0x49, - 0x13, 0xd6, 0x5f, 0x6f, 0xe7, 0x49, 0x40, 0x4b, 0xb4, 0x24, 0xd9, 0x94, 0x4b, 0x7a, 0x19, 0x69, - 0x75, 0x85, 0xae, 0x3d, 0x54, 0x93, 0xeb, 0x72, 0x59, 0xad, 0xa9, 0x75, 0x53, 0xbc, 0x40, 0xb2, - 0x91, 0x2c, 0x62, 0x6f, 0x92, 0xb4, 0x2f, 0x1b, 0x2c, 0xc9, 0x75, 0x17, 0x48, 0x14, 0xcf, 0x42, - 0x97, 0xe6, 0x2d, 0x34, 0xc1, 0xcb, 0x00, 0x4d, 0xf3, 0xcf, 0x2a, 0xd9, 0x38, 0x14, 0xa4, 0x87, - 0xe0, 0xb5, 0x0c, 0x18, 0x91, 0x3d, 0xe3, 0xe5, 0x49, 0x16, 0x43, 0xd6, 0x7f, 0xdf, 0x31, 0x29, - 0x6a, 0xdd, 0x54, 0xa1, 0xb8, 0x38, 0x69, 0x4a, 0xb9, 0x39, 0x42, 0xb5, 0xa1, 0x73, 0x4f, 0x2a, - 0x2e, 0x65, 0xb4, 0x30, 0x19, 0x96, 0x75, 0xa5, 0x24, 0x5e, 0x91, 0x3e, 0x00, 0xef, 0x3d, 0xb7, - 0xe1, 0x47, 0x47, 0xb4, 0xbc, 0xf2, 0xd7, 0x33, 0x31, 0x7e, 0xd3, 0x08, 0x70, 0x37, 0xc1, 0x6f, - 0x1a, 0xa6, 0xda, 0x18, 0xf1, 0x9b, 0xf1, 0x63, 0xa4, 0x80, 0xf2, 0xa6, 0xa1, 0x29, 0x61, 0x90, - 0x63, 0xee, 0x51, 0x90, 0xbe, 0x04, 0xde, 0x99, 0x0c, 0x6f, 0xa8, 0x26, 0xd7, 0x08, 0x89, 0x37, - 0xa8, 0xa4, 0xae, 0xcb, 0xcd, 0xaa, 0x89, 0xf4, 0x4d, 0x12, 0xab, 0xf2, 0xd2, 0x17, 0xc1, 0xdb, - 0x93, 0xf1, 0x9b, 0x8d, 0xaa, 0x2e, 0xb3, 0x19, 0xa1, 0x79, 0x95, 0xd1, 0x40, 0x35, 0xd5, 0x94, - 0x89, 0x15, 0x8b, 0x53, 0x24, 0x59, 0x9d, 0x8c, 0x6e, 0xaa, 0x86, 0x49, 0x23, 0x4e, 0x28, 0x38, - 0xc9, 0xc7, 0xa6, 0x13, 0xd6, 0x07, 0xc5, 0x63, 0x0a, 0x86, 0x32, 0x52, 0xa0, 0x2a, 0x9b, 0x2a, - 0x8a, 0xc0, 0x89, 0x33, 0x93, 0x18, 0x8e, 0x22, 0x96, 0xb5, 0x70, 0xcb, 0x26, 0x9e, 0xc8, 0xc6, - 0x90, 0x7e, 0x91, 0x97, 0xec, 0x2a, 0x0c, 0xa3, 0x82, 0x14, 0x15, 0x12, 0x37, 0x1e, 0xbf, 0x14, - 0x62, 0x19, 0x42, 0x92, 0xc0, 0xcd, 0x92, 0x14, 0x38, 0x09, 0xa3, 0xb6, 0xa9, 0x95, 0x2b, 0xf2, - 0xc6, 0x13, 0xa3, 0x3f, 0x8d, 0x8c, 0x86, 0x38, 0x37, 0x69, 0x60, 0x43, 0x58, 0x5c, 0x42, 0x6e, - 0xe4, 0x20, 0x1b, 0x37, 0x43, 0x35, 0x9b, 0x0d, 0xb4, 0xa9, 0xc3, 0x8d, 0xf5, 0xaa, 0xbe, 0x29, - 0x9e, 0x4a, 0x58, 0x1a, 0x23, 0x58, 0x9b, 0x6a, 0x55, 0xd1, 0x6b, 0xaa, 0x78, 0x7a, 0xe5, 0xe7, - 0x42, 0xec, 0xbb, 0xf1, 0xf0, 0xcd, 0x77, 0xa2, 0xd5, 0xd2, 0x4c, 0x4e, 0xd1, 0x4b, 0xa3, 0xc7, - 0x4d, 0xf1, 0x9e, 0x2b, 0x0a, 0x3f, 0xc8, 0x29, 0x33, 0xc0, 0xf6, 0x53, 0xcc, 0x7b, 0xe0, 0x56, - 0x0a, 0x6c, 0x98, 0x71, 0xa6, 0x53, 0x1d, 0x24, 0xa0, 0x7f, 0x93, 0x07, 0x85, 0xa4, 0x63, 0xd6, - 0x24, 0x42, 0xcc, 0xd2, 0x47, 0x86, 0x1d, 0xef, 0x61, 0x42, 0xd8, 0x81, 0xe2, 0x43, 0x1f, 0x53, - 0x7a, 0x46, 0xb6, 0x26, 0x24, 0x13, 0x60, 0x51, 0x56, 0xc8, 0x4c, 0x21, 0xb2, 0x09, 0xa9, 0xca, - 0x6b, 0x6a, 0x15, 0x35, 0x34, 0x65, 0x83, 0x2e, 0xf8, 0x12, 0xf8, 0xe0, 0x79, 0x29, 0x8c, 0xc9, - 0x31, 0x25, 0x55, 0x40, 0xe9, 0x79, 0xa9, 0xf4, 0xf7, 0x22, 0xb0, 0x59, 0x55, 0x43, 0x79, 0xa6, - 0x57, 0x7e, 0x70, 0x02, 0x2c, 0xc4, 0x9f, 0x13, 0x27, 0xcc, 0xe6, 0xba, 0xa6, 0x56, 0x47, 0xb3, - 0xcd, 0xf7, 0xc0, 0x93, 0x44, 0xc8, 0x31, 0xb5, 0x92, 0x20, 0x61, 0x90, 0x24, 0x7b, 0x0b, 0x35, - 0x61, 0x55, 0x14, 0x12, 0x96, 0x50, 0x02, 0xf6, 0x1a, 0x94, 0xeb, 0x4a, 0x45, 0xcc, 0x27, 0x2c, - 0xd8, 0x04, 0xac, 0xfe, 0xd2, 0x9b, 0x92, 0xde, 0x06, 0x6f, 0x66, 0xc7, 0x53, 0xeb, 0xcf, 0x34, - 0xa8, 0xd7, 0x69, 0x72, 0x30, 0x9d, 0x10, 0x64, 0x13, 0x87, 0xb9, 0x2e, 0xce, 0x24, 0xf8, 0xf7, - 0x44, 0x6e, 0xa6, 0x0a, 0x1b, 0x50, 0x33, 0x54, 0x64, 0x54, 0x9b, 0x65, 0xf1, 0x44, 0x82, 0xb5, - 0x64, 0x40, 0x37, 0x65, 0x53, 0x53, 0xd0, 0xd3, 0xcd, 0x0d, 0x43, 0x3c, 0x29, 0x3d, 0x01, 0x8f, - 0x33, 0x50, 0x19, 0xb5, 0x59, 0x92, 0x1e, 0x3f, 0x37, 0x66, 0x19, 0xea, 0xcd, 0x86, 0x21, 0xce, - 0x25, 0x38, 0xfc, 0x09, 0x98, 0x64, 0x03, 0x45, 0x1c, 0x6a, 0xfc, 0x12, 0x9b, 0x80, 0x38, 0x64, - 0xd8, 0x86, 0x78, 0x2a, 0x21, 0x26, 0x4f, 0xa0, 0x10, 0x1e, 0x4c, 0xd5, 0x65, 0xea, 0x6d, 0x7f, - 0x14, 0xf7, 0x61, 0x94, 0xf0, 0xdd, 0x7c, 0x42, 0x26, 0x47, 0x5d, 0x56, 0xcc, 0xff, 0x29, 0x88, - 0x77, 0x4f, 0x03, 0x68, 0x53, 0x85, 0x50, 0x5e, 0xd7, 0x61, 0x2d, 0x71, 0x1d, 0x0c, 0x60, 0x47, - 0x52, 0x9f, 0x2d, 0xb9, 0x56, 0x15, 0xf3, 0x2b, 0xef, 0x83, 0x93, 0xbc, 0x56, 0x8b, 0x6c, 0x7c, - 0xd7, 0x55, 0xd9, 0x24, 0xf1, 0x69, 0xec, 0xd0, 0x20, 0xec, 0x18, 0xdd, 0x46, 0x0b, 0x2b, 0xbf, - 0x2d, 0x80, 0xa5, 0x09, 0x2f, 0xa9, 0x49, 0xac, 0x0a, 0x91, 0xa1, 0xaa, 0xe8, 0xb5, 0x9a, 0x5a, - 0x2f, 0x31, 0x09, 0x63, 0x0f, 0x28, 0x56, 0xc0, 0x9d, 0xc9, 0xe0, 0x75, 0xdd, 0x64, 0xb0, 0x02, - 0x49, 0xfa, 0x27, 0xc3, 0x96, 0xf4, 0xba, 0x2a, 0xe6, 0xd7, 0xbe, 0xfa, 0x67, 0x3f, 0xbd, 0x2a, - 0xfc, 0xe5, 0x4f, 0xaf, 0x0a, 0x7f, 0xf7, 0xd3, 0xab, 0xc2, 0x47, 0xfa, 0xae, 0x13, 0xec, 0xf5, - 0xb6, 0x57, 0x5b, 0xee, 0xc1, 0x83, 0x5d, 0xcf, 0x3a, 0x74, 0x58, 0x2d, 0xaf, 0xd5, 0x7e, 0x30, - 0xf8, 0xd7, 0x69, 0x5d, 0xe7, 0xc1, 0x2e, 0xee, 0x3c, 0xa0, 0xaf, 0xde, 0x1f, 0xec, 0xba, 0x23, - 0xff, 0x8f, 0xed, 0xdd, 0xc8, 0xcf, 0xc3, 0x87, 0xdb, 0x27, 0x28, 0xd8, 0x1b, 0xff, 0x11, 0x00, - 0x00, 0xff, 0xff, 0x34, 0x10, 0x18, 0x83, 0xbf, 0x6d, 0x00, 0x00, + // 6558 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x4b, 0x6c, 0xe4, 0xc8, + 0x79, 0x70, 0xb3, 0x25, 0xcd, 0x48, 0x35, 0x1a, 0x0d, 0x87, 0x33, 0xa3, 0x69, 0x49, 0xa3, 0x79, + 0xf4, 0xbc, 0xb5, 0xbb, 0x9a, 0x1d, 0xed, 0xac, 0x77, 0xf6, 0x61, 0xef, 0x52, 0x6c, 0xaa, 0x9b, + 0xa3, 0xee, 0x66, 0x6f, 0x91, 0x3d, 0xb2, 0xd6, 0x30, 0xea, 0xa7, 0x9a, 0x25, 0x89, 0xbf, 0x5a, + 0xcd, 0x36, 0xc9, 0x96, 0x56, 0x08, 0x0c, 0x3b, 0x4e, 0x62, 0x04, 0xb1, 0x9d, 0x75, 0x80, 0xc4, + 0x08, 0xb0, 0x41, 0x1e, 0xc8, 0x03, 0x01, 0x1c, 0xc0, 0xa7, 0xc0, 0xa7, 0x1c, 0x72, 0x0b, 0x90, + 0x1c, 0x02, 0xe4, 0x96, 0x53, 0xe0, 0x53, 0x6e, 0x3e, 0x25, 0x40, 0xe2, 0xbc, 0x50, 0x55, 0x24, + 0x9b, 0xdd, 0x4d, 0x36, 0x39, 0x9b, 0xd9, 0xd8, 0x98, 0xb9, 0xa9, 0xab, 0xbe, 0x57, 0x7d, 0xf5, + 0xd5, 0xf7, 0x7d, 0x55, 0xf5, 0x15, 0x05, 0xee, 0x7b, 0xb8, 0x8d, 0xbb, 0xb6, 0xe3, 0x3d, 0xe8, + 0xb9, 0xc6, 0x1e, 0xc6, 0x47, 0xb8, 0xe3, 0xb9, 0x0f, 0x8e, 0x1e, 0x46, 0x7f, 0xae, 0x76, 0x1d, + 0xdb, 0xb3, 0x85, 0xcb, 0x01, 0xe8, 0x6a, 0xb4, 0xef, 0xe8, 0xe1, 0xe2, 0xdd, 0x90, 0x86, 0xd1, + 0x6a, 0x61, 0xd7, 0x6d, 0x5b, 0xae, 0x47, 0x48, 0xf4, 0x7f, 0x31, 0x0a, 0xc5, 0x15, 0x20, 0x34, + 0x95, 0x75, 0xa3, 0xd3, 0xc1, 0x8e, 0xd4, 0xb6, 0x5a, 0x07, 0x32, 0x21, 0x21, 0x5c, 0x04, 0x53, + 0x46, 0x1b, 0x3b, 0x5e, 0x81, 0xbb, 0xce, 0xdd, 0x9b, 0x81, 0xec, 0x47, 0x71, 0x03, 0xdc, 0x6b, + 0x2a, 0x6a, 0x67, 0xc7, 0x36, 0x1c, 0x53, 0xb2, 0x0f, 0xbb, 0x6d, 0xec, 0xe1, 0xb2, 0xad, 0xdb, + 0x25, 0xc3, 0xdd, 0x67, 0x8d, 0x7d, 0x0a, 0x8b, 0x60, 0xba, 0xe7, 0x62, 0xa7, 0x63, 0x1c, 0x62, + 0x9f, 0x48, 0xf8, 0xbb, 0x78, 0x1b, 0xdc, 0x0c, 0xe9, 0x88, 0xa6, 0xb9, 0x61, 0x39, 0xae, 0x07, + 0xb1, 0x6b, 0xf7, 0x9c, 0x16, 0xee, 0x93, 0x28, 0xae, 0x44, 0xd8, 0x0d, 0x83, 0x55, 0x0d, 0x2f, + 0x2a, 0x70, 0xf1, 0x7d, 0x70, 0x23, 0x84, 0xd5, 0xb0, 0x27, 0x39, 0xd8, 0xc4, 0x1d, 0xcf, 0x32, + 0xda, 0x5a, 0x6f, 0xe7, 0xd0, 0xf2, 0xd2, 0x65, 0x8a, 0x12, 0xf8, 0xb0, 0x87, 0x5d, 0xcf, 0xb2, + 0x3b, 0x1d, 0xc3, 0x72, 0x70, 0x56, 0x02, 0x5f, 0x07, 0xb7, 0x43, 0x02, 0x10, 0xef, 0x59, 0x2e, + 0x11, 0x70, 0xdf, 0x68, 0xb7, 0x71, 0x67, 0x2f, 0x2b, 0x11, 0x61, 0x01, 0x4c, 0x1f, 0xee, 0x1a, + 0xc8, 0x3b, 0xe9, 0xe2, 0x42, 0x9e, 0xf6, 0x9d, 0x3e, 0xdc, 0x35, 0xf4, 0x93, 0x2e, 0x16, 0x96, + 0x01, 0x68, 0xdb, 0x7b, 0x56, 0x07, 0xed, 0xb6, 0xed, 0xe3, 0xc2, 0x04, 0xed, 0x9c, 0xa1, 0x2d, + 0x1b, 0x6d, 0xfb, 0x98, 0xc9, 0x0f, 0x71, 0xcb, 0x3e, 0xc2, 0xce, 0x89, 0x64, 0x9b, 0xd8, 0x95, + 0xec, 0x8e, 0x67, 0x75, 0x7a, 0x38, 0xe3, 0xa4, 0xbc, 0x0b, 0x96, 0x47, 0x08, 0x74, 0x4f, 0x32, + 0x22, 0xbf, 0x07, 0xae, 0x0e, 0x21, 0x37, 0x1c, 0xab, 0xe3, 0x65, 0xc4, 0x2e, 0x02, 0xbe, 0x64, + 0xb9, 0x14, 0xb9, 0x86, 0x3d, 0xc3, 0x34, 0x3c, 0x43, 0x98, 0x03, 0x79, 0xcb, 0xf4, 0x21, 0xf3, + 0x96, 0x59, 0x34, 0x40, 0x21, 0x80, 0x09, 0x6c, 0x20, 0x84, 0x95, 0xc1, 0xb4, 0xe3, 0xb7, 0x51, + 0x8c, 0xb9, 0xb5, 0xfb, 0xab, 0x09, 0x0b, 0x63, 0x75, 0x98, 0x08, 0x0c, 0x51, 0x8b, 0x07, 0x40, + 0x08, 0x7a, 0x35, 0x0f, 0x77, 0x35, 0xcf, 0xf0, 0x7a, 0xae, 0xf0, 0x3e, 0x38, 0xe5, 0xd2, 0xbf, + 0x7c, 0xd2, 0x77, 0x53, 0x49, 0x33, 0x44, 0xe8, 0xa3, 0x91, 0xb5, 0x84, 0x1d, 0xc7, 0x76, 0xfc, + 0x09, 0x65, 0x3f, 0x8a, 0x7f, 0xc2, 0x81, 0xf9, 0xa6, 0x12, 0x41, 0x71, 0x3c, 0x6c, 0x32, 0x55, + 0xc9, 0x60, 0xfa, 0xd0, 0x1f, 0x1a, 0xe5, 0x79, 0x26, 0xc3, 0x70, 0x02, 0x5d, 0xc0, 0x10, 0x55, + 0x90, 0x42, 0xc1, 0xf3, 0x94, 0xc8, 0x2b, 0x19, 0x04, 0x0f, 0x46, 0x1d, 0x08, 0x5f, 0xfc, 0x4f, + 0x0e, 0x5c, 0xef, 0x8b, 0x19, 0x28, 0x4d, 0xc3, 0x6d, 0xdc, 0x22, 0x2b, 0xe4, 0xb9, 0x0a, 0x5c, + 0x8b, 0x4c, 0x23, 0x13, 0xf9, 0x61, 0xe6, 0x69, 0xec, 0x93, 0x0b, 0x48, 0x44, 0xc6, 0x3f, 0xf1, + 0xd9, 0xc7, 0xff, 0x6b, 0x79, 0xe2, 0x84, 0x02, 0x00, 0xa5, 0xe3, 0xe1, 0x3d, 0xc7, 0x20, 0x23, + 0x17, 0xb7, 0x34, 0x55, 0x29, 0x49, 0x92, 0xdd, 0xe9, 0xe0, 0x96, 0xf7, 0xc2, 0xeb, 0xe1, 0xc7, + 0xf9, 0xa8, 0x1d, 0x94, 0x0c, 0xcf, 0xd8, 0x31, 0x5c, 0x0c, 0x4b, 0x9a, 0xdc, 0x71, 0xec, 0x76, + 0xfb, 0x45, 0x1f, 0xbf, 0xf0, 0x18, 0x14, 0x5c, 0x6a, 0xf4, 0xd8, 0x44, 0x01, 0x65, 0x17, 0xb5, + 0xec, 0x5e, 0xc7, 0x2b, 0x4c, 0x5e, 0xe7, 0xee, 0x4d, 0xc0, 0xf9, 0xa0, 0x3f, 0x10, 0xc5, 0x95, + 0x48, 0x6f, 0xf1, 0xdf, 0x38, 0x70, 0xa5, 0xaf, 0xb9, 0xcd, 0xde, 0x0e, 0x96, 0x37, 0x5f, 0x12, + 0xad, 0x15, 0x9f, 0x80, 0x42, 0x53, 0x91, 0x8c, 0x76, 0x5b, 0xb7, 0x45, 0xea, 0x2f, 0x22, 0x01, + 0x61, 0x15, 0x4c, 0xb4, 0xfc, 0x11, 0xcf, 0xad, 0x5d, 0x49, 0xa4, 0x2e, 0xe9, 0x22, 0x24, 0x80, + 0xc5, 0xef, 0x4d, 0x45, 0xf5, 0x58, 0xc2, 0xdd, 0xb6, 0x7d, 0xa2, 0x61, 0xe7, 0xc8, 0x6a, 0xe1, + 0x17, 0xde, 0xfa, 0xf6, 0xc0, 0x59, 0x93, 0x0e, 0x18, 0x1d, 0x62, 0x6f, 0xdf, 0x36, 0xa9, 0xc9, + 0xcd, 0xad, 0xad, 0x27, 0xd2, 0x1a, 0xa7, 0xa8, 0x55, 0xd6, 0x54, 0xa3, 0x94, 0xe0, 0xac, 0x19, + 0xf9, 0x25, 0x18, 0xe0, 0x8c, 0xcf, 0x88, 0xa6, 0x20, 0x53, 0x94, 0xcd, 0x07, 0xff, 0x1b, 0x36, + 0x24, 0x77, 0x81, 0xc0, 0x0c, 0xff, 0x2e, 0x22, 0x30, 0x1b, 0x15, 0x40, 0x58, 0x06, 0x0b, 0x25, + 0xb9, 0x51, 0x55, 0xb7, 0x51, 0x4d, 0xd6, 0x2b, 0x6a, 0x09, 0x35, 0xeb, 0x5a, 0x43, 0x96, 0x94, + 0x0d, 0x45, 0x2e, 0xf1, 0x39, 0x61, 0x1e, 0x08, 0x83, 0xdd, 0x62, 0x53, 0x57, 0x79, 0x4e, 0x28, + 0x80, 0x8b, 0x83, 0xed, 0x35, 0xb1, 0xde, 0x14, 0xab, 0x7c, 0xbe, 0x88, 0x01, 0xe8, 0xb3, 0x16, + 0x96, 0xc0, 0x65, 0x1f, 0x4e, 0xdf, 0x6e, 0xc8, 0x43, 0xc4, 0xaf, 0x82, 0xc5, 0x68, 0xa7, 0x52, + 0xd7, 0x74, 0xb1, 0x5a, 0x45, 0x9a, 0x04, 0x95, 0x86, 0xce, 0x73, 0xc2, 0x22, 0x98, 0x8f, 0xf6, + 0x8b, 0x35, 0xf1, 0x23, 0xb5, 0x8e, 0x64, 0x49, 0xe3, 0xf3, 0xc5, 0x4f, 0x27, 0xc1, 0xad, 0xfe, + 0xf8, 0x25, 0x07, 0x1b, 0x1e, 0x0e, 0x7e, 0x9d, 0x48, 0x76, 0x67, 0xd7, 0xda, 0x7b, 0xe1, 0xed, + 0xd2, 0x06, 0x67, 0x5b, 0x74, 0xa4, 0x83, 0x76, 0xf9, 0x24, 0x83, 0xc1, 0x24, 0x2b, 0x6c, 0x95, + 0xfd, 0x1d, 0xd8, 0x67, 0x2b, 0xf2, 0xab, 0xf8, 0x67, 0x1c, 0x98, 0x8d, 0x76, 0x13, 0xeb, 0x91, + 0xd4, 0xfa, 0x86, 0x52, 0x8e, 0xb7, 0x9e, 0x91, 0x6e, 0x71, 0x4b, 0x43, 0xb2, 0xb4, 0x86, 0x34, + 0xad, 0xc6, 0x73, 0x64, 0xfe, 0xe3, 0xbb, 0x65, 0x45, 0x92, 0xf9, 0x7c, 0x3c, 0x3a, 0x2c, 0x69, + 0xd4, 0x04, 0x26, 0x84, 0x05, 0x70, 0x29, 0x06, 0x7d, 0x53, 0xe3, 0x27, 0x8b, 0xff, 0xc1, 0x81, + 0x6b, 0x31, 0xf1, 0xd2, 0xdf, 0x17, 0xbc, 0xf0, 0x8e, 0xff, 0x97, 0xf3, 0xd1, 0xc5, 0x11, 0x0c, + 0x9f, 0xcd, 0x5c, 0xcf, 0xc1, 0x35, 0xbd, 0xaa, 0xbd, 0xf0, 0x3a, 0xf8, 0xcd, 0x3c, 0x78, 0x18, + 0x75, 0x90, 0xee, 0x81, 0x67, 0x77, 0x49, 0x18, 0x3c, 0xc2, 0x25, 0xcb, 0xc1, 0x2d, 0xcf, 0x76, + 0x4e, 0x74, 0xdb, 0x6e, 0xbb, 0x4a, 0xc7, 0xf5, 0x8c, 0x97, 0x20, 0x1b, 0xf8, 0x4e, 0x1e, 0xac, + 0xa6, 0x29, 0x24, 0x34, 0x91, 0x17, 0x5e, 0x1b, 0x7f, 0x91, 0x07, 0x77, 0xfa, 0xda, 0x10, 0x7b, + 0x9e, 0x1d, 0xfc, 0x1d, 0x49, 0x21, 0x5f, 0xf8, 0x08, 0x72, 0x17, 0x9c, 0x8b, 0x4f, 0xa7, 0xe7, + 0x9c, 0xc1, 0x34, 0xfa, 0x9b, 0x79, 0x70, 0xb3, 0xaf, 0x2e, 0x59, 0x5a, 0xa3, 0xab, 0xa6, 0xf3, + 0x32, 0xed, 0x45, 0xff, 0x95, 0x03, 0x0b, 0xc3, 0x19, 0x17, 0x09, 0x54, 0x2f, 0xd9, 0xc0, 0x59, + 0xe6, 0x50, 0xb7, 0xcd, 0x17, 0xdf, 0x47, 0xfc, 0x8c, 0x03, 0x57, 0x87, 0x07, 0x2e, 0x76, 0xbb, + 0x24, 0xcd, 0x7e, 0x09, 0x92, 0x88, 0x6f, 0xe7, 0xc1, 0xfd, 0x31, 0x49, 0x84, 0x22, 0xd6, 0x1a, + 0x76, 0xdb, 0x6a, 0x9d, 0xbc, 0xf0, 0x8a, 0xf8, 0x6f, 0x0e, 0x14, 0xfb, 0x8a, 0x68, 0x38, 0x56, + 0xa7, 0x65, 0x75, 0x8d, 0xb6, 0xfb, 0xf2, 0x04, 0xcb, 0x7f, 0xe7, 0xc0, 0x72, 0x5f, 0x03, 0x3a, + 0x76, 0x3d, 0xff, 0xe0, 0xed, 0x65, 0xf0, 0xfb, 0xff, 0xc2, 0x81, 0x42, 0xc4, 0x0b, 0xf8, 0x17, + 0x2f, 0xe6, 0x0b, 0x3f, 0xee, 0x25, 0xe2, 0xf5, 0x7d, 0x6f, 0x8f, 0x8f, 0xa1, 0xdd, 0x8e, 0x5e, + 0x0e, 0xfd, 0x1d, 0xb5, 0x88, 0x81, 0x5e, 0xcd, 0x38, 0x8a, 0x5e, 0x76, 0xdc, 0x04, 0x67, 0x49, + 0x86, 0x60, 0x1a, 0x8e, 0x89, 0x7a, 0x2e, 0x66, 0x97, 0x09, 0xd3, 0x70, 0x36, 0x68, 0x6c, 0xba, + 0xd8, 0x14, 0x96, 0xc0, 0xcc, 0x89, 0x71, 0xd8, 0x66, 0x00, 0x79, 0x0a, 0x30, 0x4d, 0x1a, 0x68, + 0xe7, 0x1d, 0x70, 0xee, 0xd0, 0x36, 0x31, 0x3a, 0xde, 0xc7, 0x1d, 0xe4, 0x1a, 0x47, 0xd8, 0xf4, + 0xef, 0x5d, 0xce, 0x92, 0xe6, 0xad, 0x7d, 0xdc, 0x21, 0x2c, 0x4d, 0x41, 0x04, 0xcb, 0xbb, 0x16, + 0x6e, 0x9b, 0x2e, 0x3a, 0xb6, 0xbc, 0x7d, 0xd4, 0xb2, 0x3b, 0x47, 0xd8, 0x71, 0x2d, 0xbb, 0x83, + 0xe8, 0x59, 0xbf, 0x5b, 0x98, 0xbc, 0x3e, 0x71, 0x6f, 0x06, 0x2e, 0x32, 0xa0, 0x2d, 0xcb, 0xdb, + 0x97, 0x42, 0x10, 0x99, 0x42, 0x14, 0x6f, 0x90, 0xed, 0xe2, 0xe0, 0x58, 0x49, 0x72, 0xd3, 0x8e, + 0x8c, 0xf8, 0x55, 0xb0, 0x32, 0x04, 0xf2, 0xd4, 0xc2, 0xc7, 0x25, 0xbb, 0xd5, 0x3b, 0xc4, 0x1d, + 0xcf, 0x18, 0x3c, 0x5e, 0x2b, 0xfe, 0x25, 0x07, 0x2e, 0x89, 0xae, 0x6b, 0x91, 0x95, 0x42, 0x0d, + 0x26, 0x5c, 0x29, 0x77, 0xc1, 0x39, 0x5f, 0x42, 0x8a, 0x83, 0xc2, 0x6b, 0x96, 0xb9, 0x68, 0xb3, + 0x62, 0x0a, 0x37, 0xc0, 0xac, 0x67, 0x7b, 0x46, 0x1b, 0x79, 0xf6, 0x01, 0xee, 0xb0, 0x6b, 0x84, + 0x09, 0x78, 0x86, 0xb6, 0xe9, 0xb4, 0x89, 0xe8, 0xb8, 0xeb, 0xd8, 0x87, 0x5d, 0x2f, 0x80, 0x99, + 0xa0, 0x30, 0xb3, 0xac, 0xd1, 0x07, 0x7a, 0x05, 0x9c, 0x6f, 0x85, 0x32, 0x04, 0x80, 0x2c, 0xcb, + 0xe3, 0xfb, 0x1d, 0x0c, 0xb8, 0xf8, 0x0f, 0x1c, 0xb8, 0xc8, 0xe4, 0x96, 0x3f, 0xc6, 0xad, 0xde, + 0x67, 0x10, 0x7b, 0x19, 0x80, 0x0e, 0x99, 0x35, 0x96, 0x4d, 0x32, 0xa1, 0x67, 0x48, 0x0b, 0x4d, + 0x24, 0x47, 0x46, 0x35, 0x91, 0x61, 0x54, 0x93, 0x59, 0x47, 0x35, 0x95, 0x30, 0xaa, 0xc7, 0x60, + 0x91, 0x0d, 0xaa, 0x8e, 0x8f, 0xa5, 0x88, 0xb8, 0xe1, 0xdd, 0x58, 0xcb, 0xf0, 0xf0, 0x9e, 0xed, + 0x9c, 0x04, 0x77, 0x63, 0xc1, 0xef, 0xe2, 0x8f, 0x38, 0x70, 0x81, 0xa1, 0x8a, 0xf4, 0xea, 0x16, + 0xe2, 0xaf, 0xf5, 0xb0, 0x4b, 0xad, 0x3b, 0x58, 0x6d, 0xec, 0xac, 0x8e, 0x21, 0xce, 0x06, 0x8d, + 0xf4, 0xf0, 0xeb, 0xe7, 0x32, 0x83, 0x9f, 0x72, 0x60, 0x36, 0x90, 0x98, 0x34, 0x0b, 0xf3, 0xe0, + 0x94, 0x41, 0xff, 0xf2, 0x65, 0xf4, 0x7f, 0xfd, 0x7c, 0xa4, 0xbb, 0x05, 0x04, 0xa6, 0xc8, 0xaa, + 0xe5, 0x7a, 0x89, 0xb7, 0x8d, 0xdf, 0x00, 0x85, 0x28, 0xd4, 0xe1, 0x4e, 0xe4, 0x66, 0x52, 0x00, + 0x93, 0x91, 0x5b, 0x4c, 0xfa, 0xb7, 0xa0, 0x82, 0x73, 0x87, 0x14, 0xca, 0xdd, 0xb7, 0xba, 0xe8, + 0xc0, 0xea, 0x30, 0x67, 0x32, 0xb7, 0x76, 0xa7, 0xef, 0xf8, 0x22, 0x57, 0xef, 0x47, 0x0f, 0x57, + 0x6b, 0x21, 0xf8, 0xa6, 0xd5, 0x31, 0xe1, 0xdc, 0xe1, 0xc0, 0xef, 0xe2, 0x57, 0x00, 0xdf, 0x17, + 0x80, 0x2d, 0x7a, 0xa1, 0x3c, 0xe2, 0xea, 0x93, 0xdd, 0xea, 0xe8, 0x18, 0xfb, 0xce, 0x7e, 0x90, + 0x78, 0xb3, 0x6b, 0x7e, 0x7e, 0xc4, 0x4b, 0x98, 0x84, 0xaa, 0xe7, 0x47, 0xfc, 0xaf, 0x38, 0x30, + 0x3f, 0x3c, 0x31, 0xcf, 0x59, 0x3b, 0xc2, 0x47, 0xc1, 0x5c, 0xa2, 0x90, 0x5e, 0x5a, 0x44, 0x4c, + 0xb2, 0x95, 0x60, 0x5a, 0x6b, 0xe3, 0xe4, 0x7f, 0xce, 0x13, 0xf0, 0x7f, 0x2e, 0xff, 0x73, 0x9e, + 0xe3, 0xcf, 0x55, 0xfe, 0x3f, 0xc8, 0x47, 0xe5, 0x2f, 0x3b, 0x46, 0xc7, 0x73, 0x75, 0xbb, 0xe9, + 0x62, 0x47, 0x58, 0x05, 0x17, 0x68, 0xc4, 0x40, 0x8e, 0xdd, 0xc6, 0x2e, 0xda, 0x23, 0x7d, 0x7e, + 0xd2, 0x30, 0x05, 0xcf, 0xd3, 0x2e, 0x12, 0x73, 0xdd, 0x32, 0xeb, 0x20, 0x41, 0x9f, 0xc1, 0x5b, + 0x9d, 0x7d, 0xec, 0x58, 0xf4, 0x62, 0x70, 0x00, 0x73, 0x82, 0x62, 0x2e, 0x52, 0x20, 0x25, 0x80, + 0x19, 0x20, 0xf1, 0x3a, 0xb8, 0xc8, 0x48, 0x78, 0x8e, 0x61, 0x79, 0x7d, 0xcc, 0x3c, 0xc5, 0x14, + 0x68, 0x9f, 0x4e, 0xbb, 0x02, 0x0c, 0x09, 0x5c, 0x1d, 0x66, 0x3a, 0x84, 0x3b, 0x49, 0x71, 0x97, + 0x06, 0xb9, 0x0e, 0x12, 0x59, 0x02, 0x33, 0x3d, 0x17, 0x3b, 0x88, 0x7a, 0xb1, 0xa9, 0x7e, 0x2d, + 0x46, 0xdd, 0x38, 0xc4, 0xc5, 0x1f, 0x4c, 0x44, 0x35, 0x04, 0xf1, 0x91, 0x85, 0x8f, 0x9f, 0xf7, + 0x0a, 0x7b, 0x0c, 0x16, 0x4c, 0xe3, 0xc4, 0x45, 0x5d, 0xc3, 0xf5, 0x50, 0x07, 0x7f, 0xec, 0x21, + 0xa3, 0x67, 0x5a, 0x1e, 0x22, 0xeb, 0xc0, 0x1f, 0xfc, 0x25, 0x02, 0xd0, 0x30, 0x48, 0xc0, 0xfc, + 0xd8, 0x13, 0x49, 0x6f, 0x89, 0x88, 0xb0, 0x01, 0xae, 0x45, 0xfc, 0xac, 0x83, 0xbf, 0xd6, 0xb3, + 0x1c, 0x4c, 0xd2, 0x1f, 0x17, 0xb5, 0xf6, 0x8d, 0xce, 0x9e, 0xaf, 0xf6, 0x69, 0xb8, 0xdc, 0x07, + 0x83, 0x11, 0x28, 0x89, 0x01, 0x09, 0x8f, 0x41, 0xc1, 0xa1, 0x43, 0x43, 0xbb, 0x84, 0x08, 0xee, + 0xb4, 0x4e, 0x42, 0x02, 0x93, 0x94, 0xc0, 0x3c, 0xeb, 0xdf, 0x08, 0xba, 0x03, 0xcc, 0xf7, 0xc0, + 0x92, 0x8f, 0x69, 0x1a, 0x27, 0xc8, 0xde, 0x45, 0x87, 0x76, 0x87, 0xe4, 0x7c, 0x3e, 0xf2, 0x14, + 0x45, 0xbe, 0xcc, 0x40, 0x4a, 0xc6, 0x89, 0xba, 0x5b, 0x23, 0xfd, 0x01, 0xf6, 0xdb, 0x60, 0xa1, + 0xd3, 0xa3, 0xb6, 0x6d, 0xef, 0x22, 0x07, 0x1f, 0xda, 0x47, 0xd8, 0x44, 0xbe, 0xa8, 0x85, 0x53, + 0x74, 0xe4, 0xf3, 0x0c, 0x40, 0xdd, 0x85, 0xac, 0xdb, 0x0f, 0x14, 0xc5, 0xdf, 0xe6, 0x46, 0x27, + 0xe6, 0x79, 0x2f, 0xbd, 0x87, 0xe0, 0x12, 0x8b, 0x52, 0x88, 0x84, 0x29, 0xe4, 0x0f, 0xd4, 0x32, + 0xfd, 0xd2, 0x15, 0xc1, 0x18, 0xe2, 0xaf, 0x98, 0xc5, 0xef, 0x72, 0x60, 0x21, 0x52, 0x16, 0xc1, + 0x2e, 0xb6, 0x93, 0xe2, 0xaa, 0xb0, 0x0e, 0x26, 0x23, 0xc1, 0x71, 0x35, 0x51, 0xca, 0x11, 0x8a, + 0x34, 0x48, 0x52, 0xdc, 0x41, 0xf3, 0x9d, 0x18, 0x32, 0x5f, 0x9b, 0xec, 0x0a, 0x46, 0xb0, 0x69, + 0x79, 0x0d, 0xcb, 0xb5, 0xea, 0x23, 0xba, 0x5a, 0xcb, 0x2e, 0x45, 0x4c, 0x44, 0x72, 0xc0, 0xf5, + 0x18, 0x86, 0xc1, 0x26, 0xed, 0xf3, 0xe1, 0xf9, 0x75, 0xb0, 0x14, 0x33, 0xc4, 0xb0, 0x62, 0xa9, + 0x02, 0x26, 0x5b, 0xb6, 0x19, 0x94, 0x42, 0x3d, 0xca, 0xce, 0x8a, 0xe1, 0x4b, 0xb6, 0x89, 0x21, + 0xa5, 0x90, 0x50, 0xba, 0xf4, 0xcd, 0x3c, 0xb8, 0x12, 0xab, 0x64, 0xdc, 0xfd, 0x5c, 0xc6, 0x4b, + 0xac, 0xc6, 0xf5, 0x70, 0xf7, 0xd9, 0xad, 0x86, 0x88, 0x04, 0x29, 0xae, 0x50, 0x1d, 0xda, 0x91, + 0x3e, 0x7a, 0x36, 0x2a, 0xa3, 0x47, 0x53, 0x37, 0xe3, 0x54, 0xc0, 0x4e, 0x24, 0xd4, 0x2e, 0xee, + 0xfc, 0xe2, 0x6a, 0x62, 0x13, 0x9c, 0x76, 0x99, 0x9c, 0x54, 0x15, 0x73, 0x63, 0xe2, 0x6a, 0xd2, + 0x00, 0x61, 0x40, 0xa1, 0xf8, 0xad, 0x3c, 0xb8, 0x1d, 0xa3, 0x88, 0x0d, 0xb2, 0xd3, 0xfd, 0x5c, + 0x17, 0xc1, 0x73, 0x51, 0x85, 0x0c, 0xa6, 0xe8, 0x9e, 0xdc, 0x57, 0xc4, 0x83, 0xec, 0x44, 0xe8, + 0x00, 0x21, 0xc3, 0x2e, 0xfe, 0x17, 0x97, 0xe0, 0x04, 0xc8, 0x9e, 0xb3, 0x7b, 0xf2, 0x8b, 0x3b, + 0xfe, 0x0d, 0x30, 0x49, 0xf7, 0x8e, 0x6c, 0xf8, 0xcf, 0x20, 0x0f, 0x19, 0x1a, 0xad, 0xec, 0xa0, + 0xf8, 0xc5, 0xbf, 0xe5, 0xc0, 0x8d, 0x18, 0x05, 0x54, 0xad, 0xce, 0x41, 0xe4, 0x40, 0xe6, 0x17, + 0x51, 0x03, 0x02, 0x98, 0x6c, 0x5b, 0x9d, 0x03, 0x3f, 0x8e, 0xd0, 0xbf, 0x8b, 0x9f, 0xe4, 0xc1, + 0x85, 0xb0, 0x1c, 0x99, 0xa6, 0x3e, 0xe1, 0x81, 0x52, 0xfa, 0x96, 0x3b, 0x72, 0xa1, 0x85, 0x6c, + 0xc7, 0xda, 0xb3, 0x3a, 0xbe, 0xf3, 0x0c, 0x2f, 0xb4, 0x54, 0xda, 0x2a, 0xdc, 0x06, 0x73, 0xad, + 0xb6, 0xdd, 0x33, 0x51, 0xd7, 0xb1, 0x8f, 0x2c, 0x13, 0x3b, 0xc1, 0xd9, 0x12, 0x6d, 0x6d, 0xf8, + 0x8d, 0x82, 0x0a, 0xa6, 0x4d, 0xff, 0xe4, 0x9b, 0x66, 0x26, 0x67, 0xd6, 0xde, 0x48, 0x3d, 0x4b, + 0xc3, 0x66, 0x70, 0x58, 0xde, 0xd7, 0x5a, 0x40, 0x44, 0x58, 0x03, 0x97, 0xcc, 0xa0, 0xea, 0x02, + 0xf9, 0xd5, 0x1b, 0x91, 0x4c, 0xf0, 0x82, 0x39, 0x58, 0x92, 0x41, 0xa3, 0xea, 0x53, 0xb0, 0x98, + 0x4c, 0x5b, 0xb8, 0x0c, 0x4e, 0x9b, 0x3b, 0x51, 0x8d, 0x9c, 0x32, 0x77, 0xa8, 0x2e, 0xae, 0x81, + 0x33, 0xe6, 0x0e, 0xa2, 0x75, 0xe6, 0x2d, 0xbb, 0xed, 0xeb, 0x01, 0x98, 0x3b, 0x0d, 0xbf, 0xa5, + 0xf8, 0x53, 0x0e, 0x2c, 0x6e, 0x60, 0xc3, 0xeb, 0x39, 0x18, 0xe2, 0x96, 0x7d, 0x78, 0x88, 0x3b, + 0x66, 0xe4, 0x5c, 0x64, 0x20, 0xd2, 0x73, 0x83, 0x91, 0x5e, 0x78, 0x07, 0x9c, 0xde, 0x65, 0xa8, + 0xbe, 0x01, 0x5c, 0x4f, 0xd4, 0x4b, 0xc0, 0x22, 0x40, 0x10, 0x3e, 0x06, 0xcb, 0xfe, 0x9f, 0xc8, + 0x19, 0xe0, 0x8b, 0x22, 0x31, 0x62, 0x5c, 0xe8, 0x8c, 0x15, 0xda, 0x8f, 0x11, 0x4b, 0xbb, 0xc9, + 0x9d, 0xc5, 0x63, 0x70, 0x51, 0x17, 0xcb, 0xec, 0x68, 0x0b, 0x7f, 0xd8, 0xc3, 0x8e, 0xef, 0x1d, + 0xae, 0x01, 0x76, 0xee, 0x81, 0x3a, 0xb6, 0x89, 0x59, 0xa9, 0xf1, 0x04, 0x04, 0xb4, 0xa9, 0x4e, + 0x5a, 0xfa, 0x00, 0xd8, 0xdc, 0xc3, 0xc1, 0x59, 0x09, 0x03, 0x90, 0x49, 0x8b, 0xb0, 0x0c, 0x80, + 0xe5, 0x22, 0xb7, 0x47, 0x53, 0x34, 0x3f, 0x0b, 0x9e, 0xb1, 0x5c, 0x8d, 0x35, 0x14, 0xff, 0x79, + 0x02, 0x5c, 0x66, 0xb9, 0x5f, 0xd9, 0x31, 0xba, 0xfb, 0xe2, 0x96, 0xa6, 0xb5, 0x8c, 0x4e, 0x50, + 0x8a, 0x77, 0xc1, 0xa7, 0xdd, 0x5a, 0x43, 0x96, 0x7f, 0xaf, 0xca, 0x84, 0x98, 0x84, 0xe7, 0x19, + 0x8f, 0x56, 0x78, 0xe1, 0x1a, 0x91, 0x85, 0x4c, 0x06, 0x93, 0x65, 0xd2, 0x97, 0x85, 0x6c, 0xa5, + 0xdc, 0xfe, 0xc9, 0xce, 0x9e, 0x63, 0xf7, 0xba, 0x4c, 0x9a, 0x49, 0xff, 0x64, 0xa7, 0x4c, 0x9b, + 0xfa, 0x34, 0xe8, 0xa6, 0x89, 0x9a, 0x76, 0x40, 0x83, 0xee, 0x91, 0xc8, 0xfa, 0x60, 0x00, 0x5d, + 0xbb, 0x6d, 0xb5, 0x2c, 0xcc, 0x0e, 0xd7, 0x26, 0xe1, 0x59, 0xda, 0xda, 0xf0, 0x1b, 0x85, 0x57, + 0x81, 0xe0, 0xcb, 0x7e, 0xe0, 0xa2, 0x56, 0xbb, 0xe7, 0x7a, 0x41, 0x2a, 0x3d, 0x09, 0x79, 0x26, + 0xfa, 0x81, 0x2b, 0xf9, 0xed, 0xfd, 0x91, 0x3a, 0xa6, 0x1b, 0x19, 0xe9, 0xe9, 0xc8, 0x48, 0xa1, + 0xe9, 0xf6, 0x47, 0x7a, 0x0f, 0x30, 0x1a, 0xc8, 0x7d, 0x03, 0xed, 0xf4, 0x5a, 0x07, 0xd8, 0x73, + 0x0b, 0xd3, 0x14, 0x98, 0x09, 0xa7, 0xbd, 0xb1, 0xce, 0x5a, 0xc9, 0x5e, 0xce, 0x87, 0x34, 0x0e, + 0xdb, 0xe1, 0x9a, 0x76, 0x0b, 0x33, 0x14, 0x9a, 0xc9, 0xa8, 0x19, 0x87, 0xed, 0x60, 0x61, 0x47, + 0x30, 0x6c, 0xcb, 0x6c, 0x45, 0x30, 0x40, 0x04, 0x43, 0xb5, 0xcc, 0x56, 0x1f, 0x23, 0x54, 0x89, + 0xd1, 0xa2, 0xfb, 0x3b, 0xb7, 0x70, 0x26, 0xa2, 0x12, 0xd1, 0x6f, 0x2c, 0xfe, 0x80, 0x03, 0xb7, + 0x9a, 0x4a, 0x64, 0xb2, 0x25, 0xc7, 0x3e, 0xee, 0x3c, 0xc1, 0xc7, 0xb8, 0x5d, 0xb2, 0x76, 0x77, + 0x9f, 0x5a, 0xf8, 0x98, 0xcd, 0xfb, 0x63, 0x50, 0x30, 0x76, 0x77, 0x07, 0x8b, 0x5a, 0x51, 0xa4, + 0x8e, 0x7e, 0x06, 0xce, 0x07, 0xfd, 0x61, 0xe5, 0x37, 0x3b, 0xdf, 0x7f, 0x04, 0xe6, 0x47, 0x31, + 0x23, 0xaf, 0x16, 0x2e, 0x0e, 0xe3, 0xd1, 0xd2, 0xbf, 0x0d, 0x70, 0x45, 0xc3, 0xad, 0x9e, 0x63, + 0x79, 0x27, 0x90, 0x2e, 0xab, 0x32, 0xf6, 0x20, 0x76, 0x7b, 0x6d, 0x3f, 0x37, 0x8f, 0x3b, 0x59, + 0x13, 0xc0, 0x24, 0xd9, 0x0a, 0xfa, 0xdb, 0x42, 0xfa, 0x77, 0xd1, 0x00, 0x17, 0xc2, 0xc2, 0xb1, + 0x0d, 0xec, 0xb5, 0xf6, 0x19, 0xfa, 0xa8, 0x47, 0xe5, 0xe2, 0x3c, 0xea, 0x88, 0x1b, 0xcf, 0x8f, + 0xba, 0xf1, 0xe2, 0x27, 0x1c, 0x10, 0x88, 0x2d, 0xeb, 0x86, 0x7b, 0x40, 0x96, 0x2e, 0x0e, 0x3d, + 0x92, 0x67, 0xb8, 0x07, 0x51, 0x67, 0x37, 0x4d, 0x1a, 0x82, 0x17, 0x1a, 0x96, 0xeb, 0xf6, 0x06, + 0xa8, 0xce, 0xd0, 0x16, 0xda, 0x7d, 0x11, 0x4c, 0x11, 0xef, 0x12, 0xec, 0x59, 0xd8, 0x0f, 0x12, + 0x2f, 0x42, 0x3b, 0x8c, 0x14, 0x40, 0x4c, 0xc1, 0xb9, 0xb0, 0x99, 0x15, 0x40, 0xfc, 0xde, 0x07, + 0xe0, 0x5c, 0x93, 0x78, 0x21, 0x2a, 0x89, 0xda, 0xc1, 0xea, 0xae, 0xd0, 0x04, 0xe7, 0x7a, 0x16, + 0xda, 0xa1, 0xaf, 0x77, 0x50, 0x8b, 0x44, 0xda, 0xd4, 0xfd, 0xdf, 0xe8, 0x63, 0x9f, 0x4a, 0x0e, + 0x9e, 0xed, 0x59, 0x91, 0x56, 0xe1, 0x53, 0x0e, 0xdc, 0xef, 0x59, 0xc8, 0x66, 0x8f, 0x59, 0x90, + 0x7f, 0x86, 0x8a, 0xd1, 0x9e, 0x8d, 0x3c, 0x1b, 0x99, 0xc1, 0x6b, 0x1f, 0x9f, 0x23, 0xcb, 0xa7, + 0xc5, 0x31, 0x1c, 0xb3, 0x3d, 0x19, 0xaa, 0xe4, 0xe0, 0xcd, 0x9e, 0x95, 0x0a, 0x2b, 0x7c, 0x87, + 0x03, 0x37, 0x23, 0xd2, 0x19, 0xa6, 0x89, 0x76, 0x2d, 0x87, 0x6e, 0x57, 0xfd, 0x59, 0x65, 0x72, + 0xb1, 0x68, 0xf9, 0x5e, 0xba, 0x5c, 0xc9, 0x4f, 0x90, 0x2a, 0x39, 0x78, 0x35, 0x14, 0x29, 0x16, + 0x6c, 0x58, 0x57, 0x31, 0xd2, 0xb4, 0x0d, 0x2f, 0x9c, 0x9d, 0xa9, 0xac, 0xba, 0x4a, 0x79, 0xef, + 0x34, 0xa0, 0xab, 0x64, 0x58, 0xe1, 0x57, 0x39, 0x70, 0x3d, 0x22, 0x9d, 0x8b, 0x3d, 0xd4, 0x0a, + 0x9f, 0x46, 0x21, 0x97, 0xbe, 0x4a, 0xa2, 0xce, 0xf2, 0xcc, 0xda, 0x3b, 0xe9, 0x42, 0x25, 0x3d, + 0xac, 0xaa, 0xe4, 0xe0, 0x95, 0x50, 0x9a, 0x18, 0x20, 0xe1, 0xfb, 0x1c, 0xb8, 0x15, 0x11, 0xc3, + 0xf1, 0xcb, 0x20, 0x51, 0x2b, 0x78, 0x1f, 0x15, 0x88, 0x72, 0x9a, 0x8a, 0xf2, 0xa5, 0x74, 0x51, + 0xc6, 0xbd, 0xb0, 0xaa, 0xe4, 0xe0, 0xf5, 0x50, 0x9c, 0x04, 0xc0, 0x40, 0x33, 0x0e, 0x0e, 0x33, + 0x21, 0x93, 0x2e, 0x40, 0xf6, 0x66, 0xca, 0x9f, 0xae, 0xe9, 0x54, 0xcd, 0xa4, 0xbc, 0xb8, 0x62, + 0x9a, 0x49, 0x06, 0x12, 0x3e, 0x06, 0x57, 0xe2, 0xa4, 0xe8, 0x9e, 0xf8, 0x12, 0xcc, 0x50, 0x09, + 0xbe, 0x90, 0x5d, 0x82, 0xe8, 0x93, 0xad, 0x4a, 0x0e, 0x16, 0x46, 0xb8, 0xfb, 0x00, 0xc2, 0x2f, + 0x81, 0xe5, 0x51, 0xce, 0x5d, 0xc7, 0xea, 0x78, 0x3e, 0x6b, 0x40, 0x59, 0xbf, 0x95, 0x95, 0xf5, + 0xd0, 0x83, 0xaf, 0x4a, 0x0e, 0x2e, 0x0c, 0xf1, 0xee, 0x43, 0x08, 0x6d, 0xb0, 0xd0, 0xb3, 0x50, + 0x90, 0x6a, 0x92, 0xac, 0xcb, 0x21, 0xa1, 0x84, 0x12, 0xa7, 0x41, 0xed, 0xcc, 0x98, 0xcd, 0x58, + 0xfc, 0xb3, 0xa9, 0x4a, 0x0e, 0xce, 0xf7, 0xac, 0xd8, 0x07, 0x55, 0xdf, 0x61, 0xe6, 0x17, 0xb2, + 0xeb, 0xc7, 0xba, 0xa0, 0x76, 0xcc, 0xe7, 0x3c, 0x4b, 0x39, 0xbf, 0x9d, 0x81, 0x73, 0xfc, 0x4b, + 0x28, 0x66, 0x79, 0x29, 0xaf, 0xa5, 0xbe, 0x41, 0x0d, 0x2f, 0x14, 0xc6, 0xaf, 0xb7, 0x77, 0x59, + 0xe9, 0xbc, 0x2f, 0xc8, 0x59, 0x2a, 0xc8, 0x9b, 0x9f, 0xa9, 0xf0, 0x9e, 0xd9, 0xdc, 0x98, 0x87, + 0x12, 0xbf, 0xce, 0x1c, 0x68, 0x5f, 0x02, 0x3f, 0xa1, 0xef, 0xaf, 0x4b, 0x26, 0xc4, 0x1c, 0x15, + 0xe2, 0x71, 0x16, 0x21, 0xe2, 0xea, 0x9b, 0x2b, 0x39, 0x78, 0x2d, 0x22, 0x47, 0x6c, 0x09, 0xf4, + 0xef, 0x32, 0xef, 0x39, 0x2a, 0x4a, 0x2b, 0x28, 0x6d, 0x41, 0x87, 0x5e, 0xdb, 0xf5, 0x05, 0x3a, + 0x47, 0x05, 0xfa, 0xe2, 0x33, 0x08, 0x34, 0x5a, 0x71, 0x5c, 0xc9, 0xc1, 0x5b, 0xa3, 0x52, 0xf5, + 0xe1, 0xbc, 0xb6, 0x5f, 0x74, 0xf9, 0xd7, 0x1c, 0x78, 0x3c, 0x38, 0x4f, 0xb4, 0x5e, 0x15, 0x19, + 0xb4, 0x60, 0x15, 0x99, 0x41, 0xc5, 0x2a, 0xf2, 0x6c, 0xbb, 0xed, 0x27, 0x93, 0xed, 0xb6, 0x2f, + 0x29, 0x4f, 0x25, 0x7d, 0x92, 0x69, 0xfe, 0x32, 0xd5, 0x05, 0x57, 0x72, 0xf0, 0x61, 0x74, 0x52, + 0xb3, 0x15, 0x13, 0xff, 0x98, 0x03, 0x8f, 0x32, 0x8d, 0xa1, 0xaf, 0x6e, 0x26, 0xff, 0x79, 0x2a, + 0x7f, 0xf9, 0x33, 0xcb, 0x3f, 0x58, 0x99, 0x54, 0xc9, 0xc1, 0xd5, 0x34, 0xe1, 0x87, 0x6a, 0x99, + 0x7e, 0x9f, 0x03, 0xaf, 0x44, 0x25, 0x37, 0x7a, 0x24, 0xf3, 0x08, 0xf7, 0xa0, 0x91, 0x37, 0x58, + 0x4c, 0x60, 0x81, 0x0a, 0xfc, 0x7e, 0x06, 0x81, 0xc7, 0x55, 0xda, 0x56, 0x72, 0xf0, 0x4e, 0x5f, + 0xd0, 0xb1, 0x35, 0xb9, 0x7f, 0xce, 0x81, 0x07, 0x29, 0x96, 0x6b, 0x19, 0x87, 0x6c, 0xf3, 0x72, + 0xe2, 0x0b, 0x79, 0x81, 0x0a, 0xb9, 0xfe, 0x59, 0xec, 0x77, 0xb0, 0xd8, 0xad, 0x92, 0x83, 0xf7, + 0xc7, 0x18, 0xb1, 0x62, 0x1c, 0x46, 0x2b, 0xe3, 0x7e, 0x8b, 0x03, 0x77, 0xa2, 0xa2, 0x76, 0xc3, + 0x02, 0xb2, 0x91, 0x79, 0xbf, 0x48, 0x25, 0x7c, 0x37, 0x83, 0x84, 0x49, 0x55, 0x68, 0x95, 0x1c, + 0x2c, 0xf6, 0x45, 0x4b, 0xac, 0x55, 0xfb, 0x16, 0x07, 0x6e, 0x44, 0x65, 0xf2, 0xb0, 0xeb, 0x11, + 0x69, 0x3a, 0x03, 0xfe, 0xf8, 0x52, 0x6a, 0xf4, 0x1b, 0x53, 0x12, 0x56, 0xc9, 0xc1, 0xe5, 0xbe, + 0x24, 0x71, 0x35, 0x63, 0x0e, 0x58, 0x8a, 0xca, 0x10, 0xe4, 0xb9, 0x41, 0x1c, 0x9a, 0x4f, 0xb9, + 0x75, 0x4c, 0xaa, 0xc9, 0x62, 0x61, 0x37, 0xa1, 0x5e, 0xab, 0x0d, 0x0a, 0x3d, 0x8b, 0x24, 0x61, + 0x86, 0x87, 0x51, 0x07, 0x1f, 0xd3, 0xfd, 0xaf, 0x1f, 0x71, 0x2f, 0xa7, 0x1c, 0x8a, 0x25, 0x56, + 0x43, 0x55, 0x72, 0xf0, 0x62, 0xcf, 0x1a, 0xed, 0x14, 0x4e, 0x68, 0x90, 0x1f, 0xe6, 0xe6, 0x1a, + 0x47, 0x01, 0xcb, 0x42, 0xaa, 0x86, 0xc7, 0x94, 0x58, 0xb1, 0x81, 0xc6, 0x03, 0x08, 0xdf, 0x00, + 0xd7, 0xe2, 0x06, 0x4a, 0xab, 0x9a, 0x7c, 0xe6, 0x0b, 0xa9, 0x01, 0x66, 0x6c, 0x45, 0x54, 0x25, + 0x07, 0x17, 0x87, 0x47, 0xdd, 0x07, 0x11, 0xfe, 0x88, 0xb9, 0x90, 0x61, 0x09, 0xd8, 0xdd, 0x5d, + 0xb4, 0x6a, 0xca, 0x97, 0x66, 0x91, 0x4a, 0x23, 0x65, 0x95, 0x66, 0x4c, 0xf1, 0x55, 0x25, 0x07, + 0x6f, 0x0f, 0x09, 0x16, 0x0f, 0x2d, 0xfc, 0x29, 0x07, 0x56, 0xa3, 0x26, 0x68, 0xf5, 0x8f, 0x2a, + 0x91, 0x71, 0xec, 0xb2, 0xa3, 0x01, 0x7f, 0x59, 0xf8, 0x56, 0xb9, 0x94, 0xba, 0x85, 0xc8, 0xf6, + 0x5a, 0xb9, 0x92, 0x83, 0xf7, 0xfa, 0x56, 0x1a, 0x85, 0x3d, 0x76, 0x55, 0xcb, 0x6c, 0x0d, 0xbc, + 0x6c, 0xfe, 0x2e, 0x07, 0x6e, 0xc7, 0xa7, 0x0c, 0xa6, 0x8b, 0x30, 0x3d, 0x54, 0xf5, 0xc5, 0xbb, + 0x92, 0x39, 0x85, 0x8a, 0x7f, 0x44, 0x3c, 0x98, 0x42, 0x85, 0x30, 0xa6, 0x1b, 0x7d, 0x32, 0xeb, + 0x31, 0xb3, 0x26, 0xf1, 0xd6, 0xb3, 0x11, 0x2b, 0x27, 0x62, 0xb3, 0xe8, 0x4b, 0xb1, 0x9c, 0xba, + 0x74, 0xe3, 0x5f, 0xa5, 0xfa, 0x16, 0x1d, 0xff, 0x62, 0xf5, 0xab, 0xe0, 0xbc, 0x41, 0xeb, 0x9a, + 0x50, 0xbf, 0xaa, 0xa8, 0x70, 0x95, 0x72, 0x4a, 0x3e, 0x7c, 0x8e, 0xad, 0xc1, 0xab, 0xe4, 0x20, + 0x6f, 0x0c, 0x75, 0x04, 0x2e, 0x31, 0x6a, 0x02, 0xbe, 0x66, 0x69, 0x7a, 0xec, 0x8f, 0xec, 0x5a, + 0xea, 0x82, 0x1d, 0x73, 0xfb, 0xc9, 0x5c, 0xe2, 0xb8, 0xeb, 0x51, 0x3f, 0x55, 0x8e, 0x11, 0x22, + 0x3c, 0x05, 0x60, 0x72, 0x5c, 0x4f, 0x9d, 0xe7, 0xf1, 0x97, 0xa2, 0x6c, 0x9e, 0x53, 0x2e, 0x4e, + 0x7f, 0x85, 0xa3, 0x4e, 0x24, 0xd8, 0x37, 0x7e, 0x2d, 0xfa, 0x5d, 0x8e, 0x60, 0xcb, 0x78, 0x23, + 0xeb, 0xee, 0x35, 0xe9, 0xab, 0x1e, 0x03, 0xbb, 0xd7, 0x18, 0x20, 0xe1, 0x23, 0xe0, 0x4f, 0x16, + 0xc2, 0x41, 0x49, 0x62, 0xa1, 0x48, 0xb9, 0xbe, 0x96, 0x32, 0xed, 0x83, 0x25, 0x8c, 0x95, 0x1c, + 0x3c, 0x67, 0x0c, 0xb6, 0x0b, 0x87, 0xe0, 0xb2, 0x4f, 0x9b, 0x38, 0xa8, 0x68, 0x25, 0x63, 0xe1, + 0x66, 0xca, 0x69, 0x7f, 0x72, 0x41, 0x61, 0x25, 0x07, 0x2f, 0x19, 0x71, 0xbd, 0xc2, 0x0e, 0xb8, + 0xd4, 0x3f, 0x25, 0x61, 0x8e, 0x91, 0x4d, 0xe7, 0x2d, 0xca, 0xec, 0xd5, 0x44, 0x66, 0x31, 0xf7, + 0x21, 0x95, 0x1c, 0xbc, 0xe0, 0xc4, 0x5c, 0x93, 0x1c, 0x83, 0x2b, 0x09, 0x87, 0xeb, 0x8c, 0xd5, + 0xed, 0x94, 0x71, 0x25, 0x5f, 0x08, 0x10, 0x87, 0xbf, 0x9b, 0x7c, 0x5d, 0xb0, 0x03, 0xfc, 0x51, + 0x23, 0xbf, 0x88, 0xc1, 0x61, 0xb5, 0x92, 0x85, 0x3b, 0x29, 0x83, 0x8b, 0xa9, 0xaf, 0x24, 0x83, + 0x33, 0x62, 0xca, 0x2e, 0xab, 0xe0, 0x6c, 0xc8, 0x83, 0xce, 0xd2, 0x5d, 0x4a, 0xfb, 0x76, 0x2a, + 0x6d, 0x02, 0x5c, 0xc9, 0xc1, 0x59, 0x23, 0x5a, 0x19, 0xb9, 0x0d, 0x84, 0x68, 0xbd, 0x05, 0x9b, + 0x91, 0xc2, 0xbd, 0x94, 0x32, 0xee, 0xe1, 0xc2, 0x40, 0xea, 0x4d, 0x86, 0x8b, 0x05, 0x87, 0x48, + 0xf7, 0x68, 0x91, 0x59, 0xe1, 0x7e, 0x66, 0xd2, 0xac, 0x2a, 0x6d, 0x90, 0xb4, 0x5f, 0xa9, 0x36, + 0x44, 0xda, 0xa4, 0x45, 0x28, 0x85, 0x95, 0xcc, 0xa4, 0x59, 0xd5, 0xca, 0x20, 0x69, 0xbf, 0x92, + 0xa5, 0x0d, 0x16, 0xa2, 0xa4, 0xfd, 0x3a, 0x30, 0x5f, 0x2f, 0xaf, 0xa4, 0x9c, 0x0b, 0xc4, 0x17, + 0x06, 0x56, 0x72, 0x70, 0xde, 0x88, 0x2f, 0x19, 0x8c, 0xe7, 0xe6, 0xab, 0xea, 0xd5, 0x67, 0xe4, + 0x16, 0x2a, 0x6c, 0x84, 0x9b, 0xaf, 0xb6, 0x78, 0x6e, 0xbe, 0xf6, 0x5e, 0x7b, 0x46, 0x6e, 0xa1, + 0x0e, 0x47, 0xb8, 0xf9, 0x9a, 0x3c, 0x04, 0x8b, 0x51, 0x6e, 0xb4, 0x3c, 0xcc, 0x25, 0xd1, 0xb2, + 0xe7, 0x62, 0xa7, 0xb0, 0x9a, 0x99, 0x5d, 0xb4, 0x46, 0x6e, 0x90, 0xdd, 0x40, 0xf5, 0xdc, 0x6f, + 0x70, 0xa0, 0x18, 0x4d, 0x10, 0xa2, 0x37, 0x49, 0xfd, 0x63, 0x96, 0xc2, 0x83, 0xd4, 0x33, 0xd9, + 0xd4, 0x17, 0x7e, 0xec, 0x4c, 0x36, 0x04, 0x6b, 0x8d, 0x82, 0x09, 0x07, 0xe0, 0x72, 0xcc, 0x09, + 0x0b, 0xb6, 0x5a, 0xb8, 0xf0, 0x7a, 0x6a, 0x8a, 0x9d, 0xf0, 0xbe, 0x8e, 0xa5, 0xd8, 0x43, 0x9d, + 0x56, 0x0b, 0x0f, 0x33, 0x0b, 0xd2, 0x4d, 0xdb, 0xc4, 0x85, 0x87, 0x99, 0x99, 0x0d, 0xbd, 0x69, + 0x1b, 0x64, 0xd6, 0xef, 0x14, 0xbe, 0x02, 0xce, 0x7b, 0xc6, 0x9e, 0x1f, 0x87, 0x30, 0x09, 0x88, + 0xce, 0x49, 0x61, 0x2d, 0x25, 0x16, 0xc5, 0x5d, 0x38, 0x92, 0x58, 0xe4, 0x19, 0x7b, 0xd1, 0x76, + 0xc1, 0x03, 0x8b, 0xae, 0x7f, 0x3d, 0x83, 0x1c, 0x4a, 0x09, 0xed, 0x61, 0x7a, 0x90, 0xdd, 0x6b, + 0x7b, 0x85, 0x37, 0x52, 0x8e, 0xa4, 0xc6, 0xdd, 0xec, 0x54, 0x72, 0xf0, 0xb2, 0x1b, 0xdf, 0x3f, + 0xbc, 0x2c, 0xfc, 0x9a, 0x33, 0x7f, 0xc9, 0x3f, 0xca, 0x6c, 0xa7, 0xd1, 0x4a, 0xc5, 0x41, 0x3b, + 0x1d, 0xa8, 0x61, 0x8c, 0xe7, 0xe6, 0x2f, 0xc2, 0x37, 0x9f, 0x91, 0x5b, 0xdc, 0x22, 0x1c, 0x28, + 0xcc, 0xdb, 0x89, 0xde, 0xb5, 0xef, 0x62, 0xaf, 0xb5, 0xef, 0xc7, 0xc0, 0x2f, 0xa4, 0x44, 0xa4, + 0x98, 0xeb, 0x2d, 0x12, 0x91, 0xcc, 0x98, 0x5b, 0xaf, 0xef, 0x0d, 0x9d, 0xe6, 0xf9, 0x06, 0x38, + 0x7c, 0xc7, 0x5f, 0x78, 0x2b, 0xf3, 0xe1, 0x59, 0xf2, 0xa7, 0x19, 0x06, 0x8f, 0xf4, 0x62, 0xe1, + 0x84, 0x6f, 0x0e, 0xed, 0xec, 0x0f, 0x7a, 0x3b, 0x98, 0x5e, 0xce, 0x0e, 0x6c, 0x13, 0x1e, 0x67, + 0x3e, 0xe0, 0x1c, 0xfd, 0x62, 0xce, 0xe0, 0x01, 0x27, 0xed, 0x3f, 0x18, 0xd8, 0x1e, 0x7c, 0x3b, + 0x5e, 0x25, 0x46, 0xb7, 0x4b, 0x8f, 0x59, 0xc3, 0x03, 0xce, 0xb7, 0x53, 0x4f, 0xb8, 0xc7, 0x3d, + 0xbd, 0x1c, 0x74, 0x44, 0xb1, 0x8f, 0x33, 0xbb, 0x60, 0xc9, 0xb7, 0xb6, 0x3d, 0xc7, 0xe8, 0xee, + 0xd3, 0x2d, 0x9d, 0xdb, 0x32, 0x82, 0x4c, 0xe8, 0x1d, 0xca, 0xff, 0xf5, 0x14, 0x7b, 0x1b, 0xb9, + 0xaf, 0x27, 0xab, 0xc9, 0x88, 0x74, 0x1d, 0xbb, 0xfd, 0xab, 0xfc, 0x4f, 0xd8, 0x46, 0x6d, 0x80, + 0x6b, 0xcb, 0xb1, 0x8f, 0x3b, 0xe8, 0xff, 0xe3, 0x63, 0xdc, 0x46, 0xa6, 0xb5, 0xbb, 0x4b, 0xb7, + 0xc0, 0x85, 0x77, 0x53, 0xed, 0x21, 0xfd, 0x06, 0x99, 0xd9, 0xc3, 0x58, 0x38, 0xe1, 0xff, 0x81, + 0x4b, 0xb4, 0x88, 0x83, 0xde, 0x9b, 0xd2, 0x3b, 0x4f, 0x7f, 0xf4, 0xef, 0xa5, 0xdd, 0x54, 0x8e, + 0x5c, 0xbf, 0x56, 0x72, 0x50, 0xe8, 0x8d, 0x5e, 0xca, 0xb2, 0x03, 0xf5, 0xd8, 0x7d, 0x13, 0xee, + 0xfa, 0xcc, 0xbe, 0x98, 0x6a, 0x6f, 0xc9, 0xf5, 0x8c, 0xcc, 0xde, 0xc6, 0xd4, 0x3b, 0xfe, 0x0e, + 0x07, 0xee, 0x25, 0x48, 0xe0, 0x1f, 0x67, 0xd9, 0x5d, 0x1c, 0x4c, 0xfa, 0x97, 0x52, 0x43, 0x60, + 0x6a, 0x59, 0x21, 0xbb, 0xfd, 0x4b, 0xaf, 0x3e, 0xfc, 0x94, 0x03, 0x2b, 0xf1, 0x72, 0xd1, 0xba, + 0xb5, 0xe1, 0x2d, 0xdd, 0xfb, 0xa9, 0x97, 0x6f, 0x19, 0xea, 0xfc, 0xd8, 0xd9, 0x47, 0x96, 0x82, + 0x40, 0xff, 0x4c, 0x21, 0x76, 0xab, 0x49, 0x9f, 0x6f, 0x75, 0x83, 0x73, 0xd3, 0x0f, 0x3e, 0xcb, + 0x5e, 0x33, 0x52, 0x7b, 0x97, 0xb8, 0xd7, 0x8c, 0xd6, 0xe7, 0x7d, 0xc2, 0x4e, 0x49, 0x63, 0xc4, + 0x69, 0x5b, 0x9d, 0x83, 0x81, 0xd3, 0x05, 0x31, 0x75, 0xcb, 0x99, 0x52, 0x0a, 0x57, 0xc9, 0xc1, + 0x1b, 0x31, 0x02, 0x0d, 0x02, 0xad, 0x9f, 0x06, 0x53, 0x94, 0xe6, 0x93, 0xc9, 0xe9, 0x3c, 0x3f, + 0x41, 0x6c, 0x30, 0xdc, 0x09, 0x93, 0xb8, 0x1c, 0x5c, 0x9a, 0x51, 0xc9, 0x56, 0x7e, 0xc8, 0xf7, + 0x3f, 0xa2, 0x18, 0x6c, 0xd6, 0x84, 0x1b, 0x60, 0xb9, 0xa4, 0x68, 0x92, 0xfa, 0x54, 0x86, 0x08, + 0xca, 0x9a, 0xda, 0x84, 0xd2, 0xf0, 0x27, 0x90, 0xae, 0x80, 0xc2, 0x28, 0x88, 0x26, 0xc3, 0xa7, + 0x32, 0xe4, 0x39, 0xe1, 0x3a, 0xb8, 0x32, 0xda, 0xbb, 0xd9, 0x5c, 0x97, 0x61, 0x5d, 0xd6, 0x65, + 0x8d, 0xcf, 0x0b, 0x6f, 0x80, 0x07, 0xa3, 0x10, 0x25, 0x51, 0x17, 0xd7, 0x45, 0x4d, 0x46, 0x0d, + 0x55, 0xd3, 0xcb, 0x50, 0xd6, 0x90, 0x26, 0x57, 0x37, 0x50, 0x45, 0xd5, 0x74, 0xb9, 0xc4, 0x4f, + 0x08, 0xaf, 0x83, 0x57, 0xc7, 0x20, 0xd5, 0xb6, 0xb5, 0x0f, 0xab, 0x03, 0x18, 0x93, 0xc2, 0x1a, + 0x58, 0x1d, 0x87, 0xa1, 0xd6, 0xcb, 0x6a, 0x69, 0x7d, 0x00, 0x67, 0x4a, 0x78, 0x05, 0xdc, 0xcd, + 0x22, 0x1a, 0x2c, 0x69, 0xfc, 0x29, 0xe1, 0x1e, 0xb8, 0x95, 0x2a, 0x12, 0x81, 0x3c, 0x2d, 0xdc, + 0x01, 0xc5, 0x51, 0x48, 0xb1, 0xd1, 0xa8, 0x2a, 0x92, 0xa8, 0x2b, 0x6a, 0x1d, 0x55, 0x74, 0xbd, + 0xc1, 0x4f, 0x0b, 0xb7, 0xc1, 0x8d, 0xf1, 0x70, 0xba, 0xd4, 0xe0, 0x67, 0xe2, 0xc1, 0xb6, 0x94, + 0x7a, 0x49, 0xdd, 0xd2, 0x50, 0x49, 0xd6, 0x36, 0x75, 0xb5, 0xc1, 0x03, 0xe1, 0x55, 0x70, 0x6f, + 0x8c, 0x7c, 0xda, 0x87, 0x55, 0x36, 0x67, 0x54, 0xc6, 0x33, 0x29, 0x0a, 0xee, 0x0f, 0x5d, 0x2e, + 0x69, 0x15, 0x65, 0x43, 0xe7, 0x67, 0x85, 0x47, 0xe0, 0xf5, 0x4c, 0xf4, 0xa3, 0x2a, 0x3e, 0x9b, + 0xc2, 0x07, 0xca, 0x25, 0x65, 0x70, 0xea, 0xe7, 0xb2, 0x4e, 0x4a, 0x59, 0x6a, 0xf0, 0xe7, 0x32, + 0x4d, 0x0a, 0x81, 0xe4, 0x33, 0xab, 0x87, 0x40, 0x9f, 0x17, 0xde, 0x05, 0x6f, 0x3d, 0x8b, 0x7a, + 0xfc, 0xf5, 0x50, 0x95, 0x35, 0x8d, 0x17, 0x84, 0xd7, 0xc0, 0xfd, 0x2c, 0xc8, 0xe2, 0x47, 0x4d, + 0x28, 0xf3, 0x17, 0x84, 0xbb, 0xe0, 0xe6, 0x18, 0xf0, 0xd2, 0x76, 0x5d, 0xac, 0xa9, 0xa5, 0x75, + 0xfe, 0x62, 0x8a, 0x89, 0x4b, 0xa2, 0xa6, 0x89, 0xf5, 0x12, 0x14, 0xd1, 0xa6, 0xbc, 0xad, 0x35, + 0x44, 0x49, 0xd6, 0xf8, 0x4b, 0x29, 0xb3, 0xd6, 0xc7, 0x89, 0xce, 0xc1, 0xbc, 0xf0, 0x18, 0x3c, + 0x1a, 0x83, 0x25, 0x57, 0x45, 0x4d, 0x57, 0x24, 0x4d, 0x16, 0xa1, 0x54, 0x19, 0xc0, 0xbc, 0x9c, + 0x69, 0xbe, 0x7d, 0x7c, 0x51, 0xaa, 0xc8, 0x7c, 0x21, 0x45, 0x5b, 0x0c, 0xa3, 0x26, 0xd7, 0x54, + 0xb8, 0x5d, 0x5a, 0xe7, 0x17, 0x32, 0x31, 0xa0, 0x9a, 0x45, 0x8c, 0xc1, 0x62, 0xca, 0x60, 0x18, + 0x86, 0x54, 0x6d, 0x6a, 0xfa, 0x90, 0xf1, 0x2e, 0x09, 0x2b, 0xe0, 0x4e, 0xaa, 0x75, 0xb1, 0x59, + 0xbc, 0x22, 0xac, 0x82, 0x95, 0x4c, 0xf6, 0xc5, 0xe0, 0x97, 0x53, 0x26, 0xb3, 0x0f, 0x5f, 0x53, + 0x24, 0xa8, 0x6a, 0xea, 0x86, 0xce, 0x5f, 0x15, 0xbe, 0x00, 0xd6, 0xc6, 0x4d, 0xa6, 0x2a, 0x6d, + 0x42, 0x55, 0x94, 0x2a, 0x43, 0x7e, 0xee, 0x5a, 0x8a, 0xed, 0x07, 0xbe, 0x51, 0xd4, 0xab, 0xa2, + 0xc6, 0x5f, 0x4f, 0x59, 0x53, 0x5a, 0x5d, 0xdd, 0xda, 0xa8, 0x8a, 0x9b, 0x32, 0x7f, 0x23, 0x81, + 0xae, 0x2a, 0x45, 0xb4, 0x5b, 0xd2, 0x50, 0x03, 0xaa, 0x5f, 0xde, 0xe6, 0x8b, 0x09, 0xa6, 0x18, + 0x85, 0xae, 0x28, 0xe5, 0x0a, 0x12, 0x9f, 0x8a, 0x4a, 0x55, 0x5c, 0x57, 0xaa, 0x8a, 0xbe, 0xcd, + 0xdf, 0x14, 0xde, 0x02, 0x6f, 0xa4, 0x60, 0xd1, 0x15, 0xa2, 0x48, 0x08, 0xca, 0x65, 0x45, 0xd3, + 0x21, 0x75, 0x9d, 0xfc, 0xad, 0x78, 0x2f, 0xac, 0x89, 0xb5, 0x6a, 0xd4, 0xc5, 0xf2, 0xb7, 0x85, + 0x22, 0xb8, 0x3a, 0x0a, 0x27, 0x4b, 0x6b, 0xec, 0x63, 0x7f, 0x75, 0x49, 0xe6, 0xef, 0x24, 0x18, + 0x9d, 0x2a, 0x0d, 0xbb, 0x61, 0x54, 0x57, 0xeb, 0x48, 0x2c, 0xf1, 0x77, 0x85, 0x5b, 0xe0, 0xfa, + 0xb8, 0xb8, 0x48, 0x3f, 0x02, 0x77, 0x2f, 0xde, 0xf6, 0xa3, 0x11, 0x40, 0xdc, 0xd2, 0x90, 0xa4, + 0xd6, 0x35, 0xb5, 0x2a, 0xf3, 0xf7, 0x85, 0x6b, 0x60, 0x69, 0x14, 0xbc, 0x26, 0x35, 0x90, 0xa6, + 0x97, 0x14, 0x95, 0x5f, 0xa1, 0x9f, 0x4a, 0x8c, 0x07, 0xd0, 0x64, 0xfe, 0x15, 0xe1, 0x3e, 0xb8, + 0x9d, 0x84, 0x0f, 0x65, 0xb1, 0x26, 0xae, 0x57, 0x65, 0x16, 0x9b, 0x5e, 0x5d, 0xf9, 0x63, 0x0e, + 0xcc, 0x0d, 0x7e, 0xae, 0x78, 0x80, 0xbb, 0xa6, 0x8b, 0x7a, 0x53, 0x1b, 0xca, 0x14, 0x96, 0xc0, + 0xe5, 0x61, 0x00, 0xad, 0x29, 0x49, 0xc4, 0x29, 0x72, 0xb1, 0x9d, 0x9b, 0x4a, 0xa3, 0x21, 0x97, + 0xf8, 0xbc, 0xb0, 0x00, 0x2e, 0x0d, 0x77, 0xca, 0x10, 0xaa, 0x90, 0x9f, 0x88, 0xc3, 0x13, 0xd7, + 0x55, 0x48, 0x83, 0xfe, 0xca, 0x4f, 0xf3, 0x60, 0x42, 0xd2, 0x45, 0xe1, 0x02, 0x38, 0x27, 0xe9, + 0xe2, 0xe8, 0x87, 0x21, 0x49, 0xa3, 0xd8, 0xd4, 0x2b, 0x44, 0x87, 0x75, 0x59, 0xd2, 0x55, 0x92, + 0xb2, 0x5c, 0x06, 0x17, 0x68, 0xbb, 0xa4, 0x2b, 0x4f, 0x49, 0x26, 0xa3, 0x69, 0x8a, 0x5a, 0x27, + 0x99, 0x4a, 0xd8, 0x41, 0x44, 0x46, 0x50, 0xfe, 0xb0, 0x29, 0x6b, 0xba, 0xc6, 0x4f, 0x04, 0x1d, + 0x0d, 0x28, 0xd7, 0x94, 0x66, 0x0d, 0x69, 0xcd, 0x46, 0x43, 0x85, 0x3a, 0x3f, 0x19, 0x74, 0xe8, + 0x90, 0x78, 0x8f, 0x12, 0x2a, 0xc9, 0x4f, 0x15, 0xe2, 0x76, 0xa7, 0x02, 0xde, 0xcd, 0x46, 0x19, + 0x8a, 0x25, 0x19, 0xad, 0x8b, 0xf5, 0xba, 0x0c, 0xf9, 0x53, 0x01, 0xc2, 0xba, 0x52, 0xad, 0x2a, + 0xf5, 0x32, 0xd2, 0x9a, 0xb5, 0x9a, 0x08, 0xb7, 0xf9, 0xd3, 0xc1, 0x08, 0x7c, 0xde, 0x55, 0x45, + 0xd3, 0xf9, 0x69, 0xfa, 0xf9, 0xc0, 0x7e, 0x63, 0x4d, 0xad, 0x2b, 0xba, 0x0a, 0x95, 0x7a, 0x99, + 0x9f, 0xa1, 0x1f, 0x26, 0xd4, 0x45, 0x24, 0x7f, 0x59, 0x97, 0x61, 0x5d, 0xac, 0x22, 0xb1, 0x59, + 0x52, 0x74, 0xa4, 0xe9, 0x2a, 0x14, 0xcb, 0x32, 0x0f, 0x02, 0x01, 0xd4, 0x4d, 0x22, 0x85, 0x46, + 0x74, 0xb7, 0x5d, 0x97, 0xf8, 0x33, 0x02, 0x0f, 0x66, 0x29, 0x5e, 0x5d, 0x87, 0x22, 0x52, 0x4a, + 0xfc, 0xac, 0x70, 0x1e, 0x9c, 0x0d, 0x21, 0x35, 0x49, 0xa9, 0xf1, 0x67, 0x03, 0xbe, 0x4a, 0x49, + 0xae, 0xeb, 0x8a, 0xbe, 0x8d, 0x34, 0x59, 0x6a, 0x42, 0xb2, 0x1c, 0xe7, 0x56, 0x7e, 0x74, 0x06, + 0x5c, 0x8a, 0x7d, 0x7b, 0x47, 0xc2, 0x98, 0x52, 0xd7, 0xe5, 0x32, 0x5b, 0x80, 0x48, 0xae, 0x43, + 0xb5, 0x5a, 0x45, 0x9b, 0x4a, 0x7d, 0xf8, 0x93, 0x8b, 0x37, 0xc0, 0x72, 0x12, 0xa0, 0x56, 0x15, + 0xa5, 0x4d, 0x9e, 0x23, 0xab, 0x27, 0x09, 0x84, 0xac, 0x08, 0x55, 0x29, 0x49, 0x7c, 0x9e, 0x24, + 0x46, 0x49, 0x50, 0x0d, 0xb1, 0x2c, 0xc3, 0x52, 0x53, 0xdf, 0xe6, 0x27, 0xc6, 0xf1, 0x93, 0x6b, + 0xa2, 0x52, 0xe5, 0x27, 0x49, 0x16, 0x9b, 0x04, 0xf2, 0x44, 0x81, 0x22, 0x3f, 0x25, 0xdc, 0x04, + 0xd7, 0x92, 0x20, 0xa8, 0x79, 0xc2, 0x12, 0x7f, 0x8a, 0xb8, 0x9c, 0x24, 0xa0, 0x9a, 0xa8, 0xeb, + 0x32, 0xac, 0xa9, 0x9a, 0xce, 0x9f, 0x1e, 0x37, 0xbc, 0x9a, 0x86, 0x74, 0x59, 0xac, 0x69, 0xfc, + 0xf4, 0x38, 0x28, 0xb5, 0xa1, 0x95, 0xe5, 0xba, 0x22, 0xf3, 0x33, 0xe3, 0x44, 0x27, 0x53, 0xca, + 0x83, 0xb1, 0x83, 0x13, 0x6b, 0x1b, 0xfc, 0x99, 0xf1, 0x72, 0x4b, 0x15, 0xa5, 0x2e, 0x33, 0x53, + 0x79, 0x13, 0x3c, 0x4c, 0x87, 0x43, 0x65, 0x45, 0xaf, 0x34, 0xd7, 0xe9, 0xfa, 0x22, 0xeb, 0xea, + 0xac, 0xf0, 0x00, 0xbc, 0x92, 0x01, 0x4d, 0x52, 0xa0, 0x54, 0x95, 0x25, 0x85, 0x9f, 0x23, 0x6e, + 0x31, 0x1b, 0x9f, 0xaa, 0xb8, 0xce, 0x9f, 0x23, 0xa1, 0x37, 0x03, 0xf8, 0x13, 0xb9, 0xbe, 0xa9, + 0xd4, 0x35, 0x9e, 0xcf, 0x08, 0x2f, 0xd6, 0x35, 0x65, 0xbd, 0x2a, 0xf3, 0xe7, 0xc7, 0xa9, 0x87, + 0x04, 0x69, 0x45, 0x92, 0xeb, 0xea, 0x16, 0x2f, 0x8c, 0x9b, 0xb0, 0x70, 0xbd, 0x5d, 0x20, 0x01, + 0x2d, 0xd1, 0x92, 0x44, 0x5d, 0x2c, 0xa9, 0x65, 0xa4, 0xd4, 0x25, 0xba, 0xf6, 0x50, 0x4d, 0xac, + 0x8b, 0x65, 0xb9, 0x26, 0xd7, 0x75, 0xfe, 0x22, 0xc9, 0x46, 0xb2, 0x88, 0xbd, 0x45, 0xd2, 0xbe, + 0x6c, 0xb0, 0x24, 0xd7, 0x9d, 0x27, 0x51, 0x3c, 0x0b, 0x5d, 0x9a, 0xb7, 0xd0, 0x04, 0x2f, 0x03, + 0x34, 0xcd, 0x3f, 0xab, 0x64, 0xe3, 0x50, 0x10, 0x1e, 0x82, 0xd7, 0x32, 0x60, 0x44, 0xf6, 0x8c, + 0x0b, 0xe3, 0x2c, 0x86, 0xac, 0xff, 0xd0, 0x31, 0x49, 0x72, 0x5d, 0x97, 0x21, 0xbf, 0x38, 0x6e, + 0x4a, 0x7d, 0x73, 0x84, 0x72, 0x43, 0xf5, 0x3d, 0x29, 0xbf, 0x94, 0xd1, 0xc2, 0x44, 0x58, 0x56, + 0xa5, 0x12, 0x7f, 0x45, 0xf8, 0x00, 0xbc, 0xf7, 0xcc, 0x86, 0x1f, 0x1d, 0xd1, 0xf2, 0x38, 0x5f, + 0x45, 0x63, 0x7c, 0x55, 0x6d, 0x96, 0xf8, 0xab, 0xe3, 0x9c, 0xa8, 0x9f, 0xd4, 0x52, 0xc0, 0x6b, + 0x24, 0x49, 0x4b, 0x1c, 0xb0, 0xaa, 0x96, 0xab, 0x01, 0xe4, 0xf5, 0x95, 0x6f, 0x9f, 0x8a, 0xf1, + 0xd8, 0x9a, 0x87, 0xbb, 0x09, 0xcc, 0x34, 0x5d, 0x6e, 0x0c, 0x79, 0xec, 0x78, 0xed, 0x52, 0x40, + 0x71, 0x4b, 0x53, 0xa4, 0x20, 0xbc, 0x32, 0xc7, 0xcc, 0x09, 0x5f, 0x02, 0xef, 0x8c, 0x87, 0xd7, + 0x64, 0xdd, 0x9f, 0x0b, 0x12, 0xe9, 0x50, 0x49, 0xde, 0x10, 0x9b, 0x55, 0x1d, 0xa9, 0x5b, 0x24, + 0x4a, 0xe6, 0x85, 0x2f, 0x82, 0xb7, 0xc7, 0xe3, 0x37, 0x1b, 0x55, 0x55, 0x64, 0x9a, 0xa3, 0x19, + 0x9d, 0xd6, 0x40, 0x35, 0x59, 0x17, 0xc9, 0xfa, 0xe1, 0x27, 0x48, 0x9a, 0x3c, 0x1e, 0x5d, 0x97, + 0x35, 0x9d, 0xc6, 0xba, 0x40, 0x70, 0x92, 0x09, 0x4e, 0x26, 0xac, 0x4c, 0x8a, 0xc7, 0xa6, 0x16, + 0x8a, 0x48, 0x82, 0xb2, 0xa8, 0xcb, 0x28, 0x02, 0xc7, 0x4f, 0x8d, 0x63, 0x38, 0x8c, 0x58, 0x56, + 0x82, 0xcd, 0x22, 0x7f, 0x2a, 0x1b, 0x43, 0xfa, 0xfd, 0x60, 0x32, 0xf5, 0x9a, 0x56, 0x41, 0x92, + 0x0c, 0x49, 0x00, 0x89, 0x5f, 0x84, 0xb1, 0x0c, 0x21, 0x49, 0x1d, 0xa7, 0x49, 0xf2, 0x9d, 0x84, + 0x51, 0xdb, 0x52, 0xca, 0x15, 0x71, 0xf3, 0xb1, 0x16, 0x4e, 0x23, 0xa3, 0xc1, 0xcf, 0x8c, 0x1b, + 0xd8, 0x00, 0x96, 0x2f, 0xa1, 0xbf, 0xbc, 0x40, 0x36, 0x6e, 0x9a, 0xac, 0x37, 0x1b, 0x68, 0x4b, + 0x85, 0x9b, 0x1b, 0x55, 0x75, 0x8b, 0x3f, 0x93, 0xb0, 0x28, 0x87, 0xb0, 0xb6, 0xe4, 0xaa, 0xa4, + 0xd6, 0x64, 0x7e, 0x76, 0x9c, 0x55, 0x3e, 0x95, 0xa1, 0xb2, 0xb1, 0x3d, 0x30, 0x4b, 0x67, 0x57, + 0x7e, 0xc6, 0xc5, 0xbe, 0x8a, 0x0f, 0x5e, 0xb4, 0x27, 0xd2, 0xa3, 0x39, 0xa7, 0xa4, 0x96, 0x86, + 0x0f, 0xc6, 0xe2, 0x7d, 0x6c, 0x14, 0xbe, 0x9f, 0xfd, 0x66, 0x80, 0x0d, 0x93, 0xe1, 0xf8, 0xa5, + 0x1d, 0x85, 0x0d, 0x72, 0xe3, 0x74, 0xaa, 0xfd, 0x54, 0xf9, 0x1f, 0xf3, 0xa0, 0x90, 0x74, 0x20, + 0x9c, 0x44, 0x88, 0xad, 0x8c, 0xa1, 0x61, 0xc7, 0xfb, 0xc2, 0x00, 0xb6, 0x3f, 0x51, 0x81, 0x37, + 0x2c, 0x3d, 0x25, 0x9b, 0x28, 0x92, 0xb3, 0xb0, 0x7c, 0x80, 0xcb, 0x4c, 0x21, 0xb2, 0x5d, 0xaa, + 0x8a, 0xeb, 0x72, 0x15, 0x35, 0x14, 0x69, 0x93, 0x3a, 0x88, 0x12, 0xf8, 0xe0, 0x59, 0x29, 0x8c, + 0xc8, 0x31, 0x21, 0x54, 0x40, 0xe9, 0x59, 0xa9, 0x84, 0xbb, 0x26, 0xd8, 0xac, 0xca, 0x81, 0x3c, + 0x93, 0x2b, 0xdf, 0x3f, 0x05, 0xe6, 0xe3, 0x4f, 0xb4, 0x13, 0x66, 0x73, 0x43, 0x91, 0xab, 0xc3, + 0x79, 0xf1, 0x7b, 0xe0, 0x71, 0x22, 0xe4, 0x88, 0x5a, 0x49, 0x38, 0xd3, 0xc8, 0x76, 0x60, 0x1b, + 0x35, 0x61, 0x95, 0xe7, 0x12, 0x96, 0x5c, 0x02, 0xf6, 0x3a, 0x14, 0xeb, 0x52, 0x85, 0xcf, 0x27, + 0x2c, 0xf0, 0x04, 0xac, 0x70, 0xa9, 0x4e, 0x08, 0x6f, 0x83, 0x37, 0xb3, 0xe3, 0xc9, 0xf5, 0xa7, + 0x0a, 0x54, 0xeb, 0x34, 0x8d, 0x99, 0x4c, 0x48, 0x07, 0x12, 0x87, 0xb9, 0xc1, 0x4f, 0x25, 0xc4, + 0x83, 0x44, 0x6e, 0xba, 0x0c, 0x1b, 0x50, 0xd1, 0x64, 0xa4, 0x55, 0x9b, 0x65, 0xfe, 0x54, 0x82, + 0xb5, 0x64, 0x40, 0xd7, 0x45, 0x5d, 0x91, 0xd0, 0x93, 0xad, 0x4d, 0x8d, 0x3f, 0x2d, 0x3c, 0x06, + 0x8f, 0x32, 0x50, 0x19, 0xb6, 0x59, 0x92, 0xc8, 0x3f, 0x33, 0x66, 0x19, 0xaa, 0xcd, 0x86, 0xc6, + 0xcf, 0x24, 0x04, 0x88, 0x31, 0x98, 0x64, 0xab, 0x47, 0x1c, 0x70, 0xfc, 0x12, 0x1b, 0x83, 0x38, + 0x60, 0xd8, 0x1a, 0x7f, 0x26, 0x21, 0x86, 0x8f, 0xa1, 0x10, 0x1c, 0xa1, 0xd5, 0x45, 0xe2, 0x9d, + 0x57, 0x7e, 0x18, 0xf7, 0xd9, 0x97, 0xe0, 0xab, 0x00, 0x09, 0x39, 0x27, 0x75, 0x59, 0x31, 0xff, + 0x85, 0x21, 0xde, 0x3d, 0xf5, 0xa1, 0x75, 0x19, 0x42, 0x71, 0x43, 0x85, 0xb5, 0xc4, 0x75, 0xd0, + 0x87, 0x1d, 0x4a, 0xd2, 0xb6, 0xc5, 0x5a, 0x95, 0xcf, 0xaf, 0xbc, 0x0f, 0x4e, 0xfb, 0x55, 0x65, + 0x64, 0x8b, 0xbe, 0x21, 0x8b, 0x3a, 0x89, 0x67, 0x23, 0xc7, 0x1b, 0x41, 0xc7, 0xf0, 0x86, 0x9f, + 0x5b, 0xf9, 0x43, 0x0e, 0x2c, 0x8d, 0x79, 0xf3, 0x4d, 0x62, 0x5b, 0x80, 0x0c, 0x65, 0x49, 0xad, + 0xd5, 0xe4, 0x7a, 0x89, 0x49, 0x18, 0x7b, 0x94, 0xb2, 0x02, 0xee, 0x8c, 0x07, 0xaf, 0xab, 0x3a, + 0x83, 0xe5, 0xc8, 0xf6, 0x64, 0x3c, 0x6c, 0x49, 0xad, 0xcb, 0x7c, 0x7e, 0xfd, 0xab, 0x7f, 0xf3, + 0x93, 0xab, 0xdc, 0xdf, 0xff, 0xe4, 0x2a, 0xf7, 0x4f, 0x3f, 0xb9, 0xca, 0x7d, 0xa4, 0xee, 0x59, + 0xde, 0x7e, 0x6f, 0x67, 0xb5, 0x65, 0x1f, 0x3e, 0xd8, 0x73, 0x8c, 0x23, 0x8b, 0x55, 0x1d, 0x1b, + 0xed, 0x07, 0xfd, 0x7f, 0x0c, 0xd7, 0xb5, 0x1e, 0xec, 0xe1, 0xce, 0x03, 0xfa, 0x3e, 0xff, 0xc1, + 0x9e, 0x3d, 0xf4, 0xdf, 0xe6, 0xde, 0x8d, 0xfc, 0x3c, 0x7a, 0xb8, 0x73, 0x8a, 0x82, 0xbd, 0xf1, + 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x42, 0x1c, 0xf6, 0xfb, 0x9d, 0x6e, 0x00, 0x00, } func (m *UIBannerClickEvent) Marshal() (dAtA []byte, err error) { @@ -9825,6 +9851,13 @@ func (m *ResourceCreateEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.DiscoveryConfigName) > 0 { + i -= len(m.DiscoveryConfigName) + copy(dAtA[i:], m.DiscoveryConfigName) + i = encodeVarintUsageevents(dAtA, i, uint64(len(m.DiscoveryConfigName))) + i-- + dAtA[i] = 0x2a + } if m.Database != nil { { size, err := m.Database.MarshalToSizedBuffer(dAtA[:i]) @@ -13069,6 +13102,10 @@ func (m *ResourceCreateEvent) Size() (n int) { l = m.Database.Size() n += 1 + l + sovUsageevents(uint64(l)) } + l = len(m.DiscoveryConfigName) + if l > 0 { + n += 1 + l + sovUsageevents(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -21927,6 +21964,38 @@ func (m *ResourceCreateEvent) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryConfigName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUsageevents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthUsageevents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthUsageevents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DiscoveryConfigName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipUsageevents(dAtA[iNdEx:]) diff --git a/api/proto/teleport/usageevents/v1/usageevents.proto b/api/proto/teleport/usageevents/v1/usageevents.proto index 3e5f8b3b578..1b09bd09757 100644 --- a/api/proto/teleport/usageevents/v1/usageevents.proto +++ b/api/proto/teleport/usageevents/v1/usageevents.proto @@ -619,6 +619,9 @@ enum IntegrationEnrollKind { INTEGRATION_ENROLL_KIND_GITHUB_REPO_ACCESS = 27; INTEGRATION_ENROLL_KIND_MACHINE_ID_ARGOCD = 28; INTEGRATION_ENROLL_KIND_MACHINE_ID_GITHUB_ACTIONS_KUBERNETES = 29; + INTEGRATION_ENROLL_KIND_AWS_CLOUD = 30; + INTEGRATION_ENROLL_KIND_AZURE_CLOUD = 31; + INTEGRATION_ENROLL_KIND_GOOGLE_CLOUD = 32; } // IntegrationEnrollMetadata contains common metadata @@ -667,6 +670,9 @@ enum IntegrationEnrollStep { INTEGRATION_ENROLL_STEP_MWIGHAK8S_CONFIGURE_ACCESS = 10; INTEGRATION_ENROLL_STEP_MWIGHAK8S_SETUP_WORKFLOW = 11; INTEGRATION_ENROLL_STEP_MWIGHAK8S_WELCOME = 12; + + // General integration setup steps. + INTEGRATION_ENROLL_STEP_VERIFY_INTEGRATION = 13; } // IntegrationEnrollStatusCode defines status code for an integration enroll step. @@ -802,6 +808,9 @@ message ResourceCreateEvent { string cloud_provider = 3; // database contains additional database information if resource_type == "db". DiscoveredDatabaseMetadata database = 4; + // discovery_config_name is the name of the DiscoveryConfig that triggered discovery. + // Empty for teleport.yaml matcher configuration. + string discovery_config_name = 5; } // DiscoveredDatabaseMetadata contains additional database information. diff --git a/api/types/constants.go b/api/types/constants.go index 259e8311dd2..f4220840a58 100644 --- a/api/types/constants.go +++ b/api/types/constants.go @@ -960,6 +960,8 @@ const ( DiscoveryPublicAddr = TeleportNamespace + "/public-addr" // DiscoveryDescription specifies the description for a discovered app created from a Kubernetes service. DiscoveryDescription = TeleportNamespace + "/description" + // IACToolLabel is a resource metadata label that identifies which infrastructure-as-code tool created the resource. + DiscoveryIACToolLabel = TeleportNamespace + "/iac-tool" // ReqAnnotationApproveSchedulesLabel is the request annotation key at which schedules are stored for access plugins. ReqAnnotationApproveSchedulesLabel = "/schedules" diff --git a/gen/proto/go/prehog/v1alpha/teleport.pb.go b/gen/proto/go/prehog/v1alpha/teleport.pb.go index c8432346323..58b4f146b5d 100644 --- a/gen/proto/go/prehog/v1alpha/teleport.pb.go +++ b/gen/proto/go/prehog/v1alpha/teleport.pb.go @@ -618,6 +618,9 @@ const ( IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_GITHUB_REPO_ACCESS IntegrationEnrollKind = 27 IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_MACHINE_ID_ARGOCD IntegrationEnrollKind = 28 IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_MACHINE_ID_GITHUB_ACTIONS_KUBERNETES IntegrationEnrollKind = 29 + IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_AWS_CLOUD IntegrationEnrollKind = 30 + IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_AZURE_CLOUD IntegrationEnrollKind = 31 + IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_GOOGLE_CLOUD IntegrationEnrollKind = 32 ) // Enum value maps for IntegrationEnrollKind. @@ -653,6 +656,9 @@ var ( 27: "INTEGRATION_ENROLL_KIND_GITHUB_REPO_ACCESS", 28: "INTEGRATION_ENROLL_KIND_MACHINE_ID_ARGOCD", 29: "INTEGRATION_ENROLL_KIND_MACHINE_ID_GITHUB_ACTIONS_KUBERNETES", + 30: "INTEGRATION_ENROLL_KIND_AWS_CLOUD", + 31: "INTEGRATION_ENROLL_KIND_AZURE_CLOUD", + 32: "INTEGRATION_ENROLL_KIND_GOOGLE_CLOUD", } IntegrationEnrollKind_value = map[string]int32{ "INTEGRATION_ENROLL_KIND_UNSPECIFIED": 0, @@ -685,6 +691,9 @@ var ( "INTEGRATION_ENROLL_KIND_GITHUB_REPO_ACCESS": 27, "INTEGRATION_ENROLL_KIND_MACHINE_ID_ARGOCD": 28, "INTEGRATION_ENROLL_KIND_MACHINE_ID_GITHUB_ACTIONS_KUBERNETES": 29, + "INTEGRATION_ENROLL_KIND_AWS_CLOUD": 30, + "INTEGRATION_ENROLL_KIND_AZURE_CLOUD": 31, + "INTEGRATION_ENROLL_KIND_GOOGLE_CLOUD": 32, } ) @@ -736,6 +745,8 @@ const ( IntegrationEnrollStep_INTEGRATION_ENROLL_STEP_MWIGHAK8S_CONFIGURE_ACCESS IntegrationEnrollStep = 10 IntegrationEnrollStep_INTEGRATION_ENROLL_STEP_MWIGHAK8S_SETUP_WORKFLOW IntegrationEnrollStep = 11 IntegrationEnrollStep_INTEGRATION_ENROLL_STEP_MWIGHAK8S_WELCOME IntegrationEnrollStep = 12 + // General integration setup steps + IntegrationEnrollStep_INTEGRATION_ENROLL_STEP_VERIFY_INTEGRATION IntegrationEnrollStep = 13 ) // Enum value maps for IntegrationEnrollStep. @@ -754,6 +765,7 @@ var ( 10: "INTEGRATION_ENROLL_STEP_MWIGHAK8S_CONFIGURE_ACCESS", 11: "INTEGRATION_ENROLL_STEP_MWIGHAK8S_SETUP_WORKFLOW", 12: "INTEGRATION_ENROLL_STEP_MWIGHAK8S_WELCOME", + 13: "INTEGRATION_ENROLL_STEP_VERIFY_INTEGRATION", } IntegrationEnrollStep_value = map[string]int32{ "INTEGRATION_ENROLL_STEP_UNSPECIFIED": 0, @@ -769,6 +781,7 @@ var ( "INTEGRATION_ENROLL_STEP_MWIGHAK8S_CONFIGURE_ACCESS": 10, "INTEGRATION_ENROLL_STEP_MWIGHAK8S_SETUP_WORKFLOW": 11, "INTEGRATION_ENROLL_STEP_MWIGHAK8S_WELCOME": 12, + "INTEGRATION_ENROLL_STEP_VERIFY_INTEGRATION": 13, } ) @@ -1258,6 +1271,59 @@ func (LicenseLimit) EnumDescriptor() ([]byte, []int) { return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{15} } +// DiscoveryConfigAction is the action performed on a DiscoveryConfig. +type DiscoveryConfigAction int32 + +const ( + DiscoveryConfigAction_DISCOVERY_CONFIG_ACTION_UNSPECIFIED DiscoveryConfigAction = 0 + DiscoveryConfigAction_DISCOVERY_CONFIG_ACTION_CREATE DiscoveryConfigAction = 1 + DiscoveryConfigAction_DISCOVERY_CONFIG_ACTION_UPDATE DiscoveryConfigAction = 2 + DiscoveryConfigAction_DISCOVERY_CONFIG_ACTION_DELETE DiscoveryConfigAction = 3 +) + +// Enum value maps for DiscoveryConfigAction. +var ( + DiscoveryConfigAction_name = map[int32]string{ + 0: "DISCOVERY_CONFIG_ACTION_UNSPECIFIED", + 1: "DISCOVERY_CONFIG_ACTION_CREATE", + 2: "DISCOVERY_CONFIG_ACTION_UPDATE", + 3: "DISCOVERY_CONFIG_ACTION_DELETE", + } + DiscoveryConfigAction_value = map[string]int32{ + "DISCOVERY_CONFIG_ACTION_UNSPECIFIED": 0, + "DISCOVERY_CONFIG_ACTION_CREATE": 1, + "DISCOVERY_CONFIG_ACTION_UPDATE": 2, + "DISCOVERY_CONFIG_ACTION_DELETE": 3, + } +) + +func (x DiscoveryConfigAction) Enum() *DiscoveryConfigAction { + p := new(DiscoveryConfigAction) + *p = x + return p +} + +func (x DiscoveryConfigAction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DiscoveryConfigAction) Descriptor() protoreflect.EnumDescriptor { + return file_prehog_v1alpha_teleport_proto_enumTypes[16].Descriptor() +} + +func (DiscoveryConfigAction) Type() protoreflect.EnumType { + return &file_prehog_v1alpha_teleport_proto_enumTypes[16] +} + +func (x DiscoveryConfigAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DiscoveryConfigAction.Descriptor instead. +func (DiscoveryConfigAction) EnumDescriptor() ([]byte, []int) { + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{16} +} + // DeployMethod describes the method used to deploy a service. type UIDiscoverDeployServiceEvent_DeployMethod int32 @@ -1296,11 +1362,11 @@ func (x UIDiscoverDeployServiceEvent_DeployMethod) String() string { } func (UIDiscoverDeployServiceEvent_DeployMethod) Descriptor() protoreflect.EnumDescriptor { - return file_prehog_v1alpha_teleport_proto_enumTypes[16].Descriptor() + return file_prehog_v1alpha_teleport_proto_enumTypes[17].Descriptor() } func (UIDiscoverDeployServiceEvent_DeployMethod) Type() protoreflect.EnumType { - return &file_prehog_v1alpha_teleport_proto_enumTypes[16] + return &file_prehog_v1alpha_teleport_proto_enumTypes[17] } func (x UIDiscoverDeployServiceEvent_DeployMethod) Number() protoreflect.EnumNumber { @@ -1352,11 +1418,11 @@ func (x UIDiscoverDeployServiceEvent_DeployType) String() string { } func (UIDiscoverDeployServiceEvent_DeployType) Descriptor() protoreflect.EnumDescriptor { - return file_prehog_v1alpha_teleport_proto_enumTypes[17].Descriptor() + return file_prehog_v1alpha_teleport_proto_enumTypes[18].Descriptor() } func (UIDiscoverDeployServiceEvent_DeployType) Type() protoreflect.EnumType { - return &file_prehog_v1alpha_teleport_proto_enumTypes[17] + return &file_prehog_v1alpha_teleport_proto_enumTypes[18] } func (x UIDiscoverDeployServiceEvent_DeployType) Number() protoreflect.EnumNumber { @@ -1413,11 +1479,11 @@ func (x UIDiscoverCreateDiscoveryConfigEvent_ConfigMethod) String() string { } func (UIDiscoverCreateDiscoveryConfigEvent_ConfigMethod) Descriptor() protoreflect.EnumDescriptor { - return file_prehog_v1alpha_teleport_proto_enumTypes[18].Descriptor() + return file_prehog_v1alpha_teleport_proto_enumTypes[19].Descriptor() } func (UIDiscoverCreateDiscoveryConfigEvent_ConfigMethod) Type() protoreflect.EnumType { - return &file_prehog_v1alpha_teleport_proto_enumTypes[18] + return &file_prehog_v1alpha_teleport_proto_enumTypes[19] } func (x UIDiscoverCreateDiscoveryConfigEvent_ConfigMethod) Number() protoreflect.EnumNumber { @@ -1466,11 +1532,11 @@ func (x AccessRequestReviewEvent_ProposedState) String() string { } func (AccessRequestReviewEvent_ProposedState) Descriptor() protoreflect.EnumDescriptor { - return file_prehog_v1alpha_teleport_proto_enumTypes[19].Descriptor() + return file_prehog_v1alpha_teleport_proto_enumTypes[20].Descriptor() } func (AccessRequestReviewEvent_ProposedState) Type() protoreflect.EnumType { - return &file_prehog_v1alpha_teleport_proto_enumTypes[19] + return &file_prehog_v1alpha_teleport_proto_enumTypes[20] } func (x AccessRequestReviewEvent_ProposedState) Number() protoreflect.EnumNumber { @@ -1714,9 +1780,12 @@ type ResourceCreateEvent struct { // if resource_origin == "cloud". CloudProvider string `protobuf:"bytes,3,opt,name=cloud_provider,json=cloudProvider,proto3" json:"cloud_provider,omitempty"` // database contains additional database information if resource_type == "db". - Database *DiscoveredDatabaseMetadata `protobuf:"bytes,4,opt,name=database,proto3" json:"database,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + Database *DiscoveredDatabaseMetadata `protobuf:"bytes,4,opt,name=database,proto3" json:"database,omitempty"` + // discovery_config_name is the anonymized name of the DiscoveryConfig that triggered discovery. + // Empty for teleport.yaml matcher configuration. + DiscoveryConfigName string `protobuf:"bytes,5,opt,name=discovery_config_name,json=discoveryConfigName,proto3" json:"discovery_config_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResourceCreateEvent) Reset() { @@ -1777,6 +1846,13 @@ func (x *ResourceCreateEvent) GetDatabase() *DiscoveredDatabaseMetadata { return nil } +func (x *ResourceCreateEvent) GetDiscoveryConfigName() string { + if x != nil { + return x.DiscoveryConfigName + } + return "" +} + // DiscoveredDatabaseMetadata contains additional database information. type DiscoveredDatabaseMetadata struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -8565,8 +8641,13 @@ type UserTaskStateEvent struct { // // PostHog property: tp.usertask.discover_ec2.instances_count InstancesCount int32 `protobuf:"varint,4,opt,name=instances_count,json=instancesCount,proto3" json:"instances_count,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // discovery_config_name is the anonymized name of the DiscoveryConfig used when + // the issue was created. + // + // PostHog property: tp.usertask.discovery_config_name + DiscoveryConfigName string `protobuf:"bytes,5,opt,name=discovery_config_name,json=discoveryConfigName,proto3" json:"discovery_config_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UserTaskStateEvent) Reset() { @@ -8627,6 +8708,13 @@ func (x *UserTaskStateEvent) GetInstancesCount() int32 { return 0 } +func (x *UserTaskStateEvent) GetDiscoveryConfigName() string { + if x != nil { + return x.DiscoveryConfigName + } + return "" +} + // AccessRequestCreateEvent is emitted when an Access Request is created. // // PostHog event: tp.access_request.create @@ -8974,6 +9062,90 @@ func (x *SessionSummaryCreateEvent) GetIsCloudDefaultModel() bool { return false } +// DiscoveryConfigEvent is emitted when a DiscoveryConfig resource is created, updated, or deleted. +// +// PostHog event: tp.discovery.config +type DiscoveryConfigEvent struct { + state protoimpl.MessageState `protogen:"open.v1"` + // action is the operation performed on the DiscoveryConfig. + Action DiscoveryConfigAction `protobuf:"varint,1,opt,name=action,proto3,enum=prehog.v1alpha.DiscoveryConfigAction" json:"action,omitempty"` + // discovery_config_name is the anonymized name of the DiscoveryConfig. + DiscoveryConfigName string `protobuf:"bytes,2,opt,name=discovery_config_name,json=discoveryConfigName,proto3" json:"discovery_config_name,omitempty"` + // resource_types is the list of resource types configured for discovery (e.g., "ec2", "rds", "eks"). + ResourceTypes []string `protobuf:"bytes,3,rep,name=resource_types,json=resourceTypes,proto3" json:"resource_types,omitempty"` + // cloud_providers is the list of cloud providers the config has matchers for. + CloudProviders []string `protobuf:"bytes,4,rep,name=cloud_providers,json=cloudProviders,proto3" json:"cloud_providers,omitempty"` + // creation_method specifies the flow used to create the config ("iac" or "guided") + CreationMethod string `protobuf:"bytes,5,opt,name=creation_method,json=creationMethod,proto3" json:"creation_method,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DiscoveryConfigEvent) Reset() { + *x = DiscoveryConfigEvent{} + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DiscoveryConfigEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscoveryConfigEvent) ProtoMessage() {} + +func (x *DiscoveryConfigEvent) ProtoReflect() protoreflect.Message { + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[111] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscoveryConfigEvent.ProtoReflect.Descriptor instead. +func (*DiscoveryConfigEvent) Descriptor() ([]byte, []int) { + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{111} +} + +func (x *DiscoveryConfigEvent) GetAction() DiscoveryConfigAction { + if x != nil { + return x.Action + } + return DiscoveryConfigAction_DISCOVERY_CONFIG_ACTION_UNSPECIFIED +} + +func (x *DiscoveryConfigEvent) GetDiscoveryConfigName() string { + if x != nil { + return x.DiscoveryConfigName + } + return "" +} + +func (x *DiscoveryConfigEvent) GetResourceTypes() []string { + if x != nil { + return x.ResourceTypes + } + return nil +} + +func (x *DiscoveryConfigEvent) GetCloudProviders() []string { + if x != nil { + return x.CloudProviders + } + return nil +} + +func (x *DiscoveryConfigEvent) GetCreationMethod() string { + if x != nil { + return x.CreationMethod + } + return "" +} + type SubmitEventRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // anonymized, 32 bytes (HMAC-SHA-256) encoded in base64 @@ -9094,6 +9266,7 @@ type SubmitEventRequest struct { // *SubmitEventRequest_UiIntegrationEnrollLinkClickEvent // *SubmitEventRequest_SessionSummaryCreateEvent // *SubmitEventRequest_SessionSummaryAccessEvent + // *SubmitEventRequest_DiscoveryConfig Event isSubmitEventRequest_Event `protobuf_oneof:"event"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -9101,7 +9274,7 @@ type SubmitEventRequest struct { func (x *SubmitEventRequest) Reset() { *x = SubmitEventRequest{} - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[111] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9113,7 +9286,7 @@ func (x *SubmitEventRequest) String() string { func (*SubmitEventRequest) ProtoMessage() {} func (x *SubmitEventRequest) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[111] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[112] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9126,7 +9299,7 @@ func (x *SubmitEventRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitEventRequest.ProtoReflect.Descriptor instead. func (*SubmitEventRequest) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{111} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{112} } func (x *SubmitEventRequest) GetClusterName() string { @@ -10057,6 +10230,15 @@ func (x *SubmitEventRequest) GetSessionSummaryAccessEvent() *SessionSummaryAcces return nil } +func (x *SubmitEventRequest) GetDiscoveryConfig() *DiscoveryConfigEvent { + if x != nil { + if x, ok := x.Event.(*SubmitEventRequest_DiscoveryConfig); ok { + return x.DiscoveryConfig + } + } + return nil +} + type isSubmitEventRequest_Event interface { isSubmitEventRequest_Event() } @@ -10466,6 +10648,10 @@ type SubmitEventRequest_SessionSummaryAccessEvent struct { SessionSummaryAccessEvent *SessionSummaryAccessEvent `protobuf:"bytes,106,opt,name=session_summary_access_event,json=sessionSummaryAccessEvent,proto3,oneof"` } +type SubmitEventRequest_DiscoveryConfig struct { + DiscoveryConfig *DiscoveryConfigEvent `protobuf:"bytes,107,opt,name=discovery_config,json=discoveryConfig,proto3,oneof"` +} + func (*SubmitEventRequest_UserLogin) isSubmitEventRequest_Event() {} func (*SubmitEventRequest_SsoCreate) isSubmitEventRequest_Event() {} @@ -10668,6 +10854,8 @@ func (*SubmitEventRequest_SessionSummaryCreateEvent) isSubmitEventRequest_Event( func (*SubmitEventRequest_SessionSummaryAccessEvent) isSubmitEventRequest_Event() {} +func (*SubmitEventRequest_DiscoveryConfig) isSubmitEventRequest_Event() {} + type SubmitEventResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -10676,7 +10864,7 @@ type SubmitEventResponse struct { func (x *SubmitEventResponse) Reset() { *x = SubmitEventResponse{} - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[112] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10688,7 +10876,7 @@ func (x *SubmitEventResponse) String() string { func (*SubmitEventResponse) ProtoMessage() {} func (x *SubmitEventResponse) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[112] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[113] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10701,7 +10889,7 @@ func (x *SubmitEventResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitEventResponse.ProtoReflect.Descriptor instead. func (*SubmitEventResponse) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{112} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{113} } type SubmitEventsRequest struct { @@ -10714,7 +10902,7 @@ type SubmitEventsRequest struct { func (x *SubmitEventsRequest) Reset() { *x = SubmitEventsRequest{} - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[113] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10726,7 +10914,7 @@ func (x *SubmitEventsRequest) String() string { func (*SubmitEventsRequest) ProtoMessage() {} func (x *SubmitEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[113] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[114] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10739,7 +10927,7 @@ func (x *SubmitEventsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitEventsRequest.ProtoReflect.Descriptor instead. func (*SubmitEventsRequest) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{113} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{114} } func (x *SubmitEventsRequest) GetEvents() []*SubmitEventRequest { @@ -10757,7 +10945,7 @@ type SubmitEventsResponse struct { func (x *SubmitEventsResponse) Reset() { *x = SubmitEventsResponse{} - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[114] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10769,7 +10957,7 @@ func (x *SubmitEventsResponse) String() string { func (*SubmitEventsResponse) ProtoMessage() {} func (x *SubmitEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[114] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[115] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10782,7 +10970,7 @@ func (x *SubmitEventsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitEventsResponse.ProtoReflect.Descriptor instead. func (*SubmitEventsResponse) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{114} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{115} } type HelloTeleportRequest struct { @@ -10793,7 +10981,7 @@ type HelloTeleportRequest struct { func (x *HelloTeleportRequest) Reset() { *x = HelloTeleportRequest{} - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[115] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10805,7 +10993,7 @@ func (x *HelloTeleportRequest) String() string { func (*HelloTeleportRequest) ProtoMessage() {} func (x *HelloTeleportRequest) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[115] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[116] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10818,7 +11006,7 @@ func (x *HelloTeleportRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use HelloTeleportRequest.ProtoReflect.Descriptor instead. func (*HelloTeleportRequest) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{115} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{116} } type HelloTeleportResponse struct { @@ -10829,7 +11017,7 @@ type HelloTeleportResponse struct { func (x *HelloTeleportResponse) Reset() { *x = HelloTeleportResponse{} - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[116] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10841,7 +11029,7 @@ func (x *HelloTeleportResponse) String() string { func (*HelloTeleportResponse) ProtoMessage() {} func (x *HelloTeleportResponse) ProtoReflect() protoreflect.Message { - mi := &file_prehog_v1alpha_teleport_proto_msgTypes[116] + mi := &file_prehog_v1alpha_teleport_proto_msgTypes[117] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10854,7 +11042,7 @@ func (x *HelloTeleportResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use HelloTeleportResponse.ProtoReflect.Descriptor instead. func (*HelloTeleportResponse) Descriptor() ([]byte, []int) { - return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{116} + return file_prehog_v1alpha_teleport_proto_rawDescGZIP(), []int{117} } var File_prehog_v1alpha_teleport_proto protoreflect.FileDescriptor @@ -10876,12 +11064,13 @@ const file_prehog_v1alpha_teleport_proto_rawDesc = "" + "deviceType\x12.\n" + "\x13mfa_challenge_scope\x18\x04 \x01(\tR\x11mfaChallengeScope\"7\n" + "\x0eSSOCreateEvent\x12%\n" + - "\x0econnector_type\x18\x01 \x01(\tR\rconnectorType\"\xd2\x01\n" + + "\x0econnector_type\x18\x01 \x01(\tR\rconnectorType\"\x86\x02\n" + "\x13ResourceCreateEvent\x12#\n" + "\rresource_type\x18\x01 \x01(\tR\fresourceType\x12'\n" + "\x0fresource_origin\x18\x02 \x01(\tR\x0eresourceOrigin\x12%\n" + "\x0ecloud_provider\x18\x03 \x01(\tR\rcloudProvider\x12F\n" + - "\bdatabase\x18\x04 \x01(\v2*.prehog.v1alpha.DiscoveredDatabaseMetadataR\bdatabase\"V\n" + + "\bdatabase\x18\x04 \x01(\v2*.prehog.v1alpha.DiscoveredDatabaseMetadataR\bdatabase\x122\n" + + "\x15discovery_config_name\x18\x05 \x01(\tR\x13discoveryConfigName\"V\n" + "\x1aDiscoveredDatabaseMetadata\x12\x17\n" + "\adb_type\x18\x01 \x01(\tR\x06dbType\x12\x1f\n" + "\vdb_protocol\x18\x02 \x01(\tR\n" + @@ -11345,13 +11534,14 @@ const file_prehog_v1alpha_teleport_proto_rawDesc = "" + "\x1bSessionRecordingAccessEvent\x12!\n" + "\fsession_type\x18\x01 \x01(\tR\vsessionType\x12\x1b\n" + "\tuser_name\x18\x02 \x01(\tR\buserName\x12\x16\n" + - "\x06format\x18\x03 \x01(\tR\x06format\"\x8f\x01\n" + + "\x06format\x18\x03 \x01(\tR\x06format\"\xc3\x01\n" + "\x12UserTaskStateEvent\x12\x1b\n" + "\ttask_type\x18\x01 \x01(\tR\btaskType\x12\x1d\n" + "\n" + "issue_type\x18\x02 \x01(\tR\tissueType\x12\x14\n" + "\x05state\x18\x03 \x01(\tR\x05state\x12'\n" + - "\x0finstances_count\x18\x04 \x01(\x05R\x0einstancesCount\"^\n" + + "\x0finstances_count\x18\x04 \x01(\x05R\x0einstancesCount\x122\n" + + "\x15discovery_config_name\x18\x05 \x01(\tR\x13discoveryConfigName\"^\n" + "\x18AccessRequestCreateEvent\x12\x1b\n" + "\tuser_name\x18\x01 \x01(\tR\buserName\x12%\n" + "\x0eresource_kinds\x18\x02 \x03(\tR\rresourceKinds\"\xce\x02\n" + @@ -11376,7 +11566,13 @@ const file_prehog_v1alpha_teleport_proto_rawDesc = "" + "\x13total_output_tokens\x18\x04 \x01(\x04R\x11totalOutputTokens\x12\x18\n" + "\asuccess\x18\x05 \x01(\bR\asuccess\x12#\n" + "\rresource_name\x18\x06 \x01(\tR\fresourceName\x123\n" + - "\x16is_cloud_default_model\x18\a \x01(\bR\x13isCloudDefaultModel\"\xbcX\n" + + "\x16is_cloud_default_model\x18\a \x01(\bR\x13isCloudDefaultModel\"\x82\x02\n" + + "\x14DiscoveryConfigEvent\x12=\n" + + "\x06action\x18\x01 \x01(\x0e2%.prehog.v1alpha.DiscoveryConfigActionR\x06action\x122\n" + + "\x15discovery_config_name\x18\x02 \x01(\tR\x13discoveryConfigName\x12%\n" + + "\x0eresource_types\x18\x03 \x03(\tR\rresourceTypes\x12'\n" + + "\x0fcloud_providers\x18\x04 \x03(\tR\x0ecloudProviders\x12'\n" + + "\x0fcreation_method\x18\x05 \x01(\tR\x0ecreationMethod\"\x8fY\n" + "\x12SubmitEventRequest\x12!\n" + "\fcluster_name\x18\x01 \x01(\tR\vclusterName\x128\n" + "\ttimestamp\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x12)\n" + @@ -11485,7 +11681,8 @@ const file_prehog_v1alpha_teleport_proto_rawDesc = "" + "%ui_integration_enroll_code_copy_event\x18g \x01(\v20.prehog.v1alpha.UIIntegrationEnrollCodeCopyEventH\x00R uiIntegrationEnrollCodeCopyEvent\x12\x86\x01\n" + "&ui_integration_enroll_link_click_event\x18h \x01(\v21.prehog.v1alpha.UIIntegrationEnrollLinkClickEventH\x00R!uiIntegrationEnrollLinkClickEvent\x12l\n" + "\x1csession_summary_create_event\x18i \x01(\v2).prehog.v1alpha.SessionSummaryCreateEventH\x00R\x19sessionSummaryCreateEvent\x12l\n" + - "\x1csession_summary_access_event\x18j \x01(\v2).prehog.v1alpha.SessionSummaryAccessEventH\x00R\x19sessionSummaryAccessEventB\a\n" + + "\x1csession_summary_access_event\x18j \x01(\v2).prehog.v1alpha.SessionSummaryAccessEventH\x00R\x19sessionSummaryAccessEvent\x12Q\n" + + "\x10discovery_config\x18k \x01(\v2$.prehog.v1alpha.DiscoveryConfigEventH\x00R\x0fdiscoveryConfigB\a\n" + "\x05eventJ\x04\b\b\x10\tJ\x04\ba\x10bJ\x04\bb\x10cR\x1cui_onboard_get_started_clickR\x1baccess_request_create_eventR\x1baccess_request_review_event\"\x15\n" + "\x13SubmitEventResponse\"Q\n" + "\x13SubmitEventsRequest\x12:\n" + @@ -11584,8 +11781,7 @@ const file_prehog_v1alpha_teleport_proto_rawDesc = "" + "\x12CTA_OKTA_USER_SYNC\x10\v\x12\x10\n" + "\fCTA_ENTRA_ID\x10\f\x12\x11\n" + "\rCTA_OKTA_SCIM\x10\r\x12\x14\n" + - "\x10CTA_USAGE_REPORT\x10\x0e*\xb5\n" + - "\n" + + "\x10CTA_USAGE_REPORT\x10\x0e*\xaf\v\n" + "\x15IntegrationEnrollKind\x12'\n" + "#INTEGRATION_ENROLL_KIND_UNSPECIFIED\x10\x00\x12!\n" + "\x1dINTEGRATION_ENROLL_KIND_SLACK\x10\x01\x12$\n" + @@ -11617,7 +11813,10 @@ const file_prehog_v1alpha_teleport_proto_rawDesc = "" + "+INTEGRATION_ENROLL_KIND_AWS_IDENTITY_CENTER\x10\x1a\x12.\n" + "*INTEGRATION_ENROLL_KIND_GITHUB_REPO_ACCESS\x10\x1b\x12-\n" + ")INTEGRATION_ENROLL_KIND_MACHINE_ID_ARGOCD\x10\x1c\x12@\n" + - "\n" + @@ -11632,7 +11831,8 @@ const file_prehog_v1alpha_teleport_proto_rawDesc = "" + "2INTEGRATION_ENROLL_STEP_MWIGHAK8S_CONFIGURE_ACCESS\x10\n" + "\x124\n" + "0INTEGRATION_ENROLL_STEP_MWIGHAK8S_SETUP_WORKFLOW\x10\v\x12-\n" + - ")INTEGRATION_ENROLL_STEP_MWIGHAK8S_WELCOME\x10\f*\xfb\x01\n" + + ")INTEGRATION_ENROLL_STEP_MWIGHAK8S_WELCOME\x10\f\x12.\n" + + "*INTEGRATION_ENROLL_STEP_VERIFY_INTEGRATION\x10\r*\xfb\x01\n" + "\x1bIntegrationEnrollStatusCode\x12.\n" + "*INTEGRATION_ENROLL_STATUS_CODE_UNSPECIFIED\x10\x00\x12*\n" + "&INTEGRATION_ENROLL_STATUS_CODE_SUCCESS\x10\x01\x12*\n" + @@ -11678,7 +11878,12 @@ const file_prehog_v1alpha_teleport_proto_rawDesc = "" + "\fLicenseLimit\x12\x1d\n" + "\x19LICENSE_LIMIT_UNSPECIFIED\x10\x00\x12(\n" + "$LICENSE_LIMIT_DEVICE_TRUST_TEAM_JAMF\x10\x01\x12)\n" + - "%LICENSE_LIMIT_DEVICE_TRUST_TEAM_USAGE\x10\x022\xb4\x02\n" + + "%LICENSE_LIMIT_DEVICE_TRUST_TEAM_USAGE\x10\x02*\xac\x01\n" + + "\x15DiscoveryConfigAction\x12'\n" + + "#DISCOVERY_CONFIG_ACTION_UNSPECIFIED\x10\x00\x12\"\n" + + "\x1eDISCOVERY_CONFIG_ACTION_CREATE\x10\x01\x12\"\n" + + "\x1eDISCOVERY_CONFIG_ACTION_UPDATE\x10\x02\x12\"\n" + + "\x1eDISCOVERY_CONFIG_ACTION_DELETE\x10\x032\xb4\x02\n" + "\x18TeleportReportingService\x12[\n" + "\vSubmitEvent\x12\".prehog.v1alpha.SubmitEventRequest\x1a#.prehog.v1alpha.SubmitEventResponse\"\x03\x88\x02\x01\x12[\n" + "\fSubmitEvents\x12#.prehog.v1alpha.SubmitEventsRequest\x1a$.prehog.v1alpha.SubmitEventsResponse\"\x00\x12^\n" + @@ -11697,8 +11902,8 @@ func file_prehog_v1alpha_teleport_proto_rawDescGZIP() []byte { return file_prehog_v1alpha_teleport_proto_rawDescData } -var file_prehog_v1alpha_teleport_proto_enumTypes = make([]protoimpl.EnumInfo, 20) -var file_prehog_v1alpha_teleport_proto_msgTypes = make([]protoimpl.MessageInfo, 117) +var file_prehog_v1alpha_teleport_proto_enumTypes = make([]protoimpl.EnumInfo, 21) +var file_prehog_v1alpha_teleport_proto_msgTypes = make([]protoimpl.MessageInfo, 118) var file_prehog_v1alpha_teleport_proto_goTypes = []any{ (UserOrigin)(0), // 0: prehog.v1alpha.UserOrigin (ResourceKind)(0), // 1: prehog.v1alpha.ResourceKind @@ -11716,356 +11921,360 @@ var file_prehog_v1alpha_teleport_proto_goTypes = []any{ (Feature)(0), // 13: prehog.v1alpha.Feature (FeatureRecommendationStatus)(0), // 14: prehog.v1alpha.FeatureRecommendationStatus (LicenseLimit)(0), // 15: prehog.v1alpha.LicenseLimit - (UIDiscoverDeployServiceEvent_DeployMethod)(0), // 16: prehog.v1alpha.UIDiscoverDeployServiceEvent.DeployMethod - (UIDiscoverDeployServiceEvent_DeployType)(0), // 17: prehog.v1alpha.UIDiscoverDeployServiceEvent.DeployType - (UIDiscoverCreateDiscoveryConfigEvent_ConfigMethod)(0), // 18: prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent.ConfigMethod - (AccessRequestReviewEvent_ProposedState)(0), // 19: prehog.v1alpha.AccessRequestReviewEvent.ProposedState - (*UserLoginEvent)(nil), // 20: prehog.v1alpha.UserLoginEvent - (*MFAAuthenticationEvent)(nil), // 21: prehog.v1alpha.MFAAuthenticationEvent - (*SSOCreateEvent)(nil), // 22: prehog.v1alpha.SSOCreateEvent - (*ResourceCreateEvent)(nil), // 23: prehog.v1alpha.ResourceCreateEvent - (*DiscoveredDatabaseMetadata)(nil), // 24: prehog.v1alpha.DiscoveredDatabaseMetadata - (*ResourceHeartbeatEvent)(nil), // 25: prehog.v1alpha.ResourceHeartbeatEvent - (*SessionStartEvent)(nil), // 26: prehog.v1alpha.SessionStartEvent - (*SessionStartDatabaseMetadata)(nil), // 27: prehog.v1alpha.SessionStartDatabaseMetadata - (*SessionStartDesktopMetadata)(nil), // 28: prehog.v1alpha.SessionStartDesktopMetadata - (*SessionStartAppMetadata)(nil), // 29: prehog.v1alpha.SessionStartAppMetadata - (*SessionStartGitMetadata)(nil), // 30: prehog.v1alpha.SessionStartGitMetadata - (*SessionStartMCPMetadata)(nil), // 31: prehog.v1alpha.SessionStartMCPMetadata - (*UserCertificateIssuedEvent)(nil), // 32: prehog.v1alpha.UserCertificateIssuedEvent - (*SPIFFESVIDIssuedEvent)(nil), // 33: prehog.v1alpha.SPIFFESVIDIssuedEvent - (*UIBannerClickEvent)(nil), // 34: prehog.v1alpha.UIBannerClickEvent - (*UIOnboardCompleteGoToDashboardClickEvent)(nil), // 35: prehog.v1alpha.UIOnboardCompleteGoToDashboardClickEvent - (*UIOnboardAddFirstResourceClickEvent)(nil), // 36: prehog.v1alpha.UIOnboardAddFirstResourceClickEvent - (*UIOnboardAddFirstResourceLaterClickEvent)(nil), // 37: prehog.v1alpha.UIOnboardAddFirstResourceLaterClickEvent - (*UIOnboardSetCredentialSubmitEvent)(nil), // 38: prehog.v1alpha.UIOnboardSetCredentialSubmitEvent - (*UIOnboardRegisterChallengeSubmitEvent)(nil), // 39: prehog.v1alpha.UIOnboardRegisterChallengeSubmitEvent - (*UIOnboardQuestionnaireSubmitEvent)(nil), // 40: prehog.v1alpha.UIOnboardQuestionnaireSubmitEvent - (*UIRecoveryCodesContinueClickEvent)(nil), // 41: prehog.v1alpha.UIRecoveryCodesContinueClickEvent - (*UIRecoveryCodesCopyClickEvent)(nil), // 42: prehog.v1alpha.UIRecoveryCodesCopyClickEvent - (*UIRecoveryCodesPrintClickEvent)(nil), // 43: prehog.v1alpha.UIRecoveryCodesPrintClickEvent - (*DiscoverMetadata)(nil), // 44: prehog.v1alpha.DiscoverMetadata - (*DiscoverResourceMetadata)(nil), // 45: prehog.v1alpha.DiscoverResourceMetadata - (*DiscoverStepStatus)(nil), // 46: prehog.v1alpha.DiscoverStepStatus - (*UIDiscoverStartedEvent)(nil), // 47: prehog.v1alpha.UIDiscoverStartedEvent - (*UIDiscoverResourceSelectionEvent)(nil), // 48: prehog.v1alpha.UIDiscoverResourceSelectionEvent - (*UIDiscoverIntegrationAWSOIDCConnectEvent)(nil), // 49: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent - (*UIDiscoverDatabaseRDSEnrollEvent)(nil), // 50: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent - (*UIDiscoverKubeEKSEnrollEvent)(nil), // 51: prehog.v1alpha.UIDiscoverKubeEKSEnrollEvent - (*UIDiscoverDeployServiceEvent)(nil), // 52: prehog.v1alpha.UIDiscoverDeployServiceEvent - (*UIDiscoverCreateDiscoveryConfigEvent)(nil), // 53: prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent - (*UIDiscoverDatabaseRegisterEvent)(nil), // 54: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent - (*UIDiscoverDatabaseConfigureMTLSEvent)(nil), // 55: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent - (*UIDiscoverDesktopActiveDirectoryToolsInstallEvent)(nil), // 56: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent - (*UIDiscoverDesktopActiveDirectoryConfigureEvent)(nil), // 57: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent - (*UIDiscoverAutoDiscoveredResourcesEvent)(nil), // 58: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent - (*UIDiscoverEC2InstanceSelectionEvent)(nil), // 59: prehog.v1alpha.UIDiscoverEC2InstanceSelectionEvent - (*UIDiscoverDeployEICEEvent)(nil), // 60: prehog.v1alpha.UIDiscoverDeployEICEEvent - (*UIDiscoverCreateNodeEvent)(nil), // 61: prehog.v1alpha.UIDiscoverCreateNodeEvent - (*UIDiscoverCreateAppServerEvent)(nil), // 62: prehog.v1alpha.UIDiscoverCreateAppServerEvent - (*UIDiscoverDatabaseConfigureIAMPolicyEvent)(nil), // 63: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent - (*UIDiscoverPrincipalsConfigureEvent)(nil), // 64: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent - (*UIDiscoverTestConnectionEvent)(nil), // 65: prehog.v1alpha.UIDiscoverTestConnectionEvent - (*UIDiscoverCompletedEvent)(nil), // 66: prehog.v1alpha.UIDiscoverCompletedEvent - (*RoleCreateEvent)(nil), // 67: prehog.v1alpha.RoleCreateEvent - (*BotCreateEvent)(nil), // 68: prehog.v1alpha.BotCreateEvent - (*BotJoinEvent)(nil), // 69: prehog.v1alpha.BotJoinEvent - (*UICreateNewRoleClickEvent)(nil), // 70: prehog.v1alpha.UICreateNewRoleClickEvent - (*UICreateNewRoleSaveClickEvent)(nil), // 71: prehog.v1alpha.UICreateNewRoleSaveClickEvent - (*UICreateNewRoleCancelClickEvent)(nil), // 72: prehog.v1alpha.UICreateNewRoleCancelClickEvent - (*UICreateNewRoleViewDocumentationClickEvent)(nil), // 73: prehog.v1alpha.UICreateNewRoleViewDocumentationClickEvent - (*UICallToActionClickEvent)(nil), // 74: prehog.v1alpha.UICallToActionClickEvent - (*KubeRequestEvent)(nil), // 75: prehog.v1alpha.KubeRequestEvent - (*SFTPEvent)(nil), // 76: prehog.v1alpha.SFTPEvent - (*AgentMetadataEvent)(nil), // 77: prehog.v1alpha.AgentMetadataEvent - (*AssistCompletionEvent)(nil), // 78: prehog.v1alpha.AssistCompletionEvent - (*AssistExecutionEvent)(nil), // 79: prehog.v1alpha.AssistExecutionEvent - (*AssistNewConversationEvent)(nil), // 80: prehog.v1alpha.AssistNewConversationEvent - (*AssistAccessRequestEvent)(nil), // 81: prehog.v1alpha.AssistAccessRequestEvent - (*AssistActionEvent)(nil), // 82: prehog.v1alpha.AssistActionEvent - (*AccessListMetadata)(nil), // 83: prehog.v1alpha.AccessListMetadata - (*AccessListCreateEvent)(nil), // 84: prehog.v1alpha.AccessListCreateEvent - (*AccessListUpdateEvent)(nil), // 85: prehog.v1alpha.AccessListUpdateEvent - (*AccessListDeleteEvent)(nil), // 86: prehog.v1alpha.AccessListDeleteEvent - (*AccessListMemberCreateEvent)(nil), // 87: prehog.v1alpha.AccessListMemberCreateEvent - (*AccessListMemberUpdateEvent)(nil), // 88: prehog.v1alpha.AccessListMemberUpdateEvent - (*AccessListMemberDeleteEvent)(nil), // 89: prehog.v1alpha.AccessListMemberDeleteEvent - (*AccessListGrantsToUserEvent)(nil), // 90: prehog.v1alpha.AccessListGrantsToUserEvent - (*AccessListReviewCreateEvent)(nil), // 91: prehog.v1alpha.AccessListReviewCreateEvent - (*AccessListReviewDeleteEvent)(nil), // 92: prehog.v1alpha.AccessListReviewDeleteEvent - (*AccessListReviewComplianceEvent)(nil), // 93: prehog.v1alpha.AccessListReviewComplianceEvent - (*IntegrationEnrollMetadata)(nil), // 94: prehog.v1alpha.IntegrationEnrollMetadata - (*UIIntegrationEnrollStartEvent)(nil), // 95: prehog.v1alpha.UIIntegrationEnrollStartEvent - (*UIIntegrationEnrollCompleteEvent)(nil), // 96: prehog.v1alpha.UIIntegrationEnrollCompleteEvent - (*IntegrationEnrollStepStatus)(nil), // 97: prehog.v1alpha.IntegrationEnrollStepStatus - (*UIIntegrationEnrollStepEvent)(nil), // 98: prehog.v1alpha.UIIntegrationEnrollStepEvent - (*UIIntegrationEnrollSectionOpenEvent)(nil), // 99: prehog.v1alpha.UIIntegrationEnrollSectionOpenEvent - (*UIIntegrationEnrollFieldCompleteEvent)(nil), // 100: prehog.v1alpha.UIIntegrationEnrollFieldCompleteEvent - (*UIIntegrationEnrollCodeCopyEvent)(nil), // 101: prehog.v1alpha.UIIntegrationEnrollCodeCopyEvent - (*UIIntegrationEnrollLinkClickEvent)(nil), // 102: prehog.v1alpha.UIIntegrationEnrollLinkClickEvent - (*EditorChangeEvent)(nil), // 103: prehog.v1alpha.EditorChangeEvent - (*DeviceAuthenticateEvent)(nil), // 104: prehog.v1alpha.DeviceAuthenticateEvent - (*DeviceEnrollEvent)(nil), // 105: prehog.v1alpha.DeviceEnrollEvent - (*FeatureRecommendationEvent)(nil), // 106: prehog.v1alpha.FeatureRecommendationEvent - (*LicenseLimitEvent)(nil), // 107: prehog.v1alpha.LicenseLimitEvent - (*DesktopDirectoryShareEvent)(nil), // 108: prehog.v1alpha.DesktopDirectoryShareEvent - (*DesktopClipboardEvent)(nil), // 109: prehog.v1alpha.DesktopClipboardEvent - (*TAGExecuteQueryEvent)(nil), // 110: prehog.v1alpha.TAGExecuteQueryEvent - (*AccessGraphSecretsScanAuthorizedKeysEvent)(nil), // 111: prehog.v1alpha.AccessGraphSecretsScanAuthorizedKeysEvent - (*AccessGraphSecretsScanSSHPrivateKeysEvent)(nil), // 112: prehog.v1alpha.AccessGraphSecretsScanSSHPrivateKeysEvent - (*AccessGraphGitlabScanEvent)(nil), // 113: prehog.v1alpha.AccessGraphGitlabScanEvent - (*AccessGraphAWSScanEvent)(nil), // 114: prehog.v1alpha.AccessGraphAWSScanEvent - (*AccessGraphAccessPathChangedEvent)(nil), // 115: prehog.v1alpha.AccessGraphAccessPathChangedEvent - (*UIAccessGraphCrownJewelDiffViewEvent)(nil), // 116: prehog.v1alpha.UIAccessGraphCrownJewelDiffViewEvent - (*AccessGraphCrownJewelCreateEvent)(nil), // 117: prehog.v1alpha.AccessGraphCrownJewelCreateEvent - (*ExternalAuditStorageAuthenticateEvent)(nil), // 118: prehog.v1alpha.ExternalAuditStorageAuthenticateEvent - (*SecurityReportGetResultEvent)(nil), // 119: prehog.v1alpha.SecurityReportGetResultEvent - (*AuditQueryRunEvent)(nil), // 120: prehog.v1alpha.AuditQueryRunEvent - (*DiscoveryFetchEvent)(nil), // 121: prehog.v1alpha.DiscoveryFetchEvent - (*OktaAccessListSyncEvent)(nil), // 122: prehog.v1alpha.OktaAccessListSyncEvent - (*DatabaseUserCreatedEvent)(nil), // 123: prehog.v1alpha.DatabaseUserCreatedEvent - (*DatabaseUserPermissionsUpdateEvent)(nil), // 124: prehog.v1alpha.DatabaseUserPermissionsUpdateEvent - (*SessionRecordingAccessEvent)(nil), // 125: prehog.v1alpha.SessionRecordingAccessEvent - (*UserTaskStateEvent)(nil), // 126: prehog.v1alpha.UserTaskStateEvent - (*AccessRequestCreateEvent)(nil), // 127: prehog.v1alpha.AccessRequestCreateEvent - (*AccessRequestReviewEvent)(nil), // 128: prehog.v1alpha.AccessRequestReviewEvent - (*SessionSummaryAccessEvent)(nil), // 129: prehog.v1alpha.SessionSummaryAccessEvent - (*SessionSummaryCreateEvent)(nil), // 130: prehog.v1alpha.SessionSummaryCreateEvent - (*SubmitEventRequest)(nil), // 131: prehog.v1alpha.SubmitEventRequest - (*SubmitEventResponse)(nil), // 132: prehog.v1alpha.SubmitEventResponse - (*SubmitEventsRequest)(nil), // 133: prehog.v1alpha.SubmitEventsRequest - (*SubmitEventsResponse)(nil), // 134: prehog.v1alpha.SubmitEventsResponse - (*HelloTeleportRequest)(nil), // 135: prehog.v1alpha.HelloTeleportRequest - (*HelloTeleportResponse)(nil), // 136: prehog.v1alpha.HelloTeleportResponse - (*durationpb.Duration)(nil), // 137: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 138: google.protobuf.Timestamp + (DiscoveryConfigAction)(0), // 16: prehog.v1alpha.DiscoveryConfigAction + (UIDiscoverDeployServiceEvent_DeployMethod)(0), // 17: prehog.v1alpha.UIDiscoverDeployServiceEvent.DeployMethod + (UIDiscoverDeployServiceEvent_DeployType)(0), // 18: prehog.v1alpha.UIDiscoverDeployServiceEvent.DeployType + (UIDiscoverCreateDiscoveryConfigEvent_ConfigMethod)(0), // 19: prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent.ConfigMethod + (AccessRequestReviewEvent_ProposedState)(0), // 20: prehog.v1alpha.AccessRequestReviewEvent.ProposedState + (*UserLoginEvent)(nil), // 21: prehog.v1alpha.UserLoginEvent + (*MFAAuthenticationEvent)(nil), // 22: prehog.v1alpha.MFAAuthenticationEvent + (*SSOCreateEvent)(nil), // 23: prehog.v1alpha.SSOCreateEvent + (*ResourceCreateEvent)(nil), // 24: prehog.v1alpha.ResourceCreateEvent + (*DiscoveredDatabaseMetadata)(nil), // 25: prehog.v1alpha.DiscoveredDatabaseMetadata + (*ResourceHeartbeatEvent)(nil), // 26: prehog.v1alpha.ResourceHeartbeatEvent + (*SessionStartEvent)(nil), // 27: prehog.v1alpha.SessionStartEvent + (*SessionStartDatabaseMetadata)(nil), // 28: prehog.v1alpha.SessionStartDatabaseMetadata + (*SessionStartDesktopMetadata)(nil), // 29: prehog.v1alpha.SessionStartDesktopMetadata + (*SessionStartAppMetadata)(nil), // 30: prehog.v1alpha.SessionStartAppMetadata + (*SessionStartGitMetadata)(nil), // 31: prehog.v1alpha.SessionStartGitMetadata + (*SessionStartMCPMetadata)(nil), // 32: prehog.v1alpha.SessionStartMCPMetadata + (*UserCertificateIssuedEvent)(nil), // 33: prehog.v1alpha.UserCertificateIssuedEvent + (*SPIFFESVIDIssuedEvent)(nil), // 34: prehog.v1alpha.SPIFFESVIDIssuedEvent + (*UIBannerClickEvent)(nil), // 35: prehog.v1alpha.UIBannerClickEvent + (*UIOnboardCompleteGoToDashboardClickEvent)(nil), // 36: prehog.v1alpha.UIOnboardCompleteGoToDashboardClickEvent + (*UIOnboardAddFirstResourceClickEvent)(nil), // 37: prehog.v1alpha.UIOnboardAddFirstResourceClickEvent + (*UIOnboardAddFirstResourceLaterClickEvent)(nil), // 38: prehog.v1alpha.UIOnboardAddFirstResourceLaterClickEvent + (*UIOnboardSetCredentialSubmitEvent)(nil), // 39: prehog.v1alpha.UIOnboardSetCredentialSubmitEvent + (*UIOnboardRegisterChallengeSubmitEvent)(nil), // 40: prehog.v1alpha.UIOnboardRegisterChallengeSubmitEvent + (*UIOnboardQuestionnaireSubmitEvent)(nil), // 41: prehog.v1alpha.UIOnboardQuestionnaireSubmitEvent + (*UIRecoveryCodesContinueClickEvent)(nil), // 42: prehog.v1alpha.UIRecoveryCodesContinueClickEvent + (*UIRecoveryCodesCopyClickEvent)(nil), // 43: prehog.v1alpha.UIRecoveryCodesCopyClickEvent + (*UIRecoveryCodesPrintClickEvent)(nil), // 44: prehog.v1alpha.UIRecoveryCodesPrintClickEvent + (*DiscoverMetadata)(nil), // 45: prehog.v1alpha.DiscoverMetadata + (*DiscoverResourceMetadata)(nil), // 46: prehog.v1alpha.DiscoverResourceMetadata + (*DiscoverStepStatus)(nil), // 47: prehog.v1alpha.DiscoverStepStatus + (*UIDiscoverStartedEvent)(nil), // 48: prehog.v1alpha.UIDiscoverStartedEvent + (*UIDiscoverResourceSelectionEvent)(nil), // 49: prehog.v1alpha.UIDiscoverResourceSelectionEvent + (*UIDiscoverIntegrationAWSOIDCConnectEvent)(nil), // 50: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent + (*UIDiscoverDatabaseRDSEnrollEvent)(nil), // 51: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent + (*UIDiscoverKubeEKSEnrollEvent)(nil), // 52: prehog.v1alpha.UIDiscoverKubeEKSEnrollEvent + (*UIDiscoverDeployServiceEvent)(nil), // 53: prehog.v1alpha.UIDiscoverDeployServiceEvent + (*UIDiscoverCreateDiscoveryConfigEvent)(nil), // 54: prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent + (*UIDiscoverDatabaseRegisterEvent)(nil), // 55: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent + (*UIDiscoverDatabaseConfigureMTLSEvent)(nil), // 56: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent + (*UIDiscoverDesktopActiveDirectoryToolsInstallEvent)(nil), // 57: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent + (*UIDiscoverDesktopActiveDirectoryConfigureEvent)(nil), // 58: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent + (*UIDiscoverAutoDiscoveredResourcesEvent)(nil), // 59: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent + (*UIDiscoverEC2InstanceSelectionEvent)(nil), // 60: prehog.v1alpha.UIDiscoverEC2InstanceSelectionEvent + (*UIDiscoverDeployEICEEvent)(nil), // 61: prehog.v1alpha.UIDiscoverDeployEICEEvent + (*UIDiscoverCreateNodeEvent)(nil), // 62: prehog.v1alpha.UIDiscoverCreateNodeEvent + (*UIDiscoverCreateAppServerEvent)(nil), // 63: prehog.v1alpha.UIDiscoverCreateAppServerEvent + (*UIDiscoverDatabaseConfigureIAMPolicyEvent)(nil), // 64: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent + (*UIDiscoverPrincipalsConfigureEvent)(nil), // 65: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent + (*UIDiscoverTestConnectionEvent)(nil), // 66: prehog.v1alpha.UIDiscoverTestConnectionEvent + (*UIDiscoverCompletedEvent)(nil), // 67: prehog.v1alpha.UIDiscoverCompletedEvent + (*RoleCreateEvent)(nil), // 68: prehog.v1alpha.RoleCreateEvent + (*BotCreateEvent)(nil), // 69: prehog.v1alpha.BotCreateEvent + (*BotJoinEvent)(nil), // 70: prehog.v1alpha.BotJoinEvent + (*UICreateNewRoleClickEvent)(nil), // 71: prehog.v1alpha.UICreateNewRoleClickEvent + (*UICreateNewRoleSaveClickEvent)(nil), // 72: prehog.v1alpha.UICreateNewRoleSaveClickEvent + (*UICreateNewRoleCancelClickEvent)(nil), // 73: prehog.v1alpha.UICreateNewRoleCancelClickEvent + (*UICreateNewRoleViewDocumentationClickEvent)(nil), // 74: prehog.v1alpha.UICreateNewRoleViewDocumentationClickEvent + (*UICallToActionClickEvent)(nil), // 75: prehog.v1alpha.UICallToActionClickEvent + (*KubeRequestEvent)(nil), // 76: prehog.v1alpha.KubeRequestEvent + (*SFTPEvent)(nil), // 77: prehog.v1alpha.SFTPEvent + (*AgentMetadataEvent)(nil), // 78: prehog.v1alpha.AgentMetadataEvent + (*AssistCompletionEvent)(nil), // 79: prehog.v1alpha.AssistCompletionEvent + (*AssistExecutionEvent)(nil), // 80: prehog.v1alpha.AssistExecutionEvent + (*AssistNewConversationEvent)(nil), // 81: prehog.v1alpha.AssistNewConversationEvent + (*AssistAccessRequestEvent)(nil), // 82: prehog.v1alpha.AssistAccessRequestEvent + (*AssistActionEvent)(nil), // 83: prehog.v1alpha.AssistActionEvent + (*AccessListMetadata)(nil), // 84: prehog.v1alpha.AccessListMetadata + (*AccessListCreateEvent)(nil), // 85: prehog.v1alpha.AccessListCreateEvent + (*AccessListUpdateEvent)(nil), // 86: prehog.v1alpha.AccessListUpdateEvent + (*AccessListDeleteEvent)(nil), // 87: prehog.v1alpha.AccessListDeleteEvent + (*AccessListMemberCreateEvent)(nil), // 88: prehog.v1alpha.AccessListMemberCreateEvent + (*AccessListMemberUpdateEvent)(nil), // 89: prehog.v1alpha.AccessListMemberUpdateEvent + (*AccessListMemberDeleteEvent)(nil), // 90: prehog.v1alpha.AccessListMemberDeleteEvent + (*AccessListGrantsToUserEvent)(nil), // 91: prehog.v1alpha.AccessListGrantsToUserEvent + (*AccessListReviewCreateEvent)(nil), // 92: prehog.v1alpha.AccessListReviewCreateEvent + (*AccessListReviewDeleteEvent)(nil), // 93: prehog.v1alpha.AccessListReviewDeleteEvent + (*AccessListReviewComplianceEvent)(nil), // 94: prehog.v1alpha.AccessListReviewComplianceEvent + (*IntegrationEnrollMetadata)(nil), // 95: prehog.v1alpha.IntegrationEnrollMetadata + (*UIIntegrationEnrollStartEvent)(nil), // 96: prehog.v1alpha.UIIntegrationEnrollStartEvent + (*UIIntegrationEnrollCompleteEvent)(nil), // 97: prehog.v1alpha.UIIntegrationEnrollCompleteEvent + (*IntegrationEnrollStepStatus)(nil), // 98: prehog.v1alpha.IntegrationEnrollStepStatus + (*UIIntegrationEnrollStepEvent)(nil), // 99: prehog.v1alpha.UIIntegrationEnrollStepEvent + (*UIIntegrationEnrollSectionOpenEvent)(nil), // 100: prehog.v1alpha.UIIntegrationEnrollSectionOpenEvent + (*UIIntegrationEnrollFieldCompleteEvent)(nil), // 101: prehog.v1alpha.UIIntegrationEnrollFieldCompleteEvent + (*UIIntegrationEnrollCodeCopyEvent)(nil), // 102: prehog.v1alpha.UIIntegrationEnrollCodeCopyEvent + (*UIIntegrationEnrollLinkClickEvent)(nil), // 103: prehog.v1alpha.UIIntegrationEnrollLinkClickEvent + (*EditorChangeEvent)(nil), // 104: prehog.v1alpha.EditorChangeEvent + (*DeviceAuthenticateEvent)(nil), // 105: prehog.v1alpha.DeviceAuthenticateEvent + (*DeviceEnrollEvent)(nil), // 106: prehog.v1alpha.DeviceEnrollEvent + (*FeatureRecommendationEvent)(nil), // 107: prehog.v1alpha.FeatureRecommendationEvent + (*LicenseLimitEvent)(nil), // 108: prehog.v1alpha.LicenseLimitEvent + (*DesktopDirectoryShareEvent)(nil), // 109: prehog.v1alpha.DesktopDirectoryShareEvent + (*DesktopClipboardEvent)(nil), // 110: prehog.v1alpha.DesktopClipboardEvent + (*TAGExecuteQueryEvent)(nil), // 111: prehog.v1alpha.TAGExecuteQueryEvent + (*AccessGraphSecretsScanAuthorizedKeysEvent)(nil), // 112: prehog.v1alpha.AccessGraphSecretsScanAuthorizedKeysEvent + (*AccessGraphSecretsScanSSHPrivateKeysEvent)(nil), // 113: prehog.v1alpha.AccessGraphSecretsScanSSHPrivateKeysEvent + (*AccessGraphGitlabScanEvent)(nil), // 114: prehog.v1alpha.AccessGraphGitlabScanEvent + (*AccessGraphAWSScanEvent)(nil), // 115: prehog.v1alpha.AccessGraphAWSScanEvent + (*AccessGraphAccessPathChangedEvent)(nil), // 116: prehog.v1alpha.AccessGraphAccessPathChangedEvent + (*UIAccessGraphCrownJewelDiffViewEvent)(nil), // 117: prehog.v1alpha.UIAccessGraphCrownJewelDiffViewEvent + (*AccessGraphCrownJewelCreateEvent)(nil), // 118: prehog.v1alpha.AccessGraphCrownJewelCreateEvent + (*ExternalAuditStorageAuthenticateEvent)(nil), // 119: prehog.v1alpha.ExternalAuditStorageAuthenticateEvent + (*SecurityReportGetResultEvent)(nil), // 120: prehog.v1alpha.SecurityReportGetResultEvent + (*AuditQueryRunEvent)(nil), // 121: prehog.v1alpha.AuditQueryRunEvent + (*DiscoveryFetchEvent)(nil), // 122: prehog.v1alpha.DiscoveryFetchEvent + (*OktaAccessListSyncEvent)(nil), // 123: prehog.v1alpha.OktaAccessListSyncEvent + (*DatabaseUserCreatedEvent)(nil), // 124: prehog.v1alpha.DatabaseUserCreatedEvent + (*DatabaseUserPermissionsUpdateEvent)(nil), // 125: prehog.v1alpha.DatabaseUserPermissionsUpdateEvent + (*SessionRecordingAccessEvent)(nil), // 126: prehog.v1alpha.SessionRecordingAccessEvent + (*UserTaskStateEvent)(nil), // 127: prehog.v1alpha.UserTaskStateEvent + (*AccessRequestCreateEvent)(nil), // 128: prehog.v1alpha.AccessRequestCreateEvent + (*AccessRequestReviewEvent)(nil), // 129: prehog.v1alpha.AccessRequestReviewEvent + (*SessionSummaryAccessEvent)(nil), // 130: prehog.v1alpha.SessionSummaryAccessEvent + (*SessionSummaryCreateEvent)(nil), // 131: prehog.v1alpha.SessionSummaryCreateEvent + (*DiscoveryConfigEvent)(nil), // 132: prehog.v1alpha.DiscoveryConfigEvent + (*SubmitEventRequest)(nil), // 133: prehog.v1alpha.SubmitEventRequest + (*SubmitEventResponse)(nil), // 134: prehog.v1alpha.SubmitEventResponse + (*SubmitEventsRequest)(nil), // 135: prehog.v1alpha.SubmitEventsRequest + (*SubmitEventsResponse)(nil), // 136: prehog.v1alpha.SubmitEventsResponse + (*HelloTeleportRequest)(nil), // 137: prehog.v1alpha.HelloTeleportRequest + (*HelloTeleportResponse)(nil), // 138: prehog.v1alpha.HelloTeleportResponse + (*durationpb.Duration)(nil), // 139: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 140: google.protobuf.Timestamp } var file_prehog_v1alpha_teleport_proto_depIdxs = []int32{ 0, // 0: prehog.v1alpha.UserLoginEvent.user_origin:type_name -> prehog.v1alpha.UserOrigin - 24, // 1: prehog.v1alpha.ResourceCreateEvent.database:type_name -> prehog.v1alpha.DiscoveredDatabaseMetadata + 25, // 1: prehog.v1alpha.ResourceCreateEvent.database:type_name -> prehog.v1alpha.DiscoveredDatabaseMetadata 1, // 2: prehog.v1alpha.ResourceHeartbeatEvent.resource_kind:type_name -> prehog.v1alpha.ResourceKind - 27, // 3: prehog.v1alpha.SessionStartEvent.database:type_name -> prehog.v1alpha.SessionStartDatabaseMetadata - 28, // 4: prehog.v1alpha.SessionStartEvent.desktop:type_name -> prehog.v1alpha.SessionStartDesktopMetadata + 28, // 3: prehog.v1alpha.SessionStartEvent.database:type_name -> prehog.v1alpha.SessionStartDatabaseMetadata + 29, // 4: prehog.v1alpha.SessionStartEvent.desktop:type_name -> prehog.v1alpha.SessionStartDesktopMetadata 2, // 5: prehog.v1alpha.SessionStartEvent.user_kind:type_name -> prehog.v1alpha.UserKind - 29, // 6: prehog.v1alpha.SessionStartEvent.app:type_name -> prehog.v1alpha.SessionStartAppMetadata - 30, // 7: prehog.v1alpha.SessionStartEvent.git:type_name -> prehog.v1alpha.SessionStartGitMetadata - 31, // 8: prehog.v1alpha.SessionStartEvent.mcp:type_name -> prehog.v1alpha.SessionStartMCPMetadata - 137, // 9: prehog.v1alpha.UserCertificateIssuedEvent.ttl:type_name -> google.protobuf.Duration + 30, // 6: prehog.v1alpha.SessionStartEvent.app:type_name -> prehog.v1alpha.SessionStartAppMetadata + 31, // 7: prehog.v1alpha.SessionStartEvent.git:type_name -> prehog.v1alpha.SessionStartGitMetadata + 32, // 8: prehog.v1alpha.SessionStartEvent.mcp:type_name -> prehog.v1alpha.SessionStartMCPMetadata + 139, // 9: prehog.v1alpha.UserCertificateIssuedEvent.ttl:type_name -> google.protobuf.Duration 2, // 10: prehog.v1alpha.SPIFFESVIDIssuedEvent.user_kind:type_name -> prehog.v1alpha.UserKind 3, // 11: prehog.v1alpha.DiscoverResourceMetadata.resource:type_name -> prehog.v1alpha.DiscoverResource 4, // 12: prehog.v1alpha.DiscoverStepStatus.status:type_name -> prehog.v1alpha.DiscoverStatus - 44, // 13: prehog.v1alpha.UIDiscoverStartedEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 46, // 14: prehog.v1alpha.UIDiscoverStartedEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 15: prehog.v1alpha.UIDiscoverResourceSelectionEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 16: prehog.v1alpha.UIDiscoverResourceSelectionEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 17: prehog.v1alpha.UIDiscoverResourceSelectionEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 18: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 19: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 20: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 21: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 22: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 23: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 24: prehog.v1alpha.UIDiscoverKubeEKSEnrollEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 25: prehog.v1alpha.UIDiscoverKubeEKSEnrollEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 26: prehog.v1alpha.UIDiscoverKubeEKSEnrollEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 27: prehog.v1alpha.UIDiscoverDeployServiceEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 28: prehog.v1alpha.UIDiscoverDeployServiceEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 29: prehog.v1alpha.UIDiscoverDeployServiceEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 16, // 30: prehog.v1alpha.UIDiscoverDeployServiceEvent.deploy_method:type_name -> prehog.v1alpha.UIDiscoverDeployServiceEvent.DeployMethod - 17, // 31: prehog.v1alpha.UIDiscoverDeployServiceEvent.deploy_type:type_name -> prehog.v1alpha.UIDiscoverDeployServiceEvent.DeployType - 44, // 32: prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 33: prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 34: prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 18, // 35: prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent.config_method:type_name -> prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent.ConfigMethod - 44, // 36: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 37: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 38: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 39: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 40: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 41: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 42: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 43: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 44: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 45: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 46: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 47: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 48: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 49: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 50: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 51: prehog.v1alpha.UIDiscoverEC2InstanceSelectionEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 52: prehog.v1alpha.UIDiscoverEC2InstanceSelectionEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 53: prehog.v1alpha.UIDiscoverEC2InstanceSelectionEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 54: prehog.v1alpha.UIDiscoverDeployEICEEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 55: prehog.v1alpha.UIDiscoverDeployEICEEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 56: prehog.v1alpha.UIDiscoverDeployEICEEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 57: prehog.v1alpha.UIDiscoverCreateNodeEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 58: prehog.v1alpha.UIDiscoverCreateNodeEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 59: prehog.v1alpha.UIDiscoverCreateNodeEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 60: prehog.v1alpha.UIDiscoverCreateAppServerEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 61: prehog.v1alpha.UIDiscoverCreateAppServerEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 62: prehog.v1alpha.UIDiscoverCreateAppServerEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 63: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 64: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 65: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 66: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 67: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 68: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 69: prehog.v1alpha.UIDiscoverTestConnectionEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 70: prehog.v1alpha.UIDiscoverTestConnectionEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 71: prehog.v1alpha.UIDiscoverTestConnectionEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus - 44, // 72: prehog.v1alpha.UIDiscoverCompletedEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata - 45, // 73: prehog.v1alpha.UIDiscoverCompletedEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata - 46, // 74: prehog.v1alpha.UIDiscoverCompletedEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 13: prehog.v1alpha.UIDiscoverStartedEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 47, // 14: prehog.v1alpha.UIDiscoverStartedEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 15: prehog.v1alpha.UIDiscoverResourceSelectionEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 16: prehog.v1alpha.UIDiscoverResourceSelectionEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 17: prehog.v1alpha.UIDiscoverResourceSelectionEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 18: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 19: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 20: prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 21: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 22: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 23: prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 24: prehog.v1alpha.UIDiscoverKubeEKSEnrollEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 25: prehog.v1alpha.UIDiscoverKubeEKSEnrollEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 26: prehog.v1alpha.UIDiscoverKubeEKSEnrollEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 27: prehog.v1alpha.UIDiscoverDeployServiceEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 28: prehog.v1alpha.UIDiscoverDeployServiceEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 29: prehog.v1alpha.UIDiscoverDeployServiceEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 17, // 30: prehog.v1alpha.UIDiscoverDeployServiceEvent.deploy_method:type_name -> prehog.v1alpha.UIDiscoverDeployServiceEvent.DeployMethod + 18, // 31: prehog.v1alpha.UIDiscoverDeployServiceEvent.deploy_type:type_name -> prehog.v1alpha.UIDiscoverDeployServiceEvent.DeployType + 45, // 32: prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 33: prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 34: prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 19, // 35: prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent.config_method:type_name -> prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent.ConfigMethod + 45, // 36: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 37: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 38: prehog.v1alpha.UIDiscoverDatabaseRegisterEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 39: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 40: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 41: prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 42: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 43: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 44: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 45: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 46: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 47: prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 48: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 49: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 50: prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 51: prehog.v1alpha.UIDiscoverEC2InstanceSelectionEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 52: prehog.v1alpha.UIDiscoverEC2InstanceSelectionEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 53: prehog.v1alpha.UIDiscoverEC2InstanceSelectionEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 54: prehog.v1alpha.UIDiscoverDeployEICEEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 55: prehog.v1alpha.UIDiscoverDeployEICEEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 56: prehog.v1alpha.UIDiscoverDeployEICEEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 57: prehog.v1alpha.UIDiscoverCreateNodeEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 58: prehog.v1alpha.UIDiscoverCreateNodeEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 59: prehog.v1alpha.UIDiscoverCreateNodeEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 60: prehog.v1alpha.UIDiscoverCreateAppServerEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 61: prehog.v1alpha.UIDiscoverCreateAppServerEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 62: prehog.v1alpha.UIDiscoverCreateAppServerEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 63: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 64: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 65: prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 66: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 67: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 68: prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 69: prehog.v1alpha.UIDiscoverTestConnectionEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 70: prehog.v1alpha.UIDiscoverTestConnectionEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 71: prehog.v1alpha.UIDiscoverTestConnectionEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus + 45, // 72: prehog.v1alpha.UIDiscoverCompletedEvent.metadata:type_name -> prehog.v1alpha.DiscoverMetadata + 46, // 73: prehog.v1alpha.UIDiscoverCompletedEvent.resource:type_name -> prehog.v1alpha.DiscoverResourceMetadata + 47, // 74: prehog.v1alpha.UIDiscoverCompletedEvent.status:type_name -> prehog.v1alpha.DiscoverStepStatus 5, // 75: prehog.v1alpha.UICallToActionClickEvent.cta:type_name -> prehog.v1alpha.CTA 2, // 76: prehog.v1alpha.KubeRequestEvent.user_kind:type_name -> prehog.v1alpha.UserKind 2, // 77: prehog.v1alpha.SFTPEvent.user_kind:type_name -> prehog.v1alpha.UserKind - 83, // 78: prehog.v1alpha.AccessListCreateEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata - 83, // 79: prehog.v1alpha.AccessListUpdateEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata - 83, // 80: prehog.v1alpha.AccessListDeleteEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata - 83, // 81: prehog.v1alpha.AccessListMemberCreateEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata - 83, // 82: prehog.v1alpha.AccessListMemberUpdateEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata - 83, // 83: prehog.v1alpha.AccessListMemberDeleteEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata - 83, // 84: prehog.v1alpha.AccessListReviewCreateEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata - 83, // 85: prehog.v1alpha.AccessListReviewDeleteEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata + 84, // 78: prehog.v1alpha.AccessListCreateEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata + 84, // 79: prehog.v1alpha.AccessListUpdateEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata + 84, // 80: prehog.v1alpha.AccessListDeleteEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata + 84, // 81: prehog.v1alpha.AccessListMemberCreateEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata + 84, // 82: prehog.v1alpha.AccessListMemberUpdateEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata + 84, // 83: prehog.v1alpha.AccessListMemberDeleteEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata + 84, // 84: prehog.v1alpha.AccessListReviewCreateEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata + 84, // 85: prehog.v1alpha.AccessListReviewDeleteEvent.metadata:type_name -> prehog.v1alpha.AccessListMetadata 6, // 86: prehog.v1alpha.IntegrationEnrollMetadata.kind:type_name -> prehog.v1alpha.IntegrationEnrollKind - 94, // 87: prehog.v1alpha.UIIntegrationEnrollStartEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata - 94, // 88: prehog.v1alpha.UIIntegrationEnrollCompleteEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata + 95, // 87: prehog.v1alpha.UIIntegrationEnrollStartEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata + 95, // 88: prehog.v1alpha.UIIntegrationEnrollCompleteEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata 8, // 89: prehog.v1alpha.IntegrationEnrollStepStatus.code:type_name -> prehog.v1alpha.IntegrationEnrollStatusCode - 94, // 90: prehog.v1alpha.UIIntegrationEnrollStepEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata + 95, // 90: prehog.v1alpha.UIIntegrationEnrollStepEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata 7, // 91: prehog.v1alpha.UIIntegrationEnrollStepEvent.step:type_name -> prehog.v1alpha.IntegrationEnrollStep - 97, // 92: prehog.v1alpha.UIIntegrationEnrollStepEvent.status:type_name -> prehog.v1alpha.IntegrationEnrollStepStatus - 94, // 93: prehog.v1alpha.UIIntegrationEnrollSectionOpenEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata + 98, // 92: prehog.v1alpha.UIIntegrationEnrollStepEvent.status:type_name -> prehog.v1alpha.IntegrationEnrollStepStatus + 95, // 93: prehog.v1alpha.UIIntegrationEnrollSectionOpenEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata 7, // 94: prehog.v1alpha.UIIntegrationEnrollSectionOpenEvent.step:type_name -> prehog.v1alpha.IntegrationEnrollStep 9, // 95: prehog.v1alpha.UIIntegrationEnrollSectionOpenEvent.section:type_name -> prehog.v1alpha.IntegrationEnrollSection - 94, // 96: prehog.v1alpha.UIIntegrationEnrollFieldCompleteEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata + 95, // 96: prehog.v1alpha.UIIntegrationEnrollFieldCompleteEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata 7, // 97: prehog.v1alpha.UIIntegrationEnrollFieldCompleteEvent.step:type_name -> prehog.v1alpha.IntegrationEnrollStep 10, // 98: prehog.v1alpha.UIIntegrationEnrollFieldCompleteEvent.field:type_name -> prehog.v1alpha.IntegrationEnrollField - 94, // 99: prehog.v1alpha.UIIntegrationEnrollCodeCopyEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata + 95, // 99: prehog.v1alpha.UIIntegrationEnrollCodeCopyEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata 7, // 100: prehog.v1alpha.UIIntegrationEnrollCodeCopyEvent.step:type_name -> prehog.v1alpha.IntegrationEnrollStep 11, // 101: prehog.v1alpha.UIIntegrationEnrollCodeCopyEvent.type:type_name -> prehog.v1alpha.IntegrationEnrollCodeType - 94, // 102: prehog.v1alpha.UIIntegrationEnrollLinkClickEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata + 95, // 102: prehog.v1alpha.UIIntegrationEnrollLinkClickEvent.metadata:type_name -> prehog.v1alpha.IntegrationEnrollMetadata 7, // 103: prehog.v1alpha.UIIntegrationEnrollLinkClickEvent.step:type_name -> prehog.v1alpha.IntegrationEnrollStep 12, // 104: prehog.v1alpha.EditorChangeEvent.status:type_name -> prehog.v1alpha.EditorChangeStatus 13, // 105: prehog.v1alpha.FeatureRecommendationEvent.feature:type_name -> prehog.v1alpha.Feature 14, // 106: prehog.v1alpha.FeatureRecommendationEvent.feature_recommendation_status:type_name -> prehog.v1alpha.FeatureRecommendationStatus 15, // 107: prehog.v1alpha.LicenseLimitEvent.license_limit:type_name -> prehog.v1alpha.LicenseLimit - 27, // 108: prehog.v1alpha.DatabaseUserCreatedEvent.database:type_name -> prehog.v1alpha.SessionStartDatabaseMetadata - 27, // 109: prehog.v1alpha.DatabaseUserPermissionsUpdateEvent.database:type_name -> prehog.v1alpha.SessionStartDatabaseMetadata - 19, // 110: prehog.v1alpha.AccessRequestReviewEvent.proposed_state:type_name -> prehog.v1alpha.AccessRequestReviewEvent.ProposedState + 28, // 108: prehog.v1alpha.DatabaseUserCreatedEvent.database:type_name -> prehog.v1alpha.SessionStartDatabaseMetadata + 28, // 109: prehog.v1alpha.DatabaseUserPermissionsUpdateEvent.database:type_name -> prehog.v1alpha.SessionStartDatabaseMetadata + 20, // 110: prehog.v1alpha.AccessRequestReviewEvent.proposed_state:type_name -> prehog.v1alpha.AccessRequestReviewEvent.ProposedState 2, // 111: prehog.v1alpha.SessionSummaryAccessEvent.user_kind:type_name -> prehog.v1alpha.UserKind - 138, // 112: prehog.v1alpha.SubmitEventRequest.timestamp:type_name -> google.protobuf.Timestamp - 20, // 113: prehog.v1alpha.SubmitEventRequest.user_login:type_name -> prehog.v1alpha.UserLoginEvent - 22, // 114: prehog.v1alpha.SubmitEventRequest.sso_create:type_name -> prehog.v1alpha.SSOCreateEvent - 23, // 115: prehog.v1alpha.SubmitEventRequest.resource_create:type_name -> prehog.v1alpha.ResourceCreateEvent - 26, // 116: prehog.v1alpha.SubmitEventRequest.session_start:type_name -> prehog.v1alpha.SessionStartEvent - 34, // 117: prehog.v1alpha.SubmitEventRequest.ui_banner_click:type_name -> prehog.v1alpha.UIBannerClickEvent - 35, // 118: prehog.v1alpha.SubmitEventRequest.ui_onboard_complete_go_to_dashboard_click:type_name -> prehog.v1alpha.UIOnboardCompleteGoToDashboardClickEvent - 36, // 119: prehog.v1alpha.SubmitEventRequest.ui_onboard_add_first_resource_click:type_name -> prehog.v1alpha.UIOnboardAddFirstResourceClickEvent - 37, // 120: prehog.v1alpha.SubmitEventRequest.ui_onboard_add_first_resource_later_click:type_name -> prehog.v1alpha.UIOnboardAddFirstResourceLaterClickEvent - 38, // 121: prehog.v1alpha.SubmitEventRequest.ui_onboard_set_credential_submit:type_name -> prehog.v1alpha.UIOnboardSetCredentialSubmitEvent - 39, // 122: prehog.v1alpha.SubmitEventRequest.ui_onboard_register_challenge_submit:type_name -> prehog.v1alpha.UIOnboardRegisterChallengeSubmitEvent - 41, // 123: prehog.v1alpha.SubmitEventRequest.ui_recovery_codes_continue_click:type_name -> prehog.v1alpha.UIRecoveryCodesContinueClickEvent - 42, // 124: prehog.v1alpha.SubmitEventRequest.ui_recovery_codes_copy_click:type_name -> prehog.v1alpha.UIRecoveryCodesCopyClickEvent - 43, // 125: prehog.v1alpha.SubmitEventRequest.ui_recovery_codes_print_click:type_name -> prehog.v1alpha.UIRecoveryCodesPrintClickEvent - 47, // 126: prehog.v1alpha.SubmitEventRequest.ui_discover_started_event:type_name -> prehog.v1alpha.UIDiscoverStartedEvent - 48, // 127: prehog.v1alpha.SubmitEventRequest.ui_discover_resource_selection_event:type_name -> prehog.v1alpha.UIDiscoverResourceSelectionEvent - 32, // 128: prehog.v1alpha.SubmitEventRequest.user_certificate_issued_event:type_name -> prehog.v1alpha.UserCertificateIssuedEvent - 26, // 129: prehog.v1alpha.SubmitEventRequest.session_start_v2:type_name -> prehog.v1alpha.SessionStartEvent - 52, // 130: prehog.v1alpha.SubmitEventRequest.ui_discover_deploy_service_event:type_name -> prehog.v1alpha.UIDiscoverDeployServiceEvent - 54, // 131: prehog.v1alpha.SubmitEventRequest.ui_discover_database_register_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseRegisterEvent - 55, // 132: prehog.v1alpha.SubmitEventRequest.ui_discover_database_configure_mtls_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent - 56, // 133: prehog.v1alpha.SubmitEventRequest.ui_discover_desktop_active_directory_tools_install_event:type_name -> prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent - 57, // 134: prehog.v1alpha.SubmitEventRequest.ui_discover_desktop_active_directory_configure_event:type_name -> prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent - 58, // 135: prehog.v1alpha.SubmitEventRequest.ui_discover_auto_discovered_resources_event:type_name -> prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent - 63, // 136: prehog.v1alpha.SubmitEventRequest.ui_discover_database_configure_iam_policy_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent - 64, // 137: prehog.v1alpha.SubmitEventRequest.ui_discover_principals_configure_event:type_name -> prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent - 65, // 138: prehog.v1alpha.SubmitEventRequest.ui_discover_test_connection_event:type_name -> prehog.v1alpha.UIDiscoverTestConnectionEvent - 66, // 139: prehog.v1alpha.SubmitEventRequest.ui_discover_completed_event:type_name -> prehog.v1alpha.UIDiscoverCompletedEvent - 67, // 140: prehog.v1alpha.SubmitEventRequest.role_create:type_name -> prehog.v1alpha.RoleCreateEvent - 70, // 141: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_click:type_name -> prehog.v1alpha.UICreateNewRoleClickEvent - 71, // 142: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_save_click:type_name -> prehog.v1alpha.UICreateNewRoleSaveClickEvent - 72, // 143: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_cancel_click:type_name -> prehog.v1alpha.UICreateNewRoleCancelClickEvent - 73, // 144: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_view_documentation_click:type_name -> prehog.v1alpha.UICreateNewRoleViewDocumentationClickEvent - 75, // 145: prehog.v1alpha.SubmitEventRequest.kube_request:type_name -> prehog.v1alpha.KubeRequestEvent - 76, // 146: prehog.v1alpha.SubmitEventRequest.sftp:type_name -> prehog.v1alpha.SFTPEvent - 77, // 147: prehog.v1alpha.SubmitEventRequest.agent_metadata_event:type_name -> prehog.v1alpha.AgentMetadataEvent - 25, // 148: prehog.v1alpha.SubmitEventRequest.resource_heartbeat:type_name -> prehog.v1alpha.ResourceHeartbeatEvent - 49, // 149: prehog.v1alpha.SubmitEventRequest.ui_discover_integration_aws_oidc_connect_event:type_name -> prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent - 50, // 150: prehog.v1alpha.SubmitEventRequest.ui_discover_database_rds_enroll_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent - 74, // 151: prehog.v1alpha.SubmitEventRequest.ui_call_to_action_click_event:type_name -> prehog.v1alpha.UICallToActionClickEvent - 78, // 152: prehog.v1alpha.SubmitEventRequest.assist_completion:type_name -> prehog.v1alpha.AssistCompletionEvent - 95, // 153: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_start_event:type_name -> prehog.v1alpha.UIIntegrationEnrollStartEvent - 96, // 154: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_complete_event:type_name -> prehog.v1alpha.UIIntegrationEnrollCompleteEvent - 103, // 155: prehog.v1alpha.SubmitEventRequest.editor_change_event:type_name -> prehog.v1alpha.EditorChangeEvent - 68, // 156: prehog.v1alpha.SubmitEventRequest.bot_create:type_name -> prehog.v1alpha.BotCreateEvent - 40, // 157: prehog.v1alpha.SubmitEventRequest.ui_onboard_questionnaire_submit:type_name -> prehog.v1alpha.UIOnboardQuestionnaireSubmitEvent - 69, // 158: prehog.v1alpha.SubmitEventRequest.bot_join:type_name -> prehog.v1alpha.BotJoinEvent - 79, // 159: prehog.v1alpha.SubmitEventRequest.assist_execution:type_name -> prehog.v1alpha.AssistExecutionEvent - 80, // 160: prehog.v1alpha.SubmitEventRequest.assist_new_conversation:type_name -> prehog.v1alpha.AssistNewConversationEvent - 104, // 161: prehog.v1alpha.SubmitEventRequest.device_authenticate_event:type_name -> prehog.v1alpha.DeviceAuthenticateEvent - 106, // 162: prehog.v1alpha.SubmitEventRequest.feature_recommendation_event:type_name -> prehog.v1alpha.FeatureRecommendationEvent - 81, // 163: prehog.v1alpha.SubmitEventRequest.assist_access_request:type_name -> prehog.v1alpha.AssistAccessRequestEvent - 82, // 164: prehog.v1alpha.SubmitEventRequest.assist_action:type_name -> prehog.v1alpha.AssistActionEvent - 105, // 165: prehog.v1alpha.SubmitEventRequest.device_enroll_event:type_name -> prehog.v1alpha.DeviceEnrollEvent - 107, // 166: prehog.v1alpha.SubmitEventRequest.license_limit_event:type_name -> prehog.v1alpha.LicenseLimitEvent - 84, // 167: prehog.v1alpha.SubmitEventRequest.access_list_create:type_name -> prehog.v1alpha.AccessListCreateEvent - 85, // 168: prehog.v1alpha.SubmitEventRequest.access_list_update:type_name -> prehog.v1alpha.AccessListUpdateEvent - 86, // 169: prehog.v1alpha.SubmitEventRequest.access_list_delete:type_name -> prehog.v1alpha.AccessListDeleteEvent - 87, // 170: prehog.v1alpha.SubmitEventRequest.access_list_member_create:type_name -> prehog.v1alpha.AccessListMemberCreateEvent - 88, // 171: prehog.v1alpha.SubmitEventRequest.access_list_member_update:type_name -> prehog.v1alpha.AccessListMemberUpdateEvent - 89, // 172: prehog.v1alpha.SubmitEventRequest.access_list_member_delete:type_name -> prehog.v1alpha.AccessListMemberDeleteEvent - 90, // 173: prehog.v1alpha.SubmitEventRequest.access_list_grants_to_user:type_name -> prehog.v1alpha.AccessListGrantsToUserEvent - 59, // 174: prehog.v1alpha.SubmitEventRequest.ui_discover_ec2_instance_selection:type_name -> prehog.v1alpha.UIDiscoverEC2InstanceSelectionEvent - 60, // 175: prehog.v1alpha.SubmitEventRequest.ui_discover_deploy_eice:type_name -> prehog.v1alpha.UIDiscoverDeployEICEEvent - 61, // 176: prehog.v1alpha.SubmitEventRequest.ui_discover_create_node:type_name -> prehog.v1alpha.UIDiscoverCreateNodeEvent - 108, // 177: prehog.v1alpha.SubmitEventRequest.desktop_directory_share:type_name -> prehog.v1alpha.DesktopDirectoryShareEvent - 109, // 178: prehog.v1alpha.SubmitEventRequest.desktop_clipboard_transfer:type_name -> prehog.v1alpha.DesktopClipboardEvent - 110, // 179: prehog.v1alpha.SubmitEventRequest.tag_execute_query:type_name -> prehog.v1alpha.TAGExecuteQueryEvent - 118, // 180: prehog.v1alpha.SubmitEventRequest.external_audit_storage_authenticate:type_name -> prehog.v1alpha.ExternalAuditStorageAuthenticateEvent - 119, // 181: prehog.v1alpha.SubmitEventRequest.security_report_get_result:type_name -> prehog.v1alpha.SecurityReportGetResultEvent - 120, // 182: prehog.v1alpha.SubmitEventRequest.audit_query_run:type_name -> prehog.v1alpha.AuditQueryRunEvent - 121, // 183: prehog.v1alpha.SubmitEventRequest.discovery_fetch_event:type_name -> prehog.v1alpha.DiscoveryFetchEvent - 91, // 184: prehog.v1alpha.SubmitEventRequest.access_list_review_create:type_name -> prehog.v1alpha.AccessListReviewCreateEvent - 92, // 185: prehog.v1alpha.SubmitEventRequest.access_list_review_delete:type_name -> prehog.v1alpha.AccessListReviewDeleteEvent - 93, // 186: prehog.v1alpha.SubmitEventRequest.access_list_review_compliance:type_name -> prehog.v1alpha.AccessListReviewComplianceEvent - 21, // 187: prehog.v1alpha.SubmitEventRequest.mfa_authentication_event:type_name -> prehog.v1alpha.MFAAuthenticationEvent - 33, // 188: prehog.v1alpha.SubmitEventRequest.spiffe_svid_issued:type_name -> prehog.v1alpha.SPIFFESVIDIssuedEvent - 122, // 189: prehog.v1alpha.SubmitEventRequest.okta_access_list_sync:type_name -> prehog.v1alpha.OktaAccessListSyncEvent - 123, // 190: prehog.v1alpha.SubmitEventRequest.database_user_created:type_name -> prehog.v1alpha.DatabaseUserCreatedEvent - 124, // 191: prehog.v1alpha.SubmitEventRequest.database_user_permissions_updated:type_name -> prehog.v1alpha.DatabaseUserPermissionsUpdateEvent - 53, // 192: prehog.v1alpha.SubmitEventRequest.ui_discover_create_discovery_config:type_name -> prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent - 51, // 193: prehog.v1alpha.SubmitEventRequest.ui_discover_kube_eks_enroll_event:type_name -> prehog.v1alpha.UIDiscoverKubeEKSEnrollEvent - 62, // 194: prehog.v1alpha.SubmitEventRequest.ui_discover_create_app_server_event:type_name -> prehog.v1alpha.UIDiscoverCreateAppServerEvent - 113, // 195: prehog.v1alpha.SubmitEventRequest.access_graph_gitlab_scan:type_name -> prehog.v1alpha.AccessGraphGitlabScanEvent - 111, // 196: prehog.v1alpha.SubmitEventRequest.access_graph_secrets_scan_authorized_keys:type_name -> prehog.v1alpha.AccessGraphSecretsScanAuthorizedKeysEvent - 112, // 197: prehog.v1alpha.SubmitEventRequest.access_graph_secrets_scan_ssh_private_keys:type_name -> prehog.v1alpha.AccessGraphSecretsScanSSHPrivateKeysEvent - 114, // 198: prehog.v1alpha.SubmitEventRequest.access_graph_aws_scan:type_name -> prehog.v1alpha.AccessGraphAWSScanEvent - 115, // 199: prehog.v1alpha.SubmitEventRequest.access_graph_access_path_changed:type_name -> prehog.v1alpha.AccessGraphAccessPathChangedEvent - 117, // 200: prehog.v1alpha.SubmitEventRequest.access_graph_crown_jewel_create:type_name -> prehog.v1alpha.AccessGraphCrownJewelCreateEvent - 116, // 201: prehog.v1alpha.SubmitEventRequest.ui_access_graph_crown_jewel_diff_view:type_name -> prehog.v1alpha.UIAccessGraphCrownJewelDiffViewEvent - 125, // 202: prehog.v1alpha.SubmitEventRequest.session_recording_access:type_name -> prehog.v1alpha.SessionRecordingAccessEvent - 126, // 203: prehog.v1alpha.SubmitEventRequest.user_task_state:type_name -> prehog.v1alpha.UserTaskStateEvent - 98, // 204: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_step_event:type_name -> prehog.v1alpha.UIIntegrationEnrollStepEvent - 127, // 205: prehog.v1alpha.SubmitEventRequest.access_request_create:type_name -> prehog.v1alpha.AccessRequestCreateEvent - 128, // 206: prehog.v1alpha.SubmitEventRequest.access_request_review:type_name -> prehog.v1alpha.AccessRequestReviewEvent - 99, // 207: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_section_open_event:type_name -> prehog.v1alpha.UIIntegrationEnrollSectionOpenEvent - 100, // 208: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_field_complete_event:type_name -> prehog.v1alpha.UIIntegrationEnrollFieldCompleteEvent - 101, // 209: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_code_copy_event:type_name -> prehog.v1alpha.UIIntegrationEnrollCodeCopyEvent - 102, // 210: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_link_click_event:type_name -> prehog.v1alpha.UIIntegrationEnrollLinkClickEvent - 130, // 211: prehog.v1alpha.SubmitEventRequest.session_summary_create_event:type_name -> prehog.v1alpha.SessionSummaryCreateEvent - 129, // 212: prehog.v1alpha.SubmitEventRequest.session_summary_access_event:type_name -> prehog.v1alpha.SessionSummaryAccessEvent - 131, // 213: prehog.v1alpha.SubmitEventsRequest.events:type_name -> prehog.v1alpha.SubmitEventRequest - 131, // 214: prehog.v1alpha.TeleportReportingService.SubmitEvent:input_type -> prehog.v1alpha.SubmitEventRequest - 133, // 215: prehog.v1alpha.TeleportReportingService.SubmitEvents:input_type -> prehog.v1alpha.SubmitEventsRequest - 135, // 216: prehog.v1alpha.TeleportReportingService.HelloTeleport:input_type -> prehog.v1alpha.HelloTeleportRequest - 132, // 217: prehog.v1alpha.TeleportReportingService.SubmitEvent:output_type -> prehog.v1alpha.SubmitEventResponse - 134, // 218: prehog.v1alpha.TeleportReportingService.SubmitEvents:output_type -> prehog.v1alpha.SubmitEventsResponse - 136, // 219: prehog.v1alpha.TeleportReportingService.HelloTeleport:output_type -> prehog.v1alpha.HelloTeleportResponse - 217, // [217:220] is the sub-list for method output_type - 214, // [214:217] is the sub-list for method input_type - 214, // [214:214] is the sub-list for extension type_name - 214, // [214:214] is the sub-list for extension extendee - 0, // [0:214] is the sub-list for field type_name + 16, // 112: prehog.v1alpha.DiscoveryConfigEvent.action:type_name -> prehog.v1alpha.DiscoveryConfigAction + 140, // 113: prehog.v1alpha.SubmitEventRequest.timestamp:type_name -> google.protobuf.Timestamp + 21, // 114: prehog.v1alpha.SubmitEventRequest.user_login:type_name -> prehog.v1alpha.UserLoginEvent + 23, // 115: prehog.v1alpha.SubmitEventRequest.sso_create:type_name -> prehog.v1alpha.SSOCreateEvent + 24, // 116: prehog.v1alpha.SubmitEventRequest.resource_create:type_name -> prehog.v1alpha.ResourceCreateEvent + 27, // 117: prehog.v1alpha.SubmitEventRequest.session_start:type_name -> prehog.v1alpha.SessionStartEvent + 35, // 118: prehog.v1alpha.SubmitEventRequest.ui_banner_click:type_name -> prehog.v1alpha.UIBannerClickEvent + 36, // 119: prehog.v1alpha.SubmitEventRequest.ui_onboard_complete_go_to_dashboard_click:type_name -> prehog.v1alpha.UIOnboardCompleteGoToDashboardClickEvent + 37, // 120: prehog.v1alpha.SubmitEventRequest.ui_onboard_add_first_resource_click:type_name -> prehog.v1alpha.UIOnboardAddFirstResourceClickEvent + 38, // 121: prehog.v1alpha.SubmitEventRequest.ui_onboard_add_first_resource_later_click:type_name -> prehog.v1alpha.UIOnboardAddFirstResourceLaterClickEvent + 39, // 122: prehog.v1alpha.SubmitEventRequest.ui_onboard_set_credential_submit:type_name -> prehog.v1alpha.UIOnboardSetCredentialSubmitEvent + 40, // 123: prehog.v1alpha.SubmitEventRequest.ui_onboard_register_challenge_submit:type_name -> prehog.v1alpha.UIOnboardRegisterChallengeSubmitEvent + 42, // 124: prehog.v1alpha.SubmitEventRequest.ui_recovery_codes_continue_click:type_name -> prehog.v1alpha.UIRecoveryCodesContinueClickEvent + 43, // 125: prehog.v1alpha.SubmitEventRequest.ui_recovery_codes_copy_click:type_name -> prehog.v1alpha.UIRecoveryCodesCopyClickEvent + 44, // 126: prehog.v1alpha.SubmitEventRequest.ui_recovery_codes_print_click:type_name -> prehog.v1alpha.UIRecoveryCodesPrintClickEvent + 48, // 127: prehog.v1alpha.SubmitEventRequest.ui_discover_started_event:type_name -> prehog.v1alpha.UIDiscoverStartedEvent + 49, // 128: prehog.v1alpha.SubmitEventRequest.ui_discover_resource_selection_event:type_name -> prehog.v1alpha.UIDiscoverResourceSelectionEvent + 33, // 129: prehog.v1alpha.SubmitEventRequest.user_certificate_issued_event:type_name -> prehog.v1alpha.UserCertificateIssuedEvent + 27, // 130: prehog.v1alpha.SubmitEventRequest.session_start_v2:type_name -> prehog.v1alpha.SessionStartEvent + 53, // 131: prehog.v1alpha.SubmitEventRequest.ui_discover_deploy_service_event:type_name -> prehog.v1alpha.UIDiscoverDeployServiceEvent + 55, // 132: prehog.v1alpha.SubmitEventRequest.ui_discover_database_register_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseRegisterEvent + 56, // 133: prehog.v1alpha.SubmitEventRequest.ui_discover_database_configure_mtls_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseConfigureMTLSEvent + 57, // 134: prehog.v1alpha.SubmitEventRequest.ui_discover_desktop_active_directory_tools_install_event:type_name -> prehog.v1alpha.UIDiscoverDesktopActiveDirectoryToolsInstallEvent + 58, // 135: prehog.v1alpha.SubmitEventRequest.ui_discover_desktop_active_directory_configure_event:type_name -> prehog.v1alpha.UIDiscoverDesktopActiveDirectoryConfigureEvent + 59, // 136: prehog.v1alpha.SubmitEventRequest.ui_discover_auto_discovered_resources_event:type_name -> prehog.v1alpha.UIDiscoverAutoDiscoveredResourcesEvent + 64, // 137: prehog.v1alpha.SubmitEventRequest.ui_discover_database_configure_iam_policy_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseConfigureIAMPolicyEvent + 65, // 138: prehog.v1alpha.SubmitEventRequest.ui_discover_principals_configure_event:type_name -> prehog.v1alpha.UIDiscoverPrincipalsConfigureEvent + 66, // 139: prehog.v1alpha.SubmitEventRequest.ui_discover_test_connection_event:type_name -> prehog.v1alpha.UIDiscoverTestConnectionEvent + 67, // 140: prehog.v1alpha.SubmitEventRequest.ui_discover_completed_event:type_name -> prehog.v1alpha.UIDiscoverCompletedEvent + 68, // 141: prehog.v1alpha.SubmitEventRequest.role_create:type_name -> prehog.v1alpha.RoleCreateEvent + 71, // 142: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_click:type_name -> prehog.v1alpha.UICreateNewRoleClickEvent + 72, // 143: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_save_click:type_name -> prehog.v1alpha.UICreateNewRoleSaveClickEvent + 73, // 144: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_cancel_click:type_name -> prehog.v1alpha.UICreateNewRoleCancelClickEvent + 74, // 145: prehog.v1alpha.SubmitEventRequest.ui_create_new_role_view_documentation_click:type_name -> prehog.v1alpha.UICreateNewRoleViewDocumentationClickEvent + 76, // 146: prehog.v1alpha.SubmitEventRequest.kube_request:type_name -> prehog.v1alpha.KubeRequestEvent + 77, // 147: prehog.v1alpha.SubmitEventRequest.sftp:type_name -> prehog.v1alpha.SFTPEvent + 78, // 148: prehog.v1alpha.SubmitEventRequest.agent_metadata_event:type_name -> prehog.v1alpha.AgentMetadataEvent + 26, // 149: prehog.v1alpha.SubmitEventRequest.resource_heartbeat:type_name -> prehog.v1alpha.ResourceHeartbeatEvent + 50, // 150: prehog.v1alpha.SubmitEventRequest.ui_discover_integration_aws_oidc_connect_event:type_name -> prehog.v1alpha.UIDiscoverIntegrationAWSOIDCConnectEvent + 51, // 151: prehog.v1alpha.SubmitEventRequest.ui_discover_database_rds_enroll_event:type_name -> prehog.v1alpha.UIDiscoverDatabaseRDSEnrollEvent + 75, // 152: prehog.v1alpha.SubmitEventRequest.ui_call_to_action_click_event:type_name -> prehog.v1alpha.UICallToActionClickEvent + 79, // 153: prehog.v1alpha.SubmitEventRequest.assist_completion:type_name -> prehog.v1alpha.AssistCompletionEvent + 96, // 154: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_start_event:type_name -> prehog.v1alpha.UIIntegrationEnrollStartEvent + 97, // 155: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_complete_event:type_name -> prehog.v1alpha.UIIntegrationEnrollCompleteEvent + 104, // 156: prehog.v1alpha.SubmitEventRequest.editor_change_event:type_name -> prehog.v1alpha.EditorChangeEvent + 69, // 157: prehog.v1alpha.SubmitEventRequest.bot_create:type_name -> prehog.v1alpha.BotCreateEvent + 41, // 158: prehog.v1alpha.SubmitEventRequest.ui_onboard_questionnaire_submit:type_name -> prehog.v1alpha.UIOnboardQuestionnaireSubmitEvent + 70, // 159: prehog.v1alpha.SubmitEventRequest.bot_join:type_name -> prehog.v1alpha.BotJoinEvent + 80, // 160: prehog.v1alpha.SubmitEventRequest.assist_execution:type_name -> prehog.v1alpha.AssistExecutionEvent + 81, // 161: prehog.v1alpha.SubmitEventRequest.assist_new_conversation:type_name -> prehog.v1alpha.AssistNewConversationEvent + 105, // 162: prehog.v1alpha.SubmitEventRequest.device_authenticate_event:type_name -> prehog.v1alpha.DeviceAuthenticateEvent + 107, // 163: prehog.v1alpha.SubmitEventRequest.feature_recommendation_event:type_name -> prehog.v1alpha.FeatureRecommendationEvent + 82, // 164: prehog.v1alpha.SubmitEventRequest.assist_access_request:type_name -> prehog.v1alpha.AssistAccessRequestEvent + 83, // 165: prehog.v1alpha.SubmitEventRequest.assist_action:type_name -> prehog.v1alpha.AssistActionEvent + 106, // 166: prehog.v1alpha.SubmitEventRequest.device_enroll_event:type_name -> prehog.v1alpha.DeviceEnrollEvent + 108, // 167: prehog.v1alpha.SubmitEventRequest.license_limit_event:type_name -> prehog.v1alpha.LicenseLimitEvent + 85, // 168: prehog.v1alpha.SubmitEventRequest.access_list_create:type_name -> prehog.v1alpha.AccessListCreateEvent + 86, // 169: prehog.v1alpha.SubmitEventRequest.access_list_update:type_name -> prehog.v1alpha.AccessListUpdateEvent + 87, // 170: prehog.v1alpha.SubmitEventRequest.access_list_delete:type_name -> prehog.v1alpha.AccessListDeleteEvent + 88, // 171: prehog.v1alpha.SubmitEventRequest.access_list_member_create:type_name -> prehog.v1alpha.AccessListMemberCreateEvent + 89, // 172: prehog.v1alpha.SubmitEventRequest.access_list_member_update:type_name -> prehog.v1alpha.AccessListMemberUpdateEvent + 90, // 173: prehog.v1alpha.SubmitEventRequest.access_list_member_delete:type_name -> prehog.v1alpha.AccessListMemberDeleteEvent + 91, // 174: prehog.v1alpha.SubmitEventRequest.access_list_grants_to_user:type_name -> prehog.v1alpha.AccessListGrantsToUserEvent + 60, // 175: prehog.v1alpha.SubmitEventRequest.ui_discover_ec2_instance_selection:type_name -> prehog.v1alpha.UIDiscoverEC2InstanceSelectionEvent + 61, // 176: prehog.v1alpha.SubmitEventRequest.ui_discover_deploy_eice:type_name -> prehog.v1alpha.UIDiscoverDeployEICEEvent + 62, // 177: prehog.v1alpha.SubmitEventRequest.ui_discover_create_node:type_name -> prehog.v1alpha.UIDiscoverCreateNodeEvent + 109, // 178: prehog.v1alpha.SubmitEventRequest.desktop_directory_share:type_name -> prehog.v1alpha.DesktopDirectoryShareEvent + 110, // 179: prehog.v1alpha.SubmitEventRequest.desktop_clipboard_transfer:type_name -> prehog.v1alpha.DesktopClipboardEvent + 111, // 180: prehog.v1alpha.SubmitEventRequest.tag_execute_query:type_name -> prehog.v1alpha.TAGExecuteQueryEvent + 119, // 181: prehog.v1alpha.SubmitEventRequest.external_audit_storage_authenticate:type_name -> prehog.v1alpha.ExternalAuditStorageAuthenticateEvent + 120, // 182: prehog.v1alpha.SubmitEventRequest.security_report_get_result:type_name -> prehog.v1alpha.SecurityReportGetResultEvent + 121, // 183: prehog.v1alpha.SubmitEventRequest.audit_query_run:type_name -> prehog.v1alpha.AuditQueryRunEvent + 122, // 184: prehog.v1alpha.SubmitEventRequest.discovery_fetch_event:type_name -> prehog.v1alpha.DiscoveryFetchEvent + 92, // 185: prehog.v1alpha.SubmitEventRequest.access_list_review_create:type_name -> prehog.v1alpha.AccessListReviewCreateEvent + 93, // 186: prehog.v1alpha.SubmitEventRequest.access_list_review_delete:type_name -> prehog.v1alpha.AccessListReviewDeleteEvent + 94, // 187: prehog.v1alpha.SubmitEventRequest.access_list_review_compliance:type_name -> prehog.v1alpha.AccessListReviewComplianceEvent + 22, // 188: prehog.v1alpha.SubmitEventRequest.mfa_authentication_event:type_name -> prehog.v1alpha.MFAAuthenticationEvent + 34, // 189: prehog.v1alpha.SubmitEventRequest.spiffe_svid_issued:type_name -> prehog.v1alpha.SPIFFESVIDIssuedEvent + 123, // 190: prehog.v1alpha.SubmitEventRequest.okta_access_list_sync:type_name -> prehog.v1alpha.OktaAccessListSyncEvent + 124, // 191: prehog.v1alpha.SubmitEventRequest.database_user_created:type_name -> prehog.v1alpha.DatabaseUserCreatedEvent + 125, // 192: prehog.v1alpha.SubmitEventRequest.database_user_permissions_updated:type_name -> prehog.v1alpha.DatabaseUserPermissionsUpdateEvent + 54, // 193: prehog.v1alpha.SubmitEventRequest.ui_discover_create_discovery_config:type_name -> prehog.v1alpha.UIDiscoverCreateDiscoveryConfigEvent + 52, // 194: prehog.v1alpha.SubmitEventRequest.ui_discover_kube_eks_enroll_event:type_name -> prehog.v1alpha.UIDiscoverKubeEKSEnrollEvent + 63, // 195: prehog.v1alpha.SubmitEventRequest.ui_discover_create_app_server_event:type_name -> prehog.v1alpha.UIDiscoverCreateAppServerEvent + 114, // 196: prehog.v1alpha.SubmitEventRequest.access_graph_gitlab_scan:type_name -> prehog.v1alpha.AccessGraphGitlabScanEvent + 112, // 197: prehog.v1alpha.SubmitEventRequest.access_graph_secrets_scan_authorized_keys:type_name -> prehog.v1alpha.AccessGraphSecretsScanAuthorizedKeysEvent + 113, // 198: prehog.v1alpha.SubmitEventRequest.access_graph_secrets_scan_ssh_private_keys:type_name -> prehog.v1alpha.AccessGraphSecretsScanSSHPrivateKeysEvent + 115, // 199: prehog.v1alpha.SubmitEventRequest.access_graph_aws_scan:type_name -> prehog.v1alpha.AccessGraphAWSScanEvent + 116, // 200: prehog.v1alpha.SubmitEventRequest.access_graph_access_path_changed:type_name -> prehog.v1alpha.AccessGraphAccessPathChangedEvent + 118, // 201: prehog.v1alpha.SubmitEventRequest.access_graph_crown_jewel_create:type_name -> prehog.v1alpha.AccessGraphCrownJewelCreateEvent + 117, // 202: prehog.v1alpha.SubmitEventRequest.ui_access_graph_crown_jewel_diff_view:type_name -> prehog.v1alpha.UIAccessGraphCrownJewelDiffViewEvent + 126, // 203: prehog.v1alpha.SubmitEventRequest.session_recording_access:type_name -> prehog.v1alpha.SessionRecordingAccessEvent + 127, // 204: prehog.v1alpha.SubmitEventRequest.user_task_state:type_name -> prehog.v1alpha.UserTaskStateEvent + 99, // 205: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_step_event:type_name -> prehog.v1alpha.UIIntegrationEnrollStepEvent + 128, // 206: prehog.v1alpha.SubmitEventRequest.access_request_create:type_name -> prehog.v1alpha.AccessRequestCreateEvent + 129, // 207: prehog.v1alpha.SubmitEventRequest.access_request_review:type_name -> prehog.v1alpha.AccessRequestReviewEvent + 100, // 208: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_section_open_event:type_name -> prehog.v1alpha.UIIntegrationEnrollSectionOpenEvent + 101, // 209: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_field_complete_event:type_name -> prehog.v1alpha.UIIntegrationEnrollFieldCompleteEvent + 102, // 210: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_code_copy_event:type_name -> prehog.v1alpha.UIIntegrationEnrollCodeCopyEvent + 103, // 211: prehog.v1alpha.SubmitEventRequest.ui_integration_enroll_link_click_event:type_name -> prehog.v1alpha.UIIntegrationEnrollLinkClickEvent + 131, // 212: prehog.v1alpha.SubmitEventRequest.session_summary_create_event:type_name -> prehog.v1alpha.SessionSummaryCreateEvent + 130, // 213: prehog.v1alpha.SubmitEventRequest.session_summary_access_event:type_name -> prehog.v1alpha.SessionSummaryAccessEvent + 132, // 214: prehog.v1alpha.SubmitEventRequest.discovery_config:type_name -> prehog.v1alpha.DiscoveryConfigEvent + 133, // 215: prehog.v1alpha.SubmitEventsRequest.events:type_name -> prehog.v1alpha.SubmitEventRequest + 133, // 216: prehog.v1alpha.TeleportReportingService.SubmitEvent:input_type -> prehog.v1alpha.SubmitEventRequest + 135, // 217: prehog.v1alpha.TeleportReportingService.SubmitEvents:input_type -> prehog.v1alpha.SubmitEventsRequest + 137, // 218: prehog.v1alpha.TeleportReportingService.HelloTeleport:input_type -> prehog.v1alpha.HelloTeleportRequest + 134, // 219: prehog.v1alpha.TeleportReportingService.SubmitEvent:output_type -> prehog.v1alpha.SubmitEventResponse + 136, // 220: prehog.v1alpha.TeleportReportingService.SubmitEvents:output_type -> prehog.v1alpha.SubmitEventsResponse + 138, // 221: prehog.v1alpha.TeleportReportingService.HelloTeleport:output_type -> prehog.v1alpha.HelloTeleportResponse + 219, // [219:222] is the sub-list for method output_type + 216, // [216:219] is the sub-list for method input_type + 216, // [216:216] is the sub-list for extension type_name + 216, // [216:216] is the sub-list for extension extendee + 0, // [0:216] is the sub-list for field type_name } func init() { file_prehog_v1alpha_teleport_proto_init() } @@ -12073,7 +12282,7 @@ func file_prehog_v1alpha_teleport_proto_init() { if File_prehog_v1alpha_teleport_proto != nil { return } - file_prehog_v1alpha_teleport_proto_msgTypes[111].OneofWrappers = []any{ + file_prehog_v1alpha_teleport_proto_msgTypes[112].OneofWrappers = []any{ (*SubmitEventRequest_UserLogin)(nil), (*SubmitEventRequest_SsoCreate)(nil), (*SubmitEventRequest_ResourceCreate)(nil), @@ -12174,14 +12383,15 @@ func file_prehog_v1alpha_teleport_proto_init() { (*SubmitEventRequest_UiIntegrationEnrollLinkClickEvent)(nil), (*SubmitEventRequest_SessionSummaryCreateEvent)(nil), (*SubmitEventRequest_SessionSummaryAccessEvent)(nil), + (*SubmitEventRequest_DiscoveryConfig)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_prehog_v1alpha_teleport_proto_rawDesc), len(file_prehog_v1alpha_teleport_proto_rawDesc)), - NumEnums: 20, - NumMessages: 117, + NumEnums: 21, + NumMessages: 118, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/proto/ts/prehog/v1alpha/teleport_pb.ts b/gen/proto/ts/prehog/v1alpha/teleport_pb.ts index 173019d95ac..0e9f657df01 100644 --- a/gen/proto/ts/prehog/v1alpha/teleport_pb.ts +++ b/gen/proto/ts/prehog/v1alpha/teleport_pb.ts @@ -164,6 +164,13 @@ export interface ResourceCreateEvent { * @generated from protobuf field: prehog.v1alpha.DiscoveredDatabaseMetadata database = 4; */ database?: DiscoveredDatabaseMetadata; + /** + * discovery_config_name is the anonymized name of the DiscoveryConfig that triggered discovery. + * Empty for teleport.yaml matcher configuration. + * + * @generated from protobuf field: string discovery_config_name = 5; + */ + discoveryConfigName: string; } /** * DiscoveredDatabaseMetadata contains additional database information. @@ -2959,6 +2966,15 @@ export interface UserTaskStateEvent { * @generated from protobuf field: int32 instances_count = 4; */ instancesCount: number; + /** + * discovery_config_name is the anonymized name of the DiscoveryConfig used when + * the issue was created. + * + * PostHog property: tp.usertask.discovery_config_name + * + * @generated from protobuf field: string discovery_config_name = 5; + */ + discoveryConfigName: string; } /** * AccessRequestCreateEvent is emitted when an Access Request is created. @@ -3161,6 +3177,45 @@ export interface SessionSummaryCreateEvent { */ isCloudDefaultModel: boolean; } +/** + * DiscoveryConfigEvent is emitted when a DiscoveryConfig resource is created, updated, or deleted. + * + * PostHog event: tp.discovery.config + * + * @generated from protobuf message prehog.v1alpha.DiscoveryConfigEvent + */ +export interface DiscoveryConfigEvent { + /** + * action is the operation performed on the DiscoveryConfig. + * + * @generated from protobuf field: prehog.v1alpha.DiscoveryConfigAction action = 1; + */ + action: DiscoveryConfigAction; + /** + * discovery_config_name is the anonymized name of the DiscoveryConfig. + * + * @generated from protobuf field: string discovery_config_name = 2; + */ + discoveryConfigName: string; + /** + * resource_types is the list of resource types configured for discovery (e.g., "ec2", "rds", "eks"). + * + * @generated from protobuf field: repeated string resource_types = 3; + */ + resourceTypes: string[]; + /** + * cloud_providers is the list of cloud providers the config has matchers for. + * + * @generated from protobuf field: repeated string cloud_providers = 4; + */ + cloudProviders: string[]; + /** + * creation_method specifies the flow used to create the config ("iac" or "guided") + * + * @generated from protobuf field: string creation_method = 5; + */ + creationMethod: string; +} /** * @generated from protobuf message prehog.v1alpha.SubmitEventRequest */ @@ -3803,6 +3858,12 @@ export interface SubmitEventRequest { * @generated from protobuf field: prehog.v1alpha.SessionSummaryAccessEvent session_summary_access_event = 106; */ sessionSummaryAccessEvent: SessionSummaryAccessEvent; + } | { + oneofKind: "discoveryConfig"; + /** + * @generated from protobuf field: prehog.v1alpha.DiscoveryConfigEvent discovery_config = 107; + */ + discoveryConfig: DiscoveryConfigEvent; } | { oneofKind: undefined; }; @@ -4411,7 +4472,19 @@ export enum IntegrationEnrollKind { /** * @generated from protobuf enum value: INTEGRATION_ENROLL_KIND_MACHINE_ID_GITHUB_ACTIONS_KUBERNETES = 29; */ - MACHINE_ID_GITHUB_ACTIONS_KUBERNETES = 29 + MACHINE_ID_GITHUB_ACTIONS_KUBERNETES = 29, + /** + * @generated from protobuf enum value: INTEGRATION_ENROLL_KIND_AWS_CLOUD = 30; + */ + AWS_CLOUD = 30, + /** + * @generated from protobuf enum value: INTEGRATION_ENROLL_KIND_AZURE_CLOUD = 31; + */ + AZURE_CLOUD = 31, + /** + * @generated from protobuf enum value: INTEGRATION_ENROLL_KIND_GOOGLE_CLOUD = 32; + */ + GOOGLE_CLOUD = 32 } /** * IntegrationEnrollStep defines inner configuration steps @@ -4477,7 +4550,13 @@ export enum IntegrationEnrollStep { /** * @generated from protobuf enum value: INTEGRATION_ENROLL_STEP_MWIGHAK8S_WELCOME = 12; */ - MWIGHAK8S_WELCOME = 12 + MWIGHAK8S_WELCOME = 12, + /** + * General integration setup steps + * + * @generated from protobuf enum value: INTEGRATION_ENROLL_STEP_VERIFY_INTEGRATION = 13; + */ + VERIFY_INTEGRATION = 13 } /** * IntegrationEnrollStatusCode defines status code for an integration enroll step. @@ -4715,6 +4794,29 @@ export enum LicenseLimit { */ DEVICE_TRUST_TEAM_USAGE = 2 } +/** + * DiscoveryConfigAction is the action performed on a DiscoveryConfig. + * + * @generated from protobuf enum prehog.v1alpha.DiscoveryConfigAction + */ +export enum DiscoveryConfigAction { + /** + * @generated from protobuf enum value: DISCOVERY_CONFIG_ACTION_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * @generated from protobuf enum value: DISCOVERY_CONFIG_ACTION_CREATE = 1; + */ + CREATE = 1, + /** + * @generated from protobuf enum value: DISCOVERY_CONFIG_ACTION_UPDATE = 2; + */ + UPDATE = 2, + /** + * @generated from protobuf enum value: DISCOVERY_CONFIG_ACTION_DELETE = 3; + */ + DELETE = 3 +} // @generated message type with reflection information, may provide speed optimized methods class UserLoginEvent$Type extends MessageType { constructor() { @@ -4919,7 +5021,8 @@ class ResourceCreateEvent$Type extends MessageType { { no: 1, name: "resource_type", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, { no: 2, name: "resource_origin", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, { no: 3, name: "cloud_provider", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, - { no: 4, name: "database", kind: "message", T: () => DiscoveredDatabaseMetadata } + { no: 4, name: "database", kind: "message", T: () => DiscoveredDatabaseMetadata }, + { no: 5, name: "discovery_config_name", kind: "scalar", T: 9 /*ScalarType.STRING*/ } ]); } create(value?: PartialMessage): ResourceCreateEvent { @@ -4927,6 +5030,7 @@ class ResourceCreateEvent$Type extends MessageType { message.resourceType = ""; message.resourceOrigin = ""; message.cloudProvider = ""; + message.discoveryConfigName = ""; if (value !== undefined) reflectionMergePartial(this, message, value); return message; @@ -4948,6 +5052,9 @@ class ResourceCreateEvent$Type extends MessageType { case /* prehog.v1alpha.DiscoveredDatabaseMetadata database */ 4: message.database = DiscoveredDatabaseMetadata.internalBinaryRead(reader, reader.uint32(), options, message.database); break; + case /* string discovery_config_name */ 5: + message.discoveryConfigName = reader.string(); + break; default: let u = options.readUnknownField; if (u === "throw") @@ -4972,6 +5079,9 @@ class ResourceCreateEvent$Type extends MessageType { /* prehog.v1alpha.DiscoveredDatabaseMetadata database = 4; */ if (message.database) DiscoveredDatabaseMetadata.internalBinaryWrite(message.database, writer.tag(4, WireType.LengthDelimited).fork(), options).join(); + /* string discovery_config_name = 5; */ + if (message.discoveryConfigName !== "") + writer.tag(5, WireType.LengthDelimited).string(message.discoveryConfigName); let u = options.writeUnknownFields; if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); @@ -11400,7 +11510,8 @@ class UserTaskStateEvent$Type extends MessageType { { no: 1, name: "task_type", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, { no: 2, name: "issue_type", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, { no: 3, name: "state", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, - { no: 4, name: "instances_count", kind: "scalar", T: 5 /*ScalarType.INT32*/ } + { no: 4, name: "instances_count", kind: "scalar", T: 5 /*ScalarType.INT32*/ }, + { no: 5, name: "discovery_config_name", kind: "scalar", T: 9 /*ScalarType.STRING*/ } ]); } create(value?: PartialMessage): UserTaskStateEvent { @@ -11409,6 +11520,7 @@ class UserTaskStateEvent$Type extends MessageType { message.issueType = ""; message.state = ""; message.instancesCount = 0; + message.discoveryConfigName = ""; if (value !== undefined) reflectionMergePartial(this, message, value); return message; @@ -11430,6 +11542,9 @@ class UserTaskStateEvent$Type extends MessageType { case /* int32 instances_count */ 4: message.instancesCount = reader.int32(); break; + case /* string discovery_config_name */ 5: + message.discoveryConfigName = reader.string(); + break; default: let u = options.readUnknownField; if (u === "throw") @@ -11454,6 +11569,9 @@ class UserTaskStateEvent$Type extends MessageType { /* int32 instances_count = 4; */ if (message.instancesCount !== 0) writer.tag(4, WireType.Varint).int32(message.instancesCount); + /* string discovery_config_name = 5; */ + if (message.discoveryConfigName !== "") + writer.tag(5, WireType.LengthDelimited).string(message.discoveryConfigName); let u = options.writeUnknownFields; if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); @@ -11757,6 +11875,85 @@ class SessionSummaryCreateEvent$Type extends MessageType { + constructor() { + super("prehog.v1alpha.DiscoveryConfigEvent", [ + { no: 1, name: "action", kind: "enum", T: () => ["prehog.v1alpha.DiscoveryConfigAction", DiscoveryConfigAction, "DISCOVERY_CONFIG_ACTION_"] }, + { no: 2, name: "discovery_config_name", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 3, name: "resource_types", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ }, + { no: 4, name: "cloud_providers", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ }, + { no: 5, name: "creation_method", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value?: PartialMessage): DiscoveryConfigEvent { + const message = globalThis.Object.create((this.messagePrototype!)); + message.action = 0; + message.discoveryConfigName = ""; + message.resourceTypes = []; + message.cloudProviders = []; + message.creationMethod = ""; + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DiscoveryConfigEvent): DiscoveryConfigEvent { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* prehog.v1alpha.DiscoveryConfigAction action */ 1: + message.action = reader.int32(); + break; + case /* string discovery_config_name */ 2: + message.discoveryConfigName = reader.string(); + break; + case /* repeated string resource_types */ 3: + message.resourceTypes.push(reader.string()); + break; + case /* repeated string cloud_providers */ 4: + message.cloudProviders.push(reader.string()); + break; + case /* string creation_method */ 5: + message.creationMethod = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: DiscoveryConfigEvent, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* prehog.v1alpha.DiscoveryConfigAction action = 1; */ + if (message.action !== 0) + writer.tag(1, WireType.Varint).int32(message.action); + /* string discovery_config_name = 2; */ + if (message.discoveryConfigName !== "") + writer.tag(2, WireType.LengthDelimited).string(message.discoveryConfigName); + /* repeated string resource_types = 3; */ + for (let i = 0; i < message.resourceTypes.length; i++) + writer.tag(3, WireType.LengthDelimited).string(message.resourceTypes[i]); + /* repeated string cloud_providers = 4; */ + for (let i = 0; i < message.cloudProviders.length; i++) + writer.tag(4, WireType.LengthDelimited).string(message.cloudProviders[i]); + /* string creation_method = 5; */ + if (message.creationMethod !== "") + writer.tag(5, WireType.LengthDelimited).string(message.creationMethod); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message prehog.v1alpha.DiscoveryConfigEvent + */ +export const DiscoveryConfigEvent = new DiscoveryConfigEvent$Type(); +// @generated message type with reflection information, may provide speed optimized methods class SubmitEventRequest$Type extends MessageType { constructor() { super("prehog.v1alpha.SubmitEventRequest", [ @@ -11862,7 +12059,8 @@ class SubmitEventRequest$Type extends MessageType { { no: 103, name: "ui_integration_enroll_code_copy_event", kind: "message", oneof: "event", T: () => UIIntegrationEnrollCodeCopyEvent }, { no: 104, name: "ui_integration_enroll_link_click_event", kind: "message", oneof: "event", T: () => UIIntegrationEnrollLinkClickEvent }, { no: 105, name: "session_summary_create_event", kind: "message", oneof: "event", T: () => SessionSummaryCreateEvent }, - { no: 106, name: "session_summary_access_event", kind: "message", oneof: "event", T: () => SessionSummaryAccessEvent } + { no: 106, name: "session_summary_access_event", kind: "message", oneof: "event", T: () => SessionSummaryAccessEvent }, + { no: 107, name: "discovery_config", kind: "message", oneof: "event", T: () => DiscoveryConfigEvent } ]); } create(value?: PartialMessage): SubmitEventRequest { @@ -12488,6 +12686,12 @@ class SubmitEventRequest$Type extends MessageType { sessionSummaryAccessEvent: SessionSummaryAccessEvent.internalBinaryRead(reader, reader.uint32(), options, (message.event as any).sessionSummaryAccessEvent) }; break; + case /* prehog.v1alpha.DiscoveryConfigEvent discovery_config */ 107: + message.event = { + oneofKind: "discoveryConfig", + discoveryConfig: DiscoveryConfigEvent.internalBinaryRead(reader, reader.uint32(), options, (message.event as any).discoveryConfig) + }; + break; default: let u = options.readUnknownField; if (u === "throw") @@ -12809,6 +13013,9 @@ class SubmitEventRequest$Type extends MessageType { /* prehog.v1alpha.SessionSummaryAccessEvent session_summary_access_event = 106; */ if (message.event.oneofKind === "sessionSummaryAccessEvent") SessionSummaryAccessEvent.internalBinaryWrite(message.event.sessionSummaryAccessEvent, writer.tag(106, WireType.LengthDelimited).fork(), options).join(); + /* prehog.v1alpha.DiscoveryConfigEvent discovery_config = 107; */ + if (message.event.oneofKind === "discoveryConfig") + DiscoveryConfigEvent.internalBinaryWrite(message.event.discoveryConfig, writer.tag(107, WireType.LengthDelimited).fork(), options).join(); let u = options.writeUnknownFields; if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); diff --git a/lib/auth/discoveryconfig/discoveryconfigv1/constants.go b/lib/auth/discoveryconfig/discoveryconfigv1/constants.go new file mode 100644 index 00000000000..6c1f906ff6c --- /dev/null +++ b/lib/auth/discoveryconfig/discoveryconfigv1/constants.go @@ -0,0 +1,28 @@ +/* + * Teleport + * Copyright (C) 2026 Gravitational, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package discoveryconfigv1 + +const ( + // CreationMethodGuided used in usage events to specify a discovery config was created through + // a guided (UI) flow. + CreationMethodGuided = "guided" + // CreationMethodIAC used in usage events to specify a discovery config was created through an + // infrastructure-as-code flow + CreationMethodIAC = "iac" +) diff --git a/lib/auth/discoveryconfig/discoveryconfigv1/service.go b/lib/auth/discoveryconfig/discoveryconfigv1/service.go index 6235642af82..4cc6b7790a6 100644 --- a/lib/auth/discoveryconfig/discoveryconfigv1/service.go +++ b/lib/auth/discoveryconfig/discoveryconfigv1/service.go @@ -22,6 +22,9 @@ import ( "context" "fmt" "log/slog" + "maps" + "slices" + "strings" "github.com/coreos/go-semver/semver" "github.com/gravitational/trace" @@ -36,9 +39,11 @@ import ( conv "github.com/gravitational/teleport/api/types/discoveryconfig/convert/v1" apievents "github.com/gravitational/teleport/api/types/events" "github.com/gravitational/teleport/api/utils/aws" + prehogv1a "github.com/gravitational/teleport/gen/proto/go/prehog/v1alpha" "github.com/gravitational/teleport/lib/authz" "github.com/gravitational/teleport/lib/events" "github.com/gravitational/teleport/lib/services" + usagereporter "github.com/gravitational/teleport/lib/usagereporter/teleport" "github.com/gravitational/teleport/lib/utils" ) @@ -58,6 +63,9 @@ type ServiceConfig struct { // Emitter emits audit events. Emitter apievents.Emitter + + // UsageReporter is the reporter for sending usage events. + UsageReporter func() usagereporter.UsageReporter } // CheckAndSetDefaults checks the ServiceConfig fields and returns an error if @@ -73,6 +81,9 @@ func (s *ServiceConfig) CheckAndSetDefaults() error { if s.Emitter == nil { return trace.BadParameter("emitter is required") } + if s.UsageReporter == nil { + return trace.BadParameter("usage reporter is required") + } if s.Logger == nil { s.Logger = slog.With(teleport.ComponentKey, "discoveryconfig_crud_service") @@ -89,11 +100,12 @@ func (s *ServiceConfig) CheckAndSetDefaults() error { type Service struct { discoveryconfigv1.UnimplementedDiscoveryConfigServiceServer - log *slog.Logger - authorizer authz.Authorizer - backend services.DiscoveryConfigs - clock clockwork.Clock - emitter apievents.Emitter + log *slog.Logger + authorizer authz.Authorizer + backend services.DiscoveryConfigs + clock clockwork.Clock + emitter apievents.Emitter + usageReporter func() usagereporter.UsageReporter } // NewService returns a new DiscoveryConfigs gRPC service. @@ -103,11 +115,12 @@ func NewService(cfg ServiceConfig) (*Service, error) { } return &Service{ - log: cfg.Logger, - authorizer: cfg.Authorizer, - backend: cfg.Backend, - clock: cfg.Clock, - emitter: cfg.Emitter, + log: cfg.Logger, + authorizer: cfg.Authorizer, + backend: cfg.Backend, + clock: cfg.Clock, + emitter: cfg.Emitter, + usageReporter: cfg.UsageReporter, }, nil } @@ -206,6 +219,8 @@ func (s *Service) CreateDiscoveryConfig(ctx context.Context, req *discoveryconfi s.log.WarnContext(ctx, "Failed to emit discovery config create event.", "error", err) } + s.emitUsageEvent(resp, prehogv1a.DiscoveryConfigAction_DISCOVERY_CONFIG_ACTION_CREATE) + return conv.ToProto(resp), nil } @@ -252,6 +267,8 @@ func (s *Service) UpdateDiscoveryConfig(ctx context.Context, req *discoveryconfi s.log.WarnContext(ctx, "Failed to emit discovery config update event.", "error", err) } + s.emitUsageEvent(resp, prehogv1a.DiscoveryConfigAction_DISCOVERY_CONFIG_ACTION_UPDATE) + return conv.ToProto(resp), nil } @@ -295,6 +312,8 @@ func (s *Service) UpsertDiscoveryConfig(ctx context.Context, req *discoveryconfi s.log.WarnContext(ctx, "Failed to emit discovery config create event.", "error", err) } + s.emitUsageEvent(resp, prehogv1a.DiscoveryConfigAction_DISCOVERY_CONFIG_ACTION_CREATE) + return conv.ToProto(resp), nil } @@ -309,6 +328,14 @@ func (s *Service) DeleteDiscoveryConfig(ctx context.Context, req *discoveryconfi return nil, trace.Wrap(err) } + // Fetch the DiscoveryConfig before deletion to capture metadata for the usage event. + dc, err := s.backend.GetDiscoveryConfig(ctx, req.GetName()) + if err != nil && !trace.IsNotFound(err) { + s.log.WarnContext(ctx, "Skipping DiscoveryConfig delete usage event due to GetDiscoveryConfig failure.", + "discovery_config_name", req.GetName(), + "error", err) + } + if err := s.backend.DeleteDiscoveryConfig(ctx, req.GetName()); err != nil { return nil, trace.Wrap(err) } @@ -327,6 +354,10 @@ func (s *Service) DeleteDiscoveryConfig(ctx context.Context, req *discoveryconfi s.log.WarnContext(ctx, "Failed to emit discovery config delete event.", "error", err) } + if dc != nil { + s.emitUsageEvent(dc, prehogv1a.DiscoveryConfigAction_DISCOVERY_CONFIG_ACTION_DELETE) + } + return &emptypb.Empty{}, nil } @@ -392,6 +423,60 @@ func (s *Service) UpdateDiscoveryConfigStatus(ctx context.Context, req *discover } } +// emitUsageEvent emits a DiscoveryConfigEvent usage event. +func (s *Service) emitUsageEvent(dc *discoveryconfig.DiscoveryConfig, action prehogv1a.DiscoveryConfigAction) { + resourceTypes, cloudProviders := extractDiscoveryConfigMetadata(dc) + + creationMethod := CreationMethodGuided + if _, ok := dc.GetMetadata().Labels[types.DiscoveryIACToolLabel]; ok { + creationMethod = CreationMethodIAC + } + + s.usageReporter().AnonymizeAndSubmit(&usagereporter.DiscoveryConfigEvent{ + Action: action, + DiscoveryConfigName: dc.GetName(), + ResourceTypes: resourceTypes, + CloudProviders: cloudProviders, + CreationMethod: creationMethod, + }) +} + +// extractDiscoveryConfigMetadata extracts resource types and cloud providers +// for DiscoveryConfigEvent fields. +func extractDiscoveryConfigMetadata(dc *discoveryconfig.DiscoveryConfig) (resourceTypes, cloudProviders []string) { + cloudProviderSet := make(map[string]struct{}) + resourceTypeSet := make(map[string]struct{}) + + addMatcher := func(cloud string, types []string) { + if len(types) == 0 { + return + } + + c := strings.ToLower(cloud) + + cloudProviderSet[c] = struct{}{} + for _, t := range types { + label := c + ":" + t + resourceTypeSet[label] = struct{}{} + } + } + + for _, m := range dc.Spec.AWS { + addMatcher(types.CloudAWS, m.Types) + } + for _, m := range dc.Spec.Azure { + addMatcher(types.CloudAzure, m.Types) + } + for _, m := range dc.Spec.GCP { + addMatcher(types.CloudGCP, m.Types) + } + for _, m := range dc.Spec.Kube { + addMatcher(types.DiscoveredResourceKubernetes, m.Types) + } + + return slices.Collect(maps.Keys(resourceTypeSet)), slices.Collect(maps.Keys(cloudProviderSet)) +} + // MaybeDowngradeDiscoveryConfig tests the client version passed through the gRPC metadata, // and if necessary downgrades the Discovery Config resource for compatibility with the older client. // The following rules are applied: diff --git a/lib/auth/discoveryconfig/discoveryconfigv1/service_test.go b/lib/auth/discoveryconfig/discoveryconfigv1/service_test.go index b02b18af466..2cab7c651bc 100644 --- a/lib/auth/discoveryconfig/discoveryconfigv1/service_test.go +++ b/lib/auth/discoveryconfig/discoveryconfigv1/service_test.go @@ -40,6 +40,7 @@ import ( "github.com/gravitational/teleport/lib/services" "github.com/gravitational/teleport/lib/services/local" "github.com/gravitational/teleport/lib/tlsca" + usagereporter "github.com/gravitational/teleport/lib/usagereporter/teleport" ) func TestDiscoveryConfigCRUD(t *testing.T) { @@ -544,9 +545,10 @@ func initSvc(t *testing.T, clusterName string) (context.Context, localClient, *S emitter := events.NewDiscardEmitter() resourceSvc, err := NewService(ServiceConfig{ - Backend: localResourceService, - Authorizer: authorizer, - Emitter: emitter, + Backend: localResourceService, + Authorizer: authorizer, + Emitter: emitter, + UsageReporter: func() usagereporter.UsageReporter { return usagereporter.DiscardUsageReporter{} }, }) require.NoError(t, err) @@ -561,6 +563,36 @@ func initSvc(t *testing.T, clusterName string) (context.Context, localClient, *S }, resourceSvc } +func TestExtractDiscoveryConfigMetadata(t *testing.T) { + t.Parallel() + + dc, err := discoveryconfig.NewDiscoveryConfig( + header.Metadata{Name: "test"}, + discoveryconfig.Spec{ + DiscoveryGroup: "group", + AWS: []types.AWSMatcher{ + {Types: []string{"ec2", "rds"}, Regions: []string{"us-east-1"}}, + {Types: []string{"ec2"}, Regions: []string{"us-east-1"}}, // duplicate should be deduped + }, + Azure: []types.AzureMatcher{ + {Types: []string{"aks"}}, + }, + GCP: []types.GCPMatcher{ + {Types: []string{"gke"}, ProjectIDs: []string{"my-project"}}, + }, + Kube: []types.KubernetesMatcher{ + {Types: []string{"app"}}, + }, + }, + ) + require.NoError(t, err) + + resourceTypes, cloudProviders := extractDiscoveryConfigMetadata(dc) + + require.ElementsMatch(t, []string{"aws:ec2", "aws:rds", "azure:aks", "gcp:gke", "k8s:app"}, resourceTypes) + require.ElementsMatch(t, []string{"aws", "azure", "gcp", "k8s"}, cloudProviders) +} + func TestDowngrade(t *testing.T) { for _, tc := range []struct { name string diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index 2f7ed816003..1f0fe1c8c7d 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -6345,7 +6345,10 @@ func NewGRPCServer(cfg GRPCServerConfig) (*GRPCServer, error) { Backend: cfg.AuthServer.Services, Clock: cfg.AuthServer.clock, Emitter: cfg.Emitter, - Logger: cfg.AuthServer.logger.With(teleport.ComponentKey, "discoveryconfig_crud_service"), + // This must be a function because cfg.AuthServer.UsageReporter is changed after `NewGRPCServer` is called. + // It starts as a DiscardUsageReporter, but when running in Cloud, gets replaced by a real reporter. + UsageReporter: func() usagereporter.UsageReporter { return cfg.AuthServer.UsageReporter }, + Logger: cfg.AuthServer.logger.With(teleport.ComponentKey, "discoveryconfig_crud_service"), }) if err != nil { return nil, trace.Wrap(err) diff --git a/lib/auth/usertasks/usertasksv1/service.go b/lib/auth/usertasks/usertasksv1/service.go index b98689d261f..ef6666f9bc4 100644 --- a/lib/auth/usertasks/usertasksv1/service.go +++ b/lib/auth/usertasks/usertasksv1/service.go @@ -181,6 +181,8 @@ func userTaskToUserTaskStateEvent(ut *usertasksv1.UserTask) *usagereporter.UserT ret.InstancesCount = int32(len(ut.GetSpec().GetDiscoverEks().GetClusters())) case usertasks.TaskTypeDiscoverRDS: ret.InstancesCount = int32(len(ut.GetSpec().GetDiscoverRds().GetDatabases())) + case usertasks.TaskTypeDiscoverAzureVM: + ret.InstancesCount = int32(len(ut.GetSpec().GetDiscoverAzureVm().GetInstances())) } return ret } @@ -249,7 +251,6 @@ func (s *Service) GetUserTask(ctx context.Context, req *usertasksv1.GetUserTaskR } return rsp, nil - } // UpdateUserTask updates user task resource. diff --git a/lib/srv/discovery/database_watcher.go b/lib/srv/discovery/database_watcher.go index b1d541b3838..d69da2a9c30 100644 --- a/lib/srv/discovery/database_watcher.go +++ b/lib/srv/discovery/database_watcher.go @@ -252,9 +252,10 @@ func (s *Server) onDatabaseCreate(ctx context.Context, database types.Database) } err = s.emitUsageEvents(map[string]*usageeventsv1.ResourceCreateEvent{ databaseEventPrefix + database.GetName(): { - ResourceType: types.DiscoveredResourceDatabase, - ResourceOrigin: types.OriginCloud, - CloudProvider: database.GetCloud(), + ResourceType: types.DiscoveredResourceDatabase, + ResourceOrigin: types.OriginCloud, + CloudProvider: database.GetCloud(), + DiscoveryConfigName: database.GetStaticLabels()[types.TeleportInternalDiscoveryConfigName], Database: &usageeventsv1.DiscoveredDatabaseMetadata{ DbType: database.GetType(), DbProtocol: database.GetProtocol(), diff --git a/lib/srv/discovery/kube_services_watcher.go b/lib/srv/discovery/kube_services_watcher.go index 83b88d8cf8b..ea5f5e64689 100644 --- a/lib/srv/discovery/kube_services_watcher.go +++ b/lib/srv/discovery/kube_services_watcher.go @@ -133,8 +133,9 @@ func (s *Server) onAppCreate(ctx context.Context, app types.Application) error { } err = s.emitUsageEvents(map[string]*usageeventsv1.ResourceCreateEvent{ appEventPrefix + app.GetName(): { - ResourceType: types.DiscoveredResourceApp, - ResourceOrigin: types.OriginKubernetes, + ResourceType: types.DiscoveredResourceApp, + ResourceOrigin: types.OriginKubernetes, + DiscoveryConfigName: app.GetStaticLabels()[types.TeleportInternalDiscoveryConfigName], // CloudProvider is not set for apps created from Kubernetes services }, }) diff --git a/lib/srv/discovery/kube_watcher.go b/lib/srv/discovery/kube_watcher.go index b79f8170168..362e6c6d685 100644 --- a/lib/srv/discovery/kube_watcher.go +++ b/lib/srv/discovery/kube_watcher.go @@ -152,9 +152,10 @@ func (s *Server) onKubeCreate(ctx context.Context, kubeCluster types.KubeCluster } err = s.emitUsageEvents(map[string]*usageeventsv1.ResourceCreateEvent{ kubeEventPrefix + kubeCluster.GetName(): { - ResourceType: types.DiscoveredResourceKubernetes, - ResourceOrigin: types.OriginCloud, - CloudProvider: kubeCluster.GetCloud(), + ResourceType: types.DiscoveredResourceKubernetes, + ResourceOrigin: types.OriginCloud, + CloudProvider: kubeCluster.GetCloud(), + DiscoveryConfigName: kubeCluster.GetStaticLabels()[types.TeleportInternalDiscoveryConfigName], }, }) if err != nil { diff --git a/lib/srv/server/azure_watcher.go b/lib/srv/server/azure_watcher.go index accf717fb70..ac959554d68 100644 --- a/lib/srv/server/azure_watcher.go +++ b/lib/srv/server/azure_watcher.go @@ -78,9 +78,10 @@ func (instances *AzureInstances) MakeEvents(failures []AzureInstallFailure) map[ continue } events[azureEventPrefix+id] = &usageeventsv1.ResourceCreateEvent{ - ResourceType: resourceType, - ResourceOrigin: types.OriginCloud, - CloudProvider: types.CloudAzure, + ResourceType: resourceType, + ResourceOrigin: types.OriginCloud, + CloudProvider: types.CloudAzure, + DiscoveryConfigName: instances.DiscoveryConfigName, } } return events diff --git a/lib/srv/server/ec2_watcher.go b/lib/srv/server/ec2_watcher.go index 9d45e9018bb..cb9290d0fc0 100644 --- a/lib/srv/server/ec2_watcher.go +++ b/lib/srv/server/ec2_watcher.go @@ -159,9 +159,10 @@ func (instances *EC2Instances) MakeEvents() map[string]*usageeventsv1.ResourceCr events := make(map[string]*usageeventsv1.ResourceCreateEvent, len(instances.Instances)) for _, inst := range instances.Instances { events[awsEventPrefix+inst.InstanceID] = &usageeventsv1.ResourceCreateEvent{ - ResourceType: resourceType, - ResourceOrigin: types.OriginCloud, - CloudProvider: types.CloudAWS, + ResourceType: resourceType, + ResourceOrigin: types.OriginCloud, + CloudProvider: types.CloudAWS, + DiscoveryConfigName: instances.DiscoveryConfigName, } } return events diff --git a/lib/srv/server/gcp_watcher.go b/lib/srv/server/gcp_watcher.go index 1f3a13d0f6c..b5eaadefe85 100644 --- a/lib/srv/server/gcp_watcher.go +++ b/lib/srv/server/gcp_watcher.go @@ -45,6 +45,8 @@ type GCPInstances struct { InstallerParams *types.InstallerParams // Instances is a list of discovered GCP virtual machines. Instances []*gcpimds.Instance + // DiscoveryConfigName is the name of the DiscoveryConfig that triggered this discovery. + DiscoveryConfigName string } // MakeEvents generates MakeEvents for these instances. @@ -56,9 +58,10 @@ func (instances *GCPInstances) MakeEvents() map[string]*usageeventsv1.ResourceCr events := make(map[string]*usageeventsv1.ResourceCreateEvent, len(instances.Instances)) for _, inst := range instances.Instances { events[fmt.Sprintf("%s%s/%s", gcpEventPrefix, inst.ProjectID, inst.Name)] = &usageeventsv1.ResourceCreateEvent{ - ResourceType: resourceType, - ResourceOrigin: types.OriginCloud, - CloudProvider: types.CloudGCP, + ResourceType: resourceType, + ResourceOrigin: types.OriginCloud, + CloudProvider: types.CloudGCP, + DiscoveryConfigName: instances.DiscoveryConfigName, } } return events @@ -164,10 +167,11 @@ func (f *gcpInstanceFetcher) GetInstances(ctx context.Context, _ bool) ([]*GCPIn for zone, vms := range vmsByZone { if len(vms) > 0 { instances = append(instances, &GCPInstances{ - InstallerParams: f.InstallerParams, - ProjectID: projectID, - Zone: zone, - Instances: vms, + InstallerParams: f.InstallerParams, + ProjectID: projectID, + Zone: zone, + Instances: vms, + DiscoveryConfigName: f.DiscoveryConfigName, }) } } diff --git a/lib/usagereporter/teleport/types.go b/lib/usagereporter/teleport/types.go index e47fb00f797..10cd185ee3a 100644 --- a/lib/usagereporter/teleport/types.go +++ b/lib/usagereporter/teleport/types.go @@ -171,10 +171,15 @@ func (u *SessionStartEvent) Anonymize(a utils.Anonymizer) prehogv1a.SubmitEventR type ResourceCreateEvent prehogv1a.ResourceCreateEvent func (u *ResourceCreateEvent) Anonymize(a utils.Anonymizer) prehogv1a.SubmitEventRequest { + var discoveryConfigName string + if u.DiscoveryConfigName != "" { + discoveryConfigName = a.AnonymizeString(u.DiscoveryConfigName) + } event := &prehogv1a.ResourceCreateEvent{ - ResourceType: u.ResourceType, - ResourceOrigin: u.ResourceOrigin, - CloudProvider: u.CloudProvider, + ResourceType: u.ResourceType, + ResourceOrigin: u.ResourceOrigin, + CloudProvider: u.CloudProvider, + DiscoveryConfigName: discoveryConfigName, } if db := u.Database; db != nil { event.Database = &prehogv1a.DiscoveredDatabaseMetadata{ @@ -1443,13 +1448,18 @@ func (u *SPIFFESVIDIssuedEvent) Anonymize(a utils.Anonymizer) prehogv1a.SubmitEv type UserTaskStateEvent prehogv1a.UserTaskStateEvent func (u *UserTaskStateEvent) Anonymize(a utils.Anonymizer) prehogv1a.SubmitEventRequest { + var discoveryConfigName string + if u.DiscoveryConfigName != "" { + discoveryConfigName = a.AnonymizeString(u.DiscoveryConfigName) + } return prehogv1a.SubmitEventRequest{ Event: &prehogv1a.SubmitEventRequest_UserTaskState{ UserTaskState: &prehogv1a.UserTaskStateEvent{ - TaskType: u.TaskType, - IssueType: u.IssueType, - State: u.State, - InstancesCount: u.InstancesCount, + TaskType: u.TaskType, + IssueType: u.IssueType, + State: u.State, + InstancesCount: u.InstancesCount, + DiscoveryConfigName: discoveryConfigName, }, }, } @@ -1877,9 +1887,10 @@ func ConvertUsageEvent(event *usageeventsv1.UsageEventOneOf, userMD UserMetadata return ret, nil case *usageeventsv1.UsageEventOneOf_ResourceCreateEvent: ret := &ResourceCreateEvent{ - ResourceType: e.ResourceCreateEvent.ResourceType, - ResourceOrigin: e.ResourceCreateEvent.ResourceOrigin, - CloudProvider: e.ResourceCreateEvent.CloudProvider, + ResourceType: e.ResourceCreateEvent.ResourceType, + ResourceOrigin: e.ResourceCreateEvent.ResourceOrigin, + CloudProvider: e.ResourceCreateEvent.CloudProvider, + DiscoveryConfigName: e.ResourceCreateEvent.DiscoveryConfigName, } if db := e.ResourceCreateEvent.Database; db != nil { ret.Database = &prehogv1a.DiscoveredDatabaseMetadata{ @@ -2106,3 +2117,21 @@ func (e *SessionSummaryCreateEvent) Anonymize(a utils.Anonymizer) prehogv1a.Subm }, } } + +// DiscoveryConfigEvent is emitted when a DiscoveryConfig resource is created, updated, or deleted. +type DiscoveryConfigEvent prehogv1a.DiscoveryConfigEvent + +// Anonymize anonymizes the event. +func (e *DiscoveryConfigEvent) Anonymize(a utils.Anonymizer) prehogv1a.SubmitEventRequest { + return prehogv1a.SubmitEventRequest{ + Event: &prehogv1a.SubmitEventRequest_DiscoveryConfig{ + DiscoveryConfig: &prehogv1a.DiscoveryConfigEvent{ + Action: e.Action, + DiscoveryConfigName: a.AnonymizeString(e.DiscoveryConfigName), + ResourceTypes: e.ResourceTypes, + CloudProviders: e.CloudProviders, + CreationMethod: e.CreationMethod, + }, + }, + } +} diff --git a/proto/prehog/v1alpha/teleport.proto b/proto/prehog/v1alpha/teleport.proto index 33e5e47f8b1..14fd7f1f92b 100644 --- a/proto/prehog/v1alpha/teleport.proto +++ b/proto/prehog/v1alpha/teleport.proto @@ -111,6 +111,9 @@ message ResourceCreateEvent { string cloud_provider = 3; // database contains additional database information if resource_type == "db". DiscoveredDatabaseMetadata database = 4; + // discovery_config_name is the anonymized name of the DiscoveryConfig that triggered discovery. + // Empty for teleport.yaml matcher configuration. + string discovery_config_name = 5; } // DiscoveredDatabaseMetadata contains additional database information. @@ -1156,6 +1159,9 @@ enum IntegrationEnrollKind { INTEGRATION_ENROLL_KIND_GITHUB_REPO_ACCESS = 27; INTEGRATION_ENROLL_KIND_MACHINE_ID_ARGOCD = 28; INTEGRATION_ENROLL_KIND_MACHINE_ID_GITHUB_ACTIONS_KUBERNETES = 29; + INTEGRATION_ENROLL_KIND_AWS_CLOUD = 30; + INTEGRATION_ENROLL_KIND_AZURE_CLOUD = 31; + INTEGRATION_ENROLL_KIND_GOOGLE_CLOUD = 32; } // IntegrationEnrollMetadata contains common metadata @@ -1204,6 +1210,9 @@ enum IntegrationEnrollStep { INTEGRATION_ENROLL_STEP_MWIGHAK8S_CONFIGURE_ACCESS = 10; INTEGRATION_ENROLL_STEP_MWIGHAK8S_SETUP_WORKFLOW = 11; INTEGRATION_ENROLL_STEP_MWIGHAK8S_WELCOME = 12; + + // General integration setup steps + INTEGRATION_ENROLL_STEP_VERIFY_INTEGRATION = 13; } // IntegrationEnrollStatusCode defines status code for an integration enroll step. @@ -1721,6 +1730,12 @@ message UserTaskStateEvent { // // PostHog property: tp.usertask.discover_ec2.instances_count int32 instances_count = 4; + + // discovery_config_name is the anonymized name of the DiscoveryConfig used when + // the issue was created. + // + // PostHog property: tp.usertask.discovery_config_name + string discovery_config_name = 5; } // AccessRequestCreateEvent is emitted when an Access Request is created. @@ -1842,6 +1857,30 @@ message SessionSummaryCreateEvent { bool is_cloud_default_model = 7; } +// DiscoveryConfigAction is the action performed on a DiscoveryConfig. +enum DiscoveryConfigAction { + DISCOVERY_CONFIG_ACTION_UNSPECIFIED = 0; + DISCOVERY_CONFIG_ACTION_CREATE = 1; + DISCOVERY_CONFIG_ACTION_UPDATE = 2; + DISCOVERY_CONFIG_ACTION_DELETE = 3; +} + +// DiscoveryConfigEvent is emitted when a DiscoveryConfig resource is created, updated, or deleted. +// +// PostHog event: tp.discovery.config +message DiscoveryConfigEvent { + // action is the operation performed on the DiscoveryConfig. + DiscoveryConfigAction action = 1; + // discovery_config_name is the anonymized name of the DiscoveryConfig. + string discovery_config_name = 2; + // resource_types is the list of resource types configured for discovery (e.g., "ec2", "rds", "eks"). + repeated string resource_types = 3; + // cloud_providers is the list of cloud providers the config has matchers for. + repeated string cloud_providers = 4; + // creation_method specifies the flow used to create the config ("iac" or "guided") + string creation_method = 5; +} + message SubmitEventRequest { // anonymized, 32 bytes (HMAC-SHA-256) encoded in base64 // @@ -2020,6 +2059,8 @@ message SubmitEventRequest { SessionSummaryCreateEvent session_summary_create_event = 105; SessionSummaryAccessEvent session_summary_access_event = 106; + + DiscoveryConfigEvent discovery_config = 107; } reserved 8; // UIOnboardGetStartedClickEvent diff --git a/web/packages/teleport/src/Integrations/Enroll/Cloud/Aws/EnrollAws.test.tsx b/web/packages/teleport/src/Integrations/Enroll/Cloud/Aws/EnrollAws.test.tsx index f4f295e4527..acd8fd3ad2d 100644 --- a/web/packages/teleport/src/Integrations/Enroll/Cloud/Aws/EnrollAws.test.tsx +++ b/web/packages/teleport/src/Integrations/Enroll/Cloud/Aws/EnrollAws.test.tsx @@ -29,6 +29,13 @@ import { ContentMinWidth } from 'teleport/Main/Main'; import { createTeleportContext } from 'teleport/mocks/contexts'; import { ApiError } from 'teleport/services/api/parseError'; import { integrationService } from 'teleport/services/integrations'; +import { userEventService } from 'teleport/services/userEvent'; +import { + IntegrationEnrollCodeType, + IntegrationEnrollEvent, + IntegrationEnrollKind, + IntegrationEnrollStep, +} from 'teleport/services/userEvent/types'; import { EnrollAws } from './EnrollAws'; @@ -66,6 +73,9 @@ describe('EnrollAws', () => { jest.clearAllMocks(); queryClient.clear(); cfg.proxyCluster = 'my-cluster.cloud.gravitational.io'; + jest + .spyOn(userEventService, 'captureIntegrationEnrollEvent') + .mockImplementation(); }); afterEach(() => { @@ -73,6 +83,19 @@ describe('EnrollAws', () => { cfg.proxyCluster = defaultProxyCluster; }); + test('emits start event on mount', () => { + renderEnrollAws(); + + expect(userEventService.captureIntegrationEnrollEvent).toHaveBeenCalledWith( + expect.objectContaining({ + event: IntegrationEnrollEvent.Started, + eventData: expect.objectContaining({ + kind: IntegrationEnrollKind.AwsCloud, + }), + }) + ); + }); + test('terraform template renders', async () => { renderEnrollAws(); @@ -120,6 +143,16 @@ describe('EnrollAws', () => { expect(copyToClipboard).toHaveBeenCalledWith( expect.stringContaining('"test-integration"') ); + + expect(userEventService.captureIntegrationEnrollEvent).toHaveBeenCalledWith( + expect.objectContaining({ + event: IntegrationEnrollEvent.CodeCopy, + eventData: expect.objectContaining({ + kind: IntegrationEnrollKind.AwsCloud, + codeType: IntegrationEnrollCodeType.Terraform, + }), + }) + ); }); test('check integration button validates form', async () => { @@ -160,9 +193,28 @@ describe('EnrollAws', () => { }); fireEvent.click(checkButton); + expect(userEventService.captureIntegrationEnrollEvent).toHaveBeenCalledWith( + expect.objectContaining({ + event: IntegrationEnrollEvent.Step, + eventData: expect.objectContaining({ + kind: IntegrationEnrollKind.AwsCloud, + step: IntegrationEnrollStep.VerifyIntegration, + }), + }) + ); + const success = await screen.findByText(/successfully added/i); expect(success).toBeInTheDocument(); + expect(userEventService.captureIntegrationEnrollEvent).toHaveBeenCalledWith( + expect.objectContaining({ + event: IntegrationEnrollEvent.Complete, + eventData: expect.objectContaining({ + kind: IntegrationEnrollKind.AwsCloud, + }), + }) + ); + const viewIntegrationLinks = screen.getAllByRole('link', { name: /^view integration$/i, }); @@ -202,6 +254,14 @@ describe('EnrollAws', () => { screen.getByRole('button', { name: /^view integration$/i }) ).toBeDisabled(); + expect( + userEventService.captureIntegrationEnrollEvent + ).not.toHaveBeenCalledWith( + expect.objectContaining({ + event: IntegrationEnrollEvent.Complete, + }) + ); + jest.useRealTimers(); }); diff --git a/web/packages/teleport/src/Integrations/Enroll/Cloud/Aws/EnrollAws.tsx b/web/packages/teleport/src/Integrations/Enroll/Cloud/Aws/EnrollAws.tsx index aab9d686700..e3b13814341 100644 --- a/web/packages/teleport/src/Integrations/Enroll/Cloud/Aws/EnrollAws.tsx +++ b/web/packages/teleport/src/Integrations/Enroll/Cloud/Aws/EnrollAws.tsx @@ -17,7 +17,7 @@ */ import { useQuery, useQueryClient } from '@tanstack/react-query'; -import { useMemo, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import { Link as InternalLink } from 'react-router'; import styled from 'styled-components'; @@ -46,6 +46,14 @@ import { IntegrationKind, integrationService, } from 'teleport/services/integrations'; +import { userEventService } from 'teleport/services/userEvent'; +import { + IntegrationEnrollCodeType, + IntegrationEnrollEvent, + IntegrationEnrollEventData, + IntegrationEnrollKind, + IntegrationEnrollStep, +} from 'teleport/services/userEvent/types'; import { useClusterVersion } from 'teleport/useClusterVersion'; import { DeploymentMethodSection } from './DeploymentMethodSection'; @@ -70,6 +78,28 @@ const INTEGRATION_CHECK_RETRY_DELAY = 5000; export function EnrollAws() { useNoMinWidth(); + const [eventId] = useState(() => crypto.randomUUID()); + + function emitEvent( + event: IntegrationEnrollEvent, + extra?: Partial + ) { + userEventService.captureIntegrationEnrollEvent({ + event, + eventData: { + id: eventId, + kind: IntegrationEnrollKind.AwsCloud, + ...extra, + }, + }); + } + + useEffect(() => { + emitEvent(IntegrationEnrollEvent.Started); + // Only send once on init. + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + const { clusterVersion } = useClusterVersion(); const [integrationName, setIntegrationName] = useState(() => { @@ -129,7 +159,14 @@ export function EnrollAws() { const queryClient = useQueryClient(); const checkIntegration = () => { - refetch(); + emitEvent(IntegrationEnrollEvent.Step, { + step: IntegrationEnrollStep.VerifyIntegration, + }); + refetch().then(result => { + if (result.isSuccess) { + emitEvent(IntegrationEnrollEvent.Complete); + } + }); }; const integrationExists = !!integrationData; @@ -187,6 +224,9 @@ export function EnrollAws() { handleCopy={() => { if (validator.validate() && terraformConfig) { copyToClipboard(terraformConfig); + emitEvent(IntegrationEnrollEvent.CodeCopy, { + codeType: IntegrationEnrollCodeType.Terraform, + }); } }} integrationExists={integrationExists} @@ -256,6 +296,9 @@ export function EnrollAws() { handleCopy={() => { if (validator.validate() && terraformConfig) { copyToClipboard(terraformConfig); + emitEvent(IntegrationEnrollEvent.CodeCopy, { + codeType: IntegrationEnrollCodeType.Terraform, + }); } }} /> diff --git a/web/packages/teleport/src/services/userEvent/types.ts b/web/packages/teleport/src/services/userEvent/types.ts index af4d2b58fe3..848c55eb179 100644 --- a/web/packages/teleport/src/services/userEvent/types.ts +++ b/web/packages/teleport/src/services/userEvent/types.ts @@ -86,6 +86,9 @@ export enum IntegrationEnrollKind { DatadogIncidentManagement = 'INTEGRATION_ENROLL_KIND_DATADOG_INCIDENT_MANAGEMENT', AwsIdentityCenter = 'INTEGRATION_ENROLL_KIND_AWS_IDENTITY_CENTER', GitHubRepoAccess = 'INTEGRATION_ENROLL_KIND_GITHUB_REPO_ACCESS', + AwsCloud = 'INTEGRATION_ENROLL_KIND_AWS_CLOUD', + AzureCloud = 'INTEGRATION_ENROLL_KIND_AZURE_CLOUD', + GoogleCloud = 'INTEGRATION_ENROLL_KIND_GOOGLE_CLOUD', } /** @@ -116,6 +119,8 @@ export enum IntegrationEnrollStep { MWIGHAK8SConnectGitHub = 'INTEGRATION_ENROLL_STEP_MWIGHAK8S_CONNECT_GITHUB', MWIGHAK8SConfigureAccess = 'INTEGRATION_ENROLL_STEP_MWIGHAK8S_CONFIGURE_ACCESS', MWIGHAK8SSetupWorkflow = 'INTEGRATION_ENROLL_STEP_MWIGHAK8S_SETUP_WORKFLOW', + + VerifyIntegration = 'INTEGRATION_ENROLL_STEP_VERIFY_INTEGRATION', } /**