diff --git a/api/v1alpha1/generated.pb.go b/api/v1alpha1/generated.pb.go index 64f01386f..917102323 100644 --- a/api/v1alpha1/generated.pb.go +++ b/api/v1alpha1/generated.pb.go @@ -1899,6 +1899,7 @@ func init() { proto.RegisterType((*PromotionSpec)(nil), "github.com.akuity.kargo.api.v1alpha1.PromotionSpec") proto.RegisterType((*PromotionStatus)(nil), "github.com.akuity.kargo.api.v1alpha1.PromotionStatus") proto.RegisterType((*PromotionStep)(nil), "github.com.akuity.kargo.api.v1alpha1.PromotionStep") + proto.RegisterMapType((map[string]string)(nil), "github.com.akuity.kargo.api.v1alpha1.PromotionStep.InputsEntry") proto.RegisterType((*PromotionStepRetry)(nil), "github.com.akuity.kargo.api.v1alpha1.PromotionStepRetry") proto.RegisterType((*PromotionTask)(nil), "github.com.akuity.kargo.api.v1alpha1.PromotionTask") proto.RegisterType((*PromotionTaskInput)(nil), "github.com.akuity.kargo.api.v1alpha1.PromotionTaskInput") @@ -1928,256 +1929,258 @@ func init() { } var fileDescriptor_e26b7f7bbc391025 = []byte{ - // 3979 bytes of a gzipped FileDescriptorProto + // 4007 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5c, 0xcd, 0x6f, 0x1c, 0x47, 0x76, 0x57, 0xcf, 0x90, 0x43, 0xce, 0x1b, 0x52, 0x24, 0x4b, 0x94, 0xcd, 0xe5, 0xc6, 0xa4, 0xd2, - 0x36, 0x0c, 0x3b, 0xb6, 0x87, 0x91, 0x6c, 0xd9, 0xb2, 0xbc, 0x51, 0xc0, 0x21, 0x25, 0x99, 0x0a, - 0xd7, 0x62, 0x6a, 0x68, 0x79, 0xad, 0x95, 0xe1, 0x2d, 0xce, 0x14, 0x67, 0x3a, 0x9c, 0x99, 0x9e, - 0xad, 0xaa, 0xe1, 0x9a, 0x49, 0x90, 0x6c, 0xbe, 0x80, 0x45, 0x82, 0x04, 0x7b, 0x30, 0xe0, 0x0d, - 0x90, 0x00, 0x41, 0x72, 0x5c, 0x24, 0xff, 0x40, 0x0e, 0x3e, 0xe4, 0x62, 0x04, 0x46, 0x62, 0x24, - 0x39, 0xf8, 0xb0, 0x21, 0x62, 0x2e, 0x10, 0xe4, 0xe4, 0x5b, 0x2e, 0x02, 0x02, 0x04, 0xf5, 0xd1, - 0xdd, 0xd5, 0x3d, 0x3d, 0xe2, 0xf4, 0x88, 0x24, 0x94, 0xdc, 0x38, 0xf5, 0xaa, 0x7e, 0xaf, 0xea, - 0x55, 0xbd, 0x57, 0xef, 0xbd, 0x7a, 0x4d, 0x78, 0xad, 0xe1, 0x89, 0x66, 0x6f, 0xa7, 0x5c, 0xf3, - 0xdb, 0x2b, 0x64, 0xaf, 0xe7, 0x89, 0x83, 0x95, 0x3d, 0xc2, 0x1a, 0xfe, 0x0a, 0xe9, 0x7a, 0x2b, - 0xfb, 0x97, 0x49, 0xab, 0xdb, 0x24, 0x97, 0x57, 0x1a, 0xb4, 0x43, 0x19, 0x11, 0xb4, 0x5e, 0xee, - 0x32, 0x5f, 0xf8, 0xe8, 0xb9, 0x68, 0x54, 0x59, 0x8f, 0x2a, 0xab, 0x51, 0x65, 0xd2, 0xf5, 0xca, - 0xc1, 0xa8, 0xc5, 0x57, 0x2c, 0xec, 0x86, 0xdf, 0xf0, 0x57, 0xd4, 0xe0, 0x9d, 0xde, 0xae, 0xfa, - 0xa5, 0x7e, 0xa8, 0xbf, 0x34, 0xe8, 0xe2, 0xdb, 0x7b, 0xd7, 0x78, 0xd9, 0x53, 0x9c, 0xe9, 0x47, - 0x82, 0x76, 0xb8, 0xe7, 0x77, 0xf8, 0x2b, 0xa4, 0xeb, 0x71, 0xca, 0xf6, 0x29, 0x5b, 0xe9, 0xee, - 0x35, 0x24, 0x8d, 0xc7, 0x3b, 0xac, 0xec, 0xf7, 0x4d, 0x6f, 0xf1, 0xb5, 0x08, 0xa9, 0x4d, 0x6a, - 0x4d, 0xaf, 0x43, 0xd9, 0x41, 0x34, 0xbc, 0x4d, 0x05, 0x49, 0x1b, 0xb5, 0x32, 0x68, 0x14, 0xeb, - 0x75, 0x84, 0xd7, 0xa6, 0x7d, 0x03, 0x5e, 0x3f, 0x6e, 0x00, 0xaf, 0x35, 0x69, 0x9b, 0x24, 0xc7, - 0xb9, 0x0f, 0xe0, 0xc2, 0x6a, 0x87, 0xb4, 0x0e, 0xb8, 0xc7, 0x71, 0xaf, 0xb3, 0xca, 0x1a, 0xbd, - 0x36, 0xed, 0x08, 0x74, 0x09, 0xc6, 0x3a, 0xa4, 0x4d, 0x17, 0x9c, 0x4b, 0xce, 0x0b, 0xc5, 0xca, - 0xd4, 0x67, 0x87, 0xcb, 0xe7, 0x8e, 0x0e, 0x97, 0xc7, 0xde, 0x21, 0x6d, 0x8a, 0x15, 0x05, 0x3d, - 0x0b, 0xe3, 0xfb, 0xa4, 0xd5, 0xa3, 0x0b, 0x39, 0xd5, 0x65, 0xda, 0x74, 0x19, 0xbf, 0x27, 0x1b, - 0xb1, 0xa6, 0xb9, 0x7f, 0x90, 0x8f, 0xc1, 0x7f, 0x9b, 0x0a, 0x52, 0x27, 0x82, 0xa0, 0x36, 0x14, - 0x5a, 0x64, 0x87, 0xb6, 0xf8, 0x82, 0x73, 0x29, 0xff, 0x42, 0xe9, 0xca, 0xcd, 0xf2, 0x30, 0x9b, - 0x58, 0x4e, 0x81, 0x2a, 0x6f, 0x2a, 0x9c, 0x9b, 0x1d, 0xc1, 0x0e, 0x2a, 0xe7, 0xcd, 0x24, 0x0a, - 0xba, 0x11, 0x1b, 0x26, 0xe8, 0xf7, 0x1c, 0x28, 0x91, 0x4e, 0xc7, 0x17, 0x44, 0xc8, 0x6d, 0x5a, - 0xc8, 0x29, 0xa6, 0x77, 0x46, 0x67, 0xba, 0x1a, 0x81, 0x69, 0xce, 0x17, 0x0c, 0xe7, 0x92, 0x45, - 0xc1, 0x36, 0xcf, 0xc5, 0x37, 0xa1, 0x64, 0x4d, 0x15, 0xcd, 0x42, 0x7e, 0x8f, 0x1e, 0x68, 0xf9, - 0x62, 0xf9, 0x27, 0x9a, 0x8f, 0x09, 0xd4, 0x48, 0xf0, 0x7a, 0xee, 0x9a, 0xb3, 0x78, 0x03, 0x66, - 0x93, 0x0c, 0xb3, 0x8c, 0x77, 0xff, 0xcc, 0x81, 0x79, 0x6b, 0x15, 0x98, 0xee, 0x52, 0x46, 0x3b, - 0x35, 0x8a, 0x56, 0xa0, 0x28, 0xf7, 0x92, 0x77, 0x49, 0x2d, 0xd8, 0xea, 0x39, 0xb3, 0x90, 0xe2, - 0x3b, 0x01, 0x01, 0x47, 0x7d, 0xc2, 0x63, 0x91, 0x7b, 0xd4, 0xb1, 0xe8, 0x36, 0x09, 0xa7, 0x0b, - 0xf9, 0xf8, 0xb1, 0xd8, 0x92, 0x8d, 0x58, 0xd3, 0xdc, 0x5f, 0x81, 0x6f, 0x04, 0xf3, 0xd9, 0xa6, - 0xed, 0x6e, 0x8b, 0x08, 0x1a, 0x4d, 0xea, 0xd8, 0xa3, 0xe7, 0xee, 0xc1, 0xf4, 0x6a, 0xb7, 0xcb, - 0xfc, 0x7d, 0x5a, 0xaf, 0x0a, 0xd2, 0xa0, 0xe8, 0x3e, 0x00, 0x31, 0x0d, 0xab, 0x42, 0x0d, 0x2c, - 0x5d, 0xf9, 0xa5, 0xb2, 0xd6, 0x88, 0xb2, 0xad, 0x11, 0xe5, 0xee, 0x5e, 0x43, 0x36, 0xf0, 0xb2, - 0x54, 0xbc, 0xf2, 0xfe, 0xe5, 0xf2, 0xb6, 0xd7, 0xa6, 0x95, 0xf3, 0x47, 0x87, 0xcb, 0xb0, 0x1a, - 0x22, 0x60, 0x0b, 0xcd, 0xfd, 0x7d, 0x07, 0x2e, 0xae, 0xb2, 0x86, 0xbf, 0xb6, 0xbe, 0xda, 0xed, - 0xbe, 0x4d, 0x49, 0x4b, 0x34, 0xab, 0x82, 0x88, 0x1e, 0x47, 0x37, 0xa0, 0xc0, 0xd5, 0x5f, 0x66, - 0xaa, 0xcf, 0x07, 0xa7, 0x4f, 0xd3, 0x1f, 0x1e, 0x2e, 0xcf, 0xa7, 0x0c, 0xa4, 0xd8, 0x8c, 0x42, - 0x2f, 0xc2, 0x44, 0x9b, 0x72, 0x4e, 0x1a, 0x81, 0x3c, 0x67, 0x0c, 0xc0, 0xc4, 0xb7, 0x75, 0x33, - 0x0e, 0xe8, 0xee, 0x3f, 0xe6, 0x60, 0x26, 0xc4, 0x32, 0xec, 0x4f, 0x61, 0xf3, 0x7a, 0x30, 0xd5, - 0xb4, 0x56, 0xa8, 0xf6, 0xb0, 0x74, 0xe5, 0xad, 0x21, 0xf5, 0x24, 0x4d, 0x48, 0x95, 0x79, 0xc3, - 0x66, 0xca, 0x6e, 0xc5, 0x31, 0x36, 0xa8, 0x0d, 0xc0, 0x0f, 0x3a, 0x35, 0xc3, 0x74, 0x4c, 0x31, - 0x7d, 0x33, 0x23, 0xd3, 0x6a, 0x08, 0x50, 0x41, 0x86, 0x25, 0x44, 0x6d, 0xd8, 0x62, 0xe0, 0xfe, - 0x9d, 0x03, 0x17, 0x52, 0xc6, 0xa1, 0x6f, 0x25, 0xf6, 0xf3, 0xb9, 0xbe, 0xfd, 0x44, 0x7d, 0xc3, - 0xa2, 0xdd, 0x7c, 0x19, 0x26, 0x19, 0xdd, 0xf7, 0xe4, 0x3d, 0x60, 0x24, 0x3c, 0x6b, 0xc6, 0x4f, - 0x62, 0xd3, 0x8e, 0xc3, 0x1e, 0xe8, 0x25, 0x28, 0x06, 0x7f, 0x4b, 0x31, 0xe7, 0xa5, 0xaa, 0xc8, - 0x8d, 0x0b, 0xba, 0x72, 0x1c, 0xd1, 0xdd, 0xdf, 0x85, 0xf1, 0xb5, 0x26, 0x61, 0x42, 0x9e, 0x18, - 0x46, 0xbb, 0xfe, 0xbb, 0x78, 0xd3, 0x4c, 0x31, 0x3c, 0x31, 0x58, 0x37, 0xe3, 0x80, 0x3e, 0xc4, - 0x66, 0xbf, 0x08, 0x13, 0xfb, 0x94, 0xa9, 0xf9, 0xe6, 0xe3, 0x60, 0xf7, 0x74, 0x33, 0x0e, 0xe8, - 0xee, 0xbf, 0x3a, 0x30, 0xaf, 0x66, 0xb0, 0xee, 0xf1, 0x9a, 0xbf, 0x4f, 0xd9, 0x01, 0xa6, 0xbc, - 0xd7, 0x3a, 0xe1, 0x09, 0xad, 0xc3, 0x2c, 0xa7, 0xed, 0x7d, 0xca, 0xd6, 0xfc, 0x0e, 0x17, 0x8c, - 0x78, 0x1d, 0x61, 0x66, 0xb6, 0x60, 0x7a, 0xcf, 0x56, 0x13, 0x74, 0xdc, 0x37, 0x02, 0xbd, 0x00, - 0x93, 0x66, 0xda, 0xf2, 0x28, 0x49, 0xc1, 0x4e, 0xc9, 0x3d, 0x30, 0x6b, 0xe2, 0x38, 0xa4, 0xba, - 0xff, 0xe9, 0xc0, 0x9c, 0x5a, 0x55, 0xb5, 0xb7, 0xc3, 0x6b, 0xcc, 0xeb, 0x4a, 0xf3, 0xfa, 0x24, - 0x2e, 0xe9, 0x06, 0x9c, 0xaf, 0x07, 0x82, 0xdf, 0xf4, 0xda, 0x9e, 0x50, 0x3a, 0x32, 0x5e, 0x79, - 0xca, 0x60, 0x9c, 0x5f, 0x8f, 0x51, 0x71, 0xa2, 0xb7, 0xde, 0xbe, 0x56, 0x8f, 0x0b, 0xca, 0xb6, - 0x98, 0xdf, 0xf6, 0xe5, 0x3a, 0xb7, 0x09, 0xdf, 0x43, 0xdf, 0x83, 0xc9, 0xb6, 0xb9, 0xd2, 0x8c, - 0xd5, 0xfc, 0xe5, 0xe1, 0xac, 0xe6, 0xdd, 0x9d, 0xdf, 0xa0, 0x35, 0x21, 0xaf, 0xc3, 0x48, 0xdb, - 0xa2, 0x36, 0x1c, 0xa2, 0xa2, 0xf7, 0x61, 0x8c, 0x77, 0x69, 0x4d, 0x89, 0xa8, 0x74, 0xe5, 0x8d, - 0xe1, 0x94, 0x3a, 0x36, 0xc9, 0x6a, 0x97, 0xd6, 0x22, 0xd9, 0xca, 0x5f, 0x58, 0x41, 0xba, 0xff, - 0xee, 0xc0, 0x42, 0xda, 0xaa, 0x36, 0x3d, 0x2e, 0xd0, 0x83, 0xbe, 0x95, 0x95, 0x87, 0x5b, 0x99, - 0x1c, 0xad, 0xd6, 0x15, 0x6a, 0x6f, 0xd0, 0x62, 0xad, 0xaa, 0x06, 0xe3, 0x9e, 0xa0, 0xed, 0xc0, - 0x91, 0xb8, 0x31, 0xdc, 0xb2, 0x06, 0x4d, 0x36, 0xba, 0x24, 0x37, 0x24, 0x28, 0xd6, 0xd8, 0xee, - 0x5f, 0xe4, 0xe1, 0x42, 0xb0, 0xb1, 0xb4, 0xbe, 0xca, 0x84, 0xb7, 0x4b, 0x6a, 0x82, 0xa3, 0x3a, - 0x4c, 0xd5, 0xa3, 0x66, 0x61, 0xec, 0x65, 0x96, 0xeb, 0x2e, 0xb4, 0xc9, 0x16, 0xbc, 0xc0, 0x31, - 0x54, 0xf4, 0x1e, 0xe4, 0x1b, 0x9e, 0x30, 0xee, 0xd9, 0xb5, 0xe1, 0x16, 0x78, 0xdb, 0x4b, 0x1a, - 0x88, 0x4a, 0xc9, 0xb0, 0xca, 0xdf, 0xf6, 0x04, 0x96, 0x88, 0x68, 0x07, 0x0a, 0x5e, 0x9b, 0x34, - 0x68, 0x20, 0xbc, 0xeb, 0xc3, 0x61, 0x6f, 0xc8, 0x31, 0x49, 0xf4, 0xd0, 0xdf, 0x53, 0x54, 0x8e, - 0x0d, 0xb2, 0xe4, 0x51, 0x93, 0x8a, 0xad, 0x4d, 0xeb, 0xd0, 0x3c, 0xd2, 0x4c, 0x5c, 0xc4, 0x43, - 0x51, 0x39, 0x36, 0xc8, 0xee, 0x97, 0x39, 0x98, 0x8d, 0xe4, 0xb7, 0xe6, 0xb7, 0xdb, 0x9e, 0x40, - 0x8b, 0x90, 0xf3, 0xea, 0xc6, 0x6e, 0x80, 0x19, 0x98, 0xdb, 0x58, 0xc7, 0x39, 0xaf, 0x8e, 0x9e, - 0x87, 0xc2, 0x0e, 0x23, 0x9d, 0x5a, 0xd3, 0xd8, 0x8b, 0x10, 0xb8, 0xa2, 0x5a, 0xb1, 0xa1, 0xa2, - 0x67, 0x20, 0x2f, 0x48, 0xc3, 0x98, 0x89, 0x50, 0x7e, 0xdb, 0xa4, 0x81, 0x65, 0xbb, 0xb4, 0x4f, - 0xbc, 0xa7, 0x54, 0x4d, 0xed, 0xbc, 0x65, 0x9f, 0xaa, 0xba, 0x19, 0x07, 0x74, 0xc9, 0x91, 0xf4, - 0x44, 0xd3, 0x67, 0x0b, 0xe3, 0x71, 0x8e, 0xab, 0xaa, 0x15, 0x1b, 0xaa, 0xf4, 0x24, 0x6a, 0x6a, - 0xfe, 0x82, 0xb2, 0x85, 0x42, 0xdc, 0x93, 0x58, 0x0b, 0x08, 0x38, 0xea, 0x83, 0x3e, 0x80, 0x52, - 0x8d, 0x51, 0x22, 0x7c, 0xb6, 0x4e, 0x04, 0x5d, 0x98, 0xc8, 0x7c, 0x02, 0x67, 0xa4, 0xab, 0xbc, - 0x16, 0x41, 0x60, 0x1b, 0xcf, 0xfd, 0xda, 0x81, 0x85, 0x48, 0xb4, 0x6a, 0x6f, 0x23, 0xf7, 0xd0, - 0x88, 0xc7, 0x19, 0x20, 0x9e, 0xe7, 0xa1, 0x50, 0xf7, 0x1a, 0x94, 0x8b, 0xa4, 0x94, 0xd7, 0x55, - 0x2b, 0x36, 0x54, 0x74, 0x05, 0xa0, 0xe1, 0x09, 0x63, 0xd2, 0x8d, 0xb0, 0x43, 0x53, 0x76, 0x3b, - 0xa4, 0x60, 0xab, 0x17, 0x7a, 0x0f, 0x8a, 0x6a, 0x9a, 0x23, 0xaa, 0x9d, 0xba, 0xe0, 0xd7, 0x02, - 0x00, 0x1c, 0x61, 0xb9, 0x5f, 0x8c, 0xc1, 0xc4, 0x2d, 0x46, 0xbd, 0x46, 0x53, 0x9c, 0x81, 0x4d, - 0x7e, 0x16, 0xc6, 0x49, 0xcb, 0x23, 0x5c, 0xed, 0x9b, 0xe5, 0xa2, 0xaf, 0xca, 0x46, 0xac, 0x69, - 0xe8, 0xbb, 0x50, 0xf0, 0x99, 0xd7, 0xf0, 0x3a, 0x0b, 0x45, 0x35, 0x89, 0x57, 0x87, 0x53, 0x21, - 0xb3, 0x8a, 0xbb, 0x6a, 0x68, 0x24, 0x7c, 0xfd, 0x1b, 0x1b, 0x48, 0x74, 0x1f, 0x26, 0xf4, 0x61, - 0x0a, 0x14, 0x74, 0x65, 0x68, 0x03, 0xa3, 0xcf, 0x63, 0x74, 0xe8, 0xf5, 0x6f, 0x8e, 0x03, 0x40, - 0x54, 0x0d, 0xed, 0xcb, 0x98, 0x82, 0x7e, 0x29, 0x83, 0x7d, 0x19, 0x68, 0x50, 0xaa, 0xa1, 0x41, - 0x19, 0xcf, 0x02, 0xaa, 0x4c, 0xc6, 0x20, 0x0b, 0x22, 0x45, 0x6c, 0xfc, 0xcd, 0xc2, 0x08, 0x22, - 0x36, 0xce, 0xee, 0xf9, 0xb8, 0x93, 0x1a, 0xb8, 0xa3, 0xee, 0xc7, 0x79, 0x98, 0x33, 0x3d, 0xd7, - 0xfc, 0x56, 0x8b, 0xd6, 0x94, 0x73, 0xa3, 0xed, 0x53, 0x3e, 0xd5, 0x3e, 0x79, 0xc1, 0xa5, 0xa6, - 0x6d, 0x7e, 0x25, 0xd3, 0x6c, 0x22, 0x1e, 0x65, 0x75, 0x89, 0xe9, 0xa8, 0x38, 0xdc, 0x25, 0xd3, - 0xcb, 0x5c, 0x6d, 0xe8, 0x8f, 0x1c, 0xb8, 0xb0, 0x4f, 0x99, 0xb7, 0xeb, 0xd5, 0x54, 0x4c, 0xfb, - 0xb6, 0xc7, 0x85, 0xcf, 0x0e, 0xcc, 0x8d, 0xf0, 0xfa, 0x70, 0x9c, 0xef, 0x59, 0x00, 0x1b, 0x9d, - 0x5d, 0xbf, 0xf2, 0x4d, 0xc3, 0xed, 0xc2, 0xbd, 0x7e, 0x68, 0x9c, 0xc6, 0x6f, 0xb1, 0x0b, 0x10, - 0xcd, 0x36, 0x25, 0xa4, 0xde, 0xb4, 0x43, 0xea, 0xa1, 0x27, 0x16, 0x2c, 0x36, 0x30, 0x59, 0x76, - 0x28, 0xfe, 0xa9, 0x03, 0x25, 0x43, 0x3f, 0x03, 0x3f, 0x05, 0xc7, 0xfd, 0x94, 0x57, 0x32, 0xcd, - 0x7f, 0x80, 0x5b, 0xc2, 0x60, 0x3a, 0xa6, 0xe4, 0xe8, 0x2a, 0x8c, 0xed, 0x79, 0x9d, 0xe0, 0xd6, - 0xfb, 0xc5, 0xc0, 0x53, 0xfb, 0x35, 0xaf, 0x53, 0x7f, 0x78, 0xb8, 0x3c, 0x17, 0xeb, 0x2c, 0x1b, - 0xb1, 0xea, 0x7e, 0xbc, 0xf3, 0x7c, 0x7d, 0xf2, 0x27, 0x7f, 0xb5, 0x7c, 0xee, 0x87, 0x3f, 0xbb, - 0x74, 0xce, 0xfd, 0x24, 0x0f, 0xb3, 0x49, 0xa9, 0x0e, 0x91, 0xa2, 0x8a, 0x6c, 0xd8, 0xe4, 0xa9, - 0xda, 0xb0, 0xdc, 0xe9, 0xd9, 0xb0, 0xfc, 0x69, 0xd8, 0xb0, 0xb1, 0x13, 0xb3, 0x61, 0xee, 0x3f, - 0x39, 0x70, 0x3e, 0xdc, 0x99, 0xef, 0xf7, 0xe4, 0xcd, 0x1a, 0x49, 0xdd, 0x39, 0x79, 0xa9, 0x7f, - 0x08, 0x13, 0xdc, 0xef, 0xb1, 0x9a, 0x72, 0x1f, 0x25, 0xfa, 0x6b, 0xd9, 0x8c, 0xa6, 0x1e, 0x6b, - 0xf9, 0x4c, 0xba, 0x01, 0x07, 0xa8, 0xee, 0x83, 0x70, 0x3d, 0x86, 0xa4, 0x3d, 0x0a, 0x26, 0xfd, - 0x2d, 0xb9, 0x9e, 0x49, 0xdb, 0xa3, 0x90, 0xad, 0xd8, 0x50, 0x91, 0xab, 0xcc, 0x79, 0xe0, 0xd8, - 0x16, 0x2b, 0x60, 0xac, 0xb2, 0xda, 0x03, 0x4d, 0x71, 0xbf, 0xce, 0x87, 0xda, 0x63, 0x92, 0x0e, - 0x3f, 0x00, 0xd0, 0x96, 0x89, 0xd6, 0x37, 0x3a, 0xc6, 0xf4, 0xae, 0x8d, 0x70, 0x11, 0x18, 0x73, - 0x28, 0x51, 0xb4, 0xed, 0x0d, 0x7d, 0x80, 0x88, 0x80, 0x2d, 0x56, 0xe8, 0xb7, 0xa0, 0x14, 0x64, - 0xb9, 0x6e, 0xf9, 0xcc, 0x9c, 0xe1, 0xf5, 0x51, 0x38, 0xaf, 0x46, 0x30, 0xc9, 0x64, 0x68, 0x44, - 0xc1, 0x36, 0xb7, 0x45, 0x06, 0x33, 0x89, 0xf9, 0xa6, 0x58, 0xdf, 0x8d, 0xb8, 0xf5, 0x7d, 0x35, - 0xcb, 0xb5, 0x60, 0x32, 0x83, 0x76, 0x16, 0x95, 0xc3, 0x6c, 0x72, 0xa6, 0x27, 0xc6, 0x34, 0x96, - 0x8e, 0xb4, 0xed, 0xfd, 0x5f, 0xe6, 0xa0, 0x18, 0x6a, 0x7c, 0x96, 0xdc, 0x82, 0xbe, 0xa9, 0x73, - 0xc7, 0x44, 0x12, 0xf9, 0x61, 0x22, 0x89, 0xb1, 0xc1, 0x91, 0x44, 0x90, 0x7f, 0x2c, 0x3c, 0x3a, - 0xff, 0x68, 0x45, 0x12, 0x13, 0xc3, 0x47, 0x12, 0x93, 0xc7, 0x47, 0x12, 0xee, 0x5f, 0x3b, 0x80, - 0xfa, 0xc3, 0xc6, 0x2c, 0x82, 0x22, 0x49, 0x3b, 0x3c, 0xe4, 0x2d, 0x9d, 0x8c, 0xdd, 0x06, 0x9b, - 0x63, 0xf7, 0xd3, 0x71, 0x98, 0xb9, 0xed, 0x8d, 0x9c, 0x26, 0x12, 0xf0, 0xb4, 0x46, 0xaa, 0x52, - 0xe3, 0x23, 0x55, 0x05, 0x23, 0x82, 0x36, 0x0e, 0xcc, 0xfe, 0x5e, 0x37, 0x43, 0x9f, 0x5e, 0x4b, - 0xef, 0xf6, 0x70, 0x30, 0x09, 0x0f, 0x82, 0x1e, 0xfa, 0x90, 0xbc, 0x05, 0xd3, 0x5c, 0x30, 0xaf, - 0x26, 0x74, 0x22, 0x8a, 0x2f, 0x94, 0x94, 0x95, 0xbb, 0x68, 0xba, 0x4f, 0x57, 0x6d, 0x22, 0x8e, - 0xf7, 0x4d, 0xcd, 0x6f, 0x8d, 0x65, 0xce, 0x6f, 0xad, 0x40, 0x91, 0xb4, 0x5a, 0xfe, 0x0f, 0xb6, - 0x49, 0x83, 0x9b, 0x50, 0x35, 0x3c, 0x35, 0xab, 0x01, 0x01, 0x47, 0x7d, 0x50, 0x19, 0xc0, 0x6b, - 0x74, 0x7c, 0x46, 0xd5, 0x88, 0x82, 0x32, 0xb7, 0x2a, 0x87, 0xbf, 0x11, 0xb6, 0x62, 0xab, 0x07, - 0xaa, 0xc2, 0x45, 0xaf, 0xc3, 0x69, 0xad, 0xc7, 0x68, 0x75, 0xcf, 0xeb, 0x6e, 0x6f, 0x56, 0x95, - 0x95, 0x38, 0x50, 0xa7, 0x79, 0xb2, 0xf2, 0x8c, 0x61, 0x76, 0x71, 0x23, 0xad, 0x13, 0x4e, 0x1f, - 0x8b, 0x5e, 0x83, 0x29, 0xaf, 0x53, 0x6b, 0xf5, 0xea, 0x74, 0x8b, 0x88, 0x26, 0x5f, 0x98, 0x54, - 0xd3, 0x98, 0x3d, 0x3a, 0x5c, 0x9e, 0xda, 0xb0, 0xda, 0x71, 0xac, 0x97, 0x1c, 0x45, 0x3f, 0xb2, - 0x46, 0x15, 0xa3, 0x51, 0x37, 0x3f, 0xb2, 0x47, 0xd9, 0xbd, 0x52, 0x32, 0x80, 0x90, 0x29, 0x03, - 0xf8, 0xd3, 0x1c, 0x14, 0x74, 0x02, 0x1e, 0x5d, 0x4d, 0x64, 0xb9, 0x9f, 0xe9, 0xcb, 0x72, 0x97, - 0xd2, 0x1e, 0x2b, 0x5c, 0x28, 0x78, 0x9c, 0xf7, 0xe2, 0xb7, 0xdb, 0x86, 0x6a, 0xc1, 0x86, 0xa2, - 0xd2, 0x2e, 0x7e, 0x67, 0xd7, 0x6b, 0x98, 0xe0, 0xf8, 0x86, 0xe5, 0xca, 0x46, 0x8f, 0xa4, 0x1f, - 0x86, 0xaf, 0xa8, 0x91, 0x57, 0x1b, 0xeb, 0x20, 0xdd, 0xdb, 0x3b, 0xd5, 0xbb, 0xef, 0x68, 0x1e, - 0x6b, 0x0a, 0x11, 0x1b, 0x64, 0xc9, 0xc3, 0xef, 0x89, 0x6e, 0x4f, 0xa8, 0x83, 0x72, 0x42, 0x3c, - 0xee, 0x2a, 0x44, 0x6c, 0x90, 0xdd, 0x4f, 0x1c, 0x98, 0xd1, 0x32, 0x58, 0x6b, 0xd2, 0xda, 0x5e, - 0x55, 0xd0, 0xae, 0xf4, 0x36, 0x7b, 0x9c, 0xf2, 0xa4, 0xb7, 0xf9, 0x2e, 0xa7, 0x1c, 0x2b, 0x8a, - 0xb5, 0xfa, 0xdc, 0x69, 0xad, 0xde, 0xfd, 0x5b, 0x07, 0xc6, 0x95, 0x5b, 0x97, 0xc5, 0xfe, 0xc4, - 0x53, 0x1d, 0xb9, 0xa1, 0x52, 0x1d, 0xc7, 0x24, 0xa1, 0xa2, 0x2c, 0xcb, 0xd8, 0xa3, 0xb2, 0x2c, - 0xee, 0xcf, 0x1d, 0x98, 0x4f, 0xcb, 0xdc, 0x65, 0x99, 0xfe, 0xcb, 0x30, 0xd9, 0x6d, 0x11, 0xb1, - 0xeb, 0xb3, 0x76, 0xf2, 0x61, 0x65, 0xcb, 0xb4, 0xe3, 0xb0, 0x07, 0x62, 0x00, 0x2c, 0x08, 0x11, - 0x02, 0xf7, 0xf9, 0x46, 0xd6, 0x1b, 0x21, 0x9e, 0x72, 0x8a, 0x84, 0x15, 0x36, 0x71, 0x6c, 0x71, - 0x71, 0xff, 0x64, 0x1c, 0xe6, 0xd4, 0x90, 0x51, 0x6f, 0x88, 0x51, 0x76, 0xa8, 0x0b, 0x4f, 0x29, - 0xc7, 0xbe, 0xff, 0x52, 0xd1, 0x9b, 0x76, 0xcd, 0x8c, 0x7f, 0x6a, 0x23, 0xb5, 0xd7, 0xc3, 0x81, - 0x14, 0x3c, 0x00, 0xb7, 0xff, 0xa6, 0x80, 0xff, 0x7f, 0x37, 0x85, 0x7d, 0xd8, 0x26, 0x8e, 0x3d, - 0x6c, 0x03, 0xef, 0x95, 0xc9, 0xc7, 0xb8, 0x57, 0xfa, 0x6d, 0x7d, 0x31, 0x93, 0xad, 0xff, 0xf3, - 0x1c, 0x4c, 0x6c, 0x31, 0x5f, 0x65, 0x80, 0x4f, 0x3f, 0x99, 0x78, 0x37, 0xf6, 0xc0, 0x73, 0x79, - 0xe8, 0x07, 0x1e, 0x09, 0xa5, 0x9e, 0x76, 0x26, 0xe3, 0xcf, 0x3a, 0x56, 0x56, 0x2c, 0x9f, 0xc5, - 0x03, 0x0f, 0x20, 0x1f, 0x9d, 0x15, 0xfb, 0xd4, 0x81, 0x92, 0xe9, 0xf9, 0xc4, 0xa6, 0x5f, 0xcc, - 0xfc, 0x06, 0xa4, 0x5f, 0xfe, 0x34, 0x5a, 0x81, 0x14, 0x1a, 0xfa, 0x1d, 0x98, 0xeb, 0x06, 0x0f, - 0x4a, 0x5b, 0x7e, 0xcb, 0xab, 0x79, 0x34, 0xc8, 0xe0, 0x5d, 0xcd, 0xf8, 0xda, 0xa6, 0x86, 0x1f, - 0x54, 0xbe, 0x61, 0xf8, 0xce, 0x6d, 0x25, 0x71, 0x71, 0x3f, 0x2b, 0xf7, 0xdf, 0x1c, 0x98, 0x8e, - 0xc9, 0x1e, 0xd5, 0x00, 0x6a, 0x7e, 0xa7, 0xee, 0x89, 0xf0, 0x6d, 0xbb, 0x74, 0x65, 0x65, 0x38, - 0xa9, 0xae, 0x05, 0xe3, 0xa2, 0x43, 0x17, 0x36, 0x71, 0x6c, 0xc1, 0xa2, 0x57, 0x83, 0x32, 0x93, - 0xb8, 0x13, 0xa3, 0xcb, 0x4c, 0x1e, 0x1e, 0x2e, 0x4f, 0x99, 0x39, 0xd9, 0x65, 0x27, 0x59, 0x0a, - 0x2e, 0xfe, 0x26, 0x07, 0xc5, 0x70, 0xfd, 0x67, 0xa0, 0x46, 0xef, 0xc6, 0xd4, 0xe8, 0xd5, 0x8c, - 0x3b, 0x37, 0xe8, 0x8d, 0x14, 0x7d, 0x90, 0x50, 0xa6, 0xac, 0x47, 0xe2, 0x18, 0x75, 0xfa, 0x07, - 0xbd, 0xf9, 0xba, 0xef, 0x19, 0x28, 0xd4, 0x76, 0x5c, 0xa1, 0x56, 0x32, 0xae, 0x66, 0x80, 0x4a, - 0xfd, 0xc8, 0x81, 0x99, 0x84, 0x12, 0xa0, 0x67, 0x61, 0x5c, 0xa5, 0x6c, 0xcc, 0xf9, 0x0a, 0x07, - 0x9a, 0x00, 0x5f, 0xd1, 0xd0, 0x16, 0xcc, 0x93, 0x9e, 0xf0, 0xc3, 0xb1, 0x37, 0x3b, 0x64, 0xa7, - 0x45, 0x75, 0xd4, 0x3e, 0x59, 0xf9, 0x05, 0x33, 0x66, 0x7e, 0x35, 0xa5, 0x0f, 0x4e, 0x1d, 0xe9, - 0x7e, 0x9e, 0x03, 0x14, 0x36, 0x66, 0x49, 0x75, 0x7e, 0x00, 0x13, 0xbb, 0x3a, 0x29, 0xf3, 0x78, - 0xb9, 0xea, 0x4a, 0xc9, 0x4e, 0xd7, 0x07, 0x98, 0xe8, 0xfd, 0x93, 0x39, 0x47, 0xd0, 0x7f, 0x86, - 0xd0, 0x7d, 0x80, 0x5d, 0xaf, 0xe3, 0xf1, 0xe6, 0x88, 0xaf, 0x6a, 0xea, 0x36, 0xbf, 0x15, 0x22, - 0x60, 0x0b, 0xcd, 0xfd, 0x38, 0x67, 0x9d, 0x4f, 0x65, 0x2e, 0x87, 0xda, 0xd7, 0x17, 0xe3, 0xc2, - 0x2c, 0xf6, 0xbf, 0x63, 0x58, 0x82, 0x19, 0xdb, 0x27, 0x2c, 0x48, 0xa9, 0x66, 0xad, 0x6f, 0xb8, - 0x47, 0x98, 0x27, 0x37, 0x3e, 0xda, 0xd2, 0x7b, 0x84, 0x71, 0xac, 0x20, 0xd1, 0x77, 0xe4, 0x54, - 0x69, 0x37, 0x30, 0xa1, 0x99, 0x6d, 0x82, 0xa0, 0x5d, 0x7b, 0x7d, 0xb4, 0xcb, 0xb1, 0x06, 0x74, - 0x3f, 0x9e, 0xb0, 0x0e, 0xbc, 0xb1, 0xda, 0x77, 0x00, 0xb5, 0x08, 0x17, 0x6f, 0x93, 0x4e, 0x5d, - 0x1e, 0x4f, 0xba, 0xcb, 0x28, 0x6f, 0x1a, 0x0f, 0x6d, 0xd1, 0xa0, 0xa0, 0xcd, 0xbe, 0x1e, 0x38, - 0x65, 0x14, 0xba, 0x1a, 0x37, 0xce, 0xcb, 0x49, 0xe3, 0x7c, 0x3e, 0xd2, 0xb6, 0xd1, 0xcc, 0xb3, - 0x7d, 0xdc, 0xc7, 0x4f, 0xe1, 0xb8, 0xff, 0x36, 0xcc, 0xed, 0x26, 0xdf, 0xb5, 0xcc, 0x2b, 0xf7, - 0x1b, 0x23, 0x3e, 0x8b, 0x55, 0x2e, 0x1e, 0x45, 0x8f, 0x21, 0x51, 0x33, 0xee, 0x67, 0x84, 0xfc, - 0xa0, 0x0a, 0x4f, 0x45, 0x9f, 0x3a, 0xb1, 0x30, 0xb4, 0xca, 0x25, 0xe2, 0xd6, 0x64, 0xfd, 0x9d, - 0x86, 0xc4, 0x31, 0x06, 0x09, 0x15, 0x2c, 0x9c, 0xa4, 0x0a, 0xa2, 0xab, 0x50, 0xaa, 0xf5, 0x18, - 0xa3, 0x1d, 0x21, 0xa7, 0xa3, 0x5c, 0xd9, 0x7c, 0x94, 0x20, 0x5e, 0x8b, 0x48, 0xd8, 0xee, 0x87, - 0x7e, 0xec, 0xc0, 0x45, 0x79, 0x58, 0x6f, 0x7e, 0x44, 0x6b, 0x3d, 0x29, 0x95, 0xa0, 0xf4, 0x76, - 0xa1, 0xa4, 0xa4, 0x31, 0x64, 0x4d, 0x62, 0x35, 0x0d, 0x22, 0xf2, 0xcb, 0x53, 0xc9, 0x38, 0x9d, - 0x31, 0xfa, 0x50, 0x99, 0x0e, 0x41, 0x55, 0xd8, 0xf3, 0xf8, 0xe1, 0x7d, 0xd1, 0x98, 0x1d, 0xa1, - 0xcd, 0x8e, 0xa0, 0xee, 0x7f, 0xc5, 0xac, 0xd5, 0x70, 0x49, 0x87, 0xfb, 0x30, 0x26, 0x08, 0xdf, - 0x33, 0x5a, 0xf0, 0xad, 0x11, 0xea, 0xab, 0x22, 0x5d, 0x50, 0x9e, 0xb8, 0x6a, 0x52, 0x98, 0x68, - 0x11, 0x72, 0x84, 0x27, 0x53, 0xd0, 0xab, 0x1c, 0xe7, 0x08, 0x47, 0xef, 0xc3, 0x38, 0xa3, 0x82, - 0x1d, 0x18, 0x83, 0x7d, 0x6d, 0x04, 0xe3, 0x84, 0xe5, 0x78, 0x2d, 0x06, 0xf5, 0x27, 0xd6, 0x88, - 0x56, 0x1e, 0x25, 0x7f, 0x6a, 0x79, 0x94, 0x9f, 0x3a, 0xd6, 0x3d, 0x1b, 0x4e, 0x06, 0xbd, 0x0b, - 0x13, 0xc2, 0x6b, 0x53, 0xbf, 0x27, 0xb2, 0x39, 0x2f, 0xeb, 0x3d, 0xa6, 0xde, 0x95, 0xb5, 0x39, - 0xd9, 0xd6, 0x10, 0x38, 0xc0, 0x92, 0x11, 0x1d, 0x65, 0xcc, 0x67, 0xdb, 0x4d, 0x69, 0x1e, 0xfd, - 0x96, 0xf6, 0x10, 0xa6, 0xa3, 0x88, 0xee, 0x66, 0x8c, 0x8a, 0x13, 0xbd, 0xdd, 0xcf, 0x6d, 0x37, - 0xeb, 0xff, 0x7e, 0xe1, 0x1e, 0xb1, 0x64, 0x2f, 0x3b, 0x6e, 0x74, 0xba, 0xbd, 0x61, 0xbe, 0x38, - 0x78, 0x11, 0x26, 0xea, 0x74, 0x97, 0xf4, 0x5a, 0x7d, 0xd7, 0xf2, 0xba, 0x6e, 0xc6, 0x01, 0xdd, - 0xfd, 0x67, 0x07, 0xe6, 0xce, 0xba, 0x28, 0xf0, 0x41, 0xdc, 0x39, 0x1d, 0x45, 0x64, 0x8f, 0xa8, - 0x06, 0x7c, 0x00, 0x4f, 0xa5, 0xab, 0xed, 0x10, 0x82, 0xbb, 0x64, 0x5e, 0xe8, 0x13, 0x4f, 0xed, - 0xd1, 0x63, 0x7c, 0xbf, 0xbc, 0x94, 0xb3, 0xf4, 0x3d, 0x28, 0x78, 0x72, 0x6f, 0x78, 0xb6, 0x32, - 0xc0, 0xfe, 0xcd, 0xb5, 0xde, 0xa4, 0x15, 0x1e, 0x36, 0xb8, 0x91, 0x8f, 0x93, 0x3b, 0x69, 0x1f, - 0x87, 0xd9, 0x0b, 0x32, 0xdf, 0x18, 0xa0, 0x0f, 0xcc, 0xa1, 0x76, 0xb2, 0xd4, 0xb5, 0xf7, 0xc1, - 0x0c, 0x3c, 0xd8, 0x9f, 0x3b, 0x70, 0x31, 0xb5, 0x77, 0xe8, 0x26, 0xe6, 0x4e, 0xd1, 0x4d, 0x74, - 0x4e, 0x5a, 0x84, 0xf7, 0x2d, 0x11, 0x06, 0x53, 0x38, 0xa9, 0x0f, 0x83, 0x7e, 0x92, 0x83, 0x59, - 0x4c, 0xbb, 0x7e, 0x2c, 0x63, 0xba, 0x15, 0xd4, 0x9c, 0x66, 0x08, 0x31, 0x12, 0xef, 0x72, 0x95, - 0x89, 0x58, 0xb1, 0xe9, 0x77, 0x60, 0x5c, 0x25, 0x33, 0xb3, 0x99, 0xb1, 0xbe, 0x5c, 0xae, 0xbe, - 0xa5, 0x74, 0x56, 0x58, 0x03, 0x4a, 0x64, 0x55, 0x02, 0x61, 0x2e, 0xa9, 0x37, 0x32, 0x14, 0x53, - 0xf4, 0x23, 0xab, 0x66, 0xac, 0x01, 0xdd, 0x4f, 0x72, 0xa0, 0xc3, 0x91, 0x33, 0xb0, 0xf2, 0xbf, - 0x1e, 0xb3, 0xf2, 0x2b, 0xc3, 0x3a, 0x55, 0x52, 0x3c, 0x83, 0x52, 0x0e, 0xc9, 0x50, 0xf1, 0x72, - 0x16, 0xd0, 0x47, 0xa7, 0x1b, 0xfe, 0xde, 0x81, 0xa2, 0xea, 0x77, 0x06, 0xd6, 0x7c, 0x2b, 0x6e, - 0xcd, 0x5f, 0xca, 0xb0, 0x8a, 0x01, 0x16, 0xfc, 0xe3, 0xbc, 0x99, 0x7d, 0x18, 0x88, 0x36, 0x09, - 0xab, 0x9b, 0x10, 0x2b, 0xd2, 0x40, 0xd9, 0x88, 0x35, 0x0d, 0xfd, 0x26, 0xcc, 0x32, 0x5d, 0x55, - 0x43, 0xeb, 0xb7, 0xc2, 0x78, 0x27, 0x9f, 0xb9, 0xec, 0xc5, 0x94, 0xe6, 0x44, 0xa9, 0x76, 0x9c, - 0x40, 0xc5, 0x7d, 0x7c, 0x64, 0x0c, 0xd4, 0x4d, 0xda, 0x32, 0x13, 0x1b, 0xbc, 0x31, 0xa2, 0xe1, - 0xd4, 0x31, 0x50, 0x5f, 0x33, 0xee, 0x67, 0x84, 0x9a, 0x30, 0x65, 0x17, 0xec, 0x99, 0xb3, 0x74, - 0x25, 0x7b, 0x65, 0xa0, 0x7e, 0x5a, 0xb5, 0x5b, 0x70, 0x0c, 0xd9, 0x3d, 0x2c, 0x40, 0xc9, 0x3a, - 0x7c, 0x89, 0xf4, 0xe5, 0xf4, 0xe9, 0xa4, 0x2f, 0xd3, 0xa3, 0xed, 0xd2, 0x48, 0xd1, 0xf6, 0xe5, - 0x78, 0xb4, 0xfd, 0xcd, 0x64, 0xb4, 0x0d, 0x6a, 0x75, 0xb1, 0x48, 0x9b, 0xc3, 0x79, 0x13, 0x76, - 0x06, 0x95, 0x97, 0x99, 0xf2, 0x17, 0xfd, 0xc1, 0x2d, 0x92, 0x5e, 0xec, 0xad, 0x18, 0x24, 0x4e, - 0xb0, 0x90, 0x5e, 0xb0, 0x69, 0xa9, 0xf6, 0xda, 0x6d, 0xc2, 0x0e, 0x16, 0xa6, 0xd4, 0x84, 0x43, - 0x2f, 0xf8, 0x56, 0x8c, 0x8a, 0x13, 0xbd, 0xd1, 0x16, 0x14, 0x74, 0xd4, 0x6a, 0xaa, 0xf9, 0x5e, - 0xce, 0x12, 0x10, 0xeb, 0x28, 0x40, 0xff, 0x8d, 0x0d, 0x8e, 0x9d, 0x70, 0x28, 0x1e, 0x93, 0x70, - 0xb8, 0x03, 0xc8, 0xdf, 0x51, 0xf1, 0x46, 0xfd, 0xb6, 0xfe, 0x82, 0x56, 0x9e, 0xca, 0x82, 0x8a, - 0x66, 0xc3, 0x0d, 0xbb, 0xdb, 0xd7, 0x03, 0xa7, 0x8c, 0x92, 0x5a, 0x6d, 0x42, 0xdd, 0x50, 0x15, - 0x4c, 0x72, 0x21, 0xab, 0x83, 0x15, 0xc5, 0x6e, 0xf3, 0x52, 0xab, 0xd7, 0x12, 0xa8, 0xb8, 0x8f, - 0x0f, 0xfa, 0x3e, 0x4c, 0xcb, 0x23, 0x14, 0x31, 0x86, 0xc7, 0x64, 0x3c, 0x77, 0x74, 0xb8, 0x3c, - 0xbd, 0x69, 0x43, 0xe2, 0x38, 0x07, 0xf7, 0x8f, 0xf3, 0x90, 0x1e, 0x68, 0x47, 0x85, 0xe8, 0xce, - 0x23, 0x0a, 0xd1, 0xdf, 0x83, 0x22, 0x17, 0x84, 0xe9, 0xa2, 0xfb, 0xdc, 0x68, 0x45, 0xf7, 0xd5, - 0x00, 0x00, 0x47, 0x58, 0x89, 0xac, 0x47, 0xfe, 0x44, 0xb3, 0x1e, 0x57, 0x00, 0x54, 0x0c, 0xb7, - 0xe6, 0xf7, 0xcc, 0x3b, 0xe7, 0x74, 0x64, 0x13, 0x6e, 0x86, 0x14, 0x6c, 0xf5, 0x42, 0xd7, 0xc2, - 0x8b, 0x53, 0x3f, 0x6c, 0x5e, 0xea, 0x2b, 0xcc, 0x48, 0xe6, 0xcd, 0x52, 0x3e, 0x24, 0x3d, 0xa6, - 0x90, 0xcb, 0xfd, 0x9f, 0x1c, 0xc4, 0x8c, 0x21, 0xfa, 0x91, 0x03, 0x73, 0x24, 0xf1, 0x2d, 0x6e, - 0xe0, 0x4b, 0xfe, 0x6a, 0xb6, 0x0f, 0xa4, 0xfb, 0x3e, 0xe5, 0x8d, 0x9e, 0x92, 0x92, 0x5d, 0x38, - 0xee, 0x67, 0x8a, 0xfe, 0xd0, 0x81, 0x0b, 0xa4, 0xff, 0x63, 0x6b, 0xb3, 0xe9, 0x6f, 0x8e, 0xfc, - 0xb5, 0x76, 0xe5, 0xe9, 0xa3, 0xc3, 0xe5, 0xb4, 0xcf, 0xd0, 0x71, 0x1a, 0x3b, 0xf4, 0x5d, 0x18, - 0x23, 0xac, 0x11, 0xa4, 0x5d, 0xb3, 0xb3, 0x0d, 0xbe, 0xa1, 0x8f, 0xbc, 0xa3, 0x55, 0xd6, 0xe0, - 0x58, 0x81, 0xba, 0x3f, 0xcb, 0xc3, 0x6c, 0xb2, 0x70, 0xdd, 0xd4, 0xfa, 0x8d, 0xa5, 0xd6, 0xfa, - 0x49, 0x1d, 0xa9, 0x89, 0xb0, 0xf0, 0x2e, 0xd2, 0x11, 0xd9, 0x88, 0x35, 0x2d, 0xd4, 0x11, 0x79, - 0x2e, 0x4d, 0x2a, 0x68, 0x34, 0x1d, 0x91, 0x3f, 0x71, 0x84, 0x85, 0xae, 0xc5, 0xef, 0x16, 0x37, - 0x79, 0xb7, 0xcc, 0xd9, 0x6b, 0x19, 0x35, 0x99, 0xdb, 0x86, 0x92, 0xb5, 0x0f, 0x46, 0x13, 0xaf, - 0x67, 0x96, 0x7b, 0x74, 0xec, 0x66, 0xf4, 0x87, 0xf8, 0x11, 0xc5, 0xc6, 0x8f, 0xf4, 0x5e, 0x49, - 0xeb, 0xb1, 0xb2, 0x9d, 0x4a, 0x5c, 0x16, 0x9a, 0xbb, 0x07, 0xd3, 0xb1, 0xfa, 0x53, 0xc9, 0x2c, - 0xa8, 0xb9, 0x1d, 0xfd, 0xcb, 0xf4, 0x7b, 0x21, 0x02, 0xb6, 0xd0, 0xd4, 0x1b, 0xe5, 0x7b, 0x84, - 0xd1, 0xa6, 0xdf, 0xe3, 0xf4, 0x49, 0x7d, 0xa3, 0x0c, 0x27, 0x78, 0xd2, 0x6f, 0x94, 0x11, 0xf0, - 0xf1, 0x6f, 0x94, 0x61, 0xdf, 0x27, 0xf6, 0x8d, 0x32, 0x9c, 0xe1, 0x80, 0xe0, 0xe1, 0xbf, 0x73, - 0xd6, 0x2a, 0xe2, 0x01, 0x44, 0xee, 0x11, 0x01, 0xc4, 0x03, 0x98, 0xf4, 0x3a, 0x82, 0xb2, 0x7d, - 0xd2, 0x32, 0x99, 0xda, 0xac, 0x19, 0xcd, 0x70, 0xa9, 0x1b, 0x06, 0x07, 0x87, 0x88, 0xa8, 0x05, - 0x17, 0x83, 0xd7, 0x0b, 0x46, 0x49, 0xf4, 0x7a, 0x6a, 0x2a, 0x90, 0x5e, 0x0f, 0xd2, 0xec, 0xb7, - 0xd2, 0x3a, 0x3d, 0x1c, 0x44, 0xc0, 0xe9, 0xa0, 0x88, 0xc3, 0x34, 0xb7, 0x22, 0xe7, 0xe0, 0x92, - 0x1a, 0xf2, 0xe5, 0x27, 0x99, 0x6c, 0xb0, 0xca, 0x96, 0x6c, 0x50, 0x1c, 0xe7, 0xe1, 0xfe, 0x4b, - 0x1e, 0x66, 0x12, 0x27, 0x2d, 0x11, 0x21, 0x14, 0xcf, 0x32, 0x42, 0x28, 0x8c, 0x14, 0x21, 0xa4, - 0x3b, 0xaf, 0x63, 0x23, 0x39, 0xaf, 0x6f, 0x69, 0x07, 0xd2, 0xec, 0xdc, 0xc6, 0xba, 0xa9, 0xf2, - 0x0e, 0xa5, 0xb9, 0x69, 0x13, 0x71, 0xbc, 0xaf, 0xba, 0xe1, 0xeb, 0xfd, 0x9f, 0x34, 0x1b, 0xef, - 0xf7, 0xcd, 0xac, 0x65, 0x7a, 0x21, 0x80, 0xbe, 0xe1, 0x53, 0x08, 0x38, 0x8d, 0x5d, 0xe5, 0xce, - 0x67, 0x5f, 0x2d, 0x9d, 0xfb, 0xe2, 0xab, 0xa5, 0x73, 0x5f, 0x7e, 0xb5, 0x74, 0xee, 0x87, 0x47, - 0x4b, 0xce, 0x67, 0x47, 0x4b, 0xce, 0x17, 0x47, 0x4b, 0xce, 0x97, 0x47, 0x4b, 0xce, 0x7f, 0x1c, - 0x2d, 0x39, 0x3f, 0xfe, 0xf9, 0xd2, 0xb9, 0xfb, 0xcf, 0x0d, 0xf3, 0xdf, 0x88, 0xfe, 0x37, 0x00, - 0x00, 0xff, 0xff, 0x7d, 0x08, 0x60, 0x51, 0xb4, 0x48, 0x00, 0x00, + 0x36, 0x0c, 0x3b, 0xb6, 0x87, 0x11, 0x6d, 0xd9, 0x92, 0xbc, 0xd1, 0x82, 0x43, 0x4a, 0x32, 0x15, + 0xae, 0xc5, 0xd4, 0xd0, 0xf2, 0x5a, 0x2b, 0xc3, 0x5b, 0x9c, 0x29, 0xce, 0x74, 0x38, 0x33, 0x3d, + 0x5b, 0x55, 0xc3, 0x35, 0x93, 0x20, 0xd9, 0x7c, 0x01, 0x8b, 0x7c, 0x61, 0x0f, 0x06, 0xbc, 0x01, + 0x12, 0x20, 0x48, 0x8e, 0x8b, 0xe4, 0x1f, 0xc8, 0xc1, 0x87, 0x5c, 0x8c, 0xc0, 0x48, 0x8c, 0x24, + 0x07, 0x1f, 0x36, 0x44, 0xcc, 0x05, 0x72, 0xdc, 0x5b, 0x2e, 0x02, 0x02, 0x04, 0xf5, 0xd1, 0xdd, + 0xd5, 0x3d, 0x3d, 0xe2, 0xf4, 0x88, 0x14, 0x9c, 0xbd, 0x71, 0xea, 0xd5, 0xfb, 0xbd, 0xaa, 0x57, + 0x55, 0xaf, 0xde, 0x7b, 0xf5, 0x9a, 0xf0, 0x5a, 0xc3, 0x13, 0xcd, 0xde, 0x6e, 0xb9, 0xe6, 0xb7, + 0x57, 0xc8, 0x7e, 0xcf, 0x13, 0x87, 0x2b, 0xfb, 0x84, 0x35, 0xfc, 0x15, 0xd2, 0xf5, 0x56, 0x0e, + 0x2e, 0x93, 0x56, 0xb7, 0x49, 0x2e, 0xaf, 0x34, 0x68, 0x87, 0x32, 0x22, 0x68, 0xbd, 0xdc, 0x65, + 0xbe, 0xf0, 0xd1, 0x73, 0x11, 0x57, 0x59, 0x73, 0x95, 0x15, 0x57, 0x99, 0x74, 0xbd, 0x72, 0xc0, + 0xb5, 0xf8, 0x8a, 0x85, 0xdd, 0xf0, 0x1b, 0xfe, 0x8a, 0x62, 0xde, 0xed, 0xed, 0xa9, 0x5f, 0xea, + 0x87, 0xfa, 0x4b, 0x83, 0x2e, 0xbe, 0xb5, 0x7f, 0x95, 0x97, 0x3d, 0x25, 0x99, 0x7e, 0x28, 0x68, + 0x87, 0x7b, 0x7e, 0x87, 0xbf, 0x42, 0xba, 0x1e, 0xa7, 0xec, 0x80, 0xb2, 0x95, 0xee, 0x7e, 0x43, + 0xd2, 0x78, 0xbc, 0xc3, 0xca, 0x41, 0xdf, 0xf0, 0x16, 0x5f, 0x8b, 0x90, 0xda, 0xa4, 0xd6, 0xf4, + 0x3a, 0x94, 0x1d, 0x46, 0xec, 0x6d, 0x2a, 0x48, 0x1a, 0xd7, 0xca, 0x20, 0x2e, 0xd6, 0xeb, 0x08, + 0xaf, 0x4d, 0xfb, 0x18, 0x5e, 0x3f, 0x89, 0x81, 0xd7, 0x9a, 0xb4, 0x4d, 0x92, 0x7c, 0xee, 0x03, + 0xb8, 0xb0, 0xd6, 0x21, 0xad, 0x43, 0xee, 0x71, 0xdc, 0xeb, 0xac, 0xb1, 0x46, 0xaf, 0x4d, 0x3b, + 0x02, 0x5d, 0x82, 0xb1, 0x0e, 0x69, 0xd3, 0x05, 0xe7, 0x92, 0xf3, 0x42, 0xb1, 0x32, 0xf5, 0xe9, + 0xd1, 0xf2, 0xb9, 0xe3, 0xa3, 0xe5, 0xb1, 0xb7, 0x49, 0x9b, 0x62, 0x45, 0x41, 0xcf, 0xc2, 0xf8, + 0x01, 0x69, 0xf5, 0xe8, 0x42, 0x4e, 0x75, 0x99, 0x36, 0x5d, 0xc6, 0xef, 0xc9, 0x46, 0xac, 0x69, + 0xee, 0x1f, 0xe6, 0x63, 0xf0, 0xdf, 0xa2, 0x82, 0xd4, 0x89, 0x20, 0xa8, 0x0d, 0x85, 0x16, 0xd9, + 0xa5, 0x2d, 0xbe, 0xe0, 0x5c, 0xca, 0xbf, 0x50, 0x5a, 0xbd, 0x59, 0x1e, 0x66, 0x11, 0xcb, 0x29, + 0x50, 0xe5, 0x2d, 0x85, 0x73, 0xb3, 0x23, 0xd8, 0x61, 0xe5, 0xbc, 0x19, 0x44, 0x41, 0x37, 0x62, + 0x23, 0x04, 0xfd, 0xbe, 0x03, 0x25, 0xd2, 0xe9, 0xf8, 0x82, 0x08, 0xb9, 0x4c, 0x0b, 0x39, 0x25, + 0xf4, 0xce, 0xe8, 0x42, 0xd7, 0x22, 0x30, 0x2d, 0xf9, 0x82, 0x91, 0x5c, 0xb2, 0x28, 0xd8, 0x96, + 0xb9, 0x78, 0x0d, 0x4a, 0xd6, 0x50, 0xd1, 0x2c, 0xe4, 0xf7, 0xe9, 0xa1, 0xd6, 0x2f, 0x96, 0x7f, + 0xa2, 0xf9, 0x98, 0x42, 0x8d, 0x06, 0xaf, 0xe7, 0xae, 0x3a, 0x8b, 0x37, 0x60, 0x36, 0x29, 0x30, + 0x0b, 0xbf, 0xfb, 0x17, 0x0e, 0xcc, 0x5b, 0xb3, 0xc0, 0x74, 0x8f, 0x32, 0xda, 0xa9, 0x51, 0xb4, + 0x02, 0x45, 0xb9, 0x96, 0xbc, 0x4b, 0x6a, 0xc1, 0x52, 0xcf, 0x99, 0x89, 0x14, 0xdf, 0x0e, 0x08, + 0x38, 0xea, 0x13, 0x6e, 0x8b, 0xdc, 0xa3, 0xb6, 0x45, 0xb7, 0x49, 0x38, 0x5d, 0xc8, 0xc7, 0xb7, + 0xc5, 0xb6, 0x6c, 0xc4, 0x9a, 0xe6, 0xfe, 0x1a, 0x7c, 0x2d, 0x18, 0xcf, 0x0e, 0x6d, 0x77, 0x5b, + 0x44, 0xd0, 0x68, 0x50, 0x27, 0x6e, 0x3d, 0x77, 0x1f, 0xa6, 0xd7, 0xba, 0x5d, 0xe6, 0x1f, 0xd0, + 0x7a, 0x55, 0x90, 0x06, 0x45, 0xf7, 0x01, 0x88, 0x69, 0x58, 0x13, 0x8a, 0xb1, 0xb4, 0xfa, 0x2b, + 0x65, 0x7d, 0x22, 0xca, 0xf6, 0x89, 0x28, 0x77, 0xf7, 0x1b, 0xb2, 0x81, 0x97, 0xe5, 0xc1, 0x2b, + 0x1f, 0x5c, 0x2e, 0xef, 0x78, 0x6d, 0x5a, 0x39, 0x7f, 0x7c, 0xb4, 0x0c, 0x6b, 0x21, 0x02, 0xb6, + 0xd0, 0xdc, 0x3f, 0x70, 0xe0, 0xe2, 0x1a, 0x6b, 0xf8, 0xeb, 0x1b, 0x6b, 0xdd, 0xee, 0x5b, 0x94, + 0xb4, 0x44, 0xb3, 0x2a, 0x88, 0xe8, 0x71, 0x74, 0x03, 0x0a, 0x5c, 0xfd, 0x65, 0x86, 0xfa, 0x7c, + 0xb0, 0xfb, 0x34, 0xfd, 0xe1, 0xd1, 0xf2, 0x7c, 0x0a, 0x23, 0xc5, 0x86, 0x0b, 0xbd, 0x08, 0x13, + 0x6d, 0xca, 0x39, 0x69, 0x04, 0xfa, 0x9c, 0x31, 0x00, 0x13, 0xdf, 0xd2, 0xcd, 0x38, 0xa0, 0xbb, + 0xff, 0x9c, 0x83, 0x99, 0x10, 0xcb, 0x88, 0x3f, 0x83, 0xc5, 0xeb, 0xc1, 0x54, 0xd3, 0x9a, 0xa1, + 0x5a, 0xc3, 0xd2, 0xea, 0x9b, 0x43, 0x9e, 0x93, 0x34, 0x25, 0x55, 0xe6, 0x8d, 0x98, 0x29, 0xbb, + 0x15, 0xc7, 0xc4, 0xa0, 0x36, 0x00, 0x3f, 0xec, 0xd4, 0x8c, 0xd0, 0x31, 0x25, 0xf4, 0x5a, 0x46, + 0xa1, 0xd5, 0x10, 0xa0, 0x82, 0x8c, 0x48, 0x88, 0xda, 0xb0, 0x25, 0xc0, 0xfd, 0x07, 0x07, 0x2e, + 0xa4, 0xf0, 0xa1, 0x6f, 0x24, 0xd6, 0xf3, 0xb9, 0xbe, 0xf5, 0x44, 0x7d, 0x6c, 0xd1, 0x6a, 0xbe, + 0x0c, 0x93, 0x8c, 0x1e, 0x78, 0xf2, 0x1e, 0x30, 0x1a, 0x9e, 0x35, 0xfc, 0x93, 0xd8, 0xb4, 0xe3, + 0xb0, 0x07, 0x7a, 0x09, 0x8a, 0xc1, 0xdf, 0x52, 0xcd, 0x79, 0x79, 0x54, 0xe4, 0xc2, 0x05, 0x5d, + 0x39, 0x8e, 0xe8, 0xee, 0xef, 0xc1, 0xf8, 0x7a, 0x93, 0x30, 0x21, 0x77, 0x0c, 0xa3, 0x5d, 0xff, + 0x1d, 0xbc, 0x65, 0x86, 0x18, 0xee, 0x18, 0xac, 0x9b, 0x71, 0x40, 0x1f, 0x62, 0xb1, 0x5f, 0x84, + 0x89, 0x03, 0xca, 0xd4, 0x78, 0xf3, 0x71, 0xb0, 0x7b, 0xba, 0x19, 0x07, 0x74, 0xf7, 0xdf, 0x1d, + 0x98, 0x57, 0x23, 0xd8, 0xf0, 0x78, 0xcd, 0x3f, 0xa0, 0xec, 0x10, 0x53, 0xde, 0x6b, 0x9d, 0xf2, + 0x80, 0x36, 0x60, 0x96, 0xd3, 0xf6, 0x01, 0x65, 0xeb, 0x7e, 0x87, 0x0b, 0x46, 0xbc, 0x8e, 0x30, + 0x23, 0x5b, 0x30, 0xbd, 0x67, 0xab, 0x09, 0x3a, 0xee, 0xe3, 0x40, 0x2f, 0xc0, 0xa4, 0x19, 0xb6, + 0xdc, 0x4a, 0x52, 0xb1, 0x53, 0x72, 0x0d, 0xcc, 0x9c, 0x38, 0x0e, 0xa9, 0xee, 0x7f, 0x3b, 0x30, + 0xa7, 0x66, 0x55, 0xed, 0xed, 0xf2, 0x1a, 0xf3, 0xba, 0xd2, 0xbc, 0x7e, 0x15, 0xa7, 0x74, 0x03, + 0xce, 0xd7, 0x03, 0xc5, 0x6f, 0x79, 0x6d, 0x4f, 0xa8, 0x33, 0x32, 0x5e, 0x79, 0xca, 0x60, 0x9c, + 0xdf, 0x88, 0x51, 0x71, 0xa2, 0xb7, 0x5e, 0xbe, 0x56, 0x8f, 0x0b, 0xca, 0xb6, 0x99, 0xdf, 0xf6, + 0xe5, 0x3c, 0x77, 0x08, 0xdf, 0x47, 0xdf, 0x85, 0xc9, 0xb6, 0xb9, 0xd2, 0x8c, 0xd5, 0xfc, 0xd5, + 0xe1, 0xac, 0xe6, 0xdd, 0xdd, 0xdf, 0xa4, 0x35, 0x21, 0xaf, 0xc3, 0xe8, 0xb4, 0x45, 0x6d, 0x38, + 0x44, 0x45, 0xef, 0xc1, 0x18, 0xef, 0xd2, 0x9a, 0x52, 0x51, 0x69, 0xf5, 0x8d, 0xe1, 0x0e, 0x75, + 0x6c, 0x90, 0xd5, 0x2e, 0xad, 0x45, 0xba, 0x95, 0xbf, 0xb0, 0x82, 0x74, 0xff, 0xd3, 0x81, 0x85, + 0xb4, 0x59, 0x6d, 0x79, 0x5c, 0xa0, 0x07, 0x7d, 0x33, 0x2b, 0x0f, 0x37, 0x33, 0xc9, 0xad, 0xe6, + 0x15, 0x9e, 0xde, 0xa0, 0xc5, 0x9a, 0x55, 0x0d, 0xc6, 0x3d, 0x41, 0xdb, 0x81, 0x23, 0x71, 0x63, + 0xb8, 0x69, 0x0d, 0x1a, 0x6c, 0x74, 0x49, 0x6e, 0x4a, 0x50, 0xac, 0xb1, 0xdd, 0xbf, 0xca, 0xc3, + 0x85, 0x60, 0x61, 0x69, 0x7d, 0x8d, 0x09, 0x6f, 0x8f, 0xd4, 0x04, 0x47, 0x75, 0x98, 0xaa, 0x47, + 0xcd, 0xc2, 0xd8, 0xcb, 0x2c, 0xd7, 0x5d, 0x68, 0x93, 0x2d, 0x78, 0x81, 0x63, 0xa8, 0xe8, 0x5d, + 0xc8, 0x37, 0x3c, 0x61, 0xdc, 0xb3, 0xab, 0xc3, 0x4d, 0xf0, 0xb6, 0x97, 0x34, 0x10, 0x95, 0x92, + 0x11, 0x95, 0xbf, 0xed, 0x09, 0x2c, 0x11, 0xd1, 0x2e, 0x14, 0xbc, 0x36, 0x69, 0xd0, 0x40, 0x79, + 0xd7, 0x87, 0xc3, 0xde, 0x94, 0x3c, 0x49, 0xf4, 0xd0, 0xdf, 0x53, 0x54, 0x8e, 0x0d, 0xb2, 0x94, + 0x51, 0x93, 0x07, 0x5b, 0x9b, 0xd6, 0xa1, 0x65, 0xa4, 0x99, 0xb8, 0x48, 0x86, 0xa2, 0x72, 0x6c, + 0x90, 0xdd, 0x2f, 0x72, 0x30, 0x1b, 0xe9, 0x6f, 0xdd, 0x6f, 0xb7, 0x3d, 0x81, 0x16, 0x21, 0xe7, + 0xd5, 0x8d, 0xdd, 0x00, 0xc3, 0x98, 0xdb, 0xdc, 0xc0, 0x39, 0xaf, 0x8e, 0x9e, 0x87, 0xc2, 0x2e, + 0x23, 0x9d, 0x5a, 0xd3, 0xd8, 0x8b, 0x10, 0xb8, 0xa2, 0x5a, 0xb1, 0xa1, 0xa2, 0x67, 0x20, 0x2f, + 0x48, 0xc3, 0x98, 0x89, 0x50, 0x7f, 0x3b, 0xa4, 0x81, 0x65, 0xbb, 0xb4, 0x4f, 0xbc, 0xa7, 0x8e, + 0x9a, 0x5a, 0x79, 0xcb, 0x3e, 0x55, 0x75, 0x33, 0x0e, 0xe8, 0x52, 0x22, 0xe9, 0x89, 0xa6, 0xcf, + 0x16, 0xc6, 0xe3, 0x12, 0xd7, 0x54, 0x2b, 0x36, 0x54, 0xe9, 0x49, 0xd4, 0xd4, 0xf8, 0x05, 0x65, + 0x0b, 0x85, 0xb8, 0x27, 0xb1, 0x1e, 0x10, 0x70, 0xd4, 0x07, 0xbd, 0x0f, 0xa5, 0x1a, 0xa3, 0x44, + 0xf8, 0x6c, 0x83, 0x08, 0xba, 0x30, 0x91, 0x79, 0x07, 0xce, 0x48, 0x57, 0x79, 0x3d, 0x82, 0xc0, + 0x36, 0x9e, 0xfb, 0x73, 0x07, 0x16, 0x22, 0xd5, 0xaa, 0xb5, 0x8d, 0xdc, 0x43, 0xa3, 0x1e, 0x67, + 0x80, 0x7a, 0x9e, 0x87, 0x42, 0xdd, 0x6b, 0x50, 0x2e, 0x92, 0x5a, 0xde, 0x50, 0xad, 0xd8, 0x50, + 0xd1, 0x2a, 0x40, 0xc3, 0x13, 0xc6, 0xa4, 0x1b, 0x65, 0x87, 0xa6, 0xec, 0x76, 0x48, 0xc1, 0x56, + 0x2f, 0xf4, 0x2e, 0x14, 0xd5, 0x30, 0x47, 0x3c, 0x76, 0xea, 0x82, 0x5f, 0x0f, 0x00, 0x70, 0x84, + 0xe5, 0x7e, 0x3e, 0x06, 0x13, 0xb7, 0x18, 0xf5, 0x1a, 0x4d, 0xf1, 0x04, 0x6c, 0xf2, 0xb3, 0x30, + 0x4e, 0x5a, 0x1e, 0xe1, 0x6a, 0xdd, 0x2c, 0x17, 0x7d, 0x4d, 0x36, 0x62, 0x4d, 0x43, 0xdf, 0x81, + 0x82, 0xcf, 0xbc, 0x86, 0xd7, 0x59, 0x28, 0xaa, 0x41, 0xbc, 0x3a, 0xdc, 0x11, 0x32, 0xb3, 0xb8, + 0xab, 0x58, 0x23, 0xe5, 0xeb, 0xdf, 0xd8, 0x40, 0xa2, 0xfb, 0x30, 0xa1, 0x37, 0x53, 0x70, 0x40, + 0x57, 0x86, 0x36, 0x30, 0x7a, 0x3f, 0x46, 0x9b, 0x5e, 0xff, 0xe6, 0x38, 0x00, 0x44, 0xd5, 0xd0, + 0xbe, 0x8c, 0x29, 0xe8, 0x97, 0x32, 0xd8, 0x97, 0x81, 0x06, 0xa5, 0x1a, 0x1a, 0x94, 0xf1, 0x2c, + 0xa0, 0xca, 0x64, 0x0c, 0xb2, 0x20, 0x52, 0xc5, 0xc6, 0xdf, 0x2c, 0x8c, 0xa0, 0x62, 0xe3, 0xec, + 0x9e, 0x8f, 0x3b, 0xa9, 0x81, 0x3b, 0xea, 0x7e, 0x94, 0x87, 0x39, 0xd3, 0x73, 0xdd, 0x6f, 0xb5, + 0x68, 0x4d, 0x39, 0x37, 0xda, 0x3e, 0xe5, 0x53, 0xed, 0x93, 0x17, 0x5c, 0x6a, 0xda, 0xe6, 0x57, + 0x32, 0x8d, 0x26, 0x92, 0x51, 0x56, 0x97, 0x98, 0x8e, 0x8a, 0xc3, 0x55, 0x32, 0xbd, 0xcc, 0xd5, + 0x86, 0xfe, 0xd8, 0x81, 0x0b, 0x07, 0x94, 0x79, 0x7b, 0x5e, 0x4d, 0xc5, 0xb4, 0x6f, 0x79, 0x5c, + 0xf8, 0xec, 0xd0, 0xdc, 0x08, 0xaf, 0x0f, 0x27, 0xf9, 0x9e, 0x05, 0xb0, 0xd9, 0xd9, 0xf3, 0x2b, + 0x5f, 0x37, 0xd2, 0x2e, 0xdc, 0xeb, 0x87, 0xc6, 0x69, 0xf2, 0x16, 0xbb, 0x00, 0xd1, 0x68, 0x53, + 0x42, 0xea, 0x2d, 0x3b, 0xa4, 0x1e, 0x7a, 0x60, 0xc1, 0x64, 0x03, 0x93, 0x65, 0x87, 0xe2, 0x9f, + 0x38, 0x50, 0x32, 0xf4, 0x27, 0xe0, 0xa7, 0xe0, 0xb8, 0x9f, 0xf2, 0x4a, 0xa6, 0xf1, 0x0f, 0x70, + 0x4b, 0x18, 0x4c, 0xc7, 0x0e, 0x39, 0xba, 0x02, 0x63, 0xfb, 0x5e, 0x27, 0xb8, 0xf5, 0x7e, 0x39, + 0xf0, 0xd4, 0x7e, 0xdd, 0xeb, 0xd4, 0x1f, 0x1e, 0x2d, 0xcf, 0xc5, 0x3a, 0xcb, 0x46, 0xac, 0xba, + 0x9f, 0xec, 0x3c, 0x5f, 0x9f, 0xfc, 0xf1, 0xdf, 0x2c, 0x9f, 0xfb, 0xc1, 0x4f, 0x2f, 0x9d, 0x73, + 0x3f, 0xce, 0xc3, 0x6c, 0x52, 0xab, 0x43, 0xa4, 0xa8, 0x22, 0x1b, 0x36, 0x79, 0xa6, 0x36, 0x2c, + 0x77, 0x76, 0x36, 0x2c, 0x7f, 0x16, 0x36, 0x6c, 0xec, 0xd4, 0x6c, 0x98, 0xfb, 0x2f, 0x0e, 0x9c, + 0x0f, 0x57, 0xe6, 0x7b, 0x3d, 0x79, 0xb3, 0x46, 0x5a, 0x77, 0x4e, 0x5f, 0xeb, 0x1f, 0xc0, 0x04, + 0xf7, 0x7b, 0xac, 0xa6, 0xdc, 0x47, 0x89, 0xfe, 0x5a, 0x36, 0xa3, 0xa9, 0x79, 0x2d, 0x9f, 0x49, + 0x37, 0xe0, 0x00, 0xd5, 0x7d, 0x10, 0xce, 0xc7, 0x90, 0xb4, 0x47, 0xc1, 0xa4, 0xbf, 0x25, 0xe7, + 0x33, 0x69, 0x7b, 0x14, 0xb2, 0x15, 0x1b, 0x2a, 0x72, 0x95, 0x39, 0x0f, 0x1c, 0xdb, 0x62, 0x05, + 0x8c, 0x55, 0x56, 0x6b, 0xa0, 0x29, 0xee, 0xcf, 0xf3, 0xe1, 0xe9, 0x31, 0x49, 0x87, 0xef, 0x03, + 0x68, 0xcb, 0x44, 0xeb, 0x9b, 0x1d, 0x63, 0x7a, 0xd7, 0x47, 0xb8, 0x08, 0x8c, 0x39, 0x94, 0x28, + 0xda, 0xf6, 0x86, 0x3e, 0x40, 0x44, 0xc0, 0x96, 0x28, 0xf4, 0xdb, 0x50, 0x0a, 0xb2, 0x5c, 0xb7, + 0x7c, 0x66, 0xf6, 0xf0, 0xc6, 0x28, 0x92, 0xd7, 0x22, 0x98, 0x64, 0x32, 0x34, 0xa2, 0x60, 0x5b, + 0xda, 0x22, 0x83, 0x99, 0xc4, 0x78, 0x53, 0xac, 0xef, 0x66, 0xdc, 0xfa, 0xbe, 0x9a, 0xe5, 0x5a, + 0x30, 0x99, 0x41, 0x3b, 0x8b, 0xca, 0x61, 0x36, 0x39, 0xd2, 0x53, 0x13, 0x1a, 0x4b, 0x47, 0xda, + 0xf6, 0xfe, 0xaf, 0x73, 0x50, 0x0c, 0x4f, 0x7c, 0x96, 0xdc, 0x82, 0xbe, 0xa9, 0x73, 0x27, 0x44, + 0x12, 0xf9, 0x61, 0x22, 0x89, 0xb1, 0xc1, 0x91, 0x44, 0x90, 0x7f, 0x2c, 0x3c, 0x3a, 0xff, 0x68, + 0x45, 0x12, 0x13, 0xc3, 0x47, 0x12, 0x93, 0x27, 0x47, 0x12, 0xee, 0xdf, 0x3a, 0x80, 0xfa, 0xc3, + 0xc6, 0x2c, 0x8a, 0x22, 0x49, 0x3b, 0x3c, 0xe4, 0x2d, 0x9d, 0x8c, 0xdd, 0x06, 0x9b, 0x63, 0xf7, + 0x93, 0x71, 0x98, 0xb9, 0xed, 0x8d, 0x9c, 0x26, 0x12, 0xf0, 0xb4, 0x46, 0xaa, 0x52, 0xe3, 0x23, + 0x55, 0x05, 0x23, 0x82, 0x36, 0x0e, 0xcd, 0xfa, 0x5e, 0x37, 0xac, 0x4f, 0xaf, 0xa7, 0x77, 0x7b, + 0x38, 0x98, 0x84, 0x07, 0x41, 0x0f, 0xbd, 0x49, 0xde, 0x84, 0x69, 0x2e, 0x98, 0x57, 0x13, 0x3a, + 0x11, 0xc5, 0x17, 0x4a, 0xca, 0xca, 0x5d, 0x34, 0xdd, 0xa7, 0xab, 0x36, 0x11, 0xc7, 0xfb, 0xa6, + 0xe6, 0xb7, 0xc6, 0x32, 0xe7, 0xb7, 0x56, 0xa0, 0x48, 0x5a, 0x2d, 0xff, 0xfb, 0x3b, 0xa4, 0xc1, + 0x4d, 0xa8, 0x1a, 0xee, 0x9a, 0xb5, 0x80, 0x80, 0xa3, 0x3e, 0xa8, 0x0c, 0xe0, 0x35, 0x3a, 0x3e, + 0xa3, 0x8a, 0xa3, 0xa0, 0xcc, 0xad, 0xca, 0xe1, 0x6f, 0x86, 0xad, 0xd8, 0xea, 0x81, 0xaa, 0x70, + 0xd1, 0xeb, 0x70, 0x5a, 0xeb, 0x31, 0x5a, 0xdd, 0xf7, 0xba, 0x3b, 0x5b, 0x55, 0x65, 0x25, 0x0e, + 0xd5, 0x6e, 0x9e, 0xac, 0x3c, 0x63, 0x84, 0x5d, 0xdc, 0x4c, 0xeb, 0x84, 0xd3, 0x79, 0xd1, 0x6b, + 0x30, 0xe5, 0x75, 0x6a, 0xad, 0x5e, 0x9d, 0x6e, 0x13, 0xd1, 0xe4, 0x0b, 0x93, 0x6a, 0x18, 0xb3, + 0xc7, 0x47, 0xcb, 0x53, 0x9b, 0x56, 0x3b, 0x8e, 0xf5, 0x92, 0x5c, 0xf4, 0x43, 0x8b, 0xab, 0x18, + 0x71, 0xdd, 0xfc, 0xd0, 0xe6, 0xb2, 0x7b, 0xa5, 0x64, 0x00, 0x21, 0x53, 0x06, 0xf0, 0x27, 0x39, + 0x28, 0xe8, 0x04, 0x3c, 0xba, 0x92, 0xc8, 0x72, 0x3f, 0xd3, 0x97, 0xe5, 0x2e, 0xa5, 0x3d, 0x56, + 0xb8, 0x50, 0xf0, 0x38, 0xef, 0xc5, 0x6f, 0xb7, 0x4d, 0xd5, 0x82, 0x0d, 0x45, 0xa5, 0x5d, 0xfc, + 0xce, 0x9e, 0xd7, 0x30, 0xc1, 0xf1, 0x0d, 0xcb, 0x95, 0x8d, 0x1e, 0x49, 0x3f, 0x08, 0x5f, 0x51, + 0x23, 0xaf, 0x36, 0xd6, 0x41, 0xba, 0xb7, 0x77, 0xaa, 0x77, 0xdf, 0xd6, 0x32, 0xd6, 0x15, 0x22, + 0x36, 0xc8, 0x52, 0x86, 0xdf, 0x13, 0xdd, 0x9e, 0x50, 0x1b, 0xe5, 0x94, 0x64, 0xdc, 0x55, 0x88, + 0xd8, 0x20, 0xbb, 0x1f, 0x3b, 0x30, 0xa3, 0x75, 0xb0, 0xde, 0xa4, 0xb5, 0xfd, 0xaa, 0xa0, 0x5d, + 0xe9, 0x6d, 0xf6, 0x38, 0xe5, 0x49, 0x6f, 0xf3, 0x1d, 0x4e, 0x39, 0x56, 0x14, 0x6b, 0xf6, 0xb9, + 0xb3, 0x9a, 0xbd, 0xfb, 0xf7, 0x0e, 0x8c, 0x2b, 0xb7, 0x2e, 0x8b, 0xfd, 0x89, 0xa7, 0x3a, 0x72, + 0x43, 0xa5, 0x3a, 0x4e, 0x48, 0x42, 0x45, 0x59, 0x96, 0xb1, 0x47, 0x65, 0x59, 0xdc, 0x9f, 0x39, + 0x30, 0x9f, 0x96, 0xb9, 0xcb, 0x32, 0xfc, 0x97, 0x61, 0xb2, 0xdb, 0x22, 0x62, 0xcf, 0x67, 0xed, + 0xe4, 0xc3, 0xca, 0xb6, 0x69, 0xc7, 0x61, 0x0f, 0xc4, 0x00, 0x58, 0x10, 0x22, 0x04, 0xee, 0xf3, + 0x8d, 0xac, 0x37, 0x42, 0x3c, 0xe5, 0x14, 0x29, 0x2b, 0x6c, 0xe2, 0xd8, 0x92, 0xe2, 0xfe, 0xe9, + 0x38, 0xcc, 0x29, 0x96, 0x51, 0x6f, 0x88, 0x51, 0x56, 0xa8, 0x0b, 0x4f, 0x29, 0xc7, 0xbe, 0xff, + 0x52, 0xd1, 0x8b, 0x76, 0xd5, 0xf0, 0x3f, 0xb5, 0x99, 0xda, 0xeb, 0xe1, 0x40, 0x0a, 0x1e, 0x80, + 0xdb, 0x7f, 0x53, 0xc0, 0x2f, 0xde, 0x4d, 0x61, 0x6f, 0xb6, 0x89, 0x13, 0x37, 0xdb, 0xc0, 0x7b, + 0x65, 0xf2, 0x31, 0xee, 0x95, 0x7e, 0x5b, 0x5f, 0xcc, 0x64, 0xeb, 0xff, 0x32, 0x07, 0x13, 0xdb, + 0xcc, 0x57, 0x19, 0xe0, 0xb3, 0x4f, 0x26, 0xde, 0x8d, 0x3d, 0xf0, 0x5c, 0x1e, 0xfa, 0x81, 0x47, + 0x42, 0xa9, 0xa7, 0x9d, 0xc9, 0xf8, 0xb3, 0x8e, 0x95, 0x15, 0xcb, 0x67, 0xf1, 0xc0, 0x03, 0xc8, + 0x47, 0x67, 0xc5, 0x3e, 0x71, 0xa0, 0x64, 0x7a, 0x7e, 0x65, 0xd3, 0x2f, 0x66, 0x7c, 0x03, 0xd2, + 0x2f, 0x7f, 0x1e, 0xcd, 0x40, 0x2a, 0x0d, 0xfd, 0x2e, 0xcc, 0x75, 0x83, 0x07, 0xa5, 0x6d, 0xbf, + 0xe5, 0xd5, 0x3c, 0x1a, 0x64, 0xf0, 0xae, 0x64, 0x7c, 0x6d, 0x53, 0xec, 0x87, 0x95, 0xaf, 0x19, + 0xb9, 0x73, 0xdb, 0x49, 0x5c, 0xdc, 0x2f, 0xca, 0xfd, 0x0f, 0x07, 0xa6, 0x63, 0xba, 0x47, 0x35, + 0x80, 0x9a, 0xdf, 0xa9, 0x7b, 0x22, 0x7c, 0xdb, 0x2e, 0xad, 0xae, 0x0c, 0xa7, 0xd5, 0xf5, 0x80, + 0x2f, 0xda, 0x74, 0x61, 0x13, 0xc7, 0x16, 0x2c, 0x7a, 0x35, 0x28, 0x33, 0x89, 0x3b, 0x31, 0xba, + 0xcc, 0xe4, 0xe1, 0xd1, 0xf2, 0x94, 0x19, 0x93, 0x5d, 0x76, 0x92, 0xa5, 0xe0, 0xe2, 0xef, 0x72, + 0x50, 0x0c, 0xe7, 0xff, 0x04, 0x8e, 0xd1, 0x3b, 0xb1, 0x63, 0xf4, 0x6a, 0xc6, 0x95, 0x1b, 0xf4, + 0x46, 0x8a, 0xde, 0x4f, 0x1c, 0xa6, 0xac, 0x5b, 0xe2, 0x84, 0xe3, 0xf4, 0x4f, 0x7a, 0xf1, 0x75, + 0xdf, 0x27, 0x70, 0xa0, 0x76, 0xe2, 0x07, 0x6a, 0x25, 0xe3, 0x6c, 0x06, 0x1c, 0xa9, 0x1f, 0x3a, + 0x30, 0x93, 0x38, 0x04, 0xe8, 0x59, 0x18, 0x57, 0x29, 0x1b, 0xb3, 0xbf, 0x42, 0x46, 0x13, 0xe0, + 0x2b, 0x1a, 0xda, 0x86, 0x79, 0xd2, 0x13, 0x7e, 0xc8, 0x7b, 0xb3, 0x43, 0x76, 0x5b, 0x54, 0x47, + 0xed, 0x93, 0x95, 0x5f, 0x32, 0x3c, 0xf3, 0x6b, 0x29, 0x7d, 0x70, 0x2a, 0xa7, 0xfb, 0x59, 0x0e, + 0x50, 0xd8, 0x98, 0x25, 0xd5, 0xf9, 0x3e, 0x4c, 0xec, 0xe9, 0xa4, 0xcc, 0xe3, 0xe5, 0xaa, 0x2b, + 0x25, 0x3b, 0x5d, 0x1f, 0x60, 0xa2, 0xf7, 0x4e, 0x67, 0x1f, 0x41, 0xff, 0x1e, 0x42, 0xf7, 0x01, + 0xf6, 0xbc, 0x8e, 0xc7, 0x9b, 0x23, 0xbe, 0xaa, 0xa9, 0xdb, 0xfc, 0x56, 0x88, 0x80, 0x2d, 0x34, + 0xf7, 0xa3, 0x9c, 0xb5, 0x3f, 0x95, 0xb9, 0x1c, 0x6a, 0x5d, 0x5f, 0x8c, 0x2b, 0xb3, 0xd8, 0xff, + 0x8e, 0x61, 0x29, 0x66, 0xec, 0x80, 0xb0, 0x20, 0xa5, 0x9a, 0xb5, 0xbe, 0xe1, 0x1e, 0x61, 0x9e, + 0x5c, 0xf8, 0x68, 0x49, 0xef, 0x11, 0xc6, 0xb1, 0x82, 0x44, 0xdf, 0x96, 0x43, 0xa5, 0xdd, 0xc0, + 0x84, 0x66, 0xb6, 0x09, 0x82, 0x76, 0xed, 0xf9, 0xd1, 0x2e, 0xc7, 0x1a, 0xd0, 0xfd, 0x68, 0xc2, + 0xda, 0xf0, 0xc6, 0x6a, 0xdf, 0x01, 0xd4, 0x22, 0x5c, 0xbc, 0x45, 0x3a, 0x75, 0xb9, 0x3d, 0xe9, + 0x1e, 0xa3, 0xbc, 0x69, 0x3c, 0xb4, 0x45, 0x83, 0x82, 0xb6, 0xfa, 0x7a, 0xe0, 0x14, 0x2e, 0x74, + 0x25, 0x6e, 0x9c, 0x97, 0x93, 0xc6, 0xf9, 0x7c, 0x74, 0xda, 0x46, 0x33, 0xcf, 0xf6, 0x76, 0x1f, + 0x3f, 0x83, 0xed, 0xfe, 0x3b, 0x30, 0xb7, 0x97, 0x7c, 0xd7, 0x32, 0xaf, 0xdc, 0x6f, 0x8c, 0xf8, + 0x2c, 0x56, 0xb9, 0x78, 0x1c, 0x3d, 0x86, 0x44, 0xcd, 0xb8, 0x5f, 0x10, 0xf2, 0x83, 0x2a, 0x3c, + 0x15, 0x7d, 0xea, 0xc4, 0xc2, 0xd0, 0x47, 0x2e, 0x11, 0xb7, 0x26, 0xeb, 0xef, 0x34, 0x24, 0x8e, + 0x09, 0x48, 0x1c, 0xc1, 0xc2, 0x69, 0x1e, 0x41, 0x74, 0x05, 0x4a, 0xb5, 0x1e, 0x63, 0xb4, 0x23, + 0xe4, 0x70, 0x94, 0x2b, 0x9b, 0x8f, 0x12, 0xc4, 0xeb, 0x11, 0x09, 0xdb, 0xfd, 0xd0, 0x8f, 0x1c, + 0xb8, 0x28, 0x37, 0xeb, 0xcd, 0x0f, 0x69, 0xad, 0x27, 0xb5, 0x12, 0x94, 0xde, 0x2e, 0x94, 0x94, + 0x36, 0x86, 0xac, 0x49, 0xac, 0xa6, 0x41, 0x44, 0x7e, 0x79, 0x2a, 0x19, 0xa7, 0x0b, 0x46, 0x1f, + 0x28, 0xd3, 0x21, 0xa8, 0x0a, 0x7b, 0x1e, 0x3f, 0xbc, 0x2f, 0x1a, 0xb3, 0x23, 0xb4, 0xd9, 0x11, + 0xd4, 0xfd, 0xb3, 0x31, 0xdb, 0x5a, 0x0d, 0x97, 0x74, 0xb8, 0x0f, 0x63, 0x82, 0xf0, 0x7d, 0x73, + 0x0a, 0xbe, 0x31, 0x42, 0x7d, 0x55, 0x74, 0x16, 0x94, 0x27, 0xae, 0x9a, 0x14, 0x26, 0x5a, 0x84, + 0x1c, 0xe1, 0xc9, 0x14, 0xf4, 0x1a, 0xc7, 0x39, 0xc2, 0xd1, 0x7b, 0x30, 0xce, 0xa8, 0x60, 0x87, + 0xc6, 0x60, 0x5f, 0x1d, 0xc1, 0x38, 0x61, 0xc9, 0xaf, 0xd5, 0xa0, 0xfe, 0xc4, 0x1a, 0x11, 0x35, + 0xa0, 0xe0, 0x75, 0xba, 0x3d, 0xa1, 0xc3, 0xb5, 0xd2, 0xea, 0x37, 0x47, 0xc0, 0x2e, 0x6f, 0x2a, + 0x84, 0x44, 0x55, 0xb8, 0x6e, 0xc4, 0x06, 0xde, 0x4a, 0xd8, 0xe4, 0xcf, 0x2a, 0x61, 0xb3, 0x78, + 0x0d, 0x4a, 0xd6, 0x50, 0x32, 0x55, 0x6d, 0xff, 0xc4, 0xb1, 0x7c, 0x81, 0x50, 0x61, 0xe8, 0x1d, + 0x98, 0x10, 0x5e, 0x9b, 0xfa, 0x3d, 0x91, 0xcd, 0xc1, 0xda, 0xe8, 0x31, 0xf5, 0xf6, 0xad, 0x4d, + 0xde, 0x8e, 0x86, 0xc0, 0x01, 0x96, 0x8c, 0x3a, 0x29, 0x63, 0x3e, 0xdb, 0x69, 0x4a, 0x13, 0xee, + 0xb7, 0xb4, 0x17, 0x33, 0x1d, 0x45, 0x9d, 0x37, 0x63, 0x54, 0x9c, 0xe8, 0xed, 0x7e, 0x66, 0xbb, + 0x82, 0xff, 0xff, 0x8b, 0x0b, 0x89, 0xa5, 0x7b, 0xd9, 0x51, 0x2d, 0xe2, 0x10, 0x7e, 0xd8, 0x8b, + 0x30, 0x51, 0xa7, 0x7b, 0xa4, 0xd7, 0xea, 0x73, 0x1d, 0x36, 0x74, 0x33, 0x0e, 0xe8, 0xee, 0xbf, + 0x3a, 0x30, 0xf7, 0xa4, 0x0b, 0x17, 0x1f, 0xc4, 0x1d, 0xe8, 0x51, 0x54, 0xf6, 0x88, 0x8a, 0xc5, + 0x07, 0xf0, 0x54, 0xba, 0x69, 0x19, 0x42, 0x71, 0x97, 0x4c, 0x15, 0x41, 0xa2, 0x1c, 0x20, 0x2a, + 0x18, 0xe8, 0xd7, 0x97, 0x72, 0xe8, 0xbe, 0x1b, 0x5a, 0x8b, 0x4c, 0xa5, 0x8a, 0xfd, 0x8b, 0x3b, + 0xd0, 0x4c, 0x84, 0x7e, 0x58, 0xee, 0xb4, 0xfd, 0x30, 0x66, 0x4f, 0xc8, 0x7c, 0x07, 0x81, 0xde, + 0x37, 0x9b, 0xda, 0xc9, 0x52, 0x7b, 0xdf, 0x07, 0x33, 0x70, 0x63, 0x7f, 0xe6, 0xc0, 0xc5, 0xd4, + 0xde, 0xa1, 0x2b, 0x9b, 0x3b, 0x43, 0x57, 0xd6, 0x39, 0x6d, 0x15, 0xde, 0xb7, 0x54, 0x18, 0x0c, + 0xe1, 0xb4, 0x3e, 0x5e, 0xfa, 0x71, 0x0e, 0x66, 0x31, 0xed, 0xfa, 0xb1, 0xac, 0xee, 0x76, 0x50, + 0x17, 0x9b, 0x21, 0x0c, 0x4a, 0xbc, 0x1d, 0x56, 0x26, 0x62, 0x05, 0xb1, 0xdf, 0x86, 0x71, 0x95, + 0x70, 0xcd, 0x66, 0xc6, 0xfa, 0xf2, 0xcd, 0xfa, 0x26, 0xd5, 0x99, 0x6b, 0x0d, 0x28, 0x91, 0x55, + 0x99, 0x86, 0xb9, 0xdf, 0xde, 0xc8, 0x50, 0xf0, 0xd1, 0x8f, 0xac, 0x9a, 0xb1, 0x06, 0x74, 0x3f, + 0xce, 0x81, 0x0e, 0x99, 0x9e, 0x80, 0x95, 0xff, 0x8d, 0x98, 0x95, 0x5f, 0x19, 0xd6, 0xf1, 0x93, + 0xea, 0x19, 0x94, 0x16, 0x49, 0x86, 0xb3, 0x97, 0xb3, 0x80, 0x3e, 0x3a, 0x25, 0xf2, 0x8f, 0x0e, + 0x14, 0x55, 0xbf, 0x27, 0x60, 0xcd, 0xb7, 0xe3, 0xd6, 0xfc, 0xa5, 0x0c, 0xb3, 0x18, 0x60, 0xc1, + 0x3f, 0xca, 0x9b, 0xd1, 0x87, 0xc1, 0x72, 0x93, 0xb0, 0xba, 0x09, 0x03, 0xa3, 0x13, 0x28, 0x1b, + 0xb1, 0xa6, 0xa1, 0xdf, 0x82, 0x59, 0xa6, 0x2b, 0x7f, 0x68, 0xfd, 0x56, 0x18, 0x93, 0xe5, 0x33, + 0x97, 0xe6, 0x98, 0xf2, 0xa1, 0xe8, 0x39, 0x00, 0x27, 0x50, 0x71, 0x9f, 0x1c, 0x19, 0xa7, 0x75, + 0x93, 0xb6, 0xcc, 0xc4, 0x2f, 0x6f, 0x8c, 0x68, 0x38, 0x75, 0x9c, 0xd6, 0xd7, 0x8c, 0xfb, 0x05, + 0xa1, 0x26, 0x4c, 0xd9, 0x45, 0x85, 0x66, 0x2f, 0xad, 0x66, 0xaf, 0x5e, 0xd4, 0xcf, 0xbf, 0x76, + 0x0b, 0x8e, 0x21, 0xbb, 0x47, 0x05, 0x28, 0x59, 0x9b, 0x2f, 0x91, 0x62, 0x9d, 0x3e, 0x9b, 0x14, + 0x6b, 0x7a, 0x46, 0xa0, 0x34, 0x52, 0x46, 0xe0, 0x72, 0x3c, 0x23, 0xf0, 0xf5, 0x64, 0x46, 0x00, + 0xd4, 0xec, 0x62, 0xd9, 0x00, 0x0e, 0xe7, 0x4d, 0x68, 0x1c, 0x54, 0x87, 0x66, 0xca, 0xb1, 0xf4, + 0x07, 0xe0, 0x48, 0x7a, 0xb1, 0xb7, 0x62, 0x90, 0x38, 0x21, 0x42, 0x7a, 0xc1, 0xa6, 0xa5, 0xda, + 0x6b, 0xb7, 0x09, 0x3b, 0x5c, 0x98, 0x52, 0x03, 0x0e, 0xbd, 0xe0, 0x5b, 0x31, 0x2a, 0x4e, 0xf4, + 0x46, 0xdb, 0x50, 0xd0, 0x91, 0xb5, 0xa9, 0x38, 0x7c, 0x39, 0x4b, 0xd0, 0xae, 0x03, 0x08, 0xfd, + 0x37, 0x36, 0x38, 0x76, 0x52, 0xa4, 0x78, 0x42, 0x52, 0xe4, 0x0e, 0x20, 0x7f, 0x57, 0x85, 0x2a, + 0xf5, 0xdb, 0xfa, 0x2b, 0x5f, 0xb9, 0x2b, 0x0b, 0x2a, 0xe2, 0x0e, 0x17, 0xec, 0x6e, 0x5f, 0x0f, + 0x9c, 0xc2, 0x25, 0x4f, 0xb5, 0x09, 0xc7, 0xc3, 0xa3, 0x60, 0x12, 0x20, 0x59, 0x1d, 0xac, 0x28, + 0xbe, 0x9c, 0x97, 0xa7, 0x7a, 0x3d, 0x81, 0x8a, 0xfb, 0xe4, 0xa0, 0xef, 0xc1, 0xb4, 0xdc, 0x42, + 0x91, 0x60, 0x78, 0x4c, 0xc1, 0x73, 0xc7, 0x47, 0xcb, 0xd3, 0x5b, 0x36, 0x24, 0x8e, 0x4b, 0x70, + 0xff, 0x24, 0x0f, 0xe9, 0xc9, 0x80, 0xa8, 0x58, 0xde, 0x79, 0x44, 0xb1, 0xfc, 0xbb, 0x50, 0xe4, + 0x82, 0x30, 0xfd, 0x61, 0x40, 0x6e, 0xb4, 0x0f, 0x03, 0xaa, 0x01, 0x00, 0x8e, 0xb0, 0x12, 0x99, + 0x99, 0xfc, 0xa9, 0x66, 0x66, 0x56, 0x01, 0x54, 0x0c, 0xb7, 0xee, 0xf7, 0xcc, 0x5b, 0xec, 0x74, + 0x64, 0x13, 0x6e, 0x86, 0x14, 0x6c, 0xf5, 0x42, 0x57, 0xc3, 0x8b, 0x53, 0x3f, 0xbe, 0x5e, 0xea, + 0x2b, 0x1e, 0x49, 0xe6, 0xf6, 0x52, 0x3e, 0x76, 0x3d, 0xa1, 0xd8, 0xcc, 0xfd, 0xdf, 0x1c, 0xc4, + 0x8c, 0x21, 0xfa, 0xa1, 0x03, 0x73, 0x24, 0xf1, 0xbd, 0x70, 0xe0, 0x4b, 0x7e, 0x33, 0xdb, 0x47, + 0xdc, 0x7d, 0x9f, 0x1b, 0x47, 0xcf, 0x5d, 0xc9, 0x2e, 0x1c, 0xf7, 0x0b, 0x45, 0x7f, 0xe4, 0xc0, + 0x05, 0xd2, 0xff, 0x41, 0xb8, 0x59, 0xf4, 0x6b, 0x23, 0x7f, 0x51, 0x5e, 0x79, 0xfa, 0xf8, 0x68, + 0x39, 0xed, 0x53, 0x79, 0x9c, 0x26, 0x0e, 0x7d, 0x07, 0xc6, 0x08, 0x6b, 0x04, 0xa9, 0xe1, 0xec, + 0x62, 0x83, 0xef, 0xfc, 0x23, 0xef, 0x68, 0x8d, 0x35, 0x38, 0x56, 0xa0, 0xee, 0x4f, 0xf3, 0x30, + 0x9b, 0x2c, 0xae, 0x37, 0xf5, 0x88, 0x63, 0xa9, 0xf5, 0x88, 0xf2, 0x8c, 0xd4, 0x44, 0x58, 0x1c, + 0x18, 0x9d, 0x11, 0xd9, 0x88, 0x35, 0x2d, 0x3c, 0x23, 0x72, 0x5f, 0x9a, 0x74, 0xd5, 0x68, 0x67, + 0x44, 0xfe, 0xc4, 0x11, 0x16, 0xba, 0x1a, 0xbf, 0x5b, 0xdc, 0xe4, 0xdd, 0x32, 0x67, 0xcf, 0x65, + 0xd4, 0x84, 0x73, 0x1b, 0x4a, 0xd6, 0x3a, 0x98, 0x93, 0x78, 0x3d, 0xb3, 0xde, 0xa3, 0x6d, 0x37, + 0xa3, 0xff, 0x59, 0x40, 0x44, 0xb1, 0xf1, 0xa3, 0x73, 0xaf, 0xb4, 0xf5, 0x58, 0x19, 0x59, 0xa5, + 0x2e, 0x0b, 0xcd, 0xdd, 0x87, 0xe9, 0x58, 0x8d, 0xac, 0x14, 0x16, 0xd4, 0x05, 0x8f, 0xfe, 0xf5, + 0xfc, 0xbd, 0x10, 0x01, 0x5b, 0x68, 0xea, 0x1d, 0xf5, 0x5d, 0xc2, 0x68, 0xd3, 0xef, 0x71, 0xfa, + 0x55, 0x7d, 0x47, 0x0d, 0x07, 0x78, 0xda, 0xef, 0xa8, 0x11, 0xf0, 0xc9, 0xef, 0xa8, 0x61, 0xdf, + 0xaf, 0xec, 0x3b, 0x6a, 0x38, 0xc2, 0x01, 0xc1, 0xc3, 0xff, 0xe4, 0xac, 0x59, 0xc4, 0x03, 0x88, + 0xdc, 0x23, 0x02, 0x88, 0x07, 0x30, 0xe9, 0x75, 0x04, 0x65, 0x07, 0xa4, 0x65, 0xb2, 0xc9, 0x59, + 0x33, 0x9a, 0xe1, 0x54, 0x37, 0x0d, 0x0e, 0x0e, 0x11, 0x51, 0x0b, 0x2e, 0x06, 0x2f, 0x2c, 0x8c, + 0x92, 0xe8, 0x85, 0xd7, 0x54, 0x49, 0xbd, 0x1e, 0x3c, 0x05, 0xdc, 0x4a, 0xeb, 0xf4, 0x70, 0x10, + 0x01, 0xa7, 0x83, 0x22, 0x0e, 0xd3, 0xdc, 0x8a, 0x9c, 0x83, 0x4b, 0x6a, 0xc8, 0xd7, 0xa9, 0x64, + 0xb2, 0xc1, 0x2a, 0xad, 0xb2, 0x41, 0x71, 0x5c, 0x86, 0xfb, 0x6f, 0x79, 0x98, 0x49, 0xec, 0xb4, + 0x44, 0x84, 0x50, 0x7c, 0x92, 0x11, 0x42, 0x61, 0xa4, 0x08, 0x21, 0xdd, 0x79, 0x1d, 0x1b, 0xc9, + 0x79, 0x7d, 0x53, 0x3b, 0x90, 0x66, 0xe5, 0x36, 0x37, 0x4c, 0x25, 0x7a, 0xa8, 0xcd, 0x2d, 0x9b, + 0x88, 0xe3, 0x7d, 0xd5, 0x0d, 0x5f, 0xef, 0xff, 0xec, 0xda, 0x78, 0xbf, 0xd7, 0xb2, 0x96, 0x12, + 0x86, 0x00, 0xfa, 0x86, 0x4f, 0x21, 0xe0, 0x34, 0x71, 0x95, 0x3b, 0x9f, 0x7e, 0xb9, 0x74, 0xee, + 0xf3, 0x2f, 0x97, 0xce, 0x7d, 0xf1, 0xe5, 0xd2, 0xb9, 0x1f, 0x1c, 0x2f, 0x39, 0x9f, 0x1e, 0x2f, + 0x39, 0x9f, 0x1f, 0x2f, 0x39, 0x5f, 0x1c, 0x2f, 0x39, 0xff, 0x75, 0xbc, 0xe4, 0xfc, 0xe8, 0x67, + 0x4b, 0xe7, 0xee, 0x3f, 0x37, 0xcc, 0x7f, 0x4c, 0xfa, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8e, + 0x3c, 0xe7, 0xd2, 0x58, 0x49, 0x00, 0x00, } func (m *AnalysisRunArgument) Marshal() (dAtA []byte, err error) { @@ -4464,6 +4467,30 @@ func (m *PromotionStep) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Inputs) > 0 { + keysForInputs := make([]string, 0, len(m.Inputs)) + for k := range m.Inputs { + keysForInputs = append(keysForInputs, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForInputs) + for iNdEx := len(keysForInputs) - 1; iNdEx >= 0; iNdEx-- { + v := m.Inputs[string(keysForInputs[iNdEx])] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintGenerated(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(keysForInputs[iNdEx]) + copy(dAtA[i:], keysForInputs[iNdEx]) + i = encodeVarintGenerated(dAtA, i, uint64(len(keysForInputs[iNdEx]))) + i-- + dAtA[i] = 0xa + i = encodeVarintGenerated(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x32 + } + } if m.Task != nil { { size, err := m.Task.MarshalToSizedBuffer(dAtA[:i]) @@ -6553,6 +6580,14 @@ func (m *PromotionStep) Size() (n int) { l = m.Task.Size() n += 1 + l + sovGenerated(uint64(l)) } + if len(m.Inputs) > 0 { + for k, v := range m.Inputs { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v))) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } return n } @@ -7667,12 +7702,23 @@ func (this *PromotionStep) String() string { if this == nil { return "nil" } + keysForInputs := make([]string, 0, len(this.Inputs)) + for k := range this.Inputs { + keysForInputs = append(keysForInputs, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForInputs) + mapStringForInputs := "map[string]string{" + for _, k := range keysForInputs { + mapStringForInputs += fmt.Sprintf("%v: %v,", k, this.Inputs[k]) + } + mapStringForInputs += "}" s := strings.Join([]string{`&PromotionStep{`, `Uses:` + fmt.Sprintf("%v", this.Uses) + `,`, `As:` + fmt.Sprintf("%v", this.As) + `,`, `Config:` + strings.Replace(fmt.Sprintf("%v", this.Config), "JSON", "v11.JSON", 1) + `,`, `Retry:` + strings.Replace(this.Retry.String(), "PromotionStepRetry", "PromotionStepRetry", 1) + `,`, `Task:` + strings.Replace(this.Task.String(), "PromotionTaskReference", "PromotionTaskReference", 1) + `,`, + `Inputs:` + mapStringForInputs + `,`, `}`, }, "") return s @@ -15601,6 +15647,133 @@ func (m *PromotionStep) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Inputs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Inputs == nil { + m.Inputs = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthGenerated + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthGenerated + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Inputs[mapkey] = mapvalue + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/api/v1alpha1/generated.proto b/api/v1alpha1/generated.proto index 1ee3b25d2..a80a965d8 100644 --- a/api/v1alpha1/generated.proto +++ b/api/v1alpha1/generated.proto @@ -935,6 +935,8 @@ message PromotionStatus { } // PromotionStep describes a directive to be executed as part of a Promotion. +// +// +kubebuilder:validation:XValidation:message="inputs must not be set when task is set",rule="!(has(self.task) && self.inputs.size() > 0)" message PromotionStep { // Uses identifies a runner that can execute this step. // @@ -952,6 +954,14 @@ message PromotionStep { // Retry is the retry policy for this step. optional PromotionStepRetry retry = 4; + // Inputs is a map of inputs that can used to parameterize the execution + // of the PromotionStep and can be referenced by expressions in the Config. + // + // When a PromotionStep is inflated from a PromotionTask, the inputs + // specified in the PromotionTask are set based on the inputs specified + // in the Config of the PromotionStep that references the PromotionTask. + map inputs = 6; + // Config is opaque configuration for the PromotionStep that is understood // only by each PromotionStep's implementation. It is legal to utilize // expressions in defining values at any level of this block. @@ -1068,6 +1078,7 @@ message PromotionTaskSpec { // +kubebuilder:validation:Required // +kubebuilder:validation:MinItems=1 // +kubebuilder:validation:items:XValidation:message="PromotionTask step must have uses set and must not reference another task",rule="has(self.uses) && !has(self.task)" + // +kubebuilder:validation:items:XValidation:message="PromotionTask step must not have inputs set",rule="self.inputs.size() == 0" repeated PromotionStep steps = 2; } diff --git a/api/v1alpha1/promotion_types.go b/api/v1alpha1/promotion_types.go index 1f6ba605b..1b36d5091 100644 --- a/api/v1alpha1/promotion_types.go +++ b/api/v1alpha1/promotion_types.go @@ -216,7 +216,7 @@ type PromotionStep struct { // When a PromotionStep is inflated from a PromotionTask, the inputs // specified in the PromotionTask are set based on the inputs specified // in the Config of the PromotionStep that references the PromotionTask. - Inputs map[string]string `json:"inputs,omitempty" protobuf:"bytes,6,rep,name=inputs"` + Inputs map[string]string `json:"inputs,omitempty" protobuf:"bytes,6,rep,name=inputs" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Config is opaque configuration for the PromotionStep that is understood // only by each PromotionStep's implementation. It is legal to utilize // expressions in defining values at any level of this block. diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index 398c8b1f0..c0bf07a95 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -1048,6 +1048,13 @@ func (in *PromotionStep) DeepCopyInto(out *PromotionStep) { *out = new(PromotionStepRetry) (*in).DeepCopyInto(*out) } + if in.Inputs != nil { + in, out := &in.Inputs, &out.Inputs + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } if in.Config != nil { in, out := &in.Config, &out.Config *out = new(apiextensionsv1.JSON) diff --git a/charts/kargo/resources/crds/kargo.akuity.io_clusterpromotiontasks.yaml b/charts/kargo/resources/crds/kargo.akuity.io_clusterpromotiontasks.yaml index 63ce17930..218080560 100644 --- a/charts/kargo/resources/crds/kargo.akuity.io_clusterpromotiontasks.yaml +++ b/charts/kargo/resources/crds/kargo.akuity.io_clusterpromotiontasks.yaml @@ -95,6 +95,17 @@ spec: expressions in defining values at any level of this block. See https://docs.kargo.io/references/expression-language for details. x-kubernetes-preserve-unknown-fields: true + inputs: + additionalProperties: + type: string + description: |- + Inputs is a map of inputs that can used to parameterize the execution + of the PromotionStep and can be referenced by expressions in the Config. + + When a PromotionStep is inflated from a PromotionTask, the inputs + specified in the PromotionTask are set based on the inputs specified + in the Config of the PromotionStep that references the PromotionTask. + type: object retry: description: Retry is the retry policy for this step. properties: @@ -171,6 +182,10 @@ spec: - message: PromotionTask step must have uses set and must not reference another task rule: has(self.uses) && !has(self.task) + - message: PromotionTask step must not have inputs set + rule: self.inputs.size() == 0 + - message: inputs must not be set when task is set + rule: '!(has(self.task) && self.inputs.size() > 0)' minItems: 1 type: array required: diff --git a/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml b/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml index 8ae7e59a3..cf234c2c1 100644 --- a/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml +++ b/charts/kargo/resources/crds/kargo.akuity.io_promotions.yaml @@ -98,6 +98,17 @@ spec: expressions in defining values at any level of this block. See https://docs.kargo.io/references/expression-language for details. x-kubernetes-preserve-unknown-fields: true + inputs: + additionalProperties: + type: string + description: |- + Inputs is a map of inputs that can used to parameterize the execution + of the PromotionStep and can be referenced by expressions in the Config. + + When a PromotionStep is inflated from a PromotionTask, the inputs + specified in the PromotionTask are set based on the inputs specified + in the Config of the PromotionStep that references the PromotionTask. + type: object retry: description: Retry is the retry policy for this step. properties: @@ -174,6 +185,8 @@ spec: - message: Promotion step must have uses set and must not reference a task rule: has(self.uses) && !has(self.task) + - message: inputs must not be set when task is set + rule: '!(has(self.task) && self.inputs.size() > 0)' minItems: 1 type: array vars: diff --git a/charts/kargo/resources/crds/kargo.akuity.io_promotiontasks.yaml b/charts/kargo/resources/crds/kargo.akuity.io_promotiontasks.yaml index f6129bc8a..cb0ea9e46 100644 --- a/charts/kargo/resources/crds/kargo.akuity.io_promotiontasks.yaml +++ b/charts/kargo/resources/crds/kargo.akuity.io_promotiontasks.yaml @@ -95,6 +95,17 @@ spec: expressions in defining values at any level of this block. See https://docs.kargo.io/references/expression-language for details. x-kubernetes-preserve-unknown-fields: true + inputs: + additionalProperties: + type: string + description: |- + Inputs is a map of inputs that can used to parameterize the execution + of the PromotionStep and can be referenced by expressions in the Config. + + When a PromotionStep is inflated from a PromotionTask, the inputs + specified in the PromotionTask are set based on the inputs specified + in the Config of the PromotionStep that references the PromotionTask. + type: object retry: description: Retry is the retry policy for this step. properties: @@ -171,6 +182,10 @@ spec: - message: PromotionTask step must have uses set and must not reference another task rule: has(self.uses) && !has(self.task) + - message: PromotionTask step must not have inputs set + rule: self.inputs.size() == 0 + - message: inputs must not be set when task is set + rule: '!(has(self.task) && self.inputs.size() > 0)' minItems: 1 type: array required: diff --git a/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml b/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml index 364dbd963..576cfc569 100644 --- a/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml +++ b/charts/kargo/resources/crds/kargo.akuity.io_stages.yaml @@ -88,6 +88,17 @@ spec: expressions in defining values at any level of this block. See https://docs.kargo.io/references/expression-language for details. x-kubernetes-preserve-unknown-fields: true + inputs: + additionalProperties: + type: string + description: |- + Inputs is a map of inputs that can used to parameterize the execution + of the PromotionStep and can be referenced by expressions in the Config. + + When a PromotionStep is inflated from a PromotionTask, the inputs + specified in the PromotionTask are set based on the inputs specified + in the Config of the PromotionStep that references the PromotionTask. + type: object retry: description: Retry is the retry policy for this step. properties: @@ -164,6 +175,8 @@ spec: - message: PromotionTemplate step must have exactly one of uses or task set rule: '(has(self.uses) ? !has(self.task) : has(self.task))' + - message: inputs must not be set when task is set + rule: '!(has(self.task) && self.inputs.size() > 0)' minItems: 1 type: array vars: diff --git a/ui/src/gen/schema/clusterpromotiontasks.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/clusterpromotiontasks.kargo.akuity.io_v1alpha1.json index 752027ae4..a45070ad0 100644 --- a/ui/src/gen/schema/clusterpromotiontasks.kargo.akuity.io_v1alpha1.json +++ b/ui/src/gen/schema/clusterpromotiontasks.kargo.akuity.io_v1alpha1.json @@ -50,6 +50,13 @@ "description": "Config is opaque configuration for the PromotionStep that is understood\nonly by each PromotionStep's implementation. It is legal to utilize\nexpressions in defining values at any level of this block.\nSee https://docs.kargo.io/references/expression-language for details.", "x-kubernetes-preserve-unknown-fields": true }, + "inputs": { + "additionalProperties": { + "type": "string" + }, + "description": "Inputs is a map of inputs that can used to parameterize the execution\nof the PromotionStep and can be referenced by expressions in the Config.\n\nWhen a PromotionStep is inflated from a PromotionTask, the inputs\nspecified in the PromotionTask are set based on the inputs specified\nin the Config of the PromotionStep that references the PromotionTask.", + "type": "object" + }, "retry": { "description": "Retry is the retry policy for this step.", "properties": { @@ -102,6 +109,14 @@ { "message": "PromotionTask step must have uses set and must not reference another task", "rule": "has(self.uses) && !has(self.task)" + }, + { + "message": "PromotionTask step must not have inputs set", + "rule": "self.inputs.size() == 0" + }, + { + "message": "inputs must not be set when task is set", + "rule": "!(has(self.task) && self.inputs.size() > 0)" } ] }, diff --git a/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json index b8d28f9d0..5860f38d6 100644 --- a/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json +++ b/ui/src/gen/schema/promotions.kargo.akuity.io_v1alpha1.json @@ -43,6 +43,13 @@ "description": "Config is opaque configuration for the PromotionStep that is understood\nonly by each PromotionStep's implementation. It is legal to utilize\nexpressions in defining values at any level of this block.\nSee https://docs.kargo.io/references/expression-language for details.", "x-kubernetes-preserve-unknown-fields": true }, + "inputs": { + "additionalProperties": { + "type": "string" + }, + "description": "Inputs is a map of inputs that can used to parameterize the execution\nof the PromotionStep and can be referenced by expressions in the Config.\n\nWhen a PromotionStep is inflated from a PromotionTask, the inputs\nspecified in the PromotionTask are set based on the inputs specified\nin the Config of the PromotionStep that references the PromotionTask.", + "type": "object" + }, "retry": { "description": "Retry is the retry policy for this step.", "properties": { @@ -95,6 +102,10 @@ { "message": "Promotion step must have uses set and must not reference a task", "rule": "has(self.uses) && !has(self.task)" + }, + { + "message": "inputs must not be set when task is set", + "rule": "!(has(self.task) && self.inputs.size() > 0)" } ] }, diff --git a/ui/src/gen/schema/promotiontasks.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/promotiontasks.kargo.akuity.io_v1alpha1.json index 5d5c4cfa6..9823e792d 100644 --- a/ui/src/gen/schema/promotiontasks.kargo.akuity.io_v1alpha1.json +++ b/ui/src/gen/schema/promotiontasks.kargo.akuity.io_v1alpha1.json @@ -50,6 +50,13 @@ "description": "Config is opaque configuration for the PromotionStep that is understood\nonly by each PromotionStep's implementation. It is legal to utilize\nexpressions in defining values at any level of this block.\nSee https://docs.kargo.io/references/expression-language for details.", "x-kubernetes-preserve-unknown-fields": true }, + "inputs": { + "additionalProperties": { + "type": "string" + }, + "description": "Inputs is a map of inputs that can used to parameterize the execution\nof the PromotionStep and can be referenced by expressions in the Config.\n\nWhen a PromotionStep is inflated from a PromotionTask, the inputs\nspecified in the PromotionTask are set based on the inputs specified\nin the Config of the PromotionStep that references the PromotionTask.", + "type": "object" + }, "retry": { "description": "Retry is the retry policy for this step.", "properties": { @@ -102,6 +109,14 @@ { "message": "PromotionTask step must have uses set and must not reference another task", "rule": "has(self.uses) && !has(self.task)" + }, + { + "message": "PromotionTask step must not have inputs set", + "rule": "self.inputs.size() == 0" + }, + { + "message": "inputs must not be set when task is set", + "rule": "!(has(self.task) && self.inputs.size() > 0)" } ] }, diff --git a/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json b/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json index d4eeb03ab..b03c9d453 100644 --- a/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json +++ b/ui/src/gen/schema/stages.kargo.akuity.io_v1alpha1.json @@ -35,6 +35,13 @@ "description": "Config is opaque configuration for the PromotionStep that is understood\nonly by each PromotionStep's implementation. It is legal to utilize\nexpressions in defining values at any level of this block.\nSee https://docs.kargo.io/references/expression-language for details.", "x-kubernetes-preserve-unknown-fields": true }, + "inputs": { + "additionalProperties": { + "type": "string" + }, + "description": "Inputs is a map of inputs that can used to parameterize the execution\nof the PromotionStep and can be referenced by expressions in the Config.\n\nWhen a PromotionStep is inflated from a PromotionTask, the inputs\nspecified in the PromotionTask are set based on the inputs specified\nin the Config of the PromotionStep that references the PromotionTask.", + "type": "object" + }, "retry": { "description": "Retry is the retry policy for this step.", "properties": { @@ -87,6 +94,10 @@ { "message": "PromotionTemplate step must have exactly one of uses or task set", "rule": "(has(self.uses) ? !has(self.task) : has(self.task))" + }, + { + "message": "inputs must not be set when task is set", + "rule": "!(has(self.task) && self.inputs.size() > 0)" } ] }, diff --git a/ui/src/gen/v1alpha1/generated_pb.ts b/ui/src/gen/v1alpha1/generated_pb.ts index a8006f6c8..0168eee5b 100644 --- a/ui/src/gen/v1alpha1/generated_pb.ts +++ b/ui/src/gen/v1alpha1/generated_pb.ts @@ -2925,6 +2925,8 @@ export class PromotionStatus extends Message { /** * PromotionStep describes a directive to be executed as part of a Promotion. * + * +kubebuilder:validation:XValidation:message="inputs must not be set when task is set",rule="!(has(self.task) && self.inputs.size() > 0)" + * * @generated from message github.com.akuity.kargo.api.v1alpha1.PromotionStep */ export class PromotionStep extends Message { @@ -2960,6 +2962,18 @@ export class PromotionStep extends Message { */ retry?: PromotionStepRetry; + /** + * Inputs is a map of inputs that can used to parameterize the execution + * of the PromotionStep and can be referenced by expressions in the Config. + * + * When a PromotionStep is inflated from a PromotionTask, the inputs + * specified in the PromotionTask are set based on the inputs specified + * in the Config of the PromotionStep that references the PromotionTask. + * + * @generated from field: map inputs = 6; + */ + inputs: { [key: string]: string } = {}; + /** * Config is opaque configuration for the PromotionStep that is understood * only by each PromotionStep's implementation. It is legal to utilize @@ -2982,6 +2996,7 @@ export class PromotionStep extends Message { { no: 5, name: "task", kind: "message", T: PromotionTaskReference, opt: true }, { no: 2, name: "as", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, { no: 4, name: "retry", kind: "message", T: PromotionStepRetry, opt: true }, + { no: 6, name: "inputs", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, { no: 3, name: "config", kind: "message", T: JSON, opt: true }, ]); @@ -3315,6 +3330,7 @@ export class PromotionTaskSpec extends Message { * +kubebuilder:validation:Required * +kubebuilder:validation:MinItems=1 * +kubebuilder:validation:items:XValidation:message="PromotionTask step must have uses set and must not reference another task",rule="has(self.uses) && !has(self.task)" + * +kubebuilder:validation:items:XValidation:message="PromotionTask step must not have inputs set",rule="self.inputs.size() == 0" * * @generated from field: repeated github.com.akuity.kargo.api.v1alpha1.PromotionStep steps = 2; */