diff --git a/api/client/webclient/webconfig.go b/api/client/webclient/webconfig.go index 694f126954808..b6fe1c2f1b087 100644 --- a/api/client/webclient/webconfig.go +++ b/api/client/webclient/webconfig.go @@ -82,6 +82,8 @@ type WebConfig struct { IsTeam bool `json:"isTeam"` // IsIGSEnabled is true if [Features.IdentityGovernance] = true IsIGSEnabled bool `json:"isIgsEnabled"` + // IsPolicyEnabled is true if [Features.Policy] = true + IsPolicyEnabled bool `json:"isPolicyEnabled"` // featureLimits define limits for features. // Typically used with feature teasers if feature is not enabled for the // product type eg: Team product contains teasers to upgrade to Enterprise. diff --git a/api/gen/proto/go/usageevents/v1/usageevents.pb.go b/api/gen/proto/go/usageevents/v1/usageevents.pb.go index 8367a0cb4c57c..73c5c5f33079a 100644 --- a/api/gen/proto/go/usageevents/v1/usageevents.pb.go +++ b/api/gen/proto/go/usageevents/v1/usageevents.pb.go @@ -229,6 +229,7 @@ const ( CTA_CTA_ACCESS_MONITORING CTA = 9 CTA_CTA_EXTERNAL_AUDIT_STORAGE CTA = 10 CTA_CTA_OKTA_USER_SYNC CTA = 11 + CTA_CTA_ENTRA_ID CTA = 12 ) var CTA_name = map[int32]string{ @@ -244,6 +245,7 @@ var CTA_name = map[int32]string{ 9: "CTA_ACCESS_MONITORING", 10: "CTA_EXTERNAL_AUDIT_STORAGE", 11: "CTA_OKTA_USER_SYNC", + 12: "CTA_ENTRA_ID", } var CTA_value = map[string]int32{ @@ -259,6 +261,7 @@ var CTA_value = map[string]int32{ "CTA_ACCESS_MONITORING": 9, "CTA_EXTERNAL_AUDIT_STORAGE": 10, "CTA_OKTA_USER_SYNC": 11, + "CTA_ENTRA_ID": 12, } func (x CTA) String() string { @@ -293,6 +296,7 @@ const ( IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_MACHINE_ID_JENKINS IntegrationEnrollKind = 16 IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_MACHINE_ID_ANSIBLE IntegrationEnrollKind = 17 IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_SERVICENOW IntegrationEnrollKind = 18 + IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_ENTRA_ID IntegrationEnrollKind = 19 ) var IntegrationEnrollKind_name = map[int32]string{ @@ -315,6 +319,7 @@ var IntegrationEnrollKind_name = map[int32]string{ 16: "INTEGRATION_ENROLL_KIND_MACHINE_ID_JENKINS", 17: "INTEGRATION_ENROLL_KIND_MACHINE_ID_ANSIBLE", 18: "INTEGRATION_ENROLL_KIND_SERVICENOW", + 19: "INTEGRATION_ENROLL_KIND_ENTRA_ID", } var IntegrationEnrollKind_value = map[string]int32{ @@ -337,6 +342,7 @@ var IntegrationEnrollKind_value = map[string]int32{ "INTEGRATION_ENROLL_KIND_MACHINE_ID_JENKINS": 16, "INTEGRATION_ENROLL_KIND_MACHINE_ID_ANSIBLE": 17, "INTEGRATION_ENROLL_KIND_SERVICENOW": 18, + "INTEGRATION_ENROLL_KIND_ENTRA_ID": 19, } func (x IntegrationEnrollKind) String() string { @@ -5004,307 +5010,308 @@ func init() { } var fileDescriptor_94cf2ca1c69fd564 = []byte{ - // 4789 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7c, 0xdb, 0x6f, 0xe3, 0x48, - 0x76, 0xb7, 0x28, 0xf7, 0xb5, 0xba, 0xdb, 0xcd, 0xae, 0x6e, 0xdb, 0xb2, 0xdd, 0x6e, 0xbb, 0xd5, - 0x77, 0xf7, 0xac, 0x3d, 0xed, 0x99, 0x9d, 0xe9, 0xdd, 0x99, 0xef, 0x9b, 0xd0, 0x14, 0x6d, 0xb1, - 0x2d, 0x89, 0x9a, 0x22, 0xd5, 0xbd, 0x9e, 0xc5, 0xa2, 0x40, 0x8b, 0x65, 0x37, 0xd1, 0x92, 0xe8, - 0x21, 0x29, 0x7b, 0x9c, 0x20, 0xd8, 0xcd, 0x15, 0x41, 0x66, 0x37, 0x48, 0x80, 0x20, 0x48, 0x30, - 0x40, 0x90, 0x20, 0x17, 0xe4, 0x21, 0xc0, 0x3e, 0x05, 0xfb, 0x9a, 0xbc, 0xe5, 0x31, 0x40, 0x90, - 0xa7, 0xbc, 0x04, 0xf3, 0x0f, 0xe4, 0x29, 0x01, 0x12, 0x24, 0x48, 0x50, 0x17, 0x4a, 0x94, 0x44, - 0x89, 0x9c, 0x49, 0x0f, 0x16, 0x70, 0xbf, 0x89, 0x55, 0xe7, 0xf2, 0xab, 0x53, 0xa7, 0x4e, 0x15, - 0xeb, 0x1c, 0x0a, 0x3c, 0x0a, 0x49, 0x8b, 0x1c, 0x7a, 0x7e, 0xb8, 0xde, 0x0d, 0xec, 0x03, 0x42, - 0x8e, 0x48, 0x27, 0x0c, 0xd6, 0x8f, 0x9e, 0xc4, 0x1f, 0xd7, 0x0e, 0x7d, 0x2f, 0xf4, 0xe0, 0x5c, - 0x44, 0xba, 0x16, 0xef, 0x3b, 0x7a, 0x52, 0x5c, 0x05, 0xb0, 0xa1, 0x6f, 0xda, 0x9d, 0x0e, 0xf1, - 0xd5, 0x96, 0xdb, 0x7c, 0xa5, 0xd1, 0x1e, 0x78, 0x03, 0x9c, 0xb5, 0x5b, 0xc4, 0x0f, 0x0b, 0xd2, - 0x8a, 0xf4, 0xf0, 0x22, 0xe2, 0x0f, 0xc5, 0x2d, 0xf0, 0xb0, 0xa1, 0x1b, 0x9d, 0x3d, 0xcf, 0xf6, - 0x1d, 0xd5, 0x6b, 0x1f, 0xb6, 0x48, 0x48, 0xb6, 0x3d, 0xcb, 0x2b, 0xd9, 0xc1, 0x4b, 0xde, 0xd8, - 0x97, 0xb0, 0x00, 0x2e, 0x74, 0x03, 0xe2, 0x77, 0xec, 0x36, 0x11, 0x42, 0x7a, 0xcf, 0xc5, 0x7b, - 0xe0, 0x4e, 0x4f, 0x8e, 0xe2, 0x38, 0x5b, 0xae, 0x1f, 0x84, 0x88, 0x04, 0x5e, 0xd7, 0x6f, 0x92, - 0xbe, 0x88, 0xe2, 0x6a, 0x4c, 0xdd, 0x30, 0x59, 0xc5, 0x0e, 0xe3, 0x80, 0x8b, 0x1f, 0x81, 0xdb, - 0x3d, 0x5a, 0x93, 0x84, 0xaa, 0x4f, 0x1c, 0xd2, 0x09, 0x5d, 0xbb, 0x65, 0x76, 0xf7, 0xda, 0x6e, - 0x98, 0x8e, 0x29, 0x2e, 0xe0, 0xe3, 0x2e, 0x09, 0x42, 0xd7, 0xeb, 0x74, 0x6c, 0xd7, 0x27, 0x59, - 0x05, 0xfc, 0x32, 0xb8, 0xd7, 0x13, 0x80, 0xc8, 0x81, 0x1b, 0x50, 0x80, 0x2f, 0xed, 0x56, 0x8b, - 0x74, 0x0e, 0xb2, 0x0a, 0x81, 0xf3, 0xe0, 0x42, 0x7b, 0xdf, 0xc6, 0xe1, 0xc9, 0x21, 0x29, 0xe4, - 0x59, 0xdf, 0xf9, 0xf6, 0xbe, 0x6d, 0x9d, 0x1c, 0x12, 0xb8, 0x04, 0x40, 0xcb, 0x3b, 0x70, 0x3b, - 0x78, 0xbf, 0xe5, 0x1d, 0x17, 0xa6, 0x58, 0xe7, 0x45, 0xd6, 0xb2, 0xd5, 0xf2, 0x8e, 0x39, 0x7e, - 0x44, 0x9a, 0xde, 0x11, 0xf1, 0x4f, 0x54, 0xcf, 0x21, 0x81, 0xea, 0x75, 0x42, 0xb7, 0xd3, 0x25, - 0x19, 0x27, 0xe5, 0x03, 0xb0, 0x34, 0x22, 0xe0, 0xf0, 0x24, 0x23, 0xf3, 0x87, 0xe0, 0xd6, 0x10, - 0x73, 0xdd, 0x77, 0x3b, 0x61, 0x46, 0xee, 0x22, 0x90, 0x4b, 0x6e, 0xc0, 0x98, 0xab, 0x24, 0xb4, - 0x1d, 0x3b, 0xb4, 0xe1, 0x34, 0xc8, 0xbb, 0x8e, 0xa0, 0xcc, 0xbb, 0x4e, 0xd1, 0x06, 0x85, 0x88, - 0x26, 0xf2, 0x81, 0x1e, 0xad, 0x06, 0x2e, 0xf8, 0xa2, 0x8d, 0x71, 0x4c, 0x6f, 0x3c, 0x5a, 0x1b, - 0xe3, 0xef, 0x6b, 0xc3, 0x42, 0x50, 0x8f, 0xb5, 0xf8, 0x0a, 0xc0, 0xa8, 0xd7, 0x0c, 0xc9, 0xa1, - 0x19, 0xda, 0x61, 0x37, 0x80, 0x1f, 0x81, 0x73, 0x01, 0xfb, 0x25, 0x44, 0x3f, 0x48, 0x15, 0xcd, - 0x19, 0x91, 0x60, 0xa3, 0x6b, 0x89, 0xf8, 0xbe, 0xe7, 0x8b, 0x09, 0xe5, 0x0f, 0xc5, 0x3f, 0x97, - 0xc0, 0x6c, 0x43, 0x8f, 0xb1, 0xf8, 0x21, 0x71, 0xb8, 0xa9, 0x34, 0x70, 0xa1, 0x2d, 0x86, 0xc6, - 0x74, 0x5e, 0xca, 0x30, 0x9c, 0xc8, 0x16, 0xa8, 0xc7, 0x0a, 0xd5, 0x1e, 0xf0, 0x3c, 0x13, 0xf2, - 0x38, 0x03, 0xf0, 0x68, 0xd4, 0x11, 0xf8, 0xe2, 0x7f, 0x4b, 0x60, 0xa5, 0x0f, 0x33, 0x32, 0x9a, - 0x49, 0x5a, 0xa4, 0x49, 0x57, 0xc8, 0x6b, 0x05, 0x5c, 0x8d, 0x4d, 0x23, 0x87, 0xfc, 0x24, 0xf3, - 0x34, 0xf6, 0xc5, 0x45, 0x22, 0x62, 0xe3, 0x9f, 0xfa, 0xfa, 0xe3, 0xff, 0x8d, 0x3c, 0x0d, 0x42, - 0x11, 0x81, 0xde, 0x09, 0xc9, 0x81, 0x6f, 0xd3, 0x91, 0x2b, 0x2f, 0x4c, 0x43, 0x2f, 0xa9, 0xaa, - 0xd7, 0xe9, 0x90, 0x66, 0x78, 0xea, 0xed, 0xf0, 0xb3, 0x7c, 0xdc, 0x0f, 0x4a, 0x76, 0x68, 0xef, - 0xd9, 0x01, 0x41, 0x25, 0x53, 0xeb, 0xf8, 0x5e, 0xab, 0x75, 0xda, 0xc7, 0x0f, 0x9f, 0x82, 0x42, - 0xc0, 0x9c, 0x9e, 0x38, 0x38, 0x92, 0x1c, 0xe0, 0xa6, 0xd7, 0xed, 0x84, 0x85, 0x33, 0x2b, 0xd2, - 0xc3, 0x29, 0x34, 0x1b, 0xf5, 0x47, 0x50, 0x02, 0x95, 0xf6, 0x16, 0xff, 0x43, 0x02, 0x37, 0xfb, - 0x96, 0xdb, 0xe9, 0xee, 0x11, 0x6d, 0xe7, 0x0d, 0xb1, 0x5a, 0xf1, 0x19, 0x28, 0x34, 0x74, 0xd5, - 0x6e, 0xb5, 0x2c, 0x4f, 0x61, 0xf1, 0x22, 0xb6, 0x21, 0xac, 0x81, 0xa9, 0xa6, 0x18, 0xf1, 0xf4, - 0xc6, 0xcd, 0xb1, 0xd2, 0x55, 0x4b, 0x41, 0x94, 0xb0, 0xf8, 0x93, 0xb3, 0x71, 0x3b, 0x96, 0xc8, - 0x61, 0xcb, 0x3b, 0x31, 0x89, 0x7f, 0xe4, 0x36, 0xc9, 0xa9, 0xf7, 0xbe, 0x03, 0x70, 0xc5, 0x61, - 0x03, 0xc6, 0x6d, 0x12, 0xbe, 0xf4, 0x1c, 0xe6, 0x72, 0xd3, 0x1b, 0x9b, 0x63, 0x65, 0x4d, 0x32, - 0xd4, 0x1a, 0x6f, 0xaa, 0x32, 0x49, 0xe8, 0xb2, 0x13, 0x7b, 0x82, 0x36, 0xb8, 0x24, 0x14, 0xb1, - 0x23, 0xc8, 0x59, 0xa6, 0xe6, 0x17, 0xfe, 0x2f, 0x6a, 0xe8, 0xd9, 0x05, 0x01, 0xa7, 0xf7, 0xbb, - 0x88, 0xc1, 0xe5, 0x38, 0x00, 0xb8, 0x04, 0xe6, 0x4b, 0x5a, 0xbd, 0x62, 0xec, 0xe2, 0xaa, 0x66, - 0x95, 0x8d, 0x12, 0x6e, 0xd4, 0xcc, 0xba, 0xa6, 0xea, 0x5b, 0xba, 0x56, 0x92, 0x73, 0x70, 0x16, - 0xc0, 0xc1, 0x6e, 0xa5, 0x61, 0x19, 0xb2, 0x04, 0x0b, 0xe0, 0xc6, 0x60, 0x7b, 0x55, 0xa9, 0x35, - 0x94, 0x8a, 0x9c, 0x2f, 0x12, 0x00, 0xfa, 0xaa, 0xe1, 0x22, 0x98, 0x13, 0x74, 0xd6, 0x6e, 0x5d, - 0x1b, 0x12, 0x7e, 0x0b, 0x2c, 0xc4, 0x3b, 0xf5, 0x9a, 0x69, 0x29, 0x95, 0x0a, 0x36, 0x55, 0xa4, - 0xd7, 0x2d, 0x59, 0x82, 0x0b, 0x60, 0x36, 0xde, 0xaf, 0x54, 0x95, 0x4f, 0x8c, 0x1a, 0xd6, 0x54, - 0x53, 0xce, 0x17, 0xbf, 0x38, 0x03, 0xee, 0xf6, 0xc7, 0xaf, 0xfa, 0xc4, 0x0e, 0x49, 0xf4, 0x74, - 0xa2, 0x7a, 0x9d, 0x7d, 0xf7, 0xe0, 0xd4, 0xfb, 0xa5, 0x07, 0xae, 0x34, 0xd9, 0x48, 0x07, 0xfd, - 0xf2, 0x59, 0x06, 0x87, 0x19, 0x6f, 0xb0, 0x35, 0xfe, 0x3b, 0xf2, 0xcf, 0x66, 0xec, 0xa9, 0xf8, - 0x97, 0x12, 0xb8, 0x1c, 0xef, 0xa6, 0xde, 0xa3, 0x1a, 0xb5, 0x2d, 0x7d, 0x3b, 0xd9, 0x7b, 0x46, - 0xba, 0x95, 0x17, 0x26, 0xd6, 0xd4, 0x0d, 0x6c, 0x9a, 0x55, 0x59, 0xa2, 0xf3, 0x9f, 0xdc, 0xad, - 0xe9, 0xaa, 0x26, 0xe7, 0x93, 0xd9, 0x51, 0xc9, 0x64, 0x2e, 0x30, 0x05, 0xe7, 0xc1, 0x4c, 0x02, - 0xfb, 0x8e, 0x29, 0x9f, 0x29, 0xfe, 0x97, 0x04, 0x96, 0x13, 0xf6, 0x4b, 0xf1, 0x5e, 0x70, 0xea, - 0x03, 0xff, 0xaf, 0xe4, 0xe3, 0x8b, 0x23, 0x1a, 0x3e, 0x9f, 0xb9, 0xae, 0x4f, 0xaa, 0x56, 0xc5, - 0x3c, 0xf5, 0x36, 0xf8, 0x9d, 0x3c, 0x78, 0x12, 0x0f, 0x90, 0xc1, 0xab, 0xd0, 0x3b, 0xa4, 0xdb, - 0xe0, 0x11, 0x29, 0xb9, 0x3e, 0x69, 0x86, 0x9e, 0x7f, 0x62, 0x79, 0x5e, 0x2b, 0xd0, 0x3b, 0x41, - 0x68, 0xbf, 0x01, 0xa7, 0x81, 0xcf, 0xf3, 0x60, 0x2d, 0xcd, 0x20, 0x3d, 0x17, 0x39, 0xf5, 0xd6, - 0xf8, 0xeb, 0x3c, 0xb8, 0xdf, 0xb7, 0x86, 0xd2, 0x0d, 0xbd, 0xe8, 0x77, 0xec, 0x08, 0x79, 0xea, - 0x77, 0x90, 0x07, 0xe0, 0x6a, 0xf2, 0x71, 0x7a, 0xda, 0x1f, 0x3c, 0x46, 0xff, 0x28, 0x0f, 0xee, - 0xf4, 0xcd, 0xa5, 0xa9, 0x1b, 0x6c, 0xd5, 0x74, 0xde, 0xa4, 0x77, 0xd1, 0x7f, 0x97, 0xc0, 0xfc, - 0xf0, 0x89, 0x8b, 0x6e, 0x54, 0x6f, 0xd8, 0xc0, 0xf9, 0xc9, 0xa1, 0xe6, 0x39, 0xa7, 0x3f, 0x46, - 0xfc, 0x66, 0x1e, 0x3c, 0x9a, 0xb0, 0x8d, 0xea, 0x4a, 0xb5, 0xee, 0xb5, 0xdc, 0xe6, 0xc9, 0xa9, - 0x37, 0xc4, 0xff, 0x48, 0xa0, 0xd8, 0x37, 0x44, 0xdd, 0x77, 0x3b, 0x4d, 0xf7, 0xd0, 0x6e, 0x05, - 0x6f, 0xce, 0x76, 0xf1, 0x9f, 0x12, 0x58, 0xea, 0x5b, 0xc0, 0x22, 0x41, 0x28, 0xae, 0x9e, 0xde, - 0x84, 0xc8, 0xf7, 0x6f, 0x12, 0x28, 0xc4, 0x02, 0x80, 0x48, 0x3d, 0x38, 0xa7, 0x7e, 0xdc, 0x8b, - 0x34, 0xee, 0x89, 0x78, 0x47, 0x8e, 0x91, 0xd7, 0x8a, 0xa7, 0x47, 0x96, 0xa9, 0x43, 0x0c, 0x74, - 0x9a, 0xf6, 0x51, 0x9c, 0xe0, 0x36, 0x7d, 0x05, 0x19, 0xe4, 0xa6, 0x1b, 0x66, 0x2b, 0x46, 0xf2, - 0x16, 0x58, 0x1d, 0x22, 0x79, 0xee, 0x92, 0xe3, 0x92, 0xd7, 0xec, 0xb6, 0x49, 0x27, 0xb4, 0x07, - 0xaf, 0x6c, 0x8a, 0x7f, 0x23, 0x81, 0x19, 0x25, 0x08, 0x5c, 0xea, 0x7b, 0x6c, 0x0a, 0x7a, 0xbe, - 0xf7, 0x00, 0x5c, 0x6d, 0x7a, 0x9d, 0x23, 0xe2, 0x07, 0x8c, 0x07, 0xf7, 0xae, 0xee, 0xa7, 0xe3, - 0xcd, 0xba, 0x03, 0x6f, 0x83, 0xcb, 0xa1, 0x17, 0xda, 0x2d, 0x1c, 0x7a, 0xaf, 0x48, 0x87, 0x5f, - 0x4d, 0x4f, 0xa1, 0x4b, 0xac, 0xcd, 0x62, 0x4d, 0xf0, 0x0e, 0xb8, 0x72, 0xe8, 0x7b, 0xed, 0xc3, - 0x30, 0xa2, 0x99, 0x62, 0x34, 0x97, 0x79, 0xa3, 0x20, 0x7a, 0x0c, 0xae, 0x35, 0x7b, 0x18, 0x22, - 0x42, 0x7e, 0x72, 0x90, 0xfb, 0x1d, 0x9c, 0xb8, 0xf8, 0x8f, 0x12, 0xb8, 0xc1, 0x71, 0x6b, 0x9f, - 0x91, 0x66, 0xf7, 0x6b, 0xc0, 0x5e, 0x02, 0xa0, 0xe3, 0x39, 0x44, 0x9c, 0x50, 0x38, 0xe8, 0x8b, - 0xb4, 0x85, 0x1d, 0x4e, 0x46, 0x46, 0x35, 0x95, 0x61, 0x54, 0x67, 0xb2, 0x8e, 0xea, 0xec, 0x98, - 0x51, 0x3d, 0x05, 0x0b, 0x7c, 0x50, 0x35, 0x72, 0xac, 0xc6, 0xe0, 0xf6, 0xf2, 0x2d, 0x4d, 0x3b, - 0x24, 0x07, 0x9e, 0x7f, 0x12, 0xe5, 0x5b, 0xa2, 0xe7, 0xe2, 0x4f, 0x25, 0x70, 0x9d, 0xb3, 0x2a, - 0xcd, 0x26, 0x09, 0x02, 0x44, 0x3e, 0xed, 0x92, 0x20, 0xa4, 0x18, 0x23, 0xff, 0xe5, 0xf7, 0x3f, - 0x9c, 0xf1, 0x72, 0xd4, 0xc8, 0x2e, 0x54, 0x7e, 0x2e, 0x33, 0xf8, 0x85, 0x04, 0x2e, 0x47, 0x88, - 0x69, 0x33, 0x9c, 0x05, 0xe7, 0x6c, 0xf6, 0x4b, 0x60, 0x14, 0x4f, 0x3f, 0x1f, 0x74, 0x77, 0x01, - 0xe4, 0x86, 0xac, 0xb8, 0x41, 0x38, 0x36, 0x83, 0xf5, 0x7d, 0x20, 0xf7, 0xa9, 0xf8, 0x9a, 0x83, - 0xdb, 0x23, 0xb1, 0x6b, 0x7c, 0x9c, 0x18, 0x55, 0xd1, 0x8f, 0x5e, 0x83, 0xc2, 0x1b, 0x87, 0xce, - 0x37, 0x27, 0xbc, 0x44, 0x68, 0xec, 0x7d, 0x7d, 0xc2, 0x6d, 0x30, 0x1b, 0xef, 0x6f, 0xef, 0x45, - 0x27, 0xbc, 0x6f, 0x54, 0xc5, 0xeb, 0x36, 0x51, 0x82, 0x8a, 0xd7, 0x6d, 0xa8, 0x5f, 0x8c, 0xab, - 0xd8, 0xf6, 0xed, 0x4e, 0x18, 0x58, 0x5e, 0x23, 0x20, 0x3e, 0x5c, 0x03, 0xd7, 0x59, 0x60, 0xc2, - 0xbe, 0xd7, 0x22, 0x01, 0x3e, 0xa0, 0x7d, 0x84, 0xbb, 0xde, 0x59, 0x74, 0x8d, 0x75, 0xd1, 0xd0, - 0x1e, 0x6c, 0xf3, 0x0e, 0xf8, 0x36, 0xb8, 0xc1, 0xe9, 0x43, 0xdf, 0x76, 0xc3, 0x3e, 0x43, 0x9e, - 0x31, 0x40, 0xd6, 0x67, 0xb1, 0x2e, 0xc1, 0x51, 0xfc, 0x83, 0xa9, 0xb8, 0x72, 0x44, 0x8e, 0x5c, - 0x72, 0xfc, 0x9a, 0x67, 0x09, 0x3e, 0x05, 0xf3, 0x8e, 0x7d, 0x12, 0xe0, 0x43, 0x3b, 0x08, 0x71, - 0x87, 0x7c, 0x16, 0x62, 0xbb, 0xeb, 0xb8, 0x21, 0xa6, 0x13, 0x25, 0xa0, 0xcd, 0x50, 0x82, 0xba, - 0x4d, 0x43, 0xde, 0x67, 0xa1, 0x42, 0x7b, 0x4b, 0x14, 0xc2, 0x16, 0x58, 0x6e, 0x33, 0x93, 0x07, - 0x2f, 0xdd, 0x43, 0xec, 0x93, 0x4f, 0xbb, 0xae, 0x4f, 0xe8, 0x06, 0x16, 0xe0, 0xe6, 0x4b, 0xbb, - 0x73, 0x40, 0x1c, 0xb6, 0xc6, 0x2f, 0xa0, 0xa5, 0x3e, 0x19, 0x8a, 0x51, 0xa9, 0x9c, 0x08, 0x3e, - 0x05, 0x05, 0x9f, 0x0d, 0x0d, 0xef, 0x53, 0x21, 0xa4, 0xd3, 0x3c, 0xe9, 0x09, 0x38, 0xc3, 0x04, - 0xcc, 0xf2, 0xfe, 0xad, 0xa8, 0x3b, 0xe2, 0xfc, 0x10, 0x2c, 0x0a, 0x4e, 0xc7, 0x3e, 0xc1, 0xde, - 0x3e, 0x6e, 0x7b, 0x9d, 0xf0, 0x65, 0x8f, 0xf9, 0x2c, 0x63, 0x9e, 0xe3, 0x24, 0x25, 0xfb, 0xc4, - 0xd8, 0xaf, 0xd2, 0xfe, 0x88, 0xfb, 0x3b, 0x60, 0xbe, 0xd3, 0xa5, 0xc0, 0x28, 0xa7, 0x4f, 0xda, - 0xde, 0x11, 0x71, 0xb0, 0x80, 0x5a, 0x38, 0xc7, 0x46, 0x3e, 0xcb, 0x09, 0x8c, 0x7d, 0xc4, 0xbb, - 0xb9, 0x8b, 0x05, 0xc5, 0xdf, 0x97, 0x46, 0x27, 0xe6, 0x35, 0x3b, 0x1e, 0x7c, 0x02, 0x66, 0x6c, - 0xd6, 0x8f, 0x5b, 0x6e, 0x10, 0x62, 0x31, 0x50, 0xd7, 0x11, 0x09, 0x6d, 0x68, 0x0f, 0xe9, 0xd7, - 0x9d, 0xe2, 0x8f, 0x25, 0x30, 0x1f, 0x4b, 0x96, 0xf2, 0x74, 0xd7, 0xb8, 0xc8, 0x08, 0x37, 0xc1, - 0x99, 0x57, 0x6e, 0x87, 0xcb, 0x9b, 0xde, 0x58, 0x1b, 0x8b, 0x72, 0x44, 0xe2, 0x8e, 0xdb, 0x71, - 0x10, 0xe3, 0x85, 0x8b, 0xe0, 0x62, 0x37, 0x20, 0x3e, 0x66, 0x05, 0x06, 0x53, 0xfd, 0x02, 0x83, - 0x9a, 0xdd, 0x26, 0x45, 0x8f, 0x1e, 0x95, 0x46, 0xb8, 0x59, 0xd2, 0x9d, 0xef, 0x96, 0xb5, 0x11, - 0x5b, 0x6d, 0x64, 0x47, 0x91, 0xb0, 0x56, 0x7d, 0xb0, 0x92, 0xa0, 0x30, 0x3a, 0xb8, 0x7e, 0x33, - 0x3a, 0xff, 0x59, 0x02, 0xd7, 0x7b, 0x55, 0x34, 0x6c, 0x6d, 0x72, 0x3d, 0x99, 0x76, 0xf5, 0xd8, - 0x3d, 0x0c, 0xf6, 0x7c, 0xf7, 0xc0, 0xed, 0x88, 0xd9, 0xed, 0xdd, 0xc3, 0x18, 0xac, 0x15, 0xde, - 0x03, 0xd3, 0xcd, 0x96, 0xd7, 0x75, 0xf0, 0xa1, 0xef, 0x1d, 0xb9, 0x0e, 0xf1, 0x85, 0xb1, 0xaf, - 0xb0, 0xd6, 0xba, 0x68, 0x84, 0x06, 0xb8, 0xe0, 0x88, 0xd7, 0x55, 0xb6, 0x74, 0x2e, 0x6d, 0xbc, - 0x93, 0x7a, 0x00, 0x26, 0x4e, 0xf4, 0x86, 0xdb, 0x1f, 0x5d, 0x24, 0xa4, 0xf8, 0x1c, 0x2c, 0x8c, - 0xa7, 0x83, 0x73, 0xe0, 0xbc, 0xb3, 0x17, 0x1f, 0xdd, 0x39, 0x67, 0x8f, 0x8d, 0x6b, 0x19, 0x5c, - 0x72, 0xf6, 0x30, 0xab, 0x81, 0x6a, 0x7a, 0x2d, 0x31, 0x26, 0xe0, 0xec, 0xd5, 0x45, 0x4b, 0xf1, - 0x5f, 0x25, 0xb0, 0xb0, 0x45, 0xec, 0xb0, 0xeb, 0x13, 0x44, 0x9a, 0x5e, 0xbb, 0x4d, 0x3a, 0x4e, - 0xec, 0x18, 0x35, 0xe0, 0x56, 0xd2, 0xa0, 0x5b, 0xc1, 0xef, 0x82, 0xf3, 0xfb, 0x9c, 0x55, 0xb8, - 0xee, 0xca, 0xd8, 0x31, 0x46, 0x2a, 0x22, 0x06, 0xf8, 0x19, 0x58, 0x12, 0x3f, 0xb1, 0x3f, 0xa0, - 0x17, 0xc7, 0x5e, 0x1b, 0xa6, 0x37, 0xde, 0x4d, 0x95, 0x38, 0xc0, 0x2c, 0xde, 0x1f, 0x16, 0xf7, - 0xc7, 0x77, 0x16, 0x8f, 0xc1, 0x0d, 0x4b, 0xd9, 0xe6, 0x27, 0x61, 0xf2, 0x71, 0x97, 0xf8, 0xe2, - 0xfa, 0x60, 0x19, 0xf0, 0x63, 0x12, 0xa6, 0xe7, 0x5a, 0x5e, 0xed, 0x32, 0x85, 0x00, 0x6b, 0xaa, - 0xd1, 0x96, 0x3e, 0x01, 0x71, 0x0e, 0x48, 0x74, 0xb4, 0xe2, 0x04, 0x1a, 0x6d, 0xa1, 0xa7, 0x64, - 0x37, 0xc0, 0x41, 0x97, 0xc5, 0x03, 0x11, 0x72, 0x2f, 0xba, 0x81, 0xc9, 0x1b, 0x8a, 0x5b, 0xe0, - 0xa6, 0x49, 0x9a, 0x5d, 0xdf, 0x0d, 0x4f, 0x10, 0x1b, 0xd2, 0x36, 0x09, 0x11, 0x09, 0xba, 0x2d, - 0xb1, 0x08, 0x21, 0x38, 0x13, 0x33, 0x33, 0xfb, 0x4d, 0xdb, 0x68, 0xcc, 0x17, 0xf1, 0x9f, 0xfd, - 0x2e, 0xda, 0xe0, 0x7a, 0x2f, 0x6f, 0xb4, 0x45, 0xc2, 0xe6, 0x4b, 0xce, 0x3e, 0xea, 0x99, 0x52, - 0x92, 0x67, 0x8e, 0x2c, 0x87, 0xfc, 0xe8, 0x72, 0x28, 0xfe, 0xd3, 0x7b, 0xe0, 0x6a, 0x83, 0xda, - 0x9b, 0x89, 0x36, 0x3a, 0xc4, 0xd8, 0x87, 0x0d, 0x70, 0xb5, 0xeb, 0xe2, 0x3d, 0x56, 0x2a, 0x87, - 0x9b, 0xf4, 0xad, 0x28, 0x35, 0xac, 0x8e, 0x56, 0xd6, 0x95, 0x73, 0xe8, 0x4a, 0xd7, 0x8d, 0xb5, - 0xc2, 0x2f, 0x24, 0xf0, 0xa8, 0xeb, 0x62, 0x8f, 0x57, 0x8e, 0x61, 0x71, 0xb8, 0x24, 0xf8, 0xc0, - 0xc3, 0xa1, 0x87, 0x9d, 0xa8, 0xb4, 0x4e, 0x68, 0xe4, 0x2f, 0x93, 0xca, 0x04, 0x8d, 0xd9, 0xea, - 0xf3, 0xca, 0x39, 0x74, 0xa7, 0xeb, 0xa6, 0xd2, 0xc2, 0xcf, 0x25, 0x70, 0x27, 0x86, 0xce, 0x76, - 0x1c, 0xbc, 0xef, 0xfa, 0x6c, 0x17, 0x10, 0x36, 0xe4, 0xb8, 0xf8, 0x1a, 0xff, 0x30, 0x1d, 0xd7, - 0xf8, 0x7a, 0xbf, 0x72, 0x0e, 0xdd, 0xea, 0x41, 0x4a, 0x24, 0x1b, 0xb6, 0x55, 0x02, 0x9a, 0x96, - 0x1d, 0xf6, 0x66, 0xe7, 0x6c, 0x56, 0x5b, 0xa5, 0x14, 0x17, 0x0e, 0xd8, 0x6a, 0x3c, 0x2d, 0xfc, - 0x75, 0x09, 0xac, 0xc4, 0xd0, 0x05, 0x24, 0xc4, 0xcd, 0x5e, 0x1d, 0x22, 0x0e, 0x58, 0x09, 0x20, - 0xdb, 0xce, 0x2f, 0x6d, 0x7c, 0x37, 0x1d, 0xd4, 0xb8, 0x2a, 0xc6, 0x72, 0x0e, 0xdd, 0xec, 0xa1, - 0x49, 0x20, 0x82, 0xbf, 0x2b, 0x81, 0xbb, 0x31, 0x18, 0xbe, 0xc8, 0x39, 0xd2, 0xc3, 0x08, 0x2f, - 0x46, 0x8c, 0xa0, 0x9c, 0x67, 0x50, 0xfe, 0x7f, 0x3a, 0x94, 0x49, 0xe5, 0x8c, 0xe5, 0x1c, 0x5a, - 0xe9, 0xc1, 0x19, 0x43, 0x18, 0x59, 0xc6, 0x17, 0x05, 0x82, 0xb8, 0x49, 0xe3, 0x09, 0x6e, 0x8a, - 0x02, 0x45, 0x31, 0x5d, 0x17, 0x52, 0x2d, 0x93, 0x52, 0xde, 0xc8, 0x2d, 0x33, 0x9e, 0x08, 0x7e, - 0x06, 0x6e, 0x26, 0xa1, 0x38, 0x3c, 0x11, 0x08, 0x2e, 0x32, 0x04, 0xef, 0x65, 0x47, 0x10, 0xaf, - 0x8f, 0x2c, 0xe7, 0x50, 0x61, 0x44, 0xbb, 0x20, 0x80, 0xbf, 0x04, 0x96, 0x46, 0x35, 0x1f, 0xfa, - 0x6e, 0x27, 0x14, 0xaa, 0x01, 0x53, 0xfd, 0x7e, 0x56, 0xd5, 0x43, 0xd5, 0x95, 0xe5, 0x1c, 0x9a, - 0x1f, 0xd2, 0xdd, 0xa7, 0x80, 0x2d, 0x30, 0xdf, 0x75, 0xb1, 0x23, 0x42, 0x26, 0xdd, 0x5f, 0xfc, - 0x90, 0x38, 0x98, 0x09, 0x2f, 0x5c, 0x62, 0x8a, 0xd7, 0x33, 0x64, 0xec, 0xe3, 0x35, 0x8a, 0xe5, - 0x1c, 0x9a, 0xed, 0xba, 0x89, 0xd5, 0x8b, 0x9f, 0x73, 0xf7, 0xeb, 0xa9, 0xeb, 0x2d, 0xcd, 0x20, - 0x4a, 0xd4, 0x08, 0xcd, 0x97, 0x99, 0xe6, 0xef, 0x64, 0xd0, 0x9c, 0x5c, 0x76, 0xc8, 0x3d, 0x2f, - 0xa5, 0x34, 0xf1, 0x87, 0xcc, 0xf1, 0x7a, 0x60, 0x44, 0x71, 0x4b, 0xc0, 0xeb, 0x54, 0x04, 0x90, - 0x2b, 0x0c, 0xc8, 0xb7, 0xbf, 0x56, 0x95, 0x0b, 0xf7, 0xb9, 0x09, 0x55, 0x49, 0xbf, 0xc5, 0x03, - 0x68, 0x1f, 0x81, 0x38, 0xba, 0xf4, 0xd7, 0x25, 0x07, 0x31, 0xcd, 0x40, 0x3c, 0xcd, 0x02, 0x22, - 0xa9, 0x98, 0xa0, 0x9c, 0x43, 0xcb, 0x31, 0x1c, 0x89, 0xf5, 0x06, 0x7f, 0xc8, 0xa3, 0xe7, 0x28, - 0x94, 0x66, 0x74, 0x8b, 0x8e, 0xdb, 0x61, 0x2b, 0x10, 0x80, 0xae, 0x32, 0x40, 0xff, 0xef, 0x2b, - 0x00, 0x1a, 0x4d, 0xef, 0x97, 0x73, 0xe8, 0xee, 0x28, 0xaa, 0x3e, 0x5d, 0xd8, 0x12, 0x19, 0xce, - 0xbf, 0x93, 0xc0, 0xd3, 0xc1, 0x79, 0x62, 0xc9, 0x61, 0x6c, 0xb3, 0xec, 0x30, 0x76, 0xa2, 0xf4, - 0x30, 0x0e, 0x3d, 0xaf, 0x15, 0x60, 0x97, 0x67, 0xcc, 0x05, 0x52, 0x99, 0x21, 0x7d, 0x96, 0x69, - 0xfe, 0x32, 0x25, 0xe1, 0xcb, 0x39, 0xf4, 0x24, 0x3e, 0xa9, 0xd9, 0x32, 0xf7, 0x3f, 0x93, 0xc0, - 0xbb, 0x99, 0xc6, 0xd0, 0x37, 0x37, 0xc7, 0x7f, 0x8d, 0xe1, 0xdf, 0xfe, 0xda, 0xf8, 0x07, 0x93, - 0x20, 0xe5, 0x1c, 0x5a, 0x4b, 0x03, 0x3f, 0x94, 0x36, 0xf9, 0x63, 0x09, 0x3c, 0x8e, 0x23, 0xb7, - 0xbb, 0xf4, 0xe4, 0xd1, 0x3b, 0x6d, 0xc7, 0x0a, 0x1e, 0x39, 0x60, 0xc8, 0x00, 0x7f, 0x94, 0x01, - 0xf0, 0xa4, 0xb4, 0x76, 0x39, 0x87, 0xee, 0xf7, 0x81, 0x4e, 0x4c, 0x80, 0xff, 0x95, 0x04, 0xd6, - 0x53, 0x3c, 0xd7, 0xb5, 0xdb, 0xf8, 0x90, 0x25, 0xc3, 0x04, 0xc8, 0xeb, 0x0c, 0xe4, 0xe6, 0xd7, - 0xf1, 0xdf, 0xc1, 0xbc, 0x5a, 0x39, 0x87, 0x1e, 0x4d, 0x70, 0x62, 0xdd, 0x6e, 0xc7, 0x93, 0x70, - 0xbf, 0x27, 0x81, 0xfb, 0x71, 0xa8, 0x87, 0xbd, 0x5c, 0xd5, 0xc8, 0xbc, 0xdf, 0x60, 0x08, 0x3f, - 0xc8, 0x80, 0x70, 0x5c, 0xc2, 0xab, 0x9c, 0x43, 0xc5, 0x3e, 0xb4, 0xb1, 0x69, 0xb1, 0x5f, 0x95, - 0xc0, 0xed, 0x38, 0xa6, 0x90, 0x04, 0x21, 0x45, 0xd3, 0x19, 0x88, 0xc7, 0x33, 0xa9, 0xbb, 0xdf, - 0x84, 0xec, 0x53, 0x39, 0x87, 0x96, 0xfa, 0x48, 0x92, 0xd2, 0x53, 0x3e, 0x58, 0x8c, 0x63, 0x88, - 0xce, 0xb9, 0xd1, 0x3e, 0x34, 0x9b, 0x92, 0x72, 0x19, 0x97, 0xfe, 0xe1, 0xdb, 0xee, 0x98, 0xd4, - 0x50, 0x0b, 0x14, 0xba, 0x2e, 0x3d, 0x84, 0xd9, 0x21, 0xc1, 0x1d, 0x72, 0xcc, 0x2e, 0xc8, 0xc4, - 0x8e, 0x3b, 0x97, 0xf2, 0xca, 0x3d, 0x36, 0xf1, 0x52, 0xce, 0xa1, 0x1b, 0x5d, 0x77, 0xb4, 0x13, - 0x9e, 0xb0, 0x4d, 0x7e, 0x58, 0x5b, 0x60, 0x1f, 0x45, 0x2a, 0x0b, 0xa9, 0x16, 0x9e, 0x90, 0xce, - 0xe1, 0x03, 0x4d, 0x26, 0x80, 0x3f, 0x04, 0xcb, 0x49, 0x03, 0x65, 0xe9, 0x1e, 0xa1, 0x7c, 0x3e, - 0x75, 0x83, 0x99, 0x98, 0x2a, 0x2a, 0xe7, 0xd0, 0xc2, 0xf0, 0xa8, 0xfb, 0x24, 0xf0, 0x4f, 0x79, - 0x08, 0x19, 0x46, 0xc0, 0xaf, 0xc4, 0xe2, 0xe9, 0x24, 0x81, 0x66, 0x81, 0xa1, 0x51, 0xb3, 0xa2, - 0x99, 0x90, 0x95, 0x2a, 0xe7, 0xd0, 0xbd, 0x21, 0x60, 0xc9, 0xd4, 0xf0, 0x2f, 0x24, 0xb0, 0x16, - 0x77, 0x41, 0xb7, 0x7f, 0xa9, 0x82, 0xed, 0xe3, 0x00, 0x7b, 0xae, 0xd3, 0x8c, 0x96, 0x85, 0xf0, - 0xca, 0xc5, 0xd4, 0x57, 0x88, 0x6c, 0x9f, 0x06, 0x94, 0x73, 0xe8, 0x61, 0xdf, 0x4b, 0xe3, 0xb4, - 0xc7, 0x81, 0xe1, 0x3a, 0xcd, 0x81, 0xcf, 0x08, 0x7e, 0x2c, 0x81, 0x7b, 0xc9, 0x47, 0x06, 0x27, - 0xc0, 0x84, 0x5d, 0xff, 0x08, 0x78, 0x37, 0x33, 0x1f, 0xa1, 0x92, 0x2b, 0xf6, 0x07, 0x8f, 0x50, - 0x3d, 0x1a, 0x27, 0x88, 0xd7, 0xa7, 0x87, 0xdc, 0xad, 0xe9, 0x7e, 0x1b, 0x7a, 0x98, 0xe7, 0x59, - 0xf8, 0x2c, 0x0a, 0x14, 0x4b, 0xa9, 0x4b, 0x37, 0xb9, 0x04, 0x5c, 0x78, 0x74, 0x72, 0x79, 0xf8, - 0x0f, 0xc0, 0x35, 0x9b, 0x25, 0x7c, 0x70, 0x3f, 0xdd, 0x52, 0xb8, 0xc5, 0x34, 0x8d, 0xbf, 0x20, - 0x4c, 0x4c, 0x4e, 0x96, 0x73, 0x48, 0xb6, 0x87, 0x3a, 0xa2, 0x90, 0x18, 0x77, 0x01, 0x61, 0x59, - 0x76, 0x3c, 0x16, 0x23, 0x5b, 0x4e, 0x5d, 0xb0, 0x13, 0x2e, 0x15, 0x79, 0x48, 0x9c, 0x74, 0xeb, - 0x28, 0x8e, 0xca, 0x09, 0x20, 0x7a, 0xb7, 0x00, 0x1c, 0xc7, 0x4a, 0xea, 0x3c, 0x4f, 0xbe, 0x6b, - 0xe4, 0xf3, 0x9c, 0x72, 0x1f, 0xf9, 0x6b, 0x12, 0x0b, 0x22, 0xd1, 0x7b, 0xe3, 0xa7, 0xf1, 0x8f, - 0xe0, 0xa2, 0x57, 0xc6, 0xdb, 0x59, 0xdf, 0x5e, 0xc7, 0x7d, 0x42, 0x37, 0xf0, 0xf6, 0x9a, 0x40, - 0x04, 0x3f, 0x01, 0x62, 0xb2, 0x30, 0x89, 0x72, 0xb5, 0x85, 0x22, 0xd3, 0xfa, 0xad, 0x94, 0x69, - 0x1f, 0xcc, 0xed, 0x96, 0x73, 0xe8, 0xaa, 0x3d, 0xd8, 0x0e, 0xdb, 0x60, 0x4e, 0xc8, 0xa6, 0x01, - 0x2a, 0x9e, 0xe2, 0x2d, 0xdc, 0x49, 0xb9, 0xa3, 0x1c, 0x9f, 0x69, 0x2d, 0xe7, 0xd0, 0x8c, 0x9d, - 0xd4, 0x0b, 0xf7, 0xc0, 0x4c, 0xff, 0x96, 0x84, 0x07, 0x46, 0x3e, 0x9d, 0x77, 0x99, 0xb2, 0xb7, - 0xc6, 0x2a, 0x4b, 0xb8, 0xc5, 0x2d, 0xe7, 0xd0, 0x75, 0x3f, 0xe1, 0x72, 0xf7, 0x18, 0xdc, 0x1c, - 0x73, 0x8d, 0xc8, 0x55, 0xdd, 0x4b, 0x19, 0xd7, 0xf8, 0xab, 0x4f, 0x1a, 0xf0, 0xf7, 0xc7, 0x5f, - 0x8c, 0xee, 0x01, 0x31, 0x6a, 0x2c, 0x72, 0x03, 0x3e, 0x4f, 0x22, 0x17, 0xee, 0xa7, 0x0c, 0x2e, - 0x21, 0xf1, 0x4c, 0x07, 0x67, 0x27, 0xe4, 0xa3, 0x2b, 0xe0, 0x4a, 0x4f, 0x07, 0x9b, 0xa5, 0x07, - 0x4c, 0xf6, 0xbd, 0x54, 0xd9, 0x94, 0xb8, 0x9c, 0x43, 0x97, 0xed, 0x78, 0xca, 0x78, 0x17, 0xc0, - 0x78, 0x1a, 0x83, 0xcf, 0x48, 0xe1, 0x61, 0x4a, 0xc5, 0xc8, 0x70, 0xca, 0x96, 0x45, 0x93, 0xe1, - 0x34, 0xee, 0x90, 0xe8, 0x2e, 0x4b, 0x2e, 0x16, 0x1e, 0x65, 0x16, 0xcd, 0xb3, 0x91, 0x83, 0xa2, - 0x45, 0x86, 0x72, 0x48, 0xb4, 0xc3, 0x72, 0x3b, 0x85, 0xd5, 0xcc, 0xa2, 0x79, 0x32, 0x68, 0x50, - 0xb4, 0x48, 0x10, 0xb5, 0xc0, 0x7c, 0x5c, 0x34, 0x4f, 0x38, 0x45, 0x76, 0x79, 0x9c, 0x72, 0x2f, - 0x90, 0x9c, 0xb3, 0x2d, 0xe7, 0xd0, 0xac, 0x9d, 0x9c, 0xcd, 0x4d, 0xd6, 0x26, 0x4c, 0xf5, 0xd6, - 0x57, 0xd4, 0xd6, 0x33, 0xd8, 0x88, 0x36, 0x61, 0xb6, 0x64, 0x6d, 0xc2, 0x7a, 0xdf, 0xfa, 0x8a, - 0xda, 0x7a, 0x36, 0x1c, 0xd1, 0x26, 0x2c, 0xd9, 0x06, 0x0b, 0x71, 0x6d, 0x2c, 0x9f, 0x1a, 0xd0, - 0xdd, 0xb2, 0x1b, 0x10, 0xbf, 0xb0, 0x96, 0x59, 0x5d, 0x3c, 0xab, 0x3b, 0xa8, 0x6e, 0x20, 0xdf, - 0xfb, 0xdb, 0x12, 0x28, 0xc6, 0x0f, 0x08, 0xa4, 0xb9, 0xc1, 0x5f, 0x89, 0x3b, 0xf1, 0x6b, 0x96, - 0xc2, 0x7a, 0xea, 0x9d, 0x6c, 0x6a, 0x39, 0x2d, 0xbf, 0x93, 0xed, 0x91, 0x35, 0x47, 0xc9, 0xe0, - 0x2b, 0x30, 0x97, 0x70, 0xc3, 0x42, 0xdc, 0x26, 0x29, 0xbc, 0x9d, 0x7a, 0xc4, 0x1e, 0x53, 0xcc, - 0xca, 0x8f, 0xd8, 0x43, 0x9d, 0x6e, 0x93, 0x0c, 0x2b, 0x8b, 0x8e, 0x9b, 0x9e, 0x43, 0x0a, 0x4f, - 0x32, 0x2b, 0x1b, 0x2a, 0x20, 0x1d, 0x54, 0xd6, 0xef, 0x84, 0xdf, 0x07, 0xd7, 0x42, 0xfb, 0x40, - 0xec, 0x43, 0x84, 0x6e, 0x88, 0xfe, 0x49, 0x61, 0x23, 0x65, 0x2f, 0x4a, 0x4a, 0xad, 0xd0, 0xbd, - 0x28, 0xb4, 0x0f, 0xe2, 0xed, 0x30, 0x04, 0x0b, 0x81, 0x48, 0x86, 0x60, 0x9f, 0x49, 0xc2, 0x07, - 0x84, 0x5d, 0x64, 0x77, 0x5b, 0x61, 0xe1, 0x9d, 0x94, 0x2b, 0xa9, 0x49, 0x79, 0x94, 0x72, 0x0e, - 0xcd, 0x05, 0xc9, 0xfd, 0xc3, 0xcb, 0x42, 0xa4, 0x72, 0xc5, 0x92, 0x7f, 0x37, 0xb3, 0x9f, 0xc6, - 0x0b, 0x00, 0x06, 0xfd, 0x74, 0xa0, 0x34, 0x20, 0x59, 0x9b, 0x58, 0x84, 0xdf, 0xfe, 0x8a, 0xda, - 0x92, 0x16, 0xe1, 0x40, 0xbe, 0x7b, 0x0f, 0xcc, 0x44, 0x8e, 0x71, 0x82, 0xf7, 0x49, 0xd8, 0x7c, - 0x29, 0xf6, 0xc0, 0xf7, 0x52, 0x76, 0xa4, 0x84, 0x64, 0x12, 0xdd, 0x91, 0x9c, 0x84, 0x1c, 0xd3, - 0x4f, 0x86, 0x6e, 0xf3, 0x84, 0x03, 0xf6, 0xf5, 0xf2, 0x77, 0xfc, 0xc2, 0xfb, 0x99, 0x2f, 0xcf, - 0xc6, 0x7f, 0x07, 0x35, 0x78, 0xa5, 0x97, 0x48, 0x07, 0x7f, 0x34, 0xf4, 0x66, 0xff, 0xaa, 0xbb, - 0x47, 0x30, 0x79, 0x35, 0xf4, 0x9a, 0xf0, 0x34, 0xf3, 0x05, 0xe7, 0xe8, 0xe7, 0xa9, 0x83, 0x17, - 0x9c, 0xac, 0xff, 0x55, 0xfc, 0xf5, 0x60, 0xf3, 0x3c, 0x38, 0xcb, 0x24, 0x3d, 0x3b, 0x73, 0x21, - 0x2f, 0x4f, 0x51, 0xe2, 0xde, 0x11, 0x92, 0x3a, 0x74, 0x74, 0xdb, 0xcc, 0x5e, 0x18, 0x56, 0xff, - 0xf6, 0x6a, 0xff, 0x53, 0xff, 0xe8, 0x94, 0x03, 0x6f, 0x83, 0xa5, 0x92, 0x6e, 0xaa, 0xc6, 0x73, - 0x0d, 0x61, 0xa4, 0x99, 0x46, 0x03, 0xa9, 0xc3, 0x1f, 0xea, 0xdd, 0x04, 0x85, 0x51, 0x12, 0x53, - 0x43, 0xcf, 0x35, 0x24, 0x4b, 0x70, 0x05, 0xdc, 0x1c, 0xed, 0xdd, 0x69, 0x6c, 0x6a, 0xa8, 0xa6, - 0x59, 0x9a, 0x29, 0xe7, 0xe1, 0x3b, 0x60, 0x7d, 0x94, 0xa2, 0xa4, 0x58, 0xca, 0xa6, 0x62, 0x6a, - 0xb8, 0x6e, 0x98, 0xd6, 0x36, 0xd2, 0x4c, 0x6c, 0x6a, 0x95, 0x2d, 0x5c, 0x36, 0x4c, 0x4b, 0x2b, - 0xc9, 0x53, 0xf0, 0x6d, 0xf0, 0xd6, 0x04, 0xa6, 0xea, 0xae, 0xf9, 0x71, 0x65, 0x80, 0xe3, 0x0c, - 0xdc, 0x00, 0x6b, 0x93, 0x38, 0x8c, 0xda, 0xb6, 0x51, 0xda, 0x1c, 0xe0, 0x39, 0x0b, 0x1f, 0x83, - 0x07, 0x59, 0xa0, 0xa1, 0x92, 0x29, 0x9f, 0x83, 0x0f, 0xc1, 0xdd, 0x54, 0x48, 0x94, 0xf2, 0x3c, - 0xbc, 0x0f, 0x8a, 0xa3, 0x94, 0x4a, 0xbd, 0x5e, 0xd1, 0x55, 0xc5, 0xd2, 0x8d, 0x1a, 0x2e, 0x5b, - 0x56, 0x5d, 0xbe, 0x00, 0xef, 0x81, 0xdb, 0x93, 0xe9, 0x2c, 0xb5, 0x2e, 0x5f, 0x4c, 0x26, 0x7b, - 0xa1, 0xd7, 0x4a, 0xc6, 0x0b, 0x13, 0x97, 0x34, 0x73, 0xc7, 0x32, 0xea, 0x32, 0x80, 0x6f, 0x81, - 0x87, 0x13, 0xf0, 0x99, 0x1f, 0x57, 0xf8, 0x9c, 0x31, 0x8c, 0x97, 0x52, 0x0c, 0xdc, 0x1f, 0xba, - 0x56, 0x32, 0xcb, 0xfa, 0x96, 0x25, 0x5f, 0x86, 0xef, 0x82, 0xb7, 0x33, 0xc9, 0x8f, 0x9b, 0xf8, - 0x4a, 0x8a, 0x1e, 0xa4, 0x95, 0xf4, 0xc1, 0xa9, 0x9f, 0xce, 0x3a, 0x29, 0xdb, 0x6a, 0x5d, 0xbe, - 0x9a, 0x69, 0x52, 0x28, 0xa5, 0x9c, 0xd9, 0x3c, 0x94, 0xfa, 0x1a, 0xfc, 0x00, 0xbc, 0xff, 0x55, - 0xcc, 0x23, 0xd6, 0x43, 0x45, 0x33, 0x4d, 0x19, 0xc2, 0x6f, 0x81, 0x47, 0x59, 0x98, 0x95, 0x4f, - 0x1a, 0x48, 0x93, 0xaf, 0xc3, 0x07, 0xe0, 0xce, 0x04, 0xf2, 0xd2, 0x6e, 0x4d, 0xa9, 0x1a, 0xa5, - 0x4d, 0xf9, 0x46, 0x8a, 0x8b, 0xab, 0x8a, 0x69, 0x2a, 0xb5, 0x12, 0x52, 0xf0, 0x8e, 0xb6, 0x6b, - 0xd6, 0x15, 0x55, 0x33, 0xe5, 0x99, 0x94, 0x59, 0xeb, 0xf3, 0xc4, 0xe7, 0x60, 0x16, 0x3e, 0x05, - 0xef, 0x4e, 0xe0, 0xd2, 0x2a, 0x8a, 0x69, 0xe9, 0xaa, 0xa9, 0x29, 0x48, 0x2d, 0x0f, 0x70, 0xce, - 0x65, 0x9a, 0x6f, 0xc1, 0xaf, 0xa8, 0x65, 0x4d, 0x2e, 0xa4, 0x58, 0x8b, 0x73, 0x54, 0xb5, 0xaa, - 0x81, 0x76, 0x4b, 0x9b, 0xf2, 0x7c, 0x26, 0x05, 0xcc, 0xb2, 0x98, 0x2b, 0x58, 0x48, 0x19, 0x0c, - 0xe7, 0x50, 0x2b, 0x0d, 0xd3, 0x1a, 0x72, 0xde, 0x45, 0xb8, 0x0a, 0xee, 0xa7, 0x7a, 0x17, 0x9f, - 0xc5, 0x9b, 0x70, 0x0d, 0xac, 0x66, 0xf2, 0x2f, 0x4e, 0xbf, 0x94, 0x32, 0x99, 0x7d, 0xfa, 0xaa, - 0xae, 0x22, 0xc3, 0x34, 0xb6, 0x2c, 0xf9, 0x16, 0x7c, 0x0f, 0x6c, 0x4c, 0x9a, 0x4c, 0x43, 0xdd, - 0x41, 0x86, 0xa2, 0x96, 0x87, 0xe2, 0xdc, 0x72, 0x8a, 0xef, 0x47, 0xb1, 0x51, 0xb1, 0x2a, 0x8a, - 0x29, 0xaf, 0xa4, 0xac, 0x29, 0xb3, 0x66, 0xbc, 0xd8, 0xaa, 0x28, 0x3b, 0x9a, 0x7c, 0x7b, 0x8c, - 0x5c, 0x43, 0x8d, 0x59, 0xb7, 0x64, 0xe2, 0x3a, 0x32, 0xbe, 0xb7, 0x2b, 0x17, 0xc7, 0xb8, 0x62, - 0x9c, 0xba, 0xac, 0x6f, 0x97, 0xb1, 0xf2, 0x5c, 0xd1, 0x2b, 0xca, 0xa6, 0x5e, 0xd1, 0xad, 0x5d, - 0xf9, 0x0e, 0x7c, 0x1f, 0xbc, 0x93, 0xc2, 0xc5, 0x56, 0x88, 0xae, 0x62, 0xa4, 0x6d, 0xeb, 0xa6, - 0x85, 0x58, 0xe8, 0x94, 0xef, 0x26, 0x47, 0x61, 0x53, 0xa9, 0x56, 0xe2, 0x21, 0x56, 0xbe, 0x07, - 0x8b, 0xe0, 0xd6, 0x28, 0x9d, 0xa6, 0x6e, 0xf0, 0x4f, 0xd2, 0x6b, 0xaa, 0x26, 0xdf, 0x1f, 0xe3, - 0x74, 0x86, 0x3a, 0x1c, 0x86, 0x71, 0xcd, 0xa8, 0x61, 0xa5, 0x24, 0x3f, 0x80, 0x77, 0xc1, 0xca, - 0xa4, 0x7d, 0x91, 0x7d, 0xaa, 0xfc, 0x30, 0xd9, 0xf7, 0xe3, 0x3b, 0x80, 0xf2, 0xc2, 0xc4, 0xaa, - 0x51, 0x33, 0x8d, 0x8a, 0x26, 0x3f, 0x5a, 0xfd, 0x33, 0x09, 0x4c, 0x0f, 0xfe, 0xd3, 0x0d, 0x5c, - 0x06, 0x8b, 0x3d, 0x09, 0xa6, 0xa5, 0x58, 0x0d, 0x73, 0x68, 0xfb, 0x5e, 0x04, 0x73, 0xc3, 0x04, - 0x66, 0x43, 0x55, 0x69, 0xa4, 0x92, 0x12, 0x3b, 0x77, 0xf4, 0x7a, 0x5d, 0x2b, 0xc9, 0x79, 0x38, - 0x0f, 0x66, 0x86, 0x3b, 0x35, 0x84, 0x0c, 0x24, 0x4f, 0x25, 0xf1, 0x29, 0x9b, 0x06, 0x62, 0x3b, - 0xf1, 0xea, 0x4f, 0xf3, 0x60, 0x4a, 0xb5, 0x14, 0x78, 0x1d, 0x5c, 0x55, 0x2d, 0x65, 0xf4, 0x3f, - 0x05, 0x68, 0xa3, 0xd2, 0xb0, 0xca, 0x74, 0x60, 0x35, 0x4d, 0xb5, 0x0c, 0x7a, 0x8e, 0x98, 0x03, - 0xd7, 0x59, 0xbb, 0x6a, 0xe9, 0xcf, 0xe9, 0xf1, 0xc2, 0x34, 0x75, 0xa3, 0x46, 0x8f, 0x0f, 0xbd, - 0x0e, 0x0a, 0x19, 0x23, 0xed, 0xe3, 0x86, 0x66, 0x5a, 0xa6, 0x3c, 0x15, 0x75, 0xd4, 0x91, 0x56, - 0xd5, 0x1b, 0x55, 0x6c, 0x36, 0xea, 0x75, 0x03, 0x59, 0xf2, 0x99, 0xa8, 0xc3, 0x42, 0x74, 0x49, - 0x97, 0x70, 0x49, 0x7b, 0xae, 0xd3, 0x58, 0x78, 0x36, 0xd2, 0xdd, 0xa8, 0x6f, 0x23, 0xa5, 0xa4, - 0xe1, 0x4d, 0xa5, 0x56, 0xd3, 0x90, 0x7c, 0x2e, 0x62, 0xd8, 0xd4, 0x2b, 0x15, 0xbd, 0xb6, 0x8d, - 0xcd, 0x46, 0xb5, 0xaa, 0xa0, 0x5d, 0xf9, 0x7c, 0x34, 0x02, 0xa1, 0xbb, 0xa2, 0x9b, 0x96, 0x7c, - 0x81, 0x7d, 0x79, 0xde, 0x6f, 0xac, 0x1a, 0x35, 0xdd, 0x32, 0x90, 0x5e, 0xdb, 0x96, 0x2f, 0xb2, - 0x6f, 0xda, 0x2d, 0x05, 0x6b, 0xdf, 0xb3, 0x34, 0x54, 0x53, 0x2a, 0x58, 0x69, 0x94, 0x74, 0x0b, - 0x9b, 0x96, 0x81, 0x94, 0x6d, 0x4d, 0x06, 0x11, 0x00, 0x63, 0x87, 0xa2, 0x30, 0xa9, 0xed, 0x76, - 0x6b, 0xaa, 0x7c, 0x69, 0xf5, 0x8f, 0xce, 0x81, 0x99, 0xc4, 0x02, 0x4b, 0xba, 0x37, 0xe8, 0x35, - 0x4b, 0xdb, 0xe6, 0x5e, 0x8d, 0xb5, 0x1a, 0x32, 0x2a, 0x15, 0xbc, 0xa3, 0xd7, 0x86, 0xbf, 0xb6, - 0xbf, 0x0d, 0x96, 0xc6, 0x11, 0x9a, 0x15, 0x45, 0xdd, 0x91, 0x25, 0xea, 0x92, 0xe3, 0x48, 0xa8, - 0x9b, 0x19, 0x7a, 0x49, 0x95, 0xf3, 0xf4, 0xb4, 0x31, 0x8e, 0xaa, 0xae, 0x6c, 0x6b, 0xa8, 0xd4, - 0xb0, 0x76, 0xe5, 0xa9, 0x49, 0xfa, 0xb4, 0xaa, 0xa2, 0x57, 0xe4, 0x33, 0xf4, 0x68, 0x38, 0x8e, - 0xe4, 0x99, 0x8e, 0x14, 0xf9, 0x2c, 0xbc, 0x03, 0x96, 0xc7, 0x51, 0x30, 0xf7, 0x42, 0x25, 0xf9, - 0x1c, 0x5d, 0xc7, 0xe3, 0x88, 0xaa, 0x8a, 0x65, 0x69, 0xa8, 0x6a, 0x98, 0x96, 0x7c, 0x7e, 0xd2, - 0xf0, 0xaa, 0x26, 0xb6, 0x34, 0xa5, 0x6a, 0xca, 0x17, 0x26, 0x51, 0x19, 0x75, 0x73, 0x5b, 0xab, - 0xe9, 0x9a, 0x7c, 0x71, 0x12, 0x74, 0x3a, 0x79, 0x32, 0x98, 0x38, 0x38, 0xa5, 0xba, 0x25, 0x5f, - 0x9a, 0x8c, 0x5b, 0x2d, 0xeb, 0x35, 0x0d, 0xeb, 0x25, 0xf9, 0x32, 0xfc, 0x36, 0x78, 0x92, 0x4e, - 0x87, 0xb7, 0x75, 0xab, 0xdc, 0xd8, 0x64, 0xeb, 0x83, 0xae, 0x8b, 0x2b, 0x70, 0x1d, 0x3c, 0xce, - 0xc0, 0xa6, 0xea, 0x48, 0xad, 0x68, 0xaa, 0x2e, 0x4f, 0xd3, 0x58, 0x93, 0x4d, 0x4f, 0x45, 0xd9, - 0x94, 0xaf, 0xd2, 0xfd, 0x2c, 0x03, 0xf9, 0x33, 0xad, 0xb6, 0xa3, 0xd7, 0x4c, 0x59, 0xce, 0x48, - 0xaf, 0xd4, 0x4c, 0x7d, 0xb3, 0xa2, 0xc9, 0xd7, 0x26, 0x99, 0x87, 0xee, 0x7c, 0xba, 0xaa, 0xd5, - 0x8c, 0x17, 0x32, 0x5c, 0xfd, 0x08, 0x9c, 0x17, 0x17, 0xa5, 0x74, 0x9d, 0x6e, 0x69, 0x8a, 0x45, - 0xf7, 0xf6, 0x91, 0x18, 0x17, 0x75, 0x0c, 0xaf, 0x7a, 0x69, 0xf5, 0x4f, 0x24, 0xb0, 0x38, 0xa1, - 0x60, 0x93, 0xda, 0x25, 0x62, 0x46, 0x9a, 0x6a, 0x54, 0xab, 0x5a, 0xad, 0xc4, 0x31, 0x25, 0xc6, - 0xd3, 0x55, 0x70, 0x7f, 0x32, 0x79, 0xcd, 0xb0, 0x38, 0xad, 0x44, 0xc7, 0x38, 0x99, 0xb6, 0x64, - 0xd4, 0x34, 0x39, 0xbf, 0xf9, 0x83, 0xbf, 0xff, 0xf2, 0x96, 0xf4, 0x0f, 0x5f, 0xde, 0x92, 0xfe, - 0xe5, 0xcb, 0x5b, 0xd2, 0x27, 0xc6, 0x81, 0x1b, 0xbe, 0xec, 0xee, 0xad, 0x35, 0xbd, 0xf6, 0xfa, - 0x81, 0x6f, 0x1f, 0xb9, 0x3c, 0x91, 0x66, 0xb7, 0xd6, 0x7b, 0xff, 0x39, 0x68, 0x1f, 0xba, 0xeb, - 0x07, 0xa4, 0xb3, 0xce, 0x8a, 0x6b, 0xd7, 0x0f, 0xbc, 0xa1, 0x3f, 0x21, 0xfc, 0x20, 0xf6, 0x78, - 0xf4, 0x64, 0xef, 0x1c, 0x23, 0x7b, 0xe7, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x4a, 0x6c, 0x77, - 0xb8, 0xb4, 0x50, 0x00, 0x00, + // 4806 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7c, 0xdb, 0x8f, 0xdb, 0x48, + 0x76, 0xb7, 0xa8, 0xf6, 0xf5, 0xb8, 0xdd, 0xa6, 0xcb, 0x76, 0x5b, 0x6d, 0xbb, 0x7d, 0x91, 0xef, + 0xed, 0xd9, 0xee, 0x71, 0xcf, 0xec, 0x8c, 0x77, 0x67, 0xbe, 0x6f, 0xc2, 0xa6, 0xd8, 0x2d, 0xba, + 0x25, 0x51, 0x53, 0xa4, 0xec, 0xed, 0x59, 0x2c, 0x0a, 0x6c, 0xb1, 0xba, 0x4d, 0x58, 0x2d, 0xf6, + 0x90, 0x54, 0x7b, 0x3a, 0x41, 0xb0, 0x9b, 0x2b, 0x82, 0xcc, 0x6e, 0x90, 0x00, 0x41, 0x10, 0x60, + 0x80, 0x20, 0x41, 0x2e, 0xc8, 0x43, 0x80, 0x3c, 0x05, 0xfb, 0x98, 0xec, 0x5b, 0x1e, 0x03, 0x04, + 0x79, 0xca, 0x4b, 0x30, 0xff, 0x40, 0x9e, 0x12, 0x20, 0x41, 0x82, 0x04, 0x55, 0x45, 0x4a, 0x94, + 0x44, 0x89, 0x9c, 0x89, 0x07, 0x0b, 0xb4, 0xdf, 0xc4, 0xaa, 0x73, 0xf9, 0xd5, 0xa9, 0x53, 0xa7, + 0x8a, 0x75, 0x0e, 0x05, 0x0f, 0x43, 0xda, 0xa1, 0xfb, 0x9e, 0x1f, 0xae, 0xf4, 0x02, 0x7b, 0x97, + 0xd2, 0x03, 0xda, 0x0d, 0x83, 0x95, 0x83, 0xc7, 0xc9, 0xc7, 0xe5, 0x7d, 0xdf, 0x0b, 0x3d, 0x74, + 0x39, 0x26, 0x5d, 0x4e, 0xf6, 0x1d, 0x3c, 0x2e, 0x2f, 0x01, 0x6a, 0xe9, 0x6b, 0x76, 0xb7, 0x4b, + 0x7d, 0xb5, 0xe3, 0xb6, 0x5f, 0x6a, 0xac, 0x07, 0x5d, 0x84, 0xe3, 0x76, 0x87, 0xfa, 0x61, 0x49, + 0xba, 0x29, 0x3d, 0x38, 0x8d, 0xc5, 0x43, 0x79, 0x1d, 0x1e, 0xb4, 0x74, 0xa3, 0xbb, 0xed, 0xd9, + 0xbe, 0xa3, 0x7a, 0x7b, 0xfb, 0x1d, 0x1a, 0xd2, 0x0d, 0xcf, 0xf2, 0x2a, 0x76, 0xf0, 0x42, 0x34, + 0x0e, 0x24, 0x5c, 0x81, 0x53, 0xbd, 0x80, 0xfa, 0x5d, 0x7b, 0x8f, 0x46, 0x42, 0xfa, 0xcf, 0xe5, + 0xbb, 0x70, 0xbb, 0x2f, 0x47, 0x71, 0x9c, 0x75, 0xd7, 0x0f, 0x42, 0x4c, 0x03, 0xaf, 0xe7, 0xb7, + 0xe9, 0x40, 0x44, 0x79, 0x29, 0xa1, 0x6e, 0x94, 0xac, 0x66, 0x87, 0x49, 0xc0, 0xe5, 0x8f, 0xe0, + 0x56, 0x9f, 0xd6, 0xa4, 0xa1, 0xea, 0x53, 0x87, 0x76, 0x43, 0xd7, 0xee, 0x98, 0xbd, 0xed, 0x3d, + 0x37, 0xcc, 0xc6, 0x94, 0x14, 0xf0, 0x71, 0x8f, 0x06, 0xa1, 0xeb, 0x75, 0xbb, 0xb6, 0xeb, 0xd3, + 0xbc, 0x02, 0x7e, 0x19, 0xee, 0xf6, 0x05, 0x60, 0xba, 0xeb, 0x06, 0x0c, 0xe0, 0x0b, 0xbb, 0xd3, + 0xa1, 0xdd, 0xdd, 0xbc, 0x42, 0xd0, 0x02, 0x9c, 0xda, 0xdb, 0xb1, 0x49, 0x78, 0xb8, 0x4f, 0x4b, + 0x45, 0xde, 0x77, 0x72, 0x6f, 0xc7, 0xb6, 0x0e, 0xf7, 0x29, 0x5a, 0x04, 0xe8, 0x78, 0xbb, 0x6e, + 0x97, 0xec, 0x74, 0xbc, 0x57, 0xa5, 0x19, 0xde, 0x79, 0x9a, 0xb7, 0xac, 0x77, 0xbc, 0x57, 0x02, + 0x3f, 0xa6, 0x6d, 0xef, 0x80, 0xfa, 0x87, 0xaa, 0xe7, 0xd0, 0x40, 0xf5, 0xba, 0xa1, 0xdb, 0xed, + 0xd1, 0x9c, 0x93, 0xf2, 0x01, 0x2c, 0x8e, 0x09, 0xd8, 0x3f, 0xcc, 0xc9, 0xfc, 0x21, 0x5c, 0x1f, + 0x61, 0x6e, 0xfa, 0x6e, 0x37, 0xcc, 0xc9, 0x5d, 0x06, 0xb9, 0xe2, 0x06, 0x9c, 0xb9, 0x4e, 0x43, + 0xdb, 0xb1, 0x43, 0x1b, 0xcd, 0x41, 0xd1, 0x75, 0x22, 0xca, 0xa2, 0xeb, 0x94, 0x6d, 0x28, 0xc5, + 0x34, 0xb1, 0x0f, 0xf4, 0x69, 0x35, 0x38, 0xe5, 0x47, 0x6d, 0x9c, 0x63, 0x6e, 0xf5, 0xe1, 0xf2, + 0x04, 0x7f, 0x5f, 0x1e, 0x15, 0x82, 0xfb, 0xac, 0xe5, 0x97, 0x80, 0xe2, 0x5e, 0x33, 0xa4, 0xfb, + 0x66, 0x68, 0x87, 0xbd, 0x00, 0x7d, 0x04, 0x27, 0x02, 0xfe, 0x2b, 0x12, 0x7d, 0x3f, 0x53, 0xb4, + 0x60, 0xc4, 0x11, 0x1b, 0x5b, 0x4b, 0xd4, 0xf7, 0x3d, 0x3f, 0x9a, 0x50, 0xf1, 0x50, 0xfe, 0x33, + 0x09, 0xe6, 0x5b, 0x7a, 0x82, 0xc5, 0x0f, 0xa9, 0x23, 0x4c, 0xa5, 0xc1, 0xa9, 0xbd, 0x68, 0x68, + 0x5c, 0xe7, 0x99, 0x1c, 0xc3, 0x89, 0x6d, 0x81, 0xfb, 0xac, 0x48, 0xed, 0x03, 0x2f, 0x72, 0x21, + 0x8f, 0x72, 0x00, 0x8f, 0x47, 0x1d, 0x83, 0x2f, 0xff, 0xb7, 0x04, 0x37, 0x07, 0x30, 0x63, 0xa3, + 0x99, 0xb4, 0x43, 0xdb, 0x6c, 0x85, 0xbc, 0x56, 0xc0, 0xf5, 0xc4, 0x34, 0x0a, 0xc8, 0x8f, 0x73, + 0x4f, 0xe3, 0x40, 0x5c, 0x2c, 0x22, 0x31, 0xfe, 0x99, 0xaf, 0x3f, 0xfe, 0xdf, 0x28, 0xb2, 0x20, + 0x14, 0x13, 0xe8, 0xdd, 0x90, 0xee, 0xfa, 0x36, 0x1b, 0xb9, 0xf2, 0xdc, 0x34, 0xf4, 0x8a, 0xaa, + 0x7a, 0xdd, 0x2e, 0x6d, 0x87, 0x47, 0xde, 0x0e, 0x3f, 0x2d, 0x26, 0xfd, 0xa0, 0x62, 0x87, 0xf6, + 0xb6, 0x1d, 0x50, 0x5c, 0x31, 0xb5, 0xae, 0xef, 0x75, 0x3a, 0x47, 0x7d, 0xfc, 0xe8, 0x09, 0x94, + 0x02, 0xee, 0xf4, 0xd4, 0x21, 0xb1, 0xe4, 0x80, 0xb4, 0xbd, 0x5e, 0x37, 0x2c, 0x1d, 0xbb, 0x29, + 0x3d, 0x98, 0xc1, 0xf3, 0x71, 0x7f, 0x0c, 0x25, 0x50, 0x59, 0x6f, 0xf9, 0x3f, 0x24, 0xb8, 0x36, + 0xb0, 0xdc, 0x66, 0x6f, 0x9b, 0x6a, 0x9b, 0x6f, 0x88, 0xd5, 0xca, 0x4f, 0xa1, 0xd4, 0xd2, 0x55, + 0xbb, 0xd3, 0xb1, 0x3c, 0x85, 0xc7, 0x8b, 0xc4, 0x86, 0xb0, 0x0c, 0x33, 0xed, 0x68, 0xc4, 0x73, + 0xab, 0xd7, 0x26, 0x4a, 0x57, 0x2d, 0x05, 0x33, 0xc2, 0xf2, 0x4f, 0x8e, 0x27, 0xed, 0x58, 0xa1, + 0xfb, 0x1d, 0xef, 0xd0, 0xa4, 0xfe, 0x81, 0xdb, 0xa6, 0x47, 0xde, 0xfb, 0x76, 0xe1, 0xac, 0xc3, + 0x07, 0x4c, 0xf6, 0x68, 0xf8, 0xc2, 0x73, 0xb8, 0xcb, 0xcd, 0xad, 0xae, 0x4d, 0x94, 0x35, 0xcd, + 0x50, 0xcb, 0xa2, 0xa9, 0xce, 0x25, 0xe1, 0x59, 0x27, 0xf1, 0x84, 0x6c, 0x38, 0x13, 0x29, 0xe2, + 0x47, 0x90, 0xe3, 0x5c, 0xcd, 0x2f, 0xfc, 0x5f, 0xd4, 0xb0, 0xb3, 0x0b, 0x06, 0xa7, 0xff, 0xbb, + 0x4c, 0x60, 0x36, 0x09, 0x00, 0x2d, 0xc2, 0x42, 0x45, 0x6b, 0xd6, 0x8c, 0x2d, 0x52, 0xd7, 0xac, + 0xaa, 0x51, 0x21, 0xad, 0x86, 0xd9, 0xd4, 0x54, 0x7d, 0x5d, 0xd7, 0x2a, 0x72, 0x01, 0xcd, 0x03, + 0x1a, 0xee, 0x56, 0x5a, 0x96, 0x21, 0x4b, 0xa8, 0x04, 0x17, 0x87, 0xdb, 0xeb, 0x4a, 0xa3, 0xa5, + 0xd4, 0xe4, 0x62, 0x99, 0x02, 0x0c, 0x54, 0xa3, 0xab, 0x70, 0x39, 0xa2, 0xb3, 0xb6, 0x9a, 0xda, + 0x88, 0xf0, 0xeb, 0x70, 0x25, 0xd9, 0xa9, 0x37, 0x4c, 0x4b, 0xa9, 0xd5, 0x88, 0xa9, 0x62, 0xbd, + 0x69, 0xc9, 0x12, 0xba, 0x02, 0xf3, 0xc9, 0x7e, 0xa5, 0xae, 0x7c, 0x62, 0x34, 0x88, 0xa6, 0x9a, + 0x72, 0xb1, 0xfc, 0xc5, 0x31, 0xb8, 0x33, 0x18, 0xbf, 0xea, 0x53, 0x3b, 0xa4, 0xf1, 0xd3, 0xa1, + 0xea, 0x75, 0x77, 0xdc, 0xdd, 0x23, 0xef, 0x97, 0x1e, 0x9c, 0x6d, 0xf3, 0x91, 0x0e, 0xfb, 0xe5, + 0xd3, 0x1c, 0x0e, 0x33, 0xd9, 0x60, 0xcb, 0xe2, 0x77, 0xec, 0x9f, 0xed, 0xc4, 0x53, 0xf9, 0x2f, + 0x24, 0x98, 0x4d, 0x76, 0x33, 0xef, 0x51, 0x8d, 0xc6, 0xba, 0xbe, 0x91, 0xee, 0x3d, 0x63, 0xdd, + 0xca, 0x73, 0x93, 0x68, 0xea, 0x2a, 0x31, 0xcd, 0xba, 0x2c, 0xb1, 0xf9, 0x4f, 0xef, 0xd6, 0x74, + 0x55, 0x93, 0x8b, 0xe9, 0xec, 0xb8, 0x62, 0x72, 0x17, 0x98, 0x41, 0x0b, 0x70, 0x29, 0x85, 0x7d, + 0xd3, 0x94, 0x8f, 0x95, 0xff, 0x4b, 0x82, 0x1b, 0x29, 0xfb, 0x65, 0xf4, 0x5e, 0x70, 0xe4, 0x03, + 0xff, 0xaf, 0x14, 0x93, 0x8b, 0x23, 0x1e, 0xbe, 0x98, 0xb9, 0x9e, 0x4f, 0xeb, 0x56, 0xcd, 0x3c, + 0xf2, 0x36, 0xf8, 0x9d, 0x22, 0x3c, 0x4e, 0x06, 0xc8, 0xe0, 0x65, 0xe8, 0xed, 0xb3, 0x6d, 0xf0, + 0x80, 0x56, 0x5c, 0x9f, 0xb6, 0x43, 0xcf, 0x3f, 0xb4, 0x3c, 0xaf, 0x13, 0xe8, 0xdd, 0x20, 0xb4, + 0xdf, 0x80, 0xd3, 0xc0, 0xe7, 0x45, 0x58, 0xce, 0x32, 0x48, 0xdf, 0x45, 0x8e, 0xbc, 0x35, 0xfe, + 0xaa, 0x08, 0xf7, 0x06, 0xd6, 0x50, 0x7a, 0xa1, 0x17, 0xff, 0x4e, 0x1c, 0x21, 0x8f, 0xfc, 0x0e, + 0x72, 0x1f, 0xce, 0xa5, 0x1f, 0xa7, 0xe7, 0xfc, 0xe1, 0x63, 0xf4, 0x8f, 0x8a, 0x70, 0x7b, 0x60, + 0x2e, 0x4d, 0x5d, 0xe5, 0xab, 0xa6, 0xfb, 0x26, 0xbd, 0x8b, 0xfe, 0xbb, 0x04, 0x0b, 0xa3, 0x27, + 0x2e, 0xb6, 0x51, 0xbd, 0x61, 0x03, 0x17, 0x27, 0x87, 0x86, 0xe7, 0x1c, 0xfd, 0x18, 0xf1, 0x9b, + 0x45, 0x78, 0x38, 0x65, 0x1b, 0xd5, 0x95, 0x7a, 0xd3, 0xeb, 0xb8, 0xed, 0xc3, 0x23, 0x6f, 0x88, + 0xff, 0x91, 0xa0, 0x3c, 0x30, 0x44, 0xd3, 0x77, 0xbb, 0x6d, 0x77, 0xdf, 0xee, 0x04, 0x6f, 0xce, + 0x76, 0xf1, 0x9f, 0x12, 0x2c, 0x0e, 0x2c, 0x60, 0xd1, 0x20, 0x8c, 0xae, 0x9e, 0xde, 0x84, 0xc8, + 0xf7, 0x6f, 0x12, 0x94, 0x12, 0x01, 0x20, 0x4a, 0x3d, 0x38, 0x47, 0x7e, 0xdc, 0x57, 0x59, 0xdc, + 0x8b, 0xe2, 0x1d, 0x7d, 0x85, 0xbd, 0x4e, 0x32, 0x3d, 0x72, 0x83, 0x39, 0xc4, 0x50, 0xa7, 0x69, + 0x1f, 0x24, 0x09, 0x6e, 0xb1, 0x57, 0x90, 0x61, 0x6e, 0xb6, 0x61, 0x76, 0x12, 0x24, 0x6f, 0xc1, + 0xd2, 0x08, 0xc9, 0x33, 0x97, 0xbe, 0xaa, 0x78, 0xed, 0xde, 0x1e, 0xed, 0x86, 0xf6, 0xf0, 0x95, + 0x4d, 0xf9, 0x6f, 0x24, 0xb8, 0xa4, 0x04, 0x81, 0xcb, 0x7c, 0x8f, 0x4f, 0x41, 0xdf, 0xf7, 0xee, + 0xc3, 0xb9, 0xb6, 0xd7, 0x3d, 0xa0, 0x7e, 0xc0, 0x79, 0x48, 0xff, 0xea, 0x7e, 0x2e, 0xd9, 0xac, + 0x3b, 0xe8, 0x16, 0xcc, 0x86, 0x5e, 0x68, 0x77, 0x48, 0xe8, 0xbd, 0xa4, 0x5d, 0x71, 0x35, 0x3d, + 0x83, 0xcf, 0xf0, 0x36, 0x8b, 0x37, 0xa1, 0xdb, 0x70, 0x76, 0xdf, 0xf7, 0xf6, 0xf6, 0xc3, 0x98, + 0x66, 0x86, 0xd3, 0xcc, 0x8a, 0xc6, 0x88, 0xe8, 0x11, 0x9c, 0x6f, 0xf7, 0x31, 0xc4, 0x84, 0xe2, + 0xe4, 0x20, 0x0f, 0x3a, 0x04, 0x71, 0xf9, 0x1f, 0x25, 0xb8, 0x28, 0x70, 0x6b, 0x9f, 0xd1, 0x76, + 0xef, 0x6b, 0xc0, 0x5e, 0x04, 0xe8, 0x7a, 0x0e, 0x8d, 0x4e, 0x28, 0x02, 0xf4, 0x69, 0xd6, 0xc2, + 0x0f, 0x27, 0x63, 0xa3, 0x9a, 0xc9, 0x31, 0xaa, 0x63, 0x79, 0x47, 0x75, 0x7c, 0xc2, 0xa8, 0x9e, + 0xc0, 0x15, 0x31, 0xa8, 0x06, 0x7d, 0xa5, 0x26, 0xe0, 0xf6, 0xf3, 0x2d, 0x6d, 0x3b, 0xa4, 0xbb, + 0x9e, 0x7f, 0x18, 0xe7, 0x5b, 0xe2, 0xe7, 0xf2, 0x5f, 0x4b, 0x70, 0x41, 0xb0, 0x2a, 0xed, 0x36, + 0x0d, 0x02, 0x4c, 0x3f, 0xed, 0xd1, 0x20, 0x64, 0x18, 0x63, 0xff, 0x15, 0xf7, 0x3f, 0x82, 0x71, + 0x36, 0x6e, 0xe4, 0x17, 0x2a, 0x3f, 0x97, 0x19, 0xfc, 0x42, 0x82, 0xd9, 0x18, 0x31, 0x6b, 0x46, + 0xf3, 0x70, 0xc2, 0xe6, 0xbf, 0x22, 0x8c, 0xd1, 0xd3, 0xcf, 0x07, 0xdd, 0x1d, 0x40, 0xc2, 0x90, + 0x35, 0x37, 0x08, 0x27, 0x66, 0xb0, 0xbe, 0x0f, 0xf2, 0x80, 0x4a, 0xac, 0x39, 0xb4, 0x31, 0x16, + 0xbb, 0x26, 0xc7, 0x89, 0x71, 0x15, 0x83, 0xe8, 0x35, 0x2c, 0xbc, 0xb5, 0xef, 0x7c, 0x73, 0xc2, + 0x2b, 0x94, 0xc5, 0xde, 0xd7, 0x27, 0xdc, 0x86, 0xf9, 0x64, 0xff, 0xde, 0x76, 0x7c, 0xc2, 0xfb, + 0x46, 0x55, 0xbc, 0x6e, 0x13, 0xa5, 0xa8, 0x78, 0xdd, 0x86, 0xfa, 0xc5, 0xa4, 0x8a, 0x0d, 0xdf, + 0xee, 0x86, 0x81, 0xe5, 0xb5, 0x02, 0xea, 0xa3, 0x65, 0xb8, 0xc0, 0x03, 0x13, 0xf1, 0xbd, 0x0e, + 0x0d, 0xc8, 0x2e, 0xeb, 0xa3, 0xc2, 0xf5, 0x8e, 0xe3, 0xf3, 0xbc, 0x8b, 0x85, 0xf6, 0x60, 0x43, + 0x74, 0xa0, 0xb7, 0xe1, 0xa2, 0xa0, 0x0f, 0x7d, 0xdb, 0x0d, 0x07, 0x0c, 0x45, 0xce, 0x80, 0x78, + 0x9f, 0xc5, 0xbb, 0x22, 0x8e, 0xf2, 0x1f, 0xcc, 0x24, 0x95, 0x63, 0x7a, 0xe0, 0xd2, 0x57, 0xaf, + 0x79, 0x96, 0xd0, 0x13, 0x58, 0x70, 0xec, 0xc3, 0x80, 0xec, 0xdb, 0x41, 0x48, 0xba, 0xf4, 0xb3, + 0x90, 0xd8, 0x3d, 0xc7, 0x0d, 0x09, 0x9b, 0xa8, 0x08, 0xda, 0x25, 0x46, 0xd0, 0xb4, 0x59, 0xc8, + 0xfb, 0x2c, 0x54, 0x58, 0x6f, 0x85, 0x41, 0x58, 0x87, 0x1b, 0x7b, 0xdc, 0xe4, 0xc1, 0x0b, 0x77, + 0x9f, 0xf8, 0xf4, 0xd3, 0x9e, 0xeb, 0x53, 0xb6, 0x81, 0x05, 0xa4, 0xfd, 0xc2, 0xee, 0xee, 0x52, + 0x87, 0xaf, 0xf1, 0x53, 0x78, 0x71, 0x40, 0x86, 0x13, 0x54, 0xaa, 0x20, 0x42, 0x4f, 0xa0, 0xe4, + 0xf3, 0xa1, 0x91, 0x1d, 0x26, 0x84, 0x76, 0xdb, 0x87, 0x7d, 0x01, 0xc7, 0xb8, 0x80, 0x79, 0xd1, + 0xbf, 0x1e, 0x77, 0xc7, 0x9c, 0x1f, 0xc2, 0xd5, 0x88, 0xd3, 0xb1, 0x0f, 0x89, 0xb7, 0x43, 0xf6, + 0xbc, 0x6e, 0xf8, 0xa2, 0xcf, 0x7c, 0x9c, 0x33, 0x5f, 0x16, 0x24, 0x15, 0xfb, 0xd0, 0xd8, 0xa9, + 0xb3, 0xfe, 0x98, 0xfb, 0x3b, 0xb0, 0xd0, 0xed, 0x31, 0x60, 0x8c, 0xd3, 0xa7, 0x7b, 0xde, 0x01, + 0x75, 0x48, 0x04, 0xb5, 0x74, 0x82, 0x8f, 0x7c, 0x5e, 0x10, 0x18, 0x3b, 0x58, 0x74, 0x0b, 0x17, + 0x0b, 0xca, 0xbf, 0x2f, 0x8d, 0x4f, 0xcc, 0x6b, 0x76, 0x3c, 0xf4, 0x18, 0x2e, 0xd9, 0xbc, 0x9f, + 0x74, 0xdc, 0x20, 0x24, 0xd1, 0x40, 0x5d, 0x27, 0x4a, 0x68, 0x23, 0x7b, 0x44, 0xbf, 0xee, 0x94, + 0x7f, 0x2c, 0xc1, 0x42, 0x22, 0x59, 0x2a, 0xd2, 0x5d, 0x93, 0x22, 0x23, 0x5a, 0x83, 0x63, 0x2f, + 0xdd, 0xae, 0x90, 0x37, 0xb7, 0xba, 0x3c, 0x11, 0xe5, 0x98, 0xc4, 0x4d, 0xb7, 0xeb, 0x60, 0xce, + 0x8b, 0xae, 0xc2, 0xe9, 0x5e, 0x40, 0x7d, 0xc2, 0x0b, 0x0c, 0x66, 0x06, 0x05, 0x06, 0x0d, 0x7b, + 0x8f, 0x96, 0x3d, 0x76, 0x54, 0x1a, 0xe3, 0xe6, 0x49, 0x77, 0xb1, 0x5b, 0x36, 0xc6, 0x6c, 0xb5, + 0x9a, 0x1f, 0x45, 0xca, 0x5a, 0xf5, 0xe1, 0x66, 0x8a, 0xc2, 0xf8, 0xe0, 0xfa, 0xcd, 0xe8, 0xfc, + 0x67, 0x09, 0x2e, 0xf4, 0xab, 0x68, 0xf8, 0xda, 0x14, 0x7a, 0x72, 0xed, 0xea, 0x89, 0x7b, 0x18, + 0xe2, 0xf9, 0xee, 0xae, 0xdb, 0x8d, 0x66, 0xb7, 0x7f, 0x0f, 0x63, 0xf0, 0x56, 0x74, 0x17, 0xe6, + 0xda, 0x1d, 0xaf, 0xe7, 0x90, 0x7d, 0xdf, 0x3b, 0x70, 0x1d, 0xea, 0x47, 0xc6, 0x3e, 0xcb, 0x5b, + 0x9b, 0x51, 0x23, 0x32, 0xe0, 0x94, 0x13, 0xbd, 0xae, 0xf2, 0xa5, 0x73, 0x66, 0xf5, 0x9d, 0xcc, + 0x03, 0x30, 0x75, 0xe2, 0x37, 0xdc, 0xc1, 0xe8, 0x62, 0x21, 0xe5, 0x67, 0x70, 0x65, 0x32, 0x1d, + 0xba, 0x0c, 0x27, 0x9d, 0xed, 0xe4, 0xe8, 0x4e, 0x38, 0xdb, 0x7c, 0x5c, 0x37, 0xe0, 0x8c, 0xb3, + 0x4d, 0x78, 0x0d, 0x54, 0xdb, 0xeb, 0x44, 0x63, 0x02, 0x67, 0xbb, 0x19, 0xb5, 0x94, 0xff, 0x55, + 0x82, 0x2b, 0xeb, 0xd4, 0x0e, 0x7b, 0x3e, 0xc5, 0xb4, 0xed, 0xed, 0xed, 0xd1, 0xae, 0x93, 0x38, + 0x46, 0x0d, 0xb9, 0x95, 0x34, 0xec, 0x56, 0xe8, 0xbb, 0x70, 0x72, 0x47, 0xb0, 0x46, 0xae, 0x7b, + 0x73, 0xe2, 0x18, 0x63, 0x15, 0x31, 0x03, 0xfa, 0x0c, 0x16, 0xa3, 0x9f, 0xc4, 0x1f, 0xd2, 0x4b, + 0x12, 0xaf, 0x0d, 0x73, 0xab, 0xef, 0x66, 0x4a, 0x1c, 0x62, 0x8e, 0xde, 0x1f, 0xae, 0xee, 0x4c, + 0xee, 0x2c, 0xbf, 0x82, 0x8b, 0x96, 0xb2, 0x21, 0x4e, 0xc2, 0xf4, 0xe3, 0x1e, 0xf5, 0xa3, 0xeb, + 0x83, 0x1b, 0x20, 0x8e, 0x49, 0x84, 0x9d, 0x6b, 0x45, 0xb5, 0xcb, 0x0c, 0x06, 0xde, 0xd4, 0x60, + 0x2d, 0x03, 0x02, 0xea, 0xec, 0xd2, 0xf8, 0x68, 0x25, 0x08, 0x34, 0xd6, 0xc2, 0x4e, 0xc9, 0x6e, + 0x40, 0x82, 0x1e, 0x8f, 0x07, 0x51, 0xc8, 0x3d, 0xed, 0x06, 0xa6, 0x68, 0x28, 0xaf, 0xc3, 0x35, + 0x93, 0xb6, 0x7b, 0xbe, 0x1b, 0x1e, 0x62, 0x3e, 0xa4, 0x0d, 0x1a, 0x62, 0x1a, 0xf4, 0x3a, 0xd1, + 0x22, 0x44, 0x70, 0x2c, 0x61, 0x66, 0xfe, 0x9b, 0xb5, 0xb1, 0x98, 0x1f, 0xc5, 0x7f, 0xfe, 0xbb, + 0x6c, 0xc3, 0x85, 0x7e, 0xde, 0x68, 0x9d, 0x86, 0xed, 0x17, 0x82, 0x7d, 0xdc, 0x33, 0xa5, 0x34, + 0xcf, 0x1c, 0x5b, 0x0e, 0xc5, 0xf1, 0xe5, 0x50, 0xfe, 0xa7, 0xf7, 0xe0, 0x5c, 0x8b, 0xd9, 0x9b, + 0x8b, 0x36, 0xba, 0xd4, 0xd8, 0x41, 0x2d, 0x38, 0xd7, 0x73, 0xc9, 0x36, 0x2f, 0x95, 0x23, 0x6d, + 0xf6, 0x56, 0x94, 0x19, 0x56, 0xc7, 0x2b, 0xeb, 0xaa, 0x05, 0x7c, 0xb6, 0xe7, 0x26, 0x5a, 0xd1, + 0x17, 0x12, 0x3c, 0xec, 0xb9, 0xc4, 0x13, 0x95, 0x63, 0x24, 0x3a, 0x5c, 0x52, 0xb2, 0xeb, 0x91, + 0xd0, 0x23, 0x4e, 0x5c, 0x5a, 0x17, 0x69, 0x14, 0x2f, 0x93, 0xca, 0x14, 0x8d, 0xf9, 0xea, 0xf3, + 0xaa, 0x05, 0x7c, 0xbb, 0xe7, 0x66, 0xd2, 0xa2, 0xcf, 0x25, 0xb8, 0x9d, 0x40, 0x67, 0x3b, 0x0e, + 0xd9, 0x71, 0x7d, 0xbe, 0x0b, 0x44, 0x36, 0x14, 0xb8, 0xc4, 0x1a, 0xff, 0x30, 0x1b, 0xd7, 0xe4, + 0x7a, 0xbf, 0x6a, 0x01, 0x5f, 0xef, 0x43, 0x4a, 0x25, 0x1b, 0xb5, 0x55, 0x0a, 0x9a, 0x8e, 0x1d, + 0xf6, 0x67, 0xe7, 0x78, 0x5e, 0x5b, 0x65, 0x14, 0x17, 0x0e, 0xd9, 0x6a, 0x32, 0x2d, 0xfa, 0x75, + 0x09, 0x6e, 0x26, 0xd0, 0x05, 0x34, 0x24, 0xed, 0x7e, 0x1d, 0x22, 0x09, 0x78, 0x09, 0x20, 0xdf, + 0xce, 0xcf, 0xac, 0x7e, 0x37, 0x1b, 0xd4, 0xa4, 0x2a, 0xc6, 0x6a, 0x01, 0x5f, 0xeb, 0xa3, 0x49, + 0x21, 0x42, 0xbf, 0x2b, 0xc1, 0x9d, 0x04, 0x0c, 0x3f, 0xca, 0x39, 0xb2, 0xc3, 0x88, 0x28, 0x46, + 0x8c, 0xa1, 0x9c, 0xe4, 0x50, 0xfe, 0x7f, 0x36, 0x94, 0x69, 0xe5, 0x8c, 0xd5, 0x02, 0xbe, 0xd9, + 0x87, 0x33, 0x81, 0x30, 0xb6, 0x8c, 0x1f, 0x15, 0x08, 0x92, 0x36, 0x8b, 0x27, 0xa4, 0x1d, 0x15, + 0x28, 0x46, 0xd3, 0x75, 0x2a, 0xd3, 0x32, 0x19, 0xe5, 0x8d, 0xc2, 0x32, 0x93, 0x89, 0xd0, 0x67, + 0x70, 0x2d, 0x0d, 0xc5, 0xfe, 0x61, 0x84, 0xe0, 0x34, 0x47, 0xf0, 0x5e, 0x7e, 0x04, 0xc9, 0xfa, + 0xc8, 0x6a, 0x01, 0x97, 0xc6, 0xb4, 0x47, 0x04, 0xe8, 0x97, 0x60, 0x71, 0x5c, 0xf3, 0xbe, 0xef, + 0x76, 0xc3, 0x48, 0x35, 0x70, 0xd5, 0xef, 0xe7, 0x55, 0x3d, 0x52, 0x5d, 0x59, 0x2d, 0xe0, 0x85, + 0x11, 0xdd, 0x03, 0x0a, 0xd4, 0x81, 0x85, 0x9e, 0x4b, 0x9c, 0x28, 0x64, 0xb2, 0xfd, 0xc5, 0x0f, + 0xa9, 0x43, 0xb8, 0xf0, 0xd2, 0x19, 0xae, 0x78, 0x25, 0x47, 0xc6, 0x3e, 0x59, 0xa3, 0x58, 0x2d, + 0xe0, 0xf9, 0x9e, 0x9b, 0x5a, 0xbd, 0xf8, 0xb9, 0x70, 0xbf, 0xbe, 0xba, 0xfe, 0xd2, 0x0c, 0xe2, + 0x44, 0x4d, 0xa4, 0x79, 0x96, 0x6b, 0xfe, 0x4e, 0x0e, 0xcd, 0xe9, 0x65, 0x87, 0xc2, 0xf3, 0x32, + 0x4a, 0x13, 0x7f, 0xc8, 0x1d, 0xaf, 0x0f, 0x26, 0x2a, 0x6e, 0x09, 0x44, 0x9d, 0x4a, 0x04, 0xe4, + 0x2c, 0x07, 0xf2, 0xed, 0xaf, 0x55, 0xe5, 0x22, 0x7c, 0x6e, 0x4a, 0x55, 0xd2, 0x6f, 0x89, 0x00, + 0x3a, 0x40, 0x10, 0x1d, 0x5d, 0x06, 0xeb, 0x52, 0x80, 0x98, 0xe3, 0x20, 0x9e, 0xe4, 0x01, 0x91, + 0x56, 0x4c, 0x50, 0x2d, 0xe0, 0x1b, 0x09, 0x1c, 0xa9, 0xf5, 0x06, 0x7f, 0x28, 0xa2, 0xe7, 0x38, + 0x94, 0x76, 0x7c, 0x8b, 0x4e, 0xf6, 0xc2, 0x4e, 0x10, 0x01, 0x3a, 0xc7, 0x01, 0xfd, 0xbf, 0xaf, + 0x00, 0x68, 0x3c, 0xbd, 0x5f, 0x2d, 0xe0, 0x3b, 0xe3, 0xa8, 0x06, 0x74, 0x61, 0x27, 0xca, 0x70, + 0xfe, 0x4c, 0x82, 0x27, 0xc3, 0xf3, 0xc4, 0x93, 0xc3, 0xc4, 0xe6, 0xd9, 0x61, 0xe2, 0xc4, 0xe9, + 0x61, 0x12, 0x7a, 0x5e, 0x27, 0x20, 0xae, 0xc8, 0x98, 0x47, 0x48, 0x65, 0x8e, 0xf4, 0x69, 0xae, + 0xf9, 0xcb, 0x95, 0x84, 0xaf, 0x16, 0xf0, 0xe3, 0xe4, 0xa4, 0xe6, 0xcb, 0xdc, 0xff, 0x54, 0x82, + 0x77, 0x73, 0x8d, 0x61, 0x60, 0x6e, 0x81, 0xff, 0x3c, 0xc7, 0xbf, 0xf1, 0xb5, 0xf1, 0x0f, 0x27, + 0x41, 0xaa, 0x05, 0xbc, 0x9c, 0x05, 0x7e, 0x24, 0x6d, 0xf2, 0x47, 0x12, 0x3c, 0x4a, 0x22, 0xb7, + 0x7b, 0xec, 0xe4, 0xd1, 0x3f, 0x6d, 0x27, 0x0a, 0x1e, 0x05, 0x60, 0xc4, 0x01, 0x7f, 0x94, 0x03, + 0xf0, 0xb4, 0xb4, 0x76, 0xb5, 0x80, 0xef, 0x0d, 0x80, 0x4e, 0x4d, 0x80, 0xff, 0xa5, 0x04, 0x2b, + 0x19, 0x9e, 0xeb, 0xda, 0x7b, 0x64, 0x9f, 0x27, 0xc3, 0x22, 0x90, 0x17, 0x38, 0xc8, 0xb5, 0xaf, + 0xe3, 0xbf, 0xc3, 0x79, 0xb5, 0x6a, 0x01, 0x3f, 0x9c, 0xe2, 0xc4, 0xba, 0xbd, 0x97, 0x4c, 0xc2, + 0xfd, 0x9e, 0x04, 0xf7, 0x92, 0x50, 0xf7, 0xfb, 0xb9, 0xaa, 0xb1, 0x79, 0xbf, 0xc8, 0x11, 0x7e, + 0x90, 0x03, 0xe1, 0xa4, 0x84, 0x57, 0xb5, 0x80, 0xcb, 0x03, 0x68, 0x13, 0xd3, 0x62, 0xbf, 0x2a, + 0xc1, 0xad, 0x24, 0xa6, 0x90, 0x06, 0x21, 0x43, 0xd3, 0x1d, 0x8a, 0xc7, 0x97, 0x32, 0x77, 0xbf, + 0x29, 0xd9, 0xa7, 0x6a, 0x01, 0x2f, 0x0e, 0x90, 0xa4, 0xa5, 0xa7, 0x7c, 0xb8, 0x9a, 0xc4, 0x10, + 0x9f, 0x73, 0xe3, 0x7d, 0x68, 0x3e, 0x23, 0xe5, 0x32, 0x29, 0xfd, 0x23, 0xb6, 0xdd, 0x09, 0xa9, + 0xa1, 0x0e, 0x94, 0x7a, 0x2e, 0x3b, 0x84, 0xd9, 0x21, 0x25, 0x5d, 0xfa, 0x8a, 0x5f, 0x90, 0x45, + 0x3b, 0xee, 0xe5, 0x8c, 0x57, 0xee, 0x89, 0x89, 0x97, 0x6a, 0x01, 0x5f, 0xec, 0xb9, 0xe3, 0x9d, + 0xe8, 0x90, 0x6f, 0xf2, 0xa3, 0xda, 0x02, 0xfb, 0x20, 0x56, 0x59, 0xca, 0xb4, 0xf0, 0x94, 0x74, + 0x8e, 0x18, 0x68, 0x3a, 0x01, 0xfa, 0x21, 0xdc, 0x48, 0x1b, 0x28, 0x4f, 0xf7, 0x44, 0xca, 0x17, + 0x32, 0x37, 0x98, 0xa9, 0xa9, 0xa2, 0x6a, 0x01, 0x5f, 0x19, 0x1d, 0xf5, 0x80, 0x04, 0xfd, 0x89, + 0x08, 0x21, 0xa3, 0x08, 0xc4, 0x95, 0x58, 0x32, 0x9d, 0x14, 0xa1, 0xb9, 0xc2, 0xd1, 0xa8, 0x79, + 0xd1, 0x4c, 0xc9, 0x4a, 0x55, 0x0b, 0xf8, 0xee, 0x08, 0xb0, 0x74, 0x6a, 0xf4, 0xe7, 0x12, 0x2c, + 0x27, 0x5d, 0xd0, 0x1d, 0x5c, 0xaa, 0x10, 0xfb, 0x55, 0x40, 0x3c, 0xd7, 0x69, 0xc7, 0xcb, 0x22, + 0xf2, 0xca, 0xab, 0x99, 0xaf, 0x10, 0xf9, 0x3e, 0x0d, 0xa8, 0x16, 0xf0, 0x83, 0x81, 0x97, 0x26, + 0x69, 0x5f, 0x05, 0x86, 0xeb, 0xb4, 0x87, 0x3e, 0x23, 0xf8, 0xb1, 0x04, 0x77, 0xd3, 0x8f, 0x0c, + 0x4e, 0x40, 0x28, 0xbf, 0xfe, 0x89, 0xe0, 0x5d, 0xcb, 0x7d, 0x84, 0x4a, 0xaf, 0xd8, 0x1f, 0x3e, + 0x42, 0xf5, 0x69, 0x9c, 0x20, 0x59, 0x9f, 0x1e, 0x0a, 0xb7, 0x66, 0xfb, 0x6d, 0xe8, 0x11, 0x91, + 0x67, 0x11, 0xb3, 0x18, 0xa1, 0x58, 0xcc, 0x5c, 0xba, 0xe9, 0x25, 0xe0, 0x91, 0x47, 0xa7, 0x97, + 0x87, 0xff, 0x00, 0xce, 0xdb, 0x3c, 0xe1, 0x43, 0x06, 0xe9, 0x96, 0xd2, 0x75, 0xae, 0x69, 0xf2, + 0x05, 0x61, 0x6a, 0x72, 0xb2, 0x5a, 0xc0, 0xb2, 0x3d, 0xd2, 0x11, 0x87, 0xc4, 0xa4, 0x0b, 0x44, + 0x96, 0xe5, 0xc7, 0xe3, 0x68, 0x64, 0x37, 0x32, 0x17, 0xec, 0x94, 0x4b, 0x45, 0x11, 0x12, 0xa7, + 0xdd, 0x3a, 0x46, 0x47, 0xe5, 0x14, 0x10, 0xfd, 0x5b, 0x00, 0x81, 0xe3, 0x66, 0xe6, 0x3c, 0x4f, + 0xbf, 0x6b, 0x14, 0xf3, 0x9c, 0x71, 0x1f, 0xf9, 0x6b, 0x12, 0x0f, 0x22, 0xf1, 0x7b, 0xe3, 0xa7, + 0xc9, 0x8f, 0xe0, 0xe2, 0x57, 0xc6, 0x5b, 0x79, 0xdf, 0x5e, 0x27, 0x7d, 0x42, 0x37, 0xf4, 0xf6, + 0x9a, 0x42, 0x84, 0x3e, 0x81, 0x68, 0xb2, 0x08, 0x8d, 0x73, 0xb5, 0xa5, 0x32, 0xd7, 0xfa, 0xad, + 0x8c, 0x69, 0x1f, 0xce, 0xed, 0x56, 0x0b, 0xf8, 0x9c, 0x3d, 0xdc, 0x8e, 0xf6, 0xe0, 0x72, 0x24, + 0x9b, 0x05, 0xa8, 0x64, 0x8a, 0xb7, 0x74, 0x3b, 0xe3, 0x8e, 0x72, 0x72, 0xa6, 0xb5, 0x5a, 0xc0, + 0x97, 0xec, 0xb4, 0x5e, 0xb4, 0x0d, 0x97, 0x06, 0xb7, 0x24, 0x22, 0x30, 0x8a, 0xe9, 0xbc, 0xc3, + 0x95, 0xbd, 0x35, 0x51, 0x59, 0xca, 0x2d, 0x6e, 0xb5, 0x80, 0x2f, 0xf8, 0x29, 0x97, 0xbb, 0xaf, + 0xe0, 0xda, 0x84, 0x6b, 0x44, 0xa1, 0xea, 0x6e, 0xc6, 0xb8, 0x26, 0x5f, 0x7d, 0xb2, 0x80, 0xbf, + 0x33, 0xf9, 0x62, 0x74, 0x1b, 0xa2, 0x51, 0x93, 0x28, 0x37, 0xe0, 0x8b, 0x24, 0x72, 0xe9, 0x5e, + 0xc6, 0xe0, 0x52, 0x12, 0xcf, 0x6c, 0x70, 0x76, 0x4a, 0x3e, 0xba, 0x06, 0x67, 0xfb, 0x3a, 0xf8, + 0x2c, 0xdd, 0xe7, 0xb2, 0xef, 0x66, 0xca, 0x66, 0xc4, 0xd5, 0x02, 0x9e, 0xb5, 0x93, 0x29, 0xe3, + 0x2d, 0x40, 0xc9, 0x34, 0x86, 0x98, 0x91, 0xd2, 0x83, 0x8c, 0x8a, 0x91, 0xd1, 0x94, 0x2d, 0x8f, + 0x26, 0xa3, 0x69, 0xdc, 0x11, 0xd1, 0x3d, 0x9e, 0x5c, 0x2c, 0x3d, 0xcc, 0x2d, 0x5a, 0x64, 0x23, + 0x87, 0x45, 0x47, 0x19, 0xca, 0x11, 0xd1, 0x0e, 0xcf, 0xed, 0x94, 0x96, 0x72, 0x8b, 0x16, 0xc9, + 0xa0, 0x61, 0xd1, 0x51, 0x82, 0xa8, 0x03, 0x0b, 0x49, 0xd1, 0x22, 0xe1, 0x14, 0xdb, 0xe5, 0x51, + 0xc6, 0xbd, 0x40, 0x7a, 0xce, 0xb6, 0x5a, 0xc0, 0xf3, 0x76, 0x7a, 0x36, 0x37, 0x5d, 0x5b, 0x64, + 0xaa, 0xb7, 0xbe, 0xa2, 0xb6, 0xbe, 0xc1, 0xc6, 0xb4, 0x45, 0x66, 0x4b, 0xd7, 0x16, 0x59, 0xef, + 0x5b, 0x5f, 0x51, 0x5b, 0xdf, 0x86, 0x63, 0xda, 0x22, 0x4b, 0xee, 0xc1, 0x95, 0xa4, 0x36, 0x9e, + 0x4f, 0x0d, 0xd8, 0x6e, 0xd9, 0x0b, 0xa8, 0x5f, 0x5a, 0xce, 0xad, 0x2e, 0x99, 0xd5, 0x1d, 0x56, + 0x37, 0x94, 0xef, 0xfd, 0x6d, 0x09, 0xca, 0xc9, 0x03, 0x02, 0x6d, 0xaf, 0x8a, 0x57, 0xe2, 0x6e, + 0xf2, 0x9a, 0xa5, 0xb4, 0x92, 0x79, 0x27, 0x9b, 0x59, 0x4e, 0x2b, 0xee, 0x64, 0xfb, 0x64, 0xed, + 0x71, 0x32, 0xf4, 0x12, 0x2e, 0xa7, 0xdc, 0xb0, 0x50, 0xb7, 0x4d, 0x4b, 0x6f, 0x67, 0x1e, 0xb1, + 0x27, 0x14, 0xb3, 0x8a, 0x23, 0xf6, 0x48, 0xa7, 0xdb, 0xa6, 0xa3, 0xca, 0xe2, 0xe3, 0xa6, 0xe7, + 0xd0, 0xd2, 0xe3, 0xdc, 0xca, 0x46, 0x0a, 0x48, 0x87, 0x95, 0x0d, 0x3a, 0xd1, 0xf7, 0xe1, 0x7c, + 0x68, 0xef, 0x46, 0xfb, 0x10, 0x65, 0x1b, 0xa2, 0x7f, 0x58, 0x5a, 0xcd, 0xd8, 0x8b, 0xd2, 0x52, + 0x2b, 0x6c, 0x2f, 0x0a, 0xed, 0xdd, 0x64, 0x3b, 0x0a, 0xe1, 0x4a, 0x10, 0x25, 0x43, 0x88, 0xcf, + 0x25, 0x91, 0x5d, 0xca, 0x2f, 0xb2, 0x7b, 0x9d, 0xb0, 0xf4, 0x4e, 0xc6, 0x95, 0xd4, 0xb4, 0x3c, + 0x4a, 0xb5, 0x80, 0x2f, 0x07, 0xe9, 0xfd, 0xa3, 0xcb, 0x22, 0x4a, 0xe5, 0x46, 0x4b, 0xfe, 0xdd, + 0xdc, 0x7e, 0x9a, 0x2c, 0x00, 0x18, 0xf6, 0xd3, 0xa1, 0xd2, 0x80, 0x74, 0x6d, 0xd1, 0x22, 0xfc, + 0xf6, 0x57, 0xd4, 0x96, 0xb6, 0x08, 0x87, 0xf2, 0xdd, 0xdb, 0x70, 0x29, 0x76, 0x8c, 0x43, 0xb2, + 0x43, 0xc3, 0xf6, 0x8b, 0x68, 0x0f, 0x7c, 0x2f, 0x63, 0x47, 0x4a, 0x49, 0x26, 0xb1, 0x1d, 0xc9, + 0x49, 0xc9, 0x31, 0xfd, 0x64, 0xe4, 0x36, 0x2f, 0x72, 0xc0, 0x81, 0x5e, 0xf1, 0x8e, 0x5f, 0x7a, + 0x3f, 0xf7, 0xe5, 0xd9, 0xe4, 0xef, 0xa0, 0x86, 0xaf, 0xf4, 0x52, 0xe9, 0xd0, 0x8f, 0x46, 0xde, + 0xec, 0x5f, 0xf6, 0xb6, 0x29, 0xa1, 0x2f, 0x47, 0x5e, 0x13, 0x9e, 0xe4, 0xbe, 0xe0, 0x1c, 0xff, + 0x3c, 0x75, 0xf8, 0x82, 0x93, 0xf7, 0xbf, 0x4c, 0xbe, 0x1e, 0xac, 0x9d, 0x84, 0xe3, 0x5c, 0xd2, + 0xd3, 0x63, 0xa7, 0x8a, 0xf2, 0x0c, 0x23, 0xee, 0x1f, 0x21, 0x99, 0x43, 0xc7, 0xb7, 0xcd, 0xfc, + 0x85, 0x61, 0xe9, 0xef, 0xce, 0x0d, 0x3e, 0xf5, 0x8f, 0x4f, 0x39, 0xe8, 0x16, 0x2c, 0x56, 0x74, + 0x53, 0x35, 0x9e, 0x69, 0x98, 0x60, 0xcd, 0x34, 0x5a, 0x58, 0x1d, 0xfd, 0x50, 0xef, 0x1a, 0x94, + 0xc6, 0x49, 0x4c, 0x0d, 0x3f, 0xd3, 0xb0, 0x2c, 0xa1, 0x9b, 0x70, 0x6d, 0xbc, 0x77, 0xb3, 0xb5, + 0xa6, 0xe1, 0x86, 0x66, 0x69, 0xa6, 0x5c, 0x44, 0xef, 0xc0, 0xca, 0x38, 0x45, 0x45, 0xb1, 0x94, + 0x35, 0xc5, 0xd4, 0x48, 0xd3, 0x30, 0xad, 0x0d, 0xac, 0x99, 0xc4, 0xd4, 0x6a, 0xeb, 0xa4, 0x6a, + 0x98, 0x96, 0x56, 0x91, 0x67, 0xd0, 0xdb, 0xf0, 0xd6, 0x14, 0xa6, 0xfa, 0x96, 0xf9, 0x71, 0x6d, + 0x88, 0xe3, 0x18, 0x5a, 0x85, 0xe5, 0x69, 0x1c, 0x46, 0x63, 0xc3, 0xa8, 0xac, 0x0d, 0xf1, 0x1c, + 0x47, 0x8f, 0xe0, 0x7e, 0x1e, 0x68, 0xb8, 0x62, 0xca, 0x27, 0xd0, 0x03, 0xb8, 0x93, 0x09, 0x89, + 0x51, 0x9e, 0x44, 0xf7, 0xa0, 0x3c, 0x4e, 0xa9, 0x34, 0x9b, 0x35, 0x5d, 0x55, 0x2c, 0xdd, 0x68, + 0x90, 0xaa, 0x65, 0x35, 0xe5, 0x53, 0xe8, 0x2e, 0xdc, 0x9a, 0x4e, 0x67, 0xa9, 0x4d, 0xf9, 0x74, + 0x3a, 0xd9, 0x73, 0xbd, 0x51, 0x31, 0x9e, 0x9b, 0xa4, 0xa2, 0x99, 0x9b, 0x96, 0xd1, 0x94, 0x01, + 0xbd, 0x05, 0x0f, 0xa6, 0xe0, 0x33, 0x3f, 0xae, 0x89, 0x39, 0xe3, 0x18, 0xcf, 0x64, 0x18, 0x78, + 0x30, 0x74, 0xad, 0x62, 0x56, 0xf5, 0x75, 0x4b, 0x9e, 0x45, 0xef, 0xc2, 0xdb, 0xb9, 0xe4, 0x27, + 0x4d, 0x7c, 0x36, 0x43, 0x0f, 0xd6, 0x2a, 0xfa, 0xf0, 0xd4, 0xcf, 0xe5, 0x9d, 0x94, 0x0d, 0xb5, + 0x29, 0x9f, 0xcb, 0x35, 0x29, 0x8c, 0x52, 0xce, 0x6d, 0x1e, 0x46, 0x7d, 0x1e, 0x7d, 0x00, 0xef, + 0x7f, 0x15, 0xf3, 0x44, 0xeb, 0xa1, 0xa6, 0x99, 0xa6, 0x8c, 0xd0, 0xb7, 0xe0, 0x61, 0x1e, 0x66, + 0xe5, 0x93, 0x16, 0xd6, 0xe4, 0x0b, 0xe8, 0x3e, 0xdc, 0x9e, 0x42, 0x5e, 0xd9, 0x6a, 0x28, 0x75, + 0xa3, 0xb2, 0x26, 0x5f, 0xcc, 0x70, 0x71, 0x55, 0x31, 0x4d, 0xa5, 0x51, 0xc1, 0x0a, 0xd9, 0xd4, + 0xb6, 0xcc, 0xa6, 0xa2, 0x6a, 0xa6, 0x7c, 0x29, 0x63, 0xd6, 0x06, 0x3c, 0xc9, 0x39, 0x98, 0x47, + 0x4f, 0xe0, 0xdd, 0x29, 0x5c, 0x5a, 0x4d, 0x31, 0x2d, 0x5d, 0x35, 0x35, 0x05, 0xab, 0xd5, 0x21, + 0xce, 0xcb, 0xb9, 0xe6, 0x3b, 0xe2, 0x57, 0xd4, 0xaa, 0x26, 0x97, 0x32, 0xac, 0x25, 0x38, 0xea, + 0x5a, 0xdd, 0xc0, 0x5b, 0x95, 0x35, 0x79, 0x21, 0x97, 0x02, 0x6e, 0x59, 0x22, 0x14, 0x5c, 0xc9, + 0x18, 0x8c, 0xe0, 0x50, 0x6b, 0x2d, 0xd3, 0x1a, 0x71, 0xde, 0xab, 0x68, 0x09, 0xee, 0x65, 0x7a, + 0x97, 0x98, 0xc5, 0x6b, 0x68, 0x19, 0x96, 0x72, 0xf9, 0x97, 0xa0, 0x5f, 0xcc, 0x98, 0xcc, 0x01, + 0x7d, 0x5d, 0x57, 0xb1, 0x61, 0x1a, 0xeb, 0x96, 0x7c, 0x1d, 0xbd, 0x07, 0xab, 0xd3, 0x26, 0xd3, + 0x50, 0x37, 0xb1, 0xa1, 0xa8, 0xd5, 0x91, 0x38, 0x77, 0x23, 0xc3, 0xf7, 0xe3, 0xd8, 0xa8, 0x58, + 0x35, 0xc5, 0x94, 0x6f, 0x66, 0xac, 0x29, 0xb3, 0x61, 0x3c, 0x5f, 0xaf, 0x29, 0x9b, 0x9a, 0x7c, + 0x6b, 0x82, 0x5c, 0x43, 0x4d, 0x58, 0xb7, 0x62, 0x92, 0x26, 0x36, 0xbe, 0xb7, 0x25, 0x97, 0x27, + 0xb8, 0x62, 0x92, 0xba, 0xaa, 0x6f, 0x54, 0x89, 0xf2, 0x4c, 0xd1, 0x6b, 0xca, 0x9a, 0x5e, 0xd3, + 0xad, 0x2d, 0xf9, 0x36, 0x7a, 0x1f, 0xde, 0xc9, 0xe0, 0xe2, 0x2b, 0x44, 0x57, 0x09, 0xd6, 0x36, + 0x74, 0xd3, 0xc2, 0x3c, 0x74, 0xca, 0x77, 0xd2, 0xa3, 0xb0, 0xa9, 0xd4, 0x6b, 0xc9, 0x10, 0x2b, + 0xdf, 0x45, 0x65, 0xb8, 0x3e, 0x4e, 0xa7, 0xa9, 0xab, 0xe2, 0x93, 0xf4, 0x86, 0xaa, 0xc9, 0xf7, + 0x26, 0x38, 0x9d, 0xa1, 0x8e, 0x86, 0x61, 0xd2, 0x30, 0x1a, 0x44, 0xa9, 0xc8, 0xf7, 0xd1, 0x1d, + 0xb8, 0x39, 0x6d, 0x5f, 0xe4, 0x9f, 0x2a, 0x3f, 0x48, 0xf7, 0xfd, 0xe4, 0x0e, 0xa0, 0x3c, 0x37, + 0x89, 0x6a, 0x34, 0x4c, 0xa3, 0xa6, 0xc9, 0x0f, 0x97, 0xfe, 0x54, 0x82, 0xb9, 0xe1, 0x7f, 0xba, + 0x41, 0x37, 0xe0, 0x6a, 0x5f, 0x82, 0x69, 0x29, 0x56, 0xcb, 0x1c, 0xd9, 0xbe, 0xaf, 0xc2, 0xe5, + 0x51, 0x02, 0xb3, 0xa5, 0xaa, 0x2c, 0x52, 0x49, 0xa9, 0x9d, 0x9b, 0x7a, 0xb3, 0xa9, 0x55, 0xe4, + 0x22, 0x5a, 0x80, 0x4b, 0xa3, 0x9d, 0x1a, 0xc6, 0x06, 0x96, 0x67, 0xd2, 0xf8, 0x94, 0x35, 0x03, + 0xf3, 0x9d, 0x78, 0xe9, 0x67, 0x45, 0x98, 0x51, 0x2d, 0x05, 0x5d, 0x80, 0x73, 0xaa, 0xa5, 0x8c, + 0xff, 0xa7, 0x00, 0x6b, 0x54, 0x5a, 0x56, 0x95, 0x0d, 0xac, 0xa1, 0xa9, 0x96, 0xc1, 0xce, 0x11, + 0x97, 0xe1, 0x02, 0x6f, 0x57, 0x2d, 0xfd, 0x19, 0x3b, 0x5e, 0x98, 0xa6, 0x6e, 0x34, 0xd8, 0xf1, + 0xa1, 0xdf, 0xc1, 0x20, 0x13, 0xac, 0x7d, 0xdc, 0xd2, 0x4c, 0xcb, 0x94, 0x67, 0xe2, 0x8e, 0x26, + 0xd6, 0xea, 0x7a, 0xab, 0x4e, 0xcc, 0x56, 0xb3, 0x69, 0x60, 0x4b, 0x3e, 0x16, 0x77, 0x58, 0x98, + 0x2d, 0xe9, 0x0a, 0xa9, 0x68, 0xcf, 0x74, 0x16, 0x0b, 0x8f, 0xc7, 0xba, 0x5b, 0xcd, 0x0d, 0xac, + 0x54, 0x34, 0xb2, 0xa6, 0x34, 0x1a, 0x1a, 0x96, 0x4f, 0xc4, 0x0c, 0x6b, 0x7a, 0xad, 0xa6, 0x37, + 0x36, 0x88, 0xd9, 0xaa, 0xd7, 0x15, 0xbc, 0x25, 0x9f, 0x8c, 0x47, 0x10, 0xe9, 0xae, 0xe9, 0xa6, + 0x25, 0x9f, 0xe2, 0x5f, 0x9e, 0x0f, 0x1a, 0xeb, 0x46, 0x43, 0xb7, 0x0c, 0xac, 0x37, 0x36, 0xe4, + 0xd3, 0xfc, 0x9b, 0x76, 0x4b, 0x21, 0xda, 0xf7, 0x2c, 0x0d, 0x37, 0x94, 0x1a, 0x51, 0x5a, 0x15, + 0xdd, 0x22, 0xa6, 0x65, 0x60, 0x65, 0x43, 0x93, 0x21, 0x06, 0x60, 0x6c, 0x32, 0x14, 0x26, 0xb3, + 0xdd, 0x56, 0x43, 0x95, 0xcf, 0x20, 0x19, 0x66, 0x39, 0x5f, 0xc3, 0xc2, 0x0a, 0xd1, 0x2b, 0xf2, + 0xec, 0xd2, 0xdf, 0x9e, 0x80, 0x4b, 0xa9, 0x25, 0x97, 0x6c, 0xb7, 0xd0, 0x1b, 0x96, 0xb6, 0x21, + 0xfc, 0x9c, 0x68, 0x0d, 0x6c, 0xd4, 0x6a, 0x64, 0x53, 0x6f, 0x8c, 0x7e, 0x7f, 0x7f, 0x0b, 0x16, + 0x27, 0x11, 0x9a, 0x35, 0x45, 0xdd, 0x94, 0x25, 0xe6, 0xa4, 0x93, 0x48, 0x98, 0xe3, 0x19, 0x7a, + 0x45, 0x95, 0x8b, 0xec, 0xfc, 0x31, 0x89, 0xaa, 0xa9, 0x6c, 0x68, 0xb8, 0xd2, 0xb2, 0xb6, 0xe4, + 0x99, 0x69, 0xfa, 0xb4, 0xba, 0xa2, 0xd7, 0xe4, 0x63, 0xec, 0xb0, 0x38, 0x89, 0xe4, 0xa9, 0x8e, + 0x15, 0xf9, 0x38, 0xba, 0x0d, 0x37, 0x26, 0x51, 0x70, 0x87, 0xc3, 0x15, 0xf9, 0x04, 0x5b, 0xd9, + 0x93, 0x88, 0xea, 0x8a, 0x65, 0x69, 0xb8, 0x6e, 0x98, 0x96, 0x7c, 0x72, 0xda, 0xf0, 0xea, 0x26, + 0xb1, 0x34, 0xa5, 0x6e, 0xca, 0xa7, 0xa6, 0x51, 0x19, 0x4d, 0x73, 0x43, 0x6b, 0xe8, 0x9a, 0x7c, + 0x7a, 0x1a, 0x74, 0x36, 0x9d, 0x32, 0x4c, 0x1d, 0x9c, 0x52, 0x5f, 0x97, 0xcf, 0x4c, 0xc7, 0xad, + 0x56, 0xf5, 0x86, 0xc6, 0x27, 0x1f, 0x7d, 0x1b, 0x1e, 0x67, 0xd3, 0x91, 0x0d, 0xdd, 0xaa, 0xb6, + 0xd6, 0xf8, 0x8a, 0x61, 0x2b, 0xe5, 0x2c, 0x5a, 0x81, 0x47, 0x39, 0xd8, 0x54, 0x1d, 0xab, 0x35, + 0x4d, 0xd5, 0xe5, 0x39, 0x16, 0x7d, 0xf2, 0xe9, 0xa9, 0x29, 0x6b, 0xf2, 0x39, 0xb6, 0xc3, 0xe5, + 0x20, 0x7f, 0xaa, 0x35, 0x36, 0xf5, 0x86, 0x29, 0xcb, 0x39, 0xe9, 0x95, 0x86, 0xa9, 0xaf, 0xd5, + 0x34, 0xf9, 0xfc, 0x34, 0xf3, 0xb0, 0xbd, 0x50, 0x57, 0xb5, 0x86, 0xf1, 0x5c, 0x46, 0xd3, 0x26, + 0xac, 0xbf, 0x82, 0x2e, 0x2c, 0x7d, 0x04, 0x27, 0xa3, 0x0b, 0x56, 0xb6, 0xbe, 0xd7, 0x35, 0xc5, + 0x62, 0x67, 0x82, 0xb1, 0xd8, 0x18, 0x77, 0x8c, 0x46, 0x0b, 0x69, 0xe9, 0x8f, 0x25, 0xb8, 0x3a, + 0xa5, 0xd0, 0x93, 0x59, 0x2f, 0x66, 0xc6, 0x9a, 0x6a, 0xd4, 0xeb, 0x5a, 0xa3, 0x22, 0x10, 0xa5, + 0xc6, 0xe1, 0x25, 0xb8, 0x37, 0x9d, 0xbc, 0x61, 0x58, 0x82, 0x56, 0x62, 0x96, 0x98, 0x4e, 0x5b, + 0x31, 0x1a, 0x9a, 0x5c, 0x5c, 0xfb, 0xc1, 0xdf, 0x7f, 0x79, 0x5d, 0xfa, 0x87, 0x2f, 0xaf, 0x4b, + 0xff, 0xf2, 0xe5, 0x75, 0xe9, 0x13, 0x63, 0xd7, 0x0d, 0x5f, 0xf4, 0xb6, 0x97, 0xdb, 0xde, 0xde, + 0xca, 0xae, 0x6f, 0x1f, 0xb8, 0x22, 0x01, 0x67, 0x77, 0x56, 0xfa, 0xff, 0x55, 0x68, 0xef, 0xbb, + 0x2b, 0xbb, 0xb4, 0xbb, 0xc2, 0x8b, 0x72, 0x57, 0x76, 0xbd, 0x91, 0x3f, 0x2f, 0xfc, 0x20, 0xf1, + 0x78, 0xf0, 0x78, 0xfb, 0x04, 0x27, 0x7b, 0xe7, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x4e, 0xa0, + 0xc8, 0x4e, 0xec, 0x50, 0x00, 0x00, } func (m *UIBannerClickEvent) Marshal() (dAtA []byte, err error) { diff --git a/api/proto/teleport/legacy/types/types.proto b/api/proto/teleport/legacy/types/types.proto index 21a11ad965c18..a7cf142f52163 100644 --- a/api/proto/teleport/legacy/types/types.proto +++ b/api/proto/teleport/legacy/types/types.proto @@ -5773,6 +5773,8 @@ message PluginSpecV1 { PluginServiceNowSettings serviceNow = 10; // Settings for the Gitlab plugin. PluginGitlabSettings gitlab = 12; + // Settings for the Entra ID plugin + PluginEntraIDSettings entra_id = 13; // Settings for the SCIM plugin PluginSCIMSettings scim = 14; } @@ -5953,6 +5955,53 @@ message PluginDiscordSettings { map role_to_recipients = 1; } +// PluginEntraIDSettings defines settings for the Entra ID sync plugin +message PluginEntraIDSettings { + option (gogoproto.equal) = true; + + // SyncSettings controls the user and access list sync settings for EntraID. + PluginEntraIDSyncSettings sync_settings = 1; + + // AccessGraphSettings controls settings for syncing access graph specific data. + // When this is null, Entra ID integration with Access Graph is disabled. + PluginEntraIDAccessGraphSettings access_graph_settings = 2; +} + +// Defines settings for syncing users and access lists from Entra ID. +message PluginEntraIDSyncSettings { + option (gogoproto.equal) = true; + + // DefaultOwners are the default owners for all imported access lists. + repeated string default_owners = 1; + + // SSOConnectorID is the name of the Teleport SSO connector created and used by the Entra ID plugin + string sso_connector_id = 2; +} + +// AccessGraphSettings controls settings for syncing access graph specific data. +message PluginEntraIDAccessGraphSettings { + option (gogoproto.equal) = true; + + // AppSsoSettingsCache is an array of single sign-on settings for Entra enterprise applications. + // + // This data is stored here because it is not available through traditional methods (MS Graph API). + // Instead, it is fetched once during the plugin's set up using the user's credentials to connect to Azure's private API. + repeated PluginEntraIDAppSSOSettings app_sso_settings_cache = 1; +} + +// PluginEntraIDAppSSOSettings is a container for a single Entra ID enterprise application's +// cached SSO settings. +// As this data is only parsed by TAG, each value is stored as an opaque JSON blob. +message PluginEntraIDAppSSOSettings { + option (gogoproto.equal) = true; + + // AppID is the `AppID` property of Entra application. + string app_id = 1; + + // FederatedSSOV2 contains the cached, gzip-compressed payload from the /ApplicationSso/{servicePrincipalId}/FederatedSSOV2 endpoint. + bytes federated_sso_v2 = 2; +} + // PluginSCIMSettings defines the settings for a SCIM integration plugin message PluginSCIMSettings { option (gogoproto.equal) = true; @@ -6422,6 +6471,8 @@ message IntegrationSpecV1 { oneof SubKindSpec { // AWSOIDC contains the specific fields to handle the AWS OIDC Integration subkind AWSOIDCIntegrationSpecV1 AWSOIDC = 1 [(gogoproto.jsontag) = "aws_oidc,omitempty"]; + // AzureOIDC contains the specific fields to handle the Azure OIDC Integration subkind + AzureOIDCIntegrationSpecV1 AzureOIDC = 2 [(gogoproto.jsontag) = "azure_oidc,omitempty"]; } } @@ -6440,6 +6491,17 @@ message AWSOIDCIntegrationSpecV1 { string IssuerS3URI = 2 [(gogoproto.jsontag) = "issuer_s3_uri,omitempty"]; } +// AzureOIDCIntegrationSpecV1 contains the spec properties for the Azure OIDC SubKind Integration. +message AzureOIDCIntegrationSpecV1 { + // TenantID specifies the ID of Entra Tenant (Directory) + // that this plugin integrates with. + string TenantID = 1 [(gogoproto.jsontag) = "tenant_id,omitempty"]; + + // ClientID specifies the ID of Azure enterprise application (client) + // that corresponds to this plugin. + string ClientID = 2 [(gogoproto.jsontag) = "client_id,omitempty"]; +} + // HeadlessAuthentication holds data for an ongoing headless authentication attempt. message HeadlessAuthentication { // Header is the resource header. diff --git a/api/proto/teleport/usageevents/v1/usageevents.proto b/api/proto/teleport/usageevents/v1/usageevents.proto index 4b4b0439df38d..bc4f73bc83460 100644 --- a/api/proto/teleport/usageevents/v1/usageevents.proto +++ b/api/proto/teleport/usageevents/v1/usageevents.proto @@ -241,6 +241,7 @@ enum CTA { CTA_ACCESS_MONITORING = 9; CTA_EXTERNAL_AUDIT_STORAGE = 10; CTA_OKTA_USER_SYNC = 11; + CTA_ENTRA_ID = 12; } // UIDiscoverDeployServiceEvent is emitted after the user installs a Teleport Agent. @@ -563,6 +564,7 @@ enum IntegrationEnrollKind { INTEGRATION_ENROLL_KIND_MACHINE_ID_JENKINS = 16; INTEGRATION_ENROLL_KIND_MACHINE_ID_ANSIBLE = 17; INTEGRATION_ENROLL_KIND_SERVICENOW = 18; + INTEGRATION_ENROLL_KIND_ENTRA_ID = 19; } // IntegrationEnrollMetadata contains common metadata diff --git a/api/types/common/constants.go b/api/types/common/constants.go index 069db4219ddc6..0c9b541e19bbc 100644 --- a/api/types/common/constants.go +++ b/api/types/common/constants.go @@ -65,6 +65,10 @@ const ( // OriginDiscoveryKubernetes indicates that the resource was imported // from kubernetes cluster by discovery service. OriginDiscoveryKubernetes = "discovery-kubernetes" + + // OriginEntraID indicates that the resource was imported + // from the Entra ID directory. + OriginEntraID = "entra-id" ) // OriginValues lists all possible origin values. @@ -77,4 +81,5 @@ var OriginValues = []string{ OriginOkta, OriginSCIM, OriginDiscoveryKubernetes, + OriginEntraID, } diff --git a/api/types/constants.go b/api/types/constants.go index e74b00d4919dc..868a9fefcf830 100644 --- a/api/types/constants.go +++ b/api/types/constants.go @@ -635,6 +635,10 @@ const ( // from kubernetes cluster by discovery service. OriginDiscoveryKubernetes = common.OriginDiscoveryKubernetes + // OriginEntraID indicates that the resource was imported + // from the Entra ID directory. + OriginEntraID = common.OriginEntraID + // IntegrationLabel is a resource metadata label name used to identify the integration name that created the resource. IntegrationLabel = TeleportNamespace + "/integration" @@ -974,6 +978,22 @@ const ( // OktaRoleNameLabel is the human readable name for a role sourced from Okta. OktaRoleNameLabel = TeleportInternalLabelPrefix + "okta-role-name" + + // EntraTenantIDLabel is the label for the Entra tenant ID. + EntraTenantIDLabel = TeleportInternalLabelPrefix + "entra-tenant" + + // EntraUniqueIDLabel is the label for the unique identifier of the object in the Entra ID directory. + EntraUniqueIDLabel = TeleportInternalLabelPrefix + "entra-unique-id" + + // EntraUPNLabel is the label for the user principal name in Entra ID. + EntraUPNLabel = TeleportInternalLabelPrefix + "entra-upn" + + // EntraDisplayNameLabel is the label for the display name of the object in the Entra ID directory. + // The display name may not be unique. + EntraDisplayNameLabel = TeleportInternalLabelPrefix + "entra-display-name" + + // EntraSAMAccountNameLabel is the label for user's on-premises sAMAccountName. + EntraSAMAccountNameLabel = TeleportInternalLabelPrefix + "entra-sam-account-name" ) const ( diff --git a/api/types/integration.go b/api/types/integration.go index 45a514ab6e3cb..189ecd959438e 100644 --- a/api/types/integration.go +++ b/api/types/integration.go @@ -29,6 +29,9 @@ import ( const ( // IntegrationSubKindAWSOIDC is an integration with AWS that uses OpenID Connect as an Identity Provider. IntegrationSubKindAWSOIDC = "aws-oidc" + + // IntegrationSubKindAzureOIDC is an integration with Azure that uses OpenID Connect as an Identity Provider. + IntegrationSubKindAzureOIDC = "azure-oidc" ) // Integration specifies is a connection configuration between Teleport and a 3rd party system. @@ -47,6 +50,9 @@ type Integration interface { // SetAWSOIDCIssuerS3URI sets the IssuerS3URI of the AWS OIDC Spec. // Eg, s3://my-bucket/my-prefix SetAWSOIDCIssuerS3URI(string) + + // GetAzureOIDCIntegrationSpec returns the `azure-oidc` spec fields. + GetAzureOIDCIntegrationSpec() *AzureOIDCIntegrationSpecV1 } var _ ResourceWithLabels = (*IntegrationV1)(nil) @@ -72,6 +78,27 @@ func NewIntegrationAWSOIDC(md Metadata, spec *AWSOIDCIntegrationSpecV1) (*Integr return ig, nil } +// NewIntegrationAzureOIDC returns a new `azure-oidc` subkind Integration +func NewIntegrationAzureOIDC(md Metadata, spec *AzureOIDCIntegrationSpecV1) (*IntegrationV1, error) { + ig := &IntegrationV1{ + ResourceHeader: ResourceHeader{ + Metadata: md, + Kind: KindIntegration, + Version: V1, + SubKind: IntegrationSubKindAzureOIDC, + }, + Spec: IntegrationSpecV1{ + SubKindSpec: &IntegrationSpecV1_AzureOIDC{ + AzureOIDC: spec, + }, + }, + } + if err := ig.CheckAndSetDefaults(); err != nil { + return nil, trace.Wrap(err) + } + return ig, nil +} + // String returns the integration string representation. func (ig *IntegrationV1) String() string { return fmt.Sprintf("IntegrationV1(Name=%v, SubKind=%s, Labels=%v)", @@ -128,6 +155,11 @@ func (s *IntegrationSpecV1) CheckAndSetDefaults() error { if err != nil { return trace.Wrap(err) } + case *IntegrationSpecV1_AzureOIDC: + err := integrationSubKind.Validate() + if err != nil { + return trace.Wrap(err) + } default: return trace.BadParameter("unknown integration subkind: %T", integrationSubKind) } @@ -135,7 +167,7 @@ func (s *IntegrationSpecV1) CheckAndSetDefaults() error { return nil } -// CheckAndSetDefaults validates an agent mesh integration. +// CheckAndSetDefaults validates the configuration for AWS OIDC integration subkind. func (s *IntegrationSpecV1_AWSOIDC) CheckAndSetDefaults() error { if s == nil || s.AWSOIDC == nil { return trace.BadParameter("aws_oidc is required for %q subkind", IntegrationSubKindAWSOIDC) @@ -160,6 +192,21 @@ func (s *IntegrationSpecV1_AWSOIDC) CheckAndSetDefaults() error { return nil } +// Validate validates the configuration for Azure OIDC integration subkind. +func (s *IntegrationSpecV1_AzureOIDC) Validate() error { + if s == nil || s.AzureOIDC == nil { + return trace.BadParameter("azure_oidc is required for %q subkind", IntegrationSubKindAzureOIDC) + } + if s.AzureOIDC.TenantID == "" { + return trace.BadParameter("tenant_id must be set") + } + if s.AzureOIDC.ClientID == "" { + return trace.BadParameter("client_id must be set") + } + + return nil +} + // GetAWSOIDCIntegrationSpec returns the specific spec fields for `aws-oidc` subkind integrations. func (ig *IntegrationV1) GetAWSOIDCIntegrationSpec() *AWSOIDCIntegrationSpecV1 { return ig.Spec.GetAWSOIDC() @@ -198,6 +245,11 @@ func (ig *IntegrationV1) SetAWSOIDCIssuerS3URI(issuerS3URI string) { } } +// GetAzureOIDCIntegrationSpec returns the specific spec fields for `azure-oidc` subkind integrations. +func (ig *IntegrationV1) GetAzureOIDCIntegrationSpec() *AzureOIDCIntegrationSpecV1 { + return ig.Spec.GetAzureOIDC() +} + // Integrations is a list of Integration resources. type Integrations []Integration @@ -247,7 +299,8 @@ func (ig *IntegrationV1) UnmarshalJSON(data []byte) error { d := struct { ResourceHeader `json:""` Spec struct { - AWSOIDC json.RawMessage `json:"aws_oidc"` + AWSOIDC json.RawMessage `json:"aws_oidc"` + AzureOIDC json.RawMessage `json:"azure_oidc"` } `json:"spec"` }{} @@ -270,6 +323,17 @@ func (ig *IntegrationV1) UnmarshalJSON(data []byte) error { integration.Spec.SubKindSpec = subkindSpec + case IntegrationSubKindAzureOIDC: + subkindSpec := &IntegrationSpecV1_AzureOIDC{ + AzureOIDC: &AzureOIDCIntegrationSpecV1{}, + } + + if err := json.Unmarshal(d.Spec.AzureOIDC, subkindSpec.AzureOIDC); err != nil { + return trace.Wrap(err) + } + + integration.Spec.SubKindSpec = subkindSpec + default: return trace.BadParameter("invalid subkind %q", integration.ResourceHeader.SubKind) } @@ -290,7 +354,8 @@ func (ig *IntegrationV1) MarshalJSON() ([]byte, error) { d := struct { ResourceHeader `json:""` Spec struct { - AWSOIDC AWSOIDCIntegrationSpecV1 `json:"aws_oidc"` + AWSOIDC AWSOIDCIntegrationSpecV1 `json:"aws_oidc,omitempty"` + AzureOIDC AzureOIDCIntegrationSpecV1 `json:"azure_oidc,omitempty"` } `json:"spec"` }{} @@ -303,6 +368,12 @@ func (ig *IntegrationV1) MarshalJSON() ([]byte, error) { } d.Spec.AWSOIDC = *ig.GetAWSOIDCIntegrationSpec() + case IntegrationSubKindAzureOIDC: + if ig.GetAzureOIDCIntegrationSpec() == nil { + return nil, trace.BadParameter("missing subkind data for %q subkind", ig.SubKind) + } + + d.Spec.AzureOIDC = *ig.GetAzureOIDCIntegrationSpec() default: return nil, trace.BadParameter("invalid subkind %q", ig.SubKind) } diff --git a/api/types/integration_test.go b/api/types/integration_test.go index 73828198f504b..b64cbc7688315 100644 --- a/api/types/integration_test.go +++ b/api/types/integration_test.go @@ -28,7 +28,7 @@ import ( ) func TestIntegrationJSONMarshalCycle(t *testing.T) { - ig, err := NewIntegrationAWSOIDC( + aws, err := NewIntegrationAWSOIDC( Metadata{Name: "some-integration"}, &AWSOIDCIntegrationSpecV1{ RoleARN: "arn:aws:iam::123456789012:role/DevTeams", @@ -37,14 +37,29 @@ func TestIntegrationJSONMarshalCycle(t *testing.T) { ) require.NoError(t, err) - bs, err := json.Marshal(ig) + azure, err := NewIntegrationAzureOIDC( + Metadata{Name: "some-integration"}, + &AzureOIDCIntegrationSpecV1{ + TenantID: "foo-bar", + ClientID: "baz-quux", + }, + ) require.NoError(t, err) - var ig2 IntegrationV1 - err = json.Unmarshal(bs, &ig2) - require.NoError(t, err) + allIntegrations := []*IntegrationV1{aws, azure} - require.Equal(t, &ig2, ig) + for _, ig := range allIntegrations { + t.Run(ig.SubKind, func(t *testing.T) { + bs, err := json.Marshal(ig) + require.NoError(t, err) + + var ig2 IntegrationV1 + err = json.Unmarshal(bs, &ig2) + require.NoError(t, err) + + require.Equal(t, &ig2, ig) + }) + } } func TestIntegrationCheckAndSetDefaults(t *testing.T) { @@ -59,7 +74,7 @@ func TestIntegrationCheckAndSetDefaults(t *testing.T) { expectedErrorIs func(error) bool }{ { - name: "valid", + name: "aws-oidc: valid", integration: func(name string) (*IntegrationV1, error) { return NewIntegrationAWSOIDC( Metadata{ @@ -104,9 +119,7 @@ func TestIntegrationCheckAndSetDefaults(t *testing.T) { nil, ) }, - expectedErrorIs: func(err error) bool { - return trace.IsBadParameter(err) - }, + expectedErrorIs: trace.IsBadParameter, }, { name: "aws-oidc: error when issuer is not a valid url", @@ -121,9 +134,7 @@ func TestIntegrationCheckAndSetDefaults(t *testing.T) { }, ) }, - expectedErrorIs: func(err error) bool { - return trace.IsBadParameter(err) - }, + expectedErrorIs: trace.IsBadParameter, }, { name: "aws-oidc: issuer is not an s3 url", @@ -138,9 +149,7 @@ func TestIntegrationCheckAndSetDefaults(t *testing.T) { }, ) }, - expectedErrorIs: func(err error) bool { - return trace.IsBadParameter(err) - }, + expectedErrorIs: trace.IsBadParameter, }, { name: "aws-oidc: error when no role is provided", @@ -152,9 +161,71 @@ func TestIntegrationCheckAndSetDefaults(t *testing.T) { &AWSOIDCIntegrationSpecV1{}, ) }, - expectedErrorIs: func(err error) bool { - return trace.IsBadParameter(err) + expectedErrorIs: trace.IsBadParameter, + }, + { + name: "azure-oidc: valid", + integration: func(name string) (*IntegrationV1, error) { + return NewIntegrationAzureOIDC( + Metadata{ + Name: name, + }, + &AzureOIDCIntegrationSpecV1{ + ClientID: "baz-quux", + TenantID: "foo-bar", + }, + ) + }, + expectedIntegration: func(name string) *IntegrationV1 { + return &IntegrationV1{ + ResourceHeader: ResourceHeader{ + Kind: KindIntegration, + SubKind: IntegrationSubKindAzureOIDC, + Version: V1, + Metadata: Metadata{ + Name: name, + Namespace: defaults.Namespace, + }, + }, + Spec: IntegrationSpecV1{ + SubKindSpec: &IntegrationSpecV1_AzureOIDC{ + AzureOIDC: &AzureOIDCIntegrationSpecV1{ + ClientID: "baz-quux", + TenantID: "foo-bar", + }, + }, + }, + } + }, + expectedErrorIs: noErrorFunc, + }, + { + name: "azure-oidc: error when no tenant id is provided", + integration: func(name string) (*IntegrationV1, error) { + return NewIntegrationAzureOIDC( + Metadata{ + Name: name, + }, + &AzureOIDCIntegrationSpecV1{ + ClientID: "baz-quux", + }, + ) + }, + expectedErrorIs: trace.IsBadParameter, + }, + { + name: "azure-oidc: error when no client id is provided", + integration: func(name string) (*IntegrationV1, error) { + return NewIntegrationAzureOIDC( + Metadata{ + Name: name, + }, + &AzureOIDCIntegrationSpecV1{ + TenantID: "foo-bar", + }, + ) }, + expectedErrorIs: trace.IsBadParameter, }, } { t.Run(tt.name, func(t *testing.T) { diff --git a/api/types/plugin.go b/api/types/plugin.go index b1986260eb746..7de7cc1c53406 100644 --- a/api/types/plugin.go +++ b/api/types/plugin.go @@ -40,6 +40,7 @@ var AllPluginTypes = []PluginType{ PluginTypeMattermost, PluginTypeDiscord, PluginTypeSCIM, + PluginTypeEntraID, } const ( @@ -69,6 +70,8 @@ const ( PluginTypeGitlab = "gitlab" // PluginTypeSCIM indicates a generic SCIM integration PluginTypeSCIM = "scim" + // PluginTypeEntraID indicates the Entra ID sync plugin + PluginTypeEntraID = "entra-id" ) // PluginSubkind represents the type of the plugin, e.g., access request, MDM etc. @@ -306,6 +309,13 @@ func (p *PluginV1) CheckAndSetDefaults() error { if err := settings.Scim.CheckAndSetDefaults(); err != nil { return trace.Wrap(err) } + case *PluginSpecV1_EntraId: + if settings.EntraId == nil { + return trace.BadParameter("missing Entra ID settings") + } + if err := settings.EntraId.Validate(); err != nil { + return trace.Wrap(err) + } default: return nil } @@ -468,6 +478,8 @@ func (p *PluginV1) GetType() PluginType { return PluginTypeGitlab case *PluginSpecV1_Scim: return PluginTypeSCIM + case *PluginSpecV1_EntraId: + return PluginTypeEntraID default: return PluginTypeUnknown } @@ -625,6 +637,21 @@ func (c *PluginSCIMSettings) CheckAndSetDefaults() error { if c.SamlConnectorName == "" { return trace.BadParameter("saml_connector_name must be set") + + } + + return nil +} + +func (c *PluginEntraIDSettings) Validate() error { + if c.SyncSettings == nil { + return trace.BadParameter("sync_settings must be set") + } + if len(c.SyncSettings.DefaultOwners) == 0 { + return trace.BadParameter("sync_settings.default_owners must be set") + } + if c.SyncSettings.SsoConnectorId == "" { + return trace.BadParameter("sync_settings.sso_connector_id must be set") } return nil diff --git a/api/types/plugin_test.go b/api/types/plugin_test.go index ad41bcca37471..21ad433df19e2 100644 --- a/api/types/plugin_test.go +++ b/api/types/plugin_test.go @@ -668,7 +668,7 @@ func requireBadParameterError(t require.TestingT, err error, args ...any) { require.True(t, trace.IsBadParameter(err), args...) } -func reqireNamedBadParameterError(name string) require.ErrorAssertionFunc { +func requireNamedBadParameterError(name string) require.ErrorAssertionFunc { return func(t require.TestingT, err error, args ...any) { if tt, ok := t.(*testing.T); ok { tt.Helper() @@ -718,15 +718,15 @@ func TestPluginJiraValidation(t *testing.T) { }, { name: "Missing Server URL", mutateSettings: func(s *PluginSpecV1_Jira) { s.Jira.ServerUrl = "" }, - assertErr: reqireNamedBadParameterError("server URL"), + assertErr: requireNamedBadParameterError("server URL"), }, { name: "Missing Project Key", mutateSettings: func(s *PluginSpecV1_Jira) { s.Jira.ProjectKey = "" }, - assertErr: reqireNamedBadParameterError("project key"), + assertErr: requireNamedBadParameterError("project key"), }, { name: "Missing Issue Type", mutateSettings: func(s *PluginSpecV1_Jira) { s.Jira.IssueType = "" }, - assertErr: reqireNamedBadParameterError("issue type"), + assertErr: requireNamedBadParameterError("issue type"), }, { name: "Missing Credentials", mutateCreds: func(c *PluginCredentialsV1) { c.Credentials = nil }, @@ -738,13 +738,13 @@ func TestPluginJiraValidation(t *testing.T) { StaticCredentialsRef. Labels = map[string]string{} }, - assertErr: reqireNamedBadParameterError("labels"), + assertErr: requireNamedBadParameterError("labels"), }, { name: "Invalid Credential Type", mutateCreds: func(c *PluginCredentialsV1) { c.Credentials = &PluginCredentialsV1_Oauth2AccessToken{} }, - assertErr: reqireNamedBadParameterError("static credentials"), + assertErr: requireNamedBadParameterError("static credentials"), }, } @@ -806,7 +806,7 @@ func TestPluginDiscordValidation(t *testing.T) { mutateSettings: func(s *PluginSpecV1_Discord) { s.Discord.RoleToRecipients = map[string]*DiscordChannels{} }, - assertErr: reqireNamedBadParameterError("role_to_recipients"), + assertErr: requireNamedBadParameterError("role_to_recipients"), }, { name: "Missing Default Mapping", mutateSettings: func(s *PluginSpecV1_Discord) { @@ -815,7 +815,7 @@ func TestPluginDiscordValidation(t *testing.T) { ChannelIds: []string{"1234567890"}, } }, - assertErr: reqireNamedBadParameterError("default entry"), + assertErr: requireNamedBadParameterError("default entry"), }, { name: "Missing Credentials", mutateCreds: func(c *PluginCredentialsV1) { c.Credentials = nil }, @@ -825,7 +825,7 @@ func TestPluginDiscordValidation(t *testing.T) { mutateCreds: func(c *PluginCredentialsV1) { c.Credentials = &PluginCredentialsV1_Oauth2AccessToken{} }, - assertErr: reqireNamedBadParameterError("static credentials"), + assertErr: requireNamedBadParameterError("static credentials"), }, } @@ -849,3 +849,70 @@ func TestPluginDiscordValidation(t *testing.T) { }) } } + +func TestPluginEntraIDValidation(t *testing.T) { + validSettings := func() *PluginSpecV1_EntraId { + return &PluginSpecV1_EntraId{ + EntraId: &PluginEntraIDSettings{ + SyncSettings: &PluginEntraIDSyncSettings{ + DefaultOwners: []string{"admin"}, + SsoConnectorId: "myconnector", + }, + }, + } + } + testCases := []struct { + name string + mutateSettings func(*PluginSpecV1_EntraId) + assertErr require.ErrorAssertionFunc + }{ + { + name: "valid", + mutateSettings: nil, + assertErr: require.NoError, + }, + { + name: "missing sync settings", + mutateSettings: func(s *PluginSpecV1_EntraId) { + s.EntraId.SyncSettings = nil + }, + assertErr: requireNamedBadParameterError("sync_settings"), + }, + { + name: "missing default owners", + mutateSettings: func(s *PluginSpecV1_EntraId) { + s.EntraId.SyncSettings.DefaultOwners = nil + }, + assertErr: requireNamedBadParameterError("sync_settings.default_owners"), + }, + { + name: "empty default owners", + mutateSettings: func(s *PluginSpecV1_EntraId) { + s.EntraId.SyncSettings.DefaultOwners = []string{} + }, + assertErr: requireNamedBadParameterError("sync_settings.default_owners"), + }, + { + name: "missing sso connector name", + mutateSettings: func(s *PluginSpecV1_EntraId) { + s.EntraId.SyncSettings.SsoConnectorId = "" + }, + assertErr: requireNamedBadParameterError("sync_settings.sso_connector_id"), + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + settings := validSettings() + if tc.mutateSettings != nil { + tc.mutateSettings(settings) + } + + plugin := NewPluginV1( + Metadata{Name: "uut"}, + PluginSpecV1{Settings: settings}, + nil) + tc.assertErr(t, plugin.CheckAndSetDefaults()) + }) + } +} diff --git a/api/types/types.pb.go b/api/types/types.pb.go index a959de1880d57..76cbc32065cd0 100644 --- a/api/types/types.pb.go +++ b/api/types/types.pb.go @@ -968,7 +968,7 @@ func (x OktaAssignmentSpecV1_OktaAssignmentStatus) String() string { } func (OktaAssignmentSpecV1_OktaAssignmentStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{300, 0} + return fileDescriptor_9198ee693835762e, []int{304, 0} } // OktaAssignmentTargetType is the type of Okta object that an assignment is targeting. @@ -1000,7 +1000,7 @@ func (x OktaAssignmentTargetV1_OktaAssignmentTargetType) String() string { } func (OktaAssignmentTargetV1_OktaAssignmentTargetType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{301, 0} + return fileDescriptor_9198ee693835762e, []int{305, 0} } type KeepAlive struct { @@ -14586,6 +14586,7 @@ type PluginSpecV1 struct { // *PluginSpecV1_Discord // *PluginSpecV1_ServiceNow // *PluginSpecV1_Gitlab + // *PluginSpecV1_EntraId // *PluginSpecV1_Scim Settings isPluginSpecV1_Settings `protobuf_oneof:"settings"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -14666,6 +14667,9 @@ type PluginSpecV1_ServiceNow struct { type PluginSpecV1_Gitlab struct { Gitlab *PluginGitlabSettings `protobuf:"bytes,12,opt,name=gitlab,proto3,oneof" json:"gitlab,omitempty"` } +type PluginSpecV1_EntraId struct { + EntraId *PluginEntraIDSettings `protobuf:"bytes,13,opt,name=entra_id,json=entraId,proto3,oneof" json:"entra_id,omitempty"` +} type PluginSpecV1_Scim struct { Scim *PluginSCIMSettings `protobuf:"bytes,14,opt,name=scim,proto3,oneof" json:"scim,omitempty"` } @@ -14681,6 +14685,7 @@ func (*PluginSpecV1_Jira) isPluginSpecV1_Settings() {} func (*PluginSpecV1_Discord) isPluginSpecV1_Settings() {} func (*PluginSpecV1_ServiceNow) isPluginSpecV1_Settings() {} func (*PluginSpecV1_Gitlab) isPluginSpecV1_Settings() {} +func (*PluginSpecV1_EntraId) isPluginSpecV1_Settings() {} func (*PluginSpecV1_Scim) isPluginSpecV1_Settings() {} func (m *PluginSpecV1) GetSettings() isPluginSpecV1_Settings { @@ -14767,6 +14772,13 @@ func (m *PluginSpecV1) GetGitlab() *PluginGitlabSettings { return nil } +func (m *PluginSpecV1) GetEntraId() *PluginEntraIDSettings { + if x, ok := m.GetSettings().(*PluginSpecV1_EntraId); ok { + return x.EntraId + } + return nil +} + func (m *PluginSpecV1) GetScim() *PluginSCIMSettings { if x, ok := m.GetSettings().(*PluginSpecV1_Scim); ok { return x.Scim @@ -14788,6 +14800,7 @@ func (*PluginSpecV1) XXX_OneofWrappers() []interface{} { (*PluginSpecV1_Discord)(nil), (*PluginSpecV1_ServiceNow)(nil), (*PluginSpecV1_Gitlab)(nil), + (*PluginSpecV1_EntraId)(nil), (*PluginSpecV1_Scim)(nil), } } @@ -15404,6 +15417,186 @@ func (m *PluginDiscordSettings) XXX_DiscardUnknown() { var xxx_messageInfo_PluginDiscordSettings proto.InternalMessageInfo +// PluginEntraIDSettings defines settings for the Entra ID sync plugin +type PluginEntraIDSettings struct { + // SyncSettings controls the user and access list sync settings for EntraID. + SyncSettings *PluginEntraIDSyncSettings `protobuf:"bytes,1,opt,name=sync_settings,json=syncSettings,proto3" json:"sync_settings,omitempty"` + // AccessGraphSettings controls settings for syncing access graph specific data. + // When this is null, Entra ID integration with Access Graph is disabled. + AccessGraphSettings *PluginEntraIDAccessGraphSettings `protobuf:"bytes,2,opt,name=access_graph_settings,json=accessGraphSettings,proto3" json:"access_graph_settings,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PluginEntraIDSettings) Reset() { *m = PluginEntraIDSettings{} } +func (m *PluginEntraIDSettings) String() string { return proto.CompactTextString(m) } +func (*PluginEntraIDSettings) ProtoMessage() {} +func (*PluginEntraIDSettings) Descriptor() ([]byte, []int) { + return fileDescriptor_9198ee693835762e, []int{267} +} +func (m *PluginEntraIDSettings) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PluginEntraIDSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PluginEntraIDSettings.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PluginEntraIDSettings) XXX_Merge(src proto.Message) { + xxx_messageInfo_PluginEntraIDSettings.Merge(m, src) +} +func (m *PluginEntraIDSettings) XXX_Size() int { + return m.Size() +} +func (m *PluginEntraIDSettings) XXX_DiscardUnknown() { + xxx_messageInfo_PluginEntraIDSettings.DiscardUnknown(m) +} + +var xxx_messageInfo_PluginEntraIDSettings proto.InternalMessageInfo + +// Defines settings for syncing users and access lists from Entra ID. +type PluginEntraIDSyncSettings struct { + // DefaultOwners are the default owners for all imported access lists. + DefaultOwners []string `protobuf:"bytes,1,rep,name=default_owners,json=defaultOwners,proto3" json:"default_owners,omitempty"` + // SSOConnectorID is the name of the Teleport SSO connector created and used by the Entra ID plugin + SsoConnectorId string `protobuf:"bytes,2,opt,name=sso_connector_id,json=ssoConnectorId,proto3" json:"sso_connector_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PluginEntraIDSyncSettings) Reset() { *m = PluginEntraIDSyncSettings{} } +func (m *PluginEntraIDSyncSettings) String() string { return proto.CompactTextString(m) } +func (*PluginEntraIDSyncSettings) ProtoMessage() {} +func (*PluginEntraIDSyncSettings) Descriptor() ([]byte, []int) { + return fileDescriptor_9198ee693835762e, []int{268} +} +func (m *PluginEntraIDSyncSettings) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PluginEntraIDSyncSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PluginEntraIDSyncSettings.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PluginEntraIDSyncSettings) XXX_Merge(src proto.Message) { + xxx_messageInfo_PluginEntraIDSyncSettings.Merge(m, src) +} +func (m *PluginEntraIDSyncSettings) XXX_Size() int { + return m.Size() +} +func (m *PluginEntraIDSyncSettings) XXX_DiscardUnknown() { + xxx_messageInfo_PluginEntraIDSyncSettings.DiscardUnknown(m) +} + +var xxx_messageInfo_PluginEntraIDSyncSettings proto.InternalMessageInfo + +// AccessGraphSettings controls settings for syncing access graph specific data. +type PluginEntraIDAccessGraphSettings struct { + // AppSsoSettingsCache is an array of single sign-on settings for Entra enterprise applications. + // + // This data is stored here because it is not available through traditional methods (MS Graph API). + // Instead, it is fetched once during the plugin's set up using the user's credentials to connect to Azure's private API. + AppSsoSettingsCache []*PluginEntraIDAppSSOSettings `protobuf:"bytes,1,rep,name=app_sso_settings_cache,json=appSsoSettingsCache,proto3" json:"app_sso_settings_cache,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PluginEntraIDAccessGraphSettings) Reset() { *m = PluginEntraIDAccessGraphSettings{} } +func (m *PluginEntraIDAccessGraphSettings) String() string { return proto.CompactTextString(m) } +func (*PluginEntraIDAccessGraphSettings) ProtoMessage() {} +func (*PluginEntraIDAccessGraphSettings) Descriptor() ([]byte, []int) { + return fileDescriptor_9198ee693835762e, []int{269} +} +func (m *PluginEntraIDAccessGraphSettings) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PluginEntraIDAccessGraphSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PluginEntraIDAccessGraphSettings.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PluginEntraIDAccessGraphSettings) XXX_Merge(src proto.Message) { + xxx_messageInfo_PluginEntraIDAccessGraphSettings.Merge(m, src) +} +func (m *PluginEntraIDAccessGraphSettings) XXX_Size() int { + return m.Size() +} +func (m *PluginEntraIDAccessGraphSettings) XXX_DiscardUnknown() { + xxx_messageInfo_PluginEntraIDAccessGraphSettings.DiscardUnknown(m) +} + +var xxx_messageInfo_PluginEntraIDAccessGraphSettings proto.InternalMessageInfo + +// PluginEntraIDAppSSOSettings is a container for a single Entra ID enterprise application's +// cached SSO settings. +// As this data is only parsed by TAG, each value is stored as an opaque JSON blob. +type PluginEntraIDAppSSOSettings struct { + // AppID is the `AppID` property of Entra application. + AppId string `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + // FederatedSSOV2 contains the cached, gzip-compressed payload from the /ApplicationSso/{servicePrincipalId}/FederatedSSOV2 endpoint. + FederatedSsoV2 []byte `protobuf:"bytes,2,opt,name=federated_sso_v2,json=federatedSsoV2,proto3" json:"federated_sso_v2,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PluginEntraIDAppSSOSettings) Reset() { *m = PluginEntraIDAppSSOSettings{} } +func (m *PluginEntraIDAppSSOSettings) String() string { return proto.CompactTextString(m) } +func (*PluginEntraIDAppSSOSettings) ProtoMessage() {} +func (*PluginEntraIDAppSSOSettings) Descriptor() ([]byte, []int) { + return fileDescriptor_9198ee693835762e, []int{270} +} +func (m *PluginEntraIDAppSSOSettings) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PluginEntraIDAppSSOSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PluginEntraIDAppSSOSettings.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PluginEntraIDAppSSOSettings) XXX_Merge(src proto.Message) { + xxx_messageInfo_PluginEntraIDAppSSOSettings.Merge(m, src) +} +func (m *PluginEntraIDAppSSOSettings) XXX_Size() int { + return m.Size() +} +func (m *PluginEntraIDAppSSOSettings) XXX_DiscardUnknown() { + xxx_messageInfo_PluginEntraIDAppSSOSettings.DiscardUnknown(m) +} + +var xxx_messageInfo_PluginEntraIDAppSSOSettings proto.InternalMessageInfo + // PluginSCIMSettings defines the settings for a SCIM integration plugin type PluginSCIMSettings struct { // SamlConnectorName is the name of the SAML Connector that users provisioned @@ -15421,7 +15614,7 @@ func (m *PluginSCIMSettings) Reset() { *m = PluginSCIMSettings{} } func (m *PluginSCIMSettings) String() string { return proto.CompactTextString(m) } func (*PluginSCIMSettings) ProtoMessage() {} func (*PluginSCIMSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{267} + return fileDescriptor_9198ee693835762e, []int{271} } func (m *PluginSCIMSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15466,7 +15659,7 @@ func (m *PluginBootstrapCredentialsV1) Reset() { *m = PluginBootstrapCre func (m *PluginBootstrapCredentialsV1) String() string { return proto.CompactTextString(m) } func (*PluginBootstrapCredentialsV1) ProtoMessage() {} func (*PluginBootstrapCredentialsV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{268} + return fileDescriptor_9198ee693835762e, []int{272} } func (m *PluginBootstrapCredentialsV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15566,7 +15759,7 @@ func (m *PluginIdSecretCredential) Reset() { *m = PluginIdSecretCredenti func (m *PluginIdSecretCredential) String() string { return proto.CompactTextString(m) } func (*PluginIdSecretCredential) ProtoMessage() {} func (*PluginIdSecretCredential) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{269} + return fileDescriptor_9198ee693835762e, []int{273} } func (m *PluginIdSecretCredential) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15609,7 +15802,7 @@ func (m *PluginOAuth2AuthorizationCodeCredentials) Reset() { func (m *PluginOAuth2AuthorizationCodeCredentials) String() string { return proto.CompactTextString(m) } func (*PluginOAuth2AuthorizationCodeCredentials) ProtoMessage() {} func (*PluginOAuth2AuthorizationCodeCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{270} + return fileDescriptor_9198ee693835762e, []int{274} } func (m *PluginOAuth2AuthorizationCodeCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15650,7 +15843,7 @@ func (m *PluginStatusV1) Reset() { *m = PluginStatusV1{} } func (m *PluginStatusV1) String() string { return proto.CompactTextString(m) } func (*PluginStatusV1) ProtoMessage() {} func (*PluginStatusV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{271} + return fileDescriptor_9198ee693835762e, []int{275} } func (m *PluginStatusV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15698,7 +15891,7 @@ func (m *PluginCredentialsV1) Reset() { *m = PluginCredentialsV1{} } func (m *PluginCredentialsV1) String() string { return proto.CompactTextString(m) } func (*PluginCredentialsV1) ProtoMessage() {} func (*PluginCredentialsV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{272} + return fileDescriptor_9198ee693835762e, []int{276} } func (m *PluginCredentialsV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15809,7 +16002,7 @@ func (m *PluginOAuth2AccessTokenCredentials) Reset() { *m = PluginOAuth2 func (m *PluginOAuth2AccessTokenCredentials) String() string { return proto.CompactTextString(m) } func (*PluginOAuth2AccessTokenCredentials) ProtoMessage() {} func (*PluginOAuth2AccessTokenCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{273} + return fileDescriptor_9198ee693835762e, []int{277} } func (m *PluginOAuth2AccessTokenCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15850,7 +16043,7 @@ func (m *PluginBearerTokenCredentials) Reset() { *m = PluginBearerTokenC func (m *PluginBearerTokenCredentials) String() string { return proto.CompactTextString(m) } func (*PluginBearerTokenCredentials) ProtoMessage() {} func (*PluginBearerTokenCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{274} + return fileDescriptor_9198ee693835762e, []int{278} } func (m *PluginBearerTokenCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15892,7 +16085,7 @@ func (m *PluginStaticCredentialsRef) Reset() { *m = PluginStaticCredenti func (m *PluginStaticCredentialsRef) String() string { return proto.CompactTextString(m) } func (*PluginStaticCredentialsRef) ProtoMessage() {} func (*PluginStaticCredentialsRef) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{275} + return fileDescriptor_9198ee693835762e, []int{279} } func (m *PluginStaticCredentialsRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15934,7 +16127,7 @@ func (m *PluginListV1) Reset() { *m = PluginListV1{} } func (m *PluginListV1) String() string { return proto.CompactTextString(m) } func (*PluginListV1) ProtoMessage() {} func (*PluginListV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{276} + return fileDescriptor_9198ee693835762e, []int{280} } func (m *PluginListV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15977,7 +16170,7 @@ type PluginStaticCredentialsV1 struct { func (m *PluginStaticCredentialsV1) Reset() { *m = PluginStaticCredentialsV1{} } func (*PluginStaticCredentialsV1) ProtoMessage() {} func (*PluginStaticCredentialsV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{277} + return fileDescriptor_9198ee693835762e, []int{281} } func (m *PluginStaticCredentialsV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16023,7 +16216,7 @@ func (m *PluginStaticCredentialsSpecV1) Reset() { *m = PluginStaticCrede func (m *PluginStaticCredentialsSpecV1) String() string { return proto.CompactTextString(m) } func (*PluginStaticCredentialsSpecV1) ProtoMessage() {} func (*PluginStaticCredentialsSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{278} + return fileDescriptor_9198ee693835762e, []int{282} } func (m *PluginStaticCredentialsSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16125,7 +16318,7 @@ func (m *PluginStaticCredentialsBasicAuth) Reset() { *m = PluginStaticCr func (m *PluginStaticCredentialsBasicAuth) String() string { return proto.CompactTextString(m) } func (*PluginStaticCredentialsBasicAuth) ProtoMessage() {} func (*PluginStaticCredentialsBasicAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{279} + return fileDescriptor_9198ee693835762e, []int{283} } func (m *PluginStaticCredentialsBasicAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16171,7 +16364,7 @@ func (m *PluginStaticCredentialsOAuthClientSecret) Reset() { func (m *PluginStaticCredentialsOAuthClientSecret) String() string { return proto.CompactTextString(m) } func (*PluginStaticCredentialsOAuthClientSecret) ProtoMessage() {} func (*PluginStaticCredentialsOAuthClientSecret) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{280} + return fileDescriptor_9198ee693835762e, []int{284} } func (m *PluginStaticCredentialsOAuthClientSecret) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16214,7 +16407,7 @@ type SAMLIdPServiceProviderV1 struct { func (m *SAMLIdPServiceProviderV1) Reset() { *m = SAMLIdPServiceProviderV1{} } func (*SAMLIdPServiceProviderV1) ProtoMessage() {} func (*SAMLIdPServiceProviderV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{281} + return fileDescriptor_9198ee693835762e, []int{285} } func (m *SAMLIdPServiceProviderV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16273,7 +16466,7 @@ func (m *SAMLIdPServiceProviderSpecV1) Reset() { *m = SAMLIdPServiceProv func (m *SAMLIdPServiceProviderSpecV1) String() string { return proto.CompactTextString(m) } func (*SAMLIdPServiceProviderSpecV1) ProtoMessage() {} func (*SAMLIdPServiceProviderSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{282} + return fileDescriptor_9198ee693835762e, []int{286} } func (m *SAMLIdPServiceProviderSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16320,7 +16513,7 @@ func (m *SAMLAttributeMapping) Reset() { *m = SAMLAttributeMapping{} } func (m *SAMLAttributeMapping) String() string { return proto.CompactTextString(m) } func (*SAMLAttributeMapping) ProtoMessage() {} func (*SAMLAttributeMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{283} + return fileDescriptor_9198ee693835762e, []int{287} } func (m *SAMLAttributeMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16362,7 +16555,7 @@ func (m *IdPOptions) Reset() { *m = IdPOptions{} } func (m *IdPOptions) String() string { return proto.CompactTextString(m) } func (*IdPOptions) ProtoMessage() {} func (*IdPOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{284} + return fileDescriptor_9198ee693835762e, []int{288} } func (m *IdPOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16404,7 +16597,7 @@ func (m *IdPSAMLOptions) Reset() { *m = IdPSAMLOptions{} } func (m *IdPSAMLOptions) String() string { return proto.CompactTextString(m) } func (*IdPSAMLOptions) ProtoMessage() {} func (*IdPSAMLOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{285} + return fileDescriptor_9198ee693835762e, []int{289} } func (m *IdPSAMLOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16454,7 +16647,7 @@ func (m *KubernetesResourceV1) Reset() { *m = KubernetesResourceV1{} } func (m *KubernetesResourceV1) String() string { return proto.CompactTextString(m) } func (*KubernetesResourceV1) ProtoMessage() {} func (*KubernetesResourceV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{286} + return fileDescriptor_9198ee693835762e, []int{290} } func (m *KubernetesResourceV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16496,7 +16689,7 @@ func (m *KubernetesResourceSpecV1) Reset() { *m = KubernetesResourceSpec func (m *KubernetesResourceSpecV1) String() string { return proto.CompactTextString(m) } func (*KubernetesResourceSpecV1) ProtoMessage() {} func (*KubernetesResourceSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{287} + return fileDescriptor_9198ee693835762e, []int{291} } func (m *KubernetesResourceSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16542,7 +16735,7 @@ func (m *ClusterMaintenanceConfigV1) Reset() { *m = ClusterMaintenanceCo func (m *ClusterMaintenanceConfigV1) String() string { return proto.CompactTextString(m) } func (*ClusterMaintenanceConfigV1) ProtoMessage() {} func (*ClusterMaintenanceConfigV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{288} + return fileDescriptor_9198ee693835762e, []int{292} } func (m *ClusterMaintenanceConfigV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16584,7 +16777,7 @@ func (m *ClusterMaintenanceConfigSpecV1) Reset() { *m = ClusterMaintenan func (m *ClusterMaintenanceConfigSpecV1) String() string { return proto.CompactTextString(m) } func (*ClusterMaintenanceConfigSpecV1) ProtoMessage() {} func (*ClusterMaintenanceConfigSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{289} + return fileDescriptor_9198ee693835762e, []int{293} } func (m *ClusterMaintenanceConfigSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16630,7 +16823,7 @@ func (m *AgentUpgradeWindow) Reset() { *m = AgentUpgradeWindow{} } func (m *AgentUpgradeWindow) String() string { return proto.CompactTextString(m) } func (*AgentUpgradeWindow) ProtoMessage() {} func (*AgentUpgradeWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{290} + return fileDescriptor_9198ee693835762e, []int{294} } func (m *AgentUpgradeWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16677,7 +16870,7 @@ func (m *ScheduledAgentUpgradeWindow) Reset() { *m = ScheduledAgentUpgra func (m *ScheduledAgentUpgradeWindow) String() string { return proto.CompactTextString(m) } func (*ScheduledAgentUpgradeWindow) ProtoMessage() {} func (*ScheduledAgentUpgradeWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{291} + return fileDescriptor_9198ee693835762e, []int{295} } func (m *ScheduledAgentUpgradeWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16720,7 +16913,7 @@ func (m *AgentUpgradeSchedule) Reset() { *m = AgentUpgradeSchedule{} } func (m *AgentUpgradeSchedule) String() string { return proto.CompactTextString(m) } func (*AgentUpgradeSchedule) ProtoMessage() {} func (*AgentUpgradeSchedule) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{292} + return fileDescriptor_9198ee693835762e, []int{296} } func (m *AgentUpgradeSchedule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16763,7 +16956,7 @@ type UserGroupV1 struct { func (m *UserGroupV1) Reset() { *m = UserGroupV1{} } func (*UserGroupV1) ProtoMessage() {} func (*UserGroupV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{293} + return fileDescriptor_9198ee693835762e, []int{297} } func (m *UserGroupV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16805,7 +16998,7 @@ func (m *UserGroupSpecV1) Reset() { *m = UserGroupSpecV1{} } func (m *UserGroupSpecV1) String() string { return proto.CompactTextString(m) } func (*UserGroupSpecV1) ProtoMessage() {} func (*UserGroupSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{294} + return fileDescriptor_9198ee693835762e, []int{298} } func (m *UserGroupSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16849,7 +17042,7 @@ func (m *OktaImportRuleSpecV1) Reset() { *m = OktaImportRuleSpecV1{} } func (m *OktaImportRuleSpecV1) String() string { return proto.CompactTextString(m) } func (*OktaImportRuleSpecV1) ProtoMessage() {} func (*OktaImportRuleSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{295} + return fileDescriptor_9198ee693835762e, []int{299} } func (m *OktaImportRuleSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16893,7 +17086,7 @@ func (m *OktaImportRuleMappingV1) Reset() { *m = OktaImportRuleMappingV1 func (m *OktaImportRuleMappingV1) String() string { return proto.CompactTextString(m) } func (*OktaImportRuleMappingV1) ProtoMessage() {} func (*OktaImportRuleMappingV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{296} + return fileDescriptor_9198ee693835762e, []int{300} } func (m *OktaImportRuleMappingV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16936,7 +17129,7 @@ type OktaImportRuleV1 struct { func (m *OktaImportRuleV1) Reset() { *m = OktaImportRuleV1{} } func (*OktaImportRuleV1) ProtoMessage() {} func (*OktaImportRuleV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{297} + return fileDescriptor_9198ee693835762e, []int{301} } func (m *OktaImportRuleV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16984,7 +17177,7 @@ func (m *OktaImportRuleMatchV1) Reset() { *m = OktaImportRuleMatchV1{} } func (m *OktaImportRuleMatchV1) String() string { return proto.CompactTextString(m) } func (*OktaImportRuleMatchV1) ProtoMessage() {} func (*OktaImportRuleMatchV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{298} + return fileDescriptor_9198ee693835762e, []int{302} } func (m *OktaImportRuleMatchV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17027,7 +17220,7 @@ type OktaAssignmentV1 struct { func (m *OktaAssignmentV1) Reset() { *m = OktaAssignmentV1{} } func (*OktaAssignmentV1) ProtoMessage() {} func (*OktaAssignmentV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{299} + return fileDescriptor_9198ee693835762e, []int{303} } func (m *OktaAssignmentV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17081,7 +17274,7 @@ func (m *OktaAssignmentSpecV1) Reset() { *m = OktaAssignmentSpecV1{} } func (m *OktaAssignmentSpecV1) String() string { return proto.CompactTextString(m) } func (*OktaAssignmentSpecV1) ProtoMessage() {} func (*OktaAssignmentSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{300} + return fileDescriptor_9198ee693835762e, []int{304} } func (m *OktaAssignmentSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17125,7 +17318,7 @@ func (m *OktaAssignmentTargetV1) Reset() { *m = OktaAssignmentTargetV1{} func (m *OktaAssignmentTargetV1) String() string { return proto.CompactTextString(m) } func (*OktaAssignmentTargetV1) ProtoMessage() {} func (*OktaAssignmentTargetV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{301} + return fileDescriptor_9198ee693835762e, []int{305} } func (m *OktaAssignmentTargetV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17170,7 +17363,7 @@ type IntegrationV1 struct { func (m *IntegrationV1) Reset() { *m = IntegrationV1{} } func (*IntegrationV1) ProtoMessage() {} func (*IntegrationV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{302} + return fileDescriptor_9198ee693835762e, []int{306} } func (m *IntegrationV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17204,6 +17397,7 @@ type IntegrationSpecV1 struct { // Types that are valid to be assigned to SubKindSpec: // // *IntegrationSpecV1_AWSOIDC + // *IntegrationSpecV1_AzureOIDC SubKindSpec isIntegrationSpecV1_SubKindSpec `protobuf_oneof:"SubKindSpec"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -17214,7 +17408,7 @@ func (m *IntegrationSpecV1) Reset() { *m = IntegrationSpecV1{} } func (m *IntegrationSpecV1) String() string { return proto.CompactTextString(m) } func (*IntegrationSpecV1) ProtoMessage() {} func (*IntegrationSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{303} + return fileDescriptor_9198ee693835762e, []int{307} } func (m *IntegrationSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17252,8 +17446,12 @@ type isIntegrationSpecV1_SubKindSpec interface { type IntegrationSpecV1_AWSOIDC struct { AWSOIDC *AWSOIDCIntegrationSpecV1 `protobuf:"bytes,1,opt,name=AWSOIDC,proto3,oneof" json:"aws_oidc,omitempty"` } +type IntegrationSpecV1_AzureOIDC struct { + AzureOIDC *AzureOIDCIntegrationSpecV1 `protobuf:"bytes,2,opt,name=AzureOIDC,proto3,oneof" json:"azure_oidc,omitempty"` +} -func (*IntegrationSpecV1_AWSOIDC) isIntegrationSpecV1_SubKindSpec() {} +func (*IntegrationSpecV1_AWSOIDC) isIntegrationSpecV1_SubKindSpec() {} +func (*IntegrationSpecV1_AzureOIDC) isIntegrationSpecV1_SubKindSpec() {} func (m *IntegrationSpecV1) GetSubKindSpec() isIntegrationSpecV1_SubKindSpec { if m != nil { @@ -17269,10 +17467,18 @@ func (m *IntegrationSpecV1) GetAWSOIDC() *AWSOIDCIntegrationSpecV1 { return nil } +func (m *IntegrationSpecV1) GetAzureOIDC() *AzureOIDCIntegrationSpecV1 { + if x, ok := m.GetSubKindSpec().(*IntegrationSpecV1_AzureOIDC); ok { + return x.AzureOIDC + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*IntegrationSpecV1) XXX_OneofWrappers() []interface{} { return []interface{}{ (*IntegrationSpecV1_AWSOIDC)(nil), + (*IntegrationSpecV1_AzureOIDC)(nil), } } @@ -17297,7 +17503,7 @@ func (m *AWSOIDCIntegrationSpecV1) Reset() { *m = AWSOIDCIntegrationSpec func (m *AWSOIDCIntegrationSpecV1) String() string { return proto.CompactTextString(m) } func (*AWSOIDCIntegrationSpecV1) ProtoMessage() {} func (*AWSOIDCIntegrationSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{304} + return fileDescriptor_9198ee693835762e, []int{308} } func (m *AWSOIDCIntegrationSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17326,6 +17532,52 @@ func (m *AWSOIDCIntegrationSpecV1) XXX_DiscardUnknown() { var xxx_messageInfo_AWSOIDCIntegrationSpecV1 proto.InternalMessageInfo +// AzureOIDCIntegrationSpecV1 contains the spec properties for the Azure OIDC SubKind Integration. +type AzureOIDCIntegrationSpecV1 struct { + // TenantID specifies the ID of Entra Tenant (Directory) + // that this plugin integrates with. + TenantID string `protobuf:"bytes,1,opt,name=TenantID,proto3" json:"tenant_id,omitempty"` + // ClientID specifies the ID of Azure enterprise application (client) + // that corresponds to this plugin. + ClientID string `protobuf:"bytes,2,opt,name=ClientID,proto3" json:"client_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AzureOIDCIntegrationSpecV1) Reset() { *m = AzureOIDCIntegrationSpecV1{} } +func (m *AzureOIDCIntegrationSpecV1) String() string { return proto.CompactTextString(m) } +func (*AzureOIDCIntegrationSpecV1) ProtoMessage() {} +func (*AzureOIDCIntegrationSpecV1) Descriptor() ([]byte, []int) { + return fileDescriptor_9198ee693835762e, []int{309} +} +func (m *AzureOIDCIntegrationSpecV1) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AzureOIDCIntegrationSpecV1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AzureOIDCIntegrationSpecV1.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AzureOIDCIntegrationSpecV1) XXX_Merge(src proto.Message) { + xxx_messageInfo_AzureOIDCIntegrationSpecV1.Merge(m, src) +} +func (m *AzureOIDCIntegrationSpecV1) XXX_Size() int { + return m.Size() +} +func (m *AzureOIDCIntegrationSpecV1) XXX_DiscardUnknown() { + xxx_messageInfo_AzureOIDCIntegrationSpecV1.DiscardUnknown(m) +} + +var xxx_messageInfo_AzureOIDCIntegrationSpecV1 proto.InternalMessageInfo + // HeadlessAuthentication holds data for an ongoing headless authentication attempt. type HeadlessAuthentication struct { // Header is the resource header. @@ -17349,7 +17601,7 @@ func (m *HeadlessAuthentication) Reset() { *m = HeadlessAuthentication{} func (m *HeadlessAuthentication) String() string { return proto.CompactTextString(m) } func (*HeadlessAuthentication) ProtoMessage() {} func (*HeadlessAuthentication) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{305} + return fileDescriptor_9198ee693835762e, []int{310} } func (m *HeadlessAuthentication) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17406,7 +17658,7 @@ func (m *WatchKind) Reset() { *m = WatchKind{} } func (m *WatchKind) String() string { return proto.CompactTextString(m) } func (*WatchKind) ProtoMessage() {} func (*WatchKind) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{306} + return fileDescriptor_9198ee693835762e, []int{311} } func (m *WatchKind) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17456,7 +17708,7 @@ func (m *WatchStatusV1) Reset() { *m = WatchStatusV1{} } func (m *WatchStatusV1) String() string { return proto.CompactTextString(m) } func (*WatchStatusV1) ProtoMessage() {} func (*WatchStatusV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{307} + return fileDescriptor_9198ee693835762e, []int{312} } func (m *WatchStatusV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17497,7 +17749,7 @@ func (m *WatchStatusSpecV1) Reset() { *m = WatchStatusSpecV1{} } func (m *WatchStatusSpecV1) String() string { return proto.CompactTextString(m) } func (*WatchStatusSpecV1) ProtoMessage() {} func (*WatchStatusSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{308} + return fileDescriptor_9198ee693835762e, []int{313} } func (m *WatchStatusSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17547,7 +17799,7 @@ func (m *ServerInfoV1) Reset() { *m = ServerInfoV1{} } func (m *ServerInfoV1) String() string { return proto.CompactTextString(m) } func (*ServerInfoV1) ProtoMessage() {} func (*ServerInfoV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{309} + return fileDescriptor_9198ee693835762e, []int{314} } func (m *ServerInfoV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17589,7 +17841,7 @@ func (m *ServerInfoSpecV1) Reset() { *m = ServerInfoSpecV1{} } func (m *ServerInfoSpecV1) String() string { return proto.CompactTextString(m) } func (*ServerInfoSpecV1) ProtoMessage() {} func (*ServerInfoSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{310} + return fileDescriptor_9198ee693835762e, []int{315} } func (m *ServerInfoSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17656,7 +17908,7 @@ func (m *JamfSpecV1) Reset() { *m = JamfSpecV1{} } func (m *JamfSpecV1) String() string { return proto.CompactTextString(m) } func (*JamfSpecV1) ProtoMessage() {} func (*JamfSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{311} + return fileDescriptor_9198ee693835762e, []int{316} } func (m *JamfSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17721,7 +17973,7 @@ func (m *JamfInventoryEntry) Reset() { *m = JamfInventoryEntry{} } func (m *JamfInventoryEntry) String() string { return proto.CompactTextString(m) } func (*JamfInventoryEntry) ProtoMessage() {} func (*JamfInventoryEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{312} + return fileDescriptor_9198ee693835762e, []int{317} } func (m *JamfInventoryEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17778,7 +18030,7 @@ type MessageWithHeader struct { func (m *MessageWithHeader) Reset() { *m = MessageWithHeader{} } func (*MessageWithHeader) ProtoMessage() {} func (*MessageWithHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{313} + return fileDescriptor_9198ee693835762e, []int{318} } func (m *MessageWithHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17842,7 +18094,7 @@ func (m *AWSMatcher) Reset() { *m = AWSMatcher{} } func (m *AWSMatcher) String() string { return proto.CompactTextString(m) } func (*AWSMatcher) ProtoMessage() {} func (*AWSMatcher) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{314} + return fileDescriptor_9198ee693835762e, []int{319} } func (m *AWSMatcher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17887,7 +18139,7 @@ func (m *AssumeRole) Reset() { *m = AssumeRole{} } func (m *AssumeRole) String() string { return proto.CompactTextString(m) } func (*AssumeRole) ProtoMessage() {} func (*AssumeRole) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{315} + return fileDescriptor_9198ee693835762e, []int{320} } func (m *AssumeRole) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17949,7 +18201,7 @@ func (m *InstallerParams) Reset() { *m = InstallerParams{} } func (m *InstallerParams) String() string { return proto.CompactTextString(m) } func (*InstallerParams) ProtoMessage() {} func (*InstallerParams) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{316} + return fileDescriptor_9198ee693835762e, []int{321} } func (m *InstallerParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17992,7 +18244,7 @@ func (m *AWSSSM) Reset() { *m = AWSSSM{} } func (m *AWSSSM) String() string { return proto.CompactTextString(m) } func (*AWSSSM) ProtoMessage() {} func (*AWSSSM) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{317} + return fileDescriptor_9198ee693835762e, []int{322} } func (m *AWSSSM) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18035,7 +18287,7 @@ func (m *AzureInstallerParams) Reset() { *m = AzureInstallerParams{} } func (m *AzureInstallerParams) String() string { return proto.CompactTextString(m) } func (*AzureInstallerParams) ProtoMessage() {} func (*AzureInstallerParams) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{318} + return fileDescriptor_9198ee693835762e, []int{323} } func (m *AzureInstallerParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18089,7 +18341,7 @@ func (m *AzureMatcher) Reset() { *m = AzureMatcher{} } func (m *AzureMatcher) String() string { return proto.CompactTextString(m) } func (*AzureMatcher) ProtoMessage() {} func (*AzureMatcher) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{319} + return fileDescriptor_9198ee693835762e, []int{324} } func (m *AzureMatcher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18144,7 +18396,7 @@ func (m *GCPMatcher) Reset() { *m = GCPMatcher{} } func (m *GCPMatcher) String() string { return proto.CompactTextString(m) } func (*GCPMatcher) ProtoMessage() {} func (*GCPMatcher) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{320} + return fileDescriptor_9198ee693835762e, []int{325} } func (m *GCPMatcher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18190,7 +18442,7 @@ func (m *KubernetesMatcher) Reset() { *m = KubernetesMatcher{} } func (m *KubernetesMatcher) String() string { return proto.CompactTextString(m) } func (*KubernetesMatcher) ProtoMessage() {} func (*KubernetesMatcher) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{321} + return fileDescriptor_9198ee693835762e, []int{326} } func (m *KubernetesMatcher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18232,7 +18484,7 @@ func (m *OktaOptions) Reset() { *m = OktaOptions{} } func (m *OktaOptions) String() string { return proto.CompactTextString(m) } func (*OktaOptions) ProtoMessage() {} func (*OktaOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{322} + return fileDescriptor_9198ee693835762e, []int{327} } func (m *OktaOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18274,7 +18526,7 @@ func (m *AccessGraphSync) Reset() { *m = AccessGraphSync{} } func (m *AccessGraphSync) String() string { return proto.CompactTextString(m) } func (*AccessGraphSync) ProtoMessage() {} func (*AccessGraphSync) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{323} + return fileDescriptor_9198ee693835762e, []int{328} } func (m *AccessGraphSync) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18320,7 +18572,7 @@ func (m *AccessGraphAWSSync) Reset() { *m = AccessGraphAWSSync{} } func (m *AccessGraphAWSSync) String() string { return proto.CompactTextString(m) } func (*AccessGraphAWSSync) ProtoMessage() {} func (*AccessGraphAWSSync) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{324} + return fileDescriptor_9198ee693835762e, []int{329} } func (m *AccessGraphAWSSync) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18668,6 +18920,10 @@ func init() { proto.RegisterType((*DiscordChannels)(nil), "types.DiscordChannels") proto.RegisterType((*PluginDiscordSettings)(nil), "types.PluginDiscordSettings") proto.RegisterMapType((map[string]*DiscordChannels)(nil), "types.PluginDiscordSettings.RoleToRecipientsEntry") + proto.RegisterType((*PluginEntraIDSettings)(nil), "types.PluginEntraIDSettings") + proto.RegisterType((*PluginEntraIDSyncSettings)(nil), "types.PluginEntraIDSyncSettings") + proto.RegisterType((*PluginEntraIDAccessGraphSettings)(nil), "types.PluginEntraIDAccessGraphSettings") + proto.RegisterType((*PluginEntraIDAppSSOSettings)(nil), "types.PluginEntraIDAppSSOSettings") proto.RegisterType((*PluginSCIMSettings)(nil), "types.PluginSCIMSettings") proto.RegisterType((*PluginBootstrapCredentialsV1)(nil), "types.PluginBootstrapCredentialsV1") proto.RegisterType((*PluginIdSecretCredential)(nil), "types.PluginIdSecretCredential") @@ -18708,6 +18964,7 @@ func init() { proto.RegisterType((*IntegrationV1)(nil), "types.IntegrationV1") proto.RegisterType((*IntegrationSpecV1)(nil), "types.IntegrationSpecV1") proto.RegisterType((*AWSOIDCIntegrationSpecV1)(nil), "types.AWSOIDCIntegrationSpecV1") + proto.RegisterType((*AzureOIDCIntegrationSpecV1)(nil), "types.AzureOIDCIntegrationSpecV1") proto.RegisterType((*HeadlessAuthentication)(nil), "types.HeadlessAuthentication") proto.RegisterType((*WatchKind)(nil), "types.WatchKind") proto.RegisterMapType((map[string]string)(nil), "types.WatchKind.FilterEntry") @@ -18735,1609 +18992,1624 @@ func init() { func init() { proto.RegisterFile("teleport/legacy/types/types.proto", fileDescriptor_9198ee693835762e) } var fileDescriptor_9198ee693835762e = []byte{ - // 25618 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6d, 0x70, 0x5c, 0x59, - 0x76, 0x18, 0x36, 0xfd, 0x01, 0xa0, 0x71, 0xf0, 0xd5, 0xb8, 0x00, 0x49, 0x10, 0x33, 0x1c, 0x70, - 0x1e, 0x67, 0x38, 0xe4, 0x7c, 0x90, 0x4b, 0x70, 0x87, 0xbb, 0xb3, 0xf3, 0xb5, 0x8d, 0x6e, 0x90, - 0x68, 0x12, 0x04, 0x7a, 0x5f, 0x83, 0xc4, 0x8e, 0x66, 0x77, 0x7b, 0x1f, 0xfa, 0x5d, 0x00, 0x6f, - 0xd0, 0xdd, 0xaf, 0xf7, 0xbd, 0xd7, 0x24, 0xb1, 0xb2, 0xa3, 0x95, 0x6c, 0x79, 0xa3, 0xc8, 0xfa, - 0x72, 0x56, 0xd6, 0x3a, 0xb1, 0x55, 0x2a, 0x95, 0xed, 0xc8, 0x89, 0xa5, 0xa4, 0x24, 0xbb, 0xec, - 0x94, 0x62, 0xc5, 0x4a, 0xa9, 0x54, 0x8a, 0x5c, 0x4e, 0x54, 0x95, 0xa4, 0x92, 0x6c, 0x54, 0x50, - 0x64, 0x39, 0xae, 0x14, 0x2b, 0x49, 0xc9, 0x51, 0xe2, 0x4a, 0x36, 0xa5, 0x24, 0x75, 0xcf, 0xbd, - 0xf7, 0xbd, 0x7b, 0xdf, 0x7b, 0xdd, 0x68, 0xcc, 0x70, 0x24, 0x71, 0x93, 0x3f, 0x24, 0xfa, 0xdc, - 0x73, 0xce, 0xfd, 0x7c, 0xf7, 0x9e, 0x7b, 0xee, 0xf9, 0x80, 0x17, 0x02, 0xda, 0xa2, 0x5d, 0xd7, - 0x0b, 0xae, 0xb6, 0xe8, 0x9e, 0xd5, 0x3c, 0xbc, 0x1a, 0x1c, 0x76, 0xa9, 0xcf, 0xff, 0xbd, 0xd2, - 0xf5, 0xdc, 0xc0, 0x25, 0x23, 0xf8, 0x63, 0x71, 0x7e, 0xcf, 0xdd, 0x73, 0x11, 0x72, 0x95, 0xfd, - 0xc5, 0x0b, 0x17, 0x97, 0xf6, 0x5c, 0x77, 0xaf, 0x45, 0xaf, 0xe2, 0xaf, 0x9d, 0xde, 0xee, 0xd5, - 0xc0, 0x69, 0x53, 0x3f, 0xb0, 0xda, 0x5d, 0x81, 0x70, 0x39, 0xac, 0xc0, 0x0a, 0x02, 0x56, 0x12, - 0x38, 0x6e, 0xe7, 0xea, 0x83, 0x6b, 0xea, 0x4f, 0x81, 0xfa, 0x7a, 0x7a, 0x5b, 0x1e, 0x7a, 0x56, - 0xb7, 0x4b, 0xbd, 0xe8, 0x0f, 0x8e, 0x6e, 0xfc, 0x83, 0x1c, 0x8c, 0xdf, 0xa1, 0xb4, 0x5b, 0x6a, - 0x39, 0x0f, 0x28, 0xb9, 0x00, 0xf9, 0x0d, 0xab, 0x4d, 0x17, 0x32, 0xe7, 0x33, 0x97, 0xc6, 0x57, - 0x66, 0x1e, 0x1f, 0x2d, 0x4d, 0xf8, 0xd4, 0x7b, 0x40, 0xbd, 0x46, 0xc7, 0x6a, 0x53, 0x13, 0x0b, - 0xc9, 0xab, 0x30, 0xce, 0xfe, 0xf7, 0xbb, 0x56, 0x93, 0x2e, 0x64, 0x11, 0x73, 0xea, 0xf1, 0xd1, - 0xd2, 0x78, 0x47, 0x02, 0xcd, 0xa8, 0x9c, 0x5c, 0x84, 0xb1, 0x75, 0x6a, 0xf9, 0xb4, 0x5a, 0x59, - 0xc8, 0x9d, 0xcf, 0x5c, 0xca, 0xad, 0x4c, 0x3e, 0x3e, 0x5a, 0x2a, 0xb4, 0x18, 0xa8, 0xe1, 0xd8, - 0xa6, 0x2c, 0x24, 0x55, 0x18, 0x5b, 0x7d, 0xd4, 0x75, 0x3c, 0xea, 0x2f, 0xe4, 0xcf, 0x67, 0x2e, - 0x4d, 0x2c, 0x2f, 0x5e, 0xe1, 0x83, 0x72, 0x45, 0x0e, 0xca, 0x95, 0x2d, 0x39, 0x28, 0x2b, 0x73, - 0xbf, 0x75, 0xb4, 0xf4, 0xcc, 0xe3, 0xa3, 0xa5, 0x31, 0xca, 0x49, 0x7e, 0xf2, 0xf7, 0x96, 0x32, - 0xa6, 0xa4, 0x27, 0x6f, 0x43, 0x7e, 0xeb, 0xb0, 0x4b, 0x17, 0xc6, 0xcf, 0x67, 0x2e, 0x4d, 0x2f, - 0x3f, 0x7f, 0x85, 0x4f, 0x43, 0xd8, 0xc9, 0xe8, 0x2f, 0x86, 0xb5, 0x52, 0x78, 0x7c, 0xb4, 0x94, - 0x67, 0x28, 0x26, 0x52, 0x91, 0xd7, 0x61, 0x74, 0xcd, 0xf5, 0x83, 0x6a, 0x65, 0x01, 0xb0, 0x6b, - 0xa7, 0x1e, 0x1f, 0x2d, 0xcd, 0xee, 0xbb, 0x7e, 0xd0, 0x70, 0xec, 0xd7, 0xdc, 0xb6, 0x13, 0xd0, - 0x76, 0x37, 0x38, 0x34, 0x05, 0x92, 0xf1, 0x08, 0xa6, 0x34, 0x7e, 0x64, 0x02, 0xc6, 0xee, 0x6d, - 0xdc, 0xd9, 0xd8, 0xdc, 0xde, 0x28, 0x3e, 0x43, 0x0a, 0x90, 0xdf, 0xd8, 0xac, 0xac, 0x16, 0x33, - 0x64, 0x0c, 0x72, 0xa5, 0x5a, 0xad, 0x98, 0x25, 0x93, 0x50, 0xa8, 0x94, 0xb6, 0x4a, 0x2b, 0xa5, - 0xfa, 0x6a, 0x31, 0x47, 0xe6, 0x60, 0x66, 0xbb, 0xba, 0x51, 0xd9, 0xdc, 0xae, 0x37, 0x2a, 0xab, - 0xf5, 0x3b, 0x5b, 0x9b, 0xb5, 0x62, 0x9e, 0x4c, 0x03, 0xdc, 0xb9, 0xb7, 0xb2, 0x6a, 0x6e, 0xac, - 0x6e, 0xad, 0xd6, 0x8b, 0x23, 0x64, 0x1e, 0x8a, 0x92, 0xa4, 0x51, 0x5f, 0x35, 0xef, 0x57, 0xcb, - 0xab, 0xc5, 0x51, 0xe3, 0x1f, 0xe5, 0xa0, 0x70, 0x97, 0x06, 0x96, 0x6d, 0x05, 0x16, 0x79, 0x4e, - 0x9b, 0x38, 0xec, 0x93, 0x32, 0x63, 0x17, 0x92, 0x33, 0x36, 0xf2, 0xf8, 0x68, 0x29, 0xf3, 0xba, - 0x3a, 0x53, 0x6f, 0xc1, 0x44, 0x85, 0xfa, 0x4d, 0xcf, 0xe9, 0xb2, 0xd5, 0x84, 0xb3, 0x35, 0xbe, - 0x72, 0xf6, 0xf1, 0xd1, 0xd2, 0x29, 0x3b, 0x02, 0x2b, 0x23, 0xa0, 0x62, 0x93, 0x2a, 0x8c, 0xae, - 0x5b, 0x3b, 0xb4, 0xe5, 0x2f, 0x8c, 0x9c, 0xcf, 0x5d, 0x9a, 0x58, 0x7e, 0x56, 0x8c, 0xba, 0x6c, - 0xe0, 0x15, 0x5e, 0xba, 0xda, 0x09, 0xbc, 0xc3, 0x95, 0xf9, 0xc7, 0x47, 0x4b, 0xc5, 0x16, 0x02, - 0xd4, 0x11, 0xe5, 0x28, 0xa4, 0x1e, 0xad, 0x84, 0xd1, 0x63, 0x57, 0xc2, 0xb9, 0xdf, 0x3a, 0x5a, - 0xca, 0xb0, 0x19, 0x12, 0x2b, 0x21, 0xe2, 0xa7, 0xaf, 0x09, 0x03, 0xb2, 0xd5, 0xca, 0xc2, 0x18, - 0xae, 0x40, 0xf2, 0xf8, 0x68, 0x69, 0x52, 0x9d, 0xcc, 0x85, 0x8c, 0x99, 0xad, 0x56, 0xc8, 0x32, - 0x14, 0x4c, 0xfa, 0xc0, 0xf1, 0x59, 0xef, 0x0b, 0xd8, 0xfb, 0xd3, 0x8f, 0x8f, 0x96, 0x88, 0x27, - 0x60, 0x4a, 0x53, 0x43, 0xbc, 0xc5, 0x37, 0x61, 0x42, 0xe9, 0x19, 0x29, 0x42, 0xee, 0x80, 0x1e, - 0xf2, 0x59, 0x30, 0xd9, 0x9f, 0x64, 0x1e, 0x46, 0x1e, 0x58, 0xad, 0x9e, 0x18, 0x76, 0x93, 0xff, - 0xf8, 0x5c, 0xf6, 0xb3, 0x19, 0xe3, 0xaf, 0xe4, 0xa1, 0x60, 0xba, 0xfc, 0xdb, 0x25, 0x97, 0x61, - 0xa4, 0x1e, 0x58, 0x81, 0x9c, 0xc0, 0xb9, 0xc7, 0x47, 0x4b, 0x33, 0xec, 0xbb, 0xa6, 0x4a, 0xad, - 0x1c, 0x83, 0xa1, 0xd6, 0xf6, 0x2d, 0x5f, 0x4e, 0x24, 0xa2, 0x76, 0x19, 0x40, 0x45, 0x45, 0x0c, - 0x72, 0x11, 0xf2, 0x77, 0x5d, 0x9b, 0x8a, 0xb9, 0x64, 0xfd, 0x9e, 0x6e, 0xbb, 0xb6, 0x8a, 0x88, - 0xe5, 0xe4, 0x35, 0x18, 0x2f, 0xf7, 0x3c, 0x8f, 0x76, 0xd8, 0xb2, 0xcf, 0x23, 0xf2, 0xf4, 0xe3, - 0xa3, 0x25, 0x68, 0x72, 0x20, 0xfb, 0x50, 0x23, 0x04, 0x36, 0x41, 0xf5, 0xc0, 0xf2, 0x02, 0x6a, - 0x2f, 0x8c, 0x0c, 0x35, 0x41, 0xec, 0x53, 0x9d, 0xf5, 0x39, 0x49, 0x7c, 0x82, 0x04, 0x27, 0xb2, - 0x06, 0x13, 0xb7, 0x3c, 0xab, 0x49, 0x6b, 0xd4, 0x73, 0x5c, 0x1b, 0x67, 0x3e, 0xb7, 0x72, 0xf1, - 0xf1, 0xd1, 0xd2, 0xe9, 0x3d, 0x06, 0x6e, 0x74, 0x11, 0x1e, 0x51, 0x7f, 0xf7, 0x68, 0xa9, 0x50, - 0xe9, 0x79, 0x38, 0x7a, 0xa6, 0x4a, 0x4a, 0xbe, 0xca, 0xa6, 0xc4, 0x0f, 0x70, 0x68, 0xa9, 0x8d, - 0x73, 0x3e, 0xb8, 0x89, 0x86, 0x68, 0xe2, 0xe9, 0x96, 0xe5, 0x07, 0x0d, 0x8f, 0xd3, 0xc5, 0xda, - 0xa9, 0xb2, 0x24, 0x9b, 0x50, 0xa8, 0x37, 0xf7, 0xa9, 0xdd, 0x6b, 0x51, 0x5c, 0x28, 0x13, 0xcb, - 0x67, 0xc4, 0x72, 0x97, 0xf3, 0x29, 0x8b, 0x57, 0x16, 0x05, 0x6f, 0xe2, 0x0b, 0x88, 0xba, 0x8a, - 0x24, 0xd6, 0xe7, 0x0a, 0xdf, 0xfe, 0xb9, 0xa5, 0x67, 0xbe, 0xf1, 0xbb, 0xe7, 0x9f, 0x31, 0xfe, - 0x41, 0x16, 0x8a, 0x71, 0x26, 0x64, 0x17, 0xa6, 0xee, 0x75, 0x6d, 0x2b, 0xa0, 0xe5, 0x96, 0x43, - 0x3b, 0x81, 0x8f, 0x8b, 0x64, 0x70, 0x9f, 0x5e, 0x14, 0xf5, 0x2e, 0xf4, 0x90, 0xb0, 0xd1, 0xe4, - 0x94, 0xb1, 0x5e, 0xe9, 0x6c, 0xa3, 0x7a, 0xea, 0xb8, 0xe7, 0xfb, 0xb8, 0xc2, 0x4e, 0x56, 0x0f, - 0x3f, 0x2d, 0xfa, 0xd4, 0x23, 0xd8, 0x8a, 0x05, 0xd4, 0xb1, 0x77, 0x0e, 0x71, 0x65, 0x0e, 0xbf, - 0x80, 0x18, 0x49, 0xca, 0x02, 0x62, 0x60, 0xe3, 0x9f, 0x67, 0x60, 0xda, 0xa4, 0xbe, 0xdb, 0xf3, - 0x9a, 0x74, 0x8d, 0x5a, 0x36, 0xf5, 0xd8, 0xf2, 0xbf, 0xe3, 0x74, 0x6c, 0xf1, 0x4d, 0xe1, 0xf2, - 0x3f, 0x70, 0x3a, 0xea, 0x2e, 0x8e, 0xe5, 0xe4, 0x53, 0x30, 0x56, 0xef, 0xed, 0x20, 0x6a, 0x36, - 0xfa, 0xee, 0xfd, 0xde, 0x4e, 0x23, 0x86, 0x2e, 0xd1, 0xc8, 0x55, 0x18, 0xbb, 0x4f, 0x3d, 0x3f, - 0xda, 0x27, 0xf1, 0x94, 0x78, 0xc0, 0x41, 0x2a, 0x81, 0xc0, 0x22, 0xb7, 0xa2, 0xbd, 0x5a, 0x9c, - 0x6f, 0x33, 0xb1, 0x1d, 0x32, 0x5a, 0x2a, 0x6d, 0x01, 0x51, 0x97, 0x8a, 0xc4, 0x32, 0x7e, 0x2a, - 0x0b, 0xc5, 0x8a, 0x15, 0x58, 0x3b, 0x96, 0x2f, 0xc6, 0xf3, 0xfe, 0x75, 0xb6, 0xfb, 0x2b, 0x1d, - 0xc5, 0xdd, 0x9f, 0xb5, 0xfc, 0x23, 0x77, 0xef, 0xa5, 0x78, 0xf7, 0x26, 0xd8, 0x61, 0x2b, 0xba, - 0x17, 0x75, 0xea, 0x9d, 0xe3, 0x3b, 0x55, 0x14, 0x9d, 0x2a, 0xc8, 0x4e, 0x45, 0x5d, 0x21, 0xef, - 0x40, 0xbe, 0xde, 0xa5, 0x4d, 0xb1, 0x89, 0xc8, 0x13, 0x43, 0xef, 0x1c, 0x43, 0xb8, 0x7f, 0x7d, - 0x65, 0x52, 0xb0, 0xc9, 0xfb, 0x5d, 0xda, 0x34, 0x91, 0x4c, 0xf9, 0x68, 0xfe, 0x61, 0x0e, 0xe6, - 0xd3, 0xc8, 0xd4, 0x7e, 0x8c, 0x0e, 0xe8, 0xc7, 0x25, 0x28, 0xb0, 0xd3, 0x9c, 0x1d, 0x98, 0xb8, - 0x5d, 0x8c, 0x73, 0x21, 0x65, 0x5f, 0xc0, 0xcc, 0xb0, 0x94, 0x5c, 0x08, 0x85, 0x83, 0x42, 0xc4, - 0x4f, 0x08, 0x07, 0x52, 0x24, 0x60, 0x73, 0x2d, 0x3f, 0x61, 0x94, 0x21, 0xa2, 0x61, 0x91, 0xe0, - 0x68, 0xae, 0x3d, 0x01, 0xd1, 0x0e, 0x17, 0x79, 0x28, 0xac, 0x42, 0x41, 0x76, 0x6b, 0x61, 0x12, - 0x19, 0xcd, 0xc6, 0x06, 0xe9, 0xfe, 0x75, 0x3e, 0x99, 0xb6, 0xf8, 0xad, 0xb2, 0x91, 0x38, 0xe4, - 0x3a, 0x14, 0x6a, 0x9e, 0xfb, 0xe8, 0xb0, 0x5a, 0xf1, 0x17, 0xa6, 0xce, 0xe7, 0x2e, 0x8d, 0xaf, - 0x9c, 0x79, 0x7c, 0xb4, 0x34, 0xd7, 0x65, 0xb0, 0x86, 0x63, 0xab, 0x67, 0x70, 0x88, 0x78, 0x3b, - 0x5f, 0xc8, 0x14, 0xb3, 0xb7, 0xf3, 0x85, 0x6c, 0x31, 0x77, 0x3b, 0x5f, 0xc8, 0x15, 0xf3, 0xb7, - 0xf3, 0x85, 0x7c, 0x71, 0xe4, 0x76, 0xbe, 0x30, 0x52, 0x1c, 0xbd, 0x9d, 0x2f, 0x8c, 0x17, 0xe1, - 0x76, 0xbe, 0x30, 0x51, 0x9c, 0xd4, 0xe4, 0x00, 0x64, 0x10, 0xb8, 0x4d, 0xb7, 0x65, 0xe6, 0xee, - 0x99, 0x55, 0x73, 0xb4, 0x5c, 0x2a, 0x53, 0x2f, 0x30, 0x73, 0xa5, 0xed, 0xba, 0x39, 0x55, 0x39, - 0xec, 0x58, 0x6d, 0xa7, 0xc9, 0x0f, 0x4c, 0x33, 0x77, 0xab, 0x5c, 0x33, 0x4a, 0x30, 0x1d, 0xf5, - 0x65, 0xdd, 0xf1, 0x03, 0x72, 0x15, 0xc6, 0x25, 0x84, 0x6d, 0x74, 0xb9, 0xd4, 0x5e, 0x9b, 0x11, - 0x8e, 0xf1, 0x9b, 0x59, 0x80, 0xa8, 0xe4, 0x29, 0xfd, 0x16, 0x3e, 0xa3, 0x7d, 0x0b, 0xa7, 0xe2, - 0xdf, 0x42, 0xdf, 0xaf, 0x80, 0xbc, 0x07, 0xa3, 0x4c, 0x2c, 0xe8, 0x49, 0x61, 0xe9, 0x4c, 0x9c, - 0x14, 0x0b, 0xef, 0x5f, 0x5f, 0x99, 0x16, 0xc4, 0xa3, 0x3e, 0x42, 0x4c, 0x41, 0xa6, 0x7c, 0x46, - 0x3f, 0x3b, 0x16, 0x4d, 0x86, 0xf8, 0x80, 0x2e, 0x41, 0x38, 0xa1, 0x62, 0x40, 0xf1, 0xcb, 0xe8, - 0xca, 0x49, 0x0e, 0x4b, 0xc9, 0x59, 0x60, 0x13, 0x2e, 0x06, 0x75, 0xec, 0xf1, 0xd1, 0x52, 0xae, - 0xe7, 0x39, 0xb8, 0x08, 0xc8, 0x55, 0x10, 0xcb, 0x40, 0x0c, 0x20, 0x5b, 0x7d, 0xb3, 0x4d, 0xab, - 0xd1, 0xa4, 0x5e, 0xa0, 0x09, 0x61, 0x02, 0x8d, 0x74, 0x41, 0x5f, 0x2a, 0x0b, 0x79, 0x5c, 0x06, - 0x97, 0x52, 0x47, 0xe5, 0x8a, 0x86, 0xca, 0x05, 0xcc, 0xf3, 0xf2, 0x54, 0xb2, 0x79, 0x59, 0x23, - 0x21, 0x6c, 0xea, 0x15, 0x90, 0xeb, 0xc0, 0x56, 0xa8, 0x18, 0x7d, 0x10, 0xf5, 0x94, 0xb6, 0xeb, - 0x2b, 0xa7, 0x04, 0xa7, 0x29, 0xeb, 0xa1, 0x4a, 0xce, 0xb0, 0xc9, 0x5b, 0xc0, 0x96, 0xb0, 0x18, - 0x77, 0x22, 0x88, 0x6e, 0x95, 0x6b, 0xe5, 0x96, 0xdb, 0xb3, 0xeb, 0x5f, 0x58, 0x8f, 0x88, 0xf7, - 0x9a, 0x5d, 0x95, 0xf8, 0x56, 0xb9, 0x46, 0xde, 0x82, 0x91, 0xd2, 0xd7, 0x7b, 0x1e, 0x15, 0xf2, - 0xc9, 0xa4, 0xac, 0x93, 0xc1, 0x56, 0xce, 0x08, 0xc2, 0x19, 0x8b, 0xfd, 0x54, 0xe5, 0x3a, 0x2c, - 0x67, 0x35, 0x6f, 0xad, 0xd7, 0x85, 0xec, 0x41, 0x62, 0xc3, 0xb2, 0xb5, 0xae, 0x34, 0x3b, 0xd0, - 0x7a, 0xcd, 0xa8, 0xc8, 0x55, 0xc8, 0x96, 0x2a, 0x78, 0x39, 0x9a, 0x58, 0x1e, 0x97, 0xd5, 0x56, - 0x56, 0xe6, 0x05, 0xc9, 0xa4, 0xa5, 0x7e, 0x06, 0xd9, 0x52, 0x85, 0xac, 0xc0, 0xc8, 0xdd, 0xc3, - 0xfa, 0x17, 0xd6, 0xc5, 0x66, 0x36, 0x27, 0xd7, 0x35, 0x83, 0x6d, 0xe2, 0x67, 0xef, 0x47, 0x2d, - 0x6e, 0x1f, 0xfa, 0x5f, 0x6b, 0xa9, 0x2d, 0x46, 0x34, 0x52, 0x83, 0xf1, 0x92, 0xdd, 0x76, 0x3a, - 0xf7, 0x7c, 0xea, 0x2d, 0x4c, 0x20, 0x9f, 0x85, 0x58, 0xbb, 0xc3, 0xf2, 0x95, 0x85, 0xc7, 0x47, - 0x4b, 0xf3, 0x16, 0xfb, 0xd9, 0xe8, 0xf9, 0xd4, 0x53, 0xb8, 0x45, 0x4c, 0x48, 0x0d, 0xe0, 0xae, - 0xdb, 0xd9, 0x73, 0x4b, 0x41, 0xcb, 0xf2, 0x63, 0xdb, 0x63, 0x54, 0x10, 0x8a, 0x0f, 0xa7, 0xda, - 0x0c, 0xd6, 0xb0, 0x18, 0x50, 0x61, 0xa8, 0xf0, 0x20, 0x37, 0x61, 0x74, 0xd3, 0xb3, 0x9a, 0x2d, - 0xba, 0x30, 0x85, 0xdc, 0xe6, 0x05, 0x37, 0x0e, 0x94, 0x3d, 0x5d, 0x10, 0x0c, 0x8b, 0x2e, 0x82, - 0xd5, 0x0b, 0x0c, 0x47, 0x5c, 0xdc, 0x06, 0x92, 0x5c, 0x93, 0x29, 0x57, 0x83, 0x57, 0xd5, 0xab, - 0x41, 0xf4, 0xd1, 0x97, 0xdd, 0x76, 0xdb, 0xea, 0xd8, 0x48, 0x7b, 0x7f, 0x59, 0xbd, 0x31, 0x7c, - 0x0d, 0x66, 0x13, 0x83, 0x75, 0xcc, 0xcd, 0xef, 0x5d, 0x98, 0xa9, 0xd0, 0x5d, 0xab, 0xd7, 0x0a, - 0xc2, 0x93, 0x84, 0x7f, 0xa2, 0x78, 0x07, 0xb3, 0x79, 0x51, 0x43, 0x1e, 0x1f, 0x66, 0x1c, 0xd9, - 0x78, 0x07, 0xa6, 0xb4, 0xee, 0xb3, 0xab, 0x42, 0xa9, 0x67, 0x3b, 0x01, 0x4e, 0x64, 0x26, 0xba, - 0x2a, 0x58, 0x0c, 0x88, 0xd3, 0x65, 0x46, 0x08, 0xc6, 0xdf, 0x54, 0xa5, 0x15, 0xb1, 0x13, 0xb1, - 0x1b, 0xb6, 0xd8, 0x0f, 0x32, 0x91, 0xec, 0x94, 0xd8, 0x0f, 0xc2, 0xdd, 0xe0, 0x32, 0xff, 0x36, - 0xb3, 0x89, 0x6f, 0x73, 0x42, 0xcc, 0x44, 0xce, 0x7a, 0xe8, 0xf3, 0x2f, 0x32, 0x5c, 0xa9, 0xb9, - 0x8f, 0xbe, 0x52, 0xdf, 0x83, 0xc9, 0xbb, 0x56, 0xc7, 0xda, 0xa3, 0x36, 0xeb, 0x01, 0xdf, 0x7b, - 0xc6, 0x57, 0x9e, 0x7d, 0x7c, 0xb4, 0x74, 0xa6, 0xcd, 0xe1, 0xd8, 0x4b, 0x75, 0x11, 0x69, 0x04, - 0xe4, 0x9a, 0xfc, 0xb2, 0x47, 0x52, 0xbe, 0xec, 0x29, 0x51, 0xfb, 0x08, 0x7e, 0xd9, 0xe2, 0x7b, - 0x36, 0xfe, 0xb7, 0x02, 0xf6, 0x91, 0xbc, 0x06, 0xa3, 0x26, 0xdd, 0x63, 0x47, 0x4d, 0x26, 0x9a, - 0x24, 0x0f, 0x21, 0xea, 0xc0, 0x70, 0x1c, 0x94, 0x33, 0xa8, 0xed, 0xef, 0x3b, 0xbb, 0x81, 0x18, - 0x9d, 0x50, 0xce, 0x10, 0x60, 0x45, 0xce, 0x10, 0x10, 0xfd, 0x12, 0xcb, 0x61, 0x6c, 0xf7, 0x33, - 0x2b, 0x75, 0x31, 0x68, 0x72, 0x84, 0xcd, 0x8a, 0xb2, 0x8d, 0x78, 0x9a, 0x94, 0xc0, 0xb0, 0xc9, - 0x0d, 0x18, 0x2f, 0x35, 0x9b, 0x6e, 0x4f, 0xb9, 0x33, 0xf2, 0xef, 0x96, 0x03, 0x75, 0x6d, 0x49, - 0x84, 0x4a, 0xea, 0x30, 0xb1, 0xca, 0x2e, 0x5a, 0x4e, 0xd9, 0x6a, 0xee, 0xcb, 0x41, 0x92, 0x7b, - 0x98, 0x52, 0x12, 0x7d, 0xb9, 0x14, 0x81, 0x4d, 0x06, 0x54, 0xd5, 0x0f, 0x0a, 0x2e, 0xd9, 0x82, - 0x89, 0x3a, 0x6d, 0x7a, 0x34, 0xa8, 0x07, 0xae, 0x47, 0x63, 0x5b, 0xb2, 0x52, 0xb2, 0xf2, 0xbc, - 0xbc, 0xeb, 0xf9, 0x08, 0x6c, 0xf8, 0x0c, 0xaa, 0x72, 0x55, 0x90, 0xb9, 0xd0, 0xde, 0x76, 0xbd, - 0xc3, 0xca, 0x8a, 0xd8, 0xa6, 0xa3, 0x33, 0x9d, 0x83, 0x55, 0xa1, 0x9d, 0x41, 0xec, 0x1d, 0x5d, - 0x68, 0xe7, 0x58, 0x38, 0x53, 0x95, 0x3a, 0xca, 0x56, 0x62, 0xd3, 0x9e, 0x89, 0x46, 0x19, 0xc1, - 0xca, 0x4c, 0xd9, 0x3e, 0x4a, 0x66, 0xda, 0x4c, 0x09, 0x2c, 0xd2, 0x05, 0x22, 0x67, 0x8d, 0x0b, - 0xba, 0x2d, 0xea, 0xfb, 0x62, 0x2f, 0x3f, 0x1b, 0x9b, 0xfc, 0x08, 0x61, 0xe5, 0x25, 0xc1, 0xfc, - 0x9c, 0x5c, 0x06, 0xe2, 0x9e, 0xc6, 0x0a, 0x95, 0x7a, 0x52, 0x78, 0x93, 0x37, 0x01, 0x56, 0x1f, - 0x05, 0xd4, 0xeb, 0x58, 0xad, 0x50, 0x25, 0x86, 0x4a, 0x21, 0x2a, 0xa0, 0xfa, 0x44, 0x2b, 0xc8, - 0xa4, 0x0c, 0x53, 0x25, 0xdf, 0xef, 0xb5, 0xa9, 0xe9, 0xb6, 0x68, 0xc9, 0xdc, 0xc0, 0x7d, 0x7f, - 0x7c, 0xe5, 0xdc, 0xe3, 0xa3, 0xa5, 0xb3, 0x16, 0x16, 0x34, 0x3c, 0xb7, 0x45, 0x1b, 0x96, 0xa7, - 0xae, 0x6e, 0x9d, 0x86, 0x6c, 0x02, 0x6c, 0x76, 0x69, 0xa7, 0x4e, 0x2d, 0xaf, 0xb9, 0x1f, 0xdb, - 0xe6, 0xa3, 0x82, 0x95, 0xe7, 0x44, 0x0f, 0xe7, 0xdd, 0x2e, 0xed, 0xf8, 0x08, 0x53, 0x5b, 0x15, - 0x61, 0x92, 0x6d, 0x98, 0xa9, 0x96, 0xee, 0xd6, 0xdc, 0x96, 0xd3, 0x3c, 0x14, 0x92, 0xd3, 0x34, - 0x2a, 0x0a, 0x4f, 0x0b, 0xae, 0xb1, 0x52, 0xbe, 0x3d, 0x39, 0x56, 0xbb, 0xd1, 0x45, 0x68, 0x43, - 0xc8, 0x4f, 0x71, 0x2e, 0xe4, 0x7d, 0xb6, 0x06, 0x7d, 0x26, 0x0c, 0x6e, 0x59, 0x7b, 0xfe, 0xc2, - 0x8c, 0xa6, 0x07, 0x2b, 0x6d, 0xd7, 0xaf, 0x28, 0xa5, 0x5c, 0x4c, 0x59, 0xe4, 0x0b, 0x11, 0xa1, - 0x8d, 0xc0, 0xda, 0xf3, 0xf5, 0x85, 0x18, 0x62, 0x2f, 0xbe, 0x0b, 0xc5, 0x38, 0xf1, 0x49, 0x54, - 0x4d, 0xb7, 0xf3, 0x85, 0xa9, 0xe2, 0xb4, 0xd2, 0xe2, 0xd5, 0x47, 0x8e, 0x1f, 0xf8, 0xc6, 0xf7, - 0x6b, 0x5f, 0x0d, 0xfb, 0xa2, 0xef, 0xd0, 0xc3, 0x9a, 0x47, 0x77, 0x9d, 0x47, 0x62, 0x03, 0xc2, - 0x2f, 0xfa, 0x80, 0x1e, 0x36, 0xba, 0x08, 0x55, 0xbf, 0xe8, 0x10, 0x95, 0x7c, 0x1a, 0x0a, 0x77, - 0xee, 0xd6, 0xef, 0xd0, 0xc3, 0x6a, 0x45, 0x1c, 0x2e, 0x9c, 0xac, 0xed, 0x37, 0x18, 0xa9, 0xb6, - 0x3e, 0x42, 0x4c, 0x63, 0x25, 0xda, 0xbd, 0x58, 0xcd, 0xe5, 0x56, 0xcf, 0x0f, 0xa8, 0x57, 0xad, - 0xa8, 0x35, 0x37, 0x39, 0x30, 0xb6, 0x97, 0x84, 0xa8, 0xc6, 0x3f, 0xcc, 0xe2, 0xce, 0xc5, 0x16, - 0x69, 0xb5, 0xe3, 0x07, 0x56, 0xa7, 0x49, 0x43, 0x06, 0xb8, 0x48, 0x1d, 0x01, 0x8d, 0x2d, 0xd2, - 0x08, 0x59, 0xaf, 0x3a, 0x3b, 0x74, 0xd5, 0xac, 0x4a, 0xa9, 0x6d, 0x10, 0xaa, 0x6d, 0x51, 0xa5, - 0x27, 0xa0, 0xb1, 0x2a, 0x23, 0x64, 0x72, 0x11, 0xc6, 0xaa, 0xa5, 0xbb, 0xa5, 0x5e, 0xb0, 0x8f, - 0xfb, 0x66, 0x81, 0xcb, 0xd4, 0x6c, 0x85, 0x59, 0xbd, 0x60, 0xdf, 0x94, 0x85, 0xe4, 0x2a, 0xde, - 0x55, 0x3a, 0x34, 0xe0, 0x4a, 0x55, 0x71, 0x50, 0xfa, 0x1c, 0x14, 0xbb, 0xaa, 0x30, 0x10, 0x79, - 0x05, 0x46, 0xee, 0xd7, 0xca, 0xd5, 0x8a, 0xb8, 0xec, 0xe2, 0xe9, 0xf1, 0xa0, 0xdb, 0xd4, 0x5b, - 0xc2, 0x51, 0x8c, 0x5f, 0xcf, 0x44, 0x7b, 0x12, 0xb9, 0xa8, 0xc9, 0x10, 0xa8, 0x28, 0x61, 0x32, - 0x84, 0xaa, 0x28, 0x41, 0x69, 0xc2, 0x04, 0x52, 0xee, 0xf9, 0x81, 0xdb, 0x5e, 0xed, 0xd8, 0x5d, - 0xd7, 0xe9, 0x04, 0x48, 0xc5, 0x47, 0xcd, 0x78, 0x7c, 0xb4, 0xf4, 0x7c, 0x13, 0x4b, 0x1b, 0x54, - 0x14, 0x37, 0x62, 0x5c, 0x52, 0xa8, 0x3f, 0xc6, 0x40, 0x1a, 0xbf, 0x9d, 0xd5, 0xce, 0x12, 0xd6, - 0x3c, 0x93, 0x76, 0x5b, 0x4e, 0x13, 0xaf, 0xcf, 0xb7, 0x3c, 0xb7, 0xd7, 0x0d, 0x97, 0x03, 0x36, - 0xcf, 0x8b, 0x4a, 0x1b, 0x7b, 0xac, 0x58, 0xe7, 0x9d, 0x42, 0x4d, 0x3e, 0x0f, 0x93, 0xec, 0x58, - 0x17, 0x3f, 0xfd, 0x85, 0x2c, 0xce, 0xc4, 0x73, 0xa8, 0xf2, 0xf2, 0xa9, 0x17, 0xb2, 0xd1, 0xe4, - 0x01, 0x95, 0x82, 0xd8, 0xb0, 0xb0, 0xe5, 0x59, 0x1d, 0xdf, 0x09, 0x56, 0x3b, 0x4d, 0xef, 0x10, - 0xc5, 0x90, 0xd5, 0x8e, 0xb5, 0xd3, 0xa2, 0x36, 0x76, 0xb7, 0xb0, 0x72, 0xe9, 0xf1, 0xd1, 0xd2, - 0x8b, 0x01, 0xc7, 0x69, 0xd0, 0x10, 0xa9, 0x41, 0x39, 0x96, 0xc2, 0xb9, 0x2f, 0x27, 0x26, 0xb6, - 0xc8, 0x61, 0xc5, 0xc7, 0x0f, 0x7e, 0x22, 0xa3, 0xd8, 0x12, 0xce, 0x06, 0xdb, 0x8a, 0xd4, 0x66, - 0xaa, 0x04, 0xc6, 0xbf, 0xca, 0x44, 0xa7, 0x1d, 0x79, 0x1b, 0x26, 0xc4, 0x52, 0x57, 0xd6, 0x05, - 0x6e, 0x57, 0xf2, 0xbb, 0x88, 0xcd, 0xac, 0x8a, 0xce, 0x2e, 0xd9, 0xa5, 0xf2, 0xba, 0xb2, 0x36, - 0xf0, 0x92, 0x6d, 0x35, 0x5b, 0x71, 0x2a, 0x89, 0xc6, 0x16, 0xc1, 0xd6, 0x7a, 0x5d, 0x1f, 0x15, - 0x5c, 0x04, 0x41, 0xcb, 0x4f, 0x19, 0x06, 0x05, 0xf9, 0xe3, 0x77, 0xfc, 0xbf, 0xce, 0xa4, 0x1d, - 0xaa, 0x64, 0x05, 0xa6, 0xb6, 0x5d, 0xef, 0x00, 0xe7, 0x57, 0x19, 0x04, 0x9c, 0xf9, 0x87, 0xb2, - 0x20, 0xde, 0x21, 0x9d, 0x44, 0x6d, 0x9b, 0x32, 0x1a, 0x7a, 0xdb, 0x62, 0x1c, 0x34, 0x02, 0x36, - 0x0f, 0x21, 0xc7, 0xf0, 0xeb, 0xc0, 0x79, 0x88, 0x9a, 0xa0, 0x2d, 0x61, 0x15, 0xdd, 0xf8, 0x47, - 0x19, 0xf5, 0xf0, 0x64, 0x83, 0x5c, 0x71, 0xdb, 0x96, 0xd3, 0x51, 0xba, 0xc3, 0xdf, 0x77, 0x10, - 0x1a, 0x6f, 0x89, 0x82, 0x4c, 0xae, 0x43, 0x81, 0xff, 0x0a, 0x37, 0x49, 0x54, 0x21, 0x09, 0x42, - 0x7d, 0x87, 0x97, 0x88, 0x89, 0x99, 0xc9, 0x9d, 0x74, 0x66, 0xbe, 0x91, 0x81, 0x09, 0xe5, 0x3e, - 0xcd, 0xf6, 0xea, 0x9a, 0xe7, 0x7e, 0x48, 0x9b, 0x81, 0x7e, 0x4c, 0x74, 0x39, 0x30, 0xb6, 0x57, - 0x87, 0xa8, 0xb1, 0xe3, 0x21, 0x7b, 0x82, 0xe3, 0xc1, 0xf8, 0x97, 0x19, 0x21, 0xcd, 0x0f, 0xbd, - 0x47, 0xea, 0xfb, 0x59, 0xf6, 0x24, 0x07, 0xc3, 0xe7, 0x61, 0xc4, 0xa4, 0xb6, 0xe3, 0x0b, 0x49, - 0x7c, 0x56, 0xbd, 0x39, 0x60, 0x41, 0x74, 0x79, 0xf1, 0xd8, 0x4f, 0x75, 0x57, 0xc7, 0x72, 0x26, - 0x72, 0x55, 0xfd, 0x9b, 0x2d, 0xfa, 0xc8, 0xe1, 0x2b, 0x59, 0x1c, 0x30, 0x28, 0x72, 0x39, 0x7e, - 0x63, 0x97, 0x95, 0x08, 0xd9, 0x4f, 0x5d, 0xb5, 0x1a, 0x8d, 0xf1, 0x3e, 0x40, 0x54, 0x25, 0xb9, - 0x03, 0x45, 0xf1, 0x6d, 0x3b, 0x9d, 0x3d, 0x2e, 0x3e, 0x88, 0x31, 0x58, 0x7a, 0x7c, 0xb4, 0xf4, - 0x6c, 0x33, 0x2c, 0x13, 0xf2, 0x91, 0xc2, 0x37, 0x41, 0x68, 0xfc, 0x3b, 0x59, 0xc8, 0x96, 0x70, - 0x42, 0xee, 0xd0, 0xc3, 0xc0, 0xda, 0xb9, 0xe9, 0xb4, 0xb4, 0x95, 0x78, 0x80, 0xd0, 0xc6, 0xae, - 0xa3, 0x5d, 0xac, 0x15, 0x64, 0xb6, 0x12, 0xef, 0x78, 0x3b, 0x6f, 0x20, 0xa1, 0xb2, 0x12, 0x0f, - 0xbc, 0x9d, 0x37, 0xe2, 0x64, 0x21, 0x22, 0x31, 0x60, 0x94, 0xaf, 0x4a, 0xb1, 0x06, 0xe1, 0xf1, - 0xd1, 0xd2, 0x28, 0x5f, 0xbc, 0xa6, 0x28, 0x21, 0x67, 0x21, 0x57, 0xaf, 0x6d, 0x88, 0xed, 0x03, - 0x15, 0x58, 0x7e, 0xb7, 0x63, 0x32, 0x18, 0xab, 0x73, 0xbd, 0x52, 0xaa, 0xe1, 0x95, 0x75, 0x24, - 0xaa, 0xb3, 0x65, 0x5b, 0xdd, 0xf8, 0xa5, 0x35, 0x44, 0x24, 0xef, 0xc0, 0xc4, 0x9d, 0x4a, 0x79, - 0xcd, 0xf5, 0xf9, 0xa7, 0x3f, 0x1a, 0x2d, 0xfe, 0x03, 0xbb, 0xd9, 0x40, 0x9d, 0x71, 0x7c, 0x0f, - 0x55, 0xf0, 0x8d, 0x5f, 0xcc, 0xc0, 0x84, 0xa2, 0xd1, 0x21, 0x9f, 0x16, 0x4f, 0x79, 0x19, 0x4d, - 0x56, 0x55, 0x30, 0x58, 0x29, 0xbf, 0xfe, 0xb7, 0x5d, 0x9b, 0x8a, 0x87, 0xbd, 0xe8, 0xaa, 0x9d, - 0x1d, 0xe6, 0xaa, 0xfd, 0x26, 0x00, 0x5f, 0x03, 0xd8, 0x64, 0xe5, 0x2c, 0x56, 0x8c, 0x00, 0xd4, - 0x79, 0x89, 0x90, 0x0d, 0x13, 0x26, 0xd5, 0x6b, 0x36, 0xdb, 0x3e, 0xc5, 0xf3, 0x84, 0x50, 0x9e, - 0x2a, 0xdb, 0xa7, 0xe0, 0x96, 0x7c, 0x2e, 0xd1, 0x49, 0x8c, 0x4f, 0xab, 0x2a, 0x9e, 0x61, 0x3f, - 0x40, 0xe3, 0x87, 0x32, 0xd1, 0xe7, 0x7e, 0xff, 0x1a, 0x79, 0x0b, 0x46, 0xf9, 0x73, 0x90, 0x78, - 0x35, 0x3b, 0x15, 0x5e, 0x93, 0xd4, 0xb7, 0x22, 0xae, 0x5b, 0xfd, 0x1d, 0xfe, 0x98, 0xfc, 0x8c, - 0x29, 0x48, 0x42, 0xb5, 0xac, 0xae, 0xa1, 0x91, 0xdc, 0x51, 0x01, 0x79, 0x2d, 0x4d, 0x2d, 0x6b, - 0xfc, 0x46, 0x1e, 0xa6, 0x75, 0x34, 0xf5, 0xcd, 0x28, 0x33, 0xd4, 0x9b, 0xd1, 0xe7, 0xa1, 0xc0, - 0xc6, 0xc3, 0x69, 0x52, 0x29, 0x76, 0xbc, 0x88, 0xca, 0x6a, 0x01, 0xd3, 0xde, 0x42, 0xa1, 0x7e, - 0xe8, 0x07, 0xb4, 0xcd, 0x6e, 0x4d, 0x66, 0x48, 0x45, 0x96, 0x95, 0x87, 0x8d, 0x5c, 0x74, 0x12, - 0xcb, 0x87, 0x0d, 0x75, 0xdd, 0x86, 0x4f, 0x1c, 0xaf, 0xc3, 0x28, 0x93, 0x3e, 0xc3, 0x4b, 0x3d, - 0xb6, 0x92, 0x09, 0xa6, 0x31, 0xfb, 0x07, 0x8e, 0x44, 0xb6, 0xa1, 0xb0, 0x6e, 0xf9, 0x41, 0x9d, - 0xd2, 0xce, 0x10, 0xaf, 0xc1, 0x4b, 0x62, 0xa8, 0xe6, 0xf0, 0xa9, 0xd5, 0xa7, 0xb4, 0x13, 0x7b, - 0xce, 0x0b, 0x99, 0x91, 0x2f, 0x03, 0x94, 0xdd, 0x4e, 0xe0, 0xb9, 0xad, 0x75, 0x77, 0x6f, 0x61, - 0x14, 0x6f, 0x53, 0xcf, 0xc7, 0x26, 0x20, 0x42, 0xe0, 0x17, 0xaa, 0x50, 0x65, 0xd0, 0xe4, 0x05, - 0x8d, 0x96, 0xbb, 0xa7, 0xae, 0xd7, 0x08, 0x9f, 0xdc, 0x84, 0xa2, 0xbc, 0xaa, 0xde, 0xeb, 0xee, - 0x79, 0xb8, 0x40, 0xc6, 0xa2, 0xe3, 0x95, 0x3e, 0x0a, 0x1a, 0x3d, 0x01, 0x57, 0x77, 0xb4, 0x38, - 0x0d, 0xf9, 0x12, 0x9c, 0x89, 0xc3, 0xe4, 0x2c, 0x17, 0x22, 0xc1, 0x53, 0x65, 0x97, 0xb2, 0xee, - 0xfb, 0xb1, 0x30, 0xbe, 0x9b, 0x85, 0x33, 0x7d, 0x3a, 0xcb, 0xbe, 0x07, 0x3c, 0x56, 0x95, 0xef, - 0x21, 0x76, 0x9a, 0x72, 0x83, 0x96, 0xf3, 0x68, 0xfa, 0xc0, 0x56, 0x70, 0x7e, 0xa5, 0x18, 0x37, - 0x7d, 0x40, 0xc3, 0x87, 0xdb, 0x90, 0x67, 0x53, 0x34, 0xc4, 0x63, 0xac, 0xd4, 0x52, 0x4c, 0x07, - 0x8e, 0xba, 0x7c, 0x70, 0xea, 0x90, 0x07, 0xf9, 0x34, 0xe4, 0xb6, 0xb6, 0xd6, 0x71, 0xed, 0xe4, - 0xb0, 0xef, 0x53, 0x41, 0xd0, 0xd2, 0x96, 0xea, 0x14, 0xa3, 0xbd, 0x12, 0xbe, 0xdd, 0x33, 0x74, - 0xf2, 0xc5, 0x98, 0xf9, 0xc8, 0x2b, 0x83, 0x27, 0x7a, 0x78, 0x6b, 0x92, 0x8f, 0x63, 0xa0, 0xf1, - 0xd7, 0xb3, 0xd1, 0x37, 0x7c, 0xd3, 0x69, 0x05, 0xd4, 0x23, 0x8b, 0xfc, 0x93, 0x8c, 0xee, 0xa9, - 0x66, 0xf8, 0x9b, 0x2c, 0x44, 0xdf, 0x37, 0x67, 0x15, 0x7e, 0xc8, 0xaf, 0x28, 0x1f, 0x72, 0x0e, - 0x3f, 0xe4, 0xe9, 0xbe, 0x9f, 0xec, 0x2b, 0x29, 0xeb, 0x12, 0x3f, 0xc4, 0x94, 0xb5, 0xf7, 0x22, - 0x4c, 0x6d, 0xb8, 0xab, 0x8f, 0x82, 0x10, 0x91, 0x7d, 0x80, 0x05, 0x53, 0x07, 0x32, 0x8e, 0x9b, - 0x2d, 0x9b, 0x7a, 0x5b, 0xfb, 0x56, 0x47, 0x7b, 0x0d, 0x35, 0x13, 0x70, 0x86, 0xbb, 0x41, 0x1f, - 0xea, 0xb8, 0x63, 0x1c, 0x37, 0x0e, 0x37, 0x7e, 0x30, 0x2b, 0x07, 0xe3, 0xfe, 0xf2, 0x53, 0xfa, - 0xea, 0xf6, 0x86, 0xf6, 0xea, 0x36, 0x17, 0xea, 0x0b, 0xc3, 0x27, 0xe4, 0xe5, 0x63, 0x5e, 0x9e, - 0xff, 0x9b, 0x11, 0x98, 0x54, 0xd1, 0xd9, 0x38, 0x94, 0x6c, 0xdb, 0x53, 0xc7, 0xc1, 0xb2, 0x6d, - 0xcf, 0x44, 0xa8, 0xf6, 0xd0, 0x9c, 0x1b, 0xf8, 0xd0, 0xfc, 0x15, 0x18, 0x2f, 0xb7, 0x6d, 0xed, - 0xf9, 0xcb, 0x48, 0x69, 0xde, 0x95, 0x10, 0x89, 0x7f, 0x0b, 0xa1, 0x1a, 0xac, 0xd9, 0xb6, 0x93, - 0x8f, 0x5e, 0x11, 0x4b, 0xed, 0x8d, 0x7a, 0xe4, 0xe3, 0xbc, 0x51, 0xdf, 0x80, 0xf1, 0x7b, 0x3e, - 0xdd, 0xea, 0x75, 0x3a, 0xb4, 0x85, 0xcb, 0xaa, 0xc0, 0x65, 0xf2, 0x9e, 0x4f, 0x1b, 0x01, 0x42, - 0xd5, 0x06, 0x84, 0xa8, 0xea, 0x04, 0x8f, 0x0d, 0x98, 0xe0, 0xeb, 0x50, 0xa8, 0x51, 0xea, 0xe1, - 0x98, 0x4e, 0x44, 0xa2, 0x57, 0x97, 0x52, 0xaf, 0xc1, 0x06, 0x56, 0x7b, 0xbb, 0x16, 0x88, 0xda, - 0x83, 0xf7, 0xe4, 0x90, 0x0f, 0xde, 0xe4, 0x05, 0x98, 0xec, 0xf6, 0x76, 0x5a, 0x4e, 0x13, 0xf9, - 0x8a, 0x97, 0x72, 0x73, 0x82, 0xc3, 0x18, 0x5b, 0x9f, 0x7c, 0x11, 0xa6, 0xf0, 0x2e, 0x12, 0x2e, - 0xb9, 0x69, 0xed, 0x9d, 0x48, 0x2b, 0xe3, 0x92, 0x4e, 0x93, 0x81, 0x1a, 0x29, 0x06, 0x1d, 0x3a, - 0xa3, 0xc5, 0x3a, 0x4c, 0xeb, 0x33, 0xf9, 0x04, 0x9e, 0x8b, 0xc2, 0xc7, 0xfb, 0x42, 0x71, 0xfc, - 0x76, 0xbe, 0x00, 0xc5, 0x09, 0xfe, 0x6c, 0x6f, 0x42, 0x2d, 0xec, 0x93, 0x49, 0xee, 0xf4, 0x76, - 0xa8, 0xd7, 0xa1, 0x01, 0xf5, 0x85, 0xb0, 0xee, 0x9b, 0xf9, 0x52, 0xb7, 0xeb, 0x1b, 0x7f, 0x2f, - 0x0b, 0x63, 0xa5, 0xed, 0x7a, 0xb5, 0xb3, 0xeb, 0xe2, 0xa3, 0x4f, 0xa8, 0xeb, 0x57, 0x1f, 0x7d, - 0x42, 0x5d, 0xbf, 0xaa, 0xe1, 0xbf, 0x9a, 0x72, 0xdd, 0x42, 0x53, 0x52, 0xe5, 0xba, 0xa5, 0xe9, - 0xe0, 0xa2, 0x67, 0x8f, 0xdc, 0x10, 0xcf, 0x1e, 0xa1, 0x96, 0x2b, 0x7f, 0xac, 0x96, 0x8b, 0xbc, - 0x05, 0x13, 0xd5, 0x4e, 0x40, 0xf7, 0xbc, 0x68, 0xa5, 0x87, 0x57, 0xbf, 0x10, 0xac, 0x8a, 0xe0, - 0x0a, 0x36, 0x5b, 0x46, 0x5c, 0xb3, 0x16, 0x6a, 0xd4, 0x70, 0x19, 0x71, 0x05, 0x5c, 0xec, 0xd2, - 0x2b, 0x11, 0x8d, 0x4a, 0x6c, 0x8d, 0xc8, 0xa7, 0x65, 0x2e, 0x7c, 0x4e, 0x47, 0xea, 0x60, 0x36, - 0xb0, 0x2b, 0xb3, 0xe9, 0x4f, 0xcb, 0xc6, 0x37, 0xb3, 0x30, 0x51, 0xea, 0x76, 0x9f, 0x72, 0x03, - 0x9f, 0xcf, 0x6a, 0xdb, 0xab, 0xbc, 0xb3, 0x84, 0xfd, 0x1a, 0xca, 0xb6, 0xe7, 0x97, 0xb2, 0x30, - 0x13, 0xa3, 0x50, 0x5b, 0x9f, 0x19, 0xd2, 0xac, 0x27, 0x3b, 0xa4, 0x59, 0x4f, 0x6e, 0x38, 0xb3, - 0x9e, 0xfc, 0xc7, 0xd9, 0x32, 0x5f, 0x86, 0x5c, 0xa9, 0xdb, 0x8d, 0x3f, 0x0f, 0x76, 0xbb, 0xf7, - 0xaf, 0xf3, 0x7b, 0xa7, 0xd5, 0xed, 0x9a, 0x0c, 0x43, 0xdb, 0xc7, 0x46, 0x87, 0xdc, 0xc7, 0x8c, - 0xd7, 0x61, 0x1c, 0x79, 0xa1, 0x31, 0xcd, 0x79, 0xc0, 0x8f, 0x59, 0xd8, 0xd1, 0x68, 0x75, 0x89, - 0xcf, 0xfc, 0xff, 0xca, 0xc0, 0x08, 0xfe, 0x7e, 0x4a, 0xd7, 0xd8, 0xb2, 0xb6, 0xc6, 0x8a, 0xca, - 0x1a, 0x1b, 0x66, 0x75, 0xfd, 0x2f, 0x79, 0x1c, 0x2d, 0xb1, 0xae, 0x84, 0x0d, 0x4b, 0x26, 0xc5, - 0x86, 0xe5, 0x4d, 0x50, 0x76, 0x4d, 0x55, 0xab, 0xa3, 0x9c, 0x19, 0xea, 0x4d, 0x23, 0x42, 0x26, - 0x07, 0x71, 0x6b, 0x96, 0x1c, 0x4e, 0xc6, 0x85, 0x78, 0x53, 0x9f, 0x88, 0x21, 0xcb, 0x1a, 0x90, - 0x6a, 0xc7, 0xa7, 0xcd, 0x9e, 0x47, 0xeb, 0x07, 0x4e, 0xf7, 0x3e, 0xf5, 0x9c, 0xdd, 0x43, 0xa1, - 0x05, 0xc2, 0x73, 0xd9, 0x11, 0xa5, 0x0d, 0xff, 0xc0, 0xe9, 0xb2, 0xab, 0x88, 0xb3, 0x7b, 0x68, - 0xa6, 0xd0, 0x90, 0xf7, 0x60, 0xcc, 0xa4, 0x0f, 0x3d, 0x27, 0x90, 0x6f, 0xb4, 0xd3, 0xe1, 0xc5, - 0x19, 0xa1, 0xfc, 0x62, 0xe8, 0xf1, 0x1f, 0xea, 0xfc, 0x8b, 0x72, 0xb2, 0xcc, 0x37, 0x3e, 0xfe, - 0x16, 0x3b, 0x15, 0xf5, 0xb6, 0xb4, 0x5d, 0xef, 0xb7, 0xef, 0x91, 0xcb, 0x30, 0x82, 0xbb, 0xa7, - 0x90, 0x09, 0xd0, 0xb6, 0x19, 0xcf, 0x50, 0x75, 0x6b, 0x47, 0x0c, 0xf2, 0x3c, 0x40, 0xa8, 0x66, - 0xf7, 0x17, 0x0a, 0x78, 0x5a, 0x2b, 0x90, 0xf8, 0xd6, 0x3f, 0x7e, 0x92, 0xad, 0xff, 0x93, 0x33, - 0xe1, 0xf8, 0xbb, 0x59, 0xb8, 0x10, 0x6e, 0x67, 0x9b, 0x5e, 0xbd, 0x74, 0x77, 0xbd, 0x6a, 0xd7, - 0x84, 0xf4, 0x5f, 0xf3, 0xdc, 0x07, 0x0e, 0xbb, 0xfd, 0x5d, 0x3b, 0xe6, 0x63, 0x5c, 0xe7, 0xab, - 0x96, 0xab, 0xf8, 0xb2, 0xda, 0x63, 0xb7, 0x72, 0x6a, 0x88, 0xf7, 0xf8, 0x6e, 0x37, 0xa1, 0xf1, - 0x5b, 0x7b, 0xc6, 0x8c, 0x18, 0x90, 0x1f, 0xca, 0xc0, 0xe9, 0xf4, 0x86, 0x88, 0x1b, 0xe1, 0x92, - 0x94, 0x3c, 0xfb, 0xb4, 0x76, 0xe5, 0xe5, 0xc7, 0x47, 0x4b, 0x17, 0x7c, 0xab, 0xdd, 0x6a, 0x38, - 0x36, 0xaf, 0xcd, 0x69, 0xd2, 0x46, 0x57, 0x20, 0x68, 0xf5, 0xf6, 0xa9, 0x29, 0xfa, 0x26, 0x57, - 0x00, 0x0a, 0x52, 0x37, 0x63, 0xfc, 0xfd, 0x0c, 0x28, 0xeb, 0xa9, 0x60, 0x52, 0xdb, 0xf1, 0x68, - 0x33, 0xc0, 0xfd, 0x2c, 0x34, 0xcf, 0xe7, 0xb0, 0x98, 0x65, 0x03, 0xc2, 0xc8, 0xbb, 0x30, 0xc6, - 0x35, 0x39, 0x5c, 0x83, 0x12, 0xad, 0x43, 0xa1, 0xf5, 0xe1, 0xce, 0x1d, 0x1c, 0x43, 0x5d, 0xc3, - 0x82, 0x88, 0x49, 0xb7, 0xb7, 0xb7, 0xb7, 0xca, 0x2d, 0xcb, 0x69, 0xfb, 0x62, 0x17, 0xc3, 0x41, - 0xfd, 0xf0, 0x61, 0xd0, 0x68, 0x22, 0x54, 0x95, 0x6e, 0x43, 0x54, 0xe3, 0x96, 0x54, 0x3a, 0x1d, - 0x63, 0x9e, 0xb3, 0x04, 0x23, 0xf7, 0xa3, 0xcb, 0xe7, 0xca, 0xf8, 0xe3, 0xa3, 0x25, 0xbe, 0x58, - 0x4c, 0x0e, 0x37, 0x7e, 0x34, 0x03, 0xd3, 0xfa, 0x6a, 0x22, 0x57, 0x60, 0x54, 0x18, 0xc9, 0x67, - 0xf0, 0x92, 0xcd, 0x46, 0x61, 0x94, 0x9b, 0xc7, 0x6b, 0x46, 0xf1, 0x02, 0x8b, 0xed, 0xc3, 0x82, - 0x83, 0xd0, 0x22, 0xe1, 0x3e, 0xdc, 0xe4, 0x20, 0x53, 0x96, 0x11, 0x83, 0x09, 0x61, 0x7e, 0xaf, - 0x15, 0xa8, 0x3a, 0x52, 0x0f, 0x21, 0xa6, 0x28, 0x31, 0xca, 0x30, 0xca, 0x3f, 0xe0, 0x98, 0x59, - 0x40, 0xe6, 0x04, 0x66, 0x01, 0xc6, 0x51, 0x06, 0xa0, 0x5e, 0x5f, 0xbb, 0x43, 0x0f, 0x6b, 0x96, - 0xe3, 0xa1, 0x52, 0x1f, 0x37, 0xcb, 0x3b, 0xe2, 0xd3, 0x9a, 0x14, 0x4a, 0x7d, 0xbe, 0xb1, 0x1e, - 0xd0, 0x43, 0x4d, 0xa9, 0x2f, 0x51, 0x71, 0x47, 0xf6, 0x9c, 0x07, 0x56, 0x40, 0x19, 0x61, 0x16, - 0x09, 0xf9, 0x8e, 0xcc, 0xa1, 0x31, 0x4a, 0x05, 0x99, 0x7c, 0x19, 0xa6, 0xa3, 0x5f, 0xe1, 0xd3, - 0xc4, 0x74, 0xf8, 0xf9, 0xea, 0x85, 0x2b, 0xcf, 0x3f, 0x3e, 0x5a, 0x5a, 0x54, 0xb8, 0xc6, 0x1f, - 0x2d, 0x62, 0xcc, 0x8c, 0x9f, 0xcf, 0xe0, 0x6b, 0x96, 0xec, 0xe0, 0x45, 0xc8, 0x87, 0xc6, 0x4e, - 0x93, 0x5c, 0x4f, 0x13, 0x53, 0xbf, 0x62, 0x39, 0xb9, 0x00, 0xb9, 0xa8, 0x27, 0xb8, 0x41, 0xea, - 0x3d, 0x60, 0xa5, 0xe4, 0x16, 0x8c, 0x0d, 0xd5, 0x66, 0xfc, 0x34, 0x52, 0xda, 0x2a, 0xa9, 0x71, - 0x16, 0x6e, 0x6f, 0x6f, 0x7d, 0xef, 0xce, 0xc2, 0x4f, 0x64, 0x61, 0x86, 0x8d, 0x6b, 0xa9, 0x17, - 0xec, 0xbb, 0x9e, 0x13, 0x1c, 0x3e, 0xb5, 0x5a, 0x8a, 0xb7, 0x35, 0x11, 0x67, 0x51, 0x9e, 0x31, - 0x6a, 0xdf, 0x86, 0x52, 0x56, 0xfc, 0xe6, 0x08, 0xcc, 0xa5, 0x50, 0x91, 0xd7, 0x34, 0x45, 0xe2, - 0x82, 0xf4, 0x87, 0xfb, 0xee, 0xd1, 0xd2, 0xa4, 0x44, 0xdf, 0x8a, 0xfc, 0xe3, 0x96, 0xf5, 0xa7, - 0x61, 0x3e, 0x52, 0xa8, 0x57, 0x54, 0x9f, 0x86, 0xf5, 0x07, 0xe1, 0xcb, 0x30, 0x62, 0xba, 0x2d, - 0x2a, 0xed, 0x18, 0xf0, 0x58, 0xf7, 0x18, 0x40, 0x7b, 0xc1, 0x62, 0x00, 0xb2, 0x06, 0x63, 0xec, - 0x8f, 0xbb, 0x56, 0x57, 0xe8, 0x7c, 0x49, 0x28, 0x64, 0x23, 0xb4, 0xeb, 0x74, 0xf6, 0x54, 0x39, - 0xbb, 0x45, 0x1b, 0x6d, 0xab, 0xab, 0xc9, 0x1f, 0x1c, 0x51, 0x93, 0xd7, 0x0b, 0xfd, 0xe5, 0xf5, - 0xcc, 0xb1, 0xf2, 0xba, 0x0d, 0x50, 0x77, 0xf6, 0x3a, 0x4e, 0x67, 0xaf, 0xd4, 0xda, 0x13, 0x5e, - 0x85, 0x97, 0xfb, 0xcf, 0xc2, 0x95, 0x08, 0x19, 0x17, 0x2e, 0x7f, 0x40, 0xe1, 0xb0, 0x86, 0xd5, - 0xd2, 0x14, 0xd2, 0x11, 0x2a, 0xd9, 0x00, 0x28, 0x35, 0x03, 0xe7, 0x01, 0x5b, 0xc0, 0xbe, 0x30, - 0x91, 0x95, 0x0d, 0x2e, 0x97, 0xee, 0xd0, 0xc3, 0x3a, 0x0d, 0x22, 0x05, 0xb7, 0x85, 0xa8, 0xec, - 0x3b, 0xd0, 0xac, 0x59, 0x23, 0x0e, 0xa4, 0x0b, 0xa7, 0x4a, 0xb6, 0xed, 0xb0, 0x1e, 0x58, 0xad, - 0x2d, 0x8f, 0x4d, 0x86, 0x8d, 0xac, 0x27, 0xd3, 0x59, 0x5f, 0x16, 0xac, 0x5f, 0xb0, 0x42, 0xaa, - 0x46, 0xc0, 0xc9, 0xe2, 0xd5, 0xa4, 0x33, 0x36, 0x36, 0x61, 0x5a, 0xef, 0xba, 0xee, 0x0b, 0x39, - 0x09, 0x05, 0xb3, 0x5e, 0x6a, 0xd4, 0xd7, 0x4a, 0xd7, 0x8a, 0x19, 0x52, 0x84, 0x49, 0xf1, 0x6b, - 0xb9, 0xb1, 0xfc, 0xc6, 0x8d, 0x62, 0x56, 0x83, 0xbc, 0x71, 0x6d, 0x39, 0xe1, 0x77, 0x30, 0x56, - 0x2c, 0x70, 0x35, 0x86, 0xf1, 0xcb, 0x19, 0x28, 0xc8, 0x76, 0x93, 0x1b, 0x90, 0xab, 0xd7, 0xd7, - 0x62, 0x9e, 0x02, 0xd1, 0xf9, 0xc2, 0x77, 0x52, 0xdf, 0x57, 0xcd, 0xc1, 0x18, 0x01, 0xa3, 0xdb, - 0x5a, 0xaf, 0x0b, 0xb1, 0x40, 0xd2, 0x45, 0xdb, 0x36, 0xa7, 0x4b, 0x31, 0x9f, 0xbe, 0x01, 0xb9, - 0xdb, 0xdb, 0x5b, 0x42, 0x88, 0x97, 0x74, 0xd1, 0x4e, 0xca, 0xe9, 0x3e, 0x7c, 0xa8, 0xee, 0xef, - 0x8c, 0xc0, 0x30, 0x61, 0x42, 0x59, 0xc2, 0xfc, 0xb8, 0x6d, 0xbb, 0xa1, 0xc7, 0x9f, 0x38, 0x6e, - 0x19, 0xc4, 0x14, 0x25, 0x4c, 0x3a, 0x58, 0x77, 0x9b, 0x56, 0x4b, 0x9c, 0xdb, 0x28, 0x1d, 0xb4, - 0x18, 0xc0, 0xe4, 0x70, 0xe3, 0xd7, 0x33, 0x50, 0x44, 0x09, 0x0a, 0x4d, 0xc3, 0xdc, 0x03, 0xda, - 0xb9, 0x7f, 0x8d, 0xbc, 0x2e, 0x3f, 0xb6, 0x4c, 0x78, 0x65, 0x1c, 0xc1, 0x8f, 0x2d, 0xa6, 0x73, - 0x16, 0x1f, 0x9c, 0xe2, 0x6e, 0x99, 0x1d, 0xde, 0x19, 0xeb, 0x18, 0x77, 0xcb, 0x25, 0x18, 0xc1, - 0xe6, 0x88, 0x6d, 0x11, 0x5b, 0x1e, 0x30, 0x80, 0xc9, 0xe1, 0xca, 0xae, 0xf4, 0x53, 0xd9, 0x44, - 0x1f, 0x96, 0xbf, 0xa7, 0x1c, 0x9a, 0xf4, 0xce, 0x0d, 0xb5, 0x53, 0xbf, 0x0f, 0xf3, 0xf1, 0x21, - 0xc1, 0xeb, 0x7c, 0x09, 0x66, 0x74, 0xb8, 0xbc, 0xd9, 0x9f, 0x49, 0xad, 0xeb, 0xfe, 0xb2, 0x19, - 0xc7, 0x37, 0xfe, 0x59, 0x06, 0xc6, 0xf1, 0x4f, 0xb3, 0xd7, 0x42, 0x63, 0x85, 0xd2, 0x76, 0x5d, - 0xa8, 0xee, 0x54, 0x31, 0xce, 0x7a, 0xe8, 0x37, 0x84, 0x76, 0x4f, 0xdb, 0x5f, 0x42, 0x64, 0x41, - 0xca, 0x75, 0x72, 0xf2, 0x7d, 0x32, 0x24, 0xe5, 0xca, 0x3b, 0x3f, 0x46, 0x2a, 0x90, 0xd1, 0x3e, - 0x68, 0xbb, 0xce, 0x96, 0x9f, 0xfa, 0x2a, 0x89, 0x74, 0x6e, 0x4b, 0xb7, 0x0f, 0xe2, 0x68, 0xf8, - 0x28, 0xb9, 0x5d, 0x2f, 0x99, 0x1b, 0xda, 0xa3, 0x24, 0x6b, 0xa3, 0x66, 0x3b, 0x2a, 0x90, 0x8c, - 0x7f, 0x3a, 0x1e, 0x1f, 0x40, 0x71, 0xd4, 0x9d, 0xf0, 0xdb, 0x78, 0x0b, 0x46, 0x4a, 0xad, 0x96, - 0xfb, 0x50, 0xec, 0x12, 0x52, 0xbb, 0x10, 0x8e, 0x1f, 0x3f, 0xc9, 0x2c, 0x86, 0xa2, 0x39, 0x69, - 0x30, 0x00, 0x29, 0xc3, 0x78, 0x69, 0xbb, 0x5e, 0xad, 0x56, 0xb6, 0xb6, 0xd6, 0x85, 0xef, 0xfb, - 0x4b, 0x72, 0x7c, 0x1c, 0xc7, 0x6e, 0xc4, 0xdf, 0xc5, 0x22, 0xc9, 0x3d, 0xa2, 0x23, 0xef, 0x00, - 0xdc, 0x76, 0x9d, 0xce, 0x5d, 0x1a, 0xec, 0xbb, 0xb6, 0xe8, 0xfc, 0xb9, 0xc7, 0x47, 0x4b, 0x13, - 0x1f, 0xba, 0x4e, 0xa7, 0xd1, 0x46, 0x30, 0x6b, 0x7b, 0x84, 0x64, 0x2a, 0x7f, 0xb3, 0x91, 0x5e, - 0x71, 0xb9, 0x01, 0xc2, 0x48, 0x34, 0xd2, 0x3b, 0x6e, 0xc2, 0xf6, 0x40, 0xa2, 0x91, 0x36, 0xcc, - 0xd4, 0x7b, 0x7b, 0x7b, 0x94, 0xed, 0xea, 0x42, 0x5f, 0x31, 0x2a, 0xee, 0xb6, 0x61, 0xe4, 0x00, - 0x7e, 0x13, 0x61, 0xf7, 0x13, 0x7f, 0xe5, 0x35, 0xb6, 0x90, 0xbf, 0x73, 0xb4, 0x24, 0xde, 0xdb, - 0x98, 0x90, 0xe6, 0x4b, 0xfa, 0xa4, 0xb6, 0x22, 0xce, 0x9b, 0x6c, 0xc2, 0xe8, 0x2d, 0x27, 0x58, - 0xeb, 0xed, 0x08, 0x03, 0xeb, 0x17, 0x06, 0x7c, 0x34, 0x1c, 0x91, 0x2b, 0x7c, 0xf7, 0x9c, 0x60, - 0xbf, 0xa7, 0x1a, 0x5b, 0x0b, 0x36, 0x64, 0x1b, 0x0a, 0x65, 0xc7, 0x6b, 0xb6, 0x68, 0xb9, 0x2a, - 0x4e, 0xfd, 0x0b, 0x03, 0x58, 0x4a, 0x54, 0x3e, 0x2e, 0x4d, 0xfc, 0xd5, 0x74, 0x54, 0x29, 0x40, - 0x62, 0x90, 0x7f, 0x33, 0x03, 0xcf, 0x86, 0xad, 0x2f, 0xed, 0xd1, 0x4e, 0x70, 0xd7, 0x0a, 0x9a, - 0xfb, 0xd4, 0x13, 0xa3, 0x34, 0x3e, 0x68, 0x94, 0x3e, 0x97, 0x18, 0xa5, 0x4b, 0xd1, 0x28, 0x59, - 0x8c, 0x59, 0xa3, 0xcd, 0xb9, 0x25, 0xc7, 0x6c, 0x50, 0xad, 0xa4, 0x01, 0x10, 0x69, 0xf0, 0x85, - 0x83, 0xce, 0x4b, 0x03, 0x3a, 0x1c, 0x21, 0x0b, 0x23, 0xdd, 0xf0, 0xb7, 0x66, 0x6f, 0x13, 0x42, - 0xc9, 0x1d, 0xe9, 0xcd, 0xc0, 0x25, 0x92, 0xf3, 0x03, 0x78, 0x73, 0x0f, 0x87, 0xb9, 0x01, 0x7e, - 0x4b, 0x7c, 0xb6, 0xd7, 0xad, 0x1d, 0x21, 0x84, 0x1c, 0x33, 0xdb, 0xeb, 0x56, 0x34, 0xdb, 0x2d, - 0x2b, 0x3e, 0xdb, 0xeb, 0xd6, 0x0e, 0x29, 0x73, 0x17, 0x2c, 0xee, 0xaf, 0xf3, 0xfc, 0x20, 0x6e, - 0xe5, 0x1a, 0x3f, 0x99, 0x53, 0x5c, 0xb1, 0x3e, 0x80, 0xf1, 0x7a, 0xd7, 0x6a, 0xd2, 0x96, 0xb3, - 0x1b, 0x88, 0x27, 0x9d, 0x17, 0x07, 0xb0, 0x0a, 0x71, 0xc5, 0x73, 0x80, 0xfc, 0xa9, 0x5e, 0x90, - 0x42, 0x1c, 0xd6, 0xc2, 0xad, 0xda, 0xdd, 0x85, 0x99, 0x63, 0x5b, 0xb8, 0x55, 0xbb, 0x2b, 0x64, - 0x8e, 0x6e, 0x5b, 0x93, 0x39, 0x6a, 0x77, 0x8d, 0x5f, 0xcd, 0xc1, 0x99, 0x3e, 0x34, 0x64, 0x43, - 0xee, 0x51, 0x19, 0x4d, 0xad, 0xd8, 0x07, 0xfd, 0xca, 0xb1, 0xdb, 0xd6, 0x3a, 0x14, 0x57, 0xef, - 0xa0, 0x58, 0xcb, 0x7e, 0x52, 0xbb, 0x5c, 0x92, 0xbb, 0xfb, 0xf9, 0xc7, 0x47, 0x4b, 0xcf, 0xd1, - 0x03, 0x76, 0x79, 0x6d, 0x58, 0xbc, 0xb0, 0xd1, 0xd4, 0xbc, 0xa9, 0x12, 0x94, 0x8b, 0x3f, 0x98, - 0x85, 0x3c, 0x9e, 0x34, 0xb1, 0xe8, 0x12, 0x99, 0x13, 0x45, 0x97, 0xf8, 0x3c, 0x4c, 0xae, 0xde, - 0xe1, 0x97, 0xce, 0x35, 0xcb, 0xdf, 0x17, 0xfb, 0x20, 0xbe, 0xb0, 0xd1, 0x83, 0x86, 0xb8, 0xa3, - 0xee, 0x5b, 0x9a, 0x90, 0xa7, 0x51, 0x90, 0x7b, 0x30, 0xc7, 0xdb, 0xe6, 0xec, 0x3a, 0x4d, 0xee, - 0x8a, 0xee, 0x58, 0x2d, 0xb1, 0x29, 0x5e, 0x78, 0x7c, 0xb4, 0xb4, 0x44, 0x0f, 0xd0, 0x2a, 0x4a, - 0x94, 0x37, 0x7c, 0x44, 0x50, 0xf8, 0xa5, 0xd1, 0xab, 0xfe, 0xb1, 0xe6, 0x38, 0x56, 0xc8, 0x6a, - 0x63, 0x75, 0x33, 0x5c, 0x8e, 0x64, 0xfc, 0xfd, 0x11, 0x58, 0xec, 0xbf, 0x9f, 0x91, 0x2f, 0xe8, - 0x13, 0x78, 0xf1, 0xd8, 0x1d, 0xf0, 0xf8, 0x39, 0xfc, 0x22, 0xcc, 0xaf, 0x76, 0x02, 0xea, 0x75, - 0x3d, 0x47, 0x7a, 0x44, 0xaf, 0xb9, 0xbe, 0x34, 0x02, 0x7b, 0xf1, 0xf1, 0xd1, 0xd2, 0x79, 0x1a, - 0x96, 0x0b, 0xed, 0x20, 0x9a, 0xa4, 0x29, 0xac, 0x52, 0x39, 0x90, 0x55, 0x98, 0x56, 0xe0, 0xad, - 0xde, 0x9e, 0x38, 0xc1, 0xd1, 0xc2, 0x50, 0xe5, 0xd9, 0xea, 0xa9, 0x17, 0x9d, 0x18, 0xd1, 0xe2, - 0xcf, 0xe7, 0xc4, 0xb2, 0xb8, 0x00, 0xb9, 0x7a, 0x6f, 0x47, 0x2c, 0x07, 0x2e, 0xaa, 0x6b, 0xdb, - 0x3a, 0x2b, 0x25, 0x9f, 0x05, 0x30, 0x69, 0xd7, 0xf5, 0x9d, 0xc0, 0xf5, 0x0e, 0x55, 0x23, 0x7d, - 0x2f, 0x84, 0xea, 0x16, 0x95, 0x12, 0x4a, 0xd6, 0x60, 0x26, 0xfa, 0xb5, 0xf9, 0xb0, 0x23, 0x54, - 0x9a, 0xe3, 0x5c, 0x9b, 0x10, 0x91, 0x37, 0x5c, 0x56, 0xa6, 0x1e, 0x54, 0x31, 0x32, 0xb2, 0x0c, - 0x85, 0x6d, 0xd7, 0x3b, 0xd8, 0x65, 0x13, 0x95, 0x8f, 0x8e, 0xd2, 0x87, 0x02, 0xa6, 0x1e, 0x19, - 0x12, 0x8f, 0xad, 0xf9, 0xd5, 0xce, 0x03, 0xc7, 0x73, 0x3b, 0x6d, 0xda, 0x09, 0xd4, 0xd7, 0x47, - 0x1a, 0x81, 0x35, 0x97, 0xa6, 0x08, 0xcc, 0xee, 0xcc, 0xa5, 0x66, 0xe0, 0x7a, 0xe2, 0xe9, 0x91, - 0x4f, 0x37, 0x03, 0x68, 0xd3, 0xcd, 0x00, 0x6c, 0x10, 0x4d, 0xba, 0x2b, 0x74, 0xe6, 0x38, 0x88, - 0x1e, 0xdd, 0xd5, 0xfc, 0xb5, 0xe8, 0x2e, 0x13, 0x05, 0x4c, 0xba, 0x8b, 0x17, 0x7d, 0x2d, 0xb8, - 0xc9, 0x6e, 0x42, 0x45, 0x24, 0xd0, 0x8c, 0xdf, 0x1a, 0xef, 0xbb, 0x6e, 0xd9, 0xde, 0x7b, 0xb2, - 0x75, 0xbb, 0x6e, 0x0d, 0xb1, 0x6e, 0x5f, 0x0b, 0xed, 0x34, 0x55, 0x27, 0x45, 0x84, 0xa8, 0x9b, - 0x3f, 0xc7, 0x59, 0xfc, 0x85, 0xc2, 0x49, 0x16, 0x91, 0x18, 0xa4, 0xec, 0xb0, 0x83, 0x94, 0x1b, - 0x6a, 0x90, 0xc8, 0x0a, 0x4c, 0x85, 0x21, 0x74, 0x6a, 0x56, 0xa0, 0xed, 0x4d, 0x61, 0x40, 0xa4, - 0x46, 0xd7, 0x0a, 0xd4, 0xbd, 0x49, 0x27, 0x21, 0x6f, 0xc3, 0x84, 0x30, 0x56, 0x46, 0x0e, 0x23, - 0x91, 0x19, 0x9a, 0xb4, 0x6c, 0x8e, 0xd1, 0xab, 0xe8, 0xec, 0x93, 0xac, 0x39, 0x5d, 0xda, 0x72, - 0x3a, 0xb4, 0x8e, 0x5a, 0x73, 0xb1, 0x62, 0xf0, 0x93, 0xec, 0x8a, 0x92, 0x06, 0x57, 0xa8, 0x6b, - 0xfa, 0x32, 0x8d, 0x28, 0xbe, 0x58, 0xc7, 0x4e, 0xb4, 0x58, 0xb9, 0x15, 0x88, 0xb7, 0xee, 0xee, - 0x39, 0xd2, 0xee, 0x4d, 0x5a, 0x81, 0x78, 0x8d, 0x16, 0x83, 0xc6, 0xac, 0x40, 0x38, 0x2a, 0x93, - 0xeb, 0xd9, 0x8f, 0x6a, 0x45, 0xbc, 0xcf, 0xa0, 0x5c, 0x8f, 0x44, 0xba, 0xb1, 0x21, 0x47, 0x92, - 0xd5, 0xac, 0xb6, 0x2d, 0xa7, 0x25, 0x7c, 0xd1, 0xa2, 0x6a, 0x28, 0x83, 0xc6, 0xab, 0x41, 0x54, - 0xd2, 0x84, 0x49, 0x93, 0xee, 0xd6, 0x3c, 0x37, 0xa0, 0xcd, 0x80, 0xda, 0x42, 0x96, 0x91, 0xe2, - 0xfc, 0x8a, 0xeb, 0x72, 0x39, 0x6d, 0xe5, 0xf5, 0xdf, 0x3a, 0x5a, 0xca, 0x7c, 0xe7, 0x68, 0x09, - 0x18, 0x88, 0x5b, 0xb2, 0x3e, 0x3e, 0x5a, 0x3a, 0xc3, 0xe6, 0xbf, 0x2b, 0x89, 0xd5, 0x23, 0x46, - 0x65, 0x4a, 0xbe, 0x9f, 0x6d, 0xba, 0xe1, 0x90, 0x44, 0x95, 0x4d, 0xf6, 0xa9, 0xec, 0x8d, 0xd4, - 0xca, 0x96, 0x94, 0xd1, 0x4e, 0xad, 0x34, 0xb5, 0x12, 0xf2, 0x0e, 0x4c, 0x94, 0xab, 0x65, 0xb7, - 0xb3, 0xeb, 0xec, 0xd5, 0xd7, 0x4a, 0x28, 0x10, 0x09, 0x6b, 0xe3, 0xa6, 0xd3, 0x68, 0x22, 0xbc, - 0xe1, 0xef, 0x5b, 0x9a, 0xc7, 0x46, 0x84, 0x4f, 0x6e, 0xc1, 0xb4, 0xfc, 0x69, 0xd2, 0xdd, 0x7b, - 0x66, 0x15, 0xe5, 0x20, 0x69, 0xe2, 0x1d, 0x72, 0x60, 0x03, 0xd1, 0xf3, 0x54, 0xf9, 0x38, 0x46, - 0xc6, 0x16, 0x63, 0x85, 0x76, 0x5b, 0xee, 0x21, 0x6b, 0xde, 0x96, 0x43, 0x3d, 0x94, 0x7c, 0xc4, - 0x62, 0xb4, 0xc3, 0x92, 0x46, 0xe0, 0x68, 0xdb, 0x6d, 0x8c, 0x88, 0x6c, 0xc0, 0xac, 0x58, 0xe2, - 0xf7, 0x1d, 0xdf, 0xd9, 0x71, 0x5a, 0x4e, 0x70, 0xb8, 0x50, 0x44, 0x4e, 0x28, 0x85, 0xc8, 0xef, - 0xe2, 0x41, 0x58, 0xaa, 0x30, 0x4b, 0x92, 0x1a, 0xbf, 0x9c, 0x85, 0xe7, 0x06, 0xc9, 0xff, 0xa4, - 0xae, 0x6f, 0x66, 0x97, 0x86, 0xb8, 0x33, 0x1c, 0xbf, 0x9d, 0xad, 0xc2, 0xf4, 0xa6, 0xb7, 0x67, - 0x75, 0x9c, 0xaf, 0xe3, 0xbd, 0x2e, 0x34, 0x86, 0xc1, 0xc1, 0x70, 0x95, 0x12, 0x7d, 0xb5, 0xc7, - 0x88, 0x16, 0x1f, 0x88, 0x6d, 0xee, 0xa3, 0xba, 0x3f, 0xdc, 0x80, 0xf1, 0xb2, 0xdb, 0x09, 0xe8, - 0xa3, 0x20, 0xe6, 0xe2, 0xc6, 0x81, 0x71, 0x17, 0x37, 0x89, 0x6a, 0xfc, 0x3f, 0x59, 0x38, 0x37, - 0x50, 0x00, 0x26, 0x5b, 0xfa, 0xa8, 0x5d, 0x1e, 0x46, 0x6a, 0x3e, 0x7e, 0xd8, 0x96, 0x13, 0x76, - 0x1b, 0xc7, 0x5a, 0x2d, 0x2f, 0xfe, 0x17, 0x19, 0x31, 0x48, 0x9f, 0x82, 0x31, 0xac, 0x2a, 0x1c, - 0x22, 0xae, 0x1b, 0xc2, 0x5d, 0xd8, 0xd1, 0x75, 0x43, 0x1c, 0x8d, 0x5c, 0x87, 0x42, 0xd9, 0x6a, - 0xb5, 0x14, 0x07, 0x40, 0x94, 0xeb, 0x9b, 0x08, 0x8b, 0x99, 0xf9, 0x48, 0x44, 0xf2, 0x26, 0x00, - 0xff, 0x5b, 0x39, 0x2b, 0x70, 0xb3, 0x14, 0x64, 0xb1, 0xe3, 0x42, 0x41, 0xc6, 0x50, 0x5f, 0x4d, - 0x37, 0xf4, 0x54, 0xe2, 0xa1, 0xbe, 0x18, 0x40, 0x0b, 0xf5, 0xc5, 0x00, 0xc6, 0xaf, 0xe4, 0xe0, - 0xf9, 0xc1, 0xb7, 0x38, 0x72, 0x4f, 0x9f, 0x82, 0x57, 0x86, 0xba, 0xfb, 0x1d, 0x3f, 0x07, 0x32, - 0x86, 0x1e, 0x1f, 0x90, 0x4b, 0x49, 0xe3, 0xe2, 0xef, 0x1e, 0x2d, 0x29, 0xb6, 0x63, 0xb7, 0x5d, - 0xa7, 0xa3, 0xbc, 0x11, 0x7c, 0x0d, 0xa0, 0x1e, 0x58, 0x81, 0xd3, 0xbc, 0xbd, 0x7d, 0x47, 0xfa, - 0x95, 0xdf, 0x18, 0xae, 0x65, 0x11, 0x1d, 0xdf, 0x57, 0x84, 0xfa, 0x1c, 0xa1, 0x8d, 0x0f, 0x1f, - 0x1e, 0x68, 0xf7, 0xd4, 0x08, 0x79, 0xf1, 0x73, 0x50, 0x8c, 0x93, 0x92, 0x8b, 0x90, 0xc7, 0x06, - 0x28, 0x16, 0xd2, 0x31, 0x0e, 0x58, 0xbe, 0x78, 0x57, 0xac, 0x9d, 0x55, 0x98, 0x16, 0xcf, 0xd2, - 0xba, 0x46, 0x0c, 0xbf, 0x57, 0xf9, 0xaa, 0x9d, 0xd4, 0x8a, 0xc5, 0x88, 0x8c, 0x3f, 0xce, 0xc0, - 0xd9, 0xbe, 0xf7, 0x63, 0x52, 0xd3, 0x27, 0xec, 0xa5, 0xe3, 0x2e, 0xd4, 0xc7, 0xce, 0xd5, 0xe2, - 0x8f, 0xc9, 0xb5, 0xff, 0x2e, 0x4c, 0xd6, 0x7b, 0x3b, 0xf1, 0x4b, 0x16, 0xf7, 0x32, 0x56, 0xe0, - 0xea, 0x09, 0xa6, 0xe2, 0xb3, 0xfe, 0xcb, 0x97, 0x77, 0x61, 0x56, 0xc1, 0x2f, 0x7e, 0xd8, 0xff, - 0xd0, 0x7d, 0x09, 0xbd, 0xcb, 0xd4, 0x41, 0x8c, 0x11, 0x19, 0xbf, 0x94, 0x4d, 0xbf, 0xad, 0xb2, - 0xbb, 0xf6, 0x09, 0x6e, 0xab, 0xb7, 0xca, 0xb5, 0xe3, 0xfb, 0xfe, 0x9f, 0xc8, 0xbe, 0xe3, 0x43, - 0xa4, 0xd8, 0xf1, 0xa4, 0x7a, 0x4f, 0x3c, 0x44, 0xca, 0xdd, 0xd1, 0xd7, 0x1f, 0x22, 0x25, 0x32, - 0x79, 0x03, 0xc6, 0xd7, 0x5d, 0xee, 0xf5, 0x29, 0x7b, 0xcc, 0xfd, 0x7b, 0x24, 0x50, 0xdd, 0x1e, - 0x43, 0x4c, 0x76, 0xb7, 0xd0, 0x27, 0x5e, 0x1a, 0x77, 0xe3, 0xdd, 0x22, 0xb6, 0x5c, 0x74, 0x25, - 0x98, 0x4e, 0x66, 0xfc, 0x58, 0x16, 0xa6, 0xf9, 0xe2, 0xe5, 0x4a, 0xda, 0xa7, 0x56, 0x01, 0xfe, - 0x96, 0xa6, 0x00, 0x97, 0x01, 0x09, 0xd4, 0xae, 0x0d, 0xa5, 0xfe, 0xde, 0x07, 0x92, 0xa4, 0x21, - 0x26, 0x4c, 0xaa, 0xd0, 0xc1, 0x9a, 0xef, 0x6b, 0x51, 0xec, 0x0a, 0xb1, 0x77, 0xe0, 0xf3, 0x83, - 0x6f, 0x6a, 0x3c, 0x8c, 0x1f, 0xcd, 0xc2, 0x94, 0xf2, 0x50, 0xf9, 0xd4, 0x0e, 0xfc, 0xe7, 0xb4, - 0x81, 0x5f, 0x08, 0x0d, 0x92, 0xc3, 0x9e, 0x0d, 0x35, 0xee, 0x3d, 0x98, 0x4d, 0x90, 0xc4, 0xdf, - 0x7b, 0x33, 0xc3, 0xbc, 0xf7, 0xbe, 0x96, 0x74, 0xaa, 0xe7, 0xf1, 0x24, 0x43, 0xa7, 0x7a, 0xd5, - 0x8b, 0xff, 0x27, 0xb2, 0x30, 0x2f, 0x7e, 0x61, 0xe4, 0x18, 0xbe, 0x7b, 0x3f, 0xb5, 0x73, 0x51, - 0xd2, 0xe6, 0x62, 0x49, 0x9f, 0x0b, 0xa5, 0x83, 0xfd, 0xa7, 0xc4, 0xf8, 0x8b, 0x00, 0x0b, 0xfd, - 0x08, 0x86, 0xf6, 0xfb, 0x89, 0xac, 0xaa, 0xb3, 0x43, 0x58, 0x55, 0xaf, 0x43, 0x11, 0xab, 0x12, - 0x71, 0x26, 0x7c, 0x76, 0x07, 0xc8, 0x45, 0x02, 0x37, 0x0f, 0xef, 0x23, 0x62, 0x55, 0xf8, 0xb1, - 0x4b, 0x40, 0x82, 0x92, 0xfc, 0x7c, 0x06, 0xa6, 0x11, 0xb8, 0xfa, 0x80, 0x76, 0x02, 0x64, 0x96, - 0x17, 0x46, 0xc0, 0xa1, 0x7e, 0xbc, 0x1e, 0x78, 0x4e, 0x67, 0x4f, 0x28, 0xc8, 0x77, 0x84, 0x82, - 0xfc, 0x6d, 0xae, 0xd8, 0xbf, 0xd2, 0x74, 0xdb, 0x57, 0xf7, 0x3c, 0xeb, 0x81, 0xc3, 0xdf, 0xe0, - 0xad, 0xd6, 0xd5, 0x28, 0x02, 0x72, 0xd7, 0x89, 0xc5, 0x34, 0x16, 0xac, 0xf0, 0xf1, 0x81, 0x37, - 0x94, 0x62, 0xb5, 0xf1, 0xbb, 0x8a, 0xde, 0x22, 0xf2, 0x7d, 0x70, 0x86, 0x3b, 0x91, 0x33, 0x91, - 0xd7, 0xe9, 0xf4, 0xdc, 0x9e, 0xbf, 0x62, 0x35, 0x0f, 0xd8, 0xb9, 0xc7, 0x1d, 0x19, 0xb0, 0xe7, - 0xcd, 0xb0, 0xb0, 0xb1, 0xc3, 0x4b, 0x35, 0xc7, 0xad, 0x74, 0x06, 0x64, 0x0d, 0x66, 0x79, 0x51, - 0xa9, 0x17, 0xb8, 0xf5, 0xa6, 0xd5, 0x72, 0x3a, 0x7b, 0x78, 0xa7, 0x2e, 0xf0, 0xf3, 0xd8, 0xea, - 0x05, 0x6e, 0xc3, 0xe7, 0x70, 0xf5, 0xea, 0x92, 0x20, 0x22, 0x55, 0x98, 0x31, 0xa9, 0x65, 0xdf, - 0xb5, 0x1e, 0x95, 0xad, 0xae, 0xd5, 0x64, 0x17, 0xa1, 0x02, 0x3e, 0x26, 0xe1, 0xdd, 0xcc, 0xa3, - 0x96, 0xdd, 0x68, 0x5b, 0x8f, 0x1a, 0x4d, 0x51, 0xa8, 0xeb, 0xb0, 0x34, 0xba, 0x90, 0x95, 0xd3, - 0x09, 0x59, 0x8d, 0xc7, 0x59, 0x39, 0x9d, 0xfe, 0xac, 0x22, 0x3a, 0xc9, 0x6a, 0xcb, 0xf2, 0xf6, - 0x68, 0xc0, 0x4d, 0xd8, 0xd8, 0x7d, 0x3c, 0xa3, 0xb0, 0x0a, 0xb0, 0xac, 0x81, 0xe6, 0x6c, 0x71, - 0x56, 0x0a, 0x1d, 0x5b, 0x79, 0xdb, 0x9e, 0x13, 0x50, 0xb5, 0x87, 0x13, 0xd8, 0x2c, 0x1c, 0x7f, - 0x34, 0xfe, 0xeb, 0xd7, 0xc5, 0x04, 0x65, 0xc4, 0x4d, 0xe9, 0xe4, 0x64, 0x82, 0x5b, 0x7a, 0x2f, - 0x13, 0x94, 0x21, 0x37, 0xb5, 0x9f, 0x53, 0xd8, 0x4f, 0x85, 0x5b, 0x9f, 0x8e, 0x26, 0x28, 0xc9, - 0x06, 0x1b, 0xb4, 0x80, 0x76, 0xd8, 0x8a, 0x16, 0x26, 0x7c, 0xd3, 0xd8, 0xb4, 0x17, 0x85, 0x1d, - 0x4a, 0xd1, 0x93, 0xc5, 0x8d, 0x14, 0x83, 0xbe, 0x38, 0x31, 0xf9, 0x73, 0x30, 0x73, 0xcf, 0xa7, - 0x37, 0xab, 0xb5, 0xba, 0x74, 0x9b, 0xc7, 0xdb, 0xf6, 0xf4, 0xf2, 0xb5, 0x63, 0x36, 0x9d, 0x2b, - 0x2a, 0x0d, 0x46, 0x15, 0xe6, 0xf3, 0xd6, 0xf3, 0x69, 0x63, 0xd7, 0xe9, 0xfa, 0x61, 0x00, 0x0f, - 0x75, 0xde, 0x62, 0x55, 0x19, 0x6b, 0x30, 0x9b, 0x60, 0x43, 0xa6, 0x01, 0x18, 0xb0, 0x71, 0x6f, - 0xa3, 0xbe, 0xba, 0x55, 0x7c, 0x86, 0x14, 0x61, 0x12, 0x7f, 0xaf, 0x6e, 0x94, 0x56, 0xd6, 0x57, - 0x2b, 0xc5, 0x0c, 0x99, 0x85, 0x29, 0x84, 0x54, 0xaa, 0x75, 0x0e, 0xca, 0xf2, 0x98, 0x92, 0x66, - 0x91, 0x7f, 0xba, 0x01, 0xfb, 0x00, 0xf0, 0x4c, 0x31, 0xfe, 0x5a, 0x16, 0xce, 0xca, 0x63, 0x85, - 0x06, 0x0f, 0x5d, 0xef, 0xc0, 0xe9, 0xec, 0x3d, 0xe5, 0xa7, 0xc3, 0x4d, 0xed, 0x74, 0x78, 0x31, - 0x76, 0x52, 0xc7, 0x7a, 0x39, 0xe0, 0x88, 0xf8, 0x9f, 0x0a, 0x70, 0x6e, 0x20, 0x15, 0xf9, 0x02, - 0x3b, 0xcd, 0x1d, 0xda, 0x09, 0xaa, 0x76, 0x8b, 0x6e, 0x39, 0x6d, 0xea, 0xf6, 0x02, 0x61, 0x32, - 0x7a, 0x01, 0x2f, 0xb8, 0x58, 0xd8, 0x70, 0xec, 0x16, 0x6d, 0x04, 0xbc, 0x58, 0x5b, 0x6e, 0x49, - 0x6a, 0xc6, 0x32, 0x0c, 0x76, 0x5e, 0xed, 0x04, 0xd4, 0x7b, 0x80, 0xc6, 0x29, 0x21, 0xcb, 0x03, - 0x4a, 0xbb, 0x0d, 0x8b, 0x95, 0x36, 0x1c, 0x51, 0xac, 0xb3, 0x4c, 0x50, 0x93, 0x9b, 0x0a, 0xcb, - 0x32, 0x13, 0x87, 0xef, 0x5a, 0x8f, 0xc4, 0x6b, 0xb9, 0x08, 0x3e, 0x14, 0xb2, 0xe4, 0xbe, 0x46, - 0x6d, 0xeb, 0x91, 0x99, 0x24, 0x21, 0x5f, 0x86, 0x53, 0xe2, 0x00, 0x12, 0xbe, 0xa2, 0xb2, 0xc7, - 0xdc, 0x13, 0xf5, 0xe5, 0xc7, 0x47, 0x4b, 0x67, 0x64, 0xa8, 0x25, 0xe9, 0x1d, 0x9c, 0xd6, 0xeb, - 0x74, 0x2e, 0x64, 0x8b, 0x1d, 0xc8, 0xb1, 0xe1, 0xb8, 0x4b, 0x7d, 0xdf, 0xda, 0x93, 0x2f, 0xeb, - 0xdc, 0xba, 0x5e, 0x19, 0xcc, 0x46, 0x9b, 0x97, 0x9b, 0x7d, 0x29, 0xc9, 0x1a, 0x4c, 0x6f, 0xd3, - 0x1d, 0x75, 0x7e, 0x46, 0xc3, 0xad, 0xaa, 0xf8, 0x90, 0xee, 0xf4, 0x9f, 0x9c, 0x18, 0x1d, 0x71, - 0x50, 0x61, 0xf6, 0xe8, 0x70, 0xdd, 0xf1, 0x03, 0xda, 0xa1, 0x1e, 0xc6, 0x0a, 0x18, 0xc3, 0xcd, - 0x60, 0x21, 0x92, 0x90, 0xf5, 0xf2, 0x95, 0x17, 0x1e, 0x1f, 0x2d, 0x9d, 0xe3, 0xde, 0x24, 0x2d, - 0x01, 0x6f, 0xc4, 0xe2, 0x83, 0x27, 0xb9, 0x92, 0xaf, 0xc2, 0x8c, 0xe9, 0xf6, 0x02, 0xa7, 0xb3, - 0x57, 0x0f, 0x3c, 0x2b, 0xa0, 0x7b, 0xfc, 0x40, 0x8a, 0x82, 0x12, 0xc4, 0x4a, 0xc5, 0x5b, 0x0b, - 0x07, 0x36, 0x7c, 0x01, 0xd5, 0x4e, 0x04, 0x9d, 0x80, 0x7c, 0x05, 0xa6, 0xb9, 0x97, 0x60, 0x58, - 0xc1, 0xb8, 0x16, 0xdb, 0x54, 0x2f, 0xbc, 0x7f, 0x8d, 0x5f, 0x50, 0xb9, 0xb7, 0x61, 0x5a, 0x05, - 0x31, 0x6e, 0xe4, 0x03, 0x31, 0x58, 0x35, 0xa7, 0xb3, 0x17, 0x2e, 0x63, 0xc0, 0x91, 0x7f, 0x3d, - 0x1a, 0x92, 0x2e, 0x6b, 0xae, 0x5c, 0xc6, 0x7d, 0x2c, 0x35, 0x92, 0x7c, 0x48, 0x00, 0xe7, 0x4a, - 0xbe, 0xef, 0xf8, 0x81, 0x30, 0xac, 0x5e, 0x7d, 0x44, 0x9b, 0x3d, 0x86, 0xbc, 0xed, 0x7a, 0x07, - 0xd4, 0xe3, 0xa6, 0x7d, 0x23, 0x2b, 0x57, 0x1e, 0x1f, 0x2d, 0xbd, 0x62, 0x21, 0x62, 0x43, 0xd8, - 0x62, 0x37, 0xa8, 0x44, 0x6d, 0x3c, 0xe4, 0xb8, 0x4a, 0x1f, 0x06, 0x33, 0x25, 0x5f, 0x81, 0xd3, - 0x65, 0xcb, 0xa7, 0xd5, 0x8e, 0x4f, 0x3b, 0xbe, 0x13, 0x38, 0x0f, 0xa8, 0x18, 0x54, 0x3c, 0xfc, - 0x0a, 0x18, 0x49, 0xdd, 0x68, 0x62, 0xd2, 0x85, 0x08, 0xa5, 0x21, 0x26, 0x45, 0xa9, 0xa6, 0x0f, - 0x17, 0xe3, 0x28, 0x03, 0xc5, 0xf8, 0xb0, 0x93, 0x2f, 0xc2, 0x38, 0x37, 0x49, 0xa0, 0xfe, 0xbe, - 0x70, 0x70, 0x93, 0x2f, 0xdc, 0x21, 0x5c, 0x27, 0x12, 0x2e, 0x09, 0xdc, 0xe0, 0x81, 0xaa, 0xef, - 0xb5, 0xe8, 0x92, 0x20, 0x89, 0x88, 0x0d, 0x93, 0x7c, 0x64, 0x29, 0x46, 0x0f, 0x11, 0x96, 0x69, - 0x2f, 0xa8, 0x2b, 0x59, 0x14, 0xc5, 0xf8, 0xa3, 0xca, 0x5b, 0xcc, 0x1f, 0x47, 0xd0, 0xaa, 0xd0, - 0xb8, 0xae, 0x00, 0x14, 0x24, 0xa1, 0x71, 0x16, 0xce, 0xf4, 0x69, 0xb3, 0xf1, 0x00, 0x9f, 0xc1, - 0xfa, 0xd4, 0x48, 0xbe, 0x08, 0xf3, 0x48, 0x58, 0x76, 0x3b, 0x1d, 0xda, 0x0c, 0x70, 0xeb, 0x90, - 0xaa, 0xa3, 0x1c, 0x7f, 0x6b, 0xe5, 0xfd, 0x6d, 0x86, 0x08, 0x8d, 0xb8, 0x06, 0x29, 0x95, 0x83, - 0xf1, 0x33, 0x59, 0x58, 0x10, 0xbb, 0x91, 0x49, 0x9b, 0xae, 0x67, 0x3f, 0xfd, 0xa7, 0xdf, 0xaa, - 0x76, 0xfa, 0x5d, 0x08, 0x3d, 0x9a, 0xd3, 0x3a, 0x39, 0xe0, 0xf0, 0xfb, 0xa5, 0x0c, 0x3c, 0x37, - 0x88, 0x88, 0x8d, 0x4e, 0x18, 0x2d, 0x65, 0x3c, 0x11, 0x15, 0xa5, 0x0b, 0x73, 0x38, 0xa1, 0xe5, - 0x7d, 0xda, 0x3c, 0xf0, 0xd7, 0x5c, 0x3f, 0x40, 0xc3, 0xd8, 0x6c, 0x9f, 0x87, 0x9a, 0xd7, 0x52, - 0x1f, 0x6a, 0x4e, 0xf3, 0x55, 0xd6, 0x44, 0x1e, 0x3c, 0x9e, 0xcb, 0x01, 0x3d, 0xf4, 0xcd, 0x34, - 0xd6, 0x68, 0xe4, 0x58, 0xea, 0x05, 0xfb, 0x35, 0x8f, 0xee, 0x52, 0x8f, 0x76, 0x9a, 0xf4, 0x7b, - 0xcc, 0xc8, 0x51, 0xef, 0xdc, 0x50, 0xda, 0x86, 0x5f, 0x9a, 0x84, 0xf9, 0x34, 0x32, 0x36, 0x2e, - 0xca, 0x05, 0x37, 0x9e, 0x9f, 0xe5, 0x2f, 0x64, 0x60, 0xb2, 0x4e, 0x9b, 0x6e, 0xc7, 0xbe, 0x89, - 0xcf, 0xe1, 0x62, 0x74, 0x1a, 0xfc, 0x80, 0x67, 0xf0, 0xc6, 0x6e, 0xec, 0x9d, 0xfc, 0xbb, 0x47, - 0x4b, 0x9f, 0x1f, 0xee, 0x5e, 0xd9, 0x74, 0xd1, 0x2b, 0x39, 0xc0, 0xa0, 0xa1, 0x61, 0x15, 0xa8, - 0xd9, 0xd6, 0x2a, 0x25, 0x2b, 0x30, 0x25, 0x3e, 0x57, 0x57, 0x0d, 0x96, 0xc3, 0x9d, 0xbe, 0x65, - 0x41, 0x22, 0x3a, 0x98, 0x46, 0x42, 0xae, 0x43, 0xee, 0xde, 0xf2, 0x4d, 0x31, 0x07, 0x32, 0xec, - 0xea, 0xbd, 0xe5, 0x9b, 0xa8, 0xba, 0x62, 0xd7, 0x81, 0xa9, 0xde, 0xb2, 0xf6, 0x42, 0x7d, 0x6f, - 0xf9, 0x26, 0xf9, 0x01, 0x38, 0x55, 0x71, 0x7c, 0x51, 0x05, 0x37, 0xb7, 0xb5, 0xd1, 0xbd, 0x64, - 0xb4, 0xcf, 0xea, 0xfd, 0x4c, 0xea, 0xea, 0x7d, 0xc1, 0x0e, 0x99, 0x34, 0xb8, 0x2d, 0xaf, 0x1d, - 0x0f, 0x0a, 0x94, 0x5e, 0x0f, 0xf9, 0x10, 0xa6, 0x51, 0xf5, 0x8a, 0x16, 0xc8, 0x18, 0xc4, 0x70, - 0xac, 0x4f, 0xcd, 0x9f, 0x4a, 0xad, 0x79, 0x11, 0x35, 0xb9, 0x0d, 0xb4, 0x63, 0xc6, 0x80, 0x87, - 0xda, 0x0d, 0x5d, 0xe3, 0x4c, 0x6e, 0xc3, 0x8c, 0x10, 0x95, 0x36, 0x77, 0xb7, 0xf6, 0x69, 0xc5, - 0x3a, 0x14, 0x8f, 0xcb, 0x78, 0xfb, 0x12, 0xf2, 0x55, 0xc3, 0xdd, 0x6d, 0x04, 0xfb, 0xb4, 0x61, - 0x5b, 0x9a, 0x50, 0x11, 0x23, 0x24, 0xdf, 0x0f, 0x13, 0xeb, 0x6e, 0x93, 0x49, 0xc9, 0xb8, 0x33, - 0xf0, 0xf7, 0xe6, 0xf7, 0x31, 0xed, 0x07, 0x07, 0xc7, 0x44, 0x9f, 0xef, 0x1e, 0x2d, 0xbd, 0x75, - 0xd2, 0x45, 0xa3, 0x54, 0x60, 0xaa, 0xb5, 0x91, 0x32, 0x14, 0xb6, 0xe9, 0x0e, 0xeb, 0x6d, 0x3c, - 0x25, 0x80, 0x04, 0x0b, 0x73, 0x12, 0xf1, 0x4b, 0x33, 0x27, 0x11, 0x30, 0xe2, 0xc1, 0x2c, 0x8e, - 0x4f, 0xcd, 0xf2, 0xfd, 0x87, 0xae, 0x67, 0x63, 0xec, 0xd7, 0x7e, 0x4f, 0xd9, 0xcb, 0xa9, 0x83, - 0xff, 0x1c, 0x1f, 0xfc, 0xae, 0xc2, 0x41, 0x15, 0xf6, 0x12, 0xec, 0xc9, 0x57, 0x61, 0xda, 0xa4, - 0x5f, 0xeb, 0x39, 0x1e, 0xbd, 0x7b, 0xb3, 0x84, 0x5f, 0xe5, 0xa4, 0xe6, 0xa4, 0xa3, 0x17, 0x72, - 0x89, 0xd2, 0xe3, 0x30, 0xa9, 0x2d, 0x6a, 0xb4, 0x77, 0x2d, 0xfd, 0xb5, 0x40, 0x25, 0x21, 0x35, - 0x98, 0xa8, 0xd0, 0x07, 0x4e, 0x93, 0xa2, 0x2b, 0x81, 0x30, 0xe5, 0x0b, 0x63, 0x9a, 0x47, 0x25, - 0x5c, 0x6f, 0x62, 0x23, 0x80, 0x3b, 0x26, 0xe8, 0xd6, 0x62, 0x21, 0x22, 0xb9, 0x01, 0xb9, 0x6a, - 0xa5, 0x26, 0x2c, 0xf9, 0xa4, 0x85, 0x7e, 0xd5, 0xae, 0xc9, 0x08, 0xd0, 0x68, 0xfc, 0xe1, 0xd8, - 0x9a, 0x1d, 0x60, 0xb5, 0x52, 0x23, 0xbb, 0x30, 0x85, 0x03, 0xb0, 0x46, 0x2d, 0x3e, 0xb6, 0x33, - 0x7d, 0xc6, 0xf6, 0x4a, 0xea, 0xd8, 0x2e, 0xf0, 0xb1, 0xdd, 0x17, 0xd4, 0x5a, 0x48, 0x5b, 0x95, - 0x2d, 0x13, 0x3f, 0x45, 0x98, 0x6d, 0x19, 0xd4, 0x75, 0x6b, 0x1d, 0x1f, 0xb7, 0x85, 0xf8, 0x29, - 0xa3, 0x72, 0x87, 0x91, 0x61, 0xfb, 0x1a, 0x0a, 0x27, 0xf9, 0x90, 0xcf, 0x41, 0x7e, 0xf3, 0x20, - 0xb0, 0x16, 0x66, 0xb5, 0x71, 0x64, 0x20, 0xd9, 0x7d, 0xd4, 0x18, 0xba, 0x07, 0x5a, 0x38, 0x0a, - 0xa4, 0x21, 0xcb, 0x30, 0x56, 0xab, 0xde, 0xaf, 0xb7, 0xdc, 0x60, 0x81, 0x84, 0x77, 0x1a, 0xd2, - 0x75, 0x1e, 0x34, 0xfc, 0x96, 0xab, 0x87, 0xea, 0x97, 0x88, 0x6c, 0xfa, 0xd6, 0x2c, 0xcf, 0x7e, - 0x68, 0x79, 0xe8, 0x01, 0x36, 0xa7, 0x55, 0xab, 0x94, 0xf0, 0xe9, 0xdb, 0x17, 0x80, 0x98, 0x5b, - 0x98, 0xca, 0x42, 0x68, 0x03, 0x66, 0xc5, 0x32, 0x11, 0x5d, 0xbb, 0x7b, 0xb3, 0x64, 0xfc, 0x87, - 0x19, 0xdc, 0x30, 0xc9, 0x2b, 0xe8, 0xb1, 0x1e, 0x3e, 0xf0, 0xa2, 0x5e, 0xd3, 0xea, 0xc6, 0x02, - 0x21, 0x72, 0x14, 0xf2, 0x1a, 0x8c, 0xde, 0xb4, 0x9a, 0x34, 0x90, 0x0f, 0x3b, 0x88, 0xbc, 0x8b, - 0x10, 0x55, 0x09, 0xca, 0x71, 0x98, 0x2c, 0xc7, 0x17, 0x52, 0x29, 0x4a, 0xab, 0x56, 0x2e, 0xc9, - 0x77, 0x1d, 0x94, 0xe5, 0xc4, 0x02, 0x54, 0xf2, 0xae, 0xc5, 0x6c, 0x20, 0x53, 0x39, 0x18, 0x7f, - 0x98, 0x89, 0x76, 0x00, 0xf2, 0x32, 0xe4, 0xcd, 0x5a, 0xd8, 0x7e, 0xee, 0x0d, 0x15, 0x6b, 0x3e, - 0x22, 0x90, 0x0f, 0xe0, 0x94, 0xc2, 0x27, 0x61, 0x90, 0xf9, 0x12, 0xba, 0xeb, 0x28, 0x2d, 0x49, - 0xb7, 0xca, 0x4c, 0xe7, 0x81, 0x82, 0x6b, 0x54, 0x50, 0xa1, 0x1d, 0x87, 0xf3, 0x56, 0x3a, 0xab, - 0xf2, 0xb6, 0x11, 0x21, 0xde, 0xd9, 0x34, 0x0e, 0xdc, 0x63, 0xc7, 0xf8, 0xb5, 0x8c, 0xf6, 0x65, - 0x87, 0xc9, 0xa8, 0x32, 0xc7, 0x24, 0xa3, 0x7a, 0x13, 0xa0, 0xd4, 0x0b, 0xdc, 0xd5, 0x8e, 0xe7, - 0xb6, 0xb8, 0x76, 0x41, 0xc4, 0x02, 0x45, 0x9d, 0x29, 0x45, 0xb0, 0xe6, 0x58, 0x10, 0x22, 0xa7, - 0xda, 0xae, 0xe6, 0x3e, 0xaa, 0xed, 0xaa, 0xf1, 0xdb, 0x19, 0x6d, 0x6d, 0x33, 0x89, 0x4c, 0x7e, - 0x1e, 0x8a, 0x69, 0x41, 0xf2, 0xf3, 0x88, 0x3e, 0x8e, 0x7f, 0x3d, 0x03, 0xa7, 0xb9, 0x11, 0xe8, - 0x46, 0xaf, 0xbd, 0x43, 0xbd, 0xfb, 0x56, 0xcb, 0xb1, 0xb9, 0x47, 0x1a, 0x17, 0x36, 0x2f, 0x25, - 0x3f, 0x94, 0x74, 0x7c, 0x7e, 0x81, 0xe3, 0x46, 0xa9, 0x8d, 0x0e, 0x16, 0x36, 0x1e, 0x84, 0xa5, - 0xea, 0x05, 0x2e, 0x9d, 0xde, 0xf8, 0xe5, 0x0c, 0xbc, 0x70, 0x6c, 0x2d, 0xe4, 0x2a, 0x8c, 0xc9, - 0x20, 0xac, 0x19, 0x1c, 0x78, 0x34, 0xc8, 0x4a, 0x06, 0x60, 0x95, 0x58, 0xe4, 0x4b, 0x70, 0x4a, - 0x65, 0xb5, 0xe5, 0x59, 0x8e, 0x1a, 0xea, 0x34, 0xa5, 0xd5, 0x01, 0x43, 0x89, 0x4b, 0x46, 0xe9, - 0x4c, 0x8c, 0xff, 0x33, 0xa3, 0x24, 0xae, 0x7b, 0x4a, 0xe5, 0xe5, 0x1b, 0x9a, 0xbc, 0x2c, 0x63, - 0x05, 0x85, 0xbd, 0x62, 0x65, 0xa9, 0x77, 0x9c, 0x19, 0xc5, 0xb0, 0x10, 0x01, 0xdf, 0xcc, 0xc2, - 0xc4, 0x3d, 0x9f, 0x7a, 0xfc, 0x81, 0xf3, 0x7b, 0x2b, 0x26, 0x4c, 0xd8, 0xaf, 0xa1, 0xa2, 0x76, - 0xfc, 0x7e, 0x06, 0x15, 0xdf, 0x2a, 0x05, 0x1b, 0x0d, 0x25, 0x25, 0x05, 0x8e, 0x06, 0x26, 0xa3, - 0x40, 0x28, 0x8f, 0xec, 0xb1, 0xae, 0x67, 0xa7, 0xc1, 0x14, 0x45, 0xeb, 0xe4, 0xf3, 0x30, 0x72, - 0x0f, 0xd5, 0x78, 0xba, 0xf7, 0x71, 0xc8, 0x1f, 0x0b, 0xf9, 0x26, 0xdd, 0x63, 0x7f, 0xaa, 0x67, - 0x0c, 0x96, 0x91, 0x3a, 0x8c, 0x95, 0x3d, 0x8a, 0xc9, 0xe6, 0xf2, 0xc3, 0x7b, 0xd0, 0x35, 0x39, - 0x49, 0xdc, 0x83, 0x4e, 0x70, 0x32, 0x7e, 0x3a, 0x0b, 0x24, 0xea, 0x23, 0x46, 0x69, 0xf7, 0x9f, - 0xda, 0x49, 0x7f, 0x4f, 0x9b, 0xf4, 0x73, 0x89, 0x49, 0xe7, 0xdd, 0x1b, 0x6a, 0xee, 0x7f, 0x3d, - 0x03, 0xa7, 0xd3, 0x09, 0xc9, 0x05, 0x18, 0xdd, 0xdc, 0xaa, 0x49, 0x07, 0x76, 0xd1, 0x15, 0xb7, - 0x8b, 0xf7, 0x72, 0x53, 0x14, 0x91, 0xd7, 0x61, 0xf4, 0x0b, 0x66, 0x99, 0x9d, 0x43, 0x4a, 0x44, - 0xd4, 0xaf, 0x79, 0x8d, 0xa6, 0x7e, 0x14, 0x09, 0x24, 0x75, 0x6e, 0x73, 0x4f, 0x6c, 0x6e, 0x7f, - 0x22, 0x0b, 0x33, 0xa5, 0x66, 0x93, 0xfa, 0x3e, 0x13, 0x72, 0xa8, 0x1f, 0x3c, 0xb5, 0x13, 0x9b, - 0xee, 0x9a, 0xae, 0xf5, 0x6d, 0xa8, 0x59, 0xfd, 0xcd, 0x0c, 0x9c, 0x92, 0x54, 0x0f, 0x1c, 0xfa, - 0x70, 0x6b, 0xdf, 0xa3, 0xfe, 0xbe, 0xdb, 0xb2, 0x87, 0x0e, 0xbb, 0xcc, 0x04, 0x3d, 0x8c, 0xd1, - 0xa8, 0xbe, 0x76, 0xef, 0x22, 0x44, 0x13, 0xf4, 0x78, 0x1c, 0xc7, 0xab, 0x30, 0x56, 0xea, 0x76, - 0x3d, 0xf7, 0x01, 0xff, 0xec, 0xa7, 0x84, 0x43, 0x21, 0x07, 0x69, 0x0e, 0x88, 0x1c, 0xc4, 0x9a, - 0x51, 0xa1, 0x1d, 0x1e, 0x49, 0x67, 0x8a, 0x37, 0xc3, 0xa6, 0x1d, 0x55, 0x86, 0xc5, 0x72, 0xa3, - 0x0e, 0xa4, 0xe6, 0xb9, 0x6d, 0x37, 0xa0, 0x36, 0xef, 0x0f, 0xfa, 0x6d, 0x1e, 0x1b, 0x04, 0x64, - 0xcb, 0x09, 0x5a, 0x5a, 0x10, 0x90, 0x80, 0x01, 0x4c, 0x0e, 0x37, 0xfe, 0xd7, 0x11, 0x98, 0x54, - 0x47, 0x87, 0x18, 0x3c, 0x46, 0xab, 0xeb, 0xa9, 0xce, 0xc3, 0x16, 0x42, 0x4c, 0x51, 0x12, 0xf9, - 0xdc, 0x67, 0x8f, 0xf5, 0xb9, 0xdf, 0x86, 0xa9, 0x9a, 0xe7, 0x76, 0x5d, 0x9f, 0xda, 0x3c, 0x09, - 0x29, 0xdf, 0x0a, 0xe7, 0x94, 0x3b, 0x1e, 0x9b, 0x48, 0x7c, 0x27, 0x44, 0x0d, 0x47, 0x57, 0x60, - 0x37, 0xe2, 0x29, 0x4a, 0x75, 0x3e, 0xdc, 0x04, 0xc1, 0xf2, 0x45, 0xc0, 0xac, 0xd0, 0x04, 0x81, - 0x41, 0x74, 0x13, 0x04, 0x06, 0x51, 0xbf, 0xb5, 0x91, 0x27, 0xf5, 0xad, 0x91, 0x9f, 0xce, 0xc0, - 0x44, 0xa9, 0xd3, 0x11, 0xbe, 0xfc, 0xc7, 0x38, 0x33, 0x7e, 0x49, 0x58, 0x21, 0xbc, 0xf5, 0x91, - 0xac, 0x10, 0x50, 0x6e, 0xf1, 0x51, 0x52, 0x8d, 0x2a, 0x54, 0x6f, 0x39, 0x4a, 0x3b, 0xc8, 0x5b, - 0x50, 0x0c, 0x17, 0x79, 0xb5, 0x63, 0xd3, 0x47, 0xd4, 0x5f, 0x18, 0x3b, 0x9f, 0xbb, 0x34, 0x25, - 0x42, 0xe5, 0xa9, 0x92, 0x69, 0x1c, 0x91, 0x6c, 0x01, 0x58, 0xe1, 0xea, 0x8a, 0xa5, 0x7f, 0x49, - 0x2e, 0x3f, 0x21, 0x3d, 0xe3, 0x6f, 0x7c, 0xe8, 0x51, 0xa5, 0xe7, 0x88, 0x0f, 0x69, 0xc3, 0x0c, - 0xcf, 0xbd, 0x82, 0x39, 0x59, 0x31, 0x22, 0x2c, 0x1c, 0x3b, 0x0f, 0x2f, 0x0b, 0x5d, 0xd5, 0xb3, - 0x22, 0xa3, 0x0b, 0xa6, 0x79, 0x6d, 0xa4, 0x84, 0x87, 0x8d, 0xf3, 0xe6, 0x81, 0x09, 0xcd, 0x33, - 0xc9, 0xf6, 0xf2, 0x45, 0xff, 0x13, 0x19, 0x38, 0xad, 0x2e, 0xfa, 0x7a, 0x6f, 0xa7, 0xed, 0xe0, - 0x5d, 0x90, 0x5c, 0x81, 0x71, 0xb1, 0x26, 0xc3, 0x4b, 0x54, 0x32, 0xb0, 0x6d, 0x84, 0x42, 0x56, - 0xd9, 0x32, 0x64, 0x3c, 0x84, 0xd4, 0x3d, 0x17, 0xdb, 0xa7, 0x58, 0x51, 0x94, 0xd7, 0xcb, 0xc3, - 0xdf, 0xfa, 0xfa, 0x64, 0x10, 0xe3, 0x5d, 0x98, 0xd5, 0x67, 0xa2, 0x4e, 0x03, 0x72, 0x19, 0xc6, - 0xe4, 0xf4, 0x65, 0xd2, 0xa7, 0x4f, 0x96, 0x1b, 0xdb, 0x40, 0x12, 0xf4, 0x3e, 0x9a, 0x0b, 0xd1, - 0x40, 0x9a, 0xb3, 0xc9, 0xc7, 0xba, 0x04, 0x62, 0x98, 0xf3, 0x7a, 0x42, 0xb3, 0x5f, 0x65, 0xa4, - 0xc6, 0x1f, 0x4e, 0xc3, 0x5c, 0xca, 0x9e, 0x7b, 0x8c, 0x4c, 0xb4, 0xa4, 0x6f, 0x10, 0xe3, 0xa1, - 0x2f, 0xb4, 0xdc, 0x16, 0xde, 0x95, 0x39, 0x89, 0x07, 0x6c, 0x07, 0x83, 0x12, 0x15, 0x7f, 0x12, - 0x72, 0x91, 0x1a, 0xae, 0x60, 0xe4, 0x89, 0x85, 0x2b, 0x58, 0x81, 0x29, 0xd1, 0x2b, 0xb1, 0x5d, - 0x8d, 0x46, 0xda, 0x5c, 0x8f, 0x17, 0x34, 0x12, 0xdb, 0x96, 0x4e, 0xc2, 0x79, 0xf8, 0x6e, 0xeb, - 0x01, 0x15, 0x3c, 0xc6, 0x54, 0x1e, 0x58, 0x90, 0xca, 0x43, 0x21, 0x21, 0xff, 0x1e, 0xa6, 0xa2, - 0x40, 0x88, 0xba, 0x67, 0x15, 0x06, 0xed, 0x59, 0xf6, 0x93, 0xd9, 0xb3, 0xce, 0xc9, 0x36, 0xa6, - 0xef, 0x5d, 0x29, 0xcd, 0x22, 0xbf, 0x90, 0x81, 0x59, 0xee, 0x33, 0xaf, 0x36, 0x76, 0xa0, 0x1f, - 0x74, 0xf3, 0xc9, 0x34, 0xf6, 0x39, 0x1f, 0xab, 0xed, 0xd3, 0xd6, 0x64, 0xa3, 0xc8, 0xf7, 0x01, - 0x84, 0x5f, 0x94, 0xbf, 0x00, 0xf8, 0xa9, 0x3d, 0x97, 0xb2, 0x0b, 0x84, 0x48, 0x51, 0x24, 0xdd, - 0x20, 0xa4, 0xd3, 0x12, 0x90, 0x84, 0x50, 0xf2, 0x03, 0x30, 0xcf, 0xbe, 0x97, 0x10, 0x22, 0x22, - 0x7c, 0x2c, 0x4c, 0x60, 0x2d, 0x9f, 0xee, 0x2f, 0x13, 0x5d, 0x49, 0x23, 0xe3, 0x71, 0xff, 0xa2, - 0xc4, 0x6b, 0x81, 0xea, 0x0c, 0x9c, 0x5a, 0x11, 0x86, 0xcc, 0xc1, 0xd6, 0xf3, 0x68, 0xb7, 0x7d, - 0xf6, 0xb7, 0xb3, 0xf2, 0x5b, 0xe0, 0xfb, 0x9b, 0xaf, 0x3b, 0xb3, 0x21, 0x88, 0x7c, 0x01, 0x48, - 0xe8, 0x6c, 0xce, 0x61, 0x54, 0x46, 0xc2, 0xe5, 0xaa, 0xdd, 0xc8, 0x69, 0xdd, 0x93, 0xc5, 0xea, - 0x22, 0x49, 0x12, 0x13, 0x0a, 0xf3, 0xa2, 0xd3, 0x0c, 0x2a, 0x53, 0x5d, 0xf8, 0x0b, 0xd3, 0x5a, - 0xfc, 0x94, 0xa8, 0x24, 0xca, 0xd0, 0xa6, 0xe4, 0xcb, 0xd0, 0x54, 0x4e, 0x69, 0xec, 0xc8, 0x0d, - 0x18, 0x47, 0x8f, 0xb2, 0x35, 0x69, 0x04, 0x25, 0x0c, 0x32, 0xd0, 0xf7, 0xac, 0xb1, 0xaf, 0x9b, - 0x32, 0x45, 0xa8, 0xec, 0x3a, 0x50, 0xf1, 0x0e, 0xcd, 0x5e, 0x07, 0x15, 0xb0, 0x42, 0xdf, 0x61, - 0x7b, 0x87, 0x0d, 0xaf, 0xa7, 0xbb, 0x1c, 0x22, 0x12, 0xf9, 0x2a, 0x4c, 0xdc, 0xb5, 0x1e, 0x49, - 0xfd, 0xab, 0x50, 0xb2, 0x0e, 0x95, 0x5b, 0xbc, 0x6d, 0x3d, 0x6a, 0xd8, 0xbd, 0x78, 0xd4, 0x41, - 0x9e, 0x5b, 0x5c, 0x61, 0x49, 0xbe, 0x0c, 0xa0, 0x68, 0x85, 0xc9, 0xb1, 0x15, 0xbc, 0x20, 0x23, - 0x02, 0xa5, 0x6a, 0x8b, 0x91, 0xbf, 0xc2, 0x30, 0x26, 0x39, 0xcc, 0x7f, 0x72, 0x92, 0xc3, 0xa9, - 0x4f, 0x4e, 0x72, 0x58, 0xdc, 0x81, 0xb3, 0x7d, 0x3f, 0x9d, 0x94, 0x20, 0x8d, 0x57, 0xf5, 0x20, - 0x8d, 0x67, 0xfb, 0x1d, 0xb1, 0xbe, 0x1e, 0x3c, 0x79, 0xae, 0x38, 0xdf, 0x5f, 0x3a, 0xf9, 0x4e, - 0x36, 0x76, 0xe4, 0x8a, 0x8b, 0x05, 0x0f, 0xb6, 0xdf, 0x4f, 0x26, 0xc9, 0x62, 0xf6, 0x2f, 0x7e, - 0x28, 0x67, 0xa3, 0x0b, 0x4d, 0x2c, 0xc9, 0x29, 0x3f, 0x9e, 0x3f, 0xee, 0xe9, 0xfb, 0x36, 0x4c, - 0xf3, 0xbc, 0x3f, 0x77, 0xe8, 0xe1, 0x43, 0xd7, 0xb3, 0x65, 0x26, 0x4b, 0x94, 0xc1, 0x13, 0x19, - 0xf2, 0x62, 0xb8, 0xa4, 0x22, 0x9d, 0x94, 0x46, 0xb0, 0xf6, 0xb3, 0xa9, 0xbb, 0x18, 0x43, 0x18, - 0xe4, 0xbf, 0x44, 0xde, 0x08, 0x05, 0x35, 0xea, 0xa9, 0x21, 0x94, 0x3d, 0x09, 0x4c, 0x91, 0xd7, - 0xa8, 0x67, 0xfc, 0x6e, 0x0e, 0x08, 0xaf, 0xa9, 0x6c, 0x75, 0x2d, 0x74, 0xe1, 0x73, 0x30, 0x14, - 0x45, 0x51, 0xe0, 0x58, 0x3b, 0x2d, 0xaa, 0xc6, 0x71, 0x11, 0x46, 0xa7, 0x61, 0x59, 0x23, 0x7e, - 0xd1, 0x49, 0x10, 0xf6, 0xd9, 0xea, 0xb2, 0x1f, 0x67, 0xab, 0xfb, 0x2a, 0x3c, 0x5b, 0xea, 0x62, - 0x02, 0x31, 0x59, 0xcb, 0x4d, 0xd7, 0x93, 0x9b, 0x94, 0xe6, 0x1c, 0x62, 0x85, 0x68, 0x89, 0x96, - 0x0e, 0x62, 0xa1, 0xc8, 0x29, 0x6c, 0x5d, 0x76, 0x03, 0xd5, 0xd9, 0x58, 0xca, 0x29, 0x5d, 0x2c, - 0x49, 0x91, 0x53, 0x38, 0x89, 0xe4, 0xe1, 0x78, 0x52, 0x4e, 0xc1, 0xa4, 0x01, 0x11, 0x0f, 0xc7, - 0xa3, 0x7d, 0x64, 0x9d, 0x90, 0x84, 0xbc, 0x0d, 0x13, 0xa5, 0x5e, 0xe0, 0x0a, 0xc6, 0xc2, 0x5a, - 0x3a, 0xb2, 0x6b, 0x16, 0x4d, 0xd1, 0xae, 0x3e, 0x11, 0xba, 0xf1, 0x07, 0x39, 0x38, 0x9b, 0x9c, - 0x5e, 0x51, 0x1a, 0x7e, 0x1f, 0x99, 0x63, 0xbe, 0x8f, 0xb4, 0xd5, 0xc0, 0x1f, 0x0b, 0x9e, 0xd8, - 0x6a, 0xe0, 0x79, 0xc8, 0x3e, 0xe2, 0x6a, 0xa8, 0xc3, 0x84, 0x7a, 0xde, 0xe5, 0x3f, 0xea, 0x79, - 0xa7, 0x72, 0x61, 0x97, 0x7a, 0xee, 0x63, 0x3d, 0x12, 0x3d, 0x1d, 0xc5, 0xdd, 0xab, 0x39, 0x06, - 0xf9, 0xd7, 0xe0, 0x3c, 0xdf, 0x93, 0xe2, 0x9d, 0x5d, 0x39, 0x94, 0x1c, 0xc5, 0xc4, 0x2d, 0x3f, - 0x3e, 0x5a, 0xba, 0xc2, 0x55, 0x25, 0x8d, 0xc4, 0xb0, 0x35, 0x76, 0x0e, 0x1b, 0xb2, 0x65, 0x4a, - 0x25, 0xc7, 0xf2, 0xc6, 0xe4, 0x63, 0x4a, 0x6e, 0xab, 0xd7, 0xd3, 0xdc, 0x48, 0x78, 0x24, 0x52, - 0x0e, 0xd6, 0x3d, 0x48, 0xa4, 0x3a, 0x2c, 0x9b, 0xaa, 0x0e, 0x93, 0xfa, 0x94, 0x5c, 0xaa, 0x3e, - 0xa5, 0x02, 0x33, 0xf5, 0xde, 0x8e, 0xac, 0x1b, 0x11, 0xf3, 0x9a, 0x27, 0x5c, 0x5a, 0x87, 0xe2, - 0x24, 0xc6, 0x8f, 0x64, 0x61, 0xb2, 0xd6, 0xea, 0xed, 0x39, 0x9d, 0x8a, 0x15, 0x58, 0x4f, 0xad, - 0x86, 0xee, 0x4d, 0x4d, 0x43, 0x17, 0x7a, 0x4b, 0x85, 0x1d, 0x1b, 0x4a, 0x3d, 0xf7, 0xad, 0x0c, - 0xcc, 0x44, 0x24, 0xfc, 0x9c, 0x5d, 0x83, 0x3c, 0xfb, 0x21, 0xee, 0xad, 0xe7, 0x13, 0x8c, 0x79, - 0xa2, 0x96, 0xf0, 0x2f, 0xa1, 0x33, 0xd3, 0xb3, 0x20, 0x20, 0x87, 0xc5, 0xcf, 0xf0, 0x8c, 0xff, - 0x27, 0x4f, 0xd0, 0xf2, 0x2b, 0x19, 0x28, 0xc6, 0x7b, 0x42, 0xee, 0xc0, 0x18, 0xe3, 0xe4, 0x50, - 0x79, 0xa5, 0x7e, 0xb1, 0x4f, 0x9f, 0xaf, 0x08, 0x34, 0xde, 0x3c, 0x1c, 0x7c, 0xca, 0x21, 0xa6, - 0xe4, 0xb0, 0x68, 0xc2, 0xa4, 0x8a, 0x95, 0xd2, 0xba, 0xd7, 0x74, 0xe1, 0xe2, 0x74, 0xfa, 0x38, - 0x68, 0x69, 0x65, 0xb4, 0x56, 0x0b, 0xb9, 0xe1, 0xa2, 0xb6, 0xb8, 0x70, 0xac, 0x62, 0xeb, 0x86, - 0x2f, 0xb3, 0xe5, 0x28, 0x38, 0xb2, 0xba, 0xce, 0x52, 0x16, 0x74, 0x88, 0x47, 0x5e, 0x83, 0x51, - 0x5e, 0x9f, 0x9a, 0x5e, 0xa1, 0x8b, 0x10, 0x55, 0xc4, 0xe5, 0x38, 0xc6, 0xdf, 0xc8, 0xc1, 0xe9, - 0xa8, 0x79, 0xf7, 0xba, 0xb6, 0x15, 0xd0, 0x9a, 0xe5, 0x59, 0x6d, 0xff, 0x98, 0x2f, 0xe0, 0x52, - 0xa2, 0x69, 0x18, 0x6e, 0x5f, 0x36, 0x4d, 0x69, 0x90, 0x11, 0x6b, 0x10, 0xaa, 0x2f, 0x79, 0x83, - 0x64, 0x33, 0xc8, 0x1d, 0xc8, 0xd5, 0x69, 0x20, 0xb6, 0xcd, 0x8b, 0x89, 0x51, 0x55, 0xdb, 0x75, - 0xa5, 0x4e, 0x03, 0x3e, 0x89, 0x3c, 0xf6, 0x07, 0xd5, 0x62, 0x2f, 0xd6, 0x69, 0x40, 0xb6, 0x61, - 0x74, 0xf5, 0x51, 0x97, 0x36, 0x03, 0x91, 0x5e, 0xe8, 0xf2, 0x60, 0x7e, 0x1c, 0x57, 0xc9, 0x2e, - 0x44, 0x11, 0xa0, 0x0e, 0x16, 0x47, 0x59, 0xbc, 0x01, 0x05, 0x59, 0xf9, 0x49, 0x56, 0xee, 0xe2, - 0x9b, 0x30, 0xa1, 0x54, 0x72, 0xa2, 0x45, 0xff, 0xb3, 0x6c, 0x5f, 0x75, 0x5b, 0x32, 0x23, 0xd1, - 0x6a, 0x42, 0xcc, 0xcb, 0x44, 0x3e, 0xbb, 0x5c, 0xcc, 0x6b, 0x1c, 0x88, 0xa2, 0x01, 0xf2, 0x5e, - 0x15, 0x66, 0xea, 0x07, 0x4e, 0x37, 0x0a, 0x81, 0xa7, 0x1d, 0xa6, 0x18, 0x2b, 0x5e, 0xdc, 0xb9, - 0xe3, 0x87, 0x69, 0x9c, 0xce, 0xf8, 0xe3, 0x0c, 0x8c, 0xb2, 0xbf, 0xee, 0xdf, 0x78, 0x4a, 0xb7, - 0xcc, 0xeb, 0xda, 0x96, 0x39, 0xab, 0xc4, 0x9f, 0xc5, 0x8d, 0xe3, 0xc6, 0x31, 0x9b, 0xe5, 0x91, - 0x98, 0x20, 0x8e, 0x4c, 0x6e, 0xc1, 0x98, 0xb0, 0xbc, 0x11, 0x26, 0xd2, 0x6a, 0x40, 0x5b, 0x69, - 0x93, 0x13, 0x5e, 0xce, 0xdd, 0x6e, 0x5c, 0x9b, 0x21, 0xa9, 0x99, 0x48, 0x2e, 0x83, 0x11, 0x6a, - 0x79, 0xec, 0x5c, 0xf4, 0x3f, 0xe3, 0x01, 0x59, 0x95, 0x0c, 0x91, 0x7d, 0x1c, 0xfb, 0x4b, 0xe2, - 0x21, 0x23, 0x37, 0x88, 0xc9, 0x69, 0x99, 0xe6, 0x2b, 0xf5, 0x8d, 0xe3, 0xf7, 0xe6, 0x78, 0x28, - 0x53, 0xd9, 0xb0, 0x77, 0x60, 0xf2, 0xa6, 0xeb, 0x3d, 0xb4, 0x3c, 0x1e, 0xa0, 0x4e, 0x58, 0x0e, - 0xb0, 0xab, 0xe3, 0xd4, 0x2e, 0x87, 0xf3, 0x10, 0x77, 0xdf, 0x3d, 0x5a, 0xca, 0xaf, 0xb8, 0x6e, - 0xcb, 0xd4, 0xd0, 0xc9, 0x26, 0x4c, 0xdd, 0xb5, 0x1e, 0x29, 0x97, 0x5e, 0xee, 0x50, 0x72, 0x99, - 0x2d, 0x60, 0x76, 0x6b, 0x3e, 0xde, 0x0c, 0x4a, 0xa7, 0x27, 0x0e, 0x4c, 0xd7, 0x5c, 0x2f, 0x10, - 0x95, 0x38, 0x9d, 0x3d, 0xd1, 0xd9, 0xa4, 0x21, 0xd7, 0xd5, 0x54, 0x43, 0xae, 0xb3, 0x5d, 0xd7, - 0x0b, 0x1a, 0xbb, 0x21, 0xb9, 0x16, 0x34, 0x47, 0x63, 0x4c, 0xde, 0x81, 0x59, 0x25, 0x28, 0xd8, - 0x4d, 0xd7, 0x6b, 0x5b, 0x52, 0x28, 0x47, 0x3d, 0x30, 0xda, 0x9b, 0xec, 0x22, 0xd8, 0x4c, 0x62, - 0x92, 0x0f, 0xd2, 0x5c, 0x74, 0x46, 0x22, 0x4b, 0xb0, 0x14, 0x17, 0x9d, 0x7e, 0x96, 0x60, 0x49, - 0x67, 0x9d, 0xbd, 0x41, 0x96, 0xa2, 0x85, 0x95, 0x6b, 0xe2, 0xfa, 0x7d, 0xbc, 0x25, 0x68, 0x38, - 0x6f, 0x7d, 0x2c, 0x42, 0x97, 0x21, 0xb7, 0x52, 0xbb, 0x89, 0xaf, 0x17, 0xd2, 0xd0, 0xa6, 0xb3, - 0x6f, 0x75, 0x9a, 0x28, 0x2c, 0x0b, 0xeb, 0x6c, 0x75, 0x47, 0x5e, 0xa9, 0xdd, 0x24, 0x16, 0xcc, - 0xd5, 0xa8, 0xd7, 0x76, 0x82, 0x2f, 0x5e, 0xbb, 0xa6, 0x4c, 0x54, 0x01, 0x9b, 0x76, 0x55, 0x34, - 0x6d, 0xa9, 0x8b, 0x28, 0x8d, 0x47, 0xd7, 0xae, 0xa5, 0x4e, 0x47, 0xd8, 0xb0, 0x34, 0x5e, 0x6c, - 0x67, 0xbc, 0x6b, 0x3d, 0x8a, 0x8c, 0xea, 0x7d, 0xe1, 0xec, 0x78, 0x4e, 0x2e, 0xac, 0xc8, 0x20, - 0x5f, 0xdb, 0x19, 0x75, 0x22, 0x76, 0xd7, 0x89, 0x96, 0x97, 0x2f, 0xdc, 0x44, 0x16, 0xa5, 0x4a, - 0x47, 0x7a, 0xc4, 0xaa, 0x02, 0xbb, 0x82, 0x4e, 0xee, 0x85, 0x37, 0x36, 0x7e, 0xe3, 0x11, 0x49, - 0xac, 0xae, 0xaa, 0x37, 0x36, 0xae, 0x48, 0xd1, 0xba, 0x35, 0x13, 0x5e, 0xf3, 0xb9, 0x97, 0x81, - 0xa9, 0x73, 0x49, 0x5e, 0x04, 0x27, 0x4f, 0x7e, 0x11, 0xa4, 0x90, 0x5f, 0x77, 0x9b, 0x07, 0x22, - 0xd2, 0xcf, 0x17, 0xd8, 0xe7, 0xde, 0x72, 0x9b, 0x07, 0x4f, 0xce, 0x02, 0x16, 0xd9, 0x93, 0x0d, - 0xd6, 0x54, 0xb6, 0x0a, 0xc4, 0x98, 0x08, 0xab, 0xca, 0xf9, 0xf0, 0x26, 0xa4, 0x94, 0x71, 0xc1, - 0x87, 0x2f, 0x1a, 0x39, 0xb4, 0xa6, 0x4e, 0x4e, 0x28, 0x14, 0x2b, 0xd4, 0x3f, 0x08, 0xdc, 0x6e, - 0xb9, 0xe5, 0x74, 0x77, 0x5c, 0xcb, 0xb3, 0x51, 0x77, 0x97, 0xf6, 0x7d, 0xbf, 0x9c, 0xfa, 0x7d, - 0xcf, 0xda, 0x9c, 0xbe, 0xd1, 0x94, 0x0c, 0xcc, 0x04, 0x4b, 0xf2, 0x01, 0x4c, 0xb3, 0xc5, 0xbd, - 0xfa, 0x28, 0xa0, 0x1d, 0x3e, 0xf3, 0xb3, 0x28, 0x3a, 0xcc, 0x2b, 0x81, 0xbf, 0xc3, 0x42, 0xbe, - 0xa6, 0xf0, 0x63, 0xa7, 0x21, 0x81, 0x16, 0x25, 0x49, 0x63, 0x45, 0x6c, 0x58, 0xb8, 0x6b, 0x3d, - 0x52, 0x52, 0x6f, 0x29, 0x8b, 0x94, 0xe0, 0x02, 0xc3, 0x94, 0xe0, 0x6c, 0x81, 0x45, 0x01, 0x3a, - 0xfb, 0xac, 0xd7, 0xbe, 0x9c, 0xc8, 0xf7, 0xc3, 0x19, 0xd1, 0xad, 0x0a, 0x66, 0xc3, 0x70, 0xbd, - 0xc3, 0xfa, 0xbe, 0x85, 0xfe, 0x34, 0x73, 0x27, 0xdb, 0x10, 0xe5, 0x80, 0xd9, 0x92, 0x4f, 0xc3, - 0xe7, 0x8c, 0xcc, 0x7e, 0x35, 0x90, 0x0f, 0x61, 0x9a, 0x3f, 0xd9, 0xac, 0xb9, 0x7e, 0x80, 0x17, - 0xfa, 0xf9, 0x93, 0x99, 0x89, 0xf3, 0x77, 0x20, 0xee, 0x58, 0x11, 0x53, 0x00, 0xc4, 0x38, 0x93, - 0xb7, 0x60, 0xa2, 0xe6, 0x74, 0x78, 0x1c, 0xb3, 0x6a, 0x0d, 0x55, 0x8f, 0xe2, 0xfc, 0xe9, 0x3a, - 0x9d, 0x86, 0xbc, 0x55, 0x77, 0xc3, 0xed, 0x42, 0xc5, 0x26, 0xdb, 0x30, 0x51, 0xaf, 0xaf, 0xdd, - 0x74, 0xd8, 0x01, 0xd8, 0x3d, 0x5c, 0x38, 0xdd, 0xa7, 0x95, 0x17, 0x52, 0x5b, 0x39, 0xe5, 0xfb, - 0xfb, 0x98, 0x76, 0xb8, 0xd1, 0x74, 0xbb, 0x87, 0xa6, 0xca, 0x29, 0xc5, 0x74, 0xfa, 0xcc, 0x13, - 0x36, 0x9d, 0xae, 0xc2, 0x8c, 0x62, 0x60, 0x89, 0xc6, 0x95, 0x0b, 0x51, 0xd8, 0x2e, 0xd5, 0x54, - 0x3a, 0xee, 0xd6, 0x17, 0xa7, 0x93, 0x36, 0xd3, 0x67, 0x4f, 0x6a, 0x33, 0xed, 0xc0, 0x2c, 0x9f, - 0x0c, 0xb1, 0x0e, 0x70, 0xa6, 0x17, 0xfb, 0x8c, 0xe1, 0xe5, 0xd4, 0x31, 0x9c, 0x13, 0x33, 0x2d, - 0x17, 0x19, 0x3e, 0x51, 0x26, 0xb9, 0x92, 0x5d, 0x20, 0x02, 0x28, 0x92, 0x1e, 0x63, 0x5d, 0xcf, - 0xf6, 0xa9, 0xeb, 0xc5, 0xd4, 0xba, 0xa6, 0x65, 0x5d, 0x3b, 0xbc, 0x9a, 0x14, 0x8e, 0xa4, 0x23, - 0xeb, 0x91, 0xeb, 0x0b, 0x07, 0xf6, 0x39, 0x4d, 0x0f, 0x9a, 0x44, 0xe0, 0x41, 0x44, 0xe3, 0x8b, - 0x36, 0x3e, 0xee, 0x29, 0x9c, 0xc9, 0x23, 0x38, 0x9d, 0x6c, 0x05, 0xd6, 0x79, 0x0e, 0xeb, 0x3c, - 0xa7, 0xd5, 0x19, 0x47, 0xe2, 0xeb, 0x46, 0xef, 0x56, 0xbc, 0xd6, 0x3e, 0xfc, 0x6f, 0xe7, 0x0b, - 0x53, 0xc5, 0xe9, 0x34, 0x4b, 0xeb, 0x7f, 0x9c, 0x8d, 0x6d, 0xda, 0xa4, 0x0a, 0x63, 0x62, 0x2e, - 0x84, 0x14, 0x9b, 0x1c, 0xf1, 0x73, 0xa9, 0x23, 0x3e, 0x26, 0xa6, 0xd5, 0x94, 0xf4, 0xe4, 0x21, - 0x63, 0x85, 0x66, 0xeb, 0x42, 0xec, 0xff, 0x32, 0xdf, 0x93, 0x11, 0xa4, 0x9d, 0x3e, 0x95, 0x93, - 0x3b, 0xed, 0xe8, 0x3e, 0x61, 0x78, 0x0c, 0xc9, 0xda, 0xc8, 0x01, 0xcf, 0x14, 0x90, 0x0b, 0x3d, - 0x3f, 0xf4, 0xb4, 0x00, 0x4f, 0xac, 0x42, 0x56, 0x8b, 0xf1, 0x6b, 0x19, 0x98, 0xd2, 0x76, 0x7d, - 0x72, 0x43, 0x71, 0x6b, 0x8a, 0xbc, 0x72, 0x35, 0x1c, 0xdc, 0x08, 0xe2, 0x0e, 0x4f, 0x37, 0x84, - 0xdd, 0x74, 0xb6, 0x3f, 0x5d, 0x6a, 0xee, 0xef, 0xc1, 0x4a, 0xb2, 0x30, 0xf3, 0x50, 0xbe, 0x4f, - 0xe6, 0xa1, 0x7f, 0xb6, 0x08, 0xd3, 0xfa, 0xb5, 0x80, 0xbc, 0x06, 0xa3, 0xa8, 0x5b, 0x94, 0x77, - 0x4c, 0x9e, 0x79, 0x17, 0x21, 0x5a, 0xe6, 0x5d, 0x84, 0x90, 0x97, 0x00, 0x42, 0x03, 0x56, 0xa9, - 0x59, 0x1f, 0x79, 0x7c, 0xb4, 0x94, 0x79, 0xdd, 0x54, 0x0a, 0xc8, 0x57, 0x00, 0x36, 0x5c, 0x9b, - 0x86, 0xb9, 0xd1, 0x06, 0xbc, 0x1e, 0xbf, 0x9c, 0x88, 0xa2, 0x7d, 0xaa, 0xe3, 0xda, 0x34, 0x19, - 0x32, 0x5b, 0xe1, 0x48, 0x3e, 0x07, 0x23, 0x66, 0x8f, 0xdd, 0x67, 0xb9, 0x2a, 0x61, 0x42, 0xee, - 0xbe, 0xbd, 0x16, 0x55, 0xd2, 0xe9, 0xf7, 0xe2, 0x86, 0x51, 0x0c, 0x40, 0xde, 0xe3, 0xd1, 0xb5, - 0x45, 0x30, 0xac, 0x91, 0xe8, 0xad, 0x41, 0x39, 0x95, 0x13, 0xe1, 0xb0, 0x14, 0x12, 0xb2, 0x09, - 0x63, 0xaa, 0x92, 0x5c, 0xf1, 0x8f, 0x55, 0x1f, 0x52, 0x94, 0x9b, 0x97, 0x48, 0xaa, 0x16, 0xd7, - 0x9f, 0x4b, 0x2e, 0xe4, 0x6d, 0x18, 0x67, 0xec, 0xd9, 0x27, 0xec, 0x0b, 0x89, 0x1b, 0x5f, 0x14, - 0x94, 0x06, 0xb1, 0x1d, 0x40, 0x0b, 0x59, 0x15, 0x12, 0x90, 0x0f, 0x30, 0x6f, 0x98, 0x18, 0xea, - 0x81, 0x56, 0x05, 0x17, 0x13, 0x43, 0x8d, 0x89, 0xc4, 0x92, 0x29, 0x65, 0x43, 0x7e, 0x64, 0x2f, - 0x0c, 0xa5, 0x34, 0x4c, 0x44, 0xf4, 0x57, 0x12, 0x15, 0x2c, 0xc8, 0xe8, 0x40, 0xc9, 0x1c, 0x77, - 0x1a, 0x5f, 0xd2, 0x85, 0x62, 0x24, 0xf0, 0x88, 0xba, 0x60, 0x50, 0x5d, 0xaf, 0x27, 0xea, 0x52, - 0x27, 0x30, 0x51, 0x5d, 0x82, 0x3b, 0xb1, 0x61, 0x5a, 0x6e, 0x9e, 0xa2, 0xbe, 0x89, 0x41, 0xf5, - 0xbd, 0x94, 0xa8, 0x6f, 0xce, 0xde, 0x49, 0xd6, 0x13, 0xe3, 0x49, 0xde, 0x86, 0x29, 0x09, 0xc1, - 0xef, 0x43, 0xe4, 0xae, 0x45, 0xad, 0x88, 0xbd, 0x83, 0x26, 0xf3, 0x7a, 0xe6, 0x3f, 0x15, 0x59, - 0xa5, 0xe6, 0xab, 0x63, 0x4a, 0xa3, 0x8e, 0xaf, 0x0a, 0x1d, 0x99, 0xbc, 0x0f, 0x13, 0xd5, 0x36, - 0xeb, 0x88, 0xdb, 0xb1, 0x02, 0x2a, 0x7c, 0xa7, 0xa4, 0x85, 0x84, 0x52, 0xa2, 0x2c, 0x55, 0x9e, - 0x4b, 0x2f, 0x2a, 0xd2, 0x72, 0xe9, 0x45, 0x60, 0x36, 0x78, 0xfc, 0x55, 0x44, 0xac, 0x61, 0xe9, - 0x57, 0x75, 0x2e, 0xc5, 0x4a, 0x41, 0x61, 0x2f, 0x82, 0xce, 0x31, 0xa8, 0x7c, 0x95, 0x88, 0x05, - 0x9d, 0x53, 0x79, 0x92, 0x77, 0x60, 0x42, 0x24, 0x8b, 0x28, 0x99, 0x1b, 0xfe, 0x42, 0x11, 0x3b, - 0x8f, 0xde, 0xe0, 0x32, 0xaf, 0x44, 0xc3, 0xf2, 0x62, 0xe6, 0x78, 0x11, 0x3e, 0xf9, 0x22, 0xcc, - 0x6f, 0x3b, 0x1d, 0xdb, 0x7d, 0xe8, 0x8b, 0x63, 0x4a, 0x6c, 0x74, 0xb3, 0x91, 0x33, 0xcc, 0x43, - 0x5e, 0x1e, 0xca, 0x29, 0x89, 0x8d, 0x2f, 0x95, 0x03, 0xf9, 0xf3, 0x09, 0xce, 0x7c, 0x05, 0x91, - 0x41, 0x2b, 0x68, 0x39, 0xb1, 0x82, 0x92, 0xd5, 0xc7, 0x97, 0x53, 0x6a, 0x35, 0xc4, 0x05, 0xa2, - 0x9f, 0xef, 0xb7, 0x5d, 0xa7, 0xb3, 0x30, 0x87, 0x7b, 0xe1, 0xb3, 0x71, 0xff, 0x6b, 0xc4, 0xab, - 0xb9, 0x2d, 0xa7, 0x79, 0xc8, 0xf3, 0xd6, 0xc7, 0xe5, 0xd1, 0x0f, 0x5d, 0x4d, 0x67, 0x9c, 0xc2, - 0x9a, 0xbc, 0x0f, 0x93, 0xec, 0xff, 0xf0, 0xc2, 0x3c, 0xaf, 0xd9, 0xb5, 0x29, 0x98, 0xa2, 0x1e, - 0x9c, 0x23, 0xcc, 0x66, 0x91, 0x72, 0x97, 0xd6, 0x58, 0x91, 0x37, 0x01, 0x98, 0xe4, 0x24, 0xb6, - 0xe3, 0x53, 0x51, 0x8c, 0x3f, 0x94, 0xb7, 0x92, 0x1b, 0x71, 0x84, 0xcc, 0x6e, 0xf1, 0xec, 0x57, - 0xbd, 0x67, 0xbb, 0xec, 0xdb, 0x38, 0x8d, 0xb4, 0xdc, 0x25, 0x8d, 0xd1, 0xfa, 0x1c, 0xae, 0xb9, - 0xa4, 0x45, 0xe8, 0x64, 0x0d, 0x66, 0x30, 0x16, 0x63, 0xd5, 0xa6, 0x9d, 0x00, 0x5f, 0x2b, 0x17, - 0xce, 0x28, 0xaf, 0xb9, 0xac, 0xa8, 0xe1, 0x84, 0x65, 0xaa, 0x9c, 0x1d, 0x23, 0x23, 0x3e, 0xcc, - 0x45, 0xbb, 0x4b, 0xf4, 0x36, 0xbc, 0x80, 0x83, 0x24, 0xa5, 0xcb, 0x24, 0x06, 0xdf, 0x8f, 0xd9, - 0x8c, 0x28, 0x1b, 0x97, 0xd4, 0xac, 0xab, 0x15, 0xa6, 0x71, 0x27, 0x26, 0x90, 0x5b, 0xe5, 0x5a, - 0x3c, 0x58, 0xe1, 0x59, 0xec, 0x01, 0x4e, 0xf3, 0x5e, 0x33, 0xca, 0xda, 0x98, 0x12, 0xb0, 0x30, - 0x85, 0x9a, 0x7c, 0x1d, 0x4e, 0xc9, 0x1d, 0x44, 0x14, 0x89, 0x75, 0xbd, 0x78, 0xc2, 0x9d, 0xd8, - 0xde, 0x09, 0xab, 0x4e, 0x2c, 0xe9, 0xf4, 0x2a, 0x88, 0x05, 0x13, 0x38, 0xad, 0xa2, 0xc6, 0x67, - 0x07, 0xd5, 0x78, 0x29, 0x51, 0xe3, 0x69, 0x5c, 0x28, 0xc9, 0xca, 0x54, 0x9e, 0x64, 0x05, 0xa6, - 0xc4, 0x77, 0x24, 0x56, 0xdb, 0x73, 0x38, 0x5a, 0xa8, 0x60, 0x91, 0x5f, 0x60, 0x62, 0xc1, 0xe9, - 0x24, 0xea, 0x8e, 0xcc, 0x35, 0xea, 0xe7, 0xb4, 0x1d, 0x39, 0xae, 0x48, 0xd7, 0x91, 0xd9, 0x8e, - 0x14, 0x49, 0x31, 0xab, 0x8f, 0xba, 0x9e, 0x50, 0x9f, 0x3c, 0x1f, 0xc5, 0xf0, 0x57, 0x84, 0x9f, - 0x06, 0x0d, 0x31, 0xd4, 0x2d, 0x21, 0x8d, 0x03, 0xb9, 0x07, 0x73, 0xe1, 0xa9, 0xad, 0x30, 0x5e, - 0x8a, 0x72, 0x21, 0x44, 0x47, 0x7d, 0x3a, 0xdf, 0x34, 0x7a, 0x62, 0xc1, 0x19, 0xed, 0x9c, 0x56, - 0x58, 0x9f, 0x47, 0xd6, 0x98, 0x25, 0x54, 0x3f, 0xe4, 0xd3, 0xd9, 0xf7, 0xe3, 0x43, 0x3e, 0x84, - 0xc5, 0xf8, 0xd9, 0xac, 0xd4, 0xf2, 0x02, 0xd6, 0xf2, 0xca, 0xe3, 0xa3, 0xa5, 0x8b, 0x89, 0xe3, - 0x3d, 0xbd, 0xa2, 0x01, 0xdc, 0xc8, 0x57, 0x60, 0x41, 0x3f, 0x9f, 0x95, 0x9a, 0x0c, 0xac, 0x09, - 0x3f, 0x9d, 0xf0, 0x60, 0x4f, 0xaf, 0xa1, 0x2f, 0x0f, 0x12, 0xc0, 0x52, 0xea, 0xea, 0x56, 0xaa, - 0xb9, 0x10, 0x75, 0x28, 0xf1, 0x95, 0xa4, 0x57, 0x77, 0x1c, 0x4b, 0xf2, 0x10, 0x9e, 0x4f, 0x3b, - 0x26, 0x94, 0x4a, 0x5f, 0x0c, 0x15, 0x94, 0xaf, 0xa6, 0x1f, 0x39, 0xe9, 0x35, 0x1f, 0xc3, 0x96, - 0x7c, 0x00, 0xa7, 0x94, 0xef, 0x4b, 0xa9, 0xef, 0x25, 0xac, 0x0f, 0x5d, 0x59, 0xd5, 0x0f, 0x33, - 0xbd, 0x96, 0x74, 0x1e, 0xa4, 0x0d, 0x73, 0xb2, 0xe3, 0xa8, 0x09, 0x16, 0x47, 0xcf, 0x45, 0x6d, - 0x57, 0x4d, 0x62, 0x28, 0xe9, 0x95, 0x77, 0x1a, 0xdd, 0x88, 0x50, 0x5d, 0xe9, 0x29, 0x7c, 0xc9, - 0x1a, 0x8c, 0xd6, 0x6b, 0xd5, 0x9b, 0x37, 0x57, 0x17, 0x5e, 0xc6, 0x1a, 0xa4, 0xdf, 0x0b, 0x07, - 0x6a, 0x97, 0x26, 0x61, 0x6e, 0xd5, 0x75, 0x76, 0x77, 0x35, 0xf7, 0x22, 0x8e, 0x6a, 0xfc, 0x6c, - 0x06, 0xe6, 0x52, 0xa8, 0xc8, 0x45, 0xc8, 0x63, 0x2a, 0x00, 0xe5, 0x39, 0x38, 0x96, 0x02, 0x00, - 0xcb, 0xc9, 0xa7, 0x60, 0xac, 0xb2, 0x51, 0xaf, 0x97, 0x36, 0xe4, 0x05, 0x8b, 0x6f, 0x2e, 0x1d, - 0xbf, 0xe1, 0x5b, 0xfa, 0x2b, 0x92, 0x40, 0x23, 0xaf, 0xc3, 0x68, 0xb5, 0x86, 0x04, 0xdc, 0x1e, - 0x09, 0x2f, 0x1c, 0x4e, 0x37, 0x8e, 0x2f, 0x90, 0x8c, 0x1f, 0xcb, 0x00, 0x49, 0x0e, 0x01, 0xb9, - 0x06, 0x13, 0xea, 0x40, 0xf3, 0xeb, 0x20, 0xbe, 0x78, 0x28, 0xc3, 0x68, 0xaa, 0x38, 0xa4, 0x02, - 0x23, 0x98, 0xba, 0x28, 0x7c, 0xbe, 0x4a, 0xdd, 0xae, 0xcf, 0x24, 0xb6, 0xeb, 0x11, 0x4c, 0x8c, - 0x64, 0x72, 0x62, 0xe3, 0x37, 0x33, 0x40, 0x92, 0x47, 0xdc, 0xd0, 0xcf, 0xe7, 0x6f, 0x28, 0xfe, - 0xa4, 0x6a, 0xb0, 0xef, 0x30, 0x53, 0x83, 0x7a, 0xb5, 0x89, 0x3c, 0x4f, 0x2f, 0x6a, 0x57, 0xe9, - 0xfe, 0x4e, 0x48, 0x97, 0x61, 0xe4, 0x3e, 0xf5, 0x76, 0xa4, 0xa9, 0x1d, 0x9a, 0xe7, 0x3c, 0x60, - 0x00, 0xf5, 0x6a, 0x89, 0x18, 0xc6, 0x1f, 0x64, 0x60, 0x3e, 0x4d, 0xee, 0x3a, 0xc6, 0x57, 0xc8, - 0x88, 0xb9, 0x39, 0xe1, 0xd3, 0x39, 0xb7, 0xdd, 0x09, 0x9d, 0x9b, 0x96, 0x60, 0x84, 0x75, 0x56, - 0xce, 0x30, 0x5e, 0xed, 0xd9, 0x68, 0xf8, 0x26, 0x87, 0x33, 0x04, 0x1e, 0xa3, 0x28, 0x8f, 0xa1, - 0xa8, 0x10, 0x01, 0x8f, 0x75, 0x93, 0xc3, 0x19, 0xc2, 0x5d, 0xd7, 0x0e, 0xf3, 0x75, 0x22, 0x42, - 0x9b, 0x01, 0x4c, 0x0e, 0x27, 0x17, 0x61, 0x6c, 0xb3, 0xb3, 0x4e, 0xad, 0x07, 0x32, 0xd9, 0x04, - 0x3e, 0xf5, 0xbb, 0x9d, 0x46, 0x8b, 0xc1, 0x4c, 0x59, 0x68, 0x7c, 0x2b, 0x03, 0xb3, 0x09, 0x91, - 0xef, 0x78, 0x77, 0xa8, 0xc1, 0x7e, 0x09, 0xc3, 0xf4, 0x8f, 0x37, 0x3f, 0x9f, 0xde, 0x7c, 0xe3, - 0xff, 0xc8, 0xc3, 0x99, 0x3e, 0x37, 0xf0, 0xc8, 0x6f, 0x2a, 0x73, 0xac, 0xdf, 0xd4, 0x97, 0xd8, - 0x8d, 0xd7, 0x72, 0xda, 0xfe, 0x96, 0x1b, 0xb5, 0x38, 0x32, 0xbf, 0xc6, 0x32, 0x99, 0xb2, 0x54, - 0xda, 0xe9, 0x9e, 0xe5, 0x69, 0xa3, 0x1b, 0x81, 0x9b, 0x14, 0x00, 0x34, 0x66, 0x09, 0xcf, 0xa5, - 0xdc, 0x9f, 0x11, 0xcf, 0x25, 0xdd, 0x96, 0x3e, 0xff, 0x44, 0x6d, 0xe9, 0xd3, 0xed, 0xf0, 0x46, - 0x3e, 0x8e, 0x55, 0x66, 0x19, 0xa6, 0xb8, 0xad, 0x43, 0xc9, 0xe7, 0x93, 0x34, 0x9a, 0xb0, 0x8f, - 0xb0, 0xfc, 0xe4, 0x5c, 0x68, 0x34, 0x64, 0x4d, 0xb7, 0xfb, 0x1e, 0xc3, 0x37, 0x9a, 0x8b, 0xfd, - 0xed, 0xba, 0xb5, 0xb7, 0x59, 0x95, 0xd4, 0xf8, 0x56, 0x56, 0x77, 0x6b, 0xfa, 0xb3, 0xb8, 0xf2, - 0x2e, 0xc3, 0xc8, 0xf6, 0x3e, 0xf5, 0xe4, 0x7e, 0x87, 0x0d, 0x79, 0xc8, 0x00, 0x6a, 0x43, 0x10, - 0x83, 0xdc, 0x84, 0xe9, 0x1a, 0x9f, 0x09, 0x39, 0xbc, 0xf9, 0xe8, 0x62, 0xd4, 0x15, 0xd7, 0xf7, - 0x94, 0xf1, 0x8d, 0x51, 0x19, 0xb7, 0xe0, 0x9c, 0xf6, 0x41, 0x8a, 0x30, 0x0c, 0xdc, 0xfc, 0x9a, - 0x9f, 0x88, 0xd3, 0x91, 0xc1, 0x79, 0xb4, 0x7b, 0x98, 0x31, 0xa8, 0xb1, 0x0b, 0xcf, 0x0f, 0x64, - 0xc4, 0x0e, 0x22, 0xe8, 0x86, 0xbf, 0x62, 0x36, 0x62, 0x03, 0x49, 0x4d, 0x85, 0xce, 0xf8, 0x7e, - 0x98, 0x54, 0x47, 0x19, 0xf7, 0x54, 0xf6, 0x5b, 0x6c, 0x6a, 0x7c, 0x4f, 0x65, 0x00, 0x93, 0xc3, - 0x8f, 0x4d, 0xf5, 0x1e, 0x4d, 0x7f, 0xee, 0xb8, 0xe9, 0x67, 0x95, 0xe3, 0x27, 0xab, 0x54, 0x8e, - 0xbf, 0xd5, 0xca, 0x31, 0xce, 0x82, 0xc9, 0xe1, 0x4f, 0xb4, 0xf2, 0xdf, 0x90, 0x21, 0xf7, 0xd1, - 0xba, 0x5b, 0xde, 0x60, 0xa3, 0x84, 0x9a, 0x73, 0x69, 0xf7, 0xd2, 0x08, 0x33, 0x3a, 0x24, 0xb3, - 0xc7, 0x1d, 0x92, 0x27, 0x59, 0x88, 0x57, 0x61, 0xac, 0x24, 0x5e, 0x50, 0xf3, 0x91, 0x60, 0x63, - 0x25, 0x9e, 0x4b, 0x25, 0x96, 0xf1, 0xed, 0x0c, 0x9c, 0x4a, 0x55, 0x6c, 0xb1, 0x5a, 0xb9, 0x06, - 0x4d, 0xf9, 0x0e, 0xe3, 0xea, 0x33, 0x8e, 0x71, 0x12, 0x27, 0xdb, 0xe1, 0xfb, 0x62, 0xbc, 0x00, - 0xe3, 0xe1, 0xb3, 0x0a, 0x99, 0x97, 0x53, 0x87, 0x66, 0x35, 0x52, 0x3b, 0x5f, 0x07, 0x60, 0x2d, - 0x78, 0xa2, 0x46, 0x60, 0xc6, 0x6f, 0x64, 0x79, 0x3a, 0xa6, 0xa7, 0x36, 0x36, 0x5d, 0xba, 0xe5, - 0x16, 0xeb, 0x52, 0xff, 0x88, 0x74, 0x64, 0x15, 0x46, 0xeb, 0x81, 0x15, 0xf4, 0xa4, 0x6f, 0xf0, - 0x9c, 0x4a, 0x86, 0x05, 0xf7, 0x97, 0x23, 0xef, 0x50, 0x1f, 0x21, 0x9a, 0x28, 0x8f, 0x10, 0xc5, - 0x00, 0xcc, 0x81, 0x49, 0x95, 0x96, 0xbc, 0x0f, 0xd3, 0x32, 0xe0, 0x16, 0x77, 0x98, 0x16, 0x4f, - 0x40, 0xd2, 0x94, 0x40, 0x06, 0xdc, 0x52, 0x1d, 0xac, 0x35, 0x7c, 0x75, 0xa7, 0xee, 0xaa, 0xc8, - 0xc6, 0x1f, 0x8e, 0xf2, 0x75, 0x20, 0x22, 0xe7, 0xed, 0xc0, 0xf4, 0x66, 0xb5, 0x52, 0x56, 0xd4, - 0x54, 0x7a, 0x92, 0x84, 0xd5, 0x47, 0x01, 0xf5, 0x3a, 0x56, 0x4b, 0x20, 0x1c, 0x46, 0x67, 0x83, - 0xeb, 0xd8, 0xcd, 0x74, 0x15, 0x56, 0x8c, 0x23, 0xab, 0xa3, 0x5e, 0xba, 0xbb, 0xae, 0xd4, 0x91, - 0x1d, 0xb2, 0x0e, 0xdf, 0x6a, 0xb7, 0xfa, 0xd4, 0xa1, 0x73, 0x24, 0xfb, 0x50, 0xbc, 0x85, 0x72, - 0x8c, 0x52, 0x4b, 0x6e, 0x70, 0x2d, 0x17, 0x44, 0x2d, 0xcf, 0x72, 0x01, 0x28, 0xbd, 0x9e, 0x04, - 0xd7, 0xe8, 0x03, 0xce, 0x1f, 0xfb, 0x01, 0xff, 0xa5, 0x0c, 0x8c, 0x72, 0x41, 0x49, 0xac, 0xaf, - 0x3e, 0xa2, 0xd8, 0xf6, 0x93, 0x11, 0xc5, 0x8a, 0xb8, 0x81, 0x6b, 0x2b, 0x8d, 0x97, 0x91, 0x4a, - 0x6c, 0xc1, 0x4a, 0x83, 0x42, 0x54, 0x38, 0xf3, 0x92, 0xe3, 0xd7, 0x2b, 0xa9, 0x46, 0x8e, 0xb4, - 0x63, 0xc7, 0xfa, 0x6a, 0x49, 0xe7, 0xe3, 0x31, 0xe1, 0x48, 0xab, 0xbb, 0xcf, 0xae, 0xc3, 0xb8, - 0x70, 0xcf, 0x5d, 0x39, 0x14, 0xcf, 0x4a, 0x45, 0xed, 0xd1, 0xda, 0x5e, 0x39, 0x8c, 0x84, 0x40, - 0xe1, 0xe0, 0xdb, 0xd8, 0x39, 0xd4, 0xd2, 0x4e, 0x49, 0x44, 0xb2, 0xc9, 0xd3, 0xb1, 0xf0, 0xd8, - 0x82, 0x7a, 0xe0, 0xdf, 0x10, 0x2e, 0x02, 0x7f, 0x48, 0x1f, 0xbf, 0x94, 0x50, 0x82, 0x11, 0x0f, - 0xb2, 0x0e, 0x45, 0x91, 0xa6, 0x9e, 0x5b, 0x3d, 0x54, 0x2b, 0xdc, 0x05, 0x54, 0x18, 0xab, 0xc9, - 0x24, 0xf7, 0xc2, 0x5e, 0x42, 0xf7, 0xbe, 0x48, 0x50, 0x1a, 0x3f, 0x9e, 0x81, 0x62, 0x7c, 0xf5, - 0x91, 0xb7, 0x61, 0x22, 0x8c, 0xed, 0x18, 0xfa, 0x7f, 0xa1, 0x7a, 0x39, 0x0a, 0x06, 0xa9, 0x79, - 0x82, 0xa9, 0xe8, 0x64, 0x19, 0x0a, 0xec, 0x23, 0x8e, 0x27, 0xbc, 0xea, 0x09, 0x98, 0x6a, 0xd4, - 0x2d, 0xf1, 0x94, 0xed, 0xe6, 0xf7, 0xb2, 0x30, 0xa1, 0x4c, 0x3d, 0xb9, 0x0c, 0x85, 0xaa, 0xbf, - 0xee, 0x36, 0x0f, 0xc2, 0x20, 0x4e, 0x53, 0x8f, 0x8f, 0x96, 0xc6, 0x1d, 0xbf, 0xd1, 0x42, 0xa0, - 0x19, 0x16, 0x93, 0x15, 0x98, 0xe2, 0x7f, 0xc9, 0x50, 0xd6, 0xd9, 0xc8, 0x8c, 0x8c, 0x23, 0xcb, - 0x20, 0xd6, 0xea, 0x16, 0xa4, 0x91, 0x90, 0x2f, 0x03, 0x70, 0x00, 0xba, 0xfd, 0xe5, 0x86, 0x77, - 0x58, 0x14, 0x15, 0xa4, 0x38, 0xfc, 0x29, 0x0c, 0xc9, 0x57, 0x79, 0xd8, 0x46, 0xb9, 0x54, 0xf3, - 0xc3, 0x7b, 0x5c, 0x32, 0xfe, 0x8d, 0x74, 0xc7, 0x6f, 0x95, 0xa5, 0x88, 0x37, 0xb7, 0x68, 0xd2, - 0xa6, 0xfb, 0x80, 0x7a, 0x87, 0xa5, 0x00, 0x11, 0x15, 0x0c, 0xe3, 0xbf, 0xcd, 0x28, 0x0b, 0x9c, - 0x6c, 0x60, 0x3a, 0x35, 0x3e, 0x79, 0xc2, 0x18, 0x22, 0x94, 0xbb, 0x25, 0xdc, 0xa4, 0xbb, 0x2b, - 0xcf, 0x0a, 0x2b, 0xc6, 0xb9, 0x70, 0x09, 0xc4, 0xd2, 0xac, 0x71, 0x20, 0xf9, 0x3c, 0xe4, 0x71, - 0xe8, 0x8e, 0xcf, 0xbe, 0x2f, 0x8f, 0xbe, 0x3c, 0x1b, 0x33, 0xec, 0x08, 0x52, 0x92, 0x4f, 0x09, - 0x97, 0x29, 0x3e, 0xf8, 0xd3, 0xca, 0xf9, 0xc5, 0xda, 0x11, 0x9e, 0x79, 0x91, 0xef, 0xbf, 0xb2, - 0x7a, 0xfe, 0x6a, 0x16, 0x8a, 0xf1, 0xcf, 0x8a, 0xbc, 0x07, 0x93, 0xf2, 0x50, 0xc2, 0x7c, 0xbb, - 0xac, 0x97, 0x93, 0x22, 0xb6, 0xb2, 0x3c, 0x99, 0xe2, 0xe9, 0x76, 0x55, 0x02, 0x26, 0x20, 0x6c, - 0x89, 0x58, 0x3c, 0xca, 0x82, 0x0e, 0xdc, 0xa0, 0x1b, 0x8b, 0xfc, 0x27, 0xd1, 0xc8, 0x1b, 0x90, - 0xbb, 0x7b, 0xb3, 0x24, 0xec, 0xf3, 0xe5, 0xee, 0x71, 0xf7, 0x66, 0x89, 0x7f, 0x78, 0xdc, 0xfe, - 0x48, 0xb7, 0x86, 0x62, 0xf8, 0x64, 0x5d, 0x09, 0xac, 0x39, 0xaa, 0x25, 0xbf, 0x91, 0xe0, 0xb0, - 0x73, 0xc7, 0x47, 0xd8, 0xe4, 0x89, 0x7c, 0x45, 0xf8, 0xba, 0xbf, 0x93, 0x83, 0xf1, 0xb0, 0x7e, - 0x42, 0x00, 0xe5, 0x1f, 0x71, 0xe9, 0xc0, 0xbf, 0xc9, 0x59, 0x28, 0x48, 0x91, 0x47, 0x98, 0xe9, - 0x8f, 0xf9, 0x42, 0xdc, 0x59, 0x00, 0x29, 0xdb, 0x70, 0x71, 0xc7, 0x94, 0x3f, 0xc9, 0x35, 0x08, - 0x05, 0x97, 0x7e, 0x12, 0x4e, 0x9e, 0x4d, 0x98, 0x19, 0xa2, 0x91, 0x69, 0xc8, 0x3a, 0x3c, 0x24, - 0xca, 0xb8, 0x99, 0x75, 0x6c, 0xf2, 0x1e, 0x14, 0x2c, 0xdb, 0xa6, 0x76, 0xc3, 0x92, 0x56, 0x05, - 0x83, 0x16, 0x4d, 0x81, 0x71, 0xe3, 0xfb, 0x35, 0x52, 0x95, 0x02, 0x52, 0x82, 0xf1, 0x96, 0xc5, - 0x2d, 0x94, 0xec, 0x21, 0x36, 0xff, 0x88, 0x43, 0x81, 0x91, 0xdd, 0xf3, 0xa9, 0x4d, 0x5e, 0x86, - 0x3c, 0x9b, 0x4d, 0xb1, 0xdb, 0x4b, 0x49, 0x8b, 0x4d, 0x26, 0x1f, 0xb0, 0xb5, 0x67, 0x4c, 0x44, - 0x20, 0x2f, 0x42, 0xae, 0xb7, 0xbc, 0x2b, 0xf6, 0xf1, 0x62, 0x14, 0xe4, 0x36, 0x44, 0x63, 0xc5, - 0xe4, 0x3a, 0x14, 0x1e, 0xea, 0xf1, 0x51, 0x4f, 0xc5, 0xa6, 0x31, 0xc4, 0x0f, 0x11, 0x57, 0x0a, - 0x30, 0xca, 0xf7, 0x6c, 0xe3, 0x79, 0x80, 0xa8, 0xea, 0xa4, 0x37, 0x85, 0xf1, 0x65, 0x18, 0x0f, - 0xab, 0x24, 0xe7, 0x00, 0x0e, 0xe8, 0x61, 0x63, 0xdf, 0xea, 0xd8, 0x2d, 0x2e, 0x8a, 0x4d, 0x9a, - 0xe3, 0x07, 0xf4, 0x70, 0x0d, 0x01, 0xe4, 0x0c, 0x8c, 0x75, 0xd9, 0xac, 0x8a, 0xa5, 0x3b, 0x69, - 0x8e, 0x76, 0x7b, 0x3b, 0x6c, 0x85, 0x2e, 0xc0, 0x18, 0x2a, 0xc9, 0xc4, 0x87, 0x36, 0x65, 0xca, - 0x9f, 0xc6, 0x7f, 0x9a, 0xc5, 0x38, 0xfe, 0x4a, 0x3b, 0xc9, 0x05, 0x98, 0x6a, 0x7a, 0x14, 0x8f, - 0x07, 0x8b, 0x09, 0x3d, 0xa2, 0x9e, 0xc9, 0x08, 0x58, 0xb5, 0xc9, 0x45, 0x98, 0x11, 0xb9, 0xab, - 0x59, 0x83, 0x9a, 0x3b, 0x22, 0x98, 0xf1, 0xa4, 0x39, 0xc5, 0xc1, 0x77, 0xe8, 0x61, 0x79, 0x07, - 0x43, 0xf9, 0x14, 0xd5, 0x48, 0x8c, 0x41, 0x98, 0x72, 0xd0, 0x9c, 0x51, 0xe0, 0x68, 0x2c, 0x74, - 0x1a, 0x46, 0x2d, 0x6b, 0xaf, 0xe7, 0xf0, 0x90, 0x1b, 0x93, 0xa6, 0xf8, 0x45, 0x5e, 0x85, 0x59, - 0xdf, 0xd9, 0xeb, 0x58, 0x41, 0xcf, 0x13, 0x89, 0x14, 0xa8, 0x87, 0x4b, 0x6a, 0xca, 0x2c, 0x86, - 0x05, 0x65, 0x0e, 0x27, 0xaf, 0x03, 0x51, 0xeb, 0x73, 0x77, 0x3e, 0xa4, 0x4d, 0xbe, 0xd4, 0x26, - 0xcd, 0x59, 0xa5, 0x64, 0x13, 0x0b, 0xc8, 0x0b, 0x30, 0xe9, 0x51, 0x1f, 0x05, 0x2e, 0x1c, 0x36, - 0x4c, 0x73, 0x63, 0x4e, 0x48, 0x18, 0x1b, 0xbb, 0x4b, 0x50, 0x54, 0x86, 0x03, 0x83, 0x5d, 0xf2, - 0x48, 0xbe, 0xe6, 0x74, 0x04, 0x37, 0xbb, 0x55, 0xdb, 0x58, 0x81, 0xd9, 0xc4, 0x97, 0xab, 0xa4, - 0x89, 0xe5, 0x3b, 0xd1, 0xe0, 0x34, 0xb1, 0x46, 0x07, 0x26, 0xd5, 0x9d, 0xf8, 0x98, 0x80, 0xd2, - 0xa7, 0xd1, 0x65, 0x9b, 0x6f, 0x53, 0xa3, 0x8f, 0x8f, 0x96, 0xb2, 0x8e, 0x8d, 0x8e, 0xda, 0x97, - 0xa0, 0x20, 0xcf, 0x77, 0x71, 0x67, 0x41, 0x25, 0xa7, 0x10, 0x2c, 0x0f, 0xcd, 0xb0, 0xd4, 0x78, - 0x19, 0xc6, 0xc4, 0x66, 0x3b, 0x58, 0xb5, 0x69, 0xfc, 0x70, 0x16, 0x66, 0x4c, 0xca, 0xb6, 0x02, - 0xca, 0xa3, 0xc8, 0x3f, 0xb5, 0x37, 0xad, 0xf4, 0xc0, 0x5f, 0x5a, 0xdf, 0x06, 0xc4, 0x6f, 0xff, - 0xc5, 0x0c, 0xcc, 0xa5, 0xe0, 0x7e, 0xa4, 0x5c, 0x63, 0x37, 0x60, 0xbc, 0xe2, 0x58, 0xad, 0x92, - 0x6d, 0x87, 0xfe, 0xdb, 0x28, 0x15, 0xda, 0x6c, 0xa5, 0x59, 0x0c, 0xaa, 0x1e, 0xbb, 0x21, 0x2a, - 0x79, 0x45, 0x2c, 0x8a, 0x28, 0xcf, 0x33, 0x2e, 0x8a, 0xef, 0x1e, 0x2d, 0x01, 0x6f, 0x53, 0x94, - 0xcf, 0x12, 0x83, 0xf1, 0x71, 0x60, 0x64, 0x5f, 0xfd, 0xd4, 0x4e, 0x5d, 0x7a, 0x30, 0xbe, 0x78, - 0xf7, 0x86, 0x0a, 0xe1, 0xfe, 0xe3, 0x59, 0x38, 0x9d, 0x4e, 0xf8, 0x51, 0xd3, 0xc6, 0x61, 0xf0, - 0x7c, 0x25, 0x80, 0x28, 0xa6, 0x8d, 0xe3, 0x91, 0xf6, 0x11, 0x3f, 0x42, 0x20, 0xbb, 0x30, 0xb5, - 0x6e, 0xf9, 0xc1, 0x1a, 0xb5, 0xbc, 0x60, 0x87, 0x5a, 0xc1, 0x10, 0xb2, 0xe7, 0x8b, 0xf2, 0xbd, - 0x0f, 0x8f, 0xbf, 0x7d, 0x49, 0x19, 0x93, 0x0e, 0x75, 0xb6, 0xe1, 0x42, 0xc9, 0x0f, 0xb1, 0x50, - 0xbe, 0x06, 0x33, 0x75, 0xda, 0xb6, 0xba, 0xfb, 0xae, 0x27, 0x1d, 0xf4, 0xae, 0xc0, 0x54, 0x08, - 0x4a, 0x5d, 0x2d, 0x7a, 0xb1, 0x86, 0xaf, 0x0c, 0x44, 0xb4, 0x95, 0xe8, 0xc5, 0xc6, 0x5f, 0xcb, - 0xc2, 0x99, 0x52, 0x53, 0x98, 0xe1, 0x88, 0x02, 0x69, 0x2d, 0xf8, 0x09, 0xd7, 0x4d, 0xae, 0xc2, - 0xf8, 0x5d, 0xeb, 0xd1, 0x3a, 0xb5, 0x7c, 0xea, 0x8b, 0xa4, 0x3d, 0x5c, 0x50, 0xb3, 0x1e, 0x45, - 0xd6, 0x29, 0x66, 0x84, 0xa3, 0x5e, 0x3a, 0xf3, 0x1f, 0xf3, 0xd2, 0x69, 0xc0, 0xe8, 0x9a, 0xdb, - 0xb2, 0xc5, 0x31, 0x26, 0x5e, 0xc2, 0xf6, 0x11, 0x62, 0x8a, 0x12, 0xe3, 0x0f, 0x32, 0x30, 0x1d, - 0xb6, 0x18, 0x9b, 0xf0, 0x89, 0x0f, 0xc9, 0x45, 0x18, 0xc3, 0x8a, 0xaa, 0x15, 0xf5, 0xd0, 0x68, - 0x51, 0x4c, 0xbd, 0x62, 0x9b, 0xb2, 0x50, 0x1d, 0x89, 0x91, 0x8f, 0x37, 0x12, 0xc6, 0xbf, 0x8b, - 0x8f, 0x6c, 0x6a, 0x2f, 0xd9, 0x49, 0xa4, 0x34, 0x24, 0x33, 0x64, 0x43, 0xb2, 0x4f, 0x6c, 0x4a, - 0x72, 0x7d, 0xa7, 0xe4, 0x9b, 0x59, 0x98, 0x08, 0x1b, 0xfb, 0x3d, 0x16, 0xc5, 0x36, 0xec, 0xd7, - 0x50, 0x4e, 0xf5, 0x75, 0x65, 0xaf, 0x10, 0xbe, 0xeb, 0x9f, 0x87, 0x51, 0xf1, 0x31, 0x65, 0x62, - 0x56, 0x73, 0xb1, 0xd9, 0x5d, 0x99, 0x16, 0xac, 0x47, 0x71, 0x42, 0x7d, 0x53, 0xd0, 0x61, 0xd4, - 0x82, 0x6d, 0xba, 0x23, 0xde, 0x5c, 0x9f, 0xda, 0x33, 0x2a, 0x3d, 0x6a, 0x41, 0xd4, 0xb1, 0xa1, - 0x4e, 0xa7, 0xa3, 0x11, 0x28, 0xc6, 0x49, 0x8e, 0x8f, 0x13, 0x5c, 0xeb, 0xed, 0x70, 0x29, 0x9c, - 0xc7, 0x09, 0xee, 0xf6, 0x76, 0x4c, 0x06, 0x43, 0x93, 0x0c, 0xcf, 0x79, 0x80, 0xbd, 0x9e, 0x14, - 0x26, 0x19, 0x9e, 0xf3, 0x40, 0x33, 0xc9, 0xf0, 0x9c, 0x07, 0x78, 0xf5, 0x5d, 0xaf, 0xa3, 0xa3, - 0x25, 0x8a, 0xe0, 0xe2, 0xea, 0xdb, 0xf2, 0xe3, 0xf9, 0x35, 0x24, 0x1a, 0x3b, 0x2a, 0x57, 0xa8, - 0xe5, 0x89, 0x98, 0xb6, 0x62, 0x3b, 0xc3, 0xa3, 0x72, 0x07, 0xc1, 0x3c, 0x75, 0xad, 0xa9, 0x22, - 0x91, 0x16, 0x10, 0xe5, 0xa7, 0xfc, 0x80, 0x8f, 0xbf, 0x0d, 0x4a, 0x8b, 0x97, 0x79, 0x95, 0x75, - 0x43, 0xfd, 0x9a, 0x53, 0xf8, 0x3e, 0x49, 0x5d, 0x61, 0x4d, 0x04, 0xea, 0x42, 0x95, 0x47, 0xe1, - 0x58, 0x66, 0xd2, 0x13, 0x19, 0x78, 0x20, 0xaf, 0x50, 0xf1, 0x11, 0x31, 0x21, 0xef, 0xc2, 0x84, - 0xea, 0x3e, 0xcb, 0x9d, 0x3c, 0x9f, 0xe3, 0xb1, 0x97, 0xfa, 0x64, 0x4f, 0x53, 0x09, 0xc8, 0x0e, - 0x9c, 0x29, 0xbb, 0x1d, 0xbf, 0xd7, 0x96, 0x51, 0x9e, 0xa2, 0xd8, 0x92, 0x10, 0x66, 0x3f, 0x7f, - 0xb1, 0x29, 0x50, 0x84, 0xb7, 0xa6, 0x34, 0x49, 0xd6, 0x2f, 0x20, 0xfd, 0x18, 0x91, 0x2d, 0x98, - 0xa8, 0x97, 0xee, 0xae, 0x4b, 0x17, 0xc8, 0x09, 0x7d, 0xdb, 0x88, 0x4a, 0x2a, 0xec, 0xc3, 0xe0, - 0x61, 0x4a, 0xac, 0x76, 0x4b, 0x5a, 0xc4, 0xaa, 0x7a, 0x43, 0x05, 0xd9, 0xf8, 0x94, 0xba, 0xbe, - 0x85, 0xb8, 0x31, 0x70, 0x7d, 0x1b, 0xff, 0xd5, 0x28, 0xcc, 0xc4, 0xaa, 0x13, 0xf7, 0x9f, 0x4c, - 0xe2, 0xfe, 0x53, 0x07, 0xe0, 0x4a, 0xaf, 0x21, 0xb5, 0x53, 0xd2, 0x99, 0x62, 0x42, 0x38, 0x23, - 0x85, 0x73, 0xa5, 0xb0, 0x61, 0x4c, 0xf9, 0x4a, 0x18, 0x52, 0x5b, 0x18, 0x32, 0xe5, 0x8b, 0x49, - 0x61, 0x1a, 0xb1, 0x21, 0x4b, 0x30, 0x82, 0x31, 0xbc, 0x54, 0x5f, 0x16, 0x87, 0x01, 0x4c, 0x0e, - 0x27, 0x17, 0x60, 0x94, 0x1d, 0xce, 0xd5, 0x8a, 0xf8, 0xb8, 0x70, 0xcf, 0x62, 0xa7, 0x37, 0x3b, - 0x09, 0x45, 0x11, 0xb9, 0x01, 0x93, 0xfc, 0x2f, 0xe1, 0xc6, 0x3d, 0xaa, 0x1b, 0xfb, 0x34, 0x1c, - 0x5b, 0x7a, 0x72, 0x6b, 0x78, 0x4c, 0x6a, 0xad, 0xf7, 0x76, 0x78, 0x32, 0x71, 0x11, 0xf4, 0x11, - 0xa5, 0x56, 0x9f, 0x03, 0x31, 0xd9, 0x71, 0x88, 0xc0, 0xce, 0x48, 0x61, 0x51, 0x5a, 0xc0, 0xbb, - 0x0a, 0x9e, 0x91, 0xdc, 0x92, 0xd4, 0x14, 0x25, 0xe4, 0x32, 0xd7, 0x07, 0xa3, 0xb8, 0xc1, 0xf3, - 0xd4, 0xa0, 0x06, 0x17, 0x2f, 0xbc, 0x28, 0x73, 0x84, 0xc5, 0xac, 0x72, 0xf6, 0xf7, 0x6a, 0xdb, - 0x72, 0x5a, 0x62, 0xb9, 0x62, 0xe5, 0x88, 0x4b, 0x19, 0xd4, 0x8c, 0x10, 0xc8, 0xdb, 0x30, 0xcd, - 0x7e, 0x94, 0xdd, 0x76, 0xdb, 0xed, 0x20, 0xfb, 0x89, 0x28, 0x22, 0x08, 0x92, 0x34, 0xb1, 0x88, - 0xd7, 0x12, 0xc3, 0x65, 0xfb, 0x14, 0xbe, 0x35, 0xf5, 0xb8, 0xa6, 0x7a, 0x32, 0xda, 0xa7, 0x90, - 0xd4, 0xe7, 0x70, 0x53, 0x45, 0x22, 0x6f, 0xc2, 0x14, 0xfb, 0x79, 0xcb, 0x79, 0x40, 0x79, 0x85, - 0x53, 0xd1, 0xeb, 0x27, 0x52, 0xed, 0xb1, 0x12, 0x5e, 0x9f, 0x8e, 0x49, 0xbe, 0x00, 0xa7, 0x90, - 0x53, 0xd3, 0xed, 0x52, 0xbb, 0xb4, 0xbb, 0xeb, 0xb4, 0x1c, 0x6e, 0x7d, 0xc1, 0x1d, 0x96, 0x51, - 0x1b, 0xc9, 0x2b, 0x46, 0x8c, 0x86, 0x15, 0xa1, 0x98, 0xe9, 0x94, 0x64, 0x1b, 0x8a, 0xe5, 0x9e, - 0x1f, 0xb8, 0xed, 0x52, 0x10, 0x78, 0xce, 0x4e, 0x2f, 0xa0, 0xfe, 0xc2, 0x8c, 0xe6, 0xd6, 0xcb, - 0x3e, 0x8e, 0xb0, 0x90, 0xeb, 0x19, 0x9a, 0x48, 0xd1, 0xb0, 0x42, 0x12, 0x33, 0xc1, 0xc4, 0xf8, - 0x2f, 0x33, 0x30, 0xa5, 0x91, 0x92, 0x37, 0x60, 0xf2, 0xa6, 0xe7, 0xd0, 0x8e, 0xdd, 0x3a, 0x54, - 0x2e, 0x40, 0x28, 0x1d, 0xef, 0x0a, 0x38, 0xef, 0xb5, 0x86, 0x16, 0xea, 0x0f, 0xb2, 0xa9, 0xa6, - 0x51, 0x57, 0xb9, 0x4b, 0x95, 0x58, 0xa0, 0xb9, 0x28, 0xce, 0x00, 0x2e, 0x50, 0xb1, 0x3a, 0x15, - 0x14, 0xf2, 0x0e, 0x8c, 0xf2, 0x57, 0x29, 0x61, 0xa7, 0x73, 0x36, 0xad, 0x9b, 0xdc, 0x7d, 0x0f, - 0x17, 0x22, 0xda, 0x04, 0xf8, 0xa6, 0x20, 0x32, 0x7e, 0x3a, 0x03, 0x24, 0x89, 0x7a, 0x8c, 0x3e, - 0xe5, 0x58, 0x5b, 0x83, 0xcf, 0x87, 0x5f, 0x63, 0x4e, 0xd3, 0x1e, 0xb2, 0x9a, 0x78, 0x01, 0x1f, - 0x78, 0xf1, 0xd5, 0xa9, 0x0a, 0x1e, 0x5e, 0x6c, 0xfc, 0xc5, 0x2c, 0x40, 0x84, 0x4d, 0x3e, 0xcb, - 0x53, 0x25, 0x7c, 0xa1, 0x67, 0xb5, 0x9c, 0x5d, 0x47, 0x8f, 0x1d, 0x86, 0x4c, 0xbe, 0x26, 0x4b, - 0x4c, 0x1d, 0x91, 0xbc, 0x07, 0x33, 0xf5, 0x9a, 0x4e, 0xab, 0x84, 0x85, 0xf7, 0xbb, 0x8d, 0x18, - 0x79, 0x1c, 0x1b, 0xed, 0xf1, 0xd4, 0xd9, 0xe0, 0xf6, 0x78, 0x7c, 0x22, 0x44, 0x09, 0xdb, 0x58, - 0xea, 0x35, 0xcc, 0x4f, 0x6f, 0x53, 0xbb, 0x5a, 0x11, 0xbb, 0x14, 0xb6, 0xce, 0xef, 0x36, 0xba, - 0xbc, 0x00, 0x93, 0xa2, 0x6b, 0x78, 0xd1, 0x40, 0x8e, 0xf4, 0x71, 0xd1, 0xfb, 0x19, 0x54, 0x27, - 0xb5, 0xdd, 0x80, 0x8a, 0x5b, 0xf4, 0x53, 0x2b, 0x4f, 0x47, 0x4f, 0x9a, 0x23, 0x9a, 0xe7, 0x91, - 0xd6, 0x3b, 0xf1, 0xa0, 0x7e, 0x3d, 0x12, 0x7e, 0xf9, 0xe3, 0x66, 0xca, 0x13, 0xfc, 0xdf, 0xca, - 0xc0, 0xa9, 0x54, 0x5a, 0x72, 0x05, 0x20, 0xd2, 0x55, 0x88, 0x51, 0xe2, 0xb9, 0xe9, 0x43, 0xa8, - 0xa9, 0x60, 0x90, 0x2f, 0xc5, 0xb5, 0x0c, 0xc7, 0x1f, 0x84, 0x8b, 0x32, 0x7a, 0x8a, 0xae, 0x65, - 0x48, 0xd1, 0x2d, 0x18, 0xbf, 0x98, 0x83, 0x59, 0xc5, 0x79, 0x9f, 0xb7, 0xf5, 0x18, 0xfb, 0xc8, - 0x03, 0x98, 0x64, 0xbd, 0x71, 0x9a, 0xc2, 0xfd, 0x81, 0x3f, 0xbf, 0xbf, 0x92, 0xf0, 0x1d, 0x11, - 0xdc, 0xae, 0xa8, 0xc8, 0x3c, 0xa6, 0x11, 0x6e, 0x9d, 0xa8, 0xc3, 0x6d, 0x26, 0xdd, 0x20, 0x34, - 0xe6, 0xc4, 0x87, 0xa9, 0xca, 0x61, 0xc7, 0x6a, 0x87, 0xb5, 0xf1, 0x67, 0xf8, 0x57, 0xfb, 0xd6, - 0xa6, 0x61, 0xf3, 0xea, 0x22, 0x2b, 0x6b, 0x5e, 0x96, 0xe2, 0xe0, 0xa7, 0x51, 0x2d, 0xbe, 0x07, - 0xb3, 0x89, 0x46, 0x9f, 0x28, 0xbc, 0xd2, 0x36, 0x90, 0x64, 0x3b, 0x52, 0x38, 0xbc, 0xaa, 0x07, - 0xef, 0x3a, 0x15, 0x3e, 0xe3, 0x61, 0x92, 0x55, 0xfe, 0xa8, 0xbf, 0xac, 0x06, 0x5f, 0xfa, 0x99, - 0xac, 0xea, 0xbf, 0xf3, 0xb4, 0x7f, 0x75, 0x9f, 0xd7, 0x6e, 0x59, 0xcf, 0xf7, 0x9b, 0xd3, 0xa1, - 0x6e, 0xb3, 0xdf, 0xc9, 0xc1, 0x99, 0x3e, 0x94, 0xe4, 0x30, 0xbe, 0x88, 0xf8, 0xed, 0xf6, 0xda, - 0xe0, 0x0a, 0x9f, 0xc4, 0x52, 0x22, 0x9f, 0xe5, 0x1e, 0xbc, 0x4d, 0x4c, 0x0e, 0x2a, 0xee, 0x75, - 0x3c, 0xaf, 0x74, 0x08, 0x8d, 0xbb, 0xee, 0x72, 0x28, 0x79, 0x0f, 0x46, 0xd0, 0x79, 0x2b, 0x16, - 0x3c, 0x88, 0x61, 0x20, 0x5c, 0x89, 0xb4, 0xc4, 0x7e, 0x6a, 0x91, 0x96, 0x18, 0x80, 0x7c, 0x06, - 0x72, 0xa5, 0xed, 0xba, 0x98, 0x97, 0x69, 0x95, 0x7c, 0xbb, 0x1e, 0x05, 0x78, 0xb6, 0xb4, 0x48, - 0xcc, 0x8c, 0x82, 0x11, 0xde, 0x2a, 0xd7, 0xc4, 0xac, 0xa8, 0x84, 0xb7, 0xca, 0xb5, 0x88, 0x70, - 0xaf, 0xa9, 0x05, 0x63, 0xb8, 0x55, 0xae, 0x7d, 0x72, 0xcb, 0xfe, 0x2f, 0x67, 0xb9, 0xdb, 0x31, - 0xef, 0xd8, 0x7b, 0x30, 0xa9, 0x05, 0x57, 0xcc, 0x44, 0xf2, 0x58, 0x18, 0xc3, 0x32, 0x66, 0xb7, - 0xa0, 0x11, 0xc8, 0x50, 0xe9, 0xec, 0x37, 0x4a, 0xbc, 0xaa, 0xd9, 0x41, 0xc8, 0x01, 0x65, 0xe2, - 0x78, 0xa8, 0xf4, 0x90, 0x84, 0x5c, 0x87, 0xc2, 0x16, 0xed, 0x58, 0x9d, 0x20, 0x54, 0xb4, 0xa1, - 0xed, 0x61, 0x80, 0x30, 0x5d, 0x6a, 0x08, 0x11, 0xd1, 0x4e, 0xae, 0xb7, 0xe3, 0x37, 0x3d, 0x07, - 0xc3, 0x13, 0x84, 0x67, 0x31, 0xb7, 0x93, 0x53, 0x4a, 0x74, 0x06, 0x31, 0x22, 0xe3, 0x67, 0x32, - 0x30, 0x26, 0x26, 0x92, 0xa7, 0xb8, 0xd8, 0x8b, 0xce, 0x12, 0x91, 0xe2, 0x62, 0xcf, 0x89, 0xa7, - 0xb8, 0xd8, 0xe3, 0x31, 0x00, 0xc6, 0x85, 0x07, 0x5d, 0xf8, 0xe4, 0xc4, 0x33, 0x22, 0x73, 0xa0, - 0x5e, 0x6d, 0x84, 0x3a, 0xac, 0x03, 0x82, 0xf1, 0x37, 0x44, 0xcb, 0x6e, 0x95, 0x6b, 0x64, 0x19, - 0x0a, 0xeb, 0x6e, 0xd3, 0x52, 0xce, 0x39, 0xdc, 0x76, 0x5a, 0x02, 0xa6, 0x0e, 0x90, 0xc4, 0x63, - 0xed, 0xab, 0x79, 0xae, 0xb8, 0xcb, 0x28, 0xed, 0xeb, 0x72, 0x60, 0xac, 0x7d, 0x21, 0xea, 0xd0, - 0xed, 0xa3, 0x29, 0x9b, 0xc4, 0xfd, 0xeb, 0x18, 0x43, 0xfa, 0xb6, 0xea, 0xd8, 0x21, 0x8a, 0xe4, - 0x4e, 0xb1, 0xd8, 0x6f, 0xa7, 0xb8, 0x7f, 0xdd, 0x4c, 0xa1, 0xc2, 0xf7, 0x9a, 0x08, 0x5c, 0xa7, - 0xde, 0x83, 0xa7, 0x78, 0x97, 0x4e, 0x7f, 0xaf, 0x89, 0x77, 0x6f, 0xa8, 0x4d, 0xfa, 0x3f, 0xcf, - 0xc2, 0xe9, 0x74, 0x42, 0xb5, 0x2f, 0x99, 0x01, 0x7d, 0xb9, 0x04, 0x85, 0x35, 0xd7, 0x0f, 0x14, - 0x53, 0x25, 0x54, 0x2b, 0xef, 0x0b, 0x98, 0x19, 0x96, 0xb2, 0x3b, 0x37, 0xfb, 0x3b, 0xfc, 0x3c, - 0x91, 0x1f, 0x3a, 0xdb, 0xb2, 0x3b, 0x37, 0x2f, 0x22, 0xb7, 0xa0, 0x60, 0x0a, 0xc7, 0x82, 0xd8, - 0xd0, 0x48, 0x70, 0x28, 0x4d, 0x11, 0x4f, 0x40, 0xb4, 0x18, 0x97, 0x02, 0x46, 0x4a, 0x30, 0x26, - 0x66, 0x3f, 0xf6, 0x24, 0x99, 0xb2, 0x64, 0xf4, 0xb0, 0xb3, 0x92, 0x8e, 0xed, 0x28, 0xf8, 0xb8, - 0x54, 0xad, 0x48, 0x1f, 0x01, 0xdc, 0x51, 0xf8, 0xe3, 0x93, 0x6e, 0x15, 0x16, 0x22, 0x1a, 0x3f, - 0x9c, 0x05, 0xd8, 0xa6, 0x3b, 0x4f, 0x77, 0x4e, 0xb6, 0xcf, 0x68, 0x2b, 0x4c, 0xb1, 0xbc, 0x18, - 0x3e, 0x25, 0xdb, 0x26, 0x5a, 0x40, 0x0c, 0x9f, 0x90, 0x6d, 0x09, 0x46, 0xb8, 0xb6, 0x53, 0xcd, - 0x79, 0x84, 0x6a, 0x4e, 0x0e, 0x37, 0x76, 0x60, 0xfe, 0x16, 0x0d, 0x22, 0xf5, 0x96, 0x7c, 0xd2, - 0x1a, 0xcc, 0xf6, 0x35, 0x18, 0x17, 0xf8, 0xe1, 0xfe, 0xc5, 0x75, 0x31, 0xc2, 0x7f, 0x1d, 0x75, - 0x31, 0x12, 0x81, 0xed, 0x46, 0x15, 0xda, 0xa2, 0x01, 0xfd, 0x64, 0xab, 0xa9, 0x03, 0xe1, 0x5d, - 0xc1, 0x9e, 0x0d, 0x57, 0xc3, 0xb1, 0xe3, 0x73, 0x1f, 0x4e, 0x85, 0x6d, 0x7f, 0x92, 0x7c, 0xaf, - 0xb2, 0x2b, 0xa5, 0x88, 0xd8, 0x1a, 0x71, 0x1c, 0x60, 0xd3, 0xf0, 0x08, 0x16, 0x25, 0xc1, 0xb6, - 0x13, 0x9a, 0x90, 0x0d, 0x45, 0x4b, 0xde, 0x86, 0x09, 0x85, 0x46, 0x44, 0x1c, 0x45, 0xf5, 0xe7, - 0x43, 0x27, 0xd8, 0x6f, 0xf8, 0x1c, 0xae, 0xaa, 0x3f, 0x15, 0x74, 0xe3, 0x03, 0x78, 0x36, 0xf4, - 0x2a, 0x48, 0xa9, 0x3a, 0xc6, 0x3c, 0x73, 0x32, 0xe6, 0x1b, 0x51, 0xb7, 0xaa, 0x9d, 0xd0, 0x13, - 0x50, 0xf2, 0x26, 0x6a, 0xb7, 0x44, 0x67, 0x9e, 0x4b, 0xf8, 0x16, 0x2a, 0x2e, 0x84, 0xc6, 0x5b, - 0x4a, 0x63, 0x53, 0x18, 0x6a, 0xc4, 0x99, 0x38, 0xf1, 0x0f, 0x67, 0x61, 0x66, 0xb3, 0x5a, 0x29, - 0x87, 0x56, 0x2d, 0xdf, 0x63, 0x09, 0xe3, 0xb4, 0xbe, 0xf5, 0xdf, 0x6f, 0x8c, 0x7b, 0x30, 0x17, - 0x1b, 0x06, 0x14, 0x1d, 0xde, 0xe5, 0x66, 0xef, 0x21, 0x58, 0x8a, 0x0d, 0xa7, 0xd3, 0xd8, 0xdf, - 0xbf, 0x6e, 0xc6, 0xb0, 0x8d, 0x7f, 0x3e, 0x1e, 0xe3, 0x2b, 0xb6, 0xb0, 0xd7, 0x60, 0xbc, 0xea, - 0xfb, 0x3d, 0xea, 0xdd, 0x33, 0xd7, 0x55, 0x55, 0x81, 0x83, 0xc0, 0x46, 0xcf, 0x6b, 0x99, 0x11, - 0x02, 0xb9, 0x0c, 0x05, 0x11, 0x84, 0x53, 0xee, 0x09, 0xa8, 0xb5, 0x0d, 0x63, 0x78, 0x9a, 0x61, - 0x31, 0x79, 0x03, 0x26, 0xf9, 0xdf, 0x7c, 0xb5, 0x89, 0x01, 0x47, 0xe5, 0xa0, 0x40, 0xe7, 0xab, - 0xd3, 0xd4, 0xd0, 0xc8, 0x2b, 0x90, 0x2b, 0x95, 0x4d, 0xa1, 0x0e, 0x12, 0x72, 0x23, 0xa6, 0x81, - 0xed, 0x51, 0xfd, 0x12, 0x51, 0x36, 0x99, 0xf4, 0x27, 0x54, 0x49, 0x32, 0xf3, 0x02, 0xcf, 0x56, - 0x2b, 0x60, 0xb1, 0xc3, 0x0c, 0x61, 0xe4, 0x2a, 0x8c, 0x55, 0x1c, 0xbf, 0xdb, 0xb2, 0x0e, 0x85, - 0x1e, 0x9b, 0x67, 0x43, 0xe1, 0x20, 0xcd, 0x99, 0x98, 0x83, 0xc8, 0x65, 0x99, 0x25, 0xa2, 0x10, - 0x59, 0xcf, 0xf7, 0x49, 0x05, 0xf1, 0x1a, 0x8c, 0x8a, 0x50, 0x95, 0xe3, 0x4a, 0x10, 0xea, 0x78, - 0x88, 0x4a, 0x81, 0x93, 0xf4, 0x6f, 0x83, 0x27, 0xe9, 0xdf, 0xb6, 0x03, 0x67, 0x6e, 0xa1, 0xf6, - 0x46, 0x0f, 0x6a, 0x71, 0xcf, 0xac, 0x0a, 0x7d, 0x38, 0xbe, 0xf8, 0x70, 0x05, 0x4f, 0x3c, 0x2e, - 0x46, 0xa3, 0xe7, 0xa9, 0xc9, 0xbd, 0xfa, 0x31, 0x22, 0x5f, 0x84, 0xf9, 0xb4, 0x22, 0xa1, 0x35, - 0xc7, 0xf0, 0x0d, 0xe9, 0x15, 0xa8, 0xe1, 0x1b, 0xd2, 0x38, 0x90, 0x75, 0x28, 0x72, 0x78, 0xc9, - 0x6e, 0x3b, 0x1d, 0xae, 0xf9, 0x9f, 0x8a, 0xb2, 0xe2, 0x0b, 0xae, 0x16, 0x2b, 0xe4, 0x2f, 0x00, - 0x9a, 0x03, 0x44, 0x8c, 0x92, 0xfc, 0x64, 0x86, 0xdd, 0xe6, 0x78, 0x60, 0xc7, 0x7b, 0xe6, 0xba, - 0x2f, 0x42, 0xff, 0x9c, 0x8e, 0x7c, 0x1b, 0xea, 0x81, 0xe7, 0x74, 0xf6, 0x84, 0x73, 0xc3, 0x96, - 0x70, 0x6e, 0x78, 0xfb, 0x23, 0x39, 0x37, 0x70, 0x56, 0xfe, 0xe3, 0xa3, 0xa5, 0x49, 0x4f, 0xd4, - 0x89, 0x5f, 0x91, 0xd6, 0x02, 0x4c, 0x4c, 0xdd, 0x6a, 0xb9, 0x0f, 0xef, 0x75, 0x1e, 0x50, 0xcf, - 0xd9, 0x75, 0xa8, 0xcd, 0x3b, 0x39, 0x83, 0x3b, 0x38, 0x4f, 0x4c, 0x8d, 0xa9, 0xd6, 0x7b, 0x21, - 0x42, 0xa2, 0xa3, 0xa9, 0x1c, 0xd8, 0xc5, 0x53, 0x1a, 0xd0, 0x73, 0x67, 0xbd, 0x62, 0x74, 0xf1, - 0x94, 0xd6, 0xf6, 0x0d, 0x5c, 0x46, 0xea, 0xe2, 0xd1, 0x48, 0xc8, 0x55, 0x18, 0xbd, 0x6b, 0x3d, - 0x2a, 0xed, 0x51, 0x91, 0xfd, 0x67, 0x4a, 0x6e, 0x7f, 0x08, 0x5c, 0x29, 0xfc, 0x0e, 0xb7, 0xfa, - 0x7e, 0xc6, 0x14, 0x68, 0xe4, 0x1b, 0x19, 0x38, 0xcd, 0x3f, 0x63, 0xd9, 0xcb, 0x3a, 0x0d, 0x02, - 0x36, 0x0e, 0x22, 0x06, 0x90, 0x8c, 0x9d, 0x5f, 0xaf, 0x6f, 0xa6, 0xe3, 0xf1, 0x34, 0xca, 0x62, - 0x67, 0x08, 0x07, 0xce, 0x17, 0xa5, 0x5a, 0xa0, 0xbf, 0x54, 0x7a, 0x61, 0xd1, 0xfc, 0x19, 0xd9, - 0x72, 0xf2, 0xba, 0xea, 0x53, 0x96, 0x43, 0x39, 0x77, 0xac, 0x6d, 0x3d, 0x6a, 0x58, 0x7b, 0x54, - 0x7b, 0x27, 0x0d, 0x9d, 0xcd, 0xce, 0xf6, 0x6d, 0x1b, 0xb9, 0x01, 0x67, 0x64, 0x42, 0xed, 0xfd, - 0x20, 0xe8, 0xfa, 0x0d, 0x79, 0x17, 0x10, 0x4e, 0x68, 0xe6, 0x29, 0x51, 0xbc, 0xc6, 0x4a, 0xe5, - 0xf5, 0xc0, 0x37, 0xfe, 0xea, 0x38, 0x3f, 0xd3, 0x4a, 0xbd, 0x60, 0x5f, 0x9e, 0x82, 0xcb, 0x69, - 0x6e, 0x14, 0xdc, 0x68, 0x4c, 0x71, 0xa3, 0xd0, 0x9d, 0x27, 0xe4, 0x63, 0x44, 0x36, 0xf5, 0x31, - 0xe2, 0x35, 0x18, 0x2f, 0xef, 0xd3, 0xe6, 0x41, 0x68, 0x1f, 0x5f, 0x10, 0xda, 0x5e, 0x06, 0xe4, - 0x31, 0x20, 0x23, 0x04, 0x72, 0x15, 0x00, 0xfd, 0xaa, 0xb8, 0x88, 0xa4, 0xc4, 0x71, 0x46, 0x37, - 0x2c, 0xf1, 0x0e, 0xaf, 0xa0, 0x20, 0xfb, 0xba, 0x79, 0x53, 0x7d, 0xb8, 0xe7, 0xec, 0x7d, 0x6f, - 0x57, 0xa0, 0x47, 0x08, 0xac, 0x7b, 0xca, 0x42, 0x17, 0xdb, 0x72, 0x31, 0xf1, 0x35, 0xa8, 0x48, - 0x68, 0x13, 0x27, 0x8d, 0x81, 0x71, 0x57, 0x9e, 0x14, 0x36, 0x71, 0xa1, 0xe1, 0xb0, 0x19, 0x21, - 0x90, 0xcf, 0xc0, 0x58, 0x99, 0x7a, 0xc1, 0xd6, 0xd6, 0x3a, 0xbe, 0xad, 0xf3, 0x60, 0xc7, 0x05, - 0x0c, 0x4c, 0x1b, 0x04, 0xad, 0xef, 0x1e, 0x2d, 0x4d, 0x05, 0x4e, 0x9b, 0x5e, 0x09, 0x27, 0x58, - 0x62, 0x93, 0x15, 0x28, 0xf2, 0x57, 0xda, 0x48, 0x14, 0xc6, 0x8d, 0xba, 0xc0, 0x8f, 0x0d, 0xf1, - 0xa4, 0xfb, 0x90, 0xee, 0x84, 0x61, 0x79, 0x13, 0xf8, 0x64, 0x55, 0x46, 0xb3, 0x56, 0x3b, 0x09, - 0x91, 0x6e, 0x26, 0xbe, 0x80, 0x59, 0x5f, 0x93, 0x14, 0xa4, 0x04, 0x53, 0x65, 0xb7, 0xdd, 0xb5, - 0x02, 0x07, 0x53, 0xc3, 0x1c, 0x8a, 0x3d, 0x19, 0xf5, 0x4b, 0x4d, 0xb5, 0x40, 0xdb, 0xe0, 0xd5, - 0x02, 0x72, 0x13, 0xa6, 0x4d, 0xb7, 0xc7, 0x26, 0x49, 0x5e, 0x0a, 0xf9, 0xb6, 0x8b, 0x5e, 0xc9, - 0x1e, 0x2b, 0x61, 0xa7, 0x84, 0xb8, 0x01, 0x6a, 0x41, 0xc5, 0x34, 0x2a, 0xb2, 0x91, 0xa2, 0x9d, - 0x57, 0xf7, 0x5a, 0x35, 0x38, 0x6f, 0x82, 0x59, 0x8a, 0x62, 0xff, 0x3a, 0x4c, 0xd4, 0xeb, 0x9b, - 0x5b, 0xd4, 0x0f, 0x6e, 0xb6, 0xdc, 0x87, 0xb8, 0xd5, 0x16, 0x44, 0xd2, 0x02, 0xdf, 0x6d, 0x04, - 0xd4, 0x0f, 0x1a, 0xbb, 0x2d, 0xf7, 0xa1, 0xa9, 0x62, 0x91, 0xaf, 0xb0, 0xf1, 0x50, 0x04, 0x13, - 0x11, 0x3e, 0x6d, 0x90, 0xec, 0x84, 0x1b, 0x5a, 0xf4, 0xc9, 0x30, 0x09, 0x4a, 0x1f, 0x2c, 0x05, - 0x1d, 0x9d, 0x3d, 0xd8, 0x75, 0xb6, 0x64, 0xdb, 0x1e, 0xf5, 0x7d, 0xb1, 0x27, 0x72, 0x67, 0x0f, - 0xbc, 0xfb, 0x5a, 0xbc, 0x40, 0x73, 0xf6, 0x50, 0x08, 0xc8, 0x37, 0x33, 0x70, 0x4a, 0xb5, 0x17, - 0xc7, 0x8f, 0xa5, 0x4d, 0x3b, 0x81, 0xd8, 0x21, 0x5f, 0xbf, 0x22, 0xcf, 0x84, 0x2b, 0x0a, 0xda, - 0x95, 0x07, 0xd7, 0xae, 0x94, 0xa2, 0x9f, 0x75, 0x49, 0x24, 0x22, 0x10, 0xa5, 0xf1, 0x53, 0xf7, - 0x77, 0x2b, 0x85, 0x94, 0x94, 0x99, 0xd8, 0xc0, 0xd6, 0x13, 0x5a, 0x87, 0x54, 0x6b, 0xb8, 0xc1, - 0x0a, 0xf5, 0x9e, 0x58, 0x7d, 0xdc, 0x8e, 0xc4, 0xe9, 0xea, 0xd2, 0x81, 0x42, 0x83, 0xc2, 0x76, - 0xbd, 0x74, 0x77, 0x3d, 0x92, 0x18, 0xbf, 0xb7, 0x8c, 0xb4, 0xb5, 0xbe, 0x0d, 0x30, 0xd2, 0xbe, - 0x07, 0x73, 0xb1, 0x61, 0x90, 0xc2, 0xb6, 0x06, 0x8e, 0x0b, 0xdb, 0x31, 0x1a, 0x33, 0x86, 0x6d, - 0xfc, 0xfb, 0x85, 0x18, 0x5f, 0x61, 0x98, 0x65, 0xc0, 0x28, 0x97, 0xa5, 0xd5, 0x9c, 0xc6, 0x5c, - 0xd2, 0x36, 0x45, 0x09, 0x39, 0x0b, 0xb9, 0x7a, 0x7d, 0x53, 0x4d, 0xe3, 0xee, 0xfb, 0xae, 0xc9, - 0x60, 0x6c, 0x86, 0xd0, 0xe6, 0x4a, 0x89, 0x76, 0xca, 0xb6, 0x3d, 0x13, 0xa1, 0x6c, 0xbc, 0xa5, - 0x64, 0x9b, 0x8f, 0xc6, 0x5b, 0x48, 0xb6, 0x91, 0x3c, 0x5b, 0x86, 0x85, 0x92, 0xef, 0x53, 0x8f, - 0xad, 0x2a, 0x61, 0xca, 0xe3, 0x09, 0xe9, 0x4b, 0xec, 0xee, 0x58, 0xa9, 0xd5, 0xf4, 0xcd, 0xbe, - 0x88, 0xe4, 0x12, 0x14, 0x4a, 0x3d, 0xdb, 0xa1, 0x9d, 0xa6, 0x16, 0x1c, 0xc5, 0x12, 0x30, 0x33, - 0x2c, 0x25, 0x5f, 0x80, 0x53, 0x82, 0x48, 0x8a, 0xe0, 0x62, 0x04, 0xc6, 0xa2, 0x4f, 0x50, 0x4a, - 0x87, 0xd1, 0x33, 0x31, 0x1f, 0x92, 0x74, 0x4a, 0x52, 0x82, 0xe2, 0x2a, 0x3a, 0x25, 0x54, 0x28, - 0xd7, 0x58, 0xbb, 0x1e, 0x77, 0xb4, 0xe0, 0xb2, 0x3c, 0x77, 0x58, 0x68, 0xd8, 0x61, 0xa1, 0x99, - 0x40, 0x27, 0x77, 0x60, 0x2e, 0x0e, 0x63, 0x1b, 0x39, 0x17, 0xdb, 0x31, 0xdc, 0x5e, 0x82, 0x0b, - 0x6e, 0xe5, 0x69, 0x54, 0x64, 0x07, 0x66, 0x23, 0x33, 0x09, 0x5d, 0x98, 0x97, 0x56, 0x7d, 0x61, - 0xb9, 0x14, 0xe8, 0x9f, 0x15, 0x8b, 0x71, 0x2e, 0x32, 0xb9, 0x08, 0x85, 0x7a, 0x33, 0xc9, 0x8e, - 0xd8, 0x30, 0x5d, 0x77, 0xf6, 0x3a, 0x4e, 0x67, 0xef, 0x0e, 0x3d, 0xac, 0x59, 0x8e, 0x27, 0xec, - 0xab, 0xa4, 0xf5, 0x64, 0xc9, 0x3f, 0x6c, 0xb7, 0x69, 0xe0, 0xe1, 0x11, 0xc9, 0xca, 0xd1, 0x47, - 0x90, 0x09, 0x69, 0x8b, 0x3e, 0xa7, 0x43, 0xff, 0x9b, 0xae, 0xe5, 0x68, 0x67, 0x81, 0xce, 0x53, - 0xbb, 0x50, 0x4d, 0x0e, 0x79, 0xa1, 0x6a, 0xc1, 0xec, 0x6a, 0xa7, 0xe9, 0x1d, 0xe2, 0xc3, 0x81, - 0x6c, 0xdc, 0xd4, 0x31, 0x8d, 0x7b, 0x51, 0x34, 0xee, 0x39, 0x4b, 0xae, 0xb0, 0xb4, 0xe6, 0x25, - 0x19, 0x93, 0x3a, 0xcc, 0xa2, 0xd4, 0x5b, 0xad, 0xd4, 0xaa, 0x1d, 0x27, 0x70, 0x30, 0xf3, 0x2e, - 0x3f, 0x63, 0x5e, 0x12, 0x3c, 0xcf, 0x71, 0xc1, 0xd9, 0xb1, 0xbb, 0x0d, 0x47, 0xa2, 0xa8, 0x4c, - 0x13, 0xf4, 0x83, 0xa4, 0xd7, 0x99, 0x3f, 0x19, 0xe9, 0xd5, 0xf8, 0x8f, 0x0a, 0x7c, 0x43, 0x56, - 0x25, 0xc5, 0x7e, 0x46, 0x6b, 0x31, 0x09, 0x32, 0x7b, 0x12, 0x09, 0x32, 0x77, 0xbc, 0x04, 0x99, - 0x3f, 0x4e, 0x82, 0x8c, 0x89, 0x78, 0x23, 0x27, 0x16, 0xf1, 0x46, 0x4f, 0x20, 0xe2, 0x8d, 0x9d, - 0x48, 0xc4, 0xd3, 0x64, 0xd5, 0xc2, 0x71, 0xb2, 0xea, 0xff, 0x2f, 0x10, 0x3e, 0xad, 0x02, 0x61, - 0xda, 0xf9, 0x7e, 0x22, 0x81, 0xb0, 0xbf, 0x3c, 0x57, 0xfc, 0xd3, 0x96, 0xe7, 0x66, 0x3f, 0x82, - 0x3c, 0xf7, 0xe7, 0xa0, 0x18, 0x3f, 0x62, 0x8e, 0x8f, 0x40, 0xf6, 0xc4, 0xa2, 0xe5, 0xb0, 0x03, - 0x30, 0xbe, 0xc5, 0xb3, 0x7b, 0x66, 0xcd, 0x73, 0x1e, 0x58, 0x01, 0xbd, 0x23, 0x5f, 0xe6, 0x45, - 0xf4, 0x3c, 0x0e, 0xc5, 0x6f, 0x5e, 0x41, 0x09, 0xa5, 0x9b, 0x6c, 0x9a, 0x74, 0x63, 0xfc, 0x48, - 0x16, 0x66, 0x79, 0x64, 0x8b, 0xa7, 0x5f, 0x41, 0xfc, 0xae, 0x26, 0xb3, 0x4a, 0x3b, 0xb0, 0x58, - 0xef, 0x06, 0xa8, 0x88, 0xbf, 0x0c, 0xa7, 0x12, 0x43, 0x81, 0x72, 0x6b, 0x45, 0xc6, 0x14, 0x49, - 0x48, 0xae, 0x0b, 0xe9, 0x95, 0xdc, 0xbf, 0x6e, 0x26, 0x28, 0x8c, 0x7f, 0x99, 0x4f, 0xf0, 0x17, - 0xca, 0x62, 0x55, 0xfd, 0x9b, 0x39, 0x99, 0xfa, 0x37, 0x3b, 0x9c, 0xfa, 0x37, 0x76, 0xb6, 0xe4, - 0x86, 0x39, 0x5b, 0xbe, 0x00, 0x53, 0x5b, 0xd4, 0x6a, 0xfb, 0x5b, 0xae, 0x08, 0x68, 0xcd, 0xed, - 0x40, 0x65, 0xc8, 0x10, 0x56, 0x26, 0xc5, 0xae, 0xd0, 0x9e, 0x25, 0x60, 0x04, 0x6c, 0x3f, 0xe4, - 0x11, 0xae, 0x4d, 0x9d, 0x83, 0x2a, 0x4b, 0x8f, 0x0c, 0x90, 0xa5, 0xeb, 0x30, 0x29, 0xe8, 0xa2, - 0xb0, 0x6b, 0x91, 0xd0, 0xc7, 0x8a, 0x10, 0x2e, 0x6b, 0x0f, 0x53, 0x8e, 0x85, 0xb5, 0x73, 0x79, - 0x4f, 0x63, 0xc2, 0x86, 0x60, 0xb5, 0x63, 0x77, 0x5d, 0xa7, 0x83, 0x43, 0x30, 0x16, 0x0d, 0x01, - 0x15, 0x60, 0x3e, 0x04, 0x0a, 0x12, 0x79, 0x1b, 0xa6, 0x4b, 0xb5, 0xaa, 0x4a, 0x56, 0x88, 0x34, - 0xd0, 0x56, 0xd7, 0x69, 0x68, 0xa4, 0x31, 0xdc, 0x41, 0xf2, 0xcf, 0xf8, 0x9f, 0x90, 0xfc, 0xf3, - 0x8d, 0x71, 0xf9, 0x79, 0x7f, 0xb2, 0xba, 0x32, 0x5d, 0xfb, 0x95, 0x3b, 0xa1, 0xf6, 0x2b, 0x7f, - 0x9c, 0x44, 0xa1, 0x89, 0x39, 0x23, 0x27, 0x10, 0x73, 0x46, 0x3f, 0xb6, 0x26, 0x6b, 0xec, 0x84, - 0x82, 0x4b, 0xec, 0x4b, 0x2b, 0x0c, 0xf3, 0xa5, 0xa5, 0x0a, 0x3b, 0xe3, 0x1f, 0x5f, 0xd8, 0x81, - 0x13, 0x0b, 0x3b, 0xf5, 0xc8, 0x5b, 0x67, 0xe2, 0x58, 0x63, 0xd5, 0x73, 0xe2, 0x66, 0x30, 0x9b, - 0x1e, 0x29, 0x25, 0xf4, 0xdb, 0xf9, 0x9e, 0x92, 0xa0, 0xbe, 0x9a, 0x2e, 0x41, 0x0d, 0x3e, 0x6d, - 0xfe, 0xbf, 0x2c, 0x43, 0x79, 0x38, 0xca, 0xdb, 0x96, 0xd7, 0x41, 0x9d, 0xff, 0x55, 0x18, 0x93, - 0x11, 0x83, 0x32, 0x91, 0x72, 0x21, 0x19, 0x2a, 0x48, 0x62, 0xb1, 0xcb, 0xb3, 0x24, 0x56, 0x03, - 0x15, 0x3f, 0x14, 0x30, 0x2d, 0x18, 0x8b, 0x80, 0x19, 0x7f, 0x3b, 0x2f, 0xbf, 0x64, 0x76, 0xb3, - 0x12, 0x29, 0x68, 0x57, 0x94, 0x99, 0x53, 0x24, 0xb8, 0xd8, 0xdc, 0xc4, 0x6c, 0xcf, 0x74, 0x92, - 0x8f, 0x12, 0x6e, 0x49, 0x49, 0x7d, 0x93, 0x1b, 0x22, 0xf5, 0xcd, 0x9b, 0x5a, 0xde, 0x98, 0x7c, - 0x94, 0xa8, 0x80, 0xad, 0xee, 0xc1, 0x19, 0x63, 0x6e, 0xa8, 0x09, 0x5e, 0x46, 0xa2, 0x70, 0x06, - 0x48, 0x39, 0x20, 0xb5, 0x4b, 0x28, 0x92, 0x8e, 0x9e, 0x24, 0x90, 0xd9, 0xd8, 0x9f, 0x6a, 0x20, - 0xb3, 0x55, 0x00, 0x25, 0xed, 0x27, 0x7f, 0xb0, 0x78, 0x89, 0x0d, 0xd3, 0xf1, 0x29, 0x3f, 0x15, - 0x42, 0xe3, 0xb7, 0x09, 0xcc, 0xd6, 0xeb, 0x9b, 0x15, 0xc7, 0xda, 0xeb, 0xb8, 0x7e, 0xe0, 0x34, - 0xab, 0x9d, 0x5d, 0x97, 0xc9, 0x63, 0xe1, 0xae, 0xa0, 0x84, 0xc1, 0x8a, 0x76, 0x84, 0xb0, 0x98, - 0xc9, 0xfb, 0xab, 0x9e, 0xe7, 0x7a, 0xaa, 0xbc, 0x4f, 0x19, 0xc0, 0xe4, 0x70, 0x26, 0xf2, 0xd4, - 0x7b, 0x3c, 0x7f, 0x23, 0x7f, 0x43, 0x42, 0x91, 0xc7, 0xe7, 0x20, 0x53, 0x96, 0x11, 0x9a, 0x5c, - 0xb0, 0x42, 0x04, 0x3e, 0xa3, 0x85, 0x43, 0x8b, 0x8a, 0xf9, 0x9e, 0x27, 0xce, 0x24, 0x74, 0x66, - 0xea, 0x22, 0x5c, 0x7d, 0xb2, 0x4d, 0x7c, 0x03, 0x87, 0x70, 0x4a, 0x73, 0xca, 0x19, 0x56, 0xaf, - 0xf6, 0x8a, 0x10, 0xb1, 0x0c, 0xf4, 0x2d, 0x4c, 0x51, 0xae, 0xa9, 0x81, 0xd6, 0x53, 0x6b, 0x20, - 0x3f, 0x92, 0x81, 0x73, 0xa9, 0x25, 0xe1, 0xd7, 0x3d, 0xa1, 0x85, 0xa4, 0x53, 0x36, 0x0d, 0x1e, - 0x52, 0xbe, 0x5f, 0xd5, 0x8d, 0x94, 0xad, 0x60, 0x70, 0x4d, 0xe4, 0x57, 0x33, 0x70, 0x46, 0xc3, - 0x08, 0xf7, 0x3c, 0x1f, 0xcf, 0xa6, 0xbe, 0xeb, 0xfa, 0xc3, 0x27, 0xb3, 0xae, 0x2f, 0xe8, 0x7d, - 0x89, 0xb6, 0x64, 0xb5, 0x0f, 0xfd, 0x5a, 0x48, 0x1e, 0xc0, 0x2c, 0x16, 0x49, 0x1d, 0x1f, 0x5b, - 0xb3, 0x42, 0x35, 0x38, 0x1f, 0x35, 0x9b, 0x3b, 0x9a, 0x61, 0x5a, 0xb0, 0xe5, 0xef, 0x1c, 0x2d, - 0x4d, 0x69, 0xe8, 0x18, 0x0f, 0x19, 0xdb, 0x10, 0x2a, 0x0a, 0x9d, 0xce, 0xae, 0xab, 0x9e, 0x97, - 0x89, 0x2a, 0xc8, 0x7f, 0x9c, 0x81, 0x05, 0x06, 0xe5, 0xdd, 0xb8, 0xe9, 0xb9, 0xed, 0xb0, 0x5c, - 0xbe, 0xfd, 0xf7, 0x19, 0xb6, 0xd6, 0x93, 0x19, 0xb6, 0x97, 0xb0, 0xc9, 0x7c, 0x4f, 0x68, 0xec, - 0x7a, 0x6e, 0x3b, 0x6a, 0xbe, 0x96, 0xd6, 0xb2, 0x5f, 0x23, 0xc9, 0x0f, 0x66, 0xe0, 0xac, 0xa6, - 0xe3, 0x50, 0x43, 0xe1, 0x0a, 0x77, 0x3e, 0x69, 0x28, 0xa2, 0x16, 0xad, 0x5c, 0x11, 0xeb, 0xff, - 0x22, 0xb6, 0x20, 0x3a, 0x2d, 0xb0, 0x2d, 0x8d, 0x36, 0xc7, 0x52, 0x9a, 0xd0, 0xbf, 0x16, 0xe2, - 0xc0, 0x2c, 0xbe, 0xbb, 0x69, 0x36, 0x2a, 0xf3, 0xfd, 0x6d, 0x54, 0xc2, 0xf4, 0x2d, 0x18, 0x67, - 0xb3, 0xbf, 0xa1, 0x4a, 0x92, 0x2b, 0xf9, 0xf3, 0x70, 0x36, 0x01, 0x0c, 0xbf, 0xb6, 0x53, 0x7d, - 0xbf, 0xb6, 0x57, 0x1f, 0x1f, 0x2d, 0xbd, 0x9c, 0x56, 0x5b, 0xda, 0x97, 0xd6, 0xbf, 0x06, 0x62, - 0x01, 0x44, 0x85, 0x22, 0x3b, 0x66, 0xfa, 0x02, 0x7d, 0x55, 0xac, 0x0f, 0x05, 0x9f, 0xed, 0xe5, - 0x4a, 0x1b, 0xd4, 0x23, 0x2f, 0x42, 0x22, 0x14, 0x26, 0x95, 0x18, 0xa3, 0x87, 0x98, 0x26, 0xb3, - 0x6f, 0x25, 0xdf, 0x39, 0x5a, 0xd2, 0xb0, 0x99, 0x5c, 0xac, 0x06, 0x2f, 0x55, 0xe5, 0x62, 0x0d, - 0x91, 0xfc, 0x4a, 0x06, 0xe6, 0x19, 0x20, 0x5a, 0x54, 0xa2, 0x53, 0x0b, 0x83, 0x56, 0xfd, 0xfe, - 0x93, 0x59, 0xf5, 0x2f, 0x60, 0x1b, 0xd5, 0x55, 0x9f, 0x18, 0x92, 0xd4, 0xc6, 0xe1, 0x6a, 0xd7, - 0x9e, 0x78, 0xb5, 0xd5, 0x7e, 0x76, 0x88, 0xd5, 0xce, 0x27, 0xe0, 0xf8, 0xd5, 0xde, 0xb7, 0x16, - 0xb2, 0x05, 0x93, 0x42, 0x24, 0xe6, 0x03, 0xf6, 0xbc, 0x16, 0xf4, 0x50, 0x2d, 0xe2, 0xf7, 0x14, - 0x11, 0x82, 0x35, 0xd1, 0x43, 0x8d, 0x0b, 0xe9, 0xc0, 0x1c, 0xff, 0xad, 0x2b, 0x28, 0x96, 0xfa, - 0x2a, 0x28, 0x2e, 0x89, 0x1e, 0x9d, 0x17, 0xfc, 0x63, 0x7a, 0x0a, 0x35, 0x6b, 0x47, 0x0a, 0x63, - 0xd2, 0x05, 0xa2, 0x81, 0xf9, 0x47, 0x7b, 0x7e, 0xb0, 0x5a, 0xe2, 0x65, 0x51, 0xe7, 0x52, 0xbc, - 0xce, 0xf8, 0x97, 0x9b, 0xc2, 0x9b, 0x58, 0x30, 0x23, 0xa0, 0xec, 0x02, 0x8c, 0x3b, 0xfc, 0x0b, - 0x9a, 0xe7, 0x7f, 0xac, 0x94, 0xe7, 0x16, 0x94, 0x35, 0x61, 0x64, 0x86, 0xd8, 0x86, 0x1e, 0xe7, - 0x47, 0x36, 0x61, 0xb6, 0xd4, 0xed, 0xb6, 0x1c, 0x6a, 0x63, 0x2f, 0x79, 0xa6, 0x43, 0x23, 0x8a, - 0x97, 0x6f, 0xf1, 0x42, 0x21, 0xe2, 0xc7, 0xd3, 0x1c, 0x26, 0x69, 0x8d, 0x6f, 0x66, 0x12, 0x8d, - 0x66, 0x37, 0x77, 0xfc, 0xa1, 0x38, 0xfd, 0xe2, 0xcd, 0x9d, 0x37, 0x11, 0x35, 0x08, 0x11, 0x02, - 0x13, 0x96, 0xd4, 0x80, 0x32, 0x39, 0x2e, 0x2c, 0x89, 0xeb, 0x65, 0x74, 0xa1, 0x5c, 0x92, 0xb6, - 0x83, 0xb9, 0x48, 0xe8, 0x42, 0xdb, 0x41, 0x61, 0x31, 0x68, 0xfc, 0x60, 0x56, 0x5f, 0x76, 0xe4, - 0x92, 0x22, 0xb7, 0x2b, 0x21, 0x6d, 0xa4, 0xdc, 0xae, 0x48, 0xeb, 0x7f, 0x2b, 0x03, 0x73, 0x9b, - 0xde, 0x9e, 0xd5, 0x71, 0xbe, 0xce, 0x43, 0xe3, 0xb9, 0x38, 0x2f, 0x83, 0x53, 0x8f, 0x3c, 0xa9, - 0x14, 0x0a, 0xae, 0x52, 0x31, 0x5b, 0x29, 0xb8, 0x64, 0xcc, 0xb4, 0xf6, 0xa0, 0x35, 0x36, 0x36, - 0x4c, 0xc9, 0x64, 0xc1, 0xd1, 0x39, 0xdc, 0xf8, 0xf1, 0x2c, 0x4c, 0x28, 0x9f, 0x00, 0xf9, 0x34, - 0x4c, 0xaa, 0x7c, 0x54, 0xad, 0x8f, 0x5a, 0xad, 0xa9, 0x61, 0xa1, 0xda, 0x87, 0x5a, 0x6d, 0x4d, - 0xed, 0xc3, 0x16, 0x3a, 0x42, 0x4f, 0x78, 0xb5, 0x79, 0x2f, 0xe5, 0x6a, 0x73, 0xa2, 0x94, 0x98, - 0x6f, 0x27, 0x2f, 0x38, 0xc3, 0x67, 0xb0, 0x34, 0x7e, 0x2a, 0x03, 0xc5, 0xf8, 0x47, 0xfa, 0x89, - 0x8c, 0xca, 0x09, 0x54, 0xfc, 0x3f, 0x96, 0x0d, 0x03, 0x0c, 0x4b, 0x1f, 0x93, 0xa7, 0xd5, 0x62, - 0xe4, 0x1d, 0x4d, 0xfb, 0xfe, 0x6c, 0x78, 0xae, 0xa8, 0x9d, 0x1b, 0x10, 0x7b, 0x27, 0xff, 0xed, - 0x9f, 0x5b, 0x7a, 0xc6, 0x78, 0x1f, 0xe6, 0xe3, 0xc3, 0x81, 0x1a, 0xf8, 0x12, 0xcc, 0xe8, 0xf0, - 0x78, 0x78, 0xf2, 0x38, 0x95, 0x19, 0xc7, 0x37, 0x7e, 0x27, 0x1b, 0xe7, 0x2d, 0xac, 0x47, 0xd8, - 0xa6, 0xd3, 0xb1, 0x76, 0x5a, 0x61, 0xcc, 0x63, 0xbe, 0xe9, 0x70, 0x90, 0x29, 0xcb, 0x4e, 0x12, - 0xaf, 0x3f, 0xf4, 0x94, 0xc8, 0xa5, 0x7b, 0x4a, 0x90, 0x1b, 0x31, 0xbb, 0x29, 0xc5, 0xad, 0xff, - 0x21, 0xdd, 0x69, 0x44, 0xb6, 0x53, 0x31, 0x73, 0xa9, 0x32, 0xcc, 0x6b, 0xb1, 0x0f, 0x25, 0xfd, - 0x48, 0xa4, 0x70, 0x0d, 0xb0, 0x80, 0x13, 0xa7, 0x22, 0x93, 0x35, 0x18, 0x63, 0xcd, 0xbc, 0x6b, - 0x75, 0x85, 0x62, 0x9d, 0x84, 0x7e, 0x53, 0xad, 0xf0, 0xc2, 0xa7, 0xb8, 0x4e, 0xb5, 0x28, 0x3b, - 0xf2, 0xb5, 0x8c, 0xb2, 0x1c, 0xd1, 0xf8, 0xa3, 0x0c, 0xfb, 0xfe, 0x9b, 0x07, 0xdf, 0x63, 0x41, - 0xff, 0x59, 0x97, 0x06, 0x18, 0x37, 0xfd, 0x7e, 0x96, 0x87, 0xad, 0x16, 0xcb, 0xe7, 0x4d, 0x18, - 0xdd, 0xb2, 0xbc, 0x3d, 0x1a, 0x88, 0x80, 0xce, 0x2a, 0x17, 0x5e, 0x10, 0x05, 0x1d, 0x08, 0xf0, - 0xb7, 0x29, 0x08, 0x54, 0x5d, 0x58, 0x76, 0x28, 0x5d, 0x98, 0xa2, 0x9e, 0xcd, 0x3d, 0x31, 0xf5, - 0xec, 0xf7, 0x85, 0x11, 0xaa, 0x4b, 0xc1, 0x10, 0xa1, 0xf5, 0xce, 0xc7, 0x83, 0xb1, 0x27, 0x82, - 0x20, 0x46, 0xec, 0xc8, 0x0d, 0x35, 0xbc, 0xbb, 0xe2, 0x7c, 0x70, 0x4c, 0x20, 0x77, 0xe3, 0xf7, - 0x73, 0x7c, 0x8c, 0xc5, 0x40, 0x5d, 0xd4, 0x1c, 0x93, 0xf0, 0x3b, 0x89, 0xe5, 0xf5, 0xe7, 0x2e, - 0x4a, 0x17, 0x21, 0xcf, 0xd6, 0xa6, 0x18, 0x4d, 0xc4, 0x63, 0xeb, 0x57, 0xc5, 0x63, 0xe5, 0xec, - 0x5b, 0xc6, 0x33, 0x49, 0x4d, 0xa8, 0x81, 0xc7, 0x96, 0xfa, 0x2d, 0x23, 0x06, 0xb9, 0x04, 0xf9, - 0x0d, 0xd7, 0x96, 0x21, 0x1c, 0xe7, 0xd1, 0x3d, 0x55, 0x4b, 0x91, 0xbe, 0x90, 0x31, 0x11, 0x83, - 0xf5, 0x35, 0x0c, 0xfa, 0xac, 0xf6, 0xb5, 0xbd, 0x6b, 0x89, 0x00, 0xf1, 0x6a, 0x5f, 0xa3, 0xf8, - 0xd0, 0xab, 0x30, 0xad, 0x27, 0xc0, 0x13, 0xa6, 0x5f, 0xa8, 0x66, 0x8d, 0xe5, 0xd1, 0x53, 0xb5, - 0xe3, 0x3a, 0x11, 0x59, 0x81, 0x29, 0x2d, 0x74, 0x94, 0x78, 0xe1, 0x42, 0xf5, 0xa6, 0x1e, 0x78, - 0x4a, 0x55, 0x6f, 0x6a, 0x24, 0xec, 0x3c, 0x17, 0xed, 0x57, 0xde, 0xb9, 0x12, 0x6d, 0x17, 0x38, - 0xe4, 0x3a, 0x14, 0xb8, 0x1f, 0x68, 0xb5, 0xa2, 0xbe, 0x56, 0xf8, 0x08, 0x8b, 0xf9, 0x51, 0x4b, - 0x44, 0xc5, 0xef, 0xef, 0x53, 0x50, 0x14, 0x5b, 0x52, 0x94, 0xbc, 0xee, 0x39, 0xc8, 0x97, 0xab, - 0x15, 0x53, 0xdd, 0x46, 0x9a, 0x8e, 0xed, 0x99, 0x08, 0x35, 0xbe, 0x95, 0x81, 0xb3, 0x1b, 0x34, - 0x78, 0xe8, 0x7a, 0x07, 0x26, 0xf5, 0x03, 0xcf, 0xe1, 0xf9, 0x58, 0xf0, 0x43, 0xfc, 0x34, 0x79, - 0x1b, 0x46, 0xd0, 0x06, 0x29, 0x76, 0x32, 0xc4, 0xeb, 0x58, 0x99, 0x12, 0x0b, 0x78, 0x04, 0x0d, - 0x9a, 0x4c, 0x4e, 0x44, 0xde, 0x84, 0x7c, 0x85, 0x76, 0x0e, 0x63, 0x19, 0x29, 0x12, 0xc4, 0xe1, - 0x86, 0x60, 0xd3, 0xce, 0xa1, 0x89, 0x24, 0xc6, 0x4f, 0x65, 0xe1, 0x54, 0x4a, 0xb3, 0xee, 0x7f, - 0xfa, 0x29, 0xdd, 0x15, 0x57, 0xb4, 0x5d, 0x51, 0x3e, 0x52, 0xf6, 0x1d, 0xf8, 0xd4, 0x4d, 0xf2, - 0xaf, 0x67, 0xe0, 0x8c, 0xbe, 0x40, 0x85, 0xd1, 0xe1, 0xfd, 0xeb, 0xe4, 0x2d, 0x18, 0x5d, 0xa3, - 0x96, 0x4d, 0x65, 0x08, 0xfc, 0x53, 0x61, 0xc4, 0x16, 0xee, 0xe4, 0xc6, 0x0b, 0x39, 0xdb, 0xc8, - 0x25, 0x82, 0x43, 0x49, 0x45, 0x34, 0x8e, 0xcb, 0xe3, 0x86, 0x74, 0x38, 0x4d, 0xab, 0x6a, 0xc0, - 0x53, 0xff, 0x77, 0x32, 0xf0, 0xec, 0x00, 0x1a, 0x36, 0x71, 0x6c, 0xea, 0xd5, 0x89, 0xc3, 0x13, - 0x15, 0xa1, 0xe4, 0x5d, 0x98, 0xd9, 0x12, 0xf2, 0xbc, 0x9c, 0x8e, 0x6c, 0xf4, 0xbd, 0x48, 0x51, - 0xbf, 0x21, 0xe7, 0x25, 0x8e, 0xac, 0x79, 0x42, 0xe7, 0x06, 0x7a, 0x42, 0xab, 0x8e, 0xc5, 0xf9, - 0x61, 0x1d, 0x8b, 0xdf, 0x8f, 0xa7, 0x8d, 0x16, 0xf1, 0xdd, 0x22, 0xb7, 0xea, 0x4c, 0x7f, 0xb7, - 0xea, 0x81, 0x51, 0xa4, 0x30, 0x83, 0x85, 0xce, 0xfb, 0xe3, 0xce, 0xe7, 0x3b, 0xda, 0x7c, 0x3e, - 0x9b, 0x3e, 0x9f, 0xfd, 0x27, 0xf2, 0x7f, 0xce, 0xc4, 0x3b, 0x3b, 0xd4, 0x0c, 0x1a, 0x30, 0x5a, - 0x71, 0xdb, 0x96, 0xd3, 0x51, 0x73, 0x21, 0xda, 0x08, 0x31, 0x45, 0xc9, 0x70, 0x5e, 0xe8, 0xe7, - 0x61, 0x64, 0xc3, 0xed, 0x94, 0x2a, 0xc2, 0xbc, 0x0f, 0xf9, 0x74, 0xdc, 0x4e, 0xc3, 0xb2, 0x4d, - 0x5e, 0x40, 0xd6, 0x01, 0xea, 0x4d, 0x8f, 0xd2, 0x4e, 0xdd, 0xf9, 0x3a, 0x8d, 0x49, 0x1a, 0x6c, - 0x84, 0x5a, 0x3d, 0xdc, 0x58, 0xf0, 0x8d, 0xc7, 0x47, 0xc4, 0x86, 0xef, 0x7c, 0x5d, 0xdd, 0x6f, - 0x15, 0x7a, 0x83, 0x02, 0x44, 0x44, 0x98, 0x18, 0xca, 0xb1, 0x45, 0xb2, 0xcf, 0x29, 0x91, 0x18, - 0x8a, 0x01, 0xb4, 0xc4, 0x50, 0x0c, 0xc0, 0xb6, 0xf6, 0x35, 0xea, 0xec, 0xed, 0x73, 0x93, 0x91, - 0x29, 0xbe, 0x54, 0xf7, 0x11, 0xa2, 0x6e, 0xed, 0x1c, 0xc7, 0xf8, 0x91, 0x11, 0x38, 0x6b, 0xd2, - 0x3d, 0x87, 0x89, 0xc9, 0xf7, 0x7c, 0xa7, 0xb3, 0xa7, 0xf9, 0x09, 0x1b, 0xb1, 0x85, 0x24, 0x82, - 0xb5, 0x32, 0x48, 0x38, 0x30, 0x97, 0xa1, 0xc0, 0x4e, 0x45, 0x65, 0x2d, 0xe1, 0x1b, 0x0a, 0xe6, - 0x1d, 0xe6, 0x8b, 0x5c, 0x16, 0x93, 0x57, 0xc4, 0xa9, 0xad, 0x84, 0xd3, 0x66, 0xa7, 0xf6, 0x77, - 0x8f, 0x96, 0xa0, 0x7e, 0xe8, 0x07, 0x14, 0x6f, 0x6c, 0xe2, 0xe4, 0x0e, 0x45, 0xeb, 0x7c, 0x1f, - 0xd1, 0xfa, 0x2e, 0xcc, 0x97, 0x6c, 0xbe, 0x59, 0x5b, 0xad, 0x9a, 0xe7, 0x74, 0x9a, 0x4e, 0xd7, - 0x6a, 0xc9, 0xeb, 0x22, 0x8e, 0xb2, 0x15, 0x96, 0x37, 0xba, 0x21, 0x82, 0x99, 0x4a, 0xc6, 0xba, - 0x51, 0xd9, 0xa8, 0xf3, 0x9c, 0xfa, 0xfc, 0x79, 0x0c, 0xbb, 0x61, 0x77, 0x7c, 0x9e, 0x54, 0xdf, - 0x0c, 0x8b, 0x51, 0xa8, 0x47, 0x1b, 0x84, 0xad, 0xf5, 0x7a, 0xe4, 0x71, 0xc3, 0xa3, 0x7d, 0x72, - 0x3b, 0x85, 0xa0, 0xe5, 0xa3, 0xad, 0x82, 0x86, 0x17, 0xd1, 0xd5, 0xeb, 0x6b, 0x8c, 0xae, 0x90, - 0xa0, 0xf3, 0xfd, 0x7d, 0x95, 0x8e, 0xe3, 0x91, 0xab, 0x6c, 0x29, 0xb4, 0xdd, 0x80, 0xe2, 0x3a, - 0x1f, 0x8f, 0xae, 0x00, 0x1e, 0x42, 0xf9, 0x15, 0x40, 0x41, 0x21, 0x6f, 0xc3, 0xdc, 0x6a, 0x79, - 0x59, 0x2a, 0x35, 0x2b, 0x6e, 0xb3, 0x87, 0xaf, 0xca, 0x80, 0xf5, 0xe1, 0x1c, 0xd2, 0xe6, 0x32, - 0x5b, 0xdc, 0x69, 0x68, 0xe4, 0x22, 0x8c, 0x55, 0x2b, 0x7c, 0xec, 0x27, 0xd4, 0x90, 0xf6, 0xc2, - 0x5a, 0x43, 0x16, 0x92, 0xcd, 0x48, 0x46, 0x9d, 0x3c, 0x56, 0x98, 0x3c, 0x7b, 0xbc, 0x7c, 0x2a, - 0x22, 0xdf, 0xf3, 0x0c, 0x2b, 0x65, 0xd7, 0xa6, 0xfe, 0xfd, 0x6b, 0xdf, 0x63, 0x91, 0xef, 0x95, - 0xbe, 0xe1, 0xee, 0x75, 0x2d, 0x75, 0xab, 0xfb, 0xb7, 0x30, 0xf2, 0x7d, 0x02, 0x97, 0x7c, 0x16, - 0x46, 0xf0, 0xa7, 0x90, 0x7b, 0xe6, 0x52, 0xd8, 0x46, 0x32, 0x4f, 0x93, 0xe7, 0x32, 0x45, 0x02, - 0x52, 0x85, 0x31, 0x21, 0x72, 0x9f, 0x24, 0x7e, 0xb3, 0x90, 0xdd, 0xf9, 0x24, 0x09, 0x7a, 0xc3, - 0x86, 0x49, 0xb5, 0x42, 0xb6, 0x38, 0xd7, 0x2c, 0x7f, 0x9f, 0xda, 0xec, 0x97, 0x48, 0xbd, 0x80, - 0x8b, 0x73, 0x1f, 0xa1, 0x0d, 0xd6, 0x0e, 0x53, 0x41, 0x61, 0xbb, 0x6d, 0xd5, 0xbf, 0xe7, 0x8b, - 0xa6, 0x88, 0x4b, 0xb8, 0x83, 0x0a, 0x1d, 0xdb, 0x14, 0x45, 0xc6, 0xf7, 0xc1, 0xfc, 0x46, 0xaf, - 0xd5, 0x62, 0x17, 0x72, 0x19, 0x9a, 0x37, 0xb0, 0x02, 0x4a, 0x56, 0x60, 0xa4, 0xae, 0x64, 0x47, - 0x9b, 0x0b, 0x63, 0x1f, 0x47, 0x38, 0x68, 0xa3, 0x96, 0x41, 0x2f, 0xe3, 0x58, 0x5e, 0x34, 0x4e, - 0x6a, 0xfc, 0x56, 0x94, 0x55, 0x77, 0xcb, 0xb3, 0x9a, 0x07, 0x61, 0x86, 0xbc, 0x61, 0x13, 0x04, - 0xdf, 0x96, 0x8d, 0xd0, 0x8f, 0xb2, 0xb4, 0x06, 0x1f, 0xd7, 0x18, 0xf2, 0x36, 0x4c, 0x88, 0xe3, - 0x4c, 0x89, 0x8d, 0x83, 0x01, 0x08, 0x64, 0x42, 0xed, 0x98, 0xb9, 0x81, 0x8a, 0x8e, 0xa7, 0xb4, - 0xde, 0x95, 0xfb, 0xd7, 0x3e, 0x89, 0x53, 0x5a, 0xaf, 0x63, 0xc0, 0xd2, 0xfd, 0xc7, 0x13, 0xf1, - 0xb1, 0x15, 0x6b, 0xf7, 0x86, 0x1a, 0x0d, 0x23, 0x13, 0xdd, 0x99, 0xa2, 0x68, 0x18, 0xea, 0x9d, - 0x29, 0x44, 0x0d, 0xe7, 0x24, 0x7b, 0xcc, 0x9c, 0xbc, 0x2b, 0xe7, 0x24, 0xd7, 0x7f, 0x61, 0xcc, - 0x0d, 0x98, 0x87, 0x7a, 0xf4, 0x85, 0xe4, 0x87, 0xba, 0x70, 0x3f, 0x83, 0x61, 0x3f, 0x39, 0x49, - 0x7c, 0x43, 0x13, 0x9c, 0xd4, 0x5b, 0xfc, 0xc8, 0xf0, 0x4c, 0x8f, 0xb9, 0xc5, 0x7f, 0x0e, 0x26, - 0x4b, 0x41, 0x60, 0x35, 0xf7, 0xa9, 0x5d, 0x61, 0xdb, 0x93, 0xe2, 0xb8, 0x6f, 0x09, 0xb8, 0xfa, - 0x9c, 0xa2, 0xe2, 0xf2, 0x40, 0x54, 0x96, 0x2f, 0xac, 0xdd, 0xc2, 0x40, 0x54, 0x0c, 0xa2, 0x07, - 0xa2, 0x62, 0x10, 0x72, 0x15, 0xc6, 0xaa, 0x9d, 0x07, 0x0e, 0x1b, 0x93, 0x82, 0x92, 0x07, 0x9c, - 0x83, 0xd4, 0xcd, 0x55, 0x60, 0x91, 0x37, 0x15, 0x71, 0x77, 0x3c, 0xba, 0xda, 0x72, 0x65, 0x48, - 0xe8, 0xf3, 0xab, 0x8a, 0xb2, 0xa1, 0xfc, 0x7b, 0x03, 0xc6, 0xa4, 0x8e, 0x0b, 0xa2, 0xeb, 0xac, - 0xa0, 0x4c, 0x3a, 0x17, 0x4a, 0x64, 0x4c, 0xaa, 0xa6, 0xa4, 0x90, 0x98, 0x50, 0x92, 0xaa, 0x29, - 0x29, 0x24, 0xb4, 0xa4, 0x6a, 0x4a, 0x32, 0x89, 0x50, 0x3d, 0x30, 0x79, 0xac, 0x7a, 0xe0, 0x3e, - 0x4c, 0xd6, 0x2c, 0x2f, 0x70, 0x98, 0xb8, 0xd0, 0x09, 0xfc, 0x85, 0x29, 0x4d, 0xa3, 0xa6, 0x14, - 0xad, 0x3c, 0x2f, 0x93, 0x8b, 0x75, 0x15, 0x7c, 0x3d, 0x0b, 0x56, 0x04, 0x4f, 0xb7, 0x75, 0x9b, - 0xfe, 0x38, 0xb6, 0x6e, 0x38, 0xa8, 0xa8, 0x45, 0x99, 0x89, 0xee, 0xea, 0x28, 0xce, 0xc6, 0x54, - 0x29, 0x21, 0x22, 0xf9, 0x12, 0x4c, 0xb2, 0xbf, 0x31, 0xf5, 0xb6, 0x43, 0xfd, 0x85, 0x22, 0x76, - 0xee, 0xf9, 0xd4, 0xaf, 0x9f, 0xe7, 0xe7, 0xae, 0xd3, 0x80, 0x7f, 0xc0, 0xc8, 0x38, 0xae, 0x1e, - 0xd5, 0xb8, 0x91, 0xf7, 0x60, 0x52, 0xa6, 0x87, 0xc7, 0x49, 0x9a, 0x8d, 0xac, 0x15, 0x6d, 0x01, - 0x4f, 0xc4, 0x82, 0x53, 0x09, 0xd8, 0x31, 0x5f, 0xea, 0xf2, 0x0d, 0x92, 0x28, 0xab, 0xbd, 0x9b, - 0xd8, 0x1c, 0x25, 0x1a, 0xf9, 0x3c, 0x4c, 0x96, 0xba, 0xdd, 0x68, 0xc7, 0x99, 0x53, 0x54, 0x24, - 0xdd, 0x6e, 0x23, 0x75, 0xd7, 0xd1, 0x28, 0xe2, 0x1b, 0xf3, 0xfc, 0x89, 0x36, 0x66, 0xf2, 0x7a, - 0x28, 0x38, 0x9f, 0x8a, 0xf4, 0x7d, 0xe2, 0x4a, 0xa1, 0x49, 0xe1, 0x5c, 0x86, 0x2e, 0xc3, 0x14, - 0x57, 0x80, 0x49, 0x69, 0xe6, 0x74, 0xe2, 0xeb, 0x49, 0x11, 0x6a, 0x74, 0x1a, 0xb2, 0x0a, 0xd3, - 0xdc, 0x25, 0xab, 0x25, 0x82, 0xf4, 0x2d, 0x9c, 0x89, 0x12, 0xbc, 0x72, 0x4f, 0xae, 0x16, 0xc6, - 0x6e, 0xb6, 0x34, 0x2e, 0x31, 0x22, 0xe3, 0x0f, 0x32, 0x70, 0xa6, 0xcf, 0x8c, 0x87, 0x21, 0xdc, - 0x32, 0xc7, 0xe4, 0xb8, 0xbf, 0x1a, 0x49, 0x59, 0x8a, 0xbe, 0x53, 0x48, 0x59, 0xea, 0x7c, 0x49, - 0x79, 0xcb, 0x05, 0x22, 0x32, 0xdc, 0x2b, 0x99, 0xe0, 0x45, 0x1c, 0xd1, 0xd8, 0x21, 0xa4, 0x65, - 0xc2, 0x5f, 0x31, 0x1e, 0x1f, 0x2d, 0x3d, 0xef, 0x71, 0x50, 0x38, 0xad, 0x1f, 0xba, 0xda, 0x17, - 0x9c, 0xc2, 0xda, 0x38, 0xca, 0xc0, 0x84, 0xf2, 0x1d, 0x92, 0xf3, 0x8a, 0xaf, 0x58, 0x91, 0xc7, - 0x85, 0x57, 0x38, 0x64, 0xf9, 0x49, 0x84, 0x1f, 0x55, 0xf6, 0x78, 0xd5, 0xe4, 0x5d, 0x26, 0x0a, - 0x29, 0x61, 0xee, 0xda, 0x9a, 0x1e, 0xd1, 0xc4, 0x72, 0xcc, 0x89, 0x68, 0xf9, 0x41, 0xa9, 0x19, - 0x38, 0x0f, 0xe8, 0x10, 0x87, 0x4e, 0x94, 0x13, 0xd1, 0xf2, 0x83, 0x86, 0x85, 0x64, 0x89, 0x9c, - 0x88, 0x21, 0x43, 0xe3, 0x87, 0x32, 0x00, 0xf7, 0xaa, 0x65, 0x8c, 0x53, 0xf9, 0x71, 0x85, 0x82, - 0xf4, 0xd8, 0x5f, 0x92, 0xfb, 0x00, 0x71, 0xa0, 0x06, 0xd3, 0x3a, 0x16, 0x79, 0x17, 0x66, 0xea, - 0x4d, 0xcf, 0x6d, 0xb5, 0x76, 0xac, 0xe6, 0xc1, 0xba, 0xd3, 0xa1, 0x3c, 0xe8, 0xd2, 0x08, 0x3f, - 0x8a, 0xfc, 0xb0, 0xa8, 0xd1, 0x62, 0x65, 0x66, 0x1c, 0xd9, 0xf8, 0xe3, 0x0c, 0x4c, 0x54, 0x3b, - 0x7e, 0x60, 0xb5, 0x5a, 0x28, 0xec, 0x7c, 0x2f, 0xa5, 0x06, 0x09, 0xfb, 0x35, 0x60, 0x44, 0xdf, - 0x80, 0x99, 0x18, 0x1a, 0xbb, 0xa4, 0xd7, 0xd1, 0x9b, 0x56, 0xbd, 0xa4, 0x73, 0xff, 0x5a, 0x53, - 0x94, 0x18, 0xab, 0x0a, 0xd9, 0xfd, 0x6b, 0xf8, 0xd2, 0xb6, 0x0c, 0xe0, 0x48, 0x90, 0xbc, 0x52, - 0x90, 0x78, 0x4b, 0xee, 0x5f, 0x33, 0x15, 0x2c, 0x63, 0x03, 0x46, 0xeb, 0xae, 0x17, 0xac, 0x1c, - 0x72, 0x29, 0xbe, 0x42, 0xfd, 0xa6, 0xfa, 0x94, 0xe6, 0xa0, 0xfa, 0xba, 0x69, 0x8a, 0x22, 0x76, - 0x87, 0xbf, 0xe9, 0xd0, 0x96, 0xad, 0xda, 0x4c, 0xee, 0x32, 0x80, 0xc9, 0xe1, 0xec, 0xa6, 0x73, - 0x3a, 0x8a, 0xa3, 0x1c, 0x19, 0x67, 0x7e, 0xdc, 0x05, 0x5b, 0xd6, 0xc6, 0xf7, 0x05, 0x3d, 0xf3, - 0xa6, 0x56, 0xd3, 0x80, 0xa1, 0xfe, 0x0f, 0x32, 0xb0, 0xd8, 0x9f, 0x44, 0xb5, 0xf7, 0xcc, 0x0c, - 0xb0, 0xf7, 0x7c, 0x29, 0xfe, 0xf4, 0x83, 0x68, 0xe2, 0xe9, 0x27, 0x7a, 0xf0, 0xa9, 0xa0, 0xb9, - 0x6d, 0x33, 0xcc, 0x61, 0x7c, 0x7e, 0x40, 0x9b, 0x11, 0x91, 0x4f, 0x73, 0x80, 0x34, 0xa6, 0xa0, - 0x35, 0x7e, 0x2d, 0x0f, 0x67, 0xfb, 0x52, 0x90, 0x35, 0x25, 0x24, 0xfb, 0x74, 0x18, 0x0c, 0xba, - 0x2f, 0xfe, 0x15, 0xfc, 0x17, 0x2d, 0xaa, 0xe2, 0x5e, 0x20, 0x9b, 0x61, 0x28, 0xee, 0x2c, 0xf2, - 0x7a, 0xf5, 0x58, 0x5e, 0x1c, 0x1d, 0x99, 0x41, 0x32, 0x2a, 0x37, 0xfa, 0x0b, 0xd1, 0xc0, 0x72, - 0x5a, 0xbe, 0xfa, 0xd9, 0xd9, 0x1c, 0x64, 0xca, 0xb2, 0xc8, 0x08, 0x37, 0x9f, 0x6e, 0x84, 0x6b, - 0xfc, 0xdf, 0x19, 0x18, 0x0f, 0x9b, 0x4d, 0x16, 0xe1, 0xf4, 0x96, 0x59, 0x2a, 0xaf, 0x36, 0xb6, - 0xde, 0xaf, 0xad, 0x36, 0xee, 0x6d, 0xd4, 0x6b, 0xab, 0xe5, 0xea, 0xcd, 0xea, 0x6a, 0xa5, 0xf8, - 0x0c, 0x99, 0x85, 0xa9, 0x7b, 0x1b, 0x77, 0x36, 0x36, 0xb7, 0x37, 0x1a, 0xab, 0xa6, 0xb9, 0x69, - 0x16, 0x33, 0x64, 0x0a, 0xc6, 0xcd, 0x95, 0x52, 0xb9, 0xb1, 0xb1, 0x59, 0x59, 0x2d, 0x66, 0x49, - 0x11, 0x26, 0xcb, 0x9b, 0x1b, 0x1b, 0xab, 0xe5, 0xad, 0xea, 0xfd, 0xea, 0xd6, 0xfb, 0xc5, 0x1c, - 0x21, 0x30, 0x8d, 0x08, 0x35, 0xb3, 0xba, 0x51, 0xae, 0xd6, 0x4a, 0xeb, 0xc5, 0x3c, 0x83, 0x31, - 0x7c, 0x05, 0x36, 0x12, 0x32, 0xba, 0x73, 0x6f, 0x65, 0xb5, 0x38, 0xca, 0x50, 0xd8, 0x5f, 0x0a, - 0xca, 0x18, 0xab, 0x1e, 0x51, 0x2a, 0xa5, 0xad, 0xd2, 0x4a, 0xa9, 0xbe, 0x5a, 0x2c, 0x90, 0x33, - 0x30, 0xa7, 0x81, 0x1a, 0xeb, 0x9b, 0xb7, 0xaa, 0x1b, 0xc5, 0x71, 0x32, 0x0f, 0xc5, 0x10, 0x56, - 0x59, 0x69, 0xdc, 0xab, 0xaf, 0x9a, 0x45, 0x88, 0x43, 0x37, 0x4a, 0x77, 0x57, 0x8b, 0x13, 0xc6, - 0x3b, 0xdc, 0x3f, 0x87, 0x0f, 0x35, 0x39, 0x0d, 0xa4, 0xbe, 0x55, 0xda, 0xba, 0x57, 0x8f, 0x75, - 0x7e, 0x02, 0xc6, 0xea, 0xf7, 0xca, 0xe5, 0xd5, 0x7a, 0xbd, 0x98, 0x21, 0x00, 0xa3, 0x37, 0x4b, - 0xd5, 0xf5, 0xd5, 0x4a, 0x31, 0x6b, 0xfc, 0x64, 0x06, 0x66, 0xa5, 0xe8, 0x25, 0xf5, 0xf8, 0x1f, - 0xf3, 0x5b, 0x7c, 0x57, 0xbb, 0x51, 0x4a, 0xf7, 0x89, 0x58, 0x25, 0x03, 0x3e, 0x43, 0x0f, 0x4e, - 0xa5, 0x22, 0x93, 0xf7, 0xa1, 0x28, 0x1b, 0x70, 0xd7, 0x0a, 0x9a, 0xfb, 0xd1, 0x36, 0xf6, 0x7c, - 0xac, 0x92, 0x18, 0x1a, 0xd7, 0xec, 0x45, 0xb9, 0xc7, 0x12, 0x6c, 0x8c, 0x6f, 0x67, 0xe0, 0x4c, - 0x1f, 0x62, 0x52, 0x86, 0xd1, 0x30, 0x42, 0xf5, 0x00, 0x4b, 0xa1, 0xf9, 0xef, 0x1c, 0x2d, 0x09, - 0x44, 0x4c, 0xc1, 0x84, 0x7f, 0x99, 0xa3, 0x61, 0xc8, 0x69, 0x8c, 0xfb, 0xcc, 0xc7, 0xe4, 0x6c, - 0x6c, 0x38, 0x45, 0x4d, 0xa5, 0xed, 0xfa, 0xca, 0x84, 0x18, 0x90, 0x9c, 0xf5, 0xd0, 0xc7, 0xc0, - 0xcf, 0xc6, 0xb7, 0x32, 0x4c, 0x54, 0x8a, 0x23, 0x32, 0x09, 0xb2, 0xe4, 0xfb, 0xbd, 0x36, 0x35, - 0xdd, 0x16, 0x2d, 0x99, 0x1b, 0xe2, 0x2c, 0x40, 0xd9, 0xcf, 0xc2, 0x02, 0x14, 0xd2, 0x1b, 0x96, - 0xd7, 0xd1, 0x5e, 0x05, 0x55, 0x1a, 0xf2, 0x26, 0x40, 0x98, 0xb5, 0x5a, 0xfa, 0xc5, 0xf3, 0x60, - 0x0e, 0x02, 0xaa, 0x4b, 0xaf, 0x0a, 0xb2, 0xf1, 0x97, 0x32, 0x30, 0x29, 0xae, 0x20, 0xa5, 0x16, - 0xf5, 0x82, 0x8f, 0xb7, 0x66, 0xde, 0xd4, 0xd6, 0x4c, 0x68, 0x18, 0xaf, 0xf0, 0x67, 0xc5, 0xa9, - 0xcb, 0xe5, 0x3f, 0xcb, 0x40, 0x31, 0x8e, 0x48, 0xde, 0x85, 0x42, 0x9d, 0x3e, 0xa0, 0x9e, 0x13, - 0x1c, 0xc6, 0xf2, 0xea, 0x73, 0x1c, 0x51, 0xc6, 0x35, 0x9d, 0xbe, 0xf8, 0x65, 0x86, 0x34, 0xc3, - 0x6e, 0xe2, 0x8a, 0x12, 0x21, 0xf7, 0xa4, 0x94, 0x08, 0xc6, 0x7f, 0x9f, 0x85, 0x33, 0xb7, 0x68, - 0xa0, 0xf6, 0x29, 0x7c, 0xc6, 0xfd, 0xd4, 0x70, 0xfd, 0x52, 0x7a, 0xb2, 0x00, 0x63, 0x58, 0x24, - 0xe7, 0xd7, 0x94, 0x3f, 0xc9, 0x4a, 0xb8, 0xae, 0x73, 0x5a, 0xb2, 0x80, 0x3e, 0x75, 0x5f, 0x51, - 0xc2, 0x87, 0x87, 0xcb, 0xfa, 0x22, 0x4c, 0x63, 0x7c, 0xcc, 0x1e, 0xfb, 0x1c, 0xa8, 0x2d, 0x94, - 0x29, 0x05, 0x33, 0x06, 0x25, 0xaf, 0x40, 0x91, 0x41, 0x4a, 0xcd, 0x83, 0x8e, 0xfb, 0xb0, 0x45, - 0xed, 0x3d, 0xca, 0x73, 0x17, 0x17, 0xcc, 0x04, 0x5c, 0xf2, 0xbc, 0xd7, 0xe1, 0x17, 0x21, 0x6a, - 0xa3, 0xc6, 0x43, 0xf0, 0x8c, 0xa0, 0x8b, 0x6f, 0xc2, 0xc4, 0x47, 0x4c, 0x05, 0x60, 0xfc, 0x77, - 0x19, 0x98, 0xc7, 0xce, 0x29, 0x15, 0xa3, 0x2a, 0xfc, 0x53, 0xd1, 0x68, 0x29, 0xd1, 0xb1, 0x2d, - 0x06, 0xd2, 0x3f, 0x85, 0x70, 0x14, 0x23, 0x0d, 0x4b, 0x76, 0x08, 0x0d, 0x4b, 0xfd, 0x24, 0xa9, - 0x0e, 0x87, 0x54, 0x10, 0xf1, 0x04, 0xd5, 0xd1, 0x94, 0x1b, 0x7f, 0x21, 0x0b, 0x63, 0x26, 0xc5, - 0x1c, 0x70, 0xe4, 0x22, 0x8c, 0x6d, 0xb8, 0x01, 0xf5, 0xef, 0x6a, 0x09, 0xff, 0x3a, 0x0c, 0xd4, - 0x68, 0xdb, 0xa6, 0x2c, 0x64, 0x0b, 0xbe, 0xe6, 0xb9, 0x76, 0xaf, 0x19, 0xa8, 0x0b, 0xbe, 0xcb, - 0x41, 0xa6, 0x2c, 0x23, 0xaf, 0xc1, 0xb8, 0xe0, 0x1c, 0x3e, 0x9e, 0xa1, 0xd1, 0xa7, 0x47, 0xc3, - 0x1c, 0x82, 0x11, 0x02, 0x0a, 0xaa, 0x5c, 0x6a, 0xc8, 0x2b, 0x82, 0x6a, 0x42, 0x10, 0x90, 0xf2, - 0xf7, 0xc8, 0x00, 0xf9, 0xfb, 0x53, 0x30, 0x5a, 0xf2, 0x7d, 0x1a, 0x48, 0x97, 0xe1, 0xc9, 0x30, - 0x52, 0x8a, 0x4f, 0x03, 0xce, 0xd8, 0xc2, 0x72, 0x53, 0xe0, 0x19, 0x7f, 0x94, 0x85, 0x11, 0xfc, - 0x13, 0x1f, 0x0c, 0xbd, 0xe6, 0xbe, 0xf6, 0x60, 0xe8, 0x35, 0xf7, 0x4d, 0x84, 0x92, 0x6b, 0x78, - 0xef, 0x97, 0x81, 0xdc, 0x45, 0xef, 0x51, 0xa1, 0x6d, 0x47, 0x60, 0x53, 0xc5, 0x09, 0x5f, 0x52, - 0x73, 0xa9, 0x81, 0x02, 0x4e, 0x43, 0x76, 0xb3, 0x2e, 0x7a, 0x8c, 0x51, 0x48, 0x5c, 0xdf, 0xcc, - 0x6e, 0xd6, 0x71, 0x34, 0xd6, 0x4a, 0xcb, 0x6f, 0xdc, 0x50, 0x73, 0x53, 0xfa, 0xfb, 0xd6, 0xf2, - 0x1b, 0x37, 0x4c, 0x51, 0xc2, 0xc6, 0x17, 0xdb, 0x8c, 0x2f, 0x8a, 0xdc, 0xc5, 0x15, 0xc7, 0x17, - 0xfb, 0x86, 0xaf, 0x87, 0x66, 0x84, 0x40, 0x96, 0x61, 0x42, 0x38, 0x56, 0x23, 0xbe, 0xe2, 0xf8, - 0x2c, 0x1c, 0xaf, 0x39, 0x85, 0x8a, 0xc4, 0xdf, 0x96, 0xc4, 0x04, 0xc9, 0x74, 0x53, 0xe2, 0x6d, - 0x49, 0x4e, 0xa1, 0x6f, 0x2a, 0x28, 0x91, 0x87, 0x6e, 0xe4, 0xba, 0xaa, 0x7a, 0xe8, 0x62, 0xbc, - 0xd3, 0x10, 0xc1, 0xf8, 0x85, 0x2c, 0x14, 0x6a, 0xad, 0xde, 0x9e, 0xd3, 0xb9, 0x7f, 0xed, 0x4f, - 0x35, 0x3f, 0xfa, 0xeb, 0x80, 0x87, 0x84, 0xb8, 0x11, 0x48, 0xf5, 0x30, 0x6f, 0x9a, 0x10, 0x3e, - 0x38, 0x09, 0xa2, 0x91, 0xeb, 0x20, 0x16, 0xa6, 0x48, 0x97, 0x77, 0x4a, 0x27, 0xe0, 0x89, 0x62, - 0x24, 0x89, 0x40, 0x25, 0x6f, 0xc3, 0x44, 0x94, 0xa8, 0x3a, 0xca, 0x82, 0xa7, 0x52, 0x96, 0xa3, - 0xf2, 0xfb, 0xd7, 0x4c, 0x15, 0xdd, 0x78, 0x3c, 0x02, 0x93, 0x6a, 0x7b, 0x88, 0x09, 0x73, 0x7e, - 0x8b, 0x5d, 0x85, 0x85, 0x51, 0x4f, 0x17, 0x0b, 0xc5, 0x71, 0x7a, 0x5e, 0x6f, 0x10, 0xc3, 0xe3, - 0x16, 0x3e, 0xd2, 0x23, 0x7c, 0xed, 0x19, 0x73, 0xd6, 0x8f, 0xc0, 0x1c, 0x8f, 0x94, 0xa0, 0xe0, - 0x76, 0xfd, 0x3d, 0xda, 0x71, 0xe4, 0xeb, 0xc5, 0x05, 0x8d, 0xd1, 0xa6, 0x28, 0x4c, 0xf0, 0x0a, - 0xc9, 0xc8, 0x1b, 0x30, 0xea, 0x76, 0x69, 0xc7, 0x72, 0xc4, 0x19, 0xf7, 0x6c, 0x8c, 0x01, 0xed, - 0x94, 0xaa, 0x0a, 0xa1, 0x40, 0x26, 0x57, 0x21, 0xef, 0x1e, 0x84, 0xf3, 0x75, 0x56, 0x27, 0x3a, - 0x08, 0x2c, 0x85, 0x04, 0x11, 0x19, 0xc1, 0x87, 0x56, 0x7b, 0x57, 0xcc, 0x98, 0x4e, 0x70, 0xdb, - 0x6a, 0xef, 0xaa, 0x04, 0x0c, 0x91, 0xbc, 0x07, 0xd0, 0xb5, 0xf6, 0xa8, 0xd7, 0xb0, 0x7b, 0xc1, - 0xa1, 0x98, 0xb7, 0xe7, 0x35, 0xb2, 0x1a, 0x2b, 0xae, 0xf4, 0x82, 0x43, 0x85, 0x76, 0xbc, 0x2b, - 0x81, 0xa4, 0x04, 0xd0, 0xb6, 0x82, 0x80, 0x7a, 0x6d, 0x57, 0x58, 0x55, 0x4d, 0x2c, 0x2f, 0x69, - 0x0c, 0xee, 0x86, 0xc5, 0x0a, 0x07, 0x85, 0x08, 0x1b, 0xed, 0x78, 0x96, 0x48, 0x5a, 0x18, 0x6b, - 0xb4, 0xe3, 0x69, 0xbd, 0x64, 0x88, 0xe4, 0xb3, 0x30, 0x66, 0x3b, 0x7e, 0xd3, 0xf5, 0x6c, 0x11, - 0x2a, 0xe0, 0x39, 0x8d, 0xa6, 0xc2, 0xcb, 0x14, 0x32, 0x89, 0xce, 0x5a, 0x2b, 0xe2, 0x7e, 0x6d, - 0xb8, 0x0f, 0x45, 0x42, 0x7c, 0xbd, 0xb5, 0xf5, 0xb0, 0x58, 0x6d, 0x6d, 0x44, 0xc4, 0xa6, 0x72, - 0xcf, 0x09, 0x5a, 0xd6, 0x8e, 0x78, 0xc0, 0xd5, 0xa7, 0xf2, 0x16, 0x16, 0xa9, 0x53, 0xc9, 0x91, - 0x59, 0x27, 0xfd, 0xa6, 0xd3, 0x16, 0x9e, 0x60, 0x7a, 0x27, 0xeb, 0xe5, 0xea, 0x5d, 0xb5, 0x93, - 0x0c, 0xf1, 0x73, 0xf9, 0xff, 0xf1, 0xe7, 0x96, 0x32, 0x2b, 0x00, 0x05, 0x19, 0xd0, 0xc0, 0x58, - 0x87, 0xb3, 0x7d, 0x57, 0x2e, 0xb9, 0x0c, 0xc5, 0x5d, 0x4b, 0xa8, 0x81, 0x9a, 0xfb, 0x56, 0xa7, - 0x43, 0x5b, 0x62, 0xcf, 0x98, 0x91, 0xf0, 0x32, 0x07, 0x73, 0xce, 0xc6, 0x7b, 0x30, 0x9f, 0xd6, - 0x64, 0xf2, 0x02, 0x4c, 0xaa, 0xb1, 0x1b, 0x04, 0x93, 0x09, 0xab, 0xeb, 0xc8, 0xe8, 0x0d, 0x82, - 0xc1, 0xaf, 0x66, 0xe0, 0xb9, 0x41, 0x1f, 0x00, 0x59, 0x84, 0x42, 0xd7, 0x73, 0x5c, 0x14, 0xb4, - 0xf8, 0x36, 0x15, 0xfe, 0x26, 0xe7, 0x00, 0xb8, 0x44, 0x10, 0x58, 0x7b, 0xc2, 0x14, 0xdc, 0x1c, - 0x47, 0xc8, 0x96, 0xb5, 0xe7, 0x93, 0x57, 0x61, 0xd6, 0xa6, 0xbb, 0x56, 0xaf, 0x15, 0x34, 0xfc, - 0xe6, 0x3e, 0xb5, 0xd1, 0xfb, 0x02, 0x4d, 0x7c, 0xcc, 0xa2, 0x28, 0xa8, 0x4b, 0x78, 0xa2, 0xc5, - 0x23, 0x7d, 0x5a, 0x7c, 0x3b, 0x5f, 0xc8, 0x14, 0xb3, 0x26, 0x5a, 0xba, 0x18, 0xdf, 0xc8, 0xc2, - 0x42, 0xbf, 0x19, 0x27, 0xef, 0xa4, 0x8d, 0x01, 0x57, 0x64, 0xab, 0x70, 0x55, 0x91, 0xad, 0xd4, - 0x46, 0x96, 0x21, 0xf4, 0x9d, 0x38, 0xce, 0x0f, 0x5a, 0xc2, 0x18, 0x4d, 0xd7, 0xf2, 0xfd, 0x87, - 0x6c, 0x51, 0xe7, 0x94, 0x28, 0x68, 0x02, 0xa6, 0xd2, 0x48, 0x18, 0xf9, 0x0c, 0x40, 0xb3, 0xe5, - 0xfa, 0x14, 0xdf, 0x8b, 0xc5, 0x69, 0xc9, 0x0d, 0x48, 0x43, 0xa8, 0xfa, 0x40, 0x88, 0xd0, 0xb2, - 0x6b, 0x53, 0x31, 0x81, 0x16, 0x9c, 0xe9, 0xf3, 0x89, 0xb3, 0xe9, 0x89, 0x12, 0x1d, 0xca, 0xb0, - 0xe9, 0xbd, 0x30, 0xdd, 0x61, 0x7c, 0xc4, 0xb3, 0xfd, 0xd6, 0xc8, 0x21, 0x90, 0xe4, 0x77, 0xcc, - 0xb8, 0x0b, 0x33, 0xc8, 0x9e, 0x17, 0x72, 0xe7, 0x90, 0x7b, 0x5e, 0x8b, 0x2c, 0xc1, 0x84, 0x4c, - 0x8b, 0xc2, 0xa4, 0x51, 0xce, 0x1c, 0x04, 0xe8, 0x0e, 0xc5, 0xc5, 0x83, 0xc1, 0xfa, 0xd0, 0x43, - 0x46, 0x9c, 0x73, 0xe3, 0x08, 0x61, 0x17, 0x78, 0x51, 0xf5, 0x73, 0x72, 0x7d, 0xeb, 0xbb, 0xab, - 0x28, 0xfd, 0xe9, 0x8c, 0x9c, 0xfe, 0xe4, 0xf6, 0x74, 0x5c, 0xfb, 0x08, 0xa0, 0x3f, 0x83, 0x68, - 0x18, 0xfe, 0xcd, 0xce, 0x5d, 0xf9, 0xd5, 0x89, 0x73, 0x57, 0xfc, 0x24, 0x17, 0x61, 0xc6, 0xe3, - 0x16, 0x6f, 0x81, 0x2b, 0xc6, 0x13, 0x67, 0xca, 0x9c, 0xe2, 0xe0, 0x2d, 0x17, 0xc7, 0x54, 0xb4, - 0xeb, 0x76, 0x38, 0x60, 0xca, 0x6e, 0x4d, 0xae, 0xc0, 0x38, 0xdb, 0xad, 0x31, 0x34, 0x42, 0xcc, - 0x90, 0x1a, 0xf1, 0xf0, 0xec, 0x33, 0x0b, 0x1f, 0x8a, 0xbf, 0x05, 0xaf, 0x7f, 0x92, 0x91, 0xcc, - 0xd4, 0xb3, 0x82, 0x9c, 0x81, 0x31, 0xd7, 0xdb, 0x53, 0xba, 0x36, 0xea, 0x7a, 0x7b, 0xac, 0x5f, - 0x97, 0xa0, 0xc8, 0xed, 0xfa, 0xb9, 0xc3, 0xb4, 0x7f, 0xd8, 0xe1, 0x97, 0xc9, 0x82, 0x39, 0xcd, - 0xe1, 0x98, 0xfb, 0xf1, 0xb0, 0xd3, 0x64, 0x98, 0xbe, 0xef, 0x36, 0xd4, 0x78, 0x28, 0xa2, 0xdb, - 0xd3, 0xbe, 0xef, 0x46, 0x81, 0x51, 0x6c, 0xb2, 0x02, 0x53, 0x8c, 0x4f, 0x18, 0x95, 0x45, 0x1c, - 0x65, 0xe7, 0x92, 0x47, 0xd9, 0x61, 0xa7, 0x29, 0x9b, 0x68, 0x4e, 0xfa, 0xca, 0x2f, 0xd1, 0x9b, - 0x9f, 0xc9, 0xc2, 0xe9, 0x74, 0x74, 0x9c, 0x2f, 0x56, 0x09, 0xba, 0xb7, 0x70, 0xc5, 0xa2, 0x39, - 0xce, 0x20, 0xdc, 0x83, 0x3f, 0xad, 0xb5, 0xd9, 0xd4, 0xd6, 0xbe, 0x02, 0xb3, 0xc8, 0x48, 0x08, - 0x0f, 0x2d, 0xc7, 0x0f, 0x84, 0x63, 0xba, 0x39, 0xc3, 0x0a, 0xf8, 0x06, 0xb7, 0xce, 0xc0, 0xe4, - 0x25, 0x98, 0x96, 0x5b, 0x94, 0xfb, 0xb0, 0xc3, 0x2a, 0xe6, 0xfb, 0xd3, 0x94, 0x80, 0x6e, 0x22, - 0x90, 0x9c, 0x82, 0x51, 0xab, 0xdb, 0x65, 0x55, 0xf2, 0x6d, 0x69, 0xc4, 0xea, 0x76, 0xab, 0x36, - 0xb9, 0x00, 0x53, 0xe8, 0xcc, 0xd3, 0xd8, 0x45, 0x33, 0x0a, 0x61, 0x3e, 0x65, 0x4e, 0x22, 0x90, - 0x9b, 0x56, 0xf8, 0xec, 0x43, 0x60, 0xb4, 0x12, 0x65, 0x0c, 0x51, 0xc0, 0xea, 0x4a, 0x04, 0x31, - 0x32, 0x9f, 0x85, 0x19, 0x71, 0xe4, 0x89, 0x1d, 0x1e, 0x29, 0xc5, 0xfa, 0x63, 0xb2, 0xa8, 0x88, - 0x17, 0x0d, 0x02, 0x54, 0xb5, 0x25, 0xe5, 0xef, 0x66, 0xe0, 0x54, 0xea, 0x99, 0x49, 0xbe, 0x0a, - 0xdc, 0xb7, 0x21, 0x70, 0x1b, 0x1e, 0x6d, 0x3a, 0x5d, 0x07, 0xbd, 0xbf, 0xb9, 0xa6, 0x68, 0x79, - 0xd0, 0x69, 0x8b, 0x7e, 0x12, 0x5b, 0xae, 0x19, 0x12, 0xf1, 0xcb, 0x6e, 0xd1, 0x8b, 0x81, 0x17, - 0x3f, 0x80, 0x53, 0xa9, 0xa8, 0x29, 0x97, 0xd0, 0xd7, 0xf4, 0xb4, 0x5a, 0x52, 0xf5, 0x1f, 0xeb, - 0xb4, 0x72, 0x39, 0x15, 0xdd, 0x6b, 0xcb, 0xf5, 0xaf, 0x1e, 0xb0, 0xe4, 0x0a, 0xcc, 0xc5, 0xfc, - 0x94, 0x23, 0xc7, 0x37, 0x73, 0x96, 0x15, 0xe9, 0x51, 0x2d, 0x5e, 0x80, 0x49, 0x39, 0xd1, 0x5e, - 0x68, 0x3e, 0x6f, 0x4e, 0x08, 0x18, 0xeb, 0x83, 0xa8, 0xee, 0x6f, 0x67, 0xe5, 0x81, 0xb8, 0xe2, - 0xba, 0x81, 0x1f, 0x78, 0x56, 0x57, 0x13, 0x5d, 0x49, 0x1b, 0xce, 0xba, 0x56, 0x2f, 0xd8, 0x5f, - 0x6e, 0xb0, 0x7f, 0x5d, 0x4f, 0xfa, 0xb2, 0x35, 0xa5, 0x15, 0xd0, 0xc4, 0xf2, 0x55, 0xfd, 0xc3, - 0x28, 0x31, 0xec, 0x92, 0x8a, 0xcc, 0xf6, 0x6f, 0x85, 0xeb, 0xda, 0x33, 0xe6, 0x19, 0xce, 0x33, - 0x81, 0x45, 0xd6, 0x40, 0xcb, 0x73, 0x9d, 0x2a, 0xbb, 0x2a, 0x39, 0xa9, 0x75, 0xae, 0x13, 0x3b, - 0x4a, 0x52, 0xec, 0x77, 0x61, 0xdc, 0xb1, 0x45, 0xec, 0x2c, 0x21, 0xc1, 0xea, 0x52, 0x53, 0xd5, - 0xe6, 0xa1, 0xb4, 0x22, 0x1e, 0x4c, 0xfc, 0x75, 0x04, 0x74, 0x65, 0x4a, 0x13, 0xf2, 0x8d, 0x15, - 0xb9, 0xf7, 0x26, 0xc9, 0xc8, 0x34, 0x64, 0x1d, 0x79, 0xdb, 0xc9, 0x3a, 0x36, 0x39, 0x0d, 0xa3, - 0xbe, 0x12, 0xcc, 0xcb, 0x14, 0xbf, 0x8c, 0x3f, 0x07, 0x97, 0x86, 0x1d, 0x23, 0xf2, 0x3a, 0x90, - 0x3e, 0x03, 0x3e, 0x6e, 0xce, 0x5a, 0x89, 0x71, 0x7b, 0x01, 0xd4, 0x68, 0x44, 0x8e, 0x9c, 0x70, - 0x09, 0xbb, 0xe7, 0x39, 0xc6, 0x3b, 0x30, 0xad, 0xdf, 0x6a, 0xc8, 0xab, 0x90, 0x0f, 0xb9, 0x4e, - 0x87, 0xda, 0x37, 0x15, 0x89, 0xf1, 0x36, 0x11, 0xc9, 0xf8, 0x17, 0x59, 0x98, 0x4b, 0xb9, 0xdb, - 0x90, 0x0f, 0x60, 0x4e, 0x2e, 0x10, 0xbe, 0x03, 0xf1, 0x89, 0xe3, 0x4b, 0xe3, 0x72, 0xda, 0xd2, - 0x40, 0xb4, 0x94, 0xe9, 0x9b, 0x15, 0x8b, 0x22, 0x2a, 0xff, 0xb3, 0xb3, 0x1c, 0xc8, 0xfb, 0x70, - 0x5a, 0x24, 0xc9, 0x54, 0x56, 0x45, 0xc3, 0xa3, 0xbb, 0xe2, 0x74, 0x78, 0x21, 0x31, 0x7a, 0x4e, - 0x53, 0x69, 0x8e, 0x49, 0x77, 0xd7, 0x9e, 0x31, 0xe7, 0xfd, 0x14, 0x78, 0x7c, 0xa5, 0xfd, 0xdd, - 0x0c, 0x18, 0xc7, 0x8f, 0x17, 0xca, 0x33, 0xf1, 0x01, 0x67, 0xf2, 0x8c, 0x32, 0x7a, 0x17, 0x60, - 0xca, 0xa3, 0xbb, 0x1e, 0xf5, 0xf7, 0x95, 0xe1, 0x1b, 0x37, 0x27, 0x05, 0x50, 0x0e, 0x8c, 0x74, - 0xc7, 0x1d, 0x42, 0x97, 0x59, 0x60, 0xf7, 0x60, 0xae, 0x85, 0x12, 0x44, 0xc6, 0xcd, 0x70, 0x03, - 0x49, 0x9d, 0x07, 0x32, 0x0f, 0x23, 0x6a, 0x03, 0xf9, 0x8f, 0xdb, 0xf9, 0x42, 0xb6, 0x98, 0x33, - 0x85, 0xd3, 0xf0, 0xae, 0xd3, 0xa2, 0xc6, 0xdf, 0xcb, 0xc0, 0x62, 0xff, 0xc1, 0x23, 0x1f, 0x28, - 0xda, 0xf8, 0x1c, 0x8f, 0x99, 0x74, 0xcc, 0x78, 0xab, 0x8a, 0x4b, 0xe1, 0xc7, 0x1a, 0xcf, 0x0f, - 0x29, 0x58, 0x7e, 0x1c, 0x95, 0xe2, 0x9b, 0xf2, 0x32, 0xcf, 0x4e, 0xd8, 0xfb, 0xd7, 0xc8, 0x65, - 0x18, 0xe3, 0xf7, 0x77, 0xd9, 0xd0, 0x19, 0xad, 0xa1, 0xf7, 0xaf, 0x99, 0xb2, 0xdc, 0xf8, 0x76, - 0x26, 0xbc, 0x1c, 0xc5, 0x9b, 0x7f, 0xff, 0x1a, 0xf9, 0xcc, 0x70, 0x7a, 0xf5, 0x82, 0xd4, 0xab, - 0x87, 0x3a, 0xf5, 0xcf, 0x6a, 0x3a, 0xf5, 0x17, 0x07, 0x8f, 0x93, 0x10, 0xc3, 0xe2, 0x19, 0xbc, - 0xfe, 0x55, 0x06, 0xce, 0x0d, 0xa4, 0x20, 0xcf, 0x41, 0xa1, 0x54, 0xab, 0x6e, 0x45, 0x33, 0xcb, - 0xbe, 0x16, 0x09, 0x21, 0xb7, 0x60, 0x7c, 0xc5, 0xf2, 0x9d, 0x26, 0x5b, 0xc0, 0xa2, 0x21, 0x2f, - 0x0f, 0x6e, 0x48, 0x88, 0xce, 0xae, 0xea, 0xe1, 0x0f, 0xd2, 0x80, 0x59, 0xfc, 0x0a, 0x12, 0x19, - 0x72, 0xe2, 0xc7, 0x4e, 0x82, 0x61, 0x82, 0x8c, 0xed, 0x30, 0x09, 0x60, 0xfc, 0xe3, 0x7b, 0x00, - 0xe7, 0x8f, 0x6b, 0xe0, 0x09, 0x5c, 0xcf, 0x2f, 0x41, 0xa1, 0x26, 0x2f, 0x48, 0x4a, 0x82, 0x3c, - 0x79, 0x19, 0x32, 0xc3, 0x52, 0xe3, 0x2f, 0x67, 0xe4, 0xd9, 0x70, 0x7c, 0x47, 0x94, 0xe8, 0x92, - 0xf6, 0xe0, 0xe8, 0x92, 0xf6, 0x47, 0x8c, 0x2e, 0x69, 0xfc, 0x82, 0x08, 0x0c, 0x53, 0xb5, 0x6b, - 0xb1, 0xd0, 0xe2, 0x1f, 0xf7, 0x95, 0x70, 0x55, 0x5b, 0x9d, 0x17, 0x94, 0x30, 0xb5, 0xc9, 0xba, - 0xfa, 0x3f, 0x16, 0x2a, 0x4b, 0xf5, 0x5f, 0x64, 0xe1, 0xb9, 0x41, 0xe4, 0xa9, 0x51, 0xd0, 0x33, - 0x27, 0x8b, 0x82, 0x7e, 0x19, 0x0a, 0x1c, 0xa6, 0x67, 0x73, 0x12, 0xa4, 0x6c, 0xc0, 0x65, 0x31, - 0xb9, 0x00, 0xa3, 0xa5, 0x72, 0x3d, 0x0a, 0xc9, 0x89, 0x6a, 0x6d, 0xab, 0xe9, 0xa3, 0xc2, 0x54, - 0x14, 0x91, 0xaf, 0x24, 0xa3, 0xd0, 0x8a, 0x58, 0x9c, 0xcf, 0xa6, 0xe5, 0x64, 0x97, 0x2e, 0xbc, - 0xd8, 0xde, 0x28, 0xc6, 0x90, 0x08, 0xdb, 0x61, 0x26, 0x23, 0xda, 0x1a, 0x30, 0x5a, 0xf3, 0xa8, - 0x4f, 0x03, 0x55, 0xe5, 0xdc, 0x45, 0x88, 0x29, 0x4a, 0x84, 0x42, 0xd8, 0x3a, 0xe4, 0xd6, 0xb4, - 0xa3, 0xaa, 0xb3, 0x01, 0x6a, 0x90, 0x19, 0xd8, 0x54, 0x50, 0x8c, 0x6f, 0x66, 0x60, 0x3e, 0xad, - 0x59, 0xe4, 0x39, 0xc8, 0x77, 0x52, 0xe3, 0xe7, 0x76, 0xb8, 0x4d, 0x9f, 0x9a, 0x90, 0x5e, 0xd5, - 0xb3, 0x6b, 0x79, 0xea, 0x3b, 0x51, 0x9e, 0xfa, 0x25, 0xb9, 0xd9, 0xe6, 0x12, 0x11, 0x77, 0xf1, - 0x3f, 0xa3, 0x04, 0x50, 0xb5, 0x6b, 0x9b, 0x5d, 0x1e, 0x02, 0xe8, 0x3a, 0xe4, 0x59, 0xb3, 0x62, - 0x8b, 0x91, 0x2d, 0x87, 0xd2, 0xdd, 0x75, 0x81, 0xc4, 0x5b, 0xc5, 0xe4, 0x64, 0x13, 0x91, 0x8d, - 0x6d, 0x98, 0xd6, 0x31, 0xc8, 0xaa, 0xee, 0x34, 0x1e, 0x25, 0xf9, 0x5d, 0x71, 0x5d, 0xfe, 0xd6, - 0xbb, 0x72, 0xf6, 0x3b, 0x47, 0x4b, 0xc0, 0x7e, 0x72, 0x9a, 0x34, 0xa7, 0x72, 0xe3, 0x27, 0xb2, - 0x30, 0x1f, 0x19, 0x6b, 0xca, 0x4f, 0xe2, 0xa9, 0x35, 0x60, 0x2a, 0x69, 0x06, 0x36, 0x4b, 0x89, - 0x3c, 0x9a, 0xb2, 0x83, 0x03, 0xde, 0xf5, 0x6f, 0xc1, 0x42, 0x3f, 0x7c, 0xf2, 0x6a, 0x22, 0xd3, - 0x9d, 0x70, 0x2a, 0x0a, 0x53, 0xe2, 0x29, 0x89, 0xef, 0xfe, 0x69, 0x06, 0x16, 0xc5, 0x0b, 0xe5, - 0x5d, 0xcb, 0xe9, 0x60, 0x76, 0xdf, 0x26, 0x7d, 0x32, 0x96, 0x6f, 0xb7, 0xb4, 0x6d, 0xe9, 0x25, - 0xfd, 0x21, 0x3a, 0x51, 0x5b, 0xff, 0xde, 0x92, 0xcb, 0xe8, 0x3e, 0xd6, 0xe4, 0x8b, 0x37, 0xcf, - 0x2d, 0x8d, 0x3b, 0x0c, 0xa0, 0x5a, 0x1a, 0x23, 0x86, 0xf1, 0x03, 0xf0, 0xfc, 0xe0, 0x0a, 0xc8, - 0x97, 0x61, 0xaa, 0xb4, 0x47, 0x3b, 0xc1, 0xbd, 0xee, 0x9e, 0x67, 0xd9, 0x54, 0x5a, 0x22, 0x48, - 0x4d, 0xac, 0x5a, 0xc6, 0x5d, 0xe6, 0x84, 0xe5, 0x2b, 0x83, 0x37, 0x7a, 0x82, 0x48, 0x33, 0x03, - 0x50, 0xb9, 0x19, 0xdf, 0xc8, 0x00, 0x49, 0xf2, 0x20, 0x37, 0x60, 0xf2, 0xde, 0x56, 0xb9, 0x1e, - 0x58, 0x5e, 0xb0, 0xe6, 0xf6, 0x3c, 0xe1, 0x8a, 0xc6, 0x0d, 0x21, 0x83, 0x26, 0xdb, 0x19, 0xbc, - 0xa0, 0xb1, 0xef, 0xf6, 0x3c, 0x53, 0xc3, 0xc3, 0xb8, 0x8e, 0x94, 0x1e, 0xd8, 0xd6, 0xa1, 0x1e, - 0xd7, 0x51, 0xc0, 0xb4, 0xb8, 0x8e, 0x02, 0x66, 0xfc, 0xcd, 0x0c, 0x3c, 0x2b, 0xb5, 0xa2, 0x76, - 0x4a, 0x5b, 0xca, 0x68, 0xee, 0xef, 0x49, 0x57, 0xfc, 0x41, 0xb2, 0xe9, 0xac, 0xf4, 0x88, 0xc1, - 0x06, 0xa2, 0x90, 0xca, 0x69, 0x31, 0xb5, 0x79, 0xe0, 0x76, 0x87, 0x70, 0x89, 0x29, 0x86, 0x33, - 0x1a, 0xb8, 0x5d, 0x64, 0x81, 0x94, 0x06, 0x85, 0x79, 0xb5, 0x71, 0xb2, 0xc5, 0xe4, 0x2e, 0x8c, - 0x09, 0x5f, 0x45, 0x21, 0xed, 0x49, 0xf7, 0xd5, 0x01, 0x7d, 0x5a, 0x99, 0x91, 0x7e, 0x37, 0xc2, - 0x15, 0xdc, 0x94, 0x3c, 0x8c, 0x1f, 0xcf, 0xc0, 0x04, 0x13, 0x1e, 0x30, 0x3a, 0xca, 0xc7, 0x5d, - 0xd2, 0xba, 0x1c, 0x28, 0x15, 0x10, 0x21, 0xfb, 0xa1, 0x0e, 0xd7, 0x37, 0x60, 0x26, 0x46, 0x40, - 0x0c, 0xb4, 0xb8, 0x6e, 0x39, 0x3c, 0x49, 0xb4, 0xd4, 0xd3, 0x68, 0x30, 0xe3, 0xdf, 0xc8, 0xc0, - 0xfc, 0xe6, 0x41, 0x60, 0x55, 0xdb, 0x5d, 0xd7, 0x0b, 0xcc, 0x5e, 0x4b, 0x7e, 0xef, 0x4c, 0x20, - 0x92, 0xea, 0x75, 0x6e, 0x0e, 0xca, 0x05, 0x22, 0x01, 0x33, 0xc3, 0x52, 0xb2, 0x06, 0x05, 0x71, - 0xbe, 0xf8, 0xc2, 0x83, 0x5b, 0x3e, 0xf1, 0xe8, 0x8c, 0x05, 0x12, 0xeb, 0x09, 0x6e, 0x61, 0x82, - 0xc6, 0x0c, 0xa9, 0x8d, 0x3f, 0xca, 0xc0, 0x99, 0x3e, 0x34, 0xe4, 0x1d, 0x18, 0x41, 0xdb, 0x1a, - 0x31, 0x7b, 0xcf, 0xf5, 0xa9, 0x22, 0x68, 0xee, 0xdf, 0xbf, 0xc6, 0x0f, 0xa2, 0x36, 0xfb, 0x61, - 0x72, 0x2a, 0xf2, 0x01, 0x8c, 0x97, 0x6c, 0x5b, 0xdc, 0x4b, 0xb2, 0xda, 0xbd, 0xa4, 0x4f, 0x8d, - 0x57, 0x42, 0x7c, 0x7e, 0x2f, 0xe1, 0xaf, 0xbc, 0xb6, 0x2d, 0x72, 0xd7, 0x9b, 0x11, 0xbf, 0xc5, - 0xb7, 0x61, 0x5a, 0x47, 0x3e, 0xd1, 0xbd, 0xe4, 0xdb, 0x19, 0x28, 0xea, 0x6d, 0xf8, 0x64, 0x3c, - 0x86, 0xd2, 0xa6, 0xf9, 0x98, 0x45, 0xf5, 0x53, 0x59, 0x38, 0x95, 0x3a, 0xc2, 0xe4, 0x75, 0x18, - 0x2d, 0x75, 0xbb, 0xd5, 0x8a, 0x58, 0x55, 0x42, 0xe0, 0x41, 0x55, 0xa4, 0x76, 0x6d, 0xe3, 0x48, - 0xe4, 0x3a, 0x14, 0x70, 0x65, 0x32, 0x82, 0x6c, 0xe4, 0x4b, 0xcd, 0x95, 0x94, 0x31, 0x5f, 0x6a, - 0x89, 0x48, 0x6e, 0xc2, 0xb4, 0x70, 0x1e, 0x30, 0xe9, 0x1e, 0x7d, 0x14, 0x06, 0xf5, 0xc1, 0xb8, - 0x43, 0xd2, 0xd5, 0xa0, 0xe1, 0xf1, 0x32, 0xd5, 0x7c, 0x5e, 0xa7, 0xc2, 0xcc, 0x8b, 0x8c, 0xa7, - 0xca, 0x89, 0x3b, 0x74, 0xf3, 0xcc, 0x8b, 0xd8, 0x88, 0x3e, 0xbc, 0x12, 0x94, 0xe1, 0x74, 0x95, - 0x7c, 0xdf, 0xd9, 0xeb, 0xb4, 0x69, 0x27, 0xf8, 0xe4, 0xa6, 0x2b, 0xaa, 0x63, 0xa8, 0xe9, 0xfa, - 0x56, 0x9e, 0x7f, 0xcc, 0x71, 0xb2, 0x63, 0x92, 0x0b, 0x57, 0x60, 0x8c, 0xbb, 0x2d, 0xc8, 0x2f, - 0xe3, 0x5c, 0x6a, 0x13, 0x38, 0xce, 0xfd, 0x6b, 0x5c, 0x7c, 0xe1, 0x46, 0x3e, 0xbe, 0x29, 0x49, - 0xc9, 0x7d, 0x98, 0x28, 0xb7, 0xa8, 0xd5, 0xe9, 0x75, 0xd9, 0x26, 0x3d, 0x84, 0x86, 0x62, 0x41, - 0xf4, 0x65, 0xb2, 0xc9, 0xc9, 0x1a, 0x81, 0xd3, 0xa6, 0xb8, 0x93, 0xab, 0x8c, 0xc8, 0x56, 0xf8, - 0xee, 0x9f, 0x47, 0xe5, 0xd7, 0xa7, 0x06, 0x8c, 0x4f, 0x1c, 0x88, 0x74, 0xba, 0x51, 0x8b, 0x30, - 0x0c, 0x68, 0xc0, 0xf4, 0xba, 0xe5, 0x07, 0x5b, 0x9e, 0xd5, 0xf1, 0xd1, 0xf3, 0x78, 0x08, 0x77, - 0x30, 0x99, 0xe0, 0x68, 0x06, 0xcd, 0xfd, 0x83, 0x90, 0x14, 0xdb, 0x1c, 0x63, 0xc7, 0xe4, 0xa5, - 0x9b, 0x4e, 0xc7, 0x6a, 0x39, 0x5f, 0x97, 0xe6, 0x51, 0x5c, 0x5e, 0xda, 0x95, 0x40, 0x33, 0x2a, - 0x37, 0xbe, 0x94, 0x98, 0x37, 0xde, 0xca, 0x09, 0x18, 0x13, 0x16, 0xb1, 0xdc, 0x42, 0xb4, 0xb6, - 0xba, 0x51, 0xa9, 0x6e, 0xdc, 0x2a, 0x66, 0xc8, 0x34, 0x40, 0xcd, 0xdc, 0x2c, 0xaf, 0xd6, 0xeb, - 0xec, 0x77, 0x96, 0xfd, 0x16, 0xe6, 0xa3, 0x37, 0xef, 0xad, 0x17, 0x73, 0x8a, 0x05, 0x69, 0xde, - 0xf8, 0x27, 0x19, 0x38, 0x9d, 0x3e, 0x95, 0x64, 0x0b, 0xd0, 0x86, 0x58, 0xe8, 0x15, 0x6f, 0x0c, - 0x9c, 0xf7, 0x54, 0x70, 0xdc, 0x16, 0x39, 0xe0, 0x36, 0xae, 0x59, 0xf9, 0x08, 0x12, 0x65, 0xf9, - 0x71, 0x6c, 0xa3, 0x0c, 0x0b, 0xfd, 0x78, 0xe8, 0x5d, 0x9d, 0x81, 0x89, 0x52, 0xad, 0xb6, 0x5e, - 0x2d, 0x97, 0xb6, 0xaa, 0x9b, 0x1b, 0xc5, 0x0c, 0x19, 0x87, 0x91, 0x5b, 0xe6, 0xe6, 0xbd, 0x5a, - 0x31, 0x6b, 0xfc, 0x95, 0x0c, 0x4c, 0x55, 0x3b, 0x01, 0xdd, 0xe3, 0x21, 0x85, 0x3f, 0xee, 0xc7, - 0xf7, 0x39, 0xed, 0xe3, 0x5b, 0x08, 0xad, 0xed, 0xc3, 0x0a, 0x86, 0xfa, 0xf2, 0x1e, 0xc2, 0x6c, - 0x82, 0x84, 0xd4, 0x61, 0xac, 0xb4, 0x5d, 0xdf, 0xac, 0x56, 0xca, 0xa2, 0x61, 0x52, 0x28, 0x17, - 0xd0, 0x64, 0x25, 0xdc, 0x96, 0xed, 0xa1, 0xdf, 0x70, 0x1d, 0x5b, 0x89, 0x52, 0xbe, 0xf6, 0x8c, - 0x29, 0x39, 0xad, 0x4c, 0xc1, 0x84, 0xb8, 0x57, 0xa0, 0xc8, 0xfe, 0xa3, 0x19, 0x58, 0xe8, 0xc7, - 0x8e, 0x5d, 0x55, 0x74, 0xdb, 0xd3, 0xd3, 0x61, 0x54, 0x29, 0xdd, 0xe8, 0x54, 0xa2, 0x91, 0x77, - 0x60, 0x82, 0x67, 0x24, 0xab, 0x5f, 0xbf, 0x67, 0x56, 0xc5, 0x14, 0xa2, 0x5b, 0x98, 0x48, 0x9e, - 0xec, 0x5f, 0x8f, 0x65, 0xd2, 0x55, 0xf1, 0x8d, 0x7f, 0x3b, 0x0b, 0xa7, 0xd9, 0xb8, 0xb6, 0xa8, - 0xef, 0x97, 0x7a, 0xc1, 0x3e, 0xbb, 0x76, 0x73, 0x49, 0x83, 0x7c, 0x06, 0x46, 0xf7, 0x4f, 0xa6, - 0x24, 0xe3, 0xe8, 0x84, 0x00, 0xee, 0x55, 0xf2, 0x3d, 0x94, 0xfd, 0x4d, 0xce, 0x81, 0x92, 0x7e, - 0x00, 0xb7, 0x9a, 0x49, 0x73, 0xbc, 0x1b, 0x26, 0x21, 0xf8, 0x2c, 0x8c, 0xe0, 0xa5, 0x58, 0xec, - 0x18, 0x52, 0xd2, 0x4b, 0x6f, 0x19, 0x5e, 0x99, 0x4d, 0x4e, 0xc0, 0xae, 0xda, 0x51, 0xc8, 0x20, - 0xb1, 0x25, 0xc8, 0xdb, 0x65, 0x18, 0x35, 0xc8, 0x1c, 0x6f, 0xef, 0x5a, 0x22, 0x0e, 0xcf, 0x2b, - 0x30, 0x2b, 0x95, 0x39, 0x5d, 0xe9, 0x14, 0xc9, 0xaf, 0xe8, 0xe6, 0x0c, 0x2f, 0xa8, 0x76, 0x85, - 0x63, 0xa4, 0xf1, 0x3f, 0x64, 0x61, 0x7c, 0x9b, 0x9d, 0x9f, 0x78, 0x2b, 0x1c, 0x7c, 0xcb, 0x5c, - 0x86, 0x89, 0x75, 0xd7, 0xb2, 0xf5, 0x14, 0xeb, 0x68, 0x38, 0xd6, 0x72, 0x2d, 0xa9, 0x1d, 0xf7, - 0x4d, 0x15, 0xe9, 0x18, 0xa3, 0xb7, 0xdb, 0x30, 0xca, 0x1f, 0xf6, 0x84, 0xfe, 0x42, 0x4a, 0x50, - 0x61, 0x8b, 0xae, 0xf0, 0x62, 0x45, 0x0b, 0xcb, 0x9f, 0x06, 0xd5, 0xe3, 0x5c, 0xb8, 0x65, 0x2b, - 0x77, 0xe0, 0x91, 0xe1, 0xee, 0xc0, 0x8a, 0xfb, 0xd9, 0xe8, 0x30, 0xee, 0x67, 0x8b, 0x6f, 0xc2, - 0x84, 0xd2, 0x9e, 0x13, 0x09, 0x54, 0x3f, 0x98, 0x85, 0x29, 0xec, 0x55, 0xf8, 0x7c, 0xf2, 0x74, - 0xde, 0xe8, 0x3f, 0xa7, 0xdd, 0xe8, 0x17, 0xd4, 0xf9, 0xe2, 0x3d, 0x1b, 0x70, 0x95, 0xbf, 0x0d, - 0xb3, 0x09, 0x44, 0xf2, 0x06, 0x8c, 0xb0, 0xe6, 0xcb, 0x1b, 0x50, 0x31, 0xbe, 0x02, 0xa2, 0x50, - 0x05, 0xac, 0xe3, 0xbe, 0xc9, 0xb1, 0x8d, 0xff, 0x3d, 0x03, 0x93, 0x22, 0x86, 0x54, 0x67, 0xd7, - 0x3d, 0x76, 0x38, 0x2f, 0xc6, 0x87, 0x93, 0x9b, 0x70, 0x8b, 0xe1, 0xfc, 0x93, 0x1e, 0xc4, 0x37, - 0xb5, 0x41, 0x3c, 0x13, 0x3a, 0x2e, 0xca, 0xee, 0x0c, 0x18, 0xc3, 0x5f, 0x45, 0x57, 0x7e, 0x1d, - 0x91, 0x7c, 0x05, 0xc6, 0x37, 0xe8, 0x43, 0xed, 0x22, 0x71, 0xb1, 0x0f, 0xd3, 0x2b, 0x21, 0x22, - 0xff, 0xa6, 0xd0, 0x78, 0xa6, 0x43, 0x1f, 0x36, 0x12, 0xaf, 0x1b, 0x11, 0x4b, 0x76, 0x97, 0xd0, - 0xc9, 0x4e, 0xb2, 0xf4, 0x85, 0x0d, 0x12, 0x7a, 0x25, 0xfc, 0x9d, 0x1c, 0x40, 0x64, 0xbe, 0xc1, - 0x3e, 0x40, 0xaa, 0x45, 0x5a, 0x14, 0x2a, 0x55, 0x04, 0xa9, 0x6b, 0x5c, 0x80, 0xc8, 0x45, 0xa1, - 0x2b, 0xcc, 0xf6, 0x77, 0x2c, 0x45, 0xad, 0x61, 0x59, 0x98, 0x47, 0xd8, 0xb4, 0x65, 0xf1, 0xbd, - 0x38, 0x87, 0xc9, 0xbe, 0xe7, 0x23, 0x68, 0x9f, 0x64, 0x00, 0x68, 0x44, 0x51, 0x61, 0x08, 0x09, - 0x93, 0xa8, 0xfc, 0x47, 0x37, 0x89, 0x1a, 0xf9, 0x08, 0x26, 0x51, 0xa3, 0x43, 0x9a, 0x44, 0xd5, - 0x60, 0xdc, 0xe9, 0x3c, 0xa0, 0x9d, 0xc0, 0xf5, 0x0e, 0xd1, 0x60, 0x22, 0xd2, 0xf0, 0xb0, 0xa1, - 0xfe, 0x7f, 0x89, 0xbb, 0xbe, 0x1e, 0x39, 0x8e, 0x22, 0x7e, 0xb3, 0xbb, 0x77, 0x39, 0xd7, 0xfd, - 0xeb, 0x6b, 0x3b, 0xce, 0x61, 0x9f, 0x2f, 0x66, 0x15, 0x10, 0x1e, 0x08, 0x10, 0x02, 0x02, 0x83, - 0x42, 0x34, 0xb7, 0xdb, 0x7b, 0x3b, 0xdc, 0xfc, 0xf3, 0xf4, 0xac, 0x2f, 0x36, 0xa0, 0xd1, 0xfa, - 0x6e, 0x72, 0x1e, 0xd8, 0x9b, 0xdd, 0xec, 0x1f, 0x20, 0xf9, 0x00, 0xbc, 0x20, 0x24, 0xc4, 0x17, - 0xe0, 0x25, 0x1f, 0x26, 0x12, 0x42, 0xca, 0x3b, 0x12, 0x02, 0x7f, 0x8c, 0x3c, 0xa1, 0xfe, 0x37, - 0xd3, 0x33, 0xb3, 0x7b, 0xc2, 0x89, 0x25, 0xde, 0x76, 0xaa, 0xaa, 0x7b, 0x7b, 0xa6, 0xba, 0xab, - 0xab, 0xbb, 0xab, 0x7e, 0x6d, 0x2b, 0x9e, 0xd0, 0x37, 0x5f, 0xe2, 0xe4, 0xf2, 0xba, 0xba, 0x73, - 0xa2, 0x3c, 0xdb, 0xff, 0xa2, 0x01, 0xb8, 0x5e, 0x01, 0xfe, 0x29, 0x6c, 0x09, 0x13, 0x1c, 0x4f, - 0x67, 0x1f, 0xc9, 0x78, 0x1a, 0x91, 0xfd, 0xa1, 0x91, 0xf5, 0xec, 0x0f, 0x41, 0x0e, 0x67, 0x1f, - 0x8d, 0xf0, 0xaf, 0xe1, 0x26, 0x57, 0xc0, 0x24, 0x99, 0xa6, 0xe3, 0x8b, 0x98, 0x27, 0xbe, 0x0f, - 0x47, 0x12, 0xda, 0xf7, 0x6d, 0x8e, 0x41, 0x5f, 0x67, 0xaf, 0x50, 0x14, 0x0f, 0x5b, 0x09, 0xb8, - 0x64, 0x20, 0x04, 0x71, 0x04, 0x48, 0x2f, 0xff, 0xe1, 0x62, 0x34, 0x92, 0xba, 0x37, 0xf9, 0x05, - 0x9d, 0x15, 0xde, 0x8a, 0x8a, 0x77, 0x8b, 0x8a, 0x7b, 0x8b, 0xd1, 0x08, 0xff, 0x18, 0x60, 0x9c, - 0xc5, 0x57, 0xe9, 0x6c, 0x26, 0xf6, 0xd9, 0xf3, 0x90, 0xb3, 0x82, 0xaa, 0x7f, 0xc6, 0x71, 0xe6, - 0x0a, 0x22, 0xfe, 0x21, 0xf0, 0xa0, 0x51, 0x1e, 0x4d, 0xcd, 0x7b, 0xc0, 0xba, 0x04, 0xeb, 0x52, - 0xc4, 0xb2, 0x3a, 0x2f, 0x13, 0x9a, 0x7e, 0xa2, 0x02, 0x2b, 0x9e, 0xc2, 0xbe, 0xcc, 0x16, 0x39, - 0x4b, 0xe7, 0xcf, 0xa5, 0x5b, 0xf8, 0x55, 0x7c, 0x4a, 0xcd, 0x2f, 0xfc, 0x67, 0x0b, 0xc0, 0x3a, - 0xa3, 0x2a, 0x51, 0xe9, 0x01, 0xac, 0x33, 0x67, 0x57, 0x2d, 0x9a, 0xf9, 0x96, 0x23, 0xaf, 0x57, - 0xdf, 0x72, 0xe4, 0x12, 0x6c, 0xbc, 0x86, 0xc9, 0x25, 0xdf, 0xb7, 0x69, 0x14, 0x2b, 0xec, 0xa9, - 0x20, 0x95, 0x5c, 0x37, 0x41, 0xc2, 0x0e, 0x40, 0x91, 0x3a, 0x24, 0x97, 0x5f, 0xfb, 0x45, 0x0c, - 0xbe, 0x64, 0x48, 0x14, 0xa6, 0x22, 0xfd, 0x48, 0xef, 0x3e, 0x85, 0x18, 0x3e, 0x85, 0x56, 0x34, - 0xcc, 0x03, 0xaa, 0x56, 0x24, 0x54, 0xdd, 0x97, 0xd0, 0xcb, 0x45, 0x52, 0xd5, 0xee, 0x7c, 0x58, - 0x42, 0xa8, 0xe7, 0x95, 0x60, 0x02, 0x1b, 0xf2, 0x5a, 0x8d, 0x15, 0xd9, 0xb5, 0xf2, 0x56, 0x0d, - 0x09, 0x66, 0xc1, 0x89, 0xba, 0xd7, 0x21, 0x2f, 0xd0, 0xf8, 0x01, 0x34, 0x29, 0x75, 0x65, 0x18, - 0xf1, 0x4e, 0xe1, 0x4b, 0x53, 0xea, 0xaa, 0xab, 0x83, 0xae, 0xb4, 0x62, 0x4c, 0x18, 0xff, 0x0c, - 0xb6, 0x34, 0xbf, 0x58, 0x06, 0xe0, 0xf3, 0x6f, 0x90, 0x16, 0xe4, 0x92, 0x3b, 0x5b, 0x90, 0xb1, - 0x03, 0xe8, 0x74, 0xf1, 0x2c, 0xb1, 0x26, 0x13, 0x1e, 0x0c, 0xf4, 0xbb, 0x64, 0x2a, 0x10, 0xa2, - 0x36, 0x0b, 0x1c, 0x88, 0x78, 0x38, 0x99, 0xc4, 0x17, 0x8a, 0xab, 0x6f, 0x1c, 0x54, 0x4b, 0xe2, - 0x00, 0xf6, 0x69, 0x32, 0x5f, 0x4c, 0x44, 0x94, 0x40, 0x6f, 0x3c, 0x65, 0x7e, 0xb9, 0x08, 0xd7, - 0xe7, 0x29, 0xf3, 0x33, 0xc6, 0x54, 0xa1, 0x19, 0x1f, 0x8e, 0xa7, 0x15, 0x1f, 0xbd, 0x5e, 0xb8, - 0x9d, 0xe8, 0x2a, 0x67, 0xf3, 0x6e, 0xd9, 0xdb, 0xe7, 0xf3, 0xae, 0xf2, 0xf6, 0x0b, 0x1f, 0xff, - 0x7b, 0x4b, 0x52, 0xca, 0xf8, 0x29, 0x8f, 0x96, 0x52, 0x56, 0x4a, 0x24, 0xfb, 0xb4, 0xa5, 0xa5, - 0x2a, 0x4b, 0x5d, 0xbc, 0x07, 0xf0, 0x8b, 0x71, 0x9a, 0xb9, 0xc9, 0xfc, 0xf9, 0xf8, 0x42, 0xcb, - 0x6c, 0xdb, 0xfa, 0xcd, 0x38, 0xcd, 0xe2, 0x2b, 0x4e, 0xfe, 0xe2, 0x5f, 0x6f, 0x6a, 0x42, 0xa1, - 0xf6, 0x1b, 0x7f, 0x07, 0x6e, 0xb0, 0xa7, 0xa8, 0x88, 0x75, 0x10, 0xfb, 0x6b, 0xbc, 0xb4, 0xbc, - 0x82, 0x2c, 0x17, 0xc0, 0x0f, 0x39, 0x8c, 0x5b, 0x3a, 0x99, 0x6b, 0xee, 0xad, 0xc2, 0x6c, 0x4b, - 0x27, 0xf3, 0x2a, 0xec, 0x83, 0x26, 0x8c, 0xfb, 0x79, 0xd3, 0x15, 0x10, 0xa0, 0x44, 0x8b, 0xe3, - 0x9b, 0x48, 0xb2, 0xaf, 0xc5, 0x0a, 0x36, 0x50, 0x87, 0x6c, 0xaf, 0x14, 0xe3, 0x8d, 0xa0, 0xfd, - 0xae, 0xd8, 0xf5, 0x97, 0xb3, 0x8c, 0x68, 0xc4, 0xec, 0xf9, 0x45, 0x7c, 0xce, 0xc9, 0xa5, 0x46, - 0xe4, 0xc2, 0xf8, 0x18, 0xf6, 0x44, 0xfe, 0x45, 0x0e, 0x28, 0x2c, 0x67, 0x1c, 0x6e, 0xdb, 0x0a, - 0xc4, 0x61, 0xfd, 0xef, 0x2b, 0x05, 0x70, 0x0f, 0xd6, 0xad, 0x4f, 0x16, 0xd3, 0x44, 0x06, 0xc1, - 0xab, 0x5d, 0x22, 0x4e, 0xab, 0x8e, 0x23, 0x6e, 0x57, 0x86, 0x8c, 0xa3, 0xdb, 0x15, 0x2e, 0x8a, - 0x3f, 0x00, 0x20, 0xd9, 0x74, 0x3c, 0x1a, 0x71, 0x44, 0x84, 0x4d, 0xbe, 0x40, 0xba, 0x57, 0x1e, - 0x8f, 0xbc, 0x96, 0x42, 0x48, 0x5d, 0x1e, 0xcd, 0x9e, 0xe3, 0x0a, 0x6e, 0x82, 0x56, 0x57, 0xdb, - 0x86, 0x0d, 0x31, 0x18, 0x39, 0xba, 0x88, 0x84, 0x2e, 0xd3, 0xb0, 0x29, 0x04, 0xba, 0x88, 0xa4, - 0xd7, 0xd1, 0x45, 0xb4, 0x02, 0xed, 0x53, 0xb8, 0xb5, 0xec, 0xc5, 0xf0, 0xbb, 0xb5, 0xcb, 0x1a, - 0xf5, 0x3b, 0xda, 0xca, 0xa8, 0xa7, 0x4a, 0xb0, 0xfd, 0xb7, 0x26, 0x6c, 0xf3, 0xda, 0x94, 0x15, - 0xb6, 0x60, 0x87, 0x2e, 0x9e, 0xe5, 0xc9, 0x42, 0xca, 0x1a, 0x8b, 0x7b, 0xbb, 0x75, 0x86, 0x7e, - 0x1e, 0x53, 0x2a, 0x81, 0x09, 0xec, 0xaa, 0x99, 0x40, 0x42, 0xaa, 0x37, 0x0a, 0x60, 0x0f, 0x95, - 0xc6, 0x5a, 0x07, 0x54, 0xaf, 0x14, 0x2a, 0xe6, 0x83, 0xe6, 0xcb, 0xcc, 0x07, 0xad, 0xff, 0x69, - 0x3e, 0xf8, 0x25, 0x6c, 0xab, 0x7f, 0xe3, 0x96, 0x7c, 0xfd, 0xab, 0x59, 0xf2, 0x52, 0x65, 0xd8, - 0xc9, 0x2d, 0xfa, 0xc6, 0xb5, 0x16, 0x9d, 0x1f, 0x72, 0xa9, 0x51, 0x56, 0xbb, 0x23, 0x49, 0xd6, - 0xc1, 0x11, 0x87, 0x4f, 0x3a, 0xc1, 0x97, 0x98, 0x25, 0x7f, 0x04, 0x37, 0x9c, 0xb1, 0x3a, 0xdf, - 0xd0, 0x36, 0x96, 0x47, 0x8a, 0xa8, 0xbb, 0x0b, 0xb9, 0x64, 0x3e, 0xbb, 0x35, 0x5f, 0xc5, 0xec, - 0xf6, 0x10, 0x20, 0x10, 0xd1, 0xe3, 0x05, 0x52, 0x28, 0x1f, 0x32, 0x2a, 0xcc, 0xbc, 0xbc, 0xbf, - 0xad, 0x09, 0x33, 0xeb, 0x24, 0x23, 0x21, 0xac, 0xf3, 0xf3, 0xf1, 0x22, 0x9b, 0x97, 0xa0, 0xf5, - 0xd5, 0x1d, 0xf2, 0x43, 0xc9, 0xd3, 0xcd, 0x43, 0xa5, 0xd8, 0xab, 0x55, 0x08, 0x7e, 0x94, 0x87, - 0x70, 0x5d, 0x7b, 0xd3, 0x58, 0xbb, 0xf6, 0x85, 0x56, 0x06, 0x6e, 0xb5, 0xff, 0x6e, 0xe8, 0xa8, - 0x4a, 0x5f, 0x42, 0xd5, 0x3f, 0x01, 0xc8, 0x0f, 0x98, 0x95, 0xae, 0xc5, 0x8a, 0x2a, 0xa7, 0xea, - 0x5f, 0xb9, 0x90, 0xd5, 0xde, 0xa6, 0xf9, 0xaa, 0xde, 0x26, 0x82, 0x2d, 0xff, 0xb7, 0xf3, 0x61, - 0x11, 0x91, 0x00, 0x34, 0xf7, 0x64, 0xb9, 0x65, 0x52, 0x37, 0xa2, 0x15, 0x7e, 0xf0, 0xca, 0x1b, - 0xd1, 0xf2, 0x82, 0xed, 0x47, 0xb0, 0x27, 0xe6, 0xf7, 0x93, 0xe9, 0x70, 0xf2, 0x9c, 0xc7, 0xc2, - 0xff, 0x5c, 0x64, 0xa5, 0x1b, 0xa5, 0xb5, 0x86, 0x26, 0xc4, 0x2c, 0xee, 0xc7, 0xd9, 0xb9, 0xf0, - 0x7f, 0x86, 0xbf, 0xd7, 0xdb, 0xca, 0x57, 0x81, 0x9f, 0x1b, 0x80, 0xeb, 0xe2, 0xba, 0x35, 0x31, - 0xfe, 0x0f, 0xde, 0x65, 0xc5, 0x2b, 0x6b, 0xbd, 0x8c, 0x57, 0x66, 0xfe, 0xc5, 0x80, 0x3d, 0xdb, - 0x72, 0x25, 0x04, 0x92, 0xd8, 0x28, 0xff, 0x3a, 0xdc, 0xb3, 0x2d, 0x37, 0x0e, 0x7c, 0xc7, 0xee, - 0x3c, 0x89, 0x97, 0x02, 0x2c, 0xdc, 0x83, 0xaf, 0xd5, 0x45, 0x8a, 0x0d, 0xf5, 0x43, 0x38, 0xa8, - 0xb3, 0x15, 0x08, 0xc3, 0xf2, 0xc2, 0x0a, 0xaf, 0xa1, 0x69, 0xbe, 0x0f, 0x7b, 0x0a, 0x9b, 0x20, - 0x72, 0x28, 0xc7, 0x12, 0xda, 0x83, 0xad, 0xc7, 0x24, 0xb4, 0x7b, 0x4f, 0xe2, 0xde, 0xc0, 0x71, - 0xd0, 0x1a, 0xde, 0x81, 0x1b, 0x92, 0xd0, 0xb1, 0x90, 0x81, 0xb7, 0x61, 0xd3, 0xf6, 0x28, 0xe9, - 0x0c, 0x42, 0x82, 0x1a, 0xe6, 0xfb, 0xb0, 0x5b, 0x5c, 0x1b, 0xcd, 0xf7, 0xc3, 0x5f, 0x83, 0x66, - 0x68, 0x9d, 0xa1, 0x35, 0x0c, 0xb0, 0x11, 0x9c, 0x76, 0xe8, 0x3b, 0xef, 0x20, 0x03, 0x6f, 0xc1, - 0x6b, 0x27, 0x9d, 0x20, 0x3e, 0x75, 0x29, 0x6a, 0xb0, 0x07, 0xeb, 0x8c, 0xf2, 0x87, 0xa6, 0xf9, - 0x7d, 0xd8, 0xe7, 0xbe, 0x82, 0x93, 0xce, 0xe6, 0x49, 0x96, 0x4c, 0x79, 0x1b, 0xb6, 0x61, 0x93, - 0x26, 0x6c, 0x90, 0xcf, 0x13, 0xd1, 0x00, 0x77, 0x31, 0x9a, 0xa7, 0x93, 0x51, 0xf2, 0x07, 0x64, - 0x98, 0x0f, 0x61, 0x2f, 0x1c, 0x2f, 0xe6, 0x69, 0x76, 0x49, 0xe7, 0x4c, 0xe2, 0xf2, 0x63, 0xfc, - 0x3a, 0xec, 0x0f, 0x3c, 0xcb, 0x3d, 0xb6, 0x4f, 0x06, 0xfe, 0x80, 0xc6, 0xae, 0x15, 0x75, 0xfa, - 0x62, 0x37, 0xde, 0xf5, 0x69, 0x14, 0x87, 0xa4, 0x43, 0xbc, 0x08, 0x19, 0xe6, 0x9f, 0x0c, 0xd8, - 0x1d, 0xcc, 0x64, 0x04, 0xe9, 0x80, 0xe7, 0xd9, 0xdf, 0x87, 0xc3, 0x01, 0x25, 0x61, 0x1c, 0xf9, - 0xa7, 0xc4, 0x8b, 0x07, 0xd4, 0x3a, 0xa9, 0xa2, 0x7b, 0xbc, 0x09, 0x77, 0x35, 0x89, 0x90, 0x74, - 0xfc, 0xc7, 0x24, 0x8c, 0x03, 0x8b, 0xd2, 0x33, 0x3f, 0xec, 0x22, 0x03, 0xdf, 0x81, 0xdb, 0x4b, - 0x04, 0xdc, 0x9e, 0x85, 0x1a, 0x35, 0x9e, 0x47, 0xce, 0x2c, 0x27, 0x3e, 0xf6, 0x23, 0xd4, 0x34, - 0x5d, 0x36, 0xd1, 0xf1, 0x04, 0x78, 0x81, 0x1b, 0xb8, 0x09, 0x2d, 0xcf, 0xf7, 0x48, 0xf5, 0xc4, - 0x64, 0x1b, 0x36, 0xad, 0x20, 0x08, 0xfd, 0xc7, 0x5c, 0xa1, 0x00, 0x1b, 0x5d, 0xe2, 0xb1, 0x96, - 0x35, 0x19, 0x27, 0x08, 0x7d, 0xd7, 0x8f, 0x48, 0x17, 0xb5, 0xcc, 0x50, 0x0d, 0x18, 0x55, 0xe9, - 0xf9, 0x58, 0x1c, 0x4f, 0x74, 0x49, 0xcf, 0x1a, 0x38, 0x91, 0xfc, 0x20, 0x4f, 0xe2, 0x90, 0x3c, - 0x1a, 0x10, 0x1a, 0x51, 0x64, 0x60, 0x04, 0xdb, 0x1e, 0x21, 0x5d, 0x1a, 0x87, 0xe4, 0xb1, 0x4d, - 0xce, 0x50, 0x83, 0xd5, 0x29, 0x7e, 0xb3, 0x7f, 0x30, 0x3f, 0x35, 0x00, 0x0b, 0xf0, 0x00, 0x85, - 0xef, 0xc6, 0xf5, 0x73, 0x04, 0x77, 0xfa, 0xec, 0xc3, 0xf2, 0x57, 0x73, 0xfd, 0x6e, 0xf5, 0x93, - 0xdd, 0x06, 0x5c, 0xe1, 0xfb, 0xbd, 0x1e, 0x32, 0xf0, 0x5d, 0xb8, 0x59, 0xa1, 0x77, 0x43, 0x3f, - 0x40, 0x8d, 0x3b, 0x8d, 0x4d, 0x03, 0xbf, 0x51, 0x63, 0x9e, 0x12, 0x12, 0xa0, 0x26, 0x53, 0x51, - 0x85, 0xa1, 0x3a, 0xa0, 0x28, 0xde, 0x32, 0xff, 0x68, 0xc0, 0x6d, 0xd1, 0x4c, 0xd5, 0x9b, 0xf3, - 0xa6, 0x1e, 0xc2, 0x81, 0xc4, 0x39, 0x59, 0xd6, 0xd0, 0x5b, 0x80, 0x4a, 0x5c, 0xd1, 0xcc, 0xd7, - 0x61, 0xbf, 0x44, 0xe5, 0xed, 0x68, 0xb0, 0xb1, 0x5a, 0x22, 0x1f, 0x13, 0x1a, 0xc5, 0xa4, 0xd7, - 0xf3, 0xc3, 0x48, 0x34, 0xa4, 0x69, 0xb6, 0x61, 0xbf, 0x93, 0x4c, 0xe7, 0x6c, 0x0d, 0x92, 0xcd, - 0xd2, 0x71, 0xc6, 0x9b, 0xb0, 0x03, 0x37, 0xc8, 0x07, 0x11, 0xf1, 0xa8, 0xed, 0x7b, 0x68, 0xcd, - 0x3c, 0xac, 0xc8, 0xa8, 0x51, 0x43, 0x69, 0x1f, 0xad, 0x99, 0x43, 0xd8, 0x51, 0x11, 0x9b, 0xa2, - 0x57, 0x1c, 0xc1, 0x1d, 0xd5, 0xd7, 0xf8, 0xf8, 0xad, 0xbe, 0xc2, 0x01, 0xdc, 0xaa, 0xf3, 0x49, - 0x84, 0x0c, 0xa6, 0x85, 0x0a, 0x87, 0xd1, 0x1b, 0xe6, 0xaf, 0x60, 0xbb, 0x04, 0x84, 0xfa, 0x06, - 0xdc, 0xd4, 0x9f, 0x83, 0x24, 0xbb, 0x48, 0xb3, 0x4b, 0xb4, 0x56, 0x65, 0x84, 0x8b, 0x2c, 0x63, - 0x0c, 0xde, 0xe3, 0x75, 0x46, 0x94, 0x4c, 0xaf, 0xd2, 0x6c, 0x38, 0x4f, 0x2e, 0x50, 0xc3, 0xfc, - 0x2e, 0xec, 0x94, 0x00, 0x23, 0xd8, 0xab, 0x39, 0xbe, 0x34, 0x08, 0x2e, 0xe9, 0xda, 0x03, 0x17, - 0xad, 0xb3, 0xbe, 0xde, 0xb7, 0x4f, 0xfa, 0x08, 0xcc, 0xbf, 0x1a, 0xcc, 0x25, 0xe5, 0xa0, 0x6a, - 0x6e, 0xcf, 0x52, 0x1f, 0x83, 0x29, 0x42, 0x60, 0xcb, 0x10, 0x4a, 0xc5, 0x51, 0xda, 0x21, 0x1c, - 0xc8, 0x87, 0xd8, 0xf2, 0xba, 0x71, 0xdf, 0x0a, 0xbb, 0x67, 0x56, 0xc8, 0xb4, 0xf3, 0x04, 0x35, - 0x78, 0x97, 0xd3, 0x28, 0x71, 0xe4, 0x0f, 0x3a, 0x7d, 0xd4, 0x64, 0x1a, 0x2e, 0xd1, 0x03, 0xdb, - 0x43, 0x2d, 0xde, 0x81, 0x6b, 0xd2, 0xbc, 0x5a, 0xc6, 0x5f, 0x37, 0x53, 0x40, 0xd5, 0x1c, 0x85, - 0xda, 0x99, 0x66, 0x38, 0xf0, 0x3c, 0x31, 0x42, 0xf7, 0x60, 0xcb, 0x8f, 0xfa, 0x24, 0x94, 0xe8, - 0x3f, 0x1c, 0xee, 0x67, 0xe0, 0x59, 0x83, 0xa8, 0xef, 0x87, 0xf6, 0x53, 0x3e, 0x54, 0x0f, 0xe0, - 0x16, 0x75, 0xac, 0xce, 0x69, 0xec, 0xf9, 0x51, 0x6c, 0x7b, 0x71, 0xa7, 0x6f, 0x79, 0x1e, 0x71, - 0x10, 0x98, 0xff, 0x30, 0xe0, 0xee, 0x35, 0x07, 0x3c, 0xf8, 0x6d, 0x78, 0xd0, 0x27, 0x56, 0xd7, - 0x21, 0x94, 0xc6, 0xac, 0x4a, 0xe2, 0x45, 0xf2, 0x78, 0x71, 0x69, 0x77, 0x78, 0x00, 0xdf, 0xb8, - 0x5e, 0xbc, 0x30, 0x2c, 0xdf, 0x82, 0xb7, 0xae, 0x17, 0x95, 0x86, 0xa6, 0x81, 0x4d, 0xf8, 0xe6, - 0xf5, 0x92, 0xb9, 0x81, 0x6a, 0x9a, 0x7f, 0x36, 0xe0, 0xf6, 0xf2, 0xf5, 0x18, 0x6b, 0x9b, 0xed, - 0xd1, 0xc8, 0x72, 0x9c, 0x38, 0xb0, 0x42, 0xcb, 0x8d, 0x89, 0x17, 0xfa, 0x8e, 0xb3, 0x6c, 0x60, - 0xbe, 0x05, 0xf7, 0x57, 0x8b, 0xd2, 0x4e, 0x68, 0x07, 0xac, 0x87, 0xb7, 0xe1, 0x68, 0xb5, 0x14, - 0xb1, 0x3b, 0x04, 0x35, 0x8e, 0xdf, 0xfb, 0xec, 0x3f, 0x47, 0x6b, 0x9f, 0xbd, 0x38, 0x32, 0x3e, - 0x7f, 0x71, 0x64, 0xfc, 0xfb, 0xc5, 0x91, 0xf1, 0xf4, 0xdb, 0x2f, 0x71, 0xe1, 0xd6, 0xb3, 0x0d, - 0x7e, 0x9e, 0xfe, 0xee, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x16, 0x63, 0x18, 0x30, 0x73, 0x7b, - 0x01, 0x00, + // 25862 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7d, 0x70, 0x5c, 0x59, + 0x76, 0x18, 0x86, 0x4f, 0x7f, 0x00, 0x68, 0x1c, 0x7c, 0x35, 0x2e, 0x40, 0x12, 0xc4, 0x0c, 0x07, + 0x9c, 0xc7, 0x19, 0x0e, 0x39, 0x1f, 0xe4, 0x12, 0xdc, 0xe1, 0xee, 0xec, 0x7c, 0x6d, 0xa3, 0x1b, + 0x24, 0x9a, 0x04, 0x81, 0xde, 0xd7, 0x20, 0xb1, 0xa3, 0xd9, 0xdd, 0xde, 0x87, 0x7e, 0x17, 0xc0, + 0x1b, 0x74, 0xf7, 0xeb, 0x7d, 0xef, 0x35, 0x49, 0xac, 0xec, 0x9f, 0x57, 0xb6, 0xa5, 0xfd, 0x29, + 0xb2, 0xbe, 0x9c, 0x95, 0xb5, 0x4e, 0x6c, 0x95, 0x4a, 0x65, 0x39, 0x4a, 0x62, 0x29, 0x29, 0xc9, + 0x2e, 0x3b, 0xa5, 0x58, 0xb1, 0x52, 0x2a, 0xd5, 0x46, 0x2e, 0x27, 0xaa, 0x8a, 0x53, 0x49, 0x36, + 0x2a, 0x28, 0xb2, 0x1c, 0x57, 0x8a, 0x95, 0xa4, 0xe4, 0x28, 0xe5, 0x4a, 0x36, 0xa5, 0x24, 0x75, + 0xcf, 0xbd, 0xf7, 0xbd, 0x7b, 0xdf, 0x7b, 0xdd, 0x68, 0xcc, 0x70, 0x2c, 0x71, 0x93, 0x7f, 0x48, + 0xf4, 0xb9, 0xe7, 0x9c, 0xfb, 0xf9, 0xee, 0x3d, 0xf7, 0xdc, 0xf3, 0x01, 0x2f, 0x04, 0xb4, 0x45, + 0xbb, 0xae, 0x17, 0x5c, 0x6d, 0xd1, 0x3d, 0xab, 0x79, 0x78, 0x35, 0x38, 0xec, 0x52, 0x9f, 0xff, + 0x7b, 0xa5, 0xeb, 0xb9, 0x81, 0x4b, 0x46, 0xf0, 0xc7, 0xe2, 0xfc, 0x9e, 0xbb, 0xe7, 0x22, 0xe4, + 0x2a, 0xfb, 0x8b, 0x17, 0x2e, 0x2e, 0xed, 0xb9, 0xee, 0x5e, 0x8b, 0x5e, 0xc5, 0x5f, 0x3b, 0xbd, + 0xdd, 0xab, 0x81, 0xd3, 0xa6, 0x7e, 0x60, 0xb5, 0xbb, 0x02, 0xe1, 0x72, 0x58, 0x81, 0x15, 0x04, + 0xac, 0x24, 0x70, 0xdc, 0xce, 0xd5, 0x07, 0xd7, 0xd4, 0x9f, 0x02, 0xf5, 0xf5, 0xf4, 0xb6, 0x3c, + 0xf4, 0xac, 0x6e, 0x97, 0x7a, 0xd1, 0x1f, 0x1c, 0xdd, 0xf8, 0xfb, 0x39, 0x18, 0xbf, 0x43, 0x69, + 0xb7, 0xd4, 0x72, 0x1e, 0x50, 0x72, 0x01, 0xf2, 0x1b, 0x56, 0x9b, 0x2e, 0x64, 0xce, 0x67, 0x2e, + 0x8d, 0xaf, 0xcc, 0x3c, 0x3e, 0x5a, 0x9a, 0xf0, 0xa9, 0xf7, 0x80, 0x7a, 0x8d, 0x8e, 0xd5, 0xa6, + 0x26, 0x16, 0x92, 0x57, 0x61, 0x9c, 0xfd, 0xef, 0x77, 0xad, 0x26, 0x5d, 0xc8, 0x22, 0xe6, 0xd4, + 0xe3, 0xa3, 0xa5, 0xf1, 0x8e, 0x04, 0x9a, 0x51, 0x39, 0xb9, 0x08, 0x63, 0xeb, 0xd4, 0xf2, 0x69, + 0xb5, 0xb2, 0x90, 0x3b, 0x9f, 0xb9, 0x94, 0x5b, 0x99, 0x7c, 0x7c, 0xb4, 0x54, 0x68, 0x31, 0x50, + 0xc3, 0xb1, 0x4d, 0x59, 0x48, 0xaa, 0x30, 0xb6, 0xfa, 0xa8, 0xeb, 0x78, 0xd4, 0x5f, 0xc8, 0x9f, + 0xcf, 0x5c, 0x9a, 0x58, 0x5e, 0xbc, 0xc2, 0x07, 0xe5, 0x8a, 0x1c, 0x94, 0x2b, 0x5b, 0x72, 0x50, + 0x56, 0xe6, 0xbe, 0x73, 0xb4, 0xf4, 0xcc, 0xe3, 0xa3, 0xa5, 0x31, 0xca, 0x49, 0x7e, 0xea, 0xf7, + 0x97, 0x32, 0xa6, 0xa4, 0x27, 0x6f, 0x43, 0x7e, 0xeb, 0xb0, 0x4b, 0x17, 0xc6, 0xcf, 0x67, 0x2e, + 0x4d, 0x2f, 0x3f, 0x7f, 0x85, 0x4f, 0x43, 0xd8, 0xc9, 0xe8, 0x2f, 0x86, 0xb5, 0x52, 0x78, 0x7c, + 0xb4, 0x94, 0x67, 0x28, 0x26, 0x52, 0x91, 0xd7, 0x61, 0x74, 0xcd, 0xf5, 0x83, 0x6a, 0x65, 0x01, + 0xb0, 0x6b, 0xa7, 0x1e, 0x1f, 0x2d, 0xcd, 0xee, 0xbb, 0x7e, 0xd0, 0x70, 0xec, 0xd7, 0xdc, 0xb6, + 0x13, 0xd0, 0x76, 0x37, 0x38, 0x34, 0x05, 0x92, 0xf1, 0x08, 0xa6, 0x34, 0x7e, 0x64, 0x02, 0xc6, + 0xee, 0x6d, 0xdc, 0xd9, 0xd8, 0xdc, 0xde, 0x28, 0x3e, 0x43, 0x0a, 0x90, 0xdf, 0xd8, 0xac, 0xac, + 0x16, 0x33, 0x64, 0x0c, 0x72, 0xa5, 0x5a, 0xad, 0x98, 0x25, 0x93, 0x50, 0xa8, 0x94, 0xb6, 0x4a, + 0x2b, 0xa5, 0xfa, 0x6a, 0x31, 0x47, 0xe6, 0x60, 0x66, 0xbb, 0xba, 0x51, 0xd9, 0xdc, 0xae, 0x37, + 0x2a, 0xab, 0xf5, 0x3b, 0x5b, 0x9b, 0xb5, 0x62, 0x9e, 0x4c, 0x03, 0xdc, 0xb9, 0xb7, 0xb2, 0x6a, + 0x6e, 0xac, 0x6e, 0xad, 0xd6, 0x8b, 0x23, 0x64, 0x1e, 0x8a, 0x92, 0xa4, 0x51, 0x5f, 0x35, 0xef, + 0x57, 0xcb, 0xab, 0xc5, 0x51, 0xe3, 0x1f, 0xe6, 0xa0, 0x70, 0x97, 0x06, 0x96, 0x6d, 0x05, 0x16, + 0x79, 0x4e, 0x9b, 0x38, 0xec, 0x93, 0x32, 0x63, 0x17, 0x92, 0x33, 0x36, 0xf2, 0xf8, 0x68, 0x29, + 0xf3, 0xba, 0x3a, 0x53, 0x6f, 0xc1, 0x44, 0x85, 0xfa, 0x4d, 0xcf, 0xe9, 0xb2, 0xd5, 0x84, 0xb3, + 0x35, 0xbe, 0x72, 0xf6, 0xf1, 0xd1, 0xd2, 0x29, 0x3b, 0x02, 0x2b, 0x23, 0xa0, 0x62, 0x93, 0x2a, + 0x8c, 0xae, 0x5b, 0x3b, 0xb4, 0xe5, 0x2f, 0x8c, 0x9c, 0xcf, 0x5d, 0x9a, 0x58, 0x7e, 0x56, 0x8c, + 0xba, 0x6c, 0xe0, 0x15, 0x5e, 0xba, 0xda, 0x09, 0xbc, 0xc3, 0x95, 0xf9, 0xc7, 0x47, 0x4b, 0xc5, + 0x16, 0x02, 0xd4, 0x11, 0xe5, 0x28, 0xa4, 0x1e, 0xad, 0x84, 0xd1, 0x63, 0x57, 0xc2, 0xb9, 0xef, + 0x1c, 0x2d, 0x65, 0xd8, 0x0c, 0x89, 0x95, 0x10, 0xf1, 0xd3, 0xd7, 0x84, 0x01, 0xd9, 0x6a, 0x65, + 0x61, 0x0c, 0x57, 0x20, 0x79, 0x7c, 0xb4, 0x34, 0xa9, 0x4e, 0xe6, 0x42, 0xc6, 0xcc, 0x56, 0x2b, + 0x64, 0x19, 0x0a, 0x26, 0x7d, 0xe0, 0xf8, 0xac, 0xf7, 0x05, 0xec, 0xfd, 0xe9, 0xc7, 0x47, 0x4b, + 0xc4, 0x13, 0x30, 0xa5, 0xa9, 0x21, 0xde, 0xe2, 0x9b, 0x30, 0xa1, 0xf4, 0x8c, 0x14, 0x21, 0x77, + 0x40, 0x0f, 0xf9, 0x2c, 0x98, 0xec, 0x4f, 0x32, 0x0f, 0x23, 0x0f, 0xac, 0x56, 0x4f, 0x0c, 0xbb, + 0xc9, 0x7f, 0x7c, 0x2e, 0xfb, 0xd9, 0x8c, 0xf1, 0x57, 0xf3, 0x50, 0x30, 0x5d, 0xfe, 0xed, 0x92, + 0xcb, 0x30, 0x52, 0x0f, 0xac, 0x40, 0x4e, 0xe0, 0xdc, 0xe3, 0xa3, 0xa5, 0x19, 0xf6, 0x5d, 0x53, + 0xa5, 0x56, 0x8e, 0xc1, 0x50, 0x6b, 0xfb, 0x96, 0x2f, 0x27, 0x12, 0x51, 0xbb, 0x0c, 0xa0, 0xa2, + 0x22, 0x06, 0xb9, 0x08, 0xf9, 0xbb, 0xae, 0x4d, 0xc5, 0x5c, 0xb2, 0x7e, 0x4f, 0xb7, 0x5d, 0x5b, + 0x45, 0xc4, 0x72, 0xf2, 0x1a, 0x8c, 0x97, 0x7b, 0x9e, 0x47, 0x3b, 0x6c, 0xd9, 0xe7, 0x11, 0x79, + 0xfa, 0xf1, 0xd1, 0x12, 0x34, 0x39, 0x90, 0x7d, 0xa8, 0x11, 0x02, 0x9b, 0xa0, 0x7a, 0x60, 0x79, + 0x01, 0xb5, 0x17, 0x46, 0x86, 0x9a, 0x20, 0xf6, 0xa9, 0xce, 0xfa, 0x9c, 0x24, 0x3e, 0x41, 0x82, + 0x13, 0x59, 0x83, 0x89, 0x5b, 0x9e, 0xd5, 0xa4, 0x35, 0xea, 0x39, 0xae, 0x8d, 0x33, 0x9f, 0x5b, + 0xb9, 0xf8, 0xf8, 0x68, 0xe9, 0xf4, 0x1e, 0x03, 0x37, 0xba, 0x08, 0x8f, 0xa8, 0xbf, 0x77, 0xb4, + 0x54, 0xa8, 0xf4, 0x3c, 0x1c, 0x3d, 0x53, 0x25, 0x25, 0x5f, 0x65, 0x53, 0xe2, 0x07, 0x38, 0xb4, + 0xd4, 0xc6, 0x39, 0x1f, 0xdc, 0x44, 0x43, 0x34, 0xf1, 0x74, 0xcb, 0xf2, 0x83, 0x86, 0xc7, 0xe9, + 0x62, 0xed, 0x54, 0x59, 0x92, 0x4d, 0x28, 0xd4, 0x9b, 0xfb, 0xd4, 0xee, 0xb5, 0x28, 0x2e, 0x94, + 0x89, 0xe5, 0x33, 0x62, 0xb9, 0xcb, 0xf9, 0x94, 0xc5, 0x2b, 0x8b, 0x82, 0x37, 0xf1, 0x05, 0x44, + 0x5d, 0x45, 0x12, 0xeb, 0x73, 0x85, 0x6f, 0xff, 0xfc, 0xd2, 0x33, 0xdf, 0xf8, 0xbd, 0xf3, 0xcf, + 0x18, 0x7f, 0x3f, 0x0b, 0xc5, 0x38, 0x13, 0xb2, 0x0b, 0x53, 0xf7, 0xba, 0xb6, 0x15, 0xd0, 0x72, + 0xcb, 0xa1, 0x9d, 0xc0, 0xc7, 0x45, 0x32, 0xb8, 0x4f, 0x2f, 0x8a, 0x7a, 0x17, 0x7a, 0x48, 0xd8, + 0x68, 0x72, 0xca, 0x58, 0xaf, 0x74, 0xb6, 0x51, 0x3d, 0x75, 0xdc, 0xf3, 0x7d, 0x5c, 0x61, 0x27, + 0xab, 0x87, 0x9f, 0x16, 0x7d, 0xea, 0x11, 0x6c, 0xc5, 0x02, 0xea, 0xd8, 0x3b, 0x87, 0xb8, 0x32, + 0x87, 0x5f, 0x40, 0x8c, 0x24, 0x65, 0x01, 0x31, 0xb0, 0xf1, 0xcf, 0x33, 0x30, 0x6d, 0x52, 0xdf, + 0xed, 0x79, 0x4d, 0xba, 0x46, 0x2d, 0x9b, 0x7a, 0x6c, 0xf9, 0xdf, 0x71, 0x3a, 0xb6, 0xf8, 0xa6, + 0x70, 0xf9, 0x1f, 0x38, 0x1d, 0x75, 0x17, 0xc7, 0x72, 0xf2, 0x29, 0x18, 0xab, 0xf7, 0x76, 0x10, + 0x35, 0x1b, 0x7d, 0xf7, 0x7e, 0x6f, 0xa7, 0x11, 0x43, 0x97, 0x68, 0xe4, 0x2a, 0x8c, 0xdd, 0xa7, + 0x9e, 0x1f, 0xed, 0x93, 0x78, 0x4a, 0x3c, 0xe0, 0x20, 0x95, 0x40, 0x60, 0x91, 0x5b, 0xd1, 0x5e, + 0x2d, 0xce, 0xb7, 0x99, 0xd8, 0x0e, 0x19, 0x2d, 0x95, 0xb6, 0x80, 0xa8, 0x4b, 0x45, 0x62, 0x19, + 0x3f, 0x9d, 0x85, 0x62, 0xc5, 0x0a, 0xac, 0x1d, 0xcb, 0x17, 0xe3, 0x79, 0xff, 0x3a, 0xdb, 0xfd, + 0x95, 0x8e, 0xe2, 0xee, 0xcf, 0x5a, 0xfe, 0x91, 0xbb, 0xf7, 0x52, 0xbc, 0x7b, 0x13, 0xec, 0xb0, + 0x15, 0xdd, 0x8b, 0x3a, 0xf5, 0xce, 0xf1, 0x9d, 0x2a, 0x8a, 0x4e, 0x15, 0x64, 0xa7, 0xa2, 0xae, + 0x90, 0x77, 0x20, 0x5f, 0xef, 0xd2, 0xa6, 0xd8, 0x44, 0xe4, 0x89, 0xa1, 0x77, 0x8e, 0x21, 0xdc, + 0xbf, 0xbe, 0x32, 0x29, 0xd8, 0xe4, 0xfd, 0x2e, 0x6d, 0x9a, 0x48, 0xa6, 0x7c, 0x34, 0xff, 0x20, + 0x07, 0xf3, 0x69, 0x64, 0x6a, 0x3f, 0x46, 0x07, 0xf4, 0xe3, 0x12, 0x14, 0xd8, 0x69, 0xce, 0x0e, + 0x4c, 0xdc, 0x2e, 0xc6, 0xb9, 0x90, 0xb2, 0x2f, 0x60, 0x66, 0x58, 0x4a, 0x2e, 0x84, 0xc2, 0x41, + 0x21, 0xe2, 0x27, 0x84, 0x03, 0x29, 0x12, 0xb0, 0xb9, 0x96, 0x9f, 0x30, 0xca, 0x10, 0xd1, 0xb0, + 0x48, 0x70, 0x34, 0xd7, 0x9e, 0x80, 0x68, 0x87, 0x8b, 0x3c, 0x14, 0x56, 0xa1, 0x20, 0xbb, 0xb5, + 0x30, 0x89, 0x8c, 0x66, 0x63, 0x83, 0x74, 0xff, 0x3a, 0x9f, 0x4c, 0x5b, 0xfc, 0x56, 0xd9, 0x48, + 0x1c, 0x72, 0x1d, 0x0a, 0x35, 0xcf, 0x7d, 0x74, 0x58, 0xad, 0xf8, 0x0b, 0x53, 0xe7, 0x73, 0x97, + 0xc6, 0x57, 0xce, 0x3c, 0x3e, 0x5a, 0x9a, 0xeb, 0x32, 0x58, 0xc3, 0xb1, 0xd5, 0x33, 0x38, 0x44, + 0xbc, 0x9d, 0x2f, 0x64, 0x8a, 0xd9, 0xdb, 0xf9, 0x42, 0xb6, 0x98, 0xbb, 0x9d, 0x2f, 0xe4, 0x8a, + 0xf9, 0xdb, 0xf9, 0x42, 0xbe, 0x38, 0x72, 0x3b, 0x5f, 0x18, 0x29, 0x8e, 0xde, 0xce, 0x17, 0xc6, + 0x8b, 0x70, 0x3b, 0x5f, 0x98, 0x28, 0x4e, 0x6a, 0x72, 0x00, 0x32, 0x08, 0xdc, 0xa6, 0xdb, 0x32, + 0x73, 0xf7, 0xcc, 0xaa, 0x39, 0x5a, 0x2e, 0x95, 0xa9, 0x17, 0x98, 0xb9, 0xd2, 0x76, 0xdd, 0x9c, + 0xaa, 0x1c, 0x76, 0xac, 0xb6, 0xd3, 0xe4, 0x07, 0xa6, 0x99, 0xbb, 0x55, 0xae, 0x19, 0x25, 0x98, + 0x8e, 0xfa, 0xb2, 0xee, 0xf8, 0x01, 0xb9, 0x0a, 0xe3, 0x12, 0xc2, 0x36, 0xba, 0x5c, 0x6a, 0xaf, + 0xcd, 0x08, 0xc7, 0xf8, 0xed, 0x2c, 0x40, 0x54, 0xf2, 0x94, 0x7e, 0x0b, 0x9f, 0xd1, 0xbe, 0x85, + 0x53, 0xf1, 0x6f, 0xa1, 0xef, 0x57, 0x40, 0xde, 0x83, 0x51, 0x26, 0x16, 0xf4, 0xa4, 0xb0, 0x74, + 0x26, 0x4e, 0x8a, 0x85, 0xf7, 0xaf, 0xaf, 0x4c, 0x0b, 0xe2, 0x51, 0x1f, 0x21, 0xa6, 0x20, 0x53, + 0x3e, 0xa3, 0x9f, 0x1b, 0x8b, 0x26, 0x43, 0x7c, 0x40, 0x97, 0x20, 0x9c, 0x50, 0x31, 0xa0, 0xf8, + 0x65, 0x74, 0xe5, 0x24, 0x87, 0xa5, 0xe4, 0x2c, 0xb0, 0x09, 0x17, 0x83, 0x3a, 0xf6, 0xf8, 0x68, + 0x29, 0xd7, 0xf3, 0x1c, 0x5c, 0x04, 0xe4, 0x2a, 0x88, 0x65, 0x20, 0x06, 0x90, 0xad, 0xbe, 0xd9, + 0xa6, 0xd5, 0x68, 0x52, 0x2f, 0xd0, 0x84, 0x30, 0x81, 0x46, 0xba, 0xa0, 0x2f, 0x95, 0x85, 0x3c, + 0x2e, 0x83, 0x4b, 0xa9, 0xa3, 0x72, 0x45, 0x43, 0xe5, 0x02, 0xe6, 0x79, 0x79, 0x2a, 0xd9, 0xbc, + 0xac, 0x91, 0x10, 0x36, 0xf5, 0x0a, 0xc8, 0x75, 0x60, 0x2b, 0x54, 0x8c, 0x3e, 0x88, 0x7a, 0x4a, + 0xdb, 0xf5, 0x95, 0x53, 0x82, 0xd3, 0x94, 0xf5, 0x50, 0x25, 0x67, 0xd8, 0xe4, 0x2d, 0x60, 0x4b, + 0x58, 0x8c, 0x3b, 0x11, 0x44, 0xb7, 0xca, 0xb5, 0x72, 0xcb, 0xed, 0xd9, 0xf5, 0x2f, 0xac, 0x47, + 0xc4, 0x7b, 0xcd, 0xae, 0x4a, 0x7c, 0xab, 0x5c, 0x23, 0x6f, 0xc1, 0x48, 0xe9, 0xeb, 0x3d, 0x8f, + 0x0a, 0xf9, 0x64, 0x52, 0xd6, 0xc9, 0x60, 0x2b, 0x67, 0x04, 0xe1, 0x8c, 0xc5, 0x7e, 0xaa, 0x72, + 0x1d, 0x96, 0xb3, 0x9a, 0xb7, 0xd6, 0xeb, 0x42, 0xf6, 0x20, 0xb1, 0x61, 0xd9, 0x5a, 0x57, 0x9a, + 0x1d, 0x68, 0xbd, 0x66, 0x54, 0xe4, 0x2a, 0x64, 0x4b, 0x15, 0xbc, 0x1c, 0x4d, 0x2c, 0x8f, 0xcb, + 0x6a, 0x2b, 0x2b, 0xf3, 0x82, 0x64, 0xd2, 0x52, 0x3f, 0x83, 0x6c, 0xa9, 0x42, 0x56, 0x60, 0xe4, + 0xee, 0x61, 0xfd, 0x0b, 0xeb, 0x62, 0x33, 0x9b, 0x93, 0xeb, 0x9a, 0xc1, 0x36, 0xf1, 0xb3, 0xf7, + 0xa3, 0x16, 0xb7, 0x0f, 0xfd, 0xaf, 0xb5, 0xd4, 0x16, 0x23, 0x1a, 0xa9, 0xc1, 0x78, 0xc9, 0x6e, + 0x3b, 0x9d, 0x7b, 0x3e, 0xf5, 0x16, 0x26, 0x90, 0xcf, 0x42, 0xac, 0xdd, 0x61, 0xf9, 0xca, 0xc2, + 0xe3, 0xa3, 0xa5, 0x79, 0x8b, 0xfd, 0x6c, 0xf4, 0x7c, 0xea, 0x29, 0xdc, 0x22, 0x26, 0xa4, 0x06, + 0x70, 0xd7, 0xed, 0xec, 0xb9, 0xa5, 0xa0, 0x65, 0xf9, 0xb1, 0xed, 0x31, 0x2a, 0x08, 0xc5, 0x87, + 0x53, 0x6d, 0x06, 0x6b, 0x58, 0x0c, 0xa8, 0x30, 0x54, 0x78, 0x90, 0x9b, 0x30, 0xba, 0xe9, 0x59, + 0xcd, 0x16, 0x5d, 0x98, 0x42, 0x6e, 0xf3, 0x82, 0x1b, 0x07, 0xca, 0x9e, 0x2e, 0x08, 0x86, 0x45, + 0x17, 0xc1, 0xea, 0x05, 0x86, 0x23, 0x2e, 0x6e, 0x03, 0x49, 0xae, 0xc9, 0x94, 0xab, 0xc1, 0xab, + 0xea, 0xd5, 0x20, 0xfa, 0xe8, 0xcb, 0x6e, 0xbb, 0x6d, 0x75, 0x6c, 0xa4, 0xbd, 0xbf, 0xac, 0xde, + 0x18, 0xbe, 0x06, 0xb3, 0x89, 0xc1, 0x3a, 0xe6, 0xe6, 0xf7, 0x2e, 0xcc, 0x54, 0xe8, 0xae, 0xd5, + 0x6b, 0x05, 0xe1, 0x49, 0xc2, 0x3f, 0x51, 0xbc, 0x83, 0xd9, 0xbc, 0xa8, 0x21, 0x8f, 0x0f, 0x33, + 0x8e, 0x6c, 0xbc, 0x03, 0x53, 0x5a, 0xf7, 0xd9, 0x55, 0xa1, 0xd4, 0xb3, 0x9d, 0x00, 0x27, 0x32, + 0x13, 0x5d, 0x15, 0x2c, 0x06, 0xc4, 0xe9, 0x32, 0x23, 0x04, 0xe3, 0x6f, 0xa9, 0xd2, 0x8a, 0xd8, + 0x89, 0xd8, 0x0d, 0x5b, 0xec, 0x07, 0x99, 0x48, 0x76, 0x4a, 0xec, 0x07, 0xe1, 0x6e, 0x70, 0x99, + 0x7f, 0x9b, 0xd9, 0xc4, 0xb7, 0x39, 0x21, 0x66, 0x22, 0x67, 0x3d, 0xf4, 0xf9, 0x17, 0x19, 0xae, + 0xd4, 0xdc, 0x47, 0x5f, 0xa9, 0xef, 0xc1, 0xe4, 0x5d, 0xab, 0x63, 0xed, 0x51, 0x9b, 0xf5, 0x80, + 0xef, 0x3d, 0xe3, 0x2b, 0xcf, 0x3e, 0x3e, 0x5a, 0x3a, 0xd3, 0xe6, 0x70, 0xec, 0xa5, 0xba, 0x88, + 0x34, 0x02, 0x72, 0x4d, 0x7e, 0xd9, 0x23, 0x29, 0x5f, 0xf6, 0x94, 0xa8, 0x7d, 0x04, 0xbf, 0x6c, + 0xf1, 0x3d, 0x1b, 0xff, 0x5b, 0x01, 0xfb, 0x48, 0x5e, 0x83, 0x51, 0x93, 0xee, 0xb1, 0xa3, 0x26, + 0x13, 0x4d, 0x92, 0x87, 0x10, 0x75, 0x60, 0x38, 0x0e, 0xca, 0x19, 0xd4, 0xf6, 0xf7, 0x9d, 0xdd, + 0x40, 0x8c, 0x4e, 0x28, 0x67, 0x08, 0xb0, 0x22, 0x67, 0x08, 0x88, 0x7e, 0x89, 0xe5, 0x30, 0xb6, + 0xfb, 0x99, 0x95, 0xba, 0x18, 0x34, 0x39, 0xc2, 0x66, 0x45, 0xd9, 0x46, 0x3c, 0x4d, 0x4a, 0x60, + 0xd8, 0xe4, 0x06, 0x8c, 0x97, 0x9a, 0x4d, 0xb7, 0xa7, 0xdc, 0x19, 0xf9, 0x77, 0xcb, 0x81, 0xba, + 0xb6, 0x24, 0x42, 0x25, 0x75, 0x98, 0x58, 0x65, 0x17, 0x2d, 0xa7, 0x6c, 0x35, 0xf7, 0xe5, 0x20, + 0xc9, 0x3d, 0x4c, 0x29, 0x89, 0xbe, 0x5c, 0x8a, 0xc0, 0x26, 0x03, 0xaa, 0xea, 0x07, 0x05, 0x97, + 0x6c, 0xc1, 0x44, 0x9d, 0x36, 0x3d, 0x1a, 0xd4, 0x03, 0xd7, 0xa3, 0xb1, 0x2d, 0x59, 0x29, 0x59, + 0x79, 0x5e, 0xde, 0xf5, 0x7c, 0x04, 0x36, 0x7c, 0x06, 0x55, 0xb9, 0x2a, 0xc8, 0x5c, 0x68, 0x6f, + 0xbb, 0xde, 0x61, 0x65, 0x45, 0x6c, 0xd3, 0xd1, 0x99, 0xce, 0xc1, 0xaa, 0xd0, 0xce, 0x20, 0xf6, + 0x8e, 0x2e, 0xb4, 0x73, 0x2c, 0x9c, 0xa9, 0x4a, 0x1d, 0x65, 0x2b, 0xb1, 0x69, 0xcf, 0x44, 0xa3, + 0x8c, 0x60, 0x65, 0xa6, 0x6c, 0x1f, 0x25, 0x33, 0x6d, 0xa6, 0x04, 0x16, 0xe9, 0x02, 0x91, 0xb3, + 0xc6, 0x05, 0xdd, 0x16, 0xf5, 0x7d, 0xb1, 0x97, 0x9f, 0x8d, 0x4d, 0x7e, 0x84, 0xb0, 0xf2, 0x92, + 0x60, 0x7e, 0x4e, 0x2e, 0x03, 0x71, 0x4f, 0x63, 0x85, 0x4a, 0x3d, 0x29, 0xbc, 0xc9, 0x9b, 0x00, + 0xab, 0x8f, 0x02, 0xea, 0x75, 0xac, 0x56, 0xa8, 0x12, 0x43, 0xa5, 0x10, 0x15, 0x50, 0x7d, 0xa2, + 0x15, 0x64, 0x52, 0x86, 0xa9, 0x92, 0xef, 0xf7, 0xda, 0xd4, 0x74, 0x5b, 0xb4, 0x64, 0x6e, 0xe0, + 0xbe, 0x3f, 0xbe, 0x72, 0xee, 0xf1, 0xd1, 0xd2, 0x59, 0x0b, 0x0b, 0x1a, 0x9e, 0xdb, 0xa2, 0x0d, + 0xcb, 0x53, 0x57, 0xb7, 0x4e, 0x43, 0x36, 0x01, 0x36, 0xbb, 0xb4, 0x53, 0xa7, 0x96, 0xd7, 0xdc, + 0x8f, 0x6d, 0xf3, 0x51, 0xc1, 0xca, 0x73, 0xa2, 0x87, 0xf3, 0x6e, 0x97, 0x76, 0x7c, 0x84, 0xa9, + 0xad, 0x8a, 0x30, 0xc9, 0x36, 0xcc, 0x54, 0x4b, 0x77, 0x6b, 0x6e, 0xcb, 0x69, 0x1e, 0x0a, 0xc9, + 0x69, 0x1a, 0x15, 0x85, 0xa7, 0x05, 0xd7, 0x58, 0x29, 0xdf, 0x9e, 0x1c, 0xab, 0xdd, 0xe8, 0x22, + 0xb4, 0x21, 0xe4, 0xa7, 0x38, 0x17, 0xf2, 0x3e, 0x5b, 0x83, 0x3e, 0x13, 0x06, 0xb7, 0xac, 0x3d, + 0x7f, 0x61, 0x46, 0xd3, 0x83, 0x95, 0xb6, 0xeb, 0x57, 0x94, 0x52, 0x2e, 0xa6, 0x2c, 0xf2, 0x85, + 0x88, 0xd0, 0x46, 0x60, 0xed, 0xf9, 0xfa, 0x42, 0x0c, 0xb1, 0x17, 0xdf, 0x85, 0x62, 0x9c, 0xf8, + 0x24, 0xaa, 0xa6, 0xdb, 0xf9, 0xc2, 0x54, 0x71, 0x5a, 0x69, 0xf1, 0xea, 0x23, 0xc7, 0x0f, 0x7c, + 0xe3, 0x07, 0xb5, 0xaf, 0x86, 0x7d, 0xd1, 0x77, 0xe8, 0x61, 0xcd, 0xa3, 0xbb, 0xce, 0x23, 0xb1, + 0x01, 0xe1, 0x17, 0x7d, 0x40, 0x0f, 0x1b, 0x5d, 0x84, 0xaa, 0x5f, 0x74, 0x88, 0x4a, 0x3e, 0x0d, + 0x85, 0x3b, 0x77, 0xeb, 0x77, 0xe8, 0x61, 0xb5, 0x22, 0x0e, 0x17, 0x4e, 0xd6, 0xf6, 0x1b, 0x8c, + 0x54, 0x5b, 0x1f, 0x21, 0xa6, 0xb1, 0x12, 0xed, 0x5e, 0xac, 0xe6, 0x72, 0xab, 0xe7, 0x07, 0xd4, + 0xab, 0x56, 0xd4, 0x9a, 0x9b, 0x1c, 0x18, 0xdb, 0x4b, 0x42, 0x54, 0xe3, 0x1f, 0x64, 0x71, 0xe7, + 0x62, 0x8b, 0xb4, 0xda, 0xf1, 0x03, 0xab, 0xd3, 0xa4, 0x21, 0x03, 0x5c, 0xa4, 0x8e, 0x80, 0xc6, + 0x16, 0x69, 0x84, 0xac, 0x57, 0x9d, 0x1d, 0xba, 0x6a, 0x56, 0xa5, 0xd4, 0x36, 0x08, 0xd5, 0xb6, + 0xa8, 0xd2, 0x13, 0xd0, 0x58, 0x95, 0x11, 0x32, 0xb9, 0x08, 0x63, 0xd5, 0xd2, 0xdd, 0x52, 0x2f, + 0xd8, 0xc7, 0x7d, 0xb3, 0xc0, 0x65, 0x6a, 0xb6, 0xc2, 0xac, 0x5e, 0xb0, 0x6f, 0xca, 0x42, 0x72, + 0x15, 0xef, 0x2a, 0x1d, 0x1a, 0x70, 0xa5, 0xaa, 0x38, 0x28, 0x7d, 0x0e, 0x8a, 0x5d, 0x55, 0x18, + 0x88, 0xbc, 0x02, 0x23, 0xf7, 0x6b, 0xe5, 0x6a, 0x45, 0x5c, 0x76, 0xf1, 0xf4, 0x78, 0xd0, 0x6d, + 0xea, 0x2d, 0xe1, 0x28, 0xc6, 0x6f, 0x66, 0xa2, 0x3d, 0x89, 0x5c, 0xd4, 0x64, 0x08, 0x54, 0x94, + 0x30, 0x19, 0x42, 0x55, 0x94, 0xa0, 0x34, 0x61, 0x02, 0x29, 0xf7, 0xfc, 0xc0, 0x6d, 0xaf, 0x76, + 0xec, 0xae, 0xeb, 0x74, 0x02, 0xa4, 0xe2, 0xa3, 0x66, 0x3c, 0x3e, 0x5a, 0x7a, 0xbe, 0x89, 0xa5, + 0x0d, 0x2a, 0x8a, 0x1b, 0x31, 0x2e, 0x29, 0xd4, 0x1f, 0x63, 0x20, 0x8d, 0xdf, 0xc9, 0x6a, 0x67, + 0x09, 0x6b, 0x9e, 0x49, 0xbb, 0x2d, 0xa7, 0x89, 0xd7, 0xe7, 0x5b, 0x9e, 0xdb, 0xeb, 0x86, 0xcb, + 0x01, 0x9b, 0xe7, 0x45, 0xa5, 0x8d, 0x3d, 0x56, 0xac, 0xf3, 0x4e, 0xa1, 0x26, 0x9f, 0x87, 0x49, + 0x76, 0xac, 0x8b, 0x9f, 0xfe, 0x42, 0x16, 0x67, 0xe2, 0x39, 0x54, 0x79, 0xf9, 0xd4, 0x0b, 0xd9, + 0x68, 0xf2, 0x80, 0x4a, 0x41, 0x6c, 0x58, 0xd8, 0xf2, 0xac, 0x8e, 0xef, 0x04, 0xab, 0x9d, 0xa6, + 0x77, 0x88, 0x62, 0xc8, 0x6a, 0xc7, 0xda, 0x69, 0x51, 0x1b, 0xbb, 0x5b, 0x58, 0xb9, 0xf4, 0xf8, + 0x68, 0xe9, 0xc5, 0x80, 0xe3, 0x34, 0x68, 0x88, 0xd4, 0xa0, 0x1c, 0x4b, 0xe1, 0xdc, 0x97, 0x13, + 0x13, 0x5b, 0xe4, 0xb0, 0xe2, 0xe3, 0x07, 0x3f, 0x91, 0x51, 0x6c, 0x09, 0x67, 0x83, 0x6d, 0x45, + 0x6a, 0x33, 0x55, 0x02, 0xe3, 0x5f, 0x65, 0xa2, 0xd3, 0x8e, 0xbc, 0x0d, 0x13, 0x62, 0xa9, 0x2b, + 0xeb, 0x02, 0xb7, 0x2b, 0xf9, 0x5d, 0xc4, 0x66, 0x56, 0x45, 0x67, 0x97, 0xec, 0x52, 0x79, 0x5d, + 0x59, 0x1b, 0x78, 0xc9, 0xb6, 0x9a, 0xad, 0x38, 0x95, 0x44, 0x63, 0x8b, 0x60, 0x6b, 0xbd, 0xae, + 0x8f, 0x0a, 0x2e, 0x82, 0xa0, 0xe5, 0xa7, 0x0c, 0x83, 0x82, 0xfc, 0xf1, 0x3b, 0xfe, 0x5f, 0x67, + 0xd2, 0x0e, 0x55, 0xb2, 0x02, 0x53, 0xdb, 0xae, 0x77, 0x80, 0xf3, 0xab, 0x0c, 0x02, 0xce, 0xfc, + 0x43, 0x59, 0x10, 0xef, 0x90, 0x4e, 0xa2, 0xb6, 0x4d, 0x19, 0x0d, 0xbd, 0x6d, 0x31, 0x0e, 0x1a, + 0x01, 0x9b, 0x87, 0x90, 0x63, 0xf8, 0x75, 0xe0, 0x3c, 0x44, 0x4d, 0xd0, 0x96, 0xb0, 0x8a, 0x6e, + 0xfc, 0xc3, 0x8c, 0x7a, 0x78, 0xb2, 0x41, 0xae, 0xb8, 0x6d, 0xcb, 0xe9, 0x28, 0xdd, 0xe1, 0xef, + 0x3b, 0x08, 0x8d, 0xb7, 0x44, 0x41, 0x26, 0xd7, 0xa1, 0xc0, 0x7f, 0x85, 0x9b, 0x24, 0xaa, 0x90, + 0x04, 0xa1, 0xbe, 0xc3, 0x4b, 0xc4, 0xc4, 0xcc, 0xe4, 0x4e, 0x3a, 0x33, 0xdf, 0xc8, 0xc0, 0x84, + 0x72, 0x9f, 0x66, 0x7b, 0x75, 0xcd, 0x73, 0x3f, 0xa4, 0xcd, 0x40, 0x3f, 0x26, 0xba, 0x1c, 0x18, + 0xdb, 0xab, 0x43, 0xd4, 0xd8, 0xf1, 0x90, 0x3d, 0xc1, 0xf1, 0x60, 0xfc, 0xcb, 0x8c, 0x90, 0xe6, + 0x87, 0xde, 0x23, 0xf5, 0xfd, 0x2c, 0x7b, 0x92, 0x83, 0xe1, 0xf3, 0x30, 0x62, 0x52, 0xdb, 0xf1, + 0x85, 0x24, 0x3e, 0xab, 0xde, 0x1c, 0xb0, 0x20, 0xba, 0xbc, 0x78, 0xec, 0xa7, 0xba, 0xab, 0x63, + 0x39, 0x13, 0xb9, 0xaa, 0xfe, 0xcd, 0x16, 0x7d, 0xe4, 0xf0, 0x95, 0x2c, 0x0e, 0x18, 0x14, 0xb9, + 0x1c, 0xbf, 0xb1, 0xcb, 0x4a, 0x84, 0xec, 0xa7, 0xae, 0x5a, 0x8d, 0xc6, 0x78, 0x1f, 0x20, 0xaa, + 0x92, 0xdc, 0x81, 0xa2, 0xf8, 0xb6, 0x9d, 0xce, 0x1e, 0x17, 0x1f, 0xc4, 0x18, 0x2c, 0x3d, 0x3e, + 0x5a, 0x7a, 0xb6, 0x19, 0x96, 0x09, 0xf9, 0x48, 0xe1, 0x9b, 0x20, 0x34, 0xfe, 0x9d, 0x2c, 0x64, + 0x4b, 0x38, 0x21, 0x77, 0xe8, 0x61, 0x60, 0xed, 0xdc, 0x74, 0x5a, 0xda, 0x4a, 0x3c, 0x40, 0x68, + 0x63, 0xd7, 0xd1, 0x2e, 0xd6, 0x0a, 0x32, 0x5b, 0x89, 0x77, 0xbc, 0x9d, 0x37, 0x90, 0x50, 0x59, + 0x89, 0x07, 0xde, 0xce, 0x1b, 0x71, 0xb2, 0x10, 0x91, 0x18, 0x30, 0xca, 0x57, 0xa5, 0x58, 0x83, + 0xf0, 0xf8, 0x68, 0x69, 0x94, 0x2f, 0x5e, 0x53, 0x94, 0x90, 0xb3, 0x90, 0xab, 0xd7, 0x36, 0xc4, + 0xf6, 0x81, 0x0a, 0x2c, 0xbf, 0xdb, 0x31, 0x19, 0x8c, 0xd5, 0xb9, 0x5e, 0x29, 0xd5, 0xf0, 0xca, + 0x3a, 0x12, 0xd5, 0xd9, 0xb2, 0xad, 0x6e, 0xfc, 0xd2, 0x1a, 0x22, 0x92, 0x77, 0x60, 0xe2, 0x4e, + 0xa5, 0xbc, 0xe6, 0xfa, 0xfc, 0xd3, 0x1f, 0x8d, 0x16, 0xff, 0x81, 0xdd, 0x6c, 0xa0, 0xce, 0x38, + 0xbe, 0x87, 0x2a, 0xf8, 0xc6, 0x2f, 0x67, 0x60, 0x42, 0xd1, 0xe8, 0x90, 0x4f, 0x8b, 0xa7, 0xbc, + 0x8c, 0x26, 0xab, 0x2a, 0x18, 0xac, 0x94, 0x5f, 0xff, 0xdb, 0xae, 0x4d, 0xc5, 0xc3, 0x5e, 0x74, + 0xd5, 0xce, 0x0e, 0x73, 0xd5, 0x7e, 0x13, 0x80, 0xaf, 0x01, 0x6c, 0xb2, 0x72, 0x16, 0x2b, 0x46, + 0x00, 0xea, 0xbc, 0x44, 0xc8, 0x86, 0x09, 0x93, 0xea, 0x35, 0x9b, 0x6d, 0x9f, 0xe2, 0x79, 0x42, + 0x28, 0x4f, 0x95, 0xed, 0x53, 0x70, 0x4b, 0x3e, 0x97, 0xe8, 0x24, 0xc6, 0xa7, 0x55, 0x15, 0xcf, + 0xb0, 0x1f, 0xa0, 0xf1, 0x17, 0x33, 0xd1, 0xe7, 0x7e, 0xff, 0x1a, 0x79, 0x0b, 0x46, 0xf9, 0x73, + 0x90, 0x78, 0x35, 0x3b, 0x15, 0x5e, 0x93, 0xd4, 0xb7, 0x22, 0xae, 0x5b, 0xfd, 0x5d, 0xfe, 0x98, + 0xfc, 0x8c, 0x29, 0x48, 0x42, 0xb5, 0xac, 0xae, 0xa1, 0x91, 0xdc, 0x51, 0x01, 0x79, 0x2d, 0x4d, + 0x2d, 0x6b, 0xfc, 0x56, 0x1e, 0xa6, 0x75, 0x34, 0xf5, 0xcd, 0x28, 0x33, 0xd4, 0x9b, 0xd1, 0xe7, + 0xa1, 0xc0, 0xc6, 0xc3, 0x69, 0x52, 0x29, 0x76, 0xbc, 0x88, 0xca, 0x6a, 0x01, 0xd3, 0xde, 0x42, + 0xa1, 0x7e, 0xe8, 0x07, 0xb4, 0xcd, 0x6e, 0x4d, 0x66, 0x48, 0x45, 0x96, 0x95, 0x87, 0x8d, 0x5c, + 0x74, 0x12, 0xcb, 0x87, 0x0d, 0x75, 0xdd, 0x86, 0x4f, 0x1c, 0xaf, 0xc3, 0x28, 0x93, 0x3e, 0xc3, + 0x4b, 0x3d, 0xb6, 0x92, 0x09, 0xa6, 0x31, 0xfb, 0x07, 0x8e, 0x44, 0xb6, 0xa1, 0xb0, 0x6e, 0xf9, + 0x41, 0x9d, 0xd2, 0xce, 0x10, 0xaf, 0xc1, 0x4b, 0x62, 0xa8, 0xe6, 0xf0, 0xa9, 0xd5, 0xa7, 0xb4, + 0x13, 0x7b, 0xce, 0x0b, 0x99, 0x91, 0x2f, 0x03, 0x94, 0xdd, 0x4e, 0xe0, 0xb9, 0xad, 0x75, 0x77, + 0x6f, 0x61, 0x14, 0x6f, 0x53, 0xcf, 0xc7, 0x26, 0x20, 0x42, 0xe0, 0x17, 0xaa, 0x50, 0x65, 0xd0, + 0xe4, 0x05, 0x8d, 0x96, 0xbb, 0xa7, 0xae, 0xd7, 0x08, 0x9f, 0xdc, 0x84, 0xa2, 0xbc, 0xaa, 0xde, + 0xeb, 0xee, 0x79, 0xb8, 0x40, 0xc6, 0xa2, 0xe3, 0x95, 0x3e, 0x0a, 0x1a, 0x3d, 0x01, 0x57, 0x77, + 0xb4, 0x38, 0x0d, 0xf9, 0x12, 0x9c, 0x89, 0xc3, 0xe4, 0x2c, 0x17, 0x22, 0xc1, 0x53, 0x65, 0x97, + 0xb2, 0xee, 0xfb, 0xb1, 0x30, 0xbe, 0x97, 0x85, 0x33, 0x7d, 0x3a, 0xcb, 0xbe, 0x07, 0x3c, 0x56, + 0x95, 0xef, 0x21, 0x76, 0x9a, 0x72, 0x83, 0x96, 0xf3, 0x68, 0xfa, 0xc0, 0x56, 0x70, 0x7e, 0xa5, + 0x18, 0x37, 0x7d, 0x40, 0xc3, 0x87, 0xdb, 0x90, 0x67, 0x53, 0x34, 0xc4, 0x63, 0xac, 0xd4, 0x52, + 0x4c, 0x07, 0x8e, 0xba, 0x7c, 0x70, 0xea, 0x90, 0x07, 0xf9, 0x34, 0xe4, 0xb6, 0xb6, 0xd6, 0x71, + 0xed, 0xe4, 0xb0, 0xef, 0x53, 0x41, 0xd0, 0xd2, 0x96, 0xea, 0x14, 0xa3, 0xbd, 0x12, 0xbe, 0xdd, + 0x33, 0x74, 0xf2, 0xc5, 0x98, 0xf9, 0xc8, 0x2b, 0x83, 0x27, 0x7a, 0x78, 0x6b, 0x92, 0x8f, 0x63, + 0xa0, 0xf1, 0x37, 0xb2, 0xd1, 0x37, 0x7c, 0xd3, 0x69, 0x05, 0xd4, 0x23, 0x8b, 0xfc, 0x93, 0x8c, + 0xee, 0xa9, 0x66, 0xf8, 0x9b, 0x2c, 0x44, 0xdf, 0x37, 0x67, 0x15, 0x7e, 0xc8, 0xaf, 0x28, 0x1f, + 0x72, 0x0e, 0x3f, 0xe4, 0xe9, 0xbe, 0x9f, 0xec, 0x2b, 0x29, 0xeb, 0x12, 0x3f, 0xc4, 0x94, 0xb5, + 0xf7, 0x22, 0x4c, 0x6d, 0xb8, 0xab, 0x8f, 0x82, 0x10, 0x91, 0x7d, 0x80, 0x05, 0x53, 0x07, 0x32, + 0x8e, 0x9b, 0x2d, 0x9b, 0x7a, 0x5b, 0xfb, 0x56, 0x47, 0x7b, 0x0d, 0x35, 0x13, 0x70, 0x86, 0xbb, + 0x41, 0x1f, 0xea, 0xb8, 0x63, 0x1c, 0x37, 0x0e, 0x37, 0x7e, 0x28, 0x2b, 0x07, 0xe3, 0xfe, 0xf2, + 0x53, 0xfa, 0xea, 0xf6, 0x86, 0xf6, 0xea, 0x36, 0x17, 0xea, 0x0b, 0xc3, 0x27, 0xe4, 0xe5, 0x63, + 0x5e, 0x9e, 0xff, 0x9b, 0x11, 0x98, 0x54, 0xd1, 0xd9, 0x38, 0x94, 0x6c, 0xdb, 0x53, 0xc7, 0xc1, + 0xb2, 0x6d, 0xcf, 0x44, 0xa8, 0xf6, 0xd0, 0x9c, 0x1b, 0xf8, 0xd0, 0xfc, 0x15, 0x18, 0x2f, 0xb7, + 0x6d, 0xed, 0xf9, 0xcb, 0x48, 0x69, 0xde, 0x95, 0x10, 0x89, 0x7f, 0x0b, 0xa1, 0x1a, 0xac, 0xd9, + 0xb6, 0x93, 0x8f, 0x5e, 0x11, 0x4b, 0xed, 0x8d, 0x7a, 0xe4, 0xe3, 0xbc, 0x51, 0xdf, 0x80, 0xf1, + 0x7b, 0x3e, 0xdd, 0xea, 0x75, 0x3a, 0xb4, 0x85, 0xcb, 0xaa, 0xc0, 0x65, 0xf2, 0x9e, 0x4f, 0x1b, + 0x01, 0x42, 0xd5, 0x06, 0x84, 0xa8, 0xea, 0x04, 0x8f, 0x0d, 0x98, 0xe0, 0xeb, 0x50, 0xa8, 0x51, + 0xea, 0xe1, 0x98, 0x4e, 0x44, 0xa2, 0x57, 0x97, 0x52, 0xaf, 0xc1, 0x06, 0x56, 0x7b, 0xbb, 0x16, + 0x88, 0xda, 0x83, 0xf7, 0xe4, 0x90, 0x0f, 0xde, 0xe4, 0x05, 0x98, 0xec, 0xf6, 0x76, 0x5a, 0x4e, + 0x13, 0xf9, 0x8a, 0x97, 0x72, 0x73, 0x82, 0xc3, 0x18, 0x5b, 0x9f, 0x7c, 0x11, 0xa6, 0xf0, 0x2e, + 0x12, 0x2e, 0xb9, 0x69, 0xed, 0x9d, 0x48, 0x2b, 0xe3, 0x92, 0x4e, 0x93, 0x81, 0x1a, 0x29, 0x06, + 0x1d, 0x3a, 0xa3, 0xc5, 0x3a, 0x4c, 0xeb, 0x33, 0xf9, 0x04, 0x9e, 0x8b, 0xc2, 0xc7, 0xfb, 0x42, + 0x71, 0xfc, 0x76, 0xbe, 0x00, 0xc5, 0x09, 0xfe, 0x6c, 0x6f, 0x42, 0x2d, 0xec, 0x93, 0x49, 0xee, + 0xf4, 0x76, 0xa8, 0xd7, 0xa1, 0x01, 0xf5, 0x85, 0xb0, 0xee, 0x9b, 0xf9, 0x52, 0xb7, 0xeb, 0x1b, + 0x7f, 0x37, 0x0b, 0x63, 0xa5, 0xed, 0x7a, 0xb5, 0xb3, 0xeb, 0xe2, 0xa3, 0x4f, 0xa8, 0xeb, 0x57, + 0x1f, 0x7d, 0x42, 0x5d, 0xbf, 0xaa, 0xe1, 0xbf, 0x9a, 0x72, 0xdd, 0x42, 0x53, 0x52, 0xe5, 0xba, + 0xa5, 0xe9, 0xe0, 0xa2, 0x67, 0x8f, 0xdc, 0x10, 0xcf, 0x1e, 0xa1, 0x96, 0x2b, 0x7f, 0xac, 0x96, + 0x8b, 0xbc, 0x05, 0x13, 0xd5, 0x4e, 0x40, 0xf7, 0xbc, 0x68, 0xa5, 0x87, 0x57, 0xbf, 0x10, 0xac, + 0x8a, 0xe0, 0x0a, 0x36, 0x5b, 0x46, 0x5c, 0xb3, 0x16, 0x6a, 0xd4, 0x70, 0x19, 0x71, 0x05, 0x5c, + 0xec, 0xd2, 0x2b, 0x11, 0x8d, 0x4a, 0x6c, 0x8d, 0xc8, 0xa7, 0x65, 0x2e, 0x7c, 0x4e, 0x47, 0xea, + 0x60, 0x36, 0xb0, 0x2b, 0xb3, 0xe9, 0x4f, 0xcb, 0xc6, 0x37, 0xb3, 0x30, 0x51, 0xea, 0x76, 0x9f, + 0x72, 0x03, 0x9f, 0xcf, 0x6a, 0xdb, 0xab, 0xbc, 0xb3, 0x84, 0xfd, 0x1a, 0xca, 0xb6, 0xe7, 0x57, + 0xb2, 0x30, 0x13, 0xa3, 0x50, 0x5b, 0x9f, 0x19, 0xd2, 0xac, 0x27, 0x3b, 0xa4, 0x59, 0x4f, 0x6e, + 0x38, 0xb3, 0x9e, 0xfc, 0xc7, 0xd9, 0x32, 0x5f, 0x86, 0x5c, 0xa9, 0xdb, 0x8d, 0x3f, 0x0f, 0x76, + 0xbb, 0xf7, 0xaf, 0xf3, 0x7b, 0xa7, 0xd5, 0xed, 0x9a, 0x0c, 0x43, 0xdb, 0xc7, 0x46, 0x87, 0xdc, + 0xc7, 0x8c, 0xd7, 0x61, 0x1c, 0x79, 0xa1, 0x31, 0xcd, 0x79, 0xc0, 0x8f, 0x59, 0xd8, 0xd1, 0x68, + 0x75, 0x89, 0xcf, 0xfc, 0xff, 0xcc, 0xc0, 0x08, 0xfe, 0x7e, 0x4a, 0xd7, 0xd8, 0xb2, 0xb6, 0xc6, + 0x8a, 0xca, 0x1a, 0x1b, 0x66, 0x75, 0xfd, 0x2f, 0x79, 0x1c, 0x2d, 0xb1, 0xae, 0x84, 0x0d, 0x4b, + 0x26, 0xc5, 0x86, 0xe5, 0x4d, 0x50, 0x76, 0x4d, 0x55, 0xab, 0xa3, 0x9c, 0x19, 0xea, 0x4d, 0x23, + 0x42, 0x26, 0x07, 0x71, 0x6b, 0x96, 0x1c, 0x4e, 0xc6, 0x85, 0x78, 0x53, 0x9f, 0x88, 0x21, 0xcb, + 0x1a, 0x90, 0x6a, 0xc7, 0xa7, 0xcd, 0x9e, 0x47, 0xeb, 0x07, 0x4e, 0xf7, 0x3e, 0xf5, 0x9c, 0xdd, + 0x43, 0xa1, 0x05, 0xc2, 0x73, 0xd9, 0x11, 0xa5, 0x0d, 0xff, 0xc0, 0xe9, 0xb2, 0xab, 0x88, 0xb3, + 0x7b, 0x68, 0xa6, 0xd0, 0x90, 0xf7, 0x60, 0xcc, 0xa4, 0x0f, 0x3d, 0x27, 0x90, 0x6f, 0xb4, 0xd3, + 0xe1, 0xc5, 0x19, 0xa1, 0xfc, 0x62, 0xe8, 0xf1, 0x1f, 0xea, 0xfc, 0x8b, 0x72, 0xb2, 0xcc, 0x37, + 0x3e, 0xfe, 0x16, 0x3b, 0x15, 0xf5, 0xb6, 0xb4, 0x5d, 0xef, 0xb7, 0xef, 0x91, 0xcb, 0x30, 0x82, + 0xbb, 0xa7, 0x90, 0x09, 0xd0, 0xb6, 0x19, 0xcf, 0x50, 0x75, 0x6b, 0x47, 0x0c, 0xf2, 0x3c, 0x40, + 0xa8, 0x66, 0xf7, 0x17, 0x0a, 0x78, 0x5a, 0x2b, 0x90, 0xf8, 0xd6, 0x3f, 0x7e, 0x92, 0xad, 0xff, + 0x93, 0x33, 0xe1, 0xf8, 0x3b, 0x59, 0xb8, 0x10, 0x6e, 0x67, 0x9b, 0x5e, 0xbd, 0x74, 0x77, 0xbd, + 0x6a, 0xd7, 0x84, 0xf4, 0x5f, 0xf3, 0xdc, 0x07, 0x0e, 0xbb, 0xfd, 0x5d, 0x3b, 0xe6, 0x63, 0x5c, + 0xe7, 0xab, 0x96, 0xab, 0xf8, 0xb2, 0xda, 0x63, 0xb7, 0x72, 0x6a, 0x88, 0xf7, 0xf8, 0x6e, 0x37, + 0xa1, 0xf1, 0x5b, 0x7b, 0xc6, 0x8c, 0x18, 0x90, 0xbf, 0x98, 0x81, 0xd3, 0xe9, 0x0d, 0x11, 0x37, + 0xc2, 0x25, 0x29, 0x79, 0xf6, 0x69, 0xed, 0xca, 0xcb, 0x8f, 0x8f, 0x96, 0x2e, 0xf8, 0x56, 0xbb, + 0xd5, 0x70, 0x6c, 0x5e, 0x9b, 0xd3, 0xa4, 0x8d, 0xae, 0x40, 0xd0, 0xea, 0xed, 0x53, 0x53, 0xf4, + 0x4d, 0xae, 0x00, 0x14, 0xa4, 0x6e, 0xc6, 0xf8, 0x7b, 0x19, 0x50, 0xd6, 0x53, 0xc1, 0xa4, 0xb6, + 0xe3, 0xd1, 0x66, 0x80, 0xfb, 0x59, 0x68, 0x9e, 0xcf, 0x61, 0x31, 0xcb, 0x06, 0x84, 0x91, 0x77, + 0x61, 0x8c, 0x6b, 0x72, 0xb8, 0x06, 0x25, 0x5a, 0x87, 0x42, 0xeb, 0xc3, 0x9d, 0x3b, 0x38, 0x86, + 0xba, 0x86, 0x05, 0x11, 0x93, 0x6e, 0x6f, 0x6f, 0x6f, 0x95, 0x5b, 0x96, 0xd3, 0xf6, 0xc5, 0x2e, + 0x86, 0x83, 0xfa, 0xe1, 0xc3, 0xa0, 0xd1, 0x44, 0xa8, 0x2a, 0xdd, 0x86, 0xa8, 0xc6, 0x2d, 0xa9, + 0x74, 0x3a, 0xc6, 0x3c, 0x67, 0x09, 0x46, 0xee, 0x47, 0x97, 0xcf, 0x95, 0xf1, 0xc7, 0x47, 0x4b, + 0x7c, 0xb1, 0x98, 0x1c, 0x6e, 0xfc, 0x58, 0x06, 0xa6, 0xf5, 0xd5, 0x44, 0xae, 0xc0, 0xa8, 0x30, + 0x92, 0xcf, 0xe0, 0x25, 0x9b, 0x8d, 0xc2, 0x28, 0x37, 0x8f, 0xd7, 0x8c, 0xe2, 0x05, 0x16, 0xdb, + 0x87, 0x05, 0x07, 0xa1, 0x45, 0xc2, 0x7d, 0xb8, 0xc9, 0x41, 0xa6, 0x2c, 0x23, 0x06, 0x13, 0xc2, + 0xfc, 0x5e, 0x2b, 0x50, 0x75, 0xa4, 0x1e, 0x42, 0x4c, 0x51, 0x62, 0x94, 0x61, 0x94, 0x7f, 0xc0, + 0x31, 0xb3, 0x80, 0xcc, 0x09, 0xcc, 0x02, 0x8c, 0xa3, 0x0c, 0x40, 0xbd, 0xbe, 0x76, 0x87, 0x1e, + 0xd6, 0x2c, 0xc7, 0x43, 0xa5, 0x3e, 0x6e, 0x96, 0x77, 0xc4, 0xa7, 0x35, 0x29, 0x94, 0xfa, 0x7c, + 0x63, 0x3d, 0xa0, 0x87, 0x9a, 0x52, 0x5f, 0xa2, 0xe2, 0x8e, 0xec, 0x39, 0x0f, 0xac, 0x80, 0x32, + 0xc2, 0x2c, 0x12, 0xf2, 0x1d, 0x99, 0x43, 0x63, 0x94, 0x0a, 0x32, 0xf9, 0x32, 0x4c, 0x47, 0xbf, + 0xc2, 0xa7, 0x89, 0xe9, 0xf0, 0xf3, 0xd5, 0x0b, 0x57, 0x9e, 0x7f, 0x7c, 0xb4, 0xb4, 0xa8, 0x70, + 0x8d, 0x3f, 0x5a, 0xc4, 0x98, 0x19, 0xbf, 0x90, 0xc1, 0xd7, 0x2c, 0xd9, 0xc1, 0x8b, 0x90, 0x0f, + 0x8d, 0x9d, 0x26, 0xb9, 0x9e, 0x26, 0xa6, 0x7e, 0xc5, 0x72, 0x72, 0x01, 0x72, 0x51, 0x4f, 0x70, + 0x83, 0xd4, 0x7b, 0xc0, 0x4a, 0xc9, 0x2d, 0x18, 0x1b, 0xaa, 0xcd, 0xf8, 0x69, 0xa4, 0xb4, 0x55, + 0x52, 0xe3, 0x2c, 0xdc, 0xde, 0xde, 0xfa, 0xfe, 0x9d, 0x85, 0x9f, 0xcc, 0xc2, 0x0c, 0x1b, 0xd7, + 0x52, 0x2f, 0xd8, 0x77, 0x3d, 0x27, 0x38, 0x7c, 0x6a, 0xb5, 0x14, 0x6f, 0x6b, 0x22, 0xce, 0xa2, + 0x3c, 0x63, 0xd4, 0xbe, 0x0d, 0xa5, 0xac, 0xf8, 0xed, 0x11, 0x98, 0x4b, 0xa1, 0x22, 0xaf, 0x69, + 0x8a, 0xc4, 0x05, 0xe9, 0x0f, 0xf7, 0xbd, 0xa3, 0xa5, 0x49, 0x89, 0xbe, 0x15, 0xf9, 0xc7, 0x2d, + 0xeb, 0x4f, 0xc3, 0x7c, 0xa4, 0x50, 0xaf, 0xa8, 0x3e, 0x0d, 0xeb, 0x0f, 0xc2, 0x97, 0x61, 0xc4, + 0x74, 0x5b, 0x54, 0xda, 0x31, 0xe0, 0xb1, 0xee, 0x31, 0x80, 0xf6, 0x82, 0xc5, 0x00, 0x64, 0x0d, + 0xc6, 0xd8, 0x1f, 0x77, 0xad, 0xae, 0xd0, 0xf9, 0x92, 0x50, 0xc8, 0x46, 0x68, 0xd7, 0xe9, 0xec, + 0xa9, 0x72, 0x76, 0x8b, 0x36, 0xda, 0x56, 0x57, 0x93, 0x3f, 0x38, 0xa2, 0x26, 0xaf, 0x17, 0xfa, + 0xcb, 0xeb, 0x99, 0x63, 0xe5, 0x75, 0x1b, 0xa0, 0xee, 0xec, 0x75, 0x9c, 0xce, 0x5e, 0xa9, 0xb5, + 0x27, 0xbc, 0x0a, 0x2f, 0xf7, 0x9f, 0x85, 0x2b, 0x11, 0x32, 0x2e, 0x5c, 0xfe, 0x80, 0xc2, 0x61, + 0x0d, 0xab, 0xa5, 0x29, 0xa4, 0x23, 0x54, 0xb2, 0x01, 0x50, 0x6a, 0x06, 0xce, 0x03, 0xb6, 0x80, + 0x7d, 0x61, 0x22, 0x2b, 0x1b, 0x5c, 0x2e, 0xdd, 0xa1, 0x87, 0x75, 0x1a, 0x44, 0x0a, 0x6e, 0x0b, + 0x51, 0xd9, 0x77, 0xa0, 0x59, 0xb3, 0x46, 0x1c, 0x48, 0x17, 0x4e, 0x95, 0x6c, 0xdb, 0x61, 0x3d, + 0xb0, 0x5a, 0x5b, 0x1e, 0x9b, 0x0c, 0x1b, 0x59, 0x4f, 0xa6, 0xb3, 0xbe, 0x2c, 0x58, 0xbf, 0x60, + 0x85, 0x54, 0x8d, 0x80, 0x93, 0xc5, 0xab, 0x49, 0x67, 0x6c, 0x6c, 0xc2, 0xb4, 0xde, 0x75, 0xdd, + 0x17, 0x72, 0x12, 0x0a, 0x66, 0xbd, 0xd4, 0xa8, 0xaf, 0x95, 0xae, 0x15, 0x33, 0xa4, 0x08, 0x93, + 0xe2, 0xd7, 0x72, 0x63, 0xf9, 0x8d, 0x1b, 0xc5, 0xac, 0x06, 0x79, 0xe3, 0xda, 0x72, 0xc2, 0xef, + 0x60, 0xac, 0x58, 0xe0, 0x6a, 0x0c, 0xe3, 0x57, 0x33, 0x50, 0x90, 0xed, 0x26, 0x37, 0x20, 0x57, + 0xaf, 0xaf, 0xc5, 0x3c, 0x05, 0xa2, 0xf3, 0x85, 0xef, 0xa4, 0xbe, 0xaf, 0x9a, 0x83, 0x31, 0x02, + 0x46, 0xb7, 0xb5, 0x5e, 0x17, 0x62, 0x81, 0xa4, 0x8b, 0xb6, 0x6d, 0x4e, 0x97, 0x62, 0x3e, 0x7d, + 0x03, 0x72, 0xb7, 0xb7, 0xb7, 0x84, 0x10, 0x2f, 0xe9, 0xa2, 0x9d, 0x94, 0xd3, 0x7d, 0xf8, 0x50, + 0xdd, 0xdf, 0x19, 0x81, 0x61, 0xc2, 0x84, 0xb2, 0x84, 0xf9, 0x71, 0xdb, 0x76, 0x43, 0x8f, 0x3f, + 0x71, 0xdc, 0x32, 0x88, 0x29, 0x4a, 0x98, 0x74, 0xb0, 0xee, 0x36, 0xad, 0x96, 0x38, 0xb7, 0x51, + 0x3a, 0x68, 0x31, 0x80, 0xc9, 0xe1, 0xc6, 0x6f, 0x66, 0xa0, 0x88, 0x12, 0x14, 0x9a, 0x86, 0xb9, + 0x07, 0xb4, 0x73, 0xff, 0x1a, 0x79, 0x5d, 0x7e, 0x6c, 0x99, 0xf0, 0xca, 0x38, 0x82, 0x1f, 0x5b, + 0x4c, 0xe7, 0x2c, 0x3e, 0x38, 0xc5, 0xdd, 0x32, 0x3b, 0xbc, 0x33, 0xd6, 0x31, 0xee, 0x96, 0x4b, + 0x30, 0x82, 0xcd, 0x11, 0xdb, 0x22, 0xb6, 0x3c, 0x60, 0x00, 0x93, 0xc3, 0x95, 0x5d, 0xe9, 0xa7, + 0xb3, 0x89, 0x3e, 0x2c, 0x7f, 0x5f, 0x39, 0x34, 0xe9, 0x9d, 0x1b, 0x6a, 0xa7, 0x7e, 0x1f, 0xe6, + 0xe3, 0x43, 0x82, 0xd7, 0xf9, 0x12, 0xcc, 0xe8, 0x70, 0x79, 0xb3, 0x3f, 0x93, 0x5a, 0xd7, 0xfd, + 0x65, 0x33, 0x8e, 0x6f, 0xfc, 0xb3, 0x0c, 0x8c, 0xe3, 0x9f, 0x66, 0xaf, 0x85, 0xc6, 0x0a, 0xa5, + 0xed, 0xba, 0x50, 0xdd, 0xa9, 0x62, 0x9c, 0xf5, 0xd0, 0x6f, 0x08, 0xed, 0x9e, 0xb6, 0xbf, 0x84, + 0xc8, 0x82, 0x94, 0xeb, 0xe4, 0xe4, 0xfb, 0x64, 0x48, 0xca, 0x95, 0x77, 0x7e, 0x8c, 0x54, 0x20, + 0xa3, 0x7d, 0xd0, 0x76, 0x9d, 0x2d, 0x3f, 0xf5, 0x55, 0x12, 0xe9, 0xdc, 0x96, 0x6e, 0x1f, 0xc4, + 0xd1, 0xf0, 0x51, 0x72, 0xbb, 0x5e, 0x32, 0x37, 0xb4, 0x47, 0x49, 0xd6, 0x46, 0xcd, 0x76, 0x54, + 0x20, 0x19, 0xff, 0x64, 0x3c, 0x3e, 0x80, 0xe2, 0xa8, 0x3b, 0xe1, 0xb7, 0xf1, 0x16, 0x8c, 0x94, + 0x5a, 0x2d, 0xf7, 0xa1, 0xd8, 0x25, 0xa4, 0x76, 0x21, 0x1c, 0x3f, 0x7e, 0x92, 0x59, 0x0c, 0x45, + 0x73, 0xd2, 0x60, 0x00, 0x52, 0x86, 0xf1, 0xd2, 0x76, 0xbd, 0x5a, 0xad, 0x6c, 0x6d, 0xad, 0x0b, + 0xdf, 0xf7, 0x97, 0xe4, 0xf8, 0x38, 0x8e, 0xdd, 0x88, 0xbf, 0x8b, 0x45, 0x92, 0x7b, 0x44, 0x47, + 0xde, 0x01, 0xb8, 0xed, 0x3a, 0x9d, 0xbb, 0x34, 0xd8, 0x77, 0x6d, 0xd1, 0xf9, 0x73, 0x8f, 0x8f, + 0x96, 0x26, 0x3e, 0x74, 0x9d, 0x4e, 0xa3, 0x8d, 0x60, 0xd6, 0xf6, 0x08, 0xc9, 0x54, 0xfe, 0x66, + 0x23, 0xbd, 0xe2, 0x72, 0x03, 0x84, 0x91, 0x68, 0xa4, 0x77, 0xdc, 0x84, 0xed, 0x81, 0x44, 0x23, + 0x6d, 0x98, 0xa9, 0xf7, 0xf6, 0xf6, 0x28, 0xdb, 0xd5, 0x85, 0xbe, 0x62, 0x54, 0xdc, 0x6d, 0xc3, + 0xc8, 0x01, 0xfc, 0x26, 0xc2, 0xee, 0x27, 0xfe, 0xca, 0x6b, 0x6c, 0x21, 0x7f, 0xf7, 0x68, 0x49, + 0xbc, 0xb7, 0x31, 0x21, 0xcd, 0x97, 0xf4, 0x49, 0x6d, 0x45, 0x9c, 0x37, 0xd9, 0x84, 0xd1, 0x5b, + 0x4e, 0xb0, 0xd6, 0xdb, 0x11, 0x06, 0xd6, 0x2f, 0x0c, 0xf8, 0x68, 0x38, 0x22, 0x57, 0xf8, 0xee, + 0x39, 0xc1, 0x7e, 0x4f, 0x35, 0xb6, 0x16, 0x6c, 0xc8, 0x36, 0x14, 0xca, 0x8e, 0xd7, 0x6c, 0xd1, + 0x72, 0x55, 0x9c, 0xfa, 0x17, 0x06, 0xb0, 0x94, 0xa8, 0x7c, 0x5c, 0x9a, 0xf8, 0xab, 0xe9, 0xa8, + 0x52, 0x80, 0xc4, 0x20, 0xff, 0x66, 0x06, 0x9e, 0x0d, 0x5b, 0x5f, 0xda, 0xa3, 0x9d, 0xe0, 0xae, + 0x15, 0x34, 0xf7, 0xa9, 0x27, 0x46, 0x69, 0x7c, 0xd0, 0x28, 0x7d, 0x2e, 0x31, 0x4a, 0x97, 0xa2, + 0x51, 0xb2, 0x18, 0xb3, 0x46, 0x9b, 0x73, 0x4b, 0x8e, 0xd9, 0xa0, 0x5a, 0x49, 0x03, 0x20, 0xd2, + 0xe0, 0x0b, 0x07, 0x9d, 0x97, 0x06, 0x74, 0x38, 0x42, 0x16, 0x46, 0xba, 0xe1, 0x6f, 0xcd, 0xde, + 0x26, 0x84, 0x92, 0x3b, 0xd2, 0x9b, 0x81, 0x4b, 0x24, 0xe7, 0x07, 0xf0, 0xe6, 0x1e, 0x0e, 0x73, + 0x03, 0xfc, 0x96, 0xf8, 0x6c, 0xaf, 0x5b, 0x3b, 0x42, 0x08, 0x39, 0x66, 0xb6, 0xd7, 0xad, 0x68, + 0xb6, 0x5b, 0x56, 0x7c, 0xb6, 0xd7, 0xad, 0x1d, 0x52, 0xe6, 0x2e, 0x58, 0xdc, 0x5f, 0xe7, 0xf9, + 0x41, 0xdc, 0xca, 0x35, 0x7e, 0x32, 0xa7, 0xb8, 0x62, 0x7d, 0x00, 0xe3, 0xf5, 0xae, 0xd5, 0xa4, + 0x2d, 0x67, 0x37, 0x10, 0x4f, 0x3a, 0x2f, 0x0e, 0x60, 0x15, 0xe2, 0x8a, 0xe7, 0x00, 0xf9, 0x53, + 0xbd, 0x20, 0x85, 0x38, 0xac, 0x85, 0x5b, 0xb5, 0xbb, 0x0b, 0x33, 0xc7, 0xb6, 0x70, 0xab, 0x76, + 0x57, 0xc8, 0x1c, 0xdd, 0xb6, 0x26, 0x73, 0xd4, 0xee, 0x1a, 0xbf, 0x9e, 0x83, 0x33, 0x7d, 0x68, + 0xc8, 0x86, 0xdc, 0xa3, 0x32, 0x9a, 0x5a, 0xb1, 0x0f, 0xfa, 0x95, 0x63, 0xb7, 0xad, 0x75, 0x28, + 0xae, 0xde, 0x41, 0xb1, 0x96, 0xfd, 0xa4, 0x76, 0xb9, 0x24, 0x77, 0xf7, 0xf3, 0x8f, 0x8f, 0x96, + 0x9e, 0xa3, 0x07, 0xec, 0xf2, 0xda, 0xb0, 0x78, 0x61, 0xa3, 0xa9, 0x79, 0x53, 0x25, 0x28, 0x17, + 0x7f, 0x28, 0x0b, 0x79, 0x3c, 0x69, 0x62, 0xd1, 0x25, 0x32, 0x27, 0x8a, 0x2e, 0xf1, 0x79, 0x98, + 0x5c, 0xbd, 0xc3, 0x2f, 0x9d, 0x6b, 0x96, 0xbf, 0x2f, 0xf6, 0x41, 0x7c, 0x61, 0xa3, 0x07, 0x0d, + 0x71, 0x47, 0xdd, 0xb7, 0x34, 0x21, 0x4f, 0xa3, 0x20, 0xf7, 0x60, 0x8e, 0xb7, 0xcd, 0xd9, 0x75, + 0x9a, 0xdc, 0x15, 0xdd, 0xb1, 0x5a, 0x62, 0x53, 0xbc, 0xf0, 0xf8, 0x68, 0x69, 0x89, 0x1e, 0xa0, + 0x55, 0x94, 0x28, 0x6f, 0xf8, 0x88, 0xa0, 0xf0, 0x4b, 0xa3, 0x57, 0xfd, 0x63, 0xcd, 0x71, 0xac, + 0x90, 0xd5, 0xc6, 0xea, 0x66, 0xb8, 0x1c, 0xc9, 0xf8, 0x7b, 0x23, 0xb0, 0xd8, 0x7f, 0x3f, 0x23, + 0x5f, 0xd0, 0x27, 0xf0, 0xe2, 0xb1, 0x3b, 0xe0, 0xf1, 0x73, 0xf8, 0x45, 0x98, 0x5f, 0xed, 0x04, + 0xd4, 0xeb, 0x7a, 0x8e, 0xf4, 0x88, 0x5e, 0x73, 0x7d, 0x69, 0x04, 0xf6, 0xe2, 0xe3, 0xa3, 0xa5, + 0xf3, 0x34, 0x2c, 0x17, 0xda, 0x41, 0x34, 0x49, 0x53, 0x58, 0xa5, 0x72, 0x20, 0xab, 0x30, 0xad, + 0xc0, 0x5b, 0xbd, 0x3d, 0x71, 0x82, 0xa3, 0x85, 0xa1, 0xca, 0xb3, 0xd5, 0x53, 0x2f, 0x3a, 0x31, + 0xa2, 0xc5, 0x5f, 0xc8, 0x89, 0x65, 0x71, 0x01, 0x72, 0xf5, 0xde, 0x8e, 0x58, 0x0e, 0x5c, 0x54, + 0xd7, 0xb6, 0x75, 0x56, 0x4a, 0x3e, 0x0b, 0x60, 0xd2, 0xae, 0xeb, 0x3b, 0x81, 0xeb, 0x1d, 0xaa, + 0x46, 0xfa, 0x5e, 0x08, 0xd5, 0x2d, 0x2a, 0x25, 0x94, 0xac, 0xc1, 0x4c, 0xf4, 0x6b, 0xf3, 0x61, + 0x47, 0xa8, 0x34, 0xc7, 0xb9, 0x36, 0x21, 0x22, 0x6f, 0xb8, 0xac, 0x4c, 0x3d, 0xa8, 0x62, 0x64, + 0x64, 0x19, 0x0a, 0xdb, 0xae, 0x77, 0xb0, 0xcb, 0x26, 0x2a, 0x1f, 0x1d, 0xa5, 0x0f, 0x05, 0x4c, + 0x3d, 0x32, 0x24, 0x1e, 0x5b, 0xf3, 0xab, 0x9d, 0x07, 0x8e, 0xe7, 0x76, 0xda, 0xb4, 0x13, 0xa8, + 0xaf, 0x8f, 0x34, 0x02, 0x6b, 0x2e, 0x4d, 0x11, 0x98, 0xdd, 0x99, 0x4b, 0xcd, 0xc0, 0xf5, 0xc4, + 0xd3, 0x23, 0x9f, 0x6e, 0x06, 0xd0, 0xa6, 0x9b, 0x01, 0xd8, 0x20, 0x9a, 0x74, 0x57, 0xe8, 0xcc, + 0x71, 0x10, 0x3d, 0xba, 0xab, 0xf9, 0x6b, 0xd1, 0x5d, 0x26, 0x0a, 0x98, 0x74, 0x17, 0x2f, 0xfa, + 0x5a, 0x70, 0x93, 0xdd, 0x84, 0x8a, 0x48, 0xa0, 0x19, 0xdf, 0x19, 0xef, 0xbb, 0x6e, 0xd9, 0xde, + 0x7b, 0xb2, 0x75, 0xbb, 0x6e, 0x0d, 0xb1, 0x6e, 0x5f, 0x0b, 0xed, 0x34, 0x55, 0x27, 0x45, 0x84, + 0xa8, 0x9b, 0x3f, 0xc7, 0x59, 0xfc, 0xa5, 0xc2, 0x49, 0x16, 0x91, 0x18, 0xa4, 0xec, 0xb0, 0x83, + 0x94, 0x1b, 0x6a, 0x90, 0xc8, 0x0a, 0x4c, 0x85, 0x21, 0x74, 0x6a, 0x56, 0xa0, 0xed, 0x4d, 0x61, + 0x40, 0xa4, 0x46, 0xd7, 0x0a, 0xd4, 0xbd, 0x49, 0x27, 0x21, 0x6f, 0xc3, 0x84, 0x30, 0x56, 0x46, + 0x0e, 0x23, 0x91, 0x19, 0x9a, 0xb4, 0x6c, 0x8e, 0xd1, 0xab, 0xe8, 0xec, 0x93, 0xac, 0x39, 0x5d, + 0xda, 0x72, 0x3a, 0xb4, 0x8e, 0x5a, 0x73, 0xb1, 0x62, 0xf0, 0x93, 0xec, 0x8a, 0x92, 0x06, 0x57, + 0xa8, 0x6b, 0xfa, 0x32, 0x8d, 0x28, 0xbe, 0x58, 0xc7, 0x4e, 0xb4, 0x58, 0xb9, 0x15, 0x88, 0xb7, + 0xee, 0xee, 0x39, 0xd2, 0xee, 0x4d, 0x5a, 0x81, 0x78, 0x8d, 0x16, 0x83, 0xc6, 0xac, 0x40, 0x38, + 0x2a, 0x93, 0xeb, 0xd9, 0x8f, 0x6a, 0x45, 0xbc, 0xcf, 0xa0, 0x5c, 0x8f, 0x44, 0xba, 0xb1, 0x21, + 0x47, 0x92, 0xd5, 0xac, 0xb6, 0x2d, 0xa7, 0x25, 0x7c, 0xd1, 0xa2, 0x6a, 0x28, 0x83, 0xc6, 0xab, + 0x41, 0x54, 0xd2, 0x84, 0x49, 0x93, 0xee, 0xd6, 0x3c, 0x37, 0xa0, 0xcd, 0x80, 0xda, 0x42, 0x96, + 0x91, 0xe2, 0xfc, 0x8a, 0xeb, 0x72, 0x39, 0x6d, 0xe5, 0xf5, 0xef, 0x1c, 0x2d, 0x65, 0xbe, 0x7b, + 0xb4, 0x04, 0x0c, 0xc4, 0x2d, 0x59, 0x1f, 0x1f, 0x2d, 0x9d, 0x61, 0xf3, 0xdf, 0x95, 0xc4, 0xea, + 0x11, 0xa3, 0x32, 0x25, 0x3f, 0xc8, 0x36, 0xdd, 0x70, 0x48, 0xa2, 0xca, 0x26, 0xfb, 0x54, 0xf6, + 0x46, 0x6a, 0x65, 0x4b, 0xca, 0x68, 0xa7, 0x56, 0x9a, 0x5a, 0x09, 0x79, 0x07, 0x26, 0xca, 0xd5, + 0xb2, 0xdb, 0xd9, 0x75, 0xf6, 0xea, 0x6b, 0x25, 0x14, 0x88, 0x84, 0xb5, 0x71, 0xd3, 0x69, 0x34, + 0x11, 0xde, 0xf0, 0xf7, 0x2d, 0xcd, 0x63, 0x23, 0xc2, 0x27, 0xb7, 0x60, 0x5a, 0xfe, 0x34, 0xe9, + 0xee, 0x3d, 0xb3, 0x8a, 0x72, 0x90, 0x34, 0xf1, 0x0e, 0x39, 0xb0, 0x81, 0xe8, 0x79, 0xaa, 0x7c, + 0x1c, 0x23, 0x63, 0x8b, 0xb1, 0x42, 0xbb, 0x2d, 0xf7, 0x90, 0x35, 0x6f, 0xcb, 0xa1, 0x1e, 0x4a, + 0x3e, 0x62, 0x31, 0xda, 0x61, 0x49, 0x23, 0x70, 0xb4, 0xed, 0x36, 0x46, 0x44, 0x36, 0x60, 0x56, + 0x2c, 0xf1, 0xfb, 0x8e, 0xef, 0xec, 0x38, 0x2d, 0x27, 0x38, 0x5c, 0x28, 0x22, 0x27, 0x94, 0x42, + 0xe4, 0x77, 0xf1, 0x20, 0x2c, 0x55, 0x98, 0x25, 0x49, 0x8d, 0x5f, 0xcd, 0xc2, 0x73, 0x83, 0xe4, + 0x7f, 0x52, 0xd7, 0x37, 0xb3, 0x4b, 0x43, 0xdc, 0x19, 0x8e, 0xdf, 0xce, 0x56, 0x61, 0x7a, 0xd3, + 0xdb, 0xb3, 0x3a, 0xce, 0xd7, 0xf1, 0x5e, 0x17, 0x1a, 0xc3, 0xe0, 0x60, 0xb8, 0x4a, 0x89, 0xbe, + 0xda, 0x63, 0x44, 0x8b, 0x0f, 0xc4, 0x36, 0xf7, 0x51, 0xdd, 0x1f, 0x6e, 0xc0, 0x78, 0xd9, 0xed, + 0x04, 0xf4, 0x51, 0x10, 0x73, 0x71, 0xe3, 0xc0, 0xb8, 0x8b, 0x9b, 0x44, 0x35, 0xfe, 0xef, 0x2c, + 0x9c, 0x1b, 0x28, 0x00, 0x93, 0x2d, 0x7d, 0xd4, 0x2e, 0x0f, 0x23, 0x35, 0x1f, 0x3f, 0x6c, 0xcb, + 0x09, 0xbb, 0x8d, 0x63, 0xad, 0x96, 0x17, 0xff, 0xcb, 0x8c, 0x18, 0xa4, 0x4f, 0xc1, 0x18, 0x56, + 0x15, 0x0e, 0x11, 0xd7, 0x0d, 0xe1, 0x2e, 0xec, 0xe8, 0xba, 0x21, 0x8e, 0x46, 0xae, 0x43, 0xa1, + 0x6c, 0xb5, 0x5a, 0x8a, 0x03, 0x20, 0xca, 0xf5, 0x4d, 0x84, 0xc5, 0xcc, 0x7c, 0x24, 0x22, 0x79, + 0x13, 0x80, 0xff, 0xad, 0x9c, 0x15, 0xb8, 0x59, 0x0a, 0xb2, 0xd8, 0x71, 0xa1, 0x20, 0x63, 0xa8, + 0xaf, 0xa6, 0x1b, 0x7a, 0x2a, 0xf1, 0x50, 0x5f, 0x0c, 0xa0, 0x85, 0xfa, 0x62, 0x00, 0xe3, 0xd7, + 0x72, 0xf0, 0xfc, 0xe0, 0x5b, 0x1c, 0xb9, 0xa7, 0x4f, 0xc1, 0x2b, 0x43, 0xdd, 0xfd, 0x8e, 0x9f, + 0x03, 0x19, 0x43, 0x8f, 0x0f, 0xc8, 0xa5, 0xa4, 0x71, 0xf1, 0xf7, 0x8e, 0x96, 0x14, 0xdb, 0xb1, + 0xdb, 0xae, 0xd3, 0x51, 0xde, 0x08, 0xbe, 0x06, 0x50, 0x0f, 0xac, 0xc0, 0x69, 0xde, 0xde, 0xbe, + 0x23, 0xfd, 0xca, 0x6f, 0x0c, 0xd7, 0xb2, 0x88, 0x8e, 0xef, 0x2b, 0x42, 0x7d, 0x8e, 0xd0, 0xc6, + 0x87, 0x0f, 0x0f, 0xb4, 0x7b, 0x6a, 0x84, 0xbc, 0xf8, 0x39, 0x28, 0xc6, 0x49, 0xc9, 0x45, 0xc8, + 0x63, 0x03, 0x14, 0x0b, 0xe9, 0x18, 0x07, 0x2c, 0x5f, 0xbc, 0x2b, 0xd6, 0xce, 0x2a, 0x4c, 0x8b, + 0x67, 0x69, 0x5d, 0x23, 0x86, 0xdf, 0xab, 0x7c, 0xd5, 0x4e, 0x6a, 0xc5, 0x62, 0x44, 0xc6, 0x9f, + 0x64, 0xe0, 0x6c, 0xdf, 0xfb, 0x31, 0xa9, 0xe9, 0x13, 0xf6, 0xd2, 0x71, 0x17, 0xea, 0x63, 0xe7, + 0x6a, 0xf1, 0xc7, 0xe5, 0xda, 0x7f, 0x17, 0x26, 0xeb, 0xbd, 0x9d, 0xf8, 0x25, 0x8b, 0x7b, 0x19, + 0x2b, 0x70, 0xf5, 0x04, 0x53, 0xf1, 0x59, 0xff, 0xe5, 0xcb, 0xbb, 0x30, 0xab, 0xe0, 0x17, 0x3f, + 0xec, 0x7f, 0xe8, 0xbe, 0x84, 0xde, 0x65, 0xea, 0x20, 0xc6, 0x88, 0x8c, 0x5f, 0xc9, 0xa6, 0xdf, + 0x56, 0xd9, 0x5d, 0xfb, 0x04, 0xb7, 0xd5, 0x5b, 0xe5, 0xda, 0xf1, 0x7d, 0xff, 0x4f, 0x65, 0xdf, + 0xf1, 0x21, 0x52, 0xec, 0x78, 0x52, 0xbd, 0x27, 0x1e, 0x22, 0xe5, 0xee, 0xe8, 0xeb, 0x0f, 0x91, + 0x12, 0x99, 0xbc, 0x01, 0xe3, 0xeb, 0x2e, 0xf7, 0xfa, 0x94, 0x3d, 0xe6, 0xfe, 0x3d, 0x12, 0xa8, + 0x6e, 0x8f, 0x21, 0x26, 0xbb, 0x5b, 0xe8, 0x13, 0x2f, 0x8d, 0xbb, 0xf1, 0x6e, 0x11, 0x5b, 0x2e, + 0xba, 0x12, 0x4c, 0x27, 0x33, 0x7e, 0x3c, 0x0b, 0xd3, 0x7c, 0xf1, 0x72, 0x25, 0xed, 0x53, 0xab, + 0x00, 0x7f, 0x4b, 0x53, 0x80, 0xcb, 0x80, 0x04, 0x6a, 0xd7, 0x86, 0x52, 0x7f, 0xef, 0x03, 0x49, + 0xd2, 0x10, 0x13, 0x26, 0x55, 0xe8, 0x60, 0xcd, 0xf7, 0xb5, 0x28, 0x76, 0x85, 0xd8, 0x3b, 0xf0, + 0xf9, 0xc1, 0x37, 0x35, 0x1e, 0xc6, 0x8f, 0x65, 0x61, 0x4a, 0x79, 0xa8, 0x7c, 0x6a, 0x07, 0xfe, + 0x73, 0xda, 0xc0, 0x2f, 0x84, 0x06, 0xc9, 0x61, 0xcf, 0x86, 0x1a, 0xf7, 0x1e, 0xcc, 0x26, 0x48, + 0xe2, 0xef, 0xbd, 0x99, 0x61, 0xde, 0x7b, 0x5f, 0x4b, 0x3a, 0xd5, 0xf3, 0x78, 0x92, 0xa1, 0x53, + 0xbd, 0xea, 0xc5, 0xff, 0x93, 0x59, 0x98, 0x17, 0xbf, 0x30, 0x72, 0x0c, 0xdf, 0xbd, 0x9f, 0xda, + 0xb9, 0x28, 0x69, 0x73, 0xb1, 0xa4, 0xcf, 0x85, 0xd2, 0xc1, 0xfe, 0x53, 0x62, 0xfc, 0x65, 0x80, + 0x85, 0x7e, 0x04, 0x43, 0xfb, 0xfd, 0x44, 0x56, 0xd5, 0xd9, 0x21, 0xac, 0xaa, 0xd7, 0xa1, 0x88, + 0x55, 0x89, 0x38, 0x13, 0x3e, 0xbb, 0x03, 0xe4, 0x22, 0x81, 0x9b, 0x87, 0xf7, 0x11, 0xb1, 0x2a, + 0xfc, 0xd8, 0x25, 0x20, 0x41, 0x49, 0x7e, 0x21, 0x03, 0xd3, 0x08, 0x5c, 0x7d, 0x40, 0x3b, 0x01, + 0x32, 0xcb, 0x0b, 0x23, 0xe0, 0x50, 0x3f, 0x5e, 0x0f, 0x3c, 0xa7, 0xb3, 0x27, 0x14, 0xe4, 0x3b, + 0x42, 0x41, 0xfe, 0x36, 0x57, 0xec, 0x5f, 0x69, 0xba, 0xed, 0xab, 0x7b, 0x9e, 0xf5, 0xc0, 0xe1, + 0x6f, 0xf0, 0x56, 0xeb, 0x6a, 0x14, 0x01, 0xb9, 0xeb, 0xc4, 0x62, 0x1a, 0x0b, 0x56, 0xf8, 0xf8, + 0xc0, 0x1b, 0x4a, 0xb1, 0xda, 0xf8, 0x5d, 0x45, 0x6f, 0x11, 0xf9, 0x01, 0x38, 0xc3, 0x9d, 0xc8, + 0x99, 0xc8, 0xeb, 0x74, 0x7a, 0x6e, 0xcf, 0x5f, 0xb1, 0x9a, 0x07, 0xec, 0xdc, 0xe3, 0x8e, 0x0c, + 0xd8, 0xf3, 0x66, 0x58, 0xd8, 0xd8, 0xe1, 0xa5, 0x9a, 0xe3, 0x56, 0x3a, 0x03, 0xb2, 0x06, 0xb3, + 0xbc, 0xa8, 0xd4, 0x0b, 0xdc, 0x7a, 0xd3, 0x6a, 0x39, 0x9d, 0x3d, 0xbc, 0x53, 0x17, 0xf8, 0x79, + 0x6c, 0xf5, 0x02, 0xb7, 0xe1, 0x73, 0xb8, 0x7a, 0x75, 0x49, 0x10, 0x91, 0x2a, 0xcc, 0x98, 0xd4, + 0xb2, 0xef, 0x5a, 0x8f, 0xca, 0x56, 0xd7, 0x6a, 0xb2, 0x8b, 0x50, 0x01, 0x1f, 0x93, 0xf0, 0x6e, + 0xe6, 0x51, 0xcb, 0x6e, 0xb4, 0xad, 0x47, 0x8d, 0xa6, 0x28, 0xd4, 0x75, 0x58, 0x1a, 0x5d, 0xc8, + 0xca, 0xe9, 0x84, 0xac, 0xc6, 0xe3, 0xac, 0x9c, 0x4e, 0x7f, 0x56, 0x11, 0x9d, 0x64, 0xb5, 0x65, + 0x79, 0x7b, 0x34, 0xe0, 0x26, 0x6c, 0xec, 0x3e, 0x9e, 0x51, 0x58, 0x05, 0x58, 0xd6, 0x40, 0x73, + 0xb6, 0x38, 0x2b, 0x85, 0x8e, 0xad, 0xbc, 0x6d, 0xcf, 0x09, 0xa8, 0xda, 0xc3, 0x09, 0x6c, 0x16, + 0x8e, 0x3f, 0x1a, 0xff, 0xf5, 0xeb, 0x62, 0x82, 0x32, 0xe2, 0xa6, 0x74, 0x72, 0x32, 0xc1, 0x2d, + 0xbd, 0x97, 0x09, 0xca, 0x90, 0x9b, 0xda, 0xcf, 0x29, 0xec, 0xa7, 0xc2, 0xad, 0x4f, 0x47, 0x13, + 0x94, 0x64, 0x83, 0x0d, 0x5a, 0x40, 0x3b, 0x6c, 0x45, 0x0b, 0x13, 0xbe, 0x69, 0x6c, 0xda, 0x8b, + 0xc2, 0x0e, 0xa5, 0xe8, 0xc9, 0xe2, 0x46, 0x8a, 0x41, 0x5f, 0x9c, 0x98, 0xfc, 0x39, 0x98, 0xb9, + 0xe7, 0xd3, 0x9b, 0xd5, 0x5a, 0x5d, 0xba, 0xcd, 0xe3, 0x6d, 0x7b, 0x7a, 0xf9, 0xda, 0x31, 0x9b, + 0xce, 0x15, 0x95, 0x06, 0xa3, 0x0a, 0xf3, 0x79, 0xeb, 0xf9, 0xb4, 0xb1, 0xeb, 0x74, 0xfd, 0x30, + 0x80, 0x87, 0x3a, 0x6f, 0xb1, 0xaa, 0x8c, 0x35, 0x98, 0x4d, 0xb0, 0x21, 0xd3, 0x00, 0x0c, 0xd8, + 0xb8, 0xb7, 0x51, 0x5f, 0xdd, 0x2a, 0x3e, 0x43, 0x8a, 0x30, 0x89, 0xbf, 0x57, 0x37, 0x4a, 0x2b, + 0xeb, 0xab, 0x95, 0x62, 0x86, 0xcc, 0xc2, 0x14, 0x42, 0x2a, 0xd5, 0x3a, 0x07, 0x65, 0x79, 0x4c, + 0x49, 0xb3, 0xc8, 0x3f, 0xdd, 0x80, 0x7d, 0x00, 0x78, 0xa6, 0x18, 0x7f, 0x3d, 0x0b, 0x67, 0xe5, + 0xb1, 0x42, 0x83, 0x87, 0xae, 0x77, 0xe0, 0x74, 0xf6, 0x9e, 0xf2, 0xd3, 0xe1, 0xa6, 0x76, 0x3a, + 0xbc, 0x18, 0x3b, 0xa9, 0x63, 0xbd, 0x1c, 0x70, 0x44, 0xfc, 0x4f, 0x05, 0x38, 0x37, 0x90, 0x8a, + 0x7c, 0x81, 0x9d, 0xe6, 0x0e, 0xed, 0x04, 0x55, 0xbb, 0x45, 0xb7, 0x9c, 0x36, 0x75, 0x7b, 0x81, + 0x30, 0x19, 0xbd, 0x80, 0x17, 0x5c, 0x2c, 0x6c, 0x38, 0x76, 0x8b, 0x36, 0x02, 0x5e, 0xac, 0x2d, + 0xb7, 0x24, 0x35, 0x63, 0x19, 0x06, 0x3b, 0xaf, 0x76, 0x02, 0xea, 0x3d, 0x40, 0xe3, 0x94, 0x90, + 0xe5, 0x01, 0xa5, 0xdd, 0x86, 0xc5, 0x4a, 0x1b, 0x8e, 0x28, 0xd6, 0x59, 0x26, 0xa8, 0xc9, 0x4d, + 0x85, 0x65, 0x99, 0x89, 0xc3, 0x77, 0xad, 0x47, 0xe2, 0xb5, 0x5c, 0x04, 0x1f, 0x0a, 0x59, 0x72, + 0x5f, 0xa3, 0xb6, 0xf5, 0xc8, 0x4c, 0x92, 0x90, 0x2f, 0xc3, 0x29, 0x71, 0x00, 0x09, 0x5f, 0x51, + 0xd9, 0x63, 0xee, 0x89, 0xfa, 0xf2, 0xe3, 0xa3, 0xa5, 0x33, 0x32, 0xd4, 0x92, 0xf4, 0x0e, 0x4e, + 0xeb, 0x75, 0x3a, 0x17, 0xb2, 0xc5, 0x0e, 0xe4, 0xd8, 0x70, 0xdc, 0xa5, 0xbe, 0x6f, 0xed, 0xc9, + 0x97, 0x75, 0x6e, 0x5d, 0xaf, 0x0c, 0x66, 0xa3, 0xcd, 0xcb, 0xcd, 0xbe, 0x94, 0x64, 0x0d, 0xa6, + 0xb7, 0xe9, 0x8e, 0x3a, 0x3f, 0xa3, 0xe1, 0x56, 0x55, 0x7c, 0x48, 0x77, 0xfa, 0x4f, 0x4e, 0x8c, + 0x8e, 0x38, 0xa8, 0x30, 0x7b, 0x74, 0xb8, 0xee, 0xf8, 0x01, 0xed, 0x50, 0x0f, 0x63, 0x05, 0x8c, + 0xe1, 0x66, 0xb0, 0x10, 0x49, 0xc8, 0x7a, 0xf9, 0xca, 0x0b, 0x8f, 0x8f, 0x96, 0xce, 0x71, 0x6f, + 0x92, 0x96, 0x80, 0x37, 0x62, 0xf1, 0xc1, 0x93, 0x5c, 0xc9, 0x57, 0x61, 0xc6, 0x74, 0x7b, 0x81, + 0xd3, 0xd9, 0xab, 0x07, 0x9e, 0x15, 0xd0, 0x3d, 0x7e, 0x20, 0x45, 0x41, 0x09, 0x62, 0xa5, 0xe2, + 0xad, 0x85, 0x03, 0x1b, 0xbe, 0x80, 0x6a, 0x27, 0x82, 0x4e, 0x40, 0xbe, 0x02, 0xd3, 0xdc, 0x4b, + 0x30, 0xac, 0x60, 0x5c, 0x8b, 0x6d, 0xaa, 0x17, 0xde, 0xbf, 0xc6, 0x2f, 0xa8, 0xdc, 0xdb, 0x30, + 0xad, 0x82, 0x18, 0x37, 0xf2, 0x81, 0x18, 0xac, 0x9a, 0xd3, 0xd9, 0x0b, 0x97, 0x31, 0xe0, 0xc8, + 0xbf, 0x1e, 0x0d, 0x49, 0x97, 0x35, 0x57, 0x2e, 0xe3, 0x3e, 0x96, 0x1a, 0x49, 0x3e, 0x24, 0x80, + 0x73, 0x25, 0xdf, 0x77, 0xfc, 0x40, 0x18, 0x56, 0xaf, 0x3e, 0xa2, 0xcd, 0x1e, 0x43, 0xde, 0x76, + 0xbd, 0x03, 0xea, 0x71, 0xd3, 0xbe, 0x91, 0x95, 0x2b, 0x8f, 0x8f, 0x96, 0x5e, 0xb1, 0x10, 0xb1, + 0x21, 0x6c, 0xb1, 0x1b, 0x54, 0xa2, 0x36, 0x1e, 0x72, 0x5c, 0xa5, 0x0f, 0x83, 0x99, 0x92, 0xaf, + 0xc0, 0xe9, 0xb2, 0xe5, 0xd3, 0x6a, 0xc7, 0xa7, 0x1d, 0xdf, 0x09, 0x9c, 0x07, 0x54, 0x0c, 0x2a, + 0x1e, 0x7e, 0x05, 0x8c, 0xa4, 0x6e, 0x34, 0x31, 0xe9, 0x42, 0x84, 0xd2, 0x10, 0x93, 0xa2, 0x54, + 0xd3, 0x87, 0x8b, 0x71, 0x94, 0x81, 0x62, 0x7c, 0xd8, 0xc9, 0x17, 0x61, 0x9c, 0x9b, 0x24, 0x50, + 0x7f, 0x5f, 0x38, 0xb8, 0xc9, 0x17, 0xee, 0x10, 0xae, 0x13, 0x09, 0x97, 0x04, 0x6e, 0xf0, 0x40, + 0xd5, 0xf7, 0x5a, 0x74, 0x49, 0x90, 0x44, 0xc4, 0x86, 0x49, 0x3e, 0xb2, 0x14, 0xa3, 0x87, 0x08, + 0xcb, 0xb4, 0x17, 0xd4, 0x95, 0x2c, 0x8a, 0x62, 0xfc, 0x51, 0xe5, 0x2d, 0xe6, 0x8f, 0x23, 0x68, + 0x55, 0x68, 0x5c, 0x57, 0x00, 0x0a, 0x92, 0xd0, 0x38, 0x0b, 0x67, 0xfa, 0xb4, 0xd9, 0x78, 0x80, + 0xcf, 0x60, 0x7d, 0x6a, 0x24, 0x5f, 0x84, 0x79, 0x24, 0x2c, 0xbb, 0x9d, 0x0e, 0x6d, 0x06, 0xb8, + 0x75, 0x48, 0xd5, 0x51, 0x8e, 0xbf, 0xb5, 0xf2, 0xfe, 0x36, 0x43, 0x84, 0x46, 0x5c, 0x83, 0x94, + 0xca, 0xc1, 0xf8, 0xd9, 0x2c, 0x2c, 0x88, 0xdd, 0xc8, 0xa4, 0x4d, 0xd7, 0xb3, 0x9f, 0xfe, 0xd3, + 0x6f, 0x55, 0x3b, 0xfd, 0x2e, 0x84, 0x1e, 0xcd, 0x69, 0x9d, 0x1c, 0x70, 0xf8, 0xfd, 0x4a, 0x06, + 0x9e, 0x1b, 0x44, 0xc4, 0x46, 0x27, 0x8c, 0x96, 0x32, 0x9e, 0x88, 0x8a, 0xd2, 0x85, 0x39, 0x9c, + 0xd0, 0xf2, 0x3e, 0x6d, 0x1e, 0xf8, 0x6b, 0xae, 0x1f, 0xa0, 0x61, 0x6c, 0xb6, 0xcf, 0x43, 0xcd, + 0x6b, 0xa9, 0x0f, 0x35, 0xa7, 0xf9, 0x2a, 0x6b, 0x22, 0x0f, 0x1e, 0xcf, 0xe5, 0x80, 0x1e, 0xfa, + 0x66, 0x1a, 0x6b, 0x34, 0x72, 0x2c, 0xf5, 0x82, 0xfd, 0x9a, 0x47, 0x77, 0xa9, 0x47, 0x3b, 0x4d, + 0xfa, 0x7d, 0x66, 0xe4, 0xa8, 0x77, 0x6e, 0x28, 0x6d, 0xc3, 0xaf, 0x4c, 0xc2, 0x7c, 0x1a, 0x19, + 0x1b, 0x17, 0xe5, 0x82, 0x1b, 0xcf, 0xcf, 0xf2, 0x97, 0x32, 0x30, 0x59, 0xa7, 0x4d, 0xb7, 0x63, + 0xdf, 0xc4, 0xe7, 0x70, 0x31, 0x3a, 0x0d, 0x7e, 0xc0, 0x33, 0x78, 0x63, 0x37, 0xf6, 0x4e, 0xfe, + 0xbd, 0xa3, 0xa5, 0xcf, 0x0f, 0x77, 0xaf, 0x6c, 0xba, 0xe8, 0x95, 0x1c, 0x60, 0xd0, 0xd0, 0xb0, + 0x0a, 0xd4, 0x6c, 0x6b, 0x95, 0x92, 0x15, 0x98, 0x12, 0x9f, 0xab, 0xab, 0x06, 0xcb, 0xe1, 0x4e, + 0xdf, 0xb2, 0x20, 0x11, 0x1d, 0x4c, 0x23, 0x21, 0xd7, 0x21, 0x77, 0x6f, 0xf9, 0xa6, 0x98, 0x03, + 0x19, 0x76, 0xf5, 0xde, 0xf2, 0x4d, 0x54, 0x5d, 0xb1, 0xeb, 0xc0, 0x54, 0x6f, 0x59, 0x7b, 0xa1, + 0xbe, 0xb7, 0x7c, 0x93, 0xfc, 0x05, 0x38, 0x55, 0x71, 0x7c, 0x51, 0x05, 0x37, 0xb7, 0xb5, 0xd1, + 0xbd, 0x64, 0xb4, 0xcf, 0xea, 0xfd, 0x4c, 0xea, 0xea, 0x7d, 0xc1, 0x0e, 0x99, 0x34, 0xb8, 0x2d, + 0xaf, 0x1d, 0x0f, 0x0a, 0x94, 0x5e, 0x0f, 0xf9, 0x10, 0xa6, 0x51, 0xf5, 0x8a, 0x16, 0xc8, 0x18, + 0xc4, 0x70, 0xac, 0x4f, 0xcd, 0x9f, 0x4a, 0xad, 0x79, 0x11, 0x35, 0xb9, 0x0d, 0xb4, 0x63, 0xc6, + 0x80, 0x87, 0xda, 0x0d, 0x5d, 0xe3, 0x4c, 0x6e, 0xc3, 0x8c, 0x10, 0x95, 0x36, 0x77, 0xb7, 0xf6, + 0x69, 0xc5, 0x3a, 0x14, 0x8f, 0xcb, 0x78, 0xfb, 0x12, 0xf2, 0x55, 0xc3, 0xdd, 0x6d, 0x04, 0xfb, + 0xb4, 0x61, 0x5b, 0x9a, 0x50, 0x11, 0x23, 0x24, 0x3f, 0x08, 0x13, 0xeb, 0x6e, 0x93, 0x49, 0xc9, + 0xb8, 0x33, 0xf0, 0xf7, 0xe6, 0xf7, 0x31, 0xed, 0x07, 0x07, 0xc7, 0x44, 0x9f, 0xef, 0x1d, 0x2d, + 0xbd, 0x75, 0xd2, 0x45, 0xa3, 0x54, 0x60, 0xaa, 0xb5, 0x91, 0x32, 0x14, 0xb6, 0xe9, 0x0e, 0xeb, + 0x6d, 0x3c, 0x25, 0x80, 0x04, 0x0b, 0x73, 0x12, 0xf1, 0x4b, 0x33, 0x27, 0x11, 0x30, 0xe2, 0xc1, + 0x2c, 0x8e, 0x4f, 0xcd, 0xf2, 0xfd, 0x87, 0xae, 0x67, 0x63, 0xec, 0xd7, 0x7e, 0x4f, 0xd9, 0xcb, + 0xa9, 0x83, 0xff, 0x1c, 0x1f, 0xfc, 0xae, 0xc2, 0x41, 0x15, 0xf6, 0x12, 0xec, 0xc9, 0x57, 0x61, + 0xda, 0xa4, 0x5f, 0xeb, 0x39, 0x1e, 0xbd, 0x7b, 0xb3, 0x84, 0x5f, 0xe5, 0xa4, 0xe6, 0xa4, 0xa3, + 0x17, 0x72, 0x89, 0xd2, 0xe3, 0x30, 0xa9, 0x2d, 0x6a, 0xb4, 0x77, 0x2d, 0xfd, 0xb5, 0x40, 0x25, + 0x21, 0x35, 0x98, 0xa8, 0xd0, 0x07, 0x4e, 0x93, 0xa2, 0x2b, 0x81, 0x30, 0xe5, 0x0b, 0x63, 0x9a, + 0x47, 0x25, 0x5c, 0x6f, 0x62, 0x23, 0x80, 0x3b, 0x26, 0xe8, 0xd6, 0x62, 0x21, 0x22, 0xb9, 0x01, + 0xb9, 0x6a, 0xa5, 0x26, 0x2c, 0xf9, 0xa4, 0x85, 0x7e, 0xd5, 0xae, 0xc9, 0x08, 0xd0, 0x68, 0xfc, + 0xe1, 0xd8, 0x9a, 0x1d, 0x60, 0xb5, 0x52, 0x23, 0xbb, 0x30, 0x85, 0x03, 0xb0, 0x46, 0x2d, 0x3e, + 0xb6, 0x33, 0x7d, 0xc6, 0xf6, 0x4a, 0xea, 0xd8, 0x2e, 0xf0, 0xb1, 0xdd, 0x17, 0xd4, 0x5a, 0x48, + 0x5b, 0x95, 0x2d, 0x13, 0x3f, 0x45, 0x98, 0x6d, 0x19, 0xd4, 0x75, 0x6b, 0x1d, 0x1f, 0xb7, 0x85, + 0xf8, 0x29, 0xa3, 0x72, 0x87, 0x91, 0x61, 0xfb, 0x1a, 0x0a, 0x27, 0xf9, 0x90, 0xcf, 0x41, 0x7e, + 0xf3, 0x20, 0xb0, 0x16, 0x66, 0xb5, 0x71, 0x64, 0x20, 0xd9, 0x7d, 0xd4, 0x18, 0xba, 0x07, 0x5a, + 0x38, 0x0a, 0xa4, 0x21, 0xcb, 0x30, 0x56, 0xab, 0xde, 0xaf, 0xb7, 0xdc, 0x60, 0x81, 0x84, 0x77, + 0x1a, 0xd2, 0x75, 0x1e, 0x34, 0xfc, 0x96, 0xab, 0x87, 0xea, 0x97, 0x88, 0x6c, 0xfa, 0xd6, 0x2c, + 0xcf, 0x7e, 0x68, 0x79, 0xe8, 0x01, 0x36, 0xa7, 0x55, 0xab, 0x94, 0xf0, 0xe9, 0xdb, 0x17, 0x80, + 0x98, 0x5b, 0x98, 0xca, 0x42, 0x68, 0x03, 0x66, 0xc5, 0x32, 0x11, 0x5d, 0xbb, 0x7b, 0xb3, 0x64, + 0xfc, 0x47, 0x19, 0xdc, 0x30, 0xc9, 0x2b, 0xe8, 0xb1, 0x1e, 0x3e, 0xf0, 0xa2, 0x5e, 0xd3, 0xea, + 0xc6, 0x02, 0x21, 0x72, 0x14, 0xf2, 0x1a, 0x8c, 0xde, 0xb4, 0x9a, 0x34, 0x90, 0x0f, 0x3b, 0x88, + 0xbc, 0x8b, 0x10, 0x55, 0x09, 0xca, 0x71, 0x98, 0x2c, 0xc7, 0x17, 0x52, 0x29, 0x4a, 0xab, 0x56, + 0x2e, 0xc9, 0x77, 0x1d, 0x94, 0xe5, 0xc4, 0x02, 0x54, 0xf2, 0xae, 0xc5, 0x6c, 0x20, 0x53, 0x39, + 0x18, 0x7f, 0x94, 0x89, 0x76, 0x00, 0xf2, 0x32, 0xe4, 0xcd, 0x5a, 0xd8, 0x7e, 0xee, 0x0d, 0x15, + 0x6b, 0x3e, 0x22, 0x90, 0x0f, 0xe0, 0x94, 0xc2, 0x27, 0x61, 0x90, 0xf9, 0x12, 0xba, 0xeb, 0x28, + 0x2d, 0x49, 0xb7, 0xca, 0x4c, 0xe7, 0x81, 0x82, 0x6b, 0x54, 0x50, 0xa1, 0x1d, 0x87, 0xf3, 0x56, + 0x3a, 0xab, 0xf2, 0xb6, 0x11, 0x21, 0xde, 0xd9, 0x34, 0x0e, 0xdc, 0x63, 0xc7, 0xf8, 0x8d, 0x8c, + 0xf6, 0x65, 0x87, 0xc9, 0xa8, 0x32, 0xc7, 0x24, 0xa3, 0x7a, 0x13, 0xa0, 0xd4, 0x0b, 0xdc, 0xd5, + 0x8e, 0xe7, 0xb6, 0xb8, 0x76, 0x41, 0xc4, 0x02, 0x45, 0x9d, 0x29, 0x45, 0xb0, 0xe6, 0x58, 0x10, + 0x22, 0xa7, 0xda, 0xae, 0xe6, 0x3e, 0xaa, 0xed, 0xaa, 0xf1, 0x3b, 0x19, 0x6d, 0x6d, 0x33, 0x89, + 0x4c, 0x7e, 0x1e, 0x8a, 0x69, 0x41, 0xf2, 0xf3, 0x88, 0x3e, 0x8e, 0xff, 0x7f, 0x06, 0x4e, 0x73, + 0x23, 0xd0, 0x8d, 0x5e, 0x7b, 0x87, 0x7a, 0xf7, 0xad, 0x96, 0x63, 0x73, 0x8f, 0x34, 0x2e, 0x6c, + 0x5e, 0x4a, 0x7e, 0x28, 0xe9, 0xf8, 0xfc, 0x02, 0xc7, 0x8d, 0x52, 0x1b, 0x1d, 0x2c, 0x6c, 0x3c, + 0x08, 0x4b, 0xd5, 0x0b, 0x5c, 0x3a, 0xbd, 0xf1, 0xab, 0x19, 0x78, 0xe1, 0xd8, 0x5a, 0xc8, 0x55, + 0x18, 0x93, 0x41, 0x58, 0x33, 0x38, 0xf0, 0x68, 0x90, 0x95, 0x0c, 0xc0, 0x2a, 0xb1, 0xc8, 0x97, + 0xe0, 0x94, 0xca, 0x6a, 0xcb, 0xb3, 0x1c, 0x35, 0xd4, 0x69, 0x4a, 0xab, 0x03, 0x86, 0x12, 0x97, + 0x8c, 0xd2, 0x99, 0x18, 0xff, 0x47, 0x46, 0x49, 0x5c, 0xf7, 0x94, 0xca, 0xcb, 0x37, 0x34, 0x79, + 0x59, 0xc6, 0x0a, 0x0a, 0x7b, 0xc5, 0xca, 0x52, 0xef, 0x38, 0x33, 0x8a, 0x61, 0x21, 0x02, 0xbe, + 0x99, 0x85, 0x89, 0x7b, 0x3e, 0xf5, 0xf8, 0x03, 0xe7, 0xf7, 0x57, 0x4c, 0x98, 0xb0, 0x5f, 0x43, + 0x45, 0xed, 0xf8, 0x83, 0x0c, 0x2a, 0xbe, 0x55, 0x0a, 0x36, 0x1a, 0x4a, 0x4a, 0x0a, 0x1c, 0x0d, + 0x4c, 0x46, 0x81, 0x50, 0x1e, 0xd9, 0x63, 0x5d, 0xcf, 0x4e, 0x83, 0x29, 0x8a, 0xd6, 0xc9, 0xe7, + 0x61, 0xe4, 0x1e, 0xaa, 0xf1, 0x74, 0xef, 0xe3, 0x90, 0x3f, 0x16, 0xf2, 0x4d, 0xba, 0xc7, 0xfe, + 0x54, 0xcf, 0x18, 0x2c, 0x23, 0x75, 0x18, 0x2b, 0x7b, 0x14, 0x93, 0xcd, 0xe5, 0x87, 0xf7, 0xa0, + 0x6b, 0x72, 0x92, 0xb8, 0x07, 0x9d, 0xe0, 0x64, 0xfc, 0x4c, 0x16, 0x48, 0xd4, 0x47, 0x8c, 0xd2, + 0xee, 0x3f, 0xb5, 0x93, 0xfe, 0x9e, 0x36, 0xe9, 0xe7, 0x12, 0x93, 0xce, 0xbb, 0x37, 0xd4, 0xdc, + 0xff, 0x66, 0x06, 0x4e, 0xa7, 0x13, 0x92, 0x0b, 0x30, 0xba, 0xb9, 0x55, 0x93, 0x0e, 0xec, 0xa2, + 0x2b, 0x6e, 0x17, 0xef, 0xe5, 0xa6, 0x28, 0x22, 0xaf, 0xc3, 0xe8, 0x17, 0xcc, 0x32, 0x3b, 0x87, + 0x94, 0x88, 0xa8, 0x5f, 0xf3, 0x1a, 0x4d, 0xfd, 0x28, 0x12, 0x48, 0xea, 0xdc, 0xe6, 0x9e, 0xd8, + 0xdc, 0xfe, 0x64, 0x16, 0x66, 0x4a, 0xcd, 0x26, 0xf5, 0x7d, 0x26, 0xe4, 0x50, 0x3f, 0x78, 0x6a, + 0x27, 0x36, 0xdd, 0x35, 0x5d, 0xeb, 0xdb, 0x50, 0xb3, 0xfa, 0xdb, 0x19, 0x38, 0x25, 0xa9, 0x1e, + 0x38, 0xf4, 0xe1, 0xd6, 0xbe, 0x47, 0xfd, 0x7d, 0xb7, 0x65, 0x0f, 0x1d, 0x76, 0x99, 0x09, 0x7a, + 0x18, 0xa3, 0x51, 0x7d, 0xed, 0xde, 0x45, 0x88, 0x26, 0xe8, 0xf1, 0x38, 0x8e, 0x57, 0x61, 0xac, + 0xd4, 0xed, 0x7a, 0xee, 0x03, 0xfe, 0xd9, 0x4f, 0x09, 0x87, 0x42, 0x0e, 0xd2, 0x1c, 0x10, 0x39, + 0x88, 0x35, 0xa3, 0x42, 0x3b, 0x3c, 0x92, 0xce, 0x14, 0x6f, 0x86, 0x4d, 0x3b, 0xaa, 0x0c, 0x8b, + 0xe5, 0x46, 0x1d, 0x48, 0xcd, 0x73, 0xdb, 0x6e, 0x40, 0x6d, 0xde, 0x1f, 0xf4, 0xdb, 0x3c, 0x36, + 0x08, 0xc8, 0x96, 0x13, 0xb4, 0xb4, 0x20, 0x20, 0x01, 0x03, 0x98, 0x1c, 0x6e, 0xfc, 0xaf, 0x23, + 0x30, 0xa9, 0x8e, 0x0e, 0x31, 0x78, 0x8c, 0x56, 0xd7, 0x53, 0x9d, 0x87, 0x2d, 0x84, 0x98, 0xa2, + 0x24, 0xf2, 0xb9, 0xcf, 0x1e, 0xeb, 0x73, 0xbf, 0x0d, 0x53, 0x35, 0xcf, 0xed, 0xba, 0x3e, 0xb5, + 0x79, 0x12, 0x52, 0xbe, 0x15, 0xce, 0x29, 0x77, 0x3c, 0x36, 0x91, 0xf8, 0x4e, 0x88, 0x1a, 0x8e, + 0xae, 0xc0, 0x6e, 0xc4, 0x53, 0x94, 0xea, 0x7c, 0xb8, 0x09, 0x82, 0xe5, 0x8b, 0x80, 0x59, 0xa1, + 0x09, 0x02, 0x83, 0xe8, 0x26, 0x08, 0x0c, 0xa2, 0x7e, 0x6b, 0x23, 0x4f, 0xea, 0x5b, 0x23, 0x3f, + 0x93, 0x81, 0x89, 0x52, 0xa7, 0x23, 0x7c, 0xf9, 0x8f, 0x71, 0x66, 0xfc, 0x92, 0xb0, 0x42, 0x78, + 0xeb, 0x23, 0x59, 0x21, 0xa0, 0xdc, 0xe2, 0xa3, 0xa4, 0x1a, 0x55, 0xa8, 0xde, 0x72, 0x94, 0x76, + 0x90, 0xb7, 0xa0, 0x18, 0x2e, 0xf2, 0x6a, 0xc7, 0xa6, 0x8f, 0xa8, 0xbf, 0x30, 0x76, 0x3e, 0x77, + 0x69, 0x4a, 0x84, 0xca, 0x53, 0x25, 0xd3, 0x38, 0x22, 0xd9, 0x02, 0xb0, 0xc2, 0xd5, 0x15, 0x4b, + 0xff, 0x92, 0x5c, 0x7e, 0x42, 0x7a, 0xc6, 0xdf, 0xf8, 0xd0, 0xa3, 0x4a, 0xcf, 0x11, 0x1f, 0xd2, + 0x86, 0x19, 0x9e, 0x7b, 0x05, 0x73, 0xb2, 0x62, 0x44, 0x58, 0x38, 0x76, 0x1e, 0x5e, 0x16, 0xba, + 0xaa, 0x67, 0x45, 0x46, 0x17, 0x4c, 0xf3, 0xda, 0x48, 0x09, 0x0f, 0x1b, 0xe7, 0xcd, 0x03, 0x13, + 0x9a, 0x67, 0x92, 0xed, 0xe5, 0x8b, 0xfe, 0x27, 0x33, 0x70, 0x5a, 0x5d, 0xf4, 0xf5, 0xde, 0x4e, + 0xdb, 0xc1, 0xbb, 0x20, 0xb9, 0x02, 0xe3, 0x62, 0x4d, 0x86, 0x97, 0xa8, 0x64, 0x60, 0xdb, 0x08, + 0x85, 0xac, 0xb2, 0x65, 0xc8, 0x78, 0x08, 0xa9, 0x7b, 0x2e, 0xb6, 0x4f, 0xb1, 0xa2, 0x28, 0xaf, + 0x97, 0x87, 0xbf, 0xf5, 0xf5, 0xc9, 0x20, 0xc6, 0xbb, 0x30, 0xab, 0xcf, 0x44, 0x9d, 0x06, 0xe4, + 0x32, 0x8c, 0xc9, 0xe9, 0xcb, 0xa4, 0x4f, 0x9f, 0x2c, 0x37, 0xb6, 0x81, 0x24, 0xe8, 0x7d, 0x34, + 0x17, 0xa2, 0x81, 0x34, 0x67, 0x93, 0x8f, 0x75, 0x09, 0xc4, 0x30, 0xe7, 0xf5, 0x84, 0x66, 0xbf, + 0xca, 0x48, 0x8d, 0x3f, 0x9a, 0x86, 0xb9, 0x94, 0x3d, 0xf7, 0x18, 0x99, 0x68, 0x49, 0xdf, 0x20, + 0xc6, 0x43, 0x5f, 0x68, 0xb9, 0x2d, 0xbc, 0x2b, 0x73, 0x12, 0x0f, 0xd8, 0x0e, 0x06, 0x25, 0x2a, + 0xfe, 0x24, 0xe4, 0x22, 0x35, 0x5c, 0xc1, 0xc8, 0x13, 0x0b, 0x57, 0xb0, 0x02, 0x53, 0xa2, 0x57, + 0x62, 0xbb, 0x1a, 0x8d, 0xb4, 0xb9, 0x1e, 0x2f, 0x68, 0x24, 0xb6, 0x2d, 0x9d, 0x84, 0xf3, 0xf0, + 0xdd, 0xd6, 0x03, 0x2a, 0x78, 0x8c, 0xa9, 0x3c, 0xb0, 0x20, 0x95, 0x87, 0x42, 0x42, 0xfe, 0x7d, + 0x4c, 0x45, 0x81, 0x10, 0x75, 0xcf, 0x2a, 0x0c, 0xda, 0xb3, 0xec, 0x27, 0xb3, 0x67, 0x9d, 0x93, + 0x6d, 0x4c, 0xdf, 0xbb, 0x52, 0x9a, 0x45, 0x7e, 0x29, 0x03, 0xb3, 0xdc, 0x67, 0x5e, 0x6d, 0xec, + 0x40, 0x3f, 0xe8, 0xe6, 0x93, 0x69, 0xec, 0x73, 0x3e, 0x56, 0xdb, 0xa7, 0xad, 0xc9, 0x46, 0x91, + 0x1f, 0x00, 0x08, 0xbf, 0x28, 0x7f, 0x01, 0xf0, 0x53, 0x7b, 0x2e, 0x65, 0x17, 0x08, 0x91, 0xa2, + 0x48, 0xba, 0x41, 0x48, 0xa7, 0x25, 0x20, 0x09, 0xa1, 0xe4, 0x2f, 0xc0, 0x3c, 0xfb, 0x5e, 0x42, + 0x88, 0x88, 0xf0, 0xb1, 0x30, 0x81, 0xb5, 0x7c, 0xba, 0xbf, 0x4c, 0x74, 0x25, 0x8d, 0x8c, 0xc7, + 0xfd, 0x8b, 0x12, 0xaf, 0x05, 0xaa, 0x33, 0x70, 0x6a, 0x45, 0x18, 0x32, 0x07, 0x5b, 0xcf, 0xa3, + 0xdd, 0xf6, 0xd9, 0xdf, 0xce, 0xca, 0x6f, 0x81, 0xef, 0x6f, 0xbe, 0xee, 0xcc, 0x86, 0x20, 0xf2, + 0x05, 0x20, 0xa1, 0xb3, 0x39, 0x87, 0x51, 0x19, 0x09, 0x97, 0xab, 0x76, 0x23, 0xa7, 0x75, 0x4f, + 0x16, 0xab, 0x8b, 0x24, 0x49, 0x4c, 0x28, 0xcc, 0x8b, 0x4e, 0x33, 0xa8, 0x4c, 0x75, 0xe1, 0x2f, + 0x4c, 0x6b, 0xf1, 0x53, 0xa2, 0x92, 0x28, 0x43, 0x9b, 0x92, 0x2f, 0x43, 0x53, 0x39, 0xa5, 0xb1, + 0x23, 0x37, 0x60, 0x1c, 0x3d, 0xca, 0xd6, 0xa4, 0x11, 0x94, 0x30, 0xc8, 0x40, 0xdf, 0xb3, 0xc6, + 0xbe, 0x6e, 0xca, 0x14, 0xa1, 0xb2, 0xeb, 0x40, 0xc5, 0x3b, 0x34, 0x7b, 0x1d, 0x54, 0xc0, 0x0a, + 0x7d, 0x87, 0xed, 0x1d, 0x36, 0xbc, 0x9e, 0xee, 0x72, 0x88, 0x48, 0xe4, 0xab, 0x30, 0x71, 0xd7, + 0x7a, 0x24, 0xf5, 0xaf, 0x42, 0xc9, 0x3a, 0x54, 0x6e, 0xf1, 0xb6, 0xf5, 0xa8, 0x61, 0xf7, 0xe2, + 0x51, 0x07, 0x79, 0x6e, 0x71, 0x85, 0x25, 0xf9, 0x32, 0x80, 0xa2, 0x15, 0x26, 0xc7, 0x56, 0xf0, + 0x82, 0x8c, 0x08, 0x94, 0xaa, 0x2d, 0x46, 0xfe, 0x0a, 0xc3, 0x98, 0xe4, 0x30, 0xff, 0xc9, 0x49, + 0x0e, 0xa7, 0x3e, 0x39, 0xc9, 0x61, 0x71, 0x07, 0xce, 0xf6, 0xfd, 0x74, 0x52, 0x82, 0x34, 0x5e, + 0xd5, 0x83, 0x34, 0x9e, 0xed, 0x77, 0xc4, 0xfa, 0x7a, 0xf0, 0xe4, 0xb9, 0xe2, 0x7c, 0x7f, 0xe9, + 0xe4, 0xbb, 0xd9, 0xd8, 0x91, 0x2b, 0x2e, 0x16, 0x3c, 0xd8, 0x7e, 0x3f, 0x99, 0x24, 0x8b, 0xd9, + 0xbf, 0xf8, 0xa1, 0x9c, 0x8d, 0x2e, 0x34, 0xb1, 0x24, 0xa7, 0xfc, 0x78, 0xfe, 0xb8, 0xa7, 0xef, + 0xdb, 0x30, 0xcd, 0xf3, 0xfe, 0xdc, 0xa1, 0x87, 0x0f, 0x5d, 0xcf, 0x96, 0x99, 0x2c, 0x51, 0x06, + 0x4f, 0x64, 0xc8, 0x8b, 0xe1, 0x92, 0x8a, 0x74, 0x52, 0x1a, 0xc1, 0xda, 0xcf, 0xa6, 0xee, 0x62, + 0x0c, 0x61, 0x90, 0xff, 0x12, 0x79, 0x23, 0x14, 0xd4, 0xa8, 0xa7, 0x86, 0x50, 0xf6, 0x24, 0x30, + 0x45, 0x5e, 0xa3, 0x9e, 0xf1, 0x7b, 0x39, 0x20, 0xbc, 0xa6, 0xb2, 0xd5, 0xb5, 0xd0, 0x85, 0xcf, + 0xc1, 0x50, 0x14, 0x45, 0x81, 0x63, 0xed, 0xb4, 0xa8, 0x1a, 0xc7, 0x45, 0x18, 0x9d, 0x86, 0x65, + 0x8d, 0xf8, 0x45, 0x27, 0x41, 0xd8, 0x67, 0xab, 0xcb, 0x7e, 0x9c, 0xad, 0xee, 0xab, 0xf0, 0x6c, + 0xa9, 0x8b, 0x09, 0xc4, 0x64, 0x2d, 0x37, 0x5d, 0x4f, 0x6e, 0x52, 0x9a, 0x73, 0x88, 0x15, 0xa2, + 0x25, 0x5a, 0x3a, 0x88, 0x85, 0x22, 0xa7, 0xb0, 0x75, 0xd9, 0x0d, 0x54, 0x67, 0x63, 0x29, 0xa7, + 0x74, 0xb1, 0x24, 0x45, 0x4e, 0xe1, 0x24, 0x92, 0x87, 0xe3, 0x49, 0x39, 0x05, 0x93, 0x06, 0x44, + 0x3c, 0x1c, 0x8f, 0xf6, 0x91, 0x75, 0x42, 0x12, 0xf2, 0x36, 0x4c, 0x94, 0x7a, 0x81, 0x2b, 0x18, + 0x0b, 0x6b, 0xe9, 0xc8, 0xae, 0x59, 0x34, 0x45, 0xbb, 0xfa, 0x44, 0xe8, 0xc6, 0x1f, 0xe6, 0xe0, + 0x6c, 0x72, 0x7a, 0x45, 0x69, 0xf8, 0x7d, 0x64, 0x8e, 0xf9, 0x3e, 0xd2, 0x56, 0x03, 0x7f, 0x2c, + 0x78, 0x62, 0xab, 0x81, 0xe7, 0x21, 0xfb, 0x88, 0xab, 0xa1, 0x0e, 0x13, 0xea, 0x79, 0x97, 0xff, + 0xa8, 0xe7, 0x9d, 0xca, 0x85, 0x5d, 0xea, 0xb9, 0x8f, 0xf5, 0x48, 0xf4, 0x74, 0x14, 0x77, 0xaf, + 0xe6, 0x18, 0xe4, 0xff, 0x07, 0xe7, 0xf9, 0x9e, 0x14, 0xef, 0xec, 0xca, 0xa1, 0xe4, 0x28, 0x26, + 0x6e, 0xf9, 0xf1, 0xd1, 0xd2, 0x15, 0xae, 0x2a, 0x69, 0x24, 0x86, 0xad, 0xb1, 0x73, 0xd8, 0x90, + 0x2d, 0x53, 0x2a, 0x39, 0x96, 0x37, 0x26, 0x1f, 0x53, 0x72, 0x5b, 0xbd, 0x9e, 0xe6, 0x46, 0xc2, + 0x23, 0x91, 0x72, 0xb0, 0xee, 0x41, 0x22, 0xd5, 0x61, 0xd9, 0x54, 0x75, 0x98, 0xd4, 0xa7, 0xe4, + 0x52, 0xf5, 0x29, 0x15, 0x98, 0xa9, 0xf7, 0x76, 0x64, 0xdd, 0x88, 0x98, 0xd7, 0x3c, 0xe1, 0xd2, + 0x3a, 0x14, 0x27, 0x31, 0x7e, 0x34, 0x0b, 0x93, 0xb5, 0x56, 0x6f, 0xcf, 0xe9, 0x54, 0xac, 0xc0, + 0x7a, 0x6a, 0x35, 0x74, 0x6f, 0x6a, 0x1a, 0xba, 0xd0, 0x5b, 0x2a, 0xec, 0xd8, 0x50, 0xea, 0xb9, + 0x6f, 0x65, 0x60, 0x26, 0x22, 0xe1, 0xe7, 0xec, 0x1a, 0xe4, 0xd9, 0x0f, 0x71, 0x6f, 0x3d, 0x9f, + 0x60, 0xcc, 0x13, 0xb5, 0x84, 0x7f, 0x09, 0x9d, 0x99, 0x9e, 0x05, 0x01, 0x39, 0x2c, 0x7e, 0x86, + 0x67, 0xfc, 0x3f, 0x79, 0x82, 0x96, 0x5f, 0xcb, 0x40, 0x31, 0xde, 0x13, 0x72, 0x07, 0xc6, 0x18, + 0x27, 0x87, 0xca, 0x2b, 0xf5, 0x8b, 0x7d, 0xfa, 0x7c, 0x45, 0xa0, 0xf1, 0xe6, 0xe1, 0xe0, 0x53, + 0x0e, 0x31, 0x25, 0x87, 0x45, 0x13, 0x26, 0x55, 0xac, 0x94, 0xd6, 0xbd, 0xa6, 0x0b, 0x17, 0xa7, + 0xd3, 0xc7, 0x41, 0x4b, 0x2b, 0xa3, 0xb5, 0x5a, 0xc8, 0x0d, 0x17, 0xb5, 0xc5, 0x85, 0x63, 0x15, + 0x5b, 0x37, 0x7c, 0x99, 0x2d, 0x47, 0xc1, 0x91, 0xd5, 0x75, 0x96, 0xb2, 0xa0, 0x43, 0x3c, 0xf2, + 0x1a, 0x8c, 0xf2, 0xfa, 0xd4, 0xf4, 0x0a, 0x5d, 0x84, 0xa8, 0x22, 0x2e, 0xc7, 0x31, 0xfe, 0x66, + 0x0e, 0x4e, 0x47, 0xcd, 0xbb, 0xd7, 0xb5, 0xad, 0x80, 0xd6, 0x2c, 0xcf, 0x6a, 0xfb, 0xc7, 0x7c, + 0x01, 0x97, 0x12, 0x4d, 0xc3, 0x70, 0xfb, 0xb2, 0x69, 0x4a, 0x83, 0x8c, 0x58, 0x83, 0x50, 0x7d, + 0xc9, 0x1b, 0x24, 0x9b, 0x41, 0xee, 0x40, 0xae, 0x4e, 0x03, 0xb1, 0x6d, 0x5e, 0x4c, 0x8c, 0xaa, + 0xda, 0xae, 0x2b, 0x75, 0x1a, 0xf0, 0x49, 0xe4, 0xb1, 0x3f, 0xa8, 0x16, 0x7b, 0xb1, 0x4e, 0x03, + 0xb2, 0x0d, 0xa3, 0xab, 0x8f, 0xba, 0xb4, 0x19, 0x88, 0xf4, 0x42, 0x97, 0x07, 0xf3, 0xe3, 0xb8, + 0x4a, 0x76, 0x21, 0x8a, 0x00, 0x75, 0xb0, 0x38, 0xca, 0xe2, 0x0d, 0x28, 0xc8, 0xca, 0x4f, 0xb2, + 0x72, 0x17, 0xdf, 0x84, 0x09, 0xa5, 0x92, 0x13, 0x2d, 0xfa, 0x9f, 0x63, 0xfb, 0xaa, 0xdb, 0x92, + 0x19, 0x89, 0x56, 0x13, 0x62, 0x5e, 0x26, 0xf2, 0xd9, 0xe5, 0x62, 0x5e, 0xe3, 0x40, 0x14, 0x0d, + 0x90, 0xf7, 0xaa, 0x30, 0x53, 0x3f, 0x70, 0xba, 0x51, 0x08, 0x3c, 0xed, 0x30, 0xc5, 0x58, 0xf1, + 0xe2, 0xce, 0x1d, 0x3f, 0x4c, 0xe3, 0x74, 0xc6, 0x9f, 0x64, 0x60, 0x94, 0xfd, 0x75, 0xff, 0xc6, + 0x53, 0xba, 0x65, 0x5e, 0xd7, 0xb6, 0xcc, 0x59, 0x25, 0xfe, 0x2c, 0x6e, 0x1c, 0x37, 0x8e, 0xd9, + 0x2c, 0x8f, 0xc4, 0x04, 0x71, 0x64, 0x72, 0x0b, 0xc6, 0x84, 0xe5, 0x8d, 0x30, 0x91, 0x56, 0x03, + 0xda, 0x4a, 0x9b, 0x9c, 0xf0, 0x72, 0xee, 0x76, 0xe3, 0xda, 0x0c, 0x49, 0xcd, 0x44, 0x72, 0x19, + 0x8c, 0x50, 0xcb, 0x63, 0xe7, 0xa2, 0xff, 0x19, 0x0f, 0xc8, 0xaa, 0x64, 0x88, 0xec, 0xe3, 0xd8, + 0x5f, 0x12, 0x0f, 0x19, 0xb9, 0x41, 0x4c, 0x4e, 0xcb, 0x34, 0x5f, 0xa9, 0x6f, 0x1c, 0xbf, 0x3f, + 0xc7, 0x43, 0x99, 0xca, 0x86, 0xbd, 0x03, 0x93, 0x37, 0x5d, 0xef, 0xa1, 0xe5, 0xf1, 0x00, 0x75, + 0xc2, 0x72, 0x80, 0x5d, 0x1d, 0xa7, 0x76, 0x39, 0x9c, 0x87, 0xb8, 0xfb, 0xde, 0xd1, 0x52, 0x7e, + 0xc5, 0x75, 0x5b, 0xa6, 0x86, 0x4e, 0x36, 0x61, 0xea, 0xae, 0xf5, 0x48, 0xb9, 0xf4, 0x72, 0x87, + 0x92, 0xcb, 0x6c, 0x01, 0xb3, 0x5b, 0xf3, 0xf1, 0x66, 0x50, 0x3a, 0x3d, 0x71, 0x60, 0xba, 0xe6, + 0x7a, 0x81, 0xa8, 0xc4, 0xe9, 0xec, 0x89, 0xce, 0x26, 0x0d, 0xb9, 0xae, 0xa6, 0x1a, 0x72, 0x9d, + 0xed, 0xba, 0x5e, 0xd0, 0xd8, 0x0d, 0xc9, 0xb5, 0xa0, 0x39, 0x1a, 0x63, 0xf2, 0x0e, 0xcc, 0x2a, + 0x41, 0xc1, 0x6e, 0xba, 0x5e, 0xdb, 0x92, 0x42, 0x39, 0xea, 0x81, 0xd1, 0xde, 0x64, 0x17, 0xc1, + 0x66, 0x12, 0x93, 0x7c, 0x90, 0xe6, 0xa2, 0x33, 0x12, 0x59, 0x82, 0xa5, 0xb8, 0xe8, 0xf4, 0xb3, + 0x04, 0x4b, 0x3a, 0xeb, 0xec, 0x0d, 0xb2, 0x14, 0x2d, 0xac, 0x5c, 0x13, 0xd7, 0xef, 0xe3, 0x2d, + 0x41, 0xc3, 0x79, 0xeb, 0x63, 0x11, 0xba, 0x0c, 0xb9, 0x95, 0xda, 0x4d, 0x7c, 0xbd, 0x90, 0x86, + 0x36, 0x9d, 0x7d, 0xab, 0xd3, 0x44, 0x61, 0x59, 0x58, 0x67, 0xab, 0x3b, 0xf2, 0x4a, 0xed, 0x26, + 0xb1, 0x60, 0xae, 0x46, 0xbd, 0xb6, 0x13, 0x7c, 0xf1, 0xda, 0x35, 0x65, 0xa2, 0x0a, 0xd8, 0xb4, + 0xab, 0xa2, 0x69, 0x4b, 0x5d, 0x44, 0x69, 0x3c, 0xba, 0x76, 0x2d, 0x75, 0x3a, 0xc2, 0x86, 0xa5, + 0xf1, 0x62, 0x3b, 0xe3, 0x5d, 0xeb, 0x51, 0x64, 0x54, 0xef, 0x0b, 0x67, 0xc7, 0x73, 0x72, 0x61, + 0x45, 0x06, 0xf9, 0xda, 0xce, 0xa8, 0x13, 0xb1, 0xbb, 0x4e, 0xb4, 0xbc, 0x7c, 0xe1, 0x26, 0xb2, + 0x28, 0x55, 0x3a, 0xd2, 0x23, 0x56, 0x15, 0xd8, 0x15, 0x74, 0x72, 0x2f, 0xbc, 0xb1, 0xf1, 0x1b, + 0x8f, 0x48, 0x62, 0x75, 0x55, 0xbd, 0xb1, 0x71, 0x45, 0x8a, 0xd6, 0xad, 0x99, 0xf0, 0x9a, 0xcf, + 0xbd, 0x0c, 0x4c, 0x9d, 0x4b, 0xf2, 0x22, 0x38, 0x79, 0xf2, 0x8b, 0x20, 0x85, 0xfc, 0xba, 0xdb, + 0x3c, 0x10, 0x91, 0x7e, 0xbe, 0xc0, 0x3e, 0xf7, 0x96, 0xdb, 0x3c, 0x78, 0x72, 0x16, 0xb0, 0xc8, + 0x9e, 0x6c, 0xb0, 0xa6, 0xb2, 0x55, 0x20, 0xc6, 0x44, 0x58, 0x55, 0xce, 0x87, 0x37, 0x21, 0xa5, + 0x8c, 0x0b, 0x3e, 0x7c, 0xd1, 0xc8, 0xa1, 0x35, 0x75, 0x72, 0x42, 0xa1, 0x58, 0xa1, 0xfe, 0x41, + 0xe0, 0x76, 0xcb, 0x2d, 0xa7, 0xbb, 0xe3, 0x5a, 0x9e, 0x8d, 0xba, 0xbb, 0xb4, 0xef, 0xfb, 0xe5, + 0xd4, 0xef, 0x7b, 0xd6, 0xe6, 0xf4, 0x8d, 0xa6, 0x64, 0x60, 0x26, 0x58, 0x92, 0x0f, 0x60, 0x9a, + 0x2d, 0xee, 0xd5, 0x47, 0x01, 0xed, 0xf0, 0x99, 0x9f, 0x45, 0xd1, 0x61, 0x5e, 0x09, 0xfc, 0x1d, + 0x16, 0xf2, 0x35, 0x85, 0x1f, 0x3b, 0x0d, 0x09, 0xb4, 0x28, 0x49, 0x1a, 0x2b, 0x62, 0xc3, 0xc2, + 0x5d, 0xeb, 0x91, 0x92, 0x7a, 0x4b, 0x59, 0xa4, 0x04, 0x17, 0x18, 0xa6, 0x04, 0x67, 0x0b, 0x2c, + 0x0a, 0xd0, 0xd9, 0x67, 0xbd, 0xf6, 0xe5, 0x44, 0x7e, 0x10, 0xce, 0x88, 0x6e, 0x55, 0x30, 0x1b, + 0x86, 0xeb, 0x1d, 0xd6, 0xf7, 0x2d, 0xf4, 0xa7, 0x99, 0x3b, 0xd9, 0x86, 0x28, 0x07, 0xcc, 0x96, + 0x7c, 0x1a, 0x3e, 0x67, 0x64, 0xf6, 0xab, 0x81, 0x7c, 0x08, 0xd3, 0xfc, 0xc9, 0x66, 0xcd, 0xf5, + 0x03, 0xbc, 0xd0, 0xcf, 0x9f, 0xcc, 0x4c, 0x9c, 0xbf, 0x03, 0x71, 0xc7, 0x8a, 0x98, 0x02, 0x20, + 0xc6, 0x99, 0xbc, 0x05, 0x13, 0x35, 0xa7, 0xc3, 0xe3, 0x98, 0x55, 0x6b, 0xa8, 0x7a, 0x14, 0xe7, + 0x4f, 0xd7, 0xe9, 0x34, 0xe4, 0xad, 0xba, 0x1b, 0x6e, 0x17, 0x2a, 0x36, 0xd9, 0x86, 0x89, 0x7a, + 0x7d, 0xed, 0xa6, 0xc3, 0x0e, 0xc0, 0xee, 0xe1, 0xc2, 0xe9, 0x3e, 0xad, 0xbc, 0x90, 0xda, 0xca, + 0x29, 0xdf, 0xdf, 0xc7, 0xb4, 0xc3, 0x8d, 0xa6, 0xdb, 0x3d, 0x34, 0x55, 0x4e, 0x29, 0xa6, 0xd3, + 0x67, 0x9e, 0xb0, 0xe9, 0x74, 0x15, 0x66, 0x14, 0x03, 0x4b, 0x34, 0xae, 0x5c, 0x88, 0xc2, 0x76, + 0xa9, 0xa6, 0xd2, 0x71, 0xb7, 0xbe, 0x38, 0x9d, 0xb4, 0x99, 0x3e, 0x7b, 0x52, 0x9b, 0x69, 0x07, + 0x66, 0xf9, 0x64, 0x88, 0x75, 0x80, 0x33, 0xbd, 0xd8, 0x67, 0x0c, 0x2f, 0xa7, 0x8e, 0xe1, 0x9c, + 0x98, 0x69, 0xb9, 0xc8, 0xf0, 0x89, 0x32, 0xc9, 0x95, 0xec, 0x02, 0x11, 0x40, 0x91, 0xf4, 0x18, + 0xeb, 0x7a, 0xb6, 0x4f, 0x5d, 0x2f, 0xa6, 0xd6, 0x35, 0x2d, 0xeb, 0xda, 0xe1, 0xd5, 0xa4, 0x70, + 0x24, 0x1d, 0x59, 0x8f, 0x5c, 0x5f, 0x38, 0xb0, 0xcf, 0x69, 0x7a, 0xd0, 0x24, 0x02, 0x0f, 0x22, + 0x1a, 0x5f, 0xb4, 0xf1, 0x71, 0x4f, 0xe1, 0x4c, 0x1e, 0xc1, 0xe9, 0x64, 0x2b, 0xb0, 0xce, 0x73, + 0x58, 0xe7, 0x39, 0xad, 0xce, 0x38, 0x12, 0x5f, 0x37, 0x7a, 0xb7, 0xe2, 0xb5, 0xf6, 0xe1, 0x7f, + 0x3b, 0x5f, 0x98, 0x2a, 0x4e, 0xa7, 0x59, 0x5a, 0xff, 0xa3, 0x6c, 0x6c, 0xd3, 0x26, 0x55, 0x18, + 0x13, 0x73, 0x21, 0xa4, 0xd8, 0xe4, 0x88, 0x9f, 0x4b, 0x1d, 0xf1, 0x31, 0x31, 0xad, 0xa6, 0xa4, + 0x27, 0x0f, 0x19, 0x2b, 0x34, 0x5b, 0x17, 0x62, 0xff, 0x97, 0xf9, 0x9e, 0x8c, 0x20, 0xed, 0xf4, + 0xa9, 0x9c, 0xdc, 0x69, 0x47, 0xf7, 0x09, 0xc3, 0x63, 0x48, 0xd6, 0x46, 0x0e, 0x78, 0xa6, 0x80, + 0x5c, 0xe8, 0xf9, 0xa1, 0xa7, 0x05, 0x78, 0x62, 0x15, 0xb2, 0x5a, 0x8c, 0xdf, 0xc8, 0xc0, 0x94, + 0xb6, 0xeb, 0x93, 0x1b, 0x8a, 0x5b, 0x53, 0xe4, 0x95, 0xab, 0xe1, 0xe0, 0x46, 0x10, 0x77, 0x78, + 0xba, 0x21, 0xec, 0xa6, 0xb3, 0xfd, 0xe9, 0x52, 0x73, 0x7f, 0x0f, 0x56, 0x92, 0x85, 0x99, 0x87, + 0xf2, 0x7d, 0x32, 0x0f, 0xfd, 0xb3, 0x45, 0x98, 0xd6, 0xaf, 0x05, 0xe4, 0x35, 0x18, 0x45, 0xdd, + 0xa2, 0xbc, 0x63, 0xf2, 0xcc, 0xbb, 0x08, 0xd1, 0x32, 0xef, 0x22, 0x84, 0xbc, 0x04, 0x10, 0x1a, + 0xb0, 0x4a, 0xcd, 0xfa, 0xc8, 0xe3, 0xa3, 0xa5, 0xcc, 0xeb, 0xa6, 0x52, 0x40, 0xbe, 0x02, 0xb0, + 0xe1, 0xda, 0x34, 0xcc, 0x8d, 0x36, 0xe0, 0xf5, 0xf8, 0xe5, 0x44, 0x14, 0xed, 0x53, 0x1d, 0xd7, + 0xa6, 0xc9, 0x90, 0xd9, 0x0a, 0x47, 0xf2, 0x39, 0x18, 0x31, 0x7b, 0xec, 0x3e, 0xcb, 0x55, 0x09, + 0x13, 0x72, 0xf7, 0xed, 0xb5, 0xa8, 0x92, 0x4e, 0xbf, 0x17, 0x37, 0x8c, 0x62, 0x00, 0xf2, 0x1e, + 0x8f, 0xae, 0x2d, 0x82, 0x61, 0x8d, 0x44, 0x6f, 0x0d, 0xca, 0xa9, 0x9c, 0x08, 0x87, 0xa5, 0x90, + 0x90, 0x4d, 0x18, 0x53, 0x95, 0xe4, 0x8a, 0x7f, 0xac, 0xfa, 0x90, 0xa2, 0xdc, 0xbc, 0x44, 0x52, + 0xb5, 0xb8, 0xfe, 0x5c, 0x72, 0x21, 0x6f, 0xc3, 0x38, 0x63, 0xcf, 0x3e, 0x61, 0x5f, 0x48, 0xdc, + 0xf8, 0xa2, 0xa0, 0x34, 0x88, 0xed, 0x00, 0x5a, 0xc8, 0xaa, 0x90, 0x80, 0x7c, 0x80, 0x79, 0xc3, + 0xc4, 0x50, 0x0f, 0xb4, 0x2a, 0xb8, 0x98, 0x18, 0x6a, 0x4c, 0x24, 0x96, 0x4c, 0x29, 0x1b, 0xf2, + 0x23, 0x7b, 0x61, 0x28, 0xa5, 0x61, 0x22, 0xa2, 0xbf, 0x92, 0xa8, 0x60, 0x41, 0x46, 0x07, 0x4a, + 0xe6, 0xb8, 0xd3, 0xf8, 0x92, 0x2e, 0x14, 0x23, 0x81, 0x47, 0xd4, 0x05, 0x83, 0xea, 0x7a, 0x3d, + 0x51, 0x97, 0x3a, 0x81, 0x89, 0xea, 0x12, 0xdc, 0x89, 0x0d, 0xd3, 0x72, 0xf3, 0x14, 0xf5, 0x4d, + 0x0c, 0xaa, 0xef, 0xa5, 0x44, 0x7d, 0x73, 0xf6, 0x4e, 0xb2, 0x9e, 0x18, 0x4f, 0xf2, 0x36, 0x4c, + 0x49, 0x08, 0x7e, 0x1f, 0x22, 0x77, 0x2d, 0x6a, 0x45, 0xec, 0x1d, 0x34, 0x99, 0xd7, 0x33, 0xff, + 0xa9, 0xc8, 0x2a, 0x35, 0x5f, 0x1d, 0x53, 0x1a, 0x75, 0x7c, 0x55, 0xe8, 0xc8, 0xe4, 0x7d, 0x98, + 0xa8, 0xb6, 0x59, 0x47, 0xdc, 0x8e, 0x15, 0x50, 0xe1, 0x3b, 0x25, 0x2d, 0x24, 0x94, 0x12, 0x65, + 0xa9, 0xf2, 0x5c, 0x7a, 0x51, 0x91, 0x96, 0x4b, 0x2f, 0x02, 0xb3, 0xc1, 0xe3, 0xaf, 0x22, 0x62, + 0x0d, 0x4b, 0xbf, 0xaa, 0x73, 0x29, 0x56, 0x0a, 0x0a, 0x7b, 0x11, 0x74, 0x8e, 0x41, 0xe5, 0xab, + 0x44, 0x2c, 0xe8, 0x9c, 0xca, 0x93, 0xbc, 0x03, 0x13, 0x22, 0x59, 0x44, 0xc9, 0xdc, 0xf0, 0x17, + 0x8a, 0xd8, 0x79, 0xf4, 0x06, 0x97, 0x79, 0x25, 0x1a, 0x96, 0x17, 0x33, 0xc7, 0x8b, 0xf0, 0xc9, + 0x17, 0x61, 0x7e, 0xdb, 0xe9, 0xd8, 0xee, 0x43, 0x5f, 0x1c, 0x53, 0x62, 0xa3, 0x9b, 0x8d, 0x9c, + 0x61, 0x1e, 0xf2, 0xf2, 0x50, 0x4e, 0x49, 0x6c, 0x7c, 0xa9, 0x1c, 0xc8, 0x9f, 0x4f, 0x70, 0xe6, + 0x2b, 0x88, 0x0c, 0x5a, 0x41, 0xcb, 0x89, 0x15, 0x94, 0xac, 0x3e, 0xbe, 0x9c, 0x52, 0xab, 0x21, + 0x2e, 0x10, 0xfd, 0x7c, 0xbf, 0xed, 0x3a, 0x9d, 0x85, 0x39, 0xdc, 0x0b, 0x9f, 0x8d, 0xfb, 0x5f, + 0x23, 0x5e, 0xcd, 0x6d, 0x39, 0xcd, 0x43, 0x9e, 0xb7, 0x3e, 0x2e, 0x8f, 0x7e, 0xe8, 0x6a, 0x3a, + 0xe3, 0x14, 0xd6, 0xe4, 0x7d, 0x98, 0x64, 0xff, 0x87, 0x17, 0xe6, 0x79, 0xcd, 0xae, 0x4d, 0xc1, + 0x14, 0xf5, 0xe0, 0x1c, 0x61, 0x36, 0x8b, 0x94, 0xbb, 0xb4, 0xc6, 0x8a, 0xbc, 0x09, 0xc0, 0x24, + 0x27, 0xb1, 0x1d, 0x9f, 0x8a, 0x62, 0xfc, 0xa1, 0xbc, 0x95, 0xdc, 0x88, 0x23, 0x64, 0x76, 0x8b, + 0x67, 0xbf, 0xea, 0x3d, 0xdb, 0x65, 0xdf, 0xc6, 0x69, 0xa4, 0xe5, 0x2e, 0x69, 0x8c, 0xd6, 0xe7, + 0x70, 0xcd, 0x25, 0x2d, 0x42, 0x27, 0x6b, 0x30, 0x83, 0xb1, 0x18, 0xab, 0x36, 0xed, 0x04, 0xf8, + 0x5a, 0xb9, 0x70, 0x46, 0x79, 0xcd, 0x65, 0x45, 0x0d, 0x27, 0x2c, 0x53, 0xe5, 0xec, 0x18, 0x19, + 0xf1, 0x61, 0x2e, 0xda, 0x5d, 0xa2, 0xb7, 0xe1, 0x05, 0x1c, 0x24, 0x29, 0x5d, 0x26, 0x31, 0xf8, + 0x7e, 0xcc, 0x66, 0x44, 0xd9, 0xb8, 0xa4, 0x66, 0x5d, 0xad, 0x30, 0x8d, 0x3b, 0x31, 0x81, 0xdc, + 0x2a, 0xd7, 0xe2, 0xc1, 0x0a, 0xcf, 0x62, 0x0f, 0x70, 0x9a, 0xf7, 0x9a, 0x51, 0xd6, 0xc6, 0x94, + 0x80, 0x85, 0x29, 0xd4, 0xe4, 0xeb, 0x70, 0x4a, 0xee, 0x20, 0xa2, 0x48, 0xac, 0xeb, 0xc5, 0x13, + 0xee, 0xc4, 0xf6, 0x4e, 0x58, 0x75, 0x62, 0x49, 0xa7, 0x57, 0x41, 0x2c, 0x98, 0xc0, 0x69, 0x15, + 0x35, 0x3e, 0x3b, 0xa8, 0xc6, 0x4b, 0x89, 0x1a, 0x4f, 0xe3, 0x42, 0x49, 0x56, 0xa6, 0xf2, 0x24, + 0x2b, 0x30, 0x25, 0xbe, 0x23, 0xb1, 0xda, 0x9e, 0xc3, 0xd1, 0x42, 0x05, 0x8b, 0xfc, 0x02, 0x13, + 0x0b, 0x4e, 0x27, 0x51, 0x77, 0x64, 0xae, 0x51, 0x3f, 0xa7, 0xed, 0xc8, 0x71, 0x45, 0xba, 0x8e, + 0xcc, 0x76, 0xa4, 0x48, 0x8a, 0x59, 0x7d, 0xd4, 0xf5, 0x84, 0xfa, 0xe4, 0xf9, 0x28, 0x86, 0xbf, + 0x22, 0xfc, 0x34, 0x68, 0x88, 0xa1, 0x6e, 0x09, 0x69, 0x1c, 0xc8, 0x3d, 0x98, 0x0b, 0x4f, 0x6d, + 0x85, 0xf1, 0x52, 0x94, 0x0b, 0x21, 0x3a, 0xea, 0xd3, 0xf9, 0xa6, 0xd1, 0x13, 0x0b, 0xce, 0x68, + 0xe7, 0xb4, 0xc2, 0xfa, 0x3c, 0xb2, 0xc6, 0x2c, 0xa1, 0xfa, 0x21, 0x9f, 0xce, 0xbe, 0x1f, 0x1f, + 0xf2, 0x21, 0x2c, 0xc6, 0xcf, 0x66, 0xa5, 0x96, 0x17, 0xb0, 0x96, 0x57, 0x1e, 0x1f, 0x2d, 0x5d, + 0x4c, 0x1c, 0xef, 0xe9, 0x15, 0x0d, 0xe0, 0x46, 0xbe, 0x02, 0x0b, 0xfa, 0xf9, 0xac, 0xd4, 0x64, + 0x60, 0x4d, 0xf8, 0xe9, 0x84, 0x07, 0x7b, 0x7a, 0x0d, 0x7d, 0x79, 0x90, 0x00, 0x96, 0x52, 0x57, + 0xb7, 0x52, 0xcd, 0x85, 0xa8, 0x43, 0x89, 0xaf, 0x24, 0xbd, 0xba, 0xe3, 0x58, 0x92, 0x87, 0xf0, + 0x7c, 0xda, 0x31, 0xa1, 0x54, 0xfa, 0x62, 0xa8, 0xa0, 0x7c, 0x35, 0xfd, 0xc8, 0x49, 0xaf, 0xf9, + 0x18, 0xb6, 0xe4, 0x03, 0x38, 0xa5, 0x7c, 0x5f, 0x4a, 0x7d, 0x2f, 0x61, 0x7d, 0xe8, 0xca, 0xaa, + 0x7e, 0x98, 0xe9, 0xb5, 0xa4, 0xf3, 0x20, 0x6d, 0x98, 0x93, 0x1d, 0x47, 0x4d, 0xb0, 0x38, 0x7a, + 0x2e, 0x6a, 0xbb, 0x6a, 0x12, 0x43, 0x49, 0xaf, 0xbc, 0xd3, 0xe8, 0x46, 0x84, 0xea, 0x4a, 0x4f, + 0xe1, 0x4b, 0xd6, 0x60, 0xb4, 0x5e, 0xab, 0xde, 0xbc, 0xb9, 0xba, 0xf0, 0x32, 0xd6, 0x20, 0xfd, + 0x5e, 0x38, 0x50, 0xbb, 0x34, 0x09, 0x73, 0xab, 0xae, 0xb3, 0xbb, 0xab, 0xb9, 0x17, 0x71, 0x54, + 0xe3, 0xe7, 0x32, 0x30, 0x97, 0x42, 0x45, 0x2e, 0x42, 0x1e, 0x53, 0x01, 0x28, 0xcf, 0xc1, 0xb1, + 0x14, 0x00, 0x58, 0x4e, 0x3e, 0x05, 0x63, 0x95, 0x8d, 0x7a, 0xbd, 0xb4, 0x21, 0x2f, 0x58, 0x7c, + 0x73, 0xe9, 0xf8, 0x0d, 0xdf, 0xd2, 0x5f, 0x91, 0x04, 0x1a, 0x79, 0x1d, 0x46, 0xab, 0x35, 0x24, + 0xe0, 0xf6, 0x48, 0x78, 0xe1, 0x70, 0xba, 0x71, 0x7c, 0x81, 0x64, 0xfc, 0x78, 0x06, 0x48, 0x72, + 0x08, 0xc8, 0x35, 0x98, 0x50, 0x07, 0x9a, 0x5f, 0x07, 0xf1, 0xc5, 0x43, 0x19, 0x46, 0x53, 0xc5, + 0x21, 0x15, 0x18, 0xc1, 0xd4, 0x45, 0xe1, 0xf3, 0x55, 0xea, 0x76, 0x7d, 0x26, 0xb1, 0x5d, 0x8f, + 0x60, 0x62, 0x24, 0x93, 0x13, 0x1b, 0xbf, 0x9d, 0x01, 0x92, 0x3c, 0xe2, 0x86, 0x7e, 0x3e, 0x7f, + 0x43, 0xf1, 0x27, 0x55, 0x83, 0x7d, 0x87, 0x99, 0x1a, 0xd4, 0xab, 0x4d, 0xe4, 0x79, 0x7a, 0x51, + 0xbb, 0x4a, 0xf7, 0x77, 0x42, 0xba, 0x0c, 0x23, 0xf7, 0xa9, 0xb7, 0x23, 0x4d, 0xed, 0xd0, 0x3c, + 0xe7, 0x01, 0x03, 0xa8, 0x57, 0x4b, 0xc4, 0x30, 0xfe, 0x30, 0x03, 0xf3, 0x69, 0x72, 0xd7, 0x31, + 0xbe, 0x42, 0x46, 0xcc, 0xcd, 0x09, 0x9f, 0xce, 0xb9, 0xed, 0x4e, 0xe8, 0xdc, 0xb4, 0x04, 0x23, + 0xac, 0xb3, 0x72, 0x86, 0xf1, 0x6a, 0xcf, 0x46, 0xc3, 0x37, 0x39, 0x9c, 0x21, 0xf0, 0x18, 0x45, + 0x79, 0x0c, 0x45, 0x85, 0x08, 0x78, 0xac, 0x9b, 0x1c, 0xce, 0x10, 0xee, 0xba, 0x76, 0x98, 0xaf, + 0x13, 0x11, 0xda, 0x0c, 0x60, 0x72, 0x38, 0xb9, 0x08, 0x63, 0x9b, 0x9d, 0x75, 0x6a, 0x3d, 0x90, + 0xc9, 0x26, 0xf0, 0xa9, 0xdf, 0xed, 0x34, 0x5a, 0x0c, 0x66, 0xca, 0x42, 0xe3, 0x5b, 0x19, 0x98, + 0x4d, 0x88, 0x7c, 0xc7, 0xbb, 0x43, 0x0d, 0xf6, 0x4b, 0x18, 0xa6, 0x7f, 0xbc, 0xf9, 0xf9, 0xf4, + 0xe6, 0x1b, 0xff, 0x7b, 0x1e, 0xce, 0xf4, 0xb9, 0x81, 0x47, 0x7e, 0x53, 0x99, 0x63, 0xfd, 0xa6, + 0xbe, 0xc4, 0x6e, 0xbc, 0x96, 0xd3, 0xf6, 0xb7, 0xdc, 0xa8, 0xc5, 0x91, 0xf9, 0x35, 0x96, 0xc9, + 0x94, 0xa5, 0xd2, 0x4e, 0xf7, 0x2c, 0x4f, 0x1b, 0xdd, 0x08, 0xdc, 0xa4, 0x00, 0xa0, 0x31, 0x4b, + 0x78, 0x2e, 0xe5, 0xfe, 0x8c, 0x78, 0x2e, 0xe9, 0xb6, 0xf4, 0xf9, 0x27, 0x6a, 0x4b, 0x9f, 0x6e, + 0x87, 0x37, 0xf2, 0x71, 0xac, 0x32, 0xcb, 0x30, 0xc5, 0x6d, 0x1d, 0x4a, 0x3e, 0x9f, 0xa4, 0xd1, + 0x84, 0x7d, 0x84, 0xe5, 0x27, 0xe7, 0x42, 0xa3, 0x21, 0x6b, 0xba, 0xdd, 0xf7, 0x18, 0xbe, 0xd1, + 0x5c, 0xec, 0x6f, 0xd7, 0xad, 0xbd, 0xcd, 0xaa, 0xa4, 0xc6, 0xb7, 0xb2, 0xba, 0x5b, 0xd3, 0x9f, + 0xc5, 0x95, 0x77, 0x19, 0x46, 0xb6, 0xf7, 0xa9, 0x27, 0xf7, 0x3b, 0x6c, 0xc8, 0x43, 0x06, 0x50, + 0x1b, 0x82, 0x18, 0xe4, 0x26, 0x4c, 0xd7, 0xf8, 0x4c, 0xc8, 0xe1, 0xcd, 0x47, 0x17, 0xa3, 0xae, + 0xb8, 0xbe, 0xa7, 0x8c, 0x6f, 0x8c, 0xca, 0xb8, 0x05, 0xe7, 0xb4, 0x0f, 0x52, 0x84, 0x61, 0xe0, + 0xe6, 0xd7, 0xfc, 0x44, 0x9c, 0x8e, 0x0c, 0xce, 0xa3, 0xdd, 0xc3, 0x8c, 0x41, 0x8d, 0x5d, 0x78, + 0x7e, 0x20, 0x23, 0x76, 0x10, 0x41, 0x37, 0xfc, 0x15, 0xb3, 0x11, 0x1b, 0x48, 0x6a, 0x2a, 0x74, + 0xc6, 0x0f, 0xc2, 0xa4, 0x3a, 0xca, 0xb8, 0xa7, 0xb2, 0xdf, 0x62, 0x53, 0xe3, 0x7b, 0x2a, 0x03, + 0x98, 0x1c, 0x7e, 0x6c, 0xaa, 0xf7, 0x68, 0xfa, 0x73, 0xc7, 0x4d, 0x3f, 0xab, 0x1c, 0x3f, 0x59, + 0xa5, 0x72, 0xfc, 0xad, 0x56, 0x8e, 0x71, 0x16, 0x4c, 0x0e, 0x7f, 0xa2, 0x95, 0xff, 0x96, 0x0c, + 0xb9, 0x8f, 0xd6, 0xdd, 0xf2, 0x06, 0x1b, 0x25, 0xd4, 0x9c, 0x4b, 0xbb, 0x97, 0x46, 0x98, 0xd1, + 0x21, 0x99, 0x3d, 0xee, 0x90, 0x3c, 0xc9, 0x42, 0xbc, 0x0a, 0x63, 0x25, 0xf1, 0x82, 0x9a, 0x8f, + 0x04, 0x1b, 0x2b, 0xf1, 0x5c, 0x2a, 0xb1, 0x8c, 0x6f, 0x67, 0xe0, 0x54, 0xaa, 0x62, 0x8b, 0xd5, + 0xca, 0x35, 0x68, 0xca, 0x77, 0x18, 0x57, 0x9f, 0x71, 0x8c, 0x93, 0x38, 0xd9, 0x0e, 0xdf, 0x17, + 0xe3, 0x05, 0x18, 0x0f, 0x9f, 0x55, 0xc8, 0xbc, 0x9c, 0x3a, 0x34, 0xab, 0x91, 0xda, 0xf9, 0x3a, + 0x00, 0x6b, 0xc1, 0x13, 0x35, 0x02, 0x33, 0x7e, 0x2b, 0xcb, 0xd3, 0x31, 0x3d, 0xb5, 0xb1, 0xe9, + 0xd2, 0x2d, 0xb7, 0x58, 0x97, 0xfa, 0x47, 0xa4, 0x23, 0xab, 0x30, 0x5a, 0x0f, 0xac, 0xa0, 0x27, + 0x7d, 0x83, 0xe7, 0x54, 0x32, 0x2c, 0xb8, 0xbf, 0x1c, 0x79, 0x87, 0xfa, 0x08, 0xd1, 0x44, 0x79, + 0x84, 0x28, 0x06, 0x60, 0x0e, 0x4c, 0xaa, 0xb4, 0xe4, 0x7d, 0x98, 0x96, 0x01, 0xb7, 0xb8, 0xc3, + 0xb4, 0x78, 0x02, 0x92, 0xa6, 0x04, 0x32, 0xe0, 0x96, 0xea, 0x60, 0xad, 0xe1, 0xab, 0x3b, 0x75, + 0x57, 0x45, 0x36, 0xfe, 0x68, 0x94, 0xaf, 0x03, 0x11, 0x39, 0x6f, 0x07, 0xa6, 0x37, 0xab, 0x95, + 0xb2, 0xa2, 0xa6, 0xd2, 0x93, 0x24, 0xac, 0x3e, 0x0a, 0xa8, 0xd7, 0xb1, 0x5a, 0x02, 0xe1, 0x30, + 0x3a, 0x1b, 0x5c, 0xc7, 0x6e, 0xa6, 0xab, 0xb0, 0x62, 0x1c, 0x59, 0x1d, 0xf5, 0xd2, 0xdd, 0x75, + 0xa5, 0x8e, 0xec, 0x90, 0x75, 0xf8, 0x56, 0xbb, 0xd5, 0xa7, 0x0e, 0x9d, 0x23, 0xd9, 0x87, 0xe2, + 0x2d, 0x94, 0x63, 0x94, 0x5a, 0x72, 0x83, 0x6b, 0xb9, 0x20, 0x6a, 0x79, 0x96, 0x0b, 0x40, 0xe9, + 0xf5, 0x24, 0xb8, 0x46, 0x1f, 0x70, 0xfe, 0xd8, 0x0f, 0xf8, 0x47, 0x32, 0x30, 0xca, 0x05, 0x25, + 0xb1, 0xbe, 0xfa, 0x88, 0x62, 0xdb, 0x4f, 0x46, 0x14, 0x2b, 0xe2, 0x06, 0xae, 0xad, 0x34, 0x5e, + 0x46, 0x2a, 0xb1, 0x05, 0x2b, 0x0d, 0x0a, 0x51, 0xe1, 0xcc, 0x4b, 0x8e, 0x5f, 0xaf, 0xa4, 0x1a, + 0x39, 0xd2, 0x8e, 0x1d, 0xeb, 0xab, 0x25, 0x9d, 0x8f, 0xc7, 0x84, 0x23, 0xad, 0xee, 0x3e, 0xbb, + 0x0e, 0xe3, 0xc2, 0x3d, 0x77, 0xe5, 0x50, 0x3c, 0x2b, 0x15, 0xb5, 0x47, 0x6b, 0x7b, 0xe5, 0x30, + 0x12, 0x02, 0x85, 0x83, 0x6f, 0x63, 0xe7, 0x50, 0x4b, 0x3b, 0x25, 0x11, 0xc9, 0x26, 0x4f, 0xc7, + 0xc2, 0x63, 0x0b, 0xea, 0x81, 0x7f, 0x43, 0xb8, 0x08, 0xfc, 0x21, 0x7d, 0xfc, 0x52, 0x42, 0x09, + 0x46, 0x3c, 0xc8, 0x3a, 0x14, 0x45, 0x9a, 0x7a, 0x6e, 0xf5, 0x50, 0xad, 0x70, 0x17, 0x50, 0x61, + 0xac, 0x26, 0x93, 0xdc, 0x0b, 0x7b, 0x09, 0xdd, 0xfb, 0x22, 0x41, 0x69, 0xfc, 0x44, 0x06, 0x8a, + 0xf1, 0xd5, 0x47, 0xde, 0x86, 0x89, 0x30, 0xb6, 0x63, 0xe8, 0xff, 0x85, 0xea, 0xe5, 0x28, 0x18, + 0xa4, 0xe6, 0x09, 0xa6, 0xa2, 0x93, 0x65, 0x28, 0xb0, 0x8f, 0x38, 0x9e, 0xf0, 0xaa, 0x27, 0x60, + 0xaa, 0x51, 0xb7, 0xc4, 0x53, 0xb6, 0x9b, 0xdf, 0xcf, 0xc2, 0x84, 0x32, 0xf5, 0xe4, 0x32, 0x14, + 0xaa, 0xfe, 0xba, 0xdb, 0x3c, 0x08, 0x83, 0x38, 0x4d, 0x3d, 0x3e, 0x5a, 0x1a, 0x77, 0xfc, 0x46, + 0x0b, 0x81, 0x66, 0x58, 0x4c, 0x56, 0x60, 0x8a, 0xff, 0x25, 0x43, 0x59, 0x67, 0x23, 0x33, 0x32, + 0x8e, 0x2c, 0x83, 0x58, 0xab, 0x5b, 0x90, 0x46, 0x42, 0xbe, 0x0c, 0xc0, 0x01, 0xe8, 0xf6, 0x97, + 0x1b, 0xde, 0x61, 0x51, 0x54, 0x90, 0xe2, 0xf0, 0xa7, 0x30, 0x24, 0x5f, 0xe5, 0x61, 0x1b, 0xe5, + 0x52, 0xcd, 0x0f, 0xef, 0x71, 0xc9, 0xf8, 0x37, 0xd2, 0x1d, 0xbf, 0x55, 0x96, 0x22, 0xde, 0xdc, + 0xa2, 0x49, 0x9b, 0xee, 0x03, 0xea, 0x1d, 0x96, 0x02, 0x44, 0x54, 0x30, 0x8c, 0xff, 0x36, 0xa3, + 0x2c, 0x70, 0xb2, 0x81, 0xe9, 0xd4, 0xf8, 0xe4, 0x09, 0x63, 0x88, 0x50, 0xee, 0x96, 0x70, 0x93, + 0xee, 0xae, 0x3c, 0x2b, 0xac, 0x18, 0xe7, 0xc2, 0x25, 0x10, 0x4b, 0xb3, 0xc6, 0x81, 0xe4, 0xf3, + 0x90, 0xc7, 0xa1, 0x3b, 0x3e, 0xfb, 0xbe, 0x3c, 0xfa, 0xf2, 0x6c, 0xcc, 0xb0, 0x23, 0x48, 0x49, + 0x3e, 0x25, 0x5c, 0xa6, 0xf8, 0xe0, 0x4f, 0x2b, 0xe7, 0x17, 0x6b, 0x47, 0x78, 0xe6, 0x45, 0xbe, + 0xff, 0xca, 0xea, 0xf9, 0x6b, 0x59, 0x28, 0xc6, 0x3f, 0x2b, 0xf2, 0x1e, 0x4c, 0xca, 0x43, 0x09, + 0xf3, 0xed, 0xb2, 0x5e, 0x4e, 0x8a, 0xd8, 0xca, 0xf2, 0x64, 0x8a, 0xa7, 0xdb, 0x55, 0x09, 0x98, + 0x80, 0xb0, 0x25, 0x62, 0xf1, 0x28, 0x0b, 0x3a, 0x70, 0x83, 0x6e, 0x2c, 0xf2, 0x9f, 0x44, 0x23, + 0x6f, 0x40, 0xee, 0xee, 0xcd, 0x92, 0xb0, 0xcf, 0x97, 0xbb, 0xc7, 0xdd, 0x9b, 0x25, 0xfe, 0xe1, + 0x71, 0xfb, 0x23, 0xdd, 0x1a, 0x8a, 0xe1, 0x93, 0x75, 0x25, 0xb0, 0xe6, 0xa8, 0x96, 0xfc, 0x46, + 0x82, 0xc3, 0xce, 0x1d, 0x1f, 0x61, 0x93, 0x27, 0xf2, 0x15, 0xe1, 0xeb, 0xfe, 0xdd, 0x1c, 0x8c, + 0x87, 0xf5, 0x13, 0x02, 0x28, 0xff, 0x88, 0x4b, 0x07, 0xfe, 0x4d, 0xce, 0x42, 0x41, 0x8a, 0x3c, + 0xc2, 0x4c, 0x7f, 0xcc, 0x17, 0xe2, 0xce, 0x02, 0x48, 0xd9, 0x86, 0x8b, 0x3b, 0xa6, 0xfc, 0x49, + 0xae, 0x41, 0x28, 0xb8, 0xf4, 0x93, 0x70, 0xf2, 0x6c, 0xc2, 0xcc, 0x10, 0x8d, 0x4c, 0x43, 0xd6, + 0xe1, 0x21, 0x51, 0xc6, 0xcd, 0xac, 0x63, 0x93, 0xf7, 0xa0, 0x60, 0xd9, 0x36, 0xb5, 0x1b, 0x96, + 0xb4, 0x2a, 0x18, 0xb4, 0x68, 0x0a, 0x8c, 0x1b, 0xdf, 0xaf, 0x91, 0xaa, 0x14, 0x90, 0x12, 0x8c, + 0xb7, 0x2c, 0x6e, 0xa1, 0x64, 0x0f, 0xb1, 0xf9, 0x47, 0x1c, 0x0a, 0x8c, 0xec, 0x9e, 0x4f, 0x6d, + 0xf2, 0x32, 0xe4, 0xd9, 0x6c, 0x8a, 0xdd, 0x5e, 0x4a, 0x5a, 0x6c, 0x32, 0xf9, 0x80, 0xad, 0x3d, + 0x63, 0x22, 0x02, 0x79, 0x11, 0x72, 0xbd, 0xe5, 0x5d, 0xb1, 0x8f, 0x17, 0xa3, 0x20, 0xb7, 0x21, + 0x1a, 0x2b, 0x26, 0xd7, 0xa1, 0xf0, 0x50, 0x8f, 0x8f, 0x7a, 0x2a, 0x36, 0x8d, 0x21, 0x7e, 0x88, + 0xb8, 0x52, 0x80, 0x51, 0xbe, 0x67, 0x1b, 0xcf, 0x03, 0x44, 0x55, 0x27, 0xbd, 0x29, 0x8c, 0x2f, + 0xc3, 0x78, 0x58, 0x25, 0x39, 0x07, 0x70, 0x40, 0x0f, 0x1b, 0xfb, 0x56, 0xc7, 0x6e, 0x71, 0x51, + 0x6c, 0xd2, 0x1c, 0x3f, 0xa0, 0x87, 0x6b, 0x08, 0x20, 0x67, 0x60, 0xac, 0xcb, 0x66, 0x55, 0x2c, + 0xdd, 0x49, 0x73, 0xb4, 0xdb, 0xdb, 0x61, 0x2b, 0x74, 0x01, 0xc6, 0x50, 0x49, 0x26, 0x3e, 0xb4, + 0x29, 0x53, 0xfe, 0x34, 0xfe, 0xb3, 0x2c, 0xc6, 0xf1, 0x57, 0xda, 0x49, 0x2e, 0xc0, 0x54, 0xd3, + 0xa3, 0x78, 0x3c, 0x58, 0x4c, 0xe8, 0x11, 0xf5, 0x4c, 0x46, 0xc0, 0xaa, 0x4d, 0x2e, 0xc2, 0x8c, + 0xc8, 0x5d, 0xcd, 0x1a, 0xd4, 0xdc, 0x11, 0xc1, 0x8c, 0x27, 0xcd, 0x29, 0x0e, 0xbe, 0x43, 0x0f, + 0xcb, 0x3b, 0x18, 0xca, 0xa7, 0xa8, 0x46, 0x62, 0x0c, 0xc2, 0x94, 0x83, 0xe6, 0x8c, 0x02, 0x47, + 0x63, 0xa1, 0xd3, 0x30, 0x6a, 0x59, 0x7b, 0x3d, 0x87, 0x87, 0xdc, 0x98, 0x34, 0xc5, 0x2f, 0xf2, + 0x2a, 0xcc, 0xfa, 0xce, 0x5e, 0xc7, 0x0a, 0x7a, 0x9e, 0x48, 0xa4, 0x40, 0x3d, 0x5c, 0x52, 0x53, + 0x66, 0x31, 0x2c, 0x28, 0x73, 0x38, 0x79, 0x1d, 0x88, 0x5a, 0x9f, 0xbb, 0xf3, 0x21, 0x6d, 0xf2, + 0xa5, 0x36, 0x69, 0xce, 0x2a, 0x25, 0x9b, 0x58, 0x40, 0x5e, 0x80, 0x49, 0x8f, 0xfa, 0x28, 0x70, + 0xe1, 0xb0, 0x61, 0x9a, 0x1b, 0x73, 0x42, 0xc2, 0xd8, 0xd8, 0x5d, 0x82, 0xa2, 0x32, 0x1c, 0x18, + 0xec, 0x92, 0x47, 0xf2, 0x35, 0xa7, 0x23, 0xb8, 0xd9, 0xad, 0xda, 0xc6, 0x0a, 0xcc, 0x26, 0xbe, + 0x5c, 0x25, 0x4d, 0x2c, 0xdf, 0x89, 0x06, 0xa7, 0x89, 0x35, 0x3a, 0x30, 0xa9, 0xee, 0xc4, 0xc7, + 0x04, 0x94, 0x3e, 0x8d, 0x2e, 0xdb, 0x7c, 0x9b, 0x1a, 0x7d, 0x7c, 0xb4, 0x94, 0x75, 0x6c, 0x74, + 0xd4, 0xbe, 0x04, 0x05, 0x79, 0xbe, 0x8b, 0x3b, 0x0b, 0x2a, 0x39, 0x85, 0x60, 0x79, 0x68, 0x86, + 0xa5, 0xc6, 0xcb, 0x30, 0x26, 0x36, 0xdb, 0xc1, 0xaa, 0x4d, 0xe3, 0x87, 0xb3, 0x30, 0x63, 0x52, + 0xb6, 0x15, 0x50, 0x1e, 0x45, 0xfe, 0xa9, 0xbd, 0x69, 0xa5, 0x07, 0xfe, 0xd2, 0xfa, 0x36, 0x20, + 0x7e, 0xfb, 0x2f, 0x67, 0x60, 0x2e, 0x05, 0xf7, 0x23, 0xe5, 0x1a, 0xbb, 0x01, 0xe3, 0x15, 0xc7, + 0x6a, 0x95, 0x6c, 0x3b, 0xf4, 0xdf, 0x46, 0xa9, 0xd0, 0x66, 0x2b, 0xcd, 0x62, 0x50, 0xf5, 0xd8, + 0x0d, 0x51, 0xc9, 0x2b, 0x62, 0x51, 0x44, 0x79, 0x9e, 0x71, 0x51, 0x7c, 0xef, 0x68, 0x09, 0x78, + 0x9b, 0xa2, 0x7c, 0x96, 0x18, 0x8c, 0x8f, 0x03, 0x23, 0xfb, 0xea, 0xa7, 0x76, 0xea, 0xd2, 0x83, + 0xf1, 0xc5, 0xbb, 0x37, 0x54, 0x08, 0xf7, 0x9f, 0xc8, 0xc2, 0xe9, 0x74, 0xc2, 0x8f, 0x9a, 0x36, + 0x0e, 0x83, 0xe7, 0x2b, 0x01, 0x44, 0x31, 0x6d, 0x1c, 0x8f, 0xb4, 0x8f, 0xf8, 0x11, 0x02, 0xd9, + 0x85, 0xa9, 0x75, 0xcb, 0x0f, 0xd6, 0xa8, 0xe5, 0x05, 0x3b, 0xd4, 0x0a, 0x86, 0x90, 0x3d, 0x5f, + 0x94, 0xef, 0x7d, 0x78, 0xfc, 0xed, 0x4b, 0xca, 0x98, 0x74, 0xa8, 0xb3, 0x0d, 0x17, 0x4a, 0x7e, + 0x88, 0x85, 0xf2, 0x35, 0x98, 0xa9, 0xd3, 0xb6, 0xd5, 0xdd, 0x77, 0x3d, 0xe9, 0xa0, 0x77, 0x05, + 0xa6, 0x42, 0x50, 0xea, 0x6a, 0xd1, 0x8b, 0x35, 0x7c, 0x65, 0x20, 0xa2, 0xad, 0x44, 0x2f, 0x36, + 0xfe, 0x7a, 0x16, 0xce, 0x94, 0x9a, 0xc2, 0x0c, 0x47, 0x14, 0x48, 0x6b, 0xc1, 0x4f, 0xb8, 0x6e, + 0x72, 0x15, 0xc6, 0xef, 0x5a, 0x8f, 0xd6, 0xa9, 0xe5, 0x53, 0x5f, 0x24, 0xed, 0xe1, 0x82, 0x9a, + 0xf5, 0x28, 0xb2, 0x4e, 0x31, 0x23, 0x1c, 0xf5, 0xd2, 0x99, 0xff, 0x98, 0x97, 0x4e, 0x03, 0x46, + 0xd7, 0xdc, 0x96, 0x2d, 0x8e, 0x31, 0xf1, 0x12, 0xb6, 0x8f, 0x10, 0x53, 0x94, 0x18, 0x7f, 0x98, + 0x81, 0xe9, 0xb0, 0xc5, 0xd8, 0x84, 0x4f, 0x7c, 0x48, 0x2e, 0xc2, 0x18, 0x56, 0x54, 0xad, 0xa8, + 0x87, 0x46, 0x8b, 0x62, 0xea, 0x15, 0xdb, 0x94, 0x85, 0xea, 0x48, 0x8c, 0x7c, 0xbc, 0x91, 0x30, + 0xfe, 0x3d, 0x7c, 0x64, 0x53, 0x7b, 0xc9, 0x4e, 0x22, 0xa5, 0x21, 0x99, 0x21, 0x1b, 0x92, 0x7d, + 0x62, 0x53, 0x92, 0xeb, 0x3b, 0x25, 0xdf, 0xcc, 0xc2, 0x44, 0xd8, 0xd8, 0xef, 0xb3, 0x28, 0xb6, + 0x61, 0xbf, 0x86, 0x72, 0xaa, 0xaf, 0x2b, 0x7b, 0x85, 0xf0, 0x5d, 0xff, 0x3c, 0x8c, 0x8a, 0x8f, + 0x29, 0x13, 0xb3, 0x9a, 0x8b, 0xcd, 0xee, 0xca, 0xb4, 0x60, 0x3d, 0x8a, 0x13, 0xea, 0x9b, 0x82, + 0x0e, 0xa3, 0x16, 0x6c, 0xd3, 0x1d, 0xf1, 0xe6, 0xfa, 0xd4, 0x9e, 0x51, 0xe9, 0x51, 0x0b, 0xa2, + 0x8e, 0x0d, 0x75, 0x3a, 0x1d, 0x8d, 0x40, 0x31, 0x4e, 0x72, 0x7c, 0x9c, 0xe0, 0x5a, 0x6f, 0x87, + 0x4b, 0xe1, 0x3c, 0x4e, 0x70, 0xb7, 0xb7, 0x63, 0x32, 0x18, 0x9a, 0x64, 0x78, 0xce, 0x03, 0xec, + 0xf5, 0xa4, 0x30, 0xc9, 0xf0, 0x9c, 0x07, 0x9a, 0x49, 0x86, 0xe7, 0x3c, 0xc0, 0xab, 0xef, 0x7a, + 0x1d, 0x1d, 0x2d, 0x51, 0x04, 0x17, 0x57, 0xdf, 0x96, 0x1f, 0xcf, 0xaf, 0x21, 0xd1, 0xd8, 0x51, + 0xb9, 0x42, 0x2d, 0x4f, 0xc4, 0xb4, 0x15, 0xdb, 0x19, 0x1e, 0x95, 0x3b, 0x08, 0xe6, 0xa9, 0x6b, + 0x4d, 0x15, 0x89, 0xb4, 0x80, 0x28, 0x3f, 0xe5, 0x07, 0x7c, 0xfc, 0x6d, 0x50, 0x5a, 0xbc, 0xcc, + 0xab, 0xac, 0x1b, 0xea, 0xd7, 0x9c, 0xc2, 0xf7, 0x49, 0xea, 0x0a, 0x6b, 0x22, 0x50, 0x17, 0xaa, + 0x3c, 0x0a, 0xc7, 0x32, 0x93, 0x9e, 0xc8, 0xc0, 0x03, 0x79, 0x85, 0x8a, 0x8f, 0x88, 0x09, 0x79, + 0x17, 0x26, 0x54, 0xf7, 0x59, 0xee, 0xe4, 0xf9, 0x1c, 0x8f, 0xbd, 0xd4, 0x27, 0x7b, 0x9a, 0x4a, + 0x40, 0x76, 0xe0, 0x4c, 0xd9, 0xed, 0xf8, 0xbd, 0xb6, 0x8c, 0xf2, 0x14, 0xc5, 0x96, 0x84, 0x30, + 0xfb, 0xf9, 0x8b, 0x4d, 0x81, 0x22, 0xbc, 0x35, 0xa5, 0x49, 0xb2, 0x7e, 0x01, 0xe9, 0xc7, 0x88, + 0x6c, 0xc1, 0x44, 0xbd, 0x74, 0x77, 0x5d, 0xba, 0x40, 0x4e, 0xe8, 0xdb, 0x46, 0x54, 0x52, 0x61, + 0x1f, 0x06, 0x0f, 0x53, 0x62, 0xb5, 0x5b, 0xd2, 0x22, 0x56, 0xd5, 0x1b, 0x2a, 0xc8, 0xc6, 0xa7, + 0xd4, 0xf5, 0x2d, 0xc4, 0x8d, 0x81, 0xeb, 0xdb, 0xf8, 0xaf, 0x46, 0x61, 0x26, 0x56, 0x9d, 0xb8, + 0xff, 0x64, 0x12, 0xf7, 0x9f, 0x3a, 0x00, 0x57, 0x7a, 0x0d, 0xa9, 0x9d, 0x92, 0xce, 0x14, 0x13, + 0xc2, 0x19, 0x29, 0x9c, 0x2b, 0x85, 0x0d, 0x63, 0xca, 0x57, 0xc2, 0x90, 0xda, 0xc2, 0x90, 0x29, + 0x5f, 0x4c, 0x0a, 0xd3, 0x88, 0x0d, 0x59, 0x82, 0x11, 0x8c, 0xe1, 0xa5, 0xfa, 0xb2, 0x38, 0x0c, + 0x60, 0x72, 0x38, 0xb9, 0x00, 0xa3, 0xec, 0x70, 0xae, 0x56, 0xc4, 0xc7, 0x85, 0x7b, 0x16, 0x3b, + 0xbd, 0xd9, 0x49, 0x28, 0x8a, 0xc8, 0x0d, 0x98, 0xe4, 0x7f, 0x09, 0x37, 0xee, 0x51, 0xdd, 0xd8, + 0xa7, 0xe1, 0xd8, 0xd2, 0x93, 0x5b, 0xc3, 0x63, 0x52, 0x6b, 0xbd, 0xb7, 0xc3, 0x93, 0x89, 0x8b, + 0xa0, 0x8f, 0x28, 0xb5, 0xfa, 0x1c, 0x88, 0xc9, 0x8e, 0x43, 0x04, 0x76, 0x46, 0x0a, 0x8b, 0xd2, + 0x02, 0xde, 0x55, 0xf0, 0x8c, 0xe4, 0x96, 0xa4, 0xa6, 0x28, 0x21, 0x97, 0xb9, 0x3e, 0x18, 0xc5, + 0x0d, 0x9e, 0xa7, 0x06, 0x35, 0xb8, 0x78, 0xe1, 0x45, 0x99, 0x23, 0x2c, 0x66, 0x95, 0xb3, 0xbf, + 0x57, 0xdb, 0x96, 0xd3, 0x12, 0xcb, 0x15, 0x2b, 0x47, 0x5c, 0xca, 0xa0, 0x66, 0x84, 0x40, 0xde, + 0x86, 0x69, 0xf6, 0xa3, 0xec, 0xb6, 0xdb, 0x6e, 0x07, 0xd9, 0x4f, 0x44, 0x11, 0x41, 0x90, 0xa4, + 0x89, 0x45, 0xbc, 0x96, 0x18, 0x2e, 0xdb, 0xa7, 0xf0, 0xad, 0xa9, 0xc7, 0x35, 0xd5, 0x93, 0xd1, + 0x3e, 0x85, 0xa4, 0x3e, 0x87, 0x9b, 0x2a, 0x12, 0x79, 0x13, 0xa6, 0xd8, 0xcf, 0x5b, 0xce, 0x03, + 0xca, 0x2b, 0x9c, 0x8a, 0x5e, 0x3f, 0x91, 0x6a, 0x8f, 0x95, 0xf0, 0xfa, 0x74, 0x4c, 0xf2, 0x05, + 0x38, 0x85, 0x9c, 0x9a, 0x6e, 0x97, 0xda, 0xa5, 0xdd, 0x5d, 0xa7, 0xe5, 0x70, 0xeb, 0x0b, 0xee, + 0xb0, 0x8c, 0xda, 0x48, 0x5e, 0x31, 0x62, 0x34, 0xac, 0x08, 0xc5, 0x4c, 0xa7, 0x24, 0xdb, 0x50, + 0x2c, 0xf7, 0xfc, 0xc0, 0x6d, 0x97, 0x82, 0xc0, 0x73, 0x76, 0x7a, 0x01, 0xf5, 0x17, 0x66, 0x34, + 0xb7, 0x5e, 0xf6, 0x71, 0x84, 0x85, 0x5c, 0xcf, 0xd0, 0x44, 0x8a, 0x86, 0x15, 0x92, 0x98, 0x09, + 0x26, 0xc6, 0x3f, 0xcd, 0xc0, 0x94, 0x46, 0x4a, 0xde, 0x80, 0xc9, 0x9b, 0x9e, 0x43, 0x3b, 0x76, + 0xeb, 0x50, 0xb9, 0x00, 0xa1, 0x74, 0xbc, 0x2b, 0xe0, 0xbc, 0xd7, 0x1a, 0x5a, 0xa8, 0x3f, 0xc8, + 0xa6, 0x9a, 0x46, 0x5d, 0xe5, 0x2e, 0x55, 0x62, 0x81, 0xe6, 0xa2, 0x38, 0x03, 0xb8, 0x40, 0xc5, + 0xea, 0x54, 0x50, 0xc8, 0x3b, 0x30, 0xca, 0x5f, 0xa5, 0x84, 0x9d, 0xce, 0xd9, 0xb4, 0x6e, 0x72, + 0xf7, 0x3d, 0x5c, 0x88, 0x68, 0x13, 0xe0, 0x9b, 0x82, 0xc8, 0xf8, 0x99, 0x0c, 0x90, 0x24, 0xea, + 0x31, 0xfa, 0x94, 0x63, 0x6d, 0x0d, 0x3e, 0x1f, 0x7e, 0x8d, 0x39, 0x4d, 0x7b, 0xc8, 0x6a, 0xe2, + 0x05, 0x7c, 0xe0, 0xc5, 0x57, 0xa7, 0x2a, 0x78, 0x78, 0xb1, 0xf1, 0x97, 0xb3, 0x00, 0x11, 0x36, + 0xf9, 0x2c, 0x4f, 0x95, 0xf0, 0x85, 0x9e, 0xd5, 0x72, 0x76, 0x1d, 0x3d, 0x76, 0x18, 0x32, 0xf9, + 0x9a, 0x2c, 0x31, 0x75, 0x44, 0xf2, 0x1e, 0xcc, 0xd4, 0x6b, 0x3a, 0xad, 0x12, 0x16, 0xde, 0xef, + 0x36, 0x62, 0xe4, 0x71, 0x6c, 0xb4, 0xc7, 0x53, 0x67, 0x83, 0xdb, 0xe3, 0xf1, 0x89, 0x10, 0x25, + 0x6c, 0x63, 0xa9, 0xd7, 0x30, 0x3f, 0xbd, 0x4d, 0xed, 0x6a, 0x45, 0xec, 0x52, 0xd8, 0x3a, 0xbf, + 0xdb, 0xe8, 0xf2, 0x02, 0x4c, 0x8a, 0xae, 0xe1, 0x45, 0x03, 0x39, 0xd2, 0xc7, 0x45, 0xef, 0x67, + 0x51, 0x9d, 0xd4, 0x76, 0x03, 0x2a, 0x6e, 0xd1, 0x4f, 0xad, 0x3c, 0x1d, 0x3d, 0x69, 0x8e, 0x68, + 0x9e, 0x47, 0x5a, 0xef, 0xc4, 0x83, 0xfa, 0xf5, 0x48, 0xf8, 0xe5, 0x8f, 0x9b, 0x29, 0x4f, 0xf0, + 0xbf, 0x98, 0x81, 0x53, 0xa9, 0xb4, 0xe4, 0x0a, 0x40, 0xa4, 0xab, 0x10, 0xa3, 0xc4, 0x73, 0xd3, + 0x87, 0x50, 0x53, 0xc1, 0x20, 0x5f, 0x8a, 0x6b, 0x19, 0x8e, 0x3f, 0x08, 0x17, 0x65, 0xf4, 0x14, + 0x5d, 0xcb, 0x90, 0xa2, 0x5b, 0x30, 0x7e, 0x39, 0x07, 0xb3, 0x8a, 0xf3, 0x3e, 0x6f, 0xeb, 0x31, + 0xf6, 0x91, 0x07, 0x30, 0xc9, 0x7a, 0xe3, 0x34, 0x85, 0xfb, 0x03, 0x7f, 0x7e, 0x7f, 0x25, 0xe1, + 0x3b, 0x22, 0xb8, 0x5d, 0x51, 0x91, 0x79, 0x4c, 0x23, 0xdc, 0x3a, 0x51, 0x87, 0xdb, 0x4c, 0xba, + 0x41, 0x68, 0xcc, 0x89, 0x0f, 0x53, 0x95, 0xc3, 0x8e, 0xd5, 0x0e, 0x6b, 0xe3, 0xcf, 0xf0, 0xaf, + 0xf6, 0xad, 0x4d, 0xc3, 0xe6, 0xd5, 0x45, 0x56, 0xd6, 0xbc, 0x2c, 0xc5, 0xc1, 0x4f, 0xa3, 0x5a, + 0x7c, 0x0f, 0x66, 0x13, 0x8d, 0x3e, 0x51, 0x78, 0xa5, 0x6d, 0x20, 0xc9, 0x76, 0xa4, 0x70, 0x78, + 0x55, 0x0f, 0xde, 0x75, 0x2a, 0x7c, 0xc6, 0xc3, 0x24, 0xab, 0xfc, 0x51, 0x7f, 0x59, 0x0d, 0xbe, + 0xf4, 0xb3, 0x59, 0xd5, 0x7f, 0xe7, 0x69, 0xff, 0xea, 0x3e, 0xaf, 0xdd, 0xb2, 0x9e, 0xef, 0x37, + 0xa7, 0x43, 0xdd, 0x66, 0xbf, 0x9b, 0x83, 0x33, 0x7d, 0x28, 0xc9, 0x61, 0x7c, 0x11, 0xf1, 0xdb, + 0xed, 0xb5, 0xc1, 0x15, 0x3e, 0x89, 0xa5, 0x44, 0x3e, 0xcb, 0x3d, 0x78, 0x9b, 0x98, 0x1c, 0x54, + 0xdc, 0xeb, 0x78, 0x5e, 0xe9, 0x10, 0x1a, 0x77, 0xdd, 0xe5, 0x50, 0xf2, 0x1e, 0x8c, 0xa0, 0xf3, + 0x56, 0x2c, 0x78, 0x10, 0xc3, 0x40, 0xb8, 0x12, 0x69, 0x89, 0xfd, 0xd4, 0x22, 0x2d, 0x31, 0x00, + 0xf9, 0x0c, 0xe4, 0x4a, 0xdb, 0x75, 0x31, 0x2f, 0xd3, 0x2a, 0xf9, 0x76, 0x3d, 0x0a, 0xf0, 0x6c, + 0x69, 0x91, 0x98, 0x19, 0x05, 0x23, 0xbc, 0x55, 0xae, 0x89, 0x59, 0x51, 0x09, 0x6f, 0x95, 0x6b, + 0x11, 0xe1, 0x5e, 0x53, 0x0b, 0xc6, 0x70, 0xab, 0x5c, 0xfb, 0xe4, 0x96, 0xfd, 0x5f, 0xc9, 0x72, + 0xb7, 0x63, 0xde, 0xb1, 0xf7, 0x60, 0x52, 0x0b, 0xae, 0x98, 0x89, 0xe4, 0xb1, 0x30, 0x86, 0x65, + 0xcc, 0x6e, 0x41, 0x23, 0x90, 0xa1, 0xd2, 0xd9, 0x6f, 0x94, 0x78, 0x55, 0xb3, 0x83, 0x90, 0x03, + 0xca, 0xc4, 0xf1, 0x50, 0xe9, 0x21, 0x09, 0xb9, 0x0e, 0x85, 0x2d, 0xda, 0xb1, 0x3a, 0x41, 0xa8, + 0x68, 0x43, 0xdb, 0xc3, 0x00, 0x61, 0xba, 0xd4, 0x10, 0x22, 0xa2, 0x9d, 0x5c, 0x6f, 0xc7, 0x6f, + 0x7a, 0x0e, 0x86, 0x27, 0x08, 0xcf, 0x62, 0x6e, 0x27, 0xa7, 0x94, 0xe8, 0x0c, 0x62, 0x44, 0xc6, + 0xcf, 0x66, 0x60, 0x4c, 0x4c, 0x24, 0x4f, 0x71, 0xb1, 0x17, 0x9d, 0x25, 0x22, 0xc5, 0xc5, 0x9e, + 0x13, 0x4f, 0x71, 0xb1, 0xc7, 0x63, 0x00, 0x8c, 0x0b, 0x0f, 0xba, 0xf0, 0xc9, 0x89, 0x67, 0x44, + 0xe6, 0x40, 0xbd, 0xda, 0x08, 0x75, 0x58, 0x07, 0x04, 0xe3, 0x6f, 0x8a, 0x96, 0xdd, 0x2a, 0xd7, + 0xc8, 0x32, 0x14, 0xd6, 0xdd, 0xa6, 0xa5, 0x9c, 0x73, 0xb8, 0xed, 0xb4, 0x04, 0x4c, 0x1d, 0x20, + 0x89, 0xc7, 0xda, 0x57, 0xf3, 0x5c, 0x71, 0x97, 0x51, 0xda, 0xd7, 0xe5, 0xc0, 0x58, 0xfb, 0x42, + 0xd4, 0xa1, 0xdb, 0x47, 0x53, 0x36, 0x89, 0xfb, 0xd7, 0x31, 0x86, 0xf4, 0x6d, 0xd5, 0xb1, 0x43, + 0x14, 0xc9, 0x9d, 0x62, 0xb1, 0xdf, 0x4e, 0x71, 0xff, 0xba, 0x99, 0x42, 0x85, 0xef, 0x35, 0x11, + 0xb8, 0x4e, 0xbd, 0x07, 0x4f, 0xf1, 0x2e, 0x9d, 0xfe, 0x5e, 0x13, 0xef, 0xde, 0x50, 0x9b, 0xf4, + 0x7f, 0x91, 0x85, 0xd3, 0xe9, 0x84, 0x6a, 0x5f, 0x32, 0x03, 0xfa, 0x72, 0x09, 0x0a, 0x6b, 0xae, + 0x1f, 0x28, 0xa6, 0x4a, 0xa8, 0x56, 0xde, 0x17, 0x30, 0x33, 0x2c, 0x65, 0x77, 0x6e, 0xf6, 0x77, + 0xf8, 0x79, 0x22, 0x3f, 0x74, 0xb6, 0x65, 0x77, 0x6e, 0x5e, 0x44, 0x6e, 0x41, 0xc1, 0x14, 0x8e, + 0x05, 0xb1, 0xa1, 0x91, 0xe0, 0x50, 0x9a, 0x22, 0x9e, 0x80, 0x68, 0x31, 0x2e, 0x05, 0x8c, 0x94, + 0x60, 0x4c, 0xcc, 0x7e, 0xec, 0x49, 0x32, 0x65, 0xc9, 0xe8, 0x61, 0x67, 0x25, 0x1d, 0xdb, 0x51, + 0xf0, 0x71, 0xa9, 0x5a, 0x91, 0x3e, 0x02, 0xb8, 0xa3, 0xf0, 0xc7, 0x27, 0xdd, 0x2a, 0x2c, 0x44, + 0x34, 0x7e, 0x38, 0x0b, 0xb0, 0x4d, 0x77, 0x9e, 0xee, 0x9c, 0x6c, 0x9f, 0xd1, 0x56, 0x98, 0x62, + 0x79, 0x31, 0x7c, 0x4a, 0xb6, 0x4d, 0xb4, 0x80, 0x18, 0x3e, 0x21, 0xdb, 0x12, 0x8c, 0x70, 0x6d, + 0xa7, 0x9a, 0xf3, 0x08, 0xd5, 0x9c, 0x1c, 0x6e, 0xec, 0xc0, 0xfc, 0x2d, 0x1a, 0x44, 0xea, 0x2d, + 0xf9, 0xa4, 0x35, 0x98, 0xed, 0x6b, 0x30, 0x2e, 0xf0, 0xc3, 0xfd, 0x8b, 0xeb, 0x62, 0x84, 0xff, + 0x3a, 0xea, 0x62, 0x24, 0x02, 0xdb, 0x8d, 0x2a, 0xb4, 0x45, 0x03, 0xfa, 0xc9, 0x56, 0x53, 0x07, + 0xc2, 0xbb, 0x82, 0x3d, 0x1b, 0xae, 0x86, 0x63, 0xc7, 0xe7, 0x3e, 0x9c, 0x0a, 0xdb, 0xfe, 0x24, + 0xf9, 0x5e, 0x65, 0x57, 0x4a, 0x11, 0xb1, 0x35, 0xe2, 0x38, 0xc0, 0xa6, 0xe1, 0x11, 0x2c, 0x4a, + 0x82, 0x6d, 0x27, 0x34, 0x21, 0x1b, 0x8a, 0x96, 0xbc, 0x0d, 0x13, 0x0a, 0x8d, 0x88, 0x38, 0x8a, + 0xea, 0xcf, 0x87, 0x4e, 0xb0, 0xdf, 0xf0, 0x39, 0x5c, 0x55, 0x7f, 0x2a, 0xe8, 0xc6, 0x07, 0xf0, + 0x6c, 0xe8, 0x55, 0x90, 0x52, 0x75, 0x8c, 0x79, 0xe6, 0x64, 0xcc, 0x37, 0xa2, 0x6e, 0x55, 0x3b, + 0xa1, 0x27, 0xa0, 0xe4, 0x4d, 0xd4, 0x6e, 0x89, 0xce, 0x3c, 0x97, 0xf0, 0x2d, 0x54, 0x5c, 0x08, + 0x8d, 0xb7, 0x94, 0xc6, 0xa6, 0x30, 0xd4, 0x88, 0x33, 0x71, 0xe2, 0x1f, 0xce, 0xc2, 0xcc, 0x66, + 0xb5, 0x52, 0x0e, 0xad, 0x5a, 0xbe, 0xcf, 0x12, 0xc6, 0x69, 0x7d, 0xeb, 0xbf, 0xdf, 0x18, 0xf7, + 0x60, 0x2e, 0x36, 0x0c, 0x28, 0x3a, 0xbc, 0xcb, 0xcd, 0xde, 0x43, 0xb0, 0x14, 0x1b, 0x4e, 0xa7, + 0xb1, 0xbf, 0x7f, 0xdd, 0x8c, 0x61, 0x1b, 0xff, 0x7c, 0x3c, 0xc6, 0x57, 0x6c, 0x61, 0xaf, 0xc1, + 0x78, 0xd5, 0xf7, 0x7b, 0xd4, 0xbb, 0x67, 0xae, 0xab, 0xaa, 0x02, 0x07, 0x81, 0x8d, 0x9e, 0xd7, + 0x32, 0x23, 0x04, 0x72, 0x19, 0x0a, 0x22, 0x08, 0xa7, 0xdc, 0x13, 0x50, 0x6b, 0x1b, 0xc6, 0xf0, + 0x34, 0xc3, 0x62, 0xf2, 0x06, 0x4c, 0xf2, 0xbf, 0xf9, 0x6a, 0x13, 0x03, 0x8e, 0xca, 0x41, 0x81, + 0xce, 0x57, 0xa7, 0xa9, 0xa1, 0x91, 0x57, 0x20, 0x57, 0x2a, 0x9b, 0x42, 0x1d, 0x24, 0xe4, 0x46, + 0x4c, 0x03, 0xdb, 0xa3, 0xfa, 0x25, 0xa2, 0x6c, 0x32, 0xe9, 0x4f, 0xa8, 0x92, 0x64, 0xe6, 0x05, + 0x9e, 0xad, 0x56, 0xc0, 0x62, 0x87, 0x19, 0xc2, 0xc8, 0x55, 0x18, 0xab, 0x38, 0x7e, 0xb7, 0x65, + 0x1d, 0x0a, 0x3d, 0x36, 0xcf, 0x86, 0xc2, 0x41, 0x9a, 0x33, 0x31, 0x07, 0x91, 0xcb, 0x32, 0x4b, + 0x44, 0x21, 0xb2, 0x9e, 0xef, 0x93, 0x0a, 0xe2, 0x35, 0x18, 0x15, 0xa1, 0x2a, 0xc7, 0x95, 0x20, + 0xd4, 0xf1, 0x10, 0x95, 0x02, 0x27, 0xe9, 0xdf, 0x06, 0x4f, 0xd2, 0xbf, 0x6d, 0x07, 0xce, 0xdc, + 0x42, 0xed, 0x8d, 0x1e, 0xd4, 0xe2, 0x9e, 0x59, 0x15, 0xfa, 0x70, 0x7c, 0xf1, 0xe1, 0x0a, 0x9e, + 0x78, 0x5c, 0x8c, 0x46, 0xcf, 0x53, 0x93, 0x7b, 0xf5, 0x63, 0x44, 0xbe, 0x08, 0xf3, 0x69, 0x45, + 0x42, 0x6b, 0x8e, 0xe1, 0x1b, 0xd2, 0x2b, 0x50, 0xc3, 0x37, 0xa4, 0x71, 0x20, 0xeb, 0x50, 0xe4, + 0xf0, 0x92, 0xdd, 0x76, 0x3a, 0x5c, 0xf3, 0x3f, 0x15, 0x65, 0xc5, 0x17, 0x5c, 0x2d, 0x56, 0xc8, + 0x5f, 0x00, 0x34, 0x07, 0x88, 0x18, 0x25, 0xf9, 0xa9, 0x0c, 0xbb, 0xcd, 0xf1, 0xc0, 0x8e, 0xf7, + 0xcc, 0x75, 0x5f, 0x84, 0xfe, 0x39, 0x1d, 0xf9, 0x36, 0xd4, 0x03, 0xcf, 0xe9, 0xec, 0x09, 0xe7, + 0x86, 0x2d, 0xe1, 0xdc, 0xf0, 0xf6, 0x47, 0x72, 0x6e, 0xe0, 0xac, 0xfc, 0xc7, 0x47, 0x4b, 0x93, + 0x9e, 0xa8, 0x13, 0xbf, 0x22, 0xad, 0x05, 0x98, 0x98, 0xba, 0xd5, 0x72, 0x1f, 0xde, 0xeb, 0x3c, + 0xa0, 0x9e, 0xb3, 0xeb, 0x50, 0x9b, 0x77, 0x72, 0x06, 0x77, 0x70, 0x9e, 0x98, 0x1a, 0x53, 0xad, + 0xf7, 0x42, 0x84, 0x44, 0x47, 0x53, 0x39, 0xb0, 0x8b, 0xa7, 0x34, 0xa0, 0xe7, 0xce, 0x7a, 0xc5, + 0xe8, 0xe2, 0x29, 0xad, 0xed, 0x1b, 0xb8, 0x8c, 0xd4, 0xc5, 0xa3, 0x91, 0x90, 0xab, 0x30, 0x7a, + 0xd7, 0x7a, 0x54, 0xda, 0xa3, 0x22, 0xfb, 0xcf, 0x94, 0xdc, 0xfe, 0x10, 0xb8, 0x52, 0xf8, 0x5d, + 0x6e, 0xf5, 0xfd, 0x8c, 0x29, 0xd0, 0xc8, 0x37, 0x32, 0x70, 0x9a, 0x7f, 0xc6, 0xb2, 0x97, 0x75, + 0x1a, 0x04, 0x6c, 0x1c, 0x44, 0x0c, 0x20, 0x19, 0x3b, 0xbf, 0x5e, 0xdf, 0x4c, 0xc7, 0xe3, 0x69, + 0x94, 0xc5, 0xce, 0x10, 0x0e, 0x9c, 0x2f, 0x4a, 0xb5, 0x40, 0x7f, 0xa9, 0xf4, 0xc2, 0xa2, 0xf9, + 0x33, 0xb2, 0xe5, 0xe4, 0x75, 0xd5, 0xa7, 0x2c, 0x87, 0x72, 0xee, 0x58, 0xdb, 0x7a, 0xd4, 0xb0, + 0xf6, 0xa8, 0xf6, 0x4e, 0x1a, 0x3a, 0x9b, 0x9d, 0xed, 0xdb, 0x36, 0x72, 0x03, 0xce, 0xc8, 0x84, + 0xda, 0xfb, 0x41, 0xd0, 0xf5, 0x1b, 0xf2, 0x2e, 0x20, 0x9c, 0xd0, 0xcc, 0x53, 0xa2, 0x78, 0x8d, + 0x95, 0xca, 0xeb, 0x81, 0x6f, 0xfc, 0xb5, 0x71, 0x7e, 0xa6, 0x95, 0x7a, 0xc1, 0xbe, 0x3c, 0x05, + 0x97, 0xd3, 0xdc, 0x28, 0xb8, 0xd1, 0x98, 0xe2, 0x46, 0xa1, 0x3b, 0x4f, 0xc8, 0xc7, 0x88, 0x6c, + 0xea, 0x63, 0xc4, 0x6b, 0x30, 0x5e, 0xde, 0xa7, 0xcd, 0x83, 0xd0, 0x3e, 0xbe, 0x20, 0xb4, 0xbd, + 0x0c, 0xc8, 0x63, 0x40, 0x46, 0x08, 0xe4, 0x2a, 0x00, 0xfa, 0x55, 0x71, 0x11, 0x49, 0x89, 0xe3, + 0x8c, 0x6e, 0x58, 0xe2, 0x1d, 0x5e, 0x41, 0x41, 0xf6, 0x75, 0xf3, 0xa6, 0xfa, 0x70, 0xcf, 0xd9, + 0xfb, 0xde, 0xae, 0x40, 0x8f, 0x10, 0x58, 0xf7, 0x94, 0x85, 0x2e, 0xb6, 0xe5, 0x62, 0xe2, 0x6b, + 0x50, 0x91, 0xd0, 0x26, 0x4e, 0x1a, 0x03, 0xe3, 0xae, 0x3c, 0x29, 0x6c, 0xe2, 0x42, 0xc3, 0x61, + 0x33, 0x42, 0x20, 0x9f, 0x81, 0xb1, 0x32, 0xf5, 0x82, 0xad, 0xad, 0x75, 0x7c, 0x5b, 0xe7, 0xc1, + 0x8e, 0x0b, 0x18, 0x98, 0x36, 0x08, 0x5a, 0xdf, 0x3b, 0x5a, 0x9a, 0x0a, 0x9c, 0x36, 0xbd, 0x12, + 0x4e, 0xb0, 0xc4, 0x26, 0x2b, 0x50, 0xe4, 0xaf, 0xb4, 0x91, 0x28, 0x8c, 0x1b, 0x75, 0x81, 0x1f, + 0x1b, 0xe2, 0x49, 0xf7, 0x21, 0xdd, 0x09, 0xc3, 0xf2, 0x26, 0xf0, 0xc9, 0xaa, 0x8c, 0x66, 0xad, + 0x76, 0x12, 0x22, 0xdd, 0x4c, 0x7c, 0x01, 0xb3, 0xbe, 0x26, 0x29, 0x48, 0x09, 0xa6, 0xca, 0x6e, + 0xbb, 0x6b, 0x05, 0x0e, 0xa6, 0x86, 0x39, 0x14, 0x7b, 0x32, 0xea, 0x97, 0x9a, 0x6a, 0x81, 0xb6, + 0xc1, 0xab, 0x05, 0xe4, 0x26, 0x4c, 0x9b, 0x6e, 0x8f, 0x4d, 0x92, 0xbc, 0x14, 0xf2, 0x6d, 0x17, + 0xbd, 0x92, 0x3d, 0x56, 0xc2, 0x4e, 0x09, 0x71, 0x03, 0xd4, 0x82, 0x8a, 0x69, 0x54, 0x64, 0x23, + 0x45, 0x3b, 0xaf, 0xee, 0xb5, 0x6a, 0x70, 0xde, 0x04, 0xb3, 0x14, 0xc5, 0xfe, 0x75, 0x98, 0xa8, + 0xd7, 0x37, 0xb7, 0xa8, 0x1f, 0xdc, 0x6c, 0xb9, 0x0f, 0x71, 0xab, 0x2d, 0x88, 0xa4, 0x05, 0xbe, + 0xdb, 0x08, 0xa8, 0x1f, 0x34, 0x76, 0x5b, 0xee, 0x43, 0x53, 0xc5, 0x22, 0x5f, 0x61, 0xe3, 0xa1, + 0x08, 0x26, 0x22, 0x7c, 0xda, 0x20, 0xd9, 0x09, 0x37, 0xb4, 0xe8, 0x93, 0x61, 0x12, 0x94, 0x3e, + 0x58, 0x0a, 0x3a, 0x3a, 0x7b, 0xb0, 0xeb, 0x6c, 0xc9, 0xb6, 0x3d, 0xea, 0xfb, 0x62, 0x4f, 0xe4, + 0xce, 0x1e, 0x78, 0xf7, 0xb5, 0x78, 0x81, 0xe6, 0xec, 0xa1, 0x10, 0x90, 0x6f, 0x66, 0xe0, 0x94, + 0x6a, 0x2f, 0x8e, 0x1f, 0x4b, 0x9b, 0x76, 0x02, 0xb1, 0x43, 0xbe, 0x7e, 0x45, 0x9e, 0x09, 0x57, + 0x14, 0xb4, 0x2b, 0x0f, 0xae, 0x5d, 0x29, 0x45, 0x3f, 0xeb, 0x92, 0x48, 0x44, 0x20, 0x4a, 0xe3, + 0xa7, 0xee, 0xef, 0x56, 0x0a, 0x29, 0x29, 0x33, 0xb1, 0x81, 0xad, 0x27, 0xb4, 0x0e, 0xa9, 0xd6, + 0x70, 0x83, 0x15, 0xea, 0x3d, 0xb1, 0xfa, 0xb8, 0x1d, 0x89, 0xd3, 0xd5, 0xa5, 0x03, 0x85, 0x06, + 0x85, 0xed, 0x7a, 0xe9, 0xee, 0x7a, 0x24, 0x31, 0x7e, 0x7f, 0x19, 0x69, 0x6b, 0x7d, 0x1b, 0x60, + 0xa4, 0x7d, 0x0f, 0xe6, 0x62, 0xc3, 0x20, 0x85, 0x6d, 0x0d, 0x1c, 0x17, 0xb6, 0x63, 0x34, 0x66, + 0x0c, 0xdb, 0xf8, 0x0f, 0x0a, 0x31, 0xbe, 0xc2, 0x30, 0xcb, 0x80, 0x51, 0x2e, 0x4b, 0xab, 0x39, + 0x8d, 0xb9, 0xa4, 0x6d, 0x8a, 0x12, 0x72, 0x16, 0x72, 0xf5, 0xfa, 0xa6, 0x9a, 0xc6, 0xdd, 0xf7, + 0x5d, 0x93, 0xc1, 0xd8, 0x0c, 0xa1, 0xcd, 0x95, 0x12, 0xed, 0x94, 0x6d, 0x7b, 0x26, 0x42, 0xd9, + 0x78, 0x4b, 0xc9, 0x36, 0x1f, 0x8d, 0xb7, 0x90, 0x6c, 0x23, 0x79, 0xb6, 0x0c, 0x0b, 0x25, 0xdf, + 0xa7, 0x1e, 0x5b, 0x55, 0xc2, 0x94, 0xc7, 0x13, 0xd2, 0x97, 0xd8, 0xdd, 0xb1, 0x52, 0xab, 0xe9, + 0x9b, 0x7d, 0x11, 0xc9, 0x25, 0x28, 0x94, 0x7a, 0xb6, 0x43, 0x3b, 0x4d, 0x2d, 0x38, 0x8a, 0x25, + 0x60, 0x66, 0x58, 0x4a, 0xbe, 0x00, 0xa7, 0x04, 0x91, 0x14, 0xc1, 0xc5, 0x08, 0x8c, 0x45, 0x9f, + 0xa0, 0x94, 0x0e, 0xa3, 0x67, 0x62, 0x3e, 0x24, 0xe9, 0x94, 0xa4, 0x04, 0xc5, 0x55, 0x74, 0x4a, + 0xa8, 0x50, 0xae, 0xb1, 0x76, 0x3d, 0xee, 0x68, 0xc1, 0x65, 0x79, 0xee, 0xb0, 0xd0, 0xb0, 0xc3, + 0x42, 0x33, 0x81, 0x4e, 0xee, 0xc0, 0x5c, 0x1c, 0xc6, 0x36, 0x72, 0x2e, 0xb6, 0x63, 0xb8, 0xbd, + 0x04, 0x17, 0xdc, 0xca, 0xd3, 0xa8, 0xc8, 0x0e, 0xcc, 0x46, 0x66, 0x12, 0xba, 0x30, 0x2f, 0xad, + 0xfa, 0xc2, 0x72, 0x29, 0xd0, 0x3f, 0x2b, 0x16, 0xe3, 0x5c, 0x64, 0x72, 0x11, 0x0a, 0xf5, 0x66, + 0x92, 0x1d, 0xb1, 0x61, 0xba, 0xee, 0xec, 0x75, 0x9c, 0xce, 0xde, 0x1d, 0x7a, 0x58, 0xb3, 0x1c, + 0x4f, 0xd8, 0x57, 0x49, 0xeb, 0xc9, 0x92, 0x7f, 0xd8, 0x6e, 0xd3, 0xc0, 0xc3, 0x23, 0x92, 0x95, + 0xa3, 0x8f, 0x20, 0x13, 0xd2, 0x16, 0x7d, 0x4e, 0x87, 0xfe, 0x37, 0x5d, 0xcb, 0xd1, 0xce, 0x02, + 0x9d, 0xa7, 0x76, 0xa1, 0x9a, 0x1c, 0xf2, 0x42, 0xd5, 0x82, 0xd9, 0xd5, 0x4e, 0xd3, 0x3b, 0xc4, + 0x87, 0x03, 0xd9, 0xb8, 0xa9, 0x63, 0x1a, 0xf7, 0xa2, 0x68, 0xdc, 0x73, 0x96, 0x5c, 0x61, 0x69, + 0xcd, 0x4b, 0x32, 0x26, 0x75, 0x98, 0x45, 0xa9, 0xb7, 0x5a, 0xa9, 0x55, 0x3b, 0x4e, 0xe0, 0x60, + 0xe6, 0x5d, 0x7e, 0xc6, 0xbc, 0x24, 0x78, 0x9e, 0xe3, 0x82, 0xb3, 0x63, 0x77, 0x1b, 0x8e, 0x44, + 0x51, 0x99, 0x26, 0xe8, 0x07, 0x49, 0xaf, 0x33, 0xff, 0x7a, 0xa4, 0x57, 0xe3, 0x3f, 0x2e, 0xf0, + 0x0d, 0x59, 0x95, 0x14, 0xfb, 0x19, 0xad, 0xc5, 0x24, 0xc8, 0xec, 0x49, 0x24, 0xc8, 0xdc, 0xf1, + 0x12, 0x64, 0xfe, 0x38, 0x09, 0x32, 0x26, 0xe2, 0x8d, 0x9c, 0x58, 0xc4, 0x1b, 0x3d, 0x81, 0x88, + 0x37, 0x76, 0x22, 0x11, 0x4f, 0x93, 0x55, 0x0b, 0xc7, 0xc9, 0xaa, 0xff, 0x9f, 0x40, 0xf8, 0xb4, + 0x0a, 0x84, 0x69, 0xe7, 0xfb, 0x89, 0x04, 0xc2, 0xfe, 0xf2, 0x5c, 0xf1, 0x4f, 0x5b, 0x9e, 0x9b, + 0xfd, 0x08, 0xf2, 0xdc, 0x9f, 0x83, 0x62, 0xfc, 0x88, 0x39, 0x3e, 0x02, 0xd9, 0x13, 0x8b, 0x96, + 0xc3, 0x0e, 0xc0, 0xf8, 0x16, 0xcf, 0xee, 0x99, 0x35, 0xcf, 0x79, 0x60, 0x05, 0xf4, 0x8e, 0x7c, + 0x99, 0x17, 0xd1, 0xf3, 0x38, 0x14, 0xbf, 0x79, 0x05, 0x25, 0x94, 0x6e, 0xb2, 0x69, 0xd2, 0x8d, + 0xf1, 0xa3, 0x59, 0x98, 0xe5, 0x91, 0x2d, 0x9e, 0x7e, 0x05, 0xf1, 0xbb, 0x9a, 0xcc, 0x2a, 0xed, + 0xc0, 0x62, 0xbd, 0x1b, 0xa0, 0x22, 0xfe, 0x32, 0x9c, 0x4a, 0x0c, 0x05, 0xca, 0xad, 0x15, 0x19, + 0x53, 0x24, 0x21, 0xb9, 0x2e, 0xa4, 0x57, 0x72, 0xff, 0xba, 0x99, 0xa0, 0x30, 0xfe, 0x65, 0x3e, + 0xc1, 0x5f, 0x28, 0x8b, 0x55, 0xf5, 0x6f, 0xe6, 0x64, 0xea, 0xdf, 0xec, 0x70, 0xea, 0xdf, 0xd8, + 0xd9, 0x92, 0x1b, 0xe6, 0x6c, 0xf9, 0x02, 0x4c, 0x6d, 0x51, 0xab, 0xed, 0x6f, 0xb9, 0x22, 0xa0, + 0x35, 0xb7, 0x03, 0x95, 0x21, 0x43, 0x58, 0x99, 0x14, 0xbb, 0x42, 0x7b, 0x96, 0x80, 0x11, 0xb0, + 0xfd, 0x90, 0x47, 0xb8, 0x36, 0x75, 0x0e, 0xaa, 0x2c, 0x3d, 0x32, 0x40, 0x96, 0xae, 0xc3, 0xa4, + 0xa0, 0x8b, 0xc2, 0xae, 0x45, 0x42, 0x1f, 0x2b, 0x42, 0xb8, 0xac, 0x3d, 0x4c, 0x39, 0x16, 0xd6, + 0xce, 0xe5, 0x3d, 0x8d, 0x09, 0x1b, 0x82, 0xd5, 0x8e, 0xdd, 0x75, 0x9d, 0x0e, 0x0e, 0xc1, 0x58, + 0x34, 0x04, 0x54, 0x80, 0xf9, 0x10, 0x28, 0x48, 0xe4, 0x6d, 0x98, 0x2e, 0xd5, 0xaa, 0x2a, 0x59, + 0x21, 0xd2, 0x40, 0x5b, 0x5d, 0xa7, 0xa1, 0x91, 0xc6, 0x70, 0x07, 0xc9, 0x3f, 0xe3, 0xff, 0x9a, + 0xe4, 0x9f, 0x6f, 0x8c, 0xcb, 0xcf, 0xfb, 0x93, 0xd5, 0x95, 0xe9, 0xda, 0xaf, 0xdc, 0x09, 0xb5, + 0x5f, 0xf9, 0xe3, 0x24, 0x0a, 0x4d, 0xcc, 0x19, 0x39, 0x81, 0x98, 0x33, 0xfa, 0xb1, 0x35, 0x59, + 0x63, 0x27, 0x14, 0x5c, 0x62, 0x5f, 0x5a, 0x61, 0x98, 0x2f, 0x2d, 0x55, 0xd8, 0x19, 0xff, 0xf8, + 0xc2, 0x0e, 0x9c, 0x58, 0xd8, 0xa9, 0x47, 0xde, 0x3a, 0x13, 0xc7, 0x1a, 0xab, 0x9e, 0x13, 0x37, + 0x83, 0xd9, 0xf4, 0x48, 0x29, 0xa1, 0xdf, 0xce, 0xf7, 0x95, 0x04, 0xf5, 0xd5, 0x74, 0x09, 0x6a, + 0xf0, 0x69, 0xf3, 0xff, 0x66, 0x19, 0xca, 0xc3, 0x51, 0xde, 0xb6, 0xbc, 0x0e, 0xea, 0xfc, 0xaf, + 0xc2, 0x98, 0x8c, 0x18, 0x94, 0x89, 0x94, 0x0b, 0xc9, 0x50, 0x41, 0x12, 0x8b, 0x5d, 0x9e, 0x25, + 0xb1, 0x1a, 0xa8, 0xf8, 0xa1, 0x80, 0x69, 0xc1, 0x58, 0x04, 0xcc, 0xf8, 0xdb, 0x79, 0xf9, 0x25, + 0xb3, 0x9b, 0x95, 0x48, 0x41, 0xbb, 0xa2, 0xcc, 0x9c, 0x22, 0xc1, 0xc5, 0xe6, 0x26, 0x66, 0x7b, + 0xa6, 0x93, 0x7c, 0x94, 0x70, 0x4b, 0x4a, 0xea, 0x9b, 0xdc, 0x10, 0xa9, 0x6f, 0xde, 0xd4, 0xf2, + 0xc6, 0xe4, 0xa3, 0x44, 0x05, 0x6c, 0x75, 0x0f, 0xce, 0x18, 0x73, 0x43, 0x4d, 0xf0, 0x32, 0x12, + 0x85, 0x33, 0x40, 0xca, 0x01, 0xa9, 0x5d, 0x42, 0x91, 0x74, 0xf4, 0x24, 0x81, 0xcc, 0xc6, 0xfe, + 0x54, 0x03, 0x99, 0xad, 0x02, 0x28, 0x69, 0x3f, 0xf9, 0x83, 0xc5, 0x4b, 0x6c, 0x98, 0x8e, 0x4f, + 0xf9, 0xa9, 0x10, 0x1a, 0xbf, 0x43, 0x60, 0xb6, 0x5e, 0xdf, 0xac, 0x38, 0xd6, 0x5e, 0xc7, 0xf5, + 0x03, 0xa7, 0x59, 0xed, 0xec, 0xba, 0x4c, 0x1e, 0x0b, 0x77, 0x05, 0x25, 0x0c, 0x56, 0xb4, 0x23, + 0x84, 0xc5, 0x4c, 0xde, 0x5f, 0xf5, 0x3c, 0xd7, 0x53, 0xe5, 0x7d, 0xca, 0x00, 0x26, 0x87, 0x33, + 0x91, 0xa7, 0xde, 0xe3, 0xf9, 0x1b, 0xf9, 0x1b, 0x12, 0x8a, 0x3c, 0x3e, 0x07, 0x99, 0xb2, 0x8c, + 0xd0, 0xe4, 0x82, 0x15, 0x22, 0xf0, 0x19, 0x2d, 0x1c, 0x5a, 0x54, 0xcc, 0xf7, 0x3c, 0x71, 0x26, + 0xa1, 0x33, 0x53, 0x17, 0xe1, 0xea, 0x93, 0x6d, 0xe2, 0x1b, 0x38, 0x84, 0x53, 0x9a, 0x53, 0xce, + 0xb0, 0x7a, 0xb5, 0x57, 0x84, 0x88, 0x65, 0xa0, 0x6f, 0x61, 0x8a, 0x72, 0x4d, 0x0d, 0xb4, 0x9e, + 0x5a, 0x03, 0xf9, 0xd1, 0x0c, 0x9c, 0x4b, 0x2d, 0x09, 0xbf, 0xee, 0x09, 0x2d, 0x24, 0x9d, 0xb2, + 0x69, 0xf0, 0x90, 0xf2, 0xfd, 0xaa, 0x6e, 0xa4, 0x6c, 0x05, 0x83, 0x6b, 0x22, 0xbf, 0x9e, 0x81, + 0x33, 0x1a, 0x46, 0xb8, 0xe7, 0xf9, 0x78, 0x36, 0xf5, 0x5d, 0xd7, 0x1f, 0x3e, 0x99, 0x75, 0x7d, + 0x41, 0xef, 0x4b, 0xb4, 0x25, 0xab, 0x7d, 0xe8, 0xd7, 0x42, 0xf2, 0x00, 0x66, 0xb1, 0x48, 0xea, + 0xf8, 0xd8, 0x9a, 0x15, 0xaa, 0xc1, 0xf9, 0xa8, 0xd9, 0xdc, 0xd1, 0x0c, 0xd3, 0x82, 0x2d, 0x7f, + 0xf7, 0x68, 0x69, 0x4a, 0x43, 0xc7, 0x78, 0xc8, 0xd8, 0x86, 0x50, 0x51, 0xe8, 0x74, 0x76, 0x5d, + 0xf5, 0xbc, 0x4c, 0x54, 0x41, 0xfe, 0x93, 0x0c, 0x2c, 0x30, 0x28, 0xef, 0xc6, 0x4d, 0xcf, 0x6d, + 0x87, 0xe5, 0xf2, 0xed, 0xbf, 0xcf, 0xb0, 0xb5, 0x9e, 0xcc, 0xb0, 0xbd, 0x84, 0x4d, 0xe6, 0x7b, + 0x42, 0x63, 0xd7, 0x73, 0xdb, 0x51, 0xf3, 0xb5, 0xb4, 0x96, 0xfd, 0x1a, 0x49, 0x7e, 0x28, 0x03, + 0x67, 0x35, 0x1d, 0x87, 0x1a, 0x0a, 0x57, 0xb8, 0xf3, 0x49, 0x43, 0x11, 0xb5, 0x68, 0xe5, 0x8a, + 0x58, 0xff, 0x17, 0xb1, 0x05, 0xd1, 0x69, 0x81, 0x6d, 0x69, 0xb4, 0x39, 0x96, 0xd2, 0x84, 0xfe, + 0xb5, 0x10, 0x07, 0x66, 0xf1, 0xdd, 0x4d, 0xb3, 0x51, 0x99, 0xef, 0x6f, 0xa3, 0x12, 0xa6, 0x6f, + 0xc1, 0x38, 0x9b, 0xfd, 0x0d, 0x55, 0x92, 0x5c, 0xc9, 0x9f, 0x87, 0xb3, 0x09, 0x60, 0xf8, 0xb5, + 0x9d, 0xea, 0xfb, 0xb5, 0xbd, 0xfa, 0xf8, 0x68, 0xe9, 0xe5, 0xb4, 0xda, 0xd2, 0xbe, 0xb4, 0xfe, + 0x35, 0x10, 0x0b, 0x20, 0x2a, 0x14, 0xd9, 0x31, 0xd3, 0x17, 0xe8, 0xab, 0x62, 0x7d, 0x28, 0xf8, + 0x6c, 0x2f, 0x57, 0xda, 0xa0, 0x1e, 0x79, 0x11, 0x12, 0xa1, 0x30, 0xa9, 0xc4, 0x18, 0x3d, 0xc4, + 0x34, 0x99, 0x7d, 0x2b, 0xf9, 0xee, 0xd1, 0x92, 0x86, 0xcd, 0xe4, 0x62, 0x35, 0x78, 0xa9, 0x2a, + 0x17, 0x6b, 0x88, 0xe4, 0xd7, 0x32, 0x30, 0xcf, 0x00, 0xd1, 0xa2, 0x12, 0x9d, 0x5a, 0x18, 0xb4, + 0xea, 0xf7, 0x9f, 0xcc, 0xaa, 0x7f, 0x01, 0xdb, 0xa8, 0xae, 0xfa, 0xc4, 0x90, 0xa4, 0x36, 0x0e, + 0x57, 0xbb, 0xf6, 0xc4, 0xab, 0xad, 0xf6, 0xb3, 0x43, 0xac, 0x76, 0x3e, 0x01, 0xc7, 0xaf, 0xf6, + 0xbe, 0xb5, 0x90, 0x2d, 0x98, 0x14, 0x22, 0x31, 0x1f, 0xb0, 0xe7, 0xb5, 0xa0, 0x87, 0x6a, 0x11, + 0xbf, 0xa7, 0x88, 0x10, 0xac, 0x89, 0x1e, 0x6a, 0x5c, 0x48, 0x07, 0xe6, 0xf8, 0x6f, 0x5d, 0x41, + 0xb1, 0xd4, 0x57, 0x41, 0x71, 0x49, 0xf4, 0xe8, 0xbc, 0xe0, 0x1f, 0xd3, 0x53, 0xa8, 0x59, 0x3b, + 0x52, 0x18, 0x93, 0x2e, 0x10, 0x0d, 0xcc, 0x3f, 0xda, 0xf3, 0x83, 0xd5, 0x12, 0x2f, 0x8b, 0x3a, + 0x97, 0xe2, 0x75, 0xc6, 0xbf, 0xdc, 0x14, 0xde, 0xc4, 0x82, 0x19, 0x01, 0x65, 0x17, 0x60, 0xdc, + 0xe1, 0x5f, 0xd0, 0x3c, 0xff, 0x63, 0xa5, 0x3c, 0xb7, 0xa0, 0xac, 0x09, 0x23, 0x33, 0xc4, 0x36, + 0xf4, 0x38, 0x3f, 0xb2, 0x09, 0xb3, 0xa5, 0x6e, 0xb7, 0xe5, 0x50, 0x1b, 0x7b, 0xc9, 0x33, 0x1d, + 0x1a, 0x51, 0xbc, 0x7c, 0x8b, 0x17, 0x0a, 0x11, 0x3f, 0x9e, 0xe6, 0x30, 0x49, 0x6b, 0x7c, 0x33, + 0x93, 0x68, 0x34, 0xbb, 0xb9, 0xe3, 0x0f, 0xc5, 0xe9, 0x17, 0x6f, 0xee, 0xbc, 0x89, 0xa8, 0x41, + 0x88, 0x10, 0x98, 0xb0, 0xa4, 0x06, 0x94, 0xc9, 0x71, 0x61, 0x49, 0x5c, 0x2f, 0xa3, 0x0b, 0xe5, + 0x92, 0xb4, 0x1d, 0xcc, 0x45, 0x42, 0x17, 0xda, 0x0e, 0x0a, 0x8b, 0x41, 0xe3, 0x87, 0xb2, 0xfa, + 0xb2, 0x23, 0x97, 0x14, 0xb9, 0x5d, 0x09, 0x69, 0x23, 0xe5, 0x76, 0x45, 0x5a, 0xff, 0xc5, 0x0c, + 0xcc, 0x6d, 0x7a, 0x7b, 0x56, 0xc7, 0xf9, 0x3a, 0x0f, 0x8d, 0xe7, 0xe2, 0xbc, 0x0c, 0x4e, 0x3d, + 0xf2, 0xa4, 0x52, 0x28, 0xb8, 0x4a, 0xc5, 0x6c, 0xa5, 0xe0, 0x92, 0x31, 0xd3, 0xda, 0x83, 0xd6, + 0xd8, 0xd8, 0x30, 0x25, 0x93, 0x05, 0x47, 0xe7, 0x70, 0xe3, 0x27, 0xb2, 0x30, 0xa1, 0x7c, 0x02, + 0xe4, 0xd3, 0x30, 0xa9, 0xf2, 0x51, 0xb5, 0x3e, 0x6a, 0xb5, 0xa6, 0x86, 0x85, 0x6a, 0x1f, 0x6a, + 0xb5, 0x35, 0xb5, 0x0f, 0x5b, 0xe8, 0x08, 0x3d, 0xe1, 0xd5, 0xe6, 0xbd, 0x94, 0xab, 0xcd, 0x89, + 0x52, 0x62, 0xbe, 0x9d, 0xbc, 0xe0, 0x0c, 0x9f, 0xc1, 0xd2, 0xf8, 0xe9, 0x0c, 0x14, 0xe3, 0x1f, + 0xe9, 0x27, 0x32, 0x2a, 0x27, 0x50, 0xf1, 0xff, 0x78, 0x36, 0x0c, 0x30, 0x2c, 0x7d, 0x4c, 0x9e, + 0x56, 0x8b, 0x91, 0x77, 0x34, 0xed, 0xfb, 0xb3, 0xe1, 0xb9, 0xa2, 0x76, 0x6e, 0x40, 0xec, 0x9d, + 0xfc, 0xb7, 0x7f, 0x7e, 0xe9, 0x19, 0xe3, 0x7d, 0x98, 0x8f, 0x0f, 0x07, 0x6a, 0xe0, 0x4b, 0x30, + 0xa3, 0xc3, 0xe3, 0xe1, 0xc9, 0xe3, 0x54, 0x66, 0x1c, 0xdf, 0xf8, 0xdd, 0x6c, 0x9c, 0xb7, 0xb0, + 0x1e, 0x61, 0x9b, 0x4e, 0xc7, 0xda, 0x69, 0x85, 0x31, 0x8f, 0xf9, 0xa6, 0xc3, 0x41, 0xa6, 0x2c, + 0x3b, 0x49, 0xbc, 0xfe, 0xd0, 0x53, 0x22, 0x97, 0xee, 0x29, 0x41, 0x6e, 0xc4, 0xec, 0xa6, 0x14, + 0xb7, 0xfe, 0x87, 0x74, 0xa7, 0x11, 0xd9, 0x4e, 0xc5, 0xcc, 0xa5, 0xca, 0x30, 0xaf, 0xc5, 0x3e, + 0x94, 0xf4, 0x23, 0x91, 0xc2, 0x35, 0xc0, 0x02, 0x4e, 0x9c, 0x8a, 0x4c, 0xd6, 0x60, 0x8c, 0x35, + 0xf3, 0xae, 0xd5, 0x15, 0x8a, 0x75, 0x12, 0xfa, 0x4d, 0xb5, 0xc2, 0x0b, 0x9f, 0xe2, 0x3a, 0xd5, + 0xa2, 0xec, 0xc8, 0xd7, 0x32, 0xca, 0x72, 0x44, 0xe3, 0x8f, 0x33, 0xec, 0xfb, 0x6f, 0x1e, 0x7c, + 0x9f, 0x05, 0xfd, 0x67, 0x5d, 0x1a, 0x60, 0xdc, 0xf4, 0x07, 0x59, 0x1e, 0xb6, 0x5a, 0x2c, 0x9f, + 0x37, 0x61, 0x74, 0xcb, 0xf2, 0xf6, 0x68, 0x20, 0x02, 0x3a, 0xab, 0x5c, 0x78, 0x41, 0x14, 0x74, + 0x20, 0xc0, 0xdf, 0xa6, 0x20, 0x50, 0x75, 0x61, 0xd9, 0xa1, 0x74, 0x61, 0x8a, 0x7a, 0x36, 0xf7, + 0xc4, 0xd4, 0xb3, 0x3f, 0x10, 0x46, 0xa8, 0x2e, 0x05, 0x43, 0x84, 0xd6, 0x3b, 0x1f, 0x0f, 0xc6, + 0x9e, 0x08, 0x82, 0x18, 0xb1, 0x23, 0x37, 0xd4, 0xf0, 0xee, 0x8a, 0xf3, 0xc1, 0x31, 0x81, 0xdc, + 0x8d, 0x3f, 0xc8, 0xf1, 0x31, 0x16, 0x03, 0x75, 0x51, 0x73, 0x4c, 0xc2, 0xef, 0x24, 0x96, 0xd7, + 0x9f, 0xbb, 0x28, 0x5d, 0x84, 0x3c, 0x5b, 0x9b, 0x62, 0x34, 0x11, 0x8f, 0xad, 0x5f, 0x15, 0x8f, + 0x95, 0xb3, 0x6f, 0x19, 0xcf, 0x24, 0x35, 0xa1, 0x06, 0x1e, 0x5b, 0xea, 0xb7, 0x8c, 0x18, 0xe4, + 0x12, 0xe4, 0x37, 0x5c, 0x5b, 0x86, 0x70, 0x9c, 0x47, 0xf7, 0x54, 0x2d, 0x45, 0xfa, 0x42, 0xc6, + 0x44, 0x0c, 0xd6, 0xd7, 0x30, 0xe8, 0xb3, 0xda, 0xd7, 0xf6, 0xae, 0x25, 0x02, 0xc4, 0xab, 0x7d, + 0x8d, 0xe2, 0x43, 0xaf, 0xc2, 0xb4, 0x9e, 0x00, 0x4f, 0x98, 0x7e, 0xa1, 0x9a, 0x35, 0x96, 0x47, + 0x4f, 0xd5, 0x8e, 0xeb, 0x44, 0x64, 0x05, 0xa6, 0xb4, 0xd0, 0x51, 0xe2, 0x85, 0x0b, 0xd5, 0x9b, + 0x7a, 0xe0, 0x29, 0x55, 0xbd, 0xa9, 0x91, 0xb0, 0xf3, 0x5c, 0xb4, 0x5f, 0x79, 0xe7, 0x4a, 0xb4, + 0x5d, 0xe0, 0x90, 0xeb, 0x50, 0xe0, 0x7e, 0xa0, 0xd5, 0x8a, 0xfa, 0x5a, 0xe1, 0x23, 0x2c, 0xe6, + 0x47, 0x2d, 0x11, 0x15, 0xbf, 0xbf, 0x4f, 0x41, 0x51, 0x6c, 0x49, 0x51, 0xf2, 0xba, 0xe7, 0x20, + 0x5f, 0xae, 0x56, 0x4c, 0x75, 0x1b, 0x69, 0x3a, 0xb6, 0x67, 0x22, 0xd4, 0xf8, 0x56, 0x06, 0xce, + 0x6e, 0xd0, 0xe0, 0xa1, 0xeb, 0x1d, 0x98, 0xd4, 0x0f, 0x3c, 0x87, 0xe7, 0x63, 0xc1, 0x0f, 0xf1, + 0xd3, 0xe4, 0x6d, 0x18, 0x41, 0x1b, 0xa4, 0xd8, 0xc9, 0x10, 0xaf, 0x63, 0x65, 0x4a, 0x2c, 0xe0, + 0x11, 0x34, 0x68, 0x32, 0x39, 0x11, 0x79, 0x13, 0xf2, 0x15, 0xda, 0x39, 0x8c, 0x65, 0xa4, 0x48, + 0x10, 0x87, 0x1b, 0x82, 0x4d, 0x3b, 0x87, 0x26, 0x92, 0x18, 0x3f, 0x9d, 0x85, 0x53, 0x29, 0xcd, + 0xba, 0xff, 0xe9, 0xa7, 0x74, 0x57, 0x5c, 0xd1, 0x76, 0x45, 0xf9, 0x48, 0xd9, 0x77, 0xe0, 0x53, + 0x37, 0xc9, 0xbf, 0x91, 0x81, 0x33, 0xfa, 0x02, 0x15, 0x46, 0x87, 0xf7, 0xaf, 0x93, 0xb7, 0x60, + 0x74, 0x8d, 0x5a, 0x36, 0x95, 0x21, 0xf0, 0x4f, 0x85, 0x11, 0x5b, 0xb8, 0x93, 0x1b, 0x2f, 0xe4, + 0x6c, 0x23, 0x97, 0x08, 0x0e, 0x25, 0x15, 0xd1, 0x38, 0x2e, 0x8f, 0x1b, 0xd2, 0xe1, 0x34, 0xad, + 0xaa, 0x01, 0x4f, 0xfd, 0xdf, 0xcd, 0xc0, 0xb3, 0x03, 0x68, 0xd8, 0xc4, 0xb1, 0xa9, 0x57, 0x27, + 0x0e, 0x4f, 0x54, 0x84, 0x92, 0x77, 0x61, 0x66, 0x4b, 0xc8, 0xf3, 0x72, 0x3a, 0xb2, 0xd1, 0xf7, + 0x22, 0x45, 0xfd, 0x86, 0x9c, 0x97, 0x38, 0xb2, 0xe6, 0x09, 0x9d, 0x1b, 0xe8, 0x09, 0xad, 0x3a, + 0x16, 0xe7, 0x87, 0x75, 0x2c, 0x7e, 0x3f, 0x9e, 0x36, 0x5a, 0xc4, 0x77, 0x8b, 0xdc, 0xaa, 0x33, + 0xfd, 0xdd, 0xaa, 0x07, 0x46, 0x91, 0xc2, 0x0c, 0x16, 0x3a, 0xef, 0x8f, 0x3b, 0x9f, 0xef, 0x68, + 0xf3, 0xf9, 0x6c, 0xfa, 0x7c, 0xf6, 0x9f, 0xc8, 0xff, 0x39, 0x13, 0xef, 0xec, 0x50, 0x33, 0x68, + 0xc0, 0x68, 0xc5, 0x6d, 0x5b, 0x4e, 0x47, 0xcd, 0x85, 0x68, 0x23, 0xc4, 0x14, 0x25, 0xc3, 0x79, + 0xa1, 0x9f, 0x87, 0x91, 0x0d, 0xb7, 0x53, 0xaa, 0x08, 0xf3, 0x3e, 0xe4, 0xd3, 0x71, 0x3b, 0x0d, + 0xcb, 0x36, 0x79, 0x01, 0x59, 0x07, 0xa8, 0x37, 0x3d, 0x4a, 0x3b, 0x75, 0xe7, 0xeb, 0x34, 0x26, + 0x69, 0xb0, 0x11, 0x6a, 0xf5, 0x70, 0x63, 0xc1, 0x37, 0x1e, 0x1f, 0x11, 0x1b, 0xbe, 0xf3, 0x75, + 0x75, 0xbf, 0x55, 0xe8, 0x0d, 0x0a, 0x10, 0x11, 0x61, 0x62, 0x28, 0xc7, 0x16, 0xc9, 0x3e, 0xa7, + 0x44, 0x62, 0x28, 0x06, 0xd0, 0x12, 0x43, 0x31, 0x00, 0xdb, 0xda, 0xd7, 0xa8, 0xb3, 0xb7, 0xcf, + 0x4d, 0x46, 0xa6, 0xf8, 0x52, 0xdd, 0x47, 0x88, 0xba, 0xb5, 0x73, 0x1c, 0xe3, 0x47, 0x47, 0xe0, + 0xac, 0x49, 0xf7, 0x1c, 0x26, 0x26, 0xdf, 0xf3, 0x9d, 0xce, 0x9e, 0xe6, 0x27, 0x6c, 0xc4, 0x16, + 0x92, 0x08, 0xd6, 0xca, 0x20, 0xe1, 0xc0, 0x5c, 0x86, 0x02, 0x3b, 0x15, 0x95, 0xb5, 0x84, 0x6f, + 0x28, 0x98, 0x77, 0x98, 0x2f, 0x72, 0x59, 0x4c, 0x5e, 0x11, 0xa7, 0xb6, 0x12, 0x4e, 0x9b, 0x9d, + 0xda, 0xdf, 0x3b, 0x5a, 0x82, 0xfa, 0xa1, 0x1f, 0x50, 0xbc, 0xb1, 0x89, 0x93, 0x3b, 0x14, 0xad, + 0xf3, 0x7d, 0x44, 0xeb, 0xbb, 0x30, 0x5f, 0xb2, 0xf9, 0x66, 0x6d, 0xb5, 0x6a, 0x9e, 0xd3, 0x69, + 0x3a, 0x5d, 0xab, 0x25, 0xaf, 0x8b, 0x38, 0xca, 0x56, 0x58, 0xde, 0xe8, 0x86, 0x08, 0x66, 0x2a, + 0x19, 0xeb, 0x46, 0x65, 0xa3, 0xce, 0x73, 0xea, 0xf3, 0xe7, 0x31, 0xec, 0x86, 0xdd, 0xf1, 0x79, + 0x52, 0x7d, 0x33, 0x2c, 0x46, 0xa1, 0x1e, 0x6d, 0x10, 0xb6, 0xd6, 0xeb, 0x91, 0xc7, 0x0d, 0x8f, + 0xf6, 0xc9, 0xed, 0x14, 0x82, 0x96, 0x8f, 0xb6, 0x0a, 0x1a, 0x5e, 0x44, 0x57, 0xaf, 0xaf, 0x31, + 0xba, 0x42, 0x82, 0xce, 0xf7, 0xf7, 0x55, 0x3a, 0x8e, 0x47, 0xae, 0xb2, 0xa5, 0xd0, 0x76, 0x03, + 0x8a, 0xeb, 0x7c, 0x3c, 0xba, 0x02, 0x78, 0x08, 0xe5, 0x57, 0x00, 0x05, 0x85, 0xbc, 0x0d, 0x73, + 0xab, 0xe5, 0x65, 0xa9, 0xd4, 0xac, 0xb8, 0xcd, 0x1e, 0xbe, 0x2a, 0x03, 0xd6, 0x87, 0x73, 0x48, + 0x9b, 0xcb, 0x6c, 0x71, 0xa7, 0xa1, 0x91, 0x8b, 0x30, 0x56, 0xad, 0xf0, 0xb1, 0x9f, 0x50, 0x43, + 0xda, 0x0b, 0x6b, 0x0d, 0x59, 0x48, 0x36, 0x23, 0x19, 0x75, 0xf2, 0x58, 0x61, 0xf2, 0xec, 0xf1, + 0xf2, 0xa9, 0x88, 0x7c, 0xcf, 0x33, 0xac, 0x94, 0x5d, 0x9b, 0xfa, 0xf7, 0xaf, 0x7d, 0x9f, 0x45, + 0xbe, 0x57, 0xfa, 0x86, 0xbb, 0xd7, 0xb5, 0xd4, 0xad, 0xee, 0xdf, 0xc2, 0xc8, 0xf7, 0x09, 0x5c, + 0xf2, 0x59, 0x18, 0xc1, 0x9f, 0x42, 0xee, 0x99, 0x4b, 0x61, 0x1b, 0xc9, 0x3c, 0x4d, 0x9e, 0xcb, + 0x14, 0x09, 0x48, 0x15, 0xc6, 0x84, 0xc8, 0x7d, 0x92, 0xf8, 0xcd, 0x42, 0x76, 0xe7, 0x93, 0x24, + 0xe8, 0x0d, 0x1b, 0x26, 0xd5, 0x0a, 0xd9, 0xe2, 0x5c, 0xb3, 0xfc, 0x7d, 0x6a, 0xb3, 0x5f, 0x22, + 0xf5, 0x02, 0x2e, 0xce, 0x7d, 0x84, 0x36, 0x58, 0x3b, 0x4c, 0x05, 0x85, 0xed, 0xb6, 0x55, 0xff, + 0x9e, 0x2f, 0x9a, 0x22, 0x2e, 0xe1, 0x0e, 0x2a, 0x74, 0x6c, 0x53, 0x14, 0x19, 0x3f, 0x00, 0xf3, + 0x1b, 0xbd, 0x56, 0x8b, 0x5d, 0xc8, 0x65, 0x68, 0xde, 0xc0, 0x0a, 0x28, 0x59, 0x81, 0x91, 0xba, + 0x92, 0x1d, 0x6d, 0x2e, 0x8c, 0x7d, 0x1c, 0xe1, 0xa0, 0x8d, 0x5a, 0x06, 0xbd, 0x8c, 0x63, 0x79, + 0xd1, 0x38, 0xa9, 0xf1, 0x9d, 0x28, 0xab, 0xee, 0x96, 0x67, 0x35, 0x0f, 0xc2, 0x0c, 0x79, 0xc3, + 0x26, 0x08, 0xbe, 0x2d, 0x1b, 0xa1, 0x1f, 0x65, 0x69, 0x0d, 0x3e, 0xae, 0x31, 0xe4, 0x6d, 0x98, + 0x10, 0xc7, 0x99, 0x12, 0x1b, 0x07, 0x03, 0x10, 0xc8, 0x84, 0xda, 0x31, 0x73, 0x03, 0x15, 0x1d, + 0x4f, 0x69, 0xbd, 0x2b, 0xf7, 0xaf, 0x7d, 0x12, 0xa7, 0xb4, 0x5e, 0xc7, 0x80, 0xa5, 0xfb, 0x8f, + 0x26, 0xe2, 0x63, 0x2b, 0xd6, 0xee, 0x0d, 0x35, 0x1a, 0x46, 0x26, 0xba, 0x33, 0x45, 0xd1, 0x30, + 0xd4, 0x3b, 0x53, 0x88, 0x1a, 0xce, 0x49, 0xf6, 0x98, 0x39, 0x79, 0x57, 0xce, 0x49, 0xae, 0xff, + 0xc2, 0x98, 0x1b, 0x30, 0x0f, 0xf5, 0xe8, 0x0b, 0xc9, 0x0f, 0x75, 0xe1, 0x7e, 0x06, 0xc3, 0x7e, + 0x72, 0x92, 0xf8, 0x86, 0x26, 0x38, 0xa9, 0xb7, 0xf8, 0x91, 0xe1, 0x99, 0x1e, 0x73, 0x8b, 0xff, + 0x1c, 0x4c, 0x96, 0x82, 0xc0, 0x6a, 0xee, 0x53, 0xbb, 0xc2, 0xb6, 0x27, 0xc5, 0x71, 0xdf, 0x12, + 0x70, 0xf5, 0x39, 0x45, 0xc5, 0xe5, 0x81, 0xa8, 0x2c, 0x5f, 0x58, 0xbb, 0x85, 0x81, 0xa8, 0x18, + 0x44, 0x0f, 0x44, 0xc5, 0x20, 0xe4, 0x2a, 0x8c, 0x55, 0x3b, 0x0f, 0x1c, 0x36, 0x26, 0x05, 0x25, + 0x0f, 0x38, 0x07, 0xa9, 0x9b, 0xab, 0xc0, 0x22, 0x6f, 0x2a, 0xe2, 0xee, 0x78, 0x74, 0xb5, 0xe5, + 0xca, 0x90, 0xd0, 0xe7, 0x57, 0x15, 0x65, 0x43, 0xf9, 0xf7, 0x06, 0x8c, 0x49, 0x1d, 0x17, 0x44, + 0xd7, 0x59, 0x41, 0x99, 0x74, 0x2e, 0x94, 0xc8, 0x98, 0x54, 0x4d, 0x49, 0x21, 0x31, 0xa1, 0x24, + 0x55, 0x53, 0x52, 0x48, 0x68, 0x49, 0xd5, 0x94, 0x64, 0x12, 0xa1, 0x7a, 0x60, 0xf2, 0x58, 0xf5, + 0xc0, 0x7d, 0x98, 0xac, 0x59, 0x5e, 0xe0, 0x30, 0x71, 0xa1, 0x13, 0xf8, 0x0b, 0x53, 0x9a, 0x46, + 0x4d, 0x29, 0x5a, 0x79, 0x5e, 0x26, 0x17, 0xeb, 0x2a, 0xf8, 0x7a, 0x16, 0xac, 0x08, 0x9e, 0x6e, + 0xeb, 0x36, 0xfd, 0x71, 0x6c, 0xdd, 0x70, 0x50, 0x51, 0x8b, 0x32, 0x13, 0xdd, 0xd5, 0x51, 0x9c, + 0x8d, 0xa9, 0x52, 0x42, 0x44, 0xf2, 0x25, 0x98, 0x64, 0x7f, 0x63, 0xea, 0x6d, 0x87, 0xfa, 0x0b, + 0x45, 0xec, 0xdc, 0xf3, 0xa9, 0x5f, 0x3f, 0xcf, 0xcf, 0x5d, 0xa7, 0x01, 0xff, 0x80, 0x91, 0x71, + 0x5c, 0x3d, 0xaa, 0x71, 0x23, 0xef, 0xc1, 0xa4, 0x4c, 0x0f, 0x8f, 0x93, 0x34, 0x1b, 0x59, 0x2b, + 0xda, 0x02, 0x9e, 0x88, 0x05, 0xa7, 0x12, 0xb0, 0x63, 0xbe, 0xd4, 0xe5, 0x1b, 0x24, 0x51, 0x56, + 0x7b, 0x37, 0xb1, 0x39, 0x4a, 0x34, 0xf2, 0x79, 0x98, 0x2c, 0x75, 0xbb, 0xd1, 0x8e, 0x33, 0xa7, + 0xa8, 0x48, 0xba, 0xdd, 0x46, 0xea, 0xae, 0xa3, 0x51, 0xc4, 0x37, 0xe6, 0xf9, 0x13, 0x6d, 0xcc, + 0xe4, 0xf5, 0x50, 0x70, 0x3e, 0x15, 0xe9, 0xfb, 0xc4, 0x95, 0x42, 0x93, 0xc2, 0xb9, 0x0c, 0x5d, + 0x86, 0x29, 0xae, 0x00, 0x93, 0xd2, 0xcc, 0xe9, 0xc4, 0xd7, 0x93, 0x22, 0xd4, 0xe8, 0x34, 0x64, + 0x15, 0xa6, 0xb9, 0x4b, 0x56, 0x4b, 0x04, 0xe9, 0x5b, 0x38, 0x13, 0x25, 0x78, 0xe5, 0x9e, 0x5c, + 0x2d, 0x8c, 0xdd, 0x6c, 0x69, 0x5c, 0x62, 0x44, 0xc6, 0x1f, 0x66, 0xe0, 0x4c, 0x9f, 0x19, 0x0f, + 0x43, 0xb8, 0x65, 0x8e, 0xc9, 0x71, 0x7f, 0x35, 0x92, 0xb2, 0x14, 0x7d, 0xa7, 0x90, 0xb2, 0xd4, + 0xf9, 0x92, 0xf2, 0x96, 0x0b, 0x44, 0x64, 0xb8, 0x57, 0x32, 0xc1, 0x8b, 0x38, 0xa2, 0xb1, 0x43, + 0x48, 0xcb, 0x84, 0xbf, 0x62, 0x3c, 0x3e, 0x5a, 0x7a, 0xde, 0xe3, 0xa0, 0x70, 0x5a, 0x3f, 0x74, + 0xb5, 0x2f, 0x38, 0x85, 0xb5, 0x71, 0x94, 0x81, 0x09, 0xe5, 0x3b, 0x24, 0xe7, 0x15, 0x5f, 0xb1, + 0x22, 0x8f, 0x0b, 0xaf, 0x70, 0xc8, 0xf2, 0x93, 0x08, 0x3f, 0xaa, 0xec, 0xf1, 0xaa, 0xc9, 0xbb, + 0x4c, 0x14, 0x52, 0xc2, 0xdc, 0xb5, 0x35, 0x3d, 0xa2, 0x89, 0xe5, 0x98, 0x13, 0xd1, 0xf2, 0x83, + 0x52, 0x33, 0x70, 0x1e, 0xd0, 0x21, 0x0e, 0x9d, 0x28, 0x27, 0xa2, 0xe5, 0x07, 0x0d, 0x0b, 0xc9, + 0x12, 0x39, 0x11, 0x43, 0x86, 0xc6, 0x5f, 0xcc, 0x00, 0xdc, 0xab, 0x96, 0x31, 0x4e, 0xe5, 0xc7, + 0x15, 0x0a, 0xd2, 0x63, 0x7f, 0x49, 0xee, 0x03, 0xc4, 0x81, 0x1a, 0x4c, 0xeb, 0x58, 0xe4, 0x5d, + 0x98, 0xa9, 0x37, 0x3d, 0xb7, 0xd5, 0xda, 0xb1, 0x9a, 0x07, 0xeb, 0x4e, 0x87, 0xf2, 0xa0, 0x4b, + 0x23, 0xfc, 0x28, 0xf2, 0xc3, 0xa2, 0x46, 0x8b, 0x95, 0x99, 0x71, 0x64, 0xe3, 0x4f, 0x32, 0x30, + 0x51, 0xed, 0xf8, 0x81, 0xd5, 0x6a, 0xa1, 0xb0, 0xf3, 0xfd, 0x94, 0x1a, 0x24, 0xec, 0xd7, 0x80, + 0x11, 0x7d, 0x03, 0x66, 0x62, 0x68, 0xec, 0x92, 0x5e, 0x47, 0x6f, 0x5a, 0xf5, 0x92, 0xce, 0xfd, + 0x6b, 0x4d, 0x51, 0x62, 0xac, 0x2a, 0x64, 0xf7, 0xaf, 0xe1, 0x4b, 0xdb, 0x32, 0x80, 0x23, 0x41, + 0xf2, 0x4a, 0x41, 0xe2, 0x2d, 0xb9, 0x7f, 0xcd, 0x54, 0xb0, 0x8c, 0x0d, 0x18, 0xad, 0xbb, 0x5e, + 0xb0, 0x72, 0xc8, 0xa5, 0xf8, 0x0a, 0xf5, 0x9b, 0xea, 0x53, 0x9a, 0x83, 0xea, 0xeb, 0xa6, 0x29, + 0x8a, 0xd8, 0x1d, 0xfe, 0xa6, 0x43, 0x5b, 0xb6, 0x6a, 0x33, 0xb9, 0xcb, 0x00, 0x26, 0x87, 0xb3, + 0x9b, 0xce, 0xe9, 0x28, 0x8e, 0x72, 0x64, 0x9c, 0xf9, 0x71, 0x17, 0x6c, 0x59, 0x1b, 0xdf, 0x17, + 0xf4, 0xcc, 0x9b, 0x5a, 0x4d, 0x03, 0x86, 0xfa, 0x3f, 0xcc, 0xc0, 0x62, 0x7f, 0x12, 0xd5, 0xde, + 0x33, 0x33, 0xc0, 0xde, 0xf3, 0xa5, 0xf8, 0xd3, 0x0f, 0xa2, 0x89, 0xa7, 0x9f, 0xe8, 0xc1, 0xa7, + 0x82, 0xe6, 0xb6, 0xcd, 0x30, 0x87, 0xf1, 0xf9, 0x01, 0x6d, 0x46, 0x44, 0x3e, 0xcd, 0x01, 0xd2, + 0x98, 0x82, 0xd6, 0xf8, 0x8d, 0x3c, 0x9c, 0xed, 0x4b, 0x41, 0xd6, 0x94, 0x90, 0xec, 0xd3, 0x61, + 0x30, 0xe8, 0xbe, 0xf8, 0x57, 0xf0, 0x5f, 0xb4, 0xa8, 0x8a, 0x7b, 0x81, 0x6c, 0x86, 0xa1, 0xb8, + 0xb3, 0xc8, 0xeb, 0xd5, 0x63, 0x79, 0x71, 0x74, 0x64, 0x06, 0xc9, 0xa8, 0xdc, 0xe8, 0x2f, 0x44, + 0x03, 0xcb, 0x69, 0xf9, 0xea, 0x67, 0x67, 0x73, 0x90, 0x29, 0xcb, 0x22, 0x23, 0xdc, 0x7c, 0xba, + 0x11, 0xae, 0xf1, 0x7f, 0x65, 0x60, 0x3c, 0x6c, 0x36, 0x59, 0x84, 0xd3, 0x5b, 0x66, 0xa9, 0xbc, + 0xda, 0xd8, 0x7a, 0xbf, 0xb6, 0xda, 0xb8, 0xb7, 0x51, 0xaf, 0xad, 0x96, 0xab, 0x37, 0xab, 0xab, + 0x95, 0xe2, 0x33, 0x64, 0x16, 0xa6, 0xee, 0x6d, 0xdc, 0xd9, 0xd8, 0xdc, 0xde, 0x68, 0xac, 0x9a, + 0xe6, 0xa6, 0x59, 0xcc, 0x90, 0x29, 0x18, 0x37, 0x57, 0x4a, 0xe5, 0xc6, 0xc6, 0x66, 0x65, 0xb5, + 0x98, 0x25, 0x45, 0x98, 0x2c, 0x6f, 0x6e, 0x6c, 0xac, 0x96, 0xb7, 0xaa, 0xf7, 0xab, 0x5b, 0xef, + 0x17, 0x73, 0x84, 0xc0, 0x34, 0x22, 0xd4, 0xcc, 0xea, 0x46, 0xb9, 0x5a, 0x2b, 0xad, 0x17, 0xf3, + 0x0c, 0xc6, 0xf0, 0x15, 0xd8, 0x48, 0xc8, 0xe8, 0xce, 0xbd, 0x95, 0xd5, 0xe2, 0x28, 0x43, 0x61, + 0x7f, 0x29, 0x28, 0x63, 0xac, 0x7a, 0x44, 0xa9, 0x94, 0xb6, 0x4a, 0x2b, 0xa5, 0xfa, 0x6a, 0xb1, + 0x40, 0xce, 0xc0, 0x9c, 0x06, 0x6a, 0xac, 0x6f, 0xde, 0xaa, 0x6e, 0x14, 0xc7, 0xc9, 0x3c, 0x14, + 0x43, 0x58, 0x65, 0xa5, 0x71, 0xaf, 0xbe, 0x6a, 0x16, 0x21, 0x0e, 0xdd, 0x28, 0xdd, 0x5d, 0x2d, + 0x4e, 0x18, 0xef, 0x70, 0xff, 0x1c, 0x3e, 0xd4, 0xe4, 0x34, 0x90, 0xfa, 0x56, 0x69, 0xeb, 0x5e, + 0x3d, 0xd6, 0xf9, 0x09, 0x18, 0xab, 0xdf, 0x2b, 0x97, 0x57, 0xeb, 0xf5, 0x62, 0x86, 0x00, 0x8c, + 0xde, 0x2c, 0x55, 0xd7, 0x57, 0x2b, 0xc5, 0xac, 0xf1, 0x53, 0x19, 0x98, 0x95, 0xa2, 0x97, 0xd4, + 0xe3, 0x7f, 0xcc, 0x6f, 0xf1, 0x5d, 0xed, 0x46, 0x29, 0xdd, 0x27, 0x62, 0x95, 0x0c, 0xf8, 0x0c, + 0x3d, 0x38, 0x95, 0x8a, 0x4c, 0xde, 0x87, 0xa2, 0x6c, 0xc0, 0x5d, 0x2b, 0x68, 0xee, 0x47, 0xdb, + 0xd8, 0xf3, 0xb1, 0x4a, 0x62, 0x68, 0x5c, 0xb3, 0x17, 0xe5, 0x1e, 0x4b, 0xb0, 0x31, 0xbe, 0x9d, + 0x81, 0x33, 0x7d, 0x88, 0x49, 0x19, 0x46, 0xc3, 0x08, 0xd5, 0x03, 0x2c, 0x85, 0xe6, 0xbf, 0x7b, + 0xb4, 0x24, 0x10, 0x31, 0x05, 0x13, 0xfe, 0x65, 0x8e, 0x86, 0x21, 0xa7, 0x31, 0xee, 0x33, 0x1f, + 0x93, 0xb3, 0xb1, 0xe1, 0x14, 0x35, 0x95, 0xb6, 0xeb, 0x2b, 0x13, 0x62, 0x40, 0x72, 0xd6, 0x43, + 0x1f, 0x03, 0x3f, 0x1b, 0xdf, 0xca, 0x30, 0x51, 0x29, 0x8e, 0xc8, 0x24, 0xc8, 0x92, 0xef, 0xf7, + 0xda, 0xd4, 0x74, 0x5b, 0xb4, 0x64, 0x6e, 0x88, 0xb3, 0x00, 0x65, 0x3f, 0x0b, 0x0b, 0x50, 0x48, + 0x6f, 0x58, 0x5e, 0x47, 0x7b, 0x15, 0x54, 0x69, 0xc8, 0x9b, 0x00, 0x61, 0xd6, 0x6a, 0xe9, 0x17, + 0xcf, 0x83, 0x39, 0x08, 0xa8, 0x2e, 0xbd, 0x2a, 0xc8, 0xc6, 0x8f, 0x64, 0x60, 0x52, 0x5c, 0x41, + 0x4a, 0x2d, 0xea, 0x05, 0x1f, 0x6f, 0xcd, 0xbc, 0xa9, 0xad, 0x99, 0xd0, 0x30, 0x5e, 0xe1, 0xcf, + 0x8a, 0x53, 0x97, 0xcb, 0x7f, 0x9e, 0x81, 0x62, 0x1c, 0x91, 0xbc, 0x0b, 0x85, 0x3a, 0x7d, 0x40, + 0x3d, 0x27, 0x38, 0x8c, 0xe5, 0xd5, 0xe7, 0x38, 0xa2, 0x8c, 0x6b, 0x3a, 0x7d, 0xf1, 0xcb, 0x0c, + 0x69, 0x86, 0xdd, 0xc4, 0x15, 0x25, 0x42, 0xee, 0x49, 0x29, 0x11, 0x8c, 0xff, 0x3e, 0x0b, 0x67, + 0x6e, 0xd1, 0x40, 0xed, 0x53, 0xf8, 0x8c, 0xfb, 0xa9, 0xe1, 0xfa, 0xa5, 0xf4, 0x64, 0x01, 0xc6, + 0xb0, 0x48, 0xce, 0xaf, 0x29, 0x7f, 0x92, 0x95, 0x70, 0x5d, 0xe7, 0xb4, 0x64, 0x01, 0x7d, 0xea, + 0xbe, 0xa2, 0x84, 0x0f, 0x0f, 0x97, 0xf5, 0x45, 0x98, 0xc6, 0xf8, 0x98, 0x3d, 0xf6, 0x39, 0x50, + 0x5b, 0x28, 0x53, 0x0a, 0x66, 0x0c, 0x4a, 0x5e, 0x81, 0x22, 0x83, 0x94, 0x9a, 0x07, 0x1d, 0xf7, + 0x61, 0x8b, 0xda, 0x7b, 0x94, 0xe7, 0x2e, 0x2e, 0x98, 0x09, 0xb8, 0xe4, 0x79, 0xaf, 0xc3, 0x2f, + 0x42, 0xd4, 0x46, 0x8d, 0x87, 0xe0, 0x19, 0x41, 0x17, 0xdf, 0x84, 0x89, 0x8f, 0x98, 0x0a, 0xc0, + 0xf8, 0xef, 0x32, 0x30, 0x8f, 0x9d, 0x53, 0x2a, 0x46, 0x55, 0xf8, 0xa7, 0xa2, 0xd1, 0x52, 0xa2, + 0x63, 0x5b, 0x0c, 0xa4, 0x7f, 0x0a, 0xe1, 0x28, 0x46, 0x1a, 0x96, 0xec, 0x10, 0x1a, 0x96, 0xfa, + 0x49, 0x52, 0x1d, 0x0e, 0xa9, 0x20, 0xe2, 0x09, 0xaa, 0xa3, 0x29, 0x37, 0xfe, 0x52, 0x16, 0xc6, + 0x4c, 0x8a, 0x39, 0xe0, 0xc8, 0x45, 0x18, 0xdb, 0x70, 0x03, 0xea, 0xdf, 0xd5, 0x12, 0xfe, 0x75, + 0x18, 0xa8, 0xd1, 0xb6, 0x4d, 0x59, 0xc8, 0x16, 0x7c, 0xcd, 0x73, 0xed, 0x5e, 0x33, 0x50, 0x17, + 0x7c, 0x97, 0x83, 0x4c, 0x59, 0x46, 0x5e, 0x83, 0x71, 0xc1, 0x39, 0x7c, 0x3c, 0x43, 0xa3, 0x4f, + 0x8f, 0x86, 0x39, 0x04, 0x23, 0x04, 0x14, 0x54, 0xb9, 0xd4, 0x90, 0x57, 0x04, 0xd5, 0x84, 0x20, + 0x20, 0xe5, 0xef, 0x91, 0x01, 0xf2, 0xf7, 0xa7, 0x60, 0xb4, 0xe4, 0xfb, 0x34, 0x90, 0x2e, 0xc3, + 0x93, 0x61, 0xa4, 0x14, 0x9f, 0x06, 0x9c, 0xb1, 0x85, 0xe5, 0xa6, 0xc0, 0x33, 0xfe, 0x38, 0x0b, + 0x23, 0xf8, 0x27, 0x3e, 0x18, 0x7a, 0xcd, 0x7d, 0xed, 0xc1, 0xd0, 0x6b, 0xee, 0x9b, 0x08, 0x25, + 0xd7, 0xf0, 0xde, 0x2f, 0x03, 0xb9, 0x8b, 0xde, 0xa3, 0x42, 0xdb, 0x8e, 0xc0, 0xa6, 0x8a, 0x13, + 0xbe, 0xa4, 0xe6, 0x52, 0x03, 0x05, 0x9c, 0x86, 0xec, 0x66, 0x5d, 0xf4, 0x18, 0xa3, 0x90, 0xb8, + 0xbe, 0x99, 0xdd, 0xac, 0xe3, 0x68, 0xac, 0x95, 0x96, 0xdf, 0xb8, 0xa1, 0xe6, 0xa6, 0xf4, 0xf7, + 0xad, 0xe5, 0x37, 0x6e, 0x98, 0xa2, 0x84, 0x8d, 0x2f, 0xb6, 0x19, 0x5f, 0x14, 0xb9, 0x8b, 0x2b, + 0x8e, 0x2f, 0xf6, 0x0d, 0x5f, 0x0f, 0xcd, 0x08, 0x81, 0x2c, 0xc3, 0x84, 0x70, 0xac, 0x46, 0x7c, + 0xc5, 0xf1, 0x59, 0x38, 0x5e, 0x73, 0x0a, 0x15, 0x89, 0xbf, 0x2d, 0x89, 0x09, 0x92, 0xe9, 0xa6, + 0xc4, 0xdb, 0x92, 0x9c, 0x42, 0xdf, 0x54, 0x50, 0x22, 0x0f, 0xdd, 0xc8, 0x75, 0x55, 0xf5, 0xd0, + 0xc5, 0x78, 0xa7, 0x21, 0x82, 0xf1, 0x4b, 0x59, 0x28, 0xd4, 0x5a, 0xbd, 0x3d, 0xa7, 0x73, 0xff, + 0xda, 0x9f, 0x6a, 0x7e, 0xf4, 0xd7, 0x01, 0x0f, 0x09, 0x71, 0x23, 0x90, 0xea, 0x61, 0xde, 0x34, + 0x21, 0x7c, 0x70, 0x12, 0x44, 0x23, 0xd7, 0x41, 0x2c, 0x4c, 0x91, 0x2e, 0xef, 0x94, 0x4e, 0xc0, + 0x13, 0xc5, 0x48, 0x12, 0x81, 0x4a, 0xde, 0x86, 0x89, 0x28, 0x51, 0x75, 0x94, 0x05, 0x4f, 0xa5, + 0x2c, 0x47, 0xe5, 0xf7, 0xaf, 0x99, 0x2a, 0xba, 0xf1, 0x8b, 0xa3, 0x30, 0xa9, 0xb6, 0x87, 0x98, + 0x30, 0xe7, 0xb7, 0xd8, 0x55, 0x58, 0x18, 0xf5, 0x74, 0xb1, 0x50, 0x1c, 0xa7, 0xe7, 0xf5, 0x06, + 0x31, 0x3c, 0x6e, 0xe1, 0x23, 0x3d, 0xc2, 0xd7, 0x9e, 0x31, 0x67, 0xfd, 0x08, 0xcc, 0xf1, 0x48, + 0x09, 0x0a, 0x6e, 0xd7, 0xdf, 0xa3, 0x1d, 0x47, 0xbe, 0x5e, 0x5c, 0xd0, 0x18, 0x6d, 0x8a, 0xc2, + 0x04, 0xaf, 0x90, 0x8c, 0xbc, 0x01, 0xa3, 0x6e, 0x97, 0x76, 0x2c, 0x47, 0x9c, 0x71, 0xcf, 0xc6, + 0x18, 0xd0, 0x4e, 0xa9, 0xaa, 0x10, 0x0a, 0x64, 0x72, 0x15, 0xf2, 0xee, 0x41, 0x38, 0x5f, 0x67, + 0x75, 0xa2, 0x83, 0xc0, 0x52, 0x48, 0x10, 0x91, 0x11, 0x7c, 0x68, 0xb5, 0x77, 0xc5, 0x8c, 0xe9, + 0x04, 0xb7, 0xad, 0xf6, 0xae, 0x4a, 0xc0, 0x10, 0xc9, 0x7b, 0x00, 0x5d, 0x6b, 0x8f, 0x7a, 0x0d, + 0xbb, 0x17, 0x1c, 0x8a, 0x79, 0x7b, 0x5e, 0x23, 0xab, 0xb1, 0xe2, 0x4a, 0x2f, 0x38, 0x54, 0x68, + 0xc7, 0xbb, 0x12, 0x48, 0x4a, 0x00, 0x6d, 0x2b, 0x08, 0xa8, 0xd7, 0x76, 0x85, 0x55, 0xd5, 0xc4, + 0xf2, 0x92, 0xc6, 0xe0, 0x6e, 0x58, 0xac, 0x70, 0x50, 0x88, 0xb0, 0xd1, 0x8e, 0x67, 0x89, 0xa4, + 0x85, 0xb1, 0x46, 0x3b, 0x9e, 0xd6, 0x4b, 0x86, 0x48, 0x3e, 0x0b, 0x63, 0xb6, 0xe3, 0x37, 0x5d, + 0xcf, 0x16, 0xa1, 0x02, 0x9e, 0xd3, 0x68, 0x2a, 0xbc, 0x4c, 0x21, 0x93, 0xe8, 0xac, 0xb5, 0x22, + 0xee, 0xd7, 0x86, 0xfb, 0x50, 0x24, 0xc4, 0xd7, 0x5b, 0x5b, 0x0f, 0x8b, 0xd5, 0xd6, 0x46, 0x44, + 0x6c, 0x2a, 0xf7, 0x9c, 0xa0, 0x65, 0xed, 0x88, 0x07, 0x5c, 0x7d, 0x2a, 0x6f, 0x61, 0x91, 0x3a, + 0x95, 0x1c, 0x99, 0xbc, 0x09, 0x05, 0xda, 0x09, 0x3c, 0xab, 0xe1, 0xd8, 0xc2, 0x1b, 0x4d, 0x6f, + 0x34, 0x3b, 0x80, 0xad, 0x6a, 0x45, 0x6d, 0x34, 0xe2, 0x57, 0x6d, 0x36, 0x3e, 0x7e, 0xd3, 0x69, + 0x0b, 0x27, 0x32, 0x7d, 0x7c, 0xea, 0xe5, 0xea, 0x5d, 0x75, 0x7c, 0x18, 0xe2, 0xe7, 0xf2, 0xff, + 0xe3, 0xcf, 0x2f, 0x65, 0x56, 0x00, 0x0a, 0x32, 0x16, 0x82, 0xb1, 0x0e, 0x67, 0xfb, 0x2e, 0x7a, + 0x72, 0x19, 0x8a, 0xbb, 0x96, 0xd0, 0x20, 0x35, 0xf7, 0xad, 0x4e, 0x87, 0xb6, 0xc4, 0x76, 0x33, + 0x23, 0xe1, 0x65, 0x0e, 0xe6, 0x9c, 0x8d, 0xf7, 0x60, 0x3e, 0xad, 0xb7, 0xe4, 0x05, 0x98, 0x54, + 0xc3, 0x3e, 0x08, 0x26, 0x13, 0x56, 0xd7, 0x91, 0x81, 0x1f, 0x04, 0x83, 0x5f, 0xcf, 0xc0, 0x73, + 0x83, 0xbe, 0x1d, 0xb2, 0x08, 0x85, 0xae, 0xe7, 0xb8, 0x28, 0xa3, 0xf1, 0x1d, 0x2e, 0xfc, 0x4d, + 0xce, 0x01, 0x70, 0x61, 0x22, 0xb0, 0xf6, 0x84, 0x15, 0xb9, 0x39, 0x8e, 0x90, 0x2d, 0x6b, 0xcf, + 0x27, 0xaf, 0xc2, 0xac, 0x4d, 0x77, 0xad, 0x5e, 0x2b, 0x68, 0xf8, 0xcd, 0x7d, 0x6a, 0xa3, 0xe3, + 0x06, 0x5a, 0x07, 0x99, 0x45, 0x51, 0x50, 0x97, 0xf0, 0x44, 0x8b, 0x47, 0xfa, 0xb4, 0xf8, 0x76, + 0xbe, 0x90, 0x29, 0x66, 0x4d, 0x34, 0x92, 0x31, 0xbe, 0x91, 0x85, 0x85, 0x7e, 0x8b, 0x85, 0xbc, + 0x93, 0x36, 0x06, 0x5c, 0x07, 0xae, 0xc2, 0x55, 0x1d, 0xb8, 0x52, 0x1b, 0x59, 0x86, 0xd0, 0xed, + 0xe2, 0x38, 0x17, 0x6a, 0x09, 0x63, 0x34, 0x5d, 0xcb, 0xf7, 0x1f, 0xb2, 0xef, 0x21, 0xa7, 0x04, + 0x50, 0x13, 0x30, 0x95, 0x46, 0xc2, 0xc8, 0x67, 0x00, 0x9a, 0x2d, 0xd7, 0xa7, 0xf8, 0xd4, 0x2c, + 0x0e, 0x5a, 0x6e, 0x7b, 0x1a, 0x42, 0xd5, 0xb7, 0x45, 0x84, 0x96, 0x5d, 0x9b, 0x8a, 0x09, 0xb4, + 0xe0, 0x4c, 0x9f, 0xdd, 0x81, 0x4d, 0x4f, 0x94, 0x23, 0x51, 0x46, 0x5c, 0xef, 0x85, 0x99, 0x12, + 0xe3, 0x23, 0x9e, 0xed, 0xb7, 0x46, 0x0e, 0x81, 0x24, 0xb7, 0x00, 0xc6, 0x5d, 0x58, 0x50, 0xf6, + 0xbc, 0x90, 0x3b, 0x87, 0xdc, 0xf3, 0x5a, 0x64, 0x09, 0x26, 0x64, 0x46, 0x15, 0x26, 0xc8, 0x72, + 0xe6, 0x20, 0x40, 0x77, 0x28, 0x2e, 0x1e, 0x8c, 0xf3, 0x87, 0xce, 0x35, 0xe2, 0x88, 0x1c, 0x47, + 0x08, 0xbb, 0xfb, 0x8b, 0xaa, 0x9f, 0x93, 0xeb, 0x5b, 0xdf, 0x98, 0x45, 0xe9, 0xcf, 0x64, 0xe4, + 0xf4, 0x27, 0x77, 0xb6, 0xe3, 0xda, 0x47, 0x00, 0x5d, 0x21, 0x44, 0xc3, 0xf0, 0x6f, 0x76, 0x64, + 0xcb, 0xaf, 0x4e, 0x1c, 0xd9, 0xe2, 0x27, 0xb9, 0x08, 0x33, 0x1e, 0x37, 0x96, 0x0b, 0x5c, 0x31, + 0x9e, 0x38, 0x53, 0xe6, 0x14, 0x07, 0x6f, 0xb9, 0x38, 0xa6, 0xa2, 0x5d, 0xb7, 0xc3, 0x01, 0x53, + 0x36, 0x7a, 0x72, 0x05, 0xc6, 0xd9, 0x46, 0x8f, 0x51, 0x15, 0x62, 0x36, 0xd8, 0x88, 0x87, 0xc7, + 0xa6, 0x59, 0xf8, 0x50, 0xfc, 0x2d, 0x78, 0xfd, 0xe3, 0x8c, 0x64, 0xa6, 0x1e, 0x33, 0xe4, 0x0c, + 0x8c, 0xb9, 0xde, 0x9e, 0xd2, 0xb5, 0x51, 0xd7, 0xdb, 0x63, 0xfd, 0xba, 0x04, 0x45, 0xee, 0x12, + 0xc0, 0x7d, 0xad, 0xfd, 0xc3, 0x0e, 0xbf, 0x87, 0x16, 0xcc, 0x69, 0x0e, 0xc7, 0xb4, 0x91, 0x87, + 0x9d, 0x26, 0xc3, 0xf4, 0x7d, 0xb7, 0xa1, 0x86, 0x52, 0x11, 0xdd, 0x9e, 0xf6, 0x7d, 0x37, 0x8a, + 0xa9, 0x62, 0x93, 0x15, 0x98, 0x62, 0x7c, 0xc2, 0x80, 0x2e, 0xe2, 0x14, 0x3c, 0x97, 0x3c, 0x05, + 0x0f, 0x3b, 0x4d, 0xd9, 0x44, 0x73, 0xd2, 0x57, 0x7e, 0x89, 0xde, 0xfc, 0x6c, 0x16, 0x4e, 0xa7, + 0xa3, 0xe3, 0x7c, 0xb1, 0x4a, 0xd0, 0x33, 0x86, 0xeb, 0x24, 0xcd, 0x71, 0x06, 0xe1, 0xce, 0xff, + 0x69, 0xad, 0xcd, 0xa6, 0xb6, 0xf6, 0x15, 0x98, 0x45, 0x46, 0x42, 0xee, 0x68, 0x39, 0x7e, 0x20, + 0x7c, 0xda, 0xcd, 0x19, 0x56, 0xc0, 0x37, 0xb8, 0x75, 0x06, 0x26, 0x2f, 0xc1, 0xb4, 0xdc, 0xa2, + 0xdc, 0x87, 0x1d, 0x56, 0x31, 0xdf, 0x9f, 0xa6, 0x04, 0x74, 0x13, 0x81, 0xe4, 0x14, 0x8c, 0x5a, + 0xdd, 0x2e, 0xab, 0x92, 0x6f, 0x4b, 0x23, 0x56, 0xb7, 0x5b, 0xb5, 0xc9, 0x05, 0x98, 0x42, 0x3f, + 0xa0, 0xc6, 0x2e, 0x5a, 0x60, 0x08, 0xcb, 0x2b, 0x73, 0x12, 0x81, 0xdc, 0x2a, 0xc3, 0x67, 0x1f, + 0x02, 0xa3, 0x95, 0x28, 0x63, 0x88, 0x02, 0x56, 0x57, 0x22, 0x88, 0x91, 0xf9, 0x2c, 0xcc, 0x88, + 0xd3, 0x52, 0xec, 0xf0, 0x48, 0x29, 0xd6, 0x1f, 0x13, 0x63, 0x45, 0xa8, 0x69, 0x10, 0xa0, 0xaa, + 0x2d, 0x29, 0x7f, 0x2f, 0x03, 0xa7, 0x52, 0x8f, 0x5b, 0xf2, 0x55, 0xe0, 0x6e, 0x11, 0x81, 0xdb, + 0xf0, 0x68, 0xd3, 0xe9, 0x3a, 0xe8, 0x38, 0xce, 0x95, 0x4c, 0xcb, 0x83, 0x0e, 0x6a, 0x74, 0xb1, + 0xd8, 0x72, 0xcd, 0x90, 0x88, 0xdf, 0x93, 0x8b, 0x5e, 0x0c, 0xbc, 0xf8, 0x01, 0x9c, 0x4a, 0x45, + 0x4d, 0xb9, 0xbf, 0xbe, 0xa6, 0x67, 0xe4, 0x92, 0xaf, 0x06, 0xb1, 0x4e, 0x2b, 0xf7, 0x5a, 0xd1, + 0xbd, 0xdf, 0x0c, 0xbb, 0x17, 0x3b, 0x98, 0xc9, 0x6a, 0x7c, 0x59, 0xa6, 0xc9, 0x96, 0x92, 0xa8, + 0xef, 0xca, 0x24, 0x1f, 0xc0, 0x29, 0xb1, 0x54, 0xf6, 0x3c, 0xab, 0xbb, 0x1f, 0xb1, 0xe3, 0x0d, + 0x7d, 0x39, 0x8d, 0x1d, 0x5f, 0x43, 0xb7, 0x18, 0x7e, 0xc8, 0x75, 0xce, 0x4a, 0x02, 0x45, 0x1f, + 0x3c, 0x79, 0xe8, 0xa7, 0xb4, 0x26, 0x65, 0x0d, 0x66, 0xd2, 0xd6, 0xe0, 0xd0, 0x1f, 0x80, 0xa8, + 0xf3, 0x87, 0x32, 0x70, 0xfe, 0xb8, 0x36, 0x93, 0x6d, 0x38, 0x8d, 0x0f, 0xca, 0xbe, 0x1b, 0x76, + 0xbb, 0xd1, 0xb4, 0x9a, 0xfb, 0x54, 0xac, 0x12, 0x23, 0xb5, 0xf3, 0xdd, 0x6e, 0xbd, 0xbe, 0xa9, + 0xf4, 0xbb, 0xdb, 0xad, 0xfb, 0xae, 0xfc, 0x5d, 0x66, 0xe4, 0xa2, 0x0d, 0x36, 0x3c, 0x3b, 0x80, + 0x52, 0xf9, 0xac, 0x32, 0xea, 0x67, 0x75, 0x09, 0x8a, 0xbb, 0xd4, 0xa6, 0x1e, 0x7a, 0x5e, 0xb0, + 0xa6, 0x3d, 0x58, 0xe6, 0x69, 0xed, 0xcc, 0xe9, 0x10, 0x5e, 0xf7, 0xdd, 0xfb, 0xcb, 0xa2, 0x96, + 0xb6, 0xdc, 0x21, 0x55, 0x11, 0x8c, 0x5c, 0x81, 0xb9, 0x98, 0x13, 0x7c, 0xe4, 0x55, 0x69, 0xce, + 0xb2, 0x22, 0x3d, 0x64, 0xca, 0x0b, 0x30, 0x29, 0xa7, 0xc1, 0x0b, 0x7d, 0x33, 0xcc, 0x09, 0x01, + 0x63, 0xab, 0x5c, 0x54, 0xf7, 0xb7, 0xb3, 0x52, 0x64, 0x5a, 0x71, 0xdd, 0xc0, 0x0f, 0x3c, 0xab, + 0xab, 0xdd, 0x8b, 0x48, 0x1b, 0xce, 0xba, 0x56, 0x2f, 0xd8, 0x5f, 0x6e, 0xb0, 0x7f, 0x5d, 0x4f, + 0x3a, 0x4a, 0x36, 0xa5, 0x89, 0xd9, 0xc4, 0xf2, 0x55, 0x7d, 0xeb, 0x2c, 0x31, 0xec, 0x92, 0x8a, + 0xcc, 0x4e, 0x78, 0x85, 0xeb, 0xda, 0x33, 0xe6, 0x19, 0xce, 0x33, 0x81, 0x45, 0xd6, 0x40, 0x4b, + 0xa2, 0x9e, 0x7a, 0x31, 0x52, 0x12, 0x9e, 0xeb, 0x5c, 0x27, 0x76, 0x94, 0x8c, 0xeb, 0xef, 0xc2, + 0xb8, 0x63, 0x8b, 0xc0, 0x6c, 0xe2, 0x7a, 0xa4, 0x8b, 0xe4, 0x55, 0x9b, 0xc7, 0x69, 0x8b, 0x78, + 0xb0, 0xbb, 0x95, 0x23, 0xa0, 0x2b, 0x53, 0xda, 0x0d, 0xd2, 0x58, 0x91, 0xa7, 0x73, 0x92, 0x8c, + 0x4c, 0x43, 0x36, 0x9c, 0xf6, 0xac, 0x63, 0x93, 0xd3, 0x30, 0xea, 0x2b, 0x91, 0xe2, 0x4c, 0xf1, + 0xcb, 0xf8, 0x73, 0x70, 0x69, 0xd8, 0x31, 0x22, 0xaf, 0x03, 0xe9, 0x33, 0xe0, 0xe3, 0xe6, 0xac, + 0x95, 0x18, 0xb7, 0x17, 0x40, 0x0d, 0x75, 0xe5, 0xc8, 0x09, 0x97, 0xb0, 0x7b, 0x9e, 0x63, 0xbc, + 0x03, 0xd3, 0xfa, 0x95, 0x99, 0xbc, 0x0a, 0xf9, 0x90, 0xeb, 0x74, 0xa8, 0xda, 0x55, 0x91, 0x18, + 0x6f, 0x13, 0x91, 0x8c, 0x7f, 0x91, 0x85, 0xb9, 0x94, 0x8b, 0x33, 0xf9, 0x00, 0xe6, 0xe4, 0x02, + 0xe1, 0x1b, 0x0f, 0x9f, 0x38, 0xbe, 0x34, 0x2e, 0xa7, 0x2d, 0x0d, 0x44, 0x4b, 0x99, 0xbe, 0x59, + 0xb1, 0x28, 0xa2, 0xf2, 0x3f, 0x3b, 0xcb, 0x81, 0xbc, 0x0f, 0xa7, 0x45, 0x06, 0x56, 0x65, 0x55, + 0x34, 0x3c, 0xba, 0x2b, 0xe4, 0x87, 0x17, 0x12, 0xa3, 0xe7, 0x34, 0x95, 0xe6, 0x98, 0x74, 0x77, + 0xed, 0x19, 0x73, 0xde, 0x4f, 0x81, 0xc7, 0x57, 0xda, 0xdf, 0xc9, 0x80, 0x71, 0xfc, 0x78, 0xa1, + 0xc4, 0x1b, 0x1f, 0x70, 0x26, 0xf1, 0x2a, 0xa3, 0x77, 0x01, 0xa6, 0x3c, 0xba, 0xeb, 0x51, 0x7f, + 0x5f, 0x19, 0xbe, 0x71, 0x73, 0x52, 0x00, 0xe5, 0xc0, 0x48, 0x5f, 0xef, 0x21, 0x14, 0xe5, 0x85, + 0xef, 0x1c, 0x2d, 0x3d, 0xc3, 0x55, 0x9c, 0x82, 0xc8, 0xb8, 0x19, 0x6e, 0x20, 0xa9, 0xf3, 0x40, + 0xe6, 0x61, 0x44, 0x6d, 0x20, 0xff, 0x71, 0x3b, 0x5f, 0xc8, 0x16, 0x73, 0xa6, 0xf0, 0x48, 0xdf, + 0x75, 0x5a, 0xd4, 0xf8, 0xbb, 0x19, 0x58, 0xec, 0x3f, 0x78, 0xe4, 0x03, 0xe5, 0xa9, 0x27, 0xc7, + 0x03, 0x72, 0x1d, 0x33, 0xde, 0xaa, 0x56, 0x5c, 0x38, 0x49, 0xc7, 0x93, 0x8f, 0x0a, 0x96, 0x1f, + 0x47, 0x5f, 0xfd, 0xa6, 0xd4, 0x14, 0x31, 0x19, 0xec, 0xfe, 0x35, 0x72, 0x19, 0xc6, 0xb8, 0x72, + 0x48, 0x36, 0x74, 0x46, 0x6b, 0xe8, 0xfd, 0x6b, 0xa6, 0x2c, 0x37, 0xbe, 0x9d, 0x09, 0xaf, 0xcf, + 0xf1, 0xe6, 0xdf, 0xbf, 0x46, 0x3e, 0x33, 0xdc, 0xa3, 0x4d, 0x41, 0x3e, 0xda, 0x84, 0x0f, 0x36, + 0x9f, 0xd5, 0x1e, 0x6c, 0x5e, 0x1c, 0x3c, 0x4e, 0x42, 0x50, 0x8f, 0xa7, 0x87, 0xfb, 0x57, 0x19, + 0x38, 0x37, 0x90, 0x82, 0x3c, 0x07, 0x85, 0x52, 0xad, 0xba, 0x15, 0xcd, 0x2c, 0xfb, 0x5a, 0x24, + 0x84, 0xdc, 0x82, 0xf1, 0x15, 0xcb, 0x77, 0x9a, 0x6c, 0x01, 0xa7, 0x8a, 0x1e, 0x09, 0xb6, 0x21, + 0xfa, 0xda, 0x33, 0x66, 0x44, 0x4b, 0x1a, 0x30, 0x8b, 0x5f, 0x41, 0x22, 0xfd, 0x52, 0xfc, 0xd8, + 0x49, 0x30, 0x4c, 0x90, 0xb1, 0x1d, 0x26, 0x01, 0x8c, 0x7f, 0x7c, 0x0f, 0xa4, 0x9c, 0xd1, 0xbf, + 0x81, 0x27, 0x88, 0x6b, 0x70, 0x09, 0x0a, 0x35, 0x79, 0x85, 0x56, 0xb2, 0x2f, 0xca, 0xeb, 0xb2, + 0x19, 0x96, 0x1a, 0x7f, 0x25, 0x23, 0xcf, 0x86, 0xe3, 0x3b, 0xa2, 0x84, 0x2e, 0xb5, 0x07, 0x87, + 0x2e, 0xb5, 0x3f, 0x62, 0xe8, 0x52, 0xe3, 0x97, 0x44, 0xd4, 0xa1, 0xaa, 0x5d, 0x8b, 0xc5, 0xad, + 0xff, 0xb8, 0x4f, 0xd0, 0xab, 0xda, 0xea, 0xbc, 0xa0, 0xc4, 0x40, 0x4e, 0xd6, 0xd5, 0xff, 0x25, + 0x5a, 0x59, 0xaa, 0xff, 0x22, 0x0b, 0xcf, 0x0d, 0x22, 0x4f, 0x0d, 0xb1, 0x9f, 0x39, 0x59, 0x88, + 0xfd, 0xcb, 0x50, 0xe0, 0x30, 0x3d, 0x55, 0x98, 0x20, 0x65, 0x03, 0x2e, 0x8b, 0xc9, 0x05, 0x18, + 0x2d, 0x95, 0xeb, 0x51, 0xbc, 0x57, 0x7c, 0x33, 0xb1, 0x9a, 0x3e, 0x6a, 0xe3, 0x45, 0x11, 0xf9, + 0x4a, 0x32, 0xc4, 0xb1, 0x08, 0xf4, 0xfa, 0x6c, 0x5a, 0xc2, 0x7f, 0xe9, 0x1f, 0x8e, 0xed, 0x8d, + 0x02, 0x58, 0x89, 0x98, 0x30, 0x66, 0x32, 0x5c, 0xb2, 0x01, 0xa3, 0x35, 0x8f, 0xfa, 0x34, 0x50, + 0xdf, 0x33, 0xba, 0x08, 0x31, 0x45, 0x89, 0x78, 0x6d, 0xb0, 0x0e, 0xb9, 0xa9, 0xf6, 0xa8, 0xea, + 0xc9, 0x82, 0xcf, 0x13, 0x0c, 0x6c, 0x2a, 0x28, 0xc6, 0x37, 0x33, 0x30, 0x9f, 0xd6, 0x2c, 0xf2, + 0x1c, 0xe4, 0x3b, 0xa9, 0xc1, 0x99, 0x3b, 0xdc, 0x60, 0x74, 0x02, 0xd3, 0x34, 0xf1, 0x24, 0xfb, + 0xea, 0x23, 0x8e, 0x02, 0x36, 0x81, 0xfd, 0x10, 0xf9, 0xf7, 0x97, 0xe4, 0x66, 0x9b, 0x4b, 0x84, + 0x73, 0xc6, 0xff, 0x8c, 0x12, 0x40, 0xd5, 0xae, 0x6d, 0x76, 0x79, 0x7c, 0xa9, 0xeb, 0x90, 0x67, + 0xcd, 0x8a, 0x2d, 0x46, 0xb6, 0x1c, 0x4a, 0x77, 0xd7, 0x05, 0x12, 0x6f, 0x15, 0x93, 0x93, 0x4d, + 0x44, 0x36, 0xb6, 0x61, 0x5a, 0xc7, 0x20, 0xab, 0x7a, 0x44, 0x82, 0x28, 0x83, 0xf4, 0x8a, 0xeb, + 0x72, 0x43, 0x82, 0x95, 0xb3, 0xdf, 0x3d, 0x5a, 0x02, 0xf6, 0x93, 0xd3, 0xa4, 0x45, 0x2c, 0x30, + 0x7e, 0x32, 0x0b, 0xf3, 0x91, 0x25, 0xb0, 0xfc, 0x24, 0x9e, 0x5a, 0xeb, 0xb8, 0x92, 0x66, 0xbd, + 0xb5, 0x94, 0x48, 0xd2, 0x2a, 0x3b, 0x38, 0xc0, 0x68, 0xe4, 0x16, 0x2c, 0xf4, 0xc3, 0x27, 0xaf, + 0x26, 0xd2, 0x28, 0x0a, 0x8f, 0xb5, 0x30, 0xdf, 0xa2, 0x92, 0x55, 0xf1, 0x9f, 0x64, 0x60, 0x51, + 0x3c, 0x7f, 0xdf, 0xb5, 0x9c, 0x0e, 0xa6, 0x8e, 0x6e, 0xd2, 0x27, 0x63, 0x56, 0x79, 0x4b, 0xdb, + 0x96, 0x5e, 0xd2, 0xad, 0x1c, 0x12, 0xb5, 0xf5, 0xef, 0x2d, 0xb9, 0x8c, 0xbe, 0x89, 0x4d, 0xbe, + 0x78, 0xf3, 0xdc, 0x8c, 0xbd, 0xc3, 0x00, 0xaa, 0x19, 0x3b, 0x62, 0x18, 0x7f, 0x01, 0x9e, 0x1f, + 0x5c, 0x01, 0xf9, 0x32, 0x4c, 0x95, 0xf6, 0x68, 0x27, 0xb8, 0xd7, 0xdd, 0xf3, 0x2c, 0x9b, 0x4a, + 0xa5, 0x80, 0xd4, 0xd5, 0xab, 0x65, 0xdc, 0x1f, 0x53, 0x98, 0x55, 0x33, 0x78, 0xa3, 0x27, 0x88, + 0x34, 0x1b, 0x13, 0x95, 0x9b, 0xf1, 0x8d, 0x0c, 0x90, 0x24, 0x0f, 0x72, 0x03, 0x26, 0xef, 0x6d, + 0x95, 0xeb, 0x81, 0xe5, 0x05, 0x6b, 0x6e, 0xcf, 0x13, 0x7e, 0x8e, 0xdc, 0xca, 0x36, 0x68, 0xb2, + 0x9d, 0xc1, 0x0b, 0x1a, 0xfb, 0x6e, 0xcf, 0x33, 0x35, 0x3c, 0x0c, 0x1a, 0x4a, 0xe9, 0x81, 0x6d, + 0x1d, 0xea, 0x41, 0x43, 0x05, 0x4c, 0x0b, 0x1a, 0x2a, 0x60, 0xc6, 0xdf, 0xca, 0xc0, 0xb3, 0x52, + 0x6f, 0x6e, 0xa7, 0xb4, 0xa5, 0x8c, 0xbe, 0x24, 0x9e, 0x8c, 0xf3, 0x30, 0x48, 0x36, 0x9d, 0x95, + 0xee, 0x56, 0xd8, 0x40, 0x14, 0x52, 0x39, 0x2d, 0xe6, 0xcd, 0x0f, 0xdc, 0xee, 0x10, 0xfe, 0x56, + 0xc5, 0x70, 0x46, 0x03, 0xb7, 0x8b, 0x2c, 0x90, 0xd2, 0xa0, 0x30, 0xaf, 0x36, 0x4e, 0xb6, 0x98, + 0xdc, 0x85, 0x31, 0xe1, 0x08, 0x1b, 0xd3, 0x31, 0x0c, 0xe8, 0xd3, 0xca, 0x8c, 0x74, 0xea, 0x12, + 0x71, 0x06, 0x4c, 0xc9, 0xc3, 0xf8, 0x89, 0x0c, 0x4c, 0x30, 0xe1, 0x01, 0x43, 0xef, 0x7c, 0xdc, + 0x25, 0xad, 0xcb, 0x81, 0x52, 0x45, 0x15, 0xb2, 0x1f, 0xea, 0x70, 0x7d, 0x03, 0x66, 0x62, 0x04, + 0xc4, 0x40, 0x73, 0xfe, 0x96, 0xc3, 0x33, 0x90, 0x4b, 0xfd, 0x8e, 0x06, 0x33, 0xfe, 0x8d, 0x0c, + 0xcc, 0x6f, 0x1e, 0x04, 0x56, 0xb5, 0xdd, 0x75, 0xbd, 0xc0, 0xec, 0xb5, 0xe4, 0xf7, 0xce, 0x04, + 0x22, 0xf9, 0x00, 0xc3, 0x6d, 0x8d, 0xb9, 0x40, 0x24, 0x60, 0x66, 0x58, 0x4a, 0xd6, 0xa0, 0x20, + 0xce, 0x17, 0x5f, 0x84, 0x07, 0x90, 0xef, 0x87, 0x3a, 0x63, 0x81, 0xc4, 0x7a, 0x82, 0x5b, 0x98, + 0xa0, 0x31, 0x43, 0x6a, 0xe3, 0x8f, 0x33, 0x70, 0xa6, 0x0f, 0x0d, 0x79, 0x07, 0x46, 0xd0, 0x70, + 0x4b, 0xcc, 0xde, 0x73, 0x7d, 0xaa, 0x08, 0x9a, 0xfb, 0xf7, 0xaf, 0xf1, 0x83, 0xa8, 0xcd, 0x7e, + 0x98, 0x9c, 0x8a, 0x7c, 0x00, 0xe3, 0x25, 0xdb, 0x16, 0xf7, 0x92, 0xac, 0x76, 0x2f, 0xe9, 0x53, + 0xe3, 0x95, 0x10, 0x9f, 0xdf, 0x4b, 0xb8, 0x09, 0x81, 0x6d, 0x37, 0x84, 0x51, 0x5a, 0xc4, 0x6f, + 0xf1, 0x6d, 0x98, 0xd6, 0x91, 0x4f, 0x74, 0x2f, 0xf9, 0x76, 0x06, 0x8a, 0x7a, 0x1b, 0x3e, 0x19, + 0x77, 0xb4, 0xb4, 0x69, 0x3e, 0x66, 0x51, 0xfd, 0x74, 0x16, 0x4e, 0xa5, 0x8e, 0x30, 0x79, 0x1d, + 0x46, 0x4b, 0xdd, 0x6e, 0xb5, 0x22, 0x56, 0x95, 0x10, 0x78, 0x50, 0xab, 0xa6, 0x5d, 0xdb, 0x38, + 0x12, 0xb9, 0x0e, 0x05, 0x5c, 0x99, 0x8c, 0x20, 0x1b, 0x39, 0xea, 0x73, 0x35, 0x76, 0xcc, 0x51, + 0x5f, 0x22, 0x92, 0x9b, 0x30, 0x2d, 0x3c, 0x53, 0x4c, 0xba, 0x47, 0x1f, 0x85, 0x11, 0xa3, 0x30, + 0xa8, 0x95, 0xf4, 0x63, 0x69, 0x78, 0xbc, 0x4c, 0xf5, 0xcd, 0xd0, 0xa9, 0x30, 0xad, 0x27, 0xe3, + 0xa9, 0x72, 0xe2, 0xd1, 0x02, 0x78, 0x5a, 0x4f, 0x6c, 0x44, 0x1f, 0x5e, 0x09, 0xca, 0x70, 0xba, + 0x4a, 0xbe, 0xef, 0xec, 0x75, 0xda, 0xb4, 0x13, 0x7c, 0x72, 0xd3, 0x15, 0xd5, 0x31, 0xd4, 0x74, + 0x7d, 0x2b, 0xcf, 0x3f, 0xe6, 0x38, 0xd9, 0x31, 0x99, 0xab, 0x2b, 0x30, 0xc6, 0x7d, 0x62, 0xe4, + 0x97, 0x71, 0x2e, 0xb5, 0x09, 0x1c, 0xe7, 0xfe, 0x35, 0x2e, 0xbe, 0x70, 0x0b, 0x32, 0xdf, 0x94, + 0xa4, 0xe4, 0x3e, 0x4c, 0x94, 0x5b, 0xd4, 0xea, 0xf4, 0xba, 0x6c, 0x93, 0x1e, 0x42, 0x43, 0xb1, + 0x20, 0xfa, 0x32, 0xd9, 0xe4, 0x64, 0x8d, 0xc0, 0x69, 0x53, 0xdc, 0xc9, 0x55, 0x46, 0x64, 0x2b, + 0x34, 0x2a, 0xc9, 0xa3, 0xf2, 0xeb, 0x53, 0x03, 0xc6, 0x27, 0x0e, 0x44, 0x3a, 0xdd, 0x62, 0x4a, + 0x58, 0x9d, 0x34, 0x60, 0x7a, 0xdd, 0xf2, 0x83, 0x2d, 0xcf, 0xea, 0xf8, 0xe8, 0xd6, 0x3e, 0x84, + 0xaf, 0xa1, 0xcc, 0x9e, 0x35, 0x83, 0xbe, 0x24, 0x41, 0x48, 0x8a, 0x6d, 0x8e, 0xb1, 0x63, 0xf2, + 0xd2, 0x4d, 0xa7, 0x63, 0xb5, 0x9c, 0xaf, 0x4b, 0xdb, 0x3b, 0x2e, 0x2f, 0xed, 0x4a, 0xa0, 0x19, + 0x95, 0x1b, 0x5f, 0x4a, 0xcc, 0x1b, 0x6f, 0xe5, 0x04, 0x8c, 0x09, 0x73, 0x6b, 0x6e, 0x7e, 0x5c, + 0x5b, 0xdd, 0xa8, 0x54, 0x37, 0x6e, 0x15, 0x33, 0x64, 0x1a, 0xa0, 0x66, 0x6e, 0x96, 0x57, 0xeb, + 0x75, 0xf6, 0x3b, 0xcb, 0x7e, 0x0b, 0xdb, 0xe4, 0x9b, 0xf7, 0xd6, 0x8b, 0x39, 0xc5, 0x3c, 0x39, + 0x6f, 0xfc, 0xe3, 0x0c, 0x9c, 0x4e, 0x9f, 0x4a, 0xb2, 0x05, 0x68, 0xa0, 0x2e, 0xf4, 0x8a, 0x37, + 0x06, 0xce, 0x7b, 0x2a, 0x38, 0x6e, 0xe8, 0x1e, 0x70, 0x03, 0xea, 0xac, 0x7c, 0x25, 0x88, 0x52, + 0x48, 0x39, 0xb6, 0x51, 0x86, 0x85, 0x7e, 0x3c, 0xf4, 0xae, 0xce, 0xc0, 0x44, 0xa9, 0x56, 0x5b, + 0xaf, 0x96, 0x4b, 0x5b, 0xd5, 0xcd, 0x8d, 0x62, 0x86, 0x8c, 0xc3, 0xc8, 0x2d, 0x73, 0xf3, 0x5e, + 0xad, 0x98, 0x35, 0xfe, 0x6a, 0x06, 0xa6, 0xaa, 0x9d, 0x80, 0xee, 0xf1, 0x78, 0xd5, 0x1f, 0xf7, + 0xe3, 0xfb, 0x9c, 0xf6, 0xf1, 0x2d, 0x84, 0xae, 0x1c, 0x61, 0x05, 0x43, 0x7d, 0x79, 0xff, 0x34, + 0x03, 0xb3, 0x09, 0x1a, 0x52, 0x87, 0xb1, 0xd2, 0x76, 0x7d, 0xb3, 0x5a, 0x29, 0x8b, 0x96, 0x49, + 0xa9, 0x5c, 0x40, 0x93, 0xb5, 0x70, 0x4b, 0xc9, 0x87, 0x7e, 0xc3, 0x75, 0x6c, 0x25, 0x06, 0xfe, + 0xda, 0x33, 0xa6, 0xe4, 0x84, 0x27, 0xd9, 0xd7, 0x7b, 0x1e, 0x45, 0xb6, 0x59, 0x4d, 0xa3, 0x19, + 0xc2, 0x93, 0x8c, 0x79, 0x4e, 0x6b, 0x56, 0x9e, 0x64, 0x1d, 0xf1, 0x5b, 0x99, 0x82, 0x09, 0x71, + 0x6b, 0xc1, 0x0b, 0xc1, 0x8f, 0x65, 0x60, 0xa1, 0x5f, 0x5b, 0xd9, 0x45, 0x48, 0x37, 0x9b, 0x3e, + 0x1d, 0x06, 0x44, 0xd3, 0xed, 0xa5, 0x25, 0x1a, 0x79, 0x07, 0x26, 0x78, 0x32, 0xbd, 0xfa, 0xf5, + 0x7b, 0x66, 0x55, 0x2c, 0x10, 0xf4, 0x68, 0x14, 0x79, 0xbf, 0xfd, 0xeb, 0xb1, 0x24, 0xd0, 0x2a, + 0xbe, 0xf1, 0x23, 0x19, 0x58, 0xec, 0xdf, 0x45, 0x76, 0xc6, 0x6c, 0x31, 0xc9, 0x3c, 0xb2, 0x3b, + 0xc5, 0x33, 0x06, 0xa5, 0xf5, 0x98, 0xe1, 0x69, 0x88, 0xc8, 0x88, 0x62, 0xa9, 0xc5, 0xd5, 0x94, + 0x12, 0x3a, 0x91, 0x44, 0x34, 0xfe, 0xed, 0x2c, 0x9c, 0x66, 0xcb, 0xa7, 0x45, 0x7d, 0xbf, 0xd4, + 0x0b, 0xf6, 0x69, 0x27, 0x10, 0x02, 0x15, 0xf9, 0x0c, 0x8c, 0xee, 0x9f, 0x4c, 0x17, 0xc8, 0xd1, + 0x09, 0x01, 0xdc, 0x92, 0xa5, 0x61, 0x00, 0xfb, 0x9b, 0x9c, 0x03, 0x25, 0x85, 0x07, 0xee, 0xa8, + 0x93, 0xe6, 0x78, 0x37, 0x4c, 0xe4, 0xf1, 0x59, 0x18, 0xc1, 0xbb, 0xbf, 0xd8, 0x18, 0xa5, 0x40, + 0x9b, 0xde, 0x32, 0xd4, 0x0c, 0x98, 0x9c, 0x80, 0x5c, 0x05, 0x88, 0xc2, 0x6e, 0x89, 0x9d, 0x4f, + 0x5e, 0xa2, 0xc3, 0xc8, 0x5b, 0xe6, 0x78, 0x7b, 0xd7, 0x12, 0xb1, 0xac, 0x5e, 0x81, 0x59, 0x39, + 0x24, 0x5d, 0xe9, 0x58, 0xcc, 0x35, 0x11, 0xe6, 0x0c, 0x2f, 0xa8, 0x76, 0x85, 0x73, 0xb1, 0xf1, + 0x3f, 0x64, 0x61, 0x7c, 0x9b, 0x89, 0x09, 0x78, 0xf9, 0x1d, 0x7c, 0x99, 0x5e, 0x86, 0x89, 0x75, + 0xf7, 0xff, 0xa1, 0xee, 0xea, 0x76, 0xe3, 0x48, 0xaa, 0xbf, 0x7b, 0x66, 0xec, 0xb5, 0x8f, 0xed, + 0xb8, 0x5d, 0xf1, 0x26, 0xfe, 0x3b, 0x8e, 0x37, 0x7f, 0x6b, 0x89, 0x48, 0xc3, 0x06, 0x16, 0x58, + 0x81, 0x17, 0x2d, 0xab, 0xf6, 0x4c, 0x8d, 0x67, 0xe2, 0xfe, 0x4a, 0x57, 0x4f, 0xbc, 0x09, 0x1f, + 0xad, 0x89, 0xdd, 0x71, 0x06, 0x26, 0x3d, 0xde, 0x99, 0xf1, 0x86, 0x70, 0xc7, 0x0d, 0x37, 0x08, + 0x09, 0xf1, 0x02, 0xdc, 0xec, 0x0d, 0xcf, 0xc0, 0x0b, 0xac, 0x84, 0x90, 0xf6, 0x1e, 0x09, 0x41, + 0xde, 0x81, 0x9b, 0xbd, 0x42, 0x75, 0xaa, 0xaa, 0xbb, 0xba, 0xc7, 0xe3, 0xb5, 0xb3, 0x11, 0x88, + 0x3b, 0xcf, 0x39, 0xa7, 0xca, 0xd5, 0xf5, 0x7d, 0xea, 0x9c, 0xf3, 0x3b, 0x5d, 0xf9, 0x72, 0x3f, + 0x92, 0xd8, 0x06, 0xe8, 0x7c, 0xd9, 0x1f, 0x74, 0x95, 0x11, 0x60, 0x14, 0xea, 0x42, 0x5f, 0xe2, + 0x38, 0x7a, 0x0f, 0xe6, 0x84, 0x85, 0x5b, 0x3e, 0xd3, 0xa8, 0x8b, 0x62, 0xd6, 0xa2, 0xbb, 0x82, + 0xad, 0x3d, 0x36, 0x0b, 0x1b, 0xb9, 0x7e, 0x6b, 0x91, 0xd0, 0x06, 0x9a, 0xaa, 0x3f, 0x7b, 0x31, + 0x55, 0x5f, 0x0b, 0xe1, 0x9c, 0xbb, 0x48, 0x08, 0xe7, 0xc6, 0x0e, 0x2c, 0x6a, 0xed, 0xb9, 0xd4, + 0xbd, 0xf1, 0xd7, 0x15, 0x58, 0xc6, 0xaf, 0xca, 0xac, 0x44, 0xff, 0x9b, 0x0f, 0x17, 0xef, 0x17, + 0x1e, 0x2e, 0xd6, 0xf5, 0xf1, 0x12, 0x5f, 0x76, 0xce, 0x8b, 0xc5, 0x3d, 0x58, 0x9d, 0x10, 0x24, + 0xef, 0xc1, 0x2c, 0x6f, 0xbe, 0x52, 0xf4, 0xcc, 0xf2, 0x0c, 0xc8, 0xe1, 0x3e, 0xf8, 0x87, 0x8f, + 0x42, 0x21, 0xbd, 0xfd, 0x2f, 0x03, 0x96, 0x24, 0x0e, 0x5b, 0xfa, 0x64, 0xf0, 0xa5, 0xdd, 0x79, + 0xbb, 0xdc, 0x9d, 0x22, 0x0c, 0x42, 0x76, 0xe7, 0x7f, 0xba, 0x13, 0x77, 0x0a, 0x9d, 0x78, 0x3d, + 0x0b, 0xfe, 0x55, 0x9f, 0x73, 0x4e, 0x1f, 0xfe, 0x19, 0xe1, 0x30, 0x8a, 0x82, 0xe4, 0x67, 0xb0, + 0xe0, 0x25, 0xcf, 0x0b, 0xfa, 0xd2, 0xed, 0x29, 0x95, 0xde, 0xcd, 0x04, 0xc5, 0x9a, 0xc2, 0xa3, + 0x26, 0x4d, 0x9e, 0xc7, 0x13, 0x46, 0x9c, 0xbc, 0x4a, 0xae, 0x32, 0x15, 0x8b, 0x5d, 0x66, 0xea, + 0x4b, 0x67, 0x3c, 0x8c, 0xec, 0xf9, 0x53, 0x15, 0x20, 0xf7, 0x63, 0xe2, 0x0b, 0x30, 0x29, 0xa0, + 0x95, 0xca, 0x97, 0x63, 0x24, 0xe9, 0x73, 0x5c, 0x92, 0xc8, 0x6d, 0xf9, 0x24, 0x5a, 0x99, 0x1e, + 0x9c, 0x8d, 0x8f, 0xa3, 0x75, 0xe9, 0x27, 0x74, 0x94, 0xf4, 0xbb, 0x62, 0x2f, 0xae, 0x62, 0xc2, + 0xfc, 0xb5, 0x9c, 0x3a, 0x25, 0xa1, 0x06, 0x7a, 0x13, 0x35, 0xb8, 0xc0, 0x84, 0x6f, 0x60, 0xed, + 0xd5, 0x7d, 0x03, 0x67, 0x5f, 0xc1, 0x37, 0x70, 0xee, 0x82, 0xbe, 0x81, 0x01, 0x2c, 0xf4, 0xd2, + 0x4f, 0x92, 0x74, 0x3c, 0x18, 0xbe, 0x40, 0xcf, 0xa1, 0xfc, 0x21, 0x8b, 0x77, 0x75, 0x5b, 0xf1, + 0xc4, 0x78, 0xe3, 0x81, 0x99, 0xc9, 0xeb, 0xc3, 0x9d, 0x11, 0xa5, 0x0b, 0xc3, 0x17, 0x15, 0x20, + 0x93, 0x15, 0x90, 0xf7, 0x61, 0x51, 0x6c, 0xc1, 0xf1, 0x70, 0xf4, 0xb1, 0x74, 0x2c, 0x13, 0x11, + 0x54, 0x1a, 0x59, 0x8f, 0xa0, 0x12, 0xe4, 0x70, 0xf4, 0x71, 0x9f, 0xfc, 0x14, 0xae, 0xe2, 0x00, + 0x9c, 0x24, 0xc3, 0xde, 0xe0, 0x28, 0x46, 0xf0, 0x88, 0x6e, 0x5f, 0xc2, 0x63, 0xbf, 0x83, 0x79, + 0x1c, 0x26, 0xd9, 0x53, 0x06, 0x0a, 0xfd, 0xb7, 0x02, 0x94, 0x0c, 0x84, 0x20, 0x89, 0xc0, 0xd4, + 0xcb, 0x3f, 0x39, 0xed, 0xf7, 0xe5, 0xd8, 0x5b, 0x98, 0xe4, 0xb6, 0xc4, 0x9b, 0x52, 0xf1, 0x95, + 0xbc, 0xe2, 0xe6, 0x69, 0xbf, 0x4f, 0xbe, 0x0f, 0x30, 0x48, 0xe3, 0x67, 0xbd, 0xd1, 0x48, 0x98, + 0x13, 0x32, 0xdf, 0xcb, 0x9c, 0xaa, 0x77, 0xe3, 0x20, 0x75, 0x05, 0x91, 0x7c, 0x0f, 0xd0, 0xf1, + 0x1a, 0x23, 0x12, 0x70, 0x06, 0xcc, 0x4a, 0xc0, 0x3b, 0x45, 0x2c, 0x0e, 0xe7, 0x71, 0xc2, 0x7a, + 0xbf, 0x52, 0xfe, 0x23, 0x8f, 0x60, 0x55, 0x46, 0x5c, 0x1d, 0xf4, 0xc6, 0x4f, 0xe5, 0xed, 0xf7, + 0xab, 0x5c, 0x9d, 0xb5, 0xeb, 0xef, 0xdf, 0x6a, 0x00, 0xf6, 0x01, 0x53, 0xc1, 0x7e, 0x77, 0x60, + 0x96, 0xdf, 0xe9, 0xd5, 0xdb, 0x00, 0xbe, 0xac, 0x62, 0xbd, 0xfa, 0xcb, 0x2a, 0x4a, 0xf0, 0xf5, + 0x1a, 0x26, 0xc7, 0xf8, 0x3c, 0x55, 0xc9, 0x1f, 0x12, 0x86, 0x82, 0x54, 0xb8, 0x43, 0x0a, 0x12, + 0x71, 0x00, 0xf2, 0xf0, 0x3b, 0xa9, 0x65, 0xae, 0xe6, 0x71, 0x2c, 0x92, 0x21, 0x91, 0xcc, 0xf2, + 0x10, 0x3e, 0x7d, 0xfa, 0xe4, 0x62, 0x64, 0x1f, 0x6a, 0x51, 0x37, 0xf3, 0x2c, 0x9c, 0x12, 0x94, + 0x78, 0x4b, 0xc2, 0x97, 0xe7, 0x81, 0x89, 0x57, 0xc6, 0xdd, 0x42, 0x96, 0x07, 0xac, 0x84, 0x50, + 0x98, 0x93, 0xa9, 0x69, 0xa6, 0x44, 0xa8, 0xcb, 0xcc, 0x34, 0x12, 0x10, 0x06, 0x89, 0xfa, 0xad, + 0x43, 0x26, 0xa1, 0xf9, 0x0e, 0x54, 0x19, 0x73, 0xa5, 0x2b, 0xfe, 0x72, 0xae, 0x31, 0x30, 0xe6, + 0xaa, 0xf4, 0x5b, 0xcf, 0xb4, 0x62, 0x5c, 0x98, 0xfc, 0x10, 0x16, 0xb5, 0x0b, 0xb1, 0x0c, 0x62, + 0xc1, 0x3e, 0xe8, 0xe5, 0xe4, 0xc2, 0xbd, 0x3a, 0x27, 0x13, 0x07, 0xcc, 0xfd, 0xd3, 0xc7, 0x89, + 0x7d, 0x72, 0x82, 0x5e, 0x71, 0x9f, 0x24, 0x43, 0x81, 0xb2, 0x36, 0x9f, 0x63, 0xa9, 0xc4, 0xdd, + 0x93, 0x93, 0xf8, 0x48, 0x71, 0xf5, 0xf7, 0x91, 0x72, 0x49, 0x12, 0xc0, 0x2a, 0x4b, 0xc6, 0xa7, + 0x27, 0xc2, 0x19, 0xa2, 0x39, 0x18, 0x72, 0x05, 0x41, 0x84, 0xbc, 0x20, 0xec, 0xc4, 0x88, 0x33, + 0x95, 0x07, 0xca, 0x93, 0xc1, 0xb0, 0xa4, 0x2c, 0x4c, 0x16, 0xde, 0x4e, 0xf4, 0x21, 0xe7, 0xe7, + 0x6e, 0x51, 0xed, 0xc0, 0x73, 0x57, 0xa9, 0x1d, 0xb9, 0xb2, 0xf1, 0xad, 0x33, 0xc2, 0x32, 0xd1, + 0x98, 0xa5, 0x85, 0x65, 0x16, 0x82, 0x31, 0x3f, 0xad, 0x69, 0xe1, 0xfe, 0x72, 0x2c, 0x3e, 0x00, + 0xb8, 0x37, 0xe8, 0xa5, 0x6e, 0x32, 0x7e, 0x3a, 0x38, 0xd2, 0xa2, 0x43, 0x17, 0x7f, 0x3e, 0xe8, + 0xa5, 0xf1, 0x33, 0x24, 0x7f, 0xf1, 0xf7, 0xb7, 0x34, 0xa1, 0x50, 0xfb, 0x9b, 0x7c, 0x13, 0x16, + 0xf8, 0xaf, 0x28, 0x77, 0xe9, 0x10, 0xcf, 0x88, 0x58, 0x5a, 0xa6, 0xf1, 0xcb, 0x04, 0xc8, 0x0e, + 0x42, 0x21, 0xf6, 0x4e, 0xc6, 0xda, 0xf5, 0x56, 0xe1, 0x1e, 0xf6, 0x4e, 0xc6, 0x65, 0xe8, 0x14, + 0x4d, 0x98, 0xb4, 0xb2, 0xa6, 0x2b, 0x30, 0x4d, 0x89, 0xb8, 0x88, 0x6f, 0x65, 0x72, 0xae, 0xc5, + 0x0a, 0x7a, 0x53, 0x4f, 0x7b, 0x50, 0x2a, 0x86, 0x8d, 0x60, 0xad, 0x86, 0x30, 0x6e, 0xc8, 0x53, + 0x46, 0x34, 0x62, 0xf4, 0xf4, 0x28, 0x3e, 0x44, 0x72, 0xa1, 0x11, 0x99, 0x30, 0xd9, 0x85, 0x15, + 0x11, 0xc3, 0x94, 0x81, 0x72, 0xcb, 0x13, 0x07, 0xf7, 0xb6, 0x1c, 0xb5, 0x5b, 0xff, 0xf7, 0xa5, + 0x02, 0xa4, 0x09, 0xb3, 0xa8, 0xe2, 0xc9, 0x40, 0x92, 0x1b, 0xba, 0x66, 0x5b, 0x5e, 0x47, 0xb8, + 0xaf, 0xa0, 0x4e, 0xab, 0xef, 0x2b, 0x28, 0x4a, 0x3e, 0x02, 0xa0, 0xe9, 0x70, 0xd0, 0xef, 0x23, + 0xaa, 0xc8, 0x3c, 0x2a, 0x48, 0x37, 0x8b, 0xeb, 0x11, 0x6b, 0xc9, 0x85, 0x54, 0x02, 0x76, 0xfe, + 0x3b, 0x2e, 0x61, 0x8f, 0x68, 0x75, 0x6d, 0xb7, 0x61, 0x4e, 0x2c, 0x46, 0x44, 0xe8, 0x91, 0xf0, + 0x7f, 0x1a, 0xbe, 0x8b, 0x40, 0xe8, 0x91, 0xf4, 0x49, 0x84, 0x1e, 0xad, 0xc0, 0xf6, 0x3e, 0xac, + 0x9d, 0xf5, 0x61, 0x05, 0xa5, 0xd4, 0xb8, 0xa8, 0x52, 0xfa, 0xc7, 0x2a, 0x2c, 0x61, 0x6d, 0x6a, + 0x17, 0xb6, 0x61, 0x99, 0x9d, 0x3e, 0xce, 0x02, 0xee, 0xd4, 0x6e, 0x2c, 0x72, 0xdf, 0xeb, 0x0c, + 0xdd, 0xec, 0x54, 0x28, 0x41, 0x28, 0x5c, 0x51, 0x27, 0x81, 0x4c, 0x4b, 0x50, 0xc9, 0xc1, 0x71, + 0x54, 0x28, 0xf8, 0x64, 0x52, 0x82, 0x52, 0xa1, 0xfc, 0x3c, 0xa8, 0x5e, 0xe6, 0x3c, 0xa8, 0x5d, + 0xe8, 0x3c, 0xf8, 0x31, 0x2c, 0xa9, 0xff, 0x86, 0x3b, 0xf9, 0xec, 0x57, 0xdb, 0xc9, 0x0b, 0x95, + 0x11, 0x27, 0xdb, 0xd1, 0xe7, 0xce, 0xdd, 0xd1, 0xd1, 0x96, 0xa7, 0x56, 0xd9, 0x44, 0x9e, 0x31, + 0x59, 0x07, 0xa2, 0x76, 0xef, 0xd5, 0x83, 0x57, 0x38, 0x25, 0xdf, 0x83, 0x05, 0x67, 0xa0, 0xcc, + 0x38, 0xda, 0xfb, 0x79, 0x5f, 0x11, 0xf5, 0xeb, 0x42, 0x26, 0x99, 0x9d, 0x6e, 0xd5, 0xd7, 0x71, + 0xba, 0xed, 0x00, 0x04, 0x22, 0x8c, 0x22, 0x47, 0xdb, 0xc5, 0x25, 0xa3, 0xe2, 0x2d, 0x8a, 0xcf, + 0xf8, 0x9a, 0x30, 0xdf, 0x9d, 0xa4, 0xc3, 0x87, 0x7d, 0x78, 0x38, 0x38, 0x4d, 0xc7, 0x85, 0xf4, + 0x14, 0x32, 0xb4, 0x8a, 0x1f, 0x09, 0xc8, 0xd3, 0xb7, 0x87, 0x52, 0xb1, 0xd7, 0x3b, 0x20, 0xe4, + 0x7e, 0xe6, 0xa9, 0x76, 0x6e, 0xb6, 0xbe, 0xed, 0x89, 0x1e, 0x9a, 0xea, 0x9f, 0xb6, 0xfd, 0x17, + 0x43, 0x47, 0x26, 0x7b, 0x85, 0xa1, 0xfe, 0x01, 0x40, 0x66, 0x47, 0x57, 0x63, 0x2d, 0x34, 0xaa, + 0x8c, 0xaa, 0xf7, 0x72, 0x2e, 0xab, 0x7d, 0x4d, 0xf5, 0x75, 0x7d, 0x4d, 0x04, 0x8b, 0xfe, 0x2f, + 0xc6, 0xdd, 0xdc, 0xf1, 0x02, 0x58, 0x76, 0x93, 0xc5, 0x9d, 0x49, 0x65, 0x15, 0xcc, 0xef, 0xc1, + 0x53, 0xb3, 0x0a, 0x66, 0x05, 0xb7, 0xef, 0xc3, 0x8a, 0xee, 0x14, 0xfe, 0x22, 0x3d, 0x24, 0x3f, + 0x12, 0xc8, 0x0e, 0x46, 0x41, 0xd7, 0xd0, 0x84, 0xf8, 0x8e, 0xfb, 0x22, 0x3d, 0x14, 0xf7, 0x9f, + 0xee, 0x73, 0xbd, 0xad, 0xa8, 0x05, 0x7e, 0x6e, 0x00, 0x99, 0x14, 0xd7, 0x77, 0x13, 0xe3, 0xbf, + 0x70, 0xbb, 0x2c, 0xdd, 0xca, 0x6a, 0x97, 0xb9, 0x95, 0x59, 0xbf, 0x37, 0x60, 0xa5, 0x6d, 0xbb, + 0x12, 0x46, 0x4c, 0xd8, 0x03, 0xfe, 0x1f, 0x6e, 0xb6, 0x6d, 0x37, 0x0e, 0x7c, 0xa7, 0x5d, 0x7f, + 0x18, 0x9f, 0x09, 0x52, 0x72, 0x13, 0xfe, 0x6f, 0x52, 0x24, 0xb7, 0x1b, 0x6c, 0xc2, 0xfa, 0x24, + 0x5b, 0x01, 0x99, 0x9c, 0x5d, 0x58, 0x61, 0x9e, 0x54, 0xad, 0x0f, 0x61, 0x45, 0xe1, 0x7b, 0x44, + 0x0e, 0x43, 0x3c, 0xae, 0x15, 0x58, 0x7c, 0x40, 0xc3, 0x76, 0xf3, 0x61, 0xdc, 0xec, 0x38, 0x8e, + 0x39, 0x43, 0x96, 0x61, 0x41, 0x12, 0xea, 0xb6, 0x69, 0x90, 0x25, 0x98, 0x6f, 0x7b, 0x8c, 0xd6, + 0x3b, 0x21, 0x35, 0x2b, 0xd6, 0x87, 0x70, 0x25, 0x4f, 0xbd, 0x8e, 0xcf, 0xfe, 0x6f, 0x40, 0x35, + 0xb4, 0x0f, 0xcc, 0x19, 0x02, 0x30, 0x17, 0xec, 0xd7, 0xd9, 0xbb, 0xef, 0x9a, 0x06, 0x59, 0x84, + 0x37, 0xf6, 0xea, 0x41, 0xbc, 0xef, 0x32, 0xb3, 0xc2, 0x7f, 0xd8, 0x07, 0x0c, 0x7f, 0x54, 0xad, + 0x6f, 0xc3, 0x2a, 0xde, 0x15, 0x9c, 0xde, 0x68, 0x9c, 0xa4, 0xc9, 0x10, 0xdb, 0xb0, 0x04, 0xf3, + 0x2c, 0xe1, 0x8b, 0x7c, 0x9c, 0x88, 0x06, 0xb8, 0xa7, 0xfd, 0x71, 0xef, 0xa4, 0x9f, 0xfc, 0xd2, + 0x34, 0xac, 0x1d, 0x58, 0x09, 0x07, 0xa7, 0xe3, 0x5e, 0x7a, 0xcc, 0xc6, 0x5c, 0xe2, 0xf8, 0x05, + 0x79, 0x13, 0x56, 0x3b, 0x9e, 0xed, 0xee, 0xb6, 0xf7, 0x3a, 0x7e, 0x87, 0xc5, 0xae, 0x1d, 0xd5, + 0x5b, 0xc2, 0xe8, 0xe0, 0xfa, 0x2c, 0x8a, 0x43, 0x5a, 0xa7, 0x5e, 0x64, 0x1a, 0xd6, 0x6f, 0x0d, + 0xb8, 0xd2, 0x19, 0x49, 0x47, 0xd9, 0x0e, 0x62, 0x55, 0xdc, 0x82, 0xcd, 0x0e, 0xa3, 0x61, 0x1c, + 0xf9, 0xfb, 0xd4, 0x8b, 0x3b, 0xcc, 0xde, 0x2b, 0x23, 0xe4, 0xbc, 0x05, 0x37, 0x34, 0x89, 0x90, + 0xd6, 0xfd, 0x07, 0x34, 0x8c, 0x03, 0x9b, 0xb1, 0x03, 0x3f, 0x6c, 0x98, 0x06, 0xd9, 0x80, 0x6b, + 0x67, 0x08, 0xb8, 0x4d, 0xdb, 0xac, 0x4c, 0xf0, 0x3c, 0x7a, 0x60, 0x3b, 0xf1, 0xae, 0x1f, 0x99, + 0x55, 0xcb, 0xe5, 0x07, 0x1d, 0x82, 0x48, 0x08, 0xec, 0xcd, 0x79, 0xa8, 0x79, 0xbe, 0x47, 0xcb, + 0x86, 0xa1, 0x25, 0x98, 0xb7, 0x83, 0x20, 0xf4, 0x1f, 0xe0, 0x80, 0x02, 0xcc, 0x35, 0xa8, 0xc7, + 0x5b, 0x56, 0xe5, 0x9c, 0x20, 0xf4, 0x5d, 0x3f, 0xa2, 0x0d, 0xb3, 0x66, 0x85, 0x6a, 0xc1, 0xa8, + 0x4a, 0x0f, 0x07, 0xc2, 0x0a, 0xd3, 0xa0, 0x4d, 0xbb, 0xe3, 0x44, 0xb2, 0x43, 0x1e, 0xc6, 0x21, + 0xbd, 0xdf, 0xa1, 0x2c, 0x62, 0xa6, 0x41, 0x4c, 0x58, 0xf2, 0x28, 0x6d, 0xb0, 0x38, 0xa4, 0x0f, + 0xda, 0xf4, 0xc0, 0xac, 0xf0, 0x3a, 0xc5, 0xdf, 0xfc, 0x3f, 0x58, 0x9f, 0x1a, 0x40, 0x04, 0x00, + 0x87, 0xc2, 0x48, 0xc4, 0xf1, 0xd9, 0x82, 0x8d, 0x16, 0xef, 0x58, 0xfc, 0x34, 0xd7, 0x6f, 0x94, + 0xbb, 0xec, 0x1a, 0x90, 0x12, 0xdf, 0x6f, 0x36, 0x4d, 0x83, 0xdc, 0x80, 0xab, 0x25, 0x7a, 0x23, + 0xf4, 0x03, 0xb3, 0xb2, 0x51, 0x99, 0x37, 0xc8, 0xf5, 0x09, 0xe6, 0x3e, 0xa5, 0x81, 0x59, 0xe5, + 0x43, 0x54, 0x62, 0xa8, 0x09, 0x28, 0x8a, 0xd7, 0xac, 0xdf, 0x18, 0x70, 0x4d, 0x34, 0x53, 0xcd, + 0xe6, 0xac, 0xa9, 0x9b, 0xb0, 0x2e, 0xb1, 0x82, 0xce, 0x6a, 0xe8, 0x1a, 0x98, 0x05, 0xae, 0x68, + 0xe6, 0x9b, 0xb0, 0x5a, 0xa0, 0x62, 0x3b, 0x2a, 0x7c, 0xad, 0x16, 0xc8, 0xbb, 0x94, 0x45, 0x31, + 0x6d, 0x36, 0xfd, 0x30, 0x12, 0x0d, 0xa9, 0x5a, 0xdb, 0xb0, 0x5a, 0x4f, 0x86, 0x63, 0xae, 0x83, + 0xa4, 0xa3, 0xde, 0x20, 0xc5, 0x26, 0x2c, 0xc3, 0x02, 0xfd, 0x28, 0xa2, 0x1e, 0x6b, 0xfb, 0x9e, + 0x39, 0x63, 0x6d, 0x96, 0x64, 0xd4, 0xaa, 0x61, 0xac, 0x65, 0xce, 0x58, 0x5d, 0x58, 0x56, 0x8e, + 0xa9, 0x62, 0x56, 0x6c, 0xc1, 0x86, 0x9a, 0x6b, 0xb8, 0x7e, 0xcb, 0x9f, 0xb0, 0x0e, 0x6b, 0x93, + 0x7c, 0x1a, 0x99, 0x06, 0x1f, 0x85, 0x12, 0x87, 0xd3, 0x2b, 0xd6, 0x4f, 0x60, 0xa9, 0x00, 0x26, + 0x7c, 0x1d, 0xae, 0xea, 0xbf, 0x83, 0x24, 0x3d, 0xea, 0xa5, 0xc7, 0xe6, 0x4c, 0x99, 0x11, 0x9e, + 0xa6, 0x29, 0x67, 0xe0, 0x8c, 0xd7, 0x19, 0x51, 0x32, 0x7c, 0xd6, 0x4b, 0xbb, 0xe3, 0xe4, 0xc8, + 0xac, 0x58, 0x77, 0x61, 0xb9, 0x00, 0xba, 0xc2, 0x3f, 0xcd, 0xf1, 0xe5, 0x86, 0xe0, 0xd2, 0x46, + 0xbb, 0xe3, 0x9a, 0xb3, 0x7c, 0xae, 0xb7, 0xda, 0x7b, 0x2d, 0x13, 0xac, 0x3f, 0x18, 0xfc, 0x4a, + 0x8a, 0xc0, 0x84, 0x6e, 0xd3, 0x56, 0x9d, 0xc1, 0x07, 0x42, 0xe0, 0x33, 0x51, 0xc6, 0x84, 0xc5, + 0x70, 0x13, 0xd6, 0xe5, 0x8f, 0xd8, 0xf6, 0x1a, 0x71, 0xcb, 0x0e, 0x1b, 0x07, 0x76, 0xc8, 0x47, + 0xe7, 0xa1, 0x59, 0xc1, 0x29, 0xa7, 0x51, 0xe2, 0xc8, 0xef, 0xd4, 0x5b, 0x66, 0x95, 0x8f, 0x70, + 0x81, 0x1e, 0xb4, 0x3d, 0xb3, 0x86, 0x13, 0x78, 0x42, 0x1a, 0xab, 0xe5, 0xfc, 0x59, 0xab, 0x07, + 0x66, 0x39, 0x14, 0x63, 0xc2, 0x74, 0x1b, 0x76, 0x3c, 0x4f, 0xac, 0xd0, 0x15, 0x58, 0xf4, 0xa3, + 0x16, 0x0d, 0x25, 0x82, 0x16, 0x42, 0x66, 0x75, 0x3c, 0xbb, 0x13, 0xb5, 0xfc, 0xb0, 0xfd, 0x08, + 0x97, 0xea, 0x3a, 0xac, 0x31, 0xc7, 0xae, 0xef, 0xc7, 0x9e, 0x1f, 0xc5, 0x6d, 0x2f, 0xae, 0xb7, + 0x6c, 0xcf, 0xa3, 0x8e, 0x09, 0xd6, 0x5f, 0x0d, 0xb8, 0x71, 0x8e, 0x81, 0x87, 0xbc, 0x03, 0x77, + 0x5a, 0xd4, 0x6e, 0x38, 0x94, 0xb1, 0x98, 0x57, 0x49, 0xbd, 0x48, 0x5a, 0x51, 0xcf, 0x9c, 0x0e, + 0x77, 0xe0, 0x6b, 0xe7, 0x8b, 0xe7, 0x1b, 0xcb, 0xd7, 0xe1, 0xed, 0xf3, 0x45, 0xe5, 0x46, 0x53, + 0x21, 0x16, 0xdc, 0x3e, 0x5f, 0x32, 0xdb, 0xa0, 0xaa, 0xd6, 0xef, 0x0c, 0xb8, 0x76, 0xb6, 0x3e, + 0xc6, 0xdb, 0xd6, 0xf6, 0x58, 0x64, 0x3b, 0x4e, 0x1c, 0xd8, 0xa1, 0xed, 0xc6, 0xd4, 0x0b, 0x7d, + 0xc7, 0x39, 0x6b, 0x61, 0xbe, 0x0d, 0xb7, 0xa6, 0x8b, 0xb2, 0x7a, 0xd8, 0x0e, 0xf8, 0x0c, 0xdf, + 0x86, 0xad, 0xe9, 0x52, 0xb4, 0x5d, 0xa7, 0x66, 0x65, 0xf7, 0x83, 0xcf, 0xfe, 0xb9, 0x35, 0xf3, + 0xd9, 0xcb, 0x2d, 0xe3, 0xf3, 0x97, 0x5b, 0xc6, 0x3f, 0x5e, 0x6e, 0x19, 0x8f, 0xbe, 0x71, 0x89, + 0xa4, 0x75, 0x8f, 0xe7, 0xd0, 0x6d, 0xe0, 0xbb, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xdf, 0xba, + 0x92, 0x64, 0xb7, 0x7e, 0x01, 0x00, } func (this *PluginSpecV1) Equal(that interface{}) bool { @@ -20637,6 +20909,30 @@ func (this *PluginSpecV1_Gitlab) Equal(that interface{}) bool { } return true } +func (this *PluginSpecV1_EntraId) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*PluginSpecV1_EntraId) + if !ok { + that2, ok := that.(PluginSpecV1_EntraId) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.EntraId.Equal(that1.EntraId) { + return false + } + return true +} func (this *PluginSpecV1_Scim) Equal(that interface{}) bool { if that == nil { return this == nil @@ -21107,6 +21403,133 @@ func (this *PluginDiscordSettings) Equal(that interface{}) bool { } return true } +func (this *PluginEntraIDSettings) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*PluginEntraIDSettings) + if !ok { + that2, ok := that.(PluginEntraIDSettings) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if !this.SyncSettings.Equal(that1.SyncSettings) { + return false + } + if !this.AccessGraphSettings.Equal(that1.AccessGraphSettings) { + return false + } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } + return true +} +func (this *PluginEntraIDSyncSettings) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*PluginEntraIDSyncSettings) + if !ok { + that2, ok := that.(PluginEntraIDSyncSettings) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if len(this.DefaultOwners) != len(that1.DefaultOwners) { + return false + } + for i := range this.DefaultOwners { + if this.DefaultOwners[i] != that1.DefaultOwners[i] { + return false + } + } + if this.SsoConnectorId != that1.SsoConnectorId { + return false + } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } + return true +} +func (this *PluginEntraIDAccessGraphSettings) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*PluginEntraIDAccessGraphSettings) + if !ok { + that2, ok := that.(PluginEntraIDAccessGraphSettings) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if len(this.AppSsoSettingsCache) != len(that1.AppSsoSettingsCache) { + return false + } + for i := range this.AppSsoSettingsCache { + if !this.AppSsoSettingsCache[i].Equal(that1.AppSsoSettingsCache[i]) { + return false + } + } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } + return true +} +func (this *PluginEntraIDAppSSOSettings) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*PluginEntraIDAppSSOSettings) + if !ok { + that2, ok := that.(PluginEntraIDAppSSOSettings) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.AppId != that1.AppId { + return false + } + if !bytes.Equal(this.FederatedSsoV2, that1.FederatedSsoV2) { + return false + } + if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) { + return false + } + return true +} func (this *PluginSCIMSettings) Equal(that interface{}) bool { if that == nil { return this == nil @@ -38989,6 +39412,27 @@ func (m *PluginSpecV1_Gitlab) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } +func (m *PluginSpecV1_EntraId) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PluginSpecV1_EntraId) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.EntraId != nil { + { + size, err := m.EntraId.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6a + } + return len(dAtA) - i, nil +} func (m *PluginSpecV1_Scim) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) @@ -39642,6 +40086,182 @@ func (m *PluginDiscordSettings) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *PluginEntraIDSettings) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PluginEntraIDSettings) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PluginEntraIDSettings) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.AccessGraphSettings != nil { + { + size, err := m.AccessGraphSettings.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.SyncSettings != nil { + { + size, err := m.SyncSettings.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PluginEntraIDSyncSettings) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PluginEntraIDSyncSettings) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PluginEntraIDSyncSettings) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.SsoConnectorId) > 0 { + i -= len(m.SsoConnectorId) + copy(dAtA[i:], m.SsoConnectorId) + i = encodeVarintTypes(dAtA, i, uint64(len(m.SsoConnectorId))) + i-- + dAtA[i] = 0x12 + } + if len(m.DefaultOwners) > 0 { + for iNdEx := len(m.DefaultOwners) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.DefaultOwners[iNdEx]) + copy(dAtA[i:], m.DefaultOwners[iNdEx]) + i = encodeVarintTypes(dAtA, i, uint64(len(m.DefaultOwners[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *PluginEntraIDAccessGraphSettings) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PluginEntraIDAccessGraphSettings) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PluginEntraIDAccessGraphSettings) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.AppSsoSettingsCache) > 0 { + for iNdEx := len(m.AppSsoSettingsCache) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AppSsoSettingsCache[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *PluginEntraIDAppSSOSettings) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PluginEntraIDAppSSOSettings) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PluginEntraIDAppSSOSettings) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.FederatedSsoV2) > 0 { + i -= len(m.FederatedSsoV2) + copy(dAtA[i:], m.FederatedSsoV2) + i = encodeVarintTypes(dAtA, i, uint64(len(m.FederatedSsoV2))) + i-- + dAtA[i] = 0x12 + } + if len(m.AppId) > 0 { + i -= len(m.AppId) + copy(dAtA[i:], m.AppId) + i = encodeVarintTypes(dAtA, i, uint64(len(m.AppId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *PluginSCIMSettings) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -40040,12 +40660,12 @@ func (m *PluginOAuth2AccessTokenCredentials) MarshalToSizedBuffer(dAtA []byte) ( i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n320, err320 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err320 != nil { - return 0, err320 + n323, err323 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err323 != nil { + return 0, err323 } - i -= n320 - i = encodeVarintTypes(dAtA, i, uint64(n320)) + i -= n323 + i = encodeVarintTypes(dAtA, i, uint64(n323)) i-- dAtA[i] = 0x1a if len(m.RefreshToken) > 0 { @@ -40916,20 +41536,20 @@ func (m *ScheduledAgentUpgradeWindow) MarshalToSizedBuffer(dAtA []byte) (int, er i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n334, err334 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Stop, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Stop):]) - if err334 != nil { - return 0, err334 + n337, err337 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Stop, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Stop):]) + if err337 != nil { + return 0, err337 } - i -= n334 - i = encodeVarintTypes(dAtA, i, uint64(n334)) + i -= n337 + i = encodeVarintTypes(dAtA, i, uint64(n337)) i-- dAtA[i] = 0x12 - n335, err335 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):]) - if err335 != nil { - return 0, err335 + n338, err338 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):]) + if err338 != nil { + return 0, err338 } - i -= n335 - i = encodeVarintTypes(dAtA, i, uint64(n335)) + i -= n338 + i = encodeVarintTypes(dAtA, i, uint64(n338)) i-- dAtA[i] = 0xa return len(dAtA) - i, nil @@ -41356,12 +41976,12 @@ func (m *OktaAssignmentSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x30 } - n342, err342 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastTransition, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastTransition):]) - if err342 != nil { - return 0, err342 + n345, err345 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastTransition, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastTransition):]) + if err345 != nil { + return 0, err345 } - i -= n342 - i = encodeVarintTypes(dAtA, i, uint64(n342)) + i -= n345 + i = encodeVarintTypes(dAtA, i, uint64(n345)) i-- dAtA[i] = 0x2a if m.Status != 0 { @@ -41369,12 +41989,12 @@ func (m *OktaAssignmentSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x20 } - n343, err343 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CleanupTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CleanupTime):]) - if err343 != nil { - return 0, err343 + n346, err346 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CleanupTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CleanupTime):]) + if err346 != nil { + return 0, err346 } - i -= n343 - i = encodeVarintTypes(dAtA, i, uint64(n343)) + i -= n346 + i = encodeVarintTypes(dAtA, i, uint64(n346)) i-- dAtA[i] = 0x1a if len(m.Targets) > 0 { @@ -41544,6 +42164,27 @@ func (m *IntegrationSpecV1_AWSOIDC) MarshalToSizedBuffer(dAtA []byte) (int, erro } return len(dAtA) - i, nil } +func (m *IntegrationSpecV1_AzureOIDC) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *IntegrationSpecV1_AzureOIDC) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.AzureOIDC != nil { + { + size, err := m.AzureOIDC.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} func (m *AWSOIDCIntegrationSpecV1) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -41585,6 +42226,47 @@ func (m *AWSOIDCIntegrationSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } +func (m *AzureOIDCIntegrationSpecV1) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AzureOIDCIntegrationSpecV1) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AzureOIDCIntegrationSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.ClientID) > 0 { + i -= len(m.ClientID) + copy(dAtA[i:], m.ClientID) + i = encodeVarintTypes(dAtA, i, uint64(len(m.ClientID))) + i-- + dAtA[i] = 0x12 + } + if len(m.TenantID) > 0 { + i -= len(m.TenantID) + copy(dAtA[i:], m.TenantID) + i = encodeVarintTypes(dAtA, i, uint64(len(m.TenantID))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *HeadlessAuthentication) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -50836,6 +51518,18 @@ func (m *PluginSpecV1_Gitlab) Size() (n int) { } return n } +func (m *PluginSpecV1_EntraId) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.EntraId != nil { + l = m.EntraId.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} func (m *PluginSpecV1_Scim) Size() (n int) { if m == nil { return 0 @@ -51154,6 +51848,86 @@ func (m *PluginDiscordSettings) Size() (n int) { return n } +func (m *PluginEntraIDSettings) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.SyncSettings != nil { + l = m.SyncSettings.Size() + n += 1 + l + sovTypes(uint64(l)) + } + if m.AccessGraphSettings != nil { + l = m.AccessGraphSettings.Size() + n += 1 + l + sovTypes(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *PluginEntraIDSyncSettings) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.DefaultOwners) > 0 { + for _, s := range m.DefaultOwners { + l = len(s) + n += 1 + l + sovTypes(uint64(l)) + } + } + l = len(m.SsoConnectorId) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *PluginEntraIDAccessGraphSettings) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.AppSsoSettingsCache) > 0 { + for _, e := range m.AppSsoSettingsCache { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *PluginEntraIDAppSSOSettings) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.AppId) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.FederatedSsoV2) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *PluginSCIMSettings) Size() (n int) { if m == nil { return 0 @@ -52013,6 +52787,18 @@ func (m *IntegrationSpecV1_AWSOIDC) Size() (n int) { } return n } +func (m *IntegrationSpecV1_AzureOIDC) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AzureOIDC != nil { + l = m.AzureOIDC.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} func (m *AWSOIDCIntegrationSpecV1) Size() (n int) { if m == nil { return 0 @@ -52033,6 +52819,26 @@ func (m *AWSOIDCIntegrationSpecV1) Size() (n int) { return n } +func (m *AzureOIDCIntegrationSpecV1) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.TenantID) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.ClientID) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *HeadlessAuthentication) Size() (n int) { if m == nil { return 0 @@ -105131,9 +105937,9 @@ func (m *PluginSpecV1) Unmarshal(dAtA []byte) error { } m.Settings = &PluginSpecV1_Gitlab{v} iNdEx = postIndex - case 14: + case 13: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Scim", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field EntraId", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -105160,68 +105966,17 @@ func (m *PluginSpecV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &PluginSCIMSettings{} + v := &PluginEntraIDSettings{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Settings = &PluginSpecV1_Scim{v} + m.Settings = &PluginSpecV1_EntraId{v} iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PluginSlackAccessSettings) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PluginSlackAccessSettings: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PluginSlackAccessSettings: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 14: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FallbackChannel", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Scim", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -105231,23 +105986,26 @@ func (m *PluginSlackAccessSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.FallbackChannel = string(dAtA[iNdEx:postIndex]) + v := &PluginSCIMSettings{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Settings = &PluginSpecV1_Scim{v} iNdEx = postIndex default: iNdEx = preIndex @@ -105271,7 +106029,7 @@ func (m *PluginSlackAccessSettings) Unmarshal(dAtA []byte) error { } return nil } -func (m *PluginGitlabSettings) Unmarshal(dAtA []byte) error { +func (m *PluginSlackAccessSettings) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -105294,15 +106052,15 @@ func (m *PluginGitlabSettings) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PluginGitlabSettings: wiretype end group for non-group") + return fmt.Errorf("proto: PluginSlackAccessSettings: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PluginGitlabSettings: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PluginSlackAccessSettings: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ApiEndpoint", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field FallbackChannel", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -105330,7 +106088,7 @@ func (m *PluginGitlabSettings) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ApiEndpoint = string(dAtA[iNdEx:postIndex]) + m.FallbackChannel = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -105354,7 +106112,7 @@ func (m *PluginGitlabSettings) Unmarshal(dAtA []byte) error { } return nil } -func (m *PluginOpsgenieAccessSettings) Unmarshal(dAtA []byte) error { +func (m *PluginGitlabSettings) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -105377,15 +106135,98 @@ func (m *PluginOpsgenieAccessSettings) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PluginOpsgenieAccessSettings: wiretype end group for non-group") + return fmt.Errorf("proto: PluginGitlabSettings: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PluginOpsgenieAccessSettings: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PluginGitlabSettings: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 2: + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Priority", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ApiEndpoint", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ApiEndpoint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PluginOpsgenieAccessSettings) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PluginOpsgenieAccessSettings: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PluginOpsgenieAccessSettings: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Priority", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -106976,122 +107817,7 @@ func (m *PluginDiscordSettings) Unmarshal(dAtA []byte) error { } return nil } -func (m *PluginSCIMSettings) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PluginSCIMSettings: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PluginSCIMSettings: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SamlConnectorName", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SamlConnectorName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DefaultRole", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.DefaultRole = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTypes - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PluginBootstrapCredentialsV1) Unmarshal(dAtA []byte) error { +func (m *PluginEntraIDSettings) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -107114,15 +107840,15 @@ func (m *PluginBootstrapCredentialsV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PluginBootstrapCredentialsV1: wiretype end group for non-group") + return fmt.Errorf("proto: PluginEntraIDSettings: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PluginBootstrapCredentialsV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PluginEntraIDSettings: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Oauth2AuthorizationCode", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SyncSettings", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -107149,15 +107875,16 @@ func (m *PluginBootstrapCredentialsV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &PluginOAuth2AuthorizationCodeCredentials{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.SyncSettings == nil { + m.SyncSettings = &PluginEntraIDSyncSettings{} + } + if err := m.SyncSettings.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Credentials = &PluginBootstrapCredentialsV1_Oauth2AuthorizationCode{v} iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BearerToken", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccessGraphSettings", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -107184,46 +107911,12 @@ func (m *PluginBootstrapCredentialsV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &PluginBearerTokenCredentials{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Credentials = &PluginBootstrapCredentialsV1_BearerToken{v} - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IdSecret", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF + if m.AccessGraphSettings == nil { + m.AccessGraphSettings = &PluginEntraIDAccessGraphSettings{} } - v := &PluginIdSecretCredential{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.AccessGraphSettings.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Credentials = &PluginBootstrapCredentialsV1_IdSecret{v} iNdEx = postIndex default: iNdEx = preIndex @@ -107247,7 +107940,7 @@ func (m *PluginBootstrapCredentialsV1) Unmarshal(dAtA []byte) error { } return nil } -func (m *PluginIdSecretCredential) Unmarshal(dAtA []byte) error { +func (m *PluginEntraIDSyncSettings) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -107270,15 +107963,15 @@ func (m *PluginIdSecretCredential) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PluginIdSecretCredential: wiretype end group for non-group") + return fmt.Errorf("proto: PluginEntraIDSyncSettings: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PluginIdSecretCredential: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PluginEntraIDSyncSettings: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DefaultOwners", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -107306,11 +107999,11 @@ func (m *PluginIdSecretCredential) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Id = string(dAtA[iNdEx:postIndex]) + m.DefaultOwners = append(m.DefaultOwners, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SsoConnectorId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -107338,7 +108031,7 @@ func (m *PluginIdSecretCredential) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Secret = string(dAtA[iNdEx:postIndex]) + m.SsoConnectorId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -107362,7 +108055,7 @@ func (m *PluginIdSecretCredential) Unmarshal(dAtA []byte) error { } return nil } -func (m *PluginOAuth2AuthorizationCodeCredentials) Unmarshal(dAtA []byte) error { +func (m *PluginEntraIDAccessGraphSettings) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -107385,15 +108078,100 @@ func (m *PluginOAuth2AuthorizationCodeCredentials) Unmarshal(dAtA []byte) error fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PluginOAuth2AuthorizationCodeCredentials: wiretype end group for non-group") + return fmt.Errorf("proto: PluginEntraIDAccessGraphSettings: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PluginOAuth2AuthorizationCodeCredentials: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PluginEntraIDAccessGraphSettings: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthorizationCode", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AppSsoSettingsCache", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AppSsoSettingsCache = append(m.AppSsoSettingsCache, &PluginEntraIDAppSSOSettings{}) + if err := m.AppSsoSettingsCache[len(m.AppSsoSettingsCache)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PluginEntraIDAppSSOSettings) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PluginEntraIDAppSSOSettings: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PluginEntraIDAppSSOSettings: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -107421,13 +108199,13 @@ func (m *PluginOAuth2AuthorizationCodeCredentials) Unmarshal(dAtA []byte) error if postIndex > l { return io.ErrUnexpectedEOF } - m.AuthorizationCode = string(dAtA[iNdEx:postIndex]) + m.AppId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RedirectUri", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field FederatedSsoV2", wireType) } - var stringLen uint64 + var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -107437,23 +108215,25 @@ func (m *PluginOAuth2AuthorizationCodeCredentials) Unmarshal(dAtA []byte) error } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + byteLen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if byteLen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + byteLen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.RedirectUri = string(dAtA[iNdEx:postIndex]) + m.FederatedSsoV2 = append(m.FederatedSsoV2[:0], dAtA[iNdEx:postIndex]...) + if m.FederatedSsoV2 == nil { + m.FederatedSsoV2 = []byte{} + } iNdEx = postIndex default: iNdEx = preIndex @@ -107477,7 +108257,7 @@ func (m *PluginOAuth2AuthorizationCodeCredentials) Unmarshal(dAtA []byte) error } return nil } -func (m *PluginStatusV1) Unmarshal(dAtA []byte) error { +func (m *PluginSCIMSettings) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -107500,17 +108280,17 @@ func (m *PluginStatusV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PluginStatusV1: wiretype end group for non-group") + return fmt.Errorf("proto: PluginSCIMSettings: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PluginStatusV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PluginSCIMSettings: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SamlConnectorName", wireType) } - m.Code = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -107520,11 +108300,56 @@ func (m *PluginStatusV1) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Code |= PluginStatusCode(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SamlConnectorName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultRole", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DefaultRole = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -107547,7 +108372,7 @@ func (m *PluginStatusV1) Unmarshal(dAtA []byte) error { } return nil } -func (m *PluginCredentialsV1) Unmarshal(dAtA []byte) error { +func (m *PluginBootstrapCredentialsV1) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -107570,15 +108395,15 @@ func (m *PluginCredentialsV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PluginCredentialsV1: wiretype end group for non-group") + return fmt.Errorf("proto: PluginBootstrapCredentialsV1: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PluginCredentialsV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PluginBootstrapCredentialsV1: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Oauth2AccessToken", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Oauth2AuthorizationCode", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -107605,11 +108430,11 @@ func (m *PluginCredentialsV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &PluginOAuth2AccessTokenCredentials{} + v := &PluginOAuth2AuthorizationCodeCredentials{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Credentials = &PluginCredentialsV1_Oauth2AccessToken{v} + m.Credentials = &PluginBootstrapCredentialsV1_Oauth2AuthorizationCode{v} iNdEx = postIndex case 2: if wireType != 2 { @@ -107644,7 +108469,7 @@ func (m *PluginCredentialsV1) Unmarshal(dAtA []byte) error { if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Credentials = &PluginCredentialsV1_BearerToken{v} + m.Credentials = &PluginBootstrapCredentialsV1_BearerToken{v} iNdEx = postIndex case 3: if wireType != 2 { @@ -107679,42 +108504,7 @@ func (m *PluginCredentialsV1) Unmarshal(dAtA []byte) error { if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Credentials = &PluginCredentialsV1_IdSecret{v} - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StaticCredentialsRef", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &PluginStaticCredentialsRef{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Credentials = &PluginCredentialsV1_StaticCredentialsRef{v} + m.Credentials = &PluginBootstrapCredentialsV1_IdSecret{v} iNdEx = postIndex default: iNdEx = preIndex @@ -107738,7 +108528,7 @@ func (m *PluginCredentialsV1) Unmarshal(dAtA []byte) error { } return nil } -func (m *PluginOAuth2AccessTokenCredentials) Unmarshal(dAtA []byte) error { +func (m *PluginIdSecretCredential) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -107761,15 +108551,15 @@ func (m *PluginOAuth2AccessTokenCredentials) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PluginOAuth2AccessTokenCredentials: wiretype end group for non-group") + return fmt.Errorf("proto: PluginIdSecretCredential: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PluginOAuth2AccessTokenCredentials: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PluginIdSecretCredential: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessToken", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -107797,11 +108587,11 @@ func (m *PluginOAuth2AccessTokenCredentials) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.AccessToken = string(dAtA[iNdEx:postIndex]) + m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RefreshToken", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Secret", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -107829,40 +108619,7 @@ func (m *PluginOAuth2AccessTokenCredentials) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.RefreshToken = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Expires", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.Expires, dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Secret = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -107886,7 +108643,531 @@ func (m *PluginOAuth2AccessTokenCredentials) Unmarshal(dAtA []byte) error { } return nil } -func (m *PluginBearerTokenCredentials) Unmarshal(dAtA []byte) error { +func (m *PluginOAuth2AuthorizationCodeCredentials) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PluginOAuth2AuthorizationCodeCredentials: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PluginOAuth2AuthorizationCodeCredentials: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuthorizationCode", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AuthorizationCode = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RedirectUri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RedirectUri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PluginStatusV1) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PluginStatusV1: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PluginStatusV1: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= PluginStatusCode(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PluginCredentialsV1) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PluginCredentialsV1: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PluginCredentialsV1: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Oauth2AccessToken", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &PluginOAuth2AccessTokenCredentials{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Credentials = &PluginCredentialsV1_Oauth2AccessToken{v} + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BearerToken", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &PluginBearerTokenCredentials{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Credentials = &PluginCredentialsV1_BearerToken{v} + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IdSecret", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &PluginIdSecretCredential{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Credentials = &PluginCredentialsV1_IdSecret{v} + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StaticCredentialsRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &PluginStaticCredentialsRef{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Credentials = &PluginCredentialsV1_StaticCredentialsRef{v} + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PluginOAuth2AccessTokenCredentials) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PluginOAuth2AccessTokenCredentials: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PluginOAuth2AccessTokenCredentials: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccessToken", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AccessToken = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RefreshToken", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RefreshToken = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Expires", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.Expires, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PluginBearerTokenCredentials) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -111193,116 +112474,239 @@ func (m *OktaAssignmentSpecV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: OktaAssignmentSpecV1: wiretype end group for non-group") + return fmt.Errorf("proto: OktaAssignmentSpecV1: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OktaAssignmentSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Targets", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Targets = append(m.Targets, &OktaAssignmentTargetV1{}) + if err := m.Targets[len(m.Targets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CleanupTime", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.CleanupTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + m.Status = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Status |= OktaAssignmentSpecV1_OktaAssignmentStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransition", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.LastTransition, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Finalized", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Finalized = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *OktaAssignmentTargetV1) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: OktaAssignmentTargetV1: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: OktaAssignmentSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: OktaAssignmentTargetV1: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.User = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Targets", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Targets = append(m.Targets, &OktaAssignmentTargetV1{}) - if err := m.Targets[len(m.Targets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CleanupTime", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.CleanupTime, dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } - m.Status = 0 + m.Type = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -111312,16 +112716,16 @@ func (m *OktaAssignmentSpecV1) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Status |= OktaAssignmentSpecV1_OktaAssignmentStatus(b&0x7F) << shift + m.Type |= OktaAssignmentTargetV1_OktaAssignmentTargetType(b&0x7F) << shift if b < 0x80 { break } } - case 5: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastTransition", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -111331,45 +112735,24 @@ func (m *OktaAssignmentSpecV1) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.LastTransition, dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Id = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Finalized", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Finalized = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -111392,7 +112775,7 @@ func (m *OktaAssignmentSpecV1) Unmarshal(dAtA []byte) error { } return nil } -func (m *OktaAssignmentTargetV1) Unmarshal(dAtA []byte) error { +func (m *IntegrationV1) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -111415,17 +112798,17 @@ func (m *OktaAssignmentTargetV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: OktaAssignmentTargetV1: wiretype end group for non-group") + return fmt.Errorf("proto: IntegrationV1: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: OktaAssignmentTargetV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: IntegrationV1: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceHeader", wireType) } - m.Type = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -111435,16 +112818,30 @@ func (m *OktaAssignmentTargetV1) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Type |= OktaAssignmentTargetV1_OktaAssignmentTargetType(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ResourceHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -111454,23 +112851,24 @@ func (m *OktaAssignmentTargetV1) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.Id = string(dAtA[iNdEx:postIndex]) + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -111494,7 +112892,7 @@ func (m *OktaAssignmentTargetV1) Unmarshal(dAtA []byte) error { } return nil } -func (m *IntegrationV1) Unmarshal(dAtA []byte) error { +func (m *IntegrationSpecV1) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -111517,15 +112915,15 @@ func (m *IntegrationV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: IntegrationV1: wiretype end group for non-group") + return fmt.Errorf("proto: IntegrationSpecV1: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: IntegrationV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: IntegrationSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResourceHeader", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AWSOIDC", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -111552,13 +112950,15 @@ func (m *IntegrationV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ResourceHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + v := &AWSOIDCIntegrationSpecV1{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } + m.SubKindSpec = &IntegrationSpecV1_AWSOIDC{v} iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AzureOIDC", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -111585,9 +112985,11 @@ func (m *IntegrationV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + v := &AzureOIDCIntegrationSpecV1{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } + m.SubKindSpec = &IntegrationSpecV1_AzureOIDC{v} iNdEx = postIndex default: iNdEx = preIndex @@ -111611,7 +113013,7 @@ func (m *IntegrationV1) Unmarshal(dAtA []byte) error { } return nil } -func (m *IntegrationSpecV1) Unmarshal(dAtA []byte) error { +func (m *AWSOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -111634,17 +113036,17 @@ func (m *IntegrationSpecV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: IntegrationSpecV1: wiretype end group for non-group") + return fmt.Errorf("proto: AWSOIDCIntegrationSpecV1: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: IntegrationSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AWSOIDCIntegrationSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AWSOIDC", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RoleARN", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -111654,26 +113056,55 @@ func (m *IntegrationSpecV1) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - v := &AWSOIDCIntegrationSpecV1{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + m.RoleARN = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IssuerS3URI", wireType) } - m.SubKindSpec = &IntegrationSpecV1_AWSOIDC{v} + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IssuerS3URI = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -111697,7 +113128,7 @@ func (m *IntegrationSpecV1) Unmarshal(dAtA []byte) error { } return nil } -func (m *AWSOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { +func (m *AzureOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -111720,15 +113151,15 @@ func (m *AWSOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AWSOIDCIntegrationSpecV1: wiretype end group for non-group") + return fmt.Errorf("proto: AzureOIDCIntegrationSpecV1: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AWSOIDCIntegrationSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AzureOIDCIntegrationSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RoleARN", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TenantID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -111756,11 +113187,11 @@ func (m *AWSOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.RoleARN = string(dAtA[iNdEx:postIndex]) + m.TenantID = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IssuerS3URI", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClientID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -111788,7 +113219,7 @@ func (m *AWSOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.IssuerS3URI = string(dAtA[iNdEx:postIndex]) + m.ClientID = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/e_imports.go b/e_imports.go index 0b1cc2ca9ac74..3ead6ef8aed9d 100644 --- a/e_imports.go +++ b/e_imports.go @@ -89,6 +89,9 @@ import ( _ "github.com/jonboulle/clockwork" _ "github.com/julienschmidt/httprouter" _ "github.com/mailgun/holster/v3/clock" + _ "github.com/microsoft/kiota-authentication-azure-go" + _ "github.com/microsoftgraph/msgraph-sdk-go" + _ "github.com/microsoftgraph/msgraph-sdk-go-core" _ "github.com/mitchellh/mapstructure" _ "github.com/okta/okta-sdk-golang/v2/okta" _ "github.com/okta/okta-sdk-golang/v2/okta/query" diff --git a/gen/proto/go/accessgraph/v1alpha/access_graph_service.pb.go b/gen/proto/go/accessgraph/v1alpha/access_graph_service.pb.go index 36aad11dbddc9..2af6464e45d97 100644 --- a/gen/proto/go/accessgraph/v1alpha/access_graph_service.pb.go +++ b/gen/proto/go/accessgraph/v1alpha/access_graph_service.pb.go @@ -968,6 +968,147 @@ func (*GitlabEventsStreamResponse) Descriptor() ([]byte, []int) { return file_accessgraph_v1alpha_access_graph_service_proto_rawDescGZIP(), []int{15} } +// EntraEventsStreamRequest is a request to send commands to the Gitlab importer. +type EntraEventsStreamRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // operation contains the desired operation + // + // Types that are assignable to Operation: + // + // *EntraEventsStreamRequest_Sync + // *EntraEventsStreamRequest_Upsert + // *EntraEventsStreamRequest_Delete + Operation isEntraEventsStreamRequest_Operation `protobuf_oneof:"operation"` +} + +func (x *EntraEventsStreamRequest) Reset() { + *x = EntraEventsStreamRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accessgraph_v1alpha_access_graph_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntraEventsStreamRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntraEventsStreamRequest) ProtoMessage() {} + +func (x *EntraEventsStreamRequest) ProtoReflect() protoreflect.Message { + mi := &file_accessgraph_v1alpha_access_graph_service_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntraEventsStreamRequest.ProtoReflect.Descriptor instead. +func (*EntraEventsStreamRequest) Descriptor() ([]byte, []int) { + return file_accessgraph_v1alpha_access_graph_service_proto_rawDescGZIP(), []int{16} +} + +func (m *EntraEventsStreamRequest) GetOperation() isEntraEventsStreamRequest_Operation { + if m != nil { + return m.Operation + } + return nil +} + +func (x *EntraEventsStreamRequest) GetSync() *EntraSyncOperation { + if x, ok := x.GetOperation().(*EntraEventsStreamRequest_Sync); ok { + return x.Sync + } + return nil +} + +func (x *EntraEventsStreamRequest) GetUpsert() *EntraResourceList { + if x, ok := x.GetOperation().(*EntraEventsStreamRequest_Upsert); ok { + return x.Upsert + } + return nil +} + +func (x *EntraEventsStreamRequest) GetDelete() *EntraResourceList { + if x, ok := x.GetOperation().(*EntraEventsStreamRequest_Delete); ok { + return x.Delete + } + return nil +} + +type isEntraEventsStreamRequest_Operation interface { + isEntraEventsStreamRequest_Operation() +} + +type EntraEventsStreamRequest_Sync struct { + // sync is a command to sync the access graph with the Teleport database state. + // it's issued once Teleport finishes syncing all resources with the database. + Sync *EntraSyncOperation `protobuf:"bytes,1,opt,name=sync,proto3,oneof"` +} + +type EntraEventsStreamRequest_Upsert struct { + // upsert is a command to put a resource into the access graph or update it. + Upsert *EntraResourceList `protobuf:"bytes,2,opt,name=upsert,proto3,oneof"` +} + +type EntraEventsStreamRequest_Delete struct { + // delete is a command to delete a resource from the access graph when it's deleted from Teleport. + Delete *EntraResourceList `protobuf:"bytes,3,opt,name=delete,proto3,oneof"` +} + +func (*EntraEventsStreamRequest_Sync) isEntraEventsStreamRequest_Operation() {} + +func (*EntraEventsStreamRequest_Upsert) isEntraEventsStreamRequest_Operation() {} + +func (*EntraEventsStreamRequest_Delete) isEntraEventsStreamRequest_Operation() {} + +// EntraEventsStreamResponse is the response from GitlabEventsStream. +type EntraEventsStreamResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *EntraEventsStreamResponse) Reset() { + *x = EntraEventsStreamResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_accessgraph_v1alpha_access_graph_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntraEventsStreamResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntraEventsStreamResponse) ProtoMessage() {} + +func (x *EntraEventsStreamResponse) ProtoReflect() protoreflect.Message { + mi := &file_accessgraph_v1alpha_access_graph_service_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntraEventsStreamResponse.ProtoReflect.Descriptor instead. +func (*EntraEventsStreamResponse) Descriptor() ([]byte, []int) { + return file_accessgraph_v1alpha_access_graph_service_proto_rawDescGZIP(), []int{17} +} + var File_accessgraph_v1alpha_access_graph_service_proto protoreflect.FileDescriptor var file_accessgraph_v1alpha_access_graph_service_proto_rawDesc = []byte{ @@ -977,153 +1118,180 @@ var file_accessgraph_v1alpha_access_graph_service_proto_rawDesc = []byte{ 0x12, 0x13, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x1a, 0x1d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x61, 0x77, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x24, 0x0a, 0x0c, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x22, 0x71, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, - 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, + 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x24, 0x0a, + 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x22, 0x71, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, - 0x65, 0x64, 0x67, 0x65, 0x73, 0x22, 0x2c, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x70, - 0x61, 0x74, 0x68, 0x22, 0x25, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xaa, 0x03, 0x0a, 0x13, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x3b, 0x0a, 0x06, - 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x69, - 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x14, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x5f, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x12, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x6f, 0x0a, 0x1b, 0x65, 0x78, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, - 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x48, 0x00, - 0x52, 0x18, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, - 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x0f, 0x0a, 0x0d, 0x53, 0x79, 0x6e, 0x63, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x16, 0x0a, 0x14, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x54, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x5f, 0x70, - 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x43, 0x61, - 0x50, 0x65, 0x6d, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x0a, 0x11, 0x52, 0x65, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x41, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1e, 0x0a, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x5f, 0x70, 0x65, 0x6d, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x50, 0x65, 0x6d, 0x22, - 0x14, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x41, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe2, 0x01, 0x0a, 0x16, 0x41, 0x57, 0x53, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x3b, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x3e, 0x0a, - 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, + 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x52, + 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x22, 0x2c, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x70, 0x61, 0x74, 0x68, 0x22, 0x25, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xaa, 0x03, 0x0a, 0x13, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x3b, 0x0a, + 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x3e, 0x0a, - 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x0b, 0x0a, - 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x12, 0x0a, 0x10, 0x41, 0x57, - 0x53, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x19, - 0x0a, 0x17, 0x41, 0x57, 0x53, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x19, 0x47, 0x69, - 0x74, 0x6c, 0x61, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x69, 0x74, 0x6c, - 0x61, 0x62, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x41, 0x0a, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x69, - 0x74, 0x6c, 0x61, 0x62, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x47, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x0b, 0x0a, - 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1c, 0x0a, 0x1a, 0x47, 0x69, - 0x74, 0x6c, 0x61, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xc4, 0x05, 0x0a, 0x12, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x4e, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, + 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, + 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x5b, 0x0a, + 0x14, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x5f, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x54, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x24, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x28, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x29, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x57, 0x0a, 0x08, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, + 0x61, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x12, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x6f, 0x0a, 0x1b, 0x65, 0x78, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x48, + 0x00, 0x52, 0x18, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x0f, 0x0a, 0x0d, 0x53, 0x79, 0x6e, 0x63, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x16, 0x0a, 0x14, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x54, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x5f, + 0x70, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x43, + 0x61, 0x50, 0x65, 0x6d, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x0a, 0x11, 0x52, + 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x41, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1e, 0x0a, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x5f, 0x70, 0x65, 0x6d, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x50, 0x65, 0x6d, + 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x41, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe2, 0x01, 0x0a, 0x16, 0x41, 0x57, 0x53, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x3e, + 0x0a, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x43, 0x41, 0x73, 0x12, 0x26, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x43, 0x41, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x63, + 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x3e, + 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x0b, + 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x12, 0x0a, 0x10, 0x41, + 0x57, 0x53, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x19, 0x0a, 0x17, 0x41, 0x57, 0x53, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x19, 0x47, + 0x69, 0x74, 0x6c, 0x61, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x69, 0x74, + 0x6c, 0x61, 0x62, 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x41, 0x0a, 0x06, 0x75, 0x70, 0x73, 0x65, + 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, + 0x69, 0x74, 0x6c, 0x61, 0x62, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x48, 0x00, 0x52, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x41, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x0f, 0x41, 0x57, 0x53, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x2b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, - 0x53, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x28, 0x01, 0x12, 0x79, 0x0a, 0x12, 0x47, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x2e, 0x2e, 0x61, 0x63, 0x63, + 0x61, 0x2e, 0x47, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x0b, + 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1c, 0x0a, 0x1a, 0x47, + 0x69, 0x74, 0x6c, 0x61, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xea, 0x01, 0x0a, 0x18, 0x45, 0x6e, + 0x74, 0x72, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x61, + 0x53, 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x04, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x40, 0x0a, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x6e, 0x74, 0x72, + 0x61, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, + 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x6e, + 0x74, 0x72, 0x61, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, + 0x00, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1b, 0x0a, 0x19, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x32, 0xbc, 0x06, 0x0a, 0x12, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x47, 0x72, + 0x61, 0x70, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4e, 0x0a, 0x05, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x12, 0x21, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x07, 0x47, 0x65, + 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x46, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x47, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x63, 0x63, + 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x65, 0x0a, 0x0c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x12, 0x28, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x47, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, - 0x57, 0x5a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, - 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, - 0x6f, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x57, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x5d, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x41, 0x73, 0x12, 0x26, + 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x41, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x43, 0x41, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x6e, 0x0a, 0x0f, 0x41, 0x57, 0x53, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x12, 0x2b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2c, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, + 0x79, 0x0a, 0x12, 0x47, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x2e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x69, 0x74, 0x6c, + 0x61, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x69, 0x74, 0x6c, + 0x61, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x76, 0x0a, 0x11, 0x45, 0x6e, + 0x74, 0x72, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, + 0x2d, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, + 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, + 0x30, 0x01, 0x42, 0x57, 0x5a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, + 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, + 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -1138,7 +1306,7 @@ func file_accessgraph_v1alpha_access_graph_service_proto_rawDescGZIP() []byte { return file_accessgraph_v1alpha_access_graph_service_proto_rawDescData } -var file_accessgraph_v1alpha_access_graph_service_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_accessgraph_v1alpha_access_graph_service_proto_msgTypes = make([]protoimpl.MessageInfo, 18) var file_accessgraph_v1alpha_access_graph_service_proto_goTypes = []interface{}{ (*QueryRequest)(nil), // 0: accessgraph.v1alpha.QueryRequest (*QueryResponse)(nil), // 1: accessgraph.v1alpha.QueryResponse @@ -1156,49 +1324,58 @@ var file_accessgraph_v1alpha_access_graph_service_proto_goTypes = []interface{}{ (*AWSEventsStreamResponse)(nil), // 13: accessgraph.v1alpha.AWSEventsStreamResponse (*GitlabEventsStreamRequest)(nil), // 14: accessgraph.v1alpha.GitlabEventsStreamRequest (*GitlabEventsStreamResponse)(nil), // 15: accessgraph.v1alpha.GitlabEventsStreamResponse - (*Node)(nil), // 16: accessgraph.v1alpha.Node - (*Edge)(nil), // 17: accessgraph.v1alpha.Edge - (*ResourceList)(nil), // 18: accessgraph.v1alpha.ResourceList - (*ResourceHeaderList)(nil), // 19: accessgraph.v1alpha.ResourceHeaderList - (*AccessListsMembers)(nil), // 20: accessgraph.v1alpha.AccessListsMembers - (*ExcludeAccessListsMembers)(nil), // 21: accessgraph.v1alpha.ExcludeAccessListsMembers - (*AWSResourceList)(nil), // 22: accessgraph.v1alpha.AWSResourceList - (*GitlabSyncOperation)(nil), // 23: accessgraph.v1alpha.GitlabSyncOperation - (*GitlabResourceList)(nil), // 24: accessgraph.v1alpha.GitlabResourceList + (*EntraEventsStreamRequest)(nil), // 16: accessgraph.v1alpha.EntraEventsStreamRequest + (*EntraEventsStreamResponse)(nil), // 17: accessgraph.v1alpha.EntraEventsStreamResponse + (*Node)(nil), // 18: accessgraph.v1alpha.Node + (*Edge)(nil), // 19: accessgraph.v1alpha.Edge + (*ResourceList)(nil), // 20: accessgraph.v1alpha.ResourceList + (*ResourceHeaderList)(nil), // 21: accessgraph.v1alpha.ResourceHeaderList + (*AccessListsMembers)(nil), // 22: accessgraph.v1alpha.AccessListsMembers + (*ExcludeAccessListsMembers)(nil), // 23: accessgraph.v1alpha.ExcludeAccessListsMembers + (*AWSResourceList)(nil), // 24: accessgraph.v1alpha.AWSResourceList + (*GitlabSyncOperation)(nil), // 25: accessgraph.v1alpha.GitlabSyncOperation + (*GitlabResourceList)(nil), // 26: accessgraph.v1alpha.GitlabResourceList + (*EntraSyncOperation)(nil), // 27: accessgraph.v1alpha.EntraSyncOperation + (*EntraResourceList)(nil), // 28: accessgraph.v1alpha.EntraResourceList } var file_accessgraph_v1alpha_access_graph_service_proto_depIdxs = []int32{ - 16, // 0: accessgraph.v1alpha.QueryResponse.nodes:type_name -> accessgraph.v1alpha.Node - 17, // 1: accessgraph.v1alpha.QueryResponse.edges:type_name -> accessgraph.v1alpha.Edge + 18, // 0: accessgraph.v1alpha.QueryResponse.nodes:type_name -> accessgraph.v1alpha.Node + 19, // 1: accessgraph.v1alpha.QueryResponse.edges:type_name -> accessgraph.v1alpha.Edge 5, // 2: accessgraph.v1alpha.EventsStreamRequest.sync:type_name -> accessgraph.v1alpha.SyncOperation - 18, // 3: accessgraph.v1alpha.EventsStreamRequest.upsert:type_name -> accessgraph.v1alpha.ResourceList - 19, // 4: accessgraph.v1alpha.EventsStreamRequest.delete:type_name -> accessgraph.v1alpha.ResourceHeaderList - 20, // 5: accessgraph.v1alpha.EventsStreamRequest.access_lists_members:type_name -> accessgraph.v1alpha.AccessListsMembers - 21, // 6: accessgraph.v1alpha.EventsStreamRequest.exclude_access_list_members:type_name -> accessgraph.v1alpha.ExcludeAccessListsMembers + 20, // 3: accessgraph.v1alpha.EventsStreamRequest.upsert:type_name -> accessgraph.v1alpha.ResourceList + 21, // 4: accessgraph.v1alpha.EventsStreamRequest.delete:type_name -> accessgraph.v1alpha.ResourceHeaderList + 22, // 5: accessgraph.v1alpha.EventsStreamRequest.access_lists_members:type_name -> accessgraph.v1alpha.AccessListsMembers + 23, // 6: accessgraph.v1alpha.EventsStreamRequest.exclude_access_list_members:type_name -> accessgraph.v1alpha.ExcludeAccessListsMembers 12, // 7: accessgraph.v1alpha.AWSEventsStreamRequest.sync:type_name -> accessgraph.v1alpha.AWSSyncOperation - 22, // 8: accessgraph.v1alpha.AWSEventsStreamRequest.upsert:type_name -> accessgraph.v1alpha.AWSResourceList - 22, // 9: accessgraph.v1alpha.AWSEventsStreamRequest.delete:type_name -> accessgraph.v1alpha.AWSResourceList - 23, // 10: accessgraph.v1alpha.GitlabEventsStreamRequest.sync:type_name -> accessgraph.v1alpha.GitlabSyncOperation - 24, // 11: accessgraph.v1alpha.GitlabEventsStreamRequest.upsert:type_name -> accessgraph.v1alpha.GitlabResourceList - 24, // 12: accessgraph.v1alpha.GitlabEventsStreamRequest.delete:type_name -> accessgraph.v1alpha.GitlabResourceList - 0, // 13: accessgraph.v1alpha.AccessGraphService.Query:input_type -> accessgraph.v1alpha.QueryRequest - 2, // 14: accessgraph.v1alpha.AccessGraphService.GetFile:input_type -> accessgraph.v1alpha.GetFileRequest - 4, // 15: accessgraph.v1alpha.AccessGraphService.EventsStream:input_type -> accessgraph.v1alpha.EventsStreamRequest - 7, // 16: accessgraph.v1alpha.AccessGraphService.Register:input_type -> accessgraph.v1alpha.RegisterRequest - 9, // 17: accessgraph.v1alpha.AccessGraphService.ReplaceCAs:input_type -> accessgraph.v1alpha.ReplaceCAsRequest - 11, // 18: accessgraph.v1alpha.AccessGraphService.AWSEventsStream:input_type -> accessgraph.v1alpha.AWSEventsStreamRequest - 14, // 19: accessgraph.v1alpha.AccessGraphService.GitlabEventsStream:input_type -> accessgraph.v1alpha.GitlabEventsStreamRequest - 1, // 20: accessgraph.v1alpha.AccessGraphService.Query:output_type -> accessgraph.v1alpha.QueryResponse - 3, // 21: accessgraph.v1alpha.AccessGraphService.GetFile:output_type -> accessgraph.v1alpha.GetFileResponse - 6, // 22: accessgraph.v1alpha.AccessGraphService.EventsStream:output_type -> accessgraph.v1alpha.EventsStreamResponse - 8, // 23: accessgraph.v1alpha.AccessGraphService.Register:output_type -> accessgraph.v1alpha.RegisterResponse - 10, // 24: accessgraph.v1alpha.AccessGraphService.ReplaceCAs:output_type -> accessgraph.v1alpha.ReplaceCAsResponse - 13, // 25: accessgraph.v1alpha.AccessGraphService.AWSEventsStream:output_type -> accessgraph.v1alpha.AWSEventsStreamResponse - 15, // 26: accessgraph.v1alpha.AccessGraphService.GitlabEventsStream:output_type -> accessgraph.v1alpha.GitlabEventsStreamResponse - 20, // [20:27] is the sub-list for method output_type - 13, // [13:20] is the sub-list for method input_type - 13, // [13:13] is the sub-list for extension type_name - 13, // [13:13] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 24, // 8: accessgraph.v1alpha.AWSEventsStreamRequest.upsert:type_name -> accessgraph.v1alpha.AWSResourceList + 24, // 9: accessgraph.v1alpha.AWSEventsStreamRequest.delete:type_name -> accessgraph.v1alpha.AWSResourceList + 25, // 10: accessgraph.v1alpha.GitlabEventsStreamRequest.sync:type_name -> accessgraph.v1alpha.GitlabSyncOperation + 26, // 11: accessgraph.v1alpha.GitlabEventsStreamRequest.upsert:type_name -> accessgraph.v1alpha.GitlabResourceList + 26, // 12: accessgraph.v1alpha.GitlabEventsStreamRequest.delete:type_name -> accessgraph.v1alpha.GitlabResourceList + 27, // 13: accessgraph.v1alpha.EntraEventsStreamRequest.sync:type_name -> accessgraph.v1alpha.EntraSyncOperation + 28, // 14: accessgraph.v1alpha.EntraEventsStreamRequest.upsert:type_name -> accessgraph.v1alpha.EntraResourceList + 28, // 15: accessgraph.v1alpha.EntraEventsStreamRequest.delete:type_name -> accessgraph.v1alpha.EntraResourceList + 0, // 16: accessgraph.v1alpha.AccessGraphService.Query:input_type -> accessgraph.v1alpha.QueryRequest + 2, // 17: accessgraph.v1alpha.AccessGraphService.GetFile:input_type -> accessgraph.v1alpha.GetFileRequest + 4, // 18: accessgraph.v1alpha.AccessGraphService.EventsStream:input_type -> accessgraph.v1alpha.EventsStreamRequest + 7, // 19: accessgraph.v1alpha.AccessGraphService.Register:input_type -> accessgraph.v1alpha.RegisterRequest + 9, // 20: accessgraph.v1alpha.AccessGraphService.ReplaceCAs:input_type -> accessgraph.v1alpha.ReplaceCAsRequest + 11, // 21: accessgraph.v1alpha.AccessGraphService.AWSEventsStream:input_type -> accessgraph.v1alpha.AWSEventsStreamRequest + 14, // 22: accessgraph.v1alpha.AccessGraphService.GitlabEventsStream:input_type -> accessgraph.v1alpha.GitlabEventsStreamRequest + 16, // 23: accessgraph.v1alpha.AccessGraphService.EntraEventsStream:input_type -> accessgraph.v1alpha.EntraEventsStreamRequest + 1, // 24: accessgraph.v1alpha.AccessGraphService.Query:output_type -> accessgraph.v1alpha.QueryResponse + 3, // 25: accessgraph.v1alpha.AccessGraphService.GetFile:output_type -> accessgraph.v1alpha.GetFileResponse + 6, // 26: accessgraph.v1alpha.AccessGraphService.EventsStream:output_type -> accessgraph.v1alpha.EventsStreamResponse + 8, // 27: accessgraph.v1alpha.AccessGraphService.Register:output_type -> accessgraph.v1alpha.RegisterResponse + 10, // 28: accessgraph.v1alpha.AccessGraphService.ReplaceCAs:output_type -> accessgraph.v1alpha.ReplaceCAsResponse + 13, // 29: accessgraph.v1alpha.AccessGraphService.AWSEventsStream:output_type -> accessgraph.v1alpha.AWSEventsStreamResponse + 15, // 30: accessgraph.v1alpha.AccessGraphService.GitlabEventsStream:output_type -> accessgraph.v1alpha.GitlabEventsStreamResponse + 17, // 31: accessgraph.v1alpha.AccessGraphService.EntraEventsStream:output_type -> accessgraph.v1alpha.EntraEventsStreamResponse + 24, // [24:32] is the sub-list for method output_type + 16, // [16:24] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name } func init() { file_accessgraph_v1alpha_access_graph_service_proto_init() } @@ -1207,6 +1384,7 @@ func file_accessgraph_v1alpha_access_graph_service_proto_init() { return } file_accessgraph_v1alpha_aws_proto_init() + file_accessgraph_v1alpha_entra_proto_init() file_accessgraph_v1alpha_gitlab_proto_init() file_accessgraph_v1alpha_graph_proto_init() file_accessgraph_v1alpha_resources_proto_init() @@ -1403,6 +1581,30 @@ func file_accessgraph_v1alpha_access_graph_service_proto_init() { return nil } } + file_accessgraph_v1alpha_access_graph_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntraEventsStreamRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accessgraph_v1alpha_access_graph_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntraEventsStreamResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_accessgraph_v1alpha_access_graph_service_proto_msgTypes[4].OneofWrappers = []interface{}{ (*EventsStreamRequest_Sync)(nil), @@ -1421,13 +1623,18 @@ func file_accessgraph_v1alpha_access_graph_service_proto_init() { (*GitlabEventsStreamRequest_Upsert)(nil), (*GitlabEventsStreamRequest_Delete)(nil), } + file_accessgraph_v1alpha_access_graph_service_proto_msgTypes[16].OneofWrappers = []interface{}{ + (*EntraEventsStreamRequest_Sync)(nil), + (*EntraEventsStreamRequest_Upsert)(nil), + (*EntraEventsStreamRequest_Delete)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_accessgraph_v1alpha_access_graph_service_proto_rawDesc, NumEnums: 0, - NumMessages: 16, + NumMessages: 18, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/proto/go/accessgraph/v1alpha/access_graph_service_grpc.pb.go b/gen/proto/go/accessgraph/v1alpha/access_graph_service_grpc.pb.go index 5645ad700e01c..7bc16918f03a0 100644 --- a/gen/proto/go/accessgraph/v1alpha/access_graph_service_grpc.pb.go +++ b/gen/proto/go/accessgraph/v1alpha/access_graph_service_grpc.pb.go @@ -43,6 +43,7 @@ const ( AccessGraphService_ReplaceCAs_FullMethodName = "/accessgraph.v1alpha.AccessGraphService/ReplaceCAs" AccessGraphService_AWSEventsStream_FullMethodName = "/accessgraph.v1alpha.AccessGraphService/AWSEventsStream" AccessGraphService_GitlabEventsStream_FullMethodName = "/accessgraph.v1alpha.AccessGraphService/GitlabEventsStream" + AccessGraphService_EntraEventsStream_FullMethodName = "/accessgraph.v1alpha.AccessGraphService/EntraEventsStream" ) // AccessGraphServiceClient is the client API for AccessGraphService service. @@ -82,6 +83,8 @@ type AccessGraphServiceClient interface { AWSEventsStream(ctx context.Context, opts ...grpc.CallOption) (AccessGraphService_AWSEventsStreamClient, error) // GitlabEventsStream is a stream of commands to the Gitlab importer. GitlabEventsStream(ctx context.Context, opts ...grpc.CallOption) (AccessGraphService_GitlabEventsStreamClient, error) + // EntraEventsStream is a stream of commands to the Entra ID SSO importer. + EntraEventsStream(ctx context.Context, opts ...grpc.CallOption) (AccessGraphService_EntraEventsStreamClient, error) } type accessGraphServiceClient struct { @@ -227,6 +230,37 @@ func (x *accessGraphServiceGitlabEventsStreamClient) Recv() (*GitlabEventsStream return m, nil } +func (c *accessGraphServiceClient) EntraEventsStream(ctx context.Context, opts ...grpc.CallOption) (AccessGraphService_EntraEventsStreamClient, error) { + stream, err := c.cc.NewStream(ctx, &AccessGraphService_ServiceDesc.Streams[3], AccessGraphService_EntraEventsStream_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &accessGraphServiceEntraEventsStreamClient{stream} + return x, nil +} + +type AccessGraphService_EntraEventsStreamClient interface { + Send(*EntraEventsStreamRequest) error + Recv() (*EntraEventsStreamResponse, error) + grpc.ClientStream +} + +type accessGraphServiceEntraEventsStreamClient struct { + grpc.ClientStream +} + +func (x *accessGraphServiceEntraEventsStreamClient) Send(m *EntraEventsStreamRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *accessGraphServiceEntraEventsStreamClient) Recv() (*EntraEventsStreamResponse, error) { + m := new(EntraEventsStreamResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + // AccessGraphServiceServer is the server API for AccessGraphService service. // All implementations must embed UnimplementedAccessGraphServiceServer // for forward compatibility @@ -264,6 +298,8 @@ type AccessGraphServiceServer interface { AWSEventsStream(AccessGraphService_AWSEventsStreamServer) error // GitlabEventsStream is a stream of commands to the Gitlab importer. GitlabEventsStream(AccessGraphService_GitlabEventsStreamServer) error + // EntraEventsStream is a stream of commands to the Entra ID SSO importer. + EntraEventsStream(AccessGraphService_EntraEventsStreamServer) error mustEmbedUnimplementedAccessGraphServiceServer() } @@ -292,6 +328,9 @@ func (UnimplementedAccessGraphServiceServer) AWSEventsStream(AccessGraphService_ func (UnimplementedAccessGraphServiceServer) GitlabEventsStream(AccessGraphService_GitlabEventsStreamServer) error { return status.Errorf(codes.Unimplemented, "method GitlabEventsStream not implemented") } +func (UnimplementedAccessGraphServiceServer) EntraEventsStream(AccessGraphService_EntraEventsStreamServer) error { + return status.Errorf(codes.Unimplemented, "method EntraEventsStream not implemented") +} func (UnimplementedAccessGraphServiceServer) mustEmbedUnimplementedAccessGraphServiceServer() {} // UnsafeAccessGraphServiceServer may be embedded to opt out of forward compatibility for this service. @@ -455,6 +494,32 @@ func (x *accessGraphServiceGitlabEventsStreamServer) Recv() (*GitlabEventsStream return m, nil } +func _AccessGraphService_EntraEventsStream_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(AccessGraphServiceServer).EntraEventsStream(&accessGraphServiceEntraEventsStreamServer{stream}) +} + +type AccessGraphService_EntraEventsStreamServer interface { + Send(*EntraEventsStreamResponse) error + Recv() (*EntraEventsStreamRequest, error) + grpc.ServerStream +} + +type accessGraphServiceEntraEventsStreamServer struct { + grpc.ServerStream +} + +func (x *accessGraphServiceEntraEventsStreamServer) Send(m *EntraEventsStreamResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *accessGraphServiceEntraEventsStreamServer) Recv() (*EntraEventsStreamRequest, error) { + m := new(EntraEventsStreamRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + // AccessGraphService_ServiceDesc is the grpc.ServiceDesc for AccessGraphService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -496,6 +561,12 @@ var AccessGraphService_ServiceDesc = grpc.ServiceDesc{ ServerStreams: true, ClientStreams: true, }, + { + StreamName: "EntraEventsStream", + Handler: _AccessGraphService_EntraEventsStream_Handler, + ServerStreams: true, + ClientStreams: true, + }, }, Metadata: "accessgraph/v1alpha/access_graph_service.proto", } diff --git a/gen/proto/go/accessgraph/v1alpha/aws.pb.go b/gen/proto/go/accessgraph/v1alpha/aws.pb.go index 19c8081c50601..5d2316a48e5a4 100644 --- a/gen/proto/go/accessgraph/v1alpha/aws.pb.go +++ b/gen/proto/go/accessgraph/v1alpha/aws.pb.go @@ -216,6 +216,8 @@ type AWSResource struct { // *AWSResource_EksClusterAccessEntry // *AWSResource_EksClusterAssociatedPolicy // *AWSResource_Rds + // *AWSResource_SamlProvider + // *AWSResource_OidcProvider Resource isAWSResource_Resource `protobuf_oneof:"resource"` } @@ -384,6 +386,20 @@ func (x *AWSResource) GetRds() *AWSRDSDatabaseV1 { return nil } +func (x *AWSResource) GetSamlProvider() *AWSSAMLProviderV1 { + if x, ok := x.GetResource().(*AWSResource_SamlProvider); ok { + return x.SamlProvider + } + return nil +} + +func (x *AWSResource) GetOidcProvider() *AWSOIDCProviderV1 { + if x, ok := x.GetResource().(*AWSResource_OidcProvider); ok { + return x.OidcProvider + } + return nil +} + type isAWSResource_Resource interface { isAWSResource_Resource() } @@ -481,6 +497,16 @@ type AWSResource_Rds struct { Rds *AWSRDSDatabaseV1 `protobuf:"bytes,18,opt,name=rds,proto3,oneof"` } +type AWSResource_SamlProvider struct { + // saml_provider is an AWS IAM SAML Identity Provider + SamlProvider *AWSSAMLProviderV1 `protobuf:"bytes,19,opt,name=saml_provider,json=samlProvider,proto3,oneof"` +} + +type AWSResource_OidcProvider struct { + // oidc_provider is an AWS IAM OpenID Connect Identity Provider + OidcProvider *AWSOIDCProviderV1 `protobuf:"bytes,20,opt,name=oidc_provider,json=oidcProvider,proto3,oneof"` +} + func (*AWSResource_User) isAWSResource_Resource() {} func (*AWSResource_Group) isAWSResource_Resource() {} @@ -517,6 +543,10 @@ func (*AWSResource_EksClusterAssociatedPolicy) isAWSResource_Resource() {} func (*AWSResource_Rds) isAWSResource_Resource() {} +func (*AWSResource_SamlProvider) isAWSResource_Resource() {} + +func (*AWSResource_OidcProvider) isAWSResource_Resource() {} + // AWSUserInlinePolicyV1 is a policy that is inlined to an AWS user. type AWSUserInlinePolicyV1 struct { state protoimpl.MessageState @@ -2861,6 +2891,221 @@ func (x *AWSRDSEngineV1) GetVersion() string { return "" } +// AWSSAMLProviderV1 defines the SAML identity provider details. +type AWSSAMLProviderV1 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // arn is the provider ARN. + Arn string `protobuf:"bytes,1,opt,name=arn,proto3" json:"arn,omitempty"` + // created_at is the time when the SAML provider was created. + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + // valid_until is the expiration date and time for the SAML provider. + ValidUntil *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=valid_until,json=validUntil,proto3" json:"valid_until,omitempty"` + // tags is the list of tags that are attached to the SAML provider. + Tags []*AWSTag `protobuf:"bytes,4,rep,name=tags,proto3" json:"tags,omitempty"` + // account_id is the ID of the AWS account that the provider belongs to. + AccountId string `protobuf:"bytes,5,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + // entity_id is the SAML entity ID for this provider. + EntityId string `protobuf:"bytes,6,opt,name=entity_id,json=entityId,proto3" json:"entity_id,omitempty"` + // sso_urls is a list of single sign-on service URLs for this identity provider. + SsoUrls []string `protobuf:"bytes,7,rep,name=sso_urls,json=ssoUrls,proto3" json:"sso_urls,omitempty"` + // signing_certificates is a list of signing certificates for this identity provider. + SigningCertificates []string `protobuf:"bytes,8,rep,name=signing_certificates,json=signingCertificates,proto3" json:"signing_certificates,omitempty"` +} + +func (x *AWSSAMLProviderV1) Reset() { + *x = AWSSAMLProviderV1{} + if protoimpl.UnsafeEnabled { + mi := &file_accessgraph_v1alpha_aws_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AWSSAMLProviderV1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AWSSAMLProviderV1) ProtoMessage() {} + +func (x *AWSSAMLProviderV1) ProtoReflect() protoreflect.Message { + mi := &file_accessgraph_v1alpha_aws_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AWSSAMLProviderV1.ProtoReflect.Descriptor instead. +func (*AWSSAMLProviderV1) Descriptor() ([]byte, []int) { + return file_accessgraph_v1alpha_aws_proto_rawDescGZIP(), []int{29} +} + +func (x *AWSSAMLProviderV1) GetArn() string { + if x != nil { + return x.Arn + } + return "" +} + +func (x *AWSSAMLProviderV1) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *AWSSAMLProviderV1) GetValidUntil() *timestamppb.Timestamp { + if x != nil { + return x.ValidUntil + } + return nil +} + +func (x *AWSSAMLProviderV1) GetTags() []*AWSTag { + if x != nil { + return x.Tags + } + return nil +} + +func (x *AWSSAMLProviderV1) GetAccountId() string { + if x != nil { + return x.AccountId + } + return "" +} + +func (x *AWSSAMLProviderV1) GetEntityId() string { + if x != nil { + return x.EntityId + } + return "" +} + +func (x *AWSSAMLProviderV1) GetSsoUrls() []string { + if x != nil { + return x.SsoUrls + } + return nil +} + +func (x *AWSSAMLProviderV1) GetSigningCertificates() []string { + if x != nil { + return x.SigningCertificates + } + return nil +} + +// AWSOIDCProviderV1 defines the OIDC identity provider details. +type AWSOIDCProviderV1 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // arn is the provider ARN. + Arn string `protobuf:"bytes,1,opt,name=arn,proto3" json:"arn,omitempty"` + // created_at is the time when the OIDC provider was created. + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + // tags is the list of tags that are attached to the SAML provider. + Tags []*AWSTag `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty"` + // account_id is the ID of the AWS account that the provider belongs to. + AccountId string `protobuf:"bytes,4,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + // client_ids is a list of client IDs (audiences) associated with this OIDC provider. + ClientIds []string `protobuf:"bytes,5,rep,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"` + // thumbprints is a list of certificate thumbprints for this OIDC provider. + Thumbprints []string `protobuf:"bytes,6,rep,name=thumbprints,proto3" json:"thumbprints,omitempty"` + // url is the URL for this OIDC provider. + Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` +} + +func (x *AWSOIDCProviderV1) Reset() { + *x = AWSOIDCProviderV1{} + if protoimpl.UnsafeEnabled { + mi := &file_accessgraph_v1alpha_aws_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AWSOIDCProviderV1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AWSOIDCProviderV1) ProtoMessage() {} + +func (x *AWSOIDCProviderV1) ProtoReflect() protoreflect.Message { + mi := &file_accessgraph_v1alpha_aws_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AWSOIDCProviderV1.ProtoReflect.Descriptor instead. +func (*AWSOIDCProviderV1) Descriptor() ([]byte, []int) { + return file_accessgraph_v1alpha_aws_proto_rawDescGZIP(), []int{30} +} + +func (x *AWSOIDCProviderV1) GetArn() string { + if x != nil { + return x.Arn + } + return "" +} + +func (x *AWSOIDCProviderV1) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *AWSOIDCProviderV1) GetTags() []*AWSTag { + if x != nil { + return x.Tags + } + return nil +} + +func (x *AWSOIDCProviderV1) GetAccountId() string { + if x != nil { + return x.AccountId + } + return "" +} + +func (x *AWSOIDCProviderV1) GetClientIds() []string { + if x != nil { + return x.ClientIds + } + return nil +} + +func (x *AWSOIDCProviderV1) GetThumbprints() []string { + if x != nil { + return x.Thumbprints + } + return nil +} + +func (x *AWSOIDCProviderV1) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + var File_accessgraph_v1alpha_aws_proto protoreflect.FileDescriptor var file_accessgraph_v1alpha_aws_proto_rawDesc = []byte{ @@ -2878,7 +3123,7 @@ var file_accessgraph_v1alpha_aws_proto_rawDesc = []byte{ 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xd6, 0x0b, 0x0a, 0x0b, 0x41, 0x57, 0x53, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xf4, 0x0c, 0x0a, 0x0b, 0x41, 0x57, 0x53, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, @@ -2971,437 +3216,485 @@ var file_accessgraph_v1alpha_aws_proto_rawDesc = []byte{ 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x44, 0x53, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x56, 0x31, 0x48, 0x00, - 0x52, 0x03, 0x72, 0x64, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x15, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x6c, - 0x69, 0x6e, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, - 0x56, 0x31, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd5, 0x03, 0x0a, 0x0b, 0x41, 0x57, 0x53, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, - 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1b, - 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x04, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, - 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x22, 0xbb, 0x01, 0x0a, 0x0a, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x31, 0x12, - 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, - 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x7e, - 0x0a, 0x0f, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x56, - 0x31, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x56, 0x31, 0x52, - 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x56, 0x31, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0xa0, - 0x03, 0x0a, 0x09, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, - 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, - 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x70, 0x61, 0x73, - 0x73, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x12, 0x62, 0x0a, - 0x14, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x61, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x63, + 0x52, 0x03, 0x72, 0x64, 0x73, 0x12, 0x4d, 0x0a, 0x0d, 0x73, 0x61, 0x6d, 0x6c, 0x5f, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x53, 0x41, 0x4d, 0x4c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x61, 0x6d, 0x6c, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x0d, 0x6f, 0x69, 0x64, 0x63, 0x5f, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x56, 0x31, 0x52, 0x13, 0x70, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, - 0x79, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x22, 0x4e, 0x0a, 0x06, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x1a, 0x55, 0x73, 0x65, 0x72, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x56, 0x31, - 0x12, 0x38, 0x0a, 0x18, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x16, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x41, 0x72, 0x6e, 0x12, 0x6d, 0x0a, 0x19, 0x70, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, - 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x17, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9a, 0x03, 0x0a, 0x0d, 0x41, 0x57, - 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x56, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0b, - 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6c, - 0x61, 0x75, 0x6e, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, - 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x64, 0x6e, 0x73, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x44, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x18, 0x69, 0x61, 0x6d, - 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x69, 0x61, 0x6d, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x72, 0x6e, - 0x12, 0x44, 0x0a, 0x0f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x4b, - 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xaf, 0x01, 0x0a, 0x17, 0x41, 0x57, 0x53, 0x55, 0x73, - 0x65, 0x72, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, - 0x65, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x61, 0x2e, 0x41, 0x57, 0x53, 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x69, 0x64, 0x63, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, + 0xc4, 0x01, 0x0a, 0x15, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x56, 0x31, - 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x52, - 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x10, 0x41, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x1f, 0x0a, 0x0b, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x61, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x22, - 0xb3, 0x01, 0x0a, 0x18, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x05, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x2e, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x31, 0x52, 0x05, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x52, 0x08, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xb8, 0x01, 0x0a, 0x16, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, - 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x35, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, - 0x31, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x22, 0xc1, 0x01, 0x0a, 0x0d, 0x41, 0x57, 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x56, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1b, - 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x37, 0x0a, 0x04, 0x61, - 0x63, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, - 0x41, 0x57, 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x43, 0x4c, 0x52, 0x04, - 0x61, 0x63, 0x6c, 0x73, 0x22, 0x76, 0x0a, 0x0e, 0x41, 0x57, 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x41, 0x43, 0x4c, 0x12, 0x44, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd5, 0x03, 0x0a, 0x0b, 0x41, 0x57, 0x53, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x41, 0x74, + 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, - 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x43, 0x4c, 0x47, 0x72, 0x61, 0x6e, - 0x74, 0x65, 0x65, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x12, 0x1e, 0x0a, 0x0a, - 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x01, 0x0a, - 0x15, 0x41, 0x57, 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x43, 0x4c, 0x47, - 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, - 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x75, 0x72, 0x69, 0x22, 0xc5, 0x04, 0x0a, 0x09, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, - 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x61, 0x72, 0x6e, 0x12, 0x3d, 0x0a, 0x1b, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x5f, 0x72, - 0x6f, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x18, 0x61, 0x73, 0x73, 0x75, 0x6d, - 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x4b, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x61, 0x0a, 0x14, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x56, 0x31, 0x52, - 0x13, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x61, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x12, 0x49, 0x0a, 0x0e, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, - 0x75, 0x73, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x56, 0x31, 0x52, - 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc3, 0x01, 0x0a, - 0x19, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x56, 0x31, 0x12, 0x38, 0x0a, 0x18, 0x70, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, - 0x72, 0x79, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, - 0x79, 0x41, 0x72, 0x6e, 0x12, 0x6c, 0x0a, 0x19, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x6f, - 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x17, 0x70, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, - 0x70, 0x65, 0x22, 0x6a, 0x0a, 0x0e, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73, - 0x65, 0x64, 0x56, 0x31, 0x12, 0x40, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, - 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x73, - 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0xc7, - 0x01, 0x0a, 0x15, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x39, 0x0a, 0x08, 0x61, 0x77, 0x73, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, - 0x65, 0x56, 0x31, 0x52, 0x07, 0x61, 0x77, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x4a, 0x04, 0x08, 0x02, - 0x10, 0x03, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xc2, 0x01, 0x0a, 0x17, 0x41, 0x57, 0x53, - 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x69, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, + 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xbb, + 0x01, 0x0a, 0x0a, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x31, 0x12, 0x10, 0x0a, + 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, + 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x0f, + 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x56, 0x31, 0x12, + 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x56, 0x31, 0x52, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x56, 0x31, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0xa0, 0x03, 0x0a, + 0x09, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x48, 0x0a, 0x12, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x12, 0x62, 0x0a, 0x14, 0x70, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x61, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x56, 0x31, 0x52, 0x13, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x12, + 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, + 0x4e, 0x0a, 0x06, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0xc5, 0x01, 0x0a, 0x1a, 0x55, 0x73, 0x65, 0x72, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x56, 0x31, 0x12, 0x38, + 0x0a, 0x18, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x16, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x61, 0x72, 0x79, 0x41, 0x72, 0x6e, 0x12, 0x6d, 0x0a, 0x19, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x17, + 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9a, 0x03, 0x0a, 0x0d, 0x41, 0x57, 0x53, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x56, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x6c, 0x61, + 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6c, 0x61, 0x75, + 0x6e, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, + 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, + 0x26, 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x44, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x18, 0x69, 0x61, 0x6d, 0x5f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x61, 0x72, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x69, 0x61, 0x6d, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x72, 0x6e, 0x12, 0x44, + 0x0a, 0x0f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x4b, 0x65, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xaf, 0x01, 0x0a, 0x17, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, + 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x56, 0x31, 0x52, 0x04, + 0x75, 0x73, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x08, 0x61, 0x77, 0x73, 0x5f, 0x72, 0x6f, - 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x10, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, + 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x22, 0xb3, 0x01, + 0x0a, 0x18, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x05, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, + 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x31, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x22, 0xb8, 0x01, 0x0a, 0x16, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x1f, + 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x35, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x31, 0x52, + 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc1, + 0x01, 0x0a, 0x0d, 0x41, 0x57, 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x31, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, + 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, + 0x69, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x37, 0x0a, 0x04, 0x61, 0x63, 0x6c, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, + 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x43, 0x4c, 0x52, 0x04, 0x61, 0x63, + 0x6c, 0x73, 0x22, 0x76, 0x0a, 0x0e, 0x41, 0x57, 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x41, 0x43, 0x4c, 0x12, 0x44, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x53, + 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x43, 0x4c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, + 0x65, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x01, 0x0a, 0x15, 0x41, + 0x57, 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x43, 0x4c, 0x47, 0x72, 0x61, + 0x6e, 0x74, 0x65, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x69, 0x22, 0xc5, 0x04, 0x0a, 0x09, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x31, + 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, + 0x72, 0x6e, 0x12, 0x3d, 0x0a, 0x1b, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x5f, 0x72, 0x6f, 0x6c, + 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x18, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x52, + 0x6f, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, + 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, + 0x61, 0x0a, 0x14, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x56, 0x31, 0x52, 0x13, 0x70, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, + 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x12, 0x49, 0x0a, 0x0e, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, + 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, + 0x6f, 0x6c, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x56, 0x31, 0x52, 0x0c, 0x72, + 0x6f, 0x6c, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x19, 0x52, + 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x56, 0x31, 0x12, 0x38, 0x0a, 0x18, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, + 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x41, + 0x72, 0x6e, 0x12, 0x6c, 0x0a, 0x19, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x6f, 0x6c, 0x65, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x17, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x22, 0x6a, 0x0a, 0x0e, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, + 0x56, 0x31, 0x12, 0x40, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, + 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, + 0x44, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0xc7, 0x01, 0x0a, + 0x15, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x39, 0x0a, 0x08, 0x61, 0x77, 0x73, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x56, + 0x31, 0x52, 0x07, 0x61, 0x77, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, + 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xc2, 0x01, 0x0a, 0x17, 0x41, 0x57, 0x53, 0x52, 0x6f, + 0x6c, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, + 0x65, 0x73, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x52, 0x08, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x08, 0x61, 0x77, 0x73, 0x5f, 0x72, 0x6f, 0x6c, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, + 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x07, 0x61, 0x77, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x4a, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xe1, 0x02, 0x0a, 0x14, + 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, + 0x64, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x34, 0x0a, 0x05, 0x72, 0x6f, 0x6c, + 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, - 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x07, 0x61, 0x77, 0x73, 0x52, 0x6f, 0x6c, - 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xe1, 0x02, - 0x0a, 0x14, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x34, 0x0a, 0x05, 0x72, - 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, - 0x73, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, + 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, + 0x8c, 0x02, 0x0a, 0x0f, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x56, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, + 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xd0, + 0x03, 0x0a, 0x1a, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x56, 0x31, 0x12, 0x3e, 0x0a, + 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x56, 0x31, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x0a, + 0x10, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x72, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x41, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x6b, + 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, + 0x3b, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x41, 0x72, + 0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x22, 0x8c, 0x02, 0x0a, 0x0f, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x56, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x22, 0x81, 0x03, 0x0a, 0x1e, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x41, 0x73, 0x73, 0x6f, + 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x56, 0x31, 0x12, 0x3e, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x45, + 0x4b, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x31, 0x52, 0x07, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, + 0x6c, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x69, + 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x41, 0x72, 0x6e, 0x12, 0x3e, 0x0a, 0x05, 0x73, 0x63, 0x6f, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, + 0x57, 0x53, 0x45, 0x4b, 0x53, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x70, 0x65, + 0x56, 0x31, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x61, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x61, 0x73, + 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x6d, 0x6f, + 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, - 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, - 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, - 0x22, 0xd0, 0x03, 0x0a, 0x1a, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x56, 0x31, 0x12, - 0x3e, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x56, 0x31, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, - 0x28, 0x0a, 0x10, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, - 0x61, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x41, 0x72, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x13, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x56, 0x31, 0x12, 0x1e, 0x0a, 0x0a, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x22, 0xff, 0x02, 0x0a, 0x10, 0x41, 0x57, 0x53, 0x52, 0x44, 0x53, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x44, 0x53, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x56, 0x31, + 0x52, 0x0d, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, + 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x49, 0x64, 0x22, 0x42, 0x0a, 0x0e, 0x41, 0x57, 0x53, 0x52, 0x44, 0x53, 0x45, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x56, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xd8, 0x02, 0x0a, 0x11, 0x41, 0x57, 0x53, 0x53, 0x41, + 0x4d, 0x4c, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, + 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x5f, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x55, 0x6e, 0x74, 0x69, 0x6c, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, + 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x73, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x73, 0x6f, 0x55, 0x72, 0x6c, 0x73, 0x12, 0x31, + 0x0a, 0x14, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x73, 0x69, + 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x73, 0x22, 0x83, 0x02, 0x0a, 0x11, 0x41, 0x57, 0x53, 0x4f, 0x49, 0x44, 0x43, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x65, 0x73, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x10, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, - 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x5f, 0x61, 0x72, 0x6e, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, - 0x41, 0x72, 0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x22, 0x81, 0x03, 0x0a, 0x1e, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x41, 0x73, - 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x3e, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, - 0x53, 0x45, 0x4b, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x31, 0x52, 0x07, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, - 0x70, 0x61, 0x6c, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, - 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x41, 0x72, 0x6e, 0x12, 0x3e, 0x0a, 0x05, 0x73, - 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, - 0x70, 0x65, 0x56, 0x31, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x61, - 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, - 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, - 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6d, - 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x72, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x13, 0x41, 0x57, 0x53, 0x45, 0x4b, - 0x53, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x56, 0x31, 0x12, 0x1e, - 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x22, 0xff, 0x02, 0x0a, 0x10, 0x41, 0x57, 0x53, 0x52, 0x44, 0x53, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x44, 0x53, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, - 0x56, 0x31, 0x52, 0x0d, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2f, 0x0a, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x16, 0x0a, - 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x49, 0x64, 0x22, 0x42, 0x0a, 0x0e, 0x41, 0x57, 0x53, 0x52, 0x44, 0x53, 0x45, 0x6e, - 0x67, 0x69, 0x6e, 0x65, 0x56, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2a, 0x90, 0x01, 0x0a, 0x1c, 0x55, 0x73, 0x65, - 0x72, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x2b, 0x55, 0x53, 0x45, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x2a, 0x90, 0x01, 0x0a, 0x1c, 0x55, 0x73, 0x65, 0x72, + 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x2b, 0x55, 0x53, 0x45, 0x52, + 0x53, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x42, 0x4f, + 0x55, 0x4e, 0x44, 0x41, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x3f, 0x0a, 0x3b, 0x55, 0x53, 0x45, 0x52, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x42, + 0x4f, 0x55, 0x4e, 0x44, 0x41, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x45, 0x52, + 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x41, 0x52, + 0x59, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x01, 0x2a, 0x8d, 0x01, 0x0a, 0x1b, 0x52, + 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x2a, 0x52, 0x4f, + 0x4c, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x41, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x3f, 0x0a, 0x3b, 0x55, 0x53, - 0x45, 0x52, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, - 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x41, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x45, - 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x41, - 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x01, 0x2a, 0x8d, 0x01, 0x0a, 0x1b, - 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x2a, 0x52, - 0x4f, 0x4c, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, - 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x41, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x3e, 0x0a, 0x3a, 0x52, - 0x4f, 0x4c, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, - 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x41, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x45, - 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x41, - 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x01, 0x42, 0x57, 0x5a, 0x55, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x3b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x3e, 0x0a, 0x3a, 0x52, 0x4f, + 0x4c, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x42, + 0x4f, 0x55, 0x4e, 0x44, 0x41, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x45, 0x52, + 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x41, 0x52, + 0x59, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x01, 0x42, 0x57, 0x5a, 0x55, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, + 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x3b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3417,7 +3710,7 @@ func file_accessgraph_v1alpha_aws_proto_rawDescGZIP() []byte { } var file_accessgraph_v1alpha_aws_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_accessgraph_v1alpha_aws_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_accessgraph_v1alpha_aws_proto_msgTypes = make([]protoimpl.MessageInfo, 31) var file_accessgraph_v1alpha_aws_proto_goTypes = []interface{}{ (UsersPermissionsBoundaryType)(0), // 0: accessgraph.v1alpha.UsersPermissionsBoundaryType (RolePermissionsBoundaryType)(0), // 1: accessgraph.v1alpha.RolePermissionsBoundaryType @@ -3450,9 +3743,11 @@ var file_accessgraph_v1alpha_aws_proto_goTypes = []interface{}{ (*AWSEKSAccessScopeV1)(nil), // 28: accessgraph.v1alpha.AWSEKSAccessScopeV1 (*AWSRDSDatabaseV1)(nil), // 29: accessgraph.v1alpha.AWSRDSDatabaseV1 (*AWSRDSEngineV1)(nil), // 30: accessgraph.v1alpha.AWSRDSEngineV1 - (*timestamppb.Timestamp)(nil), // 31: google.protobuf.Timestamp - (*wrapperspb.StringValue)(nil), // 32: google.protobuf.StringValue - (*durationpb.Duration)(nil), // 33: google.protobuf.Duration + (*AWSSAMLProviderV1)(nil), // 31: accessgraph.v1alpha.AWSSAMLProviderV1 + (*AWSOIDCProviderV1)(nil), // 32: accessgraph.v1alpha.AWSOIDCProviderV1 + (*timestamppb.Timestamp)(nil), // 33: google.protobuf.Timestamp + (*wrapperspb.StringValue)(nil), // 34: google.protobuf.StringValue + (*durationpb.Duration)(nil), // 35: google.protobuf.Duration } var file_accessgraph_v1alpha_aws_proto_depIdxs = []int32{ 3, // 0: accessgraph.v1alpha.AWSResourceList.resources:type_name -> accessgraph.v1alpha.AWSResource @@ -3474,61 +3769,68 @@ var file_accessgraph_v1alpha_aws_proto_depIdxs = []int32{ 26, // 16: accessgraph.v1alpha.AWSResource.eks_cluster_access_entry:type_name -> accessgraph.v1alpha.AWSEKSClusterAccessEntryV1 27, // 17: accessgraph.v1alpha.AWSResource.eks_cluster_associated_policy:type_name -> accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1 29, // 18: accessgraph.v1alpha.AWSResource.rds:type_name -> accessgraph.v1alpha.AWSRDSDatabaseV1 - 8, // 19: accessgraph.v1alpha.AWSUserInlinePolicyV1.user:type_name -> accessgraph.v1alpha.AWSUserV1 - 31, // 20: accessgraph.v1alpha.AWSPolicyV1.created_at:type_name -> google.protobuf.Timestamp - 9, // 21: accessgraph.v1alpha.AWSPolicyV1.tags:type_name -> accessgraph.v1alpha.AWSTag - 31, // 22: accessgraph.v1alpha.AWSPolicyV1.updated_at:type_name -> google.protobuf.Timestamp - 31, // 23: accessgraph.v1alpha.AWSGroupV1.created_at:type_name -> google.protobuf.Timestamp - 8, // 24: accessgraph.v1alpha.AWSUserGroupsV1.user:type_name -> accessgraph.v1alpha.AWSUserV1 - 6, // 25: accessgraph.v1alpha.AWSUserGroupsV1.groups:type_name -> accessgraph.v1alpha.AWSGroupV1 - 31, // 26: accessgraph.v1alpha.AWSUserV1.created_at:type_name -> google.protobuf.Timestamp - 31, // 27: accessgraph.v1alpha.AWSUserV1.password_last_used:type_name -> google.protobuf.Timestamp - 10, // 28: accessgraph.v1alpha.AWSUserV1.permissions_boundary:type_name -> accessgraph.v1alpha.UsersPermissionsBoundaryV1 - 9, // 29: accessgraph.v1alpha.AWSUserV1.tags:type_name -> accessgraph.v1alpha.AWSTag - 32, // 30: accessgraph.v1alpha.AWSTag.value:type_name -> google.protobuf.StringValue - 0, // 31: accessgraph.v1alpha.UsersPermissionsBoundaryV1.permissions_boundary_type:type_name -> accessgraph.v1alpha.UsersPermissionsBoundaryType - 31, // 32: accessgraph.v1alpha.AWSInstanceV1.launch_time:type_name -> google.protobuf.Timestamp - 9, // 33: accessgraph.v1alpha.AWSInstanceV1.tags:type_name -> accessgraph.v1alpha.AWSTag - 32, // 34: accessgraph.v1alpha.AWSInstanceV1.iam_instance_profile_arn:type_name -> google.protobuf.StringValue - 32, // 35: accessgraph.v1alpha.AWSInstanceV1.launch_key_name:type_name -> google.protobuf.StringValue - 8, // 36: accessgraph.v1alpha.AWSUserAttachedPolicies.user:type_name -> accessgraph.v1alpha.AWSUserV1 - 13, // 37: accessgraph.v1alpha.AWSUserAttachedPolicies.policies:type_name -> accessgraph.v1alpha.AttachedPolicyV1 - 6, // 38: accessgraph.v1alpha.AWSGroupAttachedPolicies.group:type_name -> accessgraph.v1alpha.AWSGroupV1 - 13, // 39: accessgraph.v1alpha.AWSGroupAttachedPolicies.policies:type_name -> accessgraph.v1alpha.AttachedPolicyV1 - 6, // 40: accessgraph.v1alpha.AWSGroupInlinePolicyV1.group:type_name -> accessgraph.v1alpha.AWSGroupV1 - 17, // 41: accessgraph.v1alpha.AWSS3BucketV1.acls:type_name -> accessgraph.v1alpha.AWSS3BucketACL - 18, // 42: accessgraph.v1alpha.AWSS3BucketACL.grantee:type_name -> accessgraph.v1alpha.AWSS3BucketACLGrantee - 31, // 43: accessgraph.v1alpha.AWSRoleV1.created_at:type_name -> google.protobuf.Timestamp - 33, // 44: accessgraph.v1alpha.AWSRoleV1.max_session_duration:type_name -> google.protobuf.Duration - 20, // 45: accessgraph.v1alpha.AWSRoleV1.permissions_boundary:type_name -> accessgraph.v1alpha.RolePermissionsBoundaryV1 - 9, // 46: accessgraph.v1alpha.AWSRoleV1.tags:type_name -> accessgraph.v1alpha.AWSTag - 21, // 47: accessgraph.v1alpha.AWSRoleV1.role_last_used:type_name -> accessgraph.v1alpha.RoleLastUsedV1 - 1, // 48: accessgraph.v1alpha.RolePermissionsBoundaryV1.permissions_boundary_type:type_name -> accessgraph.v1alpha.RolePermissionsBoundaryType - 31, // 49: accessgraph.v1alpha.RoleLastUsedV1.last_used_date:type_name -> google.protobuf.Timestamp - 19, // 50: accessgraph.v1alpha.AWSRoleInlinePolicyV1.aws_role:type_name -> accessgraph.v1alpha.AWSRoleV1 - 13, // 51: accessgraph.v1alpha.AWSRoleAttachedPolicies.policies:type_name -> accessgraph.v1alpha.AttachedPolicyV1 - 19, // 52: accessgraph.v1alpha.AWSRoleAttachedPolicies.aws_role:type_name -> accessgraph.v1alpha.AWSRoleV1 - 31, // 53: accessgraph.v1alpha.AWSInstanceProfileV1.created_at:type_name -> google.protobuf.Timestamp - 19, // 54: accessgraph.v1alpha.AWSInstanceProfileV1.roles:type_name -> accessgraph.v1alpha.AWSRoleV1 - 9, // 55: accessgraph.v1alpha.AWSInstanceProfileV1.tags:type_name -> accessgraph.v1alpha.AWSTag - 31, // 56: accessgraph.v1alpha.AWSEKSClusterV1.created_at:type_name -> google.protobuf.Timestamp - 9, // 57: accessgraph.v1alpha.AWSEKSClusterV1.tags:type_name -> accessgraph.v1alpha.AWSTag - 25, // 58: accessgraph.v1alpha.AWSEKSClusterAccessEntryV1.cluster:type_name -> accessgraph.v1alpha.AWSEKSClusterV1 - 31, // 59: accessgraph.v1alpha.AWSEKSClusterAccessEntryV1.created_at:type_name -> google.protobuf.Timestamp - 31, // 60: accessgraph.v1alpha.AWSEKSClusterAccessEntryV1.modified_at:type_name -> google.protobuf.Timestamp - 9, // 61: accessgraph.v1alpha.AWSEKSClusterAccessEntryV1.tags:type_name -> accessgraph.v1alpha.AWSTag - 25, // 62: accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1.cluster:type_name -> accessgraph.v1alpha.AWSEKSClusterV1 - 28, // 63: accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1.scope:type_name -> accessgraph.v1alpha.AWSEKSAccessScopeV1 - 31, // 64: accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1.associated_at:type_name -> google.protobuf.Timestamp - 31, // 65: accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1.modified_at:type_name -> google.protobuf.Timestamp - 30, // 66: accessgraph.v1alpha.AWSRDSDatabaseV1.engine_details:type_name -> accessgraph.v1alpha.AWSRDSEngineV1 - 31, // 67: accessgraph.v1alpha.AWSRDSDatabaseV1.created_at:type_name -> google.protobuf.Timestamp - 9, // 68: accessgraph.v1alpha.AWSRDSDatabaseV1.tags:type_name -> accessgraph.v1alpha.AWSTag - 69, // [69:69] is the sub-list for method output_type - 69, // [69:69] is the sub-list for method input_type - 69, // [69:69] is the sub-list for extension type_name - 69, // [69:69] is the sub-list for extension extendee - 0, // [0:69] is the sub-list for field type_name + 31, // 19: accessgraph.v1alpha.AWSResource.saml_provider:type_name -> accessgraph.v1alpha.AWSSAMLProviderV1 + 32, // 20: accessgraph.v1alpha.AWSResource.oidc_provider:type_name -> accessgraph.v1alpha.AWSOIDCProviderV1 + 8, // 21: accessgraph.v1alpha.AWSUserInlinePolicyV1.user:type_name -> accessgraph.v1alpha.AWSUserV1 + 33, // 22: accessgraph.v1alpha.AWSPolicyV1.created_at:type_name -> google.protobuf.Timestamp + 9, // 23: accessgraph.v1alpha.AWSPolicyV1.tags:type_name -> accessgraph.v1alpha.AWSTag + 33, // 24: accessgraph.v1alpha.AWSPolicyV1.updated_at:type_name -> google.protobuf.Timestamp + 33, // 25: accessgraph.v1alpha.AWSGroupV1.created_at:type_name -> google.protobuf.Timestamp + 8, // 26: accessgraph.v1alpha.AWSUserGroupsV1.user:type_name -> accessgraph.v1alpha.AWSUserV1 + 6, // 27: accessgraph.v1alpha.AWSUserGroupsV1.groups:type_name -> accessgraph.v1alpha.AWSGroupV1 + 33, // 28: accessgraph.v1alpha.AWSUserV1.created_at:type_name -> google.protobuf.Timestamp + 33, // 29: accessgraph.v1alpha.AWSUserV1.password_last_used:type_name -> google.protobuf.Timestamp + 10, // 30: accessgraph.v1alpha.AWSUserV1.permissions_boundary:type_name -> accessgraph.v1alpha.UsersPermissionsBoundaryV1 + 9, // 31: accessgraph.v1alpha.AWSUserV1.tags:type_name -> accessgraph.v1alpha.AWSTag + 34, // 32: accessgraph.v1alpha.AWSTag.value:type_name -> google.protobuf.StringValue + 0, // 33: accessgraph.v1alpha.UsersPermissionsBoundaryV1.permissions_boundary_type:type_name -> accessgraph.v1alpha.UsersPermissionsBoundaryType + 33, // 34: accessgraph.v1alpha.AWSInstanceV1.launch_time:type_name -> google.protobuf.Timestamp + 9, // 35: accessgraph.v1alpha.AWSInstanceV1.tags:type_name -> accessgraph.v1alpha.AWSTag + 34, // 36: accessgraph.v1alpha.AWSInstanceV1.iam_instance_profile_arn:type_name -> google.protobuf.StringValue + 34, // 37: accessgraph.v1alpha.AWSInstanceV1.launch_key_name:type_name -> google.protobuf.StringValue + 8, // 38: accessgraph.v1alpha.AWSUserAttachedPolicies.user:type_name -> accessgraph.v1alpha.AWSUserV1 + 13, // 39: accessgraph.v1alpha.AWSUserAttachedPolicies.policies:type_name -> accessgraph.v1alpha.AttachedPolicyV1 + 6, // 40: accessgraph.v1alpha.AWSGroupAttachedPolicies.group:type_name -> accessgraph.v1alpha.AWSGroupV1 + 13, // 41: accessgraph.v1alpha.AWSGroupAttachedPolicies.policies:type_name -> accessgraph.v1alpha.AttachedPolicyV1 + 6, // 42: accessgraph.v1alpha.AWSGroupInlinePolicyV1.group:type_name -> accessgraph.v1alpha.AWSGroupV1 + 17, // 43: accessgraph.v1alpha.AWSS3BucketV1.acls:type_name -> accessgraph.v1alpha.AWSS3BucketACL + 18, // 44: accessgraph.v1alpha.AWSS3BucketACL.grantee:type_name -> accessgraph.v1alpha.AWSS3BucketACLGrantee + 33, // 45: accessgraph.v1alpha.AWSRoleV1.created_at:type_name -> google.protobuf.Timestamp + 35, // 46: accessgraph.v1alpha.AWSRoleV1.max_session_duration:type_name -> google.protobuf.Duration + 20, // 47: accessgraph.v1alpha.AWSRoleV1.permissions_boundary:type_name -> accessgraph.v1alpha.RolePermissionsBoundaryV1 + 9, // 48: accessgraph.v1alpha.AWSRoleV1.tags:type_name -> accessgraph.v1alpha.AWSTag + 21, // 49: accessgraph.v1alpha.AWSRoleV1.role_last_used:type_name -> accessgraph.v1alpha.RoleLastUsedV1 + 1, // 50: accessgraph.v1alpha.RolePermissionsBoundaryV1.permissions_boundary_type:type_name -> accessgraph.v1alpha.RolePermissionsBoundaryType + 33, // 51: accessgraph.v1alpha.RoleLastUsedV1.last_used_date:type_name -> google.protobuf.Timestamp + 19, // 52: accessgraph.v1alpha.AWSRoleInlinePolicyV1.aws_role:type_name -> accessgraph.v1alpha.AWSRoleV1 + 13, // 53: accessgraph.v1alpha.AWSRoleAttachedPolicies.policies:type_name -> accessgraph.v1alpha.AttachedPolicyV1 + 19, // 54: accessgraph.v1alpha.AWSRoleAttachedPolicies.aws_role:type_name -> accessgraph.v1alpha.AWSRoleV1 + 33, // 55: accessgraph.v1alpha.AWSInstanceProfileV1.created_at:type_name -> google.protobuf.Timestamp + 19, // 56: accessgraph.v1alpha.AWSInstanceProfileV1.roles:type_name -> accessgraph.v1alpha.AWSRoleV1 + 9, // 57: accessgraph.v1alpha.AWSInstanceProfileV1.tags:type_name -> accessgraph.v1alpha.AWSTag + 33, // 58: accessgraph.v1alpha.AWSEKSClusterV1.created_at:type_name -> google.protobuf.Timestamp + 9, // 59: accessgraph.v1alpha.AWSEKSClusterV1.tags:type_name -> accessgraph.v1alpha.AWSTag + 25, // 60: accessgraph.v1alpha.AWSEKSClusterAccessEntryV1.cluster:type_name -> accessgraph.v1alpha.AWSEKSClusterV1 + 33, // 61: accessgraph.v1alpha.AWSEKSClusterAccessEntryV1.created_at:type_name -> google.protobuf.Timestamp + 33, // 62: accessgraph.v1alpha.AWSEKSClusterAccessEntryV1.modified_at:type_name -> google.protobuf.Timestamp + 9, // 63: accessgraph.v1alpha.AWSEKSClusterAccessEntryV1.tags:type_name -> accessgraph.v1alpha.AWSTag + 25, // 64: accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1.cluster:type_name -> accessgraph.v1alpha.AWSEKSClusterV1 + 28, // 65: accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1.scope:type_name -> accessgraph.v1alpha.AWSEKSAccessScopeV1 + 33, // 66: accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1.associated_at:type_name -> google.protobuf.Timestamp + 33, // 67: accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1.modified_at:type_name -> google.protobuf.Timestamp + 30, // 68: accessgraph.v1alpha.AWSRDSDatabaseV1.engine_details:type_name -> accessgraph.v1alpha.AWSRDSEngineV1 + 33, // 69: accessgraph.v1alpha.AWSRDSDatabaseV1.created_at:type_name -> google.protobuf.Timestamp + 9, // 70: accessgraph.v1alpha.AWSRDSDatabaseV1.tags:type_name -> accessgraph.v1alpha.AWSTag + 33, // 71: accessgraph.v1alpha.AWSSAMLProviderV1.created_at:type_name -> google.protobuf.Timestamp + 33, // 72: accessgraph.v1alpha.AWSSAMLProviderV1.valid_until:type_name -> google.protobuf.Timestamp + 9, // 73: accessgraph.v1alpha.AWSSAMLProviderV1.tags:type_name -> accessgraph.v1alpha.AWSTag + 33, // 74: accessgraph.v1alpha.AWSOIDCProviderV1.created_at:type_name -> google.protobuf.Timestamp + 9, // 75: accessgraph.v1alpha.AWSOIDCProviderV1.tags:type_name -> accessgraph.v1alpha.AWSTag + 76, // [76:76] is the sub-list for method output_type + 76, // [76:76] is the sub-list for method input_type + 76, // [76:76] is the sub-list for extension type_name + 76, // [76:76] is the sub-list for extension extendee + 0, // [0:76] is the sub-list for field type_name } func init() { file_accessgraph_v1alpha_aws_proto_init() } @@ -3885,6 +4187,30 @@ func file_accessgraph_v1alpha_aws_proto_init() { return nil } } + file_accessgraph_v1alpha_aws_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AWSSAMLProviderV1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accessgraph_v1alpha_aws_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AWSOIDCProviderV1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_accessgraph_v1alpha_aws_proto_msgTypes[1].OneofWrappers = []interface{}{ (*AWSResource_User)(nil), @@ -3905,6 +4231,8 @@ func file_accessgraph_v1alpha_aws_proto_init() { (*AWSResource_EksClusterAccessEntry)(nil), (*AWSResource_EksClusterAssociatedPolicy)(nil), (*AWSResource_Rds)(nil), + (*AWSResource_SamlProvider)(nil), + (*AWSResource_OidcProvider)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -3912,7 +4240,7 @@ func file_accessgraph_v1alpha_aws_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_accessgraph_v1alpha_aws_proto_rawDesc, NumEnums: 2, - NumMessages: 29, + NumMessages: 31, NumExtensions: 0, NumServices: 0, }, diff --git a/gen/proto/go/accessgraph/v1alpha/entra.pb.go b/gen/proto/go/accessgraph/v1alpha/entra.pb.go new file mode 100644 index 0000000000000..cebba10060ffa --- /dev/null +++ b/gen/proto/go/accessgraph/v1alpha/entra.pb.go @@ -0,0 +1,439 @@ +// +// Teleport +// Copyright (C) 2024 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 . + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.0 +// protoc (unknown) +// source: accessgraph/v1alpha/entra.proto + +package accessgraphv1alpha + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// EntraSyncOperation is a request to sync Entra resources +type EntraSyncOperation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *EntraSyncOperation) Reset() { + *x = EntraSyncOperation{} + if protoimpl.UnsafeEnabled { + mi := &file_accessgraph_v1alpha_entra_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntraSyncOperation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntraSyncOperation) ProtoMessage() {} + +func (x *EntraSyncOperation) ProtoReflect() protoreflect.Message { + mi := &file_accessgraph_v1alpha_entra_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntraSyncOperation.ProtoReflect.Descriptor instead. +func (*EntraSyncOperation) Descriptor() ([]byte, []int) { + return file_accessgraph_v1alpha_entra_proto_rawDescGZIP(), []int{0} +} + +// EntraResourceList is a request that contains resources to be sync. +type EntraResourceList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // resources is a list of entra resources to sync. + Resources []*EntraResource `protobuf:"bytes,1,rep,name=resources,proto3" json:"resources,omitempty"` +} + +func (x *EntraResourceList) Reset() { + *x = EntraResourceList{} + if protoimpl.UnsafeEnabled { + mi := &file_accessgraph_v1alpha_entra_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntraResourceList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntraResourceList) ProtoMessage() {} + +func (x *EntraResourceList) ProtoReflect() protoreflect.Message { + mi := &file_accessgraph_v1alpha_entra_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntraResourceList.ProtoReflect.Descriptor instead. +func (*EntraResourceList) Descriptor() ([]byte, []int) { + return file_accessgraph_v1alpha_entra_proto_rawDescGZIP(), []int{1} +} + +func (x *EntraResourceList) GetResources() []*EntraResource { + if x != nil { + return x.Resources + } + return nil +} + +// EntraResource represents a Entra resource. +type EntraResource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Resource: + // + // *EntraResource_Application + Resource isEntraResource_Resource `protobuf_oneof:"resource"` +} + +func (x *EntraResource) Reset() { + *x = EntraResource{} + if protoimpl.UnsafeEnabled { + mi := &file_accessgraph_v1alpha_entra_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntraResource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntraResource) ProtoMessage() {} + +func (x *EntraResource) ProtoReflect() protoreflect.Message { + mi := &file_accessgraph_v1alpha_entra_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntraResource.ProtoReflect.Descriptor instead. +func (*EntraResource) Descriptor() ([]byte, []int) { + return file_accessgraph_v1alpha_entra_proto_rawDescGZIP(), []int{2} +} + +func (m *EntraResource) GetResource() isEntraResource_Resource { + if m != nil { + return m.Resource + } + return nil +} + +func (x *EntraResource) GetApplication() *EntraApplication { + if x, ok := x.GetResource().(*EntraResource_Application); ok { + return x.Application + } + return nil +} + +type isEntraResource_Resource interface { + isEntraResource_Resource() +} + +type EntraResource_Application struct { + // application represents an Entra ID enterprise application. + Application *EntraApplication `protobuf:"bytes,1,opt,name=application,proto3,oneof"` +} + +func (*EntraResource_Application) isEntraResource_Resource() {} + +// EntraApplication represents an Entra ID enterprise application together with its service principal. +type EntraApplication struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // id is the unique Entra object ID. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // app_id is the application ID. + AppId string `protobuf:"bytes,2,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + // display_name is a human-friendly application name. + DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // tenant_id is the ID of Entra tenant that this application is under. + TenantId string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + // signing_certificates is a list of SAML signing certificates for this app. + SigningCertificates []string `protobuf:"bytes,5,rep,name=signing_certificates,json=signingCertificates,proto3" json:"signing_certificates,omitempty"` + // federated_sso_v2 contains payload from the /ApplicationSso/{servicePrincipalId}/FederatedSSOV2 endpoint. + // It is exposed from the internal plugin cache as an opaque JSON blob. + FederatedSsoV2 string `protobuf:"bytes,6,opt,name=federated_sso_v2,json=federatedSsoV2,proto3" json:"federated_sso_v2,omitempty"` +} + +func (x *EntraApplication) Reset() { + *x = EntraApplication{} + if protoimpl.UnsafeEnabled { + mi := &file_accessgraph_v1alpha_entra_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntraApplication) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntraApplication) ProtoMessage() {} + +func (x *EntraApplication) ProtoReflect() protoreflect.Message { + mi := &file_accessgraph_v1alpha_entra_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntraApplication.ProtoReflect.Descriptor instead. +func (*EntraApplication) Descriptor() ([]byte, []int) { + return file_accessgraph_v1alpha_entra_proto_rawDescGZIP(), []int{3} +} + +func (x *EntraApplication) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *EntraApplication) GetAppId() string { + if x != nil { + return x.AppId + } + return "" +} + +func (x *EntraApplication) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *EntraApplication) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +func (x *EntraApplication) GetSigningCertificates() []string { + if x != nil { + return x.SigningCertificates + } + return nil +} + +func (x *EntraApplication) GetFederatedSsoV2() string { + if x != nil { + return x.FederatedSsoV2 + } + return "" +} + +var File_accessgraph_v1alpha_entra_proto protoreflect.FileDescriptor + +var file_accessgraph_v1alpha_entra_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x13, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x22, 0x14, 0x0a, 0x12, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x53, + 0x79, 0x6e, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x55, 0x0a, 0x11, + 0x45, 0x6e, 0x74, 0x72, 0x61, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x40, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x61, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x22, 0x66, 0x0a, 0x0d, 0x45, 0x6e, 0x74, 0x72, 0x61, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, + 0x45, 0x6e, 0x74, 0x72, 0x61, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x10, + 0x45, 0x6e, 0x74, 0x72, 0x61, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, + 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x73, 0x69, 0x67, 0x6e, 0x69, + 0x6e, 0x67, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x65, + 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x73, 0x6f, 0x5f, 0x76, 0x32, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x65, 0x64, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, + 0x73, 0x6f, 0x56, 0x32, 0x42, 0x57, 0x5a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3b, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_accessgraph_v1alpha_entra_proto_rawDescOnce sync.Once + file_accessgraph_v1alpha_entra_proto_rawDescData = file_accessgraph_v1alpha_entra_proto_rawDesc +) + +func file_accessgraph_v1alpha_entra_proto_rawDescGZIP() []byte { + file_accessgraph_v1alpha_entra_proto_rawDescOnce.Do(func() { + file_accessgraph_v1alpha_entra_proto_rawDescData = protoimpl.X.CompressGZIP(file_accessgraph_v1alpha_entra_proto_rawDescData) + }) + return file_accessgraph_v1alpha_entra_proto_rawDescData +} + +var file_accessgraph_v1alpha_entra_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_accessgraph_v1alpha_entra_proto_goTypes = []interface{}{ + (*EntraSyncOperation)(nil), // 0: accessgraph.v1alpha.EntraSyncOperation + (*EntraResourceList)(nil), // 1: accessgraph.v1alpha.EntraResourceList + (*EntraResource)(nil), // 2: accessgraph.v1alpha.EntraResource + (*EntraApplication)(nil), // 3: accessgraph.v1alpha.EntraApplication +} +var file_accessgraph_v1alpha_entra_proto_depIdxs = []int32{ + 2, // 0: accessgraph.v1alpha.EntraResourceList.resources:type_name -> accessgraph.v1alpha.EntraResource + 3, // 1: accessgraph.v1alpha.EntraResource.application:type_name -> accessgraph.v1alpha.EntraApplication + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_accessgraph_v1alpha_entra_proto_init() } +func file_accessgraph_v1alpha_entra_proto_init() { + if File_accessgraph_v1alpha_entra_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_accessgraph_v1alpha_entra_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntraSyncOperation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accessgraph_v1alpha_entra_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntraResourceList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accessgraph_v1alpha_entra_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntraResource); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accessgraph_v1alpha_entra_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntraApplication); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_accessgraph_v1alpha_entra_proto_msgTypes[2].OneofWrappers = []interface{}{ + (*EntraResource_Application)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_accessgraph_v1alpha_entra_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_accessgraph_v1alpha_entra_proto_goTypes, + DependencyIndexes: file_accessgraph_v1alpha_entra_proto_depIdxs, + MessageInfos: file_accessgraph_v1alpha_entra_proto_msgTypes, + }.Build() + File_accessgraph_v1alpha_entra_proto = out.File + file_accessgraph_v1alpha_entra_proto_rawDesc = nil + file_accessgraph_v1alpha_entra_proto_goTypes = nil + file_accessgraph_v1alpha_entra_proto_depIdxs = nil +} diff --git a/gen/proto/go/prehog/v1alpha/teleport.pb.go b/gen/proto/go/prehog/v1alpha/teleport.pb.go index c3ce3496764f2..03febbf1c4886 100644 --- a/gen/proto/go/prehog/v1alpha/teleport.pb.go +++ b/gen/proto/go/prehog/v1alpha/teleport.pb.go @@ -430,6 +430,7 @@ const ( CTA_CTA_ACCESS_MONITORING CTA = 9 CTA_CTA_EXTERNAL_AUDIT_STORAGE CTA = 10 CTA_CTA_OKTA_USER_SYNC CTA = 11 + CTA_CTA_ENTRA_ID CTA = 12 ) // Enum value maps for CTA. @@ -447,6 +448,7 @@ var ( 9: "CTA_ACCESS_MONITORING", 10: "CTA_EXTERNAL_AUDIT_STORAGE", 11: "CTA_OKTA_USER_SYNC", + 12: "CTA_ENTRA_ID", } CTA_value = map[string]int32{ "CTA_UNSPECIFIED": 0, @@ -461,6 +463,7 @@ var ( "CTA_ACCESS_MONITORING": 9, "CTA_EXTERNAL_AUDIT_STORAGE": 10, "CTA_OKTA_USER_SYNC": 11, + "CTA_ENTRA_ID": 12, } ) @@ -519,6 +522,7 @@ const ( IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_MACHINE_ID_AZURE IntegrationEnrollKind = 20 IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_MACHINE_ID_SPACELIFT IntegrationEnrollKind = 21 IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_MACHINE_ID_KUBERNETES IntegrationEnrollKind = 22 + IntegrationEnrollKind_INTEGRATION_ENROLL_KIND_ENTRA_ID IntegrationEnrollKind = 23 ) // Enum value maps for IntegrationEnrollKind. @@ -547,6 +551,7 @@ var ( 20: "INTEGRATION_ENROLL_KIND_MACHINE_ID_AZURE", 21: "INTEGRATION_ENROLL_KIND_MACHINE_ID_SPACELIFT", 22: "INTEGRATION_ENROLL_KIND_MACHINE_ID_KUBERNETES", + 23: "INTEGRATION_ENROLL_KIND_ENTRA_ID", } IntegrationEnrollKind_value = map[string]int32{ "INTEGRATION_ENROLL_KIND_UNSPECIFIED": 0, @@ -572,6 +577,7 @@ var ( "INTEGRATION_ENROLL_KIND_MACHINE_ID_AZURE": 20, "INTEGRATION_ENROLL_KIND_MACHINE_ID_SPACELIFT": 21, "INTEGRATION_ENROLL_KIND_MACHINE_ID_KUBERNETES": 22, + "INTEGRATION_ENROLL_KIND_ENTRA_ID": 23, } ) @@ -9986,7 +9992,7 @@ var file_prehog_v1alpha_teleport_proto_rawDesc = []byte{ 0x15, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x42, 0x4f, 0x52, - 0x54, 0x45, 0x44, 0x10, 0x04, 0x2a, 0xaf, 0x02, 0x0a, 0x03, 0x43, 0x54, 0x41, 0x12, 0x13, 0x0a, + 0x54, 0x45, 0x44, 0x10, 0x04, 0x2a, 0xc1, 0x02, 0x0a, 0x03, 0x43, 0x54, 0x41, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x54, 0x41, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x54, @@ -10005,133 +10011,136 @@ var file_prehog_v1alpha_teleport_proto_rawDesc = []byte{ 0x1e, 0x0a, 0x1a, 0x43, 0x54, 0x41, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x54, 0x41, 0x5f, 0x4f, 0x4b, 0x54, 0x41, 0x5f, 0x55, 0x53, 0x45, 0x52, - 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x0b, 0x2a, 0xdc, 0x07, 0x0a, 0x15, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x4b, 0x69, 0x6e, - 0x64, 0x12, 0x27, 0x0a, 0x23, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, - 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, - 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x4c, 0x41, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x24, 0x0a, - 0x20, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, - 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x57, 0x53, 0x5f, 0x4f, 0x49, 0x44, - 0x43, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x50, - 0x41, 0x47, 0x45, 0x52, 0x44, 0x55, 0x54, 0x59, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, - 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, - 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, 0x04, 0x12, 0x20, 0x0a, - 0x1c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, - 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4a, 0x49, 0x52, 0x41, 0x10, 0x05, 0x12, - 0x23, 0x0a, 0x1f, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, - 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, - 0x52, 0x44, 0x10, 0x06, 0x12, 0x26, 0x0a, 0x22, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, - 0x4d, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4d, 0x4f, 0x53, 0x54, 0x10, 0x07, 0x12, 0x24, 0x0a, 0x20, + 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x0b, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x54, 0x41, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x41, 0x5f, 0x49, 0x44, 0x10, 0x0c, 0x2a, 0x82, 0x08, 0x0a, 0x15, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x4b, + 0x69, 0x6e, 0x64, 0x12, 0x27, 0x0a, 0x23, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, - 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x53, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x53, - 0x10, 0x08, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4f, 0x50, - 0x53, 0x47, 0x45, 0x4e, 0x49, 0x45, 0x10, 0x09, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x54, 0x45, - 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, - 0x49, 0x4e, 0x44, 0x5f, 0x4f, 0x4b, 0x54, 0x41, 0x10, 0x0a, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, - 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, - 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4a, 0x41, 0x4d, 0x46, 0x10, 0x0b, 0x12, 0x26, 0x0a, 0x22, + 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x4c, 0x41, 0x43, 0x4b, 0x10, 0x01, 0x12, + 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, + 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x57, 0x53, 0x5f, 0x4f, + 0x49, 0x44, 0x43, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, + 0x5f, 0x50, 0x41, 0x47, 0x45, 0x52, 0x44, 0x55, 0x54, 0x59, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, - 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, - 0x49, 0x44, 0x10, 0x0c, 0x12, 0x35, 0x0a, 0x31, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, + 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, 0x04, 0x12, + 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, + 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4a, 0x49, 0x52, 0x41, 0x10, + 0x05, 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x49, 0x53, + 0x43, 0x4f, 0x52, 0x44, 0x10, 0x06, 0x12, 0x26, 0x0a, 0x22, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, + 0x44, 0x5f, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4d, 0x4f, 0x53, 0x54, 0x10, 0x07, 0x12, 0x24, + 0x0a, 0x20, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, + 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x53, 0x5f, 0x54, 0x45, 0x41, + 0x4d, 0x53, 0x10, 0x08, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, - 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x47, 0x49, 0x54, 0x48, 0x55, - 0x42, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x0d, 0x12, 0x2f, 0x0a, 0x2b, 0x49, - 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, - 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, - 0x44, 0x5f, 0x43, 0x49, 0x52, 0x43, 0x4c, 0x45, 0x43, 0x49, 0x10, 0x0e, 0x12, 0x2d, 0x0a, 0x29, + 0x4f, 0x50, 0x53, 0x47, 0x45, 0x4e, 0x49, 0x45, 0x10, 0x09, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, + 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, + 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4f, 0x4b, 0x54, 0x41, 0x10, 0x0a, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, - 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, - 0x49, 0x44, 0x5f, 0x47, 0x49, 0x54, 0x4c, 0x41, 0x42, 0x10, 0x0f, 0x12, 0x2e, 0x0a, 0x2a, 0x49, - 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, - 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, - 0x44, 0x5f, 0x4a, 0x45, 0x4e, 0x4b, 0x49, 0x4e, 0x53, 0x10, 0x10, 0x12, 0x2e, 0x0a, 0x2a, 0x49, - 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, - 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, - 0x44, 0x5f, 0x41, 0x4e, 0x53, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x11, 0x12, 0x2a, 0x0a, 0x26, 0x49, - 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, - 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, - 0x44, 0x5f, 0x41, 0x57, 0x53, 0x10, 0x12, 0x12, 0x2a, 0x0a, 0x26, 0x49, 0x4e, 0x54, 0x45, 0x47, - 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, - 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x47, 0x43, - 0x50, 0x10, 0x13, 0x12, 0x2c, 0x0a, 0x28, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, + 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4a, 0x41, 0x4d, 0x46, 0x10, 0x0b, 0x12, 0x26, + 0x0a, 0x22, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, + 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, + 0x45, 0x5f, 0x49, 0x44, 0x10, 0x0c, 0x12, 0x35, 0x0a, 0x31, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, + 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x47, 0x49, 0x54, + 0x48, 0x55, 0x42, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x0d, 0x12, 0x2f, 0x0a, + 0x2b, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, + 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, + 0x5f, 0x49, 0x44, 0x5f, 0x43, 0x49, 0x52, 0x43, 0x4c, 0x45, 0x43, 0x49, 0x10, 0x0e, 0x12, 0x2d, + 0x0a, 0x29, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, + 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, + 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x47, 0x49, 0x54, 0x4c, 0x41, 0x42, 0x10, 0x0f, 0x12, 0x2e, 0x0a, + 0x2a, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, + 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, + 0x5f, 0x49, 0x44, 0x5f, 0x4a, 0x45, 0x4e, 0x4b, 0x49, 0x4e, 0x53, 0x10, 0x10, 0x12, 0x2e, 0x0a, + 0x2a, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, + 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, + 0x5f, 0x49, 0x44, 0x5f, 0x41, 0x4e, 0x53, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x11, 0x12, 0x2a, 0x0a, + 0x26, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, + 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, + 0x5f, 0x49, 0x44, 0x5f, 0x41, 0x57, 0x53, 0x10, 0x12, 0x12, 0x2a, 0x0a, 0x26, 0x49, 0x4e, 0x54, + 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, + 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, + 0x47, 0x43, 0x50, 0x10, 0x13, 0x12, 0x2c, 0x0a, 0x28, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, + 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x41, 0x5a, 0x55, 0x52, + 0x45, 0x10, 0x14, 0x12, 0x30, 0x0a, 0x2c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, - 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, - 0x14, 0x12, 0x30, 0x0a, 0x2c, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x41, 0x43, - 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x53, 0x50, 0x41, 0x43, 0x45, 0x4c, 0x49, 0x46, - 0x54, 0x10, 0x15, 0x12, 0x31, 0x0a, 0x2d, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x4d, - 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x4b, 0x55, 0x42, 0x45, 0x52, 0x4e, - 0x45, 0x54, 0x45, 0x53, 0x10, 0x16, 0x2a, 0x88, 0x01, 0x0a, 0x12, 0x45, 0x64, 0x69, 0x74, 0x6f, - 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, - 0x20, 0x45, 0x44, 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x45, 0x44, 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, - 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x45, 0x44, - 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, - 0x02, 0x2a, 0x3f, 0x0a, 0x07, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x17, 0x0a, 0x13, - 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, - 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, - 0x10, 0x01, 0x2a, 0xa0, 0x01, 0x0a, 0x1b, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, - 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x2d, 0x0a, 0x29, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x52, 0x45, - 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x52, 0x45, 0x43, - 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x26, 0x0a, - 0x22, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, - 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, - 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x2a, 0x82, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, - 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x19, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, - 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, - 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x52, - 0x55, 0x53, 0x54, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x4a, 0x41, 0x4d, 0x46, 0x10, 0x01, 0x12, - 0x29, 0x0a, 0x25, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, - 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x5f, 0x54, 0x45, - 0x41, 0x4d, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x10, 0x02, 0x32, 0xb4, 0x02, 0x0a, 0x18, 0x54, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x72, 0x65, - 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x03, 0x88, 0x02, 0x01, 0x12, 0x5b, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x65, 0x68, - 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x5e, 0x0a, 0x0d, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x12, 0x24, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, - 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x54, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x42, 0xc9, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x42, 0x0d, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x67, 0x65, 0x6e, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, - 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3b, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xa2, 0x02, 0x03, 0x50, 0x58, 0x58, 0xaa, 0x02, 0x0e, 0x50, - 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xca, 0x02, 0x0e, - 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xe2, 0x02, - 0x1a, 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x50, 0x72, - 0x65, 0x68, 0x6f, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x53, 0x50, 0x41, 0x43, 0x45, 0x4c, + 0x49, 0x46, 0x54, 0x10, 0x15, 0x12, 0x31, 0x0a, 0x2d, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, 0x49, 0x4e, 0x44, + 0x5f, 0x4d, 0x41, 0x43, 0x48, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x4b, 0x55, 0x42, 0x45, + 0x52, 0x4e, 0x45, 0x54, 0x45, 0x53, 0x10, 0x16, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x54, 0x45, + 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x52, 0x4f, 0x4c, 0x4c, 0x5f, 0x4b, + 0x49, 0x4e, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x41, 0x5f, 0x49, 0x44, 0x10, 0x17, 0x2a, 0x88, + 0x01, 0x0a, 0x12, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x20, 0x45, 0x44, 0x49, 0x54, 0x4f, 0x52, 0x5f, + 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x45, + 0x44, 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x54, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x45, 0x44, 0x49, 0x54, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x41, + 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, + 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x3f, 0x0a, 0x07, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, + 0x17, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45, 0x44, + 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x53, 0x10, 0x01, 0x2a, 0xa0, 0x01, 0x0a, 0x1b, 0x46, + 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2d, 0x0a, 0x29, 0x46, 0x45, + 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x46, 0x45, 0x41, + 0x54, 0x55, 0x52, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, + 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x4e, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x2a, 0x82, 0x01, + 0x0a, 0x0c, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, + 0x0a, 0x19, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, + 0x24, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x44, + 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x5f, 0x54, 0x45, 0x41, 0x4d, + 0x5f, 0x4a, 0x41, 0x4d, 0x46, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x4c, 0x49, 0x43, 0x45, 0x4e, + 0x53, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, + 0x54, 0x52, 0x55, 0x53, 0x54, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, + 0x10, 0x02, 0x32, 0xb4, 0x02, 0x0a, 0x18, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x5b, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x22, + 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, + 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x5b, 0x0a, 0x0c, + 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x70, + 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x0d, 0x48, 0x65, 0x6c, + 0x6c, 0x6f, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x24, 0x2e, 0x70, 0x72, 0x65, + 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x48, 0x65, 0x6c, 0x6c, + 0x6f, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x25, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0xc9, 0x01, 0x0a, 0x12, 0x63, 0x6f, + 0x6d, 0x2e, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x42, 0x0d, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x4b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, + 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x2f, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x3b, 0x70, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xa2, 0x02, + 0x03, 0x50, 0x58, 0x58, 0xaa, 0x02, 0x0e, 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x2e, 0x56, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0xca, 0x02, 0x0e, 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x5c, 0x56, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xe2, 0x02, 0x1a, 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x5c, + 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x50, 0x72, 0x65, 0x68, 0x6f, 0x67, 0x3a, 0x3a, 0x56, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/gen/proto/ts/prehog/v1alpha/teleport_pb.ts b/gen/proto/ts/prehog/v1alpha/teleport_pb.ts index c35a2a543fc09..fe4171f54d9da 100644 --- a/gen/proto/ts/prehog/v1alpha/teleport_pb.ts +++ b/gen/proto/ts/prehog/v1alpha/teleport_pb.ts @@ -3223,7 +3223,11 @@ export enum CTA { /** * @generated from protobuf enum value: CTA_OKTA_USER_SYNC = 11; */ - CTA_OKTA_USER_SYNC = 11 + CTA_OKTA_USER_SYNC = 11, + /** + * @generated from protobuf enum value: CTA_ENTRA_ID = 12; + */ + CTA_ENTRA_ID = 12 } /** * IntegrationEnrollKind represents the types of integration that @@ -3323,7 +3327,11 @@ export enum IntegrationEnrollKind { /** * @generated from protobuf enum value: INTEGRATION_ENROLL_KIND_MACHINE_ID_KUBERNETES = 22; */ - MACHINE_ID_KUBERNETES = 22 + MACHINE_ID_KUBERNETES = 22, + /** + * @generated from protobuf enum value: INTEGRATION_ENROLL_KIND_ENTRA_ID = 23; + */ + ENTRA_ID = 23 } /** * EditorChangeStatus is the possible value of an EditorChangeEvent event status diff --git a/go.mod b/go.mod index ae08ac9e984ef..e23294a482508 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( cloud.google.com/go/spanner v1.60.0 cloud.google.com/go/storage v1.39.1 connectrpc.com/connect v1.15.0 - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v3 v3.0.1 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v2 v2.4.0 @@ -148,6 +148,8 @@ require ( github.com/mattn/go-sqlite3 v1.14.22 github.com/mdlayher/netlink v1.7.2 github.com/microsoft/go-mssqldb v1.7.0 // replaced + github.com/microsoft/kiota-authentication-azure-go v1.0.2 + github.com/microsoftgraph/msgraph-sdk-go v1.37.0 github.com/miekg/pkcs11 v1.1.1 github.com/mitchellh/mapstructure v1.5.0 github.com/moby/term v0.5.0 @@ -235,6 +237,8 @@ require ( // Updating causes breaking changes. require github.com/mailgun/minheap v0.0.0-20170619185613-3dbe6c6bf55f // indirect +require github.com/microsoftgraph/msgraph-sdk-go-core v1.1.0 + require ( cloud.google.com/go v0.112.2 // indirect cloud.google.com/go/auth v0.3.0 // indirect @@ -283,6 +287,7 @@ require ( github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect + github.com/cjlapao/common-go v0.0.39 // indirect github.com/cloudflare/cfssl v1.6.4 // indirect github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa // indirect github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect @@ -417,7 +422,13 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect - github.com/mdlayher/socket v0.4.1 // indirect + github.com/mdlayher/socket v0.5.1 // indirect + github.com/microsoft/kiota-abstractions-go v1.6.0 // indirect + github.com/microsoft/kiota-http-go v1.3.1 // indirect + github.com/microsoft/kiota-serialization-form-go v1.0.0 // indirect + github.com/microsoft/kiota-serialization-json-go v1.0.7 // indirect + github.com/microsoft/kiota-serialization-multipart-go v1.0.0 // indirect + github.com/microsoft/kiota-serialization-text-go v1.0.0 // indirect github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 // indirect github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect @@ -483,6 +494,7 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.18.2 // indirect + github.com/std-uritemplate/std-uritemplate/go v0.0.55 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect diff --git a/go.sum b/go.sum index c16755bf81048..12ff7399da39e 100644 --- a/go.sum +++ b/go.sum @@ -54,8 +54,8 @@ github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0 github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0/go.mod h1:tZoQYdDZNOiIjdSn0dVWVfl0NEPGOJqVLzSrcFk4Is0= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 h1:n1DH8TPV4qqPTje2RcUBYwtrTWlabVp4n46+74X2pn4= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0/go.mod h1:HDcZnuGbiyppErN6lB+idp4CKhjbc8gwjto6OPpyggM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.0/go.mod h1:NBanQUfSWiWn3QEpWDTCU0IjBECKOYvl2R8xdRtMtiM= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 h1:sO0/P7g68FrryJzljemN+6GTssUXdANk6aJ7T1ZxnsQ= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1/go.mod h1:h8hyGFDsU5HMivxiS2iYFZsgDbU9OnnJ163x5UGVKYo= @@ -391,6 +391,8 @@ github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb2 github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cjlapao/common-go v0.0.39 h1:bAAUrj2B9v0kMzbAOhzjSmiyDy+rd56r2sy7oEiQLlA= +github.com/cjlapao/common-go v0.0.39/go.mod h1:M3dzazLjTjEtZJbbxoA5ZDiGCiHmpwqW9l4UWaddwOA= github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME= github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= @@ -1161,8 +1163,26 @@ github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxU github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g= github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw= -github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U= -github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA= +github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos= +github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= +github.com/microsoft/kiota-abstractions-go v1.6.0 h1:qbGBNMU0/o5myKbikCBXJFohVCFrrpx2cO15Rta2WyA= +github.com/microsoft/kiota-abstractions-go v1.6.0/go.mod h1:7YH20ZbRWXGfHSSvdHkdztzgCB9mRdtFx13+hrYIEpo= +github.com/microsoft/kiota-authentication-azure-go v1.0.2 h1:tClGeyFZJ+4Bakf8u0euPM4wqy4ethycdOgx3jyH3pI= +github.com/microsoft/kiota-authentication-azure-go v1.0.2/go.mod h1:aTcti0bUJEcq7kBfQG4Sr4ElvRNuaalXcFEu4iEyQ6M= +github.com/microsoft/kiota-http-go v1.3.1 h1:S+ZDxE7Pc/Z06hbfqpFHkoq5xiC8/7d12iNovcgl+7o= +github.com/microsoft/kiota-http-go v1.3.1/go.mod h1:4QjB+as08swnZXZLx5I+ZHZ8U/tVy7Zu49RNTmWgw48= +github.com/microsoft/kiota-serialization-form-go v1.0.0 h1:UNdrkMnLFqUCccQZerKjblsyVgifS11b3WCx+eFEsAI= +github.com/microsoft/kiota-serialization-form-go v1.0.0/go.mod h1:h4mQOO6KVTNciMF6azi1J9QB19ujSw3ULKcSNyXXOMA= +github.com/microsoft/kiota-serialization-json-go v1.0.7 h1:yMbckSTPrjZdM4EMXgzLZSA3CtDaUBI350u0VoYRz7Y= +github.com/microsoft/kiota-serialization-json-go v1.0.7/go.mod h1:1krrY7DYl3ivPIzl4xTaBpew6akYNa8/Tal8g+kb0cc= +github.com/microsoft/kiota-serialization-multipart-go v1.0.0 h1:3O5sb5Zj+moLBiJympbXNaeV07K0d46IfuEd5v9+pBs= +github.com/microsoft/kiota-serialization-multipart-go v1.0.0/go.mod h1:yauLeBTpANk4L03XD985akNysG24SnRJGaveZf+p4so= +github.com/microsoft/kiota-serialization-text-go v1.0.0 h1:XOaRhAXy+g8ZVpcq7x7a0jlETWnWrEum0RhmbYrTFnA= +github.com/microsoft/kiota-serialization-text-go v1.0.0/go.mod h1:sM1/C6ecnQ7IquQOGUrUldaO5wj+9+v7G2W3sQ3fy6M= +github.com/microsoftgraph/msgraph-sdk-go v1.37.0 h1:wD62FzIBu4gVg70ikAm7D45tFqvDKo+K6aJ+zeNWlAE= +github.com/microsoftgraph/msgraph-sdk-go v1.37.0/go.mod h1:xYBUc+4LGRjYRyTF4CLiKAqb981AhlSfvRX11is25q4= +github.com/microsoftgraph/msgraph-sdk-go-core v1.1.0 h1:NB7c/n4Knj+TLaLfjsahhSqoUqoN/CtyNB0XIe/nJnM= +github.com/microsoftgraph/msgraph-sdk-go-core v1.1.0/go.mod h1:M3w/5IFJ1u/DpwOyjsjNSVEA43y1rLOeX58suyfBhGk= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo= @@ -1487,6 +1507,8 @@ github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/spiffe/go-spiffe/v2 v2.2.0 h1:9Vf06UsvsDbLYK/zJ4sYsIsHmMFknUD+feA7IYoWMQY= github.com/spiffe/go-spiffe/v2 v2.2.0/go.mod h1:Urzb779b3+IwDJD2ZbN8fVl3Aa8G4N/PiUe6iXC0XxU= +github.com/std-uritemplate/std-uritemplate/go v0.0.55 h1:muSH037g97K7U2f94G9LUuE8tZlJsoSSrPsO9V281WY= +github.com/std-uritemplate/std-uritemplate/go v0.0.55/go.mod h1:rG/bqh/ThY4xE5de7Rap3vaDkYUT76B0GPJ0loYeTTc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= diff --git a/integration/appaccess/jwt.go b/integration/appaccess/jwt.go index 4359dfbd80df9..b9715a3369a24 100644 --- a/integration/appaccess/jwt.go +++ b/integration/appaccess/jwt.go @@ -39,7 +39,7 @@ func verifyJWT(t *testing.T, pack *Pack, token, appURI string) { var jwks web.JWKSResponse err = json.Unmarshal([]byte(body), &jwks) require.NoError(t, err) - require.Len(t, jwks.Keys, 1) + require.Len(t, jwks.Keys, 2) // For backwards compatibility the same key is included twice in JWKS with different key IDs. publicKey, err := jwt.UnmarshalJWK(jwks.Keys[0]) require.NoError(t, err) diff --git a/integrations/event-handler/go.mod b/integrations/event-handler/go.mod index 96130d6e0eceb..33b4bb5a8234f 100644 --- a/integrations/event-handler/go.mod +++ b/integrations/event-handler/go.mod @@ -35,7 +35,7 @@ require ( cloud.google.com/go/resourcemanager v1.9.7 // indirect connectrpc.com/connect v1.15.0 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v3 v3.0.1 // indirect @@ -100,6 +100,7 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect + github.com/cjlapao/common-go v0.0.39 // indirect github.com/cloudflare/cfssl v1.6.4 // indirect github.com/containerd/containerd v1.7.12 // indirect github.com/containerd/log v0.1.0 // indirect @@ -216,6 +217,15 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/mattn/go-sqlite3 v1.14.22 // indirect + github.com/microsoft/kiota-abstractions-go v1.6.0 // indirect + github.com/microsoft/kiota-authentication-azure-go v1.0.2 // indirect + github.com/microsoft/kiota-http-go v1.3.1 // indirect + github.com/microsoft/kiota-serialization-form-go v1.0.0 // indirect + github.com/microsoft/kiota-serialization-json-go v1.0.7 // indirect + github.com/microsoft/kiota-serialization-multipart-go v1.0.0 // indirect + github.com/microsoft/kiota-serialization-text-go v1.0.0 // indirect + github.com/microsoftgraph/msgraph-sdk-go v1.37.0 // indirect + github.com/microsoftgraph/msgraph-sdk-go-core v1.1.0 // indirect github.com/miekg/pkcs11 v1.1.1 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect @@ -256,6 +266,7 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect + github.com/std-uritemplate/std-uritemplate/go v0.0.55 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/thales-e-security/pool v0.0.2 // indirect github.com/vulcand/predicate v1.2.0 // indirect diff --git a/integrations/event-handler/go.sum b/integrations/event-handler/go.sum index ead7868c0440a..53abce5a712bd 100644 --- a/integrations/event-handler/go.sum +++ b/integrations/event-handler/go.sum @@ -25,8 +25,8 @@ connectrpc.com/connect v1.15.0 h1:lFdeCbZrVVDydAqwr4xGV2y+ULn+0Z73s5JBj2LikWo= connectrpc.com/connect v1.15.0/go.mod h1:bQmjpDY8xItMnttnurVgOkHUBMRT9cpsNi2O4AjKhmA= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 h1:n1DH8TPV4qqPTje2RcUBYwtrTWlabVp4n46+74X2pn4= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0/go.mod h1:HDcZnuGbiyppErN6lB+idp4CKhjbc8gwjto6OPpyggM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 h1:sO0/P7g68FrryJzljemN+6GTssUXdANk6aJ7T1ZxnsQ= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1/go.mod h1:h8hyGFDsU5HMivxiS2iYFZsgDbU9OnnJ163x5UGVKYo= github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 h1:LqbJ/WzJUwBf8UiaSzgX7aMclParm9/5Vgp+TY51uBQ= @@ -207,6 +207,8 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5O github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cjlapao/common-go v0.0.39 h1:bAAUrj2B9v0kMzbAOhzjSmiyDy+rd56r2sy7oEiQLlA= +github.com/cjlapao/common-go v0.0.39/go.mod h1:M3dzazLjTjEtZJbbxoA5ZDiGCiHmpwqW9l4UWaddwOA= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/cfssl v1.6.4 h1:NMOvfrEjFfC63K3SGXgAnFdsgkmiq4kATme5BfcqrO8= github.com/cloudflare/cfssl v1.6.4/go.mod h1:8b3CQMxfWPAeom3zBnGJ6sd+G1NkL5TXqmDXacb+1J0= @@ -707,6 +709,24 @@ github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/microsoft/kiota-abstractions-go v1.6.0 h1:qbGBNMU0/o5myKbikCBXJFohVCFrrpx2cO15Rta2WyA= +github.com/microsoft/kiota-abstractions-go v1.6.0/go.mod h1:7YH20ZbRWXGfHSSvdHkdztzgCB9mRdtFx13+hrYIEpo= +github.com/microsoft/kiota-authentication-azure-go v1.0.2 h1:tClGeyFZJ+4Bakf8u0euPM4wqy4ethycdOgx3jyH3pI= +github.com/microsoft/kiota-authentication-azure-go v1.0.2/go.mod h1:aTcti0bUJEcq7kBfQG4Sr4ElvRNuaalXcFEu4iEyQ6M= +github.com/microsoft/kiota-http-go v1.3.1 h1:S+ZDxE7Pc/Z06hbfqpFHkoq5xiC8/7d12iNovcgl+7o= +github.com/microsoft/kiota-http-go v1.3.1/go.mod h1:4QjB+as08swnZXZLx5I+ZHZ8U/tVy7Zu49RNTmWgw48= +github.com/microsoft/kiota-serialization-form-go v1.0.0 h1:UNdrkMnLFqUCccQZerKjblsyVgifS11b3WCx+eFEsAI= +github.com/microsoft/kiota-serialization-form-go v1.0.0/go.mod h1:h4mQOO6KVTNciMF6azi1J9QB19ujSw3ULKcSNyXXOMA= +github.com/microsoft/kiota-serialization-json-go v1.0.7 h1:yMbckSTPrjZdM4EMXgzLZSA3CtDaUBI350u0VoYRz7Y= +github.com/microsoft/kiota-serialization-json-go v1.0.7/go.mod h1:1krrY7DYl3ivPIzl4xTaBpew6akYNa8/Tal8g+kb0cc= +github.com/microsoft/kiota-serialization-multipart-go v1.0.0 h1:3O5sb5Zj+moLBiJympbXNaeV07K0d46IfuEd5v9+pBs= +github.com/microsoft/kiota-serialization-multipart-go v1.0.0/go.mod h1:yauLeBTpANk4L03XD985akNysG24SnRJGaveZf+p4so= +github.com/microsoft/kiota-serialization-text-go v1.0.0 h1:XOaRhAXy+g8ZVpcq7x7a0jlETWnWrEum0RhmbYrTFnA= +github.com/microsoft/kiota-serialization-text-go v1.0.0/go.mod h1:sM1/C6ecnQ7IquQOGUrUldaO5wj+9+v7G2W3sQ3fy6M= +github.com/microsoftgraph/msgraph-sdk-go v1.37.0 h1:wD62FzIBu4gVg70ikAm7D45tFqvDKo+K6aJ+zeNWlAE= +github.com/microsoftgraph/msgraph-sdk-go v1.37.0/go.mod h1:xYBUc+4LGRjYRyTF4CLiKAqb981AhlSfvRX11is25q4= +github.com/microsoftgraph/msgraph-sdk-go-core v1.1.0 h1:NB7c/n4Knj+TLaLfjsahhSqoUqoN/CtyNB0XIe/nJnM= +github.com/microsoftgraph/msgraph-sdk-go-core v1.1.0/go.mod h1:M3w/5IFJ1u/DpwOyjsjNSVEA43y1rLOeX58suyfBhGk= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26 h1:gPxPSwALAeHJSjarOs00QjVdV9QoBvc1D2ujQUr5BzU= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= @@ -868,6 +888,8 @@ github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/std-uritemplate/std-uritemplate/go v0.0.55 h1:muSH037g97K7U2f94G9LUuE8tZlJsoSSrPsO9V281WY= +github.com/std-uritemplate/std-uritemplate/go v0.0.55/go.mod h1:rG/bqh/ThY4xE5de7Rap3vaDkYUT76B0GPJ0loYeTTc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= diff --git a/integrations/terraform/go.mod b/integrations/terraform/go.mod index 07767ce29fdd7..892aee15dbf33 100644 --- a/integrations/terraform/go.mod +++ b/integrations/terraform/go.mod @@ -39,7 +39,7 @@ require ( cloud.google.com/go/storage v1.39.1 // indirect connectrpc.com/connect v1.15.0 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v3 v3.0.1 // indirect @@ -121,6 +121,7 @@ require ( github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect + github.com/cjlapao/common-go v0.0.39 // indirect github.com/cloudflare/cfssl v1.6.4 // indirect github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa // indirect github.com/containerd/containerd v1.7.12 // indirect @@ -288,8 +289,17 @@ require ( github.com/mattn/go-runewidth v0.0.15 // indirect github.com/mattn/go-sqlite3 v1.14.22 // indirect github.com/mdlayher/netlink v1.7.2 // indirect - github.com/mdlayher/socket v0.4.1 // indirect + github.com/mdlayher/socket v0.5.1 // indirect github.com/microsoft/go-mssqldb v1.7.0 // indirect + github.com/microsoft/kiota-abstractions-go v1.6.0 // indirect + github.com/microsoft/kiota-authentication-azure-go v1.0.2 // indirect + github.com/microsoft/kiota-http-go v1.3.1 // indirect + github.com/microsoft/kiota-serialization-form-go v1.0.0 // indirect + github.com/microsoft/kiota-serialization-json-go v1.0.7 // indirect + github.com/microsoft/kiota-serialization-multipart-go v1.0.0 // indirect + github.com/microsoft/kiota-serialization-text-go v1.0.0 // indirect + github.com/microsoftgraph/msgraph-sdk-go v1.37.0 // indirect + github.com/microsoftgraph/msgraph-sdk-go-core v1.1.0 // indirect github.com/miekg/pkcs11 v1.1.1 // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/mitchellh/copystructure v1.2.0 // indirect @@ -350,6 +360,7 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect + github.com/std-uritemplate/std-uritemplate/go v0.0.55 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/thales-e-security/pool v0.0.2 // indirect github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect diff --git a/integrations/terraform/go.sum b/integrations/terraform/go.sum index 4b6c625c8fd65..c63d4de462380 100644 --- a/integrations/terraform/go.sum +++ b/integrations/terraform/go.sum @@ -73,8 +73,8 @@ github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9 github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0/go.mod h1:tZoQYdDZNOiIjdSn0dVWVfl0NEPGOJqVLzSrcFk4Is0= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 h1:n1DH8TPV4qqPTje2RcUBYwtrTWlabVp4n46+74X2pn4= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0/go.mod h1:HDcZnuGbiyppErN6lB+idp4CKhjbc8gwjto6OPpyggM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.0/go.mod h1:NBanQUfSWiWn3QEpWDTCU0IjBECKOYvl2R8xdRtMtiM= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 h1:sO0/P7g68FrryJzljemN+6GTssUXdANk6aJ7T1ZxnsQ= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1/go.mod h1:h8hyGFDsU5HMivxiS2iYFZsgDbU9OnnJ163x5UGVKYo= @@ -344,6 +344,8 @@ github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXH github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cjlapao/common-go v0.0.39 h1:bAAUrj2B9v0kMzbAOhzjSmiyDy+rd56r2sy7oEiQLlA= +github.com/cjlapao/common-go v0.0.39/go.mod h1:M3dzazLjTjEtZJbbxoA5ZDiGCiHmpwqW9l4UWaddwOA= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/cfssl v1.6.4 h1:NMOvfrEjFfC63K3SGXgAnFdsgkmiq4kATme5BfcqrO8= github.com/cloudflare/cfssl v1.6.4/go.mod h1:8b3CQMxfWPAeom3zBnGJ6sd+G1NkL5TXqmDXacb+1J0= @@ -1082,8 +1084,26 @@ github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxU github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g= github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw= -github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U= -github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA= +github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos= +github.com/mdlayher/socket v0.5.1/go.mod h1:TjPLHI1UgwEv5J1B5q0zTZq12A/6H7nKmtTanQE37IQ= +github.com/microsoft/kiota-abstractions-go v1.6.0 h1:qbGBNMU0/o5myKbikCBXJFohVCFrrpx2cO15Rta2WyA= +github.com/microsoft/kiota-abstractions-go v1.6.0/go.mod h1:7YH20ZbRWXGfHSSvdHkdztzgCB9mRdtFx13+hrYIEpo= +github.com/microsoft/kiota-authentication-azure-go v1.0.2 h1:tClGeyFZJ+4Bakf8u0euPM4wqy4ethycdOgx3jyH3pI= +github.com/microsoft/kiota-authentication-azure-go v1.0.2/go.mod h1:aTcti0bUJEcq7kBfQG4Sr4ElvRNuaalXcFEu4iEyQ6M= +github.com/microsoft/kiota-http-go v1.3.1 h1:S+ZDxE7Pc/Z06hbfqpFHkoq5xiC8/7d12iNovcgl+7o= +github.com/microsoft/kiota-http-go v1.3.1/go.mod h1:4QjB+as08swnZXZLx5I+ZHZ8U/tVy7Zu49RNTmWgw48= +github.com/microsoft/kiota-serialization-form-go v1.0.0 h1:UNdrkMnLFqUCccQZerKjblsyVgifS11b3WCx+eFEsAI= +github.com/microsoft/kiota-serialization-form-go v1.0.0/go.mod h1:h4mQOO6KVTNciMF6azi1J9QB19ujSw3ULKcSNyXXOMA= +github.com/microsoft/kiota-serialization-json-go v1.0.7 h1:yMbckSTPrjZdM4EMXgzLZSA3CtDaUBI350u0VoYRz7Y= +github.com/microsoft/kiota-serialization-json-go v1.0.7/go.mod h1:1krrY7DYl3ivPIzl4xTaBpew6akYNa8/Tal8g+kb0cc= +github.com/microsoft/kiota-serialization-multipart-go v1.0.0 h1:3O5sb5Zj+moLBiJympbXNaeV07K0d46IfuEd5v9+pBs= +github.com/microsoft/kiota-serialization-multipart-go v1.0.0/go.mod h1:yauLeBTpANk4L03XD985akNysG24SnRJGaveZf+p4so= +github.com/microsoft/kiota-serialization-text-go v1.0.0 h1:XOaRhAXy+g8ZVpcq7x7a0jlETWnWrEum0RhmbYrTFnA= +github.com/microsoft/kiota-serialization-text-go v1.0.0/go.mod h1:sM1/C6ecnQ7IquQOGUrUldaO5wj+9+v7G2W3sQ3fy6M= +github.com/microsoftgraph/msgraph-sdk-go v1.37.0 h1:wD62FzIBu4gVg70ikAm7D45tFqvDKo+K6aJ+zeNWlAE= +github.com/microsoftgraph/msgraph-sdk-go v1.37.0/go.mod h1:xYBUc+4LGRjYRyTF4CLiKAqb981AhlSfvRX11is25q4= +github.com/microsoftgraph/msgraph-sdk-go-core v1.1.0 h1:NB7c/n4Knj+TLaLfjsahhSqoUqoN/CtyNB0XIe/nJnM= +github.com/microsoftgraph/msgraph-sdk-go-core v1.1.0/go.mod h1:M3w/5IFJ1u/DpwOyjsjNSVEA43y1rLOeX58suyfBhGk= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26 h1:gPxPSwALAeHJSjarOs00QjVdV9QoBvc1D2ujQUr5BzU= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= @@ -1325,6 +1345,8 @@ github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyh github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/std-uritemplate/std-uritemplate/go v0.0.55 h1:muSH037g97K7U2f94G9LUuE8tZlJsoSSrPsO9V281WY= +github.com/std-uritemplate/std-uritemplate/go v0.0.55/go.mod h1:rG/bqh/ThY4xE5de7Rap3vaDkYUT76B0GPJ0loYeTTc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= diff --git a/lib/cloud/aws/policy_statements.go b/lib/cloud/aws/policy_statements.go index 92e73f14344ee..45975cd6a6cd2 100644 --- a/lib/cloud/aws/policy_statements.go +++ b/lib/cloud/aws/policy_statements.go @@ -424,6 +424,10 @@ func StatementAccessGraphAWSSync() *Statement { "iam:ListRolePolicies", "iam:ListAttachedRolePolicies", "iam:GetRolePolicy", + "iam:ListSAMLProviders", + "iam:GetSAMLProvider", + "iam:ListOpenIDConnectProviders", + "iam:GetOpenIDConnectProvider", }, Resources: allResources, } diff --git a/lib/cloud/mocks/aws.go b/lib/cloud/mocks/aws.go index df79621ba174a..016634a9e5529 100644 --- a/lib/cloud/mocks/aws.go +++ b/lib/cloud/mocks/aws.go @@ -117,6 +117,10 @@ type IAMMock struct { attachedRolePolicies map[string]map[string]string // attachedUserPolicies maps userName -> policyName -> policyDocument attachedUserPolicies map[string]map[string]string + // SAMLProviders maps saml provider ARN -> samlProvider + SAMLProviders map[string]*iam.GetSAMLProviderOutput + // OIDCProviders maps saml provider ARN -> oidcProvider + OIDCProviders map[string]*iam.GetOpenIDConnectProviderOutput } func (m *IAMMock) GetRolePolicyWithContext(ctx aws.Context, input *iam.GetRolePolicyInput, options ...request.Option) (*iam.GetRolePolicyOutput, error) { @@ -199,6 +203,56 @@ func (m *IAMMock) DeleteUserPolicyWithContext(ctx aws.Context, input *iam.Delete return &iam.DeleteUserPolicyOutput{}, nil } +func (m *IAMMock) ListSAMLProvidersWithContext(ctx aws.Context, input *iam.ListSAMLProvidersInput, options ...request.Option) (*iam.ListSAMLProvidersOutput, error) { + m.mu.RLock() + defer m.mu.RUnlock() + resp := &iam.ListSAMLProvidersOutput{} + for arn := range m.SAMLProviders { + resp.SAMLProviderList = append(resp.SAMLProviderList, &iam.SAMLProviderListEntry{ + Arn: aws.String(arn), + }) + } + return resp, nil +} + +func (m *IAMMock) GetSAMLProviderWithContext(ctx aws.Context, input *iam.GetSAMLProviderInput, options ...request.Option) (*iam.GetSAMLProviderOutput, error) { + m.mu.RLock() + defer m.mu.RUnlock() + if input.SAMLProviderArn == nil { + return nil, trace.BadParameter("SAMLProviderARN must not be nil") + } + provider, ok := m.SAMLProviders[*input.SAMLProviderArn] + if !ok { + return nil, trace.BadParameter("SAML provider %q not found", *input.SAMLProviderArn) + } + return provider, nil +} + +func (m *IAMMock) ListOpenIDConnectProvidersWithContext(ctx aws.Context, input *iam.ListOpenIDConnectProvidersInput, options ...request.Option) (*iam.ListOpenIDConnectProvidersOutput, error) { + m.mu.RLock() + defer m.mu.RUnlock() + resp := &iam.ListOpenIDConnectProvidersOutput{} + for arn := range m.OIDCProviders { + resp.OpenIDConnectProviderList = append(resp.OpenIDConnectProviderList, &iam.OpenIDConnectProviderListEntry{ + Arn: aws.String(arn), + }) + } + return resp, nil +} + +func (m *IAMMock) GetOpenIDConnectProviderWithContext(ctx aws.Context, input *iam.GetOpenIDConnectProviderInput, options ...request.Option) (*iam.GetOpenIDConnectProviderOutput, error) { + m.mu.RLock() + defer m.mu.RUnlock() + if input.OpenIDConnectProviderArn == nil { + return nil, trace.BadParameter("OpenIDConnectProviderARN must not be nil") + } + provider, ok := m.OIDCProviders[*input.OpenIDConnectProviderArn] + if !ok { + return nil, trace.BadParameter("OIDC provider %q not found", *input.OpenIDConnectProviderArn) + } + return provider, nil +} + // IAMErrorMock is a mock IAM client that returns the provided Error to all // APIs. If Error is not provided, all APIs returns trace.AccessDenied by // default. diff --git a/lib/config/configuration.go b/lib/config/configuration.go index 6c48a66bf036c..0f6b679cec085 100644 --- a/lib/config/configuration.go +++ b/lib/config/configuration.go @@ -242,6 +242,10 @@ type CommandLineFlags struct { // `teleport integration configure access-graph aws-iam` command IntegrationConfAccessGraphAWSSyncArguments IntegrationConfAccessGraphAWSSync + // IntegrationConfAzureOIDCArguments contains the arguments of + // `teleport integration configure azure-oidc` command + IntegrationConfAzureOIDCArguments IntegrationConfAzureOIDC + // IntegrationConfSAMLIdPGCPWorkforceArguments contains the arguments of // `teleport integration configure samlidp gcp-workforce` command IntegrationConfSAMLIdPGCPWorkforceArguments samlidpconfig.GCPWorkforceAPIParams @@ -263,6 +267,22 @@ type IntegrationConfAccessGraphAWSSync struct { Role string } +// IntegrationConfAzureOIDC contains the arguments of +// `teleport integration configure azure-oidc` command +type IntegrationConfAzureOIDC struct { + // ProxyPublicAddr is the publicly-reachable URL of the Teleport Proxy. + // It is used as the OIDC issuer URL, as well as for SAML URIs. + ProxyPublicAddr string + + // AuthConnectorName is the name of the SAML connector that will be created on Teleport side. + AuthConnectorName string + + // AccessGraphEnabled is a flag indicating that access graph integration is requested. + // When this is true, the integration script will produce + // a cache file necessary for TAG synchronization. + AccessGraphEnabled bool +} + // IntegrationConfDeployServiceIAM contains the arguments of // `teleport integration configure deployservice-iam` command type IntegrationConfDeployServiceIAM struct { diff --git a/lib/integrations/azureoidc/accessgraph.go b/lib/integrations/azureoidc/accessgraph.go new file mode 100644 index 0000000000000..f84ca992243fc --- /dev/null +++ b/lib/integrations/azureoidc/accessgraph.go @@ -0,0 +1,167 @@ +// Teleport +// Copyright (C) 2024 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 azureoidc + +import ( + "bytes" + "compress/gzip" + "context" + "encoding/json" + "errors" + "io" + "log/slog" + "os" + "path" + + "github.com/gravitational/trace" + msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go" + + "github.com/gravitational/teleport/api/types" +) + +var errNonSSOApp = errors.New("app does not have SSO set up") + +// singleSignOnMode represents the possible values for `currentSingleSignOnMode` in `adSingleSignOn` +type singleSignOnMode string + +const ( + // singleSignOnModeNone indicates that the application does not have SSO set up. + singleSignOnModeNone singleSignOnMode = "none" //nolint:unused // this serves as documentation of a possible value. + // singleSignOnModeFederated indicates federated SSO such as SAML. + singleSignOnModeFederated singleSignOnMode = "federated" +) + +// adSingleSignOn represents the response from https://main.iam.ad.ext.azure.com/api/ApplicationSso/{servicePrincipalID}/SingleSignOn +type adSingleSignOn struct { + CurrentSingleSignOnMode singleSignOnMode `json:"currentSingleSignOnMode"` +} + +// TAGInfoCache is the format for the file produced by CreateTAGCacheFile. +type TAGInfoCache struct { + AppSsoSettingsCache []*types.PluginEntraIDAppSSOSettings `json:"app_sso_settings_cache"` +} + +// getSingleSignOn uses Azure private API to get basic information about an enterprise applications single sign on mode. +func getSingleSignOn(ctx context.Context, token string, servicePrincipalID string) (*adSingleSignOn, error) { + payload, err := privateAPIGet(ctx, token, path.Join("ApplicationSso", servicePrincipalID, "SingleSignOn")) + if err != nil { + return nil, trace.Wrap(err) + } + + var result adSingleSignOn + if err := json.Unmarshal(payload, &result); err != nil { + return nil, trace.Wrap(err, "failed to deserialize SingleSignOn") + } + + return &result, nil +} + +// getFederatedSSOV2Compressed retrieves the FederatedSsoV2 payload for the given AppId +// and returns it as gzipped bytes. +func getFederatedSSOV2Compressed(ctx context.Context, graphClient *msgraphsdk.GraphServiceClient, appID string, token string) ([]byte, error) { + sp, err := graphClient.ServicePrincipalsWithAppId(&appID).Get(ctx, nil) + if err != nil { + return nil, trace.Wrap(err, "could not retrieve service principal") + } + spID := sp.GetId() + if spID == nil { + return nil, trace.BadParameter("service principal ID is nil") + } + + sso, err := getSingleSignOn(ctx, token, *spID) + if err != nil { + return nil, trace.Wrap(err, "failed to get single sign on data for app_id %s", appID) + } else if sso.CurrentSingleSignOnMode != singleSignOnModeFederated { + return nil, trace.Wrap(errNonSSOApp) + } + + federatedSSOV2, err := privateAPIGet(ctx, token, path.Join("ApplicationSso", *spID, "FederatedSsoV2")) + if err != nil { + return nil, trace.Wrap(err, "getting federated SSO v2 info failed", "error", err) + } + + federatedSSOV2Compressed, err := gzipBytes(federatedSSOV2) + return federatedSSOV2Compressed, trace.Wrap(err) +} + +// CreateTAGCacheFile populates a file containing the information necessary for Access Graph to analyze Azure SSO. +func CreateTAGCacheFile(ctx context.Context) error { + graphClient, err := createGraphClient() + if err != nil { + return trace.Wrap(err) + } + + // Get information about enterprise apps + appResp, err := graphClient.Applications().Get(ctx, nil) + if err != nil { + return trace.Wrap(err) + } + + // Authorize to the private API + tenantID, err := getTenantID() + if err != nil { + return trace.Wrap(err) + } + token, err := getPrivateAPIToken(ctx, tenantID) + if err != nil { + return trace.Wrap(err) + } + + cache := &TAGInfoCache{} + + for _, app := range appResp.GetValue() { + appID := app.GetAppId() + if appID == nil { + slog.WarnContext(ctx, "app ID is nil", "app", app) + continue + } + federatedSSOV2Compressed, err := getFederatedSSOV2Compressed(ctx, graphClient, *appID, token) + if errors.Is(err, errNonSSOApp) { + slog.DebugContext(ctx, "sso not set up for app, will skip it", "app_id", *appID) + continue + } else if err != nil { + slog.WarnContext(ctx, "failed to retrieve SSO info", "app_id", *appID, "error", err) + } + cache.AppSsoSettingsCache = append(cache.AppSsoSettingsCache, &types.PluginEntraIDAppSSOSettings{ + AppId: *appID, + FederatedSsoV2: federatedSSOV2Compressed, + }) + } + + payload, err := json.Marshal(cache) + if err != nil { + return trace.Wrap(err) + } + return trace.Wrap(os.WriteFile("cache.json", payload, 0600), "failed to write the TAG cache file") +} + +// gzipBytes compresses the given byte slice, returning the result as a new byte slice. +func gzipBytes(src []byte) ([]byte, error) { + out := new(bytes.Buffer) + writer := gzip.NewWriter(out) + + _, err := io.Copy(writer, bytes.NewReader(src)) + if err != nil { + return nil, trace.Wrap(err) + } + + err = writer.Close() + if err != nil { + return nil, trace.Wrap(err) + } + return out.Bytes(), nil +} diff --git a/lib/integrations/azureoidc/enterprise_app.go b/lib/integrations/azureoidc/enterprise_app.go new file mode 100644 index 0000000000000..49ced6a385175 --- /dev/null +++ b/lib/integrations/azureoidc/enterprise_app.go @@ -0,0 +1,210 @@ +// Teleport +// Copyright (C) 2024 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 azureoidc + +import ( + "context" + "log/slog" + "net/url" + "path" + "time" + + "github.com/google/uuid" + "github.com/gravitational/trace" + msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go" + "github.com/microsoftgraph/msgraph-sdk-go/applicationtemplates" + "github.com/microsoftgraph/msgraph-sdk-go/models" + "github.com/microsoftgraph/msgraph-sdk-go/serviceprincipals" + + "github.com/gravitational/teleport/api/utils/retryutils" +) + +// nonGalleryAppTemplateID is a constant for the special application template ID in Microsoft Graph, +// equivalent to the "create your own application" option in Azure portal. +// Only non-gallery apps ("Create your own application" option in the UI) are allowed to use SAML SSO, +// hence we use this template. +// Ref: https://learn.microsoft.com/en-us/graph/api/applicationtemplate-instantiate +const nonGalleryAppTemplateID = "8adf8e6e-67b2-4cf2-a259-e3dc5476c621" + +// A list of Microsoft Graph permissions ("app roles") for directory sync as performed by the Entra ID plugin. +// Ref: https://learn.microsoft.com/en-us/graph/permissions-reference +var appRoles = []string{ + // Application.Read.All + "9a5d68dd-52b0-4cc2-bd40-abcf44ac3a30", + // Directory.Read.All + "7ab1d382-f21e-4acd-a863-ba3e13f7da61", + // Policy.Read.All + "246dd0d5-5bd0-4def-940b-0421030a5b68", +} + +// SetupEnterpriseApp sets up an Enterprise Application in the Entra ID directory. +// The enterprise application: +// - Provides Teleport with OIDC authentication to Azure +// - Is given the permissions to access certain Microsoft Graph API endpoints for this tenant. +// - Provides SSO to the Teleport cluster via SAML. +func SetupEnterpriseApp(ctx context.Context, proxyPublicAddr string, authConnectorName string) (string, string, error) { + var appID, tenantID string + + tenantID, err := getTenantID() + if err != nil { + return appID, tenantID, trace.Wrap(err) + } + + graphClient, err := createGraphClient() + if err != nil { + return appID, tenantID, trace.Wrap(err) + } + + proxyURL, err := url.Parse(proxyPublicAddr) + if err != nil { + return appID, tenantID, trace.Wrap(err, "could not parse URL of the Proxy Service") + } + + displayName := "Teleport" + " " + proxyURL.Hostname() + + instantiateRequest := applicationtemplates.NewItemInstantiatePostRequestBody() + instantiateRequest.SetDisplayName(&displayName) + appAndSP, err := graphClient.ApplicationTemplates(). + ByApplicationTemplateId(nonGalleryAppTemplateID). + Instantiate(). + Post(ctx, instantiateRequest, nil) + + if err != nil { + return appID, tenantID, trace.Wrap(err, "failed to instantiate application template") + } + + app := appAndSP.GetApplication() + sp := appAndSP.GetServicePrincipal() + appID = *app.GetAppId() + spID := *sp.GetId() + + msGraphResourceID, err := getMSGraphResourceID(ctx, graphClient) + if err != nil { + return appID, tenantID, trace.Wrap(err, "failed to get MS Graph API resource ID") + } + + msGraphResourceUUID := uuid.MustParse(msGraphResourceID) + + r, err := retry() + if err != nil { + return appID, tenantID, trace.Wrap(err) + } + + const maxRetries = 10 + for _, appRoleID := range appRoles { + r.Reset() + var err error + + assignment := models.NewAppRoleAssignment() + spUUID := uuid.MustParse(spID) + assignment.SetPrincipalId(&spUUID) + assignment.SetResourceId(&msGraphResourceUUID) + appRoleUUID := uuid.MustParse(appRoleID) + assignment.SetAppRoleId(&appRoleUUID) + + // There are some eventual consistency shenanigans instantiating enteprise applications, + // where assigning app roles may temporarily return "not found" for the newly-created App ID. + // Retry a few times to remediate. + for i := 0; i < maxRetries; i++ { + slog.DebugContext(ctx, "assign app role", "role_id", appRoleID, "attempt", i) + _, err = graphClient.ServicePrincipals(). + ByServicePrincipalId(spID). + AppRoleAssignments(). + Post(ctx, assignment, nil) + if err != nil { + r.Inc() + <-r.After() + } else { + break + } + } + if err != nil { + return appID, tenantID, trace.Wrap(err, "failed to assign app role %s", appRoleID) + } + } + + if err := createFederatedAuthCredential(ctx, graphClient, *app.GetId(), proxyPublicAddr); err != nil { + return appID, tenantID, trace.Wrap(err, "failed to create an OIDC federated auth credential") + } + + acsURL, err := url.Parse(proxyPublicAddr) + if err != nil { + return appID, tenantID, trace.Wrap(err, "failed to parse proxy public address") + } + acsURL.Path = path.Join("/v1/webapi/saml/acs", authConnectorName) + if err := setupSSO(ctx, graphClient, *app.GetId(), spID, acsURL.String()); err != nil { + return appID, tenantID, trace.Wrap(err, "failed to set up SSO for the enterprise app") + } + + return appID, tenantID, nil +} + +// createFederatedAuthCredential creates a new federated (OIDC) auth credential for the given Entra application. +func createFederatedAuthCredential(ctx context.Context, graphClient *msgraphsdk.GraphServiceClient, appObjectID string, proxyPublicAddr string) error { + credential := models.NewFederatedIdentityCredential() + name := "teleport-oidc" + audiences := []string{azureDefaultJWTAudience} + subject := azureSubject + credential.SetName(&name) + credential.SetIssuer(&proxyPublicAddr) + credential.SetAudiences(audiences) + credential.SetSubject(&subject) + + // ByApplicationID here means the object ID, + // i.e. app.GetId(), not app.GetAppId(). + _, err := graphClient.Applications().ByApplicationId(appObjectID). + FederatedIdentityCredentials().Post(ctx, credential, nil) + + return trace.Wrap(err) + +} + +// getMSGraphResourceID gets the resource ID for the Microsoft Graph app in the Entra directory. +func getMSGraphResourceID(ctx context.Context, graphClient *msgraphsdk.GraphServiceClient) (string, error) { + requestFilter := "displayName eq 'Microsoft Graph'" + + requestParameters := &serviceprincipals.ServicePrincipalsRequestBuilderGetQueryParameters{ + Filter: &requestFilter, + } + configuration := &serviceprincipals.ServicePrincipalsRequestBuilderGetRequestConfiguration{ + QueryParameters: requestParameters, + } + spResponse, err := graphClient.ServicePrincipals().Get(ctx, configuration) + if err != nil { + return "", trace.Wrap(err) + } + + spList := spResponse.GetValue() + switch len(spList) { + case 0: + return "", trace.NotFound("Microsoft Graph app not found in the tenant") + case 1: + return *spList[0].GetId(), nil + default: + return "", trace.BadParameter("Multiple service principals found for Microsoft Graph. This is not expected.") + } + +} + +func retry() (*retryutils.RetryV2, error) { + r, err := retryutils.NewRetryV2(retryutils.RetryV2Config{ + First: time.Second, + Max: 10 * time.Second, + Driver: retryutils.NewExponentialDriver(time.Second), + }) + return r, trace.Wrap(err) +} diff --git a/lib/integrations/azureoidc/private.go b/lib/integrations/azureoidc/private.go new file mode 100644 index 0000000000000..932bc5c61d6fe --- /dev/null +++ b/lib/integrations/azureoidc/private.go @@ -0,0 +1,181 @@ +// Teleport +// Copyright (C) 2024 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 azureoidc + +import ( + "context" + "encoding/json" + "fmt" + "io" + "log/slog" + "net/http" + "net/url" + "os" + "os/user" + "path" + "path/filepath" + "strings" + + "github.com/google/uuid" + "github.com/gravitational/trace" + + "github.com/gravitational/teleport/lib/defaults" +) + +type msalTokenCache struct { + RefreshToken map[string]msalToken `json:"RefreshToken"` +} + +type msalToken struct { + ClientID string `json:"client_id"` + Secret string `json:"secret"` +} + +type exchangeResponse struct { + AccessToken string `json:"access_token"` +} + +// getRefreshTokens returns all current refresh tokens from the Azure CLI token cache. +func getRefreshTokens() ([]msalToken, error) { + usr, err := user.Current() + if err != nil { + return nil, trace.Wrap(err) + } + f, err := os.Open(filepath.Join(usr.HomeDir, ".azure/msal_token_cache.json")) + if err != nil { + return nil, trace.Wrap(err) + } + + var tokenCache msalTokenCache + if err := json.NewDecoder(f).Decode(&tokenCache); err != nil { + return nil, trace.Wrap(err) + } + + var results []msalToken + for _, tok := range tokenCache.RefreshToken { + results = append(results, tok) + } + if len(results) == 0 { + return nil, trace.NotFound("no refresh tokens found in MSAL token cache") + } + return results, nil +} + +// exchangeToken takes az CLI token and exchanges it for one suitable for the private API +func exchangeToken(ctx context.Context, tenantID string, token msalToken) (string, error) { + params := url.Values{ + "client_id": {token.ClientID}, + "grant_type": {"refresh_token"}, + "refresh_token": {token.Secret}, + "scope": {"74658136-14ec-4630-ad9b-26e160ff0fc6/.default openid profile offline_access"}, + } + + uri := url.URL{ + Host: "login.microsoftonline.com", + Path: path.Join(tenantID, "oauth2/v2.0/token"), + Scheme: "https", + } + + req, err := http.NewRequestWithContext(ctx, http.MethodPost, uri.String(), strings.NewReader(params.Encode())) + if err != nil { + return "", trace.Wrap(err) + } + + client, err := defaults.HTTPClient() + if err != nil { + return "", trace.Wrap(err) + } + + resp, err := client.Do(req) + if err != nil { + return "", trace.Wrap(err) + } + defer resp.Body.Close() + payload, err := io.ReadAll(resp.Body) + if err != nil { + return "", trace.Wrap(err) + } + if resp.StatusCode != http.StatusOK { + return "", trace.Errorf("failed to exchange token: %s", string(payload)) + } + + var response exchangeResponse + err = json.Unmarshal(payload, &response) + if err != nil { + return "", trace.Wrap(err) + } + + if response.AccessToken == "" { + return "", trace.NotFound("expected non-empty AccessToken in the response") + } + + return response.AccessToken, nil +} + +// getPrivateAPIToken uses the azure CLI token cache to exchange a refresh token +// for an access token authenticated to the "private" Azure API. +func getPrivateAPIToken(ctx context.Context, tenantID string) (string, error) { + var err error + tokens, err := getRefreshTokens() + if err != nil { + return "", trace.Wrap(err) + } + for _, token := range tokens { + var tokenStr string + slog.DebugContext(ctx, "trying token", "client_id", token.ClientID) + tokenStr, err = exchangeToken(ctx, tenantID, token) + if err != nil { + slog.DebugContext(ctx, "error exchanging token", "err", err) + } else { + return tokenStr, nil + } + } + return "", trace.Wrap(err, "no viable token") +} + +// privateAPIGet invokes GET on the given endpoint of the "private" main.iam.ad.ext.azure.com azure API. +// On status code 200 OK, it returns the payload received. +// On any other status code, or protocol errors, it returns an error. +func privateAPIGet(ctx context.Context, accessToken string, endpoint string) ([]byte, error) { + uri := url.URL{ + Scheme: "https", + Host: "main.iam.ad.ext.azure.com", + Path: path.Join("api", endpoint), + } + req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri.String(), nil) + if err != nil { + return nil, trace.Wrap(err) + } + req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", accessToken)) + req.Header.Add("x-ms-client-request-id", uuid.NewString()) + + client, err := defaults.HTTPClient() + if err != nil { + return nil, trace.Wrap(err) + } + + resp, err := client.Do(req) + if err != nil { + return nil, trace.Wrap(err) + } + defer resp.Body.Close() + payload, err := io.ReadAll(resp.Body) + if resp.StatusCode != http.StatusOK { + return nil, trace.Errorf("request to %s failed: %s", endpoint, string(payload)) + } + return payload, trace.Wrap(err) +} diff --git a/lib/integrations/azureoidc/provision.go b/lib/integrations/azureoidc/provision.go new file mode 100644 index 0000000000000..8bf2b53cead44 --- /dev/null +++ b/lib/integrations/azureoidc/provision.go @@ -0,0 +1,118 @@ +// Teleport +// Copyright (C) 2024 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 azureoidc + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "os" + "os/exec" + "os/user" + "path/filepath" + + "github.com/Azure/azure-sdk-for-go/sdk/azidentity" + "github.com/gravitational/trace" + auth "github.com/microsoft/kiota-authentication-azure-go" + msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go" +) + +// createGraphClient creates a new graph client from ambient credentials (Azure CLI credentials cache). +func createGraphClient() (*msgraphsdk.GraphServiceClient, error) { + credential, err := azidentity.NewDefaultAzureCredential(nil) + if err != nil { + return nil, trace.Wrap(err) + } + + // Create an auth provider using the credential + authProvider, err := auth.NewAzureIdentityAuthenticationProviderWithScopes(credential, []string{ + "https://graph.microsoft.com/.default", + }) + if err != nil { + return nil, trace.Wrap(err) + } + + // Create a request adapter using the auth provider + adapter, err := msgraphsdk.NewGraphRequestAdapter(authProvider) + if err != nil { + return nil, trace.Wrap(err) + } + + // Create a Graph client using request adapter + return msgraphsdk.NewGraphServiceClient(adapter), nil +} + +// EnsureAZLogin invokes `az login` and waits for the command to successfully complete. +// In Azure Cloud Shell, this has the effect of retrieving on-behalf-of user credentials +// which we need to read SSO information (see [CreateTAGCacheFile] and ./private.go), +// as well as prompting the user to choose the desired Azure subscription / directory tenant. +func EnsureAZLogin(ctx context.Context) error { + fmt.Println("We will execute `az login` to acquire the necessary permissions and allow you to choose the desired Entra ID tenant.") + fmt.Println("Please follow the instructions below.") + cmd := exec.CommandContext(ctx, "az", "login", "--only-show-errors") + cmd.Stdin = os.Stdin + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + return trace.Wrap(cmd.Run()) +} + +func getAzureDir() (string, error) { + usr, err := user.Current() + if err != nil { + return "", trace.Wrap(err) + } + return filepath.Join(usr.HomeDir, ".azure"), nil +} + +type azureCLIProfile struct { + Subscriptions []azureCLISubscription `json:"subscriptions"` +} + +type azureCLISubscription struct { + TenantID string `json:"tenantID"` + IsDefault bool `json:"isDefault"` +} + +// getTenantID infers the Azure tenant ID from the Azure CLI profiles. +func getTenantID() (string, error) { + azureDir, err := getAzureDir() + if err != nil { + return "", trace.Wrap(err) + } + + payload, err := os.ReadFile(filepath.Join(azureDir, "azureProfile.json")) + if err != nil { + return "", trace.Wrap(err) + } + + // Remove UTF-8 BOM + payload = bytes.TrimPrefix(payload, []byte("\xef\xbb\xbf")) + + var profile azureCLIProfile + if err := json.Unmarshal(payload, &profile); err != nil { + return "", trace.Wrap(err, "failed to parse Azure profile") + } + + for _, subscription := range profile.Subscriptions { + if subscription.IsDefault { + return subscription.TenantID, nil + } + } + + return "", trace.NotFound("subscription not found") +} diff --git a/lib/integrations/azureoidc/provision_sso.go b/lib/integrations/azureoidc/provision_sso.go new file mode 100644 index 0000000000000..f552de976c7c5 --- /dev/null +++ b/lib/integrations/azureoidc/provision_sso.go @@ -0,0 +1,91 @@ +// Teleport +// Copyright (C) 2024 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 azureoidc + +import ( + "context" + + "github.com/gravitational/trace" + msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go" + "github.com/microsoftgraph/msgraph-sdk-go/models" + "github.com/microsoftgraph/msgraph-sdk-go/serviceprincipals" +) + +// setupSSO sets up SAML based SSO to Teleport for the given application (service principal). +func setupSSO(ctx context.Context, graphClient *msgraphsdk.GraphServiceClient, appObjectID string, spID string, acsURL string) error { + spPatch := models.NewServicePrincipal() + // Set service principal to prefer SAML sign on + preferredSingleSignOnMode := "saml" + spPatch.SetPreferredSingleSignOnMode(&preferredSingleSignOnMode) + // Do not require explicit assignment of the app to use SSO. + // This is per our manual set-up recommendations, see https://goteleport.com/docs/access-controls/sso/azuread/ . + appRoleAssignmentRequired := false + spPatch.SetAppRoleAssignmentRequired(&appRoleAssignmentRequired) + + _, err := graphClient.ServicePrincipals(). + ByServicePrincipalId(spID). + Patch(ctx, spPatch, nil) + + if err != nil { + return trace.Wrap(err, "failed to enable SSO for service principal") + } + + // Add SAML urls + app := models.NewApplication() + app.SetIdentifierUris([]string{acsURL}) + webApp := models.NewWebApplication() + webApp.SetRedirectUris([]string{acsURL}) + app.SetWeb(webApp) + + _, err = graphClient.Applications(). + ByApplicationId(appObjectID). + Patch(ctx, app, nil) + + if err != nil { + return trace.Wrap(err, "failed to set SAML URIs") + } + + // Add a SAML signing certificate + certRequest := serviceprincipals.NewItemAddTokenSigningCertificatePostRequestBody() + // Display name is required to start with `CN=`. + // Ref: https://learn.microsoft.com/en-us/graph/api/serviceprincipal-addtokensigningcertificate + displayName := "CN=azure-sso" + certRequest.SetDisplayName(&displayName) + + cert, err := graphClient.ServicePrincipals(). + ByServicePrincipalId(spID). + AddTokenSigningCertificate(). + Post(ctx, certRequest, nil) + + if err != nil { + trace.Wrap(err, "failed to create a signing certificate") + } + + // Set the preferred SAML signing key + spPatch = models.NewServicePrincipal() + spPatch.SetPreferredTokenSigningKeyThumbprint(cert.GetThumbprint()) + + _, err = graphClient.ServicePrincipals(). + ByServicePrincipalId(spID). + Patch(ctx, spPatch, nil) + + if err != nil { + return trace.Wrap(err, "failed to set SAML signing key") + } + + return nil +} diff --git a/lib/integrations/azureoidc/token_generator.go b/lib/integrations/azureoidc/token_generator.go new file mode 100644 index 0000000000000..c938ceb6debf4 --- /dev/null +++ b/lib/integrations/azureoidc/token_generator.go @@ -0,0 +1,99 @@ +// Teleport +// Copyright (C) 2024 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 azureoidc + +import ( + "context" + "crypto" + "time" + + "github.com/gravitational/trace" + "github.com/jonboulle/clockwork" + + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/jwt" + "github.com/gravitational/teleport/lib/services" + "github.com/gravitational/teleport/lib/utils/oidc" +) + +// azureDefaultJWTAudience is the default audience used by Azure +// when setting up an enterprise application. +const azureDefaultJWTAudience = "api://AzureADTokenExchange" + +// azureSubject is the subject of our choosing for the OIDC credential. +const azureSubject = "teleport-azure" + +// KeyStoreManager defines methods to get signers using the server's keystore. +type KeyStoreManager interface { + // GetJWTSigner selects a usable JWT keypair from the given keySet and returns a [crypto.Signer]. + GetJWTSigner(ctx context.Context, ca types.CertAuthority) (crypto.Signer, error) +} + +// Cache is the subset of the cached resources that the AWS OIDC Token Generation queries. +type Cache interface { + // GetCertAuthority returns cert authority by id + GetCertAuthority(ctx context.Context, id types.CertAuthID, loadKeys bool) (types.CertAuthority, error) + + // GetClusterName returns local cluster name of the current auth server + GetClusterName(...services.MarshalOption) (types.ClusterName, error) + + // GetProxies returns a list of registered proxies. + GetProxies() ([]types.Server, error) +} + +// GenerateEntraOIDCToken returns a JWT suitable for OIDC authentication to MS Graph API. +func GenerateEntraOIDCToken(ctx context.Context, cache Cache, manager KeyStoreManager, clock clockwork.Clock) (string, error) { + clusterName, err := cache.GetClusterName() + if err != nil { + return "", trace.Wrap(err) + } + + ca, err := cache.GetCertAuthority(ctx, types.CertAuthID{ + Type: types.OIDCIdPCA, + DomainName: clusterName.GetClusterName(), + }, true /*loadKeys*/) + if err != nil { + return "", trace.Wrap(err) + } + + issuer, err := oidc.IssuerForCluster(ctx, cache) + if err != nil { + return "", trace.Wrap(err) + } + + signer, err := manager.GetJWTSigner(ctx, ca) + if err != nil { + return "", trace.Wrap(err) + } + + privateKey, err := services.GetJWTSigner(signer, ca.GetClusterName(), clock) + if err != nil { + return "", trace.Wrap(err) + } + + token, err := privateKey.SignEntraOIDC(jwt.SignParams{ + Audience: azureDefaultJWTAudience, + Subject: azureSubject, + Issuer: issuer, + Expires: clock.Now().Add(time.Hour), + }) + if err != nil { + return "", trace.Wrap(err) + } + + return token, nil +} diff --git a/lib/jwt/jwk.go b/lib/jwt/jwk.go index c851ba5725d11..68d575b86eb66 100644 --- a/lib/jwt/jwk.go +++ b/lib/jwt/jwk.go @@ -21,6 +21,8 @@ package jwt import ( "crypto" "crypto/rsa" + "crypto/sha256" + "crypto/x509" "encoding/base64" "math/big" @@ -50,6 +52,12 @@ type JWK struct { KeyID string `json:"kid"` } +// KeyID returns a key id derived from the public key. +func KeyID(pub *rsa.PublicKey) string { + hash := sha256.Sum256(x509.MarshalPKCS1PublicKey(pub)) + return base64.RawURLEncoding.EncodeToString(hash[:]) +} + // MarshalJWK will marshal a supported public key into JWK format. func MarshalJWK(bytes []byte) (JWK, error) { // Parse the public key and validate type. @@ -69,7 +77,7 @@ func MarshalJWK(bytes []byte) (JWK, error) { N: base64.RawURLEncoding.EncodeToString(publicKey.N.Bytes()), E: base64.RawURLEncoding.EncodeToString(big.NewInt(int64(publicKey.E)).Bytes()), Use: defaults.JWTUse, - KeyID: "", + KeyID: KeyID(publicKey), }, nil } diff --git a/lib/jwt/jwk_test.go b/lib/jwt/jwk_test.go index 6cfc91d2102d5..d71881d69d637 100644 --- a/lib/jwt/jwk_test.go +++ b/lib/jwt/jwk_test.go @@ -19,6 +19,11 @@ package jwt import ( + "crypto/rand" + "crypto/rsa" + "crypto/sha256" + "encoding/base64" + "math/big" "testing" "github.com/stretchr/testify/require" @@ -34,3 +39,47 @@ func TestMarshalJWK(t *testing.T) { // Required for integrating with AWS OpenID Connect Identity Provider. require.Equal(t, "sig", jwk.Use) } + +func TestKeyIDHasConsistentOutputForAnInput(t *testing.T) { + t.Parallel() + + privateKey, err := rsa.GenerateKey(rand.Reader, 1024) + require.NoError(t, err) + publicKey := privateKey.Public().(*rsa.PublicKey) + id1 := KeyID(publicKey) + id2 := KeyID(publicKey) + require.NotEmpty(t, id1) + require.Equal(t, id1, id2) + + expectedLength := base64.RawURLEncoding.EncodedLen(sha256.Size) + require.Len(t, id1, expectedLength, "expected key id to always be %d characters long", expectedLength) +} + +func TestKeyIDHasDistinctOutputForDifferingInputs(t *testing.T) { + t.Parallel() + + privateKey1, err := rsa.GenerateKey(rand.Reader, 1024) + require.NoError(t, err) + privateKey2, err := rsa.GenerateKey(rand.Reader, 1024) + require.NoError(t, err) + publicKey1 := privateKey1.Public().(*rsa.PublicKey) + publicKey2 := privateKey2.Public().(*rsa.PublicKey) + id1 := KeyID(publicKey1) + id2 := KeyID(publicKey2) + require.NotEmpty(t, id1) + require.NotEmpty(t, id2) + require.NotEqual(t, id1, id2) +} + +// TestKeyIDCompatibility ensures we do not introduce a change in the KeyID algorithm for existing keys. +// It does so by ensuring that a pre-generated public key results in the expected value. +func TestKeyIDCompatibility(t *testing.T) { + n, ok := new(big.Int). + SetString("10804584566601725083798733714540307814537881454603593919227265169397611763416631197061041949793088023127406259586903197568870611092333639226643589004457719", 10) + require.True(t, ok, "failed to create a bigint") + publicKey := &rsa.PublicKey{ + E: 65537, + N: n, + } + require.Equal(t, "GDLHLDvPUYmNLVU3WgshDX7bAw8xEmML8ypeE9KRAEQ", KeyID(publicKey)) +} diff --git a/lib/jwt/jwt.go b/lib/jwt/jwt.go index 4e24a8541c0a3..083d3b4139107 100644 --- a/lib/jwt/jwt.go +++ b/lib/jwt/jwt.go @@ -145,12 +145,13 @@ func (p *SignParams) Check() error { } // sign will return a signed JWT with the passed in claims embedded within. -func (k *Key) sign(claims any) (string, error) { - return k.signAny(claims) +// `opts`, when not nil, specifies additional signing options, such as additional JWT headers. +func (k *Key) sign(claims any, opts *jose.SignerOptions) (string, error) { + return k.signAny(claims, opts) } // signAny will return a signed JWT with the passed in claims embedded within; unlike sign it allows more flexibility in the claim data. -func (k *Key) signAny(claims any) (string, error) { +func (k *Key) signAny(claims any, opts *jose.SignerOptions) (string, error) { if k.config.PrivateKey == nil { return "", trace.BadParameter("can not sign token with non-signing key") } @@ -167,7 +168,12 @@ func (k *Key) signAny(claims any) (string, error) { Algorithm: k.config.Algorithm, Key: signer, } - sig, err := jose.NewSigner(signingKey, (&jose.SignerOptions{}).WithType("JWT")) + + if opts == nil { + opts = &jose.SignerOptions{} + } + opts = opts.WithType("JWT") + sig, err := jose.NewSigner(signingKey, opts) if err != nil { return "", trace.Wrap(err) } @@ -199,7 +205,7 @@ func (k *Key) Sign(p SignParams) (string, error) { Traits: p.Traits, } - return k.sign(claims) + return k.sign(claims, nil) } // awsOIDCCustomClaims defines the require claims for the JWT token used in AWS OIDC Integration. @@ -216,7 +222,7 @@ type awsOIDCCustomClaims struct { // - Issuer: stored as Issuer (iss) claim // - Subject: stored as Subject (sub) claim // - Audience: stored as Audience (aud) claim -// - Expiries: stored as Expiry (exp) claim +// - Expires: stored as Expiry (exp) claim func (k *Key) SignAWSOIDC(p SignParams) (string, error) { // Sign the claims and create a JWT token. claims := awsOIDCCustomClaims{ @@ -232,7 +238,42 @@ func (k *Key) SignAWSOIDC(p SignParams) (string, error) { }, } - return k.sign(claims) + // AWS does not require `kid` claim in the JWT per se, + // but it seems to (NB: educated guess) require it if JWKS has multiple JWK-s with different `kid`-s. + opts := (&jose.SignerOptions{}). + WithHeader(jose.HeaderKey("kid"), "") + + return k.sign(claims, opts) +} + +// SignEntraOIDC signs a JWT for the Entra ID Integration. +// Required Params: +// - Issuer: stored as Issuer (iss) claim +// - Subject: stored as Subject (sub) claim +// - Audience: stored as Audience (aud) claim +// - Expires: stored as Expiry (exp) claim +func (k *Key) SignEntraOIDC(p SignParams) (string, error) { + // Sign the claims and create a JWT token. + claims := jwt.Claims{ + Issuer: p.Issuer, + Subject: p.Subject, + Audience: jwt.Audience{p.Audience}, + ID: uuid.NewString(), + NotBefore: jwt.NewNumericDate(k.config.Clock.Now().Add(-10 * time.Second)), + Expiry: jwt.NewNumericDate(p.Expires), + IssuedAt: jwt.NewNumericDate(k.config.Clock.Now().Add(-10 * time.Second)), + } + + // Azure expect a `kid` header to be present and non-empty, + // unlike e.g. AWS which accepts an empty `kid` string value. + publicKey, ok := k.config.PublicKey.(*rsa.PublicKey) + if !ok { + return "", trace.BadParameter("expected an RSA public key") + } + kid := KeyID(publicKey) + opts := (&jose.SignerOptions{}). + WithHeader(jose.HeaderKey("kid"), kid) + return k.sign(claims, opts) } func (k *Key) SignSnowflake(p SignParams, issuer string) (string, error) { @@ -247,7 +288,7 @@ func (k *Key) SignSnowflake(p SignParams, issuer string) (string, error) { }, } - return k.sign(claims) + return k.sign(claims, nil) } // AzureTokenClaims represent a minimal set of claims that will be encoded as JWT in Azure access token and passed back to az CLI. @@ -260,7 +301,7 @@ type AzureTokenClaims struct { // SignAzureToken signs AzureTokenClaims func (k *Key) SignAzureToken(claims AzureTokenClaims) (string, error) { - return k.signAny(claims) + return k.signAny(claims, nil) } type PROXYSignParams struct { @@ -284,7 +325,7 @@ func (k *Key) SignPROXYJWT(p PROXYSignParams) (string, error) { }, } - return k.sign(claims) + return k.sign(claims, nil) } // VerifyParams are the parameters needed to pass the token and data needed to verify. diff --git a/lib/srv/discovery/fetchers/aws-sync/aws-sync.go b/lib/srv/discovery/fetchers/aws-sync/aws-sync.go index dfa369b4a92ba..0bfb549ed89ca 100644 --- a/lib/srv/discovery/fetchers/aws-sync/aws-sync.go +++ b/lib/srv/discovery/fetchers/aws-sync/aws-sync.go @@ -123,6 +123,10 @@ type Resources struct { AccessEntries []*accessgraphv1alpha.AWSEKSClusterAccessEntryV1 // RDSDatabases is a list of RDS instances and clusters. RDSDatabases []*accessgraphv1alpha.AWSRDSDatabaseV1 + // SAMLProviders is a list of SAML providers. + SAMLProviders []*accessgraphv1alpha.AWSSAMLProviderV1 + // OIDCProviders is a list of OIDC providers. + OIDCProviders []*accessgraphv1alpha.AWSOIDCProviderV1 } func (r *Resources) count() int { @@ -243,6 +247,11 @@ func (a *awsFetcher) poll(ctx context.Context, features Features) (*Resources, e eGroup.Go(a.pollAWSRDSDatabases(ctx, result, collectErr)) } + if features.IDP { + eGroup.Go(a.pollAWSSAMLProviders(ctx, result, collectErr)) + eGroup.Go(a.pollAWSOIDCProviders(ctx, result, collectErr)) + } + if err := eGroup.Wait(); err != nil { return nil, trace.Wrap(err) } diff --git a/lib/srv/discovery/fetchers/aws-sync/features.go b/lib/srv/discovery/fetchers/aws-sync/features.go index 67d6acc35ac97..3cddaab912946 100644 --- a/lib/srv/discovery/fetchers/aws-sync/features.go +++ b/lib/srv/discovery/fetchers/aws-sync/features.go @@ -27,6 +27,7 @@ const ( awsRDS = awsNamespace + "/" + "rds" awsS3 = awsNamespace + "/" + "s3" awsRoles = awsNamespace + "/" + "roles" + awsIDP = awsNamespace + "/" + "idp" ) // Features is the list of supported resources by the server. @@ -45,6 +46,8 @@ type Features struct { EKS bool // S3 enables AWS S3 sync. S3 bool + // IDP enables sync of AWS IAM identity providers. + IDP bool } // BuildFeatures builds the feature flags based on supported types returned by Access Graph @@ -67,6 +70,8 @@ func BuildFeatures(values ...string) Features { features.S3 = true case awsRoles: features.Roles = true + case awsIDP: + features.IDP = true } } return features diff --git a/lib/srv/discovery/fetchers/aws-sync/iam_test.go b/lib/srv/discovery/fetchers/aws-sync/iam_test.go new file mode 100644 index 0000000000000..8bd5162c2b529 --- /dev/null +++ b/lib/srv/discovery/fetchers/aws-sync/iam_test.go @@ -0,0 +1,249 @@ +/* + * Teleport + * Copyright (C) 2024 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 aws_sync + +import ( + "context" + "slices" + "strings" + "sync" + "testing" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/iam" + "github.com/google/go-cmp/cmp" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/testing/protocmp" + "google.golang.org/protobuf/types/known/timestamppb" + "google.golang.org/protobuf/types/known/wrapperspb" + + accessgraphv1alpha "github.com/gravitational/teleport/gen/proto/go/accessgraph/v1alpha" + "github.com/gravitational/teleport/lib/cloud" + "github.com/gravitational/teleport/lib/cloud/mocks" +) + +func TestAWSIAMPollSAMLProviders(t *testing.T) { + const accountID = "12345678" + var regions = []string{"eu-west-1"} + + timestamp1 := time.Date(2024, time.May, 1, 1, 2, 3, 0, time.UTC) + timestamp2 := timestamp1.AddDate(1, 0, 0) + + mockedClients := &cloud.TestCloudClients{ + IAM: &mocks.IAMMock{ + SAMLProviders: samlProviders(timestamp1, timestamp2), + }, + } + + var ( + errs []error + mu sync.Mutex + ) + + collectErr := func(err error) { + mu.Lock() + defer mu.Unlock() + errs = append(errs, err) + } + a := &awsFetcher{ + Config: Config{ + AccountID: accountID, + CloudClients: mockedClients, + Regions: regions, + Integration: accountID, + }, + } + expected := []*accessgraphv1alpha.AWSSAMLProviderV1{ + { + Arn: "arn:aws:iam::1234678:saml-provider/provider1", + CreatedAt: timestamppb.New(timestamp1), + ValidUntil: timestamppb.New(timestamp2), + Tags: []*accessgraphv1alpha.AWSTag{ + {Key: "key1", Value: &wrapperspb.StringValue{Value: "value1"}}, + {Key: "key2", Value: &wrapperspb.StringValue{Value: "value2"}}, + }, + AccountId: accountID, + EntityId: "provider1", + SsoUrls: []string{"https://posturl.example.com", "https://redirecturl.example.com"}, + SigningCertificates: []string{"cert1", "cert2"}, + }, + { + Arn: "arn:aws:iam::1234678:saml-provider/provider2", + CreatedAt: timestamppb.New(timestamp2), + AccountId: accountID, + EntityId: "provider2", + SsoUrls: []string{"https://posturl.teleport.local", "https://redirecturl.teleport.local"}, + }, + } + result := &Resources{} + execFunc := a.pollAWSSAMLProviders(context.Background(), result, collectErr) + require.NoError(t, execFunc()) + require.Empty(t, errs) + sortByARN(result.SAMLProviders) + require.Empty(t, cmp.Diff( + expected, + result.SAMLProviders, + protocmp.Transform(), + )) +} + +func samlProviders(timestamp1, timestamp2 time.Time) map[string]*iam.GetSAMLProviderOutput { + return map[string]*iam.GetSAMLProviderOutput{ + "arn:aws:iam::1234678:saml-provider/provider1": { + CreateDate: aws.Time(timestamp1), + SAMLMetadataDocument: aws.String(` + + + + + + cert1 + + + + + + + cert2 + + + + + + + irrelevant_cert + + + + urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress + urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified + + + + `), + ValidUntil: aws.Time(timestamp2), + Tags: []*iam.Tag{ + {Key: aws.String("key1"), Value: aws.String("value1")}, + {Key: aws.String("key2"), Value: aws.String("value2")}, + }, + }, + "arn:aws:iam::1234678:saml-provider/provider2": { + CreateDate: aws.Time(timestamp2), + SAMLMetadataDocument: aws.String(` + + + urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress + urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified + + + + `), + }, + } +} + +func TestAWSIAMPollOIDCProviders(t *testing.T) { + const ( + accountID = "12345678" + ) + var ( + regions = []string{"eu-west-1"} + ) + + timestamp1 := time.Date(2024, time.May, 1, 1, 2, 3, 0, time.UTC) + timestamp2 := timestamp1.AddDate(1, 0, 0) + + mockedClients := &cloud.TestCloudClients{ + IAM: &mocks.IAMMock{ + OIDCProviders: map[string]*iam.GetOpenIDConnectProviderOutput{ + "arn:aws:iam::1234678:oidc-provider/provider1": { + ClientIDList: aws.StringSlice([]string{"audience1", "audience2"}), + CreateDate: aws.Time(timestamp1), + Tags: []*iam.Tag{ + {Key: aws.String("key1"), Value: aws.String("value1")}, + {Key: aws.String("key2"), Value: aws.String("value2")}, + }, + ThumbprintList: aws.StringSlice([]string{"thumb1", "thumb2"}), + Url: aws.String("https://example.com"), + }, + "arn:aws:iam::1234678:oidc-provider/provider2": { + CreateDate: aws.Time(timestamp2), + Url: aws.String("https://teleport.local"), + }, + }, + }, + } + + var ( + errs []error + mu sync.Mutex + ) + + collectErr := func(err error) { + mu.Lock() + defer mu.Unlock() + errs = append(errs, err) + } + a := &awsFetcher{ + Config: Config{ + AccountID: accountID, + CloudClients: mockedClients, + Regions: regions, + Integration: accountID, + }, + } + expected := []*accessgraphv1alpha.AWSOIDCProviderV1{ + { + Arn: "arn:aws:iam::1234678:oidc-provider/provider1", + CreatedAt: timestamppb.New(timestamp1), + Tags: []*accessgraphv1alpha.AWSTag{ + {Key: "key1", Value: &wrapperspb.StringValue{Value: "value1"}}, + {Key: "key2", Value: &wrapperspb.StringValue{Value: "value2"}}, + }, + AccountId: accountID, + ClientIds: []string{"audience1", "audience2"}, + Thumbprints: []string{"thumb1", "thumb2"}, + Url: "https://example.com", + }, + { + Arn: "arn:aws:iam::1234678:oidc-provider/provider2", + CreatedAt: timestamppb.New(timestamp2), + AccountId: accountID, + Url: "https://teleport.local", + }, + } + result := &Resources{} + execFunc := a.pollAWSOIDCProviders(context.Background(), result, collectErr) + require.NoError(t, execFunc()) + require.Empty(t, errs) + sortByARN(result.OIDCProviders) + require.Empty(t, cmp.Diff( + expected, + result.OIDCProviders, + protocmp.Transform(), + )) +} + +// sortByARN sorts a slice of resources that have a GetArn() function by the ARN. +func sortByARN[T interface{ GetArn() string }](objs []T) { + slices.SortFunc(objs, func(t1, t2 T) int { + return strings.Compare(t1.GetArn(), t2.GetArn()) + }) +} diff --git a/lib/srv/discovery/fetchers/aws-sync/idp.go b/lib/srv/discovery/fetchers/aws-sync/idp.go new file mode 100644 index 0000000000000..977091bff4585 --- /dev/null +++ b/lib/srv/discovery/fetchers/aws-sync/idp.go @@ -0,0 +1,193 @@ +/* + * Teleport + * Copyright (C) 2024 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 aws_sync + +import ( + "context" + "encoding/xml" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/iam" + "github.com/aws/aws-sdk-go/service/iam/iamiface" + "github.com/gravitational/trace" + samltypes "github.com/russellhaering/gosaml2/types" + + accessgraphv1alpha "github.com/gravitational/teleport/gen/proto/go/accessgraph/v1alpha" +) + +func (a *awsFetcher) pollAWSSAMLProviders(ctx context.Context, result *Resources, collectErr func(error)) func() error { + return func() error { + var err error + + iamClient, err := a.CloudClients.GetAWSIAMClient( + ctx, + "", /* region is empty because saml providers are global */ + a.getAWSOptions()..., + ) + if err != nil { + collectErr(trace.Wrap(err, "failed to get AWS IAM client")) + return nil + } + listResp, err := iamClient.ListSAMLProvidersWithContext(ctx, &iam.ListSAMLProvidersInput{}) + if err != nil { + collectErr(trace.Wrap(err, "failed to list AWS SAML identity providers")) + return nil + } + + providers := make([]*accessgraphv1alpha.AWSSAMLProviderV1, 0, len(listResp.SAMLProviderList)) + for _, providerRef := range listResp.SAMLProviderList { + arn := aws.StringValue(providerRef.Arn) + provider, err := a.fetchAWSSAMLProvider(ctx, iamClient, arn) + if err != nil { + collectErr(trace.Wrap(err, "failed to get info for SAML provider %s", arn)) + } else { + providers = append(providers, provider) + } + } + + result.SAMLProviders = providers + return nil + } +} + +// fetchAWSSAMLProvider fetches data about a single SAML identity provider. +func (a *awsFetcher) fetchAWSSAMLProvider(ctx context.Context, client iamiface.IAMAPI, arn string) (*accessgraphv1alpha.AWSSAMLProviderV1, error) { + providerResp, err := client.GetSAMLProviderWithContext(ctx, &iam.GetSAMLProviderInput{ + SAMLProviderArn: aws.String(arn), + }) + if err != nil { + return nil, trace.Wrap(err) + } + out, err := awsSAMLProviderOutputToProto(arn, a.AccountID, providerResp) + return out, trace.Wrap(err) +} + +// awsSAMLProviderToProto converts an iam.SAMLProvider to accessgraphv1alpha.SAMLProviderV1 representation. +func awsSAMLProviderOutputToProto(arn string, accountID string, provider *iam.GetSAMLProviderOutput) (*accessgraphv1alpha.AWSSAMLProviderV1, error) { + var tags []*accessgraphv1alpha.AWSTag + for _, v := range provider.Tags { + tags = append(tags, &accessgraphv1alpha.AWSTag{ + Key: aws.StringValue(v.Key), + Value: strPtrToWrapper(v.Value), + }) + } + + var metadata samltypes.EntityDescriptor + if err := xml.Unmarshal([]byte(aws.StringValue(provider.SAMLMetadataDocument)), &metadata); err != nil { + return nil, trace.Wrap(err, "failed to parse SAML metadata for %s", arn) + } + + var ssoURLs []string + if metadata.IDPSSODescriptor == nil { + return nil, trace.BadParameter("metadata for %v did not contain IdP descriptor", arn) + } + for _, ssoService := range metadata.IDPSSODescriptor.SingleSignOnServices { + ssoURLs = append(ssoURLs, ssoService.Location) + } + + const signingUse = "signing" + var signingCerts []string + for _, key := range metadata.IDPSSODescriptor.KeyDescriptors { + ki := key.KeyInfo + if key.Use == signingUse { + for _, cert := range ki.X509Data.X509Certificates { + signingCerts = append(signingCerts, cert.Data) + } + } + } + + return &accessgraphv1alpha.AWSSAMLProviderV1{ + Arn: arn, + CreatedAt: awsTimeToProtoTime(provider.CreateDate), + ValidUntil: awsTimeToProtoTime(provider.ValidUntil), + Tags: tags, + AccountId: accountID, + EntityId: metadata.EntityID, + SsoUrls: ssoURLs, + SigningCertificates: signingCerts, + }, nil +} + +func (a *awsFetcher) pollAWSOIDCProviders(ctx context.Context, result *Resources, collectErr func(error)) func() error { + return func() error { + var err error + + iamClient, err := a.CloudClients.GetAWSIAMClient( + ctx, + "", /* region is empty because oidc providers are global */ + a.getAWSOptions()..., + ) + if err != nil { + collectErr(trace.Wrap(err, "failed to get AWS IAM client")) + return nil + } + listResp, err := iamClient.ListOpenIDConnectProvidersWithContext(ctx, &iam.ListOpenIDConnectProvidersInput{}) + if err != nil { + collectErr(trace.Wrap(err, "failed to list AWS OIDC identity providers")) + return nil + } + + providers := make([]*accessgraphv1alpha.AWSOIDCProviderV1, 0, len(listResp.OpenIDConnectProviderList)) + for _, providerRef := range listResp.OpenIDConnectProviderList { + arn := aws.StringValue(providerRef.Arn) + provider, err := a.fetchAWSOIDCProvider(ctx, iamClient, arn) + if err != nil { + collectErr(trace.Wrap(err, "failed to get info for OIDC provider %s", arn)) + } else { + providers = append(providers, provider) + } + } + + result.OIDCProviders = providers + return nil + } +} + +// fetchAWSOIDCProvider fetches data about a single OIDC identity provider. +func (a *awsFetcher) fetchAWSOIDCProvider(ctx context.Context, client iamiface.IAMAPI, arn string) (*accessgraphv1alpha.AWSOIDCProviderV1, error) { + providerResp, err := client.GetOpenIDConnectProviderWithContext(ctx, &iam.GetOpenIDConnectProviderInput{ + OpenIDConnectProviderArn: aws.String(arn), + }) + if err != nil { + return nil, trace.Wrap(err) + } + out, err := awsOIDCProviderOutputToProto(arn, a.AccountID, providerResp) + return out, trace.Wrap(err) +} + +// awsOIDCProviderToOIDC converts an iam.OpenIDConnectProvider to accessgraphv1alpha.OIDCProviderV1 representation. +func awsOIDCProviderOutputToProto(arn string, accountID string, provider *iam.GetOpenIDConnectProviderOutput) (*accessgraphv1alpha.AWSOIDCProviderV1, error) { + var tags []*accessgraphv1alpha.AWSTag + for _, v := range provider.Tags { + tags = append(tags, &accessgraphv1alpha.AWSTag{ + Key: aws.StringValue(v.Key), + Value: strPtrToWrapper(v.Value), + }) + } + + return &accessgraphv1alpha.AWSOIDCProviderV1{ + Arn: arn, + CreatedAt: awsTimeToProtoTime(provider.CreateDate), + Tags: tags, + AccountId: accountID, + ClientIds: aws.StringValueSlice(provider.ClientIDList), + Thumbprints: aws.StringValueSlice(provider.ThumbprintList), + Url: aws.StringValue(provider.Url), + }, nil +} diff --git a/lib/srv/discovery/fetchers/aws-sync/merge.go b/lib/srv/discovery/fetchers/aws-sync/merge.go index c9310de314b3b..3a276aff2b8c0 100644 --- a/lib/srv/discovery/fetchers/aws-sync/merge.go +++ b/lib/srv/discovery/fetchers/aws-sync/merge.go @@ -49,6 +49,8 @@ func MergeResources(results ...*Resources) *Resources { result.EKSClusters = append(result.EKSClusters, r.EKSClusters...) result.AccessEntries = append(result.AccessEntries, r.AccessEntries...) result.RDSDatabases = append(result.RDSDatabases, r.RDSDatabases...) + result.SAMLProviders = append(result.SAMLProviders, r.SAMLProviders...) + result.OIDCProviders = append(result.OIDCProviders, r.OIDCProviders...) } return result } diff --git a/lib/srv/discovery/fetchers/aws-sync/reconcile.go b/lib/srv/discovery/fetchers/aws-sync/reconcile.go index a3e51c2468e6b..ebcd5856ffd76 100644 --- a/lib/srv/discovery/fetchers/aws-sync/reconcile.go +++ b/lib/srv/discovery/fetchers/aws-sync/reconcile.go @@ -53,6 +53,8 @@ func ReconcileResults(old *Resources, new *Resources) (upsert, delete *accessgra reconcileAssociatedAccessPolicy(old.AssociatedAccessPolicies, new.AssociatedAccessPolicies), reconcileAccessEntry(old.AccessEntries, new.AccessEntries), reconcileAWSRDS(old.RDSDatabases, new.RDSDatabases), + reconcileSAMLProviders(old.SAMLProviders, new.SAMLProviders), + reconcileOIDCProviders(old.OIDCProviders, new.OIDCProviders), } { upsert.Resources = append(upsert.Resources, results.upsert.Resources...) delete.Resources = append(delete.Resources, results.delete.Resources...) @@ -555,3 +557,55 @@ func reconcileAWSRDS( } return &reconcileIntermeditateResult{upsert, delete} } + +func reconcileSAMLProviders( + old []*accessgraphv1alpha.AWSSAMLProviderV1, + new []*accessgraphv1alpha.AWSSAMLProviderV1, +) *reconcileIntermeditateResult { + upsert, delete := &accessgraphv1alpha.AWSResourceList{}, &accessgraphv1alpha.AWSResourceList{} + toAdd, toRemove := reconcile(old, new, func(provider *accessgraphv1alpha.AWSSAMLProviderV1) string { + return fmt.Sprintf("%s;%s", provider.AccountId, provider.Arn) + }) + + for _, provider := range toAdd { + upsert.Resources = append(upsert.Resources, &accessgraphv1alpha.AWSResource{ + Resource: &accessgraphv1alpha.AWSResource_SamlProvider{ + SamlProvider: provider, + }, + }) + } + for _, provider := range toRemove { + delete.Resources = append(delete.Resources, &accessgraphv1alpha.AWSResource{ + Resource: &accessgraphv1alpha.AWSResource_SamlProvider{ + SamlProvider: provider, + }, + }) + } + return &reconcileIntermeditateResult{upsert, delete} +} + +func reconcileOIDCProviders( + old []*accessgraphv1alpha.AWSOIDCProviderV1, + new []*accessgraphv1alpha.AWSOIDCProviderV1, +) *reconcileIntermeditateResult { + upsert, delete := &accessgraphv1alpha.AWSResourceList{}, &accessgraphv1alpha.AWSResourceList{} + toAdd, toRemove := reconcile(old, new, func(provider *accessgraphv1alpha.AWSOIDCProviderV1) string { + return fmt.Sprintf("%s;%s", provider.AccountId, provider.Arn) + }) + + for _, provider := range toAdd { + upsert.Resources = append(upsert.Resources, &accessgraphv1alpha.AWSResource{ + Resource: &accessgraphv1alpha.AWSResource_OidcProvider{ + OidcProvider: provider, + }, + }) + } + for _, provider := range toRemove { + delete.Resources = append(delete.Resources, &accessgraphv1alpha.AWSResource{ + Resource: &accessgraphv1alpha.AWSResource_OidcProvider{ + OidcProvider: provider, + }, + }) + } + return &reconcileIntermeditateResult{upsert, delete} +} diff --git a/lib/web/apiserver.go b/lib/web/apiserver.go index 861c2ae98def3..f4e6193defa8b 100644 --- a/lib/web/apiserver.go +++ b/lib/web/apiserver.go @@ -961,7 +961,10 @@ func (h *Handler) bindDefaultEndpoints() { // SAML IDP integration endpoints h.GET("/webapi/scripts/integrations/configure/gcp-workforce-saml.sh", h.WithLimiter(h.gcpWorkforceConfigScript)) - // AWS OIDC Integration specific endpoints: + // Azure OIDC integration endpoints + h.GET("/webapi/scripts/integrations/configure/azureoidc.sh", h.WithLimiter(h.azureOIDCConfigure)) + + // OIDC Integration specific endpoints: // Unauthenticated access to OpenID Configuration - used for AWS OIDC IdP integration h.GET("/.well-known/openid-configuration", h.WithLimiter(h.openidConfiguration)) h.GET(OIDCJWKWURI, h.WithLimiter(h.jwksOIDC)) @@ -1737,6 +1740,8 @@ func (h *Handler) getWebConfig(w http.ResponseWriter, r *http.Request, p httprou // TODO(mcbattirola): remove isTeam when it is no longer used isTeam := clusterFeatures.GetProductType() == proto.ProductType_PRODUCT_TYPE_TEAM + policy := clusterFeatures.GetPolicy() + webCfg := webclient.WebConfig{ Auth: authSettings, CanJoinSessions: canJoinSessions, @@ -1752,6 +1757,7 @@ func (h *Handler) getWebConfig(w http.ResponseWriter, r *http.Request, p httprou HideInaccessibleFeatures: clusterFeatures.GetFeatureHiding(), CustomTheme: clusterFeatures.GetCustomTheme(), IsIGSEnabled: clusterFeatures.GetIdentityGovernance(), + IsPolicyEnabled: policy != nil && policy.Enabled, FeatureLimits: webclient.FeatureLimits{ AccessListCreateLimit: int(clusterFeatures.GetAccessList().GetCreateLimit()), AccessMonitoringMaxReportRangeLimit: int(clusterFeatures.GetAccessMonitoring().GetMaxReportRangeLimit()), diff --git a/lib/web/integrations_azureoidc.go b/lib/web/integrations_azureoidc.go new file mode 100644 index 0000000000000..4392028857afb --- /dev/null +++ b/lib/web/integrations_azureoidc.go @@ -0,0 +1,80 @@ +// Teleport +// Copyright (C) 2024 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 web + +import ( + "fmt" + "net/http" + "strings" + + "github.com/google/safetext/shsprintf" + "github.com/gravitational/trace" + "github.com/julienschmidt/httprouter" + + "github.com/gravitational/teleport/lib/httplib" + "github.com/gravitational/teleport/lib/utils/oidc" + "github.com/gravitational/teleport/lib/web/scripts/oneoff" +) + +// azureOIDCConfigureIdP returns a script that configures Azure OIDC Integration +// by creating an Enterprise Application in the Azure account +// with Teleport OIDC as a trusted credential issuer. +func (h *Handler) azureOIDCConfigure(w http.ResponseWriter, r *http.Request, p httprouter.Params) (any, error) { + ctx := r.Context() + queryParams := r.URL.Query() + + oidcIssuer, err := oidc.IssuerFromPublicAddress(h.cfg.PublicProxyAddr) + if err != nil { + return nil, trace.Wrap(err) + } + + authConnectorName := queryParams.Get("authConnectorName") + if authConnectorName == "" { + return nil, trace.BadParameter("authConnectorName must be specified") + } + // Ensure the auth connector name is valid + const withSecrets = false + _, err = h.GetProxyClient().GetSAMLConnector(ctx, authConnectorName, withSecrets) + // NotFound error is ignored to prevent disclosure of whether the integration exists in a public/no-auth endpoint. + if err != nil && !trace.IsNotFound(err) { + return nil, trace.Wrap(err) + } + + // The script must execute the following command: + argsList := []string{ + "integration", "configure", "azure-oidc", + fmt.Sprintf("--proxy-public-addr=%s", shsprintf.EscapeDefaultContext(oidcIssuer)), + fmt.Sprintf("--auth-connector-name=%s", shsprintf.EscapeDefaultContext(authConnectorName)), + } + + if tagParam := queryParams.Get("accessGraph"); tagParam != "" { + argsList = append(argsList, "--access-graph") + } + + script, err := oneoff.BuildScript(oneoff.OneOffScriptParams{ + TeleportArgs: strings.Join(argsList, " "), + SuccessMessage: "Success! You can now go back to the browser to use the integration with Azure.", + }) + if err != nil { + return nil, trace.Wrap(err) + } + + httplib.SetScriptHeaders(w.Header()) + _, err = fmt.Fprint(w, script) + + return nil, trace.Wrap(err) +} diff --git a/lib/web/integrations_azureoidc_test.go b/lib/web/integrations_azureoidc_test.go new file mode 100644 index 0000000000000..1a96497c80d22 --- /dev/null +++ b/lib/web/integrations_azureoidc_test.go @@ -0,0 +1,112 @@ +/* + * Teleport + * Copyright (C) 2023 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 web + +import ( + "context" + "fmt" + "net/url" + "testing" + + "github.com/gravitational/trace" + "github.com/stretchr/testify/require" +) + +func TestAzureOIDCConfigureScript(t *testing.T) { + t.Parallel() + isBadParamErrFn := func(tt require.TestingT, err error, i ...any) { + require.True(tt, trace.IsBadParameter(err), "expected bad parameter, got %v", err) + } + + ctx := context.Background() + env := newWebPack(t, 1) + + proxyAddr := env.proxies[0].webURL.String() + + // Unauthenticated client for script downloading. + publicClt := env.proxies[0].newClient(t) + pathVars := []string{ + "webapi", + "scripts", + "integrations", + "configure", + "azureoidc.sh", + } + endpoint := publicClt.Endpoint(pathVars...) + + tests := []struct { + name string + reqQuery url.Values + errCheck require.ErrorAssertionFunc + expectedTeleportArgs string + }{ + { + name: "valid", + reqQuery: url.Values{ + "authConnectorName": []string{"myconnector"}, + "accessGraph": []string{"true"}, + }, + errCheck: require.NoError, + expectedTeleportArgs: "integration configure azure-oidc " + + `--proxy-public-addr=` + proxyAddr + ` ` + + `--auth-connector-name=myconnector ` + + `--access-graph`, + }, + { + name: "valid without accessGraph", + reqQuery: url.Values{ + "authConnectorName": []string{"myconnector"}, + }, + errCheck: require.NoError, + expectedTeleportArgs: "integration configure azure-oidc " + + `--proxy-public-addr=` + proxyAddr + ` ` + + `--auth-connector-name=myconnector`, + }, + { + name: "authConnectorName invalid", + reqQuery: url.Values{ + "integrationName": []string{"myintegration"}, + "authConnectorName": []string{"myconnector;"}, + }, + errCheck: isBadParamErrFn, + }, + { + name: "authConnectorName missing", + reqQuery: url.Values{ + "integrationName": []string{"myintegration"}, + }, + errCheck: isBadParamErrFn, + }, + } + + for _, tc := range tests { + tc := tc + t.Run(tc.name, func(t *testing.T) { + resp, err := publicClt.Get(ctx, endpoint, tc.reqQuery) + tc.errCheck(t, err) + if err != nil { + return + } + + require.Contains(t, string(resp.Bytes()), + fmt.Sprintf("teleportArgs='%s'\n", tc.expectedTeleportArgs), + ) + }) + } +} diff --git a/lib/web/oidcidp.go b/lib/web/oidcidp.go index d3b34639908e3..028b61d0e349d 100644 --- a/lib/web/oidcidp.go +++ b/lib/web/oidcidp.go @@ -79,6 +79,11 @@ func (h *Handler) jwks(ctx context.Context, caType types.CertAuthType) (*JWKSRes return nil, trace.Wrap(err) } resp.Keys = append(resp.Keys, jwk) + + // Return an additional copy of the same JWK + // with KeyID set to the empty string for compatibility. + jwk.KeyID = "" + resp.Keys = append(resp.Keys, jwk) } return &resp, nil } diff --git a/lib/web/oidcidp_test.go b/lib/web/oidcidp_test.go index c399ed63488ae..ac346de37a8e8 100644 --- a/lib/web/oidcidp_test.go +++ b/lib/web/oidcidp_test.go @@ -71,11 +71,19 @@ func TestOIDCIdPPublicEndpoints(t *testing.T) { require.NoError(t, err) require.NotEmpty(t, jwksKeys.Keys) - key := jwksKeys.Keys[0] - require.Equal(t, "sig", key.Use) - require.Equal(t, "RSA", key.KeyType) - require.Equal(t, "RS256", key.Alg) - require.NotNil(t, key.KeyID) // AWS requires this to be present (even if empty string). + require.Len(t, jwksKeys.Keys, 2) + + // Expect the same key twice, once with a synthesized Key ID, and once with an empty Key ID for compatibility. + key1 := jwksKeys.Keys[0] + key2 := jwksKeys.Keys[1] + require.Equal(t, "sig", key1.Use) + require.Equal(t, "RSA", key1.KeyType) + require.Equal(t, "RS256", key1.Alg) + require.Equal(t, key1.Use, key2.Use) + require.Equal(t, key1.KeyType, key2.KeyType) + require.Equal(t, key1.Alg, key2.Alg) + require.NotEmpty(t, *key1.KeyID) + require.Equal(t, "", *key2.KeyID) } func TestThumbprint(t *testing.T) { diff --git a/proto/accessgraph/v1alpha/access_graph_service.proto b/proto/accessgraph/v1alpha/access_graph_service.proto index 77d44cc9cd497..cfd55762f74eb 100644 --- a/proto/accessgraph/v1alpha/access_graph_service.proto +++ b/proto/accessgraph/v1alpha/access_graph_service.proto @@ -21,6 +21,7 @@ syntax = "proto3"; package accessgraph.v1alpha; import "accessgraph/v1alpha/aws.proto"; +import "accessgraph/v1alpha/entra.proto"; import "accessgraph/v1alpha/gitlab.proto"; import "accessgraph/v1alpha/graph.proto"; import "accessgraph/v1alpha/resources.proto"; @@ -76,6 +77,9 @@ service AccessGraphService { // GitlabEventsStream is a stream of commands to the Gitlab importer. rpc GitlabEventsStream(stream GitlabEventsStreamRequest) returns (stream GitlabEventsStreamResponse); + + // EntraEventsStream is a stream of commands to the Entra ID SSO importer. + rpc EntraEventsStream(stream EntraEventsStreamRequest) returns (stream EntraEventsStreamResponse); } // QueryRequest is a request to query the access graph. @@ -195,3 +199,20 @@ message GitlabEventsStreamRequest { // GitlabEventsStreamResponse is the response from GitlabEventsStream. message GitlabEventsStreamResponse {} + +// EntraEventsStreamRequest is a request to send commands to the Gitlab importer. +message EntraEventsStreamRequest { + // operation contains the desired operation + oneof operation { + // sync is a command to sync the access graph with the Teleport database state. + // it's issued once Teleport finishes syncing all resources with the database. + EntraSyncOperation sync = 1; + // upsert is a command to put a resource into the access graph or update it. + EntraResourceList upsert = 2; + // delete is a command to delete a resource from the access graph when it's deleted from Teleport. + EntraResourceList delete = 3; + } +} + +// EntraEventsStreamResponse is the response from GitlabEventsStream. +message EntraEventsStreamResponse {} diff --git a/proto/accessgraph/v1alpha/aws.proto b/proto/accessgraph/v1alpha/aws.proto index db21e0562493d..3eb3903e0e311 100644 --- a/proto/accessgraph/v1alpha/aws.proto +++ b/proto/accessgraph/v1alpha/aws.proto @@ -73,6 +73,10 @@ message AWSResource { AWSEKSAssociatedAccessPolicyV1 eks_cluster_associated_policy = 17; // rds is an AWS RDS database. AWSRDSDatabaseV1 rds = 18; + // saml_provider is an AWS IAM SAML Identity Provider + AWSSAMLProviderV1 saml_provider = 19; + // oidc_provider is an AWS IAM OpenID Connect Identity Provider + AWSOIDCProviderV1 oidc_provider = 20; } } @@ -500,3 +504,41 @@ message AWSRDSEngineV1 { // version holds the version information. string version = 2; } + +// AWSSAMLProviderV1 defines the SAML identity provider details. +message AWSSAMLProviderV1 { + // arn is the provider ARN. + string arn = 1; + // created_at is the time when the SAML provider was created. + google.protobuf.Timestamp created_at = 2; + // valid_until is the expiration date and time for the SAML provider. + google.protobuf.Timestamp valid_until = 3; + // tags is the list of tags that are attached to the SAML provider. + repeated AWSTag tags = 4; + // account_id is the ID of the AWS account that the provider belongs to. + string account_id = 5; + // entity_id is the SAML entity ID for this provider. + string entity_id = 6; + // sso_urls is a list of single sign-on service URLs for this identity provider. + repeated string sso_urls = 7; + // signing_certificates is a list of signing certificates for this identity provider. + repeated string signing_certificates = 8; +} + +// AWSOIDCProviderV1 defines the OIDC identity provider details. +message AWSOIDCProviderV1 { + // arn is the provider ARN. + string arn = 1; + // created_at is the time when the OIDC provider was created. + google.protobuf.Timestamp created_at = 2; + // tags is the list of tags that are attached to the SAML provider. + repeated AWSTag tags = 3; + // account_id is the ID of the AWS account that the provider belongs to. + string account_id = 4; + // client_ids is a list of client IDs (audiences) associated with this OIDC provider. + repeated string client_ids = 5; + // thumbprints is a list of certificate thumbprints for this OIDC provider. + repeated string thumbprints = 6; + // url is the URL for this OIDC provider. + string url = 7; +} diff --git a/proto/accessgraph/v1alpha/entra.proto b/proto/accessgraph/v1alpha/entra.proto new file mode 100644 index 0000000000000..188f4183336c4 --- /dev/null +++ b/proto/accessgraph/v1alpha/entra.proto @@ -0,0 +1,58 @@ +/* + * Teleport + * Copyright (C) 2024 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 . + */ + +syntax = "proto3"; + +package accessgraph.v1alpha; + +option go_package = "github.com/gravitational/teleport/gen/proto/go/accessgraph/v1alpha;accessgraphv1alpha"; + +// EntraSyncOperation is a request to sync Entra resources +message EntraSyncOperation {} + +// EntraResourceList is a request that contains resources to be sync. +message EntraResourceList { + // resources is a list of entra resources to sync. + repeated EntraResource resources = 1; +} + +// EntraResource represents a Entra resource. +message EntraResource { + oneof resource { + // application represents an Entra ID enterprise application. + EntraApplication application = 1; + } +} + +// EntraApplication represents an Entra ID enterprise application together with its service principal. +message EntraApplication { + // id is the unique Entra object ID. + string id = 1; + // app_id is the application ID. + string app_id = 2; + // display_name is a human-friendly application name. + string display_name = 3; + // tenant_id is the ID of Entra tenant that this application is under. + string tenant_id = 4; + // signing_certificates is a list of SAML signing certificates for this app. + repeated string signing_certificates = 5; + + // federated_sso_v2 contains payload from the /ApplicationSso/{servicePrincipalId}/FederatedSSOV2 endpoint. + // It is exposed from the internal plugin cache as an opaque JSON blob. + string federated_sso_v2 = 6; +} diff --git a/proto/prehog/v1alpha/teleport.proto b/proto/prehog/v1alpha/teleport.proto index 0799d1c32c851..33c08656e79c9 100644 --- a/proto/prehog/v1alpha/teleport.proto +++ b/proto/prehog/v1alpha/teleport.proto @@ -764,6 +764,7 @@ enum CTA { CTA_ACCESS_MONITORING = 9; CTA_EXTERNAL_AUDIT_STORAGE = 10; CTA_OKTA_USER_SYNC = 11; + CTA_ENTRA_ID = 12; } // a request forwarded to a kube cluster's API server (other than exec and @@ -1018,6 +1019,7 @@ enum IntegrationEnrollKind { INTEGRATION_ENROLL_KIND_MACHINE_ID_AZURE = 20; INTEGRATION_ENROLL_KIND_MACHINE_ID_SPACELIFT = 21; INTEGRATION_ENROLL_KIND_MACHINE_ID_KUBERNETES = 22; + INTEGRATION_ENROLL_KIND_ENTRA_ID = 23; } // IntegrationEnrollMetadata contains common metadata diff --git a/tool/teleport/common/integration_configure.go b/tool/teleport/common/integration_configure.go index 6aa51cc25894e..5b96eb20d9e0d 100644 --- a/tool/teleport/common/integration_configure.go +++ b/tool/teleport/common/integration_configure.go @@ -20,6 +20,7 @@ package common import ( "context" + "fmt" "log/slog" awsConfig "github.com/aws/aws-sdk-go-v2/config" @@ -34,6 +35,7 @@ import ( "github.com/gravitational/teleport/lib" "github.com/gravitational/teleport/lib/config" "github.com/gravitational/teleport/lib/integrations/awsoidc" + "github.com/gravitational/teleport/lib/integrations/azureoidc" "github.com/gravitational/teleport/lib/integrations/externalauditstorage" "github.com/gravitational/teleport/lib/integrations/externalauditstorage/easconfig" "github.com/gravitational/teleport/lib/integrations/samlidp" @@ -218,6 +220,38 @@ func onIntegrationConfAccessGraphAWSSync(ctx context.Context, params config.Inte return trace.Wrap(awsoidc.ConfigureAccessGraphSyncIAM(ctx, iamClient, confReq)) } +func onIntegrationConfAzureOIDCCmd(ctx context.Context, params config.IntegrationConfAzureOIDC) error { + // Ensure we print output to the user. LogLevel at this point was set to Error. + utils.InitLogger(utils.LoggingForDaemon, slog.LevelInfo) + + if err := azureoidc.EnsureAZLogin(ctx); err != nil { + return trace.Wrap(err) + } + + fmt.Println("Teleport is setting up the Azure integration. This may take a few minutes.") + + appID, tenantID, err := azureoidc.SetupEnterpriseApp(ctx, params.ProxyPublicAddr, params.AuthConnectorName) + if err != nil { + return trace.Wrap(err) + } + + if params.AccessGraphEnabled { + err := azureoidc.CreateTAGCacheFile(ctx) + if err != nil { + return trace.Wrap(err) + } + } + + fmt.Println() + fmt.Println("Success! Use the following information to finish the integration onboarding in Teleport:") + fmt.Printf("Tenant ID: %s\nClient ID: %s\n", tenantID, appID) + if params.AccessGraphEnabled { + fmt.Println("To finish the setup you will need the `cache.json` file that we created for you.") + fmt.Println("Use `download cache.json` to download it from the Azure Cloud Shell, and submit it on the integration onboarding page.") + } + return nil +} + func onIntegrationConfSAMLIdPGCPWorkforce(ctx context.Context, params samlidpconfig.GCPWorkforceAPIParams) error { // Ensure we print output to the user. LogLevel at this point was set to Error. utils.InitLogger(utils.LoggingForDaemon, slog.LevelInfo) diff --git a/tool/teleport/common/teleport.go b/tool/teleport/common/teleport.go index ca8e619af2711..5770583344264 100644 --- a/tool/teleport/common/teleport.go +++ b/tool/teleport/common/teleport.go @@ -516,6 +516,11 @@ func Run(options Options) (app *kingpin.Application, executedCommand string, con integrationConfExternalAuditCmd.Flag("glue-table", "The name of the Glue table used.").Required().StringVar(&ccf.IntegrationConfExternalAuditStorageArguments.GlueTable) integrationConfExternalAuditCmd.Flag("aws-partition", "AWS partition (default: aws).").Default("aws").StringVar(&ccf.IntegrationConfExternalAuditStorageArguments.Partition) + integrationConfAzureOIDCCmd := integrationConfigureCmd.Command("azure-oidc", "Configures Azure / Entra ID OIDC integration") + integrationConfAzureOIDCCmd.Flag("proxy-public-addr", "The public address of Teleport Proxy Service").Required().StringVar(&ccf.IntegrationConfAzureOIDCArguments.ProxyPublicAddr) + integrationConfAzureOIDCCmd.Flag("auth-connector-name", "The name of Entra ID SAML Auth connector in Teleport.").Required().StringVar(&ccf.IntegrationConfAzureOIDCArguments.AuthConnectorName) + integrationConfAzureOIDCCmd.Flag("access-graph", "Enable Access Graph integration.").BoolVar(&ccf.IntegrationConfAzureOIDCArguments.AccessGraphEnabled) + integrationConfSAMLIdP := integrationConfigureCmd.Command("samlidp", "Manage SAML IdP integrations.") integrationSAMLIdPGCPWorkforce := integrationConfSAMLIdP.Command("gcp-workforce", "Configures GCP Workforce Identity Federation pool and SAML provider.") integrationSAMLIdPGCPWorkforce.Flag("org-id", "GCP organization ID.").Required().StringVar(&ccf.IntegrationConfSAMLIdPGCPWorkforceArguments.OrganizationID) @@ -641,6 +646,8 @@ func Run(options Options) (app *kingpin.Application, executedCommand string, con err = onIntegrationConfExternalAuditCmd(ctx, ccf.IntegrationConfExternalAuditStorageArguments) case integrationConfTAGSyncCmd.FullCommand(): err = onIntegrationConfAccessGraphAWSSync(ctx, ccf.IntegrationConfAccessGraphAWSSyncArguments) + case integrationConfAzureOIDCCmd.FullCommand(): + err = onIntegrationConfAzureOIDCCmd(ctx, ccf.IntegrationConfAzureOIDCArguments) case integrationSAMLIdPGCPWorkforce.FullCommand(): err = onIntegrationConfSAMLIdPGCPWorkforce(ctx, ccf.IntegrationConfSAMLIdPGCPWorkforceArguments) case tpmIdentifyCmd.FullCommand(): diff --git a/web/packages/design/src/assets/images/icons/entra-id.svg b/web/packages/design/src/assets/images/icons/entra-id.svg new file mode 100644 index 0000000000000..0ed35fb73bcf4 --- /dev/null +++ b/web/packages/design/src/assets/images/icons/entra-id.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/web/packages/teleport/src/Integrations/IntegrationList.tsx b/web/packages/teleport/src/Integrations/IntegrationList.tsx index 1c13dca5928db..55fc9d3cbfde8 100644 --- a/web/packages/teleport/src/Integrations/IntegrationList.tsx +++ b/web/packages/teleport/src/Integrations/IntegrationList.tsx @@ -21,7 +21,7 @@ import styled from 'styled-components'; import { Link as InternalRouteLink } from 'react-router-dom'; import { Box, Flex, Image } from 'design'; -import { AWSIcon } from 'design/SVGIcon'; +import { AWSIcon, AzureIcon } from 'design/SVGIcon'; import slackIcon from 'design/assets/images/icons/slack.svg'; import openaiIcon from 'design/assets/images/icons/openai.svg'; import jamfIcon from 'design/assets/images/icons/jamf.svg'; @@ -34,6 +34,7 @@ import servicenowIcon from 'design/assets/images/icons/servicenow.svg'; import discordIcon from 'design/assets/images/icons/discord.svg'; import emailIcon from 'design/assets/images/icons/email.svg'; import msteamIcon from 'design/assets/images/icons/msteams.svg'; +import entraIdIcon from 'design/assets/images/icons/entra-id.svg'; import Table, { Cell } from 'design/DataTable'; import { MenuButton, MenuItem } from 'shared/components/MenuAction'; import { ToolTipInfo } from 'shared/components/ToolTip'; @@ -106,21 +107,21 @@ export function IntegrationList(props: Props) { ); } - if ( - item.resourceType === 'integration' && - // Currently, only AWSOIDC supports editing. - item.kind === IntegrationKind.AwsOidc - ) { + // Normal 'integration' type. + if (item.resourceType === 'integration') { return ( - - props.integrationOps.onEditIntegration(item) - } - > - Edit... - + {/* Currently, only AWSOIDC supports editing. */} + {item.kind === IntegrationKind.AwsOidc && ( + + props.integrationOps.onEditIntegration(item) + } + > + Edit... + + )} props.integrationOps.onDeleteIntegration(item) @@ -325,6 +326,10 @@ const IconCell = ({ item }: { item: IntegrationLike }) => { formattedText = 'Microsoft Teams'; icon = ; break; + case 'entra-id': + formattedText = 'Microsoft Entra ID'; + icon = ; + break; } } else { // Default is integration. @@ -338,6 +343,14 @@ const IconCell = ({ item }: { item: IntegrationLike }) => { ); break; + case IntegrationKind.AzureOidc: + formattedText = 'Azure OIDC'; + icon = ( + + + + ); + break; } } diff --git a/web/packages/teleport/src/Integrations/fixtures.ts b/web/packages/teleport/src/Integrations/fixtures.ts index 6733f044e2145..029fca37725d9 100644 --- a/web/packages/teleport/src/Integrations/fixtures.ts +++ b/web/packages/teleport/src/Integrations/fixtures.ts @@ -132,6 +132,14 @@ export const plugins: Plugin[] = [ statusCode: IntegrationStatusCode.Running, spec: {}, }, + { + resourceType: 'plugin', + name: 'entra-id', + details: '', + kind: 'entra-id', + statusCode: IntegrationStatusCode.Running, + spec: {}, + }, ]; export const integrations: Integration[] = [ diff --git a/web/packages/teleport/src/components/ButtonLockedFeature/ButtonLockedFeature.tsx b/web/packages/teleport/src/components/ButtonLockedFeature/ButtonLockedFeature.tsx index 0ab8a7afd798a..54137445f009e 100644 --- a/web/packages/teleport/src/components/ButtonLockedFeature/ButtonLockedFeature.tsx +++ b/web/packages/teleport/src/components/ButtonLockedFeature/ButtonLockedFeature.tsx @@ -33,6 +33,7 @@ export type Props = { noIcon?: boolean; event?: CtaEvent; textLink?: boolean; + url?: string; [index: string]: any; }; @@ -41,6 +42,7 @@ export function ButtonLockedFeature({ noIcon = false, event, textLink = false, + url, ...rest }: Props) { const ctx = useTeleport(); @@ -56,7 +58,7 @@ export function ButtonLockedFeature({ return ( @@ -69,7 +71,7 @@ export function ButtonLockedFeature({ > = ({ export enum BadgeTitle { LackingPermissions = 'Lacking Permissions', LackingEnterpriseLicense = 'Enterprise Only', + LackingIgs = 'Teleport Identity Only', } diff --git a/web/packages/teleport/src/config.ts b/web/packages/teleport/src/config.ts index 5aeb062cd20c6..6703257f9a9c4 100644 --- a/web/packages/teleport/src/config.ts +++ b/web/packages/teleport/src/config.ts @@ -78,6 +78,9 @@ const cfg = { // access list, and access monitoring. isIgsEnabled: false, + // isPolicyEnabled refers to the Teleport Policy product + isPolicyEnabled: false, + configDir: '$HOME/.config', baseUrl: window.location.origin, diff --git a/web/packages/teleport/src/services/integrations/types.ts b/web/packages/teleport/src/services/integrations/types.ts index fdfd0a28bf981..be972018c110e 100644 --- a/web/packages/teleport/src/services/integrations/types.ts +++ b/web/packages/teleport/src/services/integrations/types.ts @@ -51,6 +51,7 @@ export type Integration< // resource's subKind field. export enum IntegrationKind { AwsOidc = 'aws-oidc', + AzureOidc = 'azure-oidc', ExternalAuditStorage = 'external-audit-storage', } export type IntegrationSpecAwsOidc = { @@ -139,7 +140,8 @@ export type PluginKind = | 'opsgenie' | 'okta' | 'servicenow' - | 'jamf'; + | 'jamf' + | 'entra-id'; export type PluginOktaSpec = { // scimBearerToken is the plain text of the bearer token that Okta will use diff --git a/web/packages/teleport/src/services/sales/index.ts b/web/packages/teleport/src/services/sales/index.ts index 8cb3ba32a8f64..e4750fa1b0e22 100644 --- a/web/packages/teleport/src/services/sales/index.ts +++ b/web/packages/teleport/src/services/sales/index.ts @@ -26,6 +26,8 @@ const UPGRADE_TEAM_URL = 'https://goteleport.com/r/upgrade-team'; const UPGRADE_COMMUNITY_URL = 'https://goteleport.com/r/upgrade-community'; // UPGRADE_IGS_URL is enterprise upgrading to enterprise with Identity Governance & Security const UPGRADE_IGS_URL = 'https://goteleport.com/r/upgrade-igs'; +// UPGRADE_POLICY_URL is enterprise upgrading to enterprise with Policy +export const UPGRADE_POLICY_URL = 'https://goteleport.com/r/upgrade-policy'; function getParams( version: string, @@ -40,12 +42,15 @@ function getParams( export function getSalesURL( version: string, isEnterprise: boolean, - event?: CtaEvent + event?: CtaEvent, + url?: string ) { - let url = UPGRADE_COMMUNITY_URL; - if (isEnterprise) { - // TODO(mcbattirola): remove isTeam when it is no longer used - url = cfg.isTeam ? UPGRADE_TEAM_URL : UPGRADE_IGS_URL; + if (!url) { + url = UPGRADE_COMMUNITY_URL; + if (isEnterprise) { + // TODO(mcbattirola): remove isTeam when it is no longer used + url = cfg.isTeam ? UPGRADE_TEAM_URL : UPGRADE_IGS_URL; + } } const params = getParams(version, isEnterprise, event); return `${url}?${params}`; diff --git a/web/packages/teleport/src/services/userEvent/types.ts b/web/packages/teleport/src/services/userEvent/types.ts index dc6f49f9fe704..859efb20482d7 100644 --- a/web/packages/teleport/src/services/userEvent/types.ts +++ b/web/packages/teleport/src/services/userEvent/types.ts @@ -74,6 +74,7 @@ export enum IntegrationEnrollKind { MachineIDAzure = 'INTEGRATION_ENROLL_KIND_MACHINE_ID_AZURE', MachineIDSpacelift = 'INTEGRATION_ENROLL_KIND_MACHINE_ID_SPACELIFT', MachineIDKubernetes = 'INTEGRATION_ENROLL_KIND_MACHINE_ID_KUBERNETES', + EntraId = 'INTEGRATION_ENROLL_KIND_ENTRA_ID', } // These constants should match the constant defined in backend found in: @@ -259,6 +260,7 @@ export enum CtaEvent { CTA_ACCESS_MONITORING = 9, CTA_EXTERNAL_AUDIT_STORAGE = 10, CTA_OKTA_USER_SYNC = 11, + CTA_ENTRA_ID = 12, } export enum Feature {